From 59ca0c340afc7774747c70ede9a5a5a3c9349d6b Mon Sep 17 00:00:00 2001 From: Andy <87505797+AndyBodnar@users.noreply.github.com> Date: Sat, 17 Jan 2026 14:57:01 -0700 Subject: [PATCH 001/126] fix: prevent context menu clicks from clearing file selection (#5681) --- frontend/src/views/files/FileListing.vue | 3 +++ 1 file changed, 3 insertions(+) diff --git a/frontend/src/views/files/FileListing.vue b/frontend/src/views/files/FileListing.vue index 62a6819ff3..c9f636ba5f 100644 --- a/frontend/src/views/files/FileListing.vue +++ b/frontend/src/views/files/FileListing.vue @@ -1059,6 +1059,9 @@ const handleEmptyAreaClick = (e: MouseEvent) => { if (target.closest("item") || target.closest(".item")) return; + // Do not clear selection when clicking on context menu actions + if (target.closest(".context-menu")) return; + fileStore.selected = []; }; From cfa6c5864e5e7673aa9f3180e4964e0db92cc4da Mon Sep 17 00:00:00 2001 From: Ariel Leyva Date: Sun, 18 Jan 2026 02:36:25 -0500 Subject: [PATCH 002/126] fix: request current password when deleting users (#5667) --- frontend/src/api/users.ts | 8 +++++++- frontend/src/views/settings/User.vue | 9 +++------ http/users.go | 20 +++++++++++++++++++- 3 files changed, 29 insertions(+), 8 deletions(-) diff --git a/frontend/src/api/users.ts b/frontend/src/api/users.ts index 56e1d0f323..dc45e08426 100644 --- a/frontend/src/api/users.ts +++ b/frontend/src/api/users.ts @@ -42,8 +42,14 @@ export async function update( }); } -export async function remove(id: number) { +export async function remove( + id: number, + currentPassword: string | null = null +) { await fetchURL(`/api/users/${id}`, { method: "DELETE", + body: JSON.stringify({ + ...(currentPassword != null ? { current_password: currentPassword } : {}), + }), }); } diff --git a/frontend/src/views/settings/User.vue b/frontend/src/views/settings/User.vue index be46fabb93..77786e2a99 100644 --- a/frontend/src/views/settings/User.vue +++ b/frontend/src/views/settings/User.vue @@ -71,6 +71,7 @@ import { computed, inject, onMounted, ref, watch } from "vue"; import { useRoute, useRouter } from "vue-router"; import { useI18n } from "vue-i18n"; import { StatusError } from "@/api/utils"; +import { authMethod } from "@/utils/constants"; const error = ref(); const originalUser = ref(); @@ -105,11 +106,7 @@ const fetchData = async () => { try { if (isNew.value) { - const { - authMethod, - defaults, - createUserDir: _createUserDir, - } = await settings.get(); + const { defaults, createUserDir: _createUserDir } = await settings.get(); isCurrentPasswordRequired.value = authMethod == "json"; createUserDir.value = _createUserDir; user.value = { @@ -146,7 +143,7 @@ const deleteUser = async (e: Event) => { return false; } try { - await api.remove(user.value.id); + await api.remove(user.value.id, currentPassword.value); router.push({ path: "/settings/users" }); $showSuccess(t("settings.userDeleted")); } catch (err) { diff --git a/http/users.go b/http/users.go index adae7729a8..5604dc38f8 100644 --- a/http/users.go +++ b/http/users.go @@ -103,7 +103,25 @@ var userGetHandler = withSelfOrAdmin(func(w http.ResponseWriter, r *http.Request return renderJSON(w, r, u) }) -var userDeleteHandler = withSelfOrAdmin(func(_ http.ResponseWriter, _ *http.Request, d *data) (int, error) { +var userDeleteHandler = withSelfOrAdmin(func(_ http.ResponseWriter, r *http.Request, d *data) (int, error) { + if r.Body == nil { + return http.StatusBadRequest, fberrors.ErrEmptyRequest + } + + var body struct { + CurrentPassword string `json:"current_password"` + } + + if err := json.NewDecoder(r.Body).Decode(&body); err != nil { + return http.StatusBadRequest, err + } + + if d.settings.AuthMethod == auth.MethodJSONAuth { + if !users.CheckPwd(body.CurrentPassword, d.user.Password) { + return http.StatusBadRequest, fberrors.ErrCurrentPasswordIncorrect + } + } + err := d.store.Users.Delete(d.raw.(uint)) if err != nil { return errToStatus(err), err From 4094fb359babac70e88d0ed4bfe3bd100744aad6 Mon Sep 17 00:00:00 2001 From: Ariel Leyva Date: Sun, 18 Jan 2026 02:37:12 -0500 Subject: [PATCH 003/126] fix: retain file selection when closing the editor (#5693) --- frontend/src/views/files/Editor.vue | 1 - 1 file changed, 1 deletion(-) diff --git a/frontend/src/views/files/Editor.vue b/frontend/src/views/files/Editor.vue index 58f0d52451..fc5f972848 100644 --- a/frontend/src/views/files/Editor.vue +++ b/frontend/src/views/files/Editor.vue @@ -236,7 +236,6 @@ const close = () => { }; const finishClose = () => { - fileStore.updateRequest(null); const uri = url.removeLastDir(route.path) + "/"; router.push({ path: uri }); }; From 24781badd413ee20333aba5cce1919d676e01889 Mon Sep 17 00:00:00 2001 From: GUCHI <82448575+GUCHIHACKER@users.noreply.github.com> Date: Sun, 18 Jan 2026 08:44:16 +0100 Subject: [PATCH 004/126] Merge commit from fork Added a dummy bcrypt hash to prevent user enumeration timing attacks in JSON authentication. --- auth/json.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/auth/json.go b/auth/json.go index f779c476d0..2284dc7f2d 100644 --- a/auth/json.go +++ b/auth/json.go @@ -14,6 +14,10 @@ import ( // MethodJSONAuth is used to identify json auth. const MethodJSONAuth settings.AuthMethod = "json" +// dummyHash is used to prevent user enumeration timing attacks. +// It MUST be a valid bcrypt hash. +const dummyHash = "$2a$10$O4mEMeOL/nit6zqe.WQXauLRbRlzb3IgLHsa26Pf0N/GiU9b.wK1m" + type jsonCred struct { Password string `json:"password"` Username string `json:"username"` @@ -52,7 +56,17 @@ func (a JSONAuth) Auth(r *http.Request, usr users.Store, _ *settings.Settings, s } u, err := usr.Get(srv.Root, cred.Username) - if err != nil || !users.CheckPwd(cred.Password, u.Password) { + + hash := dummyHash + if err == nil { + hash = u.Password + } + + if !users.CheckPwd(cred.Password, hash) { + return nil, os.ErrPermission + } + + if err != nil { return nil, os.ErrPermission } From e7ea1ad27d3d17e249489d3338be40bfea15e2a1 Mon Sep 17 00:00:00 2001 From: "transifex-integration[bot]" <43880903+transifex-integration[bot]@users.noreply.github.com> Date: Sun, 18 Jan 2026 08:45:48 +0100 Subject: [PATCH 005/126] feat: update translations (#5677) Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com> --- frontend/src/i18n/ar.json | 1 + frontend/src/i18n/bg.json | 1 + frontend/src/i18n/ca.json | 1 + frontend/src/i18n/cs.json | 1 + frontend/src/i18n/de.json | 1 + frontend/src/i18n/el.json | 1 + frontend/src/i18n/es.json | 1 + frontend/src/i18n/fa.json | 1 + frontend/src/i18n/fr.json | 1 + frontend/src/i18n/he.json | 1 + frontend/src/i18n/hr.json | 1 + frontend/src/i18n/hu.json | 1 + frontend/src/i18n/is.json | 1 + frontend/src/i18n/it.json | 1 + frontend/src/i18n/ja.json | 1 + frontend/src/i18n/ko.json | 1 + frontend/src/i18n/lv.json | 1 + frontend/src/i18n/lv_LV.json | 7 ++++--- frontend/src/i18n/nl-be.json | 1 + frontend/src/i18n/no.json | 1 + frontend/src/i18n/pl.json | 3 ++- frontend/src/i18n/pt-br.json | 1 + frontend/src/i18n/pt.json | 1 + frontend/src/i18n/ro.json | 1 + frontend/src/i18n/ru.json | 1 + frontend/src/i18n/sk.json | 1 + frontend/src/i18n/sv-se.json | 1 + frontend/src/i18n/tr.json | 1 + frontend/src/i18n/uk.json | 1 + frontend/src/i18n/vi.json | 1 + frontend/src/i18n/zh-cn.json | 5 +++-- frontend/src/i18n/zh-tw.json | 1 + 32 files changed, 38 insertions(+), 6 deletions(-) diff --git a/frontend/src/i18n/ar.json b/frontend/src/i18n/ar.json index bbe174611a..b8f431eb03 100644 --- a/frontend/src/i18n/ar.json +++ b/frontend/src/i18n/ar.json @@ -232,6 +232,7 @@ "permissions": "الصلاحيات", "permissionsHelp": "يمكنك تعيين المستخدم كـ \"مدير\" أو تحديد الصلاحيات بشكل منفرد.\n إذا قمت بتحديد المستخدم كـ \"مدير\"، باقي الخيارات سيتم تحديدها تلقائياً.\n إدارة المستخدمين تبقى صلاحية فريدة للـ \"مدير\" فقط.\n", "profileSettings": "إعدادات الحساب", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "منع الوصول إلى الملفات التي تبدأ بنقطة مثل (.git، و .gitignore) في كل مجلد.\n", "ruleExample2": "منع الوصول إلى الملف المسمى Caddyfile في نطاق الجذر.", "rules": "المجموعات", diff --git a/frontend/src/i18n/bg.json b/frontend/src/i18n/bg.json index afbd8a9c55..d1388d3f81 100644 --- a/frontend/src/i18n/bg.json +++ b/frontend/src/i18n/bg.json @@ -232,6 +232,7 @@ "permissions": "Разрешения", "permissionsHelp": "Можете да зададете потребител да бъде администратор или да изберете разрешения индивидуално. Ако изберете \"Администратор\" всички други опции ще бъдат автоматично отметнати. Управлението на потребителите е привилегия на администратор.\n", "profileSettings": "Настройки на Профила", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "предотвратете достъпа до всеки файл започващ с точка (като .git, .gitignore) във всяка папка.\n", "ruleExample2": "блокира достъпа до файл именуван Caddyfile поставен в началото за обхвата.", "rules": "Правила", diff --git a/frontend/src/i18n/ca.json b/frontend/src/i18n/ca.json index a8e8849857..2ca2b5d4e1 100644 --- a/frontend/src/i18n/ca.json +++ b/frontend/src/i18n/ca.json @@ -232,6 +232,7 @@ "permissions": "Permisos", "permissionsHelp": "Pots nomenar l'usuari com a administrador o triar els permisos individualment. Si selecciones \"Administrador\", totes les altres opcions s'activaran automàticament. L'administració d'usuaris és un privilegi d'administrador.\n", "profileSettings": "Ajustos del perfil", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "prevé l'accés a una extensió de fitxer (Com .git) en cada carpeta.\n", "ruleExample2": "bloqueja l'accés al fitxer anomenat Caddyfile a la carpeta arrel.", "rules": "Regles", diff --git a/frontend/src/i18n/cs.json b/frontend/src/i18n/cs.json index 6f489c53a4..d57c433656 100644 --- a/frontend/src/i18n/cs.json +++ b/frontend/src/i18n/cs.json @@ -232,6 +232,7 @@ "permissions": "Oprávnění", "permissionsHelp": "Můžete nastavit uživatele jako administrátora nebo zvolit jednotlivá oprávnění. Pokud vyberete \"Administrátor\", všechny ostatní možnosti budou automaticky zaškrtnuty. Správa uživatelů zůstává výsadou administrátora.\n", "profileSettings": "Nastavení profilu", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "zabraňuje přístupu k jakémukoli skrytému souboru (např. .git, .gitignore) v každé složce.\n", "ruleExample2": "blokuje přístup k souboru s názvem Caddyfile v kořenovém adresáři.", "rules": "Pravidla", diff --git a/frontend/src/i18n/de.json b/frontend/src/i18n/de.json index 815fbd1fa8..872b29e236 100644 --- a/frontend/src/i18n/de.json +++ b/frontend/src/i18n/de.json @@ -232,6 +232,7 @@ "permissions": "Berechtigungen", "permissionsHelp": "Sie können einem Benutzer Administratorrechte einräumen oder die Berechtigungen individuell festlegen. Wenn Sie \"Administrator\" auswählen, werden alle anderen Rechte automatisch vergeben. Die Nutzerverwaltung kann nur durch einen Administrator erfolgen.\n", "profileSettings": "Profileinstellungen", + "redirectAfterCopyMove": "Nach Kopieren/Verschieben zum Zielverzeichnis wechseln", "ruleExample1": "Verhindert den Zugang zu versteckten Dateien (dot-Files, wie .git, .gitignore) in allen Ordnern\n", "ruleExample2": "blockiert den Zugang auf Dateien mit dem Namen Caddyfile in der Wurzel/Basis des Scopes.", "rules": "Regeln", diff --git a/frontend/src/i18n/el.json b/frontend/src/i18n/el.json index 121452a117..04e837f3fb 100644 --- a/frontend/src/i18n/el.json +++ b/frontend/src/i18n/el.json @@ -232,6 +232,7 @@ "permissions": "Δικαιώματα", "permissionsHelp": "Μπορείτε να ορίσετε τον χρήστη ως διαχειριστή ή να επιλέξετε τα δικαιώματα μεμονωμένα. Αν επιλέξετε \"Διαχειριστής\", όλες οι υπόλοιπες επιλογές θα είναι αυτόματα επιλεγμένες. Η διαχείριση χρηστών παραμένει προνόμιο ενός χρήστη με τον ρόλο του διαχειριστή.\n", "profileSettings": "Ρυθμίσεις προφίλ", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "αποκλείει την πρόσβαση σε οποιοδήποτε κρυφό αρχείο (όπως .git, .gitignore) σε κάθε φάκελο.\n", "ruleExample2": "αποκλείει την πρόσβαση στο αρχείο με το όνομα Caddyfile στον ριζικό φάκελο της εμβέλειας του κανόνα.", "rules": "Κανόνες", diff --git a/frontend/src/i18n/es.json b/frontend/src/i18n/es.json index 28338c98cc..aaab108bb5 100644 --- a/frontend/src/i18n/es.json +++ b/frontend/src/i18n/es.json @@ -232,6 +232,7 @@ "permissions": "Permisos", "permissionsHelp": "Puedes nombrar al usuario como administrador o elegir los permisos individualmente. Si seleccionas \"Administrador\", todas las otras opciones serán activadas automáticamente. La administración de usuarios es un privilegio de administrador.\n", "profileSettings": "Ajustes del perfil", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "previene el acceso a una extensión de archivo (Como .git) en cada carpeta.\n", "ruleExample2": "bloquea el acceso al archivo llamado Caddyfile en la carpeta raíz.", "rules": "Reglas", diff --git a/frontend/src/i18n/fa.json b/frontend/src/i18n/fa.json index 4af7f2055c..3484d3a088 100644 --- a/frontend/src/i18n/fa.json +++ b/frontend/src/i18n/fa.json @@ -232,6 +232,7 @@ "permissions": "دسترسی ها", "permissionsHelp": "شما می‌توانید کاربر را به عنوان مدیر تنظیم کنید یا دسترسی‌ها را به صورت جداگانه انتخاب کنید. اگر \"مدیر\" را انتخاب کنید، تمام گزینه‌های دیگر به طور خودکار اعمال می‌شوند. مدیریت کاربران همچنان از اختیارات مدیر است.", "profileSettings": "تنظیمات ناحیه کاربری", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "از دسترسی به هرگونه فایل نقطه‌ای (مانند .git، .gitignore) در هر پوشه جلوگیری می‌کند.", "ruleExample2": "دسترسی به فایلی به نام Caddyfile را در ریشه دامنه مسدود می‌کند.", "rules": "قواعد", diff --git a/frontend/src/i18n/fr.json b/frontend/src/i18n/fr.json index 148306e5f0..798cee5061 100644 --- a/frontend/src/i18n/fr.json +++ b/frontend/src/i18n/fr.json @@ -232,6 +232,7 @@ "permissions": "Permissions", "permissionsHelp": "Vous pouvez définir l'utilisateur·ice comme étant administrateur·ice ou encore choisir les permissions individuellement. Si vous sélectionnez \"Administrateur·ice\", toutes les autres options seront automatiquement activées. La gestion des utilisateur·ices est un privilège que seul l'administrateur·ice possède.\n", "profileSettings": "Paramètres du profil", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "Bloque l'accès à tous les fichiers commençant par un point (comme par exemple .git, .gitignore) dans tous les dossiers.\n", "ruleExample2": "Bloque l'accès au fichier nommé \"Caddyfile\" à la racine du dossier utilisateur·ice.", "rules": "Règles", diff --git a/frontend/src/i18n/he.json b/frontend/src/i18n/he.json index d2deb93889..f340fecae2 100644 --- a/frontend/src/i18n/he.json +++ b/frontend/src/i18n/he.json @@ -232,6 +232,7 @@ "permissions": "הרשאות", "permissionsHelp": "אתה יכול להגדיר את המשתמש להיות מנהל מערכת או לבחור את ההרשאות בנפרד. אם תבחר \"מנהל מערכת\", כל ההרשאות יינתנו אוטומטית. ניהול המשתמשים נשאר הרשאה של מנהל מערכת.\n", "profileSettings": "הגדרות פרופיל", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "מנע גישה לקבצים נסתרים (כל קובץ/תיקייה שמתחיל בנקודה, לדוגמא .git)", "ruleExample2": "חסימת גישה לקובץ בשם Caddyfile בהיקף הראשי.", "rules": "חוקים", diff --git a/frontend/src/i18n/hr.json b/frontend/src/i18n/hr.json index 1a467cc053..e21ffd80a8 100644 --- a/frontend/src/i18n/hr.json +++ b/frontend/src/i18n/hr.json @@ -232,6 +232,7 @@ "permissions": "Dopuštenja", "permissionsHelp": "Korisnika možete postaviti administratorom ili odabrati dopuštenja individualno. Odabirom na \"Administrator\", sve druge opcije bit će automatski odabrane. Upravljanje korisnicima ostaje privilegija administratora.\n", "profileSettings": "Postavke profila", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "onemogućava pristup svakoj datoteci koja započinje točkom (poput .git, .gitignore) u svakoj mapi.\n", "ruleExample2": "blokira pristup datoteci naziva Caddyfile na korijenu opsega.", "rules": "Pravila", diff --git a/frontend/src/i18n/hu.json b/frontend/src/i18n/hu.json index 0f2abeefe0..f6d856cf6e 100644 --- a/frontend/src/i18n/hu.json +++ b/frontend/src/i18n/hu.json @@ -232,6 +232,7 @@ "permissions": "Jogosultságok", "permissionsHelp": "A felhasználót beállíthatja rendszergazdának, vagy egyénileg is kiválaszthatja a jogosultságokat. Ha a \"Rendszergazda\" lehetőséget választja, az összes többi opció automatikusan be lesz jelölve. A felhasználók kezelése továbbra is a rendszergazda kiváltsága marad.\n", "profileSettings": "Profilbeállítások", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "megakadályozza a hozzáférést bármely rejtett fájlhoz (pl. .git, .gitignore) bármely mappában.\n", "ruleExample2": "blokkolja a hozzáférést a Caddyfile nevű fájlhoz a hatókör gyökerében.", "rules": "Szabályok", diff --git a/frontend/src/i18n/is.json b/frontend/src/i18n/is.json index 2752b60f48..01b3ace68c 100644 --- a/frontend/src/i18n/is.json +++ b/frontend/src/i18n/is.json @@ -232,6 +232,7 @@ "permissions": "Heimildir", "permissionsHelp": "Þú getur stillt notenda sem stjórnanda eða valið einstaklingsbundnar heimildir. Ef þú velur \"Stjórnandi\", þá verða allir aðrir valmöguleikar valdir sjálfrafa. Aðgangstýring notenda er á hendi stjórnenda. \n", "profileSettings": "Stilla prófíl", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "kemur í veg fyrir aðgang að dot-skjali (t.d. .git, .gitignore) í öllum möppum. \n", "ruleExample2": "kemur í veg fyrir aðgang að Caddyfile-skjalinu í root-möppu í sýn notandans. ", "rules": "Reglur", diff --git a/frontend/src/i18n/it.json b/frontend/src/i18n/it.json index 29863efa4f..ad54172c7c 100644 --- a/frontend/src/i18n/it.json +++ b/frontend/src/i18n/it.json @@ -232,6 +232,7 @@ "permissions": "Permessi", "permissionsHelp": "È possibile impostare l'utente come amministratore o scegliere i permessi singolarmente. Se si seleziona \"Amministratore\", tutte le altre opzioni saranno automaticamente assegnate. La gestione degli utenti rimane un privilegio di un amministratore.\n", "profileSettings": "Impostazioni del profilo", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "impedisci l'accesso a qualsiasi file avente come prefisso un punto\n (ad esempio .git, .gitignore) presente in ogni cartella.\n", "ruleExample2": "blocca l'accesso al file denominato Caddyfile nella radice del campo di applicazione.", "rules": "Regole", diff --git a/frontend/src/i18n/ja.json b/frontend/src/i18n/ja.json index f6f2b88691..44beb9cbdb 100644 --- a/frontend/src/i18n/ja.json +++ b/frontend/src/i18n/ja.json @@ -232,6 +232,7 @@ "permissions": "権限", "permissionsHelp": "ユーザーを管理者に設定するか、その他の権限を個別に選択することができます。「管理者」を選択すると、他のオプションはすべて自動的にチェックされます。ユーザーを管理するには管理者権限が必要です。\n", "profileSettings": "プロフィール設定", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": ".git や .gitignore のようなドットから始まるファイルへのアクセスを禁止します。\n", "ruleExample2": "スコープのルートにある Caddyfile という名前のファイルへのアクセスを禁止します。", "rules": "ルール", diff --git a/frontend/src/i18n/ko.json b/frontend/src/i18n/ko.json index fe1e6ec28a..c1d49b184e 100644 --- a/frontend/src/i18n/ko.json +++ b/frontend/src/i18n/ko.json @@ -232,6 +232,7 @@ "permissions": "권한", "permissionsHelp": "사용자를 관리자로 만들거나 권한을 부여할 수 있습니다. 관리자를 선택하면, 모든 옵션이 자동으로 선택됩니다. 사용자 관리는 현재 관리자만 할 수 있습니다.\n", "profileSettings": "프로필 설정", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "점(.)으로 시작하는 모든 파일의 접근을 방지합니다.(예 .git, .gitignore)\n", "ruleExample2": "Caddyfile파일의 접근을 방지합니다.", "rules": "룰", diff --git a/frontend/src/i18n/lv.json b/frontend/src/i18n/lv.json index fabd4a86c9..c7e1d02f8c 100644 --- a/frontend/src/i18n/lv.json +++ b/frontend/src/i18n/lv.json @@ -232,6 +232,7 @@ "permissions": "Atļaujas", "permissionsHelp": "Varat iestatīt lietotāju kā administratoru vai izvēlēties atļaujas individuāli. Ja atlasīsiet “Administrators”, visas pārējās opcijas tiks automātiski atzīmētas. Lietotāju pārvaldība joprojām ir administratora privilēģija.\n", "profileSettings": "Profila iestatījumi", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "neļauj piekļūt jebkuram dotfile failam (piemēram, .git, .gitignore) katrā mapē.\n", "ruleExample2": "bloķē piekļuvi failam ar nosaukumu Caddyfile darbības jomas saknē.", "rules": "Noteikumi", diff --git a/frontend/src/i18n/lv_LV.json b/frontend/src/i18n/lv_LV.json index fabd4a86c9..c6af9aedac 100644 --- a/frontend/src/i18n/lv_LV.json +++ b/frontend/src/i18n/lv_LV.json @@ -43,7 +43,7 @@ "upload": "Augšupielādēt", "openFile": "Atvērt failu", "discardChanges": "Izmest", - "stopSearch": "Stop searching", + "stopSearch": "Beigt meklēšanu", "saveChanges": "Saglabāt izmaiņas", "editAsText": "Rediģēt kā tekstu", "increaseFontSize": "Palieliniet fonta lielumu", @@ -232,6 +232,7 @@ "permissions": "Atļaujas", "permissionsHelp": "Varat iestatīt lietotāju kā administratoru vai izvēlēties atļaujas individuāli. Ja atlasīsiet “Administrators”, visas pārējās opcijas tiks automātiski atzīmētas. Lietotāju pārvaldība joprojām ir administratora privilēģija.\n", "profileSettings": "Profila iestatījumi", + "redirectAfterCopyMove": "Pārvirzīt uz galapunktu pēc kopēšanas/pārvietošanas", "ruleExample1": "neļauj piekļūt jebkuram dotfile failam (piemēram, .git, .gitignore) katrā mapē.\n", "ruleExample2": "bloķē piekļuvi failam ar nosaukumu Caddyfile darbības jomas saknē.", "rules": "Noteikumi", @@ -241,7 +242,7 @@ "settingsUpdated": "Iestatījumi atjaunināti!", "shareDuration": "Kopīgošanas ilgums", "shareManagement": "Kopīgošanas pārvaldība", - "shareDeleted": "Kopīgošana ir izdzēsta!", + "shareDeleted": "Kopīgojums izdzēsts!", "singleClick": "Failu un direktoriju atvēršanai izmantojiet vienus klikšķi", "themes": { "default": "Sistēmas noklusējums", @@ -259,7 +260,7 @@ "userUpdated": "Lietotājs atjaunināts!", "username": "Lietotājvārds", "users": "Lietotāji", - "currentPassword": "Your Current Password" + "currentPassword": "Esošā Parole" }, "sidebar": { "help": "Palīdzība", diff --git a/frontend/src/i18n/nl-be.json b/frontend/src/i18n/nl-be.json index 6b2b53843a..a5fcb062d3 100644 --- a/frontend/src/i18n/nl-be.json +++ b/frontend/src/i18n/nl-be.json @@ -232,6 +232,7 @@ "permissions": "Permissies", "permissionsHelp": "U kunt de gebruiker instellen als beheerder of de machtigingen afzonderlijk kiezen. Als u \"Beheerder\" selecteert, worden alle andere opties automatisch gecontroleerd. Het beheer van gebruikers blijft een privilege van een beheerder.\n", "profileSettings": "Profielinstellingen", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "voorkomt de toegang tot elk puntbestand (zoals .git, .gitignore) in elke map.\n", "ruleExample2": "blokkeert de toegang tot het bestand met de naam Caddyfile in de hoofdmap van het bereik.", "rules": "Regels", diff --git a/frontend/src/i18n/no.json b/frontend/src/i18n/no.json index 79b6f9583d..3a5e7bdd4b 100644 --- a/frontend/src/i18n/no.json +++ b/frontend/src/i18n/no.json @@ -232,6 +232,7 @@ "permissions": "Tilaterser", "permissionsHelp": "Du kan angi brukeren som administrator eller velge tillatelsene individuelt. Hvis du velger «Administrator», vil alle de andre alternativene bli automatisk avkrysset. Administrasjon av brukere er fortsatt et privilegium for en administrator.\n", "profileSettings": "Profil Innstilinger", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "forhindrer tilgang til noen dotfiler (som .git, .gitignore) i alle mapper.\n", "ruleExample2": "blokkerer tilgangen til filen med navnet Caddyfile på roten av omfanget.", "rules": "Regler", diff --git a/frontend/src/i18n/pl.json b/frontend/src/i18n/pl.json index 2d43d91ad5..64b9f04a3c 100644 --- a/frontend/src/i18n/pl.json +++ b/frontend/src/i18n/pl.json @@ -231,7 +231,8 @@ }, "permissions": "Uprawnienia", "permissionsHelp": "Możesz ustawić użytkownika jako administratora lub wybrać uprawnienia indywidualnie. Jeśli wybierzesz „Administrator”, wszystkie pozostałe opcje zostaną automatycznie zaznaczone. Zarządzanie użytkownikami pozostaje przywilejem administratora.\n", - "profileSettings": "Twój profil", + "profileSettings": "Ustawienia profilu", + "redirectAfterCopyMove": "Przekieruj do miejsca docelowego po skopiowaniu lub przeniesieniu", "ruleExample1": "uniemożliwia dostęp do plików poprzedzonych kropką (takich jak .git, .gitignore) we wszystkich folderach.\n", "ruleExample2": "blokuje dostęp do pliku o nazwie Caddyfile w katalogu głównym zakresu.", "rules": "Uprawnienia", diff --git a/frontend/src/i18n/pt-br.json b/frontend/src/i18n/pt-br.json index 2f56335478..f6aa8f4efb 100644 --- a/frontend/src/i18n/pt-br.json +++ b/frontend/src/i18n/pt-br.json @@ -232,6 +232,7 @@ "permissions": "Permissões", "permissionsHelp": "Pode definir o usuário como administrador ou escolher as permissões manualmente. Se selecionar a opção \"Administrador\", todas as outras opções serão automaticamente selecionadas. A gestão dos usuários é um privilégio restringido aos administradores.\n", "profileSettings": "Configurações do usuário", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "previne o acesso a qualquer \"dotfile\" (como .git, .gitignore) em qualquer pasta\n", "ruleExample2": "bloqueia o acesso ao arquivo chamado Caddyfile.", "rules": "Regras", diff --git a/frontend/src/i18n/pt.json b/frontend/src/i18n/pt.json index 4c076622fc..dcacf3b61c 100644 --- a/frontend/src/i18n/pt.json +++ b/frontend/src/i18n/pt.json @@ -232,6 +232,7 @@ "permissions": "Permissões", "permissionsHelp": "Pode definir o utilizador como administrador ou escolher as permissões manualmente. Se selecionar a opção \"Administrador\", todas as outras opções serão automaticamente selecionadas. A gestão dos utilizadores é um privilégio restringido aos administradores.\n", "profileSettings": "Configurações do utilizador", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "previne o acesso a qualquer \"dotfile\" (como .git, .gitignore) em qualquer pasta\n", "ruleExample2": "bloqueia o acesso ao ficheiro chamado Caddyfile na raiz.", "rules": "Regras", diff --git a/frontend/src/i18n/ro.json b/frontend/src/i18n/ro.json index 82b5c388ab..c80c4e288e 100644 --- a/frontend/src/i18n/ro.json +++ b/frontend/src/i18n/ro.json @@ -232,6 +232,7 @@ "permissions": "Permisiuni", "permissionsHelp": "Poți alege ca un utilizator să fie administrator sau să-i alegi permisiunile individual. Dacă alegi \"Administrator\", toate celelalte opțiuni vor fi bifate automat. Gestionarea utilizatorilor rămâne un privilegiu exclusiv al administratorilor.\n", "profileSettings": "Setări profil", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "împiedică accesul la fisiere cu punct in față (.), cum ar fi .git, .gitignore în orice director.\n", "ruleExample2": "împiedică accesul la fișierul Caddyfile din rădăcina domeniului.", "rules": "Reguli", diff --git a/frontend/src/i18n/ru.json b/frontend/src/i18n/ru.json index 359fd228ca..60b211f65f 100644 --- a/frontend/src/i18n/ru.json +++ b/frontend/src/i18n/ru.json @@ -232,6 +232,7 @@ "permissions": "Права доступа", "permissionsHelp": "Можно настроить пользователя как администратора или выбрать разрешения индивидуально. При выборе \"Администратор\", все остальные параметры будут автоматически выбраны. Управление пользователями - привилегия администратора.\n", "profileSettings": "Настройки профиля", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "предотвратить доступ к любому скрытому файлу (например: .git, .gitignore) в каждой папке.\n", "ruleExample2": "блокирует доступ к файлу с именем Caddyfile в корневой области.", "rules": "Права", diff --git a/frontend/src/i18n/sk.json b/frontend/src/i18n/sk.json index 0031b73000..201d2d3db5 100644 --- a/frontend/src/i18n/sk.json +++ b/frontend/src/i18n/sk.json @@ -232,6 +232,7 @@ "permissions": "Práva", "permissionsHelp": "Môžete nastaviť používateľa, aby bol administrátorom alebo vybrať práva jednotlivo. Ak zvolíte \"Administrator\", všetky ďalšie budú automaticky zaškrtnuté. Manažment používateľov ostáva v správe administrátora.\n", "profileSettings": "Nastavenia profilu", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "blokuje prístup ku všetkým súborom začínajúcim bodkou (napríklad .git, .gitignore) v každom priečinku.\n", "ruleExample2": "blokuje prístup k súborom s názvom Caddyfile v koreňovom priečinku.", "rules": "Pravidlá", diff --git a/frontend/src/i18n/sv-se.json b/frontend/src/i18n/sv-se.json index 8e823b43ae..642252d9ac 100644 --- a/frontend/src/i18n/sv-se.json +++ b/frontend/src/i18n/sv-se.json @@ -232,6 +232,7 @@ "permissions": "Rättigheter", "permissionsHelp": "Du kan ange att användaren ska vara administratör eller välja behörigheterna individuellt. Om du väljer \"administratör \" kommer alla andra alternativ att kontrolleras automatiskt. Hanteringen av användare är fortfarande ett privilegium för en administratör.\n", "profileSettings": "Profil inställningar", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "förhindrar åtkomst till en dot-fil (till exempel. git,. gitignore) i varje mapp.\n", "ruleExample2": "blockerar åtkomsten till filen som heter Caddyfilen i roten av scopet.", "rules": "Regler", diff --git a/frontend/src/i18n/tr.json b/frontend/src/i18n/tr.json index ac18f211ad..f83e71037e 100644 --- a/frontend/src/i18n/tr.json +++ b/frontend/src/i18n/tr.json @@ -232,6 +232,7 @@ "permissions": "İzinler", "permissionsHelp": "Kullanıcıyı yönetici olarak ayarlayabilir veya izinleri ayrı ayrı seçebilirsiniz. \"Yönetici\"yi seçerseniz, diğer tüm seçenekler otomatik olarak kontrol edilecektir. Kullanıcıların yönetimi, bir yöneticinin yetkisi olarak kalır.\n", "profileSettings": "Profil ayarları", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "her klasördeki herhangi bir noktalı dosyaya (.git, .gitignore gibi) erişimi engeller.\n", "ruleExample2": "Root erişimidenki CaddyFile dosyalarına erişimi engelle.", "rules": "Kurallar", diff --git a/frontend/src/i18n/uk.json b/frontend/src/i18n/uk.json index 2ae93f00a7..782b86e9c9 100644 --- a/frontend/src/i18n/uk.json +++ b/frontend/src/i18n/uk.json @@ -232,6 +232,7 @@ "permissions": "Дозволи", "permissionsHelp": "Можна налаштувати користувача як адміністратора чи вибрати індивідуальні дозволи. При виборі \"Адміністратор\" всі інші параметри будуть автоматично вибрані. Керування користувачами - привілей адміністратора.\n", "profileSettings": "Налаштування профілю", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "запобігти доступу до будь-якого прихованого файлу (наприклад: .git, .gitignore) у кожній папці.\n", "ruleExample2": "блокує доступ до файлу з ім'ям Caddyfile у кореневій області.", "rules": "Права", diff --git a/frontend/src/i18n/vi.json b/frontend/src/i18n/vi.json index 793f21204f..65e7fe01a8 100644 --- a/frontend/src/i18n/vi.json +++ b/frontend/src/i18n/vi.json @@ -232,6 +232,7 @@ "permissions": "Quyền", "permissionsHelp": "Bạn có thể đặt người dùng làm quản trị viên hoặc chọn quyền riêng lẻ. Nếu chọn \"Người quản trị\", tất cả các tùy chọn khác sẽ tự động được chọn. Việc quản lý người dùng vẫn là đặc quyền của quản trị viên.\n", "profileSettings": "Cài đặt hồ sơ", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "ngăn truy cập vào bất kỳ tệp ẩn nào (chẳng hạn như .git, .gitignore) trong mọi thư mục.\n", "ruleExample2": "chặn truy cập vào tệp có tên Caddyfile trong thư mục gốc của phạm vi.", "rules": "Quy tắc", diff --git a/frontend/src/i18n/zh-cn.json b/frontend/src/i18n/zh-cn.json index 5717891106..93486c2199 100644 --- a/frontend/src/i18n/zh-cn.json +++ b/frontend/src/i18n/zh-cn.json @@ -43,7 +43,7 @@ "upload": "上传", "openFile": "打开文件", "discardChanges": "放弃更改", - "stopSearch": "Stop searching", + "stopSearch": "停止搜索", "saveChanges": "保存更改", "editAsText": "以文本形式编辑", "increaseFontSize": "增大字体大小", @@ -232,6 +232,7 @@ "permissions": "权限", "permissionsHelp": "你可以将该用户设置为管理员或单独选择各项权限。如果你选择了“管理员”,则其他的选项会被自动选中,同时该用户可以管理其他用户。\n", "profileSettings": "个人设置", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "阻止用户访问所有文件夹下任何以 . 开头的文件(隐藏文件, 例如: .git, .gitignore)。\n", "ruleExample2": "阻止用户访问其目录范围的根目录下名为 Caddyfile 的文件。", "rules": "规则", @@ -259,7 +260,7 @@ "userUpdated": "用户已更新!", "username": "用户名", "users": "用户", - "currentPassword": "Your Current Password" + "currentPassword": "您当前的密码" }, "sidebar": { "help": "帮助", diff --git a/frontend/src/i18n/zh-tw.json b/frontend/src/i18n/zh-tw.json index d8630129ee..c0cafc3d4d 100644 --- a/frontend/src/i18n/zh-tw.json +++ b/frontend/src/i18n/zh-tw.json @@ -232,6 +232,7 @@ "permissions": "權限", "permissionsHelp": "您可以將該使用者設置為管理員,也可以單獨選擇各項權限。如果選擇了“管理員”,則其他的選項會被自動勾上,同時該使用者可以管理其他使用者。", "profileSettings": "個人設定", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "封鎖使用者存取所有資料夾下任何以 . 開頭的檔案(隱藏文件, 例如: .git, .gitignore)。", "ruleExample2": "封鎖使用者存取其目錄範圍的根目錄下名為 Caddyfile 的檔案。", "rules": "規則", From 550a73b6ba705946ff30bfa7d1219abf8f08450d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 18 Jan 2026 08:54:42 +0100 Subject: [PATCH 006/126] chore(deps): update all non-major dependencies (#5679) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- frontend/pnpm-lock.yaml | 202 ++++++++++++++++++++-------------------- go.mod | 8 +- go.sum | 16 ++-- 3 files changed, 113 insertions(+), 113 deletions(-) diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 37dab7ae6c..d3b79699d6 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -101,28 +101,28 @@ importers: version: 11.0.3(@vue/compiler-dom@3.5.26)(eslint@9.39.2)(rollup@4.55.1)(typescript@5.9.3)(vue-i18n@11.2.8(vue@3.5.26(typescript@5.9.3)))(vue@3.5.26(typescript@5.9.3)) '@tsconfig/node24': specifier: ^24.0.2 - version: 24.0.3 + version: 24.0.4 '@types/lodash-es': specifier: ^4.17.12 version: 4.17.12 '@types/node': specifier: ^24.10.1 - version: 24.10.6 + version: 24.10.9 '@typescript-eslint/eslint-plugin': specifier: ^8.37.0 - version: 8.52.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) + version: 8.53.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) '@vitejs/plugin-legacy': specifier: ^7.2.1 - version: 7.2.1(terser@5.44.1)(vite@7.3.1(@types/node@24.10.6)(terser@5.44.1)(yaml@2.8.2)) + version: 7.2.1(terser@5.46.0)(vite@7.3.1(@types/node@24.10.9)(terser@5.46.0)(yaml@2.8.2)) '@vitejs/plugin-vue': specifier: ^6.0.1 - version: 6.0.3(vite@7.3.1(@types/node@24.10.6)(terser@5.44.1)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3)) + version: 6.0.3(vite@7.3.1(@types/node@24.10.9)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3)) '@vue/eslint-config-prettier': specifier: ^10.2.0 - version: 10.2.0(eslint@9.39.2)(prettier@3.7.4) + version: 10.2.0(eslint@9.39.2)(prettier@3.8.0) '@vue/eslint-config-typescript': specifier: ^14.6.0 - version: 14.6.0(eslint-plugin-vue@10.6.2(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.2.0(eslint@9.39.2)))(eslint@9.39.2)(typescript@5.9.3) + version: 14.6.0(eslint-plugin-vue@10.7.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.2.0(eslint@9.39.2)))(eslint@9.39.2)(typescript@5.9.3) '@vue/tsconfig': specifier: ^0.8.1 version: 0.8.1(typescript@5.9.3)(vue@3.5.26(typescript@5.9.3)) @@ -137,25 +137,25 @@ importers: version: 10.1.8(eslint@9.39.2) eslint-plugin-prettier: specifier: ^5.5.1 - version: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.39.2))(eslint@9.39.2)(prettier@3.7.4) + version: 5.5.5(eslint-config-prettier@10.1.8(eslint@9.39.2))(eslint@9.39.2)(prettier@3.8.0) eslint-plugin-vue: specifier: ^10.5.1 - version: 10.6.2(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.2.0(eslint@9.39.2)) + version: 10.7.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.2.0(eslint@9.39.2)) postcss: specifier: ^8.5.6 version: 8.5.6 prettier: specifier: ^3.6.2 - version: 3.7.4 + version: 3.8.0 terser: specifier: ^5.43.1 - version: 5.44.1 + version: 5.46.0 typescript: specifier: ^5.9.3 version: 5.9.3 vite: specifier: ^7.2.2 - version: 7.3.1(@types/node@24.10.6)(terser@5.44.1)(yaml@2.8.2) + version: 7.3.1(@types/node@24.10.9)(terser@5.46.0)(yaml@2.8.2) vite-plugin-compression2: specifier: ^2.3.1 version: 2.4.0(rollup@4.55.1) @@ -1268,8 +1268,8 @@ packages: cpu: [x64] os: [win32] - '@tsconfig/node24@24.0.3': - resolution: {integrity: sha512-vcERKtKQKHgzt/vfS3Gjasd8SUI2a0WZXpgJURdJsMySpS5+ctgbPfuLj2z/W+w4lAfTWxoN4upKfu2WzIRYnw==} + '@tsconfig/node24@24.0.4': + resolution: {integrity: sha512-2A933l5P5oCbv6qSxHs7ckKwobs8BDAe9SJ/Xr2Hy+nDlwmLE1GhFh/g/vXGRZWgxBg9nX/5piDtHR9Dkw/XuA==} '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} @@ -1287,8 +1287,8 @@ packages: '@types/lodash@4.17.13': resolution: {integrity: sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==} - '@types/node@24.10.6': - resolution: {integrity: sha512-B8h60xgJMR/xmgyX9fncRzEW9gCxoJjdenUhke2v1JGOd/V66KopmWrLPXi5oUI4VuiGK+d+HlXJjDRZMj21EQ==} + '@types/node@24.10.9': + resolution: {integrity: sha512-ne4A0IpG3+2ETuREInjPNhUGis1SFjv1d5asp8MzEAGtOZeTeHVDOYqOgqfhvseqg/iXty2hjBf1zAOb7RNiNw==} '@types/trusted-types@2.0.7': resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} @@ -1304,11 +1304,11 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/eslint-plugin@8.52.0': - resolution: {integrity: sha512-okqtOgqu2qmZJ5iN4TWlgfF171dZmx2FzdOv2K/ixL2LZWDStL8+JgQerI2sa8eAEfoydG9+0V96m7V+P8yE1Q==} + '@typescript-eslint/eslint-plugin@8.53.0': + resolution: {integrity: sha512-eEXsVvLPu8Z4PkFibtuFJLJOTAV/nPdgtSjkGoPpddpFk3/ym2oy97jynY6ic2m6+nc5M8SE1e9v/mHKsulcJg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.52.0 + '@typescript-eslint/parser': ^8.53.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' @@ -1331,8 +1331,8 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.52.0': - resolution: {integrity: sha512-xD0MfdSdEmeFa3OmVqonHi+Cciab96ls1UhIF/qX/O/gPu5KXD0bY9lu33jj04fjzrXHcuvjBcBC+D3SNSadaw==} + '@typescript-eslint/project-service@8.53.0': + resolution: {integrity: sha512-Bl6Gdr7NqkqIP5yP9z1JU///Nmes4Eose6L1HwpuVHwScgDPPuEWbUVhvlZmb8hy0vX9syLk5EGNL700WcBlbg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' @@ -1345,8 +1345,8 @@ packages: resolution: {integrity: sha512-npgS3zi+/30KSOkXNs0LQXtsg9ekZ8OISAOLGWA/ZOEn0ZH74Ginfl7foziV8DT+D98WfQ5Kopwqb/PZOaIJGg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.52.0': - resolution: {integrity: sha512-ixxqmmCcc1Nf8S0mS0TkJ/3LKcC8mruYJPOU6Ia2F/zUUR4pApW7LzrpU3JmtePbRUTes9bEqRc1Gg4iyRnDzA==} + '@typescript-eslint/scope-manager@8.53.0': + resolution: {integrity: sha512-kWNj3l01eOGSdVBnfAF2K1BTh06WS0Yet6JUgb9Cmkqaz3Jlu0fdVUjj9UI8gPidBWSMqDIglmEXifSgDT/D0g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/tsconfig-utils@8.37.0': @@ -1361,8 +1361,8 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/tsconfig-utils@8.52.0': - resolution: {integrity: sha512-jl+8fzr/SdzdxWJznq5nvoI7qn2tNYV/ZBAEcaFMVXf+K6jmXvAFrgo/+5rxgnL152f//pDEAYAhhBAZGrVfwg==} + '@typescript-eslint/tsconfig-utils@8.53.0': + resolution: {integrity: sha512-K6Sc0R5GIG6dNoPdOooQ+KtvT5KCKAvTcY8h2rIuul19vxH5OTQk7ArKkd4yTzkw66WnNY0kPPzzcmWA+XRmiA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' @@ -1374,8 +1374,8 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/type-utils@8.52.0': - resolution: {integrity: sha512-JD3wKBRWglYRQkAtsyGz1AewDu3mTc7NtRjR/ceTyGoPqmdS5oCdx/oZMWD5Zuqmo6/MpsYs0wp6axNt88/2EQ==} + '@typescript-eslint/type-utils@8.53.0': + resolution: {integrity: sha512-BBAUhlx7g4SmcLhn8cnbxoxtmS7hcq39xKCgiutL3oNx1TaIp+cny51s8ewnKMpVUKQUGb41RAUWZ9kxYdovuw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1389,8 +1389,8 @@ packages: resolution: {integrity: sha512-e9k/fneezorUo6WShlQpMxXh8/8wfyc+biu6tnAqA81oWrEic0k21RHzP9uqqpyBBeBKu4T+Bsjy9/b8u7obXQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.52.0': - resolution: {integrity: sha512-LWQV1V4q9V4cT4H5JCIx3481iIFxH1UkVk+ZkGGAV1ZGcjGI9IoFOfg3O6ywz8QqCDEp7Inlg6kovMofsNRaGg==} + '@typescript-eslint/types@8.53.0': + resolution: {integrity: sha512-Bmh9KX31Vlxa13+PqPvt4RzKRN1XORYSLlAE+sO1i28NkisGbTtSLFVB3l7PWdHtR3E0mVMuC7JilWJ99m2HxQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/typescript-estree@8.37.0': @@ -1405,8 +1405,8 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/typescript-estree@8.52.0': - resolution: {integrity: sha512-XP3LClsCc0FsTK5/frGjolyADTh3QmsLp6nKd476xNI9CsSsLnmn4f0jrzNoAulmxlmNIpeXuHYeEQv61Q6qeQ==} + '@typescript-eslint/typescript-estree@8.53.0': + resolution: {integrity: sha512-pw0c0Gdo7Z4xOG987u3nJ8akL9093yEEKv8QTJ+Bhkghj1xyj8cgPaavlr9rq8h7+s6plUJ4QJYw2gCZodqmGw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' @@ -1418,8 +1418,8 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/utils@8.52.0': - resolution: {integrity: sha512-wYndVMWkweqHpEpwPhwqE2lnD2DxC6WVLupU/DOt/0/v+/+iQbbzO3jOHjmBMnhu0DgLULvOaU4h4pwHYi2oRQ==} + '@typescript-eslint/utils@8.53.0': + resolution: {integrity: sha512-XDY4mXTez3Z1iRDI5mbRhH4DFSt46oaIFsLg+Zn97+sYrXACziXSQcSelMybnVZ5pa1P6xYkPr5cMJyunM1ZDA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1433,8 +1433,8 @@ packages: resolution: {integrity: sha512-LlKaciDe3GmZFphXIc79THF/YYBugZ7FS1pO581E/edlVVNbZKDy93evqmrfQ9/Y4uN0vVhX4iuchq26mK/iiA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.52.0': - resolution: {integrity: sha512-ink3/Zofus34nmBsPjow63FP5M7IGff0RKAgqR6+CFpdk22M7aLwC9gOcLGYqr7MczLPzZVERW9hRog3O4n1sQ==} + '@typescript-eslint/visitor-keys@8.53.0': + resolution: {integrity: sha512-LZ2NqIHFhvFwxG0qZeLL9DvdNAHPGCY5dIRwBhyYeU+LfLhcStE1ImjsuTG/WaVh3XysGaeLW8Rqq7cGkPCFvw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@videojs/http-streaming@3.17.2': @@ -1846,8 +1846,8 @@ packages: peerDependencies: eslint: '>=7.0.0' - eslint-plugin-prettier@5.5.4: - resolution: {integrity: sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==} + 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' @@ -1860,8 +1860,8 @@ packages: eslint-config-prettier: optional: true - eslint-plugin-vue@10.6.2: - resolution: {integrity: sha512-nA5yUs/B1KmKzvC42fyD0+l9Yd+LtEpVhWRbXuDj0e+ZURcTtyRbMDWUeJmTAh2wC6jC83raS63anNM2YT3NPw==} + eslint-plugin-vue@10.7.0: + resolution: {integrity: sha512-r2XFCK4qlo1sxEoAMIoTTX0PZAdla0JJDt1fmYiworZUX67WeEGqm+JbyAg3M+pGiJ5U6Mp5WQbontXWtIW7TA==} 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 @@ -2351,12 +2351,12 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + prettier-linter-helpers@1.0.1: + resolution: {integrity: sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==} engines: {node: '>=6.0.0'} - prettier@3.7.4: - resolution: {integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==} + prettier@3.8.0: + resolution: {integrity: sha512-yEPsovQfpxYfgWNhCfECjG5AQaO+K3dp6XERmOepyPDVqcJm+bjyCVO3pmU+nAPe0N5dDvekfGezt/EIiRe1TA==} engines: {node: '>=14'} hasBin: true @@ -2504,8 +2504,8 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - synckit@0.11.11: - resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==} + synckit@0.11.12: + resolution: {integrity: sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==} engines: {node: ^14.18.0 || >=16.0.0} systemjs@6.15.1: @@ -2517,8 +2517,8 @@ packages: tar-mini@0.2.0: resolution: {integrity: sha512-+qfUHz700DWnRutdUsxRRVZ38G1Qr27OetwaMYTdg8hcPxf46U0S1Zf76dQMWRBmusOt2ZCK5kbIaiLkoGO7WQ==} - terser@5.44.1: - resolution: {integrity: sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==} + terser@5.46.0: + resolution: {integrity: sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==} engines: {node: '>=10'} hasBin: true @@ -3820,7 +3820,7 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.55.1': optional: true - '@tsconfig/node24@24.0.3': {} + '@tsconfig/node24@24.0.4': {} '@types/estree@1.0.8': {} @@ -3836,7 +3836,7 @@ snapshots: '@types/lodash@4.17.13': {} - '@types/node@24.10.6': + '@types/node@24.10.9': dependencies: undici-types: 7.16.0 @@ -3862,14 +3862,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.53.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 '@typescript-eslint/parser': 8.37.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.52.0 - '@typescript-eslint/type-utils': 8.52.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/utils': 8.52.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.52.0 + '@typescript-eslint/scope-manager': 8.53.0 + '@typescript-eslint/type-utils': 8.53.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/utils': 8.53.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.53.0 eslint: 9.39.2 ignore: 7.0.5 natural-compare: 1.4.0 @@ -3908,10 +3908,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.52.0(typescript@5.9.3)': + '@typescript-eslint/project-service@8.53.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.52.0(typescript@5.9.3) - '@typescript-eslint/types': 8.52.0 + '@typescript-eslint/tsconfig-utils': 8.53.0(typescript@5.9.3) + '@typescript-eslint/types': 8.53.0 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: @@ -3927,10 +3927,10 @@ snapshots: '@typescript-eslint/types': 8.49.0 '@typescript-eslint/visitor-keys': 8.49.0 - '@typescript-eslint/scope-manager@8.52.0': + '@typescript-eslint/scope-manager@8.53.0': dependencies: - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/visitor-keys': 8.52.0 + '@typescript-eslint/types': 8.53.0 + '@typescript-eslint/visitor-keys': 8.53.0 '@typescript-eslint/tsconfig-utils@8.37.0(typescript@5.9.3)': dependencies: @@ -3940,7 +3940,7 @@ snapshots: dependencies: typescript: 5.9.3 - '@typescript-eslint/tsconfig-utils@8.52.0(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.53.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 @@ -3956,11 +3956,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.52.0(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.53.0(eslint@9.39.2)(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.52.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/types': 8.53.0 + '@typescript-eslint/typescript-estree': 8.53.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.53.0(eslint@9.39.2)(typescript@5.9.3) debug: 4.4.3 eslint: 9.39.2 ts-api-utils: 2.4.0(typescript@5.9.3) @@ -3972,7 +3972,7 @@ snapshots: '@typescript-eslint/types@8.49.0': {} - '@typescript-eslint/types@8.52.0': {} + '@typescript-eslint/types@8.53.0': {} '@typescript-eslint/typescript-estree@8.37.0(typescript@5.9.3)': dependencies: @@ -4005,12 +4005,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.52.0(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.53.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.52.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.52.0(typescript@5.9.3) - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/visitor-keys': 8.52.0 + '@typescript-eslint/project-service': 8.53.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.53.0(typescript@5.9.3) + '@typescript-eslint/types': 8.53.0 + '@typescript-eslint/visitor-keys': 8.53.0 debug: 4.4.3 minimatch: 9.0.5 semver: 7.7.3 @@ -4022,7 +4022,7 @@ snapshots: '@typescript-eslint/utils@8.37.0(eslint@9.39.2)(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2) '@typescript-eslint/scope-manager': 8.37.0 '@typescript-eslint/types': 8.37.0 '@typescript-eslint/typescript-estree': 8.37.0(typescript@5.9.3) @@ -4031,12 +4031,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.52.0(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/utils@8.53.0(eslint@9.39.2)(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2) - '@typescript-eslint/scope-manager': 8.52.0 - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.53.0 + '@typescript-eslint/types': 8.53.0 + '@typescript-eslint/typescript-estree': 8.53.0(typescript@5.9.3) eslint: 9.39.2 typescript: 5.9.3 transitivePeerDependencies: @@ -4052,9 +4052,9 @@ snapshots: '@typescript-eslint/types': 8.49.0 eslint-visitor-keys: 4.2.1 - '@typescript-eslint/visitor-keys@8.52.0': + '@typescript-eslint/visitor-keys@8.53.0': dependencies: - '@typescript-eslint/types': 8.52.0 + '@typescript-eslint/types': 8.53.0 eslint-visitor-keys: 4.2.1 '@videojs/http-streaming@3.17.2(video.js@8.23.4)': @@ -4079,7 +4079,7 @@ snapshots: global: 4.4.0 is-function: 1.0.2 - '@vitejs/plugin-legacy@7.2.1(terser@5.44.1)(vite@7.3.1(@types/node@24.10.6)(terser@5.44.1)(yaml@2.8.2))': + '@vitejs/plugin-legacy@7.2.1(terser@5.46.0)(vite@7.3.1(@types/node@24.10.9)(terser@5.46.0)(yaml@2.8.2))': dependencies: '@babel/core': 7.28.5 '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.28.5) @@ -4093,15 +4093,15 @@ snapshots: magic-string: 0.30.21 regenerator-runtime: 0.14.1 systemjs: 6.15.1 - terser: 5.44.1 - vite: 7.3.1(@types/node@24.10.6)(terser@5.44.1)(yaml@2.8.2) + terser: 5.46.0 + vite: 7.3.1(@types/node@24.10.9)(terser@5.46.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@6.0.3(vite@7.3.1(@types/node@24.10.6)(terser@5.44.1)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3))': + '@vitejs/plugin-vue@6.0.3(vite@7.3.1(@types/node@24.10.9)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3))': dependencies: '@rolldown/pluginutils': 1.0.0-beta.53 - vite: 7.3.1(@types/node@24.10.6)(terser@5.44.1)(yaml@2.8.2) + vite: 7.3.1(@types/node@24.10.9)(terser@5.46.0)(yaml@2.8.2) vue: 3.5.26(typescript@5.9.3) '@volar/language-core@2.4.27': @@ -4166,20 +4166,20 @@ snapshots: dependencies: rfdc: 1.4.1 - '@vue/eslint-config-prettier@10.2.0(eslint@9.39.2)(prettier@3.7.4)': + '@vue/eslint-config-prettier@10.2.0(eslint@9.39.2)(prettier@3.8.0)': dependencies: eslint: 9.39.2 eslint-config-prettier: 10.1.8(eslint@9.39.2) - eslint-plugin-prettier: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.39.2))(eslint@9.39.2)(prettier@3.7.4) - prettier: 3.7.4 + eslint-plugin-prettier: 5.5.5(eslint-config-prettier@10.1.8(eslint@9.39.2))(eslint@9.39.2)(prettier@3.8.0) + prettier: 3.8.0 transitivePeerDependencies: - '@types/eslint' - '@vue/eslint-config-typescript@14.6.0(eslint-plugin-vue@10.6.2(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.2.0(eslint@9.39.2)))(eslint@9.39.2)(typescript@5.9.3)': + '@vue/eslint-config-typescript@14.6.0(eslint-plugin-vue@10.7.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.2.0(eslint@9.39.2)))(eslint@9.39.2)(typescript@5.9.3)': dependencies: '@typescript-eslint/utils': 8.37.0(eslint@9.39.2)(typescript@5.9.3) eslint: 9.39.2 - eslint-plugin-vue: 10.6.2(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.2.0(eslint@9.39.2)) + eslint-plugin-vue: 10.7.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.2.0(eslint@9.39.2)) fast-glob: 3.3.3 typescript-eslint: 8.37.0(eslint@9.39.2)(typescript@5.9.3) vue-eslint-parser: 10.2.0(eslint@9.39.2) @@ -4543,18 +4543,18 @@ snapshots: dependencies: eslint: 9.39.2 - eslint-plugin-prettier@5.5.4(eslint-config-prettier@10.1.8(eslint@9.39.2))(eslint@9.39.2)(prettier@3.7.4): + eslint-plugin-prettier@5.5.5(eslint-config-prettier@10.1.8(eslint@9.39.2))(eslint@9.39.2)(prettier@3.8.0): dependencies: eslint: 9.39.2 - prettier: 3.7.4 - prettier-linter-helpers: 1.0.0 - synckit: 0.11.11 + prettier: 3.8.0 + prettier-linter-helpers: 1.0.1 + synckit: 0.11.12 optionalDependencies: eslint-config-prettier: 10.1.8(eslint@9.39.2) - eslint-plugin-vue@10.6.2(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.2.0(eslint@9.39.2)): + eslint-plugin-vue@10.7.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.2.0(eslint@9.39.2)): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2) eslint: 9.39.2 natural-compare: 1.4.0 nth-check: 2.1.1 @@ -5015,11 +5015,11 @@ snapshots: prelude-ls@1.2.1: {} - prettier-linter-helpers@1.0.0: + prettier-linter-helpers@1.0.1: dependencies: fast-diff: 1.3.0 - prettier@3.7.4: {} + prettier@3.8.0: {} pretty-bytes@7.1.0: {} @@ -5170,7 +5170,7 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - synckit@0.11.11: + synckit@0.11.12: dependencies: '@pkgr/core': 0.2.9 @@ -5180,7 +5180,7 @@ snapshots: tar-mini@0.2.0: {} - terser@5.44.1: + terser@5.46.0: dependencies: '@jridgewell/source-map': 0.3.11 acorn: 8.15.0 @@ -5316,7 +5316,7 @@ snapshots: transitivePeerDependencies: - rollup - vite@7.3.1(@types/node@24.10.6)(terser@5.44.1)(yaml@2.8.2): + vite@7.3.1(@types/node@24.10.9)(terser@5.46.0)(yaml@2.8.2): dependencies: esbuild: 0.27.2 fdir: 6.5.0(picomatch@4.0.3) @@ -5325,9 +5325,9 @@ snapshots: rollup: 4.55.1 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.10.6 + '@types/node': 24.10.9 fsevents: 2.3.3 - terser: 5.44.1 + terser: 5.46.0 yaml: 2.8.2 vscode-uri@3.1.0: {} diff --git a/go.mod b/go.mod index 44741833ab..edf4627760 100644 --- a/go.mod +++ b/go.mod @@ -24,8 +24,8 @@ require ( github.com/spf13/viper v1.21.0 github.com/stretchr/testify v1.11.1 github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce - golang.org/x/crypto v0.46.0 - golang.org/x/image v0.34.0 + golang.org/x/crypto v0.47.0 + golang.org/x/image v0.35.0 golang.org/x/text v0.33.0 gopkg.in/natefinch/lumberjack.v2 v2.2.1 gopkg.in/yaml.v3 v3.0.1 @@ -73,9 +73,9 @@ require ( go.etcd.io/bbolt v1.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect go4.org v0.0.0-20230225012048-214862532bf5 // indirect - golang.org/x/net v0.47.0 // indirect + golang.org/x/net v0.48.0 // indirect golang.org/x/sync v0.19.0 // indirect - golang.org/x/sys v0.39.0 // indirect + golang.org/x/sys v0.40.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v2 v2.4.0 // indirect ) diff --git a/go.sum b/go.sum index 443fb17ce7..45dff85929 100644 --- a/go.sum +++ b/go.sum @@ -266,8 +266,8 @@ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU= -golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0= +golang.org/x/crypto v0.47.0 h1:V6e3FRj+n4dbpw86FJ8Fv7XVOql7TEwpHapKoMJ/GO8= +golang.org/x/crypto v0.47.0/go.mod h1:ff3Y9VzzKbwSSEzWqJsJVBnWmRwRSHt/6Op5n9bQc4A= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -279,8 +279,8 @@ golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EH golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.34.0 h1:33gCkyw9hmwbZJeZkct8XyR11yH889EQt/QH4VmXMn8= -golang.org/x/image v0.34.0/go.mod h1:2RNFBZRB+vnwwFil8GkMdRvrJOFd1AzdZI6vOY+eJVU= +golang.org/x/image v0.35.0 h1:LKjiHdgMtO8z7Fh18nGY6KDcoEtVfsgLDPeLyguqb7I= +golang.org/x/image v0.35.0/go.mod h1:MwPLTVgvxSASsxdLzKrl8BRFuyqMyGhLwmC+TO1Sybk= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -319,8 +319,8 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20221002022538-bcab6841153b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= -golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= +golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= +golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -360,8 +360,8 @@ golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220928140112-f11e5e49a4ec/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= -golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= +golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= From 785b7abb7ba7a86cc0deae1052c319ff714c222c Mon Sep 17 00:00:00 2001 From: Ariel Leyva Date: Sun, 18 Jan 2026 02:55:20 -0500 Subject: [PATCH 007/126] feat: added cut, copy, paste and show command palette functions in header (#5648) --- frontend/src/css/base.css | 4 ++ frontend/src/utils/clipboard.ts | 14 +++++ frontend/src/views/files/Editor.vue | 88 ++++++++++++++++++++++++++++- 3 files changed, 105 insertions(+), 1 deletion(-) diff --git a/frontend/src/css/base.css b/frontend/src/css/base.css index be5b0b98b9..f0b8ef0cee 100644 --- a/frontend/src/css/base.css +++ b/frontend/src/css/base.css @@ -185,3 +185,7 @@ html[dir="rtl"] .breadcrumbs a { .vfm-modal { z-index: 9999999 !important; } + +body > div[style*="z-index: 9990"] { + z-index: 10000 !important; +} diff --git a/frontend/src/utils/clipboard.ts b/frontend/src/utils/clipboard.ts index 23bb78953c..53e03589b7 100644 --- a/frontend/src/utils/clipboard.ts +++ b/frontend/src/utils/clipboard.ts @@ -51,6 +51,20 @@ export function copy(data: ClipboardArgs, opts?: ClipboardOpts) { }); } +export function read() { + return new Promise((resolve, reject) => { + if ( + // Clipboard API requires secure context + window.isSecureContext && + typeof navigator.clipboard !== "undefined" + ) { + navigator.clipboard.readText().then(resolve).catch(reject); + } else { + reject(); + } + }); +} + function getPermission(name: string) { return new Promise((resolve, reject) => { typeof navigator.permissions !== "undefined" && diff --git a/frontend/src/views/files/Editor.vue b/frontend/src/views/files/Editor.vue index fc5f972848..7d3a8dfc75 100644 --- a/frontend/src/views/files/Editor.vue +++ b/frontend/src/views/files/Editor.vue @@ -41,7 +41,30 @@ -
+
{{ t("prompts.filesSelected", fileStore.selectedCount) }} @@ -158,6 +164,7 @@ id="listing" ref="listing" class="file-icons" + data-clear-on-click="true" :class="authStore.user?.viewMode ?? ''" @click="handleEmptyAreaClick" > @@ -205,11 +212,12 @@
-

+

{{ t("files.folders") }}

-

+

{{ t("files.files") }}

{ const target = e.target; if (!(target instanceof HTMLElement)) return; - if (target.closest("item") || target.closest(".item")) return; - - // Do not clear selection when clicking on context menu actions - if (target.closest(".context-menu")) return; - - fileStore.selected = []; + if (target.dataset.clearOnClick === "true") { + fileStore.selected = []; + } }; From 1053aace8c9a63ded3780f44b18f724cd5602e65 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 24 Jan 2026 14:51:03 +0100 Subject: [PATCH 014/126] chore(release): 2.56.0 --- CHANGELOG.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f49dca906..0cc955d5e3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,19 @@ All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines. +## [2.56.0](https://github.com/filebrowser/filebrowser/compare/v2.55.0...v2.56.0) (2026-01-24) + + +### Features + +* Updates for project File Browser ([#5698](https://github.com/filebrowser/filebrowser/issues/5698)) ([f0f2f1f](https://github.com/filebrowser/filebrowser/commit/f0f2f1ff069aae566d8bf25ec275da59f29a96bc)) + + +### Bug Fixes + +* adjust columns of the table from the "users ls" command ([#5716](https://github.com/filebrowser/filebrowser/issues/5716)) ([3032a1f](https://github.com/filebrowser/filebrowser/commit/3032a1fade43737c51c49b5ccda34f336394c2ed)) +* avoid clearing selection when clicking elements outside the empty area ([#5715](https://github.com/filebrowser/filebrowser/issues/5715)) ([004488c](https://github.com/filebrowser/filebrowser/commit/004488c15b3c30784e1ea564b3ca9feec7bcad08)) + ## [2.55.0](https://github.com/filebrowser/filebrowser/compare/v2.54.0...v2.55.0) (2026-01-18) From b594d4d4e28a1b35e69d81d2c35948fe0d629888 Mon Sep 17 00:00:00 2001 From: Ariel Leyva Date: Sat, 31 Jan 2026 01:35:47 -0500 Subject: [PATCH 015/126] fix: adjust yaml config decodification to yaml.v3 (#5722) --- cmd/config_import.go | 8 +------- cmd/utils.go | 28 ---------------------------- 2 files changed, 1 insertion(+), 35 deletions(-) diff --git a/cmd/config_import.go b/cmd/config_import.go index 9a8387219e..8019bbb8ce 100644 --- a/cmd/config_import.go +++ b/cmd/config_import.go @@ -3,7 +3,6 @@ package cmd import ( "encoding/json" "errors" - "path/filepath" "reflect" "github.com/spf13/cobra" @@ -68,12 +67,7 @@ The path must be for a json or yaml file.`, return err } - var rawAuther interface{} - if filepath.Ext(args[0]) != ".json" { - rawAuther = cleanUpInterfaceMap(file.Auther.(map[interface{}]interface{})) - } else { - rawAuther = file.Auther - } + var rawAuther = file.Auther var auther auth.Auther var autherErr error diff --git a/cmd/utils.go b/cmd/utils.go index ee637fa3b7..a57856e425 100644 --- a/cmd/utils.go +++ b/cmd/utils.go @@ -3,7 +3,6 @@ package cmd import ( "encoding/json" "errors" - "fmt" "io/fs" "log" "os" @@ -249,33 +248,6 @@ func jsonYamlArg(cmd *cobra.Command, args []string) error { } } -func cleanUpInterfaceMap(in map[interface{}]interface{}) map[string]interface{} { - result := make(map[string]interface{}) - for k, v := range in { - result[fmt.Sprintf("%v", k)] = cleanUpMapValue(v) - } - return result -} - -func cleanUpInterfaceArray(in []interface{}) []interface{} { - result := make([]interface{}, len(in)) - for i, v := range in { - result[i] = cleanUpMapValue(v) - } - return result -} - -func cleanUpMapValue(v interface{}) interface{} { - switch v := v.(type) { - case []interface{}: - return cleanUpInterfaceArray(v) - case map[interface{}]interface{}: - return cleanUpInterfaceMap(v) - default: - return v - } -} - // convertCmdStrToCmdArray checks if cmd string is blank (whitespace included) // then returns empty string array, else returns the split word array of cmd. // This is to ensure the result will never be []string{""} From 3a08949c7fa797b61f67cef35ad4a3a0a500d355 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 31 Jan 2026 07:40:11 +0100 Subject: [PATCH 016/126] chore(deps): update all non-major dependencies (#5732) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- frontend/package.json | 2 +- frontend/pnpm-lock.yaml | 221 +++++++++++++++++++++++----------------- go.mod | 2 +- go.sum | 4 +- 4 files changed, 134 insertions(+), 95 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 8b661cee6b..95802a7d8e 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -71,5 +71,5 @@ "vite-plugin-compression2": "^2.3.1", "vue-tsc": "^3.1.3" }, - "packageManager": "pnpm@10.28.1+sha512.7d7dbbca9e99447b7c3bf7a73286afaaf6be99251eb9498baefa7d406892f67b879adb3a1d7e687fc4ccc1a388c7175fbaae567a26ab44d1067b54fcb0d6a316" + "packageManager": "pnpm@10.28.2+sha512.41872f037ad22f7348e3b1debbaf7e867cfd448f2726d9cf74c08f19507c31d2c8e7a11525b983febc2df640b5438dee6023ebb1f84ed43cc2d654d2bc326264" } diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 8829910db5..468b87bb61 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -16,7 +16,7 @@ importers: version: 14.1.0(vue@3.5.27(typescript@5.9.3)) '@vueuse/integrations': specifier: ^14.0.0 - version: 14.1.0(focus-trap@7.6.2)(jwt-decode@4.0.0)(vue@3.5.27(typescript@5.9.3)) + version: 14.2.0(focus-trap@7.6.2)(jwt-decode@4.0.0)(vue@3.5.27(typescript@5.9.3)) ace-builds: specifier: ^1.43.2 version: 1.43.6 @@ -58,7 +58,7 @@ importers: version: 7.1.0 qrcode.vue: specifier: ^3.6.0 - version: 3.6.0(vue@3.5.27(typescript@5.9.3)) + version: 3.7.0(vue@3.5.27(typescript@5.9.3)) tus-js-client: specifier: ^4.3.1 version: 4.3.1 @@ -79,7 +79,7 @@ importers: version: 3.5.27(typescript@5.9.3) vue-final-modal: specifier: ^4.5.5 - version: 4.5.5(@vueuse/core@14.1.0(vue@3.5.27(typescript@5.9.3)))(@vueuse/integrations@14.1.0(focus-trap@7.6.2)(jwt-decode@4.0.0)(vue@3.5.27(typescript@5.9.3)))(focus-trap@7.6.2)(vue@3.5.27(typescript@5.9.3)) + version: 4.5.5(@vueuse/core@14.1.0(vue@3.5.27(typescript@5.9.3)))(@vueuse/integrations@14.2.0(focus-trap@7.6.2)(jwt-decode@4.0.0)(vue@3.5.27(typescript@5.9.3)))(focus-trap@7.6.2)(vue@3.5.27(typescript@5.9.3)) vue-i18n: specifier: ^11.1.10 version: 11.2.8(vue@3.5.27(typescript@5.9.3)) @@ -110,7 +110,7 @@ importers: version: 24.10.9 '@typescript-eslint/eslint-plugin': specifier: ^8.37.0 - version: 8.53.1(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) + version: 8.54.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) '@vitejs/plugin-legacy': specifier: ^7.2.1 version: 7.2.1(terser@5.46.0)(vite@7.3.1(@types/node@24.10.9)(terser@5.46.0)(yaml@2.8.2)) @@ -128,7 +128,7 @@ importers: version: 0.8.1(typescript@5.9.3)(vue@3.5.27(typescript@5.9.3)) autoprefixer: specifier: ^10.4.21 - version: 10.4.23(postcss@8.5.6) + version: 10.4.24(postcss@8.5.6) eslint: specifier: ^9.31.0 version: 9.39.2 @@ -161,7 +161,7 @@ importers: version: 2.4.0(rollup@4.55.1) vue-tsc: specifier: ^3.1.3 - version: 3.2.3(typescript@5.9.3) + version: 3.2.4(typescript@5.9.3) packages: @@ -1186,66 +1186,79 @@ packages: resolution: {integrity: sha512-Rn3n+FUk2J5VWx+ywrG/HGPTD9jXNbicRtTM11e/uorplArnXZYsVifnPPqNNP5BsO3roI4n8332ukpY/zN7rQ==} cpu: [arm] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm-musleabihf@4.55.1': resolution: {integrity: sha512-grPNWydeKtc1aEdrJDWk4opD7nFtQbMmV7769hiAaYyUKCT1faPRm2av8CX1YJsZ4TLAZcg9gTR1KvEzoLjXkg==} cpu: [arm] os: [linux] + libc: [musl] '@rollup/rollup-linux-arm64-gnu@4.55.1': resolution: {integrity: sha512-a59mwd1k6x8tXKcUxSyISiquLwB5pX+fJW9TkWU46lCqD/GRDe9uDN31jrMmVP3feI3mhAdvcCClhV8V5MhJFQ==} cpu: [arm64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm64-musl@4.55.1': resolution: {integrity: sha512-puS1MEgWX5GsHSoiAsF0TYrpomdvkaXm0CofIMG5uVkP6IBV+ZO9xhC5YEN49nsgYo1DuuMquF9+7EDBVYu4uA==} cpu: [arm64] os: [linux] + libc: [musl] '@rollup/rollup-linux-loong64-gnu@4.55.1': resolution: {integrity: sha512-r3Wv40in+lTsULSb6nnoudVbARdOwb2u5fpeoOAZjFLznp6tDU8kd+GTHmJoqZ9lt6/Sys33KdIHUaQihFcu7g==} cpu: [loong64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-loong64-musl@4.55.1': resolution: {integrity: sha512-MR8c0+UxAlB22Fq4R+aQSPBayvYa3+9DrwG/i1TKQXFYEaoW3B5b/rkSRIypcZDdWjWnpcvxbNaAJDcSbJU3Lw==} cpu: [loong64] os: [linux] + libc: [musl] '@rollup/rollup-linux-ppc64-gnu@4.55.1': resolution: {integrity: sha512-3KhoECe1BRlSYpMTeVrD4sh2Pw2xgt4jzNSZIIPLFEsnQn9gAnZagW9+VqDqAHgm1Xc77LzJOo2LdigS5qZ+gw==} cpu: [ppc64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-ppc64-musl@4.55.1': resolution: {integrity: sha512-ziR1OuZx0vdYZZ30vueNZTg73alF59DicYrPViG0NEgDVN8/Jl87zkAPu4u6VjZST2llgEUjaiNl9JM6HH1Vdw==} cpu: [ppc64] os: [linux] + libc: [musl] '@rollup/rollup-linux-riscv64-gnu@4.55.1': resolution: {integrity: sha512-uW0Y12ih2XJRERZ4jAfKamTyIHVMPQnTZcQjme2HMVDAHY4amf5u414OqNYC+x+LzRdRcnIG1YodLrrtA8xsxw==} cpu: [riscv64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-riscv64-musl@4.55.1': resolution: {integrity: sha512-u9yZ0jUkOED1BFrqu3BwMQoixvGHGZ+JhJNkNKY/hyoEgOwlqKb62qu+7UjbPSHYjiVy8kKJHvXKv5coH4wDeg==} cpu: [riscv64] os: [linux] + libc: [musl] '@rollup/rollup-linux-s390x-gnu@4.55.1': resolution: {integrity: sha512-/0PenBCmqM4ZUd0190j7J0UsQ/1nsi735iPRakO8iPciE7BQ495Y6msPzaOmvx0/pn+eJVVlZrNrSh4WSYLxNg==} cpu: [s390x] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.55.1': resolution: {integrity: sha512-a8G4wiQxQG2BAvo+gU6XrReRRqj+pLS2NGXKm8io19goR+K8lw269eTrPkSdDTALwMmJp4th2Uh0D8J9bEV1vg==} cpu: [x64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-musl@4.55.1': resolution: {integrity: sha512-bD+zjpFrMpP/hqkfEcnjXWHMw5BIghGisOKPj+2NaNDuVT+8Ds4mPf3XcPHuat1tz89WRL+1wbcxKY3WSbiT7w==} cpu: [x64] os: [linux] + libc: [musl] '@rollup/rollup-openbsd-x64@4.55.1': resolution: {integrity: sha512-eLXw0dOiqE4QmvikfQ6yjgkg/xDM+MdU9YJuP4ySTibXU0oAvnEWXt7UDJmD4UkYialMfOGFPJnIHSe/kdzPxg==} @@ -1313,11 +1326,11 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/eslint-plugin@8.53.1': - resolution: {integrity: sha512-cFYYFZ+oQFi6hUnBTbLRXfTJiaQtYE3t4O692agbBl+2Zy+eqSKWtPjhPXJu1G7j4RLjKgeJPDdq3EqOwmX5Ag==} + '@typescript-eslint/eslint-plugin@8.54.0': + resolution: {integrity: sha512-hAAP5io/7csFStuOmR782YmTthKBJ9ND3WVL60hcOjvtGFb+HJxH4O5huAcmcZ9v9G8P+JETiZ/G1B8MALnWZQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.53.1 + '@typescript-eslint/parser': ^8.54.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' @@ -1340,8 +1353,8 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.53.1': - resolution: {integrity: sha512-WYC4FB5Ra0xidsmlPb+1SsnaSKPmS3gsjIARwbEkHkoWloQmuzcfypljaJcR78uyLA1h8sHdWWPHSLDI+MtNog==} + '@typescript-eslint/project-service@8.54.0': + resolution: {integrity: sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' @@ -1354,8 +1367,8 @@ packages: resolution: {integrity: sha512-npgS3zi+/30KSOkXNs0LQXtsg9ekZ8OISAOLGWA/ZOEn0ZH74Ginfl7foziV8DT+D98WfQ5Kopwqb/PZOaIJGg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.53.1': - resolution: {integrity: sha512-Lu23yw1uJMFY8cUeq7JlrizAgeQvWugNQzJp8C3x8Eo5Jw5Q2ykMdiiTB9vBVOOUBysMzmRRmUfwFrZuI2C4SQ==} + '@typescript-eslint/scope-manager@8.54.0': + resolution: {integrity: sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/tsconfig-utils@8.37.0': @@ -1370,8 +1383,8 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/tsconfig-utils@8.53.1': - resolution: {integrity: sha512-qfvLXS6F6b1y43pnf0pPbXJ+YoXIC7HKg0UGZ27uMIemKMKA6XH2DTxsEDdpdN29D+vHV07x/pnlPNVLhdhWiA==} + '@typescript-eslint/tsconfig-utils@8.54.0': + resolution: {integrity: sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' @@ -1383,8 +1396,8 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/type-utils@8.53.1': - resolution: {integrity: sha512-MOrdtNvyhy0rHyv0ENzub1d4wQYKb2NmIqG7qEqPWFW7Mpy2jzFC3pQ2yKDvirZB7jypm5uGjF2Qqs6OIqu47w==} + '@typescript-eslint/type-utils@8.54.0': + resolution: {integrity: sha512-hiLguxJWHjjwL6xMBwD903ciAwd7DmK30Y9Axs/etOkftC3ZNN9K44IuRD/EB08amu+Zw6W37x9RecLkOo3pMA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1398,8 +1411,8 @@ packages: resolution: {integrity: sha512-e9k/fneezorUo6WShlQpMxXh8/8wfyc+biu6tnAqA81oWrEic0k21RHzP9uqqpyBBeBKu4T+Bsjy9/b8u7obXQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.53.1': - resolution: {integrity: sha512-jr/swrr2aRmUAUjW5/zQHbMaui//vQlsZcJKijZf3M26bnmLj8LyZUpj8/Rd6uzaek06OWsqdofN/Thenm5O8A==} + '@typescript-eslint/types@8.54.0': + resolution: {integrity: sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/typescript-estree@8.37.0': @@ -1414,8 +1427,8 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/typescript-estree@8.53.1': - resolution: {integrity: sha512-RGlVipGhQAG4GxV1s34O91cxQ/vWiHJTDHbXRr0li2q/BGg3RR/7NM8QDWgkEgrwQYCvmJV9ichIwyoKCQ+DTg==} + '@typescript-eslint/typescript-estree@8.54.0': + resolution: {integrity: sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' @@ -1427,8 +1440,8 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/utils@8.53.1': - resolution: {integrity: sha512-c4bMvGVWW4hv6JmDUEG7fSYlWOl3II2I4ylt0NM+seinYQlZMQIaKaXIIVJWt9Ofh6whrpM+EdDQXKXjNovvrg==} + '@typescript-eslint/utils@8.54.0': + resolution: {integrity: sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1442,8 +1455,8 @@ packages: resolution: {integrity: sha512-LlKaciDe3GmZFphXIc79THF/YYBugZ7FS1pO581E/edlVVNbZKDy93evqmrfQ9/Y4uN0vVhX4iuchq26mK/iiA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.53.1': - resolution: {integrity: sha512-oy+wV7xDKFPRyNggmXuZQSBzvoLnpmJs+GhzRhPjrxl2b/jIlyjVokzm47CZCDUdXKr2zd7ZLodPfOBpOPyPlg==} + '@typescript-eslint/visitor-keys@8.54.0': + resolution: {integrity: sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@videojs/http-streaming@3.17.2': @@ -1523,8 +1536,8 @@ packages: typescript: optional: true - '@vue/language-core@3.2.3': - resolution: {integrity: sha512-VpN/GnYDzGLh44AI6i1OB/WsLXo6vwnl0EWHBelGc4TyC0yEq6azwNaed/+Tgr8anFlSdWYnMEkyHJDPe7ii7A==} + '@vue/language-core@3.2.4': + resolution: {integrity: sha512-bqBGuSG4KZM45KKTXzGtoCl9cWju5jsaBKaJJe3h5hRAAWpZUuj5G+L+eI01sPIkm4H6setKRlw7E85wLdDNew==} '@vue/reactivity@3.5.27': resolution: {integrity: sha512-vvorxn2KXfJ0nBEnj4GYshSgsyMNFnIQah/wczXlsNXt+ijhugmW+PpJ2cNPe4V6jpnBcs0MhCODKllWG+nvoQ==} @@ -1559,14 +1572,19 @@ packages: peerDependencies: vue: ^3.5.0 - '@vueuse/integrations@14.1.0': - resolution: {integrity: sha512-eNQPdisnO9SvdydTIXnTE7c29yOsJBD/xkwEyQLdhDC/LKbqrFpXHb3uS//7NcIrQO3fWVuvMGp8dbK6mNEMCA==} + '@vueuse/core@14.2.0': + resolution: {integrity: sha512-tpjzVl7KCQNVd/qcaCE9XbejL38V6KJAEq/tVXj7mDPtl6JtzmUdnXelSS+ULRkkrDgzYVK7EerQJvd2jR794Q==} + peerDependencies: + vue: ^3.5.0 + + '@vueuse/integrations@14.2.0': + resolution: {integrity: sha512-Yuo5XbIi6XkfSXOYKd5SBZwyBEyO3Hd41eeG2555hDbE0Maz/P0BfPJDYhgDXjS9xI0jkWUUp1Zh5lXHOgkwLw==} peerDependencies: async-validator: ^4 axios: ^1 change-case: ^5 drauu: ^0.4 - focus-trap: ^7 + focus-trap: ^7 || ^8 fuse.js: ^7 idb-keyval: ^6 jwt-decode: ^4 @@ -1604,11 +1622,19 @@ packages: '@vueuse/metadata@14.1.0': resolution: {integrity: sha512-7hK4g015rWn2PhKcZ99NyT+ZD9sbwm7SGvp7k+k+rKGWnLjS/oQozoIZzWfCewSUeBmnJkIb+CNr7Zc/EyRnnA==} + '@vueuse/metadata@14.2.0': + resolution: {integrity: sha512-i3axTGjU8b13FtyR4Keeama+43iD+BwX9C2TmzBVKqjSHArF03hjkp2SBZ1m72Jk2UtrX0aYCugBq2R1fhkuAQ==} + '@vueuse/shared@14.1.0': resolution: {integrity: sha512-EcKxtYvn6gx1F8z9J5/rsg3+lTQnvOruQd8fUecW99DCK04BkWD7z5KQ/wTAx+DazyoEE9dJt/zV8OIEQbM6kw==} peerDependencies: vue: ^3.5.0 + '@vueuse/shared@14.2.0': + resolution: {integrity: sha512-Z0bmluZTlAXgUcJ4uAFaML16JcD8V0QG00Db3quR642I99JXIDRa2MI2LGxiLVhcBjVnL1jOzIvT5TT2lqJlkA==} + peerDependencies: + vue: ^3.5.0 + '@xmldom/xmldom@0.7.13': resolution: {integrity: sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g==} engines: {node: '>=10.0.0'} @@ -1647,8 +1673,8 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - autoprefixer@10.4.23: - resolution: {integrity: sha512-YYTXSFulfwytnjAPlw8QHncHJmlvFKtczb8InXaAx9Q0LbfDnfEYDE55omerIJKihhmU61Ft+cAOSzQVaBUmeA==} + autoprefixer@10.4.24: + resolution: {integrity: sha512-uHZg7N9ULTVbutaIsDRoUkoS8/h3bdsmVJYZ5l3wv8Cp/6UIIoRDm90hZ+BwxUj/hGBEzLxdHNSKuFpn8WOyZw==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: @@ -1676,8 +1702,8 @@ packages: resolution: {integrity: sha512-73lC1ugzwoaWCLJ1LvOgrR5xsMLTqSKIEoMHVtL9E/HNk0PXtTM76ZIm84856/SF7Nv8mPZxKoBsgpm0tR1u1Q==} hasBin: true - baseline-browser-mapping@2.9.7: - resolution: {integrity: sha512-k9xFKplee6KIio3IDbwj+uaCLpqzOwakOgmqzPezM0sFJlFKcg30vk2wOiAJtkTSfx0SSQDSe8q+mWA/fSH5Zg==} + baseline-browser-mapping@2.9.19: + resolution: {integrity: sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==} hasBin: true birpc@2.8.0: @@ -1723,8 +1749,8 @@ packages: caniuse-lite@1.0.30001754: resolution: {integrity: sha512-x6OeBXueoAceOmotzx3PO4Zpt4rzpeIFsSr6AAePTZxSkXiYDUmpypEl7e2+8NCd9bD7bXjqyef8CJYPC1jfxg==} - caniuse-lite@1.0.30001760: - resolution: {integrity: sha512-7AAMPcueWELt1p3mi13HR/LHH0TJLT11cnwDJEs3xA4+CK/PLKeO9Kl1oru24htkyUKtkGCvAx4ohB0Ttry8Dw==} + caniuse-lite@1.0.30001766: + resolution: {integrity: sha512-4C0lfJ0/YPjJQHagaE9x2Elb69CIqEPZeG0anQt9SIvIoOH4a4uaRl73IavyO+0qZh6MDLH//DrXThEYKHkmYA==} chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} @@ -1805,8 +1831,8 @@ packages: electron-to-chromium@1.5.250: resolution: {integrity: sha512-/5UMj9IiGDMOFBnN4i7/Ry5onJrAGSbOGo3s9FEKmwobGq6xw832ccET0CE3CkkMBZ8GJSlUIesZofpyurqDXw==} - electron-to-chromium@1.5.267: - resolution: {integrity: sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==} + electron-to-chromium@1.5.283: + resolution: {integrity: sha512-3vifjt1HgrGW/h76UEeny+adYApveS9dH2h3p57JYzBSXJIKUJAvtmIytDKjcSCt9xHfrNCFJ7gts6vkhuq++w==} entities@7.0.1: resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} @@ -2387,8 +2413,8 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - qrcode.vue@3.6.0: - resolution: {integrity: sha512-vQcl2fyHYHMjDO1GguCldJxepq2izQjBkDEEu9NENgfVKP6mv/e2SU62WbqYHGwTgWXLhxZ1NCD1dAZKHQq1fg==} + qrcode.vue@3.7.0: + resolution: {integrity: sha512-Wh5JCtweVO/QiIoS/K9En+GXqFwaKyoF2j4xmqxT8TzAn5VeOs2pLD8uPaaTKuS1Uzze+UAl6MkI4d1SdjH6TQ==} peerDependencies: vue: ^3.0.0 @@ -2597,8 +2623,8 @@ packages: peerDependencies: browserslist: '>= 4.21.0' - update-browserslist-db@1.2.2: - resolution: {integrity: sha512-E85pfNzMQ9jpKkA7+TJAi4TJN+tBCuWh5rUcS/sv6cFi+1q9LYDwDI5dpUL0u/73EElyQ8d3TEaeW4sPedBqYA==} + update-browserslist-db@1.2.3: + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -2721,8 +2747,8 @@ packages: peerDependencies: vue: ^3.0.2 - vue-tsc@3.2.3: - resolution: {integrity: sha512-1RdRB7rQXGFMdpo0aXf9spVzWEPGAk7PEb/ejHQwVrcuQA/HsGiixIc3uBQeqY2YjeEEgvr2ShQewBgcN4c1Cw==} + vue-tsc@3.2.4: + resolution: {integrity: sha512-xj3YCvSLNDKt1iF9OcImWHhmYcihVu9p4b9s4PGR/qp6yhW+tZJaypGxHScRyOrdnHvaOeF+YkZOdKwbgGvp5g==} hasBin: true peerDependencies: typescript: '>=5.0.0' @@ -3880,14 +3906,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.53.1(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.54.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 '@typescript-eslint/parser': 8.37.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.53.1 - '@typescript-eslint/type-utils': 8.53.1(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/utils': 8.53.1(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.53.1 + '@typescript-eslint/scope-manager': 8.54.0 + '@typescript-eslint/type-utils': 8.54.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/utils': 8.54.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.54.0 eslint: 9.39.2 ignore: 7.0.5 natural-compare: 1.4.0 @@ -3926,10 +3952,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.53.1(typescript@5.9.3)': + '@typescript-eslint/project-service@8.54.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.53.1(typescript@5.9.3) - '@typescript-eslint/types': 8.53.1 + '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.9.3) + '@typescript-eslint/types': 8.54.0 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: @@ -3945,10 +3971,10 @@ snapshots: '@typescript-eslint/types': 8.49.0 '@typescript-eslint/visitor-keys': 8.49.0 - '@typescript-eslint/scope-manager@8.53.1': + '@typescript-eslint/scope-manager@8.54.0': dependencies: - '@typescript-eslint/types': 8.53.1 - '@typescript-eslint/visitor-keys': 8.53.1 + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/visitor-keys': 8.54.0 '@typescript-eslint/tsconfig-utils@8.37.0(typescript@5.9.3)': dependencies: @@ -3958,7 +3984,7 @@ snapshots: dependencies: typescript: 5.9.3 - '@typescript-eslint/tsconfig-utils@8.53.1(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.54.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 @@ -3974,11 +4000,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.53.1(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.54.0(eslint@9.39.2)(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.53.1 - '@typescript-eslint/typescript-estree': 8.53.1(typescript@5.9.3) - '@typescript-eslint/utils': 8.53.1(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.54.0(eslint@9.39.2)(typescript@5.9.3) debug: 4.4.3 eslint: 9.39.2 ts-api-utils: 2.4.0(typescript@5.9.3) @@ -3990,7 +4016,7 @@ snapshots: '@typescript-eslint/types@8.49.0': {} - '@typescript-eslint/types@8.53.1': {} + '@typescript-eslint/types@8.54.0': {} '@typescript-eslint/typescript-estree@8.37.0(typescript@5.9.3)': dependencies: @@ -4023,12 +4049,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.53.1(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.54.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.53.1(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.53.1(typescript@5.9.3) - '@typescript-eslint/types': 8.53.1 - '@typescript-eslint/visitor-keys': 8.53.1 + '@typescript-eslint/project-service': 8.54.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.9.3) + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/visitor-keys': 8.54.0 debug: 4.4.3 minimatch: 9.0.5 semver: 7.7.3 @@ -4049,12 +4075,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.53.1(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/utils@8.54.0(eslint@9.39.2)(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2) - '@typescript-eslint/scope-manager': 8.53.1 - '@typescript-eslint/types': 8.53.1 - '@typescript-eslint/typescript-estree': 8.53.1(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.54.0 + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) eslint: 9.39.2 typescript: 5.9.3 transitivePeerDependencies: @@ -4070,9 +4096,9 @@ snapshots: '@typescript-eslint/types': 8.49.0 eslint-visitor-keys: 4.2.1 - '@typescript-eslint/visitor-keys@8.53.1': + '@typescript-eslint/visitor-keys@8.54.0': dependencies: - '@typescript-eslint/types': 8.53.1 + '@typescript-eslint/types': 8.54.0 eslint-visitor-keys: 4.2.1 '@videojs/http-streaming@3.17.2(video.js@8.23.4)': @@ -4206,7 +4232,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@vue/language-core@3.2.3': + '@vue/language-core@3.2.4': dependencies: '@volar/language-core': 2.4.27 '@vue/compiler-dom': 3.5.27 @@ -4252,10 +4278,17 @@ snapshots: '@vueuse/shared': 14.1.0(vue@3.5.27(typescript@5.9.3)) vue: 3.5.27(typescript@5.9.3) - '@vueuse/integrations@14.1.0(focus-trap@7.6.2)(jwt-decode@4.0.0)(vue@3.5.27(typescript@5.9.3))': + '@vueuse/core@14.2.0(vue@3.5.27(typescript@5.9.3))': dependencies: - '@vueuse/core': 14.1.0(vue@3.5.27(typescript@5.9.3)) - '@vueuse/shared': 14.1.0(vue@3.5.27(typescript@5.9.3)) + '@types/web-bluetooth': 0.0.21 + '@vueuse/metadata': 14.2.0 + '@vueuse/shared': 14.2.0(vue@3.5.27(typescript@5.9.3)) + vue: 3.5.27(typescript@5.9.3) + + '@vueuse/integrations@14.2.0(focus-trap@7.6.2)(jwt-decode@4.0.0)(vue@3.5.27(typescript@5.9.3))': + dependencies: + '@vueuse/core': 14.2.0(vue@3.5.27(typescript@5.9.3)) + '@vueuse/shared': 14.2.0(vue@3.5.27(typescript@5.9.3)) vue: 3.5.27(typescript@5.9.3) optionalDependencies: focus-trap: 7.6.2 @@ -4263,10 +4296,16 @@ snapshots: '@vueuse/metadata@14.1.0': {} + '@vueuse/metadata@14.2.0': {} + '@vueuse/shared@14.1.0(vue@3.5.27(typescript@5.9.3))': dependencies: vue: 3.5.27(typescript@5.9.3) + '@vueuse/shared@14.2.0(vue@3.5.27(typescript@5.9.3))': + dependencies: + vue: 3.5.27(typescript@5.9.3) + '@xmldom/xmldom@0.7.13': {} '@xmldom/xmldom@0.8.11': {} @@ -4301,10 +4340,10 @@ snapshots: argparse@2.0.1: {} - autoprefixer@10.4.23(postcss@8.5.6): + autoprefixer@10.4.24(postcss@8.5.6): dependencies: browserslist: 4.28.1 - caniuse-lite: 1.0.30001760 + caniuse-lite: 1.0.30001766 fraction.js: 5.3.4 picocolors: 1.1.1 postcss: 8.5.6 @@ -4338,7 +4377,7 @@ snapshots: baseline-browser-mapping@2.8.26: {} - baseline-browser-mapping@2.9.7: {} + baseline-browser-mapping@2.9.19: {} birpc@2.8.0: {} @@ -4372,11 +4411,11 @@ snapshots: browserslist@4.28.1: dependencies: - baseline-browser-mapping: 2.9.7 - caniuse-lite: 1.0.30001760 - electron-to-chromium: 1.5.267 + baseline-browser-mapping: 2.9.19 + caniuse-lite: 1.0.30001766 + electron-to-chromium: 1.5.283 node-releases: 2.0.27 - update-browserslist-db: 1.2.2(browserslist@4.28.1) + update-browserslist-db: 1.2.3(browserslist@4.28.1) buffer-from@1.1.2: {} @@ -4384,7 +4423,7 @@ snapshots: caniuse-lite@1.0.30001754: {} - caniuse-lite@1.0.30001760: {} + caniuse-lite@1.0.30001766: {} chalk@4.1.2: dependencies: @@ -4453,7 +4492,7 @@ snapshots: electron-to-chromium@1.5.250: {} - electron-to-chromium@1.5.267: {} + electron-to-chromium@1.5.283: {} entities@7.0.1: {} @@ -5053,7 +5092,7 @@ snapshots: punycode@2.3.1: {} - qrcode.vue@3.6.0(vue@3.5.27(typescript@5.9.3)): + qrcode.vue@3.7.0(vue@3.5.27(typescript@5.9.3)): dependencies: vue: 3.5.27(typescript@5.9.3) @@ -5273,7 +5312,7 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 - update-browserslist-db@1.2.2(browserslist@4.28.1): + update-browserslist-db@1.2.3(browserslist@4.28.1): dependencies: browserslist: 4.28.1 escalade: 3.2.0 @@ -5362,10 +5401,10 @@ snapshots: transitivePeerDependencies: - supports-color - vue-final-modal@4.5.5(@vueuse/core@14.1.0(vue@3.5.27(typescript@5.9.3)))(@vueuse/integrations@14.1.0(focus-trap@7.6.2)(jwt-decode@4.0.0)(vue@3.5.27(typescript@5.9.3)))(focus-trap@7.6.2)(vue@3.5.27(typescript@5.9.3)): + vue-final-modal@4.5.5(@vueuse/core@14.1.0(vue@3.5.27(typescript@5.9.3)))(@vueuse/integrations@14.2.0(focus-trap@7.6.2)(jwt-decode@4.0.0)(vue@3.5.27(typescript@5.9.3)))(focus-trap@7.6.2)(vue@3.5.27(typescript@5.9.3)): dependencies: '@vueuse/core': 14.1.0(vue@3.5.27(typescript@5.9.3)) - '@vueuse/integrations': 14.1.0(focus-trap@7.6.2)(jwt-decode@4.0.0)(vue@3.5.27(typescript@5.9.3)) + '@vueuse/integrations': 14.2.0(focus-trap@7.6.2)(jwt-decode@4.0.0)(vue@3.5.27(typescript@5.9.3)) focus-trap: 7.6.2 vue: 3.5.27(typescript@5.9.3) @@ -5391,10 +5430,10 @@ snapshots: dependencies: vue: 3.5.27(typescript@5.9.3) - vue-tsc@3.2.3(typescript@5.9.3): + vue-tsc@3.2.4(typescript@5.9.3): dependencies: '@volar/typescript': 2.4.27 - '@vue/language-core': 3.2.3 + '@vue/language-core': 3.2.4 typescript: 5.9.3 vue@3.5.27(typescript@5.9.3): diff --git a/go.mod b/go.mod index edf4627760..311234d019 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/disintegration/imaging v1.6.2 github.com/dsoprea/go-exif/v3 v3.0.1 github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568 - github.com/golang-jwt/jwt/v5 v5.3.0 + github.com/golang-jwt/jwt/v5 v5.3.1 github.com/gorilla/mux v1.8.1 github.com/gorilla/websocket v1.5.3 github.com/jellydator/ttlcache/v3 v3.4.0 diff --git a/go.sum b/go.sum index 45dff85929..fff93d174c 100644 --- a/go.sum +++ b/go.sum @@ -98,8 +98,8 @@ github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= github.com/go-viper/mapstructure/v2 v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9LvH92wZUgs= github.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= -github.com/golang-jwt/jwt/v5 v5.3.0 h1:pv4AsKCKKZuqlgs5sUmn4x8UlGa0kEVt/puTpKx9vvo= -github.com/golang-jwt/jwt/v5 v5.3.0/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= +github.com/golang-jwt/jwt/v5 v5.3.1 h1:kYf81DTWFe7t+1VvL7eS+jKFVWaUnK9cB1qbwn63YCY= +github.com/golang-jwt/jwt/v5 v5.3.1/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= github.com/golang/geo v0.0.0-20190916061304-5b978397cfec/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI= github.com/golang/geo v0.0.0-20200319012246-673a6f80352d/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI= github.com/golang/geo v0.0.0-20210211234256-740aa86cb551/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI= From 87cfead033846a2f68e996e4dcfa6957b8f61b51 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 1 Feb 2026 11:31:54 +0100 Subject: [PATCH 017/126] chore(deps): update all non-major dependencies (#5734) --- frontend/pnpm-lock.yaml | 42 ++++++++--------------------------------- 1 file changed, 8 insertions(+), 34 deletions(-) diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 468b87bb61..60edb737d7 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -13,7 +13,7 @@ importers: version: 2.0.1(vue@3.5.27(typescript@5.9.3)) '@vueuse/core': specifier: ^14.0.0 - version: 14.1.0(vue@3.5.27(typescript@5.9.3)) + version: 14.2.0(vue@3.5.27(typescript@5.9.3)) '@vueuse/integrations': specifier: ^14.0.0 version: 14.2.0(focus-trap@7.6.2)(jwt-decode@4.0.0)(vue@3.5.27(typescript@5.9.3)) @@ -58,7 +58,7 @@ importers: version: 7.1.0 qrcode.vue: specifier: ^3.6.0 - version: 3.7.0(vue@3.5.27(typescript@5.9.3)) + version: 3.7.1(vue@3.5.27(typescript@5.9.3)) tus-js-client: specifier: ^4.3.1 version: 4.3.1 @@ -79,7 +79,7 @@ importers: version: 3.5.27(typescript@5.9.3) vue-final-modal: specifier: ^4.5.5 - version: 4.5.5(@vueuse/core@14.1.0(vue@3.5.27(typescript@5.9.3)))(@vueuse/integrations@14.2.0(focus-trap@7.6.2)(jwt-decode@4.0.0)(vue@3.5.27(typescript@5.9.3)))(focus-trap@7.6.2)(vue@3.5.27(typescript@5.9.3)) + version: 4.5.5(@vueuse/core@14.2.0(vue@3.5.27(typescript@5.9.3)))(@vueuse/integrations@14.2.0(focus-trap@7.6.2)(jwt-decode@4.0.0)(vue@3.5.27(typescript@5.9.3)))(focus-trap@7.6.2)(vue@3.5.27(typescript@5.9.3)) vue-i18n: specifier: ^11.1.10 version: 11.2.8(vue@3.5.27(typescript@5.9.3)) @@ -1567,11 +1567,6 @@ packages: vue: optional: true - '@vueuse/core@14.1.0': - resolution: {integrity: sha512-rgBinKs07hAYyPF834mDTigH7BtPqvZ3Pryuzt1SD/lg5wEcWqvwzXXYGEDb2/cP0Sj5zSvHl3WkmMELr5kfWw==} - peerDependencies: - vue: ^3.5.0 - '@vueuse/core@14.2.0': resolution: {integrity: sha512-tpjzVl7KCQNVd/qcaCE9XbejL38V6KJAEq/tVXj7mDPtl6JtzmUdnXelSS+ULRkkrDgzYVK7EerQJvd2jR794Q==} peerDependencies: @@ -1619,17 +1614,9 @@ packages: universal-cookie: optional: true - '@vueuse/metadata@14.1.0': - resolution: {integrity: sha512-7hK4g015rWn2PhKcZ99NyT+ZD9sbwm7SGvp7k+k+rKGWnLjS/oQozoIZzWfCewSUeBmnJkIb+CNr7Zc/EyRnnA==} - '@vueuse/metadata@14.2.0': resolution: {integrity: sha512-i3axTGjU8b13FtyR4Keeama+43iD+BwX9C2TmzBVKqjSHArF03hjkp2SBZ1m72Jk2UtrX0aYCugBq2R1fhkuAQ==} - '@vueuse/shared@14.1.0': - resolution: {integrity: sha512-EcKxtYvn6gx1F8z9J5/rsg3+lTQnvOruQd8fUecW99DCK04BkWD7z5KQ/wTAx+DazyoEE9dJt/zV8OIEQbM6kw==} - peerDependencies: - vue: ^3.5.0 - '@vueuse/shared@14.2.0': resolution: {integrity: sha512-Z0bmluZTlAXgUcJ4uAFaML16JcD8V0QG00Db3quR642I99JXIDRa2MI2LGxiLVhcBjVnL1jOzIvT5TT2lqJlkA==} peerDependencies: @@ -2413,8 +2400,8 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - qrcode.vue@3.7.0: - resolution: {integrity: sha512-Wh5JCtweVO/QiIoS/K9En+GXqFwaKyoF2j4xmqxT8TzAn5VeOs2pLD8uPaaTKuS1Uzze+UAl6MkI4d1SdjH6TQ==} + qrcode.vue@3.7.1: + resolution: {integrity: sha512-80ZDvXaajD7TS9l5ZZpuFH+i1vp/T1k7mPpJEz0MrOAoElauKC1zGIB4FJSGzsiTtl2uUJBrhRzXyr4PAKLLBg==} peerDependencies: vue: ^3.0.0 @@ -4271,13 +4258,6 @@ snapshots: typescript: 5.9.3 vue: 3.5.27(typescript@5.9.3) - '@vueuse/core@14.1.0(vue@3.5.27(typescript@5.9.3))': - dependencies: - '@types/web-bluetooth': 0.0.21 - '@vueuse/metadata': 14.1.0 - '@vueuse/shared': 14.1.0(vue@3.5.27(typescript@5.9.3)) - vue: 3.5.27(typescript@5.9.3) - '@vueuse/core@14.2.0(vue@3.5.27(typescript@5.9.3))': dependencies: '@types/web-bluetooth': 0.0.21 @@ -4294,14 +4274,8 @@ snapshots: focus-trap: 7.6.2 jwt-decode: 4.0.0 - '@vueuse/metadata@14.1.0': {} - '@vueuse/metadata@14.2.0': {} - '@vueuse/shared@14.1.0(vue@3.5.27(typescript@5.9.3))': - dependencies: - vue: 3.5.27(typescript@5.9.3) - '@vueuse/shared@14.2.0(vue@3.5.27(typescript@5.9.3))': dependencies: vue: 3.5.27(typescript@5.9.3) @@ -5092,7 +5066,7 @@ snapshots: punycode@2.3.1: {} - qrcode.vue@3.7.0(vue@3.5.27(typescript@5.9.3)): + qrcode.vue@3.7.1(vue@3.5.27(typescript@5.9.3)): dependencies: vue: 3.5.27(typescript@5.9.3) @@ -5401,9 +5375,9 @@ snapshots: transitivePeerDependencies: - supports-color - vue-final-modal@4.5.5(@vueuse/core@14.1.0(vue@3.5.27(typescript@5.9.3)))(@vueuse/integrations@14.2.0(focus-trap@7.6.2)(jwt-decode@4.0.0)(vue@3.5.27(typescript@5.9.3)))(focus-trap@7.6.2)(vue@3.5.27(typescript@5.9.3)): + vue-final-modal@4.5.5(@vueuse/core@14.2.0(vue@3.5.27(typescript@5.9.3)))(@vueuse/integrations@14.2.0(focus-trap@7.6.2)(jwt-decode@4.0.0)(vue@3.5.27(typescript@5.9.3)))(focus-trap@7.6.2)(vue@3.5.27(typescript@5.9.3)): dependencies: - '@vueuse/core': 14.1.0(vue@3.5.27(typescript@5.9.3)) + '@vueuse/core': 14.2.0(vue@3.5.27(typescript@5.9.3)) '@vueuse/integrations': 14.2.0(focus-trap@7.6.2)(jwt-decode@4.0.0)(vue@3.5.27(typescript@5.9.3)) focus-trap: 7.6.2 vue: 3.5.27(typescript@5.9.3) From d441b28f432c3448a29ac828400321f1f4ed32d9 Mon Sep 17 00:00:00 2001 From: Ariel Leyva Date: Sun, 1 Feb 2026 05:37:07 -0500 Subject: [PATCH 018/126] fix: avoid 409 conflict when renaming files differing only by case (#5729) --- http/resource.go | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/http/resource.go b/http/resource.go index 0a8da271c6..59ce7f5bee 100644 --- a/http/resource.go +++ b/http/resource.go @@ -206,20 +206,25 @@ func resourcePatchHandler(fileCache FileCache) handleFunc { return http.StatusBadRequest, err } - override := r.URL.Query().Get("override") == "true" - rename := r.URL.Query().Get("rename") == "true" - if !override && !rename { - if _, err = d.user.Fs.Stat(dst); err == nil { - return http.StatusConflict, nil + srcInfo, _ := d.user.Fs.Stat(src) + dstInfo, _ := d.user.Fs.Stat(dst) + same := os.SameFile(srcInfo, dstInfo) + + if action != "rename" || !same { + override := r.URL.Query().Get("override") == "true" + rename := r.URL.Query().Get("rename") == "true" + if !override && !rename { + if _, err = d.user.Fs.Stat(dst); err == nil { + return http.StatusConflict, nil + } + } + if rename { + dst = addVersionSuffix(dst, d.user.Fs) } - } - if rename { - dst = addVersionSuffix(dst, d.user.Fs) - } - // Permission for overwriting the file - if override && !d.user.Perm.Modify { - return http.StatusForbidden, nil + if override && !d.user.Perm.Modify { + return http.StatusForbidden, nil + } } err = d.RunHook(func() error { From 8fee2561afbf968ed577bc4139562a42b2278243 Mon Sep 17 00:00:00 2001 From: "transifex-integration[bot]" <43880903+transifex-integration[bot]@users.noreply.github.com> Date: Sun, 1 Feb 2026 11:38:02 +0100 Subject: [PATCH 019/126] feat: Updates for project File Browser (#5725) --- frontend/src/i18n/de.json | 242 +++++++++++++++++++------------------- frontend/src/i18n/ko.json | 170 +++++++++++++------------- 2 files changed, 206 insertions(+), 206 deletions(-) diff --git a/frontend/src/i18n/de.json b/frontend/src/i18n/de.json index 7aa01a658d..df3bc0bde5 100644 --- a/frontend/src/i18n/de.json +++ b/frontend/src/i18n/de.json @@ -3,51 +3,51 @@ "cancel": "Abbrechen", "clear": "Leeren", "close": "Schließen", - "continue": "Fortfahren", + "continue": "Weiter", "copy": "Kopieren", - "copyFile": "Kopiere Datei", + "copyFile": "Datei kopieren", "copyToClipboard": "In Zwischenablage kopieren", - "copyDownloadLinkToClipboard": "Download-Link in die Zwischenablage kopieren", + "copyDownloadLinkToClipboard": "Download-Link in Zwischenablage kopieren", "create": "Erstellen", "delete": "Löschen", "download": "Herunterladen", "file": "Datei", "folder": "Ordner", - "fullScreen": "Vollbildmodus umschalten", + "fullScreen": "Vollbild umschalten", "hideDotfiles": "Versteckte Dateien ausblenden", "info": "Info", "more": "Mehr", "move": "Verschieben", - "moveFile": "Verschiebe Datei", + "moveFile": "Datei verschieben", "new": "Neu", - "next": "Nächste", + "next": "Weiter", "ok": "OK", - "permalink": "permanenten Verweis anzeigen", - "previous": "Vorherige", + "permalink": "Permanentlink abrufen", + "previous": "Zurück", "preview": "Vorschau", "publish": "Veröffentlichen", "rename": "Umbenennen", "replace": "Ersetzen", - "reportIssue": "Fehler melden", + "reportIssue": "Problem melden", "save": "Speichern", - "schedule": "Planung", + "schedule": "Planen", "search": "Suchen", "select": "Auswählen", "selectMultiple": "Mehrfachauswahl", "share": "Teilen", - "shell": "Kommandozeile ein/ausschalten", + "shell": "Shell umschalten", "submit": "Absenden", "switchView": "Ansicht wechseln", - "toggleSidebar": "Seitenleiste anzeigen", + "toggleSidebar": "Seitenleiste umschalten", "update": "Aktualisieren", "upload": "Hochladen", "openFile": "Datei öffnen", "discardChanges": "Verwerfen", - "stopSearch": "Suche abbrechen", + "stopSearch": "Suche beenden", "saveChanges": "Änderungen speichern", "editAsText": "Als Text bearbeiten", - "increaseFontSize": "Schriftgröße vergrößern", - "decreaseFontSize": "Schriftgröße verkleinern" + "increaseFontSize": "Schrift vergrößern", + "decreaseFontSize": "Schrift verkleinern" }, "download": { "downloadFile": "Datei herunterladen", @@ -55,12 +55,12 @@ "downloadSelected": "Auswahl herunterladen" }, "upload": { - "abortUpload": "Sind Sie sicher, dass Sie den Vorgang abbrechen möchten?" + "abortUpload": "Upload wirklich abbrechen?" }, "errors": { - "forbidden": "Sie haben keine Berechtigung dies abzurufen.", - "internal": "Etwas ist schiefgelaufen.", - "notFound": "Dieser Ort kann nicht angezeigt werden.", + "forbidden": "Du hast keine Berechtigung für diesen Zugriff.", + "internal": "Da ist etwas schiefgelaufen.", + "notFound": "Dieser Ort ist nicht erreichbar.", "connection": "Der Server ist nicht erreichbar." }, "files": { @@ -70,197 +70,197 @@ "folders": "Ordner", "home": "Startseite", "lastModified": "Zuletzt geändert", - "loading": "Lade...", - "lonely": "Hier scheint nichts zu sein...", + "loading": "Wird geladen …", + "lonely": "Hier ist es ganz schön leer …", "metadata": "Metadaten", "multipleSelectionEnabled": "Mehrfachauswahl aktiviert", "name": "Name", "size": "Größe", "sortByLastModified": "Nach Änderungsdatum sortieren", - "sortByName": "Nach Namen sortieren", + "sortByName": "Nach Name sortieren", "sortBySize": "Nach Größe sortieren", "noPreview": "Für diese Datei ist keine Vorschau verfügbar.", - "csvTooLarge": "Die CSV-Datei ist zu groß für die Vorschau (>5 MB). Bitte herunterladen, um sie anzuzeigen.", - "csvLoadFailed": "Fehler beim Laden der CSV-Datei.", - "showingRows": "{count} Zeile(n) werden angezeigt", + "csvTooLarge": "Die CSV-Datei ist zu groß für die Vorschau (> 5 MB). Bitte herunterladen, um sie anzuzeigen.", + "csvLoadFailed": "CSV-Datei konnte nicht geladen werden.", + "showingRows": "{count} Zeile(n) angezeigt", "columnSeparator": "Spaltentrennzeichen", "csvSeparators": { "comma": "Komma (,)", "semicolon": "Semikolon (;)", - "both": "Sowohl (,) als auch (;)" + "both": "Beides (,) und (;)" } }, "help": { - "click": "Wähle Datei oder Ordner", + "click": "Datei oder Verzeichnis auswählen", "ctrl": { - "click": "Markiere mehrere Dateien oder Ordner", - "f": "Öffnet eine neue Suche", - "s": "Speichert eine Datei oder einen Ordner am aktuellen Ort" + "click": "mehrere Dateien oder Verzeichnisse auswählen", + "f": "Suche öffnen", + "s": "Datei speichern oder aktuelles Verzeichnis herunterladen" }, - "del": "Löscht die ausgewählten Elemente", - "doubleClick": "Öffnet eine Datei oder einen Ordner", - "esc": "Auswahl zurücksetzen und/oder Dialog schließen", - "f1": "Diese Informationsseite", + "del": "ausgewählte Elemente löschen", + "doubleClick": "Datei oder Verzeichnis öffnen", + "esc": "Auswahl aufheben und/oder Dialog schließen", + "f1": "diese Hilfe anzeigen", "f2": "Datei umbenennen", "help": "Hilfe" }, "login": { - "createAnAccount": "Account erstellen", - "loginInstead": "Account besteht bereits", + "createAnAccount": "Konto erstellen", + "loginInstead": "Bereits ein Konto vorhanden", "password": "Passwort", - "passwordConfirm": "Passwort Bestätigung", + "passwordConfirm": "Passwort bestätigen", "passwordsDontMatch": "Passwörter stimmen nicht überein", "signup": "Registrieren", - "submit": "Login", + "submit": "Anmelden", "username": "Benutzername", - "usernameTaken": "Benutzername ist bereits vergeben", - "wrongCredentials": "Falsche Zugangsdaten", + "usernameTaken": "Benutzername bereits vergeben", + "wrongCredentials": "Falsche Anmeldedaten", "passwordTooShort": "Passwort muss mindestens {min} Zeichen lang sein", "logout_reasons": { - "inactivity": "Sie wurden aufgrund von Inaktivität abgemeldet." + "inactivity": "Du wurdest wegen Inaktivität abgemeldet." } }, "permanent": "Permanent", "prompts": { "copy": "Kopieren", - "copyMessage": "Wählen Sie einen Zielort zum Kopieren:", - "currentlyNavigating": "Aktueller Ort:", - "deleteMessageMultiple": "Sind Sie sicher, dass Sie {count} Datei(en) löschen möchten?", - "deleteMessageSingle": "Sind Sie sicher, dass Sie diesen Ordner/diese Datei löschen möchten?", - "deleteMessageShare": "Sind Sie sicher, dass Sie diese Freigabe löschen möchten ({path})?", - "deleteUser": "Sind Sie sicher, dass Sie diesen Benutzer löschen möchten?", - "deleteTitle": "Lösche Dateien", + "copyMessage": "Wähle den Zielort für deine Dateien:", + "currentlyNavigating": "Aktueller Pfad:", + "deleteMessageMultiple": "Möchtest du wirklich {count} Datei(en) löschen?", + "deleteMessageSingle": "Möchtest du diese Datei/diesen Ordner wirklich löschen?", + "deleteMessageShare": "Möchtest du diese Freigabe ({path}) wirklich löschen?", + "deleteUser": "Möchtest du diesen Benutzer wirklich löschen?", + "deleteTitle": "Dateien löschen", "displayName": "Anzeigename:", "download": "Dateien herunterladen", - "downloadMessage": "Wählen Sie ein Format zum Herunterladen aus.", + "downloadMessage": "Wähle das gewünschte Download-Format.", "error": "Etwas ist schiefgelaufen", - "fileInfo": "Dateiinformation", + "fileInfo": "Dateiinformationen", "filesSelected": "{count} Dateien ausgewählt.", "lastModified": "Zuletzt geändert", "move": "Verschieben", - "moveMessage": "Wählen Sie einen neuen Platz für ihre Datei(en)/Ordner:", - "newArchetype": "Erstelle neuen Beitrag auf dem Archetyp. Ihre Datei wird im Inhalteordner erstellt.", - "newDir": "Neuer Ordner", - "newDirMessage": "Geben Sie den Namen des neuen Ordners an.", + "moveMessage": "Wähle den neuen Speicherort für deine Datei(en)/Ordner:", + "newArchetype": "Neuen Beitrag basierend auf einem Archetyp erstellen. Die Datei wird im Content-Ordner erstellt.", + "newDir": "Neues Verzeichnis", + "newDirMessage": "Gib einen Namen für das neue Verzeichnis ein.", "newFile": "Neue Datei", - "newFileMessage": "Geben Sie den Namen der neuen Datei an.", - "numberDirs": "Anzahl der Ordner", + "newFileMessage": "Gib einen Namen für die neue Datei ein.", + "numberDirs": "Anzahl der Verzeichnisse", "numberFiles": "Anzahl der Dateien", "rename": "Umbenennen", - "renameMessage": "Fügen Sie einen Namen ein für", + "renameMessage": "Neuen Namen eingeben für", "replace": "Ersetzen", - "replaceMessage": "Eine Datei mit dem gleichen Namen existiert bereits. Soll die vorhandene Datei übersprungen oder ersetzt werden?", - "schedule": "Plan", - "scheduleMessage": "Wählen Sie ein Datum und eine Zeit für die Veröffentlichung dieses Beitrags.", + "replaceMessage": "Eine der hochzuladenden Dateien hat einen Namenskonflikt. Möchtest du diese Datei überspringen und mit dem Upload fortfahren oder die vorhandene Datei ersetzen?\n", + "schedule": "Planen", + "scheduleMessage": "Wähle Datum und Uhrzeit für die geplante Veröffentlichung dieses Beitrags.", "show": "Anzeigen", "size": "Größe", "upload": "Hochladen", - "uploadFiles": "{files} Dateien werden hochgeladen...", - "uploadMessage": "Wählen Sie eine Methode zum Hochladen", + "uploadFiles": "{files} Dateien werden hochgeladen …", + "uploadMessage": "Wähle eine Upload-Option.", "optionalPassword": "Optionales Passwort", "resolution": "Auflösung", - "discardEditorChanges": "Möchten Sie die vorgenommenen Änderungen wirklich verwerfen?" + "discardEditorChanges": "Möchtest du deine Änderungen wirklich verwerfen?" }, "search": { "images": "Bilder", "music": "Musik", "pdf": "PDF", - "pressToSearch": "Drücken Sie Enter um zu suchen...", - "search": "Suche...", - "typeToSearch": "Tippen um zu suchen...", + "pressToSearch": "Eingabetaste drücken zum Suchen …", + "search": "Suchen …", + "typeToSearch": "Suchbegriff eingeben …", "types": "Typen", "video": "Video" }, "settings": { - "aceEditorTheme": "Editor-Farbschema", + "aceEditorTheme": "Ace-Editor-Theme", "admin": "Admin", "administrator": "Administrator", "allowCommands": "Befehle ausführen", - "allowEdit": "Bearbeiten, Umbenennen und Löschen von Dateien oder Ordnern", - "allowNew": "Erstellen neuer Dateien und Ordner", - "allowPublish": "Veröffentlichen von neuen Beiträgen und Seiten", - "allowSignup": "Erlaube Benutzern sich zu registrieren", - "hideLoginButton": "Den Login-Button auf öffentlichen Seiten ausblenden", - "avoidChanges": "(leer lassen, um Änderungen zu vermeiden)", - "branding": "Design", - "brandingDirectoryPath": "Designverzeichnispfad", - "brandingHelp": "Sie können das Erscheinungsbild Ihres File Browser anpassen, in dem Sie den Namen ändern, das Logo austauschen oder eigene Stile definieren und sogar externe Links zu GitHub deaktivieren.\nUm mehr Informationen zum Anpassen des Designs zu bekommen, gehen Sie bitte zu {0}.", + "allowEdit": "Dateien und Verzeichnisse bearbeiten, umbenennen und löschen", + "allowNew": "Neue Dateien und Verzeichnisse erstellen", + "allowPublish": "Neue Beiträge und Seiten veröffentlichen", + "allowSignup": "Registrierung erlauben", + "hideLoginButton": "Anmelde-Button auf öffentlichen Seiten ausblenden", + "avoidChanges": "(leer lassen, um keine Änderungen vorzunehmen)", + "branding": "Branding", + "brandingDirectoryPath": "Branding-Verzeichnispfad", + "brandingHelp": "Du kannst das Erscheinungsbild deiner File-Browser-Instanz anpassen, indem du den Namen änderst, das Logo ersetzt, eigene Styles hinzufügst und sogar externe Links zu GitHub deaktivierst.\nWeitere Informationen zum Branding findest du in der {0}.", "changePassword": "Passwort ändern", - "commandRunner": "Befehlseingabe", - "commandRunnerHelp": "Hier können Sie Befehle eintragen, die bei den benannten Aktionen ausgeführt werden. Geben Sie pro Zeile jeweils einen Befehl ein. Die Umgebungsvariablen {0} und {1} sind verfügbar, wobei {0} relativ zu {1} ist. Für weitere Informationen über diese Funktion und die verfügbaren Umgebungsvariablen lesen Sie bitte die {2}.", + "commandRunner": "Befehlsausführung", + "commandRunnerHelp": "Hier kannst du Befehle festlegen, die bei bestimmten Ereignissen ausgeführt werden. Schreibe einen Befehl pro Zeile. Die Umgebungsvariablen {0} und {1} sind verfügbar, wobei {0} relativ zu {1} ist. Weitere Informationen zu dieser Funktion und den verfügbaren Umgebungsvariablen findest du in der {2}.", "commandsUpdated": "Befehle aktualisiert!", - "createUserDir": "Automatisches Erstellen des Home-Verzeichnisses beim Anlegen neuer Benutzer", - "minimumPasswordLength": "Mindestlänge für Passwörter", - "tusUploads": "Fortsetzbarer Upload", - "tusUploadsHelp": "File Browser unterstützt fortsetzbares Hochladen und ermöglicht so einen effizienten, zuverlässigen Upload auch in unzuverlässigen Netzwerken.", - "tusUploadsChunkSize": "Gibt die maximale Größe pro Anfrage an (direkte Uploads werden für kleinere Uploads verwendet). Bitte geben Sie eine Byte-Angabe oder eine Zeichenfolge wie 10 MB, 1 GB usw. an", - "tusUploadsRetryCount": "Anzahl der Wiederholungsversuche, wenn das Hochladen eines Stückes fehlschlägt.", - "userHomeBasePath": "Basispfad für Benutzer-Home-Verzeichnisse", - "userScopeGenerationPlaceholder": "Geltungsbereich wird automatisch generiert", - "createUserHomeDirectory": "Benutzer-Home-Verzeichnis erstellen", - "customStylesheet": "Individuelles Stylesheet", - "defaultUserDescription": "Dies sind die Standardeinstellungen für Benutzer", + "createUserDir": "Benutzerverzeichnis beim Erstellen neuer Benutzer automatisch anlegen", + "minimumPasswordLength": "Mindestlänge des Passworts", + "tusUploads": "Uploads in Teilen", + "tusUploadsHelp": "File Browser unterstützt das Hochladen von Dateien in Teilen. So sind effiziente, zuverlässige und fortsetzbare Uploads auch bei instabilen Netzwerkverbindungen möglich.", + "tusUploadsChunkSize": "Gibt die maximale Größe einer Anfrage an (kleinere Dateien werden direkt hochgeladen). Du kannst eine Zahl in Bytes oder einen String wie 10MB, 1GB usw. eingeben.", + "tusUploadsRetryCount": "Anzahl der Wiederholungsversuche bei fehlgeschlagenem Teil-Upload.", + "userHomeBasePath": "Basispfad für Benutzerverzeichnisse", + "userScopeGenerationPlaceholder": "Der Bereich wird automatisch generiert", + "createUserHomeDirectory": "Benutzerverzeichnis erstellen", + "customStylesheet": "Eigenes Stylesheet", + "defaultUserDescription": "Dies sind die Standardeinstellungen für neue Benutzer.", "disableExternalLinks": "Externe Links deaktivieren (außer Dokumentation)", - "disableUsedDiskPercentage": "Diagramm zur Festplattennutzung deaktivieren", + "disableUsedDiskPercentage": "Speicherplatzanzeige deaktivieren", "documentation": "Dokumentation", "examples": "Beispiele", "executeOnShell": "In Shell ausführen", - "executeOnShellDescription": "Standardmäßig führt der File Browser Befehle direkt aus. Wenn Sie möchten, dass Befehle über eine Kommandozeile (wie Bash oder PowerShell) ausgeführt werden, können Sie diese hier mit allen benötigten Argumenten und Optionen definieren. Der auszuführende Befehl wird als Parameter angehängt. Dies gilt für Benutzerkommandos sowie für Ereignisse.", - "globalRules": "Dies ist ein globaler Satz von Regeln, die Aktionen erlauben oder verbieten. Diese gelten für alle Benutzer. In den Benutzereinstellungen können spezielle Regeln definiert werden, die diese überschreiben.", + "executeOnShellDescription": "Standardmäßig führt File Browser Befehle durch direkten Aufruf der Binärdateien aus. Wenn du sie stattdessen in einer Shell (wie Bash oder PowerShell) ausführen möchtest, kannst du diese hier mit den erforderlichen Argumenten und Flags angeben. Der auszuführende Befehl wird dann als Argument angehängt. Dies gilt sowohl für Benutzerbefehle als auch für Event-Hooks.", + "globalRules": "Dies ist ein globaler Satz von Erlauben- und Verbieten-Regeln. Sie gelten für alle Benutzer. Du kannst in den Einstellungen einzelner Benutzer spezifische Regeln festlegen, um diese zu überschreiben.", "globalSettings": "Globale Einstellungen", "hideDotfiles": "Versteckte Dateien ausblenden", - "insertPath": "Pfad einfügen", - "insertRegex": "Regulären Ausdruck (Regex) einfügen", + "insertPath": "Pfad eingeben", + "insertRegex": "Regulären Ausdruck eingeben", "instanceName": "Instanzname", "language": "Sprache", - "lockPassword": "Benutzer darf sein Passwort nicht ändern", - "newPassword": "Neues Passwort", + "lockPassword": "Benutzer daran hindern, das Passwort zu ändern", + "newPassword": "Dein neues Passwort", "newPasswordConfirm": "Neues Passwort bestätigen", "newUser": "Neuer Benutzer", "password": "Passwort", "passwordUpdated": "Passwort aktualisiert!", "path": "Pfad", "perm": { - "create": "Dateien und Ordner erstellen", - "delete": "Dateien und Ordner löschen", - "download": "Download", + "create": "Dateien und Verzeichnisse erstellen", + "delete": "Dateien und Verzeichnisse löschen", + "download": "Herunterladen", "execute": "Befehle ausführen", - "modify": "Dateien editieren", - "rename": "Umbenennen oder Verschieben von Dateien oder Ordnern", - "share": "Datei teilen" + "modify": "Dateien bearbeiten", + "rename": "Dateien und Verzeichnisse umbenennen oder verschieben", + "share": "Dateien teilen" }, "permissions": "Berechtigungen", - "permissionsHelp": "Sie können einem Benutzer Administratorrechte einräumen oder die Berechtigungen individuell festlegen. Wenn Sie \"Administrator\" auswählen, werden alle anderen Rechte automatisch vergeben. Die Nutzerverwaltung kann nur durch einen Administrator erfolgen.\n", + "permissionsHelp": "Du kannst den Benutzer zum Administrator machen oder die Berechtigungen einzeln festlegen. Wenn du \"Administrator\" wählst, werden automatisch alle anderen Optionen aktiviert. Die Benutzerverwaltung bleibt ein Administratorrecht.\n", "profileSettings": "Profileinstellungen", - "redirectAfterCopyMove": "Nach Kopieren/Verschieben zum Zielverzeichnis wechseln", - "ruleExample1": "Verhindert den Zugang zu versteckten Dateien (dot-Files, wie .git, .gitignore) in allen Ordnern\n", - "ruleExample2": "Blockiert den Zugang zu Dateien mit dem Namen Caddyfile im Stammverzeichnis des Geltungsbereichs.", + "redirectAfterCopyMove": "Nach Kopieren/Verschieben zum Ziel wechseln", + "ruleExample1": "verhindert den Zugriff auf alle versteckten Dateien (wie .git, .gitignore) in jedem Ordner.\n", + "ruleExample2": "blockiert den Zugriff auf die Datei namens Caddyfile im Stammverzeichnis des Bereichs.", "rules": "Regeln", - "rulesHelp": "Hier können Sie erlaubte und verbotene Aktionen für einen einzelnen Benutzer festlegen. Blockierte Dateien werden nicht im Listing angezeigt und sind nicht erreichbar für den Nutzer. Wir unterstützen reguläre Ausdrücke (Regex) und Pfade die relativ zum Benutzerordner sind. \n", - "scope": "Geltungsbereich", - "setDateFormat": "Exaktes Datumsformat setzen", + "rulesHelp": "Hier kannst du Erlauben- und Verbieten-Regeln für diesen Benutzer festlegen. Blockierte Dateien werden nicht in den Auflistungen angezeigt und sind für den Benutzer nicht zugänglich. Wir unterstützen Regex und Pfade relativ zum Benutzerbereich.\n", + "scope": "Bereich", + "setDateFormat": "Genaues Datumsformat festlegen", "settingsUpdated": "Einstellungen aktualisiert!", - "shareDuration": "Dauer", - "shareManagement": "Freigaben verwalten", + "shareDuration": "Freigabedauer", + "shareManagement": "Freigabeverwaltung", "shareDeleted": "Freigabe gelöscht!", - "singleClick": "Einfacher Klick zum Öffnen von Dateien und Ordnern", + "singleClick": "Einfacher Klick zum Öffnen von Dateien und Verzeichnissen", "themes": { "default": "Systemstandard", "dark": "Dunkel", "light": "Hell", - "title": "Erscheinungsbild" + "title": "Design" }, "user": "Benutzer", "userCommands": "Befehle", - "userCommandsHelp": "Eine Liste, mit einem Leerzeichen als Trennung, mit den für diesen Nutzer verfügbaren Befehlen. Beispiel:\n", - "userCreated": "Benutzer angelegt!", - "userDefaults": "Standard-Benutzereinstellungen", + "userCommandsHelp": "Eine durch Leerzeichen getrennte Liste der verfügbaren Befehle für diesen Benutzer. Beispiel:\n", + "userCreated": "Benutzer erstellt!", + "userDefaults": "Standardeinstellungen für Benutzer", "userDeleted": "Benutzer gelöscht!", "userManagement": "Benutzerverwaltung", "userUpdated": "Benutzer aktualisiert!", - "username": "Nutzername", - "users": "Nutzer", - "currentPassword": "Aktuelles Passwort" + "username": "Benutzername", + "users": "Benutzer", + "currentPassword": "Dein aktuelles Passwort" }, "sidebar": { "help": "Hilfe", @@ -273,10 +273,10 @@ "preview": "Vorschau", "settings": "Einstellungen", "signup": "Registrieren", - "siteSettings": "Seiteneinstellungen" + "siteSettings": "Website-Einstellungen" }, "success": { - "linkCopied": "Verweis wurde kopiert!" + "linkCopied": "Link kopiert!" }, "time": { "days": "Tage", diff --git a/frontend/src/i18n/ko.json b/frontend/src/i18n/ko.json index c1d49b184e..d56a524419 100644 --- a/frontend/src/i18n/ko.json +++ b/frontend/src/i18n/ko.json @@ -14,7 +14,7 @@ "file": "파일", "folder": "폴더", "fullScreen": "전체 화면 전환", - "hideDotfiles": "숨김파일(dotfile)을 표시 안함", + "hideDotfiles": "숨김파일(dotfile)을 표시 안 함", "info": "정보", "more": "더보기", "move": "이동", @@ -28,14 +28,14 @@ "publish": "게시", "rename": "이름 바꾸기", "replace": "대체", - "reportIssue": "이슈 보내기", + "reportIssue": "문제 보고", "save": "저장", "schedule": "일정", "search": "검색", "select": "선택", "selectMultiple": "다중 선택", "share": "공유", - "shell": "쉘 전환", + "shell": "셸 전환", "submit": "제출", "switchView": "보기 전환", "toggleSidebar": "사이드바 전환", @@ -43,11 +43,11 @@ "upload": "업로드", "openFile": "파일 열기", "discardChanges": "변경 사항 취소", - "stopSearch": "Stop searching", + "stopSearch": "검색 중단", "saveChanges": "변경사항 저장", - "editAsText": "Edit as Text", - "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "editAsText": "텍스트로 편집", + "increaseFontSize": "글꼴 크기 증가", + "decreaseFontSize": "글꼴 크기 감소" }, "download": { "downloadFile": "파일 다운로드", @@ -70,36 +70,36 @@ "folders": "폴더", "home": "홈", "lastModified": "최종 수정", - "loading": "로딩중...", - "lonely": "폴더가 비어 있습니다...", + "loading": "불러오는 중...", + "lonely": "외로워요... (비어 있음)", "metadata": "메타데이터", "multipleSelectionEnabled": "다중 선택 켜짐", "name": "이름", "size": "크기", - "sortByLastModified": "수정시간순 정렬", - "sortByName": "이름순", - "sortBySize": "크기순", - "noPreview": "미리 보기가 지원되지 않는 파일 유형입니다.", - "csvTooLarge": "CSV file is too large for preview (>5MB). Please download to view.", - "csvLoadFailed": "Failed to load CSV file.", - "showingRows": "Showing {count} row(s)", - "columnSeparator": "Column Separator", + "sortByLastModified": "수정 시간으로 정렬", + "sortByName": "이름으로 정렬", + "sortBySize": "크기로 정렬", + "noPreview": "미리 볼 수 없는 파일입니다.", + "csvTooLarge": "CSV 파일이 너무 커서 미리 볼 수 없습니다(5MB 초과). 다운로드 후 보시기 바랍니다.", + "csvLoadFailed": "CSV 파일을 불러오는 데 실패했습니다.", + "showingRows": "{count}개의 행 보기", + "columnSeparator": "열 구분자", "csvSeparators": { - "comma": "Comma (,)", - "semicolon": "Semicolon (;)", - "both": "Both (,) and (;)" + "comma": "반점 (,)", + "semicolon": "쌍반점 (;)", + "both": "(,) 및 (;) 모두" } }, "help": { - "click": "파일이나 디렉토리를 선택해주세요.", + "click": "파일 또는 디렉터리 선택", "ctrl": { - "click": "여러 개의 파일이나 디렉토리를 선택해주세요.", + "click": "여러 개의 파일 또는 디렉터리 선택", "f": "검색창 열기", - "s": "파일 또는 디렉토리 다운로드" + "s": "파일을 저장하거나 디렉터리를 다운로드" }, "del": "선택된 파일 삭제", - "doubleClick": "파일 또는 디렉토리 열기", - "esc": "선택 취소/프롬프트 닫기", + "doubleClick": "파일 또는 디렉터리 열기", + "esc": "선택을 취소하고/또는 프롬프트 닫기", "f1": "정보", "f2": "파일 이름 변경", "help": "도움말" @@ -109,49 +109,49 @@ "loginInstead": "이미 계정이 있습니다", "password": "비밀번호", "passwordConfirm": "비밀번호 확인", - "passwordsDontMatch": "비밀번호가 일치하지 않습니다", + "passwordsDontMatch": "비밀번호가 일치하지 않음", "signup": "가입하기", "submit": "로그인", "username": "사용자 이름", - "usernameTaken": "사용자 이름이 존재합니다", - "wrongCredentials": "사용자 이름 또는 비밀번호를 확인하십시오", - "passwordTooShort": "Password must be at least {min} characters", + "usernameTaken": "사용자 이름이 존재함", + "wrongCredentials": "사용자 이름 또는 비밀번호를 확인", + "passwordTooShort": "비밀번호는 최소 {min}자 이상이어야 함", "logout_reasons": { - "inactivity": "You have been logged out due to inactivity." + "inactivity": "활동이 없어 로그아웃 되었습니다." } }, "permanent": "영구", "prompts": { "copy": "복사", - "copyMessage": "복사할 디렉토리:", + "copyMessage": "파일을 복사할 위치:", "currentlyNavigating": "현재 위치:", - "deleteMessageMultiple": "{count} 개의 파일을 삭제하시겠습니까?", - "deleteMessageSingle": "파일 혹은 디렉토리를 삭제하시겠습니까?", + "deleteMessageMultiple": "정말 {count}개의 파일을 삭제하시겠습니까?", + "deleteMessageSingle": "파일 혹은 디렉터리를 삭제하시겠습니까?", "deleteMessageShare": "이 공유({path})를 삭제하시겠습니까?", "deleteUser": "이 계정을 삭제하시겠습니까?", "deleteTitle": "파일 삭제", - "displayName": "게시 이름:", + "displayName": "표시 이름:", "download": "파일 다운로드", - "downloadMessage": "다운로드 포맷 설정.", - "error": "에러 발생!", + "downloadMessage": "다운로드 할 형식을 선택하십시오.", + "error": "에러 발생", "fileInfo": "파일 정보", - "filesSelected": "{count} 개의 파일이 선택되었습니다.", + "filesSelected": "{count}개의 파일을 선택했습니다.", "lastModified": "최종 수정", "move": "이동", - "moveMessage": "이동할 화일 또는 디렉토리를 선택하세요:", - "newArchetype": "원형을 유지하는 포스트를 생성합니다. 파일은 컨텐트 폴더에 생성됩니다.", - "newDir": "새 디렉토리", - "newDirMessage": "새 디렉토리 이름을 입력해주세요.", + "moveMessage": "파일 및 폴더의 새로운 위치를 선택:", + "newArchetype": "원형을 유지하는 새 포스트를 생성합니다. 파일은 콘텐츠 폴더에 생성됩니다.", + "newDir": "새 디렉터리", + "newDirMessage": "새 디렉터리의 이름을 입력해주세요.", "newFile": "새 파일", - "newFileMessage": "새 파일 이름을 입력해주세요.", - "numberDirs": "디렉토리 수", + "newFileMessage": "새 파일의 이름을 입력해주세요.", + "numberDirs": "디렉터리 수", "numberFiles": "파일 수", "rename": "이름 변경", - "renameMessage": "새로운 이름을 입력하세요.", + "renameMessage": "새 이름을 입력:", "replace": "대체하기", - "replaceMessage": "동일한 파일 이름이 존재합니다. 현재 파일을 덮어쓸까요?\n", + "replaceMessage": "업로드하려는 파일 중 하나의 이름이 충돌합니다. 해당 파일을 건너뛰고 계속 업로드하시겠습니까, 아니면 기존 파일을 교체하시겠습니까?\n", "schedule": "일정", - "scheduleMessage": "이 글을 공개할 시간을 알려주세요.", + "scheduleMessage": "이 포스트를 공개할 날짜와 시간을 선택하십시오.", "show": "보기", "size": "크기", "upload": "업로드", @@ -165,47 +165,47 @@ "images": "이미지", "music": "음악", "pdf": "PDF", - "pressToSearch": "검색하려면 엔터를 입력하세요", + "pressToSearch": "엔터를 눌러 검색...", "search": "검색...", "typeToSearch": "검색어 입력...", - "types": "Types", + "types": "유형", "video": "비디오" }, "settings": { - "aceEditorTheme": "Ace editor theme", + "aceEditorTheme": "ACE 편집기 테마", "admin": "관리자", "administrator": "관리자", "allowCommands": "명령 실행", - "allowEdit": "파일/디렉토리의 수정/변경/삭제 허용", - "allowNew": "파일/디렉토리 생성 허용", - "allowPublish": "새 포스트/페이지 생성 허용", + "allowEdit": "파일 또는 디렉터리의 수정, 이름 변경, 삭제를 허용", + "allowNew": "파일 및 디렉터리 생성 허용", + "allowPublish": "새 포스트 및 페이지 생성 허용", "allowSignup": "사용자 가입 허용", - "hideLoginButton": "Hide the login button from public pages", - "avoidChanges": "(수정하지 않으면 비워두세요)", + "hideLoginButton": "공개 화면에서 로그인 버튼 숨기기", + "avoidChanges": "(수정하지 않으려면 비워둠)", "branding": "브랜딩", - "brandingDirectoryPath": "브랜드 디렉토리 경로", - "brandingHelp": "File Browser 인스턴스는 이름, 로고, 스타일 등을 변경할 수 있습니다. 자세한 사항은 여기{0}에서 확인하세요.", + "brandingDirectoryPath": "브랜드 디렉터리 경로", + "brandingHelp": "File Browser의 이름을 변경하고, 로고를 바꾸고, 사용자 지정 스타일을 추가하고, GitHub에 대한 외부 링크를 비활성화 하는 등 인스턴스의 모양과 느낌을 사용자화 할 수 있습니다.\n사용자 지정 브랜딩에 대한 자세한 내용은 {0}을(를) 참조하십시오.", "changePassword": "비밀번호 변경", "commandRunner": "명령 실행기", - "commandRunnerHelp": "이벤트에 해당하는 명령을 설정하세요. 줄당 1개의 명령을 적으세요. 환경 변수{0} 와 {1}이 사용가능하며, {0} 은 {1}에 상대 경로 입니다. 자세한 사항은 {2} 를 참조하세요.", + "commandRunnerHelp": "여기서는 명명된 이벤트에서 실행될 명령을 설정할 수 있습니다. 한 줄에 하나씩 작성해야 합니다. 환경 변수 {0} 및 {1}을(를) 사용할 수 있으며, {0}은(는) {1}을 기준으로 합니다. 이 기능 및 사용 가능한 환경 변수에 대한 자세한 내용은 {2}을(를) 참조하십시오.", "commandsUpdated": "명령 수정됨!", - "createUserDir": "Auto create user home dir while adding new user", + "createUserDir": "새로운 유저를 추가할 때 사용자 홈 디렉터리 자동 생성", "minimumPasswordLength": "최소 비밀번호 길이", "tusUploads": "분할 업로드", - "tusUploadsHelp": "File Browser는 불안정한 네트워크에서도 효율적이고 신뢰성 있는 분할 업로드를 지원합니다.", - "tusUploadsChunkSize": "업로드 요청의 최대 크기 (예: 10MB, 1GB)", - "tusUploadsRetryCount": "업로드 실패 시 재시도 횟수", - "userHomeBasePath": "사용자 홈 폴더 기본 경로", - "userScopeGenerationPlaceholder": "범위는 자동으로 생성됩니다.", - "createUserHomeDirectory": "사용자 홈 폴더 생성", - "customStylesheet": "커스텀 스타일시트", - "defaultUserDescription": "아래 사항은 신규 사용자들에 대한 기본 설정입니다.", - "disableExternalLinks": "외부 링크 감추기", - "disableUsedDiskPercentage": "Disable used disk percentage graph", + "tusUploadsHelp": "File Browser는 파일의 분할 업로드를 통해 불안정한 네트워크 환경에서도 효율적이고 안정적이며, 업로드 재개가 가능하도록 합니다.", + "tusUploadsChunkSize": "업로드 요청의 최대 크기를 지정합니다(보다 작은 크기의 업로드는 직접 업로드 방식을 사용합니다). 바이트 크기를 나타내는 정수 또는 10MB, 1GB 등과 같은 문자열을 입력할 수 있습니다.", + "tusUploadsRetryCount": "분할 업로드를 실패할 경우 다시 시도할 횟수입니다.", + "userHomeBasePath": "사용자 홈 디렉터리 기본 경로", + "userScopeGenerationPlaceholder": "범위는 자동 생성", + "createUserHomeDirectory": "사용자 홈 디렉터리 생성", + "customStylesheet": "사용자 지정 스타일시트", + "defaultUserDescription": "다음은 신규 사용자들에 대한 기본 설정입니다.", + "disableExternalLinks": "외부 링크 비활성화(문서 제외)", + "disableUsedDiskPercentage": "사용한 디스크 비율 그래프 비활성화", "documentation": "문서", - "examples": "예", - "executeOnShell": "쉘에서 실행", - "executeOnShellDescription": "기본적으로 File Browser 는 바이너리를 명령어로 호출하여 실행합니다. 쉘을 통해 실행하기를 원한다면, Bash 또는 PowerShell 에 필요한 인수와 플래그를 설정하세요. 사용자 명령어와 이벤트 훅에 모두 적용됩니다.", + "examples": "예시", + "executeOnShell": "셸에서 실행", + "executeOnShellDescription": "기본적으로 File Browser는 명령어를 해당 바이너리 파일로 직접 실행합니다. 만약 Bash나 PowerShell과 같은 셸에서 명령어를 실행하려면, 필요한 인수와 플래그를 설정하여 셸 환경을 정의할 수 있습니다. 플래그가 설정된 경우, 실행하는 명령어가 인수로 추가됩니다. 이는 사용자 명령어와 이벤트 후크 모두에 적용됩니다.", "globalRules": "규칙에 대한 전역설정으로 모든 사용자에게 적용됩니다. 지정된 규칙은 사용자 설정을 덮어쓰기 합니다.", "globalSettings": "전역 설정", "hideDotfiles": "숨김파일(dotfile)을 표시하지 않습니다.", @@ -221,38 +221,38 @@ "passwordUpdated": "비밀번호 수정 완료!", "path": "경로", "perm": { - "create": "파일이나 디렉토리 생성하기", - "delete": "화일이나 디렉토리 삭제하기", + "create": "파일 및 디렉터리 생성하기", + "delete": "파일 및 디렉터리 삭제하기", "download": "다운로드", "execute": "명령 실행", "modify": "파일 편집", - "rename": "파일 이름 변경 또는 디렉토리 이동", + "rename": "파일 및 디렉터리의 이름 변경 또는 이동", "share": "파일 공유하기" }, "permissions": "권한", - "permissionsHelp": "사용자를 관리자로 만들거나 권한을 부여할 수 있습니다. 관리자를 선택하면, 모든 옵션이 자동으로 선택됩니다. 사용자 관리는 현재 관리자만 할 수 있습니다.\n", + "permissionsHelp": "사용자를 관리자로 설정하거나 개별적으로 권한을 지정할 수 있습니다. \"관리자\"를 선택하면 다른 모든 옵션이 자동으로 선택됩니다. 사용자 관리는 관리자의 권한입니다.\n", "profileSettings": "프로필 설정", - "redirectAfterCopyMove": "Redirect to destination after copy/move", - "ruleExample1": "점(.)으로 시작하는 모든 파일의 접근을 방지합니다.(예 .git, .gitignore)\n", + "redirectAfterCopyMove": "복사/이동 후 대상 경로로 이동", + "ruleExample1": "각 폴더에 점(.)으로 시작하는 모든 파일의 접근을 방지합니다. (예시: .git, .gitignore)\n", "ruleExample2": "Caddyfile파일의 접근을 방지합니다.", - "rules": "룰", - "rulesHelp": "사용자별로 규칙을 허용/방지를 지정할 수 있습니다. 방지된 파일은 보이지 않고 사용자들은 접근할 수 없습니다. 사용자의 접근 허용 범위와 관련해 정규표현식(regex)과 경로를 지원합니다.\n", + "rules": "규칙", + "rulesHelp": "여기에서 특정 사용자에 대한 허용 및 차단 규칙 집합을 정의할 수 있습니다. 차단된 파일은 목록에 표시되지 않으며 해당 사용자는 접근할 수 없습니다. 정규 표현식과 사용자 범위에 대한 상대 경로를 지원합니다.\n", "scope": "범위", "setDateFormat": "날짜 형식 설정", "settingsUpdated": "설정 수정됨!", "shareDuration": "공유 기간", "shareManagement": "공유 내역 관리", "shareDeleted": "공유 삭제됨!", - "singleClick": "한번 클릭으로 파일과 폴더를 열도록 합니다.", + "singleClick": "단일 클릭으로 파일 및 디렉터리 열기", "themes": { "default": "시스템 기본값", - "dark": "다크테마", - "light": "라이트테마", + "dark": "어두운 테마", + "light": "밝은 테마", "title": "테마" }, "user": "사용자", "userCommands": "명령어", - "userCommandsHelp": "사용에게 허용할 명령어를 공백으로 구분하여 입력하세요. 예:\n", + "userCommandsHelp": "사용자에게 허용할 명령어를 공백으로 구분하여 입력하세요. 예:\n", "userCreated": "사용자 생성됨!", "userDefaults": "사용자 기본 설정", "userDeleted": "사용자 삭제됨!", @@ -260,7 +260,7 @@ "userUpdated": "사용자 수정됨!", "username": "사용자 이름", "users": "사용자", - "currentPassword": "Your Current Password" + "currentPassword": "현재 비밀번호" }, "sidebar": { "help": "도움말", @@ -283,6 +283,6 @@ "hours": "시", "minutes": "분", "seconds": "초", - "unit": "Time Unit" + "unit": "시간 단위" } } From a8fe32f4aabd051ec53b5030cecb9388a55c4d92 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 1 Feb 2026 11:43:30 +0100 Subject: [PATCH 020/126] chore(deps): update module github.com/shirou/gopsutil/v4 to v4.26.1 (#5736) --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 311234d019..6a4c000873 100644 --- a/go.mod +++ b/go.mod @@ -17,7 +17,7 @@ require ( github.com/mholt/archives v0.1.5 github.com/mitchellh/go-homedir v1.1.0 github.com/samber/lo v1.52.0 - github.com/shirou/gopsutil/v4 v4.25.12 + github.com/shirou/gopsutil/v4 v4.26.1 github.com/spf13/afero v1.15.0 github.com/spf13/cobra v1.10.2 github.com/spf13/pflag v1.0.10 diff --git a/go.sum b/go.sum index fff93d174c..b6522ab2f1 100644 --- a/go.sum +++ b/go.sum @@ -204,8 +204,8 @@ github.com/sagikazarmark/locafero v0.11.0 h1:1iurJgmM9G3PA/I+wWYIOw/5SyBtxapeHDc github.com/sagikazarmark/locafero v0.11.0/go.mod h1:nVIGvgyzw595SUSUE6tvCp3YYTeHs15MvlmU87WwIik= github.com/samber/lo v1.52.0 h1:Rvi+3BFHES3A8meP33VPAxiBZX/Aws5RxrschYGjomw= github.com/samber/lo v1.52.0/go.mod h1:4+MXEGsJzbKGaUEQFKBq2xtfuznW9oz/WrgyzMzRoM0= -github.com/shirou/gopsutil/v4 v4.25.12 h1:e7PvW/0RmJ8p8vPGJH4jvNkOyLmbkXgXW4m6ZPic6CY= -github.com/shirou/gopsutil/v4 v4.25.12/go.mod h1:EivAfP5x2EhLp2ovdpKSozecVXn1TmuG7SMzs/Wh4PU= +github.com/shirou/gopsutil/v4 v4.26.1 h1:TOkEyriIXk2HX9d4isZJtbjXbEjf5qyKPAzbzY0JWSo= +github.com/shirou/gopsutil/v4 v4.26.1/go.mod h1:medLI9/UNAb0dOI9Q3/7yWSqKkj00u+1tgY8nvv41pc= github.com/sorairolake/lzip-go v0.3.8 h1:j5Q2313INdTA80ureWYRhX+1K78mUXfMoPZCw/ivWik= github.com/sorairolake/lzip-go v0.3.8/go.mod h1:JcBqGMV0frlxwrsE9sMWXDjqn3EeVf0/54YPsw66qkU= github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 h1:+jumHNA0Wrelhe64i8F6HNlS8pkoyMv5sreGx2Ry5Rw= From b8da36e63033f137ef08cae2b109f267978c1461 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 1 Feb 2026 17:03:31 +0100 Subject: [PATCH 021/126] chore(deps): update dependency vue-router to v5 (#5733) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- frontend/package.json | 2 +- frontend/pnpm-lock.yaml | 271 ++++++++++++++++++++++++++++++++++++---- 2 files changed, 250 insertions(+), 23 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 95802a7d8e..68a41373b7 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -44,7 +44,7 @@ "vue-i18n": "^11.1.10", "vue-lazyload": "^3.0.0", "vue-reader": "^1.2.17", - "vue-router": "^4.5.1", + "vue-router": "^5.0.0", "vue-toastification": "^2.0.0-rc.5" }, "devDependencies": { diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 60edb737d7..d84b3fc7c5 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -90,8 +90,8 @@ importers: specifier: ^1.2.17 version: 1.3.4 vue-router: - specifier: ^4.5.1 - version: 4.6.4(vue@3.5.27(typescript@5.9.3)) + specifier: ^5.0.0 + version: 5.0.1(@vue/compiler-sfc@3.5.27)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.27(typescript@5.9.3)))(vue@3.5.27(typescript@5.9.3)) vue-toastification: specifier: ^2.0.0-rc.5 version: 2.0.0-rc.5(vue@3.5.27(typescript@5.9.3)) @@ -181,6 +181,10 @@ packages: resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} engines: {node: '>=6.9.0'} + '@babel/generator@7.29.0': + resolution: {integrity: sha512-vSH118/wwM/pLR38g/Sgk05sNtro6TlTJKuiMXDaZqPUfjTFcudpCOt00IhOfj+1BFAX+UFAlzCU+6WXr3GLFQ==} + 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'} @@ -278,6 +282,11 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@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'} @@ -669,6 +678,10 @@ packages: resolution: {integrity: sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==} 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: @@ -1495,6 +1508,15 @@ packages: '@volar/typescript@2.4.27': resolution: {integrity: sha512-eWaYCcl/uAPInSK2Lze6IqVWaBu/itVqR5InXcHXFyles4zO++Mglt3oxdgj75BDcv1Knr9Y93nowS8U3wqhxg==} + '@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.27': resolution: {integrity: sha512-gnSBQjZA+//qDZen+6a2EdHqJ68Z7uybrMf3SPjEGgG4dicklwDVmMC1AeIHxtLVPT7sn6sH1KOO+tS6gwOUeQ==} @@ -1513,12 +1535,21 @@ packages: '@vue/devtools-api@7.7.8': resolution: {integrity: sha512-BtFcAmDbtXGwurWUFf8ogIbgZyR+rcVES1TSNEI8Em80fD8Anu+qTRN1Fc3J6vdRHlVM3fzPV1qIo+B4AiqGzw==} + '@vue/devtools-api@8.0.5': + resolution: {integrity: sha512-DgVcW8H/Nral7LgZEecYFFYXnAvGuN9C3L3DtWekAncFBedBczpNW8iHKExfaM559Zm8wQWrwtYZ9lXthEHtDw==} + '@vue/devtools-kit@7.7.8': resolution: {integrity: sha512-4Y8op+AoxOJhB9fpcEF6d5vcJXWKgHxC3B0ytUB8zz15KbP9g9WgVzral05xluxi2fOeAy6t140rdQ943GcLRQ==} + '@vue/devtools-kit@8.0.5': + resolution: {integrity: sha512-q2VV6x1U3KJMTQPUlRMyWEKVbcHuxhqJdSr6Jtjz5uAThAIrfJ6WVZdGZm5cuO63ZnSUz0RCsVwiUUb0mDV0Yg==} + '@vue/devtools-shared@7.7.8': resolution: {integrity: sha512-XHpO3jC5nOgYr40M9p8Z4mmKfTvUxKyRcUnpBAYg11pE78eaRFBKb0kG5yKLroMuJeeNH9LWmKp2zMU5LUc7CA==} + '@vue/devtools-shared@8.0.5': + resolution: {integrity: sha512-bRLn6/spxpmgLk+iwOrR29KrYnJjG9DGpHGkDFG82UM21ZpJ39ztUT9OXX3g+usW7/b2z+h46I9ZiYyB07XMXg==} + '@vue/eslint-config-prettier@10.2.0': resolution: {integrity: sha512-GL3YBLwv/+b86yHcNNfPJxOTtVFJ4Mbc9UU3zR+KVoG7SwGTjPT+32fXamscNumElhcpXW3mT0DgzS9w32S7Bw==} peerDependencies: @@ -1660,6 +1691,14 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + 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.24: resolution: {integrity: sha512-uHZg7N9ULTVbutaIsDRoUkoS8/h3bdsmVJYZ5l3wv8Cp/6UIIoRDm90hZ+BwxUj/hGBEzLxdHNSKuFpn8WOyZw==} engines: {node: ^10 || ^12 || >=14} @@ -1743,6 +1782,10 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + chokidar@5.0.0: + resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} + engines: {node: '>= 20.19.0'} + color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -1759,6 +1802,12 @@ packages: concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + + confbox@0.2.2: + resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} + convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} @@ -1957,6 +2006,9 @@ packages: 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==} @@ -2169,6 +2221,10 @@ packages: lie@3.3.0: resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} + 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==} @@ -2218,6 +2274,10 @@ packages: 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==} @@ -2257,6 +2317,9 @@ packages: 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 @@ -2334,6 +2397,9 @@ packages: 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==} @@ -2358,6 +2424,12 @@ packages: 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'} @@ -2405,6 +2477,9 @@ packages: 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==} @@ -2414,6 +2489,10 @@ packages: 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'} @@ -2469,6 +2548,9 @@ packages: 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 @@ -2581,6 +2663,9 @@ packages: 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==} @@ -2600,6 +2685,10 @@ packages: 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'} @@ -2724,10 +2813,20 @@ packages: vue-reader@1.3.4: resolution: {integrity: sha512-QYTX9hlrV71gL/1vMejcBLLS9Ool29XMZcLQwvL0Ep1F//o0ymzYbKX2Lre+4BUBkVq49/GmmGCmAJACsJL9tw==} - vue-router@4.6.4: - resolution: {integrity: sha512-Hz9q5sa33Yhduglwz6g9skT8OBPii+4bFn88w6J+J4MfEo4KRRpmiNG/hHHkdbRFlLBOqxN8y8gf2Fb0MTUgVg==} + vue-router@5.0.1: + resolution: {integrity: sha512-t+lFugGXMdaq8lbn+vXG4j2H9UlsP205Tszz1wcDk9FyxqItBzcdJQ06IhpkQ2mHOfiTOHZeBshkskzPzHJkCw==} peerDependencies: + '@pinia/colada': ^0.18.1 + '@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==} @@ -2812,15 +2911,23 @@ snapshots: '@babel/generator@7.28.5': dependencies: - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + + '@babel/generator@7.29.0': + 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.28.5 + '@babel/types': 7.28.6 '@babel/helper-compilation-targets@7.27.2': dependencies: @@ -2866,14 +2973,14 @@ snapshots: '@babel/helper-member-expression-to-functions@7.28.5': dependencies: '@babel/traverse': 7.28.5 - '@babel/types': 7.28.5 + '@babel/types': 7.28.6 transitivePeerDependencies: - supports-color '@babel/helper-module-imports@7.27.1': dependencies: '@babel/traverse': 7.28.5 - '@babel/types': 7.28.5 + '@babel/types': 7.28.6 transitivePeerDependencies: - supports-color @@ -2888,7 +2995,7 @@ snapshots: '@babel/helper-optimise-call-expression@7.27.1': dependencies: - '@babel/types': 7.28.5 + '@babel/types': 7.28.6 '@babel/helper-plugin-utils@7.27.1': {} @@ -2913,7 +3020,7 @@ snapshots: '@babel/helper-skip-transparent-expression-wrappers@7.27.1': dependencies: '@babel/traverse': 7.28.5 - '@babel/types': 7.28.5 + '@babel/types': 7.28.6 transitivePeerDependencies: - supports-color @@ -2927,23 +3034,27 @@ snapshots: dependencies: '@babel/template': 7.27.2 '@babel/traverse': 7.28.5 - '@babel/types': 7.28.5 + '@babel/types': 7.28.6 transitivePeerDependencies: - supports-color '@babel/helpers@7.28.4': dependencies: '@babel/template': 7.27.2 - '@babel/types': 7.28.5 + '@babel/types': 7.28.6 '@babel/parser@7.28.5': dependencies: - '@babel/types': 7.28.5 + '@babel/types': 7.28.6 '@babel/parser@7.28.6': dependencies: '@babel/types': 7.28.6 + '@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.28.5)': dependencies: '@babel/core': 7.28.5 @@ -3412,7 +3523,7 @@ snapshots: dependencies: '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/types': 7.28.5 + '@babel/types': 7.28.6 esutils: 2.0.3 '@babel/runtime@7.28.4': {} @@ -3420,17 +3531,17 @@ snapshots: '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 '@babel/traverse@7.28.5': dependencies: '@babel/code-frame': 7.27.1 '@babel/generator': 7.28.5 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.5 + '@babel/parser': 7.28.6 '@babel/template': 7.27.2 - '@babel/types': 7.28.5 + '@babel/types': 7.28.6 debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -3445,6 +3556,11 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 + '@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.27(typescript@5.9.3))': dependencies: vue: 3.5.27(typescript@5.9.3) @@ -3721,7 +3837,7 @@ snapshots: '@intlify/vue-i18n-extensions@8.0.0(@intlify/shared@11.2.2)(@vue/compiler-dom@3.5.27)(vue-i18n@11.2.8(vue@3.5.27(typescript@5.9.3)))(vue@3.5.27(typescript@5.9.3))': dependencies: - '@babel/parser': 7.28.5 + '@babel/parser': 7.28.6 optionalDependencies: '@intlify/shared': 11.2.2 '@vue/compiler-dom': 3.5.27 @@ -4147,6 +4263,16 @@ snapshots: path-browserify: 1.0.1 vscode-uri: 3.1.0 + '@vue-macros/common@3.1.2(vue@3.5.27(typescript@5.9.3))': + dependencies: + '@vue/compiler-sfc': 3.5.27 + 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.27(typescript@5.9.3) + '@vue/compiler-core@3.5.27': dependencies: '@babel/parser': 7.28.6 @@ -4183,6 +4309,10 @@ snapshots: dependencies: '@vue/devtools-kit': 7.7.8 + '@vue/devtools-api@8.0.5': + dependencies: + '@vue/devtools-kit': 8.0.5 + '@vue/devtools-kit@7.7.8': dependencies: '@vue/devtools-shared': 7.7.8 @@ -4193,10 +4323,24 @@ snapshots: speakingurl: 14.0.1 superjson: 2.2.5 + '@vue/devtools-kit@8.0.5': + dependencies: + '@vue/devtools-shared': 8.0.5 + birpc: 2.8.0 + hookable: 5.5.3 + mitt: 3.0.1 + perfect-debounce: 2.1.0 + speakingurl: 14.0.1 + superjson: 2.2.5 + '@vue/devtools-shared@7.7.8': dependencies: rfdc: 1.4.1 + '@vue/devtools-shared@8.0.5': + dependencies: + rfdc: 1.4.1 + '@vue/eslint-config-prettier@10.2.0(eslint@9.39.2)(prettier@3.8.1)': dependencies: eslint: 9.39.2 @@ -4314,6 +4458,16 @@ snapshots: argparse@2.0.1: {} + ast-kit@2.2.0: + dependencies: + '@babel/parser': 7.28.6 + pathe: 2.0.3 + + ast-walker-scope@0.8.3: + dependencies: + '@babel/parser': 7.28.6 + ast-kit: 2.2.0 + autoprefixer@10.4.24(postcss@8.5.6): dependencies: browserslist: 4.28.1 @@ -4404,6 +4558,10 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 + chokidar@5.0.0: + dependencies: + readdirp: 5.0.0 + color-convert@2.0.1: dependencies: color-name: 1.1.4 @@ -4419,6 +4577,10 @@ snapshots: concat-map@0.0.1: {} + confbox@0.1.8: {} + + confbox@0.2.2: {} + convert-source-map@2.0.0: {} copy-anything@4.0.5: @@ -4684,6 +4846,8 @@ snapshots: d: 1.0.2 es5-ext: 0.10.64 + exsolve@1.0.8: {} + ext@1.7.0: dependencies: type: 2.7.3 @@ -4862,6 +5026,12 @@ snapshots: dependencies: immediate: 3.0.6 + 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 @@ -4914,6 +5084,10 @@ snapshots: '@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 @@ -4947,6 +5121,13 @@ snapshots: mitt@3.0.1: {} + mlly@1.8.0: + dependencies: + acorn: 8.15.0 + pathe: 2.0.3 + pkg-types: 1.3.1 + ufo: 1.6.3 + mpd-parser@1.3.1: dependencies: '@babel/runtime': 7.28.4 @@ -5014,6 +5195,8 @@ snapshots: perfect-debounce@1.0.0: {} + perfect-debounce@2.1.0: {} + picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -5031,6 +5214,18 @@ snapshots: dependencies: '@babel/runtime': 7.28.4 + 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.2 + exsolve: 1.0.8 + pathe: 2.0.3 + postcss-selector-parser@7.1.1: dependencies: cssesc: 3.0.0 @@ -5070,6 +5265,8 @@ snapshots: dependencies: vue: 3.5.27(typescript@5.9.3) + quansync@0.2.11: {} + querystringify@2.2.0: {} queue-microtask@1.2.3: {} @@ -5084,6 +5281,8 @@ snapshots: 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 @@ -5160,6 +5359,8 @@ snapshots: safe-buffer@5.1.2: {} + scule@1.3.0: {} + semver@6.3.1: {} semver@7.7.3: {} @@ -5260,6 +5461,8 @@ snapshots: typescript@5.9.3: {} + ufo@1.6.3: {} + undici-types@7.16.0: {} unicode-canonical-property-names-ecmascript@2.0.1: {} @@ -5273,6 +5476,11 @@ snapshots: 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 @@ -5395,10 +5603,29 @@ snapshots: dependencies: epubjs: 0.3.93 - vue-router@4.6.4(vue@3.5.27(typescript@5.9.3)): + vue-router@5.0.1(@vue/compiler-sfc@3.5.27)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.27(typescript@5.9.3)))(vue@3.5.27(typescript@5.9.3)): dependencies: - '@vue/devtools-api': 6.6.4 + '@babel/generator': 7.29.0 + '@vue-macros/common': 3.1.2(vue@3.5.27(typescript@5.9.3)) + '@vue/devtools-api': 8.0.5 + 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: 2.3.11 + unplugin-utils: 0.3.1 vue: 3.5.27(typescript@5.9.3) + yaml: 2.8.2 + optionalDependencies: + '@vue/compiler-sfc': 3.5.27 + pinia: 3.0.4(typescript@5.9.3)(vue@3.5.27(typescript@5.9.3)) vue-toastification@2.0.0-rc.5(vue@3.5.27(typescript@5.9.3)): dependencies: From 08d7a1504c42c115fdd82d3845694fe87147f1db Mon Sep 17 00:00:00 2001 From: Arran Date: Sun, 1 Feb 2026 16:08:40 +0000 Subject: [PATCH 022/126] feat: Add Redis upload cache for multi-replica deployments (#5724) --- cmd/root.go | 10 ++++- compose.redis.yaml | 17 ++++++++ compose.yaml | 37 ++++++++++++++++ go.mod | 3 ++ go.sum | 10 +++++ http/http.go | 9 ++-- http/tus_handlers.go | 64 ++++++---------------------- http/upload_cache_memory.go | 85 +++++++++++++++++++++++++++++++++++++ http/upload_cache_redis.go | 82 +++++++++++++++++++++++++++++++++++ 9 files changed, 262 insertions(+), 55 deletions(-) create mode 100644 compose.redis.yaml create mode 100644 compose.yaml create mode 100644 http/upload_cache_memory.go create mode 100644 http/upload_cache_redis.go diff --git a/cmd/root.go b/cmd/root.go index 981eec4f3d..13139a7e36 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -46,6 +46,7 @@ var ( "disable-type-detection-by-header": "disableTypeDetectionByHeader", "img-processors": "imageProcessors", "cache-dir": "cacheDir", + "redis-cache-url": "redisCacheUrl", "token-expiration-time": "tokenExpirationTime", "baseurl": "baseURL", } @@ -88,6 +89,7 @@ func init() { flags.String("password", "", "hashed password for the first user when using quick setup") flags.Uint32("socketPerm", 0666, "unix socket file permissions") flags.String("cacheDir", "", "file cache directory (disabled if empty)") + flags.String("redisCacheUrl", "", "redis cache URL (for multi-instance deployments), e.g. redis://user:pass@host:port") flags.Int("imageProcessors", 4, "image processors count") addServerFlags(flags) } @@ -176,6 +178,12 @@ user created with the credentials from options "username" and "password".`, fileCache = diskcache.New(afero.NewOsFs(), cacheDir) } + redisCacheURL := v.GetString("redisCacheUrl") + uploadCache, err := fbhttp.NewUploadCache(redisCacheURL) + if err != nil { + return fmt.Errorf("failed to initialize upload cache: %w", err) + } + server, err := getServerSettings(v, st.Storage) if err != nil { return err @@ -227,7 +235,7 @@ user created with the credentials from options "username" and "password".`, panic(err) } - handler, err := fbhttp.NewHandler(imageService, fileCache, st.Storage, server, assetsFs) + handler, err := fbhttp.NewHandler(imageService, fileCache, uploadCache, st.Storage, server, assetsFs) if err != nil { return err } diff --git a/compose.redis.yaml b/compose.redis.yaml new file mode 100644 index 0000000000..878a96b308 --- /dev/null +++ b/compose.redis.yaml @@ -0,0 +1,17 @@ +# Run using: +# docker compose -f compose.yaml -f compose.redis.yaml up --build + +services: + redis: + container_name: redis + image: redis:latest + networks: + - filebrowser + command: + - sh + - -c + - | + cat > /tmp/users.acl <filebrowser ~* +@all + EOF + redis-server --aclfile /tmp/users.acl diff --git a/compose.yaml b/compose.yaml new file mode 100644 index 0000000000..be19b56a36 --- /dev/null +++ b/compose.yaml @@ -0,0 +1,37 @@ +# Run using: +# docker compose up --build + +services: + filebrowser: + container_name: filebrowser + build: + dockerfile: Dockerfile + context: . + networks: + - filebrowser + ports: + - 8000:80 + volumes: + - filebrowser:/flux/vault + environment: + - REDIS_CACHE_URL=redis://default:filebrowser@redis:6379 # Use rediss:// for ssl + + redis: + container_name: redis + image: redis:latest + networks: + - filebrowser + command: + - sh + - -c + - | + cat > /tmp/users.acl <filebrowser ~* +@all + EOF + redis-server --aclfile /tmp/users.acl + +networks: + filebrowser: + +volumes: + filebrowser: diff --git a/go.mod b/go.mod index 6a4c000873..8d2afd5191 100644 --- a/go.mod +++ b/go.mod @@ -16,6 +16,7 @@ require ( github.com/marusama/semaphore/v2 v2.5.0 github.com/mholt/archives v0.1.5 github.com/mitchellh/go-homedir v1.1.0 + github.com/redis/go-redis/v9 v9.17.2 github.com/samber/lo v1.52.0 github.com/shirou/gopsutil/v4 v4.26.1 github.com/spf13/afero v1.15.0 @@ -39,8 +40,10 @@ require ( github.com/bodgit/plumbing v1.3.0 // indirect github.com/bodgit/sevenzip v1.6.1 // indirect github.com/bodgit/windows v1.0.1 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.6 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707 // indirect github.com/dsoprea/go-logging v0.0.0-20200710184922-b02d349568dd // indirect github.com/dsoprea/go-utility/v2 v2.0.0-20221003172846-a3e1774ef349 // indirect diff --git a/go.sum b/go.sum index b6522ab2f1..ceb6c426c8 100644 --- a/go.sum +++ b/go.sum @@ -42,7 +42,13 @@ github.com/bodgit/sevenzip v1.6.1 h1:kikg2pUMYC9ljU7W9SaqHXhym5HyKm8/M/jd31fYan4 github.com/bodgit/sevenzip v1.6.1/go.mod h1:GVoYQbEVbOGT8n2pfqCIMRUaRjQ8F9oSqoBEqZh5fQ8= github.com/bodgit/windows v1.0.1 h1:tF7K6KOluPYygXa3Z2594zxlkbKPAOvqr97etrGNIz4= github.com/bodgit/windows v1.0.1/go.mod h1:a6JLwrB4KrTR5hBpp8FI9/9W9jJfeQ2h4XDXU74ZCdM= +github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs= +github.com/bsm/ginkgo/v2 v2.12.0/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c= +github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA= +github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= @@ -53,6 +59,8 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= github.com/disintegration/imaging v1.6.2 h1:w1LecBlG2Lnp8B3jk5zSuNqd7b4DXhcjwek1ei82L+c= github.com/disintegration/imaging v1.6.2/go.mod h1:44/5580QXChDfwIclfc/PCwrr44amcmDAg8hxG0Ewe4= github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707 h1:2tV76y6Q9BB+NEBasnqvs7e49aEBFI8ejC89PSnWH+4= @@ -194,6 +202,8 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/redis/go-redis/v9 v9.17.2 h1:P2EGsA4qVIM3Pp+aPocCJ7DguDHhqrXNhVcEp4ViluI= +github.com/redis/go-redis/v9 v9.17.2/go.mod h1:u410H11HMLoB+TP67dz8rL9s6QW2j76l0//kSOd3370= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= diff --git a/http/http.go b/http/http.go index bb57f39597..ec8e52c156 100644 --- a/http/http.go +++ b/http/http.go @@ -19,6 +19,7 @@ type modifyRequest struct { func NewHandler( imgSvc ImgService, fileCache FileCache, + uploadCache UploadCache, store *storage.Storage, server *settings.Server, assetsFs fs.FS, @@ -67,10 +68,10 @@ func NewHandler( api.PathPrefix("/resources").Handler(monkey(resourcePutHandler, "/api/resources")).Methods("PUT") api.PathPrefix("/resources").Handler(monkey(resourcePatchHandler(fileCache), "/api/resources")).Methods("PATCH") - api.PathPrefix("/tus").Handler(monkey(tusPostHandler(), "/api/tus")).Methods("POST") - api.PathPrefix("/tus").Handler(monkey(tusHeadHandler(), "/api/tus")).Methods("HEAD", "GET") - api.PathPrefix("/tus").Handler(monkey(tusPatchHandler(), "/api/tus")).Methods("PATCH") - api.PathPrefix("/tus").Handler(monkey(tusDeleteHandler(), "/api/tus")).Methods("DELETE") + api.PathPrefix("/tus").Handler(monkey(tusPostHandler(uploadCache), "/api/tus")).Methods("POST") + api.PathPrefix("/tus").Handler(monkey(tusHeadHandler(uploadCache), "/api/tus")).Methods("HEAD", "GET") + api.PathPrefix("/tus").Handler(monkey(tusPatchHandler(uploadCache), "/api/tus")).Methods("PATCH") + api.PathPrefix("/tus").Handler(monkey(tusDeleteHandler(uploadCache), "/api/tus")).Methods("DELETE") api.PathPrefix("/usage").Handler(monkey(diskUsage, "/api/usage")).Methods("GET") diff --git a/http/tus_handlers.go b/http/tus_handlers.go index 498d776f10..b659d47965 100644 --- a/http/tus_handlers.go +++ b/http/tus_handlers.go @@ -1,7 +1,6 @@ package fbhttp import ( - "context" "errors" "fmt" "io" @@ -12,48 +11,13 @@ import ( "strconv" "time" - "github.com/jellydator/ttlcache/v3" "github.com/spf13/afero" "github.com/filebrowser/filebrowser/v2/files" ) -const maxUploadWait = 3 * time.Minute - -// Tracks active uploads along with their respective upload lengths -var activeUploads = initActiveUploads() - -func initActiveUploads() *ttlcache.Cache[string, int64] { - cache := ttlcache.New[string, int64]() - cache.OnEviction(func(_ context.Context, reason ttlcache.EvictionReason, item *ttlcache.Item[string, int64]) { - if reason == ttlcache.EvictionReasonExpired { - fmt.Printf("deleting incomplete upload file: \"%s\"", item.Key()) - os.Remove(item.Key()) - } - }) - go cache.Start() - - return cache -} - -func registerUpload(filePath string, fileSize int64) { - activeUploads.Set(filePath, fileSize, maxUploadWait) -} - -func completeUpload(filePath string) { - activeUploads.Delete(filePath) -} - -func getActiveUploadLength(filePath string) (int64, error) { - item := activeUploads.Get(filePath) - if item == nil { - return 0, fmt.Errorf("no active upload found for the given path") - } - - return item.Value(), nil -} - -func keepUploadActive(filePath string) func() { +// keepUploadActive periodically touches the cache entry to prevent eviction during transfer +func keepUploadActive(cache UploadCache, filePath string) func() { stop := make(chan bool) go func() { @@ -65,7 +29,7 @@ func keepUploadActive(filePath string) func() { case <-stop: return case <-ticker.C: - activeUploads.Touch(filePath) + cache.Touch(filePath) } } }() @@ -75,7 +39,7 @@ func keepUploadActive(filePath string) func() { } } -func tusPostHandler() handleFunc { +func tusPostHandler(cache UploadCache) handleFunc { return withUser(func(w http.ResponseWriter, r *http.Request, d *data) (int, error) { if !d.user.Perm.Create || !d.Check(r.URL.Path) { return http.StatusForbidden, nil @@ -146,7 +110,7 @@ func tusPostHandler() handleFunc { } // Enables the user to utilize the PATCH endpoint for uploading file data - registerUpload(file.RealPath(), uploadLength) + cache.Register(file.RealPath(), uploadLength) path, err := url.JoinPath("/", d.server.BaseURL, "/api/tus", r.URL.Path) if err != nil { @@ -158,7 +122,7 @@ func tusPostHandler() handleFunc { }) } -func tusHeadHandler() handleFunc { +func tusHeadHandler(cache UploadCache) handleFunc { return withUser(func(w http.ResponseWriter, r *http.Request, d *data) (int, error) { w.Header().Set("Cache-Control", "no-store") if !d.user.Perm.Create || !d.Check(r.URL.Path) { @@ -177,7 +141,7 @@ func tusHeadHandler() handleFunc { return errToStatus(err), err } - uploadLength, err := getActiveUploadLength(file.RealPath()) + uploadLength, err := cache.GetLength(file.RealPath()) if err != nil { return http.StatusNotFound, err } @@ -189,7 +153,7 @@ func tusHeadHandler() handleFunc { }) } -func tusPatchHandler() handleFunc { +func tusPatchHandler(cache UploadCache) handleFunc { return withUser(func(w http.ResponseWriter, r *http.Request, d *data) (int, error) { if !d.user.Perm.Create || !d.Check(r.URL.Path) { return http.StatusForbidden, nil @@ -219,13 +183,13 @@ func tusPatchHandler() handleFunc { return errToStatus(err), err } - uploadLength, err := getActiveUploadLength(file.RealPath()) + uploadLength, err := cache.GetLength(file.RealPath()) if err != nil { return http.StatusNotFound, err } // Prevent the upload from being evicted during the transfer - stop := keepUploadActive(file.RealPath()) + stop := keepUploadActive(cache, file.RealPath()) defer stop() switch { @@ -266,7 +230,7 @@ func tusPatchHandler() handleFunc { w.Header().Set("Upload-Offset", strconv.FormatInt(newOffset, 10)) if newOffset >= uploadLength { - completeUpload(file.RealPath()) + cache.Complete(file.RealPath()) _ = d.RunHook(func() error { return nil }, "upload", r.URL.Path, "", d.user) } @@ -274,7 +238,7 @@ func tusPatchHandler() handleFunc { }) } -func tusDeleteHandler() handleFunc { +func tusDeleteHandler(cache UploadCache) handleFunc { return withUser(func(_ http.ResponseWriter, r *http.Request, d *data) (int, error) { if r.URL.Path == "/" || !d.user.Perm.Create { return http.StatusForbidden, nil @@ -292,7 +256,7 @@ func tusDeleteHandler() handleFunc { return errToStatus(err), err } - _, err = getActiveUploadLength(file.RealPath()) + _, err = cache.GetLength(file.RealPath()) if err != nil { return http.StatusNotFound, err } @@ -302,7 +266,7 @@ func tusDeleteHandler() handleFunc { return errToStatus(err), err } - completeUpload(file.RealPath()) + cache.Complete(file.RealPath()) return http.StatusNoContent, nil }) diff --git a/http/upload_cache_memory.go b/http/upload_cache_memory.go new file mode 100644 index 0000000000..5b080fec74 --- /dev/null +++ b/http/upload_cache_memory.go @@ -0,0 +1,85 @@ +package fbhttp + +import ( + "context" + "fmt" + "os" + "time" + + "github.com/jellydator/ttlcache/v3" +) + +const uploadCacheTTL = 3 * time.Minute + +// UploadCache is an interface for tracking active uploads. +// Allows for different backends (e.g. in-memory or redis) +// to support both single instance and multi replica deployments. +type UploadCache interface { + // Register stores an upload with its expected file size + Register(filePath string, fileSize int64) + + // Complete removes an upload from the cache + Complete(filePath string) + + // GetLength returns the expected file size for an active upload + GetLength(filePath string) (int64, error) + + // Touch refreshes the TTL for an active upload + Touch(filePath string) + + // Close cleans up any resources + Close() +} + +// memoryUploadCache is an upload cache for single replica deployments +type memoryUploadCache struct { + cache *ttlcache.Cache[string, int64] +} + +func newMemoryUploadCache() *memoryUploadCache { + cache := ttlcache.New[string, int64]() + cache.OnEviction(func(_ context.Context, reason ttlcache.EvictionReason, item *ttlcache.Item[string, int64]) { + if reason == ttlcache.EvictionReasonExpired { + fmt.Printf("deleting incomplete upload file: \"%s\"\n", item.Key()) + os.Remove(item.Key()) + } + }) + go cache.Start() + + return &memoryUploadCache{cache: cache} +} + +func (c *memoryUploadCache) Register(filePath string, fileSize int64) { + c.cache.Set(filePath, fileSize, uploadCacheTTL) +} + +func (c *memoryUploadCache) Complete(filePath string) { + c.cache.Delete(filePath) +} + +func (c *memoryUploadCache) GetLength(filePath string) (int64, error) { + item := c.cache.Get(filePath) + if item == nil { + return 0, fmt.Errorf("no active upload found for the given path") + } + return item.Value(), nil +} + +func (c *memoryUploadCache) Touch(filePath string) { + c.cache.Touch(filePath) +} + +func (c *memoryUploadCache) Close() { + c.cache.Stop() +} + +// NewUploadCache creates a new upload cache. +// If redisURL is empty, an in-memory cache will be used (suitable for single instance deployments). +// Otherwise, Redis will be used for the cache (suitable for multi-instance deployments). +// The redisURL can include credentials, e.g. redis://user:pass@host:port +func NewUploadCache(redisURL string) (UploadCache, error) { + if redisURL != "" { + return newRedisUploadCache(redisURL) + } + return newMemoryUploadCache(), nil +} diff --git a/http/upload_cache_redis.go b/http/upload_cache_redis.go new file mode 100644 index 0000000000..9926eba2b1 --- /dev/null +++ b/http/upload_cache_redis.go @@ -0,0 +1,82 @@ +package fbhttp + +import ( + "context" + "errors" + "fmt" + "log" + "strconv" + + "github.com/redis/go-redis/v9" +) + +// redisUploadCache is an upload cache for multi replica deployments +type redisUploadCache struct { + client *redis.Client +} + +func newRedisUploadCache(redisURL string) (*redisUploadCache, error) { + if redisURL == "" { + return nil, fmt.Errorf("redis URL is required") + } + + opts, err := redis.ParseURL(redisURL) + if err != nil { + return nil, fmt.Errorf("invalid redis URL: %w", err) + } + + client := redis.NewClient(opts) + + // Test connection + if err := client.Ping(context.Background()).Err(); err != nil { + return nil, fmt.Errorf("failed to connect to redis: %w", err) + } + + return &redisUploadCache{client: client}, nil +} + +func (c *redisUploadCache) filePathKey(filePath string) string { + return "filebrowser:upload:" + filePath +} + +func (c *redisUploadCache) Register(filePath string, fileSize int64) { + err := c.client.Set(context.Background(), c.filePathKey(filePath), fileSize, uploadCacheTTL).Err() + if err != nil { + log.Printf("failed to register upload in redis cache: %v", err) + } +} + +func (c *redisUploadCache) Complete(filePath string) { + err := c.client.Del(context.Background(), c.filePathKey(filePath)).Err() + if err != nil { + log.Printf("failed to complete upload in redis cache: %v", err) + } +} + +func (c *redisUploadCache) GetLength(filePath string) (int64, error) { + result, err := c.client.Get(context.Background(), c.filePathKey(filePath)).Result() + if err != nil { + if errors.Is(err, redis.Nil) { + return 0, fmt.Errorf("no active upload found for the given path") + } + return 0, fmt.Errorf("redis error: %w", err) + } + + size, err := strconv.ParseInt(result, 10, 64) + if err != nil { + return 0, fmt.Errorf("invalid upload length in cache: %w", err) + } + + return size, nil +} + +func (c *redisUploadCache) Touch(filePath string) { + err := c.client.Expire(context.Background(), c.filePathKey(filePath), uploadCacheTTL).Err() + if err != nil { + log.Printf("failed to touch upload in redis cache: %v", err) + } +} + +func (c *redisUploadCache) Close() { + c.client.Close() +} From 2b82612e3fe2b9c0d7e21e3a9f76d023b1d50609 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 1 Feb 2026 17:10:19 +0100 Subject: [PATCH 023/126] chore(deps): update module github.com/redis/go-redis/v9 to v9.17.3 (#5738) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 8d2afd5191..76877cdf55 100644 --- a/go.mod +++ b/go.mod @@ -16,7 +16,7 @@ require ( github.com/marusama/semaphore/v2 v2.5.0 github.com/mholt/archives v0.1.5 github.com/mitchellh/go-homedir v1.1.0 - github.com/redis/go-redis/v9 v9.17.2 + github.com/redis/go-redis/v9 v9.17.3 github.com/samber/lo v1.52.0 github.com/shirou/gopsutil/v4 v4.26.1 github.com/spf13/afero v1.15.0 diff --git a/go.sum b/go.sum index ceb6c426c8..c350ff93d9 100644 --- a/go.sum +++ b/go.sum @@ -202,8 +202,8 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/redis/go-redis/v9 v9.17.2 h1:P2EGsA4qVIM3Pp+aPocCJ7DguDHhqrXNhVcEp4ViluI= -github.com/redis/go-redis/v9 v9.17.2/go.mod h1:u410H11HMLoB+TP67dz8rL9s6QW2j76l0//kSOd3370= +github.com/redis/go-redis/v9 v9.17.3 h1:fN29NdNrE17KttK5Ndf20buqfDZwGNgoUr9qjl1DQx4= +github.com/redis/go-redis/v9 v9.17.3/go.mod h1:u410H11HMLoB+TP67dz8rL9s6QW2j76l0//kSOd3370= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= From b9df030e6eb7dfd4fa609ee53a97e8ab69d2a7a9 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sun, 1 Feb 2026 17:14:28 +0100 Subject: [PATCH 024/126] chore(docs): update CLI documentation --- www/docs/cli/filebrowser.md | 1 + 1 file changed, 1 insertion(+) diff --git a/www/docs/cli/filebrowser.md b/www/docs/cli/filebrowser.md index 5d18e8d266..ae76fdd9ba 100644 --- a/www/docs/cli/filebrowser.md +++ b/www/docs/cli/filebrowser.md @@ -68,6 +68,7 @@ filebrowser [flags] --noauth use the noauth auther when using quick setup --password string hashed password for the first user when using quick setup -p, --port string port to listen on (default "8080") + --redisCacheUrl string redis cache URL (for multi-instance deployments), e.g. redis://user:pass@host:port -r, --root string root to prepend to relative paths (default ".") --socket string socket to listen to (cannot be used with address, port, cert nor key flags) --socketPerm uint32 unix socket file permissions (default 438) From 854e5371b666395a04bbbe8c0e1451a24888f1d3 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sun, 1 Feb 2026 17:16:02 +0100 Subject: [PATCH 025/126] chore(release): 2.57.0 --- CHANGELOG.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0cc955d5e3..056654f277 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,20 @@ All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines. +## [2.57.0](https://github.com/filebrowser/filebrowser/compare/v2.56.0...v2.57.0) (2026-02-01) + + +### Features + +* Add Redis upload cache for multi-replica deployments ([#5724](https://github.com/filebrowser/filebrowser/issues/5724)) ([08d7a15](https://github.com/filebrowser/filebrowser/commit/08d7a1504c42c115fdd82d3845694fe87147f1db)) +* Updates for project File Browser ([#5725](https://github.com/filebrowser/filebrowser/issues/5725)) ([8fee256](https://github.com/filebrowser/filebrowser/commit/8fee2561afbf968ed577bc4139562a42b2278243)) + + +### Bug Fixes + +* adjust yaml config decodification to yaml.v3 ([#5722](https://github.com/filebrowser/filebrowser/issues/5722)) ([b594d4d](https://github.com/filebrowser/filebrowser/commit/b594d4d4e28a1b35e69d81d2c35948fe0d629888)) +* avoid 409 conflict when renaming files differing only by case ([#5729](https://github.com/filebrowser/filebrowser/issues/5729)) ([d441b28](https://github.com/filebrowser/filebrowser/commit/d441b28f432c3448a29ac828400321f1f4ed32d9)) + ## [2.56.0](https://github.com/filebrowser/filebrowser/compare/v2.55.0...v2.56.0) (2026-01-24) From 942d59848a6a461ad462f52442b46275a604a708 Mon Sep 17 00:00:00 2001 From: Ariel Leyva Date: Wed, 4 Feb 2026 16:12:56 -0500 Subject: [PATCH 026/126] chore(doc): add documentation for hook authentication method (#5742) --- www/docs/authentication.md | 107 +++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) diff --git a/www/docs/authentication.md b/www/docs/authentication.md index 365f9dacfa..7f2c4b4610 100644 --- a/www/docs/authentication.md +++ b/www/docs/authentication.md @@ -40,6 +40,113 @@ Where `X-My-Header` is the HTTP header provided by your proxy with the username. > > File Browser will blindly trust the provided header. If the proxy can be bypassed, an attacker could simply attach the header and get admin access. +### Hook Authentication + +The Hook Authentication method in FileBrowser allows developers to delegate user authentication to an external script or program. Instead of validating credentials internally, FileBrowser sends the username and password to a custom command defined by the administrator. This command receives the credentials through environment variables and returns key‑value pairs indicating whether the user should be authenticated, blocked, or passed through. + +The hook’s output controls user permissions, scope, locale, and other attributes, making it a powerful and extensible authentication mechanism. + +For example, the following code delegates filebrowser authentication to a PowerShell script on Windows. You can configure any command (for example, a script in Python, Node.js, etc.). + +```sh +filebrowser config set --auth.method=hook --auth.command="powershell.exe -File C:\route\to\your\script\auth.ps1" +``` + +This is the code for the auth.ps1 script +```sh +param() + +# Get FileBrowser credentials from environment variables +$username = $env:USERNAME +$password = $env:PASSWORD + +# Users dictionary (for testing purposes only) +$users = @{ + "admin" = "kideW48v7-SdE*" + "test" = "2sDd3-etrytñK" +} + +# Check if the user exists in the dictionary and verify the password +if ($users.ContainsKey($username) -and $users[$username] -eq $password) { + + # Successful authentication + Write-Output "hook.action=auth" # Hook action (in this case, "auth", is required for successful authentication) + + Write-Output "user.perm.admin=true" # Set admin role (all permissions) + #You can also define specific permissions like this: + Write-Output "user.perm.execute=true" + Write-Output "user.perm.create=true" + Write-Output "user.perm.rename=true" + Write-Output "user.perm.modify=true" + Write-Output "user.perm.delete=true" + Write-Output "user.perm.share=true" + Write-Output "user.perm.download=true" + + Write-Output "user.locale=es" # Set language + Write-Output "user.viewMode=list" # Set view mode + Write-Output "user.scope=/" # Set FileBrowser scope + Write-Output "user.singleClick=true" # Set single click user configuration + Write-Output "user.hideDotfiles=false" # Set hide dot files user configuration + + #Set other configuration +} else { + # Block authentication + Write-Output "hook.action=block" +} +``` + +##### Hook Output Format +A hook authentication script must output a series of key–value pairs, one per line, using the format: +``` +key=value +``` + +FileBrowser reads these lines and applies the corresponding authentication action and user configuration. + +###### Required Output +The hook must output one of the following actions: +| Key | Description | +|--------|------------ | +| hook.action=auth | Authenticates the user. FileBrowser will create or update the user if needed. | +| hook.action=block | Rejects authentication. The login attempt fails. | +| hook.action=pass | Delegates authentication to FileBrowser’s internal password validation. | + +For most custom authentication flows, auth or block are used. + +Example of a successful authentication: +```sh +hook.action=auth +``` + +###### Optional User Fields +When hook.action=auth is returned, the hook may also define additional user attributes. These fields override FileBrowser defaults and allow full customization of the authenticated user. + +1. Permissions +``` +user.perm.admin=true +user.perm.execute=true +user.perm.create=true +user.perm.rename=true +user.perm.modify=true +user.perm.delete=true +user.perm.share=true +user.perm.download=true +``` +> Setting user.perm.admin=true automatically enables all permissions. + +2. User Interface and Behavior +``` +user.locale=es +user.viewMode=list +user.singleClick=true +user.hideDotfiles=false +``` + +3. User Scope +``` +user.scope=/ +``` + ### No Authentication We also provide a no authentication mechanism for users that want to use File Browser privately such in a home network. By setting this authentication method, the user with **id 1** will be used as the default users. Creating more users won't have any effect. From a4289011ef710bb083f76189c9010a77841083a2 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Wed, 4 Feb 2026 22:15:32 +0100 Subject: [PATCH 027/126] docs: fix headers --- www/docs/authentication.md | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/www/docs/authentication.md b/www/docs/authentication.md index 7f2c4b4610..93e81a2f6d 100644 --- a/www/docs/authentication.md +++ b/www/docs/authentication.md @@ -40,7 +40,7 @@ Where `X-My-Header` is the HTTP header provided by your proxy with the username. > > File Browser will blindly trust the provided header. If the proxy can be bypassed, an attacker could simply attach the header and get admin access. -### Hook Authentication +## Hook Authentication The Hook Authentication method in FileBrowser allows developers to delegate user authentication to an external script or program. Instead of validating credentials internally, FileBrowser sends the username and password to a custom command defined by the administrator. This command receives the credentials through environment variables and returns key‑value pairs indicating whether the user should be authenticated, blocked, or passed through. @@ -53,6 +53,7 @@ filebrowser config set --auth.method=hook --auth.command="powershell.exe -File C ``` This is the code for the auth.ps1 script + ```sh param() @@ -95,16 +96,20 @@ if ($users.ContainsKey($username) -and $users[$username] -eq $password) { } ``` -##### Hook Output Format +### Hook Output Format + A hook authentication script must output a series of key–value pairs, one per line, using the format: + ``` key=value ``` FileBrowser reads these lines and applies the corresponding authentication action and user configuration. -###### Required Output +### Required Output + The hook must output one of the following actions: + | Key | Description | |--------|------------ | | hook.action=auth | Authenticates the user. FileBrowser will create or update the user if needed. | @@ -114,12 +119,14 @@ The hook must output one of the following actions: For most custom authentication flows, auth or block are used. Example of a successful authentication: + ```sh hook.action=auth ``` -###### Optional User Fields -When hook.action=auth is returned, the hook may also define additional user attributes. These fields override FileBrowser defaults and allow full customization of the authenticated user. +#### Optional User Fields + +When `hook.action=auth` is returned, the hook may also define additional user attributes. These fields override FileBrowser defaults and allow full customization of the authenticated user. 1. Permissions ``` @@ -147,7 +154,7 @@ user.hideDotfiles=false user.scope=/ ``` -### No Authentication +## No Authentication We also provide a no authentication mechanism for users that want to use File Browser privately such in a home network. By setting this authentication method, the user with **id 1** will be used as the default users. Creating more users won't have any effect. From 099dfb0ae8a728f2a085ffb5b7f341332f127d16 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Wed, 4 Feb 2026 22:16:25 +0100 Subject: [PATCH 028/126] docs: update headers --- www/docs/authentication.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/www/docs/authentication.md b/www/docs/authentication.md index 93e81a2f6d..75270f8cc7 100644 --- a/www/docs/authentication.md +++ b/www/docs/authentication.md @@ -106,7 +106,7 @@ key=value FileBrowser reads these lines and applies the corresponding authentication action and user configuration. -### Required Output +#### Required Fields The hook must output one of the following actions: From 2957b4605b58cc4ab49393bcab0d4f87fb587ec7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 8 Feb 2026 07:47:22 +0100 Subject: [PATCH 029/126] chore(deps): update all non-major dependencies (#5747) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- frontend/package.json | 2 +- frontend/pnpm-lock.yaml | 187 ++++++++++++++++++++++------------------ 2 files changed, 106 insertions(+), 83 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 68a41373b7..fa18306b59 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -71,5 +71,5 @@ "vite-plugin-compression2": "^2.3.1", "vue-tsc": "^3.1.3" }, - "packageManager": "pnpm@10.28.2+sha512.41872f037ad22f7348e3b1debbaf7e867cfd448f2726d9cf74c08f19507c31d2c8e7a11525b983febc2df640b5438dee6023ebb1f84ed43cc2d654d2bc326264" + "packageManager": "pnpm@10.29.1+sha512.48dae233635a645768a3028d19545cacc1688639eeb1f3734e42d6d6b971afbf22aa1ac9af52a173d9c3a20c15857cfa400f19994d79a2f626fcc73fccda9bbc" } diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index d84b3fc7c5..c8e72bcc23 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -58,7 +58,7 @@ importers: version: 7.1.0 qrcode.vue: specifier: ^3.6.0 - version: 3.7.1(vue@3.5.27(typescript@5.9.3)) + version: 3.8.0(vue@3.5.27(typescript@5.9.3)) tus-js-client: specifier: ^4.3.1 version: 4.3.1 @@ -67,13 +67,13 @@ importers: version: 3.1.0 video.js: specifier: ^8.23.3 - version: 8.23.4 + version: 8.23.6 videojs-hotkeys: specifier: ^0.2.28 version: 0.2.30 videojs-mobile-ui: specifier: ^1.1.1 - version: 1.1.4(video.js@8.23.4) + version: 1.2.1(video.js@8.23.6) vue: specifier: ^3.5.17 version: 3.5.27(typescript@5.9.3) @@ -91,7 +91,7 @@ importers: version: 1.3.4 vue-router: specifier: ^5.0.0 - version: 5.0.1(@vue/compiler-sfc@3.5.27)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.27(typescript@5.9.3)))(vue@3.5.27(typescript@5.9.3)) + version: 5.0.2(@vue/compiler-sfc@3.5.27)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.27(typescript@5.9.3)))(vue@3.5.27(typescript@5.9.3)) vue-toastification: specifier: ^2.0.0-rc.5 version: 2.0.0-rc.5(vue@3.5.27(typescript@5.9.3)) @@ -107,16 +107,16 @@ importers: version: 4.17.12 '@types/node': specifier: ^24.10.1 - version: 24.10.9 + version: 24.10.12 '@typescript-eslint/eslint-plugin': specifier: ^8.37.0 version: 8.54.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) '@vitejs/plugin-legacy': specifier: ^7.2.1 - version: 7.2.1(terser@5.46.0)(vite@7.3.1(@types/node@24.10.9)(terser@5.46.0)(yaml@2.8.2)) + version: 7.2.1(terser@5.46.0)(vite@7.3.1(@types/node@24.10.12)(terser@5.46.0)(yaml@2.8.2)) '@vitejs/plugin-vue': specifier: ^6.0.1 - version: 6.0.3(vite@7.3.1(@types/node@24.10.9)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.27(typescript@5.9.3)) + version: 6.0.4(vite@7.3.1(@types/node@24.10.12)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.27(typescript@5.9.3)) '@vue/eslint-config-prettier': specifier: ^10.2.0 version: 10.2.0(eslint@9.39.2)(prettier@3.8.1) @@ -155,7 +155,7 @@ importers: version: 5.9.3 vite: specifier: ^7.2.2 - version: 7.3.1(@types/node@24.10.9)(terser@5.46.0)(yaml@2.8.2) + version: 7.3.1(@types/node@24.10.12)(terser@5.46.0)(yaml@2.8.2) vite-plugin-compression2: specifier: ^2.3.1 version: 2.4.0(rollup@4.55.1) @@ -181,8 +181,8 @@ packages: resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} engines: {node: '>=6.9.0'} - '@babel/generator@7.29.0': - resolution: {integrity: sha512-vSH118/wwM/pLR38g/Sgk05sNtro6TlTJKuiMXDaZqPUfjTFcudpCOt00IhOfj+1BFAX+UFAlzCU+6WXr3GLFQ==} + '@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': @@ -658,8 +658,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 - '@babel/runtime@7.28.4': - resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} + '@babel/runtime@7.28.6': + resolution: {integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==} engines: {node: '>=6.9.0'} '@babel/template@7.27.2': @@ -1153,8 +1153,8 @@ packages: resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - '@rolldown/pluginutils@1.0.0-beta.53': - resolution: {integrity: sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ==} + '@rolldown/pluginutils@1.0.0-rc.2': + resolution: {integrity: sha512-izyXV/v+cHiRfozX62W9htOAvwMo4/bXKDrQ+vom1L1qRuexPock/7VZDAhnpHCLNejd3NJ6hiab+tO0D44Rgw==} '@rollup/pluginutils@5.3.0': resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} @@ -1322,8 +1322,8 @@ packages: '@types/lodash@4.17.13': resolution: {integrity: sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==} - '@types/node@24.10.9': - resolution: {integrity: sha512-ne4A0IpG3+2ETuREInjPNhUGis1SFjv1d5asp8MzEAGtOZeTeHVDOYqOgqfhvseqg/iXty2hjBf1zAOb7RNiNw==} + '@types/node@24.10.12': + resolution: {integrity: sha512-68e+T28EbdmLSTkPgs3+UacC6rzmqrcWFPQs1C8mwJhI/r5Uxr0yEuQotczNRROd1gq30NGxee+fo0rSIxpyAw==} '@types/trusted-types@2.0.7': resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} @@ -1472,8 +1472,8 @@ packages: resolution: {integrity: sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@videojs/http-streaming@3.17.2': - resolution: {integrity: sha512-VBQ3W4wnKnVKb/limLdtSD2rAd5cmHN70xoMf4OmuDd0t2kfJX04G+sfw6u2j8oOm2BXYM9E1f4acHruqKnM1g==} + '@videojs/http-streaming@3.17.3': + resolution: {integrity: sha512-6AteOnlpiY8ljijyCB+JszDCIVl9UcSgIiM+CfpBe3Yk2VESjKw9Jq8AkOyZyfLI4U5kDR9izHcGi6ho517n8g==} engines: {node: '>=8', npm: '>=5'} peerDependencies: video.js: ^8.19.0 @@ -1492,8 +1492,8 @@ packages: terser: ^5.16.0 vite: ^7.0.0 - '@vitejs/plugin-vue@6.0.3': - resolution: {integrity: sha512-TlGPkLFLVOY3T7fZrwdvKpjprR3s4fxRln0ORDo1VQ7HHyxJwTlrjKU3kpVWTlaAjIEuCTokmjkZnr8Tpc925w==} + '@vitejs/plugin-vue@6.0.4': + resolution: {integrity: sha512-uM5iXipgYIn13UUQCZNdWkYk+sysBeA97d5mHsAoAt1u/wpN3+zxOmsVJWosuzX+IMGRzeYUNytztrYznboIkQ==} engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 @@ -1535,20 +1535,20 @@ packages: '@vue/devtools-api@7.7.8': resolution: {integrity: sha512-BtFcAmDbtXGwurWUFf8ogIbgZyR+rcVES1TSNEI8Em80fD8Anu+qTRN1Fc3J6vdRHlVM3fzPV1qIo+B4AiqGzw==} - '@vue/devtools-api@8.0.5': - resolution: {integrity: sha512-DgVcW8H/Nral7LgZEecYFFYXnAvGuN9C3L3DtWekAncFBedBczpNW8iHKExfaM559Zm8wQWrwtYZ9lXthEHtDw==} + '@vue/devtools-api@8.0.6': + resolution: {integrity: sha512-+lGBI+WTvJmnU2FZqHhEB8J1DXcvNlDeEalz77iYgOdY1jTj1ipSBaKj3sRhYcy+kqA8v/BSuvOz1XJucfQmUA==} '@vue/devtools-kit@7.7.8': resolution: {integrity: sha512-4Y8op+AoxOJhB9fpcEF6d5vcJXWKgHxC3B0ytUB8zz15KbP9g9WgVzral05xluxi2fOeAy6t140rdQ943GcLRQ==} - '@vue/devtools-kit@8.0.5': - resolution: {integrity: sha512-q2VV6x1U3KJMTQPUlRMyWEKVbcHuxhqJdSr6Jtjz5uAThAIrfJ6WVZdGZm5cuO63ZnSUz0RCsVwiUUb0mDV0Yg==} + '@vue/devtools-kit@8.0.6': + resolution: {integrity: sha512-9zXZPTJW72OteDXeSa5RVML3zWDCRcO5t77aJqSs228mdopYj5AiTpihozbsfFJ0IodfNs7pSgOGO3qfCuxDtw==} '@vue/devtools-shared@7.7.8': resolution: {integrity: sha512-XHpO3jC5nOgYr40M9p8Z4mmKfTvUxKyRcUnpBAYg11pE78eaRFBKb0kG5yKLroMuJeeNH9LWmKp2zMU5LUc7CA==} - '@vue/devtools-shared@8.0.5': - resolution: {integrity: sha512-bRLn6/spxpmgLk+iwOrR29KrYnJjG9DGpHGkDFG82UM21ZpJ39ztUT9OXX3g+usW7/b2z+h46I9ZiYyB07XMXg==} + '@vue/devtools-shared@8.0.6': + resolution: {integrity: sha512-Pp1JylTqlgMJvxW6MGyfTF8vGvlBSCAvMFaDCYa82Mgw7TT5eE5kkHgDvmOGHWeJE4zIDfCpCxHapsK2LtIAJg==} '@vue/eslint-config-prettier@10.2.0': resolution: {integrity: sha512-GL3YBLwv/+b86yHcNNfPJxOTtVFJ4Mbc9UU3zR+KVoG7SwGTjPT+32fXamscNumElhcpXW3mT0DgzS9w32S7Bw==} @@ -1735,6 +1735,9 @@ packages: birpc@2.8.0: resolution: {integrity: sha512-Bz2a4qD/5GRhiHSwj30c/8kC8QGj12nNDwz3D4ErQ4Xhy35dsSDvF+RA/tWpjyU0pdGtSDiEk6B5fBGE1qNVhw==} + 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==} @@ -1805,8 +1808,8 @@ packages: confbox@0.1.8: resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} - confbox@0.2.2: - resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} + 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==} @@ -2472,8 +2475,8 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - qrcode.vue@3.7.1: - resolution: {integrity: sha512-80ZDvXaajD7TS9l5ZZpuFH+i1vp/T1k7mPpJEz0MrOAoElauKC1zGIB4FJSGzsiTtl2uUJBrhRzXyr4PAKLLBg==} + qrcode.vue@3.8.0: + resolution: {integrity: sha512-+XKbSKvQu158zlHsJm+HObGUQM3Q+9Oq6yb2op/6lMM2gwOiiG9uIhujvrSV5UoTjrzR0BcNxCdW2kk7KE4NEg==} peerDependencies: vue: ^3.0.0 @@ -2600,6 +2603,10 @@ packages: resolution: {integrity: sha512-zWPTX96LVsA/eVYnqOM2+ofcdPqdS1dAF1LN4TS2/MWuUpfitd9ctTa87wt4xrYnZnkLtS69xpBdSxVBP5Rm6w==} engines: {node: '>=16'} + superjson@2.2.6: + resolution: {integrity: sha512-H+ue8Zo4vJmV2nRjpx86P35lzwDT3nItnIsocgumgr0hHMQ+ZGq5vrERg9kJBo5AWGmxZDhzDo+WVIJqkB0cGA==} + engines: {node: '>=16'} + supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -2693,6 +2700,10 @@ packages: 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.1.4: resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==} hasBin: true @@ -2717,8 +2728,8 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - video.js@8.23.4: - resolution: {integrity: sha512-qI0VTlYmKzEqRsz1Nppdfcaww4RSxZAq77z2oNSl3cNg2h6do5C8Ffl0KqWQ1OpD8desWXsCrde7tKJ9gGTEyQ==} + video.js@8.23.6: + resolution: {integrity: sha512-qjS3HTDo7iapedJuso62scA303i+6CaCUnwyRr8GYd/BYAp7XGb7InUMw2Eu6zrN6IWooPOb78NzyMyjRbIN+Q==} videojs-contrib-quality-levels@4.1.0: resolution: {integrity: sha512-TfrXJJg1Bv4t6TOCMEVMwF/CoS8iENYsWNKip8zfhB5kTcegiFYezEA0eHAJPU64ZC8NQbxQgOwAsYU8VXbOWA==} @@ -2732,8 +2743,8 @@ packages: videojs-hotkeys@0.2.30: resolution: {integrity: sha512-G8kEQZPapoWDoEajh2Nroy4bCN1qVEul5AuzZqBS7ZCG45K7hqTYKgf1+fmYvG8m8u84sZmVMUvSWZBjaFW66Q==} - videojs-mobile-ui@1.1.4: - resolution: {integrity: sha512-XeB3IpIiYrLcjLnC8ADqAFCADUlvbC9L+ri3ofhEycwfigBwFi7kn/UvPg6FJEuY0e85p8jrAuJCh4WIbCjWsg==} + videojs-mobile-ui@1.2.1: + resolution: {integrity: sha512-XlATK+ptFbynuZLFkTE1lJBXD21h4yFD4YFxrBweCnmbdja0+aHJduGZf0i3b6I/KquRX7S+gra2S5ZCdgE74A==} engines: {node: '>=14', npm: '>=6'} peerDependencies: video.js: ^8 @@ -2813,10 +2824,10 @@ packages: vue-reader@1.3.4: resolution: {integrity: sha512-QYTX9hlrV71gL/1vMejcBLLS9Ool29XMZcLQwvL0Ep1F//o0ymzYbKX2Lre+4BUBkVq49/GmmGCmAJACsJL9tw==} - vue-router@5.0.1: - resolution: {integrity: sha512-t+lFugGXMdaq8lbn+vXG4j2H9UlsP205Tszz1wcDk9FyxqItBzcdJQ06IhpkQ2mHOfiTOHZeBshkskzPzHJkCw==} + vue-router@5.0.2: + resolution: {integrity: sha512-YFhwaE5c5JcJpNB1arpkl4/GnO32wiUWRB+OEj1T0DlDxEZoOfbltl2xEwktNU/9o1sGcGburIXSpbLpPFe/6w==} peerDependencies: - '@pinia/colada': ^0.18.1 + '@pinia/colada': '>=0.21.2' '@vue/compiler-sfc': ^3.5.17 pinia: ^3.0.4 vue: ^3.5.0 @@ -2917,7 +2928,7 @@ snapshots: '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 - '@babel/generator@7.29.0': + '@babel/generator@7.29.1': dependencies: '@babel/parser': 7.29.0 '@babel/types': 7.29.0 @@ -3526,7 +3537,7 @@ snapshots: '@babel/types': 7.28.6 esutils: 2.0.3 - '@babel/runtime@7.28.4': {} + '@babel/runtime@7.28.6': {} '@babel/template@7.27.2': dependencies: @@ -3882,7 +3893,7 @@ snapshots: '@pkgr/core@0.2.9': {} - '@rolldown/pluginutils@1.0.0-beta.53': {} + '@rolldown/pluginutils@1.0.0-rc.2': {} '@rollup/pluginutils@5.3.0(rollup@4.55.1)': dependencies: @@ -3983,7 +3994,7 @@ snapshots: '@types/lodash@4.17.13': {} - '@types/node@24.10.9': + '@types/node@24.10.12': dependencies: undici-types: 7.16.0 @@ -4204,29 +4215,29 @@ snapshots: '@typescript-eslint/types': 8.54.0 eslint-visitor-keys: 4.2.1 - '@videojs/http-streaming@3.17.2(video.js@8.23.4)': + '@videojs/http-streaming@3.17.3(video.js@8.23.6)': dependencies: - '@babel/runtime': 7.28.4 + '@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.4 + video.js: 8.23.6 '@videojs/vhs-utils@4.1.1': dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 global: 4.4.0 '@videojs/xhr@2.7.0': dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 global: 4.4.0 is-function: 1.0.2 - '@vitejs/plugin-legacy@7.2.1(terser@5.46.0)(vite@7.3.1(@types/node@24.10.9)(terser@5.46.0)(yaml@2.8.2))': + '@vitejs/plugin-legacy@7.2.1(terser@5.46.0)(vite@7.3.1(@types/node@24.10.12)(terser@5.46.0)(yaml@2.8.2))': dependencies: '@babel/core': 7.28.5 '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.28.5) @@ -4241,14 +4252,14 @@ snapshots: regenerator-runtime: 0.14.1 systemjs: 6.15.1 terser: 5.46.0 - vite: 7.3.1(@types/node@24.10.9)(terser@5.46.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@24.10.12)(terser@5.46.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@6.0.3(vite@7.3.1(@types/node@24.10.9)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.27(typescript@5.9.3))': + '@vitejs/plugin-vue@6.0.4(vite@7.3.1(@types/node@24.10.12)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.27(typescript@5.9.3))': dependencies: - '@rolldown/pluginutils': 1.0.0-beta.53 - vite: 7.3.1(@types/node@24.10.9)(terser@5.46.0)(yaml@2.8.2) + '@rolldown/pluginutils': 1.0.0-rc.2 + vite: 7.3.1(@types/node@24.10.12)(terser@5.46.0)(yaml@2.8.2) vue: 3.5.27(typescript@5.9.3) '@volar/language-core@2.4.27': @@ -4309,9 +4320,9 @@ snapshots: dependencies: '@vue/devtools-kit': 7.7.8 - '@vue/devtools-api@8.0.5': + '@vue/devtools-api@8.0.6': dependencies: - '@vue/devtools-kit': 8.0.5 + '@vue/devtools-kit': 8.0.6 '@vue/devtools-kit@7.7.8': dependencies: @@ -4323,21 +4334,21 @@ snapshots: speakingurl: 14.0.1 superjson: 2.2.5 - '@vue/devtools-kit@8.0.5': + '@vue/devtools-kit@8.0.6': dependencies: - '@vue/devtools-shared': 8.0.5 - birpc: 2.8.0 + '@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.5 + superjson: 2.2.6 '@vue/devtools-shared@7.7.8': dependencies: rfdc: 1.4.1 - '@vue/devtools-shared@8.0.5': + '@vue/devtools-shared@8.0.6': dependencies: rfdc: 1.4.1 @@ -4438,7 +4449,7 @@ snapshots: aes-decrypter@4.0.2: dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 '@videojs/vhs-utils': 4.1.1 global: 4.4.0 pkcs7: 1.0.4 @@ -4460,12 +4471,12 @@ snapshots: ast-kit@2.2.0: dependencies: - '@babel/parser': 7.28.6 + '@babel/parser': 7.29.0 pathe: 2.0.3 ast-walker-scope@0.8.3: dependencies: - '@babel/parser': 7.28.6 + '@babel/parser': 7.29.0 ast-kit: 2.2.0 autoprefixer@10.4.24(postcss@8.5.6): @@ -4509,6 +4520,8 @@ snapshots: birpc@2.8.0: {} + birpc@2.9.0: {} + boolbase@1.0.0: {} brace-expansion@1.1.12: @@ -4579,7 +4592,7 @@ snapshots: confbox@0.1.8: {} - confbox@0.2.2: {} + confbox@0.2.4: {} convert-source-map@2.0.0: {} @@ -5080,7 +5093,7 @@ snapshots: m3u8-parser@7.2.0: dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 '@videojs/vhs-utils': 4.1.1 global: 4.4.0 @@ -5130,7 +5143,7 @@ snapshots: mpd-parser@1.3.1: dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 '@videojs/vhs-utils': 4.1.1 '@xmldom/xmldom': 0.8.11 global: 4.4.0 @@ -5141,7 +5154,7 @@ snapshots: mux.js@7.1.0: dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 global: 4.4.0 nanoid@3.3.11: {} @@ -5212,7 +5225,7 @@ snapshots: pkcs7@1.0.4: dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 pkg-types@1.3.1: dependencies: @@ -5222,7 +5235,7 @@ snapshots: pkg-types@2.3.0: dependencies: - confbox: 0.2.2 + confbox: 0.2.4 exsolve: 1.0.8 pathe: 2.0.3 @@ -5261,7 +5274,7 @@ snapshots: punycode@2.3.1: {} - qrcode.vue@3.7.1(vue@3.5.27(typescript@5.9.3)): + qrcode.vue@3.8.0(vue@3.5.27(typescript@5.9.3)): dependencies: vue: 3.5.27(typescript@5.9.3) @@ -5396,6 +5409,10 @@ snapshots: dependencies: copy-anything: 4.0.5 + superjson@2.2.6: + dependencies: + copy-anything: 4.0.5 + supports-color@7.2.0: dependencies: has-flag: 4.0.0 @@ -5488,6 +5505,12 @@ snapshots: 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.1.4(browserslist@4.28.0): dependencies: browserslist: 4.28.0 @@ -5515,10 +5538,10 @@ snapshots: util-deprecate@1.0.2: {} - video.js@8.23.4: + video.js@8.23.6: dependencies: - '@babel/runtime': 7.28.4 - '@videojs/http-streaming': 3.17.2(video.js@8.23.4) + '@babel/runtime': 7.28.6 + '@videojs/http-streaming': 3.17.3(video.js@8.23.6) '@videojs/vhs-utils': 4.1.1 '@videojs/xhr': 2.7.0 aes-decrypter: 4.0.2 @@ -5526,23 +5549,23 @@ snapshots: 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.4) + videojs-contrib-quality-levels: 4.1.0(video.js@8.23.6) videojs-font: 4.2.0 videojs-vtt.js: 0.15.5 - videojs-contrib-quality-levels@4.1.0(video.js@8.23.4): + videojs-contrib-quality-levels@4.1.0(video.js@8.23.6): dependencies: global: 4.4.0 - video.js: 8.23.4 + video.js: 8.23.6 videojs-font@4.2.0: {} videojs-hotkeys@0.2.30: {} - videojs-mobile-ui@1.1.4(video.js@8.23.4): + videojs-mobile-ui@1.2.1(video.js@8.23.6): dependencies: global: 4.4.0 - video.js: 8.23.4 + video.js: 8.23.6 videojs-vtt.js@0.15.5: dependencies: @@ -5555,7 +5578,7 @@ snapshots: transitivePeerDependencies: - rollup - vite@7.3.1(@types/node@24.10.9)(terser@5.46.0)(yaml@2.8.2): + vite@7.3.1(@types/node@24.10.12)(terser@5.46.0)(yaml@2.8.2): dependencies: esbuild: 0.27.2 fdir: 6.5.0(picomatch@4.0.3) @@ -5564,7 +5587,7 @@ snapshots: rollup: 4.55.1 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.12 fsevents: 2.3.3 terser: 5.46.0 yaml: 2.8.2 @@ -5603,11 +5626,11 @@ snapshots: dependencies: epubjs: 0.3.93 - vue-router@5.0.1(@vue/compiler-sfc@3.5.27)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.27(typescript@5.9.3)))(vue@3.5.27(typescript@5.9.3)): + vue-router@5.0.2(@vue/compiler-sfc@3.5.27)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.27(typescript@5.9.3)))(vue@3.5.27(typescript@5.9.3)): dependencies: - '@babel/generator': 7.29.0 + '@babel/generator': 7.29.1 '@vue-macros/common': 3.1.2(vue@3.5.27(typescript@5.9.3)) - '@vue/devtools-api': 8.0.5 + '@vue/devtools-api': 8.0.6 ast-walker-scope: 0.8.3 chokidar: 5.0.0 json5: 2.2.3 @@ -5619,7 +5642,7 @@ snapshots: picomatch: 4.0.3 scule: 1.3.0 tinyglobby: 0.2.15 - unplugin: 2.3.11 + unplugin: 3.0.0 unplugin-utils: 0.3.1 vue: 3.5.27(typescript@5.9.3) yaml: 2.8.2 From ff2f00498cff151e2fb1f5f0b16963bf33c3d6d4 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sun, 8 Feb 2026 07:50:40 +0100 Subject: [PATCH 030/126] fix: normalize fields capitalization --- http/users.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/http/users.go b/http/users.go index 5604dc38f8..be1edf916c 100644 --- a/http/users.go +++ b/http/users.go @@ -7,6 +7,7 @@ import ( "net/http" "sort" "strconv" + "strings" "github.com/gorilla/mux" "golang.org/x/text/cases" @@ -190,7 +191,7 @@ var userPutHandler = withSelfOrAdmin(func(w http.ResponseWriter, r *http.Request } for _, field := range req.Which { - if _, ok := sensibleFields[field]; ok { + if _, ok := sensibleFields[strings.ToLower(field)]; ok { if !users.CheckPwd(req.CurrentPassword, d.user.Password) { return http.StatusBadRequest, fberrors.ErrCurrentPasswordIncorrect } From 489af403a19057f6b6b4b1dc0e48cbb26a202ef9 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sun, 8 Feb 2026 08:02:03 +0100 Subject: [PATCH 031/126] fix: remove skip clean --- http/http.go | 5 ----- 1 file changed, 5 deletions(-) diff --git a/http/http.go b/http/http.go index ec8e52c156..0ddca9692c 100644 --- a/http/http.go +++ b/http/http.go @@ -35,11 +35,6 @@ func NewHandler( }) index, static := getStaticHandlers(store, server, assetsFs) - // NOTE: This fixes the issue where it would redirect if people did not put a - // trailing slash in the end. I hate this decision since this allows some awful - // URLs https://www.gorillatoolkit.org/pkg/mux#Router.SkipClean - r = r.SkipClean(true) - monkey := func(fn handleFunc, prefix string) http.Handler { return handle(fn, prefix, store, server) } From e193d43278e79549950d7f0e69af50a38c77f855 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sun, 8 Feb 2026 08:02:48 +0100 Subject: [PATCH 032/126] chore(release): 2.57.1 --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 056654f277..3f9a828616 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,14 @@ All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines. +## [2.57.1](https://github.com/filebrowser/filebrowser/compare/v2.57.0...v2.57.1) (2026-02-08) + + +### Bug Fixes + +* normalize fields capitalization ([ff2f004](https://github.com/filebrowser/filebrowser/commit/ff2f00498cff151e2fb1f5f0b16963bf33c3d6d4)) +* remove skip clean ([489af40](https://github.com/filebrowser/filebrowser/commit/489af403a19057f6b6b4b1dc0e48cbb26a202ef9)) + ## [2.57.0](https://github.com/filebrowser/filebrowser/compare/v2.56.0...v2.57.0) (2026-02-01) From 6a76dfeba9254a938e320928c67d110f73f83715 Mon Sep 17 00:00:00 2001 From: Nian <268078545@qq.com> Date: Sat, 14 Feb 2026 14:30:10 +0800 Subject: [PATCH 033/126] fix: respect Accept-Encoding for pre-compressed JS (#5750) --- http/static.go | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/http/static.go b/http/static.go index d996cc07b7..25f8539ddf 100644 --- a/http/static.go +++ b/http/static.go @@ -5,6 +5,8 @@ import ( "errors" "fmt" "io/fs" + "io" + "compress/gzip" "log" "net/http" "os" @@ -144,16 +146,32 @@ func getStaticHandlers(store *storage.Storage, server *settings.Server, assetsFs return 0, nil } - fileContents, err := fs.ReadFile(assetsFs, r.URL.Path+".gz") + f, err := assetsFs.Open(r.URL.Path + ".gz") if err != nil { return http.StatusNotFound, err } + defer f.Close() - w.Header().Set("Content-Encoding", "gzip") - w.Header().Set("Content-Type", "application/javascript; charset=utf-8") + acceptEncoding := r.Header.Get("Accept-Encoding") + if strings.Contains(acceptEncoding, "gzip") { + w.Header().Set("Content-Encoding", "gzip") + w.Header().Set("Content-Type", "application/javascript; charset=utf-8") - if _, err := w.Write(fileContents); err != nil { - return http.StatusInternalServerError, err + if _, err := io.Copy(w, f); err != nil { + return http.StatusInternalServerError, err + } + } else { + gzReader, err := gzip.NewReader(f) + if err != nil { + return http.StatusInternalServerError, err + } + defer gzReader.Close() + + w.Header().Set("Content-Type", "application/javascript; charset=utf-8") + + if _, err := io.Copy(w, gzReader); err != nil { + return http.StatusInternalServerError, err + } } return 0, nil From c94870fcfe1b4acb2db9ab897b9f7d35e3b75770 Mon Sep 17 00:00:00 2001 From: "transifex-integration[bot]" <43880903+transifex-integration[bot]@users.noreply.github.com> Date: Sat, 14 Feb 2026 07:30:21 +0100 Subject: [PATCH 034/126] feat: Updates for project File Browser (#5749) Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com> --- frontend/src/i18n/fr.json | 2 +- frontend/src/i18n/nl.json | 288 +++++++++++++++++++++++++++++++++++ frontend/src/i18n/zh-cn.json | 2 +- 3 files changed, 290 insertions(+), 2 deletions(-) create mode 100644 frontend/src/i18n/nl.json diff --git a/frontend/src/i18n/fr.json b/frontend/src/i18n/fr.json index 798cee5061..fb2cd2c6aa 100644 --- a/frontend/src/i18n/fr.json +++ b/frontend/src/i18n/fr.json @@ -232,7 +232,7 @@ "permissions": "Permissions", "permissionsHelp": "Vous pouvez définir l'utilisateur·ice comme étant administrateur·ice ou encore choisir les permissions individuellement. Si vous sélectionnez \"Administrateur·ice\", toutes les autres options seront automatiquement activées. La gestion des utilisateur·ices est un privilège que seul l'administrateur·ice possède.\n", "profileSettings": "Paramètres du profil", - "redirectAfterCopyMove": "Redirect to destination after copy/move", + "redirectAfterCopyMove": "Rediriger vers la destination après une copie/déplacement", "ruleExample1": "Bloque l'accès à tous les fichiers commençant par un point (comme par exemple .git, .gitignore) dans tous les dossiers.\n", "ruleExample2": "Bloque l'accès au fichier nommé \"Caddyfile\" à la racine du dossier utilisateur·ice.", "rules": "Règles", diff --git a/frontend/src/i18n/nl.json b/frontend/src/i18n/nl.json new file mode 100644 index 0000000000..5c840b301f --- /dev/null +++ b/frontend/src/i18n/nl.json @@ -0,0 +1,288 @@ +{ + "buttons": { + "cancel": "Annuleren", + "clear": "Wissen", + "close": "Sluiten", + "continue": "Doorgaan", + "copy": "Kopiëren", + "copyFile": "Bestand kopiëren", + "copyToClipboard": "Kopiëren naar klembord", + "copyDownloadLinkToClipboard": "Download-link kopiëren naar klembord", + "create": "Aanmaken", + "delete": "Verwijderen", + "download": "Downloaden", + "file": "Bestand", + "folder": "Map", + "fullScreen": "Volledig scherm wisselen", + "hideDotfiles": "dot-bestanden verbergen", + "info": "Info", + "more": "Meer", + "move": "Verplaatsen", + "moveFile": "Bestand verplaatsen", + "new": "Nieuw", + "next": "Volgende", + "ok": "OK", + "permalink": "Permanente link verkrijgen", + "previous": "Vorige", + "preview": "Voorbeeld", + "publish": "Publiceren", + "rename": "Hernoemen", + "replace": "Vervangen", + "reportIssue": "Probleem melden", + "save": "Opslaan", + "schedule": "Plannen", + "search": "Zoeken", + "select": "Selecteren", + "selectMultiple": "Meervoudige selectie", + "share": "Delen", + "shell": "Opdrachtvenster wisselen", + "submit": "Indienen", + "switchView": "Weergave wisselen", + "toggleSidebar": "Zijbalk wisselen", + "update": "Bijwerken", + "upload": "Uploaden", + "openFile": "Bestand openen", + "discardChanges": "Weggooien", + "stopSearch": "Stoppen met zoeken", + "saveChanges": "Wijzigingen opslaan", + "editAsText": "Als tekst bewerken", + "increaseFontSize": "Lettertype vergroten", + "decreaseFontSize": "Lettertype verkleinen" + }, + "download": { + "downloadFile": "Bestand downloaden", + "downloadFolder": "Map downloaden", + "downloadSelected": "Selectie downloaden" + }, + "upload": { + "abortUpload": "Weet u zeker dat u wilt afbreken?" + }, + "errors": { + "forbidden": "U hebt hier geen toegangsrechten.", + "internal": "Er ging iets mis.", + "notFound": "Deze locatie kan niet worden bereikt.", + "connection": "De server kan niet worden bereikt." + }, + "files": { + "body": "Inoud", + "closePreview": "Voorbeeld sluiten", + "files": "Bestanden", + "folders": "Mappen", + "home": "Thuis", + "lastModified": "Laatst aangepast", + "loading": "Laden...", + "lonely": "Het is hier wat leeg...", + "metadata": "Metagegevens", + "multipleSelectionEnabled": "Meervoudige selectie ingeschakeld", + "name": "Naam", + "size": "Grootte", + "sortByLastModified": "Sorteren op laatst aangepast", + "sortByName": "Sorteren op naam", + "sortBySize": "Sorteren op grootte", + "noPreview": "Geen voorbeeld beschikbaar voor dit bestand.", + "csvTooLarge": "CSV-bestand is te groot voor voorbeeld (>5MB). Download het om het te bekijken.", + "csvLoadFailed": "Laden van CSV-bestand is mislukt.", + "showingRows": "{count} rij(en) weergeven", + "columnSeparator": "Kolom-scheidingsteken", + "csvSeparators": { + "comma": "Komma (,)", + "semicolon": "Puntkomma (;)", + "both": "Beide (,) en (;)" + } + }, + "help": { + "click": "selecteer bestand of map", + "ctrl": { + "click": "selecteer meerdere bestanden of mappen", + "f": "open zoekopdracht", + "s": "sla een bestand op of download de huidige map" + }, + "del": "verwijder geselecteerde items", + "doubleClick": "open een bestand of map", + "esc": "wis de selectie en/of sluit het opdrachtvenster", + "f1": "deze informatie", + "f2": "hernoem bestand", + "help": "Hulp" + }, + "login": { + "createAnAccount": "Account aanmaken", + "loginInstead": "Heeft al een account", + "password": "Wachtwoord", + "passwordConfirm": "Wachtwoord bevestigen", + "passwordsDontMatch": "Wachtwoorden komen niet overeen", + "signup": "Registeren", + "submit": "Inloggen", + "username": "Gebruikersnaam", + "usernameTaken": "Gebruikersnaam reeds in gebruik", + "wrongCredentials": "Inloggegevens zijn incorrect", + "passwordTooShort": "Wachtwoord moet minstens {min} tekens bevatten", + "logout_reasons": { + "inactivity": "U bent uitgelogd vanwege inactiviteit." + } + }, + "permanent": "Permanent", + "prompts": { + "copy": "Kopiëren", + "copyMessage": "Kies een locatie om uw bestanden te kopiëren:", + "currentlyNavigating": "Navigeren op:", + "deleteMessageMultiple": "Weet u zeker dat u {count} bestand(en) wilt verwijderen?", + "deleteMessageSingle": "Weet u zeker dat u dit bestand/deze map wilt verwijderen?", + "deleteMessageShare": "Weet u zeker dat u deze gedeelde map ({path}) wilt verwijderen?", + "deleteUser": "Weet u zeker dat u deze gebruiker wilt verwijderen?", + "deleteTitle": "Bestanden verwijderen", + "displayName": "Weergavenaam:", + "download": "Bestanden downloaden", + "downloadMessage": "Kies het formaat dat u wilt downloaden.", + "error": "Er ging iets fout", + "fileInfo": "Bestandsinformatie", + "filesSelected": "{count} geselecteerde bestanden.", + "lastModified": "Laatst aangepast", + "move": "Verplaatsen", + "moveMessage": "Kies een nieuw Thuis voor uw bestand(en)/map(pen):", + "newArchetype": "Maak een nieuw bericht op basis van een archetype. Uw bestand wordt aangemaakt in de inhoudsmap.", + "newDir": "Nieuwe map", + "newDirMessage": "Voer een naam in voor de nieuwe map.", + "newFile": "Nieuw bestand", + "newFileMessage": "Voer een naam in voor het nieuwe bestand.", + "numberDirs": "Aantal mappen", + "numberFiles": "Aantal bestanden", + "rename": "Hernoemen", + "renameMessage": "Voer een nieuwe naam in voor", + "replace": "Vervangen", + "replaceMessage": "Een van de bestanden die u probeert te uploaden, geeft conflicten i.v.m. de naamgeving. Wilt u de bestaande bestanden vervangen?\n", + "schedule": "Plannen", + "scheduleMessage": "Kies een datum en tijd om de publicatie van dit bericht in te plannen.", + "show": "Weergeven", + "size": "Grootte", + "upload": "Uploaden", + "uploadFiles": "{files} bestanden uploaden...", + "uploadMessage": "Kies een optie bij de upload.", + "optionalPassword": "Optioneel wachtwoord", + "resolution": "Resolutie", + "discardEditorChanges": "Weet u zeker dat u de door u aangebrachte wijzigingen wilt weggooien?" + }, + "search": { + "images": "Afbeeldingen", + "music": "Muziek", + "pdf": "PDF", + "pressToSearch": "Druk op enter om te zoeken...", + "search": "Zoeken...", + "typeToSearch": "Typ om te zoeken...", + "types": "Types", + "video": "Video" + }, + "settings": { + "aceEditorTheme": "Ace editor-thema", + "admin": "Admin", + "administrator": "Beheerder", + "allowCommands": "Opdrachten uitvoeren", + "allowEdit": "Bestanden of mappen bewerken, hernoemen of verwijderen", + "allowNew": "Nieuwe bestanden of mappen aanmaken", + "allowPublish": "Nieuwe berichten en pagina's publiceren", + "allowSignup": "Gebruikers toestaan om zich te registreren", + "hideLoginButton": "De inlogknop verbergen van openbare pagina's", + "avoidChanges": "(leeg laten om wijzigingen te voorkomen)", + "branding": "Branding", + "brandingDirectoryPath": "Pad naar map met Branding", + "brandingHelp": "U kunt het uiterlijk van uw File Browser aanpassen door de naam te wijzigen, het logo te vervangen, aangepaste stijlen toe te voegen en zelfs externe links naar GitHub uit te schakelen.\nVoor meer informatie over custom branding, bekijk {0}.", + "changePassword": "Wachtwoord wijzigen", + "commandRunner": "Opdracht uitvoeren", + "commandRunnerHelp": "Hier kunt u opdrachten instellen die worden uitgevoerd in de benoemde gebeurtenissen. Noteer één opdracht per regel. De omgevingsvariabelen {0} en {1} zijn beschikbaar, waarbij {0} relatief is ten opzichte van {1}. Raadpleeg {2} voor meer informatie over deze functie en de beschikbare omgevingsvariabelen.", + "commandsUpdated": "Opdrachten bijgewerkt!", + "createUserDir": "Maak bij het aanmaken van een nieuwe gebruiker automatisch een thuismap aan", + "minimumPasswordLength": "Minimale wachtwoordlengte", + "tusUploads": "Uploads in brokken", + "tusUploadsHelp": "File Browser ondersteunt bestandsuploads in brokken, waardoor efficiënte, betrouwbare, hervatbare bestandsuploads kunnen worden verricht, zelfs over onbetrouwbare netwerken.", + "tusUploadsChunkSize": "Geeft de maximale grootte van een verzoek aan (directe uploads worden gebruikt voor kleinere uploads). U kunt een geheel getal invoeren dat de bytegrootte aangeeft, of een tekenreeks zoals 10MB, 1GB enz.", + "tusUploadsRetryCount": "Aantal nieuwe pogingen om uit te voeren als een deel niet kan worden geüpload.", + "userHomeBasePath": "Basispad voor Thuismappen van de gebruikers", + "userScopeGenerationPlaceholder": "Het bereik wordt automatisch gegenereeerd", + "createUserHomeDirectory": "Thuismap voor de gebruiker aanmaken", + "customStylesheet": "Aangepaste stylesheet", + "defaultUserDescription": "Dit zijn de standaardinstellingen voor nieuwe gebruikers.", + "disableExternalLinks": "Externe links uitschakelen (behalve documentatie)", + "disableUsedDiskPercentage": "Grafiek van gebruikte schijfruimte uitschakelen", + "documentation": "documentatie", + "examples": "Voorbeelden", + "executeOnShell": "Uitvoeren in opdrachtvenster", + "executeOnShellDescription": "File Browser voert de opdrachten standaard uit door het rechtstreeks oproepen van hun hun binaire bestanden. Als u ze in plaats daarvan wilt uitvoeren in een opdrachtvenster (zoals Bash of PowerShell), kunt u dit hier definiëren met de vereiste argumenten en vlaggen. Zo wordt de opdracht die u uitvoert, toegevoegd als een argument. Dit is van toepassing op zowel gebruikersopdrachten als event-hooks.", + "globalRules": "Dit is een algemene reeks toestaan/niet toestaan-regels welke van toepassing zijn op alle gebruikers. U kunt voor elke gebruiker specifieke regels definiëren om deze te overschrijven.", + "globalSettings": "Algemene instellingen", + "hideDotfiles": "dot-bestanden verbergen", + "insertPath": "Pad invoegen", + "insertRegex": "Regex-expressie invoegen", + "instanceName": "Naam van de instantie", + "language": "Taal", + "lockPassword": "Voorkomen dat de gebruiker het wachtwoord wijzigt", + "newPassword": "Uw nieuwe wachtwoord", + "newPasswordConfirm": "Uw nieuwe wachtwoord bevestigen", + "newUser": "Nieuwe gebruiker", + "password": "Wachtwoord", + "passwordUpdated": "Wachtwoord bijgewerkt!", + "path": "Pad", + "perm": { + "create": "Bestanden en mappen aanmaken", + "delete": "Bestanden en mappen verwijderen", + "download": "Downloaden", + "execute": "Opdrachten uitvoeren", + "modify": "Bestanden bewerken", + "rename": "Bestanden of mappen hernoemen of verplaatsen", + "share": "Bestanden delen" + }, + "permissions": "Machtigingen", + "permissionsHelp": " kunt de gebruiker instellen als beheerder of de machtigingen afzonderlijk kiezen. Als u \"Beheerder\" selecteert, worden alle overige opties automatisch ingeschakeld. Het beheer van gebruikers blijft een privilege van een beheerder.\n", + "profileSettings": "Profielinstellingen", + "redirectAfterCopyMove": "Doorverwijzen naar bestemming na kopiëren/verplaatsen", + "ruleExample1": "voorkomt de toegang tot dot-bestanden (zoals .git, .gitignore) in elke map.\n", + "ruleExample2": "blokkeert de toegang tot het bestand met de naam Caddyfile in de hoofdmap van het bereik.", + "rules": "Regels", + "rulesHelp": "Hier kunt u voor deze specifieke gebruiker een reeks toestaan/niet toestaan-regels definiëren. De geblokkeerde bestanden verschijnen niet in de lijsten en zijn niet toegankelijk voor de gebruiker. Regex wordt ondersteund en paden zijn relatief ten opzichte van het bereik van gebruikers.\n", + "scope": "Bereik", + "setDateFormat": "Exacte datumformaat instellen", + "settingsUpdated": "Instellingen bijgewerkt!", + "shareDuration": "Duur van het delen", + "shareManagement": "Beheer van gedeelde mappen en bestanden", + "shareDeleted": "Delen opheffen!", + "singleClick": "Bestanden en mappen met een enkele klik openen", + "themes": { + "default": "Systeem standaard", + "dark": "Donker", + "light": "Licht", + "title": "Thema" + }, + "user": "Gebruiker", + "userCommands": "Opdrachten", + "userCommandsHelp": "Een lijst met beschikbare opdrachten voor de gebruiker gescheiden door spaties. Voorbeeld:\n", + "userCreated": "Gebruiker aangemaakt!", + "userDefaults": "Standaardinstellingen van gebruiker", + "userDeleted": "Gebruiker verwijderd!", + "userManagement": "Gebruikers beheren", + "userUpdated": "Gebruiker bijgewerkt!", + "username": "Gebruikersnaam", + "users": "Gebruikers", + "currentPassword": "Uw huidige wachtwoord" + }, + "sidebar": { + "help": "Hulp", + "hugoNew": "Hugo Nieuw", + "login": "Inloggen", + "logout": "Uitloggen", + "myFiles": "Mijn bestanden", + "newFile": "Nieuw bestand", + "newFolder": "Nieuwe map", + "preview": "Voorbeeld", + "settings": "Instellingen", + "signup": "Registeren", + "siteSettings": "Site-instellingen" + }, + "success": { + "linkCopied": "Link gekopieerd!" + }, + "time": { + "days": "Dagen", + "hours": "Uren", + "minutes": "Minuten", + "seconds": "Seconden", + "unit": "Tijdseenheid" + } +} diff --git a/frontend/src/i18n/zh-cn.json b/frontend/src/i18n/zh-cn.json index 93486c2199..da7e2b2d73 100644 --- a/frontend/src/i18n/zh-cn.json +++ b/frontend/src/i18n/zh-cn.json @@ -232,7 +232,7 @@ "permissions": "权限", "permissionsHelp": "你可以将该用户设置为管理员或单独选择各项权限。如果你选择了“管理员”,则其他的选项会被自动选中,同时该用户可以管理其他用户。\n", "profileSettings": "个人设置", - "redirectAfterCopyMove": "Redirect to destination after copy/move", + "redirectAfterCopyMove": "复制/移动后转到目标位置", "ruleExample1": "阻止用户访问所有文件夹下任何以 . 开头的文件(隐藏文件, 例如: .git, .gitignore)。\n", "ruleExample2": "阻止用户访问其目录范围的根目录下名为 Caddyfile 的文件。", "rules": "规则", From 5feaf665757dac947988905c1429e21687b17412 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 14 Feb 2026 07:31:45 +0100 Subject: [PATCH 035/126] chore(deps): update all non-major dependencies (#5758) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/ci.yaml | 8 +- frontend/package.json | 2 +- frontend/pnpm-lock.yaml | 432 +++++++++++++++++++++----------------- go.mod | 10 +- go.sum | 20 +- 5 files changed, 263 insertions(+), 209 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 846b08f8f1..b3b3ab3f45 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -34,7 +34,7 @@ jobs: - uses: actions/checkout@v6 - uses: actions/setup-go@v6 with: - go-version: "1.25.x" + go-version: "1.26.x" - uses: golangci/golangci-lint-action@v9 with: version: "latest" @@ -46,7 +46,7 @@ jobs: - uses: actions/checkout@v6 - uses: actions/setup-go@v6 with: - go-version: "1.25.x" + go-version: "1.26.x" - run: go test --race ./... build: @@ -58,7 +58,7 @@ jobs: fetch-depth: 0 - uses: actions/setup-go@v6 with: - go-version: '1.25' + go-version: '1.26' - uses: pnpm/action-setup@v4 with: package_json_file: "frontend/package.json" @@ -82,7 +82,7 @@ jobs: fetch-depth: 0 - uses: actions/setup-go@v6 with: - go-version: '1.25' + go-version: '1.26' - uses: pnpm/action-setup@v4 with: package_json_file: "frontend/package.json" diff --git a/frontend/package.json b/frontend/package.json index fa18306b59..ae5609ee06 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -71,5 +71,5 @@ "vite-plugin-compression2": "^2.3.1", "vue-tsc": "^3.1.3" }, - "packageManager": "pnpm@10.29.1+sha512.48dae233635a645768a3028d19545cacc1688639eeb1f3734e42d6d6b971afbf22aa1ac9af52a173d9c3a20c15857cfa400f19994d79a2f626fcc73fccda9bbc" + "packageManager": "pnpm@10.29.3+sha512.498e1fb4cca5aa06c1dcf2611e6fafc50972ffe7189998c409e90de74566444298ffe43e6cd2acdc775ba1aa7cc5e092a8b7054c811ba8c5770f84693d33d2dc" } diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index c8e72bcc23..2f6cb3f82e 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -10,13 +10,13 @@ importers: dependencies: '@chenfengyuan/vue-number-input': specifier: ^2.0.1 - version: 2.0.1(vue@3.5.27(typescript@5.9.3)) + version: 2.0.1(vue@3.5.28(typescript@5.9.3)) '@vueuse/core': specifier: ^14.0.0 - version: 14.2.0(vue@3.5.27(typescript@5.9.3)) + version: 14.2.1(vue@3.5.28(typescript@5.9.3)) '@vueuse/integrations': specifier: ^14.0.0 - version: 14.2.0(focus-trap@7.6.2)(jwt-decode@4.0.0)(vue@3.5.27(typescript@5.9.3)) + version: 14.2.1(focus-trap@7.6.2)(jwt-decode@4.0.0)(vue@3.5.28(typescript@5.9.3)) ace-builds: specifier: ^1.43.2 version: 1.43.6 @@ -43,7 +43,7 @@ importers: version: 4.17.23 marked: specifier: ^17.0.0 - version: 17.0.1 + version: 17.0.2 material-icons: specifier: ^1.13.14 version: 1.13.14 @@ -52,13 +52,13 @@ importers: version: 8.0.1 pinia: specifier: ^3.0.4 - version: 3.0.4(typescript@5.9.3)(vue@3.5.27(typescript@5.9.3)) + version: 3.0.4(typescript@5.9.3)(vue@3.5.28(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.27(typescript@5.9.3)) + version: 3.8.0(vue@3.5.28(typescript@5.9.3)) tus-js-client: specifier: ^4.3.1 version: 4.3.1 @@ -67,22 +67,22 @@ importers: version: 3.1.0 video.js: specifier: ^8.23.3 - version: 8.23.6 + version: 8.23.7 videojs-hotkeys: specifier: ^0.2.28 version: 0.2.30 videojs-mobile-ui: specifier: ^1.1.1 - version: 1.2.1(video.js@8.23.6) + version: 1.2.1(video.js@8.23.7) vue: specifier: ^3.5.17 - version: 3.5.27(typescript@5.9.3) + version: 3.5.28(typescript@5.9.3) vue-final-modal: specifier: ^4.5.5 - version: 4.5.5(@vueuse/core@14.2.0(vue@3.5.27(typescript@5.9.3)))(@vueuse/integrations@14.2.0(focus-trap@7.6.2)(jwt-decode@4.0.0)(vue@3.5.27(typescript@5.9.3)))(focus-trap@7.6.2)(vue@3.5.27(typescript@5.9.3)) + version: 4.5.5(@vueuse/core@14.2.1(vue@3.5.28(typescript@5.9.3)))(@vueuse/integrations@14.2.1(focus-trap@7.6.2)(jwt-decode@4.0.0)(vue@3.5.28(typescript@5.9.3)))(focus-trap@7.6.2)(vue@3.5.28(typescript@5.9.3)) vue-i18n: specifier: ^11.1.10 - version: 11.2.8(vue@3.5.27(typescript@5.9.3)) + version: 11.2.8(vue@3.5.28(typescript@5.9.3)) vue-lazyload: specifier: ^3.0.0 version: 3.0.0 @@ -91,14 +91,14 @@ importers: version: 1.3.4 vue-router: specifier: ^5.0.0 - version: 5.0.2(@vue/compiler-sfc@3.5.27)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.27(typescript@5.9.3)))(vue@3.5.27(typescript@5.9.3)) + version: 5.0.2(@vue/compiler-sfc@3.5.28)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3)) vue-toastification: specifier: ^2.0.0-rc.5 - version: 2.0.0-rc.5(vue@3.5.27(typescript@5.9.3)) + version: 2.0.0-rc.5(vue@3.5.28(typescript@5.9.3)) devDependencies: '@intlify/unplugin-vue-i18n': specifier: ^11.0.1 - version: 11.0.3(@vue/compiler-dom@3.5.27)(eslint@9.39.2)(rollup@4.55.1)(typescript@5.9.3)(vue-i18n@11.2.8(vue@3.5.27(typescript@5.9.3)))(vue@3.5.27(typescript@5.9.3)) + version: 11.0.3(@vue/compiler-dom@3.5.28)(eslint@9.39.2)(rollup@4.55.1)(typescript@5.9.3)(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3)) '@tsconfig/node24': specifier: ^24.0.2 version: 24.0.4 @@ -107,25 +107,25 @@ importers: version: 4.17.12 '@types/node': specifier: ^24.10.1 - version: 24.10.12 + version: 24.10.13 '@typescript-eslint/eslint-plugin': specifier: ^8.37.0 - version: 8.54.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) + version: 8.55.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) '@vitejs/plugin-legacy': specifier: ^7.2.1 - version: 7.2.1(terser@5.46.0)(vite@7.3.1(@types/node@24.10.12)(terser@5.46.0)(yaml@2.8.2)) + version: 7.2.1(terser@5.46.0)(vite@7.3.1(@types/node@24.10.13)(terser@5.46.0)(yaml@2.8.2)) '@vitejs/plugin-vue': specifier: ^6.0.1 - version: 6.0.4(vite@7.3.1(@types/node@24.10.12)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.27(typescript@5.9.3)) + version: 6.0.4(vite@7.3.1(@types/node@24.10.13)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3)) '@vue/eslint-config-prettier': specifier: ^10.2.0 version: 10.2.0(eslint@9.39.2)(prettier@3.8.1) '@vue/eslint-config-typescript': specifier: ^14.6.0 - version: 14.6.0(eslint-plugin-vue@10.7.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.2.0(eslint@9.39.2)))(eslint@9.39.2)(typescript@5.9.3) + version: 14.6.0(eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.2.0(eslint@9.39.2)))(eslint@9.39.2)(typescript@5.9.3) '@vue/tsconfig': specifier: ^0.8.1 - version: 0.8.1(typescript@5.9.3)(vue@3.5.27(typescript@5.9.3)) + version: 0.8.1(typescript@5.9.3)(vue@3.5.28(typescript@5.9.3)) autoprefixer: specifier: ^10.4.21 version: 10.4.24(postcss@8.5.6) @@ -140,7 +140,7 @@ importers: version: 5.5.5(eslint-config-prettier@10.1.8(eslint@9.39.2))(eslint@9.39.2)(prettier@3.8.1) eslint-plugin-vue: specifier: ^10.5.1 - version: 10.7.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.2.0(eslint@9.39.2)) + version: 10.8.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.2.0(eslint@9.39.2)) postcss: specifier: ^8.5.6 version: 8.5.6 @@ -155,7 +155,7 @@ importers: version: 5.9.3 vite: specifier: ^7.2.2 - version: 7.3.1(@types/node@24.10.12)(terser@5.46.0)(yaml@2.8.2) + version: 7.3.1(@types/node@24.10.13)(terser@5.46.0)(yaml@2.8.2) vite-plugin-compression2: specifier: ^2.3.1 version: 2.4.0(rollup@4.55.1) @@ -1322,8 +1322,8 @@ packages: '@types/lodash@4.17.13': resolution: {integrity: sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==} - '@types/node@24.10.12': - resolution: {integrity: sha512-68e+T28EbdmLSTkPgs3+UacC6rzmqrcWFPQs1C8mwJhI/r5Uxr0yEuQotczNRROd1gq30NGxee+fo0rSIxpyAw==} + '@types/node@24.10.13': + resolution: {integrity: sha512-oH72nZRfDv9lADUBSo104Aq7gPHpQZc4BTx38r9xf9pg5LfP6EzSyH2n7qFmmxRQXh7YlUXODcYsg6PuTDSxGg==} '@types/trusted-types@2.0.7': resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} @@ -1339,11 +1339,11 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/eslint-plugin@8.54.0': - resolution: {integrity: sha512-hAAP5io/7csFStuOmR782YmTthKBJ9ND3WVL60hcOjvtGFb+HJxH4O5huAcmcZ9v9G8P+JETiZ/G1B8MALnWZQ==} + '@typescript-eslint/eslint-plugin@8.55.0': + resolution: {integrity: sha512-1y/MVSz0NglV1ijHC8OT49mPJ4qhPYjiK08YUQVbIOyu+5k862LKUHFkpKHWu//zmr7hDR2rhwUm6gnCGNmGBQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.54.0 + '@typescript-eslint/parser': ^8.55.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' @@ -1366,8 +1366,8 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.54.0': - resolution: {integrity: sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g==} + '@typescript-eslint/project-service@8.55.0': + resolution: {integrity: sha512-zRcVVPFUYWa3kNnjaZGXSu3xkKV1zXy8M4nO/pElzQhFweb7PPtluDLQtKArEOGmjXoRjnUZ29NjOiF0eCDkcQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' @@ -1380,8 +1380,8 @@ packages: resolution: {integrity: sha512-npgS3zi+/30KSOkXNs0LQXtsg9ekZ8OISAOLGWA/ZOEn0ZH74Ginfl7foziV8DT+D98WfQ5Kopwqb/PZOaIJGg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.54.0': - resolution: {integrity: sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg==} + '@typescript-eslint/scope-manager@8.55.0': + resolution: {integrity: sha512-fVu5Omrd3jeqeQLiB9f1YsuK/iHFOwb04bCtY4BSCLgjNbOD33ZdV6KyEqplHr+IlpgT0QTZ/iJ+wT7hvTx49Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/tsconfig-utils@8.37.0': @@ -1396,8 +1396,8 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/tsconfig-utils@8.54.0': - resolution: {integrity: sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw==} + '@typescript-eslint/tsconfig-utils@8.55.0': + resolution: {integrity: sha512-1R9cXqY7RQd7WuqSN47PK9EDpgFUK3VqdmbYrvWJZYDd0cavROGn+74ktWBlmJ13NXUQKlZ/iAEQHI/V0kKe0Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' @@ -1409,8 +1409,8 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/type-utils@8.54.0': - resolution: {integrity: sha512-hiLguxJWHjjwL6xMBwD903ciAwd7DmK30Y9Axs/etOkftC3ZNN9K44IuRD/EB08amu+Zw6W37x9RecLkOo3pMA==} + '@typescript-eslint/type-utils@8.55.0': + resolution: {integrity: sha512-x1iH2unH4qAt6I37I2CGlsNs+B9WGxurP2uyZLRz6UJoZWDBx9cJL1xVN/FiOmHEONEg6RIufdvyT0TEYIgC5g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1424,8 +1424,8 @@ packages: resolution: {integrity: sha512-e9k/fneezorUo6WShlQpMxXh8/8wfyc+biu6tnAqA81oWrEic0k21RHzP9uqqpyBBeBKu4T+Bsjy9/b8u7obXQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.54.0': - resolution: {integrity: sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==} + '@typescript-eslint/types@8.55.0': + resolution: {integrity: sha512-ujT0Je8GI5BJWi+/mMoR0wxwVEQaxM+pi30xuMiJETlX80OPovb2p9E8ss87gnSVtYXtJoU9U1Cowcr6w2FE0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/typescript-estree@8.37.0': @@ -1440,8 +1440,8 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/typescript-estree@8.54.0': - resolution: {integrity: sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA==} + '@typescript-eslint/typescript-estree@8.55.0': + resolution: {integrity: sha512-EwrH67bSWdx/3aRQhCoxDaHM+CrZjotc2UCCpEDVqfCE+7OjKAGWNY2HsCSTEVvWH2clYQK8pdeLp42EVs+xQw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' @@ -1453,8 +1453,8 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/utils@8.54.0': - resolution: {integrity: sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA==} + '@typescript-eslint/utils@8.55.0': + resolution: {integrity: sha512-BqZEsnPGdYpgyEIkDC1BadNY8oMwckftxBT+C8W0g1iKPdeqKZBtTfnvcq0nf60u7MkjFO8RBvpRGZBPw4L2ow==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1468,12 +1468,12 @@ packages: resolution: {integrity: sha512-LlKaciDe3GmZFphXIc79THF/YYBugZ7FS1pO581E/edlVVNbZKDy93evqmrfQ9/Y4uN0vVhX4iuchq26mK/iiA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.54.0': - resolution: {integrity: sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA==} + '@typescript-eslint/visitor-keys@8.55.0': + resolution: {integrity: sha512-AxNRwEie8Nn4eFS1FzDMJWIISMGoXMb037sgCBJ3UR6o0fQTzr2tqN9WT+DkWJPhIdQCfV7T6D387566VtnCJA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@videojs/http-streaming@3.17.3': - resolution: {integrity: sha512-6AteOnlpiY8ljijyCB+JszDCIVl9UcSgIiM+CfpBe3Yk2VESjKw9Jq8AkOyZyfLI4U5kDR9izHcGi6ho517n8g==} + '@videojs/http-streaming@3.17.4': + resolution: {integrity: sha512-XAvdG2dolBuV2Fx8bu1kjmQ2D4TonGzZH68Pgv/O9xMSFWdZtITSMFismeQLEAtMmGwze8qNJp3RgV+jStrJqg==} engines: {node: '>=8', npm: '>=5'} peerDependencies: video.js: ^8.19.0 @@ -1520,15 +1520,27 @@ packages: '@vue/compiler-core@3.5.27': resolution: {integrity: sha512-gnSBQjZA+//qDZen+6a2EdHqJ68Z7uybrMf3SPjEGgG4dicklwDVmMC1AeIHxtLVPT7sn6sH1KOO+tS6gwOUeQ==} + '@vue/compiler-core@3.5.28': + resolution: {integrity: sha512-kviccYxTgoE8n6OCw96BNdYlBg2GOWfBuOW4Vqwrt7mSKWKwFVvI8egdTltqRgITGPsTFYtKYfxIG8ptX2PJHQ==} + '@vue/compiler-dom@3.5.27': resolution: {integrity: sha512-oAFea8dZgCtVVVTEC7fv3T5CbZW9BxpFzGGxC79xakTr6ooeEqmRuvQydIiDAkglZEAd09LgVf1RoDnL54fu5w==} + '@vue/compiler-dom@3.5.28': + resolution: {integrity: sha512-/1ZepxAb159jKR1btkefDP+J2xuWL5V3WtleRmxaT+K2Aqiek/Ab/+Ebrw2pPj0sdHO8ViAyyJWfhXXOP/+LQA==} + '@vue/compiler-sfc@3.5.27': resolution: {integrity: sha512-sHZu9QyDPeDmN/MRoshhggVOWE5WlGFStKFwu8G52swATgSny27hJRWteKDSUUzUH+wp+bmeNbhJnEAel/auUQ==} + '@vue/compiler-sfc@3.5.28': + resolution: {integrity: sha512-6TnKMiNkd6u6VeVDhZn/07KhEZuBSn43Wd2No5zaP5s3xm8IqFTHBj84HJah4UepSUJTro5SoqqlOY22FKY96g==} + '@vue/compiler-ssr@3.5.27': resolution: {integrity: sha512-Sj7h+JHt512fV1cTxKlYhg7qxBvack+BGncSpH+8vnN+KN95iPIcqB5rsbblX40XorP+ilO7VIKlkuu3Xq2vjw==} + '@vue/compiler-ssr@3.5.28': + resolution: {integrity: sha512-JCq//9w1qmC6UGLWJX7RXzrGpKkroubey/ZFqTpvEIDJEKGgntuDMqkuWiZvzTzTA5h2qZvFBFHY7fAAa9475g==} + '@vue/devtools-api@6.6.4': resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==} @@ -1570,23 +1582,26 @@ packages: '@vue/language-core@3.2.4': resolution: {integrity: sha512-bqBGuSG4KZM45KKTXzGtoCl9cWju5jsaBKaJJe3h5hRAAWpZUuj5G+L+eI01sPIkm4H6setKRlw7E85wLdDNew==} - '@vue/reactivity@3.5.27': - resolution: {integrity: sha512-vvorxn2KXfJ0nBEnj4GYshSgsyMNFnIQah/wczXlsNXt+ijhugmW+PpJ2cNPe4V6jpnBcs0MhCODKllWG+nvoQ==} + '@vue/reactivity@3.5.28': + resolution: {integrity: sha512-gr5hEsxvn+RNyu9/9o1WtdYdwDjg5FgjUSBEkZWqgTKlo/fvwZ2+8W6AfKsc9YN2k/+iHYdS9vZYAhpi10kNaw==} - '@vue/runtime-core@3.5.27': - resolution: {integrity: sha512-fxVuX/fzgzeMPn/CLQecWeDIFNt3gQVhxM0rW02Tvp/YmZfXQgcTXlakq7IMutuZ/+Ogbn+K0oct9J3JZfyk3A==} + '@vue/runtime-core@3.5.28': + resolution: {integrity: sha512-POVHTdbgnrBBIpnbYU4y7pOMNlPn2QVxVzkvEA2pEgvzbelQq4ZOUxbp2oiyo+BOtiYlm8Q44wShHJoBvDPAjQ==} - '@vue/runtime-dom@3.5.27': - resolution: {integrity: sha512-/QnLslQgYqSJ5aUmb5F0z0caZPGHRB8LEAQ1s81vHFM5CBfnun63rxhvE/scVb/j3TbBuoZwkJyiLCkBluMpeg==} + '@vue/runtime-dom@3.5.28': + resolution: {integrity: sha512-4SXxSF8SXYMuhAIkT+eBRqOkWEfPu6nhccrzrkioA6l0boiq7sp18HCOov9qWJA5HML61kW8p/cB4MmBiG9dSA==} - '@vue/server-renderer@3.5.27': - resolution: {integrity: sha512-qOz/5thjeP1vAFc4+BY3Nr6wxyLhpeQgAE/8dDtKo6a6xdk+L4W46HDZgNmLOBUDEkFXV3G7pRiUqxjX0/2zWA==} + '@vue/server-renderer@3.5.28': + resolution: {integrity: sha512-pf+5ECKGj8fX95bNincbzJ6yp6nyzuLDhYZCeFxUNp8EBrQpPpQaLX3nNCp49+UbgbPun3CeVE+5CXVV1Xydfg==} peerDependencies: - vue: 3.5.27 + vue: 3.5.28 '@vue/shared@3.5.27': resolution: {integrity: sha512-dXr/3CgqXsJkZ0n9F3I4elY8wM9jMJpP3pvRG52r6m0tu/MsAFIe6JpXVGeNMd/D9F4hQynWT8Rfuj0bdm9kFQ==} + '@vue/shared@3.5.28': + resolution: {integrity: sha512-cfWa1fCGBxrvaHRhvV3Is0MgmrbSCxYTXCSCau2I0a1Xw1N1pHAvkWCiXPRAqjvToILvguNyEwjevUqAuBQWvQ==} + '@vue/tsconfig@0.8.1': resolution: {integrity: sha512-aK7feIWPXFSUhsCP9PFqPyFOcz4ENkb8hZ2pneL6m2UjCkccvaOhC/5KCKluuBufvp2KzkbdA2W2pk20vLzu3g==} peerDependencies: @@ -1598,13 +1613,13 @@ packages: vue: optional: true - '@vueuse/core@14.2.0': - resolution: {integrity: sha512-tpjzVl7KCQNVd/qcaCE9XbejL38V6KJAEq/tVXj7mDPtl6JtzmUdnXelSS+ULRkkrDgzYVK7EerQJvd2jR794Q==} + '@vueuse/core@14.2.1': + resolution: {integrity: sha512-3vwDzV+GDUNpdegRY6kzpLm4Igptq+GA0QkJ3W61Iv27YWwW/ufSlOfgQIpN6FZRMG0mkaz4gglJRtq5SeJyIQ==} peerDependencies: vue: ^3.5.0 - '@vueuse/integrations@14.2.0': - resolution: {integrity: sha512-Yuo5XbIi6XkfSXOYKd5SBZwyBEyO3Hd41eeG2555hDbE0Maz/P0BfPJDYhgDXjS9xI0jkWUUp1Zh5lXHOgkwLw==} + '@vueuse/integrations@14.2.1': + resolution: {integrity: sha512-2LIUpBi/67PoXJGqSDQUF0pgQWpNHh7beiA+KG2AbybcNm+pTGWT6oPGlBgUoDWmYwfeQqM/uzOHqcILpKL7nA==} peerDependencies: async-validator: ^4 axios: ^1 @@ -1645,11 +1660,11 @@ packages: universal-cookie: optional: true - '@vueuse/metadata@14.2.0': - resolution: {integrity: sha512-i3axTGjU8b13FtyR4Keeama+43iD+BwX9C2TmzBVKqjSHArF03hjkp2SBZ1m72Jk2UtrX0aYCugBq2R1fhkuAQ==} + '@vueuse/metadata@14.2.1': + resolution: {integrity: sha512-1ButlVtj5Sb/HDtIy1HFr1VqCP4G6Ypqt5MAo0lCgjokrk2mvQKsK2uuy0vqu/Ks+sHfuHo0B9Y9jn9xKdjZsw==} - '@vueuse/shared@14.2.0': - resolution: {integrity: sha512-Z0bmluZTlAXgUcJ4uAFaML16JcD8V0QG00Db3quR642I99JXIDRa2MI2LGxiLVhcBjVnL1jOzIvT5TT2lqJlkA==} + '@vueuse/shared@14.2.1': + resolution: {integrity: sha512-shTJncjV9JTI4oVNyF1FQonetYAiTBd+Qj7cY89SWbXSkx7gyhrgtEdF2ZAVWS1S3SHlaROO6F2IesJxQEkZBw==} peerDependencies: vue: ^3.5.0 @@ -1934,13 +1949,13 @@ packages: eslint-config-prettier: optional: true - eslint-plugin-vue@10.7.0: - resolution: {integrity: sha512-r2XFCK4qlo1sxEoAMIoTTX0PZAdla0JJDt1fmYiworZUX67WeEGqm+JbyAg3M+pGiJ5U6Mp5WQbontXWtIW7TA==} + 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 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 vue-eslint-parser: ^10.0.0 peerDependenciesMeta: '@stylistic/eslint-plugin': @@ -2284,8 +2299,8 @@ packages: magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - marked@17.0.1: - resolution: {integrity: sha512-boeBdiS0ghpWcSwoNm/jJBwdpFaMnZWRzjA6SkUMYb40SVaN1x7mmfGKp0jvexGcx+7y2La5zRZsYFZI6Qpypg==} + marked@17.0.2: + resolution: {integrity: sha512-s5HZGFQea7Huv5zZcAGhJLT3qLpAfnY7v7GWkICUr0+Wd5TFEtdlRR2XUL5Gg+RH7u2Df595ifrxR03mBaw7gA==} engines: {node: '>= 20'} hasBin: true @@ -2563,6 +2578,11 @@ packages: engines: {node: '>=10'} 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==} @@ -2728,8 +2748,8 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - video.js@8.23.6: - resolution: {integrity: sha512-qjS3HTDo7iapedJuso62scA303i+6CaCUnwyRr8GYd/BYAp7XGb7InUMw2Eu6zrN6IWooPOb78NzyMyjRbIN+Q==} + video.js@8.23.7: + resolution: {integrity: sha512-cG4HOygYt+Z8j6Sf5DuK6OgEOoM+g9oGP6vpqoZRaD13aHE4PMITbyjJUXZcIQbgB0wJEadBRaVm5lJIzo2jAA==} videojs-contrib-quality-levels@4.1.0: resolution: {integrity: sha512-TfrXJJg1Bv4t6TOCMEVMwF/CoS8iENYsWNKip8zfhB5kTcegiFYezEA0eHAJPU64ZC8NQbxQgOwAsYU8VXbOWA==} @@ -2850,8 +2870,8 @@ packages: peerDependencies: typescript: '>=5.0.0' - vue@3.5.27: - resolution: {integrity: sha512-aJ/UtoEyFySPBGarREmN4z6qNKpbEguYHMmXSiOGk69czc+zhs0NF6tEFrY8TZKAl8N/LYAkd4JHVd5E/AsSmw==} + vue@3.5.28: + resolution: {integrity: sha512-BRdrNfeoccSoIZeIhyPBfvWSLFP4q8J3u8Ju8Ug5vu3LdD+yTM13Sg4sKtljxozbnuMu1NB1X5HBHRYUzFocKg==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -3572,9 +3592,9 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 - '@chenfengyuan/vue-number-input@2.0.1(vue@3.5.27(typescript@5.9.3))': + '@chenfengyuan/vue-number-input@2.0.1(vue@3.5.28(typescript@5.9.3))': dependencies: - vue: 3.5.27(typescript@5.9.3) + vue: 3.5.28(typescript@5.9.3) '@esbuild/aix-ppc64@0.25.12': optional: true @@ -3794,7 +3814,7 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} - '@intlify/bundle-utils@11.0.3(vue-i18n@11.2.8(vue@3.5.27(typescript@5.9.3)))': + '@intlify/bundle-utils@11.0.3(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)))': dependencies: '@intlify/message-compiler': 11.2.8 '@intlify/shared': 11.2.2 @@ -3806,7 +3826,7 @@ snapshots: source-map-js: 1.2.1 yaml-eslint-parser: 1.3.2 optionalDependencies: - vue-i18n: 11.2.8(vue@3.5.27(typescript@5.9.3)) + vue-i18n: 11.2.8(vue@3.5.28(typescript@5.9.3)) '@intlify/core-base@11.2.8': dependencies: @@ -3822,12 +3842,12 @@ snapshots: '@intlify/shared@11.2.8': {} - '@intlify/unplugin-vue-i18n@11.0.3(@vue/compiler-dom@3.5.27)(eslint@9.39.2)(rollup@4.55.1)(typescript@5.9.3)(vue-i18n@11.2.8(vue@3.5.27(typescript@5.9.3)))(vue@3.5.27(typescript@5.9.3))': + '@intlify/unplugin-vue-i18n@11.0.3(@vue/compiler-dom@3.5.28)(eslint@9.39.2)(rollup@4.55.1)(typescript@5.9.3)(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3))': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2) - '@intlify/bundle-utils': 11.0.3(vue-i18n@11.2.8(vue@3.5.27(typescript@5.9.3))) + '@intlify/bundle-utils': 11.0.3(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3))) '@intlify/shared': 11.2.2 - '@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.2.2)(@vue/compiler-dom@3.5.27)(vue-i18n@11.2.8(vue@3.5.27(typescript@5.9.3)))(vue@3.5.27(typescript@5.9.3)) + '@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.2.2)(@vue/compiler-dom@3.5.28)(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3)) '@rollup/pluginutils': 5.3.0(rollup@4.55.1) '@typescript-eslint/scope-manager': 8.49.0 '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.3) @@ -3836,9 +3856,9 @@ snapshots: pathe: 2.0.3 picocolors: 1.1.1 unplugin: 2.3.11 - vue: 3.5.27(typescript@5.9.3) + vue: 3.5.28(typescript@5.9.3) optionalDependencies: - vue-i18n: 11.2.8(vue@3.5.27(typescript@5.9.3)) + vue-i18n: 11.2.8(vue@3.5.28(typescript@5.9.3)) transitivePeerDependencies: - '@vue/compiler-dom' - eslint @@ -3846,14 +3866,14 @@ snapshots: - supports-color - typescript - '@intlify/vue-i18n-extensions@8.0.0(@intlify/shared@11.2.2)(@vue/compiler-dom@3.5.27)(vue-i18n@11.2.8(vue@3.5.27(typescript@5.9.3)))(vue@3.5.27(typescript@5.9.3))': + '@intlify/vue-i18n-extensions@8.0.0(@intlify/shared@11.2.2)(@vue/compiler-dom@3.5.28)(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3))': dependencies: '@babel/parser': 7.28.6 optionalDependencies: '@intlify/shared': 11.2.2 - '@vue/compiler-dom': 3.5.27 - vue: 3.5.27(typescript@5.9.3) - vue-i18n: 11.2.8(vue@3.5.27(typescript@5.9.3)) + '@vue/compiler-dom': 3.5.28 + vue: 3.5.28(typescript@5.9.3) + vue-i18n: 11.2.8(vue@3.5.28(typescript@5.9.3)) '@jridgewell/gen-mapping@0.3.13': dependencies: @@ -3994,7 +4014,7 @@ snapshots: '@types/lodash@4.17.13': {} - '@types/node@24.10.12': + '@types/node@24.10.13': dependencies: undici-types: 7.16.0 @@ -4020,14 +4040,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.54.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.55.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 '@typescript-eslint/parser': 8.37.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.54.0 - '@typescript-eslint/type-utils': 8.54.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/utils': 8.54.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.54.0 + '@typescript-eslint/scope-manager': 8.55.0 + '@typescript-eslint/type-utils': 8.55.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/utils': 8.55.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.55.0 eslint: 9.39.2 ignore: 7.0.5 natural-compare: 1.4.0 @@ -4066,10 +4086,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.54.0(typescript@5.9.3)': + '@typescript-eslint/project-service@8.55.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.9.3) - '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/tsconfig-utils': 8.55.0(typescript@5.9.3) + '@typescript-eslint/types': 8.55.0 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: @@ -4085,10 +4105,10 @@ snapshots: '@typescript-eslint/types': 8.49.0 '@typescript-eslint/visitor-keys': 8.49.0 - '@typescript-eslint/scope-manager@8.54.0': + '@typescript-eslint/scope-manager@8.55.0': dependencies: - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/visitor-keys': 8.54.0 + '@typescript-eslint/types': 8.55.0 + '@typescript-eslint/visitor-keys': 8.55.0 '@typescript-eslint/tsconfig-utils@8.37.0(typescript@5.9.3)': dependencies: @@ -4098,7 +4118,7 @@ snapshots: dependencies: typescript: 5.9.3 - '@typescript-eslint/tsconfig-utils@8.54.0(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.55.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 @@ -4114,11 +4134,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.54.0(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.55.0(eslint@9.39.2)(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.54.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/types': 8.55.0 + '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.55.0(eslint@9.39.2)(typescript@5.9.3) debug: 4.4.3 eslint: 9.39.2 ts-api-utils: 2.4.0(typescript@5.9.3) @@ -4130,7 +4150,7 @@ snapshots: '@typescript-eslint/types@8.49.0': {} - '@typescript-eslint/types@8.54.0': {} + '@typescript-eslint/types@8.55.0': {} '@typescript-eslint/typescript-estree@8.37.0(typescript@5.9.3)': dependencies: @@ -4142,7 +4162,7 @@ snapshots: fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.7.3 + semver: 7.7.4 ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: @@ -4163,15 +4183,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.54.0(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.55.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.54.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.9.3) - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/visitor-keys': 8.54.0 + '@typescript-eslint/project-service': 8.55.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.55.0(typescript@5.9.3) + '@typescript-eslint/types': 8.55.0 + '@typescript-eslint/visitor-keys': 8.55.0 debug: 4.4.3 minimatch: 9.0.5 - semver: 7.7.3 + semver: 7.7.4 tinyglobby: 0.2.15 ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 @@ -4189,12 +4209,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.54.0(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/utils@8.55.0(eslint@9.39.2)(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2) - '@typescript-eslint/scope-manager': 8.54.0 - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.55.0 + '@typescript-eslint/types': 8.55.0 + '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.9.3) eslint: 9.39.2 typescript: 5.9.3 transitivePeerDependencies: @@ -4210,12 +4230,12 @@ snapshots: '@typescript-eslint/types': 8.49.0 eslint-visitor-keys: 4.2.1 - '@typescript-eslint/visitor-keys@8.54.0': + '@typescript-eslint/visitor-keys@8.55.0': dependencies: - '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/types': 8.55.0 eslint-visitor-keys: 4.2.1 - '@videojs/http-streaming@3.17.3(video.js@8.23.6)': + '@videojs/http-streaming@3.17.4(video.js@8.23.7)': dependencies: '@babel/runtime': 7.28.6 '@videojs/vhs-utils': 4.1.1 @@ -4224,7 +4244,7 @@ snapshots: m3u8-parser: 7.2.0 mpd-parser: 1.3.1 mux.js: 7.1.0 - video.js: 8.23.6 + video.js: 8.23.7 '@videojs/vhs-utils@4.1.1': dependencies: @@ -4237,7 +4257,7 @@ snapshots: global: 4.4.0 is-function: 1.0.2 - '@vitejs/plugin-legacy@7.2.1(terser@5.46.0)(vite@7.3.1(@types/node@24.10.12)(terser@5.46.0)(yaml@2.8.2))': + '@vitejs/plugin-legacy@7.2.1(terser@5.46.0)(vite@7.3.1(@types/node@24.10.13)(terser@5.46.0)(yaml@2.8.2))': dependencies: '@babel/core': 7.28.5 '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.28.5) @@ -4252,15 +4272,15 @@ snapshots: regenerator-runtime: 0.14.1 systemjs: 6.15.1 terser: 5.46.0 - vite: 7.3.1(@types/node@24.10.12)(terser@5.46.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@24.10.13)(terser@5.46.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@6.0.4(vite@7.3.1(@types/node@24.10.12)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.27(typescript@5.9.3))': + '@vitejs/plugin-vue@6.0.4(vite@7.3.1(@types/node@24.10.13)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3))': dependencies: '@rolldown/pluginutils': 1.0.0-rc.2 - vite: 7.3.1(@types/node@24.10.12)(terser@5.46.0)(yaml@2.8.2) - vue: 3.5.27(typescript@5.9.3) + vite: 7.3.1(@types/node@24.10.13)(terser@5.46.0)(yaml@2.8.2) + vue: 3.5.28(typescript@5.9.3) '@volar/language-core@2.4.27': dependencies: @@ -4274,7 +4294,7 @@ snapshots: path-browserify: 1.0.1 vscode-uri: 3.1.0 - '@vue-macros/common@3.1.2(vue@3.5.27(typescript@5.9.3))': + '@vue-macros/common@3.1.2(vue@3.5.28(typescript@5.9.3))': dependencies: '@vue/compiler-sfc': 3.5.27 ast-kit: 2.2.0 @@ -4282,7 +4302,7 @@ snapshots: magic-string-ast: 1.0.3 unplugin-utils: 0.3.1 optionalDependencies: - vue: 3.5.27(typescript@5.9.3) + vue: 3.5.28(typescript@5.9.3) '@vue/compiler-core@3.5.27': dependencies: @@ -4292,11 +4312,24 @@ snapshots: estree-walker: 2.0.2 source-map-js: 1.2.1 + '@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-dom@3.5.27': dependencies: '@vue/compiler-core': 3.5.27 '@vue/shared': 3.5.27 + '@vue/compiler-dom@3.5.28': + dependencies: + '@vue/compiler-core': 3.5.28 + '@vue/shared': 3.5.28 + '@vue/compiler-sfc@3.5.27': dependencies: '@babel/parser': 7.28.6 @@ -4309,11 +4342,28 @@ snapshots: postcss: 8.5.6 source-map-js: 1.2.1 + '@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.6 + source-map-js: 1.2.1 + '@vue/compiler-ssr@3.5.27': dependencies: '@vue/compiler-dom': 3.5.27 '@vue/shared': 3.5.27 + '@vue/compiler-ssr@3.5.28': + dependencies: + '@vue/compiler-dom': 3.5.28 + '@vue/shared': 3.5.28 + '@vue/devtools-api@6.6.4': {} '@vue/devtools-api@7.7.8': @@ -4361,11 +4411,11 @@ snapshots: transitivePeerDependencies: - '@types/eslint' - '@vue/eslint-config-typescript@14.6.0(eslint-plugin-vue@10.7.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.2.0(eslint@9.39.2)))(eslint@9.39.2)(typescript@5.9.3)': + '@vue/eslint-config-typescript@14.6.0(eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.2.0(eslint@9.39.2)))(eslint@9.39.2)(typescript@5.9.3)': dependencies: '@typescript-eslint/utils': 8.37.0(eslint@9.39.2)(typescript@5.9.3) eslint: 9.39.2 - eslint-plugin-vue: 10.7.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.2.0(eslint@9.39.2)) + eslint-plugin-vue: 10.8.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.2.0(eslint@9.39.2)) fast-glob: 3.3.3 typescript-eslint: 8.37.0(eslint@9.39.2)(typescript@5.9.3) vue-eslint-parser: 10.2.0(eslint@9.39.2) @@ -4384,56 +4434,58 @@ snapshots: path-browserify: 1.0.1 picomatch: 4.0.3 - '@vue/reactivity@3.5.27': + '@vue/reactivity@3.5.28': dependencies: - '@vue/shared': 3.5.27 + '@vue/shared': 3.5.28 - '@vue/runtime-core@3.5.27': + '@vue/runtime-core@3.5.28': dependencies: - '@vue/reactivity': 3.5.27 - '@vue/shared': 3.5.27 + '@vue/reactivity': 3.5.28 + '@vue/shared': 3.5.28 - '@vue/runtime-dom@3.5.27': + '@vue/runtime-dom@3.5.28': dependencies: - '@vue/reactivity': 3.5.27 - '@vue/runtime-core': 3.5.27 - '@vue/shared': 3.5.27 + '@vue/reactivity': 3.5.28 + '@vue/runtime-core': 3.5.28 + '@vue/shared': 3.5.28 csstype: 3.2.3 - '@vue/server-renderer@3.5.27(vue@3.5.27(typescript@5.9.3))': + '@vue/server-renderer@3.5.28(vue@3.5.28(typescript@5.9.3))': dependencies: - '@vue/compiler-ssr': 3.5.27 - '@vue/shared': 3.5.27 - vue: 3.5.27(typescript@5.9.3) + '@vue/compiler-ssr': 3.5.28 + '@vue/shared': 3.5.28 + vue: 3.5.28(typescript@5.9.3) '@vue/shared@3.5.27': {} - '@vue/tsconfig@0.8.1(typescript@5.9.3)(vue@3.5.27(typescript@5.9.3))': + '@vue/shared@3.5.28': {} + + '@vue/tsconfig@0.8.1(typescript@5.9.3)(vue@3.5.28(typescript@5.9.3))': optionalDependencies: typescript: 5.9.3 - vue: 3.5.27(typescript@5.9.3) + vue: 3.5.28(typescript@5.9.3) - '@vueuse/core@14.2.0(vue@3.5.27(typescript@5.9.3))': + '@vueuse/core@14.2.1(vue@3.5.28(typescript@5.9.3))': dependencies: '@types/web-bluetooth': 0.0.21 - '@vueuse/metadata': 14.2.0 - '@vueuse/shared': 14.2.0(vue@3.5.27(typescript@5.9.3)) - vue: 3.5.27(typescript@5.9.3) + '@vueuse/metadata': 14.2.1 + '@vueuse/shared': 14.2.1(vue@3.5.28(typescript@5.9.3)) + vue: 3.5.28(typescript@5.9.3) - '@vueuse/integrations@14.2.0(focus-trap@7.6.2)(jwt-decode@4.0.0)(vue@3.5.27(typescript@5.9.3))': + '@vueuse/integrations@14.2.1(focus-trap@7.6.2)(jwt-decode@4.0.0)(vue@3.5.28(typescript@5.9.3))': dependencies: - '@vueuse/core': 14.2.0(vue@3.5.27(typescript@5.9.3)) - '@vueuse/shared': 14.2.0(vue@3.5.27(typescript@5.9.3)) - vue: 3.5.27(typescript@5.9.3) + '@vueuse/core': 14.2.1(vue@3.5.28(typescript@5.9.3)) + '@vueuse/shared': 14.2.1(vue@3.5.28(typescript@5.9.3)) + vue: 3.5.28(typescript@5.9.3) optionalDependencies: focus-trap: 7.6.2 jwt-decode: 4.0.0 - '@vueuse/metadata@14.2.0': {} + '@vueuse/metadata@14.2.1': {} - '@vueuse/shared@14.2.0(vue@3.5.27(typescript@5.9.3))': + '@vueuse/shared@14.2.1(vue@3.5.28(typescript@5.9.3))': dependencies: - vue: 3.5.27(typescript@5.9.3) + vue: 3.5.28(typescript@5.9.3) '@xmldom/xmldom@0.7.13': {} @@ -4758,14 +4810,14 @@ snapshots: optionalDependencies: eslint-config-prettier: 10.1.8(eslint@9.39.2) - eslint-plugin-vue@10.7.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.2.0(eslint@9.39.2)): + eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.2.0(eslint@9.39.2)): dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2) eslint: 9.39.2 natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 7.1.1 - semver: 7.7.3 + semver: 7.7.4 vue-eslint-parser: 10.2.0(eslint@9.39.2) xml-name-validator: 4.0.0 optionalDependencies: @@ -5011,7 +5063,7 @@ snapshots: acorn: 8.15.0 eslint-visitor-keys: 3.4.3 espree: 9.6.1 - semver: 7.7.3 + semver: 7.7.4 jszip@3.10.1: dependencies: @@ -5105,7 +5157,7 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 - marked@17.0.1: {} + marked@17.0.2: {} marks-pane@1.0.9: {} @@ -5216,10 +5268,10 @@ snapshots: picomatch@4.0.3: {} - pinia@3.0.4(typescript@5.9.3)(vue@3.5.27(typescript@5.9.3)): + pinia@3.0.4(typescript@5.9.3)(vue@3.5.28(typescript@5.9.3)): dependencies: '@vue/devtools-api': 7.7.8 - vue: 3.5.27(typescript@5.9.3) + vue: 3.5.28(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 @@ -5274,9 +5326,9 @@ snapshots: punycode@2.3.1: {} - qrcode.vue@3.8.0(vue@3.5.27(typescript@5.9.3)): + qrcode.vue@3.8.0(vue@3.5.28(typescript@5.9.3)): dependencies: - vue: 3.5.27(typescript@5.9.3) + vue: 3.5.28(typescript@5.9.3) quansync@0.2.11: {} @@ -5378,6 +5430,8 @@ snapshots: semver@7.7.3: {} + semver@7.7.4: {} + setimmediate@1.0.5: {} shebang-command@2.0.0: @@ -5538,10 +5592,10 @@ snapshots: util-deprecate@1.0.2: {} - video.js@8.23.6: + video.js@8.23.7: dependencies: '@babel/runtime': 7.28.6 - '@videojs/http-streaming': 3.17.3(video.js@8.23.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 @@ -5549,23 +5603,23 @@ snapshots: 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.6) + 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.6): + videojs-contrib-quality-levels@4.1.0(video.js@8.23.7): dependencies: global: 4.4.0 - video.js: 8.23.6 + video.js: 8.23.7 videojs-font@4.2.0: {} videojs-hotkeys@0.2.30: {} - videojs-mobile-ui@1.2.1(video.js@8.23.6): + videojs-mobile-ui@1.2.1(video.js@8.23.7): dependencies: global: 4.4.0 - video.js: 8.23.6 + video.js: 8.23.7 videojs-vtt.js@0.15.5: dependencies: @@ -5578,7 +5632,7 @@ snapshots: transitivePeerDependencies: - rollup - vite@7.3.1(@types/node@24.10.12)(terser@5.46.0)(yaml@2.8.2): + vite@7.3.1(@types/node@24.10.13)(terser@5.46.0)(yaml@2.8.2): dependencies: esbuild: 0.27.2 fdir: 6.5.0(picomatch@4.0.3) @@ -5587,7 +5641,7 @@ snapshots: rollup: 4.55.1 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.10.12 + '@types/node': 24.10.13 fsevents: 2.3.3 terser: 5.46.0 yaml: 2.8.2 @@ -5602,23 +5656,23 @@ snapshots: eslint-visitor-keys: 4.2.1 espree: 10.4.0 esquery: 1.6.0 - semver: 7.7.3 + semver: 7.7.4 transitivePeerDependencies: - supports-color - vue-final-modal@4.5.5(@vueuse/core@14.2.0(vue@3.5.27(typescript@5.9.3)))(@vueuse/integrations@14.2.0(focus-trap@7.6.2)(jwt-decode@4.0.0)(vue@3.5.27(typescript@5.9.3)))(focus-trap@7.6.2)(vue@3.5.27(typescript@5.9.3)): + vue-final-modal@4.5.5(@vueuse/core@14.2.1(vue@3.5.28(typescript@5.9.3)))(@vueuse/integrations@14.2.1(focus-trap@7.6.2)(jwt-decode@4.0.0)(vue@3.5.28(typescript@5.9.3)))(focus-trap@7.6.2)(vue@3.5.28(typescript@5.9.3)): dependencies: - '@vueuse/core': 14.2.0(vue@3.5.27(typescript@5.9.3)) - '@vueuse/integrations': 14.2.0(focus-trap@7.6.2)(jwt-decode@4.0.0)(vue@3.5.27(typescript@5.9.3)) + '@vueuse/core': 14.2.1(vue@3.5.28(typescript@5.9.3)) + '@vueuse/integrations': 14.2.1(focus-trap@7.6.2)(jwt-decode@4.0.0)(vue@3.5.28(typescript@5.9.3)) focus-trap: 7.6.2 - vue: 3.5.27(typescript@5.9.3) + vue: 3.5.28(typescript@5.9.3) - vue-i18n@11.2.8(vue@3.5.27(typescript@5.9.3)): + vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)): dependencies: '@intlify/core-base': 11.2.8 '@intlify/shared': 11.2.8 '@vue/devtools-api': 6.6.4 - vue: 3.5.27(typescript@5.9.3) + vue: 3.5.28(typescript@5.9.3) vue-lazyload@3.0.0: {} @@ -5626,10 +5680,10 @@ snapshots: dependencies: epubjs: 0.3.93 - vue-router@5.0.2(@vue/compiler-sfc@3.5.27)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.27(typescript@5.9.3)))(vue@3.5.27(typescript@5.9.3)): + vue-router@5.0.2(@vue/compiler-sfc@3.5.28)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3)): dependencies: '@babel/generator': 7.29.1 - '@vue-macros/common': 3.1.2(vue@3.5.27(typescript@5.9.3)) + '@vue-macros/common': 3.1.2(vue@3.5.28(typescript@5.9.3)) '@vue/devtools-api': 8.0.6 ast-walker-scope: 0.8.3 chokidar: 5.0.0 @@ -5644,15 +5698,15 @@ snapshots: tinyglobby: 0.2.15 unplugin: 3.0.0 unplugin-utils: 0.3.1 - vue: 3.5.27(typescript@5.9.3) + vue: 3.5.28(typescript@5.9.3) yaml: 2.8.2 optionalDependencies: - '@vue/compiler-sfc': 3.5.27 - pinia: 3.0.4(typescript@5.9.3)(vue@3.5.27(typescript@5.9.3)) + '@vue/compiler-sfc': 3.5.28 + pinia: 3.0.4(typescript@5.9.3)(vue@3.5.28(typescript@5.9.3)) - vue-toastification@2.0.0-rc.5(vue@3.5.27(typescript@5.9.3)): + vue-toastification@2.0.0-rc.5(vue@3.5.28(typescript@5.9.3)): dependencies: - vue: 3.5.27(typescript@5.9.3) + vue: 3.5.28(typescript@5.9.3) vue-tsc@3.2.4(typescript@5.9.3): dependencies: @@ -5660,13 +5714,13 @@ snapshots: '@vue/language-core': 3.2.4 typescript: 5.9.3 - vue@3.5.27(typescript@5.9.3): + vue@3.5.28(typescript@5.9.3): dependencies: - '@vue/compiler-dom': 3.5.27 - '@vue/compiler-sfc': 3.5.27 - '@vue/runtime-dom': 3.5.27 - '@vue/server-renderer': 3.5.27(vue@3.5.27(typescript@5.9.3)) - '@vue/shared': 3.5.27 + '@vue/compiler-dom': 3.5.28 + '@vue/compiler-sfc': 3.5.28 + '@vue/runtime-dom': 3.5.28 + '@vue/server-renderer': 3.5.28(vue@3.5.28(typescript@5.9.3)) + '@vue/shared': 3.5.28 optionalDependencies: typescript: 5.9.3 diff --git a/go.mod b/go.mod index 76877cdf55..8e0f0f1025 100644 --- a/go.mod +++ b/go.mod @@ -25,9 +25,9 @@ require ( github.com/spf13/viper v1.21.0 github.com/stretchr/testify v1.11.1 github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce - golang.org/x/crypto v0.47.0 - golang.org/x/image v0.35.0 - golang.org/x/text v0.33.0 + golang.org/x/crypto v0.48.0 + golang.org/x/image v0.36.0 + golang.org/x/text v0.34.0 gopkg.in/natefinch/lumberjack.v2 v2.2.1 gopkg.in/yaml.v3 v3.0.1 ) @@ -76,9 +76,9 @@ require ( go.etcd.io/bbolt v1.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect go4.org v0.0.0-20230225012048-214862532bf5 // indirect - golang.org/x/net v0.48.0 // indirect + golang.org/x/net v0.49.0 // indirect golang.org/x/sync v0.19.0 // indirect - golang.org/x/sys v0.40.0 // indirect + golang.org/x/sys v0.41.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v2 v2.4.0 // indirect ) diff --git a/go.sum b/go.sum index c350ff93d9..262a280c87 100644 --- a/go.sum +++ b/go.sum @@ -276,8 +276,8 @@ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.47.0 h1:V6e3FRj+n4dbpw86FJ8Fv7XVOql7TEwpHapKoMJ/GO8= -golang.org/x/crypto v0.47.0/go.mod h1:ff3Y9VzzKbwSSEzWqJsJVBnWmRwRSHt/6Op5n9bQc4A= +golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= +golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -289,8 +289,8 @@ golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EH golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.35.0 h1:LKjiHdgMtO8z7Fh18nGY6KDcoEtVfsgLDPeLyguqb7I= -golang.org/x/image v0.35.0/go.mod h1:MwPLTVgvxSASsxdLzKrl8BRFuyqMyGhLwmC+TO1Sybk= +golang.org/x/image v0.36.0 h1:Iknbfm1afbgtwPTmHnS2gTM/6PPZfH+z2EFuOkSbqwc= +golang.org/x/image v0.36.0/go.mod h1:YsWD2TyyGKiIX1kZlu9QfKIsQ4nAAK9bdgdrIsE7xy4= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -329,8 +329,8 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20221002022538-bcab6841153b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= -golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= +golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= +golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -370,8 +370,8 @@ golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220928140112-f11e5e49a4ec/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= -golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= +golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= @@ -382,8 +382,8 @@ golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= -golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= +golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= +golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= From 1f7904dad21a87f04e1543ee10b60ce79e5eebe9 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 14 Feb 2026 07:35:34 +0100 Subject: [PATCH 036/126] fix: ignore version.go --- version/version.go | 1 + 1 file changed, 1 insertion(+) diff --git a/version/version.go b/version/version.go index 65b42dfad7..84277efede 100644 --- a/version/version.go +++ b/version/version.go @@ -1,3 +1,4 @@ +//nolint:revive package version var ( From 88b97def9ee72fe6e8094209aebb71830b7305be Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 14 Feb 2026 07:35:42 +0100 Subject: [PATCH 037/126] feat: nederlands --- frontend/src/components/settings/Languages.vue | 3 ++- frontend/src/i18n/index.ts | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/frontend/src/components/settings/Languages.vue b/frontend/src/components/settings/Languages.vue index 729685116d..3df6028e61 100644 --- a/frontend/src/components/settings/Languages.vue +++ b/frontend/src/components/settings/Languages.vue @@ -32,7 +32,8 @@ export default { ja: "日本語", ko: "한국어", no: "Norsk", - "nl-be": "Dutch (Belgium)", + nl: "Nederlands (Nederland)", + "nl-be": "Nederlands (België)", pl: "Polski", "pt-br": "Português (Brasil)", pt: "Português (Portugal)", diff --git a/frontend/src/i18n/index.ts b/frontend/src/i18n/index.ts index d576d18373..9fa7155f85 100644 --- a/frontend/src/i18n/index.ts +++ b/frontend/src/i18n/index.ts @@ -17,6 +17,7 @@ import("dayjs/locale/it"); import("dayjs/locale/ja"); import("dayjs/locale/ko"); import("dayjs/locale/nb"); +import("dayjs/locale/nl"); import("dayjs/locale/nl-be"); import("dayjs/locale/pl"); import("dayjs/locale/pt-br"); @@ -110,7 +111,6 @@ export function detectLocale() { case /^uk\b/.test(locale): locale = "uk"; break; - case /^vi\b/.test(locale): locale = "vi"; break; @@ -118,6 +118,9 @@ export function detectLocale() { case /^sv\b/.test(locale): locale = "sv"; break; + case /^nl\b/.test(locale): + locale = "nl"; + break; case /^nl-be\b/.test(locale): locale = "nl-be"; break; From f67bccf8c5470cb280fe854d92aa2666c270bcf5 Mon Sep 17 00:00:00 2001 From: Ariel Leyva Date: Sat, 14 Feb 2026 01:37:28 -0500 Subject: [PATCH 038/126] feat: support for multiple encodings in CSV files (#5756) --- frontend/package.json | 1 + frontend/pnpm-lock.yaml | 184 +------------------- frontend/src/api/files.ts | 15 +- frontend/src/components/files/CsvViewer.vue | 149 ++++++++++------ frontend/src/i18n/en.json | 3 +- frontend/src/types/file.d.ts | 6 + frontend/src/utils/csv.ts | 64 ------- frontend/src/utils/encodings.ts | 95 ++++++++++ frontend/src/views/files/Editor.vue | 49 ++++-- frontend/src/views/files/Preview.vue | 8 +- http/resource.go | 21 +++ 11 files changed, 275 insertions(+), 320 deletions(-) delete mode 100644 frontend/src/utils/csv.ts create mode 100644 frontend/src/utils/encodings.ts diff --git a/frontend/package.json b/frontend/package.json index ae5609ee06..7dd3c7c656 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -21,6 +21,7 @@ "@vueuse/core": "^14.0.0", "@vueuse/integrations": "^14.0.0", "ace-builds": "^1.43.2", + "csv-parse": "^6.1.0", "dayjs": "^1.11.13", "dompurify": "^3.2.6", "epubjs": "^0.3.93", diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 2f6cb3f82e..45bc6c07a9 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -20,6 +20,9 @@ importers: 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.19 @@ -705,24 +708,12 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.27.2': - resolution: {integrity: sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==} - 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.2': - resolution: {integrity: sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - '@esbuild/android-x64@0.25.12': resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} engines: {node: '>=18'} @@ -753,12 +744,6 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.27.2': - resolution: {integrity: sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - '@esbuild/freebsd-arm64@0.25.12': resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} engines: {node: '>=18'} @@ -801,24 +786,12 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.27.2': - resolution: {integrity: sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==} - 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.2': - resolution: {integrity: sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==} - 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'} @@ -837,24 +810,12 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.27.2': - resolution: {integrity: sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==} - 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.2': - resolution: {integrity: sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - '@esbuild/linux-riscv64@0.25.12': resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} engines: {node: '>=18'} @@ -945,60 +906,30 @@ packages: cpu: [arm64] os: [openharmony] - '@esbuild/openharmony-arm64@0.27.2': - resolution: {integrity: sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==} - 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.2': - resolution: {integrity: sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==} - 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.2': - resolution: {integrity: sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==} - 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.2': - resolution: {integrity: sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==} - 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.2': - resolution: {integrity: sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - '@eslint-community/eslint-utils@4.9.0': resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1170,26 +1101,11 @@ packages: cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.55.1': - resolution: {integrity: sha512-eFZCb1YUqhTysgW3sj/55du5cG57S7UTNtdMjCW7LwVcj3dTTcowCsC8p7uBdzKsZYa8J7IDE8lhMI+HX1vQvg==} - cpu: [arm64] - os: [android] - - '@rollup/rollup-darwin-arm64@4.55.1': - resolution: {integrity: sha512-p3grE2PHcQm2e8PSGZdzIhCKbMCw/xi9XvMPErPhwO17vxtvCN5FEA2mSLgmKlCjHGMQTP6phuQTYWUnKewwGg==} - cpu: [arm64] - os: [darwin] - '@rollup/rollup-darwin-x64@4.55.1': resolution: {integrity: sha512-rDUjG25C9qoTm+e02Esi+aqTKSBYwVTaoS1wxcN47/Luqef57Vgp96xNANwt5npq9GDxsH7kXxNkJVEsWEOEaQ==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.55.1': - resolution: {integrity: sha512-+JiU7Jbp5cdxekIgdte0jfcu5oqw4GCKr6i3PJTlXTCU5H5Fvtkpbs4XJHRmWNXF+hKmn4v7ogI5OQPaupJgOg==} - cpu: [arm64] - os: [freebsd] - '@rollup/rollup-freebsd-x64@4.55.1': resolution: {integrity: sha512-V5xC1tOVWtLLmr3YUk2f6EJK4qksksOYiz/TCsFHu/R+woubcLWdC9nZQmwjOAbmExBIVKsm1/wKmEy4z4u4Bw==} cpu: [x64] @@ -1207,18 +1123,6 @@ packages: os: [linux] libc: [musl] - '@rollup/rollup-linux-arm64-gnu@4.55.1': - resolution: {integrity: sha512-a59mwd1k6x8tXKcUxSyISiquLwB5pX+fJW9TkWU46lCqD/GRDe9uDN31jrMmVP3feI3mhAdvcCClhV8V5MhJFQ==} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-arm64-musl@4.55.1': - resolution: {integrity: sha512-puS1MEgWX5GsHSoiAsF0TYrpomdvkaXm0CofIMG5uVkP6IBV+ZO9xhC5YEN49nsgYo1DuuMquF9+7EDBVYu4uA==} - cpu: [arm64] - os: [linux] - libc: [musl] - '@rollup/rollup-linux-loong64-gnu@4.55.1': resolution: {integrity: sha512-r3Wv40in+lTsULSb6nnoudVbARdOwb2u5fpeoOAZjFLznp6tDU8kd+GTHmJoqZ9lt6/Sys33KdIHUaQihFcu7g==} cpu: [loong64] @@ -1283,11 +1187,6 @@ packages: cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.55.1': - resolution: {integrity: sha512-yR6Bl3tMC/gBok5cz/Qi0xYnVbIxGx5Fcf/ca0eB6/6JwOY+SRUcJfI0OpeTpPls7f194as62thCt/2BjxYN8g==} - cpu: [arm64] - os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.55.1': resolution: {integrity: sha512-3fZBidchE0eY0oFZBnekYCfg+5wAB0mbpCBuofh5mZuzIU/4jIVkbESmd2dOsFNS78b53CYv3OAtwqkZZmU5nA==} cpu: [ia32] @@ -1854,6 +1753,9 @@ packages: 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==} @@ -3605,15 +3507,9 @@ snapshots: '@esbuild/android-arm64@0.25.12': optional: true - '@esbuild/android-arm64@0.27.2': - optional: true - '@esbuild/android-arm@0.25.12': optional: true - '@esbuild/android-arm@0.27.2': - optional: true - '@esbuild/android-x64@0.25.12': optional: true @@ -3629,9 +3525,6 @@ snapshots: '@esbuild/darwin-x64@0.25.12': optional: true - '@esbuild/darwin-x64@0.27.2': - optional: true - '@esbuild/freebsd-arm64@0.25.12': optional: true @@ -3653,15 +3546,9 @@ snapshots: '@esbuild/linux-arm@0.25.12': optional: true - '@esbuild/linux-arm@0.27.2': - optional: true - '@esbuild/linux-ia32@0.25.12': optional: true - '@esbuild/linux-ia32@0.27.2': - optional: true - '@esbuild/linux-loong64@0.25.12': optional: true @@ -3671,15 +3558,9 @@ snapshots: '@esbuild/linux-mips64el@0.25.12': optional: true - '@esbuild/linux-mips64el@0.27.2': - optional: true - '@esbuild/linux-ppc64@0.25.12': optional: true - '@esbuild/linux-ppc64@0.27.2': - optional: true - '@esbuild/linux-riscv64@0.25.12': optional: true @@ -3725,33 +3606,18 @@ snapshots: '@esbuild/openharmony-arm64@0.25.12': optional: true - '@esbuild/openharmony-arm64@0.27.2': - optional: true - '@esbuild/sunos-x64@0.25.12': optional: true - '@esbuild/sunos-x64@0.27.2': - optional: true - '@esbuild/win32-arm64@0.25.12': optional: true - '@esbuild/win32-arm64@0.27.2': - optional: true - '@esbuild/win32-ia32@0.25.12': optional: true - '@esbuild/win32-ia32@0.27.2': - optional: true - '@esbuild/win32-x64@0.25.12': optional: true - '@esbuild/win32-x64@0.27.2': - optional: true - '@eslint-community/eslint-utils@4.9.0(eslint@9.39.2)': dependencies: eslint: 9.39.2 @@ -3926,18 +3792,9 @@ snapshots: '@rollup/rollup-android-arm-eabi@4.55.1': optional: true - '@rollup/rollup-android-arm64@4.55.1': - optional: true - - '@rollup/rollup-darwin-arm64@4.55.1': - optional: true - '@rollup/rollup-darwin-x64@4.55.1': optional: true - '@rollup/rollup-freebsd-arm64@4.55.1': - optional: true - '@rollup/rollup-freebsd-x64@4.55.1': optional: true @@ -3947,12 +3804,6 @@ snapshots: '@rollup/rollup-linux-arm-musleabihf@4.55.1': optional: true - '@rollup/rollup-linux-arm64-gnu@4.55.1': - optional: true - - '@rollup/rollup-linux-arm64-musl@4.55.1': - optional: true - '@rollup/rollup-linux-loong64-gnu@4.55.1': optional: true @@ -3986,9 +3837,6 @@ snapshots: '@rollup/rollup-openharmony-arm64@4.55.1': optional: true - '@rollup/rollup-win32-arm64-msvc@4.55.1': - optional: true - '@rollup/rollup-win32-ia32-msvc@4.55.1': optional: true @@ -4670,6 +4518,8 @@ snapshots: csstype@3.2.3: {} + csv-parse@6.1.0: {} + custom-error-instance@2.1.1: {} d@1.0.2: @@ -4759,19 +4609,12 @@ snapshots: esbuild@0.27.2: optionalDependencies: '@esbuild/aix-ppc64': 0.27.2 - '@esbuild/android-arm': 0.27.2 - '@esbuild/android-arm64': 0.27.2 '@esbuild/android-x64': 0.27.2 '@esbuild/darwin-arm64': 0.27.2 - '@esbuild/darwin-x64': 0.27.2 '@esbuild/freebsd-arm64': 0.27.2 '@esbuild/freebsd-x64': 0.27.2 - '@esbuild/linux-arm': 0.27.2 '@esbuild/linux-arm64': 0.27.2 - '@esbuild/linux-ia32': 0.27.2 '@esbuild/linux-loong64': 0.27.2 - '@esbuild/linux-mips64el': 0.27.2 - '@esbuild/linux-ppc64': 0.27.2 '@esbuild/linux-riscv64': 0.27.2 '@esbuild/linux-s390x': 0.27.2 '@esbuild/linux-x64': 0.27.2 @@ -4779,11 +4622,6 @@ snapshots: '@esbuild/netbsd-x64': 0.27.2 '@esbuild/openbsd-arm64': 0.27.2 '@esbuild/openbsd-x64': 0.27.2 - '@esbuild/openharmony-arm64': 0.27.2 - '@esbuild/sunos-x64': 0.27.2 - '@esbuild/win32-arm64': 0.27.2 - '@esbuild/win32-ia32': 0.27.2 - '@esbuild/win32-x64': 0.27.2 escalade@3.2.0: {} @@ -5392,15 +5230,10 @@ snapshots: '@types/estree': 1.0.8 optionalDependencies: '@rollup/rollup-android-arm-eabi': 4.55.1 - '@rollup/rollup-android-arm64': 4.55.1 - '@rollup/rollup-darwin-arm64': 4.55.1 '@rollup/rollup-darwin-x64': 4.55.1 - '@rollup/rollup-freebsd-arm64': 4.55.1 '@rollup/rollup-freebsd-x64': 4.55.1 '@rollup/rollup-linux-arm-gnueabihf': 4.55.1 '@rollup/rollup-linux-arm-musleabihf': 4.55.1 - '@rollup/rollup-linux-arm64-gnu': 4.55.1 - '@rollup/rollup-linux-arm64-musl': 4.55.1 '@rollup/rollup-linux-loong64-gnu': 4.55.1 '@rollup/rollup-linux-loong64-musl': 4.55.1 '@rollup/rollup-linux-ppc64-gnu': 4.55.1 @@ -5412,7 +5245,6 @@ snapshots: '@rollup/rollup-linux-x64-musl': 4.55.1 '@rollup/rollup-openbsd-x64': 4.55.1 '@rollup/rollup-openharmony-arm64': 4.55.1 - '@rollup/rollup-win32-arm64-msvc': 4.55.1 '@rollup/rollup-win32-ia32-msvc': 4.55.1 '@rollup/rollup-win32-x64-gnu': 4.55.1 '@rollup/rollup-win32-x64-msvc': 4.55.1 diff --git a/frontend/src/api/files.ts b/frontend/src/api/files.ts index d9ee12d696..c584d85a80 100644 --- a/frontend/src/api/files.ts +++ b/frontend/src/api/files.ts @@ -3,14 +3,25 @@ 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"; export async function fetch(url: string, signal?: AbortSignal) { + const encoding = isEncodableResponse(url); url = removePrefix(url); - const res = await fetchURL(`/api/resources${url}`, { signal }); + const res = await fetchURL(`/api/resources${url}`, { + signal, + headers: { + "X-Encoding": encoding ? "true" : "false", + }, + }); let data: Resource; try { - data = (await res.json()) as Resource; + 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") { diff --git a/frontend/src/components/files/CsvViewer.vue b/frontend/src/components/files/CsvViewer.vue index b926d3901b..fdcaaed9f4 100644 --- a/frontend/src/components/files/CsvViewer.vue +++ b/frontend/src/components/files/CsvViewer.vue @@ -4,21 +4,57 @@ error

{{ displayError }}

-
+
description

{{ $t("files.lonely") }}

+
+
+ + +
+
+ + +
+
- - + @@ -26,29 +62,11 @@
+ {{ header || `Column ${index + 1}` }}
{{ cell }}
@@ -56,11 +74,15 @@ @@ -213,10 +247,6 @@ const displayError = computed(() => { padding: 0.5rem; } -.csv-footer > :only-child { - margin-left: auto; -} - .csv-info { display: flex; align-items: center; @@ -230,18 +260,25 @@ const displayError = computed(() => { font-size: 0.875rem; } -.column-separator { +.csv-header { + display: flex; + justify-content: space-between; + padding: 0.25rem; +} + +.header-select { display: flex; align-items: center; gap: 0.5rem; + margin-bottom: 0.5rem; } -.column-separator > label { +.header-select > label { font-size: small; - text-align: end; + max-width: 80px; } -.column-separator > select { +.header-select > select { margin-bottom: 0; } diff --git a/frontend/src/i18n/en.json b/frontend/src/i18n/en.json index 3fcdf6351c..8938cb06d8 100644 --- a/frontend/src/i18n/en.json +++ b/frontend/src/i18n/en.json @@ -88,7 +88,8 @@ "comma": "Comma (,)", "semicolon": "Semicolon (;)", "both": "Both (,) and (;)" - } + }, + "fileEncoding": "File Encoding" }, "help": { "click": "select file or directory", diff --git a/frontend/src/types/file.d.ts b/frontend/src/types/file.d.ts index 5664c16bfc..6b9b6372cd 100644 --- a/frontend/src/types/file.d.ts +++ b/frontend/src/types/file.d.ts @@ -21,6 +21,7 @@ interface Resource extends ResourceBase { index: number; subtitles?: string[]; content?: string; + rawContent?: ArrayBuffer; } interface ResourceItem extends ResourceBase { @@ -57,3 +58,8 @@ interface BreadCrumb { name: string; url: string; } + +interface CsvData { + headers: string[]; + rows: string[][]; +} diff --git a/frontend/src/utils/csv.ts b/frontend/src/utils/csv.ts deleted file mode 100644 index c03731e7c2..0000000000 --- a/frontend/src/utils/csv.ts +++ /dev/null @@ -1,64 +0,0 @@ -export interface CsvData { - headers: string[]; - rows: string[][]; -} - -/** - * Parse CSV content into headers and rows - * Supports quoted fields and handles commas within quotes - */ -export function parseCSV( - content: string, - columnSeparator: Array -): CsvData { - if (!content || content.trim().length === 0) { - return { headers: [], rows: [] }; - } - - const lines = content.split(/\r?\n/); - const result: string[][] = []; - - for (const line of lines) { - if (line.trim().length === 0) continue; - - const row: string[] = []; - let currentField = ""; - let inQuotes = false; - - for (let i = 0; i < line.length; i++) { - const char = line[i]; - const nextChar = line[i + 1]; - - if (char === '"') { - if (inQuotes && nextChar === '"') { - // Escaped quote - currentField += '"'; - i++; // Skip next quote - } else { - // Toggle quote state - inQuotes = !inQuotes; - } - } else if (columnSeparator.includes(char) && !inQuotes) { - // Field separator - row.push(currentField); - currentField = ""; - } else { - currentField += char; - } - } - - // Add the last field - row.push(currentField); - result.push(row); - } - - if (result.length === 0) { - return { headers: [], rows: [] }; - } - - // First row is headers - const headers = result[0]; - const rows = result.slice(1); - - return { headers, rows }; -} diff --git a/frontend/src/utils/encodings.ts b/frontend/src/utils/encodings.ts new file mode 100644 index 0000000000..80f1e21975 --- /dev/null +++ b/frontend/src/utils/encodings.ts @@ -0,0 +1,95 @@ +export const availableEncodings = [ + "utf-8", + "ibm866", + "iso-8859-2", + "iso-8859-3", + "iso-8859-4", + "iso-8859-5", + "iso-8859-6", + "iso-8859-7", + "iso-8859-8", + "iso-8859-8-i", + "iso-8859-10", + "iso-8859-13", + "iso-8859-14", + "iso-8859-15", + "iso-8859-16", + "koi8-r", + "koi8-u", + "macintosh", + "windows-874", + "windows-1250", + "windows-1251", + "windows-1252", + "windows-1253", + "windows-1254", + "windows-1255", + "windows-1256", + "windows-1257", + "windows-1258", + "x-mac-cyrillic", + "gbk", + "gb18030", + "big5", + "euc-jp", + "iso-2022-jp", + "shift_jis", + "euc-kr", + "utf-16be", + "utf-16le", +]; + +export function decode(content: ArrayBuffer, encoding: string): string { + const decoder = new TextDecoder(encoding); + return decoder.decode(content); +} + +export function isEncodableResponse(url: string): boolean { + const extensions = [".csv"]; + + if (typeof TextDecoder === "undefined") { + return false; + } + + for (const extension of extensions) { + if (url.endsWith(extension)) { + return true; + } + } + + return false; +} + +export async function makeRawResource( + res: Response, + url: string +): Promise { + const buffer = await res.arrayBuffer(); + return { + items: [], + numDirs: 0, + numFiles: 0, + sorting: {} as Sorting, + index: 0, + extension: getExtension(url), + isDir: false, + isSymlink: false, + path: url, + size: buffer.byteLength, + modified: new Date().toISOString(), + name: url.split("/").pop() || "", + type: "text", + mode: 0, + url: `/files${url}`, + rawContent: buffer, + content: decode(buffer, "utf-8"), + }; +} + +function getExtension(url: string): string { + const lastDotIndex = url.lastIndexOf("."); + if (lastDotIndex === -1) { + return ""; + } + return url.substring(lastDotIndex); +} diff --git a/frontend/src/views/files/Editor.vue b/frontend/src/views/files/Editor.vue index 7d3a8dfc75..4ce7b427dd 100644 --- a/frontend/src/views/files/Editor.vue +++ b/frontend/src/views/files/Editor.vue @@ -171,25 +171,19 @@ onMounted(() => { `https://cdn.jsdelivr.net/npm/ace-builds@${ace_version}/src-min-noconflict/` ); - editor.value = ace.edit("editor", { - value: fileContent, - showPrintMargin: false, - readOnly: fileStore.req?.type === "textImmutable", - theme: getEditorTheme(authStore.user?.aceEditorTheme ?? ""), - mode: modelist.getModeForPath(fileStore.req!.name).mode, - wrap: true, - enableBasicAutocompletion: true, - enableLiveAutocompletion: true, - enableSnippets: true, - }); - - editor.value.setFontSize(fontSize.value); - editor.value.focus(); - - editor.value.getSelection().on("changeSelection", () => { - isSelectionEmpty.value = - editor.value == null || editor.value.getSelectedText().length == 0; - }); + if (!layoutStore.loading) { + initEditor(fileContent); + } else { + const unwatch = watchEffect(() => { + // Initialize editor when layout is loaded + if (!layoutStore.loading) { + setTimeout(() => { + initEditor(fileContent); + unwatch(); + }, 50); + } + }); + } }); onBeforeUnmount(() => { @@ -218,6 +212,23 @@ onBeforeRouteUpdate((to, from, next) => { }); }); +const initEditor = (fileContent: string) => { + editor.value = ace.edit("editor", { + value: fileContent, + showPrintMargin: false, + readOnly: fileStore.req?.type === "textImmutable", + theme: getEditorTheme(authStore.user?.aceEditorTheme ?? ""), + mode: modelist.getModeForPath(fileStore.req!.name).mode, + wrap: true, + enableBasicAutocompletion: true, + enableLiveAutocompletion: true, + enableSnippets: true, + }); + + editor.value.setFontSize(fontSize.value); + editor.value.focus(); +}; + const keyEvent = (event: KeyboardEvent) => { if (event.code === "Escape") { close(); diff --git a/frontend/src/views/files/Preview.vue b/frontend/src/views/files/Preview.vue index 0956285693..46670a350b 100644 --- a/frontend/src/views/files/Preview.vue +++ b/frontend/src/views/files/Preview.vue @@ -253,7 +253,7 @@ const hoverNav = ref(false); const autoPlay = ref(false); const previousRaw = ref(""); const nextRaw = ref(""); -const csvContent = ref(""); +const csvContent = ref(""); const csvError = ref(""); const player = ref(null); @@ -393,7 +393,11 @@ const updatePreview = async () => { if (fileStore.req.size > CSV_MAX_SIZE) { csvError.value = t("files.csvTooLarge"); } else { - csvContent.value = fileStore.req.content ?? ""; + if (fileStore.req.rawContent != null) { + csvContent.value = fileStore.req.rawContent; + } else { + csvContent.value = fileStore.req.content ?? ""; + } } } diff --git a/http/resource.go b/http/resource.go index 59ce7f5bee..7066f35a63 100644 --- a/http/resource.go +++ b/http/resource.go @@ -36,10 +36,31 @@ var resourceGetHandler = withUser(func(w http.ResponseWriter, r *http.Request, d return errToStatus(err), err } + encoding := r.Header.Get("X-Encoding") if file.IsDir { file.Sorting = d.user.Sorting file.ApplySort() return renderJSON(w, r, file) + } else if encoding == "true" { + if file.Type != "text" { + return http.StatusUnsupportedMediaType, fmt.Errorf("file is not a text file") + } + + f, err := d.user.Fs.Open(r.URL.Path) + if err != nil { + return errToStatus(err), err + } + defer f.Close() + + data, err := io.ReadAll(f) + if err != nil { + return http.StatusInternalServerError, err + } + + w.Header().Set("Content-Type", "application/octet-stream") + w.WriteHeader(http.StatusOK) + _, err = w.Write(data) + return 0, err } if checksum := r.URL.Query().Get("checksum"); checksum != "" { From e5bc0d3cce18fa7b069688b176b99efbb67382d2 Mon Sep 17 00:00:00 2001 From: Aaron Dill <117116764+aarondill@users.noreply.github.com> Date: Sat, 14 Feb 2026 00:40:52 -0600 Subject: [PATCH 039/126] fix: wrap response text in Error before reject (#5753) --- frontend/src/api/files.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/api/files.ts b/frontend/src/api/files.ts index c584d85a80..e16b75cd80 100644 --- a/frontend/src/api/files.ts +++ b/frontend/src/api/files.ts @@ -151,9 +151,9 @@ async function postResources( if (request.status === 200) { resolve(request.responseText); } else if (request.status === 409) { - reject(request.status); + reject(new Error(request.status.toString())); } else { - reject(request.responseText); + reject(new Error(request.responseText)); } }; From 5e8f5be245fd0126545ef5ca61c2d428ac128ad5 Mon Sep 17 00:00:00 2001 From: "transifex-integration[bot]" <43880903+transifex-integration[bot]@users.noreply.github.com> Date: Sat, 14 Feb 2026 08:27:14 +0100 Subject: [PATCH 040/126] feat: Updates for project File Browser (#5759) Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com> --- frontend/src/i18n/ar.json | 3 ++- frontend/src/i18n/bg.json | 3 ++- frontend/src/i18n/ca.json | 3 ++- frontend/src/i18n/cs.json | 3 ++- frontend/src/i18n/de.json | 3 ++- frontend/src/i18n/el.json | 3 ++- frontend/src/i18n/es.json | 3 ++- frontend/src/i18n/fa.json | 3 ++- frontend/src/i18n/fr.json | 3 ++- frontend/src/i18n/he.json | 3 ++- frontend/src/i18n/hr.json | 3 ++- frontend/src/i18n/hu.json | 3 ++- frontend/src/i18n/is.json | 3 ++- frontend/src/i18n/it.json | 3 ++- frontend/src/i18n/ja.json | 3 ++- frontend/src/i18n/ko.json | 3 ++- frontend/src/i18n/lv.json | 3 ++- frontend/src/i18n/lv_LV.json | 3 ++- frontend/src/i18n/nl-be.json | 3 ++- frontend/src/i18n/nl.json | 3 ++- frontend/src/i18n/no.json | 3 ++- frontend/src/i18n/pl.json | 3 ++- frontend/src/i18n/pt-br.json | 3 ++- frontend/src/i18n/pt.json | 3 ++- frontend/src/i18n/ro.json | 3 ++- frontend/src/i18n/ru.json | 3 ++- frontend/src/i18n/sk.json | 3 ++- frontend/src/i18n/sv-se.json | 3 ++- frontend/src/i18n/tr.json | 3 ++- frontend/src/i18n/uk.json | 3 ++- frontend/src/i18n/vi.json | 3 ++- frontend/src/i18n/zh-cn.json | 3 ++- frontend/src/i18n/zh-tw.json | 3 ++- 33 files changed, 66 insertions(+), 33 deletions(-) diff --git a/frontend/src/i18n/ar.json b/frontend/src/i18n/ar.json index b8f431eb03..19662682d7 100644 --- a/frontend/src/i18n/ar.json +++ b/frontend/src/i18n/ar.json @@ -88,7 +88,8 @@ "comma": "Comma (,)", "semicolon": "Semicolon (;)", "both": "Both (,) and (;)" - } + }, + "fileEncoding": "File Encoding" }, "help": { "click": "حدد الملف أو المجلد", diff --git a/frontend/src/i18n/bg.json b/frontend/src/i18n/bg.json index d1388d3f81..cec17ec987 100644 --- a/frontend/src/i18n/bg.json +++ b/frontend/src/i18n/bg.json @@ -88,7 +88,8 @@ "comma": "Comma (,)", "semicolon": "Semicolon (;)", "both": "Both (,) and (;)" - } + }, + "fileEncoding": "File Encoding" }, "help": { "click": "избери файл или директория", diff --git a/frontend/src/i18n/ca.json b/frontend/src/i18n/ca.json index 2ca2b5d4e1..2d5b2d0a41 100644 --- a/frontend/src/i18n/ca.json +++ b/frontend/src/i18n/ca.json @@ -88,7 +88,8 @@ "comma": "Comma (,)", "semicolon": "Semicolon (;)", "both": "Both (,) and (;)" - } + }, + "fileEncoding": "File Encoding" }, "help": { "click": "seleccionar fitxer o carpeta", diff --git a/frontend/src/i18n/cs.json b/frontend/src/i18n/cs.json index d57c433656..119b0ed00e 100644 --- a/frontend/src/i18n/cs.json +++ b/frontend/src/i18n/cs.json @@ -88,7 +88,8 @@ "comma": "Comma (,)", "semicolon": "Semicolon (;)", "both": "Both (,) and (;)" - } + }, + "fileEncoding": "File Encoding" }, "help": { "click": "vyberte soubor nebo adresář", diff --git a/frontend/src/i18n/de.json b/frontend/src/i18n/de.json index df3bc0bde5..ab27610678 100644 --- a/frontend/src/i18n/de.json +++ b/frontend/src/i18n/de.json @@ -88,7 +88,8 @@ "comma": "Komma (,)", "semicolon": "Semikolon (;)", "both": "Beides (,) und (;)" - } + }, + "fileEncoding": "File Encoding" }, "help": { "click": "Datei oder Verzeichnis auswählen", diff --git a/frontend/src/i18n/el.json b/frontend/src/i18n/el.json index 04e837f3fb..ce9054c0fc 100644 --- a/frontend/src/i18n/el.json +++ b/frontend/src/i18n/el.json @@ -88,7 +88,8 @@ "comma": "Comma (,)", "semicolon": "Semicolon (;)", "both": "Both (,) and (;)" - } + }, + "fileEncoding": "File Encoding" }, "help": { "click": "επιλέξτε αρχείο ή φάκελο", diff --git a/frontend/src/i18n/es.json b/frontend/src/i18n/es.json index aaab108bb5..8e46a26d80 100644 --- a/frontend/src/i18n/es.json +++ b/frontend/src/i18n/es.json @@ -88,7 +88,8 @@ "comma": "Comma (,)", "semicolon": "Semicolon (;)", "both": "Both (,) and (;)" - } + }, + "fileEncoding": "File Encoding" }, "help": { "click": "seleccionar archivo o carpeta", diff --git a/frontend/src/i18n/fa.json b/frontend/src/i18n/fa.json index 3484d3a088..c691c30d0f 100644 --- a/frontend/src/i18n/fa.json +++ b/frontend/src/i18n/fa.json @@ -88,7 +88,8 @@ "comma": "Comma (,)", "semicolon": "Semicolon (;)", "both": "Both (,) and (;)" - } + }, + "fileEncoding": "File Encoding" }, "help": { "click": "انتخاب فایل یا پوشه", diff --git a/frontend/src/i18n/fr.json b/frontend/src/i18n/fr.json index fb2cd2c6aa..d187d3503e 100644 --- a/frontend/src/i18n/fr.json +++ b/frontend/src/i18n/fr.json @@ -88,7 +88,8 @@ "comma": "Virgule (,)", "semicolon": "Point-virgule (;)", "both": "Les (,) et (;)" - } + }, + "fileEncoding": "File Encoding" }, "help": { "click": "Sélectionner un fichier ou dossier", diff --git a/frontend/src/i18n/he.json b/frontend/src/i18n/he.json index f340fecae2..86270547c1 100644 --- a/frontend/src/i18n/he.json +++ b/frontend/src/i18n/he.json @@ -88,7 +88,8 @@ "comma": "Comma (,)", "semicolon": "Semicolon (;)", "both": "Both (,) and (;)" - } + }, + "fileEncoding": "File Encoding" }, "help": { "click": "בחר קובץ או תיקייה", diff --git a/frontend/src/i18n/hr.json b/frontend/src/i18n/hr.json index e21ffd80a8..d444dcd4d3 100644 --- a/frontend/src/i18n/hr.json +++ b/frontend/src/i18n/hr.json @@ -88,7 +88,8 @@ "comma": "Zarez (,)", "semicolon": "Točka zarez (;)", "both": "I (,) i (;)" - } + }, + "fileEncoding": "File Encoding" }, "help": { "click": "odaberi datoteku ili mapu", diff --git a/frontend/src/i18n/hu.json b/frontend/src/i18n/hu.json index f6d856cf6e..bb0d3c48e1 100644 --- a/frontend/src/i18n/hu.json +++ b/frontend/src/i18n/hu.json @@ -88,7 +88,8 @@ "comma": "Comma (,)", "semicolon": "Semicolon (;)", "both": "Both (,) and (;)" - } + }, + "fileEncoding": "File Encoding" }, "help": { "click": "mappa vagy fájl kijelölése", diff --git a/frontend/src/i18n/is.json b/frontend/src/i18n/is.json index 01b3ace68c..6cbdcb358b 100644 --- a/frontend/src/i18n/is.json +++ b/frontend/src/i18n/is.json @@ -88,7 +88,8 @@ "comma": "Comma (,)", "semicolon": "Semicolon (;)", "both": "Both (,) and (;)" - } + }, + "fileEncoding": "File Encoding" }, "help": { "click": "velja skjal eða möppu", diff --git a/frontend/src/i18n/it.json b/frontend/src/i18n/it.json index ad54172c7c..db3b64a209 100644 --- a/frontend/src/i18n/it.json +++ b/frontend/src/i18n/it.json @@ -88,7 +88,8 @@ "comma": "Comma (,)", "semicolon": "Semicolon (;)", "both": "Both (,) and (;)" - } + }, + "fileEncoding": "File Encoding" }, "help": { "click": "seleziona un file o una cartella", diff --git a/frontend/src/i18n/ja.json b/frontend/src/i18n/ja.json index 44beb9cbdb..bf36fc11e0 100644 --- a/frontend/src/i18n/ja.json +++ b/frontend/src/i18n/ja.json @@ -88,7 +88,8 @@ "comma": "Comma (,)", "semicolon": "Semicolon (;)", "both": "Both (,) and (;)" - } + }, + "fileEncoding": "File Encoding" }, "help": { "click": "ファイルやフォルダーを選択", diff --git a/frontend/src/i18n/ko.json b/frontend/src/i18n/ko.json index d56a524419..31c10ced87 100644 --- a/frontend/src/i18n/ko.json +++ b/frontend/src/i18n/ko.json @@ -88,7 +88,8 @@ "comma": "반점 (,)", "semicolon": "쌍반점 (;)", "both": "(,) 및 (;) 모두" - } + }, + "fileEncoding": "File Encoding" }, "help": { "click": "파일 또는 디렉터리 선택", diff --git a/frontend/src/i18n/lv.json b/frontend/src/i18n/lv.json index c7e1d02f8c..bc62eb14c6 100644 --- a/frontend/src/i18n/lv.json +++ b/frontend/src/i18n/lv.json @@ -88,7 +88,8 @@ "comma": "Komats (,)", "semicolon": "Semikols (;)", "both": "Gan (,) gan (;)" - } + }, + "fileEncoding": "File Encoding" }, "help": { "click": "atlasiet failu vai direktoriju", diff --git a/frontend/src/i18n/lv_LV.json b/frontend/src/i18n/lv_LV.json index c6af9aedac..49a85bc6aa 100644 --- a/frontend/src/i18n/lv_LV.json +++ b/frontend/src/i18n/lv_LV.json @@ -88,7 +88,8 @@ "comma": "Komats (,)", "semicolon": "Semikols (;)", "both": "Gan (,) gan (;)" - } + }, + "fileEncoding": "File Encoding" }, "help": { "click": "atlasiet failu vai direktoriju", diff --git a/frontend/src/i18n/nl-be.json b/frontend/src/i18n/nl-be.json index a5fcb062d3..dfcdeb69a2 100644 --- a/frontend/src/i18n/nl-be.json +++ b/frontend/src/i18n/nl-be.json @@ -88,7 +88,8 @@ "comma": "Comma (,)", "semicolon": "Semicolon (;)", "both": "Both (,) and (;)" - } + }, + "fileEncoding": "File Encoding" }, "help": { "click": "selecteer bestand of map", diff --git a/frontend/src/i18n/nl.json b/frontend/src/i18n/nl.json index 5c840b301f..4cc992eeae 100644 --- a/frontend/src/i18n/nl.json +++ b/frontend/src/i18n/nl.json @@ -88,7 +88,8 @@ "comma": "Komma (,)", "semicolon": "Puntkomma (;)", "both": "Beide (,) en (;)" - } + }, + "fileEncoding": "File Encoding" }, "help": { "click": "selecteer bestand of map", diff --git a/frontend/src/i18n/no.json b/frontend/src/i18n/no.json index 3a5e7bdd4b..c38573d558 100644 --- a/frontend/src/i18n/no.json +++ b/frontend/src/i18n/no.json @@ -88,7 +88,8 @@ "comma": "Comma (,)", "semicolon": "Semicolon (;)", "both": "Both (,) and (;)" - } + }, + "fileEncoding": "File Encoding" }, "help": { "click": "velg fil eller katalog", diff --git a/frontend/src/i18n/pl.json b/frontend/src/i18n/pl.json index 64b9f04a3c..45f3d8f2ff 100644 --- a/frontend/src/i18n/pl.json +++ b/frontend/src/i18n/pl.json @@ -88,7 +88,8 @@ "comma": "Przecinek (,)", "semicolon": "Średnik (;)", "both": "Zarówno (,), jak i (;)" - } + }, + "fileEncoding": "File Encoding" }, "help": { "click": "zaznacz plik lub folder", diff --git a/frontend/src/i18n/pt-br.json b/frontend/src/i18n/pt-br.json index f6aa8f4efb..42d3d140e3 100644 --- a/frontend/src/i18n/pt-br.json +++ b/frontend/src/i18n/pt-br.json @@ -88,7 +88,8 @@ "comma": "Comma (,)", "semicolon": "Semicolon (;)", "both": "Both (,) and (;)" - } + }, + "fileEncoding": "File Encoding" }, "help": { "click": "selecionar pasta ou arquivo", diff --git a/frontend/src/i18n/pt.json b/frontend/src/i18n/pt.json index dcacf3b61c..bf1d33132d 100644 --- a/frontend/src/i18n/pt.json +++ b/frontend/src/i18n/pt.json @@ -88,7 +88,8 @@ "comma": "Comma (,)", "semicolon": "Semicolon (;)", "both": "Both (,) and (;)" - } + }, + "fileEncoding": "File Encoding" }, "help": { "click": "selecionar pasta ou ficheiro", diff --git a/frontend/src/i18n/ro.json b/frontend/src/i18n/ro.json index c80c4e288e..709bb11e74 100644 --- a/frontend/src/i18n/ro.json +++ b/frontend/src/i18n/ro.json @@ -88,7 +88,8 @@ "comma": "Comma (,)", "semicolon": "Semicolon (;)", "both": "Both (,) and (;)" - } + }, + "fileEncoding": "File Encoding" }, "help": { "click": "alege fișier sau director", diff --git a/frontend/src/i18n/ru.json b/frontend/src/i18n/ru.json index 60b211f65f..5ce4112c24 100644 --- a/frontend/src/i18n/ru.json +++ b/frontend/src/i18n/ru.json @@ -88,7 +88,8 @@ "comma": "Запятая (,)", "semicolon": "Точка с запятой (;)", "both": "Оба варианта — (,) и (;)" - } + }, + "fileEncoding": "File Encoding" }, "help": { "click": "выбрать файл или каталог", diff --git a/frontend/src/i18n/sk.json b/frontend/src/i18n/sk.json index 201d2d3db5..730e729ce8 100644 --- a/frontend/src/i18n/sk.json +++ b/frontend/src/i18n/sk.json @@ -88,7 +88,8 @@ "comma": "Comma (,)", "semicolon": "Semicolon (;)", "both": "Both (,) and (;)" - } + }, + "fileEncoding": "File Encoding" }, "help": { "click": "vyberie súbor alebo priečinok", diff --git a/frontend/src/i18n/sv-se.json b/frontend/src/i18n/sv-se.json index 642252d9ac..9b6ec8a023 100644 --- a/frontend/src/i18n/sv-se.json +++ b/frontend/src/i18n/sv-se.json @@ -88,7 +88,8 @@ "comma": "Comma (,)", "semicolon": "Semicolon (;)", "both": "Both (,) and (;)" - } + }, + "fileEncoding": "File Encoding" }, "help": { "click": "välj fil eller mapp", diff --git a/frontend/src/i18n/tr.json b/frontend/src/i18n/tr.json index f83e71037e..40881d351c 100644 --- a/frontend/src/i18n/tr.json +++ b/frontend/src/i18n/tr.json @@ -88,7 +88,8 @@ "comma": "Comma (,)", "semicolon": "Semicolon (;)", "both": "Both (,) and (;)" - } + }, + "fileEncoding": "File Encoding" }, "help": { "click": "dosya veya klasör seçin", diff --git a/frontend/src/i18n/uk.json b/frontend/src/i18n/uk.json index 782b86e9c9..e38e309c9f 100644 --- a/frontend/src/i18n/uk.json +++ b/frontend/src/i18n/uk.json @@ -88,7 +88,8 @@ "comma": "Comma (,)", "semicolon": "Semicolon (;)", "both": "Both (,) and (;)" - } + }, + "fileEncoding": "File Encoding" }, "help": { "click": "вибрати файл чи каталог", diff --git a/frontend/src/i18n/vi.json b/frontend/src/i18n/vi.json index 65e7fe01a8..72f5c160a7 100644 --- a/frontend/src/i18n/vi.json +++ b/frontend/src/i18n/vi.json @@ -88,7 +88,8 @@ "comma": "Comma (,)", "semicolon": "Semicolon (;)", "both": "Both (,) and (;)" - } + }, + "fileEncoding": "File Encoding" }, "help": { "click": "chọn tập tin hoặc thư mục", diff --git a/frontend/src/i18n/zh-cn.json b/frontend/src/i18n/zh-cn.json index da7e2b2d73..0ec45a4e9b 100644 --- a/frontend/src/i18n/zh-cn.json +++ b/frontend/src/i18n/zh-cn.json @@ -88,7 +88,8 @@ "comma": "逗号 (,)", "semicolon": "分号 (;)", "both": "逗号 (,) 和分号 (;)" - } + }, + "fileEncoding": "File Encoding" }, "help": { "click": "选择文件或文件夹", diff --git a/frontend/src/i18n/zh-tw.json b/frontend/src/i18n/zh-tw.json index c0cafc3d4d..cbee96be1e 100644 --- a/frontend/src/i18n/zh-tw.json +++ b/frontend/src/i18n/zh-tw.json @@ -88,7 +88,8 @@ "comma": "Comma (,)", "semicolon": "Semicolon (;)", "both": "Both (,) and (;)" - } + }, + "fileEncoding": "File Encoding" }, "help": { "click": "選擇檔案或目錄", From b09960e538387ff29371c80be1584720f65181e7 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 14 Feb 2026 07:59:55 +0100 Subject: [PATCH 041/126] fix(frontend): pnpm lock --- frontend/pnpm-lock.yaml | 2048 ++++++++++++++++++--------------------- 1 file changed, 944 insertions(+), 1104 deletions(-) diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 45bc6c07a9..02ec513286 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -16,7 +16,7 @@ importers: version: 14.2.1(vue@3.5.28(typescript@5.9.3)) '@vueuse/integrations': specifier: ^14.0.0 - version: 14.2.1(focus-trap@7.6.2)(jwt-decode@4.0.0)(vue@3.5.28(typescript@5.9.3)) + version: 14.2.1(focus-trap@8.0.0)(jwt-decode@4.0.0)(vue@3.5.28(typescript@5.9.3)) ace-builds: specifier: ^1.43.2 version: 1.43.6 @@ -82,7 +82,7 @@ importers: version: 3.5.28(typescript@5.9.3) vue-final-modal: specifier: ^4.5.5 - version: 4.5.5(@vueuse/core@14.2.1(vue@3.5.28(typescript@5.9.3)))(@vueuse/integrations@14.2.1(focus-trap@7.6.2)(jwt-decode@4.0.0)(vue@3.5.28(typescript@5.9.3)))(focus-trap@7.6.2)(vue@3.5.28(typescript@5.9.3)) + version: 4.5.5(@vueuse/core@14.2.1(vue@3.5.28(typescript@5.9.3)))(@vueuse/integrations@14.2.1(focus-trap@8.0.0)(jwt-decode@4.0.0)(vue@3.5.28(typescript@5.9.3)))(focus-trap@8.0.0)(vue@3.5.28(typescript@5.9.3)) vue-i18n: specifier: ^11.1.10 version: 11.2.8(vue@3.5.28(typescript@5.9.3)) @@ -101,7 +101,7 @@ importers: devDependencies: '@intlify/unplugin-vue-i18n': specifier: ^11.0.1 - version: 11.0.3(@vue/compiler-dom@3.5.28)(eslint@9.39.2)(rollup@4.55.1)(typescript@5.9.3)(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3)) + version: 11.0.3(@vue/compiler-dom@3.5.28)(eslint@9.39.2)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3)) '@tsconfig/node24': specifier: ^24.0.2 version: 24.0.4 @@ -113,7 +113,7 @@ importers: version: 24.10.13 '@typescript-eslint/eslint-plugin': specifier: ^8.37.0 - version: 8.55.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) + version: 8.55.0(@typescript-eslint/parser@8.55.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) '@vitejs/plugin-legacy': specifier: ^7.2.1 version: 7.2.1(terser@5.46.0)(vite@7.3.1(@types/node@24.10.13)(terser@5.46.0)(yaml@2.8.2)) @@ -125,7 +125,7 @@ importers: version: 10.2.0(eslint@9.39.2)(prettier@3.8.1) '@vue/eslint-config-typescript': specifier: ^14.6.0 - version: 14.6.0(eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.2.0(eslint@9.39.2)))(eslint@9.39.2)(typescript@5.9.3) + version: 14.6.0(eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.55.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.4.0(eslint@9.39.2)))(eslint@9.39.2)(typescript@5.9.3) '@vue/tsconfig': specifier: ^0.8.1 version: 0.8.1(typescript@5.9.3)(vue@3.5.28(typescript@5.9.3)) @@ -143,7 +143,7 @@ importers: version: 5.5.5(eslint-config-prettier@10.1.8(eslint@9.39.2))(eslint@9.39.2)(prettier@3.8.1) eslint-plugin-vue: specifier: ^10.5.1 - version: 10.8.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.2.0(eslint@9.39.2)) + version: 10.8.0(@typescript-eslint/parser@8.55.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.4.0(eslint@9.39.2)) postcss: specifier: ^8.5.6 version: 8.5.6 @@ -161,27 +161,23 @@ importers: version: 7.3.1(@types/node@24.10.13)(terser@5.46.0)(yaml@2.8.2) vite-plugin-compression2: specifier: ^2.3.1 - version: 2.4.0(rollup@4.55.1) + version: 2.4.0(rollup@4.57.1) vue-tsc: specifier: ^3.1.3 version: 3.2.4(typescript@5.9.3) packages: - '@babel/code-frame@7.27.1': - resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + '@babel/code-frame@7.29.0': + resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.28.5': - resolution: {integrity: sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==} + '@babel/compat-data@7.29.0': + resolution: {integrity: sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==} engines: {node: '>=6.9.0'} - '@babel/core@7.28.5': - resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==} - engines: {node: '>=6.9.0'} - - '@babel/generator@7.28.5': - resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} + '@babel/core@7.29.0': + resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} engines: {node: '>=6.9.0'} '@babel/generator@7.29.1': @@ -192,12 +188,12 @@ packages: resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.27.2': - resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} + '@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.5': - resolution: {integrity: sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ==} + '@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 @@ -208,8 +204,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-define-polyfill-provider@0.6.5': - resolution: {integrity: sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==} + '@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 @@ -221,12 +217,12 @@ packages: resolution: {integrity: sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==} engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.27.1': - resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} + '@babel/helper-module-imports@7.28.6': + resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} engines: {node: '>=6.9.0'} - '@babel/helper-module-transforms@7.28.3': - resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} + '@babel/helper-module-transforms@7.28.6': + resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -235,8 +231,8 @@ packages: resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} engines: {node: '>=6.9.0'} - '@babel/helper-plugin-utils@7.27.1': - resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} + '@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': @@ -245,8 +241,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-replace-supers@7.27.1': - resolution: {integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==} + '@babel/helper-replace-supers@7.28.6': + resolution: {integrity: sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -267,24 +263,14 @@ packages: resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} - '@babel/helper-wrap-function@7.28.3': - resolution: {integrity: sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==} + '@babel/helper-wrap-function@7.28.6': + resolution: {integrity: sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.28.4': - resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} + '@babel/helpers@7.28.6': + resolution: {integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.28.5': - resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/parser@7.28.6': - resolution: {integrity: sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==} - engines: {node: '>=6.0.0'} - hasBin: true - '@babel/parser@7.29.0': resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==} engines: {node: '>=6.0.0'} @@ -314,8 +300,8 @@ packages: peerDependencies: '@babel/core': ^7.13.0 - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3': - resolution: {integrity: sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw==} + '@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 @@ -326,14 +312,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-assertions@7.27.1': - resolution: {integrity: sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==} + '@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.27.1': - resolution: {integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==} + '@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 @@ -350,14 +336,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-async-generator-functions@7.28.0': - resolution: {integrity: sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==} + '@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.27.1': - resolution: {integrity: sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==} + '@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 @@ -368,32 +354,32 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-block-scoping@7.28.5': - resolution: {integrity: sha512-45DmULpySVvmq9Pj3X9B+62Xe+DJGov27QravQJU1LLcapR6/10i+gYVAucGGJpHBp5mYxIMK4nDAT/QDLr47g==} + '@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.27.1': - resolution: {integrity: sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==} + '@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.3': - resolution: {integrity: sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==} + '@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.4': - resolution: {integrity: sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==} + '@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.27.1': - resolution: {integrity: sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==} + '@babel/plugin-transform-computed-properties@7.28.6': + resolution: {integrity: sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -404,8 +390,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-dotall-regex@7.27.1': - resolution: {integrity: sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==} + '@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 @@ -416,8 +402,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1': - resolution: {integrity: sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==} + '@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 @@ -428,14 +414,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-explicit-resource-management@7.28.0': - resolution: {integrity: sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==} + '@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.5': - resolution: {integrity: sha512-D4WIMaFtwa2NizOp+dnoFjRez/ClKiC2BqqImwKd1X28nqBtZEyCYJ2ozQrrzlxAFrcrjxo39S6khe9RNDlGzw==} + '@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 @@ -458,8 +444,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-json-strings@7.27.1': - resolution: {integrity: sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==} + '@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 @@ -470,8 +456,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-logical-assignment-operators@7.28.5': - resolution: {integrity: sha512-axUuqnUTBuXyHGcJEVVh9pORaN6wC5bYfE7FGzPiaWa3syib9m7g+/IT/4VgCOe2Upef43PHzeAvcrVek6QuuA==} + '@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 @@ -488,14 +474,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-commonjs@7.27.1': - resolution: {integrity: sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==} + '@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.28.5': - resolution: {integrity: sha512-vn5Jma98LCOeBy/KpeQhXcV2WZgaRUtjwQmjoBuLNlOmkg0fB5pdvYVeWRYI69wWKwK2cD1QbMiUQnoujWvrew==} + '@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 @@ -506,8 +492,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-named-capturing-groups-regex@7.27.1': - resolution: {integrity: sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==} + '@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 @@ -518,20 +504,20 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-nullish-coalescing-operator@7.27.1': - resolution: {integrity: sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==} + '@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.27.1': - resolution: {integrity: sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==} + '@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.4': - resolution: {integrity: sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew==} + '@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 @@ -542,14 +528,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-optional-catch-binding@7.27.1': - resolution: {integrity: sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==} + '@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.5': - resolution: {integrity: sha512-N6fut9IZlPnjPwgiQkXNhb+cT8wQKFlJNqcZkWlcTqkcqx6/kU4ynGmLFoa4LViBSirn05YAwk+sQBbPfxtYzQ==} + '@babel/plugin-transform-optional-chaining@7.28.6': + resolution: {integrity: sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -560,14 +546,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-private-methods@7.27.1': - resolution: {integrity: sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==} + '@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.27.1': - resolution: {integrity: sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==} + '@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 @@ -578,14 +564,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-regenerator@7.28.4': - resolution: {integrity: sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA==} + '@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.27.1': - resolution: {integrity: sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==} + '@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 @@ -602,8 +588,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-spread@7.27.1': - resolution: {integrity: sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==} + '@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 @@ -632,8 +618,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-property-regex@7.27.1': - resolution: {integrity: sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==} + '@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 @@ -644,14 +630,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-sets-regex@7.27.1': - resolution: {integrity: sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==} + '@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.28.5': - resolution: {integrity: sha512-S36mOoi1Sb6Fz98fBfE+UZSpYw5mJm0NUHtIKrOuNcqeFauy1J6dIvXm2KRVKobOSaGq4t/hBXdN4HGU3wL9Wg==} + '@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 @@ -665,20 +651,12 @@ packages: resolution: {integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==} engines: {node: '>=6.9.0'} - '@babel/template@7.27.2': - resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.28.5': - resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.28.5': - resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} + '@babel/template@7.28.6': + resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} engines: {node: '>=6.9.0'} - '@babel/types@7.28.6': - resolution: {integrity: sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==} + '@babel/traverse@7.29.0': + resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} engines: {node: '>=6.9.0'} '@babel/types@7.29.0': @@ -696,8 +674,8 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.27.2': - resolution: {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==} + '@esbuild/aix-ppc64@0.27.3': + resolution: {integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] @@ -708,20 +686,32 @@ packages: 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.2': - resolution: {integrity: sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==} + '@esbuild/android-x64@0.27.3': + resolution: {integrity: sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==} engines: {node: '>=18'} cpu: [x64] os: [android] @@ -732,8 +722,8 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.27.2': - resolution: {integrity: sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==} + '@esbuild/darwin-arm64@0.27.3': + resolution: {integrity: sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] @@ -744,14 +734,20 @@ packages: 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.2': - resolution: {integrity: sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==} + '@esbuild/freebsd-arm64@0.27.3': + resolution: {integrity: sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] @@ -762,8 +758,8 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.27.2': - resolution: {integrity: sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==} + '@esbuild/freebsd-x64@0.27.3': + resolution: {integrity: sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] @@ -774,8 +770,8 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.27.2': - resolution: {integrity: sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==} + '@esbuild/linux-arm64@0.27.3': + resolution: {integrity: sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==} engines: {node: '>=18'} cpu: [arm64] os: [linux] @@ -786,20 +782,32 @@ packages: 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.2': - resolution: {integrity: sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==} + '@esbuild/linux-loong64@0.27.3': + resolution: {integrity: sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==} engines: {node: '>=18'} cpu: [loong64] os: [linux] @@ -810,20 +818,32 @@ packages: 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.2': - resolution: {integrity: sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==} + '@esbuild/linux-riscv64@0.27.3': + resolution: {integrity: sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] @@ -834,8 +854,8 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.27.2': - resolution: {integrity: sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==} + '@esbuild/linux-s390x@0.27.3': + resolution: {integrity: sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==} engines: {node: '>=18'} cpu: [s390x] os: [linux] @@ -846,8 +866,8 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.27.2': - resolution: {integrity: sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==} + '@esbuild/linux-x64@0.27.3': + resolution: {integrity: sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==} engines: {node: '>=18'} cpu: [x64] os: [linux] @@ -858,8 +878,8 @@ packages: cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-arm64@0.27.2': - resolution: {integrity: sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==} + '@esbuild/netbsd-arm64@0.27.3': + resolution: {integrity: sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] @@ -870,8 +890,8 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.27.2': - resolution: {integrity: sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==} + '@esbuild/netbsd-x64@0.27.3': + resolution: {integrity: sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] @@ -882,8 +902,8 @@ packages: cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-arm64@0.27.2': - resolution: {integrity: sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==} + '@esbuild/openbsd-arm64@0.27.3': + resolution: {integrity: sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] @@ -894,8 +914,8 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.27.2': - resolution: {integrity: sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==} + '@esbuild/openbsd-x64@0.27.3': + resolution: {integrity: sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] @@ -906,35 +926,59 @@ packages: 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] - '@eslint-community/eslint-utils@4.9.0': - resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + '@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==} @@ -1010,10 +1054,6 @@ packages: resolution: {integrity: sha512-A5n33doOjmHsBtCN421386cG1tWp5rpOjOYPNsnpjIJbQ4POF0QY2ezhZR9kr0boKwaHjbOifvyQvHj2UTrDFQ==} engines: {node: '>= 16'} - '@intlify/shared@11.2.2': - resolution: {integrity: sha512-OtCmyFpSXxNu/oET/aN6HtPCbZ01btXVd0f3w00YsHOb13Kverk1jzA2k47pAekM55qbUw421fvPF1yxZ+gicw==} - engines: {node: '>= 16'} - '@intlify/shared@11.2.8': resolution: {integrity: sha512-l6e4NZyUgv8VyXXH4DbuucFOBmxLF56C/mqh2tvApbzl2Hrhi1aTDcuv5TKdxzfHYmpO3UB0Cz04fgDT9vszfw==} engines: {node: '>= 16'} @@ -1096,115 +1136,150 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.55.1': - resolution: {integrity: sha512-9R0DM/ykwfGIlNu6+2U09ga0WXeZ9MRC2Ter8jnz8415VbuIykVuc6bhdrbORFZANDmTDvq26mJrEVTl8TdnDg==} + '@rollup/rollup-android-arm-eabi@4.57.1': + resolution: {integrity: sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg==} cpu: [arm] os: [android] - '@rollup/rollup-darwin-x64@4.55.1': - resolution: {integrity: sha512-rDUjG25C9qoTm+e02Esi+aqTKSBYwVTaoS1wxcN47/Luqef57Vgp96xNANwt5npq9GDxsH7kXxNkJVEsWEOEaQ==} + '@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-x64@4.55.1': - resolution: {integrity: sha512-V5xC1tOVWtLLmr3YUk2f6EJK4qksksOYiz/TCsFHu/R+woubcLWdC9nZQmwjOAbmExBIVKsm1/wKmEy4z4u4Bw==} + '@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.55.1': - resolution: {integrity: sha512-Rn3n+FUk2J5VWx+ywrG/HGPTD9jXNbicRtTM11e/uorplArnXZYsVifnPPqNNP5BsO3roI4n8332ukpY/zN7rQ==} + '@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.55.1': - resolution: {integrity: sha512-grPNWydeKtc1aEdrJDWk4opD7nFtQbMmV7769hiAaYyUKCT1faPRm2av8CX1YJsZ4TLAZcg9gTR1KvEzoLjXkg==} + '@rollup/rollup-linux-arm-musleabihf@4.57.1': + resolution: {integrity: sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw==} cpu: [arm] os: [linux] libc: [musl] - '@rollup/rollup-linux-loong64-gnu@4.55.1': - resolution: {integrity: sha512-r3Wv40in+lTsULSb6nnoudVbARdOwb2u5fpeoOAZjFLznp6tDU8kd+GTHmJoqZ9lt6/Sys33KdIHUaQihFcu7g==} + '@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.55.1': - resolution: {integrity: sha512-MR8c0+UxAlB22Fq4R+aQSPBayvYa3+9DrwG/i1TKQXFYEaoW3B5b/rkSRIypcZDdWjWnpcvxbNaAJDcSbJU3Lw==} + '@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.55.1': - resolution: {integrity: sha512-3KhoECe1BRlSYpMTeVrD4sh2Pw2xgt4jzNSZIIPLFEsnQn9gAnZagW9+VqDqAHgm1Xc77LzJOo2LdigS5qZ+gw==} + '@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.55.1': - resolution: {integrity: sha512-ziR1OuZx0vdYZZ30vueNZTg73alF59DicYrPViG0NEgDVN8/Jl87zkAPu4u6VjZST2llgEUjaiNl9JM6HH1Vdw==} + '@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.55.1': - resolution: {integrity: sha512-uW0Y12ih2XJRERZ4jAfKamTyIHVMPQnTZcQjme2HMVDAHY4amf5u414OqNYC+x+LzRdRcnIG1YodLrrtA8xsxw==} + '@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.55.1': - resolution: {integrity: sha512-u9yZ0jUkOED1BFrqu3BwMQoixvGHGZ+JhJNkNKY/hyoEgOwlqKb62qu+7UjbPSHYjiVy8kKJHvXKv5coH4wDeg==} + '@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.55.1': - resolution: {integrity: sha512-/0PenBCmqM4ZUd0190j7J0UsQ/1nsi735iPRakO8iPciE7BQ495Y6msPzaOmvx0/pn+eJVVlZrNrSh4WSYLxNg==} + '@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.55.1': - resolution: {integrity: sha512-a8G4wiQxQG2BAvo+gU6XrReRRqj+pLS2NGXKm8io19goR+K8lw269eTrPkSdDTALwMmJp4th2Uh0D8J9bEV1vg==} + '@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.55.1': - resolution: {integrity: sha512-bD+zjpFrMpP/hqkfEcnjXWHMw5BIghGisOKPj+2NaNDuVT+8Ds4mPf3XcPHuat1tz89WRL+1wbcxKY3WSbiT7w==} + '@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.55.1': - resolution: {integrity: sha512-eLXw0dOiqE4QmvikfQ6yjgkg/xDM+MdU9YJuP4ySTibXU0oAvnEWXt7UDJmD4UkYialMfOGFPJnIHSe/kdzPxg==} + '@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.55.1': - resolution: {integrity: sha512-xzm44KgEP11te3S2HCSyYf5zIzWmx3n8HDCc7EE59+lTcswEWNpvMLfd9uJvVX8LCg9QWG67Xt75AuHn4vgsXw==} + '@rollup/rollup-openharmony-arm64@4.57.1': + resolution: {integrity: sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-ia32-msvc@4.55.1': - resolution: {integrity: sha512-3fZBidchE0eY0oFZBnekYCfg+5wAB0mbpCBuofh5mZuzIU/4jIVkbESmd2dOsFNS78b53CYv3OAtwqkZZmU5nA==} + '@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.55.1': - resolution: {integrity: sha512-xGGY5pXj69IxKb4yv/POoocPy/qmEGhimy/FoTpTSVju3FYXUQQMFCaZZXJVidsmGxRioZAwpThl/4zX41gRKg==} + '@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.55.1': - resolution: {integrity: sha512-SPEpaL6DX4rmcXtnhdrQYgzQ5W2uW3SCJch88lB2zImhJRhIIK44fkUrgIV/Q8yUNfw5oyZ5vkeQsZLhCb06lw==} + '@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==} + '@types/esrecurse@4.3.1': + resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} + '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} @@ -1218,8 +1293,8 @@ packages: '@types/lodash-es@4.17.12': resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} - '@types/lodash@4.17.13': - resolution: {integrity: sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==} + '@types/lodash@4.17.23': + resolution: {integrity: sha512-RDvF6wTulMPjrNdCoYRC8gNR880JNGT8uB+REUpC2Ns4pRqQJhGz90wh7rgdXDPpCczF3VGktDuFGVnz8zP7HA==} '@types/node@24.10.13': resolution: {integrity: sha512-oH72nZRfDv9lADUBSo104Aq7gPHpQZc4BTx38r9xf9pg5LfP6EzSyH2n7qFmmxRQXh7YlUXODcYsg6PuTDSxGg==} @@ -1230,14 +1305,6 @@ packages: '@types/web-bluetooth@0.0.21': resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} - '@typescript-eslint/eslint-plugin@8.37.0': - resolution: {integrity: sha512-jsuVWeIkb6ggzB+wPCsR4e6loj+rM72ohW6IBn2C+5NCvfUVY8s33iFPySSVXqtm5Hu29Ne/9bnA0JmyLmgenA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@typescript-eslint/parser': ^8.37.0 - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/eslint-plugin@8.55.0': resolution: {integrity: sha512-1y/MVSz0NglV1ijHC8OT49mPJ4qhPYjiK08YUQVbIOyu+5k862LKUHFkpKHWu//zmr7hDR2rhwUm6gnCGNmGBQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1246,23 +1313,11 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.37.0': - resolution: {integrity: sha512-kVIaQE9vrN9RLCQMQ3iyRlVJpTiDUY6woHGb30JDkfJErqrQEmtdWH3gV0PBAfGZgQXoqzXOO0T3K6ioApbbAA==} + '@typescript-eslint/parser@8.55.0': + resolution: {integrity: sha512-4z2nCSBfVIMnbuu8uinj+f0o4qOeggYJLbjpPHka3KH1om7e+H9yLKTYgksTaHcGco+NClhhY2vyO3HsMH1RGw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' - - '@typescript-eslint/project-service@8.37.0': - resolution: {integrity: sha512-BIUXYsbkl5A1aJDdYJCBAo8rCEbAvdquQ8AnLb6z5Lp1u3x5PNgSSx9A/zqYc++Xnr/0DVpls8iQ2cJs/izTXA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <5.9.0' - - '@typescript-eslint/project-service@8.49.0': - resolution: {integrity: sha512-/wJN0/DKkmRUMXjZUXYZpD1NEQzQAAn9QWfGwo+Ai8gnzqH7tvqS7oNVdTjKqOcPyVIdZdyCMoqN66Ia789e7g==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: typescript: '>=4.8.4 <6.0.0' '@typescript-eslint/project-service@8.55.0': @@ -1271,43 +1326,16 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.37.0': - resolution: {integrity: sha512-0vGq0yiU1gbjKob2q691ybTg9JX6ShiVXAAfm2jGf3q0hdP6/BruaFjL/ManAR/lj05AvYCH+5bbVo0VtzmjOA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/scope-manager@8.49.0': - resolution: {integrity: sha512-npgS3zi+/30KSOkXNs0LQXtsg9ekZ8OISAOLGWA/ZOEn0ZH74Ginfl7foziV8DT+D98WfQ5Kopwqb/PZOaIJGg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.55.0': resolution: {integrity: sha512-fVu5Omrd3jeqeQLiB9f1YsuK/iHFOwb04bCtY4BSCLgjNbOD33ZdV6KyEqplHr+IlpgT0QTZ/iJ+wT7hvTx49Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.37.0': - resolution: {integrity: sha512-1/YHvAVTimMM9mmlPvTec9NP4bobA1RkDbMydxG8omqwJJLEW/Iy2C4adsAESIXU3WGLXFHSZUU+C9EoFWl4Zg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <5.9.0' - - '@typescript-eslint/tsconfig-utils@8.49.0': - resolution: {integrity: sha512-8prixNi1/6nawsRYxet4YOhnbW+W9FK/bQPxsGB1D3ZrDzbJ5FXw5XmzxZv82X3B+ZccuSxo/X8q9nQ+mFecWA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/tsconfig-utils@8.55.0': resolution: {integrity: sha512-1R9cXqY7RQd7WuqSN47PK9EDpgFUK3VqdmbYrvWJZYDd0cavROGn+74ktWBlmJ13NXUQKlZ/iAEQHI/V0kKe0Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.37.0': - resolution: {integrity: sha512-SPkXWIkVZxhgwSwVq9rqj/4VFo7MnWwVaRNznfQDc/xPYHjXnPfLWn+4L6FF1cAz6e7dsqBeMawgl7QjUMj4Ow==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/type-utils@8.55.0': resolution: {integrity: sha512-x1iH2unH4qAt6I37I2CGlsNs+B9WGxurP2uyZLRz6UJoZWDBx9cJL1xVN/FiOmHEONEg6RIufdvyT0TEYIgC5g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1315,43 +1343,16 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.37.0': - resolution: {integrity: sha512-ax0nv7PUF9NOVPs+lmQ7yIE7IQmAf8LGcXbMvHX5Gm+YJUYNAl340XkGnrimxZ0elXyoQJuN5sbg6C4evKA4SQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/types@8.49.0': - resolution: {integrity: sha512-e9k/fneezorUo6WShlQpMxXh8/8wfyc+biu6tnAqA81oWrEic0k21RHzP9uqqpyBBeBKu4T+Bsjy9/b8u7obXQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.55.0': resolution: {integrity: sha512-ujT0Je8GI5BJWi+/mMoR0wxwVEQaxM+pi30xuMiJETlX80OPovb2p9E8ss87gnSVtYXtJoU9U1Cowcr6w2FE0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.37.0': - resolution: {integrity: sha512-zuWDMDuzMRbQOM+bHyU4/slw27bAUEcKSKKs3hcv2aNnc/tvE/h7w60dwVw8vnal2Pub6RT1T7BI8tFZ1fE+yg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <5.9.0' - - '@typescript-eslint/typescript-estree@8.49.0': - resolution: {integrity: sha512-jrLdRuAbPfPIdYNppHJ/D0wN+wwNfJ32YTAm10eJVsFmrVpXQnDWBn8niCSMlWjvml8jsce5E/O+86IQtTbJWA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/typescript-estree@8.55.0': resolution: {integrity: sha512-EwrH67bSWdx/3aRQhCoxDaHM+CrZjotc2UCCpEDVqfCE+7OjKAGWNY2HsCSTEVvWH2clYQK8pdeLp42EVs+xQw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.37.0': - resolution: {integrity: sha512-TSFvkIW6gGjN2p6zbXo20FzCABbyUAuq6tBvNRGsKdsSQ6a7rnV6ADfZ7f4iI3lIiXc4F4WWvtUfDw9CJ9pO5A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/utils@8.55.0': resolution: {integrity: sha512-BqZEsnPGdYpgyEIkDC1BadNY8oMwckftxBT+C8W0g1iKPdeqKZBtTfnvcq0nf60u7MkjFO8RBvpRGZBPw4L2ow==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1359,14 +1360,6 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.37.0': - resolution: {integrity: sha512-YzfhzcTnZVPiLfP/oeKtDp2evwvHLMe0LOy7oe+hb9KKIumLNohYS9Hgp1ifwpu42YWxhZE8yieggz6JpqO/1w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/visitor-keys@8.49.0': - resolution: {integrity: sha512-LlKaciDe3GmZFphXIc79THF/YYBugZ7FS1pO581E/edlVVNbZKDy93evqmrfQ9/Y4uN0vVhX4iuchq26mK/iiA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.55.0': resolution: {integrity: sha512-AxNRwEie8Nn4eFS1FzDMJWIISMGoXMb037sgCBJ3UR6o0fQTzr2tqN9WT+DkWJPhIdQCfV7T6D387566VtnCJA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1416,47 +1409,35 @@ packages: vue: optional: true - '@vue/compiler-core@3.5.27': - resolution: {integrity: sha512-gnSBQjZA+//qDZen+6a2EdHqJ68Z7uybrMf3SPjEGgG4dicklwDVmMC1AeIHxtLVPT7sn6sH1KOO+tS6gwOUeQ==} - '@vue/compiler-core@3.5.28': resolution: {integrity: sha512-kviccYxTgoE8n6OCw96BNdYlBg2GOWfBuOW4Vqwrt7mSKWKwFVvI8egdTltqRgITGPsTFYtKYfxIG8ptX2PJHQ==} - '@vue/compiler-dom@3.5.27': - resolution: {integrity: sha512-oAFea8dZgCtVVVTEC7fv3T5CbZW9BxpFzGGxC79xakTr6ooeEqmRuvQydIiDAkglZEAd09LgVf1RoDnL54fu5w==} - '@vue/compiler-dom@3.5.28': resolution: {integrity: sha512-/1ZepxAb159jKR1btkefDP+J2xuWL5V3WtleRmxaT+K2Aqiek/Ab/+Ebrw2pPj0sdHO8ViAyyJWfhXXOP/+LQA==} - '@vue/compiler-sfc@3.5.27': - resolution: {integrity: sha512-sHZu9QyDPeDmN/MRoshhggVOWE5WlGFStKFwu8G52swATgSny27hJRWteKDSUUzUH+wp+bmeNbhJnEAel/auUQ==} - '@vue/compiler-sfc@3.5.28': resolution: {integrity: sha512-6TnKMiNkd6u6VeVDhZn/07KhEZuBSn43Wd2No5zaP5s3xm8IqFTHBj84HJah4UepSUJTro5SoqqlOY22FKY96g==} - '@vue/compiler-ssr@3.5.27': - resolution: {integrity: sha512-Sj7h+JHt512fV1cTxKlYhg7qxBvack+BGncSpH+8vnN+KN95iPIcqB5rsbblX40XorP+ilO7VIKlkuu3Xq2vjw==} - '@vue/compiler-ssr@3.5.28': resolution: {integrity: sha512-JCq//9w1qmC6UGLWJX7RXzrGpKkroubey/ZFqTpvEIDJEKGgntuDMqkuWiZvzTzTA5h2qZvFBFHY7fAAa9475g==} '@vue/devtools-api@6.6.4': resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==} - '@vue/devtools-api@7.7.8': - resolution: {integrity: sha512-BtFcAmDbtXGwurWUFf8ogIbgZyR+rcVES1TSNEI8Em80fD8Anu+qTRN1Fc3J6vdRHlVM3fzPV1qIo+B4AiqGzw==} + '@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.8': - resolution: {integrity: sha512-4Y8op+AoxOJhB9fpcEF6d5vcJXWKgHxC3B0ytUB8zz15KbP9g9WgVzral05xluxi2fOeAy6t140rdQ943GcLRQ==} + '@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.8': - resolution: {integrity: sha512-XHpO3jC5nOgYr40M9p8Z4mmKfTvUxKyRcUnpBAYg11pE78eaRFBKb0kG5yKLroMuJeeNH9LWmKp2zMU5LUc7CA==} + '@vue/devtools-shared@7.7.9': + resolution: {integrity: sha512-iWAb0v2WYf0QWmxCGy0seZNDPdO3Sp5+u78ORnyeonS6MT4PC7VPrryX2BpMJrwlDeaZ6BD4vP4XKjK0SZqaeA==} '@vue/devtools-shared@8.0.6': resolution: {integrity: sha512-Pp1JylTqlgMJvxW6MGyfTF8vGvlBSCAvMFaDCYa82Mgw7TT5eE5kkHgDvmOGHWeJE4zIDfCpCxHapsK2LtIAJg==} @@ -1495,9 +1476,6 @@ packages: peerDependencies: vue: 3.5.28 - '@vue/shared@3.5.27': - resolution: {integrity: sha512-dXr/3CgqXsJkZ0n9F3I4elY8wM9jMJpP3pvRG52r6m0tu/MsAFIe6JpXVGeNMd/D9F4hQynWT8Rfuj0bdm9kFQ==} - '@vue/shared@3.5.28': resolution: {integrity: sha512-cfWa1fCGBxrvaHRhvV3Is0MgmrbSCxYTXCSCau2I0a1Xw1N1pHAvkWCiXPRAqjvToILvguNyEwjevUqAuBQWvQ==} @@ -1620,8 +1598,8 @@ packages: peerDependencies: postcss: ^8.1.0 - babel-plugin-polyfill-corejs2@0.4.14: - resolution: {integrity: sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==} + 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 @@ -1630,25 +1608,23 @@ packages: peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - babel-plugin-polyfill-regenerator@0.6.5: - resolution: {integrity: sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==} + babel-plugin-polyfill-corejs3@0.14.0: + resolution: {integrity: sha512-AvDcMxJ34W4Wgy4KBIIePQTAOP1Ie2WFwkQp3dB7FQ/f0lI5+nM96zUnYEOE1P9sEg0es5VCP0HxiWu5fUHZAQ==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-regenerator@0.6.6: + resolution: {integrity: sha512-hYm+XLYRMvupxiQzrvXUj7YyvFFVfv5gI0R71AJzudg1g2AI2vyCPPIFEBjk162/wFzti3inBHo7isWFuEVS/A==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - baseline-browser-mapping@2.8.26: - resolution: {integrity: sha512-73lC1ugzwoaWCLJ1LvOgrR5xsMLTqSKIEoMHVtL9E/HNk0PXtTM76ZIm84856/SF7Nv8mPZxKoBsgpm0tR1u1Q==} - hasBin: true - baseline-browser-mapping@2.9.19: resolution: {integrity: sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==} hasBin: true - birpc@2.8.0: - resolution: {integrity: sha512-Bz2a4qD/5GRhiHSwj30c/8kC8QGj12nNDwz3D4ErQ4Xhy35dsSDvF+RA/tWpjyU0pdGtSDiEk6B5fBGE1qNVhw==} - birpc@2.9.0: resolution: {integrity: sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==} @@ -1672,11 +1648,6 @@ packages: peerDependencies: browserslist: '*' - browserslist@4.28.0: - resolution: {integrity: sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - browserslist@4.28.1: resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -1689,11 +1660,8 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - caniuse-lite@1.0.30001754: - resolution: {integrity: sha512-x6OeBXueoAceOmotzx3PO4Zpt4rzpeIFsSr6AAePTZxSkXiYDUmpypEl7e2+8NCd9bD7bXjqyef8CJYPC1jfxg==} - - caniuse-lite@1.0.30001766: - resolution: {integrity: sha512-4C0lfJ0/YPjJQHagaE9x2Elb69CIqEPZeG0anQt9SIvIoOH4a4uaRl73IavyO+0qZh6MDLH//DrXThEYKHkmYA==} + caniuse-lite@1.0.30001769: + resolution: {integrity: sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==} chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} @@ -1732,11 +1700,11 @@ packages: resolution: {integrity: sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA==} engines: {node: '>=18'} - core-js-compat@3.46.0: - resolution: {integrity: sha512-p9hObIIEENxSV8xIu+V68JjSeARg6UVMG5mR+JEUguG3sI6MsiS1njz2jHmyJDvA+8jX/sytkBHup6kxhM9law==} + core-js-compat@3.48.0: + resolution: {integrity: sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==} - core-js@3.46.0: - resolution: {integrity: sha512-vDMm9B0xnqqZ8uSBpZ8sNtRtOdmfShrvT6h2TuQGLs0Is+cR0DYbj/KWP6ALVNbWPpqA/qPLoOuppJN07humpA==} + core-js@3.48.0: + resolution: {integrity: sha512-zpEHTy1fjTMZCKLHUZoVeylt9XrzaIN2rbPXEt0k+q7JE5CkCZdo6bNq55bn24a69CH7ErAVLKijxJja4fw+UQ==} core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -1784,11 +1752,8 @@ packages: dompurify@3.3.1: resolution: {integrity: sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==} - electron-to-chromium@1.5.250: - resolution: {integrity: sha512-/5UMj9IiGDMOFBnN4i7/Ry5onJrAGSbOGo3s9FEKmwobGq6xw832ccET0CE3CkkMBZ8GJSlUIesZofpyurqDXw==} - - electron-to-chromium@1.5.283: - resolution: {integrity: sha512-3vifjt1HgrGW/h76UEeny+adYApveS9dH2h3p57JYzBSXJIKUJAvtmIytDKjcSCt9xHfrNCFJ7gts6vkhuq++w==} + electron-to-chromium@1.5.286: + resolution: {integrity: sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==} entities@7.0.1: resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} @@ -1813,8 +1778,8 @@ packages: engines: {node: '>=18'} hasBin: true - esbuild@0.27.2: - resolution: {integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==} + esbuild@0.27.3: + resolution: {integrity: sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==} engines: {node: '>=18'} hasBin: true @@ -1869,6 +1834,10 @@ packages: resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-scope@9.1.0: + resolution: {integrity: sha512-CkWE42hOJsNj9FJRaoMX9waUFYhqY4jmyLFdAdzZr6VaCg3ynLYx4WnOdkaIifGfH4gsUcBTn4OZbHXkpLD0FQ==} + 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} @@ -1877,6 +1846,10 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-visitor-keys@5.0.0: + resolution: {integrity: sha512-A0XeIi7CXU7nPlfHS9loMYEKxUaONu/hTEzHTGba9Huu94Cq1hPivf+DE5erJozZOky0LfvXAyrV/tcswpLI0Q==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + eslint@9.39.2: resolution: {integrity: sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1895,6 +1868,10 @@ packages: resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + espree@11.1.0: + resolution: {integrity: sha512-WFWYhO1fV4iYkqOOvq8FbqIhr2pYfoDY0kCotMkDeNtGpiGGkZ1iov2u8ydjtgM8yF8rzK7oaTbw2NAzbAbehw==} + 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} @@ -1904,8 +1881,8 @@ packages: engines: {node: '>=4'} hasBin: true - esquery@1.6.0: - resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + esquery@1.7.0: + resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} engines: {node: '>=0.10'} esrecurse@4.3.0: @@ -1948,8 +1925,8 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fastq@1.19.1: - resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + fastq@1.20.1: + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} @@ -1983,8 +1960,8 @@ packages: flatted@3.3.3: resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} - focus-trap@7.6.2: - resolution: {integrity: sha512-9FhUxK1hVju2+AiQIDJ5Dd//9R2n2RAfJ0qfhF4IHGHgcoEUTMpbTeG/zbEuwaiYXfuAH6XE0/aCyxDdRM+W5w==} + focus-trap@8.0.0: + resolution: {integrity: sha512-Aa84FOGHs99vVwufDMdq2qgOwXPC2e9U66GcqBhn1/jEHPDhJaP8PYhkIbqG9lhfL5Kddk/567lj46LLHYCRUw==} fraction.js@5.3.4: resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} @@ -2019,9 +1996,6 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -2185,8 +2159,8 @@ packages: lodash.uniqby@4.5.0: resolution: {integrity: sha512-IRt7cfTtHy6f1aRVA5n7kT8rgN3N1nH6MOWLcHfpWG2SH19E3JksLK38MktLxZDhlAjCP9jpIXkOnRXlu6oByQ==} - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + lodash@4.17.23: + resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -2457,8 +2431,8 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - rollup@4.55.1: - resolution: {integrity: sha512-wDv/Ht1BNHB4upNbK74s9usvl7hObDnvVzknxqY/E/O3X6rW1U1rV1aENEfJ54eFZDTNo7zv1f5N4edCluH7+A==} + rollup@4.57.1: + resolution: {integrity: sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -2475,11 +2449,6 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.7.3: - resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} - engines: {node: '>=10'} - hasBin: true - semver@7.7.4: resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} engines: {node: '>=10'} @@ -2521,10 +2490,6 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - superjson@2.2.5: - resolution: {integrity: sha512-zWPTX96LVsA/eVYnqOM2+ofcdPqdS1dAF1LN4TS2/MWuUpfitd9ctTa87wt4xrYnZnkLtS69xpBdSxVBP5Rm6w==} - engines: {node: '>=16'} - superjson@2.2.6: resolution: {integrity: sha512-H+ue8Zo4vJmV2nRjpx86P35lzwDT3nItnIsocgumgr0hHMQ+ZGq5vrERg9kJBo5AWGmxZDhzDo+WVIJqkB0cGA==} engines: {node: '>=16'} @@ -2580,12 +2545,12 @@ packages: type@2.7.3: resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==} - typescript-eslint@8.37.0: - resolution: {integrity: sha512-TnbEjzkE9EmcO0Q2zM+GE8NQLItNAJpMmED1BdgoBMYNdqMhzlbqfdSwiRlAzEK2pA9UzVW0gzaaIzXWg2BjfA==} + typescript-eslint@8.55.0: + resolution: {integrity: sha512-HE4wj+r5lmDVS9gdaN0/+iqNvPZwGfnJ5lZuz7s5vLlg9ODw0bIiiETaios9LvFI1U94/VBXGm3CB2Y5cNFMpw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' typescript@5.9.3: resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} @@ -2626,12 +2591,6 @@ packages: resolution: {integrity: sha512-0Mqk3AT2TZCXWKdcoaufeXNukv2mTrEZExeXlHIOZXdqYoHHr4n51pymnwV8x2BOVxwXbK2HLlI7usrqMpycdg==} engines: {node: ^20.19.0 || >=22.12.0} - update-browserslist-db@1.1.4: - resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - update-browserslist-db@1.2.3: resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} hasBin: true @@ -2720,11 +2679,11 @@ packages: vscode-uri@3.1.0: resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} - vue-eslint-parser@10.2.0: - resolution: {integrity: sha512-CydUvFOQKD928UzZhTp4pr2vWz1L+H99t7Pkln2QSPdvmURT0MoC4wUccfCnuEaihNsu9aYYyk+bep8rlfkUXw==} + 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 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 vue-final-modal@4.5.5: resolution: {integrity: sha512-A6xgsXqE6eLw9e6Tq/W6pxDBmimPuSuvq20WL9TOZpZy7itPdGeNn8e1P15PCGqP2yHM3q2gJIchPY9ZJd8YsA==} @@ -2814,25 +2773,25 @@ packages: snapshots: - '@babel/code-frame@7.27.1': + '@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.28.5': {} + '@babel/compat-data@7.29.0': {} - '@babel/core@7.28.5': + '@babel/core@7.29.0': dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.5 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) - '@babel/helpers': 7.28.4 - '@babel/parser': 7.28.5 - '@babel/template': 7.27.2 - '@babel/traverse': 7.28.5 - '@babel/types': 7.28.5 + '@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 @@ -2842,14 +2801,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.28.5': - dependencies: - '@babel/parser': 7.28.6 - '@babel/types': 7.28.6 - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - jsesc: 3.1.0 - '@babel/generator@7.29.1': dependencies: '@babel/parser': 7.29.0 @@ -2860,41 +2811,41 @@ snapshots: '@babel/helper-annotate-as-pure@7.27.3': dependencies: - '@babel/types': 7.28.6 + '@babel/types': 7.29.0 - '@babel/helper-compilation-targets@7.27.2': + '@babel/helper-compilation-targets@7.28.6': dependencies: - '@babel/compat-data': 7.28.5 + '@babel/compat-data': 7.29.0 '@babel/helper-validator-option': 7.27.1 - browserslist: 4.28.0 + browserslist: 4.28.1 lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.28.5(@babel/core@7.28.5)': + '@babel/helper-create-class-features-plugin@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 + '@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.27.1(@babel/core@7.28.5) + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0) '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/traverse': 7.28.5 + '@babel/traverse': 7.29.0 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/helper-create-regexp-features-plugin@7.28.5(@babel/core@7.28.5)': + '@babel/helper-create-regexp-features-plugin@7.28.5(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 + '@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.5(@babel/core@7.28.5)': + '@babel/helper-define-polyfill-provider@0.6.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-plugin-utils': 7.27.1 + '@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 @@ -2905,55 +2856,55 @@ snapshots: '@babel/helper-member-expression-to-functions@7.28.5': dependencies: - '@babel/traverse': 7.28.5 - '@babel/types': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color - '@babel/helper-module-imports@7.27.1': + '@babel/helper-module-imports@7.28.6': dependencies: - '@babel/traverse': 7.28.5 - '@babel/types': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)': + '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-module-imports': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.28.6 '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.28.5 + '@babel/traverse': 7.29.0 transitivePeerDependencies: - supports-color '@babel/helper-optimise-call-expression@7.27.1': dependencies: - '@babel/types': 7.28.6 + '@babel/types': 7.29.0 - '@babel/helper-plugin-utils@7.27.1': {} + '@babel/helper-plugin-utils@7.28.6': {} - '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.28.5)': + '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.29.0 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-wrap-function': 7.28.3 - '@babel/traverse': 7.28.5 + '@babel/helper-wrap-function': 7.28.6 + '@babel/traverse': 7.29.0 transitivePeerDependencies: - supports-color - '@babel/helper-replace-supers@7.27.1(@babel/core@7.28.5)': + '@babel/helper-replace-supers@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 + '@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.28.5 + '@babel/traverse': 7.29.0 transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.27.1': dependencies: - '@babel/traverse': 7.28.5 - '@babel/types': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color @@ -2963,532 +2914,514 @@ snapshots: '@babel/helper-validator-option@7.27.1': {} - '@babel/helper-wrap-function@7.28.3': + '@babel/helper-wrap-function@7.28.6': dependencies: - '@babel/template': 7.27.2 - '@babel/traverse': 7.28.5 - '@babel/types': 7.28.6 + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color - '@babel/helpers@7.28.4': - dependencies: - '@babel/template': 7.27.2 - '@babel/types': 7.28.6 - - '@babel/parser@7.28.5': - dependencies: - '@babel/types': 7.28.6 - - '@babel/parser@7.28.6': + '@babel/helpers@7.28.6': dependencies: - '@babel/types': 7.28.6 + '@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.28.5)': + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.5 + '@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.28.5)': + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@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.28.5)': + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@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.28.5)': + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@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.5(@babel/core@7.28.5) + '@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.3(@babel/core@7.28.5)': + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.5 + '@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.28.5)': + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.29.0 - '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-syntax-import-assertions@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-syntax-import-attributes@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.28.5)': + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 + '@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.28.5)': + '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-async-generator-functions@7.28.0(@babel/core@7.28.5)': + '@babel/plugin-transform-async-generator-functions@7.29.0(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.5) - '@babel/traverse': 7.28.5 + '@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.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-async-to-generator@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.5) + '@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.28.5)': + '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-block-scoping@7.28.5(@babel/core@7.28.5)': + '@babel/plugin-transform-block-scoping@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-class-properties@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 + '@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.3(@babel/core@7.28.5)': + '@babel/plugin-transform-class-static-block@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 + '@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.4(@babel/core@7.28.5)': + '@babel/plugin-transform-classes@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.29.0 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-globals': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.5) - '@babel/traverse': 7.28.5 + '@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.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-computed-properties@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/template': 7.27.2 + '@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.28.5)': + '@babel/plugin-transform-destructuring@7.28.5(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.5 + '@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.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-dotall-regex@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 + '@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.28.5)': + '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.0(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 + '@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.28.5)': + '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-explicit-resource-management@7.28.0(@babel/core@7.28.5)': + '@babel/plugin-transform-explicit-resource-management@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.5) + '@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.5(@babel/core@7.28.5)': + '@babel/plugin-transform-exponentiation-operator@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@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.28.5)': + '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.5 + '@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.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-json-strings@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-literals@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-literals@7.27.1(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-logical-assignment-operators@7.28.5(@babel/core@7.28.5)': + '@babel/plugin-transform-logical-assignment-operators@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 + '@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.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-modules-commonjs@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 + '@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.28.5(@babel/core@7.28.5)': + '@babel/plugin-transform-modules-systemjs@7.29.0(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 + '@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.28.5 + '@babel/traverse': 7.29.0 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 + '@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.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-named-capturing-groups-regex@7.29.0(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 + '@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.28.5)': + '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-nullish-coalescing-operator@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-numeric-separator@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-object-rest-spread@7.28.4(@babel/core@7.28.5)': + '@babel/plugin-transform-object-rest-spread@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.5) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.5) - '@babel/traverse': 7.28.5 + '@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.28.5)': + '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.5) + '@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.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-optional-catch-binding@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-optional-chaining@7.28.5(@babel/core@7.28.5)': + '@babel/plugin-transform-optional-chaining@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@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.28.5)': + '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-private-methods@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 + '@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.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-private-property-in-object@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.29.0 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 + '@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.28.5)': + '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-regenerator@7.28.4(@babel/core@7.28.5)': + '@babel/plugin-transform-regenerator@7.29.0(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-regexp-modifiers@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-regexp-modifiers@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 + '@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.28.5)': + '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-spread@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-spread@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@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.28.5)': + '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-unicode-property-regex@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 + '@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.28.5)': + '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 + '@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.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-unicode-sets-regex@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 + '@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.28.5(@babel/core@7.28.5)': + '@babel/preset-env@7.29.0(@babel/core@7.29.0)': dependencies: - '@babel/compat-data': 7.28.5 - '@babel/core': 7.28.5 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-plugin-utils': 7.27.1 + '@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.28.5) - '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.3(@babel/core@7.28.5) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.5) - '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.28.5) - '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-async-generator-functions': 7.28.0(@babel/core@7.28.5) - '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-block-scoping': 7.28.5(@babel/core@7.28.5) - '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-class-static-block': 7.28.3(@babel/core@7.28.5) - '@babel/plugin-transform-classes': 7.28.4(@babel/core@7.28.5) - '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.5) - '@babel/plugin-transform-dotall-regex': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-explicit-resource-management': 7.28.0(@babel/core@7.28.5) - '@babel/plugin-transform-exponentiation-operator': 7.28.5(@babel/core@7.28.5) - '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-json-strings': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-logical-assignment-operators': 7.28.5(@babel/core@7.28.5) - '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-modules-systemjs': 7.28.5(@babel/core@7.28.5) - '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-object-rest-spread': 7.28.4(@babel/core@7.28.5) - '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-optional-chaining': 7.28.5(@babel/core@7.28.5) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.5) - '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-regenerator': 7.28.4(@babel/core@7.28.5) - '@babel/plugin-transform-regexp-modifiers': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-unicode-property-regex': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-unicode-sets-regex': 7.27.1(@babel/core@7.28.5) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.28.5) - babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.5) - babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.5) - babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.5) - core-js-compat: 3.46.0 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.28.5(@babel/core@7.29.0) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0) + '@babel/plugin-syntax-import-assertions': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.29.0) + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-async-generator-functions': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-async-to-generator': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-block-scoping': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-class-properties': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-class-static-block': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-classes': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-computed-properties': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.29.0) + '@babel/plugin-transform-dotall-regex': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-explicit-resource-management': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-exponentiation-operator': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-json-strings': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-logical-assignment-operators': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-modules-systemjs': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-named-capturing-groups-regex': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-nullish-coalescing-operator': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-numeric-separator': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-object-rest-spread': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-optional-catch-binding': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.29.0) + '@babel/plugin-transform-private-methods': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-private-property-in-object': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-regenerator': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-regexp-modifiers': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-spread': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-unicode-property-regex': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-unicode-sets-regex': 7.28.6(@babel/core@7.29.0) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.29.0) + babel-plugin-polyfill-corejs2: 0.4.15(@babel/core@7.29.0) + babel-plugin-polyfill-corejs3: 0.14.0(@babel/core@7.29.0) + babel-plugin-polyfill-regenerator: 0.6.6(@babel/core@7.29.0) + core-js-compat: 3.48.0 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.28.5)': + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/types': 7.28.6 + '@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.27.2': + '@babel/template@7.28.6': dependencies: - '@babel/code-frame': 7.27.1 - '@babel/parser': 7.28.6 - '@babel/types': 7.28.6 + '@babel/code-frame': 7.29.0 + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 - '@babel/traverse@7.28.5': + '@babel/traverse@7.29.0': dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.5 + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.6 - '@babel/template': 7.27.2 - '@babel/types': 7.28.6 + '@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.28.5': - dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.28.5 - - '@babel/types@7.28.6': - dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.28.5 - '@babel/types@7.29.0': dependencies: '@babel/helper-string-parser': 7.27.1 @@ -3501,127 +3434,158 @@ snapshots: '@esbuild/aix-ppc64@0.25.12': optional: true - '@esbuild/aix-ppc64@0.27.2': + '@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.2': + '@esbuild/android-x64@0.27.3': optional: true '@esbuild/darwin-arm64@0.25.12': optional: true - '@esbuild/darwin-arm64@0.27.2': + '@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.2': + '@esbuild/freebsd-arm64@0.27.3': optional: true '@esbuild/freebsd-x64@0.25.12': optional: true - '@esbuild/freebsd-x64@0.27.2': + '@esbuild/freebsd-x64@0.27.3': optional: true '@esbuild/linux-arm64@0.25.12': optional: true - '@esbuild/linux-arm64@0.27.2': + '@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.2': + '@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.2': + '@esbuild/linux-riscv64@0.27.3': optional: true '@esbuild/linux-s390x@0.25.12': optional: true - '@esbuild/linux-s390x@0.27.2': + '@esbuild/linux-s390x@0.27.3': optional: true '@esbuild/linux-x64@0.25.12': optional: true - '@esbuild/linux-x64@0.27.2': + '@esbuild/linux-x64@0.27.3': optional: true '@esbuild/netbsd-arm64@0.25.12': optional: true - '@esbuild/netbsd-arm64@0.27.2': + '@esbuild/netbsd-arm64@0.27.3': optional: true '@esbuild/netbsd-x64@0.25.12': optional: true - '@esbuild/netbsd-x64@0.27.2': + '@esbuild/netbsd-x64@0.27.3': optional: true '@esbuild/openbsd-arm64@0.25.12': optional: true - '@esbuild/openbsd-arm64@0.27.2': + '@esbuild/openbsd-arm64@0.27.3': optional: true '@esbuild/openbsd-x64@0.25.12': optional: true - '@esbuild/openbsd-x64@0.27.2': + '@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 - '@eslint-community/eslint-utils@4.9.0(eslint@9.39.2)': - dependencies: - eslint: 9.39.2 - eslint-visitor-keys: 3.4.3 + '@esbuild/win32-x64@0.27.3': + optional: true '@eslint-community/eslint-utils@4.9.1(eslint@9.39.2)': dependencies: @@ -3683,7 +3647,7 @@ snapshots: '@intlify/bundle-utils@11.0.3(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)))': dependencies: '@intlify/message-compiler': 11.2.8 - '@intlify/shared': 11.2.2 + '@intlify/shared': 11.2.8 acorn: 8.15.0 esbuild: 0.25.12 escodegen: 2.1.0 @@ -3704,19 +3668,17 @@ snapshots: '@intlify/shared': 11.2.8 source-map-js: 1.2.1 - '@intlify/shared@11.2.2': {} - '@intlify/shared@11.2.8': {} - '@intlify/unplugin-vue-i18n@11.0.3(@vue/compiler-dom@3.5.28)(eslint@9.39.2)(rollup@4.55.1)(typescript@5.9.3)(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3))': + '@intlify/unplugin-vue-i18n@11.0.3(@vue/compiler-dom@3.5.28)(eslint@9.39.2)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3))': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2) '@intlify/bundle-utils': 11.0.3(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3))) - '@intlify/shared': 11.2.2 - '@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.2.2)(@vue/compiler-dom@3.5.28)(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3)) - '@rollup/pluginutils': 5.3.0(rollup@4.55.1) - '@typescript-eslint/scope-manager': 8.49.0 - '@typescript-eslint/typescript-estree': 8.49.0(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.28)(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3)) + '@rollup/pluginutils': 5.3.0(rollup@4.57.1) + '@typescript-eslint/scope-manager': 8.55.0 + '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.9.3) debug: 4.4.3 fast-glob: 3.3.3 pathe: 2.0.3 @@ -3732,11 +3694,11 @@ snapshots: - supports-color - typescript - '@intlify/vue-i18n-extensions@8.0.0(@intlify/shared@11.2.2)(@vue/compiler-dom@3.5.28)(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3))': + '@intlify/vue-i18n-extensions@8.0.0(@intlify/shared@11.2.8)(@vue/compiler-dom@3.5.28)(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3))': dependencies: - '@babel/parser': 7.28.6 + '@babel/parser': 7.29.0 optionalDependencies: - '@intlify/shared': 11.2.2 + '@intlify/shared': 11.2.8 '@vue/compiler-dom': 3.5.28 vue: 3.5.28(typescript@5.9.3) vue-i18n: 11.2.8(vue@3.5.28(typescript@5.9.3)) @@ -3775,79 +3737,99 @@ snapshots: '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.19.1 + fastq: 1.20.1 '@pkgr/core@0.2.9': {} '@rolldown/pluginutils@1.0.0-rc.2': {} - '@rollup/pluginutils@5.3.0(rollup@4.55.1)': + '@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.55.1 + 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-android-arm-eabi@4.55.1': + '@rollup/rollup-freebsd-x64@4.57.1': optional: true - '@rollup/rollup-darwin-x64@4.55.1': + '@rollup/rollup-linux-arm-gnueabihf@4.57.1': optional: true - '@rollup/rollup-freebsd-x64@4.55.1': + '@rollup/rollup-linux-arm-musleabihf@4.57.1': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.55.1': + '@rollup/rollup-linux-arm64-gnu@4.57.1': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.55.1': + '@rollup/rollup-linux-arm64-musl@4.57.1': optional: true - '@rollup/rollup-linux-loong64-gnu@4.55.1': + '@rollup/rollup-linux-loong64-gnu@4.57.1': optional: true - '@rollup/rollup-linux-loong64-musl@4.55.1': + '@rollup/rollup-linux-loong64-musl@4.57.1': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.55.1': + '@rollup/rollup-linux-ppc64-gnu@4.57.1': optional: true - '@rollup/rollup-linux-ppc64-musl@4.55.1': + '@rollup/rollup-linux-ppc64-musl@4.57.1': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.55.1': + '@rollup/rollup-linux-riscv64-gnu@4.57.1': optional: true - '@rollup/rollup-linux-riscv64-musl@4.55.1': + '@rollup/rollup-linux-riscv64-musl@4.57.1': optional: true - '@rollup/rollup-linux-s390x-gnu@4.55.1': + '@rollup/rollup-linux-s390x-gnu@4.57.1': optional: true - '@rollup/rollup-linux-x64-gnu@4.55.1': + '@rollup/rollup-linux-x64-gnu@4.57.1': optional: true - '@rollup/rollup-linux-x64-musl@4.55.1': + '@rollup/rollup-linux-x64-musl@4.57.1': optional: true - '@rollup/rollup-openbsd-x64@4.55.1': + '@rollup/rollup-openbsd-x64@4.57.1': optional: true - '@rollup/rollup-openharmony-arm64@4.55.1': + '@rollup/rollup-openharmony-arm64@4.57.1': optional: true - '@rollup/rollup-win32-ia32-msvc@4.55.1': + '@rollup/rollup-win32-arm64-msvc@4.57.1': optional: true - '@rollup/rollup-win32-x64-gnu@4.55.1': + '@rollup/rollup-win32-ia32-msvc@4.57.1': optional: true - '@rollup/rollup-win32-x64-msvc@4.55.1': + '@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': {} + '@types/esrecurse@4.3.1': {} + '@types/estree@1.0.8': {} '@types/json-schema@7.0.15': {} @@ -3858,9 +3840,9 @@ snapshots: '@types/lodash-es@4.17.12': dependencies: - '@types/lodash': 4.17.13 + '@types/lodash': 4.17.23 - '@types/lodash@4.17.13': {} + '@types/lodash@4.17.23': {} '@types/node@24.10.13': dependencies: @@ -3871,27 +3853,10 @@ snapshots: '@types/web-bluetooth@0.0.21': {} - '@typescript-eslint/eslint-plugin@8.37.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)': - dependencies: - '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.37.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.37.0 - '@typescript-eslint/type-utils': 8.37.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/utils': 8.37.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.37.0 - eslint: 9.39.2 - graphemer: 1.4.0 - 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.55.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.55.0(@typescript-eslint/parser@8.55.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.37.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/parser': 8.55.0(eslint@9.39.2)(typescript@5.9.3) '@typescript-eslint/scope-manager': 8.55.0 '@typescript-eslint/type-utils': 8.55.0(eslint@9.39.2)(typescript@5.9.3) '@typescript-eslint/utils': 8.55.0(eslint@9.39.2)(typescript@5.9.3) @@ -3904,36 +3869,18 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/parser@8.55.0(eslint@9.39.2)(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.37.0 - '@typescript-eslint/types': 8.37.0 - '@typescript-eslint/typescript-estree': 8.37.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.37.0 + '@typescript-eslint/scope-manager': 8.55.0 + '@typescript-eslint/types': 8.55.0 + '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.55.0 debug: 4.4.3 eslint: 9.39.2 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.37.0(typescript@5.9.3)': - dependencies: - '@typescript-eslint/tsconfig-utils': 8.37.0(typescript@5.9.3) - '@typescript-eslint/types': 8.37.0 - debug: 4.4.3 - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/project-service@8.49.0(typescript@5.9.3)': - dependencies: - '@typescript-eslint/tsconfig-utils': 8.49.0(typescript@5.9.3) - '@typescript-eslint/types': 8.49.0 - debug: 4.4.3 - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/project-service@8.55.0(typescript@5.9.3)': dependencies: '@typescript-eslint/tsconfig-utils': 8.55.0(typescript@5.9.3) @@ -3943,45 +3890,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.37.0': - dependencies: - '@typescript-eslint/types': 8.37.0 - '@typescript-eslint/visitor-keys': 8.37.0 - - '@typescript-eslint/scope-manager@8.49.0': - dependencies: - '@typescript-eslint/types': 8.49.0 - '@typescript-eslint/visitor-keys': 8.49.0 - '@typescript-eslint/scope-manager@8.55.0': dependencies: '@typescript-eslint/types': 8.55.0 '@typescript-eslint/visitor-keys': 8.55.0 - '@typescript-eslint/tsconfig-utils@8.37.0(typescript@5.9.3)': - dependencies: - typescript: 5.9.3 - - '@typescript-eslint/tsconfig-utils@8.49.0(typescript@5.9.3)': - dependencies: - typescript: 5.9.3 - '@typescript-eslint/tsconfig-utils@8.55.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.37.0(eslint@9.39.2)(typescript@5.9.3)': - dependencies: - '@typescript-eslint/types': 8.37.0 - '@typescript-eslint/typescript-estree': 8.37.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.37.0(eslint@9.39.2)(typescript@5.9.3) - debug: 4.4.3 - eslint: 9.39.2 - ts-api-utils: 2.4.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/type-utils@8.55.0(eslint@9.39.2)(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 8.55.0 @@ -3994,43 +3911,8 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.37.0': {} - - '@typescript-eslint/types@8.49.0': {} - '@typescript-eslint/types@8.55.0': {} - '@typescript-eslint/typescript-estree@8.37.0(typescript@5.9.3)': - dependencies: - '@typescript-eslint/project-service': 8.37.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.37.0(typescript@5.9.3) - '@typescript-eslint/types': 8.37.0 - '@typescript-eslint/visitor-keys': 8.37.0 - debug: 4.4.3 - fast-glob: 3.3.3 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.7.4 - ts-api-utils: 2.4.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/typescript-estree@8.49.0(typescript@5.9.3)': - dependencies: - '@typescript-eslint/project-service': 8.49.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.49.0(typescript@5.9.3) - '@typescript-eslint/types': 8.49.0 - '@typescript-eslint/visitor-keys': 8.49.0 - debug: 4.4.3 - minimatch: 9.0.5 - semver: 7.7.3 - 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.55.0(typescript@5.9.3)': dependencies: '@typescript-eslint/project-service': 8.55.0(typescript@5.9.3) @@ -4046,17 +3928,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.37.0(eslint@9.39.2)(typescript@5.9.3)': - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2) - '@typescript-eslint/scope-manager': 8.37.0 - '@typescript-eslint/types': 8.37.0 - '@typescript-eslint/typescript-estree': 8.37.0(typescript@5.9.3) - eslint: 9.39.2 - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/utils@8.55.0(eslint@9.39.2)(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2) @@ -4068,16 +3939,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.37.0': - dependencies: - '@typescript-eslint/types': 8.37.0 - eslint-visitor-keys: 4.2.1 - - '@typescript-eslint/visitor-keys@8.49.0': - dependencies: - '@typescript-eslint/types': 8.49.0 - eslint-visitor-keys: 4.2.1 - '@typescript-eslint/visitor-keys@8.55.0': dependencies: '@typescript-eslint/types': 8.55.0 @@ -4107,15 +3968,15 @@ snapshots: '@vitejs/plugin-legacy@7.2.1(terser@5.46.0)(vite@7.3.1(@types/node@24.10.13)(terser@5.46.0)(yaml@2.8.2))': dependencies: - '@babel/core': 7.28.5 - '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-modules-systemjs': 7.28.5(@babel/core@7.28.5) - '@babel/preset-env': 7.28.5(@babel/core@7.28.5) - babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.5) - babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.5) - browserslist: 4.28.0 - browserslist-to-esbuild: 2.1.1(browserslist@4.28.0) - core-js: 3.46.0 + '@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.13.0(@babel/core@7.29.0) + babel-plugin-polyfill-regenerator: 0.6.6(@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 @@ -4144,7 +4005,7 @@ snapshots: '@vue-macros/common@3.1.2(vue@3.5.28(typescript@5.9.3))': dependencies: - '@vue/compiler-sfc': 3.5.27 + '@vue/compiler-sfc': 3.5.28 ast-kit: 2.2.0 local-pkg: 1.1.2 magic-string-ast: 1.0.3 @@ -4152,14 +4013,6 @@ snapshots: optionalDependencies: vue: 3.5.28(typescript@5.9.3) - '@vue/compiler-core@3.5.27': - dependencies: - '@babel/parser': 7.28.6 - '@vue/shared': 3.5.27 - entities: 7.0.1 - estree-walker: 2.0.2 - source-map-js: 1.2.1 - '@vue/compiler-core@3.5.28': dependencies: '@babel/parser': 7.29.0 @@ -4168,28 +4021,11 @@ snapshots: estree-walker: 2.0.2 source-map-js: 1.2.1 - '@vue/compiler-dom@3.5.27': - dependencies: - '@vue/compiler-core': 3.5.27 - '@vue/shared': 3.5.27 - '@vue/compiler-dom@3.5.28': dependencies: '@vue/compiler-core': 3.5.28 '@vue/shared': 3.5.28 - '@vue/compiler-sfc@3.5.27': - dependencies: - '@babel/parser': 7.28.6 - '@vue/compiler-core': 3.5.27 - '@vue/compiler-dom': 3.5.27 - '@vue/compiler-ssr': 3.5.27 - '@vue/shared': 3.5.27 - estree-walker: 2.0.2 - magic-string: 0.30.21 - postcss: 8.5.6 - source-map-js: 1.2.1 - '@vue/compiler-sfc@3.5.28': dependencies: '@babel/parser': 7.29.0 @@ -4202,11 +4038,6 @@ snapshots: postcss: 8.5.6 source-map-js: 1.2.1 - '@vue/compiler-ssr@3.5.27': - dependencies: - '@vue/compiler-dom': 3.5.27 - '@vue/shared': 3.5.27 - '@vue/compiler-ssr@3.5.28': dependencies: '@vue/compiler-dom': 3.5.28 @@ -4214,23 +4045,23 @@ snapshots: '@vue/devtools-api@6.6.4': {} - '@vue/devtools-api@7.7.8': + '@vue/devtools-api@7.7.9': dependencies: - '@vue/devtools-kit': 7.7.8 + '@vue/devtools-kit': 7.7.9 '@vue/devtools-api@8.0.6': dependencies: '@vue/devtools-kit': 8.0.6 - '@vue/devtools-kit@7.7.8': + '@vue/devtools-kit@7.7.9': dependencies: - '@vue/devtools-shared': 7.7.8 - birpc: 2.8.0 + '@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.5 + superjson: 2.2.6 '@vue/devtools-kit@8.0.6': dependencies: @@ -4242,7 +4073,7 @@ snapshots: speakingurl: 14.0.1 superjson: 2.2.6 - '@vue/devtools-shared@7.7.8': + '@vue/devtools-shared@7.7.9': dependencies: rfdc: 1.4.1 @@ -4259,14 +4090,14 @@ snapshots: transitivePeerDependencies: - '@types/eslint' - '@vue/eslint-config-typescript@14.6.0(eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.2.0(eslint@9.39.2)))(eslint@9.39.2)(typescript@5.9.3)': + '@vue/eslint-config-typescript@14.6.0(eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.55.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.4.0(eslint@9.39.2)))(eslint@9.39.2)(typescript@5.9.3)': dependencies: - '@typescript-eslint/utils': 8.37.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/utils': 8.55.0(eslint@9.39.2)(typescript@5.9.3) eslint: 9.39.2 - eslint-plugin-vue: 10.8.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.2.0(eslint@9.39.2)) + eslint-plugin-vue: 10.8.0(@typescript-eslint/parser@8.55.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.4.0(eslint@9.39.2)) fast-glob: 3.3.3 - typescript-eslint: 8.37.0(eslint@9.39.2)(typescript@5.9.3) - vue-eslint-parser: 10.2.0(eslint@9.39.2) + typescript-eslint: 8.55.0(eslint@9.39.2)(typescript@5.9.3) + vue-eslint-parser: 10.4.0(eslint@9.39.2) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: @@ -4275,8 +4106,8 @@ snapshots: '@vue/language-core@3.2.4': dependencies: '@volar/language-core': 2.4.27 - '@vue/compiler-dom': 3.5.27 - '@vue/shared': 3.5.27 + '@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 @@ -4304,8 +4135,6 @@ snapshots: '@vue/shared': 3.5.28 vue: 3.5.28(typescript@5.9.3) - '@vue/shared@3.5.27': {} - '@vue/shared@3.5.28': {} '@vue/tsconfig@0.8.1(typescript@5.9.3)(vue@3.5.28(typescript@5.9.3))': @@ -4320,13 +4149,13 @@ snapshots: '@vueuse/shared': 14.2.1(vue@3.5.28(typescript@5.9.3)) vue: 3.5.28(typescript@5.9.3) - '@vueuse/integrations@14.2.1(focus-trap@7.6.2)(jwt-decode@4.0.0)(vue@3.5.28(typescript@5.9.3))': + '@vueuse/integrations@14.2.1(focus-trap@8.0.0)(jwt-decode@4.0.0)(vue@3.5.28(typescript@5.9.3))': dependencies: '@vueuse/core': 14.2.1(vue@3.5.28(typescript@5.9.3)) '@vueuse/shared': 14.2.1(vue@3.5.28(typescript@5.9.3)) vue: 3.5.28(typescript@5.9.3) optionalDependencies: - focus-trap: 7.6.2 + focus-trap: 8.0.0 jwt-decode: 4.0.0 '@vueuse/metadata@14.2.1': {} @@ -4382,44 +4211,48 @@ snapshots: autoprefixer@10.4.24(postcss@8.5.6): dependencies: browserslist: 4.28.1 - caniuse-lite: 1.0.30001766 + caniuse-lite: 1.0.30001769 fraction.js: 5.3.4 picocolors: 1.1.1 postcss: 8.5.6 postcss-value-parser: 4.2.0 - babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.5): + babel-plugin-polyfill-corejs2@0.4.15(@babel/core@7.29.0): dependencies: - '@babel/compat-data': 7.28.5 - '@babel/core': 7.28.5 - '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.5) + '@babel/compat-data': 7.29.0 + '@babel/core': 7.29.0 + '@babel/helper-define-polyfill-provider': 0.6.6(@babel/core@7.29.0) semver: 6.3.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.28.5): + babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.29.0): dependencies: - '@babel/core': 7.28.5 - '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.5) - core-js-compat: 3.46.0 + '@babel/core': 7.29.0 + '@babel/helper-define-polyfill-provider': 0.6.6(@babel/core@7.29.0) + core-js-compat: 3.48.0 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.6.5(@babel/core@7.28.5): + babel-plugin-polyfill-corejs3@0.14.0(@babel/core@7.29.0): dependencies: - '@babel/core': 7.28.5 - '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.5) + '@babel/core': 7.29.0 + '@babel/helper-define-polyfill-provider': 0.6.6(@babel/core@7.29.0) + core-js-compat: 3.48.0 transitivePeerDependencies: - supports-color - balanced-match@1.0.2: {} + babel-plugin-polyfill-regenerator@0.6.6(@babel/core@7.29.0): + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-define-polyfill-provider': 0.6.6(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color - baseline-browser-mapping@2.8.26: {} + balanced-match@1.0.2: {} baseline-browser-mapping@2.9.19: {} - birpc@2.8.0: {} - birpc@2.9.0: {} boolbase@1.0.0: {} @@ -4437,24 +4270,16 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist-to-esbuild@2.1.1(browserslist@4.28.0): + browserslist-to-esbuild@2.1.1(browserslist@4.28.1): dependencies: - browserslist: 4.28.0 + browserslist: 4.28.1 meow: 13.2.0 - browserslist@4.28.0: - dependencies: - baseline-browser-mapping: 2.8.26 - caniuse-lite: 1.0.30001754 - electron-to-chromium: 1.5.250 - node-releases: 2.0.27 - update-browserslist-db: 1.1.4(browserslist@4.28.0) - browserslist@4.28.1: dependencies: baseline-browser-mapping: 2.9.19 - caniuse-lite: 1.0.30001766 - electron-to-chromium: 1.5.283 + caniuse-lite: 1.0.30001769 + electron-to-chromium: 1.5.286 node-releases: 2.0.27 update-browserslist-db: 1.2.3(browserslist@4.28.1) @@ -4462,9 +4287,7 @@ snapshots: callsites@3.1.0: {} - caniuse-lite@1.0.30001754: {} - - caniuse-lite@1.0.30001766: {} + caniuse-lite@1.0.30001769: {} chalk@4.1.2: dependencies: @@ -4500,11 +4323,11 @@ snapshots: dependencies: is-what: 5.5.0 - core-js-compat@3.46.0: + core-js-compat@3.48.0: dependencies: - browserslist: 4.28.0 + browserslist: 4.28.1 - core-js@3.46.0: {} + core-js@3.48.0: {} core-util-is@1.0.3: {} @@ -4541,9 +4364,7 @@ snapshots: optionalDependencies: '@types/trusted-types': 2.0.7 - electron-to-chromium@1.5.250: {} - - electron-to-chromium@1.5.283: {} + electron-to-chromium@1.5.286: {} entities@7.0.1: {} @@ -4551,11 +4372,11 @@ snapshots: dependencies: '@types/localforage': 0.0.34 '@xmldom/xmldom': 0.7.13 - core-js: 3.46.0 + core-js: 3.48.0 event-emitter: 0.3.5 jszip: 3.10.1 localforage: 1.10.0 - lodash: 4.17.21 + lodash: 4.17.23 marks-pane: 1.0.9 path-webpack: 0.0.3 @@ -4606,22 +4427,34 @@ snapshots: '@esbuild/win32-ia32': 0.25.12 '@esbuild/win32-x64': 0.25.12 - esbuild@0.27.2: + esbuild@0.27.3: optionalDependencies: - '@esbuild/aix-ppc64': 0.27.2 - '@esbuild/android-x64': 0.27.2 - '@esbuild/darwin-arm64': 0.27.2 - '@esbuild/freebsd-arm64': 0.27.2 - '@esbuild/freebsd-x64': 0.27.2 - '@esbuild/linux-arm64': 0.27.2 - '@esbuild/linux-loong64': 0.27.2 - '@esbuild/linux-riscv64': 0.27.2 - '@esbuild/linux-s390x': 0.27.2 - '@esbuild/linux-x64': 0.27.2 - '@esbuild/netbsd-arm64': 0.27.2 - '@esbuild/netbsd-x64': 0.27.2 - '@esbuild/openbsd-arm64': 0.27.2 - '@esbuild/openbsd-x64': 0.27.2 + '@esbuild/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 escalade@3.2.0: {} @@ -4648,7 +4481,7 @@ snapshots: optionalDependencies: eslint-config-prettier: 10.1.8(eslint@9.39.2) - eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.2.0(eslint@9.39.2)): + eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.55.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.4.0(eslint@9.39.2)): dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2) eslint: 9.39.2 @@ -4656,23 +4489,32 @@ snapshots: nth-check: 2.1.1 postcss-selector-parser: 7.1.1 semver: 7.7.4 - vue-eslint-parser: 10.2.0(eslint@9.39.2) + vue-eslint-parser: 10.4.0(eslint@9.39.2) xml-name-validator: 4.0.0 optionalDependencies: - '@typescript-eslint/parser': 8.37.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/parser': 8.55.0(eslint@9.39.2)(typescript@5.9.3) eslint-scope@8.4.0: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 + eslint-scope@9.1.0: + 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@4.2.1: {} + eslint-visitor-keys@5.0.0: {} + eslint@9.39.2: dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2) '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.21.1 '@eslint/config-helpers': 0.4.2 @@ -4692,7 +4534,7 @@ snapshots: eslint-scope: 8.4.0 eslint-visitor-keys: 4.2.1 espree: 10.4.0 - esquery: 1.6.0 + esquery: 1.7.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 8.0.0 @@ -4722,6 +4564,12 @@ snapshots: acorn-jsx: 5.3.2(acorn@8.15.0) eslint-visitor-keys: 4.2.1 + espree@11.1.0: + dependencies: + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + eslint-visitor-keys: 5.0.0 + espree@9.6.1: dependencies: acorn: 8.15.0 @@ -4730,7 +4578,7 @@ snapshots: esprima@4.0.1: {} - esquery@1.6.0: + esquery@1.7.0: dependencies: estraverse: 5.3.0 @@ -4771,7 +4619,7 @@ snapshots: fast-levenshtein@2.0.6: {} - fastq@1.19.1: + fastq@1.20.1: dependencies: reusify: 1.1.0 @@ -4801,7 +4649,7 @@ snapshots: flatted@3.3.3: {} - focus-trap@7.6.2: + focus-trap@8.0.0: dependencies: tabbable: 6.4.0 @@ -4831,8 +4679,6 @@ snapshots: graceful-fs@4.2.11: {} - graphemer@1.4.0: {} - has-flag@4.0.0: {} hasown@2.0.2: @@ -4975,7 +4821,7 @@ snapshots: lodash._baseiteratee: 4.7.0 lodash._baseuniq: 4.6.0 - lodash@4.17.21: {} + lodash@4.17.23: {} lru-cache@5.1.1: dependencies: @@ -5108,7 +4954,7 @@ snapshots: pinia@3.0.4(typescript@5.9.3)(vue@3.5.28(typescript@5.9.3)): dependencies: - '@vue/devtools-api': 7.7.8 + '@vue/devtools-api': 7.7.9 vue: 3.5.28(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 @@ -5225,29 +5071,35 @@ snapshots: rfdc@1.4.1: {} - rollup@4.55.1: + rollup@4.57.1: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.55.1 - '@rollup/rollup-darwin-x64': 4.55.1 - '@rollup/rollup-freebsd-x64': 4.55.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.55.1 - '@rollup/rollup-linux-arm-musleabihf': 4.55.1 - '@rollup/rollup-linux-loong64-gnu': 4.55.1 - '@rollup/rollup-linux-loong64-musl': 4.55.1 - '@rollup/rollup-linux-ppc64-gnu': 4.55.1 - '@rollup/rollup-linux-ppc64-musl': 4.55.1 - '@rollup/rollup-linux-riscv64-gnu': 4.55.1 - '@rollup/rollup-linux-riscv64-musl': 4.55.1 - '@rollup/rollup-linux-s390x-gnu': 4.55.1 - '@rollup/rollup-linux-x64-gnu': 4.55.1 - '@rollup/rollup-linux-x64-musl': 4.55.1 - '@rollup/rollup-openbsd-x64': 4.55.1 - '@rollup/rollup-openharmony-arm64': 4.55.1 - '@rollup/rollup-win32-ia32-msvc': 4.55.1 - '@rollup/rollup-win32-x64-gnu': 4.55.1 - '@rollup/rollup-win32-x64-msvc': 4.55.1 + '@rollup/rollup-android-arm-eabi': 4.57.1 + '@rollup/rollup-android-arm64': 4.57.1 + '@rollup/rollup-darwin-arm64': 4.57.1 + '@rollup/rollup-darwin-x64': 4.57.1 + '@rollup/rollup-freebsd-arm64': 4.57.1 + '@rollup/rollup-freebsd-x64': 4.57.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.57.1 + '@rollup/rollup-linux-arm-musleabihf': 4.57.1 + '@rollup/rollup-linux-arm64-gnu': 4.57.1 + '@rollup/rollup-linux-arm64-musl': 4.57.1 + '@rollup/rollup-linux-loong64-gnu': 4.57.1 + '@rollup/rollup-linux-loong64-musl': 4.57.1 + '@rollup/rollup-linux-ppc64-gnu': 4.57.1 + '@rollup/rollup-linux-ppc64-musl': 4.57.1 + '@rollup/rollup-linux-riscv64-gnu': 4.57.1 + '@rollup/rollup-linux-riscv64-musl': 4.57.1 + '@rollup/rollup-linux-s390x-gnu': 4.57.1 + '@rollup/rollup-linux-x64-gnu': 4.57.1 + '@rollup/rollup-linux-x64-musl': 4.57.1 + '@rollup/rollup-openbsd-x64': 4.57.1 + '@rollup/rollup-openharmony-arm64': 4.57.1 + '@rollup/rollup-win32-arm64-msvc': 4.57.1 + '@rollup/rollup-win32-ia32-msvc': 4.57.1 + '@rollup/rollup-win32-x64-gnu': 4.57.1 + '@rollup/rollup-win32-x64-msvc': 4.57.1 fsevents: 2.3.3 run-parallel@1.2.0: @@ -5260,8 +5112,6 @@ snapshots: semver@6.3.1: {} - semver@7.7.3: {} - semver@7.7.4: {} setimmediate@1.0.5: {} @@ -5291,10 +5141,6 @@ snapshots: strip-json-comments@3.1.1: {} - superjson@2.2.5: - dependencies: - copy-anything: 4.0.5 - superjson@2.2.6: dependencies: copy-anything: 4.0.5 @@ -5351,12 +5197,12 @@ snapshots: type@2.7.3: {} - typescript-eslint@8.37.0(eslint@9.39.2)(typescript@5.9.3): + typescript-eslint@8.55.0(eslint@9.39.2)(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.37.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/parser': 8.37.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.37.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.37.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.55.0(@typescript-eslint/parser@8.55.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/parser': 8.55.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.55.0(eslint@9.39.2)(typescript@5.9.3) eslint: 9.39.2 typescript: 5.9.3 transitivePeerDependencies: @@ -5397,12 +5243,6 @@ snapshots: picomatch: 4.0.3 webpack-virtual-modules: 0.6.2 - update-browserslist-db@1.1.4(browserslist@4.28.0): - dependencies: - browserslist: 4.28.0 - escalade: 3.2.0 - picocolors: 1.1.1 - update-browserslist-db@1.2.3(browserslist@4.28.1): dependencies: browserslist: 4.28.1 @@ -5457,20 +5297,20 @@ snapshots: dependencies: global: 4.4.0 - vite-plugin-compression2@2.4.0(rollup@4.55.1): + vite-plugin-compression2@2.4.0(rollup@4.57.1): dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.55.1) + '@rollup/pluginutils': 5.3.0(rollup@4.57.1) tar-mini: 0.2.0 transitivePeerDependencies: - rollup vite@7.3.1(@types/node@24.10.13)(terser@5.46.0)(yaml@2.8.2): dependencies: - esbuild: 0.27.2 + esbuild: 0.27.3 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.55.1 + rollup: 4.57.1 tinyglobby: 0.2.15 optionalDependencies: '@types/node': 24.10.13 @@ -5480,23 +5320,23 @@ snapshots: vscode-uri@3.1.0: {} - vue-eslint-parser@10.2.0(eslint@9.39.2): + vue-eslint-parser@10.4.0(eslint@9.39.2): dependencies: debug: 4.4.3 eslint: 9.39.2 - eslint-scope: 8.4.0 - eslint-visitor-keys: 4.2.1 - espree: 10.4.0 - esquery: 1.6.0 + eslint-scope: 9.1.0 + eslint-visitor-keys: 5.0.0 + espree: 11.1.0 + esquery: 1.7.0 semver: 7.7.4 transitivePeerDependencies: - supports-color - vue-final-modal@4.5.5(@vueuse/core@14.2.1(vue@3.5.28(typescript@5.9.3)))(@vueuse/integrations@14.2.1(focus-trap@7.6.2)(jwt-decode@4.0.0)(vue@3.5.28(typescript@5.9.3)))(focus-trap@7.6.2)(vue@3.5.28(typescript@5.9.3)): + vue-final-modal@4.5.5(@vueuse/core@14.2.1(vue@3.5.28(typescript@5.9.3)))(@vueuse/integrations@14.2.1(focus-trap@8.0.0)(jwt-decode@4.0.0)(vue@3.5.28(typescript@5.9.3)))(focus-trap@8.0.0)(vue@3.5.28(typescript@5.9.3)): dependencies: '@vueuse/core': 14.2.1(vue@3.5.28(typescript@5.9.3)) - '@vueuse/integrations': 14.2.1(focus-trap@7.6.2)(jwt-decode@4.0.0)(vue@3.5.28(typescript@5.9.3)) - focus-trap: 7.6.2 + '@vueuse/integrations': 14.2.1(focus-trap@8.0.0)(jwt-decode@4.0.0)(vue@3.5.28(typescript@5.9.3)) + focus-trap: 8.0.0 vue: 3.5.28(typescript@5.9.3) vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)): From 95e6ed75a73a0dd0e98ab8984d873223b9594bed Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 14 Feb 2026 08:42:21 +0100 Subject: [PATCH 042/126] chore(release): 2.58.0 --- CHANGELOG.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f9a828616..95bfdc96f7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,24 @@ All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines. +## [2.58.0](https://github.com/filebrowser/filebrowser/compare/v2.57.1...v2.58.0) (2026-02-14) + + +### Features + +* nederlands ([88b97de](https://github.com/filebrowser/filebrowser/commit/88b97def9ee72fe6e8094209aebb71830b7305be)) +* support for multiple encodings in CSV files ([#5756](https://github.com/filebrowser/filebrowser/issues/5756)) ([f67bccf](https://github.com/filebrowser/filebrowser/commit/f67bccf8c5470cb280fe854d92aa2666c270bcf5)) +* Updates for project File Browser ([#5749](https://github.com/filebrowser/filebrowser/issues/5749)) ([c94870f](https://github.com/filebrowser/filebrowser/commit/c94870fcfe1b4acb2db9ab897b9f7d35e3b75770)) +* Updates for project File Browser ([#5759](https://github.com/filebrowser/filebrowser/issues/5759)) ([5e8f5be](https://github.com/filebrowser/filebrowser/commit/5e8f5be245fd0126545ef5ca61c2d428ac128ad5)) + + +### Bug Fixes + +* **frontend:** pnpm lock ([b09960e](https://github.com/filebrowser/filebrowser/commit/b09960e538387ff29371c80be1584720f65181e7)) +* ignore version.go ([1f7904d](https://github.com/filebrowser/filebrowser/commit/1f7904dad21a87f04e1543ee10b60ce79e5eebe9)) +* respect Accept-Encoding for pre-compressed JS ([#5750](https://github.com/filebrowser/filebrowser/issues/5750)) ([6a76dfe](https://github.com/filebrowser/filebrowser/commit/6a76dfeba9254a938e320928c67d110f73f83715)) +* wrap response text in Error before reject ([#5753](https://github.com/filebrowser/filebrowser/issues/5753)) ([e5bc0d3](https://github.com/filebrowser/filebrowser/commit/e5bc0d3cce18fa7b069688b176b99efbb67382d2)) + ## [2.57.1](https://github.com/filebrowser/filebrowser/compare/v2.57.0...v2.57.1) (2026-02-08) From 804b14b698aa218fa5c2aaba687e72c5f7617f0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Baczy=C5=84ski?= Date: Sun, 15 Feb 2026 12:46:39 +0100 Subject: [PATCH 043/126] feat: add 'Open direct' button to images (#5678) --- frontend/src/i18n/en.json | 1 + frontend/src/views/files/Preview.vue | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/frontend/src/i18n/en.json b/frontend/src/i18n/en.json index 8938cb06d8..54b30b22ef 100644 --- a/frontend/src/i18n/en.json +++ b/frontend/src/i18n/en.json @@ -42,6 +42,7 @@ "update": "Update", "upload": "Upload", "openFile": "Open file", + "openDirect": "View raw", "discardChanges": "Discard", "stopSearch": "Stop searching", "saveChanges": "Save changes", diff --git a/frontend/src/views/files/Preview.vue b/frontend/src/views/files/Preview.vue index 46670a350b..9a67de2d7c 100644 --- a/frontend/src/views/files/Preview.vue +++ b/frontend/src/views/files/Preview.vue @@ -46,6 +46,16 @@ :label="$t('buttons.download')" @action="download" /> + fileStore.req ? api.getDownloadURL(fileStore.req, false) : "" ); +const directUrl = computed(() => + fileStore.req ? api.getDownloadURL(fileStore.req, true) : "" +); + const previewUrl = computed(() => { if (!fileStore.req) { return ""; @@ -470,6 +484,7 @@ const close = () => { }; const download = () => window.open(downloadUrl.value); +const openDirect = () => window.open(directUrl.value); const editAsText = () => { router.push({ path: route.path, query: { edit: "true" } }); From 3cad9a2b0e9e261cc3b2a9ea3050130ec5a75386 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 15 Feb 2026 13:28:26 +0100 Subject: [PATCH 044/126] chore(deps): update dependency eslint to v10 (#5748) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- frontend/package.json | 2 +- frontend/pnpm-lock.yaml | 380 +++++++++++++--------------------------- 2 files changed, 125 insertions(+), 257 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 7dd3c7c656..a79a930d5f 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -60,7 +60,7 @@ "@vue/eslint-config-typescript": "^14.6.0", "@vue/tsconfig": "^0.8.1", "autoprefixer": "^10.4.21", - "eslint": "^9.31.0", + "eslint": "^10.0.0", "eslint-config-prettier": "^10.1.5", "eslint-plugin-prettier": "^5.5.1", "eslint-plugin-vue": "^10.5.1", diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 02ec513286..1039909dc4 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -101,7 +101,7 @@ importers: devDependencies: '@intlify/unplugin-vue-i18n': specifier: ^11.0.1 - version: 11.0.3(@vue/compiler-dom@3.5.28)(eslint@9.39.2)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3)) + version: 11.0.3(@vue/compiler-dom@3.5.28)(eslint@10.0.0)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3)) '@tsconfig/node24': specifier: ^24.0.2 version: 24.0.4 @@ -113,7 +113,7 @@ importers: version: 24.10.13 '@typescript-eslint/eslint-plugin': specifier: ^8.37.0 - version: 8.55.0(@typescript-eslint/parser@8.55.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) + version: 8.55.0(@typescript-eslint/parser@8.55.0(eslint@10.0.0)(typescript@5.9.3))(eslint@10.0.0)(typescript@5.9.3) '@vitejs/plugin-legacy': specifier: ^7.2.1 version: 7.2.1(terser@5.46.0)(vite@7.3.1(@types/node@24.10.13)(terser@5.46.0)(yaml@2.8.2)) @@ -122,10 +122,10 @@ importers: version: 6.0.4(vite@7.3.1(@types/node@24.10.13)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3)) '@vue/eslint-config-prettier': specifier: ^10.2.0 - version: 10.2.0(eslint@9.39.2)(prettier@3.8.1) + version: 10.2.0(eslint@10.0.0)(prettier@3.8.1) '@vue/eslint-config-typescript': specifier: ^14.6.0 - version: 14.6.0(eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.55.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.4.0(eslint@9.39.2)))(eslint@9.39.2)(typescript@5.9.3) + version: 14.6.0(eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.55.0(eslint@10.0.0)(typescript@5.9.3))(eslint@10.0.0)(vue-eslint-parser@10.4.0(eslint@10.0.0)))(eslint@10.0.0)(typescript@5.9.3) '@vue/tsconfig': specifier: ^0.8.1 version: 0.8.1(typescript@5.9.3)(vue@3.5.28(typescript@5.9.3)) @@ -133,17 +133,17 @@ importers: specifier: ^10.4.21 version: 10.4.24(postcss@8.5.6) eslint: - specifier: ^9.31.0 - version: 9.39.2 + specifier: ^10.0.0 + version: 10.0.0 eslint-config-prettier: specifier: ^10.1.5 - version: 10.1.8(eslint@9.39.2) + version: 10.1.8(eslint@10.0.0) eslint-plugin-prettier: specifier: ^5.5.1 - version: 5.5.5(eslint-config-prettier@10.1.8(eslint@9.39.2))(eslint@9.39.2)(prettier@3.8.1) + version: 5.5.5(eslint-config-prettier@10.1.8(eslint@10.0.0))(eslint@10.0.0)(prettier@3.8.1) eslint-plugin-vue: specifier: ^10.5.1 - version: 10.8.0(@typescript-eslint/parser@8.55.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.4.0(eslint@9.39.2)) + version: 10.8.0(@typescript-eslint/parser@8.55.0(eslint@10.0.0)(typescript@5.9.3))(eslint@10.0.0)(vue-eslint-parser@10.4.0(eslint@10.0.0)) postcss: specifier: ^8.5.6 version: 8.5.6 @@ -990,33 +990,25 @@ packages: resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.21.1': - resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/config-helpers@0.4.2': - resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/core@0.17.0': - resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/config-array@0.23.1': + resolution: {integrity: sha512-uVSdg/V4dfQmTjJzR0szNczjOH/J+FyUMMjYtr07xFRXR7EDf9i1qdxrD0VusZH9knj1/ecxzCQQxyic5NzAiA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/eslintrc@3.3.3': - resolution: {integrity: sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/config-helpers@0.5.2': + resolution: {integrity: sha512-a5MxrdDXEvqnIq+LisyCX6tQMPF/dSJpCfBgBauY+pNZ28yCtSsTvyTYrMhaI+LK26bVyCJfJkT0u8KIj2i1dQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/js@9.39.2': - resolution: {integrity: sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/core@1.1.0': + resolution: {integrity: sha512-/nr9K9wkr3P1EzFTdFdMoLuo1PmIxjmwvPozwoSodjNBdefGujXQUF93u1DDZpEaTuDvMsIQddsd35BwtrW9Xw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/object-schema@2.1.7': - resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/object-schema@3.0.1': + resolution: {integrity: sha512-P9cq2dpr+LU8j3qbLygLcSZrl2/ds/pUpfnHNNuk5HW7mnngHs+6WSq5C9mO3rqRX8A1poxqLTC9cu0KOyJlBg==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/plugin-kit@0.4.1': - resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/plugin-kit@0.6.0': + resolution: {integrity: sha512-bIZEUzOI1jkhviX2cp5vNyXQc6olzb2ohewQubuYlMXZ2Q/XjBO0x0XhGPvc9fjSIiUN0vw+0hq53BJ4eQSJKQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@humanfs/core@0.19.1': resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} @@ -1089,6 +1081,10 @@ packages: vue-i18n: optional: true + '@isaacs/cliui@9.0.0': + resolution: {integrity: sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==} + engines: {node: '>=18'} + '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -1576,13 +1572,6 @@ packages: alien-signals@3.1.2: resolution: {integrity: sha512-d9dYqZTS90WLiU0I5c6DHj/HcKkF8ZyGN3G5x8wSbslulz70KOxaqCT0hQCo9KOyhVqzqGojvNdJXoTumZOtcw==} - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - ast-kit@2.2.0: resolution: {integrity: sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw==} engines: {node: '>=20.19.0'} @@ -1621,6 +1610,10 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + balanced-match@4.0.2: + resolution: {integrity: sha512-x0K50QvKQ97fdEz2kPehIerj+YTeptKF9hyYkKf6egnwmMWAkADiO0QCzSp0R5xN8FTZgYaBfSaue46Ej62nMg==} + engines: {node: 20 || >=22} + baseline-browser-mapping@2.9.19: resolution: {integrity: sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==} hasBin: true @@ -1631,12 +1624,13 @@ packages: boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - brace-expansion@1.1.12: - resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} - brace-expansion@2.0.2: resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + brace-expansion@5.0.2: + resolution: {integrity: sha512-Pdk8c9poy+YhOgVWw1JNN22/HcivgKWwpxKq04M/jTmHyCZn12WPJebZxdjSa5TmBqISrUSgNYU3eRORljfCCw==} + engines: {node: 20 || >=22} + braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} @@ -1656,37 +1650,19 @@ packages: buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - caniuse-lite@1.0.30001769: resolution: {integrity: sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==} - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - chokidar@5.0.0: resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} engines: {node: '>= 20.19.0'} - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - 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==} - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - confbox@0.1.8: resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} @@ -1830,10 +1806,6 @@ packages: '@typescript-eslint/parser': optional: true - eslint-scope@8.4.0: - resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint-scope@9.1.0: resolution: {integrity: sha512-CkWE42hOJsNj9FJRaoMX9waUFYhqY4jmyLFdAdzZr6VaCg3ynLYx4WnOdkaIifGfH4gsUcBTn4OZbHXkpLD0FQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} @@ -1850,9 +1822,9 @@ packages: resolution: {integrity: sha512-A0XeIi7CXU7nPlfHS9loMYEKxUaONu/hTEzHTGba9Huu94Cq1hPivf+DE5erJozZOky0LfvXAyrV/tcswpLI0Q==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint@9.39.2: - resolution: {integrity: sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint@10.0.0: + resolution: {integrity: sha512-O0piBKY36YSJhlFSG8p9VUdPV/SxxS4FYDWVpr/9GJuMaepzwlf4J8I4ov1b+ySQfDTPhc3DtLaxcT1fN0yqCg==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: jiti: '*' @@ -1864,10 +1836,6 @@ packages: resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} engines: {node: '>=0.10'} - espree@10.4.0: - resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - espree@11.1.0: resolution: {integrity: sha512-WFWYhO1fV4iYkqOOvq8FbqIhr2pYfoDY0kCotMkDeNtGpiGGkZ1iov2u8ydjtgM8yF8rzK7oaTbw2NAzbAbehw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} @@ -1989,17 +1957,9 @@ packages: global@4.4.0: resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==} - globals@14.0.0: - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} - engines: {node: '>=18'} - graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} @@ -2018,10 +1978,6 @@ packages: immediate@3.0.6: resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} - import-fresh@3.3.1: - resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} - engines: {node: '>=6'} - imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -2062,16 +2018,16 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + jackspeak@4.2.3: + resolution: {integrity: sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==} + engines: {node: 20 || >=22} + js-base64@3.7.8: resolution: {integrity: sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow==} js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-yaml@4.1.1: - resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} - hasBin: true - jsesc@3.1.0: resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} engines: {node: '>=6'} @@ -2150,9 +2106,6 @@ packages: lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - lodash.throttle@4.1.1: resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} @@ -2201,8 +2154,9 @@ packages: min-document@2.19.2: resolution: {integrity: sha512-8S5I8db/uZN8r9HSLFVWPdJCvYOejMcEC82VIzNUc6Zkklf/d1gg2psfE79/vyhWOj4+J8MtwmoOz3TmvaGu5A==} - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@10.2.0: + resolution: {integrity: sha512-ugkC31VaVg9cF0DFVoADH12k6061zNZkZON+aX8AWsR9GhPcErkcMBceb6znR8wLERM2AkkOxy2nWRLpT9Jq5w==} + engines: {node: 20 || >=22} minimatch@9.0.5: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} @@ -2264,10 +2218,6 @@ packages: pako@1.0.11: resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} - parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} @@ -2411,10 +2361,6 @@ packages: requires-port@1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} - resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - resolve@1.22.11: resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} engines: {node: '>= 0.4'} @@ -2486,18 +2432,10 @@ packages: string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - superjson@2.2.6: resolution: {integrity: sha512-H+ue8Zo4vJmV2nRjpx86P35lzwDT3nItnIsocgumgr0hHMQ+ZGq5vrERg9kJBo5AWGmxZDhzDo+WVIJqkB0cGA==} engines: {node: '>=16'} - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -3587,50 +3525,34 @@ snapshots: '@esbuild/win32-x64@0.27.3': optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@9.39.2)': + '@eslint-community/eslint-utils@4.9.1(eslint@10.0.0)': dependencies: - eslint: 9.39.2 + eslint: 10.0.0 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} - '@eslint/config-array@0.21.1': + '@eslint/config-array@0.23.1': dependencies: - '@eslint/object-schema': 2.1.7 + '@eslint/object-schema': 3.0.1 debug: 4.4.3 - minimatch: 3.1.2 + minimatch: 10.2.0 transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.4.2': + '@eslint/config-helpers@0.5.2': dependencies: - '@eslint/core': 0.17.0 + '@eslint/core': 1.1.0 - '@eslint/core@0.17.0': + '@eslint/core@1.1.0': dependencies: '@types/json-schema': 7.0.15 - '@eslint/eslintrc@3.3.3': - dependencies: - ajv: 6.12.6 - debug: 4.4.3 - espree: 10.4.0 - globals: 14.0.0 - ignore: 5.3.2 - import-fresh: 3.3.1 - js-yaml: 4.1.1 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@eslint/js@9.39.2': {} + '@eslint/object-schema@3.0.1': {} - '@eslint/object-schema@2.1.7': {} - - '@eslint/plugin-kit@0.4.1': + '@eslint/plugin-kit@0.6.0': dependencies: - '@eslint/core': 0.17.0 + '@eslint/core': 1.1.0 levn: 0.4.1 '@humanfs/core@0.19.1': {} @@ -3670,9 +3592,9 @@ snapshots: '@intlify/shared@11.2.8': {} - '@intlify/unplugin-vue-i18n@11.0.3(@vue/compiler-dom@3.5.28)(eslint@9.39.2)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3))': + '@intlify/unplugin-vue-i18n@11.0.3(@vue/compiler-dom@3.5.28)(eslint@10.0.0)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3))': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.0) '@intlify/bundle-utils': 11.0.3(vue-i18n@11.2.8(vue@3.5.28(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.28)(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3)) @@ -3703,6 +3625,8 @@ snapshots: vue: 3.5.28(typescript@5.9.3) vue-i18n: 11.2.8(vue@3.5.28(typescript@5.9.3)) + '@isaacs/cliui@9.0.0': {} + '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -3853,15 +3777,15 @@ snapshots: '@types/web-bluetooth@0.0.21': {} - '@typescript-eslint/eslint-plugin@8.55.0(@typescript-eslint/parser@8.55.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.55.0(@typescript-eslint/parser@8.55.0(eslint@10.0.0)(typescript@5.9.3))(eslint@10.0.0)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.55.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/parser': 8.55.0(eslint@10.0.0)(typescript@5.9.3) '@typescript-eslint/scope-manager': 8.55.0 - '@typescript-eslint/type-utils': 8.55.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/utils': 8.55.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/type-utils': 8.55.0(eslint@10.0.0)(typescript@5.9.3) + '@typescript-eslint/utils': 8.55.0(eslint@10.0.0)(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.55.0 - eslint: 9.39.2 + eslint: 10.0.0 ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.4.0(typescript@5.9.3) @@ -3869,14 +3793,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.55.0(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/parser@8.55.0(eslint@10.0.0)(typescript@5.9.3)': dependencies: '@typescript-eslint/scope-manager': 8.55.0 '@typescript-eslint/types': 8.55.0 '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.55.0 debug: 4.4.3 - eslint: 9.39.2 + eslint: 10.0.0 typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -3899,13 +3823,13 @@ snapshots: dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.55.0(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.55.0(eslint@10.0.0)(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 8.55.0 '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.55.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/utils': 8.55.0(eslint@10.0.0)(typescript@5.9.3) debug: 4.4.3 - eslint: 9.39.2 + eslint: 10.0.0 ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: @@ -3928,13 +3852,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.55.0(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/utils@8.55.0(eslint@10.0.0)(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.0) '@typescript-eslint/scope-manager': 8.55.0 '@typescript-eslint/types': 8.55.0 '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.9.3) - eslint: 9.39.2 + eslint: 10.0.0 typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -4081,23 +4005,23 @@ snapshots: dependencies: rfdc: 1.4.1 - '@vue/eslint-config-prettier@10.2.0(eslint@9.39.2)(prettier@3.8.1)': + '@vue/eslint-config-prettier@10.2.0(eslint@10.0.0)(prettier@3.8.1)': dependencies: - eslint: 9.39.2 - eslint-config-prettier: 10.1.8(eslint@9.39.2) - eslint-plugin-prettier: 5.5.5(eslint-config-prettier@10.1.8(eslint@9.39.2))(eslint@9.39.2)(prettier@3.8.1) + eslint: 10.0.0 + eslint-config-prettier: 10.1.8(eslint@10.0.0) + eslint-plugin-prettier: 5.5.5(eslint-config-prettier@10.1.8(eslint@10.0.0))(eslint@10.0.0)(prettier@3.8.1) prettier: 3.8.1 transitivePeerDependencies: - '@types/eslint' - '@vue/eslint-config-typescript@14.6.0(eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.55.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.4.0(eslint@9.39.2)))(eslint@9.39.2)(typescript@5.9.3)': + '@vue/eslint-config-typescript@14.6.0(eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.55.0(eslint@10.0.0)(typescript@5.9.3))(eslint@10.0.0)(vue-eslint-parser@10.4.0(eslint@10.0.0)))(eslint@10.0.0)(typescript@5.9.3)': dependencies: - '@typescript-eslint/utils': 8.55.0(eslint@9.39.2)(typescript@5.9.3) - eslint: 9.39.2 - eslint-plugin-vue: 10.8.0(@typescript-eslint/parser@8.55.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.4.0(eslint@9.39.2)) + '@typescript-eslint/utils': 8.55.0(eslint@10.0.0)(typescript@5.9.3) + eslint: 10.0.0 + eslint-plugin-vue: 10.8.0(@typescript-eslint/parser@8.55.0(eslint@10.0.0)(typescript@5.9.3))(eslint@10.0.0)(vue-eslint-parser@10.4.0(eslint@10.0.0)) fast-glob: 3.3.3 - typescript-eslint: 8.55.0(eslint@9.39.2)(typescript@5.9.3) - vue-eslint-parser: 10.4.0(eslint@9.39.2) + typescript-eslint: 8.55.0(eslint@10.0.0)(typescript@5.9.3) + vue-eslint-parser: 10.4.0(eslint@10.0.0) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: @@ -4192,12 +4116,6 @@ snapshots: alien-signals@3.1.2: {} - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - argparse@2.0.1: {} - ast-kit@2.2.0: dependencies: '@babel/parser': 7.29.0 @@ -4251,20 +4169,23 @@ snapshots: balanced-match@1.0.2: {} + balanced-match@4.0.2: + dependencies: + jackspeak: 4.2.3 + baseline-browser-mapping@2.9.19: {} birpc@2.9.0: {} boolbase@1.0.0: {} - brace-expansion@1.1.12: + brace-expansion@2.0.2: dependencies: balanced-match: 1.0.2 - concat-map: 0.0.1 - brace-expansion@2.0.2: + brace-expansion@5.0.2: dependencies: - balanced-match: 1.0.2 + balanced-match: 4.0.2 braces@3.0.3: dependencies: @@ -4285,25 +4206,12 @@ snapshots: buffer-from@1.1.2: {} - callsites@3.1.0: {} - caniuse-lite@1.0.30001769: {} - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - chokidar@5.0.0: dependencies: readdirp: 5.0.0 - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.4: {} - combine-errors@3.0.3: dependencies: custom-error-instance: 2.1.1 @@ -4311,8 +4219,6 @@ snapshots: commander@2.20.3: {} - concat-map@0.0.1: {} - confbox@0.1.8: {} confbox@0.2.4: {} @@ -4468,36 +4374,31 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-prettier@10.1.8(eslint@9.39.2): + eslint-config-prettier@10.1.8(eslint@10.0.0): dependencies: - eslint: 9.39.2 + eslint: 10.0.0 - eslint-plugin-prettier@5.5.5(eslint-config-prettier@10.1.8(eslint@9.39.2))(eslint@9.39.2)(prettier@3.8.1): + eslint-plugin-prettier@5.5.5(eslint-config-prettier@10.1.8(eslint@10.0.0))(eslint@10.0.0)(prettier@3.8.1): dependencies: - eslint: 9.39.2 + eslint: 10.0.0 prettier: 3.8.1 prettier-linter-helpers: 1.0.1 synckit: 0.11.12 optionalDependencies: - eslint-config-prettier: 10.1.8(eslint@9.39.2) + eslint-config-prettier: 10.1.8(eslint@10.0.0) - eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.55.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.4.0(eslint@9.39.2)): + eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.55.0(eslint@10.0.0)(typescript@5.9.3))(eslint@10.0.0)(vue-eslint-parser@10.4.0(eslint@10.0.0)): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2) - eslint: 9.39.2 + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.0) + eslint: 10.0.0 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@9.39.2) + vue-eslint-parser: 10.4.0(eslint@10.0.0) xml-name-validator: 4.0.0 optionalDependencies: - '@typescript-eslint/parser': 8.55.0(eslint@9.39.2)(typescript@5.9.3) - - eslint-scope@8.4.0: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 + '@typescript-eslint/parser': 8.55.0(eslint@10.0.0)(typescript@5.9.3) eslint-scope@9.1.0: dependencies: @@ -4512,28 +4413,25 @@ snapshots: eslint-visitor-keys@5.0.0: {} - eslint@9.39.2: + eslint@10.0.0: dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.0) '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.21.1 - '@eslint/config-helpers': 0.4.2 - '@eslint/core': 0.17.0 - '@eslint/eslintrc': 3.3.3 - '@eslint/js': 9.39.2 - '@eslint/plugin-kit': 0.4.1 + '@eslint/config-array': 0.23.1 + '@eslint/config-helpers': 0.5.2 + '@eslint/core': 1.1.0 + '@eslint/plugin-kit': 0.6.0 '@humanfs/node': 0.16.7 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 '@types/estree': 1.0.8 ajv: 6.12.6 - chalk: 4.1.2 cross-spawn: 7.0.6 debug: 4.4.3 escape-string-regexp: 4.0.0 - eslint-scope: 8.4.0 - eslint-visitor-keys: 4.2.1 - espree: 10.4.0 + eslint-scope: 9.1.0 + eslint-visitor-keys: 5.0.0 + espree: 11.1.0 esquery: 1.7.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -4544,8 +4442,7 @@ snapshots: imurmurhash: 0.1.4 is-glob: 4.0.3 json-stable-stringify-without-jsonify: 1.0.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 + minimatch: 10.2.0 natural-compare: 1.4.0 optionator: 0.9.4 transitivePeerDependencies: @@ -4558,12 +4455,6 @@ snapshots: event-emitter: 0.3.5 type: 2.7.3 - espree@10.4.0: - dependencies: - acorn: 8.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) - eslint-visitor-keys: 4.2.1 - espree@11.1.0: dependencies: acorn: 8.15.0 @@ -4675,12 +4566,8 @@ snapshots: min-document: 2.19.2 process: 0.11.10 - globals@14.0.0: {} - graceful-fs@4.2.11: {} - has-flag@4.0.0: {} - hasown@2.0.2: dependencies: function-bind: 1.1.2 @@ -4693,11 +4580,6 @@ snapshots: immediate@3.0.6: {} - import-fresh@3.3.1: - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - imurmurhash@0.1.4: {} inherits@2.0.4: {} @@ -4724,14 +4606,14 @@ snapshots: isexe@2.0.0: {} + jackspeak@4.2.3: + dependencies: + '@isaacs/cliui': 9.0.0 + js-base64@3.7.8: {} js-tokens@4.0.0: {} - js-yaml@4.1.1: - dependencies: - argparse: 2.0.1 - jsesc@3.1.0: {} json-buffer@3.0.1: {} @@ -4812,8 +4694,6 @@ snapshots: lodash.debounce@4.0.8: {} - lodash.merge@4.6.2: {} - lodash.throttle@4.1.1: {} lodash.uniqby@4.5.0: @@ -4860,9 +4740,9 @@ snapshots: dependencies: dom-walk: 0.1.2 - minimatch@3.1.2: + minimatch@10.2.0: dependencies: - brace-expansion: 1.1.12 + brace-expansion: 5.0.2 minimatch@9.0.5: dependencies: @@ -4926,10 +4806,6 @@ snapshots: pako@1.0.11: {} - parent-module@1.0.1: - dependencies: - callsites: 3.1.0 - path-browserify@1.0.1: {} path-exists@4.0.0: {} @@ -5057,8 +4933,6 @@ snapshots: requires-port@1.0.0: {} - resolve-from@4.0.0: {} - resolve@1.22.11: dependencies: is-core-module: 2.16.1 @@ -5139,16 +5013,10 @@ snapshots: dependencies: safe-buffer: 5.1.2 - strip-json-comments@3.1.1: {} - superjson@2.2.6: dependencies: copy-anything: 4.0.5 - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - supports-preserve-symlinks-flag@1.0.0: {} synckit@0.11.12: @@ -5197,13 +5065,13 @@ snapshots: type@2.7.3: {} - typescript-eslint@8.55.0(eslint@9.39.2)(typescript@5.9.3): + typescript-eslint@8.55.0(eslint@10.0.0)(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.55.0(@typescript-eslint/parser@8.55.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/parser': 8.55.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.55.0(@typescript-eslint/parser@8.55.0(eslint@10.0.0)(typescript@5.9.3))(eslint@10.0.0)(typescript@5.9.3) + '@typescript-eslint/parser': 8.55.0(eslint@10.0.0)(typescript@5.9.3) '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.55.0(eslint@9.39.2)(typescript@5.9.3) - eslint: 9.39.2 + '@typescript-eslint/utils': 8.55.0(eslint@10.0.0)(typescript@5.9.3) + eslint: 10.0.0 typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -5320,10 +5188,10 @@ snapshots: vscode-uri@3.1.0: {} - vue-eslint-parser@10.4.0(eslint@9.39.2): + vue-eslint-parser@10.4.0(eslint@10.0.0): dependencies: debug: 4.4.3 - eslint: 9.39.2 + eslint: 10.0.0 eslint-scope: 9.1.0 eslint-visitor-keys: 5.0.0 espree: 11.1.0 From 63a76ef18c51121e08634810a894c1e22a870428 Mon Sep 17 00:00:00 2001 From: "transifex-integration[bot]" <43880903+transifex-integration[bot]@users.noreply.github.com> Date: Sun, 15 Feb 2026 13:28:37 +0100 Subject: [PATCH 045/126] feat: Updates for project File Browser (#5760) Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com> --- frontend/src/i18n/ar.json | 1 + frontend/src/i18n/bg.json | 1 + frontend/src/i18n/ca.json | 1 + frontend/src/i18n/cs.json | 1 + frontend/src/i18n/de.json | 3 ++- frontend/src/i18n/el.json | 1 + frontend/src/i18n/es.json | 1 + frontend/src/i18n/fa.json | 1 + frontend/src/i18n/fr.json | 1 + frontend/src/i18n/he.json | 1 + frontend/src/i18n/hr.json | 1 + frontend/src/i18n/hu.json | 1 + frontend/src/i18n/is.json | 1 + frontend/src/i18n/it.json | 1 + frontend/src/i18n/ja.json | 1 + frontend/src/i18n/ko.json | 3 ++- frontend/src/i18n/lv.json | 1 + frontend/src/i18n/lv_LV.json | 1 + frontend/src/i18n/nl-be.json | 1 + frontend/src/i18n/nl.json | 3 ++- frontend/src/i18n/no.json | 1 + frontend/src/i18n/pl.json | 3 ++- frontend/src/i18n/pt-br.json | 1 + frontend/src/i18n/pt.json | 1 + frontend/src/i18n/ro.json | 1 + frontend/src/i18n/ru.json | 1 + frontend/src/i18n/sk.json | 1 + frontend/src/i18n/sv-se.json | 1 + frontend/src/i18n/tr.json | 1 + frontend/src/i18n/uk.json | 1 + frontend/src/i18n/vi.json | 1 + frontend/src/i18n/zh-cn.json | 1 + frontend/src/i18n/zh-tw.json | 1 + 33 files changed, 37 insertions(+), 4 deletions(-) diff --git a/frontend/src/i18n/ar.json b/frontend/src/i18n/ar.json index 19662682d7..cf600a381b 100644 --- a/frontend/src/i18n/ar.json +++ b/frontend/src/i18n/ar.json @@ -42,6 +42,7 @@ "update": "تحديث", "upload": "رفع", "openFile": "فتح الملف", + "openDirect": "View raw", "discardChanges": "إلغاء التغييرات", "stopSearch": "توقف عن البحث", "saveChanges": "حفظ التغييرات", diff --git a/frontend/src/i18n/bg.json b/frontend/src/i18n/bg.json index cec17ec987..db4ece315a 100644 --- a/frontend/src/i18n/bg.json +++ b/frontend/src/i18n/bg.json @@ -42,6 +42,7 @@ "update": "Обнови", "upload": "Качи", "openFile": "Отвори файл", + "openDirect": "View raw", "discardChanges": "Изчисти", "stopSearch": "Stop searching", "saveChanges": "Запиши промените", diff --git a/frontend/src/i18n/ca.json b/frontend/src/i18n/ca.json index 2d5b2d0a41..da6dfcc99a 100644 --- a/frontend/src/i18n/ca.json +++ b/frontend/src/i18n/ca.json @@ -42,6 +42,7 @@ "update": "Actualitzar", "upload": "Pujar", "openFile": "Obrir fitxer", + "openDirect": "View raw", "discardChanges": "Descartar", "stopSearch": "Stop searching", "saveChanges": "Save changes", diff --git a/frontend/src/i18n/cs.json b/frontend/src/i18n/cs.json index 119b0ed00e..560e015c91 100644 --- a/frontend/src/i18n/cs.json +++ b/frontend/src/i18n/cs.json @@ -42,6 +42,7 @@ "update": "Aktualizovat", "upload": "Nahrát", "openFile": "Otevřít soubor", + "openDirect": "View raw", "discardChanges": "Zrušit změny", "stopSearch": "Stop searching", "saveChanges": "Save changes", diff --git a/frontend/src/i18n/de.json b/frontend/src/i18n/de.json index ab27610678..0cd29ba839 100644 --- a/frontend/src/i18n/de.json +++ b/frontend/src/i18n/de.json @@ -42,6 +42,7 @@ "update": "Aktualisieren", "upload": "Hochladen", "openFile": "Datei öffnen", + "openDirect": "View raw", "discardChanges": "Verwerfen", "stopSearch": "Suche beenden", "saveChanges": "Änderungen speichern", @@ -89,7 +90,7 @@ "semicolon": "Semikolon (;)", "both": "Beides (,) und (;)" }, - "fileEncoding": "File Encoding" + "fileEncoding": "Dateikodierung" }, "help": { "click": "Datei oder Verzeichnis auswählen", diff --git a/frontend/src/i18n/el.json b/frontend/src/i18n/el.json index ce9054c0fc..ab0e0914f5 100644 --- a/frontend/src/i18n/el.json +++ b/frontend/src/i18n/el.json @@ -42,6 +42,7 @@ "update": "Ενημέρωση", "upload": "Μεταφόρτωση", "openFile": "Άνοιγμα αρχείου", + "openDirect": "View raw", "discardChanges": "Discard", "stopSearch": "Stop searching", "saveChanges": "Save changes", diff --git a/frontend/src/i18n/es.json b/frontend/src/i18n/es.json index 8e46a26d80..94b77c490c 100644 --- a/frontend/src/i18n/es.json +++ b/frontend/src/i18n/es.json @@ -42,6 +42,7 @@ "update": "Actualizar", "upload": "Subir", "openFile": "Abrir archivo", + "openDirect": "View raw", "discardChanges": "Discard", "stopSearch": "Stop searching", "saveChanges": "Guardar cambios", diff --git a/frontend/src/i18n/fa.json b/frontend/src/i18n/fa.json index c691c30d0f..53fef115dd 100644 --- a/frontend/src/i18n/fa.json +++ b/frontend/src/i18n/fa.json @@ -42,6 +42,7 @@ "update": "به روز سانی", "upload": "آپلود", "openFile": "باز کردن فایل", + "openDirect": "View raw", "discardChanges": "لغو کردن", "stopSearch": "Stop searching", "saveChanges": "Save changes", diff --git a/frontend/src/i18n/fr.json b/frontend/src/i18n/fr.json index d187d3503e..3f9a36e889 100644 --- a/frontend/src/i18n/fr.json +++ b/frontend/src/i18n/fr.json @@ -42,6 +42,7 @@ "update": "Mettre à jour", "upload": "Importer", "openFile": "Ouvrir le fichier", + "openDirect": "View raw", "discardChanges": "Annuler", "stopSearch": "Arrêter recherche", "saveChanges": "Enregistrer changements", diff --git a/frontend/src/i18n/he.json b/frontend/src/i18n/he.json index 86270547c1..a9aed87d45 100644 --- a/frontend/src/i18n/he.json +++ b/frontend/src/i18n/he.json @@ -42,6 +42,7 @@ "update": "עדכון", "upload": "העלאה", "openFile": "פתח קובץ", + "openDirect": "View raw", "discardChanges": "זריקת השינויים", "stopSearch": "Stop searching", "saveChanges": "Save changes", diff --git a/frontend/src/i18n/hr.json b/frontend/src/i18n/hr.json index d444dcd4d3..df1fb6da7c 100644 --- a/frontend/src/i18n/hr.json +++ b/frontend/src/i18n/hr.json @@ -42,6 +42,7 @@ "update": "Ažuriraj", "upload": "Prenesi", "openFile": "Otvori datoteku", + "openDirect": "View raw", "discardChanges": "Odbaci", "stopSearch": "Stop searching", "saveChanges": "Spremi promjene", diff --git a/frontend/src/i18n/hu.json b/frontend/src/i18n/hu.json index bb0d3c48e1..38732646ae 100644 --- a/frontend/src/i18n/hu.json +++ b/frontend/src/i18n/hu.json @@ -42,6 +42,7 @@ "update": "Frissítés", "upload": "Feltöltés", "openFile": "Fájl megnyitása", + "openDirect": "View raw", "discardChanges": "Discard", "stopSearch": "Stop searching", "saveChanges": "Save changes", diff --git a/frontend/src/i18n/is.json b/frontend/src/i18n/is.json index 6cbdcb358b..6b7d8abbd5 100644 --- a/frontend/src/i18n/is.json +++ b/frontend/src/i18n/is.json @@ -42,6 +42,7 @@ "update": "Vista", "upload": "Hlaða upp", "openFile": "Open file", + "openDirect": "View raw", "discardChanges": "Discard", "stopSearch": "Stop searching", "saveChanges": "Save changes", diff --git a/frontend/src/i18n/it.json b/frontend/src/i18n/it.json index db3b64a209..a17eb7461e 100644 --- a/frontend/src/i18n/it.json +++ b/frontend/src/i18n/it.json @@ -42,6 +42,7 @@ "update": "Aggiorna", "upload": "Carica", "openFile": "Apri file", + "openDirect": "View raw", "discardChanges": "Ignora", "stopSearch": "Stop searching", "saveChanges": "Save changes", diff --git a/frontend/src/i18n/ja.json b/frontend/src/i18n/ja.json index bf36fc11e0..853fe8d8ab 100644 --- a/frontend/src/i18n/ja.json +++ b/frontend/src/i18n/ja.json @@ -42,6 +42,7 @@ "update": "更新", "upload": "アップロード", "openFile": "ファイルを開く", + "openDirect": "View raw", "discardChanges": "Discard", "stopSearch": "Stop searching", "saveChanges": "Save changes", diff --git a/frontend/src/i18n/ko.json b/frontend/src/i18n/ko.json index 31c10ced87..9c1cd76491 100644 --- a/frontend/src/i18n/ko.json +++ b/frontend/src/i18n/ko.json @@ -42,6 +42,7 @@ "update": "업데이트", "upload": "업로드", "openFile": "파일 열기", + "openDirect": "View raw", "discardChanges": "변경 사항 취소", "stopSearch": "검색 중단", "saveChanges": "변경사항 저장", @@ -89,7 +90,7 @@ "semicolon": "쌍반점 (;)", "both": "(,) 및 (;) 모두" }, - "fileEncoding": "File Encoding" + "fileEncoding": "파일 인코딩" }, "help": { "click": "파일 또는 디렉터리 선택", diff --git a/frontend/src/i18n/lv.json b/frontend/src/i18n/lv.json index bc62eb14c6..2d55756691 100644 --- a/frontend/src/i18n/lv.json +++ b/frontend/src/i18n/lv.json @@ -42,6 +42,7 @@ "update": "Atjaunināt", "upload": "Augšupielādēt", "openFile": "Atvērt failu", + "openDirect": "View raw", "discardChanges": "Izmest", "stopSearch": "Stop searching", "saveChanges": "Saglabāt izmaiņas", diff --git a/frontend/src/i18n/lv_LV.json b/frontend/src/i18n/lv_LV.json index 49a85bc6aa..67fbdb8e0e 100644 --- a/frontend/src/i18n/lv_LV.json +++ b/frontend/src/i18n/lv_LV.json @@ -42,6 +42,7 @@ "update": "Atjaunināt", "upload": "Augšupielādēt", "openFile": "Atvērt failu", + "openDirect": "View raw", "discardChanges": "Izmest", "stopSearch": "Beigt meklēšanu", "saveChanges": "Saglabāt izmaiņas", diff --git a/frontend/src/i18n/nl-be.json b/frontend/src/i18n/nl-be.json index dfcdeb69a2..d9f76406c7 100644 --- a/frontend/src/i18n/nl-be.json +++ b/frontend/src/i18n/nl-be.json @@ -42,6 +42,7 @@ "update": "Updaten", "upload": "Uploaden", "openFile": "Open file", + "openDirect": "View raw", "discardChanges": "Discard", "stopSearch": "Stop searching", "saveChanges": "Save changes", diff --git a/frontend/src/i18n/nl.json b/frontend/src/i18n/nl.json index 4cc992eeae..70e9b2446c 100644 --- a/frontend/src/i18n/nl.json +++ b/frontend/src/i18n/nl.json @@ -42,6 +42,7 @@ "update": "Bijwerken", "upload": "Uploaden", "openFile": "Bestand openen", + "openDirect": "View raw", "discardChanges": "Weggooien", "stopSearch": "Stoppen met zoeken", "saveChanges": "Wijzigingen opslaan", @@ -89,7 +90,7 @@ "semicolon": "Puntkomma (;)", "both": "Beide (,) en (;)" }, - "fileEncoding": "File Encoding" + "fileEncoding": "Bestandscodering" }, "help": { "click": "selecteer bestand of map", diff --git a/frontend/src/i18n/no.json b/frontend/src/i18n/no.json index c38573d558..4c9fb225ee 100644 --- a/frontend/src/i18n/no.json +++ b/frontend/src/i18n/no.json @@ -42,6 +42,7 @@ "update": "Opptater", "upload": "Last opp", "openFile": "Open file", + "openDirect": "View raw", "discardChanges": "Slett", "stopSearch": "Stop searching", "saveChanges": "Lagre Endringane ", diff --git a/frontend/src/i18n/pl.json b/frontend/src/i18n/pl.json index 45f3d8f2ff..9f9d3a29d7 100644 --- a/frontend/src/i18n/pl.json +++ b/frontend/src/i18n/pl.json @@ -42,6 +42,7 @@ "update": "Aktualizuj", "upload": "Wyślij", "openFile": "Otwórz plik", + "openDirect": "View raw", "discardChanges": "Odrzuć", "stopSearch": "Zatrzymaj wyszukiwanie", "saveChanges": "Zapisz zmiany", @@ -89,7 +90,7 @@ "semicolon": "Średnik (;)", "both": "Zarówno (,), jak i (;)" }, - "fileEncoding": "File Encoding" + "fileEncoding": "Kodowanie pliku" }, "help": { "click": "zaznacz plik lub folder", diff --git a/frontend/src/i18n/pt-br.json b/frontend/src/i18n/pt-br.json index 42d3d140e3..5f36c337ea 100644 --- a/frontend/src/i18n/pt-br.json +++ b/frontend/src/i18n/pt-br.json @@ -42,6 +42,7 @@ "update": "Atualizar", "upload": "Enviar", "openFile": "Abrir", + "openDirect": "View raw", "discardChanges": "Discard", "stopSearch": "Stop searching", "saveChanges": "Save changes", diff --git a/frontend/src/i18n/pt.json b/frontend/src/i18n/pt.json index bf1d33132d..0e50052255 100644 --- a/frontend/src/i18n/pt.json +++ b/frontend/src/i18n/pt.json @@ -42,6 +42,7 @@ "update": "Atualizar", "upload": "Enviar", "openFile": "Open file", + "openDirect": "View raw", "discardChanges": "Discard", "stopSearch": "Stop searching", "saveChanges": "Save changes", diff --git a/frontend/src/i18n/ro.json b/frontend/src/i18n/ro.json index 709bb11e74..5495e884d8 100644 --- a/frontend/src/i18n/ro.json +++ b/frontend/src/i18n/ro.json @@ -42,6 +42,7 @@ "update": "Actualizează", "upload": "Încarcă", "openFile": "Open file", + "openDirect": "View raw", "discardChanges": "Discard", "stopSearch": "Stop searching", "saveChanges": "Save changes", diff --git a/frontend/src/i18n/ru.json b/frontend/src/i18n/ru.json index 5ce4112c24..05514e4a64 100644 --- a/frontend/src/i18n/ru.json +++ b/frontend/src/i18n/ru.json @@ -42,6 +42,7 @@ "update": "Обновить", "upload": "Загрузить", "openFile": "Открыть файл", + "openDirect": "View raw", "discardChanges": "Отказаться", "stopSearch": "Stop searching", "saveChanges": "Сохранить", diff --git a/frontend/src/i18n/sk.json b/frontend/src/i18n/sk.json index 730e729ce8..225a4f748e 100644 --- a/frontend/src/i18n/sk.json +++ b/frontend/src/i18n/sk.json @@ -42,6 +42,7 @@ "update": "Aktualizovať", "upload": "Nahrať", "openFile": "Otvoriť súbor", + "openDirect": "View raw", "discardChanges": "Zahodiť", "stopSearch": "Stop searching", "saveChanges": "Uložiť zmeny", diff --git a/frontend/src/i18n/sv-se.json b/frontend/src/i18n/sv-se.json index 9b6ec8a023..5542c7159f 100644 --- a/frontend/src/i18n/sv-se.json +++ b/frontend/src/i18n/sv-se.json @@ -42,6 +42,7 @@ "update": "Uppdatera", "upload": "Ladda upp", "openFile": "Öppna fil", + "openDirect": "View raw", "discardChanges": "Förkasta", "stopSearch": "Stop searching", "saveChanges": "Spara ändringar", diff --git a/frontend/src/i18n/tr.json b/frontend/src/i18n/tr.json index 40881d351c..5ff72853e6 100644 --- a/frontend/src/i18n/tr.json +++ b/frontend/src/i18n/tr.json @@ -42,6 +42,7 @@ "update": "Güncelle", "upload": "Yükle", "openFile": "Dosyayı aç", + "openDirect": "View raw", "discardChanges": "Discard", "stopSearch": "Stop searching", "saveChanges": "Save changes", diff --git a/frontend/src/i18n/uk.json b/frontend/src/i18n/uk.json index e38e309c9f..ccaf9a41f0 100644 --- a/frontend/src/i18n/uk.json +++ b/frontend/src/i18n/uk.json @@ -42,6 +42,7 @@ "update": "Оновити", "upload": "Вивантажити", "openFile": "Відкрити файл", + "openDirect": "View raw", "discardChanges": "Скасувати", "stopSearch": "Stop searching", "saveChanges": "Save changes", diff --git a/frontend/src/i18n/vi.json b/frontend/src/i18n/vi.json index 72f5c160a7..ef3aeab580 100644 --- a/frontend/src/i18n/vi.json +++ b/frontend/src/i18n/vi.json @@ -42,6 +42,7 @@ "update": "Cập nhật", "upload": "Tải lên", "openFile": "Mở tệp", + "openDirect": "View raw", "discardChanges": "Hủy bỏ thay đổi", "stopSearch": "Stop searching", "saveChanges": "Save changes", diff --git a/frontend/src/i18n/zh-cn.json b/frontend/src/i18n/zh-cn.json index 0ec45a4e9b..4a16eef972 100644 --- a/frontend/src/i18n/zh-cn.json +++ b/frontend/src/i18n/zh-cn.json @@ -42,6 +42,7 @@ "update": "更新", "upload": "上传", "openFile": "打开文件", + "openDirect": "View raw", "discardChanges": "放弃更改", "stopSearch": "停止搜索", "saveChanges": "保存更改", diff --git a/frontend/src/i18n/zh-tw.json b/frontend/src/i18n/zh-tw.json index cbee96be1e..61f264f38e 100644 --- a/frontend/src/i18n/zh-tw.json +++ b/frontend/src/i18n/zh-tw.json @@ -42,6 +42,7 @@ "update": "更新", "upload": "上傳", "openFile": "開啟檔案", + "openDirect": "View raw", "discardChanges": "放棄變更", "stopSearch": "Stop searching", "saveChanges": "Save changes", From 0467326d5c082c42c0ede88ee2d3472f5fb65600 Mon Sep 17 00:00:00 2001 From: NN708 Date: Sun, 15 Feb 2026 20:53:36 +0800 Subject: [PATCH 046/126] fix: render equations in markdown preview (#5745) --- frontend/package.json | 1 + frontend/pnpm-lock.yaml | 28 ++++++++++++++++++++++++++++ frontend/src/views/files/Editor.vue | 6 ++++++ 3 files changed, 35 insertions(+) diff --git a/frontend/package.json b/frontend/package.json index a79a930d5f..aedaa4994d 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -30,6 +30,7 @@ "jwt-decode": "^4.0.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", diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 1039909dc4..daa46285de 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -47,6 +47,9 @@ importers: marked: specifier: ^17.0.0 version: 17.0.2 + marked-katex-extension: + specifier: ^5.1.6 + version: 5.1.6(katex@0.16.28)(marked@17.0.2) material-icons: specifier: ^1.13.14 version: 1.13.14 @@ -1663,6 +1666,10 @@ packages: 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==} @@ -2058,6 +2065,10 @@ packages: 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==} @@ -2128,6 +2139,12 @@ packages: magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + marked-katex-extension@5.1.6: + resolution: {integrity: sha512-vYpLXwmlIDKILIhJtiRTgdyZRn5sEYdFBuTmbpjD7lbCIzg0/DWyK3HXIntN3Tp8zV6hvOUgpZNLWRCgWVc24A==} + peerDependencies: + katex: '>=0.16 <0.17' + marked: '>=4 <18' + marked@17.0.2: resolution: {integrity: sha512-s5HZGFQea7Huv5zZcAGhJLT3qLpAfnY7v7GWkICUr0+Wd5TFEtdlRR2XUL5Gg+RH7u2Df595ifrxR03mBaw7gA==} engines: {node: '>= 20'} @@ -4219,6 +4236,8 @@ snapshots: commander@2.20.3: {} + commander@8.3.0: {} + confbox@0.1.8: {} confbox@0.2.4: {} @@ -4640,6 +4659,10 @@ snapshots: jwt-decode@4.0.0: {} + katex@0.16.28: + dependencies: + commander: 8.3.0 + keyv@4.5.4: dependencies: json-buffer: 3.0.1 @@ -4721,6 +4744,11 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 + marked-katex-extension@5.1.6(katex@0.16.28)(marked@17.0.2): + dependencies: + katex: 0.16.28 + marked: 17.0.2 + marked@17.0.2: {} marks-pane@1.0.9: {} diff --git a/frontend/src/views/files/Editor.vue b/frontend/src/views/files/Editor.vue index 4ce7b427dd..dbde609e29 100644 --- a/frontend/src/views/files/Editor.vue +++ b/frontend/src/views/files/Editor.vue @@ -94,6 +94,7 @@ import { useFileStore } from "@/stores/file"; import { useLayoutStore } from "@/stores/layout"; import { getEditorTheme } from "@/utils/theme"; import { marked } from "marked"; +import markedKatex from "marked-katex-extension"; import { inject, onBeforeUnmount, onMounted, ref, watchEffect } from "vue"; import { useI18n } from "vue-i18n"; import { onBeforeRouteUpdate, useRoute, useRouter } from "vue-router"; @@ -118,6 +119,11 @@ const previewContent = ref(""); const isMarkdownFile = fileStore.req?.name.endsWith(".md") || fileStore.req?.name.endsWith(".markdown"); +const katexOptions = { + output: "mathml" as const, + throwOnError: false +}; +marked.use(markedKatex(katexOptions)); const isSelectionEmpty = ref(true); From 7e78ad97adce35755be97e0101dfb97882125e69 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sun, 15 Feb 2026 13:54:23 +0100 Subject: [PATCH 047/126] chore(release): 2.59.0 --- CHANGELOG.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 95bfdc96f7..7c3c05eeb1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,19 @@ All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines. +## [2.59.0](https://github.com/filebrowser/filebrowser/compare/v2.58.0...v2.59.0) (2026-02-15) + + +### Features + +* add 'Open direct' button to images ([#5678](https://github.com/filebrowser/filebrowser/issues/5678)) ([804b14b](https://github.com/filebrowser/filebrowser/commit/804b14b698aa218fa5c2aaba687e72c5f7617f0f)) +* Updates for project File Browser ([#5760](https://github.com/filebrowser/filebrowser/issues/5760)) ([63a76ef](https://github.com/filebrowser/filebrowser/commit/63a76ef18c51121e08634810a894c1e22a870428)) + + +### Bug Fixes + +* render equations in markdown preview ([#5745](https://github.com/filebrowser/filebrowser/issues/5745)) ([0467326](https://github.com/filebrowser/filebrowser/commit/0467326d5c082c42c0ede88ee2d3472f5fb65600)) + ## [2.58.0](https://github.com/filebrowser/filebrowser/compare/v2.57.1...v2.58.0) (2026-02-14) From 3169a14a4d63a0a11a5288f4f3a674c0a0edb972 Mon Sep 17 00:00:00 2001 From: Ariel Leyva Date: Sat, 21 Feb 2026 12:11:50 -0500 Subject: [PATCH 048/126] fix: always show separators and encoding list in the CSV viewer (#5774) --- frontend/src/components/files/CsvViewer.vue | 72 ++++++++++----------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/frontend/src/components/files/CsvViewer.vue b/frontend/src/components/files/CsvViewer.vue index fdcaaed9f4..38c2de5922 100644 --- a/frontend/src/components/files/CsvViewer.vue +++ b/frontend/src/components/files/CsvViewer.vue @@ -1,5 +1,41 @@ diff --git a/frontend/src/css/base.css b/frontend/src/css/base.css index f0b8ef0cee..cdb3319bf8 100644 --- a/frontend/src/css/base.css +++ b/frontend/src/css/base.css @@ -182,10 +182,11 @@ html[dir="rtl"] .breadcrumbs a { background: var(--textSecondary) !important; } -.vfm-modal { - z-index: 9999999 !important; -} - body > div[style*="z-index: 9990"] { z-index: 10000 !important; } + +#modal-background .button:focus { + outline: 1px solid #2195f32d; + outline-offset: 1px; +} diff --git a/frontend/src/css/styles.css b/frontend/src/css/styles.css index 5ac7d8d516..bab7cd192d 100644 --- a/frontend/src/css/styles.css +++ b/frontend/src/css/styles.css @@ -1,6 +1,5 @@ @import "normalize.css/normalize.css"; @import "vue-toastification/dist/index.css"; -@import "vue-final-modal/style.css"; @import "./_variables.css"; @import "./_buttons.css"; @import "./_inputs.css"; diff --git a/frontend/src/main.ts b/frontend/src/main.ts index 42f4420564..f6b7ac78c5 100644 --- a/frontend/src/main.ts +++ b/frontend/src/main.ts @@ -2,7 +2,6 @@ import { disableExternal } from "@/utils/constants"; import { createApp } from "vue"; import VueNumberInput from "@chenfengyuan/vue-number-input"; import VueLazyload from "vue-lazyload"; -import { createVfm } from "vue-final-modal"; import Toast, { POSITION, useToast } from "vue-toastification"; import type { ToastOptions, @@ -27,7 +26,6 @@ dayjs.extend(relativeTime); dayjs.extend(duration); const pinia = createPinia(router); -const vfm = createVfm(); const app = createApp(App); @@ -39,7 +37,6 @@ app.use(Toast, { newestOnTop: true, } satisfies PluginOptions); -app.use(vfm); app.use(i18n); app.use(pinia); app.use(router); diff --git a/frontend/src/stores/layout.ts b/frontend/src/stores/layout.ts index 372fca06e8..fbd6d99f6a 100644 --- a/frontend/src/stores/layout.ts +++ b/frontend/src/stores/layout.ts @@ -76,7 +76,7 @@ export const useLayoutStore = defineStore("layout", { }); }, closeHovers() { - this.prompts.shift()?.close?.(); + this.prompts.pop()?.close?.(); }, // easily reset state using `$reset` clearLayout() { diff --git a/frontend/src/views/files/Editor.vue b/frontend/src/views/files/Editor.vue index dbde609e29..2b2852d37b 100644 --- a/frontend/src/views/files/Editor.vue +++ b/frontend/src/views/files/Editor.vue @@ -121,7 +121,7 @@ const isMarkdownFile = fileStore.req?.name.endsWith(".markdown"); const katexOptions = { output: "mathml" as const, - throwOnError: false + throwOnError: false, }; marked.use(markedKatex(katexOptions)); @@ -233,6 +233,11 @@ const initEditor = (fileContent: string) => { editor.value.setFontSize(fontSize.value); editor.value.focus(); + + const selection = editor.value?.getSelection(); + selection.on("changeSelection", function () { + isSelectionEmpty.value = selection.isEmpty(); + }); }; const keyEvent = (event: KeyboardEvent) => { @@ -296,6 +301,7 @@ const close = () => { prompt: "discardEditorChanges", confirm: (event: Event) => { event.preventDefault(); + editor.value?.session.getUndoManager().reset(); finishClose(); }, saveAction: async () => { From 9940bdd663ff5141110778524b8a22c957036e78 Mon Sep 17 00:00:00 2001 From: "transifex-integration[bot]" <43880903+transifex-integration[bot]@users.noreply.github.com> Date: Sat, 21 Feb 2026 18:12:43 +0100 Subject: [PATCH 050/126] feat: Updates for project File Browser (#5764) Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com> --- frontend/src/i18n/de.json | 2 +- frontend/src/i18n/ko.json | 2 +- frontend/src/i18n/nl.json | 2 +- frontend/src/i18n/pl.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/src/i18n/de.json b/frontend/src/i18n/de.json index 0cd29ba839..d7519c8bb3 100644 --- a/frontend/src/i18n/de.json +++ b/frontend/src/i18n/de.json @@ -42,7 +42,7 @@ "update": "Aktualisieren", "upload": "Hochladen", "openFile": "Datei öffnen", - "openDirect": "View raw", + "openDirect": "Original anzeigen", "discardChanges": "Verwerfen", "stopSearch": "Suche beenden", "saveChanges": "Änderungen speichern", diff --git a/frontend/src/i18n/ko.json b/frontend/src/i18n/ko.json index 9c1cd76491..cd9252c2d6 100644 --- a/frontend/src/i18n/ko.json +++ b/frontend/src/i18n/ko.json @@ -42,7 +42,7 @@ "update": "업데이트", "upload": "업로드", "openFile": "파일 열기", - "openDirect": "View raw", + "openDirect": "원본 보기", "discardChanges": "변경 사항 취소", "stopSearch": "검색 중단", "saveChanges": "변경사항 저장", diff --git a/frontend/src/i18n/nl.json b/frontend/src/i18n/nl.json index 70e9b2446c..4701af98c4 100644 --- a/frontend/src/i18n/nl.json +++ b/frontend/src/i18n/nl.json @@ -42,7 +42,7 @@ "update": "Bijwerken", "upload": "Uploaden", "openFile": "Bestand openen", - "openDirect": "View raw", + "openDirect": "Raw weergeven", "discardChanges": "Weggooien", "stopSearch": "Stoppen met zoeken", "saveChanges": "Wijzigingen opslaan", diff --git a/frontend/src/i18n/pl.json b/frontend/src/i18n/pl.json index 9f9d3a29d7..7956e22bc0 100644 --- a/frontend/src/i18n/pl.json +++ b/frontend/src/i18n/pl.json @@ -42,7 +42,7 @@ "update": "Aktualizuj", "upload": "Wyślij", "openFile": "Otwórz plik", - "openDirect": "View raw", + "openDirect": "Otwórz bezpośrednio", "discardChanges": "Odrzuć", "stopSearch": "Zatrzymaj wyszukiwanie", "saveChanges": "Zapisz zmiany", From 2470b9eb69f183a4b4f1e948ad4fab47a97ef382 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 21 Feb 2026 18:17:51 +0100 Subject: [PATCH 051/126] chore(deps): update all non-major dependencies (#5780) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- frontend/package.json | 2 +- frontend/pnpm-lock.yaml | 439 +++++++++++++++++++--------------------- go.mod | 3 +- go.sum | 11 +- 4 files changed, 224 insertions(+), 231 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 1ebaaaa15c..e98566b976 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -72,5 +72,5 @@ "vite-plugin-compression2": "^2.3.1", "vue-tsc": "^3.1.3" }, - "packageManager": "pnpm@10.29.3+sha512.498e1fb4cca5aa06c1dcf2611e6fafc50972ffe7189998c409e90de74566444298ffe43e6cd2acdc775ba1aa7cc5e092a8b7054c811ba8c5770f84693d33d2dc" + "packageManager": "pnpm@10.30.1+sha512.3590e550d5384caa39bd5c7c739f72270234b2f6059e13018f975c313b1eb9fefcc09714048765d4d9efe961382c312e624572c0420762bdc5d5940cdf9be73a" } diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index cc488cd3ab..7ec45c7af3 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -46,10 +46,10 @@ importers: version: 4.17.23 marked: specifier: ^17.0.0 - version: 17.0.2 + version: 17.0.3 marked-katex-extension: specifier: ^5.1.6 - version: 5.1.6(katex@0.16.28)(marked@17.0.2) + version: 5.1.7(katex@0.16.28)(marked@17.0.3) material-icons: specifier: ^1.13.14 version: 1.13.14 @@ -94,14 +94,14 @@ importers: version: 1.3.4 vue-router: specifier: ^5.0.0 - version: 5.0.2(@vue/compiler-sfc@3.5.28)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3)) + version: 5.0.3(@vue/compiler-sfc@3.5.28)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3)) vue-toastification: specifier: ^2.0.0-rc.5 version: 2.0.0-rc.5(vue@3.5.28(typescript@5.9.3)) devDependencies: '@intlify/unplugin-vue-i18n': specifier: ^11.0.1 - version: 11.0.3(@vue/compiler-dom@3.5.28)(eslint@10.0.0)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3)) + version: 11.0.7(@vue/compiler-dom@3.5.28)(eslint@10.0.1)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3)) '@tsconfig/node24': specifier: ^24.0.2 version: 24.0.4 @@ -113,7 +113,7 @@ importers: version: 24.10.13 '@typescript-eslint/eslint-plugin': specifier: ^8.37.0 - version: 8.55.0(@typescript-eslint/parser@8.55.0(eslint@10.0.0)(typescript@5.9.3))(eslint@10.0.0)(typescript@5.9.3) + version: 8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.0.1)(typescript@5.9.3))(eslint@10.0.1)(typescript@5.9.3) '@vitejs/plugin-legacy': specifier: ^7.2.1 version: 7.2.1(terser@5.46.0)(vite@7.3.1(@types/node@24.10.13)(terser@5.46.0)(yaml@2.8.2)) @@ -122,10 +122,10 @@ importers: version: 6.0.4(vite@7.3.1(@types/node@24.10.13)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3)) '@vue/eslint-config-prettier': specifier: ^10.2.0 - version: 10.2.0(eslint@10.0.0)(prettier@3.8.1) + version: 10.2.0(eslint@10.0.1)(prettier@3.8.1) '@vue/eslint-config-typescript': specifier: ^14.6.0 - version: 14.6.0(eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.55.0(eslint@10.0.0)(typescript@5.9.3))(eslint@10.0.0)(vue-eslint-parser@10.4.0(eslint@10.0.0)))(eslint@10.0.0)(typescript@5.9.3) + version: 14.7.0(eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.1)(typescript@5.9.3))(eslint@10.0.1)(vue-eslint-parser@10.4.0(eslint@10.0.1)))(eslint@10.0.1)(typescript@5.9.3) '@vue/tsconfig': specifier: ^0.8.1 version: 0.8.1(typescript@5.9.3)(vue@3.5.28(typescript@5.9.3)) @@ -134,16 +134,16 @@ importers: version: 10.4.24(postcss@8.5.6) eslint: specifier: ^10.0.0 - version: 10.0.0 + version: 10.0.1 eslint-config-prettier: specifier: ^10.1.5 - version: 10.1.8(eslint@10.0.0) + version: 10.1.8(eslint@10.0.1) eslint-plugin-prettier: specifier: ^5.5.1 - version: 5.5.5(eslint-config-prettier@10.1.8(eslint@10.0.0))(eslint@10.0.0)(prettier@3.8.1) + version: 5.5.5(eslint-config-prettier@10.1.8(eslint@10.0.1))(eslint@10.0.1)(prettier@3.8.1) eslint-plugin-vue: specifier: ^10.5.1 - version: 10.8.0(@typescript-eslint/parser@8.55.0(eslint@10.0.0)(typescript@5.9.3))(eslint@10.0.0)(vue-eslint-parser@10.4.0(eslint@10.0.0)) + version: 10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.1)(typescript@5.9.3))(eslint@10.0.1)(vue-eslint-parser@10.4.0(eslint@10.0.1)) postcss: specifier: ^8.5.6 version: 8.5.6 @@ -164,7 +164,7 @@ importers: version: 2.4.0(rollup@4.57.1) vue-tsc: specifier: ^3.1.3 - version: 3.2.4(typescript@5.9.3) + version: 3.2.5(typescript@5.9.3) packages: @@ -990,8 +990,8 @@ packages: resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.23.1': - resolution: {integrity: sha512-uVSdg/V4dfQmTjJzR0szNczjOH/J+FyUMMjYtr07xFRXR7EDf9i1qdxrD0VusZH9knj1/ecxzCQQxyic5NzAiA==} + '@eslint/config-array@0.23.2': + resolution: {integrity: sha512-YF+fE6LV4v5MGWRGj7G404/OZzGNepVF8fxk7jqmqo3lrza7a0uUcDnROGRBG1WFC1omYUS/Wp1f42i0M+3Q3A==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@eslint/config-helpers@0.5.2': @@ -1002,8 +1002,8 @@ packages: resolution: {integrity: sha512-/nr9K9wkr3P1EzFTdFdMoLuo1PmIxjmwvPozwoSodjNBdefGujXQUF93u1DDZpEaTuDvMsIQddsd35BwtrW9Xw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/object-schema@3.0.1': - resolution: {integrity: sha512-P9cq2dpr+LU8j3qbLygLcSZrl2/ds/pUpfnHNNuk5HW7mnngHs+6WSq5C9mO3rqRX8A1poxqLTC9cu0KOyJlBg==} + '@eslint/object-schema@3.0.2': + resolution: {integrity: sha512-HOy56KJt48Bx8KmJ+XGQNSUMT/6dZee/M54XyUyuvTvPXJmsERRvBchsUVx1UMe1WwIH49XLAczNC7V2INsuUw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@eslint/plugin-kit@0.6.0': @@ -1026,8 +1026,8 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} - '@intlify/bundle-utils@11.0.3': - resolution: {integrity: sha512-dURCDz1rQXwAb1+Hv4NDit6aZSRaAt4zUYBPEeaDCe3FSs8dMtdF6kEvgd9JwsYFSTAHcvbTs2CqwBjjt9Ltsw==} + '@intlify/bundle-utils@11.0.7': + resolution: {integrity: sha512-fEO3CJGPymxieGh8BHox7d6stgajDQae7wgpH6YYw7WX+cdW6jTTXyljZqz7OV3JcwlS9M9UHSoO+YwiO56IhA==} engines: {node: '>= 20'} peerDependencies: petite-vue-i18n: '*' @@ -1050,8 +1050,8 @@ packages: resolution: {integrity: sha512-l6e4NZyUgv8VyXXH4DbuucFOBmxLF56C/mqh2tvApbzl2Hrhi1aTDcuv5TKdxzfHYmpO3UB0Cz04fgDT9vszfw==} engines: {node: '>= 16'} - '@intlify/unplugin-vue-i18n@11.0.3': - resolution: {integrity: sha512-iQuik0nXfdVZ5ab+IEyBFEuvMQ213zfbUpBXaEdHPk8DV+qB2CT/SdFuDhfUDRRBZc/e0qoLlfmc9urhnRYVWw==} + '@intlify/unplugin-vue-i18n@11.0.7': + resolution: {integrity: sha512-wswKprS1D8VfnxxVhKxug5wa3MbDSOcCoXOBjnzhMK+6NfP6h6UI8pFqSBIvcW8nPDuzweTc0Sk3PeBCcubfoQ==} engines: {node: '>= 20'} peerDependencies: petite-vue-i18n: '*' @@ -1081,10 +1081,6 @@ packages: vue-i18n: optional: true - '@isaacs/cliui@9.0.0': - resolution: {integrity: sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==} - engines: {node: '>=18'} - '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -1301,63 +1297,63 @@ packages: '@types/web-bluetooth@0.0.21': resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} - '@typescript-eslint/eslint-plugin@8.55.0': - resolution: {integrity: sha512-1y/MVSz0NglV1ijHC8OT49mPJ4qhPYjiK08YUQVbIOyu+5k862LKUHFkpKHWu//zmr7hDR2rhwUm6gnCGNmGBQ==} + '@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.55.0 - eslint: ^8.57.0 || ^9.0.0 + '@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/parser@8.55.0': - resolution: {integrity: sha512-4z2nCSBfVIMnbuu8uinj+f0o4qOeggYJLbjpPHka3KH1om7e+H9yLKTYgksTaHcGco+NClhhY2vyO3HsMH1RGw==} + '@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 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.55.0': - resolution: {integrity: sha512-zRcVVPFUYWa3kNnjaZGXSu3xkKV1zXy8M4nO/pElzQhFweb7PPtluDLQtKArEOGmjXoRjnUZ29NjOiF0eCDkcQ==} + '@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/scope-manager@8.55.0': - resolution: {integrity: sha512-fVu5Omrd3jeqeQLiB9f1YsuK/iHFOwb04bCtY4BSCLgjNbOD33ZdV6KyEqplHr+IlpgT0QTZ/iJ+wT7hvTx49Q==} + '@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/tsconfig-utils@8.55.0': - resolution: {integrity: sha512-1R9cXqY7RQd7WuqSN47PK9EDpgFUK3VqdmbYrvWJZYDd0cavROGn+74ktWBlmJ13NXUQKlZ/iAEQHI/V0kKe0Q==} + '@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/type-utils@8.55.0': - resolution: {integrity: sha512-x1iH2unH4qAt6I37I2CGlsNs+B9WGxurP2uyZLRz6UJoZWDBx9cJL1xVN/FiOmHEONEg6RIufdvyT0TEYIgC5g==} + '@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 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.55.0': - resolution: {integrity: sha512-ujT0Je8GI5BJWi+/mMoR0wxwVEQaxM+pi30xuMiJETlX80OPovb2p9E8ss87gnSVtYXtJoU9U1Cowcr6w2FE0w==} + '@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/typescript-estree@8.55.0': - resolution: {integrity: sha512-EwrH67bSWdx/3aRQhCoxDaHM+CrZjotc2UCCpEDVqfCE+7OjKAGWNY2HsCSTEVvWH2clYQK8pdeLp42EVs+xQw==} + '@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/utils@8.55.0': - resolution: {integrity: sha512-BqZEsnPGdYpgyEIkDC1BadNY8oMwckftxBT+C8W0g1iKPdeqKZBtTfnvcq0nf60u7MkjFO8RBvpRGZBPw4L2ow==} + '@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 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.55.0': - resolution: {integrity: sha512-AxNRwEie8Nn4eFS1FzDMJWIISMGoXMb037sgCBJ3UR6o0fQTzr2tqN9WT+DkWJPhIdQCfV7T6D387566VtnCJA==} + '@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} '@videojs/http-streaming@3.17.4': @@ -1387,14 +1383,14 @@ packages: vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 vue: ^3.2.25 - '@volar/language-core@2.4.27': - resolution: {integrity: sha512-DjmjBWZ4tJKxfNC1F6HyYERNHPYS7L7OPFyCrestykNdUZMFYzI9WTyvwPcaNaHlrEUwESHYsfEw3isInncZxQ==} + '@volar/language-core@2.4.28': + resolution: {integrity: sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==} - '@volar/source-map@2.4.27': - resolution: {integrity: sha512-ynlcBReMgOZj2i6po+qVswtDUeeBRCTgDurjMGShbm8WYZgJ0PA4RmtebBJ0BCYol1qPv3GQF6jK7C9qoVc7lg==} + '@volar/source-map@2.4.28': + resolution: {integrity: sha512-yX2BDBqJkRXfKw8my8VarTyjv48QwxdJtvRgUpNE5erCsgEUdI2DsLbpa+rOQVAJYshY99szEcRDmyHbF10ggQ==} - '@volar/typescript@2.4.27': - resolution: {integrity: sha512-eWaYCcl/uAPInSK2Lze6IqVWaBu/itVqR5InXcHXFyles4zO++Mglt3oxdgj75BDcv1Knr9Y93nowS8U3wqhxg==} + '@volar/typescript@2.4.28': + resolution: {integrity: sha512-Ja6yvWrbis2QtN4ClAKreeUZPVYMARDYZl9LMEv1iQ1QdepB6wn0jTRxA9MftYmYa4DQ4k/DaSZpFPUfxl8giw==} '@vue-macros/common@3.1.2': resolution: {integrity: sha512-h9t4ArDdniO9ekYHAD95t9AZcAbb19lEGK+26iAjUODOIJKmObDNBSe4+6ELQAA3vtYiFPPBtHh7+cQCKi3Dng==} @@ -1444,19 +1440,19 @@ packages: eslint: '>= 8.21.0' prettier: '>= 3.0.0' - '@vue/eslint-config-typescript@14.6.0': - resolution: {integrity: sha512-UpiRY/7go4Yps4mYCjkvlIbVWmn9YvPGQDxTAlcKLphyaD77LjIu3plH4Y9zNT0GB4f3K5tMmhhtRhPOgrQ/bQ==} + '@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 + 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.4': - resolution: {integrity: sha512-bqBGuSG4KZM45KKTXzGtoCl9cWju5jsaBKaJJe3h5hRAAWpZUuj5G+L+eI01sPIkm4H6setKRlw7E85wLdDNew==} + '@vue/language-core@3.2.5': + resolution: {integrity: sha512-d3OIxN/+KRedeM5wQ6H6NIpwS3P5gC9nmyaHgBk+rO6dIsjY+tOh4UlPpiZbAh3YtLdCGEX4M16RmsBqPmJV+g==} '@vue/reactivity@3.5.28': resolution: {integrity: sha512-gr5hEsxvn+RNyu9/9o1WtdYdwDjg5FgjUSBEkZWqgTKlo/fvwZ2+8W6AfKsc9YN2k/+iHYdS9vZYAhpi10kNaw==} @@ -1563,11 +1559,16 @@ packages: 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.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + ajv@6.14.0: + resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==} alien-signals@3.1.2: resolution: {integrity: sha512-d9dYqZTS90WLiU0I5c6DHj/HcKkF8ZyGN3G5x8wSbslulz70KOxaqCT0hQCo9KOyhVqzqGojvNdJXoTumZOtcw==} @@ -1610,8 +1611,8 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - balanced-match@4.0.2: - resolution: {integrity: sha512-x0K50QvKQ97fdEz2kPehIerj+YTeptKF9hyYkKf6egnwmMWAkADiO0QCzSp0R5xN8FTZgYaBfSaue46Ej62nMg==} + balanced-match@4.0.3: + resolution: {integrity: sha512-1pHv8LX9CpKut1Zp4EXey7Z8OfH11ONNH6Dhi2WDUt31VVZFXZzKwXcysBgqSumFCmR+0dqjMK5v5JiFHzi0+g==} engines: {node: 20 || >=22} baseline-browser-mapping@2.9.19: @@ -1810,24 +1811,20 @@ packages: '@typescript-eslint/parser': optional: true - eslint-scope@9.1.0: - resolution: {integrity: sha512-CkWE42hOJsNj9FJRaoMX9waUFYhqY4jmyLFdAdzZr6VaCg3ynLYx4WnOdkaIifGfH4gsUcBTn4OZbHXkpLD0FQ==} + eslint-scope@9.1.1: + resolution: {integrity: sha512-GaUN0sWim5qc8KVErfPBWmc31LEsOkrUJbvJZV+xuL3u2phMUK4HIvXlWAakfC8W4nzlK+chPEAkYOYb5ZScIw==} 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@4.2.1: - resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint-visitor-keys@5.0.0: - resolution: {integrity: sha512-A0XeIi7CXU7nPlfHS9loMYEKxUaONu/hTEzHTGba9Huu94Cq1hPivf+DE5erJozZOky0LfvXAyrV/tcswpLI0Q==} + 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.0: - resolution: {integrity: sha512-O0piBKY36YSJhlFSG8p9VUdPV/SxxS4FYDWVpr/9GJuMaepzwlf4J8I4ov1b+ySQfDTPhc3DtLaxcT1fN0yqCg==} + eslint@10.0.1: + resolution: {integrity: sha512-20MV9SUdeN6Jd84xESsKhRly+/vxI+hwvpBMA93s+9dAcjdCuCojn4IqUGS3lvVaqjVYGYHSRMCpeFtF2rQYxQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: @@ -1840,8 +1837,8 @@ packages: resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} engines: {node: '>=0.10'} - espree@11.1.0: - resolution: {integrity: sha512-WFWYhO1fV4iYkqOOvq8FbqIhr2pYfoDY0kCotMkDeNtGpiGGkZ1iov2u8ydjtgM8yF8rzK7oaTbw2NAzbAbehw==} + espree@11.1.1: + resolution: {integrity: sha512-AVHPqQoZYc+RUM4/3Ly5udlZY/U4LS8pIG05jEjWM2lQMU/oaZ7qshzAl2YP1tfNmXfftH3ohurfwNAug+MnsQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} espree@9.6.1: @@ -2022,10 +2019,6 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - jackspeak@4.2.3: - resolution: {integrity: sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==} - engines: {node: 20 || >=22} - js-base64@3.7.8: resolution: {integrity: sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow==} @@ -2136,14 +2129,14 @@ packages: magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - marked-katex-extension@5.1.6: - resolution: {integrity: sha512-vYpLXwmlIDKILIhJtiRTgdyZRn5sEYdFBuTmbpjD7lbCIzg0/DWyK3HXIntN3Tp8zV6hvOUgpZNLWRCgWVc24A==} + 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.2: - resolution: {integrity: sha512-s5HZGFQea7Huv5zZcAGhJLT3qLpAfnY7v7GWkICUr0+Wd5TFEtdlRR2XUL5Gg+RH7u2Df595ifrxR03mBaw7gA==} + marked@17.0.3: + resolution: {integrity: sha512-jt1v2ObpyOKR8p4XaUJVk3YWRJ5n+i4+rjQopxvV32rSndTJXvIzuUdWWIy/1pFQMkQmvTXawzDNqOH/CUmx6A==} engines: {node: '>= 20'} hasBin: true @@ -2168,9 +2161,9 @@ packages: min-document@2.19.2: resolution: {integrity: sha512-8S5I8db/uZN8r9HSLFVWPdJCvYOejMcEC82VIzNUc6Zkklf/d1gg2psfE79/vyhWOj4+J8MtwmoOz3TmvaGu5A==} - minimatch@10.2.0: - resolution: {integrity: sha512-ugkC31VaVg9cF0DFVoADH12k6061zNZkZON+aX8AWsR9GhPcErkcMBceb6znR8wLERM2AkkOxy2nWRLpT9Jq5w==} - engines: {node: 20 || >=22} + minimatch@10.2.2: + resolution: {integrity: sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==} + engines: {node: 18 || 20 || >=22} minimatch@9.0.5: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} @@ -2497,11 +2490,11 @@ packages: type@2.7.3: resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==} - typescript-eslint@8.55.0: - resolution: {integrity: sha512-HE4wj+r5lmDVS9gdaN0/+iqNvPZwGfnJ5lZuz7s5vLlg9ODw0bIiiETaios9LvFI1U94/VBXGm3CB2Y5cNFMpw==} + 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 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' typescript@5.9.3: @@ -2649,8 +2642,8 @@ packages: vue-reader@1.3.4: resolution: {integrity: sha512-QYTX9hlrV71gL/1vMejcBLLS9Ool29XMZcLQwvL0Ep1F//o0ymzYbKX2Lre+4BUBkVq49/GmmGCmAJACsJL9tw==} - vue-router@5.0.2: - resolution: {integrity: sha512-YFhwaE5c5JcJpNB1arpkl4/GnO32wiUWRB+OEj1T0DlDxEZoOfbltl2xEwktNU/9o1sGcGburIXSpbLpPFe/6w==} + 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 @@ -2669,8 +2662,8 @@ packages: peerDependencies: vue: ^3.0.2 - vue-tsc@3.2.4: - resolution: {integrity: sha512-xj3YCvSLNDKt1iF9OcImWHhmYcihVu9p4b9s4PGR/qp6yhW+tZJaypGxHScRyOrdnHvaOeF+YkZOdKwbgGvp5g==} + vue-tsc@3.2.5: + resolution: {integrity: sha512-/htfTCMluQ+P2FISGAooul8kO4JMheOTCbCy4M6dYnYYjqLe3BExZudAua6MSIKSFYQtFOYAll7XobYwcpokGA==} hasBin: true peerDependencies: typescript: '>=5.0.0' @@ -3531,18 +3524,18 @@ snapshots: '@esbuild/win32-x64@0.27.3': optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@10.0.0)': + '@eslint-community/eslint-utils@4.9.1(eslint@10.0.1)': dependencies: - eslint: 10.0.0 + eslint: 10.0.1 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} - '@eslint/config-array@0.23.1': + '@eslint/config-array@0.23.2': dependencies: - '@eslint/object-schema': 3.0.1 + '@eslint/object-schema': 3.0.2 debug: 4.4.3 - minimatch: 10.2.0 + minimatch: 10.2.2 transitivePeerDependencies: - supports-color @@ -3554,7 +3547,7 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@eslint/object-schema@3.0.1': {} + '@eslint/object-schema@3.0.2': {} '@eslint/plugin-kit@0.6.0': dependencies: @@ -3572,11 +3565,11 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} - '@intlify/bundle-utils@11.0.3(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)))': + '@intlify/bundle-utils@11.0.7(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)))': dependencies: '@intlify/message-compiler': 11.2.8 '@intlify/shared': 11.2.8 - acorn: 8.15.0 + acorn: 8.16.0 esbuild: 0.25.12 escodegen: 2.1.0 estree-walker: 2.0.2 @@ -3598,15 +3591,15 @@ snapshots: '@intlify/shared@11.2.8': {} - '@intlify/unplugin-vue-i18n@11.0.3(@vue/compiler-dom@3.5.28)(eslint@10.0.0)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3))': + '@intlify/unplugin-vue-i18n@11.0.7(@vue/compiler-dom@3.5.28)(eslint@10.0.1)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3))': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.0) - '@intlify/bundle-utils': 11.0.3(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3))) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.1) + '@intlify/bundle-utils': 11.0.7(vue-i18n@11.2.8(vue@3.5.28(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.28)(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3)) '@rollup/pluginutils': 5.3.0(rollup@4.57.1) - '@typescript-eslint/scope-manager': 8.55.0 - '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.9.3) + '@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 @@ -3631,8 +3624,6 @@ snapshots: vue: 3.5.28(typescript@5.9.3) vue-i18n: 11.2.8(vue@3.5.28(typescript@5.9.3)) - '@isaacs/cliui@9.0.0': {} - '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -3783,15 +3774,15 @@ snapshots: '@types/web-bluetooth@0.0.21': {} - '@typescript-eslint/eslint-plugin@8.55.0(@typescript-eslint/parser@8.55.0(eslint@10.0.0)(typescript@5.9.3))(eslint@10.0.0)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.0.1)(typescript@5.9.3))(eslint@10.0.1)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.55.0(eslint@10.0.0)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.55.0 - '@typescript-eslint/type-utils': 8.55.0(eslint@10.0.0)(typescript@5.9.3) - '@typescript-eslint/utils': 8.55.0(eslint@10.0.0)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.55.0 - eslint: 10.0.0 + '@typescript-eslint/parser': 8.56.0(eslint@10.0.1)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.56.0 + '@typescript-eslint/type-utils': 8.56.0(eslint@10.0.1)(typescript@5.9.3) + '@typescript-eslint/utils': 8.56.0(eslint@10.0.1)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.56.0 + eslint: 10.0.1 ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.4.0(typescript@5.9.3) @@ -3799,56 +3790,56 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.55.0(eslint@10.0.0)(typescript@5.9.3)': + '@typescript-eslint/parser@8.56.0(eslint@10.0.1)(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.55.0 - '@typescript-eslint/types': 8.55.0 - '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.55.0 + '@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.0 + eslint: 10.0.1 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.55.0(typescript@5.9.3)': + '@typescript-eslint/project-service@8.56.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.55.0(typescript@5.9.3) - '@typescript-eslint/types': 8.55.0 + '@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/scope-manager@8.55.0': + '@typescript-eslint/scope-manager@8.56.0': dependencies: - '@typescript-eslint/types': 8.55.0 - '@typescript-eslint/visitor-keys': 8.55.0 + '@typescript-eslint/types': 8.56.0 + '@typescript-eslint/visitor-keys': 8.56.0 - '@typescript-eslint/tsconfig-utils@8.55.0(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.56.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.55.0(eslint@10.0.0)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.56.0(eslint@10.0.1)(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.55.0 - '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.55.0(eslint@10.0.0)(typescript@5.9.3) + '@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.1)(typescript@5.9.3) debug: 4.4.3 - eslint: 10.0.0 + eslint: 10.0.1 ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.55.0': {} + '@typescript-eslint/types@8.56.0': {} - '@typescript-eslint/typescript-estree@8.55.0(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.56.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.55.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.55.0(typescript@5.9.3) - '@typescript-eslint/types': 8.55.0 - '@typescript-eslint/visitor-keys': 8.55.0 + '@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.5 semver: 7.7.4 @@ -3858,21 +3849,21 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.55.0(eslint@10.0.0)(typescript@5.9.3)': + '@typescript-eslint/utils@8.56.0(eslint@10.0.1)(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.0) - '@typescript-eslint/scope-manager': 8.55.0 - '@typescript-eslint/types': 8.55.0 - '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.9.3) - eslint: 10.0.0 + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.1) + '@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.1 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.55.0': + '@typescript-eslint/visitor-keys@8.56.0': dependencies: - '@typescript-eslint/types': 8.55.0 - eslint-visitor-keys: 4.2.1 + '@typescript-eslint/types': 8.56.0 + eslint-visitor-keys: 5.0.1 '@videojs/http-streaming@3.17.4(video.js@8.23.7)': dependencies: @@ -3921,15 +3912,15 @@ snapshots: vite: 7.3.1(@types/node@24.10.13)(terser@5.46.0)(yaml@2.8.2) vue: 3.5.28(typescript@5.9.3) - '@volar/language-core@2.4.27': + '@volar/language-core@2.4.28': dependencies: - '@volar/source-map': 2.4.27 + '@volar/source-map': 2.4.28 - '@volar/source-map@2.4.27': {} + '@volar/source-map@2.4.28': {} - '@volar/typescript@2.4.27': + '@volar/typescript@2.4.28': dependencies: - '@volar/language-core': 2.4.27 + '@volar/language-core': 2.4.28 path-browserify: 1.0.1 vscode-uri: 3.1.0 @@ -4011,31 +4002,31 @@ snapshots: dependencies: rfdc: 1.4.1 - '@vue/eslint-config-prettier@10.2.0(eslint@10.0.0)(prettier@3.8.1)': + '@vue/eslint-config-prettier@10.2.0(eslint@10.0.1)(prettier@3.8.1)': dependencies: - eslint: 10.0.0 - eslint-config-prettier: 10.1.8(eslint@10.0.0) - eslint-plugin-prettier: 5.5.5(eslint-config-prettier@10.1.8(eslint@10.0.0))(eslint@10.0.0)(prettier@3.8.1) + eslint: 10.0.1 + eslint-config-prettier: 10.1.8(eslint@10.0.1) + eslint-plugin-prettier: 5.5.5(eslint-config-prettier@10.1.8(eslint@10.0.1))(eslint@10.0.1)(prettier@3.8.1) prettier: 3.8.1 transitivePeerDependencies: - '@types/eslint' - '@vue/eslint-config-typescript@14.6.0(eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.55.0(eslint@10.0.0)(typescript@5.9.3))(eslint@10.0.0)(vue-eslint-parser@10.4.0(eslint@10.0.0)))(eslint@10.0.0)(typescript@5.9.3)': + '@vue/eslint-config-typescript@14.7.0(eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.1)(typescript@5.9.3))(eslint@10.0.1)(vue-eslint-parser@10.4.0(eslint@10.0.1)))(eslint@10.0.1)(typescript@5.9.3)': dependencies: - '@typescript-eslint/utils': 8.55.0(eslint@10.0.0)(typescript@5.9.3) - eslint: 10.0.0 - eslint-plugin-vue: 10.8.0(@typescript-eslint/parser@8.55.0(eslint@10.0.0)(typescript@5.9.3))(eslint@10.0.0)(vue-eslint-parser@10.4.0(eslint@10.0.0)) + '@typescript-eslint/utils': 8.56.0(eslint@10.0.1)(typescript@5.9.3) + eslint: 10.0.1 + eslint-plugin-vue: 10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.1)(typescript@5.9.3))(eslint@10.0.1)(vue-eslint-parser@10.4.0(eslint@10.0.1)) fast-glob: 3.3.3 - typescript-eslint: 8.55.0(eslint@10.0.0)(typescript@5.9.3) - vue-eslint-parser: 10.4.0(eslint@10.0.0) + typescript-eslint: 8.56.0(eslint@10.0.1)(typescript@5.9.3) + vue-eslint-parser: 10.4.0(eslint@10.0.1) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@vue/language-core@3.2.4': + '@vue/language-core@3.2.5': dependencies: - '@volar/language-core': 2.4.27 + '@volar/language-core': 2.4.28 '@vue/compiler-dom': 3.5.28 '@vue/shared': 3.5.28 alien-signals: 3.1.2 @@ -4100,12 +4091,14 @@ snapshots: ace-builds@1.43.6: {} - acorn-jsx@5.3.2(acorn@8.15.0): + acorn-jsx@5.3.2(acorn@8.16.0): dependencies: - acorn: 8.15.0 + acorn: 8.16.0 acorn@8.15.0: {} + acorn@8.16.0: {} + aes-decrypter@4.0.2: dependencies: '@babel/runtime': 7.28.6 @@ -4113,7 +4106,7 @@ snapshots: global: 4.4.0 pkcs7: 1.0.4 - ajv@6.12.6: + ajv@6.14.0: dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 @@ -4175,9 +4168,7 @@ snapshots: balanced-match@1.0.2: {} - balanced-match@4.0.2: - dependencies: - jackspeak: 4.2.3 + balanced-match@4.0.3: {} baseline-browser-mapping@2.9.19: {} @@ -4191,7 +4182,7 @@ snapshots: brace-expansion@5.0.2: dependencies: - balanced-match: 4.0.2 + balanced-match: 4.0.3 braces@3.0.3: dependencies: @@ -4382,33 +4373,33 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-prettier@10.1.8(eslint@10.0.0): + eslint-config-prettier@10.1.8(eslint@10.0.1): dependencies: - eslint: 10.0.0 + eslint: 10.0.1 - eslint-plugin-prettier@5.5.5(eslint-config-prettier@10.1.8(eslint@10.0.0))(eslint@10.0.0)(prettier@3.8.1): + eslint-plugin-prettier@5.5.5(eslint-config-prettier@10.1.8(eslint@10.0.1))(eslint@10.0.1)(prettier@3.8.1): dependencies: - eslint: 10.0.0 + eslint: 10.0.1 prettier: 3.8.1 prettier-linter-helpers: 1.0.1 synckit: 0.11.12 optionalDependencies: - eslint-config-prettier: 10.1.8(eslint@10.0.0) + eslint-config-prettier: 10.1.8(eslint@10.0.1) - eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.55.0(eslint@10.0.0)(typescript@5.9.3))(eslint@10.0.0)(vue-eslint-parser@10.4.0(eslint@10.0.0)): + eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.1)(typescript@5.9.3))(eslint@10.0.1)(vue-eslint-parser@10.4.0(eslint@10.0.1)): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.0) - eslint: 10.0.0 + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.1) + eslint: 10.0.1 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.0) + vue-eslint-parser: 10.4.0(eslint@10.0.1) xml-name-validator: 4.0.0 optionalDependencies: - '@typescript-eslint/parser': 8.55.0(eslint@10.0.0)(typescript@5.9.3) + '@typescript-eslint/parser': 8.56.0(eslint@10.0.1)(typescript@5.9.3) - eslint-scope@9.1.0: + eslint-scope@9.1.1: dependencies: '@types/esrecurse': 4.3.1 '@types/estree': 1.0.8 @@ -4417,15 +4408,13 @@ snapshots: eslint-visitor-keys@3.4.3: {} - eslint-visitor-keys@4.2.1: {} - - eslint-visitor-keys@5.0.0: {} + eslint-visitor-keys@5.0.1: {} - eslint@10.0.0: + eslint@10.0.1: dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.0) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.1) '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.23.1 + '@eslint/config-array': 0.23.2 '@eslint/config-helpers': 0.5.2 '@eslint/core': 1.1.0 '@eslint/plugin-kit': 0.6.0 @@ -4433,13 +4422,13 @@ snapshots: '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 '@types/estree': 1.0.8 - ajv: 6.12.6 + ajv: 6.14.0 cross-spawn: 7.0.6 debug: 4.4.3 escape-string-regexp: 4.0.0 - eslint-scope: 9.1.0 - eslint-visitor-keys: 5.0.0 - espree: 11.1.0 + eslint-scope: 9.1.1 + eslint-visitor-keys: 5.0.1 + espree: 11.1.1 esquery: 1.7.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -4450,7 +4439,7 @@ snapshots: imurmurhash: 0.1.4 is-glob: 4.0.3 json-stable-stringify-without-jsonify: 1.0.1 - minimatch: 10.2.0 + minimatch: 10.2.2 natural-compare: 1.4.0 optionator: 0.9.4 transitivePeerDependencies: @@ -4463,16 +4452,16 @@ snapshots: event-emitter: 0.3.5 type: 2.7.3 - espree@11.1.0: + espree@11.1.1: dependencies: - acorn: 8.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) - eslint-visitor-keys: 5.0.0 + 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.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) + acorn: 8.16.0 + acorn-jsx: 5.3.2(acorn@8.16.0) eslint-visitor-keys: 3.4.3 esprima@4.0.1: {} @@ -4615,10 +4604,6 @@ snapshots: isexe@2.0.0: {} - jackspeak@4.2.3: - dependencies: - '@isaacs/cliui': 9.0.0 - js-base64@3.7.8: {} js-tokens@4.0.0: {} @@ -4635,7 +4620,7 @@ snapshots: jsonc-eslint-parser@2.4.2: dependencies: - acorn: 8.15.0 + acorn: 8.16.0 eslint-visitor-keys: 3.4.3 espree: 9.6.1 semver: 7.7.4 @@ -4734,12 +4719,12 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 - marked-katex-extension@5.1.6(katex@0.16.28)(marked@17.0.2): + marked-katex-extension@5.1.7(katex@0.16.28)(marked@17.0.3): dependencies: katex: 0.16.28 - marked: 17.0.2 + marked: 17.0.3 - marked@17.0.2: {} + marked@17.0.3: {} marks-pane@1.0.9: {} @@ -4758,7 +4743,7 @@ snapshots: dependencies: dom-walk: 0.1.2 - minimatch@10.2.0: + minimatch@10.2.2: dependencies: brace-expansion: 5.0.2 @@ -4770,7 +4755,7 @@ snapshots: mlly@1.8.0: dependencies: - acorn: 8.15.0 + acorn: 8.16.0 pathe: 2.0.3 pkg-types: 1.3.1 ufo: 1.6.3 @@ -5084,13 +5069,13 @@ snapshots: type@2.7.3: {} - typescript-eslint@8.55.0(eslint@10.0.0)(typescript@5.9.3): + typescript-eslint@8.56.0(eslint@10.0.1)(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.55.0(@typescript-eslint/parser@8.55.0(eslint@10.0.0)(typescript@5.9.3))(eslint@10.0.0)(typescript@5.9.3) - '@typescript-eslint/parser': 8.55.0(eslint@10.0.0)(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.55.0(eslint@10.0.0)(typescript@5.9.3) - eslint: 10.0.0 + '@typescript-eslint/eslint-plugin': 8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.0.1)(typescript@5.9.3))(eslint@10.0.1)(typescript@5.9.3) + '@typescript-eslint/parser': 8.56.0(eslint@10.0.1)(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.56.0(eslint@10.0.1)(typescript@5.9.3) + eslint: 10.0.1 typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -5120,7 +5105,7 @@ snapshots: unplugin@2.3.11: dependencies: '@jridgewell/remapping': 2.3.5 - acorn: 8.15.0 + acorn: 8.16.0 picomatch: 4.0.3 webpack-virtual-modules: 0.6.2 @@ -5207,13 +5192,13 @@ snapshots: vscode-uri@3.1.0: {} - vue-eslint-parser@10.4.0(eslint@10.0.0): + vue-eslint-parser@10.4.0(eslint@10.0.1): dependencies: debug: 4.4.3 - eslint: 10.0.0 - eslint-scope: 9.1.0 - eslint-visitor-keys: 5.0.0 - espree: 11.1.0 + eslint: 10.0.1 + eslint-scope: 9.1.1 + eslint-visitor-keys: 5.0.1 + espree: 11.1.1 esquery: 1.7.0 semver: 7.7.4 transitivePeerDependencies: @@ -5232,7 +5217,7 @@ snapshots: dependencies: epubjs: 0.3.93 - vue-router@5.0.2(@vue/compiler-sfc@3.5.28)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3)): + vue-router@5.0.3(@vue/compiler-sfc@3.5.28)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3)): dependencies: '@babel/generator': 7.29.1 '@vue-macros/common': 3.1.2(vue@3.5.28(typescript@5.9.3)) @@ -5260,10 +5245,10 @@ snapshots: dependencies: vue: 3.5.28(typescript@5.9.3) - vue-tsc@3.2.4(typescript@5.9.3): + vue-tsc@3.2.5(typescript@5.9.3): dependencies: - '@volar/typescript': 2.4.27 - '@vue/language-core': 3.2.4 + '@volar/typescript': 2.4.28 + '@vue/language-core': 3.2.5 typescript: 5.9.3 vue@3.5.28(typescript@5.9.3): diff --git a/go.mod b/go.mod index 8e0f0f1025..13fb76c920 100644 --- a/go.mod +++ b/go.mod @@ -16,7 +16,7 @@ require ( github.com/marusama/semaphore/v2 v2.5.0 github.com/mholt/archives v0.1.5 github.com/mitchellh/go-homedir v1.1.0 - github.com/redis/go-redis/v9 v9.17.3 + github.com/redis/go-redis/v9 v9.18.0 github.com/samber/lo v1.52.0 github.com/shirou/gopsutil/v4 v4.26.1 github.com/spf13/afero v1.15.0 @@ -74,6 +74,7 @@ require ( github.com/ulikunitz/xz v0.5.15 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect go.etcd.io/bbolt v1.4.3 // indirect + go.uber.org/atomic v1.11.0 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect go4.org v0.0.0-20230225012048-214862532bf5 // indirect golang.org/x/net v0.49.0 // indirect diff --git a/go.sum b/go.sum index 262a280c87..8a83f6ec41 100644 --- a/go.sum +++ b/go.sum @@ -166,7 +166,10 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= +github.com/klauspost/cpuid v1.2.0 h1:NMpwD2G9JSFOE1/TJjGSo5zG7Yb2bTe7eq1jH+irmeE= github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= +github.com/klauspost/cpuid/v2 v2.0.9 h1:lgaqFMSdTdQYdZ04uHyN2d/eKdOMyi2YLSvlQIBFYa4= +github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/pgzip v1.2.6 h1:8RXeL5crjEUFnR2/Sn6GJNWtSQ3Dk8pq4CL3jvdDyjU= github.com/klauspost/pgzip v1.2.6/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= @@ -202,8 +205,8 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/redis/go-redis/v9 v9.17.3 h1:fN29NdNrE17KttK5Ndf20buqfDZwGNgoUr9qjl1DQx4= -github.com/redis/go-redis/v9 v9.17.3/go.mod h1:u410H11HMLoB+TP67dz8rL9s6QW2j76l0//kSOd3370= +github.com/redis/go-redis/v9 v9.18.0 h1:pMkxYPkEbMPwRdenAzUNyFNrDgHx9U+DrBabWNfSRQs= +github.com/redis/go-redis/v9 v9.18.0/go.mod h1:k3ufPphLU5YXwNTUcCRXGxUoF1fqxnhFQmscfkCoDA0= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= @@ -257,6 +260,8 @@ github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3i github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +github.com/zeebo/xxh3 v1.0.2 h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0= +github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= go.etcd.io/bbolt v1.3.4/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= go.etcd.io/bbolt v1.4.3 h1:dEadXpI6G79deX5prL3QRNP6JB8UxVkqo4UPnHaNXJo= go.etcd.io/bbolt v1.4.3/go.mod h1:tKQlpPaYCVFctUIgFKFnAlvbmB3tpy1vkTnDWohtc0E= @@ -264,6 +269,8 @@ go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= +go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= From 7b16e2de903228cc463188483c2f976e1131209b Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 21 Feb 2026 18:18:55 +0100 Subject: [PATCH 052/126] chore(release): 2.60.0 --- CHANGELOG.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7c3c05eeb1..6a55edba6c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,19 @@ All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines. +## [2.60.0](https://github.com/filebrowser/filebrowser/compare/v2.59.0...v2.60.0) (2026-02-21) + + +### Features + +* Updates for project File Browser ([#5764](https://github.com/filebrowser/filebrowser/issues/5764)) ([9940bdd](https://github.com/filebrowser/filebrowser/commit/9940bdd663ff5141110778524b8a22c957036e78)) + + +### Bug Fixes + +* always show separators and encoding list in the CSV viewer ([#5774](https://github.com/filebrowser/filebrowser/issues/5774)) ([3169a14](https://github.com/filebrowser/filebrowser/commit/3169a14a4d63a0a11a5288f4f3a674c0a0edb972)) +* modal lifecycle issues, multiple modals, new directory creation and discard changes behavior ([#5773](https://github.com/filebrowser/filebrowser/issues/5773)) ([200d501](https://github.com/filebrowser/filebrowser/commit/200d5015472c79d5caa683ea291ebf500356a39f)) + ## [2.59.0](https://github.com/filebrowser/filebrowser/compare/v2.58.0...v2.59.0) (2026-02-15) From e3d00d591b567a8bfe3b02e42ba586859002c77d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 22 Feb 2026 07:12:45 +0100 Subject: [PATCH 053/126] chore(deps): update goreleaser/goreleaser-action action to v7 (#5782) --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index b3b3ab3f45..ddbb8962a4 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -104,7 +104,7 @@ jobs: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Run GoReleaser - uses: goreleaser/goreleaser-action@v6 + uses: goreleaser/goreleaser-action@v7 with: version: latest args: release --clean From aa809096eb35fdfbdeb6784b1ebfe2ca1e42f52b Mon Sep 17 00:00:00 2001 From: Ariel Leyva Date: Fri, 27 Feb 2026 08:55:49 -0500 Subject: [PATCH 054/126] feat: improved conflict resolution when uploading/copying/moving files (#5765) --- frontend/src/api/files.ts | 5 +- frontend/src/components/files/ListingItem.vue | 37 ++- frontend/src/components/prompts/Copy.vue | 45 ++- frontend/src/components/prompts/Move.vue | 39 ++- frontend/src/components/prompts/Prompts.vue | 4 +- .../src/components/prompts/ReplaceRename.vue | 57 ---- .../components/prompts/ResolveConflict.vue | 307 ++++++++++++++++++ frontend/src/components/prompts/Upload.vue | 27 +- frontend/src/i18n/en.json | 18 +- frontend/src/types/file.d.ts | 15 + frontend/src/types/upload.d.ts | 1 + frontend/src/utils/upload.ts | 41 ++- frontend/src/views/files/FileListing.vue | 108 +++--- 13 files changed, 550 insertions(+), 154 deletions(-) delete mode 100644 frontend/src/components/prompts/ReplaceRename.vue create mode 100644 frontend/src/components/prompts/ResolveConflict.vue diff --git a/frontend/src/api/files.ts b/frontend/src/api/files.ts index e16b75cd80..ed2de8ee9c 100644 --- a/frontend/src/api/files.ts +++ b/frontend/src/api/files.ts @@ -177,9 +177,12 @@ function moveCopy( 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=${overwrite}&rename=${rename}`; + }&destination=${to}&override=${finalOverwrite}&rename=${finalRename}`; promises.push(resourceAction(url, "PATCH")); } layoutStore.closeHovers(); diff --git a/frontend/src/components/files/ListingItem.vue b/frontend/src/components/files/ListingItem.vue index d75c2f9816..ce23c482ec 100644 --- a/frontend/src/components/files/ListingItem.vue +++ b/frontend/src/components/files/ListingItem.vue @@ -178,6 +178,10 @@ const drop = async (event: Event) => { from: fileStore.req?.items[i].url, to: props.url + encodeURIComponent(fileStore.req?.items[i].name), name: fileStore.req?.items[i].name, + size: fileStore.req?.items[i].size, + modified: fileStore.req?.items[i].modified, + overwrite: false, + rename: false, }); } } @@ -189,7 +193,7 @@ const drop = async (event: Event) => { const path = el.__vue__.url; const baseItems = (await api.fetch(path)).items; - const action = (overwrite: boolean, rename: boolean) => { + const action = (overwrite?: boolean, rename?: boolean) => { api .move(items, overwrite, rename) .then(() => { @@ -200,26 +204,35 @@ const drop = async (event: Event) => { const conflict = upload.checkConflict(items, baseItems); - let overwrite = false; - let rename = false; - - if (conflict) { + if (conflict.length > 0) { layoutStore.showHover({ - prompt: "replace-rename", - confirm: (event: Event, option: any) => { - overwrite = option == "overwrite"; - rename = option == "rename"; - + prompt: "resolve-conflict", + props: { + conflict: conflict, + }, + confirm: (event: Event, result: Array) => { event.preventDefault(); layoutStore.closeHovers(); - action(overwrite, rename); + for (let i = result.length - 1; i >= 0; i--) { + const item = result[i]; + if (item.checked.length == 2) { + items[item.index].rename = true; + } else if (item.checked.length == 1 && item.checked[0] == "origin") { + items[item.index].overwrite = true; + } else { + items.splice(item.index, 1); + } + } + if (items.length > 0) { + action(); + } }, }); return; } - action(overwrite, rename); + action(false, false); }; const itemClick = (event: Event | KeyboardEvent) => { diff --git a/frontend/src/components/prompts/Copy.vue b/frontend/src/components/prompts/Copy.vue index 09040e0a44..85810f30b3 100644 --- a/frontend/src/components/prompts/Copy.vue +++ b/frontend/src/components/prompts/Copy.vue @@ -91,6 +91,10 @@ export default { from: this.req.items[item].url, to: this.dest + encodeURIComponent(this.req.items[item].name), name: this.req.items[item].name, + size: this.req.items[item].size, + modified: this.req.items[item].modified, + overwrite: false, + rename: this.$route.path === this.dest, }); } @@ -118,36 +122,41 @@ export default { }); }; - if (this.$route.path === this.dest) { - this.closeHovers(); - action(false, true); - - return; - } - const dstItems = (await api.fetch(this.dest)).items; const conflict = upload.checkConflict(items, dstItems); - let overwrite = false; - let rename = false; - - if (conflict) { + if (conflict.length > 0) { this.showHover({ - prompt: "replace-rename", - confirm: (event, option) => { - overwrite = option == "overwrite"; - rename = option == "rename"; - + prompt: "resolve-conflict", + props: { + conflict: conflict, + }, + confirm: (event, result) => { event.preventDefault(); this.closeHovers(); - action(overwrite, rename); + for (let i = result.length - 1; i >= 0; i--) { + const item = result[i]; + if (item.checked.length == 2) { + items[item.index].rename = true; + } else if ( + item.checked.length == 1 && + item.checked[0] == "origin" + ) { + items[item.index].overwrite = true; + } else { + items.splice(item.index, 1); + } + } + if (items.length > 0) { + action(); + } }, }); return; } - action(overwrite, rename); + action(false, false); }, }, }; diff --git a/frontend/src/components/prompts/Move.vue b/frontend/src/components/prompts/Move.vue index 0fec867962..36a92469bd 100644 --- a/frontend/src/components/prompts/Move.vue +++ b/frontend/src/components/prompts/Move.vue @@ -97,6 +97,10 @@ export default { from: this.req.items[item].url, to: this.dest + encodeURIComponent(this.req.items[item].name), name: this.req.items[item].name, + size: this.req.items[item].size, + modified: this.req.items[item].modified, + overwrite: false, + rename: false, }); } @@ -121,26 +125,39 @@ export default { const dstItems = (await api.fetch(this.dest)).items; const conflict = upload.checkConflict(items, dstItems); - let overwrite = false; - let rename = false; - - if (conflict) { + if (conflict.length > 0) { this.showHover({ - prompt: "replace-rename", - confirm: (event, option) => { - overwrite = option == "overwrite"; - rename = option == "rename"; - + prompt: "resolve-conflict", + props: { + conflict: conflict, + files: items, + }, + confirm: (event, result) => { event.preventDefault(); this.closeHovers(); - action(overwrite, rename); + for (let i = result.length - 1; i >= 0; i--) { + const item = result[i]; + if (item.checked.length == 2) { + items[item.index].rename = true; + } else if ( + item.checked.length == 1 && + item.checked[0] == "origin" + ) { + items[item.index].overwrite = true; + } else { + items.splice(item.index, 1); + } + } + if (items.length > 0) { + action(); + } }, }); return; } - action(overwrite, rename); + action(false, false); }, }, }; diff --git a/frontend/src/components/prompts/Prompts.vue b/frontend/src/components/prompts/Prompts.vue index 1cfdbfb2c5..791d3ca910 100644 --- a/frontend/src/components/prompts/Prompts.vue +++ b/frontend/src/components/prompts/Prompts.vue @@ -23,11 +23,11 @@ import Copy from "./Copy.vue"; import NewFile from "./NewFile.vue"; import NewDir from "./NewDir.vue"; import Replace from "./Replace.vue"; -import ReplaceRename from "./ReplaceRename.vue"; import Share from "./Share.vue"; import ShareDelete from "./ShareDelete.vue"; import Upload from "./Upload.vue"; import DiscardEditorChanges from "./DiscardEditorChanges.vue"; +import ResolveConflict from "./ResolveConflict.vue"; const layoutStore = useLayoutStore(); @@ -44,12 +44,12 @@ const components = new Map([ ["newDir", NewDir], ["download", Download], ["replace", Replace], - ["replace-rename", ReplaceRename], ["share", Share], ["upload", Upload], ["share-delete", ShareDelete], ["deleteUser", DeleteUser], ["discardEditorChanges", DiscardEditorChanges], + ["resolve-conflict", ResolveConflict], ]); const modal = computed(() => { diff --git a/frontend/src/components/prompts/ReplaceRename.vue b/frontend/src/components/prompts/ReplaceRename.vue deleted file mode 100644 index 1d49d735bd..0000000000 --- a/frontend/src/components/prompts/ReplaceRename.vue +++ /dev/null @@ -1,57 +0,0 @@ - - - diff --git a/frontend/src/components/prompts/ResolveConflict.vue b/frontend/src/components/prompts/ResolveConflict.vue new file mode 100644 index 0000000000..e7bf9c7462 --- /dev/null +++ b/frontend/src/components/prompts/ResolveConflict.vue @@ -0,0 +1,307 @@ + + + + diff --git a/frontend/src/components/prompts/Upload.vue b/frontend/src/components/prompts/Upload.vue index 75f7951f26..19b1fbb175 100644 --- a/frontend/src/components/prompts/Upload.vue +++ b/frontend/src/components/prompts/Upload.vue @@ -69,18 +69,29 @@ const uploadInput = (event: Event) => { const path = route.path.endsWith("/") ? route.path : route.path + "/"; const conflict = upload.checkConflict(uploadFiles, fileStore.req!.items); - if (conflict) { + if (conflict.length > 0) { layoutStore.showHover({ - prompt: "replace", - action: (event: Event) => { - event.preventDefault(); - layoutStore.closeHovers(); - upload.handleFiles(uploadFiles, path, false); + prompt: "resolve-conflict", + props: { + conflict: conflict, + isUploadAction: true, }, - confirm: (event: Event) => { + confirm: (event: Event, result: Array) => { event.preventDefault(); layoutStore.closeHovers(); - upload.handleFiles(uploadFiles, path, true); + for (let i = result.length - 1; i >= 0; i--) { + const item = result[i]; + if (item.checked.length == 2) { + continue; + } else if (item.checked.length == 1 && item.checked[0] == "origin") { + uploadFiles[item.index].overwrite = true; + } else { + uploadFiles.splice(item.index, 1); + } + } + if (uploadFiles.length > 0) { + upload.handleFiles(uploadFiles, path); + } }, }); diff --git a/frontend/src/i18n/en.json b/frontend/src/i18n/en.json index 54b30b22ef..77d74d9f3f 100644 --- a/frontend/src/i18n/en.json +++ b/frontend/src/i18n/en.json @@ -48,7 +48,11 @@ "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Download File", @@ -161,7 +165,17 @@ "uploadMessage": "Select an option to upload.", "optionalPassword": "Optional password", "resolution": "Resolution", - "discardEditorChanges": "Are you sure you wish to discard the changes you've made?" + "discardEditorChanges": "Are you sure you wish to discard the changes you've made?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Images", diff --git a/frontend/src/types/file.d.ts b/frontend/src/types/file.d.ts index 6b9b6372cd..e6511b3919 100644 --- a/frontend/src/types/file.d.ts +++ b/frontend/src/types/file.d.ts @@ -52,6 +52,8 @@ type DownloadFormat = interface ClipItem { from: string; name: string; + size?: number; + modified?: string; } interface BreadCrumb { @@ -59,6 +61,19 @@ interface BreadCrumb { url: string; } +interface ConflictingItem { + lastModified: number | string | undefined; + size: number | undefined; +} + +interface ConflictingResource { + index: number; + name: string; + origin: ConflictingItem; + dest: ConflictingItem; + checked: Array<"origin" | "dest">; +} + interface CsvData { headers: string[]; rows: string[][]; diff --git a/frontend/src/types/upload.d.ts b/frontend/src/types/upload.d.ts index 4bad9e0650..5e5716acb1 100644 --- a/frontend/src/types/upload.d.ts +++ b/frontend/src/types/upload.d.ts @@ -17,6 +17,7 @@ interface UploadEntry { isDir: boolean; fullPath?: string; file?: File; + overwrite?: boolean; } type UploadList = UploadEntry[]; diff --git a/frontend/src/utils/upload.ts b/frontend/src/utils/upload.ts index e951cb43cb..a5a62b1dfc 100644 --- a/frontend/src/utils/upload.ts +++ b/frontend/src/utils/upload.ts @@ -3,16 +3,24 @@ import { useUploadStore } from "@/stores/upload"; import url from "@/utils/url"; export function checkConflict( - files: UploadList, + files: UploadList | Array, dest: ResourceItem[] -): boolean { +): ConflictingResource[] { if (typeof dest === "undefined" || dest === null) { dest = []; } + const conflictingFiles: ConflictingResource[] = []; const folder_upload = files[0].fullPath !== undefined; - const names = new Set(); + function getFile(name: string): ResourceItem | null { + for (const item of dest) { + if (item.name == name) return item; + } + + return null; + } + for (let i = 0; i < files.length; i++) { const file = files[i]; let name = file.name; @@ -24,10 +32,25 @@ export function checkConflict( } } - names.add(name); + const item = getFile(name); + if (item != null) { + conflictingFiles.push({ + index: i, + name: item.path, + origin: { + lastModified: file.modified || file.file?.lastModified, + size: file.size, + }, + dest: { + lastModified: item.modified, + size: item.size, + }, + checked: ["origin"], + }); + } } - return dest.some((d) => names.has(d.name)); + return conflictingFiles; } export function scanFiles(dt: DataTransfer): Promise { @@ -146,6 +169,12 @@ export function handleFiles( const type = file.isDir ? "dir" : detectType((file.file as File).type); - uploadStore.upload(path, file.name, file.file ?? null, overwrite, type); + uploadStore.upload( + path, + file.name, + file.file ?? null, + file.overwrite || overwrite, + type + ); } } diff --git a/frontend/src/views/files/FileListing.vue b/frontend/src/views/files/FileListing.vue index 0a86b359ee..f612ab1d16 100644 --- a/frontend/src/views/files/FileListing.vue +++ b/frontend/src/views/files/FileListing.vue @@ -628,6 +628,8 @@ const copyCut = (event: Event | KeyboardEvent): void => { items.push({ from: fileStore.req.items[i].url, name: fileStore.req.items[i].name, + size: fileStore.req.items[i].size, + modified: fileStore.req.items[i].modified, }); } @@ -651,7 +653,15 @@ const paste = (event: Event) => { for (const item of clipboardStore.items) { const from = item.from.endsWith("/") ? item.from.slice(0, -1) : item.from; const to = route.path + encodeURIComponent(item.name); - items.push({ from, to, name: item.name }); + items.push({ + from, + to, + name: item.name, + size: item.size, + modified: item.modified, + overwrite: false, + rename: clipboardStore.path == route.path, + }); } if (items.length === 0) { @@ -660,7 +670,7 @@ const paste = (event: Event) => { const preselect = removePrefix(route.path) + items[0].name; - let action = (overwrite: boolean, rename: boolean) => { + let action = (overwrite?: boolean, rename?: boolean) => { api .copy(items, overwrite, rename) .then(() => { @@ -683,34 +693,37 @@ const paste = (event: Event) => { }; } - if (clipboardStore.path == route.path) { - action(false, true); - - return; - } - const conflict = upload.checkConflict(items, fileStore.req!.items); - let overwrite = false; - let rename = false; - - if (conflict) { + if (conflict.length > 0) { layoutStore.showHover({ - prompt: "replace-rename", - confirm: (event: Event, option: string) => { - overwrite = option == "overwrite"; - rename = option == "rename"; - + prompt: "resolve-conflict", + props: { + conflict: conflict, + }, + confirm: (event: Event, result: Array) => { event.preventDefault(); layoutStore.closeHovers(); - action(overwrite, rename); + for (let i = result.length - 1; i >= 0; i--) { + const item = result[i]; + if (item.checked.length == 2) { + items[item.index].rename = true; + } else if (item.checked.length == 1 && item.checked[0] == "origin") { + items[item.index].overwrite = true; + } else { + items.splice(item.index, 1); + } + } + if (items.length > 0) { + action(); + } }, }); return; } - action(overwrite, rename); + action(false, false); }; const columnsResize = () => { @@ -806,20 +819,30 @@ const drop = async (event: DragEvent) => { const preselect = removePrefix(path) + (files[0].fullPath || files[0].name); - if (conflict) { + if (conflict.length > 0) { layoutStore.showHover({ - prompt: "replace", - action: (event: Event) => { - event.preventDefault(); - layoutStore.closeHovers(); - upload.handleFiles(files, path, false); - fileStore.preselect = preselect; + prompt: "resolve-conflict", + props: { + conflict: conflict, + isUploadAction: true, }, - confirm: (event: Event) => { + confirm: (event: Event, result: Array) => { event.preventDefault(); layoutStore.closeHovers(); - upload.handleFiles(files, path, true); - fileStore.preselect = preselect; + for (let i = result.length - 1; i >= 0; i--) { + const item = result[i]; + if (item.checked.length == 2) { + continue; + } else if (item.checked.length == 1 && item.checked[0] == "origin") { + files[item.index].overwrite = true; + } else { + files.splice(item.index, 1); + } + } + if (files.length > 0) { + upload.handleFiles(files, path, true); + fileStore.preselect = preselect; + } }, }); @@ -852,18 +875,29 @@ const uploadInput = (event: Event) => { const path = route.path.endsWith("/") ? route.path : route.path + "/"; const conflict = upload.checkConflict(uploadFiles, fileStore.req!.items); - if (conflict) { + if (conflict.length > 0) { layoutStore.showHover({ - prompt: "replace", - action: (event: Event) => { - event.preventDefault(); - layoutStore.closeHovers(); - upload.handleFiles(uploadFiles, path, false); + prompt: "resolve-conflict", + props: { + conflict: conflict, + isUploadAction: true, }, - confirm: (event: Event) => { + confirm: (event: Event, result: Array) => { event.preventDefault(); layoutStore.closeHovers(); - upload.handleFiles(uploadFiles, path, true); + for (let i = result.length - 1; i >= 0; i--) { + const item = result[i]; + if (item.checked.length == 2) { + continue; + } else if (item.checked.length == 1 && item.checked[0] == "origin") { + uploadFiles[item.index].overwrite = true; + } else { + uploadFiles.splice(item.index, 1); + } + } + if (uploadFiles.length > 0) { + upload.handleFiles(uploadFiles, path, true); + } }, }); From 31194fb57a5b92e7155219d7ec7273028fcb2e83 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 28 Feb 2026 10:31:09 +0100 Subject: [PATCH 055/126] fix: correctly clean path --- http/public.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/http/public.go b/http/public.go index 6dcdaff1a5..596a03c972 100644 --- a/http/public.go +++ b/http/public.go @@ -56,7 +56,7 @@ var withHashFile = func(fn handleFunc) handleFunc { filePath := "" if file.IsDir { - basePath = filepath.Dir(basePath) + basePath = filepath.Clean(link.Path) filePath = ifPath } From 8dc618a24bfea3ea5ee9a03e77985cb9bd467608 Mon Sep 17 00:00:00 2001 From: "transifex-integration[bot]" <43880903+transifex-integration[bot]@users.noreply.github.com> Date: Sat, 28 Feb 2026 10:44:24 +0100 Subject: [PATCH 056/126] chore: update translations (#5790) Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com> --- frontend/src/i18n/ar.json | 18 ++++++++++++++++-- frontend/src/i18n/bg.json | 18 ++++++++++++++++-- frontend/src/i18n/ca.json | 18 ++++++++++++++++-- frontend/src/i18n/cs.json | 18 ++++++++++++++++-- frontend/src/i18n/de.json | 18 ++++++++++++++++-- frontend/src/i18n/el.json | 18 ++++++++++++++++-- frontend/src/i18n/es.json | 18 ++++++++++++++++-- frontend/src/i18n/fa.json | 18 ++++++++++++++++-- frontend/src/i18n/fr.json | 18 ++++++++++++++++-- frontend/src/i18n/he.json | 18 ++++++++++++++++-- frontend/src/i18n/hr.json | 18 ++++++++++++++++-- frontend/src/i18n/hu.json | 18 ++++++++++++++++-- frontend/src/i18n/is.json | 18 ++++++++++++++++-- frontend/src/i18n/it.json | 18 ++++++++++++++++-- frontend/src/i18n/ja.json | 18 ++++++++++++++++-- frontend/src/i18n/ko.json | 18 ++++++++++++++++-- frontend/src/i18n/lv.json | 18 ++++++++++++++++-- frontend/src/i18n/lv_LV.json | 18 ++++++++++++++++-- frontend/src/i18n/nl-be.json | 18 ++++++++++++++++-- frontend/src/i18n/nl.json | 18 ++++++++++++++++-- frontend/src/i18n/no.json | 18 ++++++++++++++++-- frontend/src/i18n/pl.json | 18 ++++++++++++++++-- frontend/src/i18n/pt-br.json | 18 ++++++++++++++++-- frontend/src/i18n/pt.json | 18 ++++++++++++++++-- frontend/src/i18n/ro.json | 18 ++++++++++++++++-- frontend/src/i18n/ru.json | 18 ++++++++++++++++-- frontend/src/i18n/sk.json | 18 ++++++++++++++++-- frontend/src/i18n/sv-se.json | 18 ++++++++++++++++-- frontend/src/i18n/tr.json | 18 ++++++++++++++++-- frontend/src/i18n/uk.json | 18 ++++++++++++++++-- frontend/src/i18n/vi.json | 18 ++++++++++++++++-- frontend/src/i18n/zh-cn.json | 18 ++++++++++++++++-- frontend/src/i18n/zh-tw.json | 18 ++++++++++++++++-- 33 files changed, 528 insertions(+), 66 deletions(-) diff --git a/frontend/src/i18n/ar.json b/frontend/src/i18n/ar.json index cf600a381b..5df31c3ff4 100644 --- a/frontend/src/i18n/ar.json +++ b/frontend/src/i18n/ar.json @@ -48,7 +48,11 @@ "saveChanges": "حفظ التغييرات", "editAsText": "تعديل على شكل نص", "increaseFontSize": "زيادة حجم الخط", - "decreaseFontSize": "تصغير حجم الخط" + "decreaseFontSize": "تصغير حجم الخط", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "تحميل الملف", @@ -161,7 +165,17 @@ "uploadMessage": "إختر الملفات التي تريد رفعها.", "optionalPassword": "كلمة مرور إختيارية", "resolution": "الدقة", - "discardEditorChanges": "هل تريد بالتأكيد إلغاء التغييرات؟" + "discardEditorChanges": "هل تريد بالتأكيد إلغاء التغييرات؟", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "الصور", diff --git a/frontend/src/i18n/bg.json b/frontend/src/i18n/bg.json index db4ece315a..582c1059e3 100644 --- a/frontend/src/i18n/bg.json +++ b/frontend/src/i18n/bg.json @@ -48,7 +48,11 @@ "saveChanges": "Запиши промените", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Свали файл", @@ -161,7 +165,17 @@ "uploadMessage": "Изберете опция за качване.", "optionalPassword": "Опционална парола", "resolution": "Резолюция", - "discardEditorChanges": "Сигурни ли сте, че искате да откажете направените промени?" + "discardEditorChanges": "Сигурни ли сте, че искате да откажете направените промени?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Изображения", diff --git a/frontend/src/i18n/ca.json b/frontend/src/i18n/ca.json index da6dfcc99a..c9e64b0f2d 100644 --- a/frontend/src/i18n/ca.json +++ b/frontend/src/i18n/ca.json @@ -48,7 +48,11 @@ "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Descarregar fitxer", @@ -161,7 +165,17 @@ "uploadMessage": "Seleccioneu una opció per pujar.", "optionalPassword": "Contrasenya opcional", "resolution": "Resolució", - "discardEditorChanges": "Esteu segur que voleu descartar els canvis que heu fet?" + "discardEditorChanges": "Esteu segur que voleu descartar els canvis que heu fet?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Imatges", diff --git a/frontend/src/i18n/cs.json b/frontend/src/i18n/cs.json index 560e015c91..5d08768ac6 100644 --- a/frontend/src/i18n/cs.json +++ b/frontend/src/i18n/cs.json @@ -48,7 +48,11 @@ "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Stáhnout soubor", @@ -161,7 +165,17 @@ "uploadMessage": "Vyberte možnost pro nahrání.", "optionalPassword": "Volitelné heslo", "resolution": "Rozlišení", - "discardEditorChanges": "Opravdu chcete zrušit provedené změny?" + "discardEditorChanges": "Opravdu chcete zrušit provedené změny?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Obrázky", diff --git a/frontend/src/i18n/de.json b/frontend/src/i18n/de.json index d7519c8bb3..bacaf0fa96 100644 --- a/frontend/src/i18n/de.json +++ b/frontend/src/i18n/de.json @@ -48,7 +48,11 @@ "saveChanges": "Änderungen speichern", "editAsText": "Als Text bearbeiten", "increaseFontSize": "Schrift vergrößern", - "decreaseFontSize": "Schrift verkleinern" + "decreaseFontSize": "Schrift verkleinern", + "overrideAll": "Alle Dateien im Zielordner ersetzen", + "skipAll": "Alle in Konflikt stehenden Dateien überspringen", + "renameAll": "Alle Dateien umbenennen (Kopie erstellen)", + "singleDecision": "Bei jeder Datei mit Konflikt entscheiden" }, "download": { "downloadFile": "Datei herunterladen", @@ -161,7 +165,17 @@ "uploadMessage": "Wähle eine Upload-Option.", "optionalPassword": "Optionales Passwort", "resolution": "Auflösung", - "discardEditorChanges": "Möchtest du deine Änderungen wirklich verwerfen?" + "discardEditorChanges": "Möchtest du deine Änderungen wirklich verwerfen?", + "replaceOrSkip": "Dateien ersetzen oder überspringen", + "resolveConflict": "Welche Dateien möchtest du behalten?", + "singleConflictResolve": "Wenn du beide Versionen auswählst, wird dem Namen der kopierten Datei eine Nummer hinzugefügt.", + "fastConflictResolve": "Der Zielordner enthält {count} Dateien mit demselben Namen.", + "uploadingFiles": "Dateien werden hochgeladen", + "filesInOrigin": "Dateien im Ursprungsordner", + "filesInDest": "Dateien im Zielordner", + "override": "Überschreiben", + "skip": "Überspringen", + "forbiddenError": "Zugriff verweigert" }, "search": { "images": "Bilder", diff --git a/frontend/src/i18n/el.json b/frontend/src/i18n/el.json index ab0e0914f5..0ab2b58971 100644 --- a/frontend/src/i18n/el.json +++ b/frontend/src/i18n/el.json @@ -48,7 +48,11 @@ "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Λήψη αρχείου", @@ -161,7 +165,17 @@ "uploadMessage": "Επιλέξτε μια επιλογή για τη μεταφόρτωση.", "optionalPassword": "Προαιρετικός κωδικός πρόσβασης", "resolution": "Resolution", - "discardEditorChanges": "Are you sure you wish to discard the changes you've made?" + "discardEditorChanges": "Are you sure you wish to discard the changes you've made?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Εικόνες", diff --git a/frontend/src/i18n/es.json b/frontend/src/i18n/es.json index 94b77c490c..9f06513755 100644 --- a/frontend/src/i18n/es.json +++ b/frontend/src/i18n/es.json @@ -48,7 +48,11 @@ "saveChanges": "Guardar cambios", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Descargar fichero", @@ -161,7 +165,17 @@ "uploadMessage": "Seleccione una opción para subir.", "optionalPassword": "Contraseña opcional", "resolution": "Resolution", - "discardEditorChanges": "Are you sure you wish to discard the changes you've made?" + "discardEditorChanges": "Are you sure you wish to discard the changes you've made?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Imágenes", diff --git a/frontend/src/i18n/fa.json b/frontend/src/i18n/fa.json index 53fef115dd..9f4504bd09 100644 --- a/frontend/src/i18n/fa.json +++ b/frontend/src/i18n/fa.json @@ -48,7 +48,11 @@ "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "دانلود فایل", @@ -161,7 +165,17 @@ "uploadMessage": "یک گزینه برای آپلود انتخاب کنید.", "optionalPassword": "رمز عبور اختیاری", "resolution": "وضوح تصویر", - "discardEditorChanges": "آیا مطمئن هستید که می‌خواهید تغییراتی را که ایجاد کرده‌اید، لغو کنید؟" + "discardEditorChanges": "آیا مطمئن هستید که می‌خواهید تغییراتی را که ایجاد کرده‌اید، لغو کنید؟", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "تصاویر", diff --git a/frontend/src/i18n/fr.json b/frontend/src/i18n/fr.json index 3f9a36e889..5d39372c1c 100644 --- a/frontend/src/i18n/fr.json +++ b/frontend/src/i18n/fr.json @@ -48,7 +48,11 @@ "saveChanges": "Enregistrer changements", "editAsText": "Editer comme Texte", "increaseFontSize": "Augmenter taille police", - "decreaseFontSize": "Réduire taille police" + "decreaseFontSize": "Réduire taille police", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Télécharger le fichier", @@ -161,7 +165,17 @@ "uploadMessage": "Sélectionnez une option d'import.", "optionalPassword": "Mot de passe optionnel", "resolution": "Résolution", - "discardEditorChanges": "Êtes-vous sûr de vouloir annuler les modifications apportées ?" + "discardEditorChanges": "Êtes-vous sûr de vouloir annuler les modifications apportées ?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Images", diff --git a/frontend/src/i18n/he.json b/frontend/src/i18n/he.json index a9aed87d45..dbb3263cc2 100644 --- a/frontend/src/i18n/he.json +++ b/frontend/src/i18n/he.json @@ -48,7 +48,11 @@ "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "הורד קובץ", @@ -161,7 +165,17 @@ "uploadMessage": "בחר אפשרות העלאה.", "optionalPassword": "סיסמא אופציונלית", "resolution": "Resolution", - "discardEditorChanges": "האם אתה בטוח שברצונך לבטל את השינויים שביצעת?" + "discardEditorChanges": "האם אתה בטוח שברצונך לבטל את השינויים שביצעת?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "תמונות", diff --git a/frontend/src/i18n/hr.json b/frontend/src/i18n/hr.json index df1fb6da7c..1cb4368f0d 100644 --- a/frontend/src/i18n/hr.json +++ b/frontend/src/i18n/hr.json @@ -48,7 +48,11 @@ "saveChanges": "Spremi promjene", "editAsText": "Uredi kao tekst", "increaseFontSize": "Povećaj veličinu fonta", - "decreaseFontSize": "Smanji veličinu fonta" + "decreaseFontSize": "Smanji veličinu fonta", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Preuzmi Datoteku", @@ -161,7 +165,17 @@ "uploadMessage": "Odaberite opciju za prijenos.", "optionalPassword": "Opcionalna lozinka", "resolution": "Rezolucija", - "discardEditorChanges": "Jeste li sigurni da želite odbaciti promjene koje ste napravili?" + "discardEditorChanges": "Jeste li sigurni da želite odbaciti promjene koje ste napravili?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Slike", diff --git a/frontend/src/i18n/hu.json b/frontend/src/i18n/hu.json index 38732646ae..bdcb33ba00 100644 --- a/frontend/src/i18n/hu.json +++ b/frontend/src/i18n/hu.json @@ -48,7 +48,11 @@ "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Fájl letöltése", @@ -161,7 +165,17 @@ "uploadMessage": "Válasszon egy feltöltési módot.", "optionalPassword": "Választható jelszó", "resolution": "Resolution", - "discardEditorChanges": "Are you sure you wish to discard the changes you've made?" + "discardEditorChanges": "Are you sure you wish to discard the changes you've made?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Képek", diff --git a/frontend/src/i18n/is.json b/frontend/src/i18n/is.json index 6b7d8abbd5..3825849218 100644 --- a/frontend/src/i18n/is.json +++ b/frontend/src/i18n/is.json @@ -48,7 +48,11 @@ "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Sækja skjal", @@ -161,7 +165,17 @@ "uploadMessage": "Select an option to upload.", "optionalPassword": "Optional password", "resolution": "Resolution", - "discardEditorChanges": "Are you sure you wish to discard the changes you've made?" + "discardEditorChanges": "Are you sure you wish to discard the changes you've made?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Myndir", diff --git a/frontend/src/i18n/it.json b/frontend/src/i18n/it.json index a17eb7461e..f3e7478abf 100644 --- a/frontend/src/i18n/it.json +++ b/frontend/src/i18n/it.json @@ -48,7 +48,11 @@ "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Scarica file", @@ -161,7 +165,17 @@ "uploadMessage": "Seleziona un'opzione per il caricamento.", "optionalPassword": "Password opzionale", "resolution": "Risoluzione", - "discardEditorChanges": "Sei sicuro di voler scartare le modifiche apportate?" + "discardEditorChanges": "Sei sicuro di voler scartare le modifiche apportate?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Immagini", diff --git a/frontend/src/i18n/ja.json b/frontend/src/i18n/ja.json index 853fe8d8ab..bf623ec224 100644 --- a/frontend/src/i18n/ja.json +++ b/frontend/src/i18n/ja.json @@ -48,7 +48,11 @@ "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "ファイルのダウンロード", @@ -161,7 +165,17 @@ "uploadMessage": "アップロードするオプションを選択してください。", "optionalPassword": "パスワード(オプション)", "resolution": "Resolution", - "discardEditorChanges": "Are you sure you wish to discard the changes you've made?" + "discardEditorChanges": "Are you sure you wish to discard the changes you've made?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "画像", diff --git a/frontend/src/i18n/ko.json b/frontend/src/i18n/ko.json index cd9252c2d6..7ff52dfc76 100644 --- a/frontend/src/i18n/ko.json +++ b/frontend/src/i18n/ko.json @@ -48,7 +48,11 @@ "saveChanges": "변경사항 저장", "editAsText": "텍스트로 편집", "increaseFontSize": "글꼴 크기 증가", - "decreaseFontSize": "글꼴 크기 감소" + "decreaseFontSize": "글꼴 크기 감소", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "파일 다운로드", @@ -161,7 +165,17 @@ "uploadMessage": "업로드 옵션을 선택하세요.", "optionalPassword": "비밀번호 (선택)", "resolution": "해상도", - "discardEditorChanges": "변경 사항을 취소하시겠습니까?" + "discardEditorChanges": "변경 사항을 취소하시겠습니까?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "이미지", diff --git a/frontend/src/i18n/lv.json b/frontend/src/i18n/lv.json index 2d55756691..e852b17026 100644 --- a/frontend/src/i18n/lv.json +++ b/frontend/src/i18n/lv.json @@ -48,7 +48,11 @@ "saveChanges": "Saglabāt izmaiņas", "editAsText": "Rediģēt kā tekstu", "increaseFontSize": "Palieliniet fonta lielumu", - "decreaseFontSize": "Samaziniet fonta lielumu" + "decreaseFontSize": "Samaziniet fonta lielumu", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Lejupielādēt failu", @@ -161,7 +165,17 @@ "uploadMessage": "Atlasiet augšupielādes opciju.", "optionalPassword": "Izvēles parole", "resolution": "Izšķirtspēja", - "discardEditorChanges": "Vai tiešām vēlaties atmest veiktās izmaiņas?" + "discardEditorChanges": "Vai tiešām vēlaties atmest veiktās izmaiņas?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Attēli", diff --git a/frontend/src/i18n/lv_LV.json b/frontend/src/i18n/lv_LV.json index 67fbdb8e0e..748614d600 100644 --- a/frontend/src/i18n/lv_LV.json +++ b/frontend/src/i18n/lv_LV.json @@ -48,7 +48,11 @@ "saveChanges": "Saglabāt izmaiņas", "editAsText": "Rediģēt kā tekstu", "increaseFontSize": "Palieliniet fonta lielumu", - "decreaseFontSize": "Samaziniet fonta lielumu" + "decreaseFontSize": "Samaziniet fonta lielumu", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Lejupielādēt failu", @@ -161,7 +165,17 @@ "uploadMessage": "Atlasiet augšupielādes opciju.", "optionalPassword": "Izvēles parole", "resolution": "Izšķirtspēja", - "discardEditorChanges": "Vai tiešām vēlaties atmest veiktās izmaiņas?" + "discardEditorChanges": "Vai tiešām vēlaties atmest veiktās izmaiņas?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Attēli", diff --git a/frontend/src/i18n/nl-be.json b/frontend/src/i18n/nl-be.json index d9f76406c7..ee27329e97 100644 --- a/frontend/src/i18n/nl-be.json +++ b/frontend/src/i18n/nl-be.json @@ -48,7 +48,11 @@ "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Bestand downloaden", @@ -161,7 +165,17 @@ "uploadMessage": "Select an option to upload.", "optionalPassword": "Optional password", "resolution": "Resolution", - "discardEditorChanges": "Are you sure you wish to discard the changes you've made?" + "discardEditorChanges": "Are you sure you wish to discard the changes you've made?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Afbeeldingen", diff --git a/frontend/src/i18n/nl.json b/frontend/src/i18n/nl.json index 4701af98c4..5d507a5535 100644 --- a/frontend/src/i18n/nl.json +++ b/frontend/src/i18n/nl.json @@ -48,7 +48,11 @@ "saveChanges": "Wijzigingen opslaan", "editAsText": "Als tekst bewerken", "increaseFontSize": "Lettertype vergroten", - "decreaseFontSize": "Lettertype verkleinen" + "decreaseFontSize": "Lettertype verkleinen", + "overrideAll": "Alle bestanden in doelmap vervangen", + "skipAll": "Alle conflicterende bestanden overslaan", + "renameAll": "Alle bestanden hernoemen (een kopie maken)", + "singleDecision": "Voor elk conflicterend bestand besluiten" }, "download": { "downloadFile": "Bestand downloaden", @@ -161,7 +165,17 @@ "uploadMessage": "Kies een optie bij de upload.", "optionalPassword": "Optioneel wachtwoord", "resolution": "Resolutie", - "discardEditorChanges": "Weet u zeker dat u de door u aangebrachte wijzigingen wilt weggooien?" + "discardEditorChanges": "Weet u zeker dat u de door u aangebrachte wijzigingen wilt weggooien?", + "replaceOrSkip": "Bestanden vervangen of overslaan", + "resolveConflict": "Welke bestanden wilt u behouden?", + "singleConflictResolve": "Als u beide versies selecteert, wordt er een nummer toegevoegd aan de naam van het gekopieerde bestand.", + "fastConflictResolve": "De doelmap daar bevat {count} bestanden met dezelfde naam.", + "uploadingFiles": "Bestanden uploaden", + "filesInOrigin": "Bestanden in origineel", + "filesInDest": "Bestanden in bestemming", + "override": "Overschrijven", + "skip": "Overslaan", + "forbiddenError": "Verboden Fout" }, "search": { "images": "Afbeeldingen", diff --git a/frontend/src/i18n/no.json b/frontend/src/i18n/no.json index 4c9fb225ee..dd82ee85f8 100644 --- a/frontend/src/i18n/no.json +++ b/frontend/src/i18n/no.json @@ -48,7 +48,11 @@ "saveChanges": "Lagre Endringane ", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Nedlast filen", @@ -161,7 +165,17 @@ "uploadMessage": "Velg et alternativ for opplasting.", "optionalPassword": "Valgfritt passord", "resolution": "Oppløysning", - "discardEditorChanges": "Er du sikker på at du vil forkaste endringene du har gjort?" + "discardEditorChanges": "Er du sikker på at du vil forkaste endringene du har gjort?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Bilde", diff --git a/frontend/src/i18n/pl.json b/frontend/src/i18n/pl.json index 7956e22bc0..2a46352892 100644 --- a/frontend/src/i18n/pl.json +++ b/frontend/src/i18n/pl.json @@ -48,7 +48,11 @@ "saveChanges": "Zapisz zmiany", "editAsText": "Edytuj jako tekst", "increaseFontSize": "Zwiększ rozmiar czcionki", - "decreaseFontSize": "Zmniejsz rozmiar czcionki" + "decreaseFontSize": "Zmniejsz rozmiar czcionki", + "overrideAll": "Zastąp wszystkie pliki w folderze docelowym", + "skipAll": "Pomiń wszystkie pliki powodujące konflikty", + "renameAll": "Zmień nazwy wszystkich plików (utwórz kopię)", + "singleDecision": "Podejmij decyzję dla każdego pliku powodującego konflikt" }, "download": { "downloadFile": "Pobierz plik", @@ -161,7 +165,17 @@ "uploadMessage": "Wybierz opcję przesyłania.", "optionalPassword": "Opcjonalne hasło", "resolution": "Rozdzielczość", - "discardEditorChanges": "Czy na pewno chcesz odrzucić wprowadzone zmiany?" + "discardEditorChanges": "Czy na pewno chcesz odrzucić wprowadzone zmiany?", + "replaceOrSkip": "Zastąp lub pomiń pliki", + "resolveConflict": "Które pliki chcesz zachować?", + "singleConflictResolve": "Jeśli wybierzesz obie wersje, do nazwy kopiowanego pliku zostanie dodany numer.", + "fastConflictResolve": "W folderze docelowym liczba plików o tej samej nazwie to {count}.", + "uploadingFiles": "Wysyłanie plików", + "filesInOrigin": "Pliki w miejscu pochodzenia", + "filesInDest": "Pliki w miejscu docelowym", + "override": "Zastąp", + "skip": "Pomiń", + "forbiddenError": "Błąd zabronionego dostępu" }, "search": { "images": "Obrazy", diff --git a/frontend/src/i18n/pt-br.json b/frontend/src/i18n/pt-br.json index 5f36c337ea..9b9122c65b 100644 --- a/frontend/src/i18n/pt-br.json +++ b/frontend/src/i18n/pt-br.json @@ -48,7 +48,11 @@ "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Baixar arquivo", @@ -161,7 +165,17 @@ "uploadMessage": "Selecione uma opção para enviar.", "optionalPassword": "Senha opcional", "resolution": "Resolution", - "discardEditorChanges": "Are you sure you wish to discard the changes you've made?" + "discardEditorChanges": "Are you sure you wish to discard the changes you've made?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Imagens", diff --git a/frontend/src/i18n/pt.json b/frontend/src/i18n/pt.json index 0e50052255..8f5e852455 100644 --- a/frontend/src/i18n/pt.json +++ b/frontend/src/i18n/pt.json @@ -48,7 +48,11 @@ "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Descarregar ficheiro", @@ -161,7 +165,17 @@ "uploadMessage": "Select an option to upload.", "optionalPassword": "Optional password", "resolution": "Resolution", - "discardEditorChanges": "Are you sure you wish to discard the changes you've made?" + "discardEditorChanges": "Are you sure you wish to discard the changes you've made?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Imagens", diff --git a/frontend/src/i18n/ro.json b/frontend/src/i18n/ro.json index 5495e884d8..b36436ea1b 100644 --- a/frontend/src/i18n/ro.json +++ b/frontend/src/i18n/ro.json @@ -48,7 +48,11 @@ "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Descarcă fișier", @@ -161,7 +165,17 @@ "uploadMessage": "Select an option to upload.", "optionalPassword": "Optional password", "resolution": "Resolution", - "discardEditorChanges": "Are you sure you wish to discard the changes you've made?" + "discardEditorChanges": "Are you sure you wish to discard the changes you've made?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Imagini", diff --git a/frontend/src/i18n/ru.json b/frontend/src/i18n/ru.json index 05514e4a64..6cd70e1317 100644 --- a/frontend/src/i18n/ru.json +++ b/frontend/src/i18n/ru.json @@ -48,7 +48,11 @@ "saveChanges": "Сохранить", "editAsText": "Редактировать как текст", "increaseFontSize": "Увеличить размер шрифта", - "decreaseFontSize": "Уменьшить размер шрифта" + "decreaseFontSize": "Уменьшить размер шрифта", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Скачать файл", @@ -161,7 +165,17 @@ "uploadMessage": "Выберите вариант для загрузки.", "optionalPassword": "Необязательный пароль", "resolution": "Разрешение", - "discardEditorChanges": "Вы действительно желаете отменить ваши правки?" + "discardEditorChanges": "Вы действительно желаете отменить ваши правки?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Изображения", diff --git a/frontend/src/i18n/sk.json b/frontend/src/i18n/sk.json index 225a4f748e..82089d7ba2 100644 --- a/frontend/src/i18n/sk.json +++ b/frontend/src/i18n/sk.json @@ -48,7 +48,11 @@ "saveChanges": "Uložiť zmeny", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Stiahnuť súbor", @@ -161,7 +165,17 @@ "uploadMessage": "Zvoľte možnosť nahrávania.", "optionalPassword": "Voliteľné heslo", "resolution": "Rozlíšenie", - "discardEditorChanges": "Naozaj chcete zahodiť vykonané zmeny?" + "discardEditorChanges": "Naozaj chcete zahodiť vykonané zmeny?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Obrázky", diff --git a/frontend/src/i18n/sv-se.json b/frontend/src/i18n/sv-se.json index 5542c7159f..a7cf261a2d 100644 --- a/frontend/src/i18n/sv-se.json +++ b/frontend/src/i18n/sv-se.json @@ -48,7 +48,11 @@ "saveChanges": "Spara ändringar", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Ladda ner fil", @@ -161,7 +165,17 @@ "uploadMessage": "Välj ett alternativ att ladda upp.", "optionalPassword": "Valfritt lösenord", "resolution": "Upplösning", - "discardEditorChanges": "Är du säker på att du vill förkasta ändringarna du gjort?" + "discardEditorChanges": "Är du säker på att du vill förkasta ändringarna du gjort?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Bilder", diff --git a/frontend/src/i18n/tr.json b/frontend/src/i18n/tr.json index 5ff72853e6..800c9e6493 100644 --- a/frontend/src/i18n/tr.json +++ b/frontend/src/i18n/tr.json @@ -48,7 +48,11 @@ "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Dosyayı indir", @@ -161,7 +165,17 @@ "uploadMessage": "Yüklemek için bir seçenek belirleyin.", "optionalPassword": "İsteğe bağlı şifre", "resolution": "Resolution", - "discardEditorChanges": "Are you sure you wish to discard the changes you've made?" + "discardEditorChanges": "Are you sure you wish to discard the changes you've made?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Görseller", diff --git a/frontend/src/i18n/uk.json b/frontend/src/i18n/uk.json index ccaf9a41f0..d9aa3fb4f1 100644 --- a/frontend/src/i18n/uk.json +++ b/frontend/src/i18n/uk.json @@ -48,7 +48,11 @@ "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Завантажити файл", @@ -161,7 +165,17 @@ "uploadMessage": "Виберіть варіант для вивантаження.", "optionalPassword": "Необов'язковий пароль", "resolution": "Розширення", - "discardEditorChanges": "Чи дійсно ви хочете скасувати поточні зміни?" + "discardEditorChanges": "Чи дійсно ви хочете скасувати поточні зміни?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Зображення", diff --git a/frontend/src/i18n/vi.json b/frontend/src/i18n/vi.json index ef3aeab580..ab73c0cb27 100644 --- a/frontend/src/i18n/vi.json +++ b/frontend/src/i18n/vi.json @@ -48,7 +48,11 @@ "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Tải xuống tệp tin", @@ -161,7 +165,17 @@ "uploadMessage": "Chọn một tùy chọn để tải lên.", "optionalPassword": "Mật khẩu tùy chọn", "resolution": "Độ phân giải", - "discardEditorChanges": "Bạn có chắc chắn muốn hủy bỏ các thay đổi đã thực hiện không?" + "discardEditorChanges": "Bạn có chắc chắn muốn hủy bỏ các thay đổi đã thực hiện không?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Hình ảnh", diff --git a/frontend/src/i18n/zh-cn.json b/frontend/src/i18n/zh-cn.json index 4a16eef972..816e1d8d82 100644 --- a/frontend/src/i18n/zh-cn.json +++ b/frontend/src/i18n/zh-cn.json @@ -48,7 +48,11 @@ "saveChanges": "保存更改", "editAsText": "以文本形式编辑", "increaseFontSize": "增大字体大小", - "decreaseFontSize": "减小字体大小" + "decreaseFontSize": "减小字体大小", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "下载文件", @@ -161,7 +165,17 @@ "uploadMessage": "选择上传选项。", "optionalPassword": "密码(选填,不填即无密码)", "resolution": "分辨率", - "discardEditorChanges": "你确定要放弃所做的更改吗?" + "discardEditorChanges": "你确定要放弃所做的更改吗?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "图像", diff --git a/frontend/src/i18n/zh-tw.json b/frontend/src/i18n/zh-tw.json index 61f264f38e..986b1d3b03 100644 --- a/frontend/src/i18n/zh-tw.json +++ b/frontend/src/i18n/zh-tw.json @@ -48,7 +48,11 @@ "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "下載檔案", @@ -161,7 +165,17 @@ "uploadMessage": "選擇上傳項。", "optionalPassword": "密碼(選填,不填即無密碼)", "resolution": "解析度", - "discardEditorChanges": "你確定要放棄所做的變更嗎?" + "discardEditorChanges": "你確定要放棄所做的變更嗎?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "影像", From a40f80672d9875bfb891f54d8629ad12bfeaa886 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 28 Feb 2026 10:44:31 +0100 Subject: [PATCH 057/126] chore(deps): update all non-major dependencies (#5791) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- frontend/package.json | 2 +- frontend/pnpm-lock.yaml | 527 +++++++++++++++++++++++++++------------- go.mod | 2 +- go.sum | 4 +- 4 files changed, 359 insertions(+), 176 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index e98566b976..6f12769a7d 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -72,5 +72,5 @@ "vite-plugin-compression2": "^2.3.1", "vue-tsc": "^3.1.3" }, - "packageManager": "pnpm@10.30.1+sha512.3590e550d5384caa39bd5c7c739f72270234b2f6059e13018f975c313b1eb9fefcc09714048765d4d9efe961382c312e624572c0420762bdc5d5940cdf9be73a" + "packageManager": "pnpm@10.30.3+sha512.c961d1e0a2d8e354ecaa5166b822516668b7f44cb5bd95122d590dd81922f606f5473b6d23ec4a5be05e7fcd18e8488d47d978bbe981872f1145d06e9a740017" } diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 7ec45c7af3..8107bb98a8 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -10,13 +10,13 @@ importers: dependencies: '@chenfengyuan/vue-number-input': specifier: ^2.0.1 - version: 2.0.1(vue@3.5.28(typescript@5.9.3)) + version: 2.0.1(vue@3.5.29(typescript@5.9.3)) '@vueuse/core': specifier: ^14.0.0 - version: 14.2.1(vue@3.5.28(typescript@5.9.3)) + version: 14.2.1(vue@3.5.29(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.28(typescript@5.9.3)) + version: 14.2.1(focus-trap@8.0.0)(jwt-decode@4.0.0)(vue@3.5.29(typescript@5.9.3)) ace-builds: specifier: ^1.43.2 version: 1.43.6 @@ -58,13 +58,13 @@ importers: version: 8.0.1 pinia: specifier: ^3.0.4 - version: 3.0.4(typescript@5.9.3)(vue@3.5.28(typescript@5.9.3)) + version: 3.0.4(typescript@5.9.3)(vue@3.5.29(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.28(typescript@5.9.3)) + version: 3.8.0(vue@3.5.29(typescript@5.9.3)) tus-js-client: specifier: ^4.3.1 version: 4.3.1 @@ -79,13 +79,13 @@ importers: version: 0.2.30 videojs-mobile-ui: specifier: ^1.1.1 - version: 1.2.1(video.js@8.23.7) + version: 1.2.2(video.js@8.23.7) vue: specifier: ^3.5.17 - version: 3.5.28(typescript@5.9.3) + version: 3.5.29(typescript@5.9.3) vue-i18n: specifier: ^11.1.10 - version: 11.2.8(vue@3.5.28(typescript@5.9.3)) + version: 11.2.8(vue@3.5.29(typescript@5.9.3)) vue-lazyload: specifier: ^3.0.0 version: 3.0.0 @@ -94,14 +94,14 @@ importers: version: 1.3.4 vue-router: specifier: ^5.0.0 - version: 5.0.3(@vue/compiler-sfc@3.5.28)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3)) + version: 5.0.3(@vue/compiler-sfc@3.5.29)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.29(typescript@5.9.3)))(vue@3.5.29(typescript@5.9.3)) vue-toastification: specifier: ^2.0.0-rc.5 - version: 2.0.0-rc.5(vue@3.5.28(typescript@5.9.3)) + version: 2.0.0-rc.5(vue@3.5.29(typescript@5.9.3)) devDependencies: '@intlify/unplugin-vue-i18n': specifier: ^11.0.1 - version: 11.0.7(@vue/compiler-dom@3.5.28)(eslint@10.0.1)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3)) + version: 11.0.7(@vue/compiler-dom@3.5.29)(eslint@10.0.2)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.2.8(vue@3.5.29(typescript@5.9.3)))(vue@3.5.29(typescript@5.9.3)) '@tsconfig/node24': specifier: ^24.0.2 version: 24.0.4 @@ -110,40 +110,40 @@ importers: version: 4.17.12 '@types/node': specifier: ^24.10.1 - version: 24.10.13 + version: 24.11.0 '@typescript-eslint/eslint-plugin': specifier: ^8.37.0 - version: 8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.0.1)(typescript@5.9.3))(eslint@10.0.1)(typescript@5.9.3) + version: 8.56.1(@typescript-eslint/parser@8.56.0(eslint@10.0.2)(typescript@5.9.3))(eslint@10.0.2)(typescript@5.9.3) '@vitejs/plugin-legacy': specifier: ^7.2.1 - version: 7.2.1(terser@5.46.0)(vite@7.3.1(@types/node@24.10.13)(terser@5.46.0)(yaml@2.8.2)) + version: 7.2.1(terser@5.46.0)(vite@7.3.1(@types/node@24.11.0)(terser@5.46.0)(yaml@2.8.2)) '@vitejs/plugin-vue': specifier: ^6.0.1 - version: 6.0.4(vite@7.3.1(@types/node@24.10.13)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3)) + version: 6.0.4(vite@7.3.1(@types/node@24.11.0)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.29(typescript@5.9.3)) '@vue/eslint-config-prettier': specifier: ^10.2.0 - version: 10.2.0(eslint@10.0.1)(prettier@3.8.1) + version: 10.2.0(eslint@10.0.2)(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.1)(typescript@5.9.3))(eslint@10.0.1)(vue-eslint-parser@10.4.0(eslint@10.0.1)))(eslint@10.0.1)(typescript@5.9.3) + version: 14.7.0(eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.2)(typescript@5.9.3))(eslint@10.0.2)(vue-eslint-parser@10.4.0(eslint@10.0.2)))(eslint@10.0.2)(typescript@5.9.3) '@vue/tsconfig': specifier: ^0.8.1 - version: 0.8.1(typescript@5.9.3)(vue@3.5.28(typescript@5.9.3)) + version: 0.8.1(typescript@5.9.3)(vue@3.5.29(typescript@5.9.3)) autoprefixer: specifier: ^10.4.21 - version: 10.4.24(postcss@8.5.6) + version: 10.4.27(postcss@8.5.6) eslint: specifier: ^10.0.0 - version: 10.0.1 + version: 10.0.2 eslint-config-prettier: specifier: ^10.1.5 - version: 10.1.8(eslint@10.0.1) + version: 10.1.8(eslint@10.0.2) eslint-plugin-prettier: specifier: ^5.5.1 - version: 5.5.5(eslint-config-prettier@10.1.8(eslint@10.0.1))(eslint@10.0.1)(prettier@3.8.1) + version: 5.5.5(eslint-config-prettier@10.1.8(eslint@10.0.2))(eslint@10.0.2)(prettier@3.8.1) eslint-plugin-vue: specifier: ^10.5.1 - version: 10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.1)(typescript@5.9.3))(eslint@10.0.1)(vue-eslint-parser@10.4.0(eslint@10.0.1)) + version: 10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.2)(typescript@5.9.3))(eslint@10.0.2)(vue-eslint-parser@10.4.0(eslint@10.0.2)) postcss: specifier: ^8.5.6 version: 8.5.6 @@ -158,7 +158,7 @@ importers: version: 5.9.3 vite: specifier: ^7.2.2 - version: 7.3.1(@types/node@24.10.13)(terser@5.46.0)(yaml@2.8.2) + version: 7.3.1(@types/node@24.11.0)(terser@5.46.0)(yaml@2.8.2) vite-plugin-compression2: specifier: ^2.3.1 version: 2.4.0(rollup@4.57.1) @@ -1288,8 +1288,8 @@ packages: '@types/lodash@4.17.23': resolution: {integrity: sha512-RDvF6wTulMPjrNdCoYRC8gNR880JNGT8uB+REUpC2Ns4pRqQJhGz90wh7rgdXDPpCczF3VGktDuFGVnz8zP7HA==} - '@types/node@24.10.13': - resolution: {integrity: sha512-oH72nZRfDv9lADUBSo104Aq7gPHpQZc4BTx38r9xf9pg5LfP6EzSyH2n7qFmmxRQXh7YlUXODcYsg6PuTDSxGg==} + '@types/node@24.11.0': + resolution: {integrity: sha512-fPxQqz4VTgPI/IQ+lj9r0h+fDR66bzoeMGHp8ASee+32OSGIkeASsoZuJixsQoVef1QJbeubcPBxKk22QVoWdw==} '@types/trusted-types@2.0.7': resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} @@ -1305,6 +1305,14 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/eslint-plugin@8.56.1': + resolution: {integrity: sha512-Jz9ZztpB37dNC+HU2HI28Bs9QXpzCz+y/twHOwhyrIRdbuVDxSytJNDl6z/aAKlaRIwC7y8wJdkBv7FxYGgi0A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.56.1 + 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} @@ -1318,16 +1326,32 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/project-service@8.56.1': + resolution: {integrity: sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ==} + 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.56.1': + resolution: {integrity: sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==} + 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.56.1': + resolution: {integrity: sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ==} + 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} @@ -1335,16 +1359,33 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/type-utils@8.56.1': + resolution: {integrity: sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg==} + 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.56.1': + resolution: {integrity: sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==} + 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.56.1': + resolution: {integrity: sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==} + 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} @@ -1352,10 +1393,21 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/utils@8.56.1': + resolution: {integrity: sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==} + 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.56.1': + resolution: {integrity: sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==} + 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'} @@ -1404,15 +1456,27 @@ packages: '@vue/compiler-core@3.5.28': resolution: {integrity: sha512-kviccYxTgoE8n6OCw96BNdYlBg2GOWfBuOW4Vqwrt7mSKWKwFVvI8egdTltqRgITGPsTFYtKYfxIG8ptX2PJHQ==} + '@vue/compiler-core@3.5.29': + resolution: {integrity: sha512-cuzPhD8fwRHk8IGfmYaR4eEe4cAyJEL66Ove/WZL7yWNL134nqLddSLwNRIsFlnnW1kK+p8Ck3viFnC0chXCXw==} + '@vue/compiler-dom@3.5.28': resolution: {integrity: sha512-/1ZepxAb159jKR1btkefDP+J2xuWL5V3WtleRmxaT+K2Aqiek/Ab/+Ebrw2pPj0sdHO8ViAyyJWfhXXOP/+LQA==} + '@vue/compiler-dom@3.5.29': + resolution: {integrity: sha512-n0G5o7R3uBVmVxjTIYcz7ovr8sy7QObFG8OQJ3xGCDNhbG60biP/P5KnyY8NLd81OuT1WJflG7N4KWYHaeeaIg==} + '@vue/compiler-sfc@3.5.28': resolution: {integrity: sha512-6TnKMiNkd6u6VeVDhZn/07KhEZuBSn43Wd2No5zaP5s3xm8IqFTHBj84HJah4UepSUJTro5SoqqlOY22FKY96g==} + '@vue/compiler-sfc@3.5.29': + resolution: {integrity: sha512-oJZhN5XJs35Gzr50E82jg2cYdZQ78wEwvRO6Y63TvLVTc+6xICzJHP1UIecdSPPYIbkautNBanDiWYa64QSFIA==} + '@vue/compiler-ssr@3.5.28': resolution: {integrity: sha512-JCq//9w1qmC6UGLWJX7RXzrGpKkroubey/ZFqTpvEIDJEKGgntuDMqkuWiZvzTzTA5h2qZvFBFHY7fAAa9475g==} + '@vue/compiler-ssr@3.5.29': + resolution: {integrity: sha512-Y/ARJZE6fpjzL5GH/phJmsFwx3g6t2KmHKHx5q+MLl2kencADKIrhH5MLF6HHpRMmlRAYBRSvv347Mepf1zVNw==} + '@vue/devtools-api@6.6.4': resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==} @@ -1454,23 +1518,26 @@ packages: '@vue/language-core@3.2.5': resolution: {integrity: sha512-d3OIxN/+KRedeM5wQ6H6NIpwS3P5gC9nmyaHgBk+rO6dIsjY+tOh4UlPpiZbAh3YtLdCGEX4M16RmsBqPmJV+g==} - '@vue/reactivity@3.5.28': - resolution: {integrity: sha512-gr5hEsxvn+RNyu9/9o1WtdYdwDjg5FgjUSBEkZWqgTKlo/fvwZ2+8W6AfKsc9YN2k/+iHYdS9vZYAhpi10kNaw==} + '@vue/reactivity@3.5.29': + resolution: {integrity: sha512-zcrANcrRdcLtmGZETBxWqIkoQei8HaFpZWx/GHKxx79JZsiZ8j1du0VUJtu4eJjgFvU/iKL5lRXFXksVmI+5DA==} - '@vue/runtime-core@3.5.28': - resolution: {integrity: sha512-POVHTdbgnrBBIpnbYU4y7pOMNlPn2QVxVzkvEA2pEgvzbelQq4ZOUxbp2oiyo+BOtiYlm8Q44wShHJoBvDPAjQ==} + '@vue/runtime-core@3.5.29': + resolution: {integrity: sha512-8DpW2QfdwIWOLqtsNcds4s+QgwSaHSJY/SUe04LptianUQ/0xi6KVsu/pYVh+HO3NTVvVJjIPL2t6GdeKbS4Lg==} - '@vue/runtime-dom@3.5.28': - resolution: {integrity: sha512-4SXxSF8SXYMuhAIkT+eBRqOkWEfPu6nhccrzrkioA6l0boiq7sp18HCOov9qWJA5HML61kW8p/cB4MmBiG9dSA==} + '@vue/runtime-dom@3.5.29': + resolution: {integrity: sha512-AHvvJEtcY9tw/uk+s/YRLSlxxQnqnAkjqvK25ZiM4CllCZWzElRAoQnCM42m9AHRLNJ6oe2kC5DCgD4AUdlvXg==} - '@vue/server-renderer@3.5.28': - resolution: {integrity: sha512-pf+5ECKGj8fX95bNincbzJ6yp6nyzuLDhYZCeFxUNp8EBrQpPpQaLX3nNCp49+UbgbPun3CeVE+5CXVV1Xydfg==} + '@vue/server-renderer@3.5.29': + resolution: {integrity: sha512-G/1k6WK5MusLlbxSE2YTcqAAezS+VuwHhOvLx2KnQU7G2zCH6KIb+5Wyt6UjMq7a3qPzNEjJXs1hvAxDclQH+g==} peerDependencies: - vue: 3.5.28 + vue: 3.5.29 '@vue/shared@3.5.28': resolution: {integrity: sha512-cfWa1fCGBxrvaHRhvV3Is0MgmrbSCxYTXCSCau2I0a1Xw1N1pHAvkWCiXPRAqjvToILvguNyEwjevUqAuBQWvQ==} + '@vue/shared@3.5.29': + resolution: {integrity: sha512-w7SR0A5zyRByL9XUkCfdLs7t9XOHUyJ67qPGQjOou3p6GvBeBW+AVjUUmlxtZ4PIYaRvE+1LmK44O4uajlZwcg==} + '@vue/tsconfig@0.8.1': resolution: {integrity: sha512-aK7feIWPXFSUhsCP9PFqPyFOcz4ENkb8hZ2pneL6m2UjCkccvaOhC/5KCKluuBufvp2KzkbdA2W2pk20vLzu3g==} peerDependencies: @@ -1581,8 +1648,8 @@ packages: resolution: {integrity: sha512-cbdCP0PGOBq0ASG+sjnKIoYkWMKhhz+F/h9pRexUdX2Hd38+WOlBkRKlqkGOSm0YQpcFMQBJeK4WspUAkwsEdg==} engines: {node: '>=20.19.0'} - autoprefixer@10.4.24: - resolution: {integrity: sha512-uHZg7N9ULTVbutaIsDRoUkoS8/h3bdsmVJYZ5l3wv8Cp/6UIIoRDm90hZ+BwxUj/hGBEzLxdHNSKuFpn8WOyZw==} + autoprefixer@10.4.27: + resolution: {integrity: sha512-NP9APE+tO+LuJGn7/9+cohklunJsXWiaWEfV3si4Gi/XHDwVNgkwr1J3RQYFIvPy76GmJ9/bW8vyoU1LcxwKHA==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: @@ -1611,9 +1678,9 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - balanced-match@4.0.3: - resolution: {integrity: sha512-1pHv8LX9CpKut1Zp4EXey7Z8OfH11ONNH6Dhi2WDUt31VVZFXZzKwXcysBgqSumFCmR+0dqjMK5v5JiFHzi0+g==} - engines: {node: 20 || >=22} + 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==} @@ -1628,9 +1695,9 @@ packages: brace-expansion@2.0.2: resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} - brace-expansion@5.0.2: - resolution: {integrity: sha512-Pdk8c9poy+YhOgVWw1JNN22/HcivgKWwpxKq04M/jTmHyCZn12WPJebZxdjSa5TmBqISrUSgNYU3eRORljfCCw==} - engines: {node: 20 || >=22} + 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==} @@ -1654,6 +1721,9 @@ packages: caniuse-lite@1.0.30001769: resolution: {integrity: sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==} + 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'} @@ -1823,8 +1893,8 @@ packages: resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint@10.0.1: - resolution: {integrity: sha512-20MV9SUdeN6Jd84xESsKhRly+/vxI+hwvpBMA93s+9dAcjdCuCojn4IqUGS3lvVaqjVYGYHSRMCpeFtF2rQYxQ==} + eslint@10.0.2: + resolution: {integrity: sha512-uYixubwmqJZH+KLVYIVKY1JQt7tysXhtj21WSvjcSmU5SVNzMus1bgLe+pAt816yQ8opKfheVVoPLqvVMGejYw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: @@ -2161,8 +2231,8 @@ packages: min-document@2.19.2: resolution: {integrity: sha512-8S5I8db/uZN8r9HSLFVWPdJCvYOejMcEC82VIzNUc6Zkklf/d1gg2psfE79/vyhWOj4+J8MtwmoOz3TmvaGu5A==} - minimatch@10.2.2: - resolution: {integrity: sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==} + minimatch@10.2.4: + resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} engines: {node: 18 || 20 || >=22} minimatch@9.0.5: @@ -2569,8 +2639,8 @@ packages: videojs-hotkeys@0.2.30: resolution: {integrity: sha512-G8kEQZPapoWDoEajh2Nroy4bCN1qVEul5AuzZqBS7ZCG45K7hqTYKgf1+fmYvG8m8u84sZmVMUvSWZBjaFW66Q==} - videojs-mobile-ui@1.2.1: - resolution: {integrity: sha512-XlATK+ptFbynuZLFkTE1lJBXD21h4yFD4YFxrBweCnmbdja0+aHJduGZf0i3b6I/KquRX7S+gra2S5ZCdgE74A==} + videojs-mobile-ui@1.2.2: + resolution: {integrity: sha512-XPGgfQac4UhCRK4EJdJ6ODrQwj+ui0oGWzi+g5GFoIdzh4NcCk8PxwhvraSId6lSmMSOhazrrxY9Y/p30OKkjQ==} engines: {node: '>=14', npm: '>=6'} peerDependencies: video.js: ^8 @@ -2668,8 +2738,8 @@ packages: peerDependencies: typescript: '>=5.0.0' - vue@3.5.28: - resolution: {integrity: sha512-BRdrNfeoccSoIZeIhyPBfvWSLFP4q8J3u8Ju8Ug5vu3LdD+yTM13Sg4sKtljxozbnuMu1NB1X5HBHRYUzFocKg==} + vue@3.5.29: + resolution: {integrity: sha512-BZqN4Ze6mDQVNAni0IHeMJ5mwr8VAJ3MQC9FmprRhcBYENw+wOAAjRj8jfmN6FLl0j96OXbR+CjWhmAmM+QGnA==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -3364,9 +3434,9 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 - '@chenfengyuan/vue-number-input@2.0.1(vue@3.5.28(typescript@5.9.3))': + '@chenfengyuan/vue-number-input@2.0.1(vue@3.5.29(typescript@5.9.3))': dependencies: - vue: 3.5.28(typescript@5.9.3) + vue: 3.5.29(typescript@5.9.3) '@esbuild/aix-ppc64@0.25.12': optional: true @@ -3524,9 +3594,9 @@ snapshots: '@esbuild/win32-x64@0.27.3': optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@10.0.1)': + '@eslint-community/eslint-utils@4.9.1(eslint@10.0.2)': dependencies: - eslint: 10.0.1 + eslint: 10.0.2 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} @@ -3535,7 +3605,7 @@ snapshots: dependencies: '@eslint/object-schema': 3.0.2 debug: 4.4.3 - minimatch: 10.2.2 + minimatch: 10.2.4 transitivePeerDependencies: - supports-color @@ -3565,7 +3635,7 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} - '@intlify/bundle-utils@11.0.7(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)))': + '@intlify/bundle-utils@11.0.7(vue-i18n@11.2.8(vue@3.5.29(typescript@5.9.3)))': dependencies: '@intlify/message-compiler': 11.2.8 '@intlify/shared': 11.2.8 @@ -3577,7 +3647,7 @@ snapshots: source-map-js: 1.2.1 yaml-eslint-parser: 1.3.2 optionalDependencies: - vue-i18n: 11.2.8(vue@3.5.28(typescript@5.9.3)) + vue-i18n: 11.2.8(vue@3.5.29(typescript@5.9.3)) '@intlify/core-base@11.2.8': dependencies: @@ -3591,12 +3661,12 @@ snapshots: '@intlify/shared@11.2.8': {} - '@intlify/unplugin-vue-i18n@11.0.7(@vue/compiler-dom@3.5.28)(eslint@10.0.1)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3))': + '@intlify/unplugin-vue-i18n@11.0.7(@vue/compiler-dom@3.5.29)(eslint@10.0.2)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.2.8(vue@3.5.29(typescript@5.9.3)))(vue@3.5.29(typescript@5.9.3))': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.1) - '@intlify/bundle-utils': 11.0.7(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3))) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.2) + '@intlify/bundle-utils': 11.0.7(vue-i18n@11.2.8(vue@3.5.29(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.28)(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3)) + '@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.2.8)(@vue/compiler-dom@3.5.29)(vue-i18n@11.2.8(vue@3.5.29(typescript@5.9.3)))(vue@3.5.29(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) @@ -3605,9 +3675,9 @@ snapshots: pathe: 2.0.3 picocolors: 1.1.1 unplugin: 2.3.11 - vue: 3.5.28(typescript@5.9.3) + vue: 3.5.29(typescript@5.9.3) optionalDependencies: - vue-i18n: 11.2.8(vue@3.5.28(typescript@5.9.3)) + vue-i18n: 11.2.8(vue@3.5.29(typescript@5.9.3)) transitivePeerDependencies: - '@vue/compiler-dom' - eslint @@ -3615,14 +3685,14 @@ snapshots: - supports-color - typescript - '@intlify/vue-i18n-extensions@8.0.0(@intlify/shared@11.2.8)(@vue/compiler-dom@3.5.28)(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3))': + '@intlify/vue-i18n-extensions@8.0.0(@intlify/shared@11.2.8)(@vue/compiler-dom@3.5.29)(vue-i18n@11.2.8(vue@3.5.29(typescript@5.9.3)))(vue@3.5.29(typescript@5.9.3))': dependencies: '@babel/parser': 7.29.0 optionalDependencies: '@intlify/shared': 11.2.8 - '@vue/compiler-dom': 3.5.28 - vue: 3.5.28(typescript@5.9.3) - vue-i18n: 11.2.8(vue@3.5.28(typescript@5.9.3)) + '@vue/compiler-dom': 3.5.29 + vue: 3.5.29(typescript@5.9.3) + vue-i18n: 11.2.8(vue@3.5.29(typescript@5.9.3)) '@jridgewell/gen-mapping@0.3.13': dependencies: @@ -3765,7 +3835,7 @@ snapshots: '@types/lodash@4.17.23': {} - '@types/node@24.10.13': + '@types/node@24.11.0': dependencies: undici-types: 7.16.0 @@ -3774,15 +3844,15 @@ snapshots: '@types/web-bluetooth@0.0.21': {} - '@typescript-eslint/eslint-plugin@8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.0.1)(typescript@5.9.3))(eslint@10.0.1)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.0.2)(typescript@5.9.3))(eslint@10.0.2)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.56.0(eslint@10.0.1)(typescript@5.9.3) + '@typescript-eslint/parser': 8.56.0(eslint@10.0.2)(typescript@5.9.3) '@typescript-eslint/scope-manager': 8.56.0 - '@typescript-eslint/type-utils': 8.56.0(eslint@10.0.1)(typescript@5.9.3) - '@typescript-eslint/utils': 8.56.0(eslint@10.0.1)(typescript@5.9.3) + '@typescript-eslint/type-utils': 8.56.0(eslint@10.0.2)(typescript@5.9.3) + '@typescript-eslint/utils': 8.56.0(eslint@10.0.2)(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.56.0 - eslint: 10.0.1 + eslint: 10.0.2 ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.4.0(typescript@5.9.3) @@ -3790,14 +3860,30 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.56.0(eslint@10.0.1)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.56.1(@typescript-eslint/parser@8.56.0(eslint@10.0.2)(typescript@5.9.3))(eslint@10.0.2)(typescript@5.9.3)': + dependencies: + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.56.0(eslint@10.0.2)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.56.1 + '@typescript-eslint/type-utils': 8.56.1(eslint@10.0.2)(typescript@5.9.3) + '@typescript-eslint/utils': 8.56.1(eslint@10.0.2)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.56.1 + eslint: 10.0.2 + 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.2)(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.1 + eslint: 10.0.2 typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -3811,22 +3897,52 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/project-service@8.56.1(typescript@5.9.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.56.1(typescript@5.9.3) + '@typescript-eslint/types': 8.56.1 + 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.56.1': + dependencies: + '@typescript-eslint/types': 8.56.1 + '@typescript-eslint/visitor-keys': 8.56.1 + '@typescript-eslint/tsconfig-utils@8.56.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.56.0(eslint@10.0.1)(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.56.1(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + + '@typescript-eslint/type-utils@8.56.0(eslint@10.0.2)(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.1)(typescript@5.9.3) + '@typescript-eslint/utils': 8.56.0(eslint@10.0.2)(typescript@5.9.3) debug: 4.4.3 - eslint: 10.0.1 + eslint: 10.0.2 + ts-api-utils: 2.4.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/type-utils@8.56.1(eslint@10.0.2)(typescript@5.9.3)': + dependencies: + '@typescript-eslint/types': 8.56.1 + '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.56.1(eslint@10.0.2)(typescript@5.9.3) + debug: 4.4.3 + eslint: 10.0.2 ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: @@ -3834,6 +3950,8 @@ snapshots: '@typescript-eslint/types@8.56.0': {} + '@typescript-eslint/types@8.56.1': {} + '@typescript-eslint/typescript-estree@8.56.0(typescript@5.9.3)': dependencies: '@typescript-eslint/project-service': 8.56.0(typescript@5.9.3) @@ -3849,13 +3967,39 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.56.0(eslint@10.0.1)(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.56.1(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.1) + '@typescript-eslint/project-service': 8.56.1(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.56.1(typescript@5.9.3) + '@typescript-eslint/types': 8.56.1 + '@typescript-eslint/visitor-keys': 8.56.1 + 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.2)(typescript@5.9.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.2) '@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.1 + eslint: 10.0.2 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.56.1(eslint@10.0.2)(typescript@5.9.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.2) + '@typescript-eslint/scope-manager': 8.56.1 + '@typescript-eslint/types': 8.56.1 + '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.9.3) + eslint: 10.0.2 typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -3865,6 +4009,11 @@ snapshots: '@typescript-eslint/types': 8.56.0 eslint-visitor-keys: 5.0.1 + '@typescript-eslint/visitor-keys@8.56.1': + dependencies: + '@typescript-eslint/types': 8.56.1 + eslint-visitor-keys: 5.0.1 + '@videojs/http-streaming@3.17.4(video.js@8.23.7)': dependencies: '@babel/runtime': 7.28.6 @@ -3887,7 +4036,7 @@ snapshots: global: 4.4.0 is-function: 1.0.2 - '@vitejs/plugin-legacy@7.2.1(terser@5.46.0)(vite@7.3.1(@types/node@24.10.13)(terser@5.46.0)(yaml@2.8.2))': + '@vitejs/plugin-legacy@7.2.1(terser@5.46.0)(vite@7.3.1(@types/node@24.11.0)(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) @@ -3902,15 +4051,15 @@ snapshots: regenerator-runtime: 0.14.1 systemjs: 6.15.1 terser: 5.46.0 - vite: 7.3.1(@types/node@24.10.13)(terser@5.46.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@24.11.0)(terser@5.46.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@6.0.4(vite@7.3.1(@types/node@24.10.13)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3))': + '@vitejs/plugin-vue@6.0.4(vite@7.3.1(@types/node@24.11.0)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.29(typescript@5.9.3))': dependencies: '@rolldown/pluginutils': 1.0.0-rc.2 - vite: 7.3.1(@types/node@24.10.13)(terser@5.46.0)(yaml@2.8.2) - vue: 3.5.28(typescript@5.9.3) + vite: 7.3.1(@types/node@24.11.0)(terser@5.46.0)(yaml@2.8.2) + vue: 3.5.29(typescript@5.9.3) '@volar/language-core@2.4.28': dependencies: @@ -3924,7 +4073,7 @@ snapshots: path-browserify: 1.0.1 vscode-uri: 3.1.0 - '@vue-macros/common@3.1.2(vue@3.5.28(typescript@5.9.3))': + '@vue-macros/common@3.1.2(vue@3.5.29(typescript@5.9.3))': dependencies: '@vue/compiler-sfc': 3.5.28 ast-kit: 2.2.0 @@ -3932,7 +4081,7 @@ snapshots: magic-string-ast: 1.0.3 unplugin-utils: 0.3.1 optionalDependencies: - vue: 3.5.28(typescript@5.9.3) + vue: 3.5.29(typescript@5.9.3) '@vue/compiler-core@3.5.28': dependencies: @@ -3942,11 +4091,24 @@ snapshots: estree-walker: 2.0.2 source-map-js: 1.2.1 + '@vue/compiler-core@3.5.29': + dependencies: + '@babel/parser': 7.29.0 + '@vue/shared': 3.5.29 + 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.29': + dependencies: + '@vue/compiler-core': 3.5.29 + '@vue/shared': 3.5.29 + '@vue/compiler-sfc@3.5.28': dependencies: '@babel/parser': 7.29.0 @@ -3959,11 +4121,28 @@ snapshots: postcss: 8.5.6 source-map-js: 1.2.1 + '@vue/compiler-sfc@3.5.29': + dependencies: + '@babel/parser': 7.29.0 + '@vue/compiler-core': 3.5.29 + '@vue/compiler-dom': 3.5.29 + '@vue/compiler-ssr': 3.5.29 + '@vue/shared': 3.5.29 + estree-walker: 2.0.2 + magic-string: 0.30.21 + postcss: 8.5.6 + 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.29': + dependencies: + '@vue/compiler-dom': 3.5.29 + '@vue/shared': 3.5.29 + '@vue/devtools-api@6.6.4': {} '@vue/devtools-api@7.7.9': @@ -4002,23 +4181,23 @@ snapshots: dependencies: rfdc: 1.4.1 - '@vue/eslint-config-prettier@10.2.0(eslint@10.0.1)(prettier@3.8.1)': + '@vue/eslint-config-prettier@10.2.0(eslint@10.0.2)(prettier@3.8.1)': dependencies: - eslint: 10.0.1 - eslint-config-prettier: 10.1.8(eslint@10.0.1) - eslint-plugin-prettier: 5.5.5(eslint-config-prettier@10.1.8(eslint@10.0.1))(eslint@10.0.1)(prettier@3.8.1) + eslint: 10.0.2 + eslint-config-prettier: 10.1.8(eslint@10.0.2) + eslint-plugin-prettier: 5.5.5(eslint-config-prettier@10.1.8(eslint@10.0.2))(eslint@10.0.2)(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.1)(typescript@5.9.3))(eslint@10.0.1)(vue-eslint-parser@10.4.0(eslint@10.0.1)))(eslint@10.0.1)(typescript@5.9.3)': + '@vue/eslint-config-typescript@14.7.0(eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.2)(typescript@5.9.3))(eslint@10.0.2)(vue-eslint-parser@10.4.0(eslint@10.0.2)))(eslint@10.0.2)(typescript@5.9.3)': dependencies: - '@typescript-eslint/utils': 8.56.0(eslint@10.0.1)(typescript@5.9.3) - eslint: 10.0.1 - eslint-plugin-vue: 10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.1)(typescript@5.9.3))(eslint@10.0.1)(vue-eslint-parser@10.4.0(eslint@10.0.1)) + '@typescript-eslint/utils': 8.56.0(eslint@10.0.2)(typescript@5.9.3) + eslint: 10.0.2 + eslint-plugin-vue: 10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.2)(typescript@5.9.3))(eslint@10.0.2)(vue-eslint-parser@10.4.0(eslint@10.0.2)) fast-glob: 3.3.3 - typescript-eslint: 8.56.0(eslint@10.0.1)(typescript@5.9.3) - vue-eslint-parser: 10.4.0(eslint@10.0.1) + typescript-eslint: 8.56.0(eslint@10.0.2)(typescript@5.9.3) + vue-eslint-parser: 10.4.0(eslint@10.0.2) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: @@ -4034,56 +4213,58 @@ snapshots: path-browserify: 1.0.1 picomatch: 4.0.3 - '@vue/reactivity@3.5.28': + '@vue/reactivity@3.5.29': dependencies: - '@vue/shared': 3.5.28 + '@vue/shared': 3.5.29 - '@vue/runtime-core@3.5.28': + '@vue/runtime-core@3.5.29': dependencies: - '@vue/reactivity': 3.5.28 - '@vue/shared': 3.5.28 + '@vue/reactivity': 3.5.29 + '@vue/shared': 3.5.29 - '@vue/runtime-dom@3.5.28': + '@vue/runtime-dom@3.5.29': dependencies: - '@vue/reactivity': 3.5.28 - '@vue/runtime-core': 3.5.28 - '@vue/shared': 3.5.28 + '@vue/reactivity': 3.5.29 + '@vue/runtime-core': 3.5.29 + '@vue/shared': 3.5.29 csstype: 3.2.3 - '@vue/server-renderer@3.5.28(vue@3.5.28(typescript@5.9.3))': + '@vue/server-renderer@3.5.29(vue@3.5.29(typescript@5.9.3))': dependencies: - '@vue/compiler-ssr': 3.5.28 - '@vue/shared': 3.5.28 - vue: 3.5.28(typescript@5.9.3) + '@vue/compiler-ssr': 3.5.29 + '@vue/shared': 3.5.29 + vue: 3.5.29(typescript@5.9.3) '@vue/shared@3.5.28': {} - '@vue/tsconfig@0.8.1(typescript@5.9.3)(vue@3.5.28(typescript@5.9.3))': + '@vue/shared@3.5.29': {} + + '@vue/tsconfig@0.8.1(typescript@5.9.3)(vue@3.5.29(typescript@5.9.3))': optionalDependencies: typescript: 5.9.3 - vue: 3.5.28(typescript@5.9.3) + vue: 3.5.29(typescript@5.9.3) - '@vueuse/core@14.2.1(vue@3.5.28(typescript@5.9.3))': + '@vueuse/core@14.2.1(vue@3.5.29(typescript@5.9.3))': dependencies: '@types/web-bluetooth': 0.0.21 '@vueuse/metadata': 14.2.1 - '@vueuse/shared': 14.2.1(vue@3.5.28(typescript@5.9.3)) - vue: 3.5.28(typescript@5.9.3) + '@vueuse/shared': 14.2.1(vue@3.5.29(typescript@5.9.3)) + vue: 3.5.29(typescript@5.9.3) - '@vueuse/integrations@14.2.1(focus-trap@8.0.0)(jwt-decode@4.0.0)(vue@3.5.28(typescript@5.9.3))': + '@vueuse/integrations@14.2.1(focus-trap@8.0.0)(jwt-decode@4.0.0)(vue@3.5.29(typescript@5.9.3))': dependencies: - '@vueuse/core': 14.2.1(vue@3.5.28(typescript@5.9.3)) - '@vueuse/shared': 14.2.1(vue@3.5.28(typescript@5.9.3)) - vue: 3.5.28(typescript@5.9.3) + '@vueuse/core': 14.2.1(vue@3.5.29(typescript@5.9.3)) + '@vueuse/shared': 14.2.1(vue@3.5.29(typescript@5.9.3)) + vue: 3.5.29(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.28(typescript@5.9.3))': + '@vueuse/shared@14.2.1(vue@3.5.29(typescript@5.9.3))': dependencies: - vue: 3.5.28(typescript@5.9.3) + vue: 3.5.29(typescript@5.9.3) '@xmldom/xmldom@0.7.13': {} @@ -4125,10 +4306,10 @@ snapshots: '@babel/parser': 7.29.0 ast-kit: 2.2.0 - autoprefixer@10.4.24(postcss@8.5.6): + autoprefixer@10.4.27(postcss@8.5.6): dependencies: browserslist: 4.28.1 - caniuse-lite: 1.0.30001769 + caniuse-lite: 1.0.30001774 fraction.js: 5.3.4 picocolors: 1.1.1 postcss: 8.5.6 @@ -4168,7 +4349,7 @@ snapshots: balanced-match@1.0.2: {} - balanced-match@4.0.3: {} + balanced-match@4.0.4: {} baseline-browser-mapping@2.9.19: {} @@ -4180,9 +4361,9 @@ snapshots: dependencies: balanced-match: 1.0.2 - brace-expansion@5.0.2: + brace-expansion@5.0.4: dependencies: - balanced-match: 4.0.3 + balanced-match: 4.0.4 braces@3.0.3: dependencies: @@ -4205,6 +4386,8 @@ snapshots: caniuse-lite@1.0.30001769: {} + caniuse-lite@1.0.30001774: {} + chokidar@5.0.0: dependencies: readdirp: 5.0.0 @@ -4373,31 +4556,31 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-prettier@10.1.8(eslint@10.0.1): + eslint-config-prettier@10.1.8(eslint@10.0.2): dependencies: - eslint: 10.0.1 + eslint: 10.0.2 - eslint-plugin-prettier@5.5.5(eslint-config-prettier@10.1.8(eslint@10.0.1))(eslint@10.0.1)(prettier@3.8.1): + eslint-plugin-prettier@5.5.5(eslint-config-prettier@10.1.8(eslint@10.0.2))(eslint@10.0.2)(prettier@3.8.1): dependencies: - eslint: 10.0.1 + eslint: 10.0.2 prettier: 3.8.1 prettier-linter-helpers: 1.0.1 synckit: 0.11.12 optionalDependencies: - eslint-config-prettier: 10.1.8(eslint@10.0.1) + eslint-config-prettier: 10.1.8(eslint@10.0.2) - eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.1)(typescript@5.9.3))(eslint@10.0.1)(vue-eslint-parser@10.4.0(eslint@10.0.1)): + eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.2)(typescript@5.9.3))(eslint@10.0.2)(vue-eslint-parser@10.4.0(eslint@10.0.2)): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.1) - eslint: 10.0.1 + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.2) + eslint: 10.0.2 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.1) + vue-eslint-parser: 10.4.0(eslint@10.0.2) xml-name-validator: 4.0.0 optionalDependencies: - '@typescript-eslint/parser': 8.56.0(eslint@10.0.1)(typescript@5.9.3) + '@typescript-eslint/parser': 8.56.0(eslint@10.0.2)(typescript@5.9.3) eslint-scope@9.1.1: dependencies: @@ -4410,9 +4593,9 @@ snapshots: eslint-visitor-keys@5.0.1: {} - eslint@10.0.1: + eslint@10.0.2: dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.2) '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.23.2 '@eslint/config-helpers': 0.5.2 @@ -4439,7 +4622,7 @@ snapshots: imurmurhash: 0.1.4 is-glob: 4.0.3 json-stable-stringify-without-jsonify: 1.0.1 - minimatch: 10.2.2 + minimatch: 10.2.4 natural-compare: 1.4.0 optionator: 0.9.4 transitivePeerDependencies: @@ -4743,9 +4926,9 @@ snapshots: dependencies: dom-walk: 0.1.2 - minimatch@10.2.2: + minimatch@10.2.4: dependencies: - brace-expansion: 5.0.2 + brace-expansion: 5.0.4 minimatch@9.0.5: dependencies: @@ -4831,10 +5014,10 @@ snapshots: picomatch@4.0.3: {} - pinia@3.0.4(typescript@5.9.3)(vue@3.5.28(typescript@5.9.3)): + pinia@3.0.4(typescript@5.9.3)(vue@3.5.29(typescript@5.9.3)): dependencies: '@vue/devtools-api': 7.7.9 - vue: 3.5.28(typescript@5.9.3) + vue: 3.5.29(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 @@ -4889,9 +5072,9 @@ snapshots: punycode@2.3.1: {} - qrcode.vue@3.8.0(vue@3.5.28(typescript@5.9.3)): + qrcode.vue@3.8.0(vue@3.5.29(typescript@5.9.3)): dependencies: - vue: 3.5.28(typescript@5.9.3) + vue: 3.5.29(typescript@5.9.3) quansync@0.2.11: {} @@ -5069,13 +5252,13 @@ snapshots: type@2.7.3: {} - typescript-eslint@8.56.0(eslint@10.0.1)(typescript@5.9.3): + typescript-eslint@8.56.0(eslint@10.0.2)(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.0.1)(typescript@5.9.3))(eslint@10.0.1)(typescript@5.9.3) - '@typescript-eslint/parser': 8.56.0(eslint@10.0.1)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.0.2)(typescript@5.9.3))(eslint@10.0.2)(typescript@5.9.3) + '@typescript-eslint/parser': 8.56.0(eslint@10.0.2)(typescript@5.9.3) '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.56.0(eslint@10.0.1)(typescript@5.9.3) - eslint: 10.0.1 + '@typescript-eslint/utils': 8.56.0(eslint@10.0.2)(typescript@5.9.3) + eslint: 10.0.2 typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -5160,7 +5343,7 @@ snapshots: videojs-hotkeys@0.2.30: {} - videojs-mobile-ui@1.2.1(video.js@8.23.7): + videojs-mobile-ui@1.2.2(video.js@8.23.7): dependencies: global: 4.4.0 video.js: 8.23.7 @@ -5176,7 +5359,7 @@ snapshots: transitivePeerDependencies: - rollup - vite@7.3.1(@types/node@24.10.13)(terser@5.46.0)(yaml@2.8.2): + vite@7.3.1(@types/node@24.11.0)(terser@5.46.0)(yaml@2.8.2): dependencies: esbuild: 0.27.3 fdir: 6.5.0(picomatch@4.0.3) @@ -5185,17 +5368,17 @@ snapshots: rollup: 4.57.1 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.10.13 + '@types/node': 24.11.0 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.1): + vue-eslint-parser@10.4.0(eslint@10.0.2): dependencies: debug: 4.4.3 - eslint: 10.0.1 + eslint: 10.0.2 eslint-scope: 9.1.1 eslint-visitor-keys: 5.0.1 espree: 11.1.1 @@ -5204,12 +5387,12 @@ snapshots: transitivePeerDependencies: - supports-color - vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)): + vue-i18n@11.2.8(vue@3.5.29(typescript@5.9.3)): dependencies: '@intlify/core-base': 11.2.8 '@intlify/shared': 11.2.8 '@vue/devtools-api': 6.6.4 - vue: 3.5.28(typescript@5.9.3) + vue: 3.5.29(typescript@5.9.3) vue-lazyload@3.0.0: {} @@ -5217,10 +5400,10 @@ snapshots: dependencies: epubjs: 0.3.93 - vue-router@5.0.3(@vue/compiler-sfc@3.5.28)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3)): + vue-router@5.0.3(@vue/compiler-sfc@3.5.29)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.29(typescript@5.9.3)))(vue@3.5.29(typescript@5.9.3)): dependencies: '@babel/generator': 7.29.1 - '@vue-macros/common': 3.1.2(vue@3.5.28(typescript@5.9.3)) + '@vue-macros/common': 3.1.2(vue@3.5.29(typescript@5.9.3)) '@vue/devtools-api': 8.0.6 ast-walker-scope: 0.8.3 chokidar: 5.0.0 @@ -5235,15 +5418,15 @@ snapshots: tinyglobby: 0.2.15 unplugin: 3.0.0 unplugin-utils: 0.3.1 - vue: 3.5.28(typescript@5.9.3) + vue: 3.5.29(typescript@5.9.3) yaml: 2.8.2 optionalDependencies: - '@vue/compiler-sfc': 3.5.28 - pinia: 3.0.4(typescript@5.9.3)(vue@3.5.28(typescript@5.9.3)) + '@vue/compiler-sfc': 3.5.29 + pinia: 3.0.4(typescript@5.9.3)(vue@3.5.29(typescript@5.9.3)) - vue-toastification@2.0.0-rc.5(vue@3.5.28(typescript@5.9.3)): + vue-toastification@2.0.0-rc.5(vue@3.5.29(typescript@5.9.3)): dependencies: - vue: 3.5.28(typescript@5.9.3) + vue: 3.5.29(typescript@5.9.3) vue-tsc@3.2.5(typescript@5.9.3): dependencies: @@ -5251,13 +5434,13 @@ snapshots: '@vue/language-core': 3.2.5 typescript: 5.9.3 - vue@3.5.28(typescript@5.9.3): + vue@3.5.29(typescript@5.9.3): dependencies: - '@vue/compiler-dom': 3.5.28 - '@vue/compiler-sfc': 3.5.28 - '@vue/runtime-dom': 3.5.28 - '@vue/server-renderer': 3.5.28(vue@3.5.28(typescript@5.9.3)) - '@vue/shared': 3.5.28 + '@vue/compiler-dom': 3.5.29 + '@vue/compiler-sfc': 3.5.29 + '@vue/runtime-dom': 3.5.29 + '@vue/server-renderer': 3.5.29(vue@3.5.29(typescript@5.9.3)) + '@vue/shared': 3.5.29 optionalDependencies: typescript: 5.9.3 diff --git a/go.mod b/go.mod index 13fb76c920..baa22c355e 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.25 require ( github.com/asdine/storm/v3 v3.2.1 - github.com/asticode/go-astisub v0.38.0 + github.com/asticode/go-astisub v0.39.0 github.com/disintegration/imaging v1.6.2 github.com/dsoprea/go-exif/v3 v3.0.1 github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568 diff --git a/go.sum b/go.sum index 8a83f6ec41..356177314f 100644 --- a/go.sum +++ b/go.sum @@ -31,8 +31,8 @@ github.com/asticode/go-astikit v0.20.0/go.mod h1:h4ly7idim1tNhaVkdVBeXQZEE3L0xbl github.com/asticode/go-astikit v0.30.0/go.mod h1:h4ly7idim1tNhaVkdVBeXQZEE3L0xblP7fCWbgwipF0= github.com/asticode/go-astikit v0.56.0 h1:DmD2p7YnvxiPdF0h+dRmos3bsejNEXbycENsY5JfBqw= github.com/asticode/go-astikit v0.56.0/go.mod h1:fV43j20UZYfXzP9oBn33udkvCvDvCDhzjVqoLFuuYZE= -github.com/asticode/go-astisub v0.38.0 h1:Qh3IO8Cotn0wwok5maid7xqsIJTwn2DtABT1UajKJaI= -github.com/asticode/go-astisub v0.38.0/go.mod h1:WTkuSzFB+Bp7wezuSf2Oxulj5A8zu2zLRVFf6bIFQK8= +github.com/asticode/go-astisub v0.39.0 h1:j1/rFLRUH0TT2CW9YCtBek9lRdMp96oxaZm6vbgE96M= +github.com/asticode/go-astisub v0.39.0/go.mod h1:WTkuSzFB+Bp7wezuSf2Oxulj5A8zu2zLRVFf6bIFQK8= github.com/asticode/go-astits v1.8.0/go.mod h1:DkOWmBNQpnr9mv24KfZjq4JawCFX1FCqjLVGvO0DygQ= github.com/asticode/go-astits v1.13.0 h1:XOgkaadfZODnyZRR5Y0/DWkA9vrkLLPLeeOvDwfKZ1c= github.com/asticode/go-astits v1.13.0/go.mod h1:QSHmknZ51pf6KJdHKZHJTLlMegIrhega3LPWz3ND/iI= From 148b3c59422401ff00f255ae3044282d7a42192b Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 28 Feb 2026 10:54:35 +0100 Subject: [PATCH 058/126] chore(release): 2.61.0 --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6a55edba6c..27de0fe03e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,18 @@ All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines. +## [2.61.0](https://github.com/filebrowser/filebrowser/compare/v2.60.0...v2.61.0) (2026-02-28) + + +### Features + +* improved conflict resolution when uploading/copying/moving files ([#5765](https://github.com/filebrowser/filebrowser/issues/5765)) ([aa80909](https://github.com/filebrowser/filebrowser/commit/aa809096eb35fdfbdeb6784b1ebfe2ca1e42f52b)) + + +### Bug Fixes + +* correctly clean path ([31194fb](https://github.com/filebrowser/filebrowser/commit/31194fb57a5b92e7155219d7ec7273028fcb2e83)) + ## [2.60.0](https://github.com/filebrowser/filebrowser/compare/v2.59.0...v2.60.0) (2026-02-21) From 7ed1425115be602c2b23236c410098ea2d74b42f Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Wed, 4 Mar 2026 10:04:22 +0100 Subject: [PATCH 059/126] fix: check for correct permission in TUS Delete --- http/tus_handlers.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/http/tus_handlers.go b/http/tus_handlers.go index b659d47965..68931f5d4f 100644 --- a/http/tus_handlers.go +++ b/http/tus_handlers.go @@ -240,7 +240,7 @@ func tusPatchHandler(cache UploadCache) handleFunc { func tusDeleteHandler(cache UploadCache) handleFunc { return withUser(func(_ http.ResponseWriter, r *http.Request, d *data) (int, error) { - if r.URL.Path == "/" || !d.user.Perm.Create { + if r.URL.Path == "/" || !d.user.Perm.Delete { return http.StatusForbidden, nil } From c950a57df8a513029edb6954e8845b9fc0134b62 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Wed, 4 Mar 2026 10:04:51 +0100 Subject: [PATCH 060/126] chore(release): 2.61.1 --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 27de0fe03e..8b5c2f27bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines. +## [2.61.1](https://github.com/filebrowser/filebrowser/compare/v2.61.0...v2.61.1) (2026-03-04) + + +### Bug Fixes + +* check for correct permission in TUS Delete ([7ed1425](https://github.com/filebrowser/filebrowser/commit/7ed1425115be602c2b23236c410098ea2d74b42f)) + ## [2.61.0](https://github.com/filebrowser/filebrowser/compare/v2.60.0...v2.61.0) (2026-02-28) From 4af3f85e64e795e8ae1d87d4caee8185028294ac Mon Sep 17 00:00:00 2001 From: Ariel Leyva Date: Fri, 6 Mar 2026 09:26:13 -0500 Subject: [PATCH 061/126] fix(csv-viewer): add support for missing text encodings in dropdown list (#5795) --- frontend/src/components/DropdownModal.vue | 142 ++++++++++++++++ frontend/src/components/files/CsvViewer.vue | 107 ++++++++++-- frontend/src/types/global.d.ts | 4 + frontend/src/utils/encodings.ts | 173 ++++++++++++++++++++ frontend/src/utils/index.ts | 22 +++ frontend/src/views/files/Preview.vue | 6 +- http/resource.go | 2 +- 7 files changed, 439 insertions(+), 17 deletions(-) create mode 100644 frontend/src/components/DropdownModal.vue diff --git a/frontend/src/components/DropdownModal.vue b/frontend/src/components/DropdownModal.vue new file mode 100644 index 0000000000..66780120a9 --- /dev/null +++ b/frontend/src/components/DropdownModal.vue @@ -0,0 +1,142 @@ + + + + + + + diff --git a/frontend/src/components/files/CsvViewer.vue b/frontend/src/components/files/CsvViewer.vue index 38c2de5922..9e1904afd8 100644 --- a/frontend/src/components/files/CsvViewer.vue +++ b/frontend/src/components/files/CsvViewer.vue @@ -21,19 +21,37 @@
- +
+ {{ selectedEncoding }} +
+ +
@@ -74,10 +92,11 @@ diff --git a/frontend/src/types/global.d.ts b/frontend/src/types/global.d.ts index 5475c908fd..287388f0ec 100644 --- a/frontend/src/types/global.d.ts +++ b/frontend/src/types/global.d.ts @@ -10,4 +10,8 @@ declare global { // TODO: no idea what the exact type is __vue__: any; } + + interface HTMLElement { + clickOutsideEvent?: (event: Event) => void; + } } diff --git a/frontend/src/utils/encodings.ts b/frontend/src/utils/encodings.ts index 80f1e21975..9be1017a4e 100644 --- a/frontend/src/utils/encodings.ts +++ b/frontend/src/utils/encodings.ts @@ -1,4 +1,5 @@ export const availableEncodings = [ + // encodings "utf-8", "ibm866", "iso-8859-2", @@ -37,6 +38,178 @@ export const availableEncodings = [ "euc-kr", "utf-16be", "utf-16le", + // label encodings + "unicode-1-1-utf-8", + "utf8", + "866", + "cp866", + "csibm866", + "csisolatin2", + "iso-ir-101", + "iso8859-2", + "iso88592", + "iso_8859-2", + "iso_8859-2:1987", + "l2", + "latin2", + "csisolatin3", + "iso-ir-109", + "iso8859-3", + "iso88593", + "iso_8859-3", + "iso_8859-3:1988", + "l3", + "latin3", + "csisolatin4", + "iso-ir-110", + "iso8859-4", + "iso88594", + "iso_8859-4", + "iso_8859-4:1988", + "l4", + "latin4", + "csisolatincyrillic", + "cyrillic", + "iso-ir-144", + "iso88595", + "iso_8859-5", + "iso_8859-5:1988", + "arabic", + "asmo-708", + "csiso88596e", + "csiso88596i", + "csisolatinarabic", + "ecma-114", + "iso-8859-6-e", + "iso-8859-6-i", + "iso-ir-127", + "iso8859-6", + "iso88596", + "iso_8859-6", + "iso_8859-6:1987", + "csisolatingreek", + "ecma-118", + "elot_928", + "greek", + "greek8", + "iso-ir-126", + "iso8859-7", + "iso88597", + "iso_8859-7", + "iso_8859-7:1987", + "sun_eu_greek", + "csiso88598e", + "csisolatinhebrew", + "hebrew", + "iso-8859-8-e", + "iso-ir-138", + "iso8859-8", + "iso88598", + "iso_8859-8", + "iso_8859-8:1988", + "visual", + "csiso88598i", + "logical", + "csisolatin6", + "iso-ir-157", + "iso8859-10", + "iso885910", + "l6", + "latin6", + "iso8859-13", + "iso885913", + "iso8859-14", + "iso885914", + "csisolatin9", + "iso8859-15", + "iso885915", + "l9", + "latin9", + "cskoi8r", + "koi", + "koi8", + "koi8_r", + "csmacintosh", + "mac", + "x-mac-roman", + "dos-874", + "iso-8859-11", + "iso8859-11", + "iso885911", + "tis-620", + "cp1250", + "x-cp1250", + "cp1251", + "x-cp1251", + "ansi_x3.4-1968", + "ascii", + "cp1252", + "cp819", + "csisolatin1", + "ibm819", + "iso-8859-1", + "iso-ir-100", + "iso8859-1", + "iso88591", + "iso_8859-1", + "iso_8859-1:1987", + "l1", + "latin1", + "us-ascii", + "x-cp1252", + "cp1253", + "x-cp1253", + "cp1254", + "csisolatin5", + "iso-8859-9", + "iso-ir-148", + "iso8859-9", + "iso88599", + "iso_8859-9", + "iso_8859-9:1989", + "l5", + "latin5", + "x-cp1254", + "cp1255", + "x-cp1255", + "cp1256", + "x-cp1256", + "cp1257", + "x-cp1257", + "cp1258", + "x-cp1258", + "x-mac-ukrainian", + "chinese", + "csgb2312", + "csiso58gb231280", + "gb2312", + "gb_2312", + "gb_2312-80", + "iso-ir-58", + "x-gbk", + "big5-hkscs", + "cn-big5", + "csbig5", + "x-x-big5", + "cseucpkdfmtjapanese", + "x-euc-jp", + "csiso2022jp", + "csshiftjis", + "ms_kanji", + "shift-jis", + "sjis", + "windows-31j", + "x-sjis", + "cseuckr", + "csksc56011987", + "iso-ir-149", + "korean", + "ks_c_5601-1987", + "ks_c_5601-1989", + "ksc5601", + "ksc_5601", + "windows-949", + "utf-16", ]; export function decode(content: ArrayBuffer, encoding: string): string { diff --git a/frontend/src/utils/index.ts b/frontend/src/utils/index.ts index d7f0bd9b7f..faca153923 100644 --- a/frontend/src/utils/index.ts +++ b/frontend/src/utils/index.ts @@ -4,3 +4,25 @@ import { partial } from "filesize"; * Formats filesize as KiB/MiB/... */ export const filesize = partial({ base: 2 }); + +export const vClickOutside = { + created(el: HTMLElement, binding: any) { + el.clickOutsideEvent = (event: Event) => { + const target = event.target; + + if (target instanceof Node) { + if (!el.contains(target)) { + binding.value(event); + } + } + }; + + document.addEventListener("click", el.clickOutsideEvent); + }, + + unmounted(el: HTMLElement) { + if (el.clickOutsideEvent) { + document.removeEventListener("click", el.clickOutsideEvent); + } + }, +}; diff --git a/frontend/src/views/files/Preview.vue b/frontend/src/views/files/Preview.vue index 9a67de2d7c..2a60e7df30 100644 --- a/frontend/src/views/files/Preview.vue +++ b/frontend/src/views/files/Preview.vue @@ -311,7 +311,11 @@ const isPdf = computed(() => fileStore.req?.extension.toLowerCase() == ".pdf"); const isEpub = computed( () => fileStore.req?.extension.toLowerCase() == ".epub" ); -const isCsv = computed(() => fileStore.req?.extension.toLowerCase() == ".csv"); +const isCsv = computed( + () => + fileStore.req?.extension.toLowerCase() == ".csv" && + fileStore.req.size <= CSV_MAX_SIZE +); const isResizeEnabled = computed(() => resizePreview); diff --git a/http/resource.go b/http/resource.go index 7066f35a63..f528473d95 100644 --- a/http/resource.go +++ b/http/resource.go @@ -43,7 +43,7 @@ var resourceGetHandler = withUser(func(w http.ResponseWriter, r *http.Request, d return renderJSON(w, r, file) } else if encoding == "true" { if file.Type != "text" { - return http.StatusUnsupportedMediaType, fmt.Errorf("file is not a text file") + return renderJSON(w, r, file) } f, err := d.user.Fs.Open(r.URL.Path) From 177c7cfcce36779e2c5ebaa4b59a055dd1e17648 Mon Sep 17 00:00:00 2001 From: Ariel Leyva Date: Fri, 6 Mar 2026 09:26:41 -0500 Subject: [PATCH 062/126] fix: validate current password with a modal (#5805) --- .../components/prompts/CurrentPassword.vue | 58 +++++++++++++++++ frontend/src/components/prompts/Prompts.vue | 2 + frontend/src/i18n/en.json | 4 +- frontend/src/views/settings/User.vue | 63 ++++++++++++------- 4 files changed, 102 insertions(+), 25 deletions(-) create mode 100644 frontend/src/components/prompts/CurrentPassword.vue diff --git a/frontend/src/components/prompts/CurrentPassword.vue b/frontend/src/components/prompts/CurrentPassword.vue new file mode 100644 index 0000000000..c97485f26a --- /dev/null +++ b/frontend/src/components/prompts/CurrentPassword.vue @@ -0,0 +1,58 @@ + + + diff --git a/frontend/src/components/prompts/Prompts.vue b/frontend/src/components/prompts/Prompts.vue index 791d3ca910..968e22f593 100644 --- a/frontend/src/components/prompts/Prompts.vue +++ b/frontend/src/components/prompts/Prompts.vue @@ -28,6 +28,7 @@ import ShareDelete from "./ShareDelete.vue"; import Upload from "./Upload.vue"; import DiscardEditorChanges from "./DiscardEditorChanges.vue"; import ResolveConflict from "./ResolveConflict.vue"; +import CurrentPassword from "./CurrentPassword.vue"; const layoutStore = useLayoutStore(); @@ -50,6 +51,7 @@ const components = new Map([ ["deleteUser", DeleteUser], ["discardEditorChanges", DiscardEditorChanges], ["resolve-conflict", ResolveConflict], + ["current-password", CurrentPassword], ]); const modal = computed(() => { diff --git a/frontend/src/i18n/en.json b/frontend/src/i18n/en.json index 77d74d9f3f..dcbedcef2e 100644 --- a/frontend/src/i18n/en.json +++ b/frontend/src/i18n/en.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Images", diff --git a/frontend/src/views/settings/User.vue b/frontend/src/views/settings/User.vue index 77786e2a99..b726d9ef0e 100644 --- a/frontend/src/views/settings/User.vue +++ b/frontend/src/views/settings/User.vue @@ -15,19 +15,6 @@ :isDefault="false" :isNew="isNew" /> - -

- - -

@@ -77,7 +64,6 @@ const error = ref(); const originalUser = ref(); const user = ref(); const createUserDir = ref(false); -const currentPassword = ref(""); const isCurrentPasswordRequired = ref(false); const $showError = inject("$showError")!; @@ -134,16 +120,30 @@ const fetchData = async () => { } }; -const deletePrompt = () => - layoutStore.showHover({ prompt: "deleteUser", confirm: deleteUser }); +const deletePrompt = () => { + if (isCurrentPasswordRequired.value) { + layoutStore.showHover({ + prompt: "current-password", + confirm: (event: Event, currentPassword: string) => { + event.preventDefault(); + layoutStore.closeHovers(); + deleteUser(currentPassword); + }, + }); + } else { + layoutStore.showHover({ + prompt: "deleteUser", + confirm: () => deleteUser(""), + }); + } +}; -const deleteUser = async (e: Event) => { - e.preventDefault(); +const deleteUser = async (currentPassword: string) => { if (!user.value) { return false; } try { - await api.remove(user.value.id, currentPassword.value); + await api.remove(user.value.id, currentPassword); router.push({ path: "/settings/users" }); $showSuccess(t("settings.userDeleted")); } catch (err) { @@ -157,8 +157,25 @@ const deleteUser = async (e: Event) => { return true; }; -const save = async (event: Event) => { +const save = (event: Event) => { event.preventDefault(); + if (isCurrentPasswordRequired.value) { + layoutStore.showHover({ + prompt: "current-password", + confirm: (event: Event, currentPassword: string) => { + event.preventDefault(); + layoutStore.closeHovers(); + send(currentPassword); + }, + }); + } else { + send(""); + } + + return true; +}; + +const send = async (currentPassword: string) => { if (!user.value) { return false; } @@ -170,11 +187,11 @@ const save = async (event: Event) => { ...user.value, }; - const loc = await api.create(newUser, currentPassword.value); + const loc = await api.create(newUser, currentPassword); router.push({ path: loc || "/settings/users" }); $showSuccess(t("settings.userCreated")); } else { - await api.update(user.value, ["all"], currentPassword.value); + await api.update(user.value, ["all"], currentPassword); if (user.value.id === authStore.user?.id) { authStore.updateUser(user.value); @@ -185,7 +202,5 @@ const save = async (event: Event) => { } catch (e: any) { $showError(e); } - - return true; }; From d7b00ce5f672b7ce0b26ce31abdfc74f8b00b939 Mon Sep 17 00:00:00 2001 From: Ariel Leyva Date: Fri, 6 Mar 2026 09:26:54 -0500 Subject: [PATCH 063/126] fix: avoid sending the same name in the file/folder rename modal (#5806) --- frontend/src/components/prompts/Rename.vue | 24 +++++++++++++--------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/frontend/src/components/prompts/Rename.vue b/frontend/src/components/prompts/Rename.vue index f18ed7a089..4e1bb095bc 100644 --- a/frontend/src/components/prompts/Rename.vue +++ b/frontend/src/components/prompts/Rename.vue @@ -6,7 +6,7 @@

- {{ $t("prompts.renameMessage") }} {{ oldName() }}{{ oldName }}:

{{ $t("buttons.rename") }} @@ -56,7 +57,7 @@ export default { }; }, created() { - this.name = this.oldName(); + this.name = this.oldName; }, inject: ["$showError"], computed: { @@ -67,25 +68,28 @@ export default { "isListing", ]), ...mapWritableState(useFileStore, ["reload", "preselect"]), - }, - methods: { - ...mapActions(useLayoutStore, ["closeHovers"]), - cancel: function () { - this.closeHovers(); - }, - oldName: function () { + oldName() { if (!this.isListing) { return this.req.name; } if (this.selectedCount === 0 || this.selectedCount > 1) { // This shouldn't happen. - return; + return ""; } return this.req.items[this.selected[0]].name; }, + }, + methods: { + ...mapActions(useLayoutStore, ["closeHovers"]), + cancel: function () { + this.closeHovers(); + }, submit: async function () { + if (this.name === "" || this.name === this.oldName) { + return; + } let oldLink = ""; let newLink = ""; From 9f56826fb2dc03fba5073d633704f3cd708907ee Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 6 Mar 2026 15:27:14 +0100 Subject: [PATCH 064/126] chore(deps): update all non-major dependencies (#5794) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- frontend/package.json | 2 +- frontend/pnpm-lock.yaml | 87 +++++++++++++++++++++-------------------- go.mod | 6 +-- go.sum | 12 +++--- 4 files changed, 54 insertions(+), 53 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 6f12769a7d..6e5796baed 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -58,7 +58,7 @@ "@vitejs/plugin-vue": "^6.0.1", "@vue/eslint-config-prettier": "^10.2.0", "@vue/eslint-config-typescript": "^14.6.0", - "@vue/tsconfig": "^0.8.1", + "@vue/tsconfig": "^0.9.0", "autoprefixer": "^10.4.21", "eslint": "^10.0.0", "eslint-config-prettier": "^10.1.5", diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 8107bb98a8..bbdee7df01 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -28,7 +28,7 @@ importers: version: 1.11.19 dompurify: specifier: ^3.2.6 - version: 3.3.1 + version: 3.3.2 epubjs: specifier: ^0.3.93 version: 0.3.93 @@ -46,10 +46,10 @@ importers: version: 4.17.23 marked: specifier: ^17.0.0 - version: 17.0.3 + version: 17.0.4 marked-katex-extension: specifier: ^5.1.6 - version: 5.1.7(katex@0.16.28)(marked@17.0.3) + version: 5.1.7(katex@0.16.28)(marked@17.0.4) material-icons: specifier: ^1.13.14 version: 1.13.14 @@ -110,16 +110,16 @@ importers: version: 4.17.12 '@types/node': specifier: ^24.10.1 - version: 24.11.0 + version: 24.12.0 '@typescript-eslint/eslint-plugin': specifier: ^8.37.0 version: 8.56.1(@typescript-eslint/parser@8.56.0(eslint@10.0.2)(typescript@5.9.3))(eslint@10.0.2)(typescript@5.9.3) '@vitejs/plugin-legacy': specifier: ^7.2.1 - version: 7.2.1(terser@5.46.0)(vite@7.3.1(@types/node@24.11.0)(terser@5.46.0)(yaml@2.8.2)) + version: 7.2.1(terser@5.46.0)(vite@7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2)) '@vitejs/plugin-vue': specifier: ^6.0.1 - version: 6.0.4(vite@7.3.1(@types/node@24.11.0)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.29(typescript@5.9.3)) + version: 6.0.4(vite@7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.29(typescript@5.9.3)) '@vue/eslint-config-prettier': specifier: ^10.2.0 version: 10.2.0(eslint@10.0.2)(prettier@3.8.1) @@ -127,11 +127,11 @@ importers: specifier: ^14.6.0 version: 14.7.0(eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.2)(typescript@5.9.3))(eslint@10.0.2)(vue-eslint-parser@10.4.0(eslint@10.0.2)))(eslint@10.0.2)(typescript@5.9.3) '@vue/tsconfig': - specifier: ^0.8.1 - version: 0.8.1(typescript@5.9.3)(vue@3.5.29(typescript@5.9.3)) + specifier: ^0.9.0 + version: 0.9.0(typescript@5.9.3)(vue@3.5.29(typescript@5.9.3)) autoprefixer: specifier: ^10.4.21 - version: 10.4.27(postcss@8.5.6) + version: 10.4.27(postcss@8.5.8) eslint: specifier: ^10.0.0 version: 10.0.2 @@ -146,7 +146,7 @@ importers: version: 10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.2)(typescript@5.9.3))(eslint@10.0.2)(vue-eslint-parser@10.4.0(eslint@10.0.2)) postcss: specifier: ^8.5.6 - version: 8.5.6 + version: 8.5.8 prettier: specifier: ^3.6.2 version: 3.8.1 @@ -158,10 +158,10 @@ importers: version: 5.9.3 vite: specifier: ^7.2.2 - version: 7.3.1(@types/node@24.11.0)(terser@5.46.0)(yaml@2.8.2) + version: 7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2) vite-plugin-compression2: specifier: ^2.3.1 - version: 2.4.0(rollup@4.57.1) + version: 2.5.0(rollup@4.57.1) vue-tsc: specifier: ^3.1.3 version: 3.2.5(typescript@5.9.3) @@ -1288,8 +1288,8 @@ packages: '@types/lodash@4.17.23': resolution: {integrity: sha512-RDvF6wTulMPjrNdCoYRC8gNR880JNGT8uB+REUpC2Ns4pRqQJhGz90wh7rgdXDPpCczF3VGktDuFGVnz8zP7HA==} - '@types/node@24.11.0': - resolution: {integrity: sha512-fPxQqz4VTgPI/IQ+lj9r0h+fDR66bzoeMGHp8ASee+32OSGIkeASsoZuJixsQoVef1QJbeubcPBxKk22QVoWdw==} + '@types/node@24.12.0': + resolution: {integrity: sha512-GYDxsZi3ChgmckRT9HPU0WEhKLP08ev/Yfcq2AstjrDASOYCSXeyjDsHg4v5t4jOj7cyDX3vmprafKlWIG9MXQ==} '@types/trusted-types@2.0.7': resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} @@ -1538,8 +1538,8 @@ packages: '@vue/shared@3.5.29': resolution: {integrity: sha512-w7SR0A5zyRByL9XUkCfdLs7t9XOHUyJ67qPGQjOou3p6GvBeBW+AVjUUmlxtZ4PIYaRvE+1LmK44O4uajlZwcg==} - '@vue/tsconfig@0.8.1': - resolution: {integrity: sha512-aK7feIWPXFSUhsCP9PFqPyFOcz4ENkb8hZ2pneL6m2UjCkccvaOhC/5KCKluuBufvp2KzkbdA2W2pk20vLzu3g==} + '@vue/tsconfig@0.9.0': + resolution: {integrity: sha512-RP+v9Cpbsk1ZVXltCHHkYBr7+624x6gcijJXVjIcsYk7JXqvIpRtMwU2ARLvWDhmy9ffdFYxhsfJnPztADBohQ==} peerDependencies: typescript: 5.x vue: ^3.4.0 @@ -1800,8 +1800,9 @@ packages: dom-walk@0.1.2: resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==} - dompurify@3.3.1: - resolution: {integrity: sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==} + dompurify@3.3.2: + resolution: {integrity: sha512-6obghkliLdmKa56xdbLOpUZ43pAR6xFy1uOrxBaIDjT+yaRuuybLjGS9eVBoSR/UPU5fq3OXClEHLJNGvbxKpQ==} + engines: {node: '>=20'} electron-to-chromium@1.5.286: resolution: {integrity: sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==} @@ -2205,8 +2206,8 @@ packages: katex: '>=0.16 <0.17' marked: '>=4 <18' - marked@17.0.3: - resolution: {integrity: sha512-jt1v2ObpyOKR8p4XaUJVk3YWRJ5n+i4+rjQopxvV32rSndTJXvIzuUdWWIy/1pFQMkQmvTXawzDNqOH/CUmx6A==} + marked@17.0.4: + resolution: {integrity: sha512-NOmVMM+KAokHMvjWmC5N/ZOvgmSWuqJB8FoYI019j4ogb/PeRMKoKIjReZ2w3376kkA8dSJIP8uD993Kxc0iRQ==} engines: {node: '>= 20'} hasBin: true @@ -2358,8 +2359,8 @@ packages: postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@8.5.6: - resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + postcss@8.5.8: + resolution: {integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==} engines: {node: ^10 || ^12 || >=14} prelude-ls@1.2.1: @@ -2648,8 +2649,8 @@ packages: videojs-vtt.js@0.15.5: resolution: {integrity: sha512-yZbBxvA7QMYn15Lr/ZfhhLPrNpI/RmCSCqgIff57GC2gIrV5YfyzLfLyZMj0NnZSAz8syB4N0nHXpZg9MyrMOQ==} - vite-plugin-compression2@2.4.0: - resolution: {integrity: sha512-8J4CBF1+dM1I06azba/eXJuJHinLF0Am7lUvRH8AZpu0otJoBaDEnxrIEr5iPZJSwH0AEglJGYCveh7pN52jCg==} + vite-plugin-compression2@2.5.0: + resolution: {integrity: sha512-bHxtBibPxxSn5eZSe0IAzvYucP/hg8Bz8ppjbH7lndU5kIHT+92qTkB4z9xWYfnyV0YHuir1SjOuyO0fzU4Vgg==} vite@7.3.1: resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} @@ -3835,7 +3836,7 @@ snapshots: '@types/lodash@4.17.23': {} - '@types/node@24.11.0': + '@types/node@24.12.0': dependencies: undici-types: 7.16.0 @@ -4036,7 +4037,7 @@ snapshots: global: 4.4.0 is-function: 1.0.2 - '@vitejs/plugin-legacy@7.2.1(terser@5.46.0)(vite@7.3.1(@types/node@24.11.0)(terser@5.46.0)(yaml@2.8.2))': + '@vitejs/plugin-legacy@7.2.1(terser@5.46.0)(vite@7.3.1(@types/node@24.12.0)(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) @@ -4051,14 +4052,14 @@ snapshots: regenerator-runtime: 0.14.1 systemjs: 6.15.1 terser: 5.46.0 - vite: 7.3.1(@types/node@24.11.0)(terser@5.46.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@6.0.4(vite@7.3.1(@types/node@24.11.0)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.29(typescript@5.9.3))': + '@vitejs/plugin-vue@6.0.4(vite@7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.29(typescript@5.9.3))': dependencies: '@rolldown/pluginutils': 1.0.0-rc.2 - vite: 7.3.1(@types/node@24.11.0)(terser@5.46.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2) vue: 3.5.29(typescript@5.9.3) '@volar/language-core@2.4.28': @@ -4118,7 +4119,7 @@ snapshots: '@vue/shared': 3.5.28 estree-walker: 2.0.2 magic-string: 0.30.21 - postcss: 8.5.6 + postcss: 8.5.8 source-map-js: 1.2.1 '@vue/compiler-sfc@3.5.29': @@ -4130,7 +4131,7 @@ snapshots: '@vue/shared': 3.5.29 estree-walker: 2.0.2 magic-string: 0.30.21 - postcss: 8.5.6 + postcss: 8.5.8 source-map-js: 1.2.1 '@vue/compiler-ssr@3.5.28': @@ -4239,7 +4240,7 @@ snapshots: '@vue/shared@3.5.29': {} - '@vue/tsconfig@0.8.1(typescript@5.9.3)(vue@3.5.29(typescript@5.9.3))': + '@vue/tsconfig@0.9.0(typescript@5.9.3)(vue@3.5.29(typescript@5.9.3))': optionalDependencies: typescript: 5.9.3 vue: 3.5.29(typescript@5.9.3) @@ -4306,13 +4307,13 @@ snapshots: '@babel/parser': 7.29.0 ast-kit: 2.2.0 - autoprefixer@10.4.27(postcss@8.5.6): + 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.6 + postcss: 8.5.8 postcss-value-parser: 4.2.0 babel-plugin-polyfill-corejs2@0.4.15(@babel/core@7.29.0): @@ -4448,7 +4449,7 @@ snapshots: dom-walk@0.1.2: {} - dompurify@3.3.1: + dompurify@3.3.2: optionalDependencies: '@types/trusted-types': 2.0.7 @@ -4902,12 +4903,12 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 - marked-katex-extension@5.1.7(katex@0.16.28)(marked@17.0.3): + marked-katex-extension@5.1.7(katex@0.16.28)(marked@17.0.4): dependencies: katex: 0.16.28 - marked: 17.0.3 + marked: 17.0.4 - marked@17.0.3: {} + marked@17.0.4: {} marks-pane@1.0.9: {} @@ -5044,7 +5045,7 @@ snapshots: postcss-value-parser@4.2.0: {} - postcss@8.5.6: + postcss@8.5.8: dependencies: nanoid: 3.3.11 picocolors: 1.1.1 @@ -5352,23 +5353,23 @@ snapshots: dependencies: global: 4.4.0 - vite-plugin-compression2@2.4.0(rollup@4.57.1): + vite-plugin-compression2@2.5.0(rollup@4.57.1): dependencies: '@rollup/pluginutils': 5.3.0(rollup@4.57.1) tar-mini: 0.2.0 transitivePeerDependencies: - rollup - vite@7.3.1(@types/node@24.11.0)(terser@5.46.0)(yaml@2.8.2): + vite@7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2): dependencies: esbuild: 0.27.3 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 - postcss: 8.5.6 + postcss: 8.5.8 rollup: 4.57.1 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.11.0 + '@types/node': 24.12.0 fsevents: 2.3.3 terser: 5.46.0 yaml: 2.8.2 diff --git a/go.mod b/go.mod index baa22c355e..cf34bdf122 100644 --- a/go.mod +++ b/go.mod @@ -17,8 +17,8 @@ require ( github.com/mholt/archives v0.1.5 github.com/mitchellh/go-homedir v1.1.0 github.com/redis/go-redis/v9 v9.18.0 - github.com/samber/lo v1.52.0 - github.com/shirou/gopsutil/v4 v4.26.1 + github.com/samber/lo v1.53.0 + github.com/shirou/gopsutil/v4 v4.26.2 github.com/spf13/afero v1.15.0 github.com/spf13/cobra v1.10.2 github.com/spf13/pflag v1.0.10 @@ -47,7 +47,7 @@ require ( github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707 // indirect github.com/dsoprea/go-logging v0.0.0-20200710184922-b02d349568dd // indirect github.com/dsoprea/go-utility/v2 v2.0.0-20221003172846-a3e1774ef349 // indirect - github.com/ebitengine/purego v0.9.1 // indirect + github.com/ebitengine/purego v0.10.0 // indirect github.com/fsnotify/fsnotify v1.9.0 // indirect github.com/go-errors/errors v1.5.1 // indirect github.com/go-ole/go-ole v1.3.0 // indirect diff --git a/go.sum b/go.sum index 356177314f..459182b048 100644 --- a/go.sum +++ b/go.sum @@ -83,8 +83,8 @@ github.com/dsoprea/go-utility/v2 v2.0.0-20221003142440-7a1927d49d9d/go.mod h1:LV github.com/dsoprea/go-utility/v2 v2.0.0-20221003160719-7bc88537c05e/go.mod h1:VZ7cB0pTjm1ADBWhJUOHESu4ZYy9JN+ZPqjfiW09EPU= github.com/dsoprea/go-utility/v2 v2.0.0-20221003172846-a3e1774ef349 h1:DilThiXje0z+3UQ5YjYiSRRzVdtamFpvBQXKwMglWqw= github.com/dsoprea/go-utility/v2 v2.0.0-20221003172846-a3e1774ef349/go.mod h1:4GC5sXji84i/p+irqghpPFZBF8tRN/Q7+700G0/DLe8= -github.com/ebitengine/purego v0.9.1 h1:a/k2f2HQU3Pi399RPW1MOaZyhKJL9w/xFpKAg4q1s0A= -github.com/ebitengine/purego v0.9.1/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= +github.com/ebitengine/purego v0.10.0 h1:QIw4xfpWT6GWTzaW5XEKy3HXoqrJGx1ijYHzTF0/ISU= +github.com/ebitengine/purego v0.10.0/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568 h1:BHsljHzVlRcyQhjrss6TZTdY2VfCqZPbv5k3iBFa2ZQ= @@ -215,10 +215,10 @@ github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQD github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd/go.mod h1:hPqNNc0+uJM6H+SuU8sEs5K5IQeKccPqeSjfgcKGgPk= github.com/sagikazarmark/locafero v0.11.0 h1:1iurJgmM9G3PA/I+wWYIOw/5SyBtxapeHDcg+AAIFXc= github.com/sagikazarmark/locafero v0.11.0/go.mod h1:nVIGvgyzw595SUSUE6tvCp3YYTeHs15MvlmU87WwIik= -github.com/samber/lo v1.52.0 h1:Rvi+3BFHES3A8meP33VPAxiBZX/Aws5RxrschYGjomw= -github.com/samber/lo v1.52.0/go.mod h1:4+MXEGsJzbKGaUEQFKBq2xtfuznW9oz/WrgyzMzRoM0= -github.com/shirou/gopsutil/v4 v4.26.1 h1:TOkEyriIXk2HX9d4isZJtbjXbEjf5qyKPAzbzY0JWSo= -github.com/shirou/gopsutil/v4 v4.26.1/go.mod h1:medLI9/UNAb0dOI9Q3/7yWSqKkj00u+1tgY8nvv41pc= +github.com/samber/lo v1.53.0 h1:t975lj2py4kJPQ6haz1QMgtId2gtmfktACxIXArw3HM= +github.com/samber/lo v1.53.0/go.mod h1:4+MXEGsJzbKGaUEQFKBq2xtfuznW9oz/WrgyzMzRoM0= +github.com/shirou/gopsutil/v4 v4.26.2 h1:X8i6sicvUFih4BmYIGT1m2wwgw2VG9YgrDTi7cIRGUI= +github.com/shirou/gopsutil/v4 v4.26.2/go.mod h1:LZ6ewCSkBqUpvSOf+LsTGnRinC6iaNUNMGBtDkJBaLQ= github.com/sorairolake/lzip-go v0.3.8 h1:j5Q2313INdTA80ureWYRhX+1K78mUXfMoPZCw/ivWik= github.com/sorairolake/lzip-go v0.3.8/go.mod h1:JcBqGMV0frlxwrsE9sMWXDjqn3EeVf0/54YPsw66qkU= github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 h1:+jumHNA0Wrelhe64i8F6HNlS8pkoyMv5sreGx2Ry5Rw= From a7dc7bf88a727769d9aad0e6598525936c06992c Mon Sep 17 00:00:00 2001 From: "transifex-integration[bot]" <43880903+transifex-integration[bot]@users.noreply.github.com> Date: Fri, 6 Mar 2026 15:28:29 +0100 Subject: [PATCH 065/126] chore: update translations (#5796) Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com> --- frontend/src/i18n/ko.json | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/frontend/src/i18n/ko.json b/frontend/src/i18n/ko.json index 7ff52dfc76..5bad2d5616 100644 --- a/frontend/src/i18n/ko.json +++ b/frontend/src/i18n/ko.json @@ -49,10 +49,10 @@ "editAsText": "텍스트로 편집", "increaseFontSize": "글꼴 크기 증가", "decreaseFontSize": "글꼴 크기 감소", - "overrideAll": "Replace all files in destination folder", - "skipAll": "Skip all conflicting files", - "renameAll": "Rename all files (create a copy)", - "singleDecision": "Decide for each conflicting file" + "overrideAll": "대상 폴더의 모든 파일을 대체", + "skipAll": "충돌하는 모든 파일을 건너뛰기", + "renameAll": "모든 파일의 이름 변경 (복사본 생성)", + "singleDecision": "충돌하는 각 파일을 확인" }, "download": { "downloadFile": "파일 다운로드", @@ -166,16 +166,16 @@ "optionalPassword": "비밀번호 (선택)", "resolution": "해상도", "discardEditorChanges": "변경 사항을 취소하시겠습니까?", - "replaceOrSkip": "Replace or skip files", - "resolveConflict": "Which files do you want to keep?", - "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", - "fastConflictResolve": "The destination folder there are {count} files with same name.", - "uploadingFiles": "Uploading files", - "filesInOrigin": "Files in origin", - "filesInDest": "Files in destination", - "override": "Overwrite", - "skip": "Skip", - "forbiddenError": "Forbidden Error" + "replaceOrSkip": "파일 대체 또는 건너뛰기", + "resolveConflict": "어떤 파일을 유지하시겠습니까?", + "singleConflictResolve": "모든 버전을 선택하면 복사한 파일의 이름에 번호를 추가합니다.", + "fastConflictResolve": "대상 폴더에 같은 이름을 가진 파일이 {count}개 있습니다.", + "uploadingFiles": "파일 업로드 중", + "filesInOrigin": "원본 파일", + "filesInDest": "대상 경로의 파일", + "override": "덮어쓰기", + "skip": "건너뛰기", + "forbiddenError": "권한 오류" }, "search": { "images": "이미지", From 8598db2accccf5b87353e5e718b2ad1c946e5c44 Mon Sep 17 00:00:00 2001 From: Marcel Szalbach <4-bar-killa@web.de> Date: Fri, 6 Mar 2026 15:32:04 +0100 Subject: [PATCH 066/126] =?UTF-8?q?fix:=20added=20dateFormat=20to=20getUse?= =?UTF-8?q?rDefaults=20so=20this=20is=20respected=20in=20the=20=E2=80=A6?= =?UTF-8?q?=20(#5804)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- auth/hook.go | 2 ++ cmd/config.go | 3 ++- cmd/users.go | 2 ++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/auth/hook.go b/auth/hook.go index 0c5efac5c7..2541b684b9 100644 --- a/auth/hook.go +++ b/auth/hook.go @@ -168,6 +168,7 @@ func (a *HookAuth) SaveUser() (*users.User, error) { Sorting: a.Settings.Defaults.Sorting, Perm: a.Settings.Defaults.Perm, Commands: a.Settings.Defaults.Commands, + DateFormat: a.Settings.Defaults.DateFormat, HideDotfiles: a.Settings.Defaults.HideDotfiles, } u = a.GetUser(d) @@ -233,6 +234,7 @@ func (a *HookAuth) GetUser(d *users.User) *users.User { By: a.Fields.GetString("user.sorting.by", d.Sorting.By), }, Commands: a.Fields.GetArray("user.commands", d.Commands), + DateFormat: a.Fields.GetBoolean("user.dateFormat", d.DateFormat), HideDotfiles: a.Fields.GetBoolean("user.hideDotfiles", d.HideDotfiles), Perm: perms, LockPassword: true, diff --git a/cmd/config.go b/cmd/config.go index 5b3314ed73..e3bb2b862d 100644 --- a/cmd/config.go +++ b/cmd/config.go @@ -99,7 +99,7 @@ func getProxyAuth(flags *pflag.FlagSet, defaultAuther map[string]interface{}) (a return nil, err } - if header == "" && defaultAuther != nil { + if header == "" && defaultAuther != nil { header = defaultAuther["header"].(string) } @@ -236,6 +236,7 @@ func printSettings(ser *settings.Server, set *settings.Settings, auther auth.Aut fmt.Fprintln(w, "\nDefaults:") fmt.Fprintf(w, "\tScope:\t%s\n", set.Defaults.Scope) + fmt.Fprintf(w, "\tDateFormat:\t%t\n", set.Defaults.DateFormat) fmt.Fprintf(w, "\tHideDotfiles:\t%t\n", set.Defaults.HideDotfiles) fmt.Fprintf(w, "\tLocale:\t%s\n", set.Defaults.Locale) fmt.Fprintf(w, "\tView mode:\t%s\n", set.Defaults.ViewMode) diff --git a/cmd/users.go b/cmd/users.go index 7d35e964d8..7aae00a995 100644 --- a/cmd/users.go +++ b/cmd/users.go @@ -138,6 +138,8 @@ func getUserDefaults(flags *pflag.FlagSet, defaults *settings.UserDefaults, all defaults.Sorting.By, err = flags.GetString(flag.Name) case "sorting.asc": defaults.Sorting.Asc, err = flags.GetBool(flag.Name) + case "dateFormat": + defaults.DateFormat, err = flags.GetBool(flag.Name) case "hideDotfiles": defaults.HideDotfiles, err = flags.GetBool(flag.Name) } From 8ee55761a1aa9bc091d8466c44f03c2043a8ca79 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Fri, 6 Mar 2026 16:06:54 +0100 Subject: [PATCH 067/126] fix(frontend): input password type --- frontend/src/components/prompts/CurrentPassword.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/components/prompts/CurrentPassword.vue b/frontend/src/components/prompts/CurrentPassword.vue index c97485f26a..dfccf3fd64 100644 --- a/frontend/src/components/prompts/CurrentPassword.vue +++ b/frontend/src/components/prompts/CurrentPassword.vue @@ -11,7 +11,7 @@ From 4d9e6b821852203cef67233791a922013bd5b64d Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Fri, 6 Mar 2026 16:07:08 +0100 Subject: [PATCH 068/126] fix(frontend): do not delete original assets --- frontend/vite.config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts index 583b2e3829..081591773d 100644 --- a/frontend/vite.config.ts +++ b/frontend/vite.config.ts @@ -14,7 +14,7 @@ const plugins = [ // defaults already drop IE support targets: ["defaults"], }), - compression({ include: /\.js$/i, deleteOriginalAssets: true }), + compression({ include: /\.js$/, deleteOriginalAssets: false }), ]; const resolve = { From cbcf708d945c74ed7ee054726dca131ac10e97a5 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Fri, 6 Mar 2026 16:17:33 +0100 Subject: [PATCH 069/126] chore(release): 2.61.2 --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8b5c2f27bc..3771efe145 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,18 @@ All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines. +## [2.61.2](https://github.com/filebrowser/filebrowser/compare/v2.61.1...v2.61.2) (2026-03-06) + + +### Bug Fixes + +* added dateFormat to getUserDefaults so this is respected in the … ([#5804](https://github.com/filebrowser/filebrowser/issues/5804)) ([8598db2](https://github.com/filebrowser/filebrowser/commit/8598db2accccf5b87353e5e718b2ad1c946e5c44)) +* avoid sending the same name in the file/folder rename modal ([#5806](https://github.com/filebrowser/filebrowser/issues/5806)) ([d7b00ce](https://github.com/filebrowser/filebrowser/commit/d7b00ce5f672b7ce0b26ce31abdfc74f8b00b939)) +* **csv-viewer:** add support for missing text encodings in dropdown list ([#5795](https://github.com/filebrowser/filebrowser/issues/5795)) ([4af3f85](https://github.com/filebrowser/filebrowser/commit/4af3f85e64e795e8ae1d87d4caee8185028294ac)) +* **frontend:** do not delete original assets ([4d9e6b8](https://github.com/filebrowser/filebrowser/commit/4d9e6b821852203cef67233791a922013bd5b64d)) +* **frontend:** input password type ([8ee5576](https://github.com/filebrowser/filebrowser/commit/8ee55761a1aa9bc091d8466c44f03c2043a8ca79)) +* validate current password with a modal ([#5805](https://github.com/filebrowser/filebrowser/issues/5805)) ([177c7cf](https://github.com/filebrowser/filebrowser/commit/177c7cfcce36779e2c5ebaa4b59a055dd1e17648)) + ## [2.61.1](https://github.com/filebrowser/filebrowser/compare/v2.61.0...v2.61.1) (2026-03-04) From c01b6a840c7aa9722d7e9ea1c4134e79599045b8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 7 Mar 2026 07:40:23 +0100 Subject: [PATCH 070/126] chore(deps): update dependency eslint to v10.0.3 (#5809) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- frontend/pnpm-lock.yaml | 214 ++++++++++++++++++++-------------------- 1 file changed, 107 insertions(+), 107 deletions(-) diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index bbdee7df01..1446cc027c 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -101,7 +101,7 @@ importers: devDependencies: '@intlify/unplugin-vue-i18n': specifier: ^11.0.1 - version: 11.0.7(@vue/compiler-dom@3.5.29)(eslint@10.0.2)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.2.8(vue@3.5.29(typescript@5.9.3)))(vue@3.5.29(typescript@5.9.3)) + version: 11.0.7(@vue/compiler-dom@3.5.29)(eslint@10.0.3)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.2.8(vue@3.5.29(typescript@5.9.3)))(vue@3.5.29(typescript@5.9.3)) '@tsconfig/node24': specifier: ^24.0.2 version: 24.0.4 @@ -113,7 +113,7 @@ importers: version: 24.12.0 '@typescript-eslint/eslint-plugin': specifier: ^8.37.0 - version: 8.56.1(@typescript-eslint/parser@8.56.0(eslint@10.0.2)(typescript@5.9.3))(eslint@10.0.2)(typescript@5.9.3) + version: 8.56.1(@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: ^7.2.1 version: 7.2.1(terser@5.46.0)(vite@7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2)) @@ -122,10 +122,10 @@ importers: version: 6.0.4(vite@7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.29(typescript@5.9.3)) '@vue/eslint-config-prettier': specifier: ^10.2.0 - version: 10.2.0(eslint@10.0.2)(prettier@3.8.1) + 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.2)(typescript@5.9.3))(eslint@10.0.2)(vue-eslint-parser@10.4.0(eslint@10.0.2)))(eslint@10.0.2)(typescript@5.9.3) + 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.29(typescript@5.9.3)) @@ -134,16 +134,16 @@ importers: version: 10.4.27(postcss@8.5.8) eslint: specifier: ^10.0.0 - version: 10.0.2 + version: 10.0.3 eslint-config-prettier: specifier: ^10.1.5 - version: 10.1.8(eslint@10.0.2) + 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.2))(eslint@10.0.2)(prettier@3.8.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.2)(typescript@5.9.3))(eslint@10.0.2)(vue-eslint-parser@10.4.0(eslint@10.0.2)) + 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 @@ -990,24 +990,24 @@ packages: resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.23.2': - resolution: {integrity: sha512-YF+fE6LV4v5MGWRGj7G404/OZzGNepVF8fxk7jqmqo3lrza7a0uUcDnROGRBG1WFC1omYUS/Wp1f42i0M+3Q3A==} + '@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.2': - resolution: {integrity: sha512-a5MxrdDXEvqnIq+LisyCX6tQMPF/dSJpCfBgBauY+pNZ28yCtSsTvyTYrMhaI+LK26bVyCJfJkT0u8KIj2i1dQ==} + '@eslint/config-helpers@0.5.3': + resolution: {integrity: sha512-lzGN0onllOZCGroKJmRwY6QcEHxbjBw1gwB8SgRSqK8YbbtEXMvKynsXc3553ckIEBxsbMBU7oOZXKIPGZNeZw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/core@1.1.0': - resolution: {integrity: sha512-/nr9K9wkr3P1EzFTdFdMoLuo1PmIxjmwvPozwoSodjNBdefGujXQUF93u1DDZpEaTuDvMsIQddsd35BwtrW9Xw==} + '@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.2': - resolution: {integrity: sha512-HOy56KJt48Bx8KmJ+XGQNSUMT/6dZee/M54XyUyuvTvPXJmsERRvBchsUVx1UMe1WwIH49XLAczNC7V2INsuUw==} + '@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.0': - resolution: {integrity: sha512-bIZEUzOI1jkhviX2cp5vNyXQc6olzb2ohewQubuYlMXZ2Q/XjBO0x0XhGPvc9fjSIiUN0vw+0hq53BJ4eQSJKQ==} + '@eslint/plugin-kit@0.6.1': + resolution: {integrity: sha512-iH1B076HoAshH1mLpHMgwdGeTs0CYwL0SPMkGuSebZrwBp16v415e9NZXg2jtrqPVQjf6IANe2Vtlr5KswtcZQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@humanfs/core@0.19.1': @@ -1882,8 +1882,8 @@ packages: '@typescript-eslint/parser': optional: true - eslint-scope@9.1.1: - resolution: {integrity: sha512-GaUN0sWim5qc8KVErfPBWmc31LEsOkrUJbvJZV+xuL3u2phMUK4HIvXlWAakfC8W4nzlK+chPEAkYOYb5ZScIw==} + 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: @@ -1894,8 +1894,8 @@ packages: resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint@10.0.2: - resolution: {integrity: sha512-uYixubwmqJZH+KLVYIVKY1JQt7tysXhtj21WSvjcSmU5SVNzMus1bgLe+pAt816yQ8opKfheVVoPLqvVMGejYw==} + eslint@10.0.3: + resolution: {integrity: sha512-COV33RzXZkqhG9P2rZCFl9ZmJ7WL+gQSCRzE7RhkbclbQPtLAWReL7ysA0Sh4c8Im2U9ynybdR56PV0XcKvqaQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: @@ -1908,8 +1908,8 @@ packages: resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} engines: {node: '>=0.10'} - espree@11.1.1: - resolution: {integrity: sha512-AVHPqQoZYc+RUM4/3Ly5udlZY/U4LS8pIG05jEjWM2lQMU/oaZ7qshzAl2YP1tfNmXfftH3ohurfwNAug+MnsQ==} + espree@11.2.0: + resolution: {integrity: sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} espree@9.6.1: @@ -1997,8 +1997,8 @@ packages: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} - flatted@3.3.3: - resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + flatted@3.3.4: + resolution: {integrity: sha512-3+mMldrTAPdta5kjX2G2J7iX4zxtnwpdA8Tr2ZSjkyPSanvbZAcy6flmtnXbEybHrDcU9641lxrMfFuUxVz9vA==} focus-trap@8.0.0: resolution: {integrity: sha512-Aa84FOGHs99vVwufDMdq2qgOwXPC2e9U66GcqBhn1/jEHPDhJaP8PYhkIbqG9lhfL5Kddk/567lj46LLHYCRUw==} @@ -2236,8 +2236,8 @@ packages: resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} engines: {node: 18 || 20 || >=22} - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + minimatch@9.0.9: + resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} engines: {node: '>=16 || 14 >=14.17'} mitt@3.0.1: @@ -3595,34 +3595,34 @@ snapshots: '@esbuild/win32-x64@0.27.3': optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@10.0.2)': + '@eslint-community/eslint-utils@4.9.1(eslint@10.0.3)': dependencies: - eslint: 10.0.2 + eslint: 10.0.3 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} - '@eslint/config-array@0.23.2': + '@eslint/config-array@0.23.3': dependencies: - '@eslint/object-schema': 3.0.2 + '@eslint/object-schema': 3.0.3 debug: 4.4.3 minimatch: 10.2.4 transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.5.2': + '@eslint/config-helpers@0.5.3': dependencies: - '@eslint/core': 1.1.0 + '@eslint/core': 1.1.1 - '@eslint/core@1.1.0': + '@eslint/core@1.1.1': dependencies: '@types/json-schema': 7.0.15 - '@eslint/object-schema@3.0.2': {} + '@eslint/object-schema@3.0.3': {} - '@eslint/plugin-kit@0.6.0': + '@eslint/plugin-kit@0.6.1': dependencies: - '@eslint/core': 1.1.0 + '@eslint/core': 1.1.1 levn: 0.4.1 '@humanfs/core@0.19.1': {} @@ -3662,9 +3662,9 @@ snapshots: '@intlify/shared@11.2.8': {} - '@intlify/unplugin-vue-i18n@11.0.7(@vue/compiler-dom@3.5.29)(eslint@10.0.2)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.2.8(vue@3.5.29(typescript@5.9.3)))(vue@3.5.29(typescript@5.9.3))': + '@intlify/unplugin-vue-i18n@11.0.7(@vue/compiler-dom@3.5.29)(eslint@10.0.3)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.2.8(vue@3.5.29(typescript@5.9.3)))(vue@3.5.29(typescript@5.9.3))': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.2) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.3) '@intlify/bundle-utils': 11.0.7(vue-i18n@11.2.8(vue@3.5.29(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.29)(vue-i18n@11.2.8(vue@3.5.29(typescript@5.9.3)))(vue@3.5.29(typescript@5.9.3)) @@ -3845,15 +3845,15 @@ snapshots: '@types/web-bluetooth@0.0.21': {} - '@typescript-eslint/eslint-plugin@8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.0.2)(typescript@5.9.3))(eslint@10.0.2)(typescript@5.9.3)': + '@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.2)(typescript@5.9.3) + '@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.2)(typescript@5.9.3) - '@typescript-eslint/utils': 8.56.0(eslint@10.0.2)(typescript@5.9.3) + '@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.2 + eslint: 10.0.3 ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.4.0(typescript@5.9.3) @@ -3861,15 +3861,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.56.1(@typescript-eslint/parser@8.56.0(eslint@10.0.2)(typescript@5.9.3))(eslint@10.0.2)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.56.1(@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.2)(typescript@5.9.3) + '@typescript-eslint/parser': 8.56.0(eslint@10.0.3)(typescript@5.9.3) '@typescript-eslint/scope-manager': 8.56.1 - '@typescript-eslint/type-utils': 8.56.1(eslint@10.0.2)(typescript@5.9.3) - '@typescript-eslint/utils': 8.56.1(eslint@10.0.2)(typescript@5.9.3) + '@typescript-eslint/type-utils': 8.56.1(eslint@10.0.3)(typescript@5.9.3) + '@typescript-eslint/utils': 8.56.1(eslint@10.0.3)(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.56.1 - eslint: 10.0.2 + eslint: 10.0.3 ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.4.0(typescript@5.9.3) @@ -3877,14 +3877,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.56.0(eslint@10.0.2)(typescript@5.9.3)': + '@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.2 + eslint: 10.0.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -3925,25 +3925,25 @@ snapshots: dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.56.0(eslint@10.0.2)(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.2)(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.2 + 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.56.1(eslint@10.0.2)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.56.1(eslint@10.0.3)(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 8.56.1 '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.9.3) - '@typescript-eslint/utils': 8.56.1(eslint@10.0.2)(typescript@5.9.3) + '@typescript-eslint/utils': 8.56.1(eslint@10.0.3)(typescript@5.9.3) debug: 4.4.3 - eslint: 10.0.2 + eslint: 10.0.3 ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: @@ -3960,7 +3960,7 @@ snapshots: '@typescript-eslint/types': 8.56.0 '@typescript-eslint/visitor-keys': 8.56.0 debug: 4.4.3 - minimatch: 9.0.5 + minimatch: 9.0.9 semver: 7.7.4 tinyglobby: 0.2.15 ts-api-utils: 2.4.0(typescript@5.9.3) @@ -3983,24 +3983,24 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.56.0(eslint@10.0.2)(typescript@5.9.3)': + '@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.2) + '@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.2 + eslint: 10.0.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.56.1(eslint@10.0.2)(typescript@5.9.3)': + '@typescript-eslint/utils@8.56.1(eslint@10.0.3)(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.2) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.3) '@typescript-eslint/scope-manager': 8.56.1 '@typescript-eslint/types': 8.56.1 '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.9.3) - eslint: 10.0.2 + eslint: 10.0.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -4182,23 +4182,23 @@ snapshots: dependencies: rfdc: 1.4.1 - '@vue/eslint-config-prettier@10.2.0(eslint@10.0.2)(prettier@3.8.1)': + '@vue/eslint-config-prettier@10.2.0(eslint@10.0.3)(prettier@3.8.1)': dependencies: - eslint: 10.0.2 - eslint-config-prettier: 10.1.8(eslint@10.0.2) - eslint-plugin-prettier: 5.5.5(eslint-config-prettier@10.1.8(eslint@10.0.2))(eslint@10.0.2)(prettier@3.8.1) + 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.2)(typescript@5.9.3))(eslint@10.0.2)(vue-eslint-parser@10.4.0(eslint@10.0.2)))(eslint@10.0.2)(typescript@5.9.3)': + '@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.2)(typescript@5.9.3) - eslint: 10.0.2 - eslint-plugin-vue: 10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.2)(typescript@5.9.3))(eslint@10.0.2)(vue-eslint-parser@10.4.0(eslint@10.0.2)) + '@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.2)(typescript@5.9.3) - vue-eslint-parser: 10.4.0(eslint@10.0.2) + 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: @@ -4557,33 +4557,33 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-prettier@10.1.8(eslint@10.0.2): + eslint-config-prettier@10.1.8(eslint@10.0.3): dependencies: - eslint: 10.0.2 + eslint: 10.0.3 - eslint-plugin-prettier@5.5.5(eslint-config-prettier@10.1.8(eslint@10.0.2))(eslint@10.0.2)(prettier@3.8.1): + 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.2 + 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.2) + 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.2)(typescript@5.9.3))(eslint@10.0.2)(vue-eslint-parser@10.4.0(eslint@10.0.2)): + 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.2) - eslint: 10.0.2 + '@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.2) + 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.2)(typescript@5.9.3) + '@typescript-eslint/parser': 8.56.0(eslint@10.0.3)(typescript@5.9.3) - eslint-scope@9.1.1: + eslint-scope@9.1.2: dependencies: '@types/esrecurse': 4.3.1 '@types/estree': 1.0.8 @@ -4594,14 +4594,14 @@ snapshots: eslint-visitor-keys@5.0.1: {} - eslint@10.0.2: + eslint@10.0.3: dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.2) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.3) '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.23.2 - '@eslint/config-helpers': 0.5.2 - '@eslint/core': 1.1.0 - '@eslint/plugin-kit': 0.6.0 + '@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 @@ -4610,9 +4610,9 @@ snapshots: cross-spawn: 7.0.6 debug: 4.4.3 escape-string-regexp: 4.0.0 - eslint-scope: 9.1.1 + eslint-scope: 9.1.2 eslint-visitor-keys: 5.0.1 - espree: 11.1.1 + espree: 11.2.0 esquery: 1.7.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -4636,7 +4636,7 @@ snapshots: event-emitter: 0.3.5 type: 2.7.3 - espree@11.1.1: + espree@11.2.0: dependencies: acorn: 8.16.0 acorn-jsx: 5.3.2(acorn@8.16.0) @@ -4716,10 +4716,10 @@ snapshots: flat-cache@4.0.1: dependencies: - flatted: 3.3.3 + flatted: 3.3.4 keyv: 4.5.4 - flatted@3.3.3: {} + flatted@3.3.4: {} focus-trap@8.0.0: dependencies: @@ -4931,7 +4931,7 @@ snapshots: dependencies: brace-expansion: 5.0.4 - minimatch@9.0.5: + minimatch@9.0.9: dependencies: brace-expansion: 2.0.2 @@ -5253,13 +5253,13 @@ snapshots: type@2.7.3: {} - typescript-eslint@8.56.0(eslint@10.0.2)(typescript@5.9.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.2)(typescript@5.9.3))(eslint@10.0.2)(typescript@5.9.3) - '@typescript-eslint/parser': 8.56.0(eslint@10.0.2)(typescript@5.9.3) + '@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.2)(typescript@5.9.3) - eslint: 10.0.2 + '@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 @@ -5376,13 +5376,13 @@ snapshots: vscode-uri@3.1.0: {} - vue-eslint-parser@10.4.0(eslint@10.0.2): + vue-eslint-parser@10.4.0(eslint@10.0.3): dependencies: debug: 4.4.3 - eslint: 10.0.2 - eslint-scope: 9.1.1 + eslint: 10.0.3 + eslint-scope: 9.1.2 eslint-visitor-keys: 5.0.1 - espree: 11.1.1 + espree: 11.2.0 esquery: 1.7.0 semver: 7.7.4 transitivePeerDependencies: From 3cb21c727d21d626d11896013b6e686c1f4e4790 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 7 Mar 2026 07:40:31 +0100 Subject: [PATCH 071/126] chore(deps): update docker/login-action action to v4 (#5810) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index ddbb8962a4..174a03f285 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -99,7 +99,7 @@ jobs: uses: go-task/setup-task@v1 - run: task build:frontend - name: Login to Docker Hub - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} From df63cb595c87c084ddac0755e410ac6c96a8285a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 7 Mar 2026 07:40:39 +0100 Subject: [PATCH 072/126] chore(deps): update docker/setup-buildx-action action to v4 (#5811) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/ci.yaml | 2 +- .github/workflows/docs.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 174a03f285..1e359dcc4f 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -94,7 +94,7 @@ jobs: - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 + uses: docker/setup-buildx-action@v4 - name: Install Task uses: go-task/setup-task@v1 - run: task build:frontend diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 5b21ccba79..6dfcfe2394 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -18,7 +18,7 @@ jobs: - name: Checkout uses: actions/checkout@v6 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 + uses: docker/setup-buildx-action@v4 - name: Install Task uses: go-task/setup-task@v1 - name: Build site @@ -39,7 +39,7 @@ jobs: - name: Checkout uses: actions/checkout@v6 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 + uses: docker/setup-buildx-action@v4 - name: Install Task uses: go-task/setup-task@v1 - name: Build site From 490e5bbf9981e374ed6c00f1f18de4cb8dcdfb10 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 7 Mar 2026 07:40:47 +0100 Subject: [PATCH 073/126] chore(deps): update docker/setup-qemu-action action to v4 (#5812) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 1e359dcc4f..895dfe2b4b 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -92,7 +92,7 @@ jobs: cache: "pnpm" cache-dependency-path: "frontend/pnpm-lock.yaml" - name: Set up QEMU - uses: docker/setup-qemu-action@v3 + uses: docker/setup-qemu-action@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v4 - name: Install Task From 6700a981a5297f2d83c77413aa2d5c9b423863ae Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Wed, 11 Mar 2026 19:32:42 +0100 Subject: [PATCH 074/126] docs: update readme --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1e15d59275..f2ed795773 100644 --- a/README.md +++ b/README.md @@ -18,8 +18,10 @@ This project is a finished product which fulfills its goal: be a single binary w - It can take a while until someone gets back to you. Please be patient. - [Issues](https://github.com/filebrowser/filebrowser/issues) are meant to track bugs. Unrelated issues will be converted into [discussions](https://github.com/filebrowser/filebrowser/discussions). -- No new features will be implemented by maintainers. Pull requests for new features will be reviewed on a case by case basis. - The priority is triaging issues, addressing security issues and reviewing pull requests meant to solve bugs. +- No new features are planned. Pull requests for new features are not guaranteed to be reviewed. + +Please read [@hacdias' personal reflection](https://hacdias.com/2026/03/11/filebrowser/) on the project status. ## Contributing From 6dcef07f40d550acee63dd01e0a3bcf78532f690 Mon Sep 17 00:00:00 2001 From: Sergio Date: Wed, 11 Mar 2026 11:34:49 -0700 Subject: [PATCH 075/126] fix(upload): don't mark every folder-upload file as conflicting (#5813) --- frontend/src/utils/upload.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/utils/upload.ts b/frontend/src/utils/upload.ts index a5a62b1dfc..1c894992c6 100644 --- a/frontend/src/utils/upload.ts +++ b/frontend/src/utils/upload.ts @@ -25,7 +25,7 @@ export function checkConflict( const file = files[i]; let name = file.name; - if (folder_upload) { + if (folder_upload && file.isDir) { const dirs = file.fullPath?.split("/"); if (dirs && dirs.length > 1) { name = dirs[0]; From f5f8b60b331a07729a1fed1ed065cb6fc20930ea Mon Sep 17 00:00:00 2001 From: Sergio Date: Wed, 11 Mar 2026 11:34:57 -0700 Subject: [PATCH 076/126] fix(upload): avoid skipping whole folder upload on conflict modal (#5814) --- frontend/src/utils/upload.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/frontend/src/utils/upload.ts b/frontend/src/utils/upload.ts index 1c894992c6..3b68919223 100644 --- a/frontend/src/utils/upload.ts +++ b/frontend/src/utils/upload.ts @@ -23,12 +23,16 @@ export function checkConflict( for (let i = 0; i < files.length; i++) { const file = files[i]; - let name = file.name; + const name = file.name; if (folder_upload && file.isDir) { const dirs = file.fullPath?.split("/"); + // For folder uploads, destination listing is flat and only contains + // top-level entries. Treating every nested file as a conflict when the + // parent folder exists blocks the whole upload (see #5798), so skip + // preflight conflict detection for nested files. if (dirs && dirs.length > 1) { - name = dirs[0]; + continue; } } From f04af0cac6c808b8e7c9a9651380c252c4de9132 Mon Sep 17 00:00:00 2001 From: Ariel Leyva Date: Wed, 11 Mar 2026 14:36:05 -0400 Subject: [PATCH 077/126] fix: allow deleting the user's own account (#5820) --- errors/errors.go | 2 +- frontend/src/views/settings/User.vue | 7 ++++++- storage/bolt/users.go | 27 +++++++++++++++++++++++++++ users/storage.go | 23 +++++++++++++++++++++-- 4 files changed, 55 insertions(+), 4 deletions(-) diff --git a/errors/errors.go b/errors/errors.go index 748354a8a0..f6b86cafbc 100644 --- a/errors/errors.go +++ b/errors/errors.go @@ -21,7 +21,7 @@ var ( ErrPermissionDenied = errors.New("permission denied") ErrInvalidRequestParams = errors.New("invalid request params") ErrSourceIsParent = errors.New("source is parent") - ErrRootUserDeletion = errors.New("user with id 1 can't be deleted") + ErrRootUserDeletion = errors.New("the sole admin can't be deleted") ErrCurrentPasswordIncorrect = errors.New("the current password is incorrect") ) diff --git a/frontend/src/views/settings/User.vue b/frontend/src/views/settings/User.vue index b726d9ef0e..63e0d2a2df 100644 --- a/frontend/src/views/settings/User.vue +++ b/frontend/src/views/settings/User.vue @@ -59,6 +59,7 @@ import { useRoute, useRouter } from "vue-router"; import { useI18n } from "vue-i18n"; import { StatusError } from "@/api/utils"; import { authMethod } from "@/utils/constants"; +import { logout } from "@/utils/auth"; const error = ref(); const originalUser = ref(); @@ -144,7 +145,11 @@ const deleteUser = async (currentPassword: string) => { } try { await api.remove(user.value.id, currentPassword); - router.push({ path: "/settings/users" }); + if (user.value.id == authStore.user?.id) { + logout(); + } else { + router.push({ path: "/settings/users" }); + } $showSuccess(t("settings.userDeleted")); } catch (err) { if (err instanceof StatusError) { diff --git a/storage/bolt/users.go b/storage/bolt/users.go index 974c0a48aa..6686d941b0 100644 --- a/storage/bolt/users.go +++ b/storage/bolt/users.go @@ -6,6 +6,7 @@ import ( "reflect" "github.com/asdine/storm/v3" + bolt "go.etcd.io/bbolt" fberrors "github.com/filebrowser/filebrowser/v2/errors" "github.com/filebrowser/filebrowser/v2/users" @@ -93,3 +94,29 @@ func (st usersBackend) DeleteByUsername(username string) error { return st.db.DeleteStruct(user) } + +func (st usersBackend) CountAdmins() (int, error) { + count := 0 + + err := st.db.Bolt.View(func(tx *bolt.Tx) error { + bucket := tx.Bucket([]byte(reflect.TypeOf(users.User{}).Name())) + if bucket == nil { + return nil + } + + c := bucket.Cursor() + for _, v := c.First(); v != nil; _, v = c.Next() { + var u users.User + if err := st.db.Codec().Unmarshal(v, &u); err != nil { + return err + } + if u.Perm.Admin { + count++ + } + } + + return nil + }) + + return count, err +} diff --git a/users/storage.go b/users/storage.go index 43c65fe4f5..33cfc9c4ae 100644 --- a/users/storage.go +++ b/users/storage.go @@ -15,6 +15,7 @@ type StorageBackend interface { Update(u *User, fields ...string) error DeleteByID(uint) error DeleteByUsername(string) error + CountAdmins() (int, error) } type Store interface { @@ -108,14 +109,20 @@ func (s *Storage) Delete(id interface{}) error { if err != nil { return err } - if user.ID == 1 { + if s.IsUniqueAdmin(user) { return fberrors.ErrRootUserDeletion } + return s.back.DeleteByUsername(id) case uint: - if id == 1 { + user, err := s.back.GetBy(id) + if err != nil { + return err + } + if s.IsUniqueAdmin(user) { return fberrors.ErrRootUserDeletion } + return s.back.DeleteByID(id) default: return fberrors.ErrInvalidDataType @@ -131,3 +138,15 @@ func (s *Storage) LastUpdate(id uint) int64 { } return 0 } + +func (s *Storage) IsUniqueAdmin(user *User) bool { + if !user.Perm.Admin { + return false + } + + count, err := s.back.CountAdmins() + if err != nil { + return true + } + return count <= 1 +} From 0542fc0ba43740c967414eebd156bac86ad80376 Mon Sep 17 00:00:00 2001 From: Sergio Date: Wed, 11 Mar 2026 11:37:07 -0700 Subject: [PATCH 078/126] fix(tus): preserve percent-encoded upload paths in Location header (#5817) --- http/tus_handlers.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/http/tus_handlers.go b/http/tus_handlers.go index 68931f5d4f..0b7bcbb48f 100644 --- a/http/tus_handlers.go +++ b/http/tus_handlers.go @@ -5,10 +5,10 @@ import ( "fmt" "io" "net/http" - "net/url" "os" "path/filepath" "strconv" + "strings" "time" "github.com/spf13/afero" @@ -112,12 +112,12 @@ func tusPostHandler(cache UploadCache) handleFunc { // Enables the user to utilize the PATCH endpoint for uploading file data cache.Register(file.RealPath(), uploadLength) - path, err := url.JoinPath("/", d.server.BaseURL, "/api/tus", r.URL.Path) - if err != nil { - return http.StatusBadRequest, fmt.Errorf("invalid path: %w", err) + basePath := "/" + strings.Trim(strings.TrimSpace(d.server.BaseURL), "/") + if basePath == "/" { + basePath = "" } - w.Header().Set("Location", path) + w.Header().Set("Location", basePath+"/api/tus"+r.URL.EscapedPath()) return http.StatusCreated, nil }) } From ef2e9992dc3098f6c4722c2a98966cd8abf8bab5 Mon Sep 17 00:00:00 2001 From: Andrew Katsikas Date: Thu, 12 Mar 2026 02:34:11 -0400 Subject: [PATCH 079/126] fix: properly surface config parse errors (#5822) --- cmd/utils.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cmd/utils.go b/cmd/utils.go index a57856e425..3ae29b270a 100644 --- a/cmd/utils.go +++ b/cmd/utils.go @@ -118,7 +118,8 @@ func initViper(cmd *cobra.Command) (*viper.Viper, error) { // Read in configuration if err := v.ReadInConfig(); err != nil { - if errors.Is(err, viper.ConfigParseError{}) { + + if errors.As(err, &viper.ConfigParseError{}) { return nil, err } From be8ba189372f96d87abd22f85a6768ac936d91f2 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Thu, 12 Mar 2026 07:59:20 +0100 Subject: [PATCH 080/126] docs: add notice on proxy --- www/docs/authentication.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/www/docs/authentication.md b/www/docs/authentication.md index 75270f8cc7..4308b01c12 100644 --- a/www/docs/authentication.md +++ b/www/docs/authentication.md @@ -38,7 +38,7 @@ Where `X-My-Header` is the HTTP header provided by your proxy with the username. > [!WARNING] > -> File Browser will blindly trust the provided header. If the proxy can be bypassed, an attacker could simply attach the header and get admin access. +> File Browser will blindly trust the provided header. If the proxy can be bypassed, an attacker could simply attach the header and get admin access. Please ensure that File Browser is not accessible from untrusted networks, and that the proxy is correctly configured to strip/overwrite the header from client requests. ## Hook Authentication From 79875bac7ffb7534ab20d219da87be23e9ddd6db Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 14 Mar 2026 07:51:04 +0100 Subject: [PATCH 081/126] chore(deps): update marocchino/sticky-pull-request-comment action to v3 (#5833) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/lint-pr.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/lint-pr.yaml b/.github/workflows/lint-pr.yaml index f00f44150f..9a4e26156c 100644 --- a/.github/workflows/lint-pr.yaml +++ b/.github/workflows/lint-pr.yaml @@ -21,7 +21,7 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - uses: marocchino/sticky-pull-request-comment@v2 + - uses: marocchino/sticky-pull-request-comment@v3 # When the previous steps fails, the workflow would stop. By adding this # condition you can continue the execution with the populated error message. if: always() && (steps.lint_pr_title.outputs.error_message != null) @@ -40,7 +40,7 @@ jobs: # Delete a previous comment when the issue has been resolved - if: ${{ steps.lint_pr_title.outputs.error_message == null }} - uses: marocchino/sticky-pull-request-comment@v2 + uses: marocchino/sticky-pull-request-comment@v3 with: header: pr-title-lint-error delete: true From 27afbb8813c1a1f58c2fd8f90b1f4ecb90bf5aac Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 14 Mar 2026 07:52:28 +0100 Subject: [PATCH 082/126] chore(deps): update dependency @vitejs/plugin-legacy to v8 (#5830) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- frontend/package.json | 2 +- frontend/pnpm-lock.yaml | 72 ++++++++++++++++++++--------------------- 2 files changed, 36 insertions(+), 38 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 6e5796baed..a141db267b 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -54,7 +54,7 @@ "@types/lodash-es": "^4.17.12", "@types/node": "^24.10.1", "@typescript-eslint/eslint-plugin": "^8.37.0", - "@vitejs/plugin-legacy": "^7.2.1", + "@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", diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 1446cc027c..71ba5fc432 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -115,8 +115,8 @@ importers: specifier: ^8.37.0 version: 8.56.1(@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: ^7.2.1 - version: 7.2.1(terser@5.46.0)(vite@7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2)) + specifier: ^8.0.0 + version: 8.0.0(terser@5.46.0)(vite@7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2)) '@vitejs/plugin-vue': specifier: ^6.0.1 version: 6.0.4(vite@7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.29(typescript@5.9.3)) @@ -209,6 +209,11 @@ packages: 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'} @@ -1421,12 +1426,12 @@ packages: '@videojs/xhr@2.7.0': resolution: {integrity: sha512-giab+EVRanChIupZK7gXjHy90y3nncA2phIOyG3Ne5fvpiMJzvqYwiTOnEVW2S4CoYcuKJkomat7bMXA/UoUZQ==} - '@vitejs/plugin-legacy@7.2.1': - resolution: {integrity: sha512-CaXb/y0mlfu7jQRELEJJc2/5w2bX2m1JraARgFnvSB2yfvnCNJVWWlqAo6WjnKoepOwKx8gs0ugJThPLKCOXIg==} + '@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: ^7.0.0 + vite: ^8.0.0 '@vitejs/plugin-vue@6.0.4': resolution: {integrity: sha512-uM5iXipgYIn13UUQCZNdWkYk+sysBeA97d5mHsAoAt1u/wpN3+zxOmsVJWosuzX+IMGRzeYUNytztrYznboIkQ==} @@ -1660,18 +1665,13 @@ packages: peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - babel-plugin-polyfill-corejs3@0.13.0: - resolution: {integrity: sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==} + 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-corejs3@0.14.0: - resolution: {integrity: sha512-AvDcMxJ34W4Wgy4KBIIePQTAOP1Ie2WFwkQp3dB7FQ/f0lI5+nM96zUnYEOE1P9sEg0es5VCP0HxiWu5fUHZAQ==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-plugin-polyfill-regenerator@0.6.6: - resolution: {integrity: sha512-hYm+XLYRMvupxiQzrvXUj7YyvFFVfv5gI0R71AJzudg1g2AI2vyCPPIFEBjk162/wFzti3inBHo7isWFuEVS/A==} + 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 @@ -1718,9 +1718,6 @@ packages: buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - caniuse-lite@1.0.30001769: - resolution: {integrity: sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==} - caniuse-lite@1.0.30001774: resolution: {integrity: sha512-DDdwPGz99nmIEv216hKSgLD+D4ikHQHjBC/seF98N9CPqRX4M5mSxT9eTV6oyisnJcuzxtZy4n17yKKQYmYQOA==} @@ -2860,6 +2857,17 @@ snapshots: 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': @@ -3396,8 +3404,8 @@ snapshots: '@babel/plugin-transform-unicode-sets-regex': 7.28.6(@babel/core@7.29.0) '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.29.0) babel-plugin-polyfill-corejs2: 0.4.15(@babel/core@7.29.0) - babel-plugin-polyfill-corejs3: 0.14.0(@babel/core@7.29.0) - babel-plugin-polyfill-regenerator: 0.6.6(@babel/core@7.29.0) + 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: @@ -4037,14 +4045,14 @@ snapshots: global: 4.4.0 is-function: 1.0.2 - '@vitejs/plugin-legacy@7.2.1(terser@5.46.0)(vite@7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2))': + '@vitejs/plugin-legacy@8.0.0(terser@5.46.0)(vite@7.3.1(@types/node@24.12.0)(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.13.0(@babel/core@7.29.0) - babel-plugin-polyfill-regenerator: 0.6.6(@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 @@ -4325,26 +4333,18 @@ snapshots: transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.29.0): - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-define-polyfill-provider': 0.6.6(@babel/core@7.29.0) - core-js-compat: 3.48.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-corejs3@0.14.0(@babel/core@7.29.0): + 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.6(@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.6(@babel/core@7.29.0): + 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.6(@babel/core@7.29.0) + '@babel/helper-define-polyfill-provider': 0.6.7(@babel/core@7.29.0) transitivePeerDependencies: - supports-color @@ -4378,15 +4378,13 @@ snapshots: browserslist@4.28.1: dependencies: baseline-browser-mapping: 2.9.19 - caniuse-lite: 1.0.30001769 + 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.30001769: {} - caniuse-lite@1.0.30001774: {} chokidar@5.0.0: From 3c5d36673f87517168f7412f89c4ac0831145faf Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 14 Mar 2026 07:53:53 +0100 Subject: [PATCH 083/126] chore(deps): update all non-major dependencies (#5818) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- frontend/package.json | 2 +- frontend/pnpm-lock.yaml | 385 +++++++++++++++++++++------------------- go.mod | 16 +- go.sum | 24 +-- 4 files changed, 226 insertions(+), 201 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index a141db267b..4b383137fc 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -72,5 +72,5 @@ "vite-plugin-compression2": "^2.3.1", "vue-tsc": "^3.1.3" }, - "packageManager": "pnpm@10.30.3+sha512.c961d1e0a2d8e354ecaa5166b822516668b7f44cb5bd95122d590dd81922f606f5473b6d23ec4a5be05e7fcd18e8488d47d978bbe981872f1145d06e9a740017" + "packageManager": "pnpm@10.32.1+sha512.a706938f0e89ac1456b6563eab4edf1d1faf3368d1191fc5c59790e96dc918e4456ab2e67d613de1043d2e8c81f87303e6b40d4ffeca9df15ef1ad567348f2be" } diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 71ba5fc432..cf778b3568 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -10,13 +10,13 @@ importers: dependencies: '@chenfengyuan/vue-number-input': specifier: ^2.0.1 - version: 2.0.1(vue@3.5.29(typescript@5.9.3)) + 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.29(typescript@5.9.3)) + 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.29(typescript@5.9.3)) + 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 @@ -25,10 +25,10 @@ importers: version: 6.1.0 dayjs: specifier: ^1.11.13 - version: 1.11.19 + version: 1.11.20 dompurify: specifier: ^3.2.6 - version: 3.3.2 + version: 3.3.3 epubjs: specifier: ^0.3.93 version: 0.3.93 @@ -58,13 +58,13 @@ importers: version: 8.0.1 pinia: specifier: ^3.0.4 - version: 3.0.4(typescript@5.9.3)(vue@3.5.29(typescript@5.9.3)) + 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.29(typescript@5.9.3)) + version: 3.8.0(vue@3.5.30(typescript@5.9.3)) tus-js-client: specifier: ^4.3.1 version: 4.3.1 @@ -82,10 +82,10 @@ importers: version: 1.2.2(video.js@8.23.7) vue: specifier: ^3.5.17 - version: 3.5.29(typescript@5.9.3) + version: 3.5.30(typescript@5.9.3) vue-i18n: specifier: ^11.1.10 - version: 11.2.8(vue@3.5.29(typescript@5.9.3)) + version: 11.3.0(vue@3.5.30(typescript@5.9.3)) vue-lazyload: specifier: ^3.0.0 version: 3.0.0 @@ -94,14 +94,14 @@ importers: version: 1.3.4 vue-router: specifier: ^5.0.0 - version: 5.0.3(@vue/compiler-sfc@3.5.29)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.29(typescript@5.9.3)))(vue@3.5.29(typescript@5.9.3)) + 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.29(typescript@5.9.3)) + 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.29)(eslint@10.0.3)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.2.8(vue@3.5.29(typescript@5.9.3)))(vue@3.5.29(typescript@5.9.3)) + 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 @@ -113,13 +113,13 @@ importers: version: 24.12.0 '@typescript-eslint/eslint-plugin': specifier: ^8.37.0 - version: 8.56.1(@typescript-eslint/parser@8.56.0(eslint@10.0.3)(typescript@5.9.3))(eslint@10.0.3)(typescript@5.9.3) + 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@7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2)) '@vitejs/plugin-vue': specifier: ^6.0.1 - version: 6.0.4(vite@7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.29(typescript@5.9.3)) + version: 6.0.5(vite@7.3.1(@types/node@24.12.0)(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) @@ -128,7 +128,7 @@ importers: 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.29(typescript@5.9.3)) + 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) @@ -161,7 +161,7 @@ importers: version: 7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2) vite-plugin-compression2: specifier: ^2.3.1 - version: 2.5.0(rollup@4.57.1) + version: 2.5.1(rollup@4.57.1) vue-tsc: specifier: ^3.1.3 version: 3.2.5(typescript@5.9.3) @@ -1043,18 +1043,30 @@ packages: vue-i18n: optional: true - '@intlify/core-base@11.2.8': - resolution: {integrity: sha512-nBq6Y1tVkjIUsLsdOjDSJj4AsjvD0UG3zsg9Fyc+OivwlA/oMHSKooUy9tpKj0HqZ+NWFifweHavdljlBLTwdA==} + '@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'} @@ -1310,11 +1322,11 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/eslint-plugin@8.56.1': - resolution: {integrity: sha512-Jz9ZztpB37dNC+HU2HI28Bs9QXpzCz+y/twHOwhyrIRdbuVDxSytJNDl6z/aAKlaRIwC7y8wJdkBv7FxYGgi0A==} + '@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.56.1 + '@typescript-eslint/parser': ^8.57.0 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' @@ -1331,8 +1343,8 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.56.1': - resolution: {integrity: sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ==} + '@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' @@ -1341,8 +1353,8 @@ packages: 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.56.1': - resolution: {integrity: sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==} + '@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': @@ -1351,8 +1363,8 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/tsconfig-utils@8.56.1': - resolution: {integrity: sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ==} + '@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' @@ -1364,8 +1376,8 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.56.1': - resolution: {integrity: sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg==} + '@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 @@ -1375,8 +1387,8 @@ packages: resolution: {integrity: sha512-DBsLPs3GsWhX5HylbP9HNG15U0bnwut55Lx12bHB9MpXxQ+R5GC8MwQe+N1UFXxAeQDvEsEDY6ZYwX03K7Z6HQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.56.1': - resolution: {integrity: sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==} + '@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': @@ -1385,8 +1397,8 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/typescript-estree@8.56.1': - resolution: {integrity: sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==} + '@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' @@ -1398,8 +1410,8 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.56.1': - resolution: {integrity: sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==} + '@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 @@ -1409,8 +1421,8 @@ packages: 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.56.1': - resolution: {integrity: sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==} + '@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': @@ -1433,11 +1445,11 @@ packages: terser: ^5.16.0 vite: ^8.0.0 - '@vitejs/plugin-vue@6.0.4': - resolution: {integrity: sha512-uM5iXipgYIn13UUQCZNdWkYk+sysBeA97d5mHsAoAt1u/wpN3+zxOmsVJWosuzX+IMGRzeYUNytztrYznboIkQ==} + '@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-0 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 vue: ^3.2.25 '@volar/language-core@2.4.28': @@ -1461,26 +1473,26 @@ packages: '@vue/compiler-core@3.5.28': resolution: {integrity: sha512-kviccYxTgoE8n6OCw96BNdYlBg2GOWfBuOW4Vqwrt7mSKWKwFVvI8egdTltqRgITGPsTFYtKYfxIG8ptX2PJHQ==} - '@vue/compiler-core@3.5.29': - resolution: {integrity: sha512-cuzPhD8fwRHk8IGfmYaR4eEe4cAyJEL66Ove/WZL7yWNL134nqLddSLwNRIsFlnnW1kK+p8Ck3viFnC0chXCXw==} + '@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.29': - resolution: {integrity: sha512-n0G5o7R3uBVmVxjTIYcz7ovr8sy7QObFG8OQJ3xGCDNhbG60biP/P5KnyY8NLd81OuT1WJflG7N4KWYHaeeaIg==} + '@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.29': - resolution: {integrity: sha512-oJZhN5XJs35Gzr50E82jg2cYdZQ78wEwvRO6Y63TvLVTc+6xICzJHP1UIecdSPPYIbkautNBanDiWYa64QSFIA==} + '@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.29': - resolution: {integrity: sha512-Y/ARJZE6fpjzL5GH/phJmsFwx3g6t2KmHKHx5q+MLl2kencADKIrhH5MLF6HHpRMmlRAYBRSvv347Mepf1zVNw==} + '@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==} @@ -1523,25 +1535,25 @@ packages: '@vue/language-core@3.2.5': resolution: {integrity: sha512-d3OIxN/+KRedeM5wQ6H6NIpwS3P5gC9nmyaHgBk+rO6dIsjY+tOh4UlPpiZbAh3YtLdCGEX4M16RmsBqPmJV+g==} - '@vue/reactivity@3.5.29': - resolution: {integrity: sha512-zcrANcrRdcLtmGZETBxWqIkoQei8HaFpZWx/GHKxx79JZsiZ8j1du0VUJtu4eJjgFvU/iKL5lRXFXksVmI+5DA==} + '@vue/reactivity@3.5.30': + resolution: {integrity: sha512-179YNgKATuwj9gB+66snskRDOitDiuOZqkYia7mHKJaidOMo/WJxHKF8DuGc4V4XbYTJANlfEKb0yxTQotnx4Q==} - '@vue/runtime-core@3.5.29': - resolution: {integrity: sha512-8DpW2QfdwIWOLqtsNcds4s+QgwSaHSJY/SUe04LptianUQ/0xi6KVsu/pYVh+HO3NTVvVJjIPL2t6GdeKbS4Lg==} + '@vue/runtime-core@3.5.30': + resolution: {integrity: sha512-e0Z+8PQsUTdwV8TtEsLzUM7SzC7lQwYKePydb7K2ZnmS6jjND+WJXkmmfh/swYzRyfP1EY3fpdesyYoymCzYfg==} - '@vue/runtime-dom@3.5.29': - resolution: {integrity: sha512-AHvvJEtcY9tw/uk+s/YRLSlxxQnqnAkjqvK25ZiM4CllCZWzElRAoQnCM42m9AHRLNJ6oe2kC5DCgD4AUdlvXg==} + '@vue/runtime-dom@3.5.30': + resolution: {integrity: sha512-2UIGakjU4WSQ0T4iwDEW0W7vQj6n7AFn7taqZ9Cvm0Q/RA2FFOziLESrDL4GmtI1wV3jXg5nMoJSYO66egDUBw==} - '@vue/server-renderer@3.5.29': - resolution: {integrity: sha512-G/1k6WK5MusLlbxSE2YTcqAAezS+VuwHhOvLx2KnQU7G2zCH6KIb+5Wyt6UjMq7a3qPzNEjJXs1hvAxDclQH+g==} + '@vue/server-renderer@3.5.30': + resolution: {integrity: sha512-v+R34icapydRwbZRD0sXwtHqrQJv38JuMB4JxbOxd8NEpGLny7cncMp53W9UH/zo4j8eDHjQ1dEJXwzFQknjtQ==} peerDependencies: - vue: 3.5.29 + vue: 3.5.30 '@vue/shared@3.5.28': resolution: {integrity: sha512-cfWa1fCGBxrvaHRhvV3Is0MgmrbSCxYTXCSCau2I0a1Xw1N1pHAvkWCiXPRAqjvToILvguNyEwjevUqAuBQWvQ==} - '@vue/shared@3.5.29': - resolution: {integrity: sha512-w7SR0A5zyRByL9XUkCfdLs7t9XOHUyJ67qPGQjOou3p6GvBeBW+AVjUUmlxtZ4PIYaRvE+1LmK44O4uajlZwcg==} + '@vue/shared@3.5.30': + resolution: {integrity: sha512-YXgQ7JjaO18NeK2K9VTbDHaFy62WrObMa6XERNfNOkAhD1F1oDSf3ZJ7K6GqabZ0BvSDHajp8qfS5Sa2I9n8uQ==} '@vue/tsconfig@0.9.0': resolution: {integrity: sha512-RP+v9Cpbsk1ZVXltCHHkYBr7+624x6gcijJXVjIcsYk7JXqvIpRtMwU2ARLvWDhmy9ffdFYxhsfJnPztADBohQ==} @@ -1779,8 +1791,8 @@ packages: resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==} engines: {node: '>=0.12'} - dayjs@1.11.19: - resolution: {integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==} + dayjs@1.11.20: + resolution: {integrity: sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==} debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} @@ -1797,9 +1809,8 @@ packages: dom-walk@0.1.2: resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==} - dompurify@3.3.2: - resolution: {integrity: sha512-6obghkliLdmKa56xdbLOpUZ43pAR6xFy1uOrxBaIDjT+yaRuuybLjGS9eVBoSR/UPU5fq3OXClEHLJNGvbxKpQ==} - engines: {node: '>=20'} + dompurify@3.3.3: + resolution: {integrity: sha512-Oj6pzI2+RqBfFG+qOaOLbFXLQ90ARpcGG6UePL82bJLtdsa6CYJD7nmiU8MW9nQNOtCHV3lZ/Bzq1X0QYbBZCA==} electron-to-chromium@1.5.286: resolution: {integrity: sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==} @@ -2646,8 +2657,8 @@ packages: videojs-vtt.js@0.15.5: resolution: {integrity: sha512-yZbBxvA7QMYn15Lr/ZfhhLPrNpI/RmCSCqgIff57GC2gIrV5YfyzLfLyZMj0NnZSAz8syB4N0nHXpZg9MyrMOQ==} - vite-plugin-compression2@2.5.0: - resolution: {integrity: sha512-bHxtBibPxxSn5eZSe0IAzvYucP/hg8Bz8ppjbH7lndU5kIHT+92qTkB4z9xWYfnyV0YHuir1SjOuyO0fzU4Vgg==} + vite-plugin-compression2@2.5.1: + resolution: {integrity: sha512-2YpLZWs1ZRo9XwtSFA6/NVuBgOR+kvFk8M0HNDsP7Wu7OfJDOKT6fHB8kzuvw6jhgC9KYgDOttfaG2qC0wE9AQ==} vite@7.3.1: resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} @@ -2698,8 +2709,8 @@ packages: peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - vue-i18n@11.2.8: - resolution: {integrity: sha512-vJ123v/PXCZntd6Qj5Jumy7UBmIuE92VrtdX+AXr+1WzdBHojiBxnAxdfctUFL+/JIN+VQH4BhsfTtiGsvVObg==} + vue-i18n@11.3.0: + resolution: {integrity: sha512-1J+xDfDJTLhDxElkd3+XUhT7FYSZd2b8pa7IRKGxhWH/8yt6PTvi3xmWhGwhYT5EaXdatui11pF2R6tL73/zPA==} engines: {node: '>= 16'} peerDependencies: vue: ^3.0.0 @@ -2736,8 +2747,8 @@ packages: peerDependencies: typescript: '>=5.0.0' - vue@3.5.29: - resolution: {integrity: sha512-BZqN4Ze6mDQVNAni0IHeMJ5mwr8VAJ3MQC9FmprRhcBYENw+wOAAjRj8jfmN6FLl0j96OXbR+CjWhmAmM+QGnA==} + vue@3.5.30: + resolution: {integrity: sha512-hTHLc6VNZyzzEH/l7PFGjpcTvUgiaPK5mdLkbjrTeWSRcEfxFrv56g/XckIYlE9ckuobsdwqd5mk2g1sBkMewg==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -3443,9 +3454,9 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 - '@chenfengyuan/vue-number-input@2.0.1(vue@3.5.29(typescript@5.9.3))': + '@chenfengyuan/vue-number-input@2.0.1(vue@3.5.30(typescript@5.9.3))': dependencies: - vue: 3.5.29(typescript@5.9.3) + vue: 3.5.30(typescript@5.9.3) '@esbuild/aix-ppc64@0.25.12': optional: true @@ -3644,7 +3655,7 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} - '@intlify/bundle-utils@11.0.7(vue-i18n@11.2.8(vue@3.5.29(typescript@5.9.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 @@ -3656,26 +3667,39 @@ snapshots: source-map-js: 1.2.1 yaml-eslint-parser: 1.3.2 optionalDependencies: - vue-i18n: 11.2.8(vue@3.5.29(typescript@5.9.3)) + vue-i18n: 11.3.0(vue@3.5.30(typescript@5.9.3)) - '@intlify/core-base@11.2.8': + '@intlify/core-base@11.3.0': dependencies: - '@intlify/message-compiler': 11.2.8 - '@intlify/shared': 11.2.8 + '@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/unplugin-vue-i18n@11.0.7(@vue/compiler-dom@3.5.29)(eslint@10.0.3)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.2.8(vue@3.5.29(typescript@5.9.3)))(vue@3.5.29(typescript@5.9.3))': + '@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.2.8(vue@3.5.29(typescript@5.9.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.29)(vue-i18n@11.2.8(vue@3.5.29(typescript@5.9.3)))(vue@3.5.29(typescript@5.9.3)) + '@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) @@ -3684,9 +3708,9 @@ snapshots: pathe: 2.0.3 picocolors: 1.1.1 unplugin: 2.3.11 - vue: 3.5.29(typescript@5.9.3) + vue: 3.5.30(typescript@5.9.3) optionalDependencies: - vue-i18n: 11.2.8(vue@3.5.29(typescript@5.9.3)) + vue-i18n: 11.3.0(vue@3.5.30(typescript@5.9.3)) transitivePeerDependencies: - '@vue/compiler-dom' - eslint @@ -3694,14 +3718,14 @@ snapshots: - supports-color - typescript - '@intlify/vue-i18n-extensions@8.0.0(@intlify/shared@11.2.8)(@vue/compiler-dom@3.5.29)(vue-i18n@11.2.8(vue@3.5.29(typescript@5.9.3)))(vue@3.5.29(typescript@5.9.3))': + '@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.29 - vue: 3.5.29(typescript@5.9.3) - vue-i18n: 11.2.8(vue@3.5.29(typescript@5.9.3)) + '@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: @@ -3869,14 +3893,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.56.1(@typescript-eslint/parser@8.56.0(eslint@10.0.3)(typescript@5.9.3))(eslint@10.0.3)(typescript@5.9.3)': + '@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.56.1 - '@typescript-eslint/type-utils': 8.56.1(eslint@10.0.3)(typescript@5.9.3) - '@typescript-eslint/utils': 8.56.1(eslint@10.0.3)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.56.1 + '@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 @@ -3906,10 +3930,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.56.1(typescript@5.9.3)': + '@typescript-eslint/project-service@8.57.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.56.1(typescript@5.9.3) - '@typescript-eslint/types': 8.56.1 + '@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: @@ -3920,16 +3944,16 @@ snapshots: '@typescript-eslint/types': 8.56.0 '@typescript-eslint/visitor-keys': 8.56.0 - '@typescript-eslint/scope-manager@8.56.1': + '@typescript-eslint/scope-manager@8.57.0': dependencies: - '@typescript-eslint/types': 8.56.1 - '@typescript-eslint/visitor-keys': 8.56.1 + '@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.56.1(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.57.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 @@ -3945,11 +3969,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.56.1(eslint@10.0.3)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.57.0(eslint@10.0.3)(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.56.1 - '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.9.3) - '@typescript-eslint/utils': 8.56.1(eslint@10.0.3)(typescript@5.9.3) + '@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) @@ -3959,7 +3983,7 @@ snapshots: '@typescript-eslint/types@8.56.0': {} - '@typescript-eslint/types@8.56.1': {} + '@typescript-eslint/types@8.57.0': {} '@typescript-eslint/typescript-estree@8.56.0(typescript@5.9.3)': dependencies: @@ -3976,12 +4000,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.56.1(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.57.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.56.1(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.56.1(typescript@5.9.3) - '@typescript-eslint/types': 8.56.1 - '@typescript-eslint/visitor-keys': 8.56.1 + '@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 @@ -4002,12 +4026,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.56.1(eslint@10.0.3)(typescript@5.9.3)': + '@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.56.1 - '@typescript-eslint/types': 8.56.1 - '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.9.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: @@ -4018,9 +4042,9 @@ snapshots: '@typescript-eslint/types': 8.56.0 eslint-visitor-keys: 5.0.1 - '@typescript-eslint/visitor-keys@8.56.1': + '@typescript-eslint/visitor-keys@8.57.0': dependencies: - '@typescript-eslint/types': 8.56.1 + '@typescript-eslint/types': 8.57.0 eslint-visitor-keys: 5.0.1 '@videojs/http-streaming@3.17.4(video.js@8.23.7)': @@ -4064,11 +4088,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@6.0.4(vite@7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.29(typescript@5.9.3))': + '@vitejs/plugin-vue@6.0.5(vite@7.3.1(@types/node@24.12.0)(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: 7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2) - vue: 3.5.29(typescript@5.9.3) + vue: 3.5.30(typescript@5.9.3) '@volar/language-core@2.4.28': dependencies: @@ -4082,7 +4106,7 @@ snapshots: path-browserify: 1.0.1 vscode-uri: 3.1.0 - '@vue-macros/common@3.1.2(vue@3.5.29(typescript@5.9.3))': + '@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 @@ -4090,7 +4114,7 @@ snapshots: magic-string-ast: 1.0.3 unplugin-utils: 0.3.1 optionalDependencies: - vue: 3.5.29(typescript@5.9.3) + vue: 3.5.30(typescript@5.9.3) '@vue/compiler-core@3.5.28': dependencies: @@ -4100,10 +4124,10 @@ snapshots: estree-walker: 2.0.2 source-map-js: 1.2.1 - '@vue/compiler-core@3.5.29': + '@vue/compiler-core@3.5.30': dependencies: '@babel/parser': 7.29.0 - '@vue/shared': 3.5.29 + '@vue/shared': 3.5.30 entities: 7.0.1 estree-walker: 2.0.2 source-map-js: 1.2.1 @@ -4113,10 +4137,10 @@ snapshots: '@vue/compiler-core': 3.5.28 '@vue/shared': 3.5.28 - '@vue/compiler-dom@3.5.29': + '@vue/compiler-dom@3.5.30': dependencies: - '@vue/compiler-core': 3.5.29 - '@vue/shared': 3.5.29 + '@vue/compiler-core': 3.5.30 + '@vue/shared': 3.5.30 '@vue/compiler-sfc@3.5.28': dependencies: @@ -4130,13 +4154,13 @@ snapshots: postcss: 8.5.8 source-map-js: 1.2.1 - '@vue/compiler-sfc@3.5.29': + '@vue/compiler-sfc@3.5.30': dependencies: '@babel/parser': 7.29.0 - '@vue/compiler-core': 3.5.29 - '@vue/compiler-dom': 3.5.29 - '@vue/compiler-ssr': 3.5.29 - '@vue/shared': 3.5.29 + '@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 @@ -4147,10 +4171,10 @@ snapshots: '@vue/compiler-dom': 3.5.28 '@vue/shared': 3.5.28 - '@vue/compiler-ssr@3.5.29': + '@vue/compiler-ssr@3.5.30': dependencies: - '@vue/compiler-dom': 3.5.29 - '@vue/shared': 3.5.29 + '@vue/compiler-dom': 3.5.30 + '@vue/shared': 3.5.30 '@vue/devtools-api@6.6.4': {} @@ -4222,58 +4246,58 @@ snapshots: path-browserify: 1.0.1 picomatch: 4.0.3 - '@vue/reactivity@3.5.29': + '@vue/reactivity@3.5.30': dependencies: - '@vue/shared': 3.5.29 + '@vue/shared': 3.5.30 - '@vue/runtime-core@3.5.29': + '@vue/runtime-core@3.5.30': dependencies: - '@vue/reactivity': 3.5.29 - '@vue/shared': 3.5.29 + '@vue/reactivity': 3.5.30 + '@vue/shared': 3.5.30 - '@vue/runtime-dom@3.5.29': + '@vue/runtime-dom@3.5.30': dependencies: - '@vue/reactivity': 3.5.29 - '@vue/runtime-core': 3.5.29 - '@vue/shared': 3.5.29 + '@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.29(vue@3.5.29(typescript@5.9.3))': + '@vue/server-renderer@3.5.30(vue@3.5.30(typescript@5.9.3))': dependencies: - '@vue/compiler-ssr': 3.5.29 - '@vue/shared': 3.5.29 - vue: 3.5.29(typescript@5.9.3) + '@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.29': {} + '@vue/shared@3.5.30': {} - '@vue/tsconfig@0.9.0(typescript@5.9.3)(vue@3.5.29(typescript@5.9.3))': + '@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.29(typescript@5.9.3) + vue: 3.5.30(typescript@5.9.3) - '@vueuse/core@14.2.1(vue@3.5.29(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.29(typescript@5.9.3)) - vue: 3.5.29(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) - '@vueuse/integrations@14.2.1(focus-trap@8.0.0)(jwt-decode@4.0.0)(vue@3.5.29(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.29(typescript@5.9.3)) - '@vueuse/shared': 14.2.1(vue@3.5.29(typescript@5.9.3)) - vue: 3.5.29(typescript@5.9.3) + '@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.29(typescript@5.9.3))': + '@vueuse/shared@14.2.1(vue@3.5.30(typescript@5.9.3))': dependencies: - vue: 3.5.29(typescript@5.9.3) + vue: 3.5.30(typescript@5.9.3) '@xmldom/xmldom@0.7.13': {} @@ -4437,7 +4461,7 @@ snapshots: es5-ext: 0.10.64 type: 2.7.3 - dayjs@1.11.19: {} + dayjs@1.11.20: {} debug@4.4.3: dependencies: @@ -4447,7 +4471,7 @@ snapshots: dom-walk@0.1.2: {} - dompurify@3.3.2: + dompurify@3.3.3: optionalDependencies: '@types/trusted-types': 2.0.7 @@ -5013,10 +5037,10 @@ snapshots: picomatch@4.0.3: {} - pinia@3.0.4(typescript@5.9.3)(vue@3.5.29(typescript@5.9.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.29(typescript@5.9.3) + vue: 3.5.30(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 @@ -5071,9 +5095,9 @@ snapshots: punycode@2.3.1: {} - qrcode.vue@3.8.0(vue@3.5.29(typescript@5.9.3)): + qrcode.vue@3.8.0(vue@3.5.30(typescript@5.9.3)): dependencies: - vue: 3.5.29(typescript@5.9.3) + vue: 3.5.30(typescript@5.9.3) quansync@0.2.11: {} @@ -5351,7 +5375,7 @@ snapshots: dependencies: global: 4.4.0 - vite-plugin-compression2@2.5.0(rollup@4.57.1): + 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 @@ -5386,12 +5410,13 @@ snapshots: transitivePeerDependencies: - supports-color - vue-i18n@11.2.8(vue@3.5.29(typescript@5.9.3)): + vue-i18n@11.3.0(vue@3.5.30(typescript@5.9.3)): dependencies: - '@intlify/core-base': 11.2.8 - '@intlify/shared': 11.2.8 + '@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.29(typescript@5.9.3) + vue: 3.5.30(typescript@5.9.3) vue-lazyload@3.0.0: {} @@ -5399,10 +5424,10 @@ snapshots: dependencies: epubjs: 0.3.93 - vue-router@5.0.3(@vue/compiler-sfc@3.5.29)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.29(typescript@5.9.3)))(vue@3.5.29(typescript@5.9.3)): + 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.29(typescript@5.9.3)) + '@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 @@ -5417,15 +5442,15 @@ snapshots: tinyglobby: 0.2.15 unplugin: 3.0.0 unplugin-utils: 0.3.1 - vue: 3.5.29(typescript@5.9.3) + vue: 3.5.30(typescript@5.9.3) yaml: 2.8.2 optionalDependencies: - '@vue/compiler-sfc': 3.5.29 - pinia: 3.0.4(typescript@5.9.3)(vue@3.5.29(typescript@5.9.3)) + '@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.29(typescript@5.9.3)): + vue-toastification@2.0.0-rc.5(vue@3.5.30(typescript@5.9.3)): dependencies: - vue: 3.5.29(typescript@5.9.3) + vue: 3.5.30(typescript@5.9.3) vue-tsc@3.2.5(typescript@5.9.3): dependencies: @@ -5433,13 +5458,13 @@ snapshots: '@vue/language-core': 3.2.5 typescript: 5.9.3 - vue@3.5.29(typescript@5.9.3): + vue@3.5.30(typescript@5.9.3): dependencies: - '@vue/compiler-dom': 3.5.29 - '@vue/compiler-sfc': 3.5.29 - '@vue/runtime-dom': 3.5.29 - '@vue/server-renderer': 3.5.29(vue@3.5.29(typescript@5.9.3)) - '@vue/shared': 3.5.29 + '@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 diff --git a/go.mod b/go.mod index cf34bdf122..e354852959 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/filebrowser/filebrowser/v2 -go 1.25 +go 1.25.0 require ( github.com/asdine/storm/v3 v3.2.1 @@ -25,9 +25,10 @@ require ( github.com/spf13/viper v1.21.0 github.com/stretchr/testify v1.11.1 github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce - golang.org/x/crypto v0.48.0 - golang.org/x/image v0.36.0 - golang.org/x/text v0.34.0 + go.etcd.io/bbolt v1.4.3 + golang.org/x/crypto v0.49.0 + golang.org/x/image v0.37.0 + golang.org/x/text v0.35.0 gopkg.in/natefinch/lumberjack.v2 v2.2.1 gopkg.in/yaml.v3 v3.0.1 ) @@ -73,13 +74,12 @@ require ( github.com/subosito/gotenv v1.6.0 // indirect github.com/ulikunitz/xz v0.5.15 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect - go.etcd.io/bbolt v1.4.3 // indirect go.uber.org/atomic v1.11.0 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect go4.org v0.0.0-20230225012048-214862532bf5 // indirect - golang.org/x/net v0.49.0 // indirect - golang.org/x/sync v0.19.0 // indirect - golang.org/x/sys v0.41.0 // indirect + golang.org/x/net v0.51.0 // indirect + golang.org/x/sync v0.20.0 // indirect + golang.org/x/sys v0.42.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v2 v2.4.0 // indirect ) diff --git a/go.sum b/go.sum index 459182b048..07a252baeb 100644 --- a/go.sum +++ b/go.sum @@ -283,8 +283,8 @@ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= -golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= +golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4= +golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -296,8 +296,8 @@ golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EH golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.36.0 h1:Iknbfm1afbgtwPTmHnS2gTM/6PPZfH+z2EFuOkSbqwc= -golang.org/x/image v0.36.0/go.mod h1:YsWD2TyyGKiIX1kZlu9QfKIsQ4nAAK9bdgdrIsE7xy4= +golang.org/x/image v0.37.0 h1:ZiRjArKI8GwxZOoEtUfhrBtaCN+4b/7709dlT6SSnQA= +golang.org/x/image v0.37.0/go.mod h1:/3f6vaXC+6CEanU4KJxbcUZyEePbyKbaLoDOe4ehFYY= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -336,8 +336,8 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20221002022538-bcab6841153b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= -golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= +golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= +golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -350,8 +350,8 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= -golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= +golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -377,8 +377,8 @@ golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220928140112-f11e5e49a4ec/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= -golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= +golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= @@ -389,8 +389,8 @@ golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= -golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= +golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= +golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= From 6f772f2b105f989548fafa4ac233e92d0e6ee1b6 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 14 Mar 2026 07:55:25 +0100 Subject: [PATCH 084/126] ci: update transifex settings --- transifex.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/transifex.yml b/transifex.yml index 8a12912b6d..fdecb1ce56 100644 --- a/transifex.yml +++ b/transifex.yml @@ -9,6 +9,7 @@ settings: language_mapping: sv_SE: sv-se pt_BR: pt-br + pt_PT: pt-pt zh_CN: zh-cn zh_HK: zh-hk zh_TW: zh-tw From 846fb3333a31e31f9f4cea4a98bba13a97689dd6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 14 Mar 2026 07:55:55 +0100 Subject: [PATCH 085/126] chore(deps): update dependency vite to v8 (#5831) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- frontend/package.json | 2 +- frontend/pnpm-lock.yaml | 402 ++++++++++++++++++++++++++++++++++++++-- 2 files changed, 386 insertions(+), 18 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 4b383137fc..36c7ae095d 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -68,7 +68,7 @@ "prettier": "^3.6.2", "terser": "^5.43.1", "typescript": "^5.9.3", - "vite": "^7.2.2", + "vite": "^8.0.0", "vite-plugin-compression2": "^2.3.1", "vue-tsc": "^3.1.3" }, diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index cf778b3568..58de3b03df 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -116,10 +116,10 @@ importers: 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@7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2)) + 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@7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.30(typescript@5.9.3)) + 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) @@ -157,8 +157,8 @@ importers: specifier: ^5.9.3 version: 5.9.3 vite: - specifier: ^7.2.2 - version: 7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2) + 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) @@ -673,6 +673,15 @@ packages: 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'} @@ -1117,6 +1126,9 @@ packages: '@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'} @@ -1129,13 +1141,118 @@ packages: 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'} @@ -1286,6 +1403,9 @@ packages: '@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==} @@ -1806,6 +1926,10 @@ packages: 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==} @@ -2151,6 +2275,80 @@ packages: 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'} @@ -2463,6 +2661,11 @@ packages: 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'} @@ -2558,6 +2761,9 @@ packages: 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'} @@ -2660,15 +2866,16 @@ packages: vite-plugin-compression2@2.5.1: resolution: {integrity: sha512-2YpLZWs1ZRo9XwtSFA6/NVuBgOR+kvFk8M0HNDsP7Wu7OfJDOKT6fHB8kzuvw6jhgC9KYgDOttfaG2qC0wE9AQ==} - vite@7.3.1: - resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} + 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 - lightningcss: ^1.21.0 sass: ^1.70.0 sass-embedded: ^1.70.0 stylus: '>=0.54.8' @@ -2679,12 +2886,14 @@ packages: peerDependenciesMeta: '@types/node': optional: true + '@vitejs/devtools': + optional: true + esbuild: + optional: true jiti: optional: true less: optional: true - lightningcss: - optional: true sass: optional: true sass-embedded: @@ -3458,6 +3667,22 @@ snapshots: 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 @@ -3751,6 +3976,13 @@ snapshots: '@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 @@ -3763,10 +3995,63 @@ snapshots: '@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 @@ -3852,6 +4137,11 @@ snapshots: '@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': {} @@ -4069,7 +4359,7 @@ snapshots: global: 4.4.0 is-function: 1.0.2 - '@vitejs/plugin-legacy@8.0.0(terser@5.46.0)(vite@7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.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) @@ -4084,14 +4374,14 @@ snapshots: regenerator-runtime: 0.14.1 systemjs: 6.15.1 terser: 5.46.0 - vite: 7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2) + 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@7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.30(typescript@5.9.3))': + '@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: 7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.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': @@ -4469,6 +4759,8 @@ snapshots: deep-is@0.1.4: {} + detect-libc@2.1.2: {} + dom-walk@0.1.2: {} dompurify@3.3.3: @@ -4566,6 +4858,7 @@ snapshots: '@esbuild/win32-arm64': 0.27.3 '@esbuild/win32-ia32': 0.27.3 '@esbuild/win32-x64': 0.27.3 + optional: true escalade@3.2.0: {} @@ -4861,6 +5154,55 @@ snapshots: 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 @@ -5154,6 +5496,27 @@ snapshots: 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 @@ -5184,6 +5547,7 @@ snapshots: '@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: @@ -5259,6 +5623,9 @@ snapshots: dependencies: typescript: 5.9.3 + tslib@2.8.1: + optional: true + tus-js-client@4.3.1: dependencies: buffer-from: 1.1.2 @@ -5382,16 +5749,17 @@ snapshots: transitivePeerDependencies: - rollup - vite@7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2): + vite@8.0.0(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.0)(yaml@2.8.2): dependencies: - esbuild: 0.27.3 - fdir: 6.5.0(picomatch@4.0.3) + '@oxc-project/runtime': 0.115.0 + lightningcss: 1.32.0 picomatch: 4.0.3 postcss: 8.5.8 - rollup: 4.57.1 + 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 From 21709428b19252be13502f65e9131a2c3fb844ee Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 14 Mar 2026 07:56:59 +0100 Subject: [PATCH 086/126] ci: update transifex settings --- transifex.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/transifex.yml b/transifex.yml index fdecb1ce56..3ab4a61a31 100644 --- a/transifex.yml +++ b/transifex.yml @@ -14,3 +14,4 @@ settings: zh_HK: zh-hk zh_TW: zh-tw nl_BE: nl-be + lv_LV: lv-lv From 858eb426515ec55172e9cca47bdf1e25a0d0d81d Mon Sep 17 00:00:00 2001 From: "transifex-integration[bot]" <43880903+transifex-integration[bot]@users.noreply.github.com> Date: Sat, 14 Mar 2026 07:57:56 +0100 Subject: [PATCH 087/126] feat: Updates for project File Browser (#5807) Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com> --- frontend/src/i18n/ar.json | 4 +- frontend/src/i18n/bg.json | 4 +- frontend/src/i18n/ca.json | 4 +- frontend/src/i18n/cs.json | 4 +- frontend/src/i18n/de.json | 4 +- frontend/src/i18n/el.json | 4 +- frontend/src/i18n/es.json | 4 +- frontend/src/i18n/fa.json | 4 +- frontend/src/i18n/fr.json | 4 +- frontend/src/i18n/he.json | 4 +- frontend/src/i18n/hr.json | 4 +- frontend/src/i18n/hu.json | 4 +- frontend/src/i18n/is.json | 4 +- frontend/src/i18n/it.json | 4 +- frontend/src/i18n/ja.json | 4 +- frontend/src/i18n/ko.json | 4 +- frontend/src/i18n/lv.json | 4 +- frontend/src/i18n/lv_LV.json | 4 +- frontend/src/i18n/nl-be.json | 4 +- frontend/src/i18n/nl.json | 4 +- frontend/src/i18n/no.json | 4 +- frontend/src/i18n/pl.json | 4 +- frontend/src/i18n/pt-br.json | 4 +- frontend/src/i18n/pt.json | 4 +- frontend/src/i18n/pt_PT.json | 306 +++++++++++++++++++++++++++++++++++ frontend/src/i18n/ro.json | 4 +- frontend/src/i18n/ru.json | 4 +- frontend/src/i18n/sk.json | 4 +- frontend/src/i18n/sv-se.json | 4 +- frontend/src/i18n/tr.json | 4 +- frontend/src/i18n/uk.json | 4 +- frontend/src/i18n/vi.json | 4 +- frontend/src/i18n/zh-cn.json | 4 +- frontend/src/i18n/zh-tw.json | 4 +- 34 files changed, 405 insertions(+), 33 deletions(-) create mode 100644 frontend/src/i18n/pt_PT.json diff --git a/frontend/src/i18n/ar.json b/frontend/src/i18n/ar.json index 5df31c3ff4..cadd540283 100644 --- a/frontend/src/i18n/ar.json +++ b/frontend/src/i18n/ar.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "الصور", diff --git a/frontend/src/i18n/bg.json b/frontend/src/i18n/bg.json index 582c1059e3..2cba2b983f 100644 --- a/frontend/src/i18n/bg.json +++ b/frontend/src/i18n/bg.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Изображения", diff --git a/frontend/src/i18n/ca.json b/frontend/src/i18n/ca.json index c9e64b0f2d..4ce9faa0b3 100644 --- a/frontend/src/i18n/ca.json +++ b/frontend/src/i18n/ca.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Imatges", diff --git a/frontend/src/i18n/cs.json b/frontend/src/i18n/cs.json index 5d08768ac6..e354475f83 100644 --- a/frontend/src/i18n/cs.json +++ b/frontend/src/i18n/cs.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Obrázky", diff --git a/frontend/src/i18n/de.json b/frontend/src/i18n/de.json index bacaf0fa96..a09e2bdb51 100644 --- a/frontend/src/i18n/de.json +++ b/frontend/src/i18n/de.json @@ -175,7 +175,9 @@ "filesInDest": "Dateien im Zielordner", "override": "Überschreiben", "skip": "Überspringen", - "forbiddenError": "Zugriff verweigert" + "forbiddenError": "Zugriff verweigert", + "currentPassword": "Dein Passwort", + "currentPasswordMessage": "Gib dein Passwort ein, um diese Aktion zu bestätigen." }, "search": { "images": "Bilder", diff --git a/frontend/src/i18n/el.json b/frontend/src/i18n/el.json index 0ab2b58971..90853ab7da 100644 --- a/frontend/src/i18n/el.json +++ b/frontend/src/i18n/el.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Εικόνες", diff --git a/frontend/src/i18n/es.json b/frontend/src/i18n/es.json index 9f06513755..92847e62be 100644 --- a/frontend/src/i18n/es.json +++ b/frontend/src/i18n/es.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Imágenes", diff --git a/frontend/src/i18n/fa.json b/frontend/src/i18n/fa.json index 9f4504bd09..a40addba4b 100644 --- a/frontend/src/i18n/fa.json +++ b/frontend/src/i18n/fa.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "تصاویر", diff --git a/frontend/src/i18n/fr.json b/frontend/src/i18n/fr.json index 5d39372c1c..7a5e6070c4 100644 --- a/frontend/src/i18n/fr.json +++ b/frontend/src/i18n/fr.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Images", diff --git a/frontend/src/i18n/he.json b/frontend/src/i18n/he.json index dbb3263cc2..1b7a7b0bc2 100644 --- a/frontend/src/i18n/he.json +++ b/frontend/src/i18n/he.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "תמונות", diff --git a/frontend/src/i18n/hr.json b/frontend/src/i18n/hr.json index 1cb4368f0d..9626a0c756 100644 --- a/frontend/src/i18n/hr.json +++ b/frontend/src/i18n/hr.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Slike", diff --git a/frontend/src/i18n/hu.json b/frontend/src/i18n/hu.json index bdcb33ba00..4df490b8bc 100644 --- a/frontend/src/i18n/hu.json +++ b/frontend/src/i18n/hu.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Képek", diff --git a/frontend/src/i18n/is.json b/frontend/src/i18n/is.json index 3825849218..40f8fd6de6 100644 --- a/frontend/src/i18n/is.json +++ b/frontend/src/i18n/is.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Myndir", diff --git a/frontend/src/i18n/it.json b/frontend/src/i18n/it.json index f3e7478abf..a363bd0680 100644 --- a/frontend/src/i18n/it.json +++ b/frontend/src/i18n/it.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Immagini", diff --git a/frontend/src/i18n/ja.json b/frontend/src/i18n/ja.json index bf623ec224..79c29ac8bc 100644 --- a/frontend/src/i18n/ja.json +++ b/frontend/src/i18n/ja.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "画像", diff --git a/frontend/src/i18n/ko.json b/frontend/src/i18n/ko.json index 5bad2d5616..1ca34ed38b 100644 --- a/frontend/src/i18n/ko.json +++ b/frontend/src/i18n/ko.json @@ -175,7 +175,9 @@ "filesInDest": "대상 경로의 파일", "override": "덮어쓰기", "skip": "건너뛰기", - "forbiddenError": "권한 오류" + "forbiddenError": "권한 오류", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "이미지", diff --git a/frontend/src/i18n/lv.json b/frontend/src/i18n/lv.json index e852b17026..72cc0a5dd3 100644 --- a/frontend/src/i18n/lv.json +++ b/frontend/src/i18n/lv.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Attēli", diff --git a/frontend/src/i18n/lv_LV.json b/frontend/src/i18n/lv_LV.json index 748614d600..723076d73e 100644 --- a/frontend/src/i18n/lv_LV.json +++ b/frontend/src/i18n/lv_LV.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Attēli", diff --git a/frontend/src/i18n/nl-be.json b/frontend/src/i18n/nl-be.json index ee27329e97..f9fb8fd8b8 100644 --- a/frontend/src/i18n/nl-be.json +++ b/frontend/src/i18n/nl-be.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Afbeeldingen", diff --git a/frontend/src/i18n/nl.json b/frontend/src/i18n/nl.json index 5d507a5535..331eb3063f 100644 --- a/frontend/src/i18n/nl.json +++ b/frontend/src/i18n/nl.json @@ -175,7 +175,9 @@ "filesInDest": "Bestanden in bestemming", "override": "Overschrijven", "skip": "Overslaan", - "forbiddenError": "Verboden Fout" + "forbiddenError": "Verboden Fout", + "currentPassword": "Uw wachtwoord", + "currentPasswordMessage": "Voer uw wachtwoord in om deze actie te valideren." }, "search": { "images": "Afbeeldingen", diff --git a/frontend/src/i18n/no.json b/frontend/src/i18n/no.json index dd82ee85f8..cd77273984 100644 --- a/frontend/src/i18n/no.json +++ b/frontend/src/i18n/no.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Bilde", diff --git a/frontend/src/i18n/pl.json b/frontend/src/i18n/pl.json index 2a46352892..f613dd5173 100644 --- a/frontend/src/i18n/pl.json +++ b/frontend/src/i18n/pl.json @@ -175,7 +175,9 @@ "filesInDest": "Pliki w miejscu docelowym", "override": "Zastąp", "skip": "Pomiń", - "forbiddenError": "Błąd zabronionego dostępu" + "forbiddenError": "Błąd zabronionego dostępu", + "currentPassword": "Twoje hasło", + "currentPasswordMessage": "Wpisz swoje hasło, aby zatwierdzić tę czynność." }, "search": { "images": "Obrazy", diff --git a/frontend/src/i18n/pt-br.json b/frontend/src/i18n/pt-br.json index 9b9122c65b..6b9c90048e 100644 --- a/frontend/src/i18n/pt-br.json +++ b/frontend/src/i18n/pt-br.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Imagens", diff --git a/frontend/src/i18n/pt.json b/frontend/src/i18n/pt.json index 8f5e852455..ef5a4cf734 100644 --- a/frontend/src/i18n/pt.json +++ b/frontend/src/i18n/pt.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Imagens", diff --git a/frontend/src/i18n/pt_PT.json b/frontend/src/i18n/pt_PT.json new file mode 100644 index 0000000000..f7b8e52446 --- /dev/null +++ b/frontend/src/i18n/pt_PT.json @@ -0,0 +1,306 @@ +{ + "buttons": { + "cancel": "Cancelar", + "clear": "Limpar", + "close": "Fechar", + "continue": "Continuar", + "copy": "Copiar", + "copyFile": "Copiar ficheiro", + "copyToClipboard": "Copiar para a área de transferência", + "copyDownloadLinkToClipboard": "Copiar link do download para a área de transferência", + "create": "Criar", + "delete": "Eliminar", + "download": "Descarregar", + "file": "Ficheiro", + "folder": "Pasta", + "fullScreen": "Alternar ecrã inteiro", + "hideDotfiles": "Ocultar ficheiros começados por ponto", + "info": "Info", + "more": "Mais", + "move": "Mover", + "moveFile": "Mover ficheiro", + "new": "Novo", + "next": "Seguinte", + "ok": "OK", + "permalink": "Obter link permanente", + "previous": "Anterior", + "preview": "Pré-visualizar", + "publish": "Publicar", + "rename": "Mudar o nome", + "replace": "Substituir", + "reportIssue": "Reportar problema", + "save": "Guardar", + "schedule": "Agendar", + "search": "Pesquisar", + "select": "Seleccionar", + "selectMultiple": "Seleccionar vários", + "share": "Partilhar", + "shell": "Alternar shell", + "submit": "Enviar", + "switchView": "Alterar vista", + "toggleSidebar": "Alternar barra lateral", + "update": "Actualizar", + "upload": "Enviar", + "openFile": "Abrir ficheiro", + "openDirect": "Ver raw", + "discardChanges": "Descartar", + "stopSearch": "Parar a procura", + "saveChanges": "Guardar alterações", + "editAsText": "Editar como Texto", + "increaseFontSize": "Aumentar o tamanho da letra", + "decreaseFontSize": "Diminuir o tamanho da letra", + "overrideAll": "Substituir todos os ficheiros na pasta de destino", + "skipAll": "Ignorar todos os ficheiros em conflito", + "renameAll": "Mudar o nome a todos os ficheiros (criar uma cópia)", + "singleDecision": "Decidir para cada ficheiro em conflito" + }, + "download": { + "downloadFile": "Descarregar Ficheiro", + "downloadFolder": "Descarregar Pasta", + "downloadSelected": "Descarregar Seleccionados" + }, + "upload": { + "abortUpload": "Tem a certeza que quer abortar?" + }, + "errors": { + "forbidden": "Não tem permissão para aceder a isto.", + "internal": "Algo correu mal.", + "notFound": "Esta localização não pôde ser alcançada.", + "connection": "Este servidor não pôde ser alcançado." + }, + "files": { + "body": "Corpo", + "closePreview": "Fechar pré-visualização", + "files": "Ficheiros", + "folders": "Pastas", + "home": "Início", + "lastModified": "Última modificação", + "loading": "A carregar...", + "lonely": "Sinto-me sózinho...", + "metadata": "Metadados", + "multipleSelectionEnabled": "Selecção múltipla activada", + "name": "Nome", + "size": "Tamanho", + "sortByLastModified": "Ordenar pela última modificação", + "sortByName": "Ordenar pelo nome", + "sortBySize": "Ordenar pelo tamanho", + "noPreview": "Pré-visualização não disponível para este ficheiro.", + "csvTooLarge": "O ficheiro CSV é demasiado grande para pré-visualizar (>5MB). Por favor, descarregue-o para visualizá-lo.", + "csvLoadFailed": "Falha ao carregar o ficheiro CSV.", + "showingRows": "A mostrar {count} linha(s)", + "columnSeparator": "Separador de Coluna", + "csvSeparators": { + "comma": "Vírgula (,)", + "semicolon": "Ponto e vírgula (;)", + "both": "Ambos (,) e (;)" + }, + "fileEncoding": "Codificação do Ficheiro" + }, + "help": { + "click": "seleccionar ficheiro ou pasta", + "ctrl": { + "click": "seleccionar vários ficheiros e pastas", + "f": "opens search", + "s": "guarda um ficheiro ou descarrega a pasta onde estiver" + }, + "del": "elimina os itens seleccionados", + "doubleClick": "abre um ficheiro ou pasta", + "esc": "limpa a selecção e/ou fecha o pedido", + "f1": "esta informação", + "f2": "muda o nome ao ficheiro", + "help": "Ajuda" + }, + "login": { + "createAnAccount": "Criar uma conta", + "loginInstead": "Já tenho uma conta", + "password": "Palavra-passe", + "passwordConfirm": "Confirmação da Palavra-passe", + "passwordsDontMatch": "As palavras-passe não coincidem", + "signup": "Registar", + "submit": "Entrar", + "username": "Nome de utilizador", + "usernameTaken": "O nome de utilizador já existe", + "wrongCredentials": "Credenciais erradas", + "passwordTooShort": "A palavra-passe tem de ter pelo menos {min} caracteres", + "logout_reasons": { + "inactivity": "Foi terminada a sessão por inactividade." + } + }, + "permanent": "Permanente", + "prompts": { + "copy": "Copiar", + "copyMessage": "Escolha a localização para copiar os ficheiros:", + "currentlyNavigating": "Actualmente a navegar em:", + "deleteMessageMultiple": "Tem a certeza que quer eliminar {count} ficheiro(s)?", + "deleteMessageSingle": "Tem a certeza que quer eliminar este ficheiro/pasta?", + "deleteMessageShare": "Tem a certeza que quer eliminar esta partilha ({path})?", + "deleteUser": "Tem a certeza que quer eliminar este utilizador?", + "deleteTitle": "Eliminar ficheiros", + "displayName": "Nome a mostrar:", + "download": "Descarregar ficheiros", + "downloadMessage": "Escolha o formato que pretende descarregar.", + "error": "Algo correu mal.", + "fileInfo": "Informação do Ficheiro", + "filesSelected": "{count} ficheiro(s) seleccionado(s)", + "lastModified": "última modificação", + "move": "Mover", + "moveMessage": "Escolha uma nova casa para o(s) seu(s) ficheiro(s)/pasta(s):", + "newArchetype": "Escolha um novo post baseado no archetype. O seu ficheiro irá criado no conteúdo da pasta.", + "newDir": "Nova pasta", + "newDirMessage": "Nomeie a sua nova pasta.", + "newFile": "Novo ficheiro", + "newFileMessage": "Nomeie o seu novo ficheiro.", + "numberDirs": "Número de pastas", + "numberFiles": "Número de ficheiros", + "rename": "Mudar o nome", + "renameMessage": "Introduza um novo nome para", + "replace": "Substituir", + "replaceMessage": "Um dos ficheiros que está a tentar enviar tem um nome em conflito. Quer ignorar este ficheiro e continuar a enviar ou substituir o existente?\none?\n", + "schedule": "Agendar", + "scheduleMessage": "Escolha a data e hora para agendar a autenticação desta publicação.", + "show": "Mostrar", + "size": "Tamanho", + "upload": "Enviar", + "uploadFiles": "A enviar {files} ficheiros...", + "uploadMessage": "Seleccione uma opção para enviar.", + "optionalPassword": "Palavra-passe opcional", + "resolution": "Resolução", + "discardEditorChanges": "Tem a certeza que quer descartar as alterações que fez?", + "replaceOrSkip": "Substituir ou ignorar ficheiros", + "resolveConflict": "Que ficheiros quer manter?", + "singleConflictResolve": "Se seleccionar ambas as versões, um número será adicionar ao nome do ficheiro copiado.", + "fastConflictResolve": "Na pasta de destino há {count} ficheiros com o mesmo nome.", + "uploadingFiles": "A enviar ficheiros", + "filesInOrigin": "Ficheiros na origem", + "filesInDest": "Ficheiros no destino", + "override": "Substituir", + "skip": "Ignorar", + "forbiddenError": "Erro de Proibido", + "currentPassword": "A sua palavra-passe", + "currentPasswordMessage": "Insira a sua palavra-passe para validar esta acção." + }, + "search": { + "images": "Imagens", + "music": "Música", + "pdf": "PDF", + "pressToSearch": "Prima Enter para procurar...", + "search": "Procurar...", + "typeToSearch": "Digite para procurar...", + "types": "Tipos", + "video": "Vídeo" + }, + "settings": { + "aceEditorTheme": "Editor de temas audaz", + "admin": "Admin", + "administrator": "Administrador", + "allowCommands": "Executar comandos", + "allowEdit": "Editar, mudar o nome e eliminar ficheiros ou pastas", + "allowNew": "Criar novos ficheiros e pastas", + "allowPublish": "Publicar novas publicações e páginas", + "allowSignup": "Permitir que utilizadores se registem", + "hideLoginButton": "Ocultar o botão de início de sessão nas páginas públicas", + "avoidChanges": "(deixe em branco para evitar alterações)", + "branding": "Branding", + "brandingDirectoryPath": "Caminho da pasta da marca", + "brandingHelp": "Pode personalizar a aparência da instânciado seu File Browser\nao alterar o seu nome, alterar o logótipo, adicionar estilos personalizados e até mesmo desactivar links externos para o Github.\nPara mais informação acerca de personalização de marca, por favor, veja {0}.", + "changePassword": "Alterar Palavra-passe", + "commandRunner": "Executador de comandos", + "commandRunnerHelp": "Aqui pode definir comandos que são executados nos eventos nomeados. Tem de escrever um por linha. A variável de ambiente {0} e {1} irá estar disponível, sendo {0} relativo a {1}.\nPara mais informação acerca desta funcionalidade e variáveis de ambiente disponíveis, por favor, leia o {2}.", + "commandsUpdated": "Comandos actualizados!", + "createUserDir": "Criar automaticamente a pasta da casa do utilizador quando adicionar um novo utilizador", + "minimumPasswordLength": "Comprimento mínimo da palavra-passe", + "tusUploads": "Envios aos Bocados", + "tusUploadsHelp": "O File Browser suporta envio de ficheiros aos bocados, permitindo a criação de envios eficiente, de confiança e retomáveis de ficheiros aos bocados mesmo em redes instáveis.", + "tusUploadsChunkSize": "Indica o tamanho máximo do pedido (envios directos serão utilizadas para envios pequenos). Pode introduzir um valor inteiro para tamanhos de byte ou uma cadeia como 10MB, 1GB, etc.", + "tusUploadsRetryCount": "Número de tentativas a realizar se um bocado falha ao ser enviado.", + "userHomeBasePath": "O caminho base para a pasta da casa do utilizador", + "userScopeGenerationPlaceholder": "O escopo será gerado automaticamente", + "createUserHomeDirectory": "Criar pasta da casa do utilizador", + "customStylesheet": "Folha de estilo Personalizada", + "defaultUserDescription": "Estes são as definições por defeito para novos utilizadores", + "disableExternalLinks": "Eliminar links externos (excepto documentação)", + "disableUsedDiskPercentage": "Desactivar gráfico de percentagem de uso de disco", + "documentation": "documentação\ndocumentation", + "examples": "Exemplos", + "executeOnShell": "Executar na shell", + "executeOnShellDescription": "Por defeito, o File Browser executa os comandos ao chamar os seus binários\ndirectamenta. Se quiser executá-los mesmo na shell (como o Bash ou PoweShell), pode defini-lo aqui com os argumentos pedidos e flags. Se definido, o comando que executar será acrescentado como um argumento. Isto aplica-se a ambos comandos de utilizador e hooks de eventos.", + "globalRules": "Esta é um conjunto global de regras de permissão e negação. Elas aplicam-se a cada utilizador. Pode definir regras especificas em cada definições de utilizador para contornar estas.", + "globalSettings": "Definições Globais", + "hideDotfiles": "Ocultar ficheiros começados por ponto", + "insertPath": "Introduza o caminho", + "insertRegex": "Introduza expressão regex", + "instanceName": "Nome da instância", + "language": "Idioma", + "lockPassword": "Impedir o utilizador de alterar a palavra-passe", + "newPassword": "A sua nova palavra-passe", + "newPasswordConfirm": "Confirmar a sua palavra-passe", + "newUser": "Novo Utilizador", + "password": "Palavra-passe", + "passwordUpdated": "Palavras-passe não coincidem!", + "path": "Caminho", + "perm": { + "create": "Criar ficheiros e pastas", + "delete": "Eliminar ficheiros e pastas", + "download": "Descarregar", + "execute": "Executar comandos", + "modify": "Editar ficheiros", + "rename": "Mudar o nome ou mover ficheiros e pastas", + "share": "Ficheiros partilhados" + }, + "permissions": "Permissões", + "permissionsHelp": "Pode definir um utilizador um administrador ou escolher as permissões individualmente. Se escolher \"Administrador\", todas as outras opções serão automaticamente marcadas. A gestão de utilizadores continua a ser um privilégio de um administrador.\n", + "profileSettings": "Definições de Perfil", + "redirectAfterCopyMove": "Redireccionar para o destino depois de copiar/mover", + "ruleExample1": "impede o acesso a qualquer ficheiro começado por ponto (como .git ou .gitignore) em cada pasta.\n", + "ruleExample2": "bloqueia o acesso ao ficheiro chamado Caddyfile na raíz de um escopo.", + "rules": "Regras", + "rulesHelp": "Aqui pode definir um conjunto de regras de permissão e negação para este utilizador especifico. Os ficheiros bloqueados não serão mostrados nas listas e não são acessíveis ao utilizador. Suportamos regex e caminhos relativos ao escopo do utilizador.\n", + "scope": "Escopo", + "setDateFormat": "Definir formato exacto da data", + "settingsUpdated": "Definições actualizadas!", + "shareDuration": "Duração da Partilha", + "shareManagement": "Gestão de Partilhas", + "shareDeleted": "Partilha eliminada!", + "singleClick": "Utilizar cliques únicos para abrir ficheiros e pastas", + "themes": { + "default": "Predefinição do sistema", + "dark": "Escuro", + "light": "Claro", + "title": "Tema" + }, + "user": "Utilizador", + "userCommands": "Comandos", + "userCommandsHelp": "Uma lista separada por espaços com os comandos disponíveis para este utilizador. Exemplo:\n", + "userCreated": "Utilizador criado!", + "userDefaults": "Definições de utilizador por defeito", + "userDeleted": "Utilizador eliminado!", + "userManagement": "Gestão de Utilizadores", + "userUpdated": "Utilizador actualizado!", + "username": "Nome de utilizador", + "users": "Utilizadores", + "currentPassword": "A Sua Palavra-passe Actual" + }, + "sidebar": { + "help": "Ajuda", + "hugoNew": "Hugo New", + "login": "Iniciar sessão", + "logout": "Sair", + "myFiles": "Os meus ficheiros", + "newFile": "Novo ficheiro", + "newFolder": "Nova pasta", + "preview": "Pré-visualizar", + "settings": "Definições", + "signup": "Registar", + "siteSettings": "Definições do Site" + }, + "success": { + "linkCopied": "Link copiado!" + }, + "time": { + "days": "Dias", + "hours": "Horas", + "minutes": "Minutos", + "seconds": "Segundos", + "unit": "Unidade de Tempo" + } +} diff --git a/frontend/src/i18n/ro.json b/frontend/src/i18n/ro.json index b36436ea1b..052025455d 100644 --- a/frontend/src/i18n/ro.json +++ b/frontend/src/i18n/ro.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Imagini", diff --git a/frontend/src/i18n/ru.json b/frontend/src/i18n/ru.json index 6cd70e1317..4ff2658786 100644 --- a/frontend/src/i18n/ru.json +++ b/frontend/src/i18n/ru.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Изображения", diff --git a/frontend/src/i18n/sk.json b/frontend/src/i18n/sk.json index 82089d7ba2..c43b0816d0 100644 --- a/frontend/src/i18n/sk.json +++ b/frontend/src/i18n/sk.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Obrázky", diff --git a/frontend/src/i18n/sv-se.json b/frontend/src/i18n/sv-se.json index a7cf261a2d..5102f9b066 100644 --- a/frontend/src/i18n/sv-se.json +++ b/frontend/src/i18n/sv-se.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Bilder", diff --git a/frontend/src/i18n/tr.json b/frontend/src/i18n/tr.json index 800c9e6493..e0608217c4 100644 --- a/frontend/src/i18n/tr.json +++ b/frontend/src/i18n/tr.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Görseller", diff --git a/frontend/src/i18n/uk.json b/frontend/src/i18n/uk.json index d9aa3fb4f1..0eea735704 100644 --- a/frontend/src/i18n/uk.json +++ b/frontend/src/i18n/uk.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Зображення", diff --git a/frontend/src/i18n/vi.json b/frontend/src/i18n/vi.json index ab73c0cb27..3b84ab4625 100644 --- a/frontend/src/i18n/vi.json +++ b/frontend/src/i18n/vi.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Hình ảnh", diff --git a/frontend/src/i18n/zh-cn.json b/frontend/src/i18n/zh-cn.json index 816e1d8d82..9d136737a1 100644 --- a/frontend/src/i18n/zh-cn.json +++ b/frontend/src/i18n/zh-cn.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "图像", diff --git a/frontend/src/i18n/zh-tw.json b/frontend/src/i18n/zh-tw.json index 986b1d3b03..edced1fb4a 100644 --- a/frontend/src/i18n/zh-tw.json +++ b/frontend/src/i18n/zh-tw.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "影像", From c21af0791a5df458c2ddb81ce9ae44b772b6d82d Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 14 Mar 2026 08:12:03 +0100 Subject: [PATCH 088/126] fix: around languages --- frontend/src/components/files/VideoPlayer.vue | 13 +- .../src/components/settings/Languages.vue | 3 +- frontend/src/i18n/index.ts | 24 +- frontend/src/i18n/lv_LV.json | 306 ------------------ frontend/src/i18n/{pt_PT.json => pt-pt.json} | 0 5 files changed, 29 insertions(+), 317 deletions(-) delete mode 100644 frontend/src/i18n/lv_LV.json rename frontend/src/i18n/{pt_PT.json => pt-pt.json} (100%) diff --git a/frontend/src/components/files/VideoPlayer.vue b/frontend/src/components/files/VideoPlayer.vue index ac38b6d114..295907db5c 100644 --- a/frontend/src/components/files/VideoPlayer.vue +++ b/frontend/src/components/files/VideoPlayer.vue @@ -147,26 +147,33 @@ interface LanguageImports { } const languageImports: LanguageImports = { - he: () => import("video.js/dist/lang/he.json"), - hu: () => import("video.js/dist/lang/hu.json"), ar: () => import("video.js/dist/lang/ar.json"), + bg: () => import("video.js/dist/lang/bg.json"), + cs: () => import("video.js/dist/lang/cs.json"), de: () => import("video.js/dist/lang/de.json"), el: () => import("video.js/dist/lang/el.json"), en: () => import("video.js/dist/lang/en.json"), es: () => import("video.js/dist/lang/es.json"), fr: () => import("video.js/dist/lang/fr.json"), + he: () => import("video.js/dist/lang/he.json"), + hr: () => import("video.js/dist/lang/hr.json"), + hu: () => import("video.js/dist/lang/hu.json"), it: () => import("video.js/dist/lang/it.json"), ja: () => import("video.js/dist/lang/ja.json"), ko: () => import("video.js/dist/lang/ko.json"), + lv: () => import("video.js/dist/lang/lv.json"), + nb: () => import("video.js/dist/lang/nb.json"), + nl: () => import("video.js/dist/lang/nl.json"), "nl-be": () => import("video.js/dist/lang/nl.json"), pl: () => import("video.js/dist/lang/pl.json"), "pt-br": () => import("video.js/dist/lang/pt-BR.json"), - pt: () => import("video.js/dist/lang/pt-PT.json"), + "pt-pt": () => import("video.js/dist/lang/pt-PT.json"), ro: () => import("video.js/dist/lang/ro.json"), ru: () => import("video.js/dist/lang/ru.json"), sk: () => import("video.js/dist/lang/sk.json"), tr: () => import("video.js/dist/lang/tr.json"), uk: () => import("video.js/dist/lang/uk.json"), + vi: () => import("video.js/dist/lang/vi.json"), "zh-cn": () => import("video.js/dist/lang/zh-CN.json"), "zh-tw": () => import("video.js/dist/lang/zh-TW.json"), }; diff --git a/frontend/src/components/settings/Languages.vue b/frontend/src/components/settings/Languages.vue index 3df6028e61..6a6033587b 100644 --- a/frontend/src/components/settings/Languages.vue +++ b/frontend/src/components/settings/Languages.vue @@ -34,9 +34,10 @@ export default { no: "Norsk", nl: "Nederlands (Nederland)", "nl-be": "Nederlands (België)", + lv: "Latviešu", pl: "Polski", "pt-br": "Português (Brasil)", - pt: "Português (Portugal)", + "pt-pt": "Português (Portugal)", ro: "Romanian", ru: "Русский", sk: "Slovenčina", diff --git a/frontend/src/i18n/index.ts b/frontend/src/i18n/index.ts index 9fa7155f85..44b8e17783 100644 --- a/frontend/src/i18n/index.ts +++ b/frontend/src/i18n/index.ts @@ -3,6 +3,7 @@ import { createI18n } from "vue-i18n"; import("dayjs/locale/ar"); import("dayjs/locale/bg"); +import("dayjs/locale/ca"); import("dayjs/locale/cs"); import("dayjs/locale/de"); import("dayjs/locale/el"); @@ -16,6 +17,7 @@ import("dayjs/locale/is"); import("dayjs/locale/it"); import("dayjs/locale/ja"); import("dayjs/locale/ko"); +import("dayjs/locale/lv"); import("dayjs/locale/nb"); import("dayjs/locale/nl"); import("dayjs/locale/nl-be"); @@ -41,6 +43,18 @@ export function detectLocale() { // https://developer.mozilla.org/en-US/docs/Web/API/Navigator/language let locale = navigator.language.toLowerCase(); switch (true) { + case /^ar\b/.test(locale): + locale = "ar"; + break; + case /^bg\b/.test(locale): + locale = "bg"; + break; + case /^cs\b/.test(locale): + locale = "cs"; + break; + case /^lv\b/.test(locale): + locale = "lv"; + break; case /^he\b/.test(locale): locale = "he"; break; @@ -50,9 +64,6 @@ export function detectLocale() { case /^hu\b/.test(locale): locale = "hu"; break; - case /^ar\b/.test(locale): - locale = "ar"; - break; case /^el.*/i.test(locale): locale = "el"; break; @@ -74,8 +85,9 @@ export function detectLocale() { case /^pt-br\b/.test(locale): locale = "pt-br"; break; + case /^pt-pt\b/.test(locale): case /^pt\b/.test(locale): - locale = "pt"; + locale = "pt-pt"; break; case /^ja\b/.test(locale): locale = "ja"; @@ -128,9 +140,7 @@ export function detectLocale() { case /^no\b/.test(locale): locale = "no"; break; - case /^bg\b/.test(locale): - locale = "bg"; - break; + default: locale = "en"; } diff --git a/frontend/src/i18n/lv_LV.json b/frontend/src/i18n/lv_LV.json deleted file mode 100644 index 723076d73e..0000000000 --- a/frontend/src/i18n/lv_LV.json +++ /dev/null @@ -1,306 +0,0 @@ -{ - "buttons": { - "cancel": "Atcelt", - "clear": "Tīrs", - "close": "Aizvērt", - "continue": "Turpināt", - "copy": "Kopēt", - "copyFile": "Kopēt failu", - "copyToClipboard": "Kopēt starpliktuvē", - "copyDownloadLinkToClipboard": "Kopēt lejupielādes saiti starpliktuvē", - "create": "Izveidot", - "delete": "Dzēst", - "download": "Lejupielādēt", - "file": "Fails", - "folder": "Mape", - "fullScreen": "Pārslēgt pilnekrāna režīmu", - "hideDotfiles": "Slēpt punktfailus", - "info": "Informācija", - "more": "Vairāk", - "move": "Pārvietot", - "moveFile": "Pārvietot failu", - "new": "Jauns", - "next": "Nākamais", - "ok": "Labi", - "permalink": "Iegūt pastāvīgo saiti", - "previous": "Iepriekšējais", - "preview": "Priekšskatījums", - "publish": "Publicēt", - "rename": "Pārdēvēt", - "replace": "Aizstāt", - "reportIssue": "Ziņot par problēmu", - "save": "Saglabāt", - "schedule": "Grafiks", - "search": "Meklēt", - "select": "Izvēlieties", - "selectMultiple": "Izvēlieties vairākus", - "share": "Dalīties", - "shell": "Pārslēgt apvalku", - "submit": "Iesniegt", - "switchView": "Pārslēgt skatu", - "toggleSidebar": "Pārslēgt sānjoslu", - "update": "Atjaunināt", - "upload": "Augšupielādēt", - "openFile": "Atvērt failu", - "openDirect": "View raw", - "discardChanges": "Izmest", - "stopSearch": "Beigt meklēšanu", - "saveChanges": "Saglabāt izmaiņas", - "editAsText": "Rediģēt kā tekstu", - "increaseFontSize": "Palieliniet fonta lielumu", - "decreaseFontSize": "Samaziniet fonta lielumu", - "overrideAll": "Replace all files in destination folder", - "skipAll": "Skip all conflicting files", - "renameAll": "Rename all files (create a copy)", - "singleDecision": "Decide for each conflicting file" - }, - "download": { - "downloadFile": "Lejupielādēt failu", - "downloadFolder": "Lejupielādēt mapi", - "downloadSelected": "Lejupielādēt atlasīto" - }, - "upload": { - "abortUpload": "Vai tiešām vēlaties pārtraukt?" - }, - "errors": { - "forbidden": "Jums nav atļaujas piekļūt šim.", - "internal": "Kaut kas tiešām nogāja greizi.", - "notFound": "Šo atrašanās vietu nevar sasniegt.", - "connection": "Ar serveri nevar sazināties." - }, - "files": { - "body": "Ķermenis", - "closePreview": "Aizvērt priekšskatījumu", - "files": "Faili", - "folders": "Mapes", - "home": "Sākums", - "lastModified": "Pēdējoreiz modificēts", - "loading": "Notiek ielāde...", - "lonely": "Šeit ir tukša vieta...", - "metadata": "Metadati", - "multipleSelectionEnabled": "Vairākas atlases ir iespējotas", - "name": "Vārds", - "size": "Izmērs", - "sortByLastModified": "Kārtot pēc pēdējās modifikācijas", - "sortByName": "Kārtot pēc nosaukuma", - "sortBySize": "Kārtot pēc izmēra", - "noPreview": "Šim failam nav pieejams priekšskatījums.", - "csvTooLarge": "CSV fails ir pārāk liels priekšskatīšanai (>5 MB). Lūdzu, lejupielādējiet to, lai skatītu", - "csvLoadFailed": "Neizdevās ielādēt CSV failu.", - "showingRows": "Rāda {count} rindu(as)", - "columnSeparator": "Kolonnu atdalītājs", - "csvSeparators": { - "comma": "Komats (,)", - "semicolon": "Semikols (;)", - "both": "Gan (,) gan (;)" - }, - "fileEncoding": "File Encoding" - }, - "help": { - "click": "atlasiet failu vai direktoriju", - "ctrl": { - "click": "atlasīt vairākus failus vai direktorijus", - "f": "atver meklēšanu", - "s": "saglabājiet failu vai lejupielādējiet direktoriju, kurā atrodaties" - }, - "del": "dzēst atlasītos vienumus", - "doubleClick": "atvērt failu vai direktoriju", - "esc": "notīrīt atlasi un/vai aizvērt uzvedni", - "f1": "šo informāciju", - "f2": "pārdēvēt failu", - "help": "Palīdzība" - }, - "login": { - "createAnAccount": "Izveidot kontu", - "loginInstead": "Jau ir konts", - "password": "Parole", - "passwordConfirm": "Paroles apstiprināšana", - "passwordsDontMatch": "Paroles nesakrīt", - "signup": "Reģistrēšanās", - "submit": "Pieteikties", - "username": "Lietotājvārds", - "usernameTaken": "Lietotājvārds jau aizņemts", - "wrongCredentials": "Nepareizi akreditācijas dati", - "passwordTooShort": "Parolei jābūt vismaz {min} rakstzīmju garai", - "logout_reasons": { - "inactivity": "Jūs esat atteicies no sistēmas neaktivitātes dēļ." - } - }, - "permanent": "Pastāvīgs", - "prompts": { - "copy": "Kopēt", - "copyMessage": "Izvēlieties atrašanās vietu, uz kuru kopēt failus:", - "currentlyNavigating": "Pašlaik navigācija:", - "deleteMessageMultiple": "Vai tiešām vēlaties dzēst {count} failu(s)?", - "deleteMessageSingle": "Vai tiešām vēlaties dzēst šo failu/mapi?", - "deleteMessageShare": "Vai tiešām vēlaties dzēst šo koplietojumu({path})?", - "deleteUser": "Vai tiešām vēlaties dzēst šo lietotāju?", - "deleteTitle": "Dzēst failus", - "displayName": "Displeja nosaukums:", - "download": "Lejupielādēt failus", - "downloadMessage": "Izvēlieties formātu, kuru vēlaties lejupielādēt.", - "error": "Kaut kas nogāja greizi", - "fileInfo": "Informācija par failu", - "filesSelected": "{count} atlasīti faili", - "lastModified": "Pēdējās izmaiņas", - "move": "Pārvietot", - "moveMessage": "Izvēlieties jaunu mājvietu failam(iem)/mapei(ēm):", - "newArchetype": "Izveidojiet jaunu ierakstu, pamatojoties uz arhtipu. Jūsu fails tiks izveidots satura mapē.", - "newDir": "Jauna direktorija", - "newDirMessage": "Nosaukums savai jaunajai direktorijai.", - "newFile": "Jauns fails", - "newFileMessage": "Nosauciet savu jauno failu.", - "numberDirs": "Katalogu skaits", - "numberFiles": "Failu skaits", - "rename": "Pārdēvēt", - "renameMessage": "Ievietojiet jaunu nosaukumu", - "replace": "Aizstāt", - "replaceMessage": "Vienam no failiem, kurus mēģināt augšupielādēt, ir konfliktējošs nosaukums. Vai vēlaties izlaist šo failu un turpināt augšupielādi vai aizstāt esošo?\n", - "schedule": "Grafiks", - "scheduleMessage": "Izvēlieties datumu un laiku, lai ieplānotu šī ieraksta publicēšanu.", - "show": "Rādīt", - "size": "Izmērs", - "upload": "Augšupielādēt", - "uploadFiles": "Notiek {files} failu augšupielāde...", - "uploadMessage": "Atlasiet augšupielādes opciju.", - "optionalPassword": "Izvēles parole", - "resolution": "Izšķirtspēja", - "discardEditorChanges": "Vai tiešām vēlaties atmest veiktās izmaiņas?", - "replaceOrSkip": "Replace or skip files", - "resolveConflict": "Which files do you want to keep?", - "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", - "fastConflictResolve": "The destination folder there are {count} files with same name.", - "uploadingFiles": "Uploading files", - "filesInOrigin": "Files in origin", - "filesInDest": "Files in destination", - "override": "Overwrite", - "skip": "Skip", - "forbiddenError": "Forbidden Error", - "currentPassword": "Your password", - "currentPasswordMessage": "Enter your password to validate this action." - }, - "search": { - "images": "Attēli", - "music": "Mūzika", - "pdf": "PDF", - "pressToSearch": "Nospiediet taustiņu Enter, lai meklētu...", - "search": "Meklē...", - "typeToSearch": "Ierakstiet, lai meklētu...", - "types": "Veidi", - "video": "Video" - }, - "settings": { - "aceEditorTheme": "Ace redaktora tēma", - "admin": "Admin", - "administrator": "Administrator", - "allowCommands": "Izpildīt komandas", - "allowEdit": "Rediģēt, pārdēvēt un dzēst failus vai direktorijus", - "allowNew": "Izveidojiet jaunus failus un direktorijus", - "allowPublish": "Publicēt jaunus ierakstus un lapas", - "allowSignup": "Atļaut lietotājiem reģistrēties", - "hideLoginButton": "Paslēpt pieteikšanās pogu publiskajās lapās", - "avoidChanges": "(atstājiet tukšu, lai izvairītos no izmaiņām)", - "branding": "Zīmols", - "brandingDirectoryPath": "Zīmola direktorijas ceļš", - "brandingHelp": "Jūs varat pielāgot sava failu pārlūka instances izskatu un darbību, mainot tās nosaukumu, aizstājot logotipu, pievienojot pielāgotus stilus un pat atspējojot ārējās saites uz GitHub.\nLai iegūtu plašāku informāciju par pielāgotu zīmola veidošanu, lūdzu, skatiet {0}.", - "changePassword": "Mainīt paroli", - "commandRunner": "Komandu skrējējs", - "commandRunnerHelp": "Šeit varat iestatīt komandas, kas tiek izpildītas nosauktajos notikumos. Katrā rindā jāraksta pa vienai. Būs pieejami vides mainīgie {0} un {1}, kas ir {0} relatīvi pret {1}. Lai iegūtu plašāku informāciju par šo funkciju un pieejamajiem vides mainīgajiem, lūdzu, izlasiet {2}.", - "commandsUpdated": "Komandas atjauninātas!", - "createUserDir": "Automātiski izveidot lietotāja mājas direktoriju, pievienojot jaunu lietotāju", - "minimumPasswordLength": "Minimālais paroles garums", - "tusUploads": "Sadalītas augšupielādes", - "tusUploadsHelp": "Failu pārlūks atbalsta failu augšupielādi fragmentos, ļaujot izveidot efektīvu, uzticamu, atsākamu un fragmentos sadalītu failu augšupielādi pat neuzticamos tīklos.", - "tusUploadsChunkSize": "Norāda pieprasījuma maksimālo izmēru (mazākiem augšupielādes apjomiem tiks izmantota tieša augšupielāde). Varat ievadīt vienkāršu veselu skaitli, kas apzīmē baitu izmēru, vai virkni, piemēram, 10 MB, 1 GB utt.", - "tusUploadsRetryCount": "Atkārtotu mēģinājumu skaits, kas jāveic, ja fragmenta augšupielāde neizdodas.", - "userHomeBasePath": "Lietotāja mājas direktoriju bāzes ceļš", - "userScopeGenerationPlaceholder": "Darbības joma tiks ģenerēta automātiski", - "createUserHomeDirectory": "Izveidojiet lietotāja mājas direktoriju", - "customStylesheet": "Pielāgota stila lapa", - "defaultUserDescription": "Šie ir noklusējuma iestatījumi jaunajiem lietotājiem.", - "disableExternalLinks": "Atspējot ārējās saites (izņemot dokumentāciju)", - "disableUsedDiskPercentage": "Atspējot izmantotā diska procentuālās daļas grafiku", - "documentation": "dokumentācija", - "examples": "Piemēri", - "executeOnShell": "Izpildīt uz čaulas", - "executeOnShellDescription": "Pēc noklusējuma failu pārlūks izpilda komandas, tieši izsaucot to bināros failus. Ja vēlaties tās palaist čaulā (piemēram, Bash vai PowerShell), varat to definēt šeit ar nepieciešamajiem argumentiem un karodziņiem. Ja tas ir iestatīts, izpildītā komanda tiks pievienota kā arguments. Tas attiecas gan uz lietotāja komandām, gan notikumu piesaistes rīkiem.", - "globalRules": "Šis ir globāls atļaušanas un aizliegšanas noteikumu kopums. Tie attiecas uz katru lietotāju. Katra lietotāja iestatījumos varat definēt konkrētus noteikumus, lai tos ignorētu.", - "globalSettings": "Globālie iestatījumi", - "hideDotfiles": "Slēpt punktfailus", - "insertPath": "Ievietojiet ceļu", - "insertRegex": "Ievietojiet regex izteiksmi", - "instanceName": "Gadījuma nosaukums", - "language": "Valoda", - "lockPassword": "Neļaut lietotājam mainīt paroli", - "newPassword": "Jūsu jaunā parole", - "newPasswordConfirm": "Apstipriniet savu jauno paroli", - "newUser": "Jauns lietotājs", - "password": "Parole", - "passwordUpdated": "Parole atjaunināta!", - "path": "Ceļš", - "perm": { - "create": "Izveidojiet failus un direktorijus", - "delete": "Dzēst failus un direktorijus", - "download": "Lejupielādēt", - "execute": "Izpildīt komandas", - "modify": "Rediģēt failus", - "rename": "Pārdēvēt vai pārvietot failus un direktorijus", - "share": "Kopīgojiet failus" - }, - "permissions": "Atļaujas", - "permissionsHelp": "Varat iestatīt lietotāju kā administratoru vai izvēlēties atļaujas individuāli. Ja atlasīsiet “Administrators”, visas pārējās opcijas tiks automātiski atzīmētas. Lietotāju pārvaldība joprojām ir administratora privilēģija.\n", - "profileSettings": "Profila iestatījumi", - "redirectAfterCopyMove": "Pārvirzīt uz galapunktu pēc kopēšanas/pārvietošanas", - "ruleExample1": "neļauj piekļūt jebkuram dotfile failam (piemēram, .git, .gitignore) katrā mapē.\n", - "ruleExample2": "bloķē piekļuvi failam ar nosaukumu Caddyfile darbības jomas saknē.", - "rules": "Noteikumi", - "rulesHelp": "Šeit varat definēt atļaušanas un aizliegšanas noteikumu kopu šim konkrētajam lietotājam. Bloķētie faili netiks rādīti sarakstos, un lietotājs tiem nevarēs piekļūt. Mēs atbalstām regulārās izteiksmes un ceļus attiecībā pret lietotāja darbības jomu.\n", - "scope": "Darbības joma", - "setDateFormat": "Iestatiet precīzu datuma formātu", - "settingsUpdated": "Iestatījumi atjaunināti!", - "shareDuration": "Kopīgošanas ilgums", - "shareManagement": "Kopīgošanas pārvaldība", - "shareDeleted": "Kopīgojums izdzēsts!", - "singleClick": "Failu un direktoriju atvēršanai izmantojiet vienus klikšķi", - "themes": { - "default": "Sistēmas noklusējums", - "dark": "Tumša", - "light": "Gaiša", - "title": "Tēma" - }, - "user": "Lietotājs", - "userCommands": "Komandas", - "userCommandsHelp": "Ar atstarpi atdalīts saraksts ar šim lietotājam pieejamajām komandām. Piemērs:\n", - "userCreated": "Lietotājs izveidots!", - "userDefaults": "Lietotāja noklusējuma iestatījumi", - "userDeleted": "Lietotājs izdzēsts!", - "userManagement": "Lietotāju pārvaldība", - "userUpdated": "Lietotājs atjaunināts!", - "username": "Lietotājvārds", - "users": "Lietotāji", - "currentPassword": "Esošā Parole" - }, - "sidebar": { - "help": "Palīdzība", - "hugoNew": "Hugo Jauns", - "login": "Pieteikties", - "logout": "Atteikties", - "myFiles": "Mani faili", - "newFile": "Jauns fails", - "newFolder": "Jauna mape", - "preview": "Priekšskatījums", - "settings": "Iestatījumi", - "signup": "Reģistrēties", - "siteSettings": "Vietnes iestatījumi" - }, - "success": { - "linkCopied": "Saite nokopēta!" - }, - "time": { - "days": "Dienas", - "hours": "Stundas", - "minutes": "Minūtes", - "seconds": "Sekundes", - "unit": "Laika vienība" - } -} diff --git a/frontend/src/i18n/pt_PT.json b/frontend/src/i18n/pt-pt.json similarity index 100% rename from frontend/src/i18n/pt_PT.json rename to frontend/src/i18n/pt-pt.json From 4bd7d69c82163b201a987e99c0c50d7ecc6ee5f1 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 14 Mar 2026 08:13:51 +0100 Subject: [PATCH 089/126] fix: clean path in patch handler --- http/resource.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/http/resource.go b/http/resource.go index f528473d95..3f78cb0c0e 100644 --- a/http/resource.go +++ b/http/resource.go @@ -212,6 +212,8 @@ func resourcePatchHandler(fileCache FileCache) handleFunc { dst := r.URL.Query().Get("destination") action := r.URL.Query().Get("action") dst, err := url.QueryUnescape(dst) + dst = path.Clean("/" + dst) + src = path.Clean("/" + src) if !d.Check(src) || !d.Check(dst) { return http.StatusForbidden, nil } From a63573b67eb302167b4c4f218361a2d0c138deab Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 14 Mar 2026 08:23:10 +0100 Subject: [PATCH 090/126] fix: signup handler shouldn't create admins --- http/auth.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/http/auth.go b/http/auth.go index 4eceeafe31..d975beae9d 100644 --- a/http/auth.go +++ b/http/auth.go @@ -167,6 +167,10 @@ var signupHandler = func(_ http.ResponseWriter, r *http.Request, d *data) (int, d.settings.Defaults.Apply(user) + // Users signed up via the signup handler should never become admins, even + // if that is the default permission. + user.Perm.Admin = false + pwd, err := users.ValidateAndHashPwd(info.Password, d.settings.MinimumPasswordLength) if err != nil { return http.StatusBadRequest, err From 09a26166b4f79446e7174c017380f6db45444e32 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 14 Mar 2026 08:31:55 +0100 Subject: [PATCH 091/126] fix: make perm.share depend on share.download --- frontend/src/views/files/FileListing.vue | 5 ++++- http/share.go | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/frontend/src/views/files/FileListing.vue b/frontend/src/views/files/FileListing.vue index f612ab1d16..0ad8bd8cc2 100644 --- a/frontend/src/views/files/FileListing.vue +++ b/frontend/src/views/files/FileListing.vue @@ -480,7 +480,10 @@ const headerButtons = computed(() => { shell: authStore.user?.perm.execute && enableExec, delete: fileStore.selectedCount > 0 && authStore.user?.perm.delete, rename: fileStore.selectedCount === 1 && authStore.user?.perm.rename, - share: fileStore.selectedCount === 1 && authStore.user?.perm.share, + share: + fileStore.selectedCount === 1 && + authStore.user?.perm.share && + authStore.user?.perm.download, move: fileStore.selectedCount > 0 && authStore.user?.perm.rename, copy: fileStore.selectedCount > 0 && authStore.user?.perm.create, }; diff --git a/http/share.go b/http/share.go index 509a7b21e2..35125dba40 100644 --- a/http/share.go +++ b/http/share.go @@ -20,7 +20,7 @@ import ( func withPermShare(fn handleFunc) handleFunc { return withUser(func(w http.ResponseWriter, r *http.Request, d *data) (int, error) { - if !d.user.Perm.Share { + if !d.user.Perm.Share || !d.user.Perm.Download { return http.StatusForbidden, nil } From 6aea2276177c9a5ca21115618e541fd237737f79 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 14 Mar 2026 08:32:56 +0100 Subject: [PATCH 092/126] chore(release): 2.62.0 --- CHANGELOG.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3771efe145..641230bc72 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,26 @@ All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines. +## [2.62.0](https://github.com/filebrowser/filebrowser/compare/v2.61.2...v2.62.0) (2026-03-14) + + +### Features + +* Updates for project File Browser ([#5807](https://github.com/filebrowser/filebrowser/issues/5807)) ([858eb42](https://github.com/filebrowser/filebrowser/commit/858eb426515ec55172e9cca47bdf1e25a0d0d81d)) + + +### Bug Fixes + +* allow deleting the user's own account ([#5820](https://github.com/filebrowser/filebrowser/issues/5820)) ([f04af0c](https://github.com/filebrowser/filebrowser/commit/f04af0cac6c808b8e7c9a9651380c252c4de9132)) +* around languages ([c21af07](https://github.com/filebrowser/filebrowser/commit/c21af0791a5df458c2ddb81ce9ae44b772b6d82d)) +* clean path in patch handler ([4bd7d69](https://github.com/filebrowser/filebrowser/commit/4bd7d69c82163b201a987e99c0c50d7ecc6ee5f1)) +* make perm.share depend on share.download ([09a2616](https://github.com/filebrowser/filebrowser/commit/09a26166b4f79446e7174c017380f6db45444e32)) +* properly surface config parse errors ([#5822](https://github.com/filebrowser/filebrowser/issues/5822)) ([ef2e999](https://github.com/filebrowser/filebrowser/commit/ef2e9992dc3098f6c4722c2a98966cd8abf8bab5)) +* signup handler shouldn't create admins ([a63573b](https://github.com/filebrowser/filebrowser/commit/a63573b67eb302167b4c4f218361a2d0c138deab)) +* **tus:** preserve percent-encoded upload paths in Location header ([#5817](https://github.com/filebrowser/filebrowser/issues/5817)) ([0542fc0](https://github.com/filebrowser/filebrowser/commit/0542fc0ba43740c967414eebd156bac86ad80376)) +* **upload:** avoid skipping whole folder upload on conflict modal ([#5814](https://github.com/filebrowser/filebrowser/issues/5814)) ([f5f8b60](https://github.com/filebrowser/filebrowser/commit/f5f8b60b331a07729a1fed1ed065cb6fc20930ea)) +* **upload:** don't mark every folder-upload file as conflicting ([#5813](https://github.com/filebrowser/filebrowser/issues/5813)) ([6dcef07](https://github.com/filebrowser/filebrowser/commit/6dcef07f40d550acee63dd01e0a3bcf78532f690)) + ## [2.61.2](https://github.com/filebrowser/filebrowser/compare/v2.61.1...v2.61.2) (2026-03-06) From fc80f4f44c856ddc19df3024c245990fffd55630 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 14 Mar 2026 09:30:35 +0100 Subject: [PATCH 093/126] fix: base url/reverse proxy redirect --- http/utils.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/http/utils.go b/http/utils.go index c76cecf420..dc51ccb681 100644 --- a/http/utils.go +++ b/http/utils.go @@ -60,6 +60,15 @@ func stripPrefix(prefix string, h http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { p := strings.TrimPrefix(r.URL.Path, prefix) rp := strings.TrimPrefix(r.URL.RawPath, prefix) + + // If the path is exactly the prefix (no trailing slash), redirect to + // the prefix with a trailing slash so the router receives "/" instead + // of "", which would otherwise cause a redirect to the site root. + if p == "" { + http.Redirect(w, r, prefix+"/", http.StatusMovedPermanently) + return + } + r2 := new(http.Request) *r2 = *r r2.URL = new(url.URL) From b5f970731be11d3fc8f59b194b15089b6c13bd5f Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 14 Mar 2026 09:31:34 +0100 Subject: [PATCH 094/126] chore(release): 2.62.1 --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 641230bc72..0fc2176b94 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines. +## [2.62.1](https://github.com/filebrowser/filebrowser/compare/v2.62.0...v2.62.1) (2026-03-14) + + +### Bug Fixes + +* base url/reverse proxy redirect ([fc80f4f](https://github.com/filebrowser/filebrowser/commit/fc80f4f44c856ddc19df3024c245990fffd55630)) + ## [2.62.0](https://github.com/filebrowser/filebrowser/compare/v2.61.2...v2.62.0) (2026-03-14) From 811cf2dfe5a3c1c5132320eb8e48c1ab1805441b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 21 Mar 2026 07:13:58 +0100 Subject: [PATCH 095/126] chore(deps): update go-task/setup-task action to v2 (#5856) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/ci.yaml | 4 ++-- .github/workflows/docs.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 895dfe2b4b..a8c11c9ea5 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -68,7 +68,7 @@ jobs: cache: "pnpm" cache-dependency-path: "frontend/pnpm-lock.yaml" - name: Install Task - uses: go-task/setup-task@v1 + uses: go-task/setup-task@v2 - run: task build release: @@ -96,7 +96,7 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v4 - name: Install Task - uses: go-task/setup-task@v1 + uses: go-task/setup-task@v2 - run: task build:frontend - name: Login to Docker Hub uses: docker/login-action@v4 diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 6dfcfe2394..d7cbf75e10 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -20,7 +20,7 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v4 - name: Install Task - uses: go-task/setup-task@v1 + uses: go-task/setup-task@v2 - name: Build site run: task docs @@ -41,7 +41,7 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v4 - name: Install Task - uses: go-task/setup-task@v1 + uses: go-task/setup-task@v2 - name: Build site run: task docs - name: Upload static files as artifact From 6d44b3ae1d8d26484380bd90d8eb90a08a7fc062 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 21 Mar 2026 07:14:02 +0100 Subject: [PATCH 096/126] chore(deps): update pnpm/action-setup action to v5 (#5857) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/ci.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index a8c11c9ea5..c6e4c7b39f 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v5 with: package_json_file: "frontend/package.json" - uses: actions/setup-node@v6 @@ -59,7 +59,7 @@ jobs: - uses: actions/setup-go@v6 with: go-version: '1.26' - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v5 with: package_json_file: "frontend/package.json" - uses: actions/setup-node@v6 @@ -83,7 +83,7 @@ jobs: - uses: actions/setup-go@v6 with: go-version: '1.26' - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v5 with: package_json_file: "frontend/package.json" - uses: actions/setup-node@v6 From 48125365551ce2b27790aaafd7594cf5ce52f1ba Mon Sep 17 00:00:00 2001 From: Arran Date: Thu, 26 Mar 2026 15:27:28 +0000 Subject: [PATCH 097/126] fix: touch Redis upload cache key on GetLength to prevent TTL expiry (#5850) --- http/upload_cache_redis.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/http/upload_cache_redis.go b/http/upload_cache_redis.go index 9926eba2b1..9f2025bc84 100644 --- a/http/upload_cache_redis.go +++ b/http/upload_cache_redis.go @@ -67,6 +67,8 @@ func (c *redisUploadCache) GetLength(filePath string) (int64, error) { return 0, fmt.Errorf("invalid upload length in cache: %w", err) } + c.Touch(filePath) + return size, nil } From ae72f9366704490a5cc3ce3cff7b18d405415653 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 28 Mar 2026 18:53:12 +0100 Subject: [PATCH 098/126] chore(deps): update actions/deploy-pages action to v5 (#5866) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index d7cbf75e10..4e7c4da4e7 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -49,4 +49,4 @@ jobs: with: path: www/public - name: Deploy to GitHub Pages - uses: actions/deploy-pages@v4 + uses: actions/deploy-pages@v5 From 432f3e60ffdf92af6f8f56119a1bac8084f52a60 Mon Sep 17 00:00:00 2001 From: fabb <7251331+fabboe@users.noreply.github.com> Date: Sat, 28 Mar 2026 18:59:28 +0100 Subject: [PATCH 099/126] fix: double slash in TUS upload path when readEntries returns multiple batches (#5848) --- .github/workflows/ci.yaml | 18 ++ frontend/package.json | 4 +- frontend/pnpm-lock.yaml | 230 ++++++++++++++++++++ frontend/src/utils/__tests__/upload.test.ts | 80 +++++++ frontend/src/utils/upload.ts | 7 +- 5 files changed, 336 insertions(+), 3 deletions(-) create mode 100644 frontend/src/utils/__tests__/upload.test.ts diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index c6e4c7b39f..4ab6e9df14 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -27,6 +27,24 @@ jobs: pnpm install --frozen-lockfile pnpm run lint + test-frontend: + name: Test Frontend + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + - uses: pnpm/action-setup@v4 + with: + package_json_file: "frontend/package.json" + - uses: actions/setup-node@v6 + with: + node-version: "24.x" + cache: "pnpm" + cache-dependency-path: "frontend/pnpm-lock.yaml" + - working-directory: frontend + run: | + pnpm install --frozen-lockfile + pnpm run test + lint-backend: name: Lint Backend runs-on: ubuntu-latest diff --git a/frontend/package.json b/frontend/package.json index 36c7ae095d..2764d578d1 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -14,7 +14,8 @@ "typecheck": "vue-tsc -p ./tsconfig.app.json --noEmit", "lint": "eslint src/", "lint:fix": "eslint --fix src/", - "format": "prettier --write ." + "format": "prettier --write .", + "test": "vitest run" }, "dependencies": { "@chenfengyuan/vue-number-input": "^2.0.1", @@ -70,6 +71,7 @@ "typescript": "^5.9.3", "vite": "^8.0.0", "vite-plugin-compression2": "^2.3.1", + "vitest": "^4.1.0", "vue-tsc": "^3.1.3" }, "packageManager": "pnpm@10.32.1+sha512.a706938f0e89ac1456b6563eab4edf1d1faf3368d1191fc5c59790e96dc918e4456ab2e67d613de1043d2e8c81f87303e6b40d4ffeca9df15ef1ad567348f2be" diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 58de3b03df..3c26364cec 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -162,6 +162,9 @@ importers: vite-plugin-compression2: specifier: ^2.3.1 version: 2.5.1(rollup@4.57.1) + vitest: + specifier: ^4.1.0 + version: 4.1.0(@types/node@24.12.0)(vite@8.0.0(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.0)(yaml@2.8.2)) vue-tsc: specifier: ^3.1.3 version: 3.2.5(typescript@5.9.3) @@ -1400,12 +1403,21 @@ packages: cpu: [x64] os: [win32] + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} + '@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/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} + + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + '@types/esrecurse@4.3.1': resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} @@ -1572,6 +1584,35 @@ packages: vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 vue: ^3.2.25 + '@vitest/expect@4.1.0': + resolution: {integrity: sha512-EIxG7k4wlWweuCLG9Y5InKFwpMEOyrMb6ZJ1ihYu02LVj/bzUwn2VMU+13PinsjRW75XnITeFrQBMH5+dLvCDA==} + + '@vitest/mocker@4.1.0': + resolution: {integrity: sha512-evxREh+Hork43+Y4IOhTo+h5lGmVRyjqI739Rz4RlUPqwrkFFDF6EMvOOYjTx4E8Tl6gyCLRL8Mu7Ry12a13Tw==} + peerDependencies: + msw: ^2.4.9 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0-0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@4.1.0': + resolution: {integrity: sha512-3RZLZlh88Ib0J7NQTRATfc/3ZPOnSUn2uDBUoGNn5T36+bALixmzphN26OUD3LRXWkJu4H0s5vvUeqBiw+kS0A==} + + '@vitest/runner@4.1.0': + resolution: {integrity: sha512-Duvx2OzQ7d6OjchL+trw+aSrb9idh7pnNfxrklo14p3zmNL4qPCDeIJAK+eBKYjkIwG96Bc6vYuxhqDXQOWpoQ==} + + '@vitest/snapshot@4.1.0': + resolution: {integrity: sha512-0Vy9euT1kgsnj1CHttwi9i9o+4rRLEaPRSOJ5gyv579GJkNpgJK+B4HSv/rAWixx2wdAFci1X4CEPjiu2bXIMg==} + + '@vitest/spy@4.1.0': + resolution: {integrity: sha512-pz77k+PgNpyMDv2FV6qmk5ZVau6c3R8HC8v342T2xlFxQKTrSeYw9waIJG8KgV9fFwAtTu4ceRzMivPTH6wSxw==} + + '@vitest/utils@4.1.0': + resolution: {integrity: sha512-XfPXT6a8TZY3dcGY8EdwsBulFCIw+BeeX0RZn2x/BtiY/75YGh8FeWGG8QISN/WhaqSrE2OrlDgtF8q5uhOTmw==} + '@volar/language-core@2.4.28': resolution: {integrity: sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==} @@ -1777,6 +1818,10 @@ packages: alien-signals@3.1.2: resolution: {integrity: sha512-d9dYqZTS90WLiU0I5c6DHj/HcKkF8ZyGN3G5x8wSbslulz70KOxaqCT0hQCo9KOyhVqzqGojvNdJXoTumZOtcw==} + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + ast-kit@2.2.0: resolution: {integrity: sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw==} engines: {node: '>=20.19.0'} @@ -1853,6 +1898,10 @@ packages: caniuse-lite@1.0.30001774: resolution: {integrity: sha512-DDdwPGz99nmIEv216hKSgLD+D4ikHQHjBC/seF98N9CPqRX4M5mSxT9eTV6oyisnJcuzxtZy4n17yKKQYmYQOA==} + chai@6.2.2: + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} + engines: {node: '>=18'} + chokidar@5.0.0: resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} engines: {node: '>= 20.19.0'} @@ -1946,6 +1995,9 @@ packages: epubjs@0.3.93: resolution: {integrity: sha512-c06pNSdBxcXv3dZSbXAVLE1/pmleRhOT6mXNZo6INKmvuKpYB65MwU/lO7830czCtjIiK9i+KR+3S+p0wtljrw==} + es-module-lexer@2.0.0: + resolution: {integrity: sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==} + es5-ext@0.10.64: resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} engines: {node: '>=0.10'} @@ -2068,6 +2120,9 @@ packages: estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} @@ -2075,6 +2130,10 @@ packages: event-emitter@0.3.5: resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} + expect-type@1.3.0: + resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} + engines: {node: '>=12.0.0'} + exsolve@1.0.8: resolution: {integrity: sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==} @@ -2487,6 +2546,9 @@ packages: nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + obug@2.1.1: + resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} + optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} @@ -2700,6 +2762,9 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} @@ -2718,6 +2783,12 @@ packages: resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} engines: {node: '>=0.10.0'} + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + std-env@4.0.0: + resolution: {integrity: sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ==} + string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} @@ -2747,10 +2818,21 @@ packages: engines: {node: '>=10'} hasBin: true + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinyexec@1.0.4: + resolution: {integrity: sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==} + engines: {node: '>=18'} + tinyglobby@0.2.15: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} + tinyrainbow@3.1.0: + resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} + engines: {node: '>=14.0.0'} + to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -2909,6 +2991,41 @@ packages: yaml: optional: true + vitest@4.1.0: + resolution: {integrity: sha512-YbDrMF9jM2Lqc++2530UourxZHmkKLxrs4+mYhEwqWS97WJ7wOYEkcr+QfRgJ3PW9wz3odRijLZjHEaRLTNbqw==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@opentelemetry/api': ^1.9.0 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.1.0 + '@vitest/browser-preview': 4.1.0 + '@vitest/browser-webdriverio': 4.1.0 + '@vitest/ui': 4.1.0 + happy-dom: '*' + jsdom: '*' + vite: ^6.0.0 || ^7.0.0 || ^8.0.0-0 + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@opentelemetry/api': + optional: true + '@types/node': + optional: true + '@vitest/browser-playwright': + optional: true + '@vitest/browser-preview': + optional: true + '@vitest/browser-webdriverio': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + vscode-uri@3.1.0: resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} @@ -2972,6 +3089,11 @@ packages: engines: {node: '>= 8'} hasBin: true + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} @@ -4135,6 +4257,8 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.57.1': optional: true + '@standard-schema/spec@1.1.0': {} + '@tsconfig/node24@24.0.4': {} '@tybys/wasm-util@0.10.1': @@ -4142,6 +4266,13 @@ snapshots: tslib: 2.8.1 optional: true + '@types/chai@5.2.3': + dependencies: + '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 + + '@types/deep-eql@4.0.2': {} + '@types/esrecurse@4.3.1': {} '@types/estree@1.0.8': {} @@ -4384,6 +4515,47 @@ snapshots: 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) + '@vitest/expect@4.1.0': + dependencies: + '@standard-schema/spec': 1.1.0 + '@types/chai': 5.2.3 + '@vitest/spy': 4.1.0 + '@vitest/utils': 4.1.0 + chai: 6.2.2 + tinyrainbow: 3.1.0 + + '@vitest/mocker@4.1.0(vite@8.0.0(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.0)(yaml@2.8.2))': + dependencies: + '@vitest/spy': 4.1.0 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + vite: 8.0.0(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.0)(yaml@2.8.2) + + '@vitest/pretty-format@4.1.0': + dependencies: + tinyrainbow: 3.1.0 + + '@vitest/runner@4.1.0': + dependencies: + '@vitest/utils': 4.1.0 + pathe: 2.0.3 + + '@vitest/snapshot@4.1.0': + dependencies: + '@vitest/pretty-format': 4.1.0 + '@vitest/utils': 4.1.0 + magic-string: 0.30.21 + pathe: 2.0.3 + + '@vitest/spy@4.1.0': {} + + '@vitest/utils@4.1.0': + dependencies: + '@vitest/pretty-format': 4.1.0 + convert-source-map: 2.0.0 + tinyrainbow: 3.1.0 + '@volar/language-core@2.4.28': dependencies: '@volar/source-map': 2.4.28 @@ -4619,6 +4791,8 @@ snapshots: alien-signals@3.1.2: {} + assertion-error@2.0.1: {} + ast-kit@2.2.0: dependencies: '@babel/parser': 7.29.0 @@ -4701,6 +4875,8 @@ snapshots: caniuse-lite@1.0.30001774: {} + chai@6.2.2: {} + chokidar@5.0.0: dependencies: readdirp: 5.0.0 @@ -4783,6 +4959,8 @@ snapshots: marks-pane: 1.0.9 path-webpack: 0.0.3 + es-module-lexer@2.0.0: {} + es5-ext@0.10.64: dependencies: es6-iterator: 2.0.3 @@ -4977,6 +5155,10 @@ snapshots: estree-walker@2.0.2: {} + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.8 + esutils@2.0.3: {} event-emitter@0.3.5: @@ -4984,6 +5166,8 @@ snapshots: d: 1.0.2 es5-ext: 0.10.64 + expect-type@1.3.0: {} + exsolve@1.0.8: {} ext@1.7.0: @@ -5338,6 +5522,8 @@ snapshots: dependencies: boolbase: 1.0.0 + obug@2.1.1: {} + optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -5569,6 +5755,8 @@ snapshots: shebang-regex@3.0.0: {} + siginfo@2.0.0: {} + signal-exit@3.0.7: {} source-map-js@1.2.1: {} @@ -5582,6 +5770,10 @@ snapshots: speakingurl@14.0.1: {} + stackback@0.0.2: {} + + std-env@4.0.0: {} + string_decoder@1.1.1: dependencies: safe-buffer: 5.1.2 @@ -5610,11 +5802,17 @@ snapshots: commander: 2.20.3 source-map-support: 0.5.21 + tinybench@2.9.0: {} + + tinyexec@1.0.4: {} + tinyglobby@0.2.15: dependencies: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 + tinyrainbow@3.1.0: {} + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 @@ -5764,6 +5962,33 @@ snapshots: terser: 5.46.0 yaml: 2.8.2 + vitest@4.1.0(@types/node@24.12.0)(vite@8.0.0(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.0)(yaml@2.8.2)): + dependencies: + '@vitest/expect': 4.1.0 + '@vitest/mocker': 4.1.0(vite@8.0.0(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.0)(yaml@2.8.2)) + '@vitest/pretty-format': 4.1.0 + '@vitest/runner': 4.1.0 + '@vitest/snapshot': 4.1.0 + '@vitest/spy': 4.1.0 + '@vitest/utils': 4.1.0 + es-module-lexer: 2.0.0 + expect-type: 1.3.0 + magic-string: 0.30.21 + obug: 2.1.1 + pathe: 2.0.3 + picomatch: 4.0.3 + std-env: 4.0.0 + tinybench: 2.9.0 + tinyexec: 1.0.4 + tinyglobby: 0.2.15 + tinyrainbow: 3.1.0 + vite: 8.0.0(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.0)(yaml@2.8.2) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 24.12.0 + transitivePeerDependencies: + - msw + vscode-uri@3.1.0: {} vue-eslint-parser@10.4.0(eslint@10.0.3): @@ -5842,6 +6067,11 @@ snapshots: dependencies: isexe: 2.0.0 + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + word-wrap@1.2.5: {} xml-name-validator@4.0.0: {} diff --git a/frontend/src/utils/__tests__/upload.test.ts b/frontend/src/utils/__tests__/upload.test.ts new file mode 100644 index 0000000000..b28868ea2b --- /dev/null +++ b/frontend/src/utils/__tests__/upload.test.ts @@ -0,0 +1,80 @@ +import { describe, it, expect } from "vitest"; + +/** + * Reproduces the path-building logic from scanFiles() in upload.ts (lines 118-138). + * + * readReaderContent() is called when traversing a dropped folder. The browser's + * FileSystemDirectoryReader.readEntries() returns entries in batches — you must + * call it repeatedly until it returns an empty array. Each recursive call in the + * current code appends "/" to the directory, so the second batch and beyond get + * double (or triple, etc.) slashes in the constructed fullPath. + */ + +type Entry = { name: string; isFile: boolean; isDirectory: boolean }; + +function simulateScanFiles( + dirName: string, + entryBatches: Entry[][] +): string[] { + const paths: string[] = []; + let batchIndex = 0; + + // Mirrors readEntry() for files — records fullPath as `${directory}${file.name}` + function readEntry(entry: Entry, directory = ""): void { + if (entry.isFile) { + paths.push(`${directory}${entry.name}`); + } + } + + // Mirrors readReaderContent() from upload.ts lines 118-138 + function readReaderContent(directory: string): void { + const entries = batchIndex < entryBatches.length ? entryBatches[batchIndex] : []; + batchIndex++; + + if (entries.length > 0) { + const dirWithSlash = directory.endsWith("/") + ? directory + : `${directory}/`; + for (const entry of entries) { + readEntry(entry, dirWithSlash); + } + readReaderContent(dirWithSlash); + } + } + + // Initial call mirrors readEntry() for a directory — upload.ts line 111-114 + readReaderContent(dirName); + return paths; +} + +describe("scanFiles path construction", () => { + it("should not produce double slashes when readEntries returns multiple batches", () => { + // Two batches: simulates a large directory where the browser splits + // readEntries() results across multiple calls + const paths = simulateScanFiles("TestFolder", [ + [ + { name: "file1.xlsx", isFile: true, isDirectory: false }, + { name: "file2.xlsx", isFile: true, isDirectory: false }, + ], + [ + { name: "file3.xlsx", isFile: true, isDirectory: false }, + ], + ]); + + expect(paths).toHaveLength(3); + + for (const p of paths) { + expect(p, `path "${p}" contains double slash`).not.toContain("//"); + } + }); + + it("single batch should work fine (no regression)", () => { + const paths = simulateScanFiles("TestFolder", [ + [ + { name: "file1.xlsx", isFile: true, isDirectory: false }, + ], + ]); + + expect(paths).toEqual(["TestFolder/file1.xlsx"]); + }); +}); diff --git a/frontend/src/utils/upload.ts b/frontend/src/utils/upload.ts index 3b68919223..b3f6c329a1 100644 --- a/frontend/src/utils/upload.ts +++ b/frontend/src/utils/upload.ts @@ -124,11 +124,14 @@ export function scanFiles(dt: DataTransfer): Promise { reader.readEntries((entries) => { reading--; if (entries.length > 0) { + const dirWithSlash = directory.endsWith("/") + ? directory + : `${directory}/`; for (const entry of entries) { - readEntry(entry, `${directory}/`); + readEntry(entry, dirWithSlash); } - readReaderContent(reader, `${directory}/`); + readReaderContent(reader, dirWithSlash); } if (reading === 0) { From 0616f6811f9b4ecfb15b3ad812a0c4f03c889326 Mon Sep 17 00:00:00 2001 From: "transifex-integration[bot]" <43880903+transifex-integration[bot]@users.noreply.github.com> Date: Sat, 28 Mar 2026 18:59:51 +0100 Subject: [PATCH 100/126] chore: Updates for project File Browser (#5847) Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com> --- frontend/src/i18n/hr.json | 42 ++++++++++++++++++------------------ frontend/src/i18n/ko.json | 4 ++-- frontend/src/i18n/pt-pt.json | 6 +++--- 3 files changed, 26 insertions(+), 26 deletions(-) diff --git a/frontend/src/i18n/hr.json b/frontend/src/i18n/hr.json index 9626a0c756..5a3abf3783 100644 --- a/frontend/src/i18n/hr.json +++ b/frontend/src/i18n/hr.json @@ -42,17 +42,17 @@ "update": "Ažuriraj", "upload": "Prenesi", "openFile": "Otvori datoteku", - "openDirect": "View raw", + "openDirect": "Pregled neobrađenog", "discardChanges": "Odbaci", - "stopSearch": "Stop searching", + "stopSearch": "Prestanak pretraživanja", "saveChanges": "Spremi promjene", "editAsText": "Uredi kao tekst", "increaseFontSize": "Povećaj veličinu fonta", "decreaseFontSize": "Smanji veličinu fonta", - "overrideAll": "Replace all files in destination folder", - "skipAll": "Skip all conflicting files", - "renameAll": "Rename all files (create a copy)", - "singleDecision": "Decide for each conflicting file" + "overrideAll": "Zamijeni sve datoteke u destinacijskoj mapi", + "skipAll": "Preskoči sve konfliktirajuće datoteke", + "renameAll": "Preimenuj sve datoteke (stvori kopiju)", + "singleDecision": "Odluči za svaku konfliktirajuću datoteku" }, "download": { "downloadFile": "Preuzmi Datoteku", @@ -94,7 +94,7 @@ "semicolon": "Točka zarez (;)", "both": "I (,) i (;)" }, - "fileEncoding": "File Encoding" + "fileEncoding": "Kodiranje datoteka" }, "help": { "click": "odaberi datoteku ili mapu", @@ -166,18 +166,18 @@ "optionalPassword": "Opcionalna lozinka", "resolution": "Rezolucija", "discardEditorChanges": "Jeste li sigurni da želite odbaciti promjene koje ste napravili?", - "replaceOrSkip": "Replace or skip files", - "resolveConflict": "Which files do you want to keep?", - "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", - "fastConflictResolve": "The destination folder there are {count} files with same name.", - "uploadingFiles": "Uploading files", - "filesInOrigin": "Files in origin", - "filesInDest": "Files in destination", - "override": "Overwrite", - "skip": "Skip", - "forbiddenError": "Forbidden Error", - "currentPassword": "Your password", - "currentPasswordMessage": "Enter your password to validate this action." + "replaceOrSkip": "Zamijeni ili preskoči datoteke", + "resolveConflict": "Koje datoteke želite sačuvati?", + "singleConflictResolve": "Ako odaberete obje verzije, u ime kopirane datoteke bit će dodan broj.", + "fastConflictResolve": "Destinacijska mapa sadrži {count} istoimenih datoteka.", + "uploadingFiles": "Prenošenje datoteka", + "filesInOrigin": "Datoteke u izvornoj mapi", + "filesInDest": "Datoteke u destinacijskoj mapi", + "override": "Prebrisivanje", + "skip": "Preskoči", + "forbiddenError": "Greška zabrane pristupa", + "currentPassword": "Vaša lozinka", + "currentPasswordMessage": "Unesite Vašu lozinku da biste validirali ovu akciju." }, "search": { "images": "Slike", @@ -250,7 +250,7 @@ "permissions": "Dopuštenja", "permissionsHelp": "Korisnika možete postaviti administratorom ili odabrati dopuštenja individualno. Odabirom na \"Administrator\", sve druge opcije bit će automatski odabrane. Upravljanje korisnicima ostaje privilegija administratora.\n", "profileSettings": "Postavke profila", - "redirectAfterCopyMove": "Redirect to destination after copy/move", + "redirectAfterCopyMove": "Preusmjeri na destinaciju nakon kopiranja/premještanja", "ruleExample1": "onemogućava pristup svakoj datoteci koja započinje točkom (poput .git, .gitignore) u svakoj mapi.\n", "ruleExample2": "blokira pristup datoteci naziva Caddyfile na korijenu opsega.", "rules": "Pravila", @@ -278,7 +278,7 @@ "userUpdated": "Korisnik ažuriran!", "username": "Korisničko ime", "users": "Korisnici", - "currentPassword": "Your Current Password" + "currentPassword": "Vaša trenutna lozinka" }, "sidebar": { "help": "Pomoć", diff --git a/frontend/src/i18n/ko.json b/frontend/src/i18n/ko.json index 1ca34ed38b..c03c39f670 100644 --- a/frontend/src/i18n/ko.json +++ b/frontend/src/i18n/ko.json @@ -176,8 +176,8 @@ "override": "덮어쓰기", "skip": "건너뛰기", "forbiddenError": "권한 오류", - "currentPassword": "Your password", - "currentPasswordMessage": "Enter your password to validate this action." + "currentPassword": "기존 비밀번호", + "currentPasswordMessage": "기존 비밀번호를 입력해 이 동작을 확인하십시오." }, "search": { "images": "이미지", diff --git a/frontend/src/i18n/pt-pt.json b/frontend/src/i18n/pt-pt.json index f7b8e52446..8430474c0a 100644 --- a/frontend/src/i18n/pt-pt.json +++ b/frontend/src/i18n/pt-pt.json @@ -100,7 +100,7 @@ "click": "seleccionar ficheiro ou pasta", "ctrl": { "click": "seleccionar vários ficheiros e pastas", - "f": "opens search", + "f": "abre a pesquisa", "s": "guarda um ficheiro ou descarrega a pasta onde estiver" }, "del": "elimina os itens seleccionados", @@ -145,7 +145,7 @@ "lastModified": "última modificação", "move": "Mover", "moveMessage": "Escolha uma nova casa para o(s) seu(s) ficheiro(s)/pasta(s):", - "newArchetype": "Escolha um novo post baseado no archetype. O seu ficheiro irá criado no conteúdo da pasta.", + "newArchetype": "Criar uma nova publicação baseado no archetype. O seu ficheiro irá ser criado no conteúdo da pasta.", "newDir": "Nova pasta", "newDirMessage": "Nomeie a sua nova pasta.", "newFile": "Novo ficheiro", @@ -157,7 +157,7 @@ "replace": "Substituir", "replaceMessage": "Um dos ficheiros que está a tentar enviar tem um nome em conflito. Quer ignorar este ficheiro e continuar a enviar ou substituir o existente?\none?\n", "schedule": "Agendar", - "scheduleMessage": "Escolha a data e hora para agendar a autenticação desta publicação.", + "scheduleMessage": "Escolha a data e hora para agendar a publicação desta publicação.", "show": "Mostrar", "size": "Tamanho", "upload": "Enviar", From 8f81b77cf2a3da0a445f3700fbf4a0091ea46c07 Mon Sep 17 00:00:00 2001 From: lif <1835304752@qq.com> Date: Sun, 29 Mar 2026 02:03:07 +0800 Subject: [PATCH 101/126] fix: include filename in Content-Disposition header for inline downloads (#5860) --- http/raw.go | 3 +- http/raw_test.go | 75 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 http/raw_test.go diff --git a/http/raw.go b/http/raw.go index a6857ffb32..b5c86643e5 100644 --- a/http/raw.go +++ b/http/raw.go @@ -72,7 +72,8 @@ func parseQueryAlgorithm(r *http.Request) (string, archives.Archival, error) { func setContentDisposition(w http.ResponseWriter, r *http.Request, file *files.FileInfo) { if r.URL.Query().Get("inline") == "true" { - w.Header().Set("Content-Disposition", "inline") + // As per RFC6266 section 4.3 + w.Header().Set("Content-Disposition", "inline; filename*=utf-8''"+url.PathEscape(file.Name)) } else { // As per RFC6266 section 4.3 w.Header().Set("Content-Disposition", "attachment; filename*=utf-8''"+url.PathEscape(file.Name)) diff --git a/http/raw_test.go b/http/raw_test.go new file mode 100644 index 0000000000..ec53a17334 --- /dev/null +++ b/http/raw_test.go @@ -0,0 +1,75 @@ +package fbhttp + +import ( + "net/http" + "net/http/httptest" + "net/url" + "testing" + + "github.com/filebrowser/filebrowser/v2/files" +) + +func TestSetContentDisposition(t *testing.T) { + t.Parallel() + + testCases := map[string]struct { + filename string + inline bool + expected string + }{ + "inline simple filename": { + filename: "document.pdf", + inline: true, + expected: "inline; filename*=utf-8''" + url.PathEscape("document.pdf"), + }, + "attachment simple filename": { + filename: "document.pdf", + inline: false, + expected: "attachment; filename*=utf-8''" + url.PathEscape("document.pdf"), + }, + "inline non-ASCII filename": { + filename: "日本語.txt", + inline: true, + expected: "inline; filename*=utf-8''" + url.PathEscape("日本語.txt"), + }, + "attachment non-ASCII filename": { + filename: "日本語.txt", + inline: false, + expected: "attachment; filename*=utf-8''" + url.PathEscape("日本語.txt"), + }, + "inline filename with spaces": { + filename: "my file.txt", + inline: true, + expected: "inline; filename*=utf-8''" + url.PathEscape("my file.txt"), + }, + "attachment filename with spaces": { + filename: "my file.txt", + inline: false, + expected: "attachment; filename*=utf-8''" + url.PathEscape("my file.txt"), + }, + } + + for name, tc := range testCases { + t.Run(name, func(t *testing.T) { + t.Parallel() + + recorder := httptest.NewRecorder() + req, err := http.NewRequest(http.MethodGet, "/test", http.NoBody) + if err != nil { + t.Fatalf("failed to create request: %v", err) + } + if tc.inline { + req.URL.RawQuery = "inline=true" + } + + file := &files.FileInfo{Name: tc.filename} + + setContentDisposition(recorder, req, file) + + got := recorder.Header().Get("Content-Disposition") + if got != tc.expected { + t.Errorf("Content-Disposition = %q, want %q", got, tc.expected) + } + }) + } +} From 8d8cd26d7f20d79bc24a01afb2574c7fb7a92b36 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 28 Mar 2026 19:04:25 +0100 Subject: [PATCH 102/126] chore(deps): update all non-major dependencies (#5838) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- frontend/package.json | 2 +- frontend/pnpm-lock.yaml | 1083 +++++++++++++++++++-------------------- go.mod | 2 +- go.sum | 4 +- 4 files changed, 529 insertions(+), 562 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 2764d578d1..2a756c10d8 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -74,5 +74,5 @@ "vitest": "^4.1.0", "vue-tsc": "^3.1.3" }, - "packageManager": "pnpm@10.32.1+sha512.a706938f0e89ac1456b6563eab4edf1d1faf3368d1191fc5c59790e96dc918e4456ab2e67d613de1043d2e8c81f87303e6b40d4ffeca9df15ef1ad567348f2be" + "packageManager": "pnpm@10.33.0+sha512.10568bb4a6afb58c9eb3630da90cc9516417abebd3fabbe6739f0ae795728da1491e9db5a544c76ad8eb7570f5c4bb3d6c637b2cb41bfdcdb47fa823c8649319" } diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 3c26364cec..f57dc60785 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -10,19 +10,19 @@ importers: dependencies: '@chenfengyuan/vue-number-input': specifier: ^2.0.1 - version: 2.0.1(vue@3.5.30(typescript@5.9.3)) + version: 2.0.1(vue@3.5.31(typescript@5.9.3)) '@vueuse/core': specifier: ^14.0.0 - version: 14.2.1(vue@3.5.30(typescript@5.9.3)) + version: 14.2.1(vue@3.5.31(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)) + version: 14.2.1(focus-trap@8.0.0)(jwt-decode@4.0.0)(vue@3.5.31(typescript@5.9.3)) ace-builds: specifier: ^1.43.2 version: 1.43.6 csv-parse: specifier: ^6.1.0 - version: 6.1.0 + version: 6.2.1 dayjs: specifier: ^1.11.13 version: 1.11.20 @@ -34,7 +34,7 @@ importers: version: 0.3.93 filesize: specifier: ^11.0.13 - version: 11.0.13 + version: 11.0.14 js-base64: specifier: ^3.7.7 version: 3.7.8 @@ -46,10 +46,10 @@ importers: version: 4.17.23 marked: specifier: ^17.0.0 - version: 17.0.4 + version: 17.0.5 marked-katex-extension: specifier: ^5.1.6 - version: 5.1.7(katex@0.16.28)(marked@17.0.4) + version: 5.1.7(katex@0.16.28)(marked@17.0.5) material-icons: specifier: ^1.13.14 version: 1.13.14 @@ -58,13 +58,13 @@ importers: 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)) + version: 3.0.4(typescript@5.9.3)(vue@3.5.31(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)) + version: 3.8.0(vue@3.5.31(typescript@5.9.3)) tus-js-client: specifier: ^4.3.1 version: 4.3.1 @@ -79,13 +79,13 @@ importers: version: 0.2.30 videojs-mobile-ui: specifier: ^1.1.1 - version: 1.2.2(video.js@8.23.7) + version: 1.2.3(video.js@8.23.7) vue: specifier: ^3.5.17 - version: 3.5.30(typescript@5.9.3) + version: 3.5.31(typescript@5.9.3) vue-i18n: specifier: ^11.1.10 - version: 11.3.0(vue@3.5.30(typescript@5.9.3)) + version: 11.3.0(vue@3.5.31(typescript@5.9.3)) vue-lazyload: specifier: ^3.0.0 version: 3.0.0 @@ -94,14 +94,14 @@ importers: 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)) + version: 5.0.4(@vue/compiler-sfc@3.5.31)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.31(typescript@5.9.3)))(vue@3.5.31(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)) + version: 2.0.0-rc.5(vue@3.5.31(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)) + version: 11.0.7(@vue/compiler-dom@3.5.31)(eslint@10.1.0)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.3.0(vue@3.5.31(typescript@5.9.3)))(vue@3.5.31(typescript@5.9.3)) '@tsconfig/node24': specifier: ^24.0.2 version: 24.0.4 @@ -113,37 +113,37 @@ importers: 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) + version: 8.57.2(@typescript-eslint/parser@8.56.0(eslint@10.1.0)(typescript@5.9.3))(eslint@10.1.0)(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)) + version: 8.0.1(terser@5.46.1)(vite@8.0.3(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.1)(yaml@2.8.3)) '@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)) + version: 6.0.5(vite@8.0.3(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.1)(yaml@2.8.3))(vue@3.5.31(typescript@5.9.3)) '@vue/eslint-config-prettier': specifier: ^10.2.0 - version: 10.2.0(eslint@10.0.3)(prettier@3.8.1) + version: 10.2.0(eslint@10.1.0)(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) + version: 14.7.0(eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.1.0)(typescript@5.9.3))(eslint@10.1.0)(vue-eslint-parser@10.4.0(eslint@10.1.0)))(eslint@10.1.0)(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)) + version: 0.9.1(typescript@5.9.3)(vue@3.5.31(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 + version: 10.1.0 eslint-config-prettier: specifier: ^10.1.5 - version: 10.1.8(eslint@10.0.3) + version: 10.1.8(eslint@10.1.0) 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) + version: 5.5.5(eslint-config-prettier@10.1.8(eslint@10.1.0))(eslint@10.1.0)(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)) + version: 10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.1.0)(typescript@5.9.3))(eslint@10.1.0)(vue-eslint-parser@10.4.0(eslint@10.1.0)) postcss: specifier: ^8.5.6 version: 8.5.8 @@ -152,22 +152,22 @@ importers: version: 3.8.1 terser: specifier: ^5.43.1 - version: 5.46.0 + version: 5.46.1 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) + version: 8.0.3(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.1)(yaml@2.8.3) vite-plugin-compression2: specifier: ^2.3.1 - version: 2.5.1(rollup@4.57.1) + version: 2.5.3(rollup@4.57.1) vitest: specifier: ^4.1.0 - version: 4.1.0(@types/node@24.12.0)(vite@8.0.0(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.0)(yaml@2.8.2)) + version: 4.1.2(@types/node@24.12.0)(vite@8.0.3(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.1)(yaml@2.8.3)) vue-tsc: specifier: ^3.1.3 - version: 3.2.5(typescript@5.9.3) + version: 3.2.6(typescript@5.9.3) packages: @@ -207,13 +207,8 @@ packages: 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==} + '@babel/helper-define-polyfill-provider@0.6.8': + resolution: {integrity: sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 @@ -275,8 +270,8 @@ packages: 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==} + '@babel/helpers@7.29.2': + resolution: {integrity: sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==} engines: {node: '>=6.9.0'} '@babel/parser@7.29.0': @@ -284,6 +279,11 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.29.2': + resolution: {integrity: sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==} + 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'} @@ -644,8 +644,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/preset-env@7.29.0': - resolution: {integrity: sha512-fNEdfc0yi16lt6IZo2Qxk3knHVdfMYX33czNb4v8yWhemoBhibCpQK/uYHtSKIiO+p/zd3+8fYVXhQdOVV608w==} + '@babel/preset-env@7.29.2': + resolution: {integrity: sha512-DYD23veRYGvBFhcTY1iUvJnDNpuqNd/BzBwCvzOTKUnJjKg5kpUBh3/u9585Agdkgj+QuygG7jLfOPWMa2KVNw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1129,8 +1129,11 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - '@napi-rs/wasm-runtime@1.1.1': - resolution: {integrity: sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==} + '@napi-rs/wasm-runtime@1.1.2': + resolution: {integrity: sha512-sNXv5oLJ7ob93xkZ1XnxisYhGYXfaG9f65/ZgYuAu3qt7b3NadcOEhLvx28hv31PgX8SZJRYrAIPQilQmFpLVw==} + peerDependencies: + '@emnapi/core': ^1.7.1 + '@emnapi/runtime': ^1.7.1 '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -1144,118 +1147,114 @@ packages: 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==} + '@oxc-project/types@0.122.0': + resolution: {integrity: sha512-oLAl5kBpV4w69UtFZ9xqcmTi+GENWOcPF7FCrczTiBbmC0ibXxCwyvZGbO39rCVEuLGAZM84DH0pUIyyv/YJzA==} '@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==} + '@rolldown/binding-android-arm64@1.0.0-rc.12': + resolution: {integrity: sha512-pv1y2Fv0JybcykuiiD3qBOBdz6RteYojRFY1d+b95WVuzx211CRh+ytI/+9iVyWQ6koTh5dawe4S/yRfOFjgaA==} 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==} + '@rolldown/binding-darwin-arm64@1.0.0-rc.12': + resolution: {integrity: sha512-cFYr6zTG/3PXXF3pUO+umXxt1wkRK/0AYT8lDwuqvRC+LuKYWSAQAQZjCWDQpAH172ZV6ieYrNnFzVVcnSflAg==} 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==} + '@rolldown/binding-darwin-x64@1.0.0-rc.12': + resolution: {integrity: sha512-ZCsYknnHzeXYps0lGBz8JrF37GpE9bFVefrlmDrAQhOEi4IOIlcoU1+FwHEtyXGx2VkYAvhu7dyBf75EJQffBw==} 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==} + '@rolldown/binding-freebsd-x64@1.0.0-rc.12': + resolution: {integrity: sha512-dMLeprcVsyJsKolRXyoTH3NL6qtsT0Y2xeuEA8WQJquWFXkEC4bcu1rLZZSnZRMtAqwtrF/Ib9Ddtpa/Gkge9Q==} 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==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.12': + resolution: {integrity: sha512-YqWjAgGC/9M1lz3GR1r1rP79nMgo3mQiiA+Hfo+pvKFK1fAJ1bCi0ZQVh8noOqNacuY1qIcfyVfP6HoyBRZ85Q==} 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==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.12': + resolution: {integrity: sha512-/I5AS4cIroLpslsmzXfwbe5OmWvSsrFuEw3mwvbQ1kDxJ822hFHIx+vsN/TAzNVyepI/j/GSzrtCIwQPeKCLIg==} 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==} + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.12': + resolution: {integrity: sha512-V6/wZztnBqlx5hJQqNWwFdxIKN0m38p8Jas+VoSfgH54HSj9tKTt1dZvG6JRHcjh6D7TvrJPWFGaY9UBVOaWPw==} 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==} + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.12': + resolution: {integrity: sha512-AP3E9BpcUYliZCxa3w5Kwj9OtEVDYK6sVoUzy4vTOJsjPOgdaJZKFmN4oOlX0Wp0RPV2ETfmIra9x1xuayFB7g==} 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==} + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.12': + resolution: {integrity: sha512-nWwpvUSPkoFmZo0kQazZYOrT7J5DGOJ/+QHHzjvNlooDZED8oH82Yg67HvehPPLAg5fUff7TfWFHQS8IV1n3og==} 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==} + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.12': + resolution: {integrity: sha512-RNrafz5bcwRy+O9e6P8Z/OCAJW/A+qtBczIqVYwTs14pf4iV1/+eKEjdOUta93q2TsT/FI0XYDP3TCky38LMAg==} 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==} + '@rolldown/binding-linux-x64-musl@1.0.0-rc.12': + resolution: {integrity: sha512-Jpw/0iwoKWx3LJ2rc1yjFrj+T7iHZn2JDg1Yny1ma0luviFS4mhAIcd1LFNxK3EYu3DHWCps0ydXQ5i/rrJ2ig==} 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==} + '@rolldown/binding-openharmony-arm64@1.0.0-rc.12': + resolution: {integrity: sha512-vRugONE4yMfVn0+7lUKdKvN4D5YusEiPilaoO2sgUWpCvrncvWgPMzK00ZFFJuiPgLwgFNP5eSiUlv2tfc+lpA==} 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==} + '@rolldown/binding-wasm32-wasi@1.0.0-rc.12': + resolution: {integrity: sha512-ykGiLr/6kkiHc0XnBfmFJuCjr5ZYKKofkx+chJWDjitX+KsJuAmrzWhwyOMSHzPhzOHOy7u9HlFoa5MoAOJ/Zg==} 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==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.12': + resolution: {integrity: sha512-5eOND4duWkwx1AzCxadcOrNeighiLwMInEADT0YM7xeEOOFcovWZCq8dadXgcRHSf3Ulh1kFo/qvzoFiCLOL1Q==} 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==} + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.12': + resolution: {integrity: sha512-PyqoipaswDLAZtot351MLhrlrh6lcZPo2LSYE+VDxbVk24LVKAGOuE4hb8xZQmrPAuEtTZW8E6D2zc5EUZX4Lw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] + '@rolldown/pluginutils@1.0.0-rc.12': + resolution: {integrity: sha512-HHMwmarRKvoFsJorqYlFeFRzXZqCt2ETQlEDOb9aqssrnVBB1/+xgTGtuTrIk5vzLNX1MjMtTf7W9z3tsSbrxw==} + '@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'} @@ -1454,11 +1453,11 @@ packages: 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==} + '@typescript-eslint/eslint-plugin@8.57.2': + resolution: {integrity: sha512-NZZgp0Fm2IkD+La5PR81sd+g+8oS6JwJje+aRWsDocxHkjyRw0J5L5ZTlN3LI1LlOcGL7ph3eaIUmTXMIjLk0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.57.0 + '@typescript-eslint/parser': ^8.57.2 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' @@ -1475,8 +1474,8 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.57.0': - resolution: {integrity: sha512-pR+dK0BlxCLxtWfaKQWtYr7MhKmzqZxuii+ZjuFlZlIGRZm22HnXFqa2eY+90MUz8/i80YJmzFGDUsi8dMOV5w==} + '@typescript-eslint/project-service@8.57.2': + resolution: {integrity: sha512-FuH0wipFywXRTHf+bTTjNyuNQQsQC3qh/dYzaM4I4W0jrCqjCVuUh99+xd9KamUfmCGPvbO8NDngo/vsnNVqgw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' @@ -1485,8 +1484,8 @@ packages: 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==} + '@typescript-eslint/scope-manager@8.57.2': + resolution: {integrity: sha512-snZKH+W4WbWkrBqj4gUNRIGb/jipDW3qMqVJ4C9rzdFc+wLwruxk+2a5D+uoFcKPAqyqEnSb4l2ULuZf95eSkw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/tsconfig-utils@8.56.0': @@ -1495,8 +1494,8 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/tsconfig-utils@8.57.0': - resolution: {integrity: sha512-LtXRihc5ytjJIQEH+xqjB0+YgsV4/tW35XKX3GTZHpWtcC8SPkT/d4tqdf1cKtesryHm2bgp6l555NYcT2NLvA==} + '@typescript-eslint/tsconfig-utils@8.57.2': + resolution: {integrity: sha512-3Lm5DSM+DCowsUOJC+YqHHnKEfFh5CoGkj5Z31NQSNF4l5wdOwqGn99wmwN/LImhfY3KJnmordBq/4+VDe2eKw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' @@ -1508,8 +1507,8 @@ packages: 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==} + '@typescript-eslint/type-utils@8.57.2': + resolution: {integrity: sha512-Co6ZCShm6kIbAM/s+oYVpKFfW7LBc6FXoPXjTRQ449PPNBY8U0KZXuevz5IFuuUj2H9ss40atTaf9dlGLzbWZg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -1519,8 +1518,8 @@ packages: 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==} + '@typescript-eslint/types@8.57.2': + resolution: {integrity: sha512-/iZM6FnM4tnx9csuTxspMW4BOSegshwX5oBDznJ7S4WggL7Vczz5d2W11ecc4vRrQMQHXRSxzrCsyG5EsPPTbA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/typescript-estree@8.56.0': @@ -1529,8 +1528,8 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/typescript-estree@8.57.0': - resolution: {integrity: sha512-m7faHcyVg0BT3VdYTlX8GdJEM7COexXxS6KqGopxdtkQRvBanK377QDHr4W/vIPAR+ah9+B/RclSW5ldVniO1Q==} + '@typescript-eslint/typescript-estree@8.57.2': + resolution: {integrity: sha512-2MKM+I6g8tJxfSmFKOnHv2t8Sk3T6rF20A1Puk0svLK+uVapDZB/4pfAeB7nE83uAZrU6OxW+HmOd5wHVdXwXA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' @@ -1542,8 +1541,8 @@ packages: 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==} + '@typescript-eslint/utils@8.57.2': + resolution: {integrity: sha512-krRIbvPK1ju1WBKIefiX+bngPs+odIQUtR7kymzPfo1POVw3jlF+nLkmexdSSd4UCbDcQn+wMBATOOmpBbqgKg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -1553,8 +1552,8 @@ packages: 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==} + '@typescript-eslint/visitor-keys@8.57.2': + resolution: {integrity: sha512-zhahknjobV2FiD6Ee9iLbS7OV9zi10rG26odsQdfBO/hjSzUQbkIYgda+iNKK1zNiW2ey+Lf8MU5btN17V3dUw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@videojs/http-streaming@3.17.4': @@ -1570,8 +1569,8 @@ packages: '@videojs/xhr@2.7.0': resolution: {integrity: sha512-giab+EVRanChIupZK7gXjHy90y3nncA2phIOyG3Ne5fvpiMJzvqYwiTOnEVW2S4CoYcuKJkomat7bMXA/UoUZQ==} - '@vitejs/plugin-legacy@8.0.0': - resolution: {integrity: sha512-o5BmEuu4N+woyv+yUsiDrMUfMntJ1kEJITUYLd2ELOAETObwkWNFn5GNIQLLGx8liaobIvoXeSRiM/aYVIaeTQ==} + '@vitejs/plugin-legacy@8.0.1': + resolution: {integrity: sha512-8zeDeuNPqXd49rIVgFgluQYB8vQICHR7l+W2I3CxYK4gTjTorajVr0wLvSjALIwEwLRxBn68EgNVyGP4j6hP7w==} engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: terser: ^5.16.0 @@ -1584,34 +1583,34 @@ packages: vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 vue: ^3.2.25 - '@vitest/expect@4.1.0': - resolution: {integrity: sha512-EIxG7k4wlWweuCLG9Y5InKFwpMEOyrMb6ZJ1ihYu02LVj/bzUwn2VMU+13PinsjRW75XnITeFrQBMH5+dLvCDA==} + '@vitest/expect@4.1.2': + resolution: {integrity: sha512-gbu+7B0YgUJ2nkdsRJrFFW6X7NTP44WlhiclHniUhxADQJH5Szt9mZ9hWnJPJ8YwOK5zUOSSlSvyzRf0u1DSBQ==} - '@vitest/mocker@4.1.0': - resolution: {integrity: sha512-evxREh+Hork43+Y4IOhTo+h5lGmVRyjqI739Rz4RlUPqwrkFFDF6EMvOOYjTx4E8Tl6gyCLRL8Mu7Ry12a13Tw==} + '@vitest/mocker@4.1.2': + resolution: {integrity: sha512-Ize4iQtEALHDttPRCmN+FKqOl2vxTiNUhzobQFFt/BM1lRUTG7zRCLOykG/6Vo4E4hnUdfVLo5/eqKPukcWW7Q==} peerDependencies: msw: ^2.4.9 - vite: ^6.0.0 || ^7.0.0 || ^8.0.0-0 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: msw: optional: true vite: optional: true - '@vitest/pretty-format@4.1.0': - resolution: {integrity: sha512-3RZLZlh88Ib0J7NQTRATfc/3ZPOnSUn2uDBUoGNn5T36+bALixmzphN26OUD3LRXWkJu4H0s5vvUeqBiw+kS0A==} + '@vitest/pretty-format@4.1.2': + resolution: {integrity: sha512-dwQga8aejqeuB+TvXCMzSQemvV9hNEtDDpgUKDzOmNQayl2OG241PSWeJwKRH3CiC+sESrmoFd49rfnq7T4RnA==} - '@vitest/runner@4.1.0': - resolution: {integrity: sha512-Duvx2OzQ7d6OjchL+trw+aSrb9idh7pnNfxrklo14p3zmNL4qPCDeIJAK+eBKYjkIwG96Bc6vYuxhqDXQOWpoQ==} + '@vitest/runner@4.1.2': + resolution: {integrity: sha512-Gr+FQan34CdiYAwpGJmQG8PgkyFVmARK8/xSijia3eTFgVfpcpztWLuP6FttGNfPLJhaZVP/euvujeNYar36OQ==} - '@vitest/snapshot@4.1.0': - resolution: {integrity: sha512-0Vy9euT1kgsnj1CHttwi9i9o+4rRLEaPRSOJ5gyv579GJkNpgJK+B4HSv/rAWixx2wdAFci1X4CEPjiu2bXIMg==} + '@vitest/snapshot@4.1.2': + resolution: {integrity: sha512-g7yfUmxYS4mNxk31qbOYsSt2F4m1E02LFqO53Xpzg3zKMhLAPZAjjfyl9e6z7HrW6LvUdTwAQR3HHfLjpko16A==} - '@vitest/spy@4.1.0': - resolution: {integrity: sha512-pz77k+PgNpyMDv2FV6qmk5ZVau6c3R8HC8v342T2xlFxQKTrSeYw9waIJG8KgV9fFwAtTu4ceRzMivPTH6wSxw==} + '@vitest/spy@4.1.2': + resolution: {integrity: sha512-DU4fBnbVCJGNBwVA6xSToNXrkZNSiw59H8tcuUspVMsBDBST4nfvsPsEHDHGtWRRnqBERBQu7TrTKskmjqTXKA==} - '@vitest/utils@4.1.0': - resolution: {integrity: sha512-XfPXT6a8TZY3dcGY8EdwsBulFCIw+BeeX0RZn2x/BtiY/75YGh8FeWGG8QISN/WhaqSrE2OrlDgtF8q5uhOTmw==} + '@vitest/utils@4.1.2': + resolution: {integrity: sha512-xw2/TiX82lQHA06cgbqRKFb5lCAy3axQ4H4SoUFhUsg+wztiet+co86IAMDtF6Vm1hc7J6j09oh/rgDn+JdKIQ==} '@volar/language-core@2.4.28': resolution: {integrity: sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==} @@ -1631,29 +1630,17 @@ packages: 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-core@3.5.31': + resolution: {integrity: sha512-k/ueL14aNIEy5Onf0OVzR8kiqF/WThgLdFhxwa4e/KF/0qe38IwIdofoSWBTvvxQOesaz6riAFAUaYjoF9fLLQ==} - '@vue/compiler-dom@3.5.30': - resolution: {integrity: sha512-eCFYESUEVYHhiMuK4SQTldO3RYxyMR/UQL4KdGD1Yrkfdx4m/HYuZ9jSfPdA+nWJY34VWndiYdW/wZXyiPEB9g==} + '@vue/compiler-dom@3.5.31': + resolution: {integrity: sha512-BMY/ozS/xxjYqRFL+tKdRpATJYDTTgWSo0+AJvJNg4ig+Hgb0dOsHPXvloHQ5hmlivUqw1Yt2pPIqp4e0v1GUw==} - '@vue/compiler-sfc@3.5.28': - resolution: {integrity: sha512-6TnKMiNkd6u6VeVDhZn/07KhEZuBSn43Wd2No5zaP5s3xm8IqFTHBj84HJah4UepSUJTro5SoqqlOY22FKY96g==} + '@vue/compiler-sfc@3.5.31': + resolution: {integrity: sha512-M8wpPgR9UJ8MiRGjppvx9uWJfLV7A/T+/rL8s/y3QG3u0c2/YZgff3d6SuimKRIhcYnWg5fTfDMlz2E6seUW8Q==} - '@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/compiler-ssr@3.5.31': + resolution: {integrity: sha512-h0xIMxrt/LHOvJKMri+vdYT92BrK3HFLtDqq9Pr/lVVfE4IyKZKvWf0vJFW10Yr6nX02OR4MkJwI0c1HDa1hog==} '@vue/devtools-api@6.6.4': resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==} @@ -1661,20 +1648,20 @@ packages: '@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-api@8.1.1': + resolution: {integrity: sha512-bsDMJ07b3GN1puVwJb/fyFnj/U2imyswK5UQVLZwVl7O05jDrt6BHxeG5XffmOOdasOj/bOmIjxJvGPxU7pcqw==} '@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-kit@8.1.1': + resolution: {integrity: sha512-gVBaBv++i+adg4JpH71k9ppl4soyR7Y2McEqO5YNgv0BI1kMZ7BDX5gnwkZ5COYgiCyhejZG+yGNrBAjj6Coqg==} '@vue/devtools-shared@7.7.9': resolution: {integrity: sha512-iWAb0v2WYf0QWmxCGy0seZNDPdO3Sp5+u78ORnyeonS6MT4PC7VPrryX2BpMJrwlDeaZ6BD4vP4XKjK0SZqaeA==} - '@vue/devtools-shared@8.0.6': - resolution: {integrity: sha512-Pp1JylTqlgMJvxW6MGyfTF8vGvlBSCAvMFaDCYa82Mgw7TT5eE5kkHgDvmOGHWeJE4zIDfCpCxHapsK2LtIAJg==} + '@vue/devtools-shared@8.1.1': + resolution: {integrity: sha512-+h4ttmJYl/txpxHKaoZcaKpC+pvckgLzIDiSQlaQ7kKthKh8KuwoLW2D8hPJEnqKzXOvu15UHEoGyngAXCz0EQ==} '@vue/eslint-config-prettier@10.2.0': resolution: {integrity: sha512-GL3YBLwv/+b86yHcNNfPJxOTtVFJ4Mbc9UU3zR+KVoG7SwGTjPT+32fXamscNumElhcpXW3mT0DgzS9w32S7Bw==} @@ -1693,33 +1680,30 @@ packages: typescript: optional: true - '@vue/language-core@3.2.5': - resolution: {integrity: sha512-d3OIxN/+KRedeM5wQ6H6NIpwS3P5gC9nmyaHgBk+rO6dIsjY+tOh4UlPpiZbAh3YtLdCGEX4M16RmsBqPmJV+g==} + '@vue/language-core@3.2.6': + resolution: {integrity: sha512-xYYYX3/aVup576tP/23sEUpgiEnujrENaoNRbaozC1/MA9I6EGFQRJb4xrt/MmUCAGlxTKL2RmT8JLTPqagCkg==} - '@vue/reactivity@3.5.30': - resolution: {integrity: sha512-179YNgKATuwj9gB+66snskRDOitDiuOZqkYia7mHKJaidOMo/WJxHKF8DuGc4V4XbYTJANlfEKb0yxTQotnx4Q==} + '@vue/reactivity@3.5.31': + resolution: {integrity: sha512-DtKXxk9E/KuVvt8VxWu+6Luc9I9ETNcqR1T1oW1gf02nXaZ1kuAx58oVu7uX9XxJR0iJCro6fqBLw9oSBELo5g==} - '@vue/runtime-core@3.5.30': - resolution: {integrity: sha512-e0Z+8PQsUTdwV8TtEsLzUM7SzC7lQwYKePydb7K2ZnmS6jjND+WJXkmmfh/swYzRyfP1EY3fpdesyYoymCzYfg==} + '@vue/runtime-core@3.5.31': + resolution: {integrity: sha512-AZPmIHXEAyhpkmN7aWlqjSfYynmkWlluDNPHMCZKFHH+lLtxP/30UJmoVhXmbDoP1Ng0jG0fyY2zCj1PnSSA6Q==} - '@vue/runtime-dom@3.5.30': - resolution: {integrity: sha512-2UIGakjU4WSQ0T4iwDEW0W7vQj6n7AFn7taqZ9Cvm0Q/RA2FFOziLESrDL4GmtI1wV3jXg5nMoJSYO66egDUBw==} + '@vue/runtime-dom@3.5.31': + resolution: {integrity: sha512-xQJsNRmGPeDCJq/u813tyonNgWBFjzfVkBwDREdEWndBnGdHLHgkwNBQxLtg4zDrzKTEcnikUy1UUNecb3lJ6g==} - '@vue/server-renderer@3.5.30': - resolution: {integrity: sha512-v+R34icapydRwbZRD0sXwtHqrQJv38JuMB4JxbOxd8NEpGLny7cncMp53W9UH/zo4j8eDHjQ1dEJXwzFQknjtQ==} + '@vue/server-renderer@3.5.31': + resolution: {integrity: sha512-GJuwRvMcdZX/CriUnyIIOGkx3rMV3H6sOu0JhdKbduaeCji6zb60iOGMY7tFoN24NfsUYoFBhshZtGxGpxO4iA==} peerDependencies: - vue: 3.5.30 + vue: 3.5.31 - '@vue/shared@3.5.28': - resolution: {integrity: sha512-cfWa1fCGBxrvaHRhvV3Is0MgmrbSCxYTXCSCau2I0a1Xw1N1pHAvkWCiXPRAqjvToILvguNyEwjevUqAuBQWvQ==} + '@vue/shared@3.5.31': + resolution: {integrity: sha512-nBxuiuS9Lj5bPkPbWogPUnjxxWpkRniX7e5UBQDWl6Fsf4roq9wwV+cR7ezQ4zXswNvPIlsdj1slcLB7XCsRAw==} - '@vue/shared@3.5.30': - resolution: {integrity: sha512-YXgQ7JjaO18NeK2K9VTbDHaFy62WrObMa6XERNfNOkAhD1F1oDSf3ZJ7K6GqabZ0BvSDHajp8qfS5Sa2I9n8uQ==} - - '@vue/tsconfig@0.9.0': - resolution: {integrity: sha512-RP+v9Cpbsk1ZVXltCHHkYBr7+624x6gcijJXVjIcsYk7JXqvIpRtMwU2ARLvWDhmy9ffdFYxhsfJnPztADBohQ==} + '@vue/tsconfig@0.9.1': + resolution: {integrity: sha512-buvjm+9NzLCJL29KY1j1991YYJ5e6275OiK+G4jtmfIb+z4POywbdm0wXusT9adVWqe0xqg70TbI7+mRx4uU9w==} peerDependencies: - typescript: 5.x + typescript: '>= 5.8' vue: ^3.4.0 peerDependenciesMeta: typescript: @@ -1799,11 +1783,6 @@ packages: 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'} @@ -1837,18 +1816,18 @@ packages: peerDependencies: postcss: ^8.1.0 - babel-plugin-polyfill-corejs2@0.4.15: - resolution: {integrity: sha512-hR3GwrRwHUfYwGfrisXPIDP3JcYfBrW7wKE7+Au6wDYl7fm/ka1NEII6kORzxNU556JjfidZeBsO10kYvtV1aw==} + babel-plugin-polyfill-corejs2@0.4.17: + resolution: {integrity: sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==} 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==} + babel-plugin-polyfill-corejs3@0.14.2: + resolution: {integrity: sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g==} 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==} + babel-plugin-polyfill-regenerator@0.6.8: + resolution: {integrity: sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 @@ -1872,8 +1851,8 @@ packages: brace-expansion@2.0.2: resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} - brace-expansion@5.0.4: - resolution: {integrity: sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==} + brace-expansion@5.0.5: + resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==} engines: {node: 18 || 20 || >=22} braces@3.0.3: @@ -1929,12 +1908,15 @@ packages: resolution: {integrity: sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA==} engines: {node: '>=18'} - core-js-compat@3.48.0: - resolution: {integrity: sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==} + core-js-compat@3.49.0: + resolution: {integrity: sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==} core-js@3.48.0: resolution: {integrity: sha512-zpEHTy1fjTMZCKLHUZoVeylt9XrzaIN2rbPXEt0k+q7JE5CkCZdo6bNq55bn24a69CH7ErAVLKijxJja4fw+UQ==} + core-js@3.49.0: + resolution: {integrity: sha512-es1U2+YTtzpwkxVLwAFdSpaIMyQaq0PBgm3YD1W3Qpsn1NAmO3KSgZfu+oGSWVu6NvLHoHCV/aYcsE5wiB7ALg==} + core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -1950,8 +1932,8 @@ packages: csstype@3.2.3: resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} - csv-parse@6.1.0: - resolution: {integrity: sha512-CEE+jwpgLn+MmtCpVcPtiCZpVtB6Z2OKPTr34pycYYoL7sxdOkXDdQ4lRiw6ioC0q6BLqhc6cKweCVvral8yhw==} + csv-parse@6.2.1: + resolution: {integrity: sha512-LRLMV+UCyfMokp8Wb411duBf1gaBKJfOfBWU9eHMJ+b+cJYZsNu3AFmjJf3+yPGd59Exz1TsMjaSFyxnYB9+IQ==} custom-error-instance@2.1.1: resolution: {integrity: sha512-p6JFxJc3M4OTD2li2qaHkDCw9SfMw82Ldr6OC9Je1aXiGfhx2W8p3GaoeaGrPJTUN9NirTM/KTxHWMUdR1rsUg==} @@ -2078,8 +2060,8 @@ packages: 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==} + eslint@10.1.0: + resolution: {integrity: sha512-S9jlY/ELKEUwwQnqWDO+f+m6sercqOPSqXM5Go94l7DOmxHVDgmSFGWEzeE/gwgTAr0W103BWt0QLe/7mabIvA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: @@ -2172,8 +2154,8 @@ packages: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} - filesize@11.0.13: - resolution: {integrity: sha512-mYJ/qXKvREuO0uH8LTQJ6v7GsUvVOguqxg2VTwQUkyTPXXRRWPdjuUPVqdBrJQhvci48OHlNGRnux+Slr2Rnvw==} + filesize@11.0.14: + resolution: {integrity: sha512-2+pBV36IghE/lC78KmHqq4GGzSwqxisNb6YH17W6owdAFoXChND4WZ/51CUYXKyaEiJOhNKKsZSwZ8HbejrKTA==} engines: {node: '>= 10.8.0'} fill-range@7.1.1: @@ -2188,8 +2170,8 @@ packages: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} - flatted@3.3.4: - resolution: {integrity: sha512-3+mMldrTAPdta5kjX2G2J7iX4zxtnwpdA8Tr2ZSjkyPSanvbZAcy6flmtnXbEybHrDcU9641lxrMfFuUxVz9vA==} + flatted@3.4.2: + resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} focus-trap@8.0.0: resolution: {integrity: sha512-Aa84FOGHs99vVwufDMdq2qgOwXPC2e9U66GcqBhn1/jEHPDhJaP8PYhkIbqG9lhfL5Kddk/567lj46LLHYCRUw==} @@ -2471,8 +2453,8 @@ packages: katex: '>=0.16 <0.17' marked: '>=4 <18' - marked@17.0.4: - resolution: {integrity: sha512-NOmVMM+KAokHMvjWmC5N/ZOvgmSWuqJB8FoYI019j4ogb/PeRMKoKIjReZ2w3376kkA8dSJIP8uD993Kxc0iRQ==} + marked@17.0.5: + resolution: {integrity: sha512-6hLvc0/JEbRjRgzI6wnT2P1XuM1/RrrDEX0kPt0N7jGm1133g6X7DlxFasUIx+72aKAr904GTxhSLDrd5DIlZg==} engines: {node: '>= 20'} hasBin: true @@ -2508,8 +2490,8 @@ packages: mitt@3.0.1: resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} - mlly@1.8.0: - resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} + mlly@1.8.2: + resolution: {integrity: sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==} mpd-parser@1.3.1: resolution: {integrity: sha512-1FuyEWI5k2HcmhS1HkKnUAQV7yFPfXPht2DnRRGtoiiAAW+ESTbtEXIDpRkwdU+XyrQuwrIym7UkoPKsZ0SyFw==} @@ -2601,6 +2583,10 @@ packages: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} + engines: {node: '>=12'} + pinia@3.0.4: resolution: {integrity: sha512-l7pqLUFTI/+ESXn6k3nu30ZIzW5E2WZF/LaHJEpoq6ElcLD+wduZoB2kBN19du6K/4FDpPMazY2wJr+IndBtQw==} peerDependencies: @@ -2723,8 +2709,8 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - rolldown@1.0.0-rc.9: - resolution: {integrity: sha512-9EbgWge7ZH+yqb4d2EnELAntgPTWbfL8ajiTW+SyhJEC4qhBbkCKbqFV4Ge4zmu5ziQuVbWxb/XwLZ+RIO7E8Q==} + rolldown@1.0.0-rc.12: + resolution: {integrity: sha512-yP4USLIMYrwpPHEFB5JGH1uxhcslv6/hL0OyvTuY+3qlOSJvZ7ntYnoWpehBxufkgN0cvXxppuTu5hHa/zPh+A==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -2813,8 +2799,8 @@ packages: tar-mini@0.2.0: resolution: {integrity: sha512-+qfUHz700DWnRutdUsxRRVZ38G1Qr27OetwaMYTdg8hcPxf46U0S1Zf76dQMWRBmusOt2ZCK5kbIaiLkoGO7WQ==} - terser@5.46.0: - resolution: {integrity: sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==} + terser@5.46.1: + resolution: {integrity: sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ==} engines: {node: '>=10'} hasBin: true @@ -2843,6 +2829,12 @@ packages: peerDependencies: typescript: '>=4.8.4' + ts-api-utils@2.5.0: + resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -2936,8 +2928,8 @@ packages: videojs-hotkeys@0.2.30: resolution: {integrity: sha512-G8kEQZPapoWDoEajh2Nroy4bCN1qVEul5AuzZqBS7ZCG45K7hqTYKgf1+fmYvG8m8u84sZmVMUvSWZBjaFW66Q==} - videojs-mobile-ui@1.2.2: - resolution: {integrity: sha512-XPGgfQac4UhCRK4EJdJ6ODrQwj+ui0oGWzi+g5GFoIdzh4NcCk8PxwhvraSId6lSmMSOhazrrxY9Y/p30OKkjQ==} + videojs-mobile-ui@1.2.3: + resolution: {integrity: sha512-p0yO5E+Skzo4PFFtmaIhlKr20iBEDSTvlIeBeXgk7+lZIeMx/O/Rycvw2jhJUD63PDAXrGOunseaFFTwAWrDFA==} engines: {node: '>=14', npm: '>=6'} peerDependencies: video.js: ^8 @@ -2945,16 +2937,16 @@ packages: 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-plugin-compression2@2.5.3: + resolution: {integrity: sha512-ItPgqQWkcnBbVw7is9OKwiZ8v6+ju9rYROl5Lp6QfQDEx/d55AwJQb/KLpsQqsU9HoigYBsZ8tK6I02UwJNvEw==} - vite@8.0.0: - resolution: {integrity: sha512-fPGaRNj9Zytaf8LEiBhY7Z6ijnFKdzU/+mL8EFBaKr7Vw1/FWcTBAMW0wLPJAGMPX38ZPVCVgLceWiEqeoqL2Q==} + vite@8.0.3: + resolution: {integrity: sha512-B9ifbFudT1TFhfltfaIPgjo9Z3mDynBTJSUYxTjOQruf/zHH+ezCQKcoqO+h7a9Pw9Nm/OtlXAiGT1axBgwqrQ==} 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 + '@vitejs/devtools': ^0.1.0 esbuild: ^0.27.0 jiti: '>=1.21.0' less: ^4.0.0 @@ -2991,21 +2983,21 @@ packages: yaml: optional: true - vitest@4.1.0: - resolution: {integrity: sha512-YbDrMF9jM2Lqc++2530UourxZHmkKLxrs4+mYhEwqWS97WJ7wOYEkcr+QfRgJ3PW9wz3odRijLZjHEaRLTNbqw==} + vitest@4.1.2: + resolution: {integrity: sha512-xjR1dMTVHlFLh98JE3i/f/WePqJsah4A0FK9cc8Ehp9Udk0AZk6ccpIZhh1qJ/yxVWRZ+Q54ocnD8TXmkhspGg==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.1.0 - '@vitest/browser-preview': 4.1.0 - '@vitest/browser-webdriverio': 4.1.0 - '@vitest/ui': 4.1.0 + '@vitest/browser-playwright': 4.1.2 + '@vitest/browser-preview': 4.1.2 + '@vitest/browser-webdriverio': 4.1.2 + '@vitest/ui': 4.1.2 happy-dom: '*' jsdom: '*' - vite: ^6.0.0 || ^7.0.0 || ^8.0.0-0 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: '@edge-runtime/vm': optional: true @@ -3047,8 +3039,8 @@ packages: 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==} + vue-router@5.0.4: + resolution: {integrity: sha512-lCqDLCI2+fKVRl2OzXuzdSWmxXFLQRxQbmHugnRpTMyYiT+hNaycV0faqG5FBHDXoYrZ6MQcX87BvbY8mQ20Bg==} peerDependencies: '@pinia/colada': '>=0.21.2' '@vue/compiler-sfc': ^3.5.17 @@ -3067,14 +3059,14 @@ packages: peerDependencies: vue: ^3.0.2 - vue-tsc@3.2.5: - resolution: {integrity: sha512-/htfTCMluQ+P2FISGAooul8kO4JMheOTCbCy4M6dYnYYjqLe3BExZudAua6MSIKSFYQtFOYAll7XobYwcpokGA==} + vue-tsc@3.2.6: + resolution: {integrity: sha512-gYW/kWI0XrwGzd0PKc7tVB/qpdeAkIZLNZb10/InizkQjHjnT8weZ/vBarZoj4kHKbUTZT/bAVgoOr8x4NsQ/Q==} hasBin: true peerDependencies: typescript: '>=5.0.0' - vue@3.5.30: - resolution: {integrity: sha512-hTHLc6VNZyzzEH/l7PFGjpcTvUgiaPK5mdLkbjrTeWSRcEfxFrv56g/XckIYlE9ckuobsdwqd5mk2g1sBkMewg==} + vue@3.5.31: + resolution: {integrity: sha512-iV/sU9SzOlmA/0tygSmjkEN6Jbs3nPoIPFhCMLD2STrjgOU8DX7ZtzMhg4ahVwf5Rp9KoFzcXeB1ZrVbLBp5/Q==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -3114,6 +3106,11 @@ packages: engines: {node: '>= 14.6'} hasBin: true + yaml@2.8.3: + resolution: {integrity: sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==} + engines: {node: '>= 14.6'} + hasBin: true + yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} @@ -3134,8 +3131,8 @@ snapshots: '@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/helpers': 7.29.2 + '@babel/parser': 7.29.2 '@babel/template': 7.28.6 '@babel/traverse': 7.29.0 '@babel/types': 7.29.0 @@ -3150,7 +3147,7 @@ snapshots: '@babel/generator@7.29.1': dependencies: - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.2 '@babel/types': 7.29.0 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 @@ -3188,18 +3185,7 @@ snapshots: 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)': + '@babel/helper-define-polyfill-provider@0.6.8(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-compilation-targets': 7.28.6 @@ -3280,7 +3266,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helpers@7.28.6': + '@babel/helpers@7.29.2': dependencies: '@babel/template': 7.28.6 '@babel/types': 7.29.0 @@ -3289,6 +3275,10 @@ snapshots: dependencies: '@babel/types': 7.29.0 + '@babel/parser@7.29.2': + 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 @@ -3677,7 +3667,7 @@ snapshots: '@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)': + '@babel/preset-env@7.29.2(@babel/core@7.29.0)': dependencies: '@babel/compat-data': 7.29.0 '@babel/core': 7.29.0 @@ -3745,10 +3735,10 @@ snapshots: '@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 + babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.29.0) + babel-plugin-polyfill-corejs3: 0.14.2(@babel/core@7.29.0) + babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.29.0) + core-js-compat: 3.49.0 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -3765,7 +3755,7 @@ snapshots: '@babel/template@7.28.6': dependencies: '@babel/code-frame': 7.29.0 - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.2 '@babel/types': 7.29.0 '@babel/traverse@7.29.0': @@ -3773,7 +3763,7 @@ snapshots: '@babel/code-frame': 7.29.0 '@babel/generator': 7.29.1 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.2 '@babel/template': 7.28.6 '@babel/types': 7.29.0 debug: 4.4.3 @@ -3785,9 +3775,9 @@ snapshots: '@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))': + '@chenfengyuan/vue-number-input@2.0.1(vue@3.5.31(typescript@5.9.3))': dependencies: - vue: 3.5.30(typescript@5.9.3) + vue: 3.5.31(typescript@5.9.3) '@emnapi/core@1.9.0': dependencies: @@ -3961,9 +3951,9 @@ snapshots: '@esbuild/win32-x64@0.27.3': optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@10.0.3)': + '@eslint-community/eslint-utils@4.9.1(eslint@10.1.0)': dependencies: - eslint: 10.0.3 + eslint: 10.1.0 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} @@ -4002,7 +3992,7 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} - '@intlify/bundle-utils@11.0.7(vue-i18n@11.3.0(vue@3.5.30(typescript@5.9.3)))': + '@intlify/bundle-utils@11.0.7(vue-i18n@11.3.0(vue@3.5.31(typescript@5.9.3)))': dependencies: '@intlify/message-compiler': 11.2.8 '@intlify/shared': 11.2.8 @@ -4014,7 +4004,7 @@ snapshots: 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)) + vue-i18n: 11.3.0(vue@3.5.31(typescript@5.9.3)) '@intlify/core-base@11.3.0': dependencies: @@ -4041,12 +4031,12 @@ snapshots: '@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))': + '@intlify/unplugin-vue-i18n@11.0.7(@vue/compiler-dom@3.5.31)(eslint@10.1.0)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.3.0(vue@3.5.31(typescript@5.9.3)))(vue@3.5.31(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))) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.1.0) + '@intlify/bundle-utils': 11.0.7(vue-i18n@11.3.0(vue@3.5.31(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)) + '@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.2.8)(@vue/compiler-dom@3.5.31)(vue-i18n@11.3.0(vue@3.5.31(typescript@5.9.3)))(vue@3.5.31(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) @@ -4055,9 +4045,9 @@ snapshots: pathe: 2.0.3 picocolors: 1.1.1 unplugin: 2.3.11 - vue: 3.5.30(typescript@5.9.3) + vue: 3.5.31(typescript@5.9.3) optionalDependencies: - vue-i18n: 11.3.0(vue@3.5.30(typescript@5.9.3)) + vue-i18n: 11.3.0(vue@3.5.31(typescript@5.9.3)) transitivePeerDependencies: - '@vue/compiler-dom' - eslint @@ -4065,14 +4055,14 @@ snapshots: - 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))': + '@intlify/vue-i18n-extensions@8.0.0(@intlify/shared@11.2.8)(@vue/compiler-dom@3.5.31)(vue-i18n@11.3.0(vue@3.5.31(typescript@5.9.3)))(vue@3.5.31(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)) + '@vue/compiler-dom': 3.5.31 + vue: 3.5.31(typescript@5.9.3) + vue-i18n: 11.3.0(vue@3.5.31(typescript@5.9.3)) '@jridgewell/gen-mapping@0.3.13': dependencies: @@ -4098,7 +4088,7 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 - '@napi-rs/wasm-runtime@1.1.1': + '@napi-rs/wasm-runtime@1.1.2(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)': dependencies: '@emnapi/core': 1.9.0 '@emnapi/runtime': 1.9.0 @@ -4117,62 +4107,63 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.20.1 - '@oxc-project/runtime@0.115.0': {} - - '@oxc-project/types@0.115.0': {} + '@oxc-project/types@0.122.0': {} '@pkgr/core@0.2.9': {} - '@rolldown/binding-android-arm64@1.0.0-rc.9': + '@rolldown/binding-android-arm64@1.0.0-rc.12': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-rc.9': + '@rolldown/binding-darwin-arm64@1.0.0-rc.12': optional: true - '@rolldown/binding-darwin-x64@1.0.0-rc.9': + '@rolldown/binding-darwin-x64@1.0.0-rc.12': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-rc.9': + '@rolldown/binding-freebsd-x64@1.0.0-rc.12': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.9': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.12': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.9': + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.12': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.9': + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.12': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.9': + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.12': optional: true - '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.9': + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.12': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.9': + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.12': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-rc.9': + '@rolldown/binding-linux-x64-musl@1.0.0-rc.12': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-rc.9': + '@rolldown/binding-openharmony-arm64@1.0.0-rc.12': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-rc.9': + '@rolldown/binding-wasm32-wasi@1.0.0-rc.12(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)': dependencies: - '@napi-rs/wasm-runtime': 1.1.1 + '@napi-rs/wasm-runtime': 1.1.2(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0) + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.9': + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.12': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.9': + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.12': optional: true - '@rolldown/pluginutils@1.0.0-rc.2': {} + '@rolldown/pluginutils@1.0.0-rc.12': {} - '@rolldown/pluginutils@1.0.0-rc.9': {} + '@rolldown/pluginutils@1.0.0-rc.2': {} '@rollup/pluginutils@5.3.0(rollup@4.57.1)': dependencies: @@ -4298,15 +4289,15 @@ snapshots: '@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)': + '@typescript-eslint/eslint-plugin@8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.1.0)(typescript@5.9.3))(eslint@10.1.0)(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/parser': 8.56.0(eslint@10.1.0)(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/type-utils': 8.56.0(eslint@10.1.0)(typescript@5.9.3) + '@typescript-eslint/utils': 8.56.0(eslint@10.1.0)(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.56.0 - eslint: 10.0.3 + eslint: 10.1.0 ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.4.0(typescript@5.9.3) @@ -4314,30 +4305,30 @@ snapshots: 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)': + '@typescript-eslint/eslint-plugin@8.57.2(@typescript-eslint/parser@8.56.0(eslint@10.1.0)(typescript@5.9.3))(eslint@10.1.0)(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 + '@typescript-eslint/parser': 8.56.0(eslint@10.1.0)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.57.2 + '@typescript-eslint/type-utils': 8.57.2(eslint@10.1.0)(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.2(eslint@10.1.0)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.57.2 + eslint: 10.1.0 ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.4.0(typescript@5.9.3) + ts-api-utils: 2.5.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)': + '@typescript-eslint/parser@8.56.0(eslint@10.1.0)(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 + eslint: 10.1.0 typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -4351,10 +4342,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.57.0(typescript@5.9.3)': + '@typescript-eslint/project-service@8.57.2(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.57.0(typescript@5.9.3) - '@typescript-eslint/types': 8.57.0 + '@typescript-eslint/tsconfig-utils': 8.57.2(typescript@5.9.3) + '@typescript-eslint/types': 8.57.2 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: @@ -4365,46 +4356,46 @@ snapshots: '@typescript-eslint/types': 8.56.0 '@typescript-eslint/visitor-keys': 8.56.0 - '@typescript-eslint/scope-manager@8.57.0': + '@typescript-eslint/scope-manager@8.57.2': dependencies: - '@typescript-eslint/types': 8.57.0 - '@typescript-eslint/visitor-keys': 8.57.0 + '@typescript-eslint/types': 8.57.2 + '@typescript-eslint/visitor-keys': 8.57.2 '@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)': + '@typescript-eslint/tsconfig-utils@8.57.2(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.56.0(eslint@10.0.3)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.56.0(eslint@10.1.0)(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) + '@typescript-eslint/utils': 8.56.0(eslint@10.1.0)(typescript@5.9.3) debug: 4.4.3 - eslint: 10.0.3 + eslint: 10.1.0 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)': + '@typescript-eslint/type-utils@8.57.2(eslint@10.1.0)(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) + '@typescript-eslint/types': 8.57.2 + '@typescript-eslint/typescript-estree': 8.57.2(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.2(eslint@10.1.0)(typescript@5.9.3) debug: 4.4.3 - eslint: 10.0.3 - ts-api-utils: 2.4.0(typescript@5.9.3) + eslint: 10.1.0 + ts-api-utils: 2.5.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/types@8.57.2': {} '@typescript-eslint/typescript-estree@8.56.0(typescript@5.9.3)': dependencies: @@ -4421,39 +4412,39 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.57.0(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.57.2(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 + '@typescript-eslint/project-service': 8.57.2(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.57.2(typescript@5.9.3) + '@typescript-eslint/types': 8.57.2 + '@typescript-eslint/visitor-keys': 8.57.2 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) + ts-api-utils: 2.5.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)': + '@typescript-eslint/utils@8.56.0(eslint@10.1.0)(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.3) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.1.0) '@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 + eslint: 10.1.0 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.57.0(eslint@10.0.3)(typescript@5.9.3)': + '@typescript-eslint/utils@8.57.2(eslint@10.1.0)(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 + '@eslint-community/eslint-utils': 4.9.1(eslint@10.1.0) + '@typescript-eslint/scope-manager': 8.57.2 + '@typescript-eslint/types': 8.57.2 + '@typescript-eslint/typescript-estree': 8.57.2(typescript@5.9.3) + eslint: 10.1.0 typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -4463,9 +4454,9 @@ snapshots: '@typescript-eslint/types': 8.56.0 eslint-visitor-keys: 5.0.1 - '@typescript-eslint/visitor-keys@8.57.0': + '@typescript-eslint/visitor-keys@8.57.2': dependencies: - '@typescript-eslint/types': 8.57.0 + '@typescript-eslint/types': 8.57.2 eslint-visitor-keys: 5.0.1 '@videojs/http-streaming@3.17.4(video.js@8.23.7)': @@ -4490,69 +4481,69 @@ snapshots: 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))': + '@vitejs/plugin-legacy@8.0.1(terser@5.46.1)(vite@8.0.3(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.1)(yaml@2.8.3))': 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) + '@babel/preset-env': 7.29.2(@babel/core@7.29.0) + babel-plugin-polyfill-corejs3: 0.14.2(@babel/core@7.29.0) + babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.29.0) browserslist: 4.28.1 browserslist-to-esbuild: 2.1.1(browserslist@4.28.1) - core-js: 3.48.0 + core-js: 3.49.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) + terser: 5.46.1 + vite: 8.0.3(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.1)(yaml@2.8.3) 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))': + '@vitejs/plugin-vue@6.0.5(vite@8.0.3(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.1)(yaml@2.8.3))(vue@3.5.31(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) + vite: 8.0.3(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.1)(yaml@2.8.3) + vue: 3.5.31(typescript@5.9.3) - '@vitest/expect@4.1.0': + '@vitest/expect@4.1.2': dependencies: '@standard-schema/spec': 1.1.0 '@types/chai': 5.2.3 - '@vitest/spy': 4.1.0 - '@vitest/utils': 4.1.0 + '@vitest/spy': 4.1.2 + '@vitest/utils': 4.1.2 chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.0(vite@8.0.0(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.0)(yaml@2.8.2))': + '@vitest/mocker@4.1.2(vite@8.0.3(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.1)(yaml@2.8.3))': dependencies: - '@vitest/spy': 4.1.0 + '@vitest/spy': 4.1.2 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 8.0.0(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.0)(yaml@2.8.2) + vite: 8.0.3(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.1)(yaml@2.8.3) - '@vitest/pretty-format@4.1.0': + '@vitest/pretty-format@4.1.2': dependencies: tinyrainbow: 3.1.0 - '@vitest/runner@4.1.0': + '@vitest/runner@4.1.2': dependencies: - '@vitest/utils': 4.1.0 + '@vitest/utils': 4.1.2 pathe: 2.0.3 - '@vitest/snapshot@4.1.0': + '@vitest/snapshot@4.1.2': dependencies: - '@vitest/pretty-format': 4.1.0 - '@vitest/utils': 4.1.0 + '@vitest/pretty-format': 4.1.2 + '@vitest/utils': 4.1.2 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@4.1.0': {} + '@vitest/spy@4.1.2': {} - '@vitest/utils@4.1.0': + '@vitest/utils@4.1.2': dependencies: - '@vitest/pretty-format': 4.1.0 + '@vitest/pretty-format': 4.1.2 convert-source-map: 2.0.0 tinyrainbow: 3.1.0 @@ -4568,75 +4559,45 @@ snapshots: path-browserify: 1.0.1 vscode-uri: 3.1.0 - '@vue-macros/common@3.1.2(vue@3.5.30(typescript@5.9.3))': + '@vue-macros/common@3.1.2(vue@3.5.31(typescript@5.9.3))': dependencies: - '@vue/compiler-sfc': 3.5.28 + '@vue/compiler-sfc': 3.5.31 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: 3.5.31(typescript@5.9.3) - '@vue/compiler-core@3.5.28': + '@vue/compiler-core@3.5.31': dependencies: - '@babel/parser': 7.29.0 - '@vue/shared': 3.5.28 + '@babel/parser': 7.29.2 + '@vue/shared': 3.5.31 entities: 7.0.1 estree-walker: 2.0.2 source-map-js: 1.2.1 - '@vue/compiler-core@3.5.30': + '@vue/compiler-dom@3.5.31': 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-core': 3.5.31 + '@vue/shared': 3.5.31 - '@vue/compiler-dom@3.5.30': + '@vue/compiler-sfc@3.5.31': 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 + '@babel/parser': 7.29.2 + '@vue/compiler-core': 3.5.31 + '@vue/compiler-dom': 3.5.31 + '@vue/compiler-ssr': 3.5.31 + '@vue/shared': 3.5.31 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': + '@vue/compiler-ssr@3.5.31': 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/compiler-dom': 3.5.31 + '@vue/shared': 3.5.31 '@vue/devtools-api@6.6.4': {} @@ -4644,9 +4605,9 @@ snapshots: dependencies: '@vue/devtools-kit': 7.7.9 - '@vue/devtools-api@8.0.6': + '@vue/devtools-api@8.1.1': dependencies: - '@vue/devtools-kit': 8.0.6 + '@vue/devtools-kit': 8.1.1 '@vue/devtools-kit@7.7.9': dependencies: @@ -4658,108 +4619,101 @@ snapshots: speakingurl: 14.0.1 superjson: 2.2.6 - '@vue/devtools-kit@8.0.6': + '@vue/devtools-kit@8.1.1': dependencies: - '@vue/devtools-shared': 8.0.6 + '@vue/devtools-shared': 8.1.1 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/devtools-shared@8.1.1': {} - '@vue/eslint-config-prettier@10.2.0(eslint@10.0.3)(prettier@3.8.1)': + '@vue/eslint-config-prettier@10.2.0(eslint@10.1.0)(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) + eslint: 10.1.0 + eslint-config-prettier: 10.1.8(eslint@10.1.0) + eslint-plugin-prettier: 5.5.5(eslint-config-prettier@10.1.8(eslint@10.1.0))(eslint@10.1.0)(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)': + '@vue/eslint-config-typescript@14.7.0(eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.1.0)(typescript@5.9.3))(eslint@10.1.0)(vue-eslint-parser@10.4.0(eslint@10.1.0)))(eslint@10.1.0)(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)) + '@typescript-eslint/utils': 8.56.0(eslint@10.1.0)(typescript@5.9.3) + eslint: 10.1.0 + eslint-plugin-vue: 10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.1.0)(typescript@5.9.3))(eslint@10.1.0)(vue-eslint-parser@10.4.0(eslint@10.1.0)) 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) + typescript-eslint: 8.56.0(eslint@10.1.0)(typescript@5.9.3) + vue-eslint-parser: 10.4.0(eslint@10.1.0) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@vue/language-core@3.2.5': + '@vue/language-core@3.2.6': dependencies: '@volar/language-core': 2.4.28 - '@vue/compiler-dom': 3.5.28 - '@vue/shared': 3.5.28 + '@vue/compiler-dom': 3.5.31 + '@vue/shared': 3.5.31 alien-signals: 3.1.2 muggle-string: 0.4.1 path-browserify: 1.0.1 - picomatch: 4.0.3 + picomatch: 4.0.4 - '@vue/reactivity@3.5.30': + '@vue/reactivity@3.5.31': dependencies: - '@vue/shared': 3.5.30 + '@vue/shared': 3.5.31 - '@vue/runtime-core@3.5.30': + '@vue/runtime-core@3.5.31': dependencies: - '@vue/reactivity': 3.5.30 - '@vue/shared': 3.5.30 + '@vue/reactivity': 3.5.31 + '@vue/shared': 3.5.31 - '@vue/runtime-dom@3.5.30': + '@vue/runtime-dom@3.5.31': dependencies: - '@vue/reactivity': 3.5.30 - '@vue/runtime-core': 3.5.30 - '@vue/shared': 3.5.30 + '@vue/reactivity': 3.5.31 + '@vue/runtime-core': 3.5.31 + '@vue/shared': 3.5.31 csstype: 3.2.3 - '@vue/server-renderer@3.5.30(vue@3.5.30(typescript@5.9.3))': + '@vue/server-renderer@3.5.31(vue@3.5.31(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/compiler-ssr': 3.5.31 + '@vue/shared': 3.5.31 + vue: 3.5.31(typescript@5.9.3) - '@vue/shared@3.5.30': {} + '@vue/shared@3.5.31': {} - '@vue/tsconfig@0.9.0(typescript@5.9.3)(vue@3.5.30(typescript@5.9.3))': + '@vue/tsconfig@0.9.1(typescript@5.9.3)(vue@3.5.31(typescript@5.9.3))': optionalDependencies: typescript: 5.9.3 - vue: 3.5.30(typescript@5.9.3) + vue: 3.5.31(typescript@5.9.3) - '@vueuse/core@14.2.1(vue@3.5.30(typescript@5.9.3))': + '@vueuse/core@14.2.1(vue@3.5.31(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/shared': 14.2.1(vue@3.5.31(typescript@5.9.3)) + vue: 3.5.31(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))': + '@vueuse/integrations@14.2.1(focus-trap@8.0.0)(jwt-decode@4.0.0)(vue@3.5.31(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) + '@vueuse/core': 14.2.1(vue@3.5.31(typescript@5.9.3)) + '@vueuse/shared': 14.2.1(vue@3.5.31(typescript@5.9.3)) + vue: 3.5.31(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))': + '@vueuse/shared@14.2.1(vue@3.5.31(typescript@5.9.3))': dependencies: - vue: 3.5.30(typescript@5.9.3) + vue: 3.5.31(typescript@5.9.3) '@xmldom/xmldom@0.7.13': {} @@ -4771,8 +4725,6 @@ snapshots: dependencies: acorn: 8.16.0 - acorn@8.15.0: {} - acorn@8.16.0: {} aes-decrypter@4.0.2: @@ -4795,12 +4747,12 @@ snapshots: ast-kit@2.2.0: dependencies: - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.2 pathe: 2.0.3 ast-walker-scope@0.8.3: dependencies: - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.2 ast-kit: 2.2.0 autoprefixer@10.4.27(postcss@8.5.8): @@ -4812,27 +4764,27 @@ snapshots: postcss: 8.5.8 postcss-value-parser: 4.2.0 - babel-plugin-polyfill-corejs2@0.4.15(@babel/core@7.29.0): + babel-plugin-polyfill-corejs2@0.4.17(@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) + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.0) semver: 6.3.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.14.1(@babel/core@7.29.0): + babel-plugin-polyfill-corejs3@0.14.2(@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 + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.0) + core-js-compat: 3.49.0 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.6.7(@babel/core@7.29.0): + babel-plugin-polyfill-regenerator@0.6.8(@babel/core@7.29.0): dependencies: '@babel/core': 7.29.0 - '@babel/helper-define-polyfill-provider': 0.6.7(@babel/core@7.29.0) + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.0) transitivePeerDependencies: - supports-color @@ -4850,7 +4802,7 @@ snapshots: dependencies: balanced-match: 1.0.2 - brace-expansion@5.0.4: + brace-expansion@5.0.5: dependencies: balanced-match: 4.0.4 @@ -4900,12 +4852,14 @@ snapshots: dependencies: is-what: 5.5.0 - core-js-compat@3.48.0: + core-js-compat@3.49.0: dependencies: browserslist: 4.28.1 core-js@3.48.0: {} + core-js@3.49.0: {} + core-util-is@1.0.3: {} cross-spawn@7.0.6: @@ -4918,7 +4872,7 @@ snapshots: csstype@3.2.3: {} - csv-parse@6.1.0: {} + csv-parse@6.2.1: {} custom-error-instance@2.1.1: {} @@ -5050,31 +5004,31 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-prettier@10.1.8(eslint@10.0.3): + eslint-config-prettier@10.1.8(eslint@10.1.0): dependencies: - eslint: 10.0.3 + eslint: 10.1.0 - eslint-plugin-prettier@5.5.5(eslint-config-prettier@10.1.8(eslint@10.0.3))(eslint@10.0.3)(prettier@3.8.1): + eslint-plugin-prettier@5.5.5(eslint-config-prettier@10.1.8(eslint@10.1.0))(eslint@10.1.0)(prettier@3.8.1): dependencies: - eslint: 10.0.3 + eslint: 10.1.0 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-config-prettier: 10.1.8(eslint@10.1.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-plugin-vue@10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.1.0)(typescript@5.9.3))(eslint@10.1.0)(vue-eslint-parser@10.4.0(eslint@10.1.0)): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.3) - eslint: 10.0.3 + '@eslint-community/eslint-utils': 4.9.1(eslint@10.1.0) + eslint: 10.1.0 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) + vue-eslint-parser: 10.4.0(eslint@10.1.0) xml-name-validator: 4.0.0 optionalDependencies: - '@typescript-eslint/parser': 8.56.0(eslint@10.0.3)(typescript@5.9.3) + '@typescript-eslint/parser': 8.56.0(eslint@10.1.0)(typescript@5.9.3) eslint-scope@9.1.2: dependencies: @@ -5087,9 +5041,9 @@ snapshots: eslint-visitor-keys@5.0.1: {} - eslint@10.0.3: + eslint@10.1.0: dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.3) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.1.0) '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.23.3 '@eslint/config-helpers': 0.5.3 @@ -5202,7 +5156,7 @@ snapshots: dependencies: flat-cache: 4.0.1 - filesize@11.0.13: {} + filesize@11.0.14: {} fill-range@7.1.1: dependencies: @@ -5215,10 +5169,10 @@ snapshots: flat-cache@4.0.1: dependencies: - flatted: 3.3.4 + flatted: 3.4.2 keyv: 4.5.4 - flatted@3.3.4: {} + flatted@3.4.2: {} focus-trap@8.0.0: dependencies: @@ -5389,7 +5343,7 @@ snapshots: local-pkg@1.1.2: dependencies: - mlly: 1.8.0 + mlly: 1.8.2 pkg-types: 2.3.0 quansync: 0.2.11 @@ -5451,12 +5405,12 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 - marked-katex-extension@5.1.7(katex@0.16.28)(marked@17.0.4): + marked-katex-extension@5.1.7(katex@0.16.28)(marked@17.0.5): dependencies: katex: 0.16.28 - marked: 17.0.4 + marked: 17.0.5 - marked@17.0.4: {} + marked@17.0.5: {} marks-pane@1.0.9: {} @@ -5477,7 +5431,7 @@ snapshots: minimatch@10.2.4: dependencies: - brace-expansion: 5.0.4 + brace-expansion: 5.0.5 minimatch@9.0.9: dependencies: @@ -5485,7 +5439,7 @@ snapshots: mitt@3.0.1: {} - mlly@1.8.0: + mlly@1.8.2: dependencies: acorn: 8.16.0 pathe: 2.0.3 @@ -5565,10 +5519,12 @@ snapshots: picomatch@4.0.3: {} - pinia@3.0.4(typescript@5.9.3)(vue@3.5.30(typescript@5.9.3)): + picomatch@4.0.4: {} + + pinia@3.0.4(typescript@5.9.3)(vue@3.5.31(typescript@5.9.3)): dependencies: '@vue/devtools-api': 7.7.9 - vue: 3.5.30(typescript@5.9.3) + vue: 3.5.31(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 @@ -5579,7 +5535,7 @@ snapshots: pkg-types@1.3.1: dependencies: confbox: 0.1.8 - mlly: 1.8.0 + mlly: 1.8.2 pathe: 2.0.3 pkg-types@2.3.0: @@ -5623,9 +5579,9 @@ snapshots: punycode@2.3.1: {} - qrcode.vue@3.8.0(vue@3.5.30(typescript@5.9.3)): + qrcode.vue@3.8.0(vue@3.5.31(typescript@5.9.3)): dependencies: - vue: 3.5.30(typescript@5.9.3) + vue: 3.5.31(typescript@5.9.3) quansync@0.2.11: {} @@ -5682,26 +5638,29 @@ snapshots: rfdc@1.4.1: {} - rolldown@1.0.0-rc.9: + rolldown@1.0.0-rc.12(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0): dependencies: - '@oxc-project/types': 0.115.0 - '@rolldown/pluginutils': 1.0.0-rc.9 + '@oxc-project/types': 0.122.0 + '@rolldown/pluginutils': 1.0.0-rc.12 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 + '@rolldown/binding-android-arm64': 1.0.0-rc.12 + '@rolldown/binding-darwin-arm64': 1.0.0-rc.12 + '@rolldown/binding-darwin-x64': 1.0.0-rc.12 + '@rolldown/binding-freebsd-x64': 1.0.0-rc.12 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.12 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.12 + '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.12 + '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.12 + '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.12 + '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.12 + '@rolldown/binding-linux-x64-musl': 1.0.0-rc.12 + '@rolldown/binding-openharmony-arm64': 1.0.0-rc.12 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.12(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0) + '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.12 + '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.12 + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' rollup@4.57.1: dependencies: @@ -5795,10 +5754,10 @@ snapshots: tar-mini@0.2.0: {} - terser@5.46.0: + terser@5.46.1: dependencies: '@jridgewell/source-map': 0.3.11 - acorn: 8.15.0 + acorn: 8.16.0 commander: 2.20.3 source-map-support: 0.5.21 @@ -5821,6 +5780,10 @@ snapshots: dependencies: typescript: 5.9.3 + ts-api-utils@2.5.0(typescript@5.9.3): + dependencies: + typescript: 5.9.3 + tslib@2.8.1: optional: true @@ -5840,13 +5803,13 @@ snapshots: type@2.7.3: {} - typescript-eslint@8.56.0(eslint@10.0.3)(typescript@5.9.3): + typescript-eslint@8.56.0(eslint@10.1.0)(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/eslint-plugin': 8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.1.0)(typescript@5.9.3))(eslint@10.1.0)(typescript@5.9.3) + '@typescript-eslint/parser': 8.56.0(eslint@10.1.0)(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-eslint/utils': 8.56.0(eslint@10.1.0)(typescript@5.9.3) + eslint: 10.1.0 typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -5871,7 +5834,7 @@ snapshots: unplugin-utils@0.3.1: dependencies: pathe: 2.0.3 - picomatch: 4.0.3 + picomatch: 4.0.4 unplugin@2.3.11: dependencies: @@ -5883,7 +5846,7 @@ snapshots: unplugin@3.0.0: dependencies: '@jridgewell/remapping': 2.3.5 - picomatch: 4.0.3 + picomatch: 4.0.4 webpack-virtual-modules: 0.6.2 update-browserslist-db@1.2.3(browserslist@4.28.1): @@ -5931,7 +5894,7 @@ snapshots: videojs-hotkeys@0.2.30: {} - videojs-mobile-ui@1.2.2(video.js@8.23.7): + videojs-mobile-ui@1.2.3(video.js@8.23.7): dependencies: global: 4.4.0 video.js: 8.23.7 @@ -5940,49 +5903,51 @@ snapshots: dependencies: global: 4.4.0 - vite-plugin-compression2@2.5.1(rollup@4.57.1): + vite-plugin-compression2@2.5.3(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): + vite@8.0.3(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.1)(yaml@2.8.3): dependencies: - '@oxc-project/runtime': 0.115.0 lightningcss: 1.32.0 - picomatch: 4.0.3 + picomatch: 4.0.4 postcss: 8.5.8 - rolldown: 1.0.0-rc.9 + rolldown: 1.0.0-rc.12(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0) 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 - - vitest@4.1.0(@types/node@24.12.0)(vite@8.0.0(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.0)(yaml@2.8.2)): - dependencies: - '@vitest/expect': 4.1.0 - '@vitest/mocker': 4.1.0(vite@8.0.0(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.0)(yaml@2.8.2)) - '@vitest/pretty-format': 4.1.0 - '@vitest/runner': 4.1.0 - '@vitest/snapshot': 4.1.0 - '@vitest/spy': 4.1.0 - '@vitest/utils': 4.1.0 + terser: 5.46.1 + yaml: 2.8.3 + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' + + vitest@4.1.2(@types/node@24.12.0)(vite@8.0.3(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.1)(yaml@2.8.3)): + dependencies: + '@vitest/expect': 4.1.2 + '@vitest/mocker': 4.1.2(vite@8.0.3(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.1)(yaml@2.8.3)) + '@vitest/pretty-format': 4.1.2 + '@vitest/runner': 4.1.2 + '@vitest/snapshot': 4.1.2 + '@vitest/spy': 4.1.2 + '@vitest/utils': 4.1.2 es-module-lexer: 2.0.0 expect-type: 1.3.0 magic-string: 0.30.21 obug: 2.1.1 pathe: 2.0.3 - picomatch: 4.0.3 + picomatch: 4.0.4 std-env: 4.0.0 tinybench: 2.9.0 tinyexec: 1.0.4 tinyglobby: 0.2.15 tinyrainbow: 3.1.0 - vite: 8.0.0(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.0)(yaml@2.8.2) + vite: 8.0.3(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.1)(yaml@2.8.3) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 24.12.0 @@ -5991,10 +5956,10 @@ snapshots: vscode-uri@3.1.0: {} - vue-eslint-parser@10.4.0(eslint@10.0.3): + vue-eslint-parser@10.4.0(eslint@10.1.0): dependencies: debug: 4.4.3 - eslint: 10.0.3 + eslint: 10.1.0 eslint-scope: 9.1.2 eslint-visitor-keys: 5.0.1 espree: 11.2.0 @@ -6003,13 +5968,13 @@ snapshots: transitivePeerDependencies: - supports-color - vue-i18n@11.3.0(vue@3.5.30(typescript@5.9.3)): + vue-i18n@11.3.0(vue@3.5.31(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: 3.5.31(typescript@5.9.3) vue-lazyload@3.0.0: {} @@ -6017,47 +5982,47 @@ snapshots: 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)): + vue-router@5.0.4(@vue/compiler-sfc@3.5.31)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.31(typescript@5.9.3)))(vue@3.5.31(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 + '@vue-macros/common': 3.1.2(vue@3.5.31(typescript@5.9.3)) + '@vue/devtools-api': 8.1.1 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 + mlly: 1.8.2 muggle-string: 0.4.1 pathe: 2.0.3 - picomatch: 4.0.3 + picomatch: 4.0.4 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 + vue: 3.5.31(typescript@5.9.3) + yaml: 2.8.3 optionalDependencies: - '@vue/compiler-sfc': 3.5.30 - pinia: 3.0.4(typescript@5.9.3)(vue@3.5.30(typescript@5.9.3)) + '@vue/compiler-sfc': 3.5.31 + pinia: 3.0.4(typescript@5.9.3)(vue@3.5.31(typescript@5.9.3)) - vue-toastification@2.0.0-rc.5(vue@3.5.30(typescript@5.9.3)): + vue-toastification@2.0.0-rc.5(vue@3.5.31(typescript@5.9.3)): dependencies: - vue: 3.5.30(typescript@5.9.3) + vue: 3.5.31(typescript@5.9.3) - vue-tsc@3.2.5(typescript@5.9.3): + vue-tsc@3.2.6(typescript@5.9.3): dependencies: '@volar/typescript': 2.4.28 - '@vue/language-core': 3.2.5 + '@vue/language-core': 3.2.6 typescript: 5.9.3 - vue@3.5.30(typescript@5.9.3): + vue@3.5.31(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 + '@vue/compiler-dom': 3.5.31 + '@vue/compiler-sfc': 3.5.31 + '@vue/runtime-dom': 3.5.31 + '@vue/server-renderer': 3.5.31(vue@3.5.31(typescript@5.9.3)) + '@vue/shared': 3.5.31 optionalDependencies: typescript: 5.9.3 @@ -6085,4 +6050,6 @@ snapshots: yaml@2.8.2: {} + yaml@2.8.3: {} + yocto-queue@0.1.0: {} diff --git a/go.mod b/go.mod index e354852959..32b050ba5b 100644 --- a/go.mod +++ b/go.mod @@ -27,7 +27,7 @@ require ( github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce go.etcd.io/bbolt v1.4.3 golang.org/x/crypto v0.49.0 - golang.org/x/image v0.37.0 + golang.org/x/image v0.38.0 golang.org/x/text v0.35.0 gopkg.in/natefinch/lumberjack.v2 v2.2.1 gopkg.in/yaml.v3 v3.0.1 diff --git a/go.sum b/go.sum index 07a252baeb..4aa318e3f9 100644 --- a/go.sum +++ b/go.sum @@ -296,8 +296,8 @@ golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EH golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.37.0 h1:ZiRjArKI8GwxZOoEtUfhrBtaCN+4b/7709dlT6SSnQA= -golang.org/x/image v0.37.0/go.mod h1:/3f6vaXC+6CEanU4KJxbcUZyEePbyKbaLoDOe4ehFYY= +golang.org/x/image v0.38.0 h1:5l+q+Y9JDC7mBOMjo4/aPhMDcxEptsX+Tt3GgRQRPuE= +golang.org/x/image v0.38.0/go.mod h1:/3f6vaXC+6CEanU4KJxbcUZyEePbyKbaLoDOe4ehFYY= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= From 2368e468b9e3cea0e8e4b02ec8b12409767be8f1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 28 Mar 2026 19:07:00 +0100 Subject: [PATCH 103/126] chore(deps): update pnpm/action-setup action to v5 (#5869) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 4ab6e9df14..ce29dcde9f 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -32,7 +32,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v5 with: package_json_file: "frontend/package.json" - uses: actions/setup-node@v6 From b6a4fb1f27f4d894b384c0f3acacda276d1338a5 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 28 Mar 2026 19:08:19 +0100 Subject: [PATCH 104/126] fix: self-registered users don't get execute perms --- http/auth.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/http/auth.go b/http/auth.go index d975beae9d..59f15a36a0 100644 --- a/http/auth.go +++ b/http/auth.go @@ -171,6 +171,12 @@ var signupHandler = func(_ http.ResponseWriter, r *http.Request, d *data) (int, // if that is the default permission. user.Perm.Admin = false + // Self-registered users should not inherit execution capabilities from + // default settings, regardless of what the administrator has configured + // as the default. Execution rights must be explicitly granted by an admin. + user.Perm.Execute = false + user.Commands = []string{} + pwd, err := users.ValidateAndHashPwd(info.Password, d.settings.MinimumPasswordLength) if err != nil { return http.StatusBadRequest, err From 126227bb2754eee15cd7c722916c3bb8821084a2 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 28 Mar 2026 19:14:02 +0100 Subject: [PATCH 105/126] fix: disable scripted content in epub --- frontend/src/views/files/Preview.vue | 1 - 1 file changed, 1 deletion(-) diff --git a/frontend/src/views/files/Preview.vue b/frontend/src/views/files/Preview.vue index 2a60e7df30..0ac529ec1f 100644 --- a/frontend/src/views/files/Preview.vue +++ b/frontend/src/views/files/Preview.vue @@ -84,7 +84,6 @@ }" :epubOptions="{ allowPopups: true, - allowScriptedContent: true, }" @update:location="locationChange" /> From d9f9460c1e51d10a25065e10358c12d5ced66ad9 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 28 Mar 2026 19:16:12 +0100 Subject: [PATCH 106/126] fix: use html/template --- http/static.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/http/static.go b/http/static.go index 25f8539ddf..f544618bb9 100644 --- a/http/static.go +++ b/http/static.go @@ -1,19 +1,19 @@ package fbhttp import ( + "compress/gzip" "encoding/json" "errors" "fmt" - "io/fs" + "html/template" "io" - "compress/gzip" + "io/fs" "log" "net/http" "os" "path" "path/filepath" "strings" - "text/template" "github.com/filebrowser/filebrowser/v2/auth" "github.com/filebrowser/filebrowser/v2/settings" @@ -153,7 +153,7 @@ func getStaticHandlers(store *storage.Storage, server *settings.Server, assetsFs defer f.Close() acceptEncoding := r.Header.Get("Accept-Encoding") - if strings.Contains(acceptEncoding, "gzip") { + if strings.Contains(acceptEncoding, "gzip") { w.Header().Set("Content-Encoding", "gzip") w.Header().Set("Content-Type", "application/javascript; charset=utf-8") @@ -168,7 +168,7 @@ func getStaticHandlers(store *storage.Storage, server *settings.Server, assetsFs defer gzReader.Close() w.Header().Set("Content-Type", "application/javascript; charset=utf-8") - + if _, err := io.Copy(w, gzReader); err != nil { return http.StatusInternalServerError, err } From c406bda0c73ac8b187e23a97c05521edc77efa84 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 28 Mar 2026 19:54:21 +0100 Subject: [PATCH 107/126] fix: json escaping --- http/static.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/http/static.go b/http/static.go index f544618bb9..7580f17071 100644 --- a/http/static.go +++ b/http/static.go @@ -85,7 +85,7 @@ func handleWithStaticData(w http.ResponseWriter, _ *http.Request, d *data, fSys return http.StatusInternalServerError, err } - data["Json"] = strings.ReplaceAll(string(b), `'`, `\'`) + data["Json"] = template.JS(strings.ReplaceAll(string(b), `'`, `\'`)) fileContents, err := fs.ReadFile(fSys, file) if err != nil { From a8fc1657b796c5da7190466beff13e680721b6d3 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 28 Mar 2026 20:02:12 +0100 Subject: [PATCH 108/126] fix: shares listing --- http/http.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/http/http.go b/http/http.go index 0ddca9692c..35a81b3ec3 100644 --- a/http/http.go +++ b/http/http.go @@ -70,7 +70,7 @@ func NewHandler( api.PathPrefix("/usage").Handler(monkey(diskUsage, "/api/usage")).Methods("GET") - api.Path("/shares").Handler(monkey(shareListHandler, "/api/shares")).Methods("GET") + api.Handle("/shares", monkey(shareListHandler, "")).Methods("GET") api.PathPrefix("/share").Handler(monkey(shareGetsHandler, "/api/share")).Methods("GET") api.PathPrefix("/share").Handler(monkey(sharePostHandler, "/api/share")).Methods("POST") api.PathPrefix("/share").Handler(monkey(shareDeleteHandler, "/api/share")).Methods("DELETE") From 860c19ddf58665aafcf976f5299a907738214226 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 28 Mar 2026 20:02:32 +0100 Subject: [PATCH 109/126] chore(release): 2.62.2 --- CHANGELOG.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0fc2176b94..8471265245 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,20 @@ All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines. +## [2.62.2](https://github.com/filebrowser/filebrowser/compare/v2.62.1...v2.62.2) (2026-03-28) + + +### Bug Fixes + +* disable scripted content in epub ([126227b](https://github.com/filebrowser/filebrowser/commit/126227bb2754eee15cd7c722916c3bb8821084a2)) +* double slash in TUS upload path when readEntries returns multiple batches ([#5848](https://github.com/filebrowser/filebrowser/issues/5848)) ([432f3e6](https://github.com/filebrowser/filebrowser/commit/432f3e60ffdf92af6f8f56119a1bac8084f52a60)) +* include filename in Content-Disposition header for inline downloads ([#5860](https://github.com/filebrowser/filebrowser/issues/5860)) ([8f81b77](https://github.com/filebrowser/filebrowser/commit/8f81b77cf2a3da0a445f3700fbf4a0091ea46c07)) +* json escaping ([c406bda](https://github.com/filebrowser/filebrowser/commit/c406bda0c73ac8b187e23a97c05521edc77efa84)) +* self-registered users don't get execute perms ([b6a4fb1](https://github.com/filebrowser/filebrowser/commit/b6a4fb1f27f4d894b384c0f3acacda276d1338a5)) +* shares listing ([a8fc165](https://github.com/filebrowser/filebrowser/commit/a8fc1657b796c5da7190466beff13e680721b6d3)) +* touch Redis upload cache key on GetLength to prevent TTL expiry ([#5850](https://github.com/filebrowser/filebrowser/issues/5850)) ([4812536](https://github.com/filebrowser/filebrowser/commit/48125365551ce2b27790aaafd7594cf5ce52f1ba)) +* use html/template ([d9f9460](https://github.com/filebrowser/filebrowser/commit/d9f9460c1e51d10a25065e10358c12d5ced66ad9)) + ## [2.62.1](https://github.com/filebrowser/filebrowser/compare/v2.62.0...v2.62.1) (2026-03-14) From 0f39bd055efdadc15abd2f8146cf5da3793f8318 Mon Sep 17 00:00:00 2001 From: Ariel Leyva Date: Sat, 4 Apr 2026 03:11:21 -0400 Subject: [PATCH 110/126] fix: check download permission when sharing permission is enabled (#5875) --- errors/errors.go | 1 + frontend/src/components/settings/Permissions.vue | 16 +++++++++++++++- frontend/src/i18n/en.json | 2 +- http/users.go | 12 ++++++++++++ 4 files changed, 29 insertions(+), 2 deletions(-) diff --git a/errors/errors.go b/errors/errors.go index f6b86cafbc..99236ec17f 100644 --- a/errors/errors.go +++ b/errors/errors.go @@ -23,6 +23,7 @@ var ( ErrSourceIsParent = errors.New("source is parent") ErrRootUserDeletion = errors.New("the sole admin can't be deleted") ErrCurrentPasswordIncorrect = errors.New("the current password is incorrect") + ErrShareRequiresDownload = errors.New("permission to share requires permission to download") ) type ErrShortPassword struct { diff --git a/frontend/src/components/settings/Permissions.vue b/frontend/src/components/settings/Permissions.vue index 13d2b93660..33296af2cb 100644 --- a/frontend/src/components/settings/Permissions.vue +++ b/frontend/src/components/settings/Permissions.vue @@ -17,7 +17,11 @@ {{ $t("settings.perm.delete") }}

- + {{ $t("settings.perm.download") }}

@@ -61,5 +65,15 @@ export default { }, isExecEnabled: () => enableExec, }, + watch: { + perm: { + deep: true, + handler() { + if (this.perm.share === true) { + this.perm.download = true; + } + }, + }, + }, }; diff --git a/frontend/src/i18n/en.json b/frontend/src/i18n/en.json index dcbedcef2e..933c2e3236 100644 --- a/frontend/src/i18n/en.json +++ b/frontend/src/i18n/en.json @@ -245,7 +245,7 @@ "execute": "Execute commands", "modify": "Edit files", "rename": "Rename or move files and directories", - "share": "Share files" + "share": "Share files (require download permission)" }, "permissions": "Permissions", "permissionsHelp": "You can set the user to be an administrator or choose the permissions individually. If you select \"Administrator\", all of the other options will be automatically checked. The management of users remains a privilege of an administrator.\n", diff --git a/http/users.go b/http/users.go index be1edf916c..e61ab00bab 100644 --- a/http/users.go +++ b/http/users.go @@ -156,6 +156,10 @@ var userPostHandler = withAdmin(func(w http.ResponseWriter, r *http.Request, d * return http.StatusBadRequest, err } + if req.Data.Perm.Share && !req.Data.Perm.Download { + return http.StatusBadRequest, fberrors.ErrShareRequiresDownload + } + userHome, err := d.settings.MakeUserDir(req.Data.Username, req.Data.Scope, d.server.Root) if err != nil { log.Printf("create user: failed to mkdir user home dir: [%s]", userHome) @@ -204,6 +208,14 @@ var userPutHandler = withSelfOrAdmin(func(w http.ResponseWriter, r *http.Request return http.StatusBadRequest, nil } + for _, field := range req.Which { + if strings.ToLower(field) == "perm" || strings.ToLower(field) == "all" { + if req.Data.Perm.Share && !req.Data.Perm.Download { + return http.StatusBadRequest, fberrors.ErrShareRequiresDownload + } + } + } + if len(req.Which) == 0 || (len(req.Which) == 1 && req.Which[0] == "all") { if !d.user.Perm.Admin { return http.StatusForbidden, nil From 7a16129bfc07dbdc2fa52b99d2985c1bc0ea12e2 Mon Sep 17 00:00:00 2001 From: Ariel Leyva Date: Sat, 4 Apr 2026 03:11:50 -0400 Subject: [PATCH 111/126] fix(tus): reject negative upload-length to prevent inconsistent cache entry (#5876) --- http/tus_handlers.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/http/tus_handlers.go b/http/tus_handlers.go index 0b7bcbb48f..31245a3418 100644 --- a/http/tus_handlers.go +++ b/http/tus_handlers.go @@ -105,7 +105,7 @@ func tusPostHandler(cache UploadCache) handleFunc { } uploadLength, err := getUploadLength(r) - if err != nil { + if err != nil || uploadLength < 0 { return http.StatusBadRequest, fmt.Errorf("invalid upload length: %w", err) } From 2f805de5274514c627f61e2b648fc7a9b8eadb2c Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 4 Apr 2026 09:19:09 +0200 Subject: [PATCH 112/126] docs: update docker compose --- compose.redis.yaml | 17 ----------------- compose.yaml | 7 +------ 2 files changed, 1 insertion(+), 23 deletions(-) delete mode 100644 compose.redis.yaml diff --git a/compose.redis.yaml b/compose.redis.yaml deleted file mode 100644 index 878a96b308..0000000000 --- a/compose.redis.yaml +++ /dev/null @@ -1,17 +0,0 @@ -# Run using: -# docker compose -f compose.yaml -f compose.redis.yaml up --build - -services: - redis: - container_name: redis - image: redis:latest - networks: - - filebrowser - command: - - sh - - -c - - | - cat > /tmp/users.acl <filebrowser ~* +@all - EOF - redis-server --aclfile /tmp/users.acl diff --git a/compose.yaml b/compose.yaml index be19b56a36..33bd8dc6ce 100644 --- a/compose.yaml +++ b/compose.yaml @@ -1,12 +1,7 @@ -# Run using: -# docker compose up --build - services: filebrowser: container_name: filebrowser - build: - dockerfile: Dockerfile - context: . + image: filebrowser/filebrowser:latest networks: - filebrowser ports: From 876cdb34265b090c2a74a69509f4106f2c5e8726 Mon Sep 17 00:00:00 2001 From: Ariel Leyva Date: Sat, 4 Apr 2026 03:54:19 -0400 Subject: [PATCH 113/126] =?UTF-8?q?feat:=20enable=20copy=20operation=20on?= =?UTF-8?q?=20drag=E2=80=91and=E2=80=91drop=20with=20ctrl=20key=20(#5882)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/components/files/ListingItem.vue | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/frontend/src/components/files/ListingItem.vue b/frontend/src/components/files/ListingItem.vue index ce23c482ec..813c0729a6 100644 --- a/frontend/src/components/files/ListingItem.vue +++ b/frontend/src/components/files/ListingItem.vue @@ -194,8 +194,11 @@ const drop = async (event: Event) => { const baseItems = (await api.fetch(path)).items; const action = (overwrite?: boolean, rename?: boolean) => { - api - .move(items, overwrite, rename) + const action = + (event as KeyboardEvent).ctrlKey || (event as KeyboardEvent).metaKey + ? api.copy + : api.move; + action(items, overwrite, rename) .then(() => { fileStore.reload = true; }) From 65a837de4916c054a89258bf84b35f075158a1b5 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 4 Apr 2026 10:02:07 +0200 Subject: [PATCH 114/126] chore(release): 2.63.0 --- CHANGELOG.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8471265245..21c40b7972 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,19 @@ All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines. +## [2.63.0](https://github.com/filebrowser/filebrowser/compare/v2.62.2...v2.63.0) (2026-04-04) + + +### Features + +* enable copy operation on drag‑and‑drop with ctrl key ([#5882](https://github.com/filebrowser/filebrowser/issues/5882)) ([876cdb3](https://github.com/filebrowser/filebrowser/commit/876cdb34265b090c2a74a69509f4106f2c5e8726)) + + +### Bug Fixes + +* check download permission when sharing permission is enabled ([#5875](https://github.com/filebrowser/filebrowser/issues/5875)) ([0f39bd0](https://github.com/filebrowser/filebrowser/commit/0f39bd055efdadc15abd2f8146cf5da3793f8318)) +* **tus:** reject negative upload-length to prevent inconsistent cache entry ([#5876](https://github.com/filebrowser/filebrowser/issues/5876)) ([7a16129](https://github.com/filebrowser/filebrowser/commit/7a16129bfc07dbdc2fa52b99d2985c1bc0ea12e2)) + ## [2.62.2](https://github.com/filebrowser/filebrowser/compare/v2.62.1...v2.62.2) (2026-03-28) From 7dbf7a3528234b2a9ee9c4115e8ecf58d258ca51 Mon Sep 17 00:00:00 2001 From: kodareef5 Date: Sat, 4 Apr 2026 15:56:55 -0400 Subject: [PATCH 115/126] fix: check share owner permissions on public share access (#5888) --- http/public.go | 4 ++++ http/public_test.go | 37 ++++++++++++++++++++++++++++++++++++- 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/http/public.go b/http/public.go index 596a03c972..29679be85d 100644 --- a/http/public.go +++ b/http/public.go @@ -33,6 +33,10 @@ var withHashFile = func(fn handleFunc) handleFunc { return errToStatus(err), err } + if !user.Perm.Share || !user.Perm.Download { + return http.StatusForbidden, nil + } + d.user = user file, err := files.NewFileInfo(&files.FileOptions{ diff --git a/http/public_test.go b/http/public_test.go index 9a9c7f2eb1..ea38ce51af 100644 --- a/http/public_test.go +++ b/http/public_test.go @@ -23,38 +23,66 @@ func TestPublicShareHandlerAuthentication(t *testing.T) { testCases := map[string]struct { share *share.Link req *http.Request + sharePerm bool + downloadPerm bool expectedStatusCode int }{ "Public share, no auth required": { share: &share.Link{Hash: "h", UserID: 1}, req: newHTTPRequest(t), + sharePerm: true, + downloadPerm: true, expectedStatusCode: 200, }, "Private share, no auth provided, 401": { share: &share.Link{Hash: "h", UserID: 1, PasswordHash: passwordBcrypt, Token: "123"}, req: newHTTPRequest(t), + sharePerm: true, + downloadPerm: true, expectedStatusCode: 401, }, "Private share, authentication via token": { share: &share.Link{Hash: "h", UserID: 1, PasswordHash: passwordBcrypt, Token: "123"}, req: newHTTPRequest(t, func(r *http.Request) { r.URL.RawQuery = "token=123" }), + sharePerm: true, + downloadPerm: true, expectedStatusCode: 200, }, "Private share, authentication via invalid token, 401": { share: &share.Link{Hash: "h", UserID: 1, PasswordHash: passwordBcrypt, Token: "123"}, req: newHTTPRequest(t, func(r *http.Request) { r.URL.RawQuery = "token=1234" }), + sharePerm: true, + downloadPerm: true, expectedStatusCode: 401, }, "Private share, authentication via password": { share: &share.Link{Hash: "h", UserID: 1, PasswordHash: passwordBcrypt, Token: "123"}, req: newHTTPRequest(t, func(r *http.Request) { r.Header.Set("X-SHARE-PASSWORD", "password") }), + sharePerm: true, + downloadPerm: true, expectedStatusCode: 200, }, "Private share, authentication via invalid password, 401": { share: &share.Link{Hash: "h", UserID: 1, PasswordHash: passwordBcrypt, Token: "123"}, req: newHTTPRequest(t, func(r *http.Request) { r.Header.Set("X-SHARE-PASSWORD", "wrong-password") }), + sharePerm: true, + downloadPerm: true, expectedStatusCode: 401, }, + "Share owner lost share permission, 403": { + share: &share.Link{Hash: "h", UserID: 1}, + req: newHTTPRequest(t), + sharePerm: false, + downloadPerm: true, + expectedStatusCode: 403, + }, + "Share owner lost download permission, 403": { + share: &share.Link{Hash: "h", UserID: 1}, + req: newHTTPRequest(t), + sharePerm: true, + downloadPerm: false, + expectedStatusCode: 403, + }, } for name, tc := range testCases { @@ -82,7 +110,14 @@ func TestPublicShareHandlerAuthentication(t *testing.T) { if err := storage.Share.Save(tc.share); err != nil { t.Fatalf("failed to save share: %v", err) } - if err := storage.Users.Save(&users.User{Username: "username", Password: "pw"}); err != nil { + if err := storage.Users.Save(&users.User{ + Username: "username", + Password: "pw", + Perm: users.Permissions{ + Share: tc.sharePerm, + Download: tc.downloadPerm, + }, + }); err != nil { t.Fatalf("failed to save user: %v", err) } if err := storage.Settings.Save(&settings.Settings{Key: []byte("key")}); err != nil { From 8adf127c7d33585333b8030869f6f318e6517179 Mon Sep 17 00:00:00 2001 From: kodareef5 Date: Sat, 4 Apr 2026 15:57:40 -0400 Subject: [PATCH 116/126] fix: enforce directory boundary in rule path matching (#5889) --- rules/rules.go | 11 ++++++++++- rules/rules_test.go | 31 +++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/rules/rules.go b/rules/rules.go index 7c6ef11bec..71f6693060 100644 --- a/rules/rules.go +++ b/rules/rules.go @@ -31,7 +31,16 @@ func (r *Rule) Matches(path string) bool { return r.Regexp.MatchString(path) } - return strings.HasPrefix(path, r.Path) + if path == r.Path { + return true + } + + prefix := r.Path + if prefix != "/" && !strings.HasSuffix(prefix, "/") { + prefix += "/" + } + + return strings.HasPrefix(path, prefix) } // Regexp is a wrapper to the native regexp type where we diff --git a/rules/rules_test.go b/rules/rules_test.go index 570f921f3d..3046a2bddf 100644 --- a/rules/rules_test.go +++ b/rules/rules_test.go @@ -2,6 +2,37 @@ package rules import "testing" +func TestRuleMatches(t *testing.T) { + t.Parallel() + + cases := []struct { + name string + rulePath string + testPath string + want bool + }{ + {"exact match", "/uploads", "/uploads", true}, + {"child path", "/uploads", "/uploads/file.txt", true}, + {"sibling prefix", "/uploads", "/uploads_backup/secret.txt", false}, + {"root rule", "/", "/anything", true}, + {"trailing slash rule", "/uploads/", "/uploads/file.txt", true}, + {"trailing slash no sibling", "/uploads/", "/uploads_backup/file.txt", false}, + {"nested child", "/data/shared", "/data/shared/docs/file.txt", true}, + {"nested sibling", "/data/shared", "/data/shared_private/file.txt", false}, + } + + for _, tc := range cases { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + r := &Rule{Path: tc.rulePath} + got := r.Matches(tc.testPath) + if got != tc.want { + t.Errorf("Rule{Path: %q}.Matches(%q) = %v; want %v", tc.rulePath, tc.testPath, got, tc.want) + } + }) + } +} + func TestMatchHidden(t *testing.T) { cases := map[string]bool{ "/": false, From 1e03feadb550e4414b5589a6a8df57f538efba15 Mon Sep 17 00:00:00 2001 From: kodareef5 Date: Sat, 4 Apr 2026 15:58:17 -0400 Subject: [PATCH 117/126] fix: check download permission in resource handler (#5891) --- http/resource.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/http/resource.go b/http/resource.go index 3f78cb0c0e..dfe722a978 100644 --- a/http/resource.go +++ b/http/resource.go @@ -30,7 +30,7 @@ var resourceGetHandler = withUser(func(w http.ResponseWriter, r *http.Request, d Expand: true, ReadHeader: d.server.TypeDetectionByHeader, Checker: d, - Content: true, + Content: d.user.Perm.Download, }) if err != nil { return errToStatus(err), err @@ -42,6 +42,9 @@ var resourceGetHandler = withUser(func(w http.ResponseWriter, r *http.Request, d file.ApplySort() return renderJSON(w, r, file) } else if encoding == "true" { + if !d.user.Perm.Download { + return http.StatusAccepted, nil + } if file.Type != "text" { return renderJSON(w, r, file) } From f13c7c8cffd6d58ff29c4a6763ced1385f69961e Mon Sep 17 00:00:00 2001 From: kodareef5 Date: Sat, 4 Apr 2026 16:02:34 -0400 Subject: [PATCH 118/126] fix: restrict default permissions for proxy-auth auto-provisioned users (#5890) Co-authored-by: Henrique Dias --- auth/proxy.go | 3 ++ auth/proxy_test.go | 79 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 auth/proxy_test.go diff --git a/auth/proxy.go b/auth/proxy.go index 3f4a627ca1..57eddd4aad 100644 --- a/auth/proxy.go +++ b/auth/proxy.go @@ -46,6 +46,9 @@ func (a ProxyAuth) createUser(usr users.Store, setting *settings.Settings, srv * LockPassword: true, } setting.Defaults.Apply(user) + user.Perm.Admin = false + user.Perm.Execute = false + user.Commands = []string{} var userHome string userHome, err = setting.MakeUserDir(user.Username, user.Scope, srv.Root) diff --git a/auth/proxy_test.go b/auth/proxy_test.go new file mode 100644 index 0000000000..86fb7102d7 --- /dev/null +++ b/auth/proxy_test.go @@ -0,0 +1,79 @@ +package auth + +import ( + "net/http" + "testing" + + fberrors "github.com/filebrowser/filebrowser/v2/errors" + "github.com/filebrowser/filebrowser/v2/settings" + "github.com/filebrowser/filebrowser/v2/users" +) + +type mockUserStore struct { + users map[string]*users.User +} + +func (m *mockUserStore) Get(_ string, id interface{}) (*users.User, error) { + if v, ok := id.(string); ok { + if u, ok := m.users[v]; ok { + return u, nil + } + } + return nil, fberrors.ErrNotExist +} + +func (m *mockUserStore) Gets(_ string) ([]*users.User, error) { return nil, nil } +func (m *mockUserStore) Update(_ *users.User, _ ...string) error { return nil } +func (m *mockUserStore) Save(user *users.User) error { + m.users[user.Username] = user + return nil +} +func (m *mockUserStore) Delete(_ interface{}) error { return nil } +func (m *mockUserStore) LastUpdate(_ uint) int64 { return 0 } + +func TestProxyAuthCreateUserRestrictsDefaults(t *testing.T) { + t.Parallel() + + store := &mockUserStore{users: make(map[string]*users.User)} + srv := &settings.Server{Root: t.TempDir()} + + s := &settings.Settings{ + Key: []byte("key"), + AuthMethod: MethodProxyAuth, + Defaults: settings.UserDefaults{ + Perm: users.Permissions{ + Admin: true, + Execute: true, + Create: true, + Rename: true, + Modify: true, + Delete: true, + Share: true, + Download: true, + }, + Commands: []string{"git", "ls", "cat", "id"}, + }, + } + + auth := ProxyAuth{Header: "X-Remote-User"} + req, _ := http.NewRequest(http.MethodGet, "/", http.NoBody) + req.Header.Set("X-Remote-User", "newproxyuser") + + user, err := auth.Auth(req, store, s, srv) + if err != nil { + t.Fatalf("Auth() error: %v", err) + } + + if user.Perm.Admin { + t.Error("auto-provisioned proxy user should not have Admin permission") + } + if user.Perm.Execute { + t.Error("auto-provisioned proxy user should not have Execute permission") + } + if len(user.Commands) != 0 { + t.Errorf("auto-provisioned proxy user should have empty Commands, got %v", user.Commands) + } + if !user.Perm.Create { + t.Error("auto-provisioned proxy user should retain Create permission from defaults") + } +} From 29c73eaca6a7b91f0de3c73536a0d0a21eeda03e Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 4 Apr 2026 22:15:49 +0200 Subject: [PATCH 119/126] chore(release): 2.63.1 --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 21c40b7972..94782f041a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,16 @@ All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines. +## [2.63.1](https://github.com/filebrowser/filebrowser/compare/v2.63.0...v2.63.1) (2026-04-04) + + +### Bug Fixes + +* check download permission in resource handler ([#5891](https://github.com/filebrowser/filebrowser/issues/5891)) ([1e03fea](https://github.com/filebrowser/filebrowser/commit/1e03feadb550e4414b5589a6a8df57f538efba15)) +* check share owner permissions on public share access ([#5888](https://github.com/filebrowser/filebrowser/issues/5888)) ([7dbf7a3](https://github.com/filebrowser/filebrowser/commit/7dbf7a3528234b2a9ee9c4115e8ecf58d258ca51)) +* enforce directory boundary in rule path matching ([#5889](https://github.com/filebrowser/filebrowser/issues/5889)) ([8adf127](https://github.com/filebrowser/filebrowser/commit/8adf127c7d33585333b8030869f6f318e6517179)) +* restrict default permissions for proxy-auth auto-provisioned users ([#5890](https://github.com/filebrowser/filebrowser/issues/5890)) ([f13c7c8](https://github.com/filebrowser/filebrowser/commit/f13c7c8cffd6d58ff29c4a6763ced1385f69961e)) + ## [2.63.0](https://github.com/filebrowser/filebrowser/compare/v2.62.2...v2.63.0) (2026-04-04) From 871f33789259d644ec3ed89aa38f6bf20b72c42a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 11 Apr 2026 07:43:08 +0200 Subject: [PATCH 120/126] chore(deps): update pnpm/action-setup action to v6 (#5898) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/ci.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index ce29dcde9f..5cc4d465e7 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - - uses: pnpm/action-setup@v5 + - uses: pnpm/action-setup@v6 with: package_json_file: "frontend/package.json" - uses: actions/setup-node@v6 @@ -32,7 +32,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - - uses: pnpm/action-setup@v5 + - uses: pnpm/action-setup@v6 with: package_json_file: "frontend/package.json" - uses: actions/setup-node@v6 @@ -77,7 +77,7 @@ jobs: - uses: actions/setup-go@v6 with: go-version: '1.26' - - uses: pnpm/action-setup@v5 + - uses: pnpm/action-setup@v6 with: package_json_file: "frontend/package.json" - uses: actions/setup-node@v6 @@ -101,7 +101,7 @@ jobs: - uses: actions/setup-go@v6 with: go-version: '1.26' - - uses: pnpm/action-setup@v5 + - uses: pnpm/action-setup@v6 with: package_json_file: "frontend/package.json" - uses: actions/setup-node@v6 From 0fadf28b18e506ddca0027e83ebe567ac57932bf Mon Sep 17 00:00:00 2001 From: Brumaire Date: Sat, 11 Apr 2026 13:48:27 +0800 Subject: [PATCH 121/126] fix(preview): let arrow keys seek video instead of switching files (#5895) --- frontend/src/views/files/Preview.vue | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/frontend/src/views/files/Preview.vue b/frontend/src/views/files/Preview.vue index 0ac529ec1f..a146169574 100644 --- a/frontend/src/views/files/Preview.vue +++ b/frontend/src/views/files/Preview.vue @@ -383,11 +383,19 @@ const key = (event: KeyboardEvent) => { if (layoutStore.currentPrompt !== null) { return; } - if (event.which === 13 || event.which === 39) { + // When previewing a video, let arrow keys fall through to video.js for + // seeking instead of switching to the prev/next file. Enter still advances. + const isVideo = fileStore.req?.type === "video"; + if (event.which === 13) { + // enter + if (hasNext.value) next(); + } else if (event.which === 39) { // right arrow + if (isVideo) return; if (hasNext.value) next(); } else if (event.which === 37) { // left arrow + if (isVideo) return; if (hasPrevious.value) prev(); } else if (event.which === 27) { // esc From 23e84c997422ef058dc8e348cba75e77b23aaf84 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 11 Apr 2026 07:50:31 +0200 Subject: [PATCH 122/126] docs: update PR template --- .github/PULL_REQUEST_TEMPLATE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index a8efcb42aa..a1a5b92cc3 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -10,7 +10,7 @@ Before submitting your PR, please indicate which issues are either fixed or closed by this PR. See [GitHub Help: Closing issues using keywords](https://help.github.com/articles/closing-issues-via-commit-messages/). -- [ ] I am aware the project is currently in maintenance-only mode. See [README](https://github.com/filebrowser/community/blob/master/README.md) +- [ ] I am aware the project is currently in **maintenance-only** mode and new feature requests won't be accepted. See [README](https://github.com/filebrowser/community/blob/master/README.md) - [ ] I am aware that translations MUST be made through [Transifex](https://app.transifex.com/file-browser/file-browser/) and that this PR is NOT a translation update - [ ] I am making a PR against the `master` branch. - [ ] I am sure File Browser can be successfully built. See [builds](https://github.com/filebrowser/community/blob/master/builds.md) and [development](https://github.com/filebrowser/community/blob/master/development.md). From 0321415a152b6c20e44c6f4afbffd0ed34919e22 Mon Sep 17 00:00:00 2001 From: "transifex-integration[bot]" <43880903+transifex-integration[bot]@users.noreply.github.com> Date: Sat, 11 Apr 2026 07:51:05 +0200 Subject: [PATCH 123/126] chore: pull translations (#5871) Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com> --- frontend/src/i18n/de.json | 2 +- frontend/src/i18n/fr.json | 82 ++++++++++++++++++------------------ frontend/src/i18n/hr.json | 2 +- frontend/src/i18n/ko.json | 2 +- frontend/src/i18n/lv.json | 2 +- frontend/src/i18n/nl.json | 2 +- frontend/src/i18n/pl.json | 2 +- frontend/src/i18n/pt-pt.json | 2 +- frontend/src/i18n/pt.json | 2 +- frontend/src/i18n/ru.json | 2 +- frontend/src/i18n/zh-cn.json | 2 +- 11 files changed, 51 insertions(+), 51 deletions(-) diff --git a/frontend/src/i18n/de.json b/frontend/src/i18n/de.json index a09e2bdb51..0ff3eac6e8 100644 --- a/frontend/src/i18n/de.json +++ b/frontend/src/i18n/de.json @@ -245,7 +245,7 @@ "execute": "Befehle ausführen", "modify": "Dateien bearbeiten", "rename": "Dateien und Verzeichnisse umbenennen oder verschieben", - "share": "Dateien teilen" + "share": "Dateien freigeben (Download-Berechtigung erforderlich)" }, "permissions": "Berechtigungen", "permissionsHelp": "Du kannst den Benutzer zum Administrator machen oder die Berechtigungen einzeln festlegen. Wenn du \"Administrator\" wählst, werden automatisch alle anderen Optionen aktiviert. Die Benutzerverwaltung bleibt ein Administratorrecht.\n", diff --git a/frontend/src/i18n/fr.json b/frontend/src/i18n/fr.json index 7a5e6070c4..ed40886b43 100644 --- a/frontend/src/i18n/fr.json +++ b/frontend/src/i18n/fr.json @@ -42,17 +42,17 @@ "update": "Mettre à jour", "upload": "Importer", "openFile": "Ouvrir le fichier", - "openDirect": "View raw", + "openDirect": "Affichage brut", "discardChanges": "Annuler", "stopSearch": "Arrêter recherche", "saveChanges": "Enregistrer changements", "editAsText": "Editer comme Texte", "increaseFontSize": "Augmenter taille police", "decreaseFontSize": "Réduire taille police", - "overrideAll": "Replace all files in destination folder", - "skipAll": "Skip all conflicting files", - "renameAll": "Rename all files (create a copy)", - "singleDecision": "Decide for each conflicting file" + "overrideAll": "Remplacer tous les fichiers du dossier de destination", + "skipAll": "Ignorer tous les fichiers en conflit", + "renameAll": " Renommer tous les fichiers (créer une copie)", + "singleDecision": "Choisissez pour chaque fichier en conflit" }, "download": { "downloadFile": "Télécharger le fichier", @@ -94,7 +94,7 @@ "semicolon": "Point-virgule (;)", "both": "Les (,) et (;)" }, - "fileEncoding": "File Encoding" + "fileEncoding": "Encodage du fichier" }, "help": { "click": "Sélectionner un fichier ou dossier", @@ -118,7 +118,7 @@ "passwordsDontMatch": "Les mots de passe ne concordent pas", "signup": "S'inscrire", "submit": "Se connecter", - "username": "Utilisateur·ice", + "username": "Utilisateur", "usernameTaken": "Le nom d'utilisateur·ice est déjà pris", "wrongCredentials": "Identifiants incorrects !", "passwordTooShort": "Le mot de passe doit contenir au moins {min} caractères", @@ -134,7 +134,7 @@ "deleteMessageMultiple": "Êtes-vous sûr de vouloir supprimer ces {count} élément(s) ?", "deleteMessageSingle": "Êtes-vous sûr de vouloir supprimer cet élément ?", "deleteMessageShare": "Êtes-vous sûr de vouloir supprimer ce partage ({path}) ?", - "deleteUser": "Êtes-vous sûr de vouloir supprimer cet·te utilisateur·ice ?", + "deleteUser": "Êtes-vous sûr de vouloir supprimer cet utilisateur ?", "deleteTitle": "Supprimer", "displayName": "Nom :", "download": "Télécharger", @@ -166,18 +166,18 @@ "optionalPassword": "Mot de passe optionnel", "resolution": "Résolution", "discardEditorChanges": "Êtes-vous sûr de vouloir annuler les modifications apportées ?", - "replaceOrSkip": "Replace or skip files", - "resolveConflict": "Which files do you want to keep?", - "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", - "fastConflictResolve": "The destination folder there are {count} files with same name.", - "uploadingFiles": "Uploading files", - "filesInOrigin": "Files in origin", - "filesInDest": "Files in destination", - "override": "Overwrite", - "skip": "Skip", - "forbiddenError": "Forbidden Error", - "currentPassword": "Your password", - "currentPasswordMessage": "Enter your password to validate this action." + "replaceOrSkip": "Remplacer ou ignorer les fichiers", + "resolveConflict": "Quels fichiers souhaitez-vous conserver ?", + "singleConflictResolve": "Si vous sélectionnez les deux versions, un numéro sera ajouté au nom du fichier copié.", + "fastConflictResolve": "Le dossier de destination contient {count} fichiers portant le même nom.", + "uploadingFiles": "Importation de fichiers", + "filesInOrigin": "Fichiers d'origine", + "filesInDest": "Fichiers de destination", + "override": "Remplacer", + "skip": "Passer", + "forbiddenError": "Action non autorisée", + "currentPassword": "Votre mot de passe", + "currentPasswordMessage": "Entrez votre mot de passe pour valider cette action." }, "search": { "images": "Images", @@ -192,12 +192,12 @@ "settings": { "aceEditorTheme": "Éditeur de Thème Ace", "admin": "Admin", - "administrator": "Administrateur·ice", + "administrator": "Administrateur", "allowCommands": "Exécuter des commandes", "allowEdit": "Éditer, renommer et supprimer des fichiers ou des dossiers", "allowNew": "Créer de nouveaux fichiers et dossiers", "allowPublish": "Publier de nouveaux posts et pages", - "allowSignup": "Autoriser les utilisateur·ices à s'inscrire", + "allowSignup": "Autoriser les utilisateurs à s'inscrire", "hideLoginButton": "Cacher le bouton d’identification sur les pages publiques", "avoidChanges": "(Laisser vide pour conserver l'actuel)", "branding": "Image de marque", @@ -207,17 +207,17 @@ "commandRunner": "Exécuteur de commandes", "commandRunnerHelp": "Ici, vous pouvez définir les commandes qui seront exécutées lors des événements nommés précédemments. Vous devez en écrire une par ligne. Les variables d'environnement {0} et {1} seront disponibles, {0} étant relatif à {1}. Pour plus d'informations sur cette fonctionnalité et les variables d'environnement disponibles, veuillez lire la {2}.", "commandsUpdated": "Commandes mises à jour !", - "createUserDir": "Créer automatiquement un dossier pour l'utilisateur·ice", + "createUserDir": "Créer automatiquement un dossier pour l'utilisateur", "minimumPasswordLength": "Taille minimale du mot de passe", "tusUploads": "Uploads segmentés", "tusUploadsHelp": "File Browser prend en charge les uploads segmentés afin de permettre une gestion efficace, fiable et reprenable sur des réseaux instables.", "tusUploadsChunkSize": "Taille maximale autorisée par segment (les uploads directs seront utilisés pour les fichiers plus petits). Vous pouvez entrer un entier en octets ou une chaîne telle que 10MB, 1GB, etc.", "tusUploadsRetryCount": "Nombre de tentatives en cas d'échec d'un segment.", - "userHomeBasePath": "Chemin de base pour les dossiers personnels des utilisateur·ices", + "userHomeBasePath": "Chemin de base pour les dossiers personnels des utilisateurs", "userScopeGenerationPlaceholder": "Le périmètre sera généré automatiquement", - "createUserHomeDirectory": "Créer le dossier personnel de l'utilisateur·ice", + "createUserHomeDirectory": "Créer le dossier personnel de l'utilisateur", "customStylesheet": "Feuille de style personnalisée", - "defaultUserDescription": "Paramètres par défaut pour les nouveaux utilisateur·ices.", + "defaultUserDescription": "Paramètres par défaut pour les nouveaux utilisateurs.", "disableExternalLinks": "Désactiver les liens externes (sauf la documentation)", "disableUsedDiskPercentage": "Désactiver le graphique de pourcentage d'utilisation du disque", "documentation": "documentation", @@ -231,7 +231,7 @@ "insertRegex": "Insérer une expression régulière", "instanceName": "Nom de l'instance", "language": "Langue", - "lockPassword": "Empêcher l'utilisateur·ice de changer son mot de passe", + "lockPassword": "Empêcher l'utilisateur de changer son mot de passe", "newPassword": "Votre nouveau mot de passe", "newPasswordConfirm": "Confirmation du nouveau mot de passe", "newUser": "Nouvel utilisateur", @@ -245,17 +245,17 @@ "execute": "Exécuter des commandes", "modify": "Modifier des fichiers", "rename": "Renommer ou déplacer des fichiers ou des dossiers", - "share": "Partager des fichiers" + "share": "Share files (require download permission)" }, "permissions": "Permissions", - "permissionsHelp": "Vous pouvez définir l'utilisateur·ice comme étant administrateur·ice ou encore choisir les permissions individuellement. Si vous sélectionnez \"Administrateur·ice\", toutes les autres options seront automatiquement activées. La gestion des utilisateur·ices est un privilège que seul l'administrateur·ice possède.\n", + "permissionsHelp": "Vous pouvez définir l'utilisateur comme étant un administrateur ou encore choisir les permissions individuellement. Si vous sélectionnez \"Administrateur\", toutes les autres options seront automatiquement activées. La gestion des utilisateurs est un privilège que seul l'administrateur possède.\n", "profileSettings": "Paramètres du profil", "redirectAfterCopyMove": "Rediriger vers la destination après une copie/déplacement", "ruleExample1": "Bloque l'accès à tous les fichiers commençant par un point (comme par exemple .git, .gitignore) dans tous les dossiers.\n", - "ruleExample2": "Bloque l'accès au fichier nommé \"Caddyfile\" à la racine du dossier utilisateur·ice.", + "ruleExample2": "Bloque l'accès au fichier nommé \"Caddyfile\" à la racine du dossier utilisateur", "rules": "Règles", - "rulesHelp": "Vous pouvez définir ici un ensemble de règles pour cet utilisateur·ice. Les fichiers bloqués ne seront pas affichés et ne seront pas accessibles par l'utilisateur·ice. Les expressions régulières sont supportées et les chemins d'accès sont relatifs par rapport au dossier de l'utilisateur·ice.\n", - "scope": "Portée du dossier utilisateur·ice", + "rulesHelp": "Vous pouvez définir ici un ensemble de règles pour cet utilisateur. Les fichiers bloqués ne seront pas affichés et ne seront pas accessibles par l'utilisateur. Les expressions régulières sont supportées et les chemins d'accès sont relatifs par rapport au dossier de l'utilisateur.\n", + "scope": "Portée du dossier utilisateur", "setDateFormat": "Définir le format de la date", "settingsUpdated": "Les paramètres ont été mis à jour !", "shareDuration": "Durée du partage", @@ -268,16 +268,16 @@ "light": "Clair", "title": "Thème" }, - "user": "Utilisateur·ice", + "user": "Utilisateur", "userCommands": "Commandes", - "userCommandsHelp": "Une liste séparée par des espaces des commandes permises pour l'utilisateur·ice. Exemple :\n", - "userCreated": "Utilisateur·ice créé !", - "userDefaults": "Paramètres par défaut de l'utilisateur.ice", - "userDeleted": "Utilisateur·ice supprimé !", - "userManagement": "Gestion des utilisateur·ices", - "userUpdated": "Utilisateur·ice mis à jour !", - "username": "Nom d'utilisateur·ice", - "users": "Utilisateur·ices", + "userCommandsHelp": "Une liste séparée par des espaces des commandes permises pour l'utilisateur. Exemple :\n", + "userCreated": "Utilisateur créé !", + "userDefaults": "Paramètres par défaut de l'utilisateur", + "userDeleted": "Utilisateur supprimé !", + "userManagement": "Gestion des utilisateurs", + "userUpdated": "Utilisateur mis à jour !", + "username": "Nom d'utilisateur", + "users": "Utilisateurs", "currentPassword": "Mot de Passe Actuel" }, "sidebar": { diff --git a/frontend/src/i18n/hr.json b/frontend/src/i18n/hr.json index 5a3abf3783..7dd343e950 100644 --- a/frontend/src/i18n/hr.json +++ b/frontend/src/i18n/hr.json @@ -245,7 +245,7 @@ "execute": "Izvršavanje naredbi", "modify": "Uređivanje datoteka", "rename": "Preimenovanje ili premještanje datoteka i mapa", - "share": "Dijeljenje datoteka" + "share": "Share files (require download permission)" }, "permissions": "Dopuštenja", "permissionsHelp": "Korisnika možete postaviti administratorom ili odabrati dopuštenja individualno. Odabirom na \"Administrator\", sve druge opcije bit će automatski odabrane. Upravljanje korisnicima ostaje privilegija administratora.\n", diff --git a/frontend/src/i18n/ko.json b/frontend/src/i18n/ko.json index c03c39f670..089c02a80b 100644 --- a/frontend/src/i18n/ko.json +++ b/frontend/src/i18n/ko.json @@ -245,7 +245,7 @@ "execute": "명령 실행", "modify": "파일 편집", "rename": "파일 및 디렉터리의 이름 변경 또는 이동", - "share": "파일 공유하기" + "share": "Share files (require download permission)" }, "permissions": "권한", "permissionsHelp": "사용자를 관리자로 설정하거나 개별적으로 권한을 지정할 수 있습니다. \"관리자\"를 선택하면 다른 모든 옵션이 자동으로 선택됩니다. 사용자 관리는 관리자의 권한입니다.\n", diff --git a/frontend/src/i18n/lv.json b/frontend/src/i18n/lv.json index 72cc0a5dd3..0303293e09 100644 --- a/frontend/src/i18n/lv.json +++ b/frontend/src/i18n/lv.json @@ -245,7 +245,7 @@ "execute": "Izpildīt komandas", "modify": "Rediģēt failus", "rename": "Pārdēvēt vai pārvietot failus un direktorijus", - "share": "Kopīgojiet failus" + "share": "Share files (require download permission)" }, "permissions": "Atļaujas", "permissionsHelp": "Varat iestatīt lietotāju kā administratoru vai izvēlēties atļaujas individuāli. Ja atlasīsiet “Administrators”, visas pārējās opcijas tiks automātiski atzīmētas. Lietotāju pārvaldība joprojām ir administratora privilēģija.\n", diff --git a/frontend/src/i18n/nl.json b/frontend/src/i18n/nl.json index 331eb3063f..cc7a060931 100644 --- a/frontend/src/i18n/nl.json +++ b/frontend/src/i18n/nl.json @@ -245,7 +245,7 @@ "execute": "Opdrachten uitvoeren", "modify": "Bestanden bewerken", "rename": "Bestanden of mappen hernoemen of verplaatsen", - "share": "Bestanden delen" + "share": "Bestanden delen (download toestemming vereisen)" }, "permissions": "Machtigingen", "permissionsHelp": " kunt de gebruiker instellen als beheerder of de machtigingen afzonderlijk kiezen. Als u \"Beheerder\" selecteert, worden alle overige opties automatisch ingeschakeld. Het beheer van gebruikers blijft een privilege van een beheerder.\n", diff --git a/frontend/src/i18n/pl.json b/frontend/src/i18n/pl.json index f613dd5173..28b2d8c2b3 100644 --- a/frontend/src/i18n/pl.json +++ b/frontend/src/i18n/pl.json @@ -245,7 +245,7 @@ "execute": "Wykonywanie poleceń", "modify": "Edytowanie plików", "rename": "Zmienianie nazwy lub przenoszenie plików i katalogów", - "share": "Udostępnianie plików" + "share": "Udostępnianie plików (wymaga uprawnienia do pobierania)" }, "permissions": "Uprawnienia", "permissionsHelp": "Możesz ustawić użytkownika jako administratora lub wybrać uprawnienia indywidualnie. Jeśli wybierzesz „Administrator”, wszystkie pozostałe opcje zostaną automatycznie zaznaczone. Zarządzanie użytkownikami pozostaje przywilejem administratora.\n", diff --git a/frontend/src/i18n/pt-pt.json b/frontend/src/i18n/pt-pt.json index 8430474c0a..cbe60c82b2 100644 --- a/frontend/src/i18n/pt-pt.json +++ b/frontend/src/i18n/pt-pt.json @@ -245,7 +245,7 @@ "execute": "Executar comandos", "modify": "Editar ficheiros", "rename": "Mudar o nome ou mover ficheiros e pastas", - "share": "Ficheiros partilhados" + "share": "Share files (require download permission)" }, "permissions": "Permissões", "permissionsHelp": "Pode definir um utilizador um administrador ou escolher as permissões individualmente. Se escolher \"Administrador\", todas as outras opções serão automaticamente marcadas. A gestão de utilizadores continua a ser um privilégio de um administrador.\n", diff --git a/frontend/src/i18n/pt.json b/frontend/src/i18n/pt.json index ef5a4cf734..a79f903ce1 100644 --- a/frontend/src/i18n/pt.json +++ b/frontend/src/i18n/pt.json @@ -245,7 +245,7 @@ "execute": "Executar comandos", "modify": "Editar ficheiros", "rename": "Alterar o nome ou mover ficheiros e pastas", - "share": "Partilhar ficheiros" + "share": "Share files (require download permission)" }, "permissions": "Permissões", "permissionsHelp": "Pode definir o utilizador como administrador ou escolher as permissões manualmente. Se selecionar a opção \"Administrador\", todas as outras opções serão automaticamente selecionadas. A gestão dos utilizadores é um privilégio restringido aos administradores.\n", diff --git a/frontend/src/i18n/ru.json b/frontend/src/i18n/ru.json index 4ff2658786..db235abf2b 100644 --- a/frontend/src/i18n/ru.json +++ b/frontend/src/i18n/ru.json @@ -245,7 +245,7 @@ "execute": "Выполнять команды", "modify": "Редактировать файлы", "rename": "Переименовывать или перемещать файлы и каталоги", - "share": "Делиться файлами" + "share": "Share files (require download permission)" }, "permissions": "Права доступа", "permissionsHelp": "Можно настроить пользователя как администратора или выбрать разрешения индивидуально. При выборе \"Администратор\", все остальные параметры будут автоматически выбраны. Управление пользователями - привилегия администратора.\n", diff --git a/frontend/src/i18n/zh-cn.json b/frontend/src/i18n/zh-cn.json index 9d136737a1..7d77fd415a 100644 --- a/frontend/src/i18n/zh-cn.json +++ b/frontend/src/i18n/zh-cn.json @@ -245,7 +245,7 @@ "execute": "执行命令", "modify": "编辑", "rename": "重命名或移动文件和文件夹", - "share": "分享文件" + "share": "Share files (require download permission)" }, "permissions": "权限", "permissionsHelp": "你可以将该用户设置为管理员或单独选择各项权限。如果你选择了“管理员”,则其他的选项会被自动选中,同时该用户可以管理其他用户。\n", From 9b80a9aa6cf87700624fa6e0ba5fe8eac71d84d7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 11 Apr 2026 07:54:27 +0200 Subject: [PATCH 124/126] chore(deps): update all non-major dependencies (#5870) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- frontend/pnpm-lock.yaml | 1041 +++++++++++++++++++-------------------- go.mod | 12 +- go.sum | 24 +- 3 files changed, 526 insertions(+), 551 deletions(-) diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index f57dc60785..e027a36c07 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -10,13 +10,13 @@ importers: dependencies: '@chenfengyuan/vue-number-input': specifier: ^2.0.1 - version: 2.0.1(vue@3.5.31(typescript@5.9.3)) + version: 2.0.1(vue@3.5.32(typescript@5.9.3)) '@vueuse/core': specifier: ^14.0.0 - version: 14.2.1(vue@3.5.31(typescript@5.9.3)) + version: 14.2.1(vue@3.5.32(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.31(typescript@5.9.3)) + version: 14.2.1(focus-trap@8.0.0)(jwt-decode@4.0.0)(vue@3.5.32(typescript@5.9.3)) ace-builds: specifier: ^1.43.2 version: 1.43.6 @@ -34,7 +34,7 @@ importers: version: 0.3.93 filesize: specifier: ^11.0.13 - version: 11.0.14 + version: 11.0.15 js-base64: specifier: ^3.7.7 version: 3.7.8 @@ -43,13 +43,13 @@ importers: version: 4.0.0 lodash-es: specifier: ^4.17.21 - version: 4.17.23 + version: 4.18.1 marked: specifier: ^17.0.0 - version: 17.0.5 + version: 17.0.6 marked-katex-extension: specifier: ^5.1.6 - version: 5.1.7(katex@0.16.28)(marked@17.0.5) + version: 5.1.8(katex@0.16.28)(marked@17.0.6) material-icons: specifier: ^1.13.14 version: 1.13.14 @@ -58,13 +58,13 @@ importers: version: 8.0.1 pinia: specifier: ^3.0.4 - version: 3.0.4(typescript@5.9.3)(vue@3.5.31(typescript@5.9.3)) + version: 3.0.4(typescript@5.9.3)(vue@3.5.32(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.31(typescript@5.9.3)) + version: 3.8.1(vue@3.5.32(typescript@5.9.3)) tus-js-client: specifier: ^4.3.1 version: 4.3.1 @@ -79,13 +79,13 @@ importers: version: 0.2.30 videojs-mobile-ui: specifier: ^1.1.1 - version: 1.2.3(video.js@8.23.7) + version: 1.2.4(video.js@8.23.7) vue: specifier: ^3.5.17 - version: 3.5.31(typescript@5.9.3) + version: 3.5.32(typescript@5.9.3) vue-i18n: specifier: ^11.1.10 - version: 11.3.0(vue@3.5.31(typescript@5.9.3)) + version: 11.3.2(vue@3.5.32(typescript@5.9.3)) vue-lazyload: specifier: ^3.0.0 version: 3.0.0 @@ -94,14 +94,14 @@ importers: version: 1.3.4 vue-router: specifier: ^5.0.0 - version: 5.0.4(@vue/compiler-sfc@3.5.31)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.31(typescript@5.9.3)))(vue@3.5.31(typescript@5.9.3)) + version: 5.0.4(@vue/compiler-sfc@3.5.32)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.32(typescript@5.9.3)))(vue@3.5.32(typescript@5.9.3)) vue-toastification: specifier: ^2.0.0-rc.5 - version: 2.0.0-rc.5(vue@3.5.31(typescript@5.9.3)) + version: 2.0.0-rc.5(vue@3.5.32(typescript@5.9.3)) devDependencies: '@intlify/unplugin-vue-i18n': specifier: ^11.0.1 - version: 11.0.7(@vue/compiler-dom@3.5.31)(eslint@10.1.0)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.3.0(vue@3.5.31(typescript@5.9.3)))(vue@3.5.31(typescript@5.9.3)) + version: 11.0.7(@vue/compiler-dom@3.5.32)(eslint@10.2.0)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.3.2(vue@3.5.32(typescript@5.9.3)))(vue@3.5.32(typescript@5.9.3)) '@tsconfig/node24': specifier: ^24.0.2 version: 24.0.4 @@ -110,46 +110,46 @@ importers: version: 4.17.12 '@types/node': specifier: ^24.10.1 - version: 24.12.0 + version: 24.12.2 '@typescript-eslint/eslint-plugin': specifier: ^8.37.0 - version: 8.57.2(@typescript-eslint/parser@8.56.0(eslint@10.1.0)(typescript@5.9.3))(eslint@10.1.0)(typescript@5.9.3) + version: 8.58.1(@typescript-eslint/parser@8.56.0(eslint@10.2.0)(typescript@5.9.3))(eslint@10.2.0)(typescript@5.9.3) '@vitejs/plugin-legacy': specifier: ^8.0.0 - version: 8.0.1(terser@5.46.1)(vite@8.0.3(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.1)(yaml@2.8.3)) + version: 8.0.1(terser@5.46.1)(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.3)(terser@5.46.1)(yaml@2.8.3)) '@vitejs/plugin-vue': specifier: ^6.0.1 - version: 6.0.5(vite@8.0.3(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.1)(yaml@2.8.3))(vue@3.5.31(typescript@5.9.3)) + version: 6.0.5(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.3)(terser@5.46.1)(yaml@2.8.3))(vue@3.5.32(typescript@5.9.3)) '@vue/eslint-config-prettier': specifier: ^10.2.0 - version: 10.2.0(eslint@10.1.0)(prettier@3.8.1) + version: 10.2.0(eslint@10.2.0)(prettier@3.8.2) '@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.1.0)(typescript@5.9.3))(eslint@10.1.0)(vue-eslint-parser@10.4.0(eslint@10.1.0)))(eslint@10.1.0)(typescript@5.9.3) + version: 14.7.0(eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.2.0)(typescript@5.9.3))(eslint@10.2.0)(vue-eslint-parser@10.4.0(eslint@10.2.0)))(eslint@10.2.0)(typescript@5.9.3) '@vue/tsconfig': specifier: ^0.9.0 - version: 0.9.1(typescript@5.9.3)(vue@3.5.31(typescript@5.9.3)) + version: 0.9.1(typescript@5.9.3)(vue@3.5.32(typescript@5.9.3)) autoprefixer: specifier: ^10.4.21 - version: 10.4.27(postcss@8.5.8) + version: 10.4.27(postcss@8.5.9) eslint: specifier: ^10.0.0 - version: 10.1.0 + version: 10.2.0 eslint-config-prettier: specifier: ^10.1.5 - version: 10.1.8(eslint@10.1.0) + version: 10.1.8(eslint@10.2.0) eslint-plugin-prettier: specifier: ^5.5.1 - version: 5.5.5(eslint-config-prettier@10.1.8(eslint@10.1.0))(eslint@10.1.0)(prettier@3.8.1) + version: 5.5.5(eslint-config-prettier@10.1.8(eslint@10.2.0))(eslint@10.2.0)(prettier@3.8.2) eslint-plugin-vue: specifier: ^10.5.1 - version: 10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.1.0)(typescript@5.9.3))(eslint@10.1.0)(vue-eslint-parser@10.4.0(eslint@10.1.0)) + version: 10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.2.0)(typescript@5.9.3))(eslint@10.2.0)(vue-eslint-parser@10.4.0(eslint@10.2.0)) postcss: specifier: ^8.5.6 - version: 8.5.8 + version: 8.5.9 prettier: specifier: ^3.6.2 - version: 3.8.1 + version: 3.8.2 terser: specifier: ^5.43.1 version: 5.46.1 @@ -158,13 +158,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.0 - version: 8.0.3(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.1)(yaml@2.8.3) + version: 8.0.8(@types/node@24.12.2)(esbuild@0.27.3)(terser@5.46.1)(yaml@2.8.3) vite-plugin-compression2: specifier: ^2.3.1 version: 2.5.3(rollup@4.57.1) vitest: specifier: ^4.1.0 - version: 4.1.2(@types/node@24.12.0)(vite@8.0.3(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.1)(yaml@2.8.3)) + version: 4.1.4(@types/node@24.12.2)(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.3)(terser@5.46.1)(yaml@2.8.3)) vue-tsc: specifier: ^3.1.3 version: 3.2.6(typescript@5.9.3) @@ -274,11 +274,6 @@ packages: resolution: {integrity: sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==} 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/parser@7.29.2': resolution: {integrity: sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==} engines: {node: '>=6.0.0'} @@ -676,14 +671,14 @@ packages: peerDependencies: vue: ^3.0.0 - '@emnapi/core@1.9.0': - resolution: {integrity: sha512-0DQ98G9ZQZOxfUcQn1waV2yS8aWdZ6kJMbYCJB3oUBecjWYO1fqJ+a1DRfPF3O5JEkwqwP1A9QEN/9mYm2Yd0w==} + '@emnapi/core@1.9.2': + resolution: {integrity: sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==} - '@emnapi/runtime@1.9.0': - resolution: {integrity: sha512-QN75eB0IH2ywSpRpNddCRfQIhmJYBCJ1x5Lb3IscKAL8bMnVAKnRg8dCoXbHzVLLH7P38N2Z3mtulB7W0J0FKw==} + '@emnapi/runtime@1.9.2': + resolution: {integrity: sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==} - '@emnapi/wasi-threads@1.2.0': - resolution: {integrity: sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==} + '@emnapi/wasi-threads@1.2.1': + resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} '@esbuild/aix-ppc64@0.25.12': resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} @@ -1007,24 +1002,24 @@ packages: 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==} + '@eslint/config-array@0.23.5': + resolution: {integrity: sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/config-helpers@0.5.3': - resolution: {integrity: sha512-lzGN0onllOZCGroKJmRwY6QcEHxbjBw1gwB8SgRSqK8YbbtEXMvKynsXc3553ckIEBxsbMBU7oOZXKIPGZNeZw==} + '@eslint/config-helpers@0.5.5': + resolution: {integrity: sha512-eIJYKTCECbP/nsKaaruF6LW967mtbQbsw4JTtSVkUQc9MneSkbrgPJAbKl9nWr0ZeowV8BfsarBmPpBzGelA2w==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/core@1.1.1': - resolution: {integrity: sha512-QUPblTtE51/7/Zhfv8BDwO0qkkzQL7P/aWWbqcf4xWLEYn1oKjdO0gglQBB4GAsu7u6wjijbCmzsUTy6mnk6oQ==} + '@eslint/core@1.2.1': + resolution: {integrity: sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/object-schema@3.0.3': - resolution: {integrity: sha512-iM869Pugn9Nsxbh/YHRqYiqd23AmIbxJOcpUMOuWCVNdoQJ5ZtwL6h3t0bcZzJUlC3Dq9jCFCESBZnX0GTv7iQ==} + '@eslint/object-schema@3.0.5': + resolution: {integrity: sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/plugin-kit@0.6.1': - resolution: {integrity: sha512-iH1B076HoAshH1mLpHMgwdGeTs0CYwL0SPMkGuSebZrwBp16v415e9NZXg2jtrqPVQjf6IANe2Vtlr5KswtcZQ==} + '@eslint/plugin-kit@0.7.1': + resolution: {integrity: sha512-rZAP3aVgB9ds9KOeUSL+zZ21hPmo8dh6fnIFwRQj5EAZl9gzR7wxYbYXYysAM8CTqGmUGyp2S4kUdV17MnGuWQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@humanfs/core@0.19.1': @@ -1055,28 +1050,24 @@ packages: vue-i18n: optional: true - '@intlify/core-base@11.3.0': - resolution: {integrity: sha512-NNX5jIwF4TJBe7RtSKDMOA6JD9mp2mRcBHAwt2X+Q8PvnZub0yj5YYXlFu2AcESdgQpEv/5Yx2uOCV/yh7YkZg==} + '@intlify/core-base@11.3.2': + resolution: {integrity: sha512-cgsUaV/dyD6aS49UPgerIblrWeXAZHNaDWqm4LujOGC7IafSyhghGXEiSVvuDYaDPiQTP+tSFSTM1HIu7Yp1nA==} engines: {node: '>= 16'} - '@intlify/devtools-types@11.3.0': - resolution: {integrity: sha512-G9CNL4WpANWVdUjubOIIS7/D2j/0j+1KJmhBJxHilWNKr9mmt3IjFV3Hq4JoBP23uOoC5ynxz/FHZ42M+YxfGw==} + '@intlify/devtools-types@11.3.2': + resolution: {integrity: sha512-q96G2ZZw0FNoXzejbjIf9dbfgz1xyYBZu6ZT4b5TE/55j8d1O9X5jv0k+U+L3fVe7uebPcqRQFD0ffm30i5mJA==} 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==} + '@intlify/message-compiler@11.3.2': + resolution: {integrity: sha512-d/awyHUkNSaGPxBxT/qlUpfRizxHX9dt55CnW03xx5p1KmMyfYHKupCnvzINX+Na8JR8LAR7y32lPKjoeQGmzA==} 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==} + '@intlify/shared@11.3.2': + resolution: {integrity: sha512-x66fjdH6i+lNYPae5URSQGTjBL68Av6hi09jvC5Ci96iTkwfqrPhCj46aylQZmgMaG89rOZCIKqS7ApC8ZDVjg==} engines: {node: '>= 16'} '@intlify/unplugin-vue-i18n@11.0.7': @@ -1129,8 +1120,8 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - '@napi-rs/wasm-runtime@1.1.2': - resolution: {integrity: sha512-sNXv5oLJ7ob93xkZ1XnxisYhGYXfaG9f65/ZgYuAu3qt7b3NadcOEhLvx28hv31PgX8SZJRYrAIPQilQmFpLVw==} + '@napi-rs/wasm-runtime@1.1.3': + resolution: {integrity: sha512-xK9sGVbJWYb08+mTJt3/YV24WxvxpXcXtP6B172paPZ+Ts69Re9dAr7lKwJoeIx8OoeuimEiRZ7umkiUVClmmQ==} peerDependencies: '@emnapi/core': ^1.7.1 '@emnapi/runtime': ^1.7.1 @@ -1147,110 +1138,110 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@oxc-project/types@0.122.0': - resolution: {integrity: sha512-oLAl5kBpV4w69UtFZ9xqcmTi+GENWOcPF7FCrczTiBbmC0ibXxCwyvZGbO39rCVEuLGAZM84DH0pUIyyv/YJzA==} + '@oxc-project/types@0.124.0': + resolution: {integrity: sha512-VBFWMTBvHxS11Z5Lvlr3IWgrwhMTXV+Md+EQF0Xf60+wAdsGFTBx7X7K/hP4pi8N7dcm1RvcHwDxZ16Qx8keUg==} '@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.12': - resolution: {integrity: sha512-pv1y2Fv0JybcykuiiD3qBOBdz6RteYojRFY1d+b95WVuzx211CRh+ytI/+9iVyWQ6koTh5dawe4S/yRfOFjgaA==} + '@rolldown/binding-android-arm64@1.0.0-rc.15': + resolution: {integrity: sha512-YYe6aWruPZDtHNpwu7+qAHEMbQ/yRl6atqb/AhznLTnD3UY99Q1jE7ihLSahNWkF4EqRPVC4SiR4O0UkLK02tA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.0-rc.12': - resolution: {integrity: sha512-cFYr6zTG/3PXXF3pUO+umXxt1wkRK/0AYT8lDwuqvRC+LuKYWSAQAQZjCWDQpAH172ZV6ieYrNnFzVVcnSflAg==} + '@rolldown/binding-darwin-arm64@1.0.0-rc.15': + resolution: {integrity: sha512-oArR/ig8wNTPYsXL+Mzhs0oxhxfuHRfG7Ikw7jXsw8mYOtk71W0OkF2VEVh699pdmzjPQsTjlD1JIOoHkLP1Fg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-rc.12': - resolution: {integrity: sha512-ZCsYknnHzeXYps0lGBz8JrF37GpE9bFVefrlmDrAQhOEi4IOIlcoU1+FwHEtyXGx2VkYAvhu7dyBf75EJQffBw==} + '@rolldown/binding-darwin-x64@1.0.0-rc.15': + resolution: {integrity: sha512-YzeVqOqjPYvUbJSWJ4EDL8ahbmsIXQpgL3JVipmN+MX0XnXMeWomLN3Fb+nwCmP/jfyqte5I3XRSm7OfQrbyxw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.0-rc.12': - resolution: {integrity: sha512-dMLeprcVsyJsKolRXyoTH3NL6qtsT0Y2xeuEA8WQJquWFXkEC4bcu1rLZZSnZRMtAqwtrF/Ib9Ddtpa/Gkge9Q==} + '@rolldown/binding-freebsd-x64@1.0.0-rc.15': + resolution: {integrity: sha512-9Erhx956jeQ0nNTyif1+QWAXDRD38ZNjr//bSHrt6wDwB+QkAfl2q6Mn1k6OBPerznjRmbM10lgRb1Pli4xZPw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.12': - resolution: {integrity: sha512-YqWjAgGC/9M1lz3GR1r1rP79nMgo3mQiiA+Hfo+pvKFK1fAJ1bCi0ZQVh8noOqNacuY1qIcfyVfP6HoyBRZ85Q==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.15': + resolution: {integrity: sha512-cVwk0w8QbZJGTnP/AHQBs5yNwmpgGYStL88t4UIaqcvYJWBfS0s3oqVLZPwsPU6M0zlW4GqjP0Zq5MnAGwFeGA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.12': - resolution: {integrity: sha512-/I5AS4cIroLpslsmzXfwbe5OmWvSsrFuEw3mwvbQ1kDxJ822hFHIx+vsN/TAzNVyepI/j/GSzrtCIwQPeKCLIg==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.15': + resolution: {integrity: sha512-eBZ/u8iAK9SoHGanqe/jrPnY0JvBN6iXbVOsbO38mbz+ZJsaobExAm1Iu+rxa4S1l2FjG0qEZn4Rc6X8n+9M+w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.12': - resolution: {integrity: sha512-V6/wZztnBqlx5hJQqNWwFdxIKN0m38p8Jas+VoSfgH54HSj9tKTt1dZvG6JRHcjh6D7TvrJPWFGaY9UBVOaWPw==} + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.15': + resolution: {integrity: sha512-ZvRYMGrAklV9PEkgt4LQM6MjQX2P58HPAuecwYObY2DhS2t35R0I810bKi0wmaYORt6m/2Sm+Z+nFgb0WhXNcQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.12': - resolution: {integrity: sha512-AP3E9BpcUYliZCxa3w5Kwj9OtEVDYK6sVoUzy4vTOJsjPOgdaJZKFmN4oOlX0Wp0RPV2ETfmIra9x1xuayFB7g==} + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.15': + resolution: {integrity: sha512-VDpgGBzgfg5hLg+uBpCLoFG5kVvEyafmfxGUV0UHLcL5irxAK7PKNeC2MwClgk6ZAiNhmo9FLhRYgvMmedLtnQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.12': - resolution: {integrity: sha512-nWwpvUSPkoFmZo0kQazZYOrT7J5DGOJ/+QHHzjvNlooDZED8oH82Yg67HvehPPLAg5fUff7TfWFHQS8IV1n3og==} + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.15': + resolution: {integrity: sha512-y1uXY3qQWCzcPgRJATPSOUP4tCemh4uBdY7e3EZbVwCJTY3gLJWnQABgeUetvED+bt1FQ01OeZwvhLS2bpNrAQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.12': - resolution: {integrity: sha512-RNrafz5bcwRy+O9e6P8Z/OCAJW/A+qtBczIqVYwTs14pf4iV1/+eKEjdOUta93q2TsT/FI0XYDP3TCky38LMAg==} + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.15': + resolution: {integrity: sha512-023bTPBod7J3Y/4fzAN6QtpkSABR0rigtrwaP+qSEabUh5zf6ELr9Nc7GujaROuPY3uwdSIXWrvhn1KxOvurWA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.0.0-rc.12': - resolution: {integrity: sha512-Jpw/0iwoKWx3LJ2rc1yjFrj+T7iHZn2JDg1Yny1ma0luviFS4mhAIcd1LFNxK3EYu3DHWCps0ydXQ5i/rrJ2ig==} + '@rolldown/binding-linux-x64-musl@1.0.0-rc.15': + resolution: {integrity: sha512-witB2O0/hU4CgfOOKUoeFgQ4GktPi1eEbAhaLAIpgD6+ZnhcPkUtPsoKKHRzmOoWPZue46IThdSgdo4XneOLYw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.0.0-rc.12': - resolution: {integrity: sha512-vRugONE4yMfVn0+7lUKdKvN4D5YusEiPilaoO2sgUWpCvrncvWgPMzK00ZFFJuiPgLwgFNP5eSiUlv2tfc+lpA==} + '@rolldown/binding-openharmony-arm64@1.0.0-rc.15': + resolution: {integrity: sha512-UCL68NJ0Ud5zRipXZE9dF5PmirzJE4E4BCIOOssEnM7wLDsxjc6Qb0sGDxTNRTP53I6MZpygyCpY8Aa8sPfKPg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.0-rc.12': - resolution: {integrity: sha512-ykGiLr/6kkiHc0XnBfmFJuCjr5ZYKKofkx+chJWDjitX+KsJuAmrzWhwyOMSHzPhzOHOy7u9HlFoa5MoAOJ/Zg==} + '@rolldown/binding-wasm32-wasi@1.0.0-rc.15': + resolution: {integrity: sha512-ApLruZq/ig+nhaE7OJm4lDjayUnOHVUa77zGeqnqZ9pn0ovdVbbNPerVibLXDmWeUZXjIYIT8V3xkT58Rm9u5Q==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.12': - resolution: {integrity: sha512-5eOND4duWkwx1AzCxadcOrNeighiLwMInEADT0YM7xeEOOFcovWZCq8dadXgcRHSf3Ulh1kFo/qvzoFiCLOL1Q==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.15': + resolution: {integrity: sha512-KmoUoU7HnN+Si5YWJigfTws1jz1bKBYDQKdbLspz0UaqjjFkddHsqorgiW1mxcAj88lYUE6NC/zJNwT+SloqtA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.12': - resolution: {integrity: sha512-PyqoipaswDLAZtot351MLhrlrh6lcZPo2LSYE+VDxbVk24LVKAGOuE4hb8xZQmrPAuEtTZW8E6D2zc5EUZX4Lw==} + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.15': + resolution: {integrity: sha512-3P2A8L+x75qavWLe/Dll3EYBJLQmtkJN8rfh+U/eR3MqMgL/h98PhYI+JFfXuDPgPeCB7iZAKiqii5vqOvnA0g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.0-rc.12': - resolution: {integrity: sha512-HHMwmarRKvoFsJorqYlFeFRzXZqCt2ETQlEDOb9aqssrnVBB1/+xgTGtuTrIk5vzLNX1MjMtTf7W9z3tsSbrxw==} + '@rolldown/pluginutils@1.0.0-rc.15': + resolution: {integrity: sha512-UromN0peaE53IaBRe9W7CjrZgXl90fqGpK+mIZbA3qSTeYqg3pqpROBdIPvOG3F5ereDHNwoHBI2e50n1BDr1g==} '@rolldown/pluginutils@1.0.0-rc.2': resolution: {integrity: sha512-izyXV/v+cHiRfozX62W9htOAvwMo4/bXKDrQ+vom1L1qRuexPock/7VZDAhnpHCLNejd3NJ6hiab+tO0D44Rgw==} @@ -1436,8 +1427,8 @@ packages: '@types/lodash@4.17.23': resolution: {integrity: sha512-RDvF6wTulMPjrNdCoYRC8gNR880JNGT8uB+REUpC2Ns4pRqQJhGz90wh7rgdXDPpCczF3VGktDuFGVnz8zP7HA==} - '@types/node@24.12.0': - resolution: {integrity: sha512-GYDxsZi3ChgmckRT9HPU0WEhKLP08ev/Yfcq2AstjrDASOYCSXeyjDsHg4v5t4jOj7cyDX3vmprafKlWIG9MXQ==} + '@types/node@24.12.2': + resolution: {integrity: sha512-A1sre26ke7HDIuY/M23nd9gfB+nrmhtYyMINbjI1zHJxYteKR6qSMX56FsmjMcDb3SMcjJg5BiRRgOCC/yBD0g==} '@types/trusted-types@2.0.7': resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} @@ -1453,13 +1444,13 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/eslint-plugin@8.57.2': - resolution: {integrity: sha512-NZZgp0Fm2IkD+La5PR81sd+g+8oS6JwJje+aRWsDocxHkjyRw0J5L5ZTlN3LI1LlOcGL7ph3eaIUmTXMIjLk0w==} + '@typescript-eslint/eslint-plugin@8.58.1': + resolution: {integrity: sha512-eSkwoemjo76bdXl2MYqtxg51HNwUSkWfODUOQ3PaTLZGh9uIWWFZIjyjaJnex7wXDu+TRx+ATsnSxdN9YWfRTQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.57.2 + '@typescript-eslint/parser': ^8.58.1 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' '@typescript-eslint/parser@8.56.0': resolution: {integrity: sha512-IgSWvLobTDOjnaxAfDTIHaECbkNlAlKv2j5SjpB2v7QHKv1FIfjwMy8FsDbVfDX/KjmCmYICcw7uGaXLhtsLNg==} @@ -1474,18 +1465,18 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.57.2': - resolution: {integrity: sha512-FuH0wipFywXRTHf+bTTjNyuNQQsQC3qh/dYzaM4I4W0jrCqjCVuUh99+xd9KamUfmCGPvbO8NDngo/vsnNVqgw==} + '@typescript-eslint/project-service@8.58.1': + resolution: {integrity: sha512-gfQ8fk6cxhtptek+/8ZIqw8YrRW5048Gug8Ts5IYcMLCw18iUgrZAEY/D7s4hkI0FxEfGakKuPK/XUMPzPxi5g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.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.2': - resolution: {integrity: sha512-snZKH+W4WbWkrBqj4gUNRIGb/jipDW3qMqVJ4C9rzdFc+wLwruxk+2a5D+uoFcKPAqyqEnSb4l2ULuZf95eSkw==} + '@typescript-eslint/scope-manager@8.58.1': + resolution: {integrity: sha512-TPYUEqJK6avLcEjumWsIuTpuYODTTDAtoMdt8ZZa93uWMTX13Nb8L5leSje1NluammvU+oI3QRr5lLXPgihX3w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/tsconfig-utils@8.56.0': @@ -1494,11 +1485,11 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/tsconfig-utils@8.57.2': - resolution: {integrity: sha512-3Lm5DSM+DCowsUOJC+YqHHnKEfFh5CoGkj5Z31NQSNF4l5wdOwqGn99wmwN/LImhfY3KJnmordBq/4+VDe2eKw==} + '@typescript-eslint/tsconfig-utils@8.58.1': + resolution: {integrity: sha512-JAr2hOIct2Q+qk3G+8YFfqkqi7sC86uNryT+2i5HzMa2MPjw4qNFvtjnw1IiA1rP7QhNKVe21mSSLaSjwA1Olw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' '@typescript-eslint/type-utils@8.56.0': resolution: {integrity: sha512-qX2L3HWOU2nuDs6GzglBeuFXviDODreS58tLY/BALPC7iu3Fa+J7EOTwnX9PdNBxUI7Uh0ntP0YWGnxCkXzmfA==} @@ -1507,19 +1498,19 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.57.2': - resolution: {integrity: sha512-Co6ZCShm6kIbAM/s+oYVpKFfW7LBc6FXoPXjTRQ449PPNBY8U0KZXuevz5IFuuUj2H9ss40atTaf9dlGLzbWZg==} + '@typescript-eslint/type-utils@8.58.1': + resolution: {integrity: sha512-HUFxvTJVroT+0rXVJC7eD5zol6ID+Sn5npVPWoFuHGg9Ncq5Q4EYstqR+UOqaNRFXi5TYkpXXkLhoCHe3G0+7w==} 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: '>=4.8.4 <6.1.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.2': - resolution: {integrity: sha512-/iZM6FnM4tnx9csuTxspMW4BOSegshwX5oBDznJ7S4WggL7Vczz5d2W11ecc4vRrQMQHXRSxzrCsyG5EsPPTbA==} + '@typescript-eslint/types@8.58.1': + resolution: {integrity: sha512-io/dV5Aw5ezwzfPBBWLoT+5QfVtP8O7q4Kftjn5azJ88bYyp/ZMCsyW1lpKK46EXJcaYMZ1JtYj+s/7TdzmQMw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/typescript-estree@8.56.0': @@ -1528,11 +1519,11 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/typescript-estree@8.57.2': - resolution: {integrity: sha512-2MKM+I6g8tJxfSmFKOnHv2t8Sk3T6rF20A1Puk0svLK+uVapDZB/4pfAeB7nE83uAZrU6OxW+HmOd5wHVdXwXA==} + '@typescript-eslint/typescript-estree@8.58.1': + resolution: {integrity: sha512-w4w7WR7GHOjqqPnvAYbazq+Y5oS68b9CzasGtnd6jIeOIeKUzYzupGTB2T4LTPSv4d+WPeccbxuneTFHYgAAWg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' '@typescript-eslint/utils@8.56.0': resolution: {integrity: sha512-RZ3Qsmi2nFGsS+n+kjLAYDPVlrzf7UhTffrDIKr+h2yzAlYP/y5ZulU0yeDEPItos2Ph46JAL5P/On3pe7kDIQ==} @@ -1541,19 +1532,19 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.57.2': - resolution: {integrity: sha512-krRIbvPK1ju1WBKIefiX+bngPs+odIQUtR7kymzPfo1POVw3jlF+nLkmexdSSd4UCbDcQn+wMBATOOmpBbqgKg==} + '@typescript-eslint/utils@8.58.1': + resolution: {integrity: sha512-Ln8R0tmWC7pTtLOzgJzYTXSCjJ9rDNHAqTaVONF4FEi2qwce8mD9iSOxOpLFFvWp/wBFlew0mjM1L1ihYWfBdQ==} 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: '>=4.8.4 <6.1.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.2': - resolution: {integrity: sha512-zhahknjobV2FiD6Ee9iLbS7OV9zi10rG26odsQdfBO/hjSzUQbkIYgda+iNKK1zNiW2ey+Lf8MU5btN17V3dUw==} + '@typescript-eslint/visitor-keys@8.58.1': + resolution: {integrity: sha512-y+vH7QE8ycjoa0bWciFg7OpFcipUuem1ujhrdLtq1gByKwfbC7bPeKsiny9e0urg93DqwGcHey+bGRKCnF1nZQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@videojs/http-streaming@3.17.4': @@ -1583,11 +1574,11 @@ packages: vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 vue: ^3.2.25 - '@vitest/expect@4.1.2': - resolution: {integrity: sha512-gbu+7B0YgUJ2nkdsRJrFFW6X7NTP44WlhiclHniUhxADQJH5Szt9mZ9hWnJPJ8YwOK5zUOSSlSvyzRf0u1DSBQ==} + '@vitest/expect@4.1.4': + resolution: {integrity: sha512-iPBpra+VDuXmBFI3FMKHSFXp3Gx5HfmSCE8X67Dn+bwephCnQCaB7qWK2ldHa+8ncN8hJU8VTMcxjPpyMkUjww==} - '@vitest/mocker@4.1.2': - resolution: {integrity: sha512-Ize4iQtEALHDttPRCmN+FKqOl2vxTiNUhzobQFFt/BM1lRUTG7zRCLOykG/6Vo4E4hnUdfVLo5/eqKPukcWW7Q==} + '@vitest/mocker@4.1.4': + resolution: {integrity: sha512-R9HTZBhW6yCSGbGQnDnH3QHfJxokKN4KB+Yvk9Q1le7eQNYwiCyKxmLmurSpFy6BzJanSLuEUDrD+j97Q+ZLPg==} peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -1597,20 +1588,20 @@ packages: vite: optional: true - '@vitest/pretty-format@4.1.2': - resolution: {integrity: sha512-dwQga8aejqeuB+TvXCMzSQemvV9hNEtDDpgUKDzOmNQayl2OG241PSWeJwKRH3CiC+sESrmoFd49rfnq7T4RnA==} + '@vitest/pretty-format@4.1.4': + resolution: {integrity: sha512-ddmDHU0gjEUyEVLxtZa7xamrpIefdEETu3nZjWtHeZX4QxqJ7tRxSteHVXJOcr8jhiLoGAhkK4WJ3WqBpjx42A==} - '@vitest/runner@4.1.2': - resolution: {integrity: sha512-Gr+FQan34CdiYAwpGJmQG8PgkyFVmARK8/xSijia3eTFgVfpcpztWLuP6FttGNfPLJhaZVP/euvujeNYar36OQ==} + '@vitest/runner@4.1.4': + resolution: {integrity: sha512-xTp7VZ5aXP5ZJrn15UtJUWlx6qXLnGtF6jNxHepdPHpMfz/aVPx+htHtgcAL2mDXJgKhpoo2e9/hVJsIeFbytQ==} - '@vitest/snapshot@4.1.2': - resolution: {integrity: sha512-g7yfUmxYS4mNxk31qbOYsSt2F4m1E02LFqO53Xpzg3zKMhLAPZAjjfyl9e6z7HrW6LvUdTwAQR3HHfLjpko16A==} + '@vitest/snapshot@4.1.4': + resolution: {integrity: sha512-MCjCFgaS8aZz+m5nTcEcgk/xhWv0rEH4Yl53PPlMXOZ1/Ka2VcZU6CJ+MgYCZbcJvzGhQRjVrGQNZqkGPttIKw==} - '@vitest/spy@4.1.2': - resolution: {integrity: sha512-DU4fBnbVCJGNBwVA6xSToNXrkZNSiw59H8tcuUspVMsBDBST4nfvsPsEHDHGtWRRnqBERBQu7TrTKskmjqTXKA==} + '@vitest/spy@4.1.4': + resolution: {integrity: sha512-XxNdAsKW7C+FLydqFJLb5KhJtl3PGCMmYwFRfhvIgxJvLSXhhVI1zM8f1qD3Zg7RCjTSzDVyct6sghs9UEgBEQ==} - '@vitest/utils@4.1.2': - resolution: {integrity: sha512-xw2/TiX82lQHA06cgbqRKFb5lCAy3axQ4H4SoUFhUsg+wztiet+co86IAMDtF6Vm1hc7J6j09oh/rgDn+JdKIQ==} + '@vitest/utils@4.1.4': + resolution: {integrity: sha512-13QMT+eysM5uVGa1rG4kegGYNp6cnQcsTc67ELFbhNLQO+vgsygtYJx2khvdt4gVQqSSpC/KT5FZZxUpP3Oatw==} '@volar/language-core@2.4.28': resolution: {integrity: sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==} @@ -1630,17 +1621,17 @@ packages: vue: optional: true - '@vue/compiler-core@3.5.31': - resolution: {integrity: sha512-k/ueL14aNIEy5Onf0OVzR8kiqF/WThgLdFhxwa4e/KF/0qe38IwIdofoSWBTvvxQOesaz6riAFAUaYjoF9fLLQ==} + '@vue/compiler-core@3.5.32': + resolution: {integrity: sha512-4x74Tbtqnda8s/NSD6e1Dr5p1c8HdMU5RWSjMSUzb8RTcUQqevDCxVAitcLBKT+ie3o0Dl9crc/S/opJM7qBGQ==} - '@vue/compiler-dom@3.5.31': - resolution: {integrity: sha512-BMY/ozS/xxjYqRFL+tKdRpATJYDTTgWSo0+AJvJNg4ig+Hgb0dOsHPXvloHQ5hmlivUqw1Yt2pPIqp4e0v1GUw==} + '@vue/compiler-dom@3.5.32': + resolution: {integrity: sha512-ybHAu70NtiEI1fvAUz3oXZqkUYEe5J98GjMDpTGl5iHb0T15wQYLR4wE3h9xfuTNA+Cm2f4czfe8B4s+CCH57Q==} - '@vue/compiler-sfc@3.5.31': - resolution: {integrity: sha512-M8wpPgR9UJ8MiRGjppvx9uWJfLV7A/T+/rL8s/y3QG3u0c2/YZgff3d6SuimKRIhcYnWg5fTfDMlz2E6seUW8Q==} + '@vue/compiler-sfc@3.5.32': + resolution: {integrity: sha512-8UYUYo71cP/0YHMO814TRZlPuUUw3oifHuMR7Wp9SNoRSrxRQnhMLNlCeaODNn6kNTJsjFoQ/kqIj4qGvya4Xg==} - '@vue/compiler-ssr@3.5.31': - resolution: {integrity: sha512-h0xIMxrt/LHOvJKMri+vdYT92BrK3HFLtDqq9Pr/lVVfE4IyKZKvWf0vJFW10Yr6nX02OR4MkJwI0c1HDa1hog==} + '@vue/compiler-ssr@3.5.32': + resolution: {integrity: sha512-Gp4gTs22T3DgRotZ8aA/6m2jMR+GMztvBXUBEUOYOcST+giyGWJ4WvFd7QLHBkzTxkfOt8IELKNdpzITLbA2rw==} '@vue/devtools-api@6.6.4': resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==} @@ -1683,22 +1674,22 @@ packages: '@vue/language-core@3.2.6': resolution: {integrity: sha512-xYYYX3/aVup576tP/23sEUpgiEnujrENaoNRbaozC1/MA9I6EGFQRJb4xrt/MmUCAGlxTKL2RmT8JLTPqagCkg==} - '@vue/reactivity@3.5.31': - resolution: {integrity: sha512-DtKXxk9E/KuVvt8VxWu+6Luc9I9ETNcqR1T1oW1gf02nXaZ1kuAx58oVu7uX9XxJR0iJCro6fqBLw9oSBELo5g==} + '@vue/reactivity@3.5.32': + resolution: {integrity: sha512-/ORasxSGvZ6MN5gc+uE364SxFdJ0+WqVG0CENXaGW58TOCdrAW76WWaplDtECeS1qphvtBZtR+3/o1g1zL4xPQ==} - '@vue/runtime-core@3.5.31': - resolution: {integrity: sha512-AZPmIHXEAyhpkmN7aWlqjSfYynmkWlluDNPHMCZKFHH+lLtxP/30UJmoVhXmbDoP1Ng0jG0fyY2zCj1PnSSA6Q==} + '@vue/runtime-core@3.5.32': + resolution: {integrity: sha512-pDrXCejn4UpFDFmMd27AcJEbHaLemaE5o4pbb7sLk79SRIhc6/t34BQA7SGNgYtbMnvbF/HHOftYBgFJtUoJUQ==} - '@vue/runtime-dom@3.5.31': - resolution: {integrity: sha512-xQJsNRmGPeDCJq/u813tyonNgWBFjzfVkBwDREdEWndBnGdHLHgkwNBQxLtg4zDrzKTEcnikUy1UUNecb3lJ6g==} + '@vue/runtime-dom@3.5.32': + resolution: {integrity: sha512-1CDVv7tv/IV13V8Nip1k/aaObVbWqRlVCVezTwx3K07p7Vxossp5JU1dcPNhJk3w347gonIUT9jQOGutyJrSVQ==} - '@vue/server-renderer@3.5.31': - resolution: {integrity: sha512-GJuwRvMcdZX/CriUnyIIOGkx3rMV3H6sOu0JhdKbduaeCji6zb60iOGMY7tFoN24NfsUYoFBhshZtGxGpxO4iA==} + '@vue/server-renderer@3.5.32': + resolution: {integrity: sha512-IOjm2+JQwRFS7W28HNuJeXQle9KdZbODFY7hFGVtnnghF51ta20EWAZJHX+zLGtsHhaU6uC9BGPV52KVpYryMQ==} peerDependencies: - vue: 3.5.31 + vue: 3.5.32 - '@vue/shared@3.5.31': - resolution: {integrity: sha512-nBxuiuS9Lj5bPkPbWogPUnjxxWpkRniX7e5UBQDWl6Fsf4roq9wwV+cR7ezQ4zXswNvPIlsdj1slcLB7XCsRAw==} + '@vue/shared@3.5.32': + resolution: {integrity: sha512-ksNyrmRQzWJJ8n3cRDuSF7zNNontuJg1YHnmWRJd2AMu8Ij2bqwiiri2lH5rHtYPZjj4STkNcgcmiQqlOjiYGg==} '@vue/tsconfig@0.9.1': resolution: {integrity: sha512-buvjm+9NzLCJL29KY1j1991YYJ5e6275OiK+G4jtmfIb+z4POywbdm0wXusT9adVWqe0xqg70TbI7+mRx4uU9w==} @@ -1769,11 +1760,12 @@ packages: '@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.* + deprecated: this version has critical issues, please update to the latest version '@xmldom/xmldom@0.8.11': resolution: {integrity: sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==} engines: {node: '>=10.0.0'} + deprecated: this version has critical issues, please update to the latest version ace-builds@1.43.6: resolution: {integrity: sha512-L1ddibQ7F3vyXR2k2fg+I8TQTPWVA6CKeDQr/h2+8CeyTp3W6EQL8xNFZRTztuP8xNOAqL3IYPqdzs31GCjDvg==} @@ -1848,8 +1840,8 @@ packages: 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@2.0.3: + resolution: {integrity: sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==} brace-expansion@5.0.5: resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==} @@ -2060,8 +2052,8 @@ packages: resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint@10.1.0: - resolution: {integrity: sha512-S9jlY/ELKEUwwQnqWDO+f+m6sercqOPSqXM5Go94l7DOmxHVDgmSFGWEzeE/gwgTAr0W103BWt0QLe/7mabIvA==} + eslint@10.2.0: + resolution: {integrity: sha512-+L0vBFYGIpSNIt/KWTpFonPrqYvgKw1eUI5Vn7mEogrQcWtWYtNQ7dNqC+px/J0idT3BAkiWrhfS7k+Tum8TUA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: @@ -2154,8 +2146,8 @@ packages: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} - filesize@11.0.14: - resolution: {integrity: sha512-2+pBV36IghE/lC78KmHqq4GGzSwqxisNb6YH17W6owdAFoXChND4WZ/51CUYXKyaEiJOhNKKsZSwZ8HbejrKTA==} + filesize@11.0.15: + resolution: {integrity: sha512-30TpbYxQxCpi4XdVjkwXYQ37CzZltV38+P7MYroQ+4NK/Dmx9mxixFNrolzcmEIBsjT/uowC9T7kiy2+C12r1A==} engines: {node: '>= 10.8.0'} fill-range@7.1.1: @@ -2401,8 +2393,8 @@ packages: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} - lodash-es@4.17.23: - resolution: {integrity: sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==} + lodash-es@4.18.1: + resolution: {integrity: sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==} lodash._baseiteratee@4.7.0: resolution: {integrity: sha512-nqB9M+wITz0BX/Q2xg6fQ8mLkyfF7MU7eE+MNBNjTHFKeKaZAPEzEg+E8LWxKWf1DQVflNEn9N49yAuqKh2mWQ==} @@ -2447,14 +2439,14 @@ packages: 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==} + marked-katex-extension@5.1.8: + resolution: {integrity: sha512-TsV9OCHHDjVBf4IH0RSjLs4Eqsjj8HGfmVCKlimrS391EtBBxzXj2gBYdF9tY7f7oXu9tb1kHV86ExJsG3iMhw==} peerDependencies: katex: '>=0.16 <0.17' - marked: '>=4 <18' + marked: '>=4 <19' - marked@17.0.5: - resolution: {integrity: sha512-6hLvc0/JEbRjRgzI6wnT2P1XuM1/RrrDEX0kPt0N7jGm1133g6X7DlxFasUIx+72aKAr904GTxhSLDrd5DIlZg==} + marked@17.0.6: + resolution: {integrity: sha512-gB0gkNafnonOw0obSTEGZTT86IuhILt2Wfx0mWH/1Au83kybTayroZ/V6nS25mN7u8ASy+5fMhgB3XPNrOZdmA==} engines: {node: '>= 20'} hasBin: true @@ -2479,8 +2471,8 @@ packages: min-document@2.19.2: resolution: {integrity: sha512-8S5I8db/uZN8r9HSLFVWPdJCvYOejMcEC82VIzNUc6Zkklf/d1gg2psfE79/vyhWOj4+J8MtwmoOz3TmvaGu5A==} - minimatch@10.2.4: - resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} + minimatch@10.2.5: + resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} engines: {node: 18 || 20 || >=22} minimatch@9.0.9: @@ -2575,14 +2567,10 @@ packages: picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + picomatch@2.3.2: + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} engines: {node: '>=8.6'} - picomatch@4.0.3: - resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} - engines: {node: '>=12'} - picomatch@4.0.4: resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} engines: {node: '>=12'} @@ -2613,8 +2601,8 @@ packages: postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@8.5.8: - resolution: {integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==} + postcss@8.5.9: + resolution: {integrity: sha512-7a70Nsot+EMX9fFU3064K/kdHWZqGVY+BADLyXc8Dfv+mTLLVl6JzJpPaCZ2kQL9gIJvKXSLMHhqdRRjwQeFtw==} engines: {node: ^10 || ^12 || >=14} prelude-ls@1.2.1: @@ -2625,8 +2613,8 @@ packages: resolution: {integrity: sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==} engines: {node: '>=6.0.0'} - prettier@3.8.1: - resolution: {integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==} + prettier@3.8.2: + resolution: {integrity: sha512-8c3mgTe0ASwWAJK+78dpviD+A8EqhndQPUBpNUIPt6+xWlIigCwfN01lWr9MAede4uqXGTEKeQWTvzb3vjia0Q==} engines: {node: '>=14'} hasBin: true @@ -2648,8 +2636,8 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - qrcode.vue@3.8.0: - resolution: {integrity: sha512-+XKbSKvQu158zlHsJm+HObGUQM3Q+9Oq6yb2op/6lMM2gwOiiG9uIhujvrSV5UoTjrzR0BcNxCdW2kk7KE4NEg==} + qrcode.vue@3.8.1: + resolution: {integrity: sha512-kJORXcI5Uml5GtzcfFkchpljFgaXKQB/3ZUt+Hwnw7Y1F7FiA01U2yyO5Vscwv3bVxPkm/KLKXUOXsHbTsYrTw==} peerDependencies: vue: ^3.0.0 @@ -2709,8 +2697,8 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - rolldown@1.0.0-rc.12: - resolution: {integrity: sha512-yP4USLIMYrwpPHEFB5JGH1uxhcslv6/hL0OyvTuY+3qlOSJvZ7ntYnoWpehBxufkgN0cvXxppuTu5hHa/zPh+A==} + rolldown@1.0.0-rc.15: + resolution: {integrity: sha512-Ff31guA5zT6WjnGp0SXw76X6hzGRk/OQq2hE+1lcDe+lJdHSgnSX6nK3erbONHyCbpSj9a9E+uX/OvytZoWp2g==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -2807,14 +2795,18 @@ packages: tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - tinyexec@1.0.4: - resolution: {integrity: sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==} + tinyexec@1.1.1: + resolution: {integrity: sha512-VKS/ZaQhhkKFMANmAOhhXVoIfBXblQxGX1myCQ2faQrfmobMftXeJPcZGp0gS07ocvGJWDLZGyOZDadDBqYIJg==} engines: {node: '>=18'} tinyglobby@0.2.15: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} + tinyglobby@0.2.16: + resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} + engines: {node: '>=12.0.0'} + tinyrainbow@3.1.0: resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} engines: {node: '>=14.0.0'} @@ -2823,12 +2815,6 @@ packages: 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' - ts-api-utils@2.5.0: resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} engines: {node: '>=18.12'} @@ -2928,8 +2914,8 @@ packages: videojs-hotkeys@0.2.30: resolution: {integrity: sha512-G8kEQZPapoWDoEajh2Nroy4bCN1qVEul5AuzZqBS7ZCG45K7hqTYKgf1+fmYvG8m8u84sZmVMUvSWZBjaFW66Q==} - videojs-mobile-ui@1.2.3: - resolution: {integrity: sha512-p0yO5E+Skzo4PFFtmaIhlKr20iBEDSTvlIeBeXgk7+lZIeMx/O/Rycvw2jhJUD63PDAXrGOunseaFFTwAWrDFA==} + videojs-mobile-ui@1.2.4: + resolution: {integrity: sha512-HBfse9jNFG1qx9d5JSV3+1xqC4LOsBtGJo0U3AuKN2nMf0linlzPktpcSWEfQ64A0/BtNfzr92Cw8Q3KnYRQdA==} engines: {node: '>=14', npm: '>=6'} peerDependencies: video.js: ^8 @@ -2940,14 +2926,14 @@ packages: vite-plugin-compression2@2.5.3: resolution: {integrity: sha512-ItPgqQWkcnBbVw7is9OKwiZ8v6+ju9rYROl5Lp6QfQDEx/d55AwJQb/KLpsQqsU9HoigYBsZ8tK6I02UwJNvEw==} - vite@8.0.3: - resolution: {integrity: sha512-B9ifbFudT1TFhfltfaIPgjo9Z3mDynBTJSUYxTjOQruf/zHH+ezCQKcoqO+h7a9Pw9Nm/OtlXAiGT1axBgwqrQ==} + vite@8.0.8: + resolution: {integrity: sha512-dbU7/iLVa8KZALJyLOBOQ88nOXtNG8vxKuOT4I2mD+Ya70KPceF4IAmDsmU0h1Qsn5bPrvsY9HJstCRh3hG6Uw==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: '@types/node': ^20.19.0 || >=22.12.0 '@vitejs/devtools': ^0.1.0 - esbuild: ^0.27.0 + esbuild: ^0.27.0 || ^0.28.0 jiti: '>=1.21.0' less: ^4.0.0 sass: ^1.70.0 @@ -2983,18 +2969,20 @@ packages: yaml: optional: true - vitest@4.1.2: - resolution: {integrity: sha512-xjR1dMTVHlFLh98JE3i/f/WePqJsah4A0FK9cc8Ehp9Udk0AZk6ccpIZhh1qJ/yxVWRZ+Q54ocnD8TXmkhspGg==} + vitest@4.1.4: + resolution: {integrity: sha512-tFuJqTxKb8AvfyqMfnavXdzfy3h3sWZRWwfluGbkeR7n0HUev+FmNgZ8SDrRBTVrVCjgH5cA21qGbCffMNtWvg==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.1.2 - '@vitest/browser-preview': 4.1.2 - '@vitest/browser-webdriverio': 4.1.2 - '@vitest/ui': 4.1.2 + '@vitest/browser-playwright': 4.1.4 + '@vitest/browser-preview': 4.1.4 + '@vitest/browser-webdriverio': 4.1.4 + '@vitest/coverage-istanbul': 4.1.4 + '@vitest/coverage-v8': 4.1.4 + '@vitest/ui': 4.1.4 happy-dom: '*' jsdom: '*' vite: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -3011,6 +2999,10 @@ packages: optional: true '@vitest/browser-webdriverio': optional: true + '@vitest/coverage-istanbul': + optional: true + '@vitest/coverage-v8': + optional: true '@vitest/ui': optional: true happy-dom: @@ -3027,8 +3019,8 @@ packages: peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - vue-i18n@11.3.0: - resolution: {integrity: sha512-1J+xDfDJTLhDxElkd3+XUhT7FYSZd2b8pa7IRKGxhWH/8yt6PTvi3xmWhGwhYT5EaXdatui11pF2R6tL73/zPA==} + vue-i18n@11.3.2: + resolution: {integrity: sha512-gmFrvM+iuf2AH4ygligw/pC7PRJ63AdRNE68E0GPlQ83Mzfyck6g6cRQC3KzkYXr+ZidR91wq+5YBmAMpkgE1A==} engines: {node: '>= 16'} peerDependencies: vue: ^3.0.0 @@ -3065,8 +3057,8 @@ packages: peerDependencies: typescript: '>=5.0.0' - vue@3.5.31: - resolution: {integrity: sha512-iV/sU9SzOlmA/0tygSmjkEN6Jbs3nPoIPFhCMLD2STrjgOU8DX7ZtzMhg4ahVwf5Rp9KoFzcXeB1ZrVbLBp5/Q==} + vue@3.5.32: + resolution: {integrity: sha512-vM4z4Q9tTafVfMAK7IVzmxg34rSzTFMyIe0UUEijUCkn9+23lj0WRfA83dg7eQZIUlgOSGrkViIaCfqSAUXsMw==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -3271,10 +3263,6 @@ snapshots: '@babel/template': 7.28.6 '@babel/types': 7.29.0 - '@babel/parser@7.29.0': - dependencies: - '@babel/types': 7.29.0 - '@babel/parser@7.29.2': dependencies: '@babel/types': 7.29.0 @@ -3775,22 +3763,22 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 - '@chenfengyuan/vue-number-input@2.0.1(vue@3.5.31(typescript@5.9.3))': + '@chenfengyuan/vue-number-input@2.0.1(vue@3.5.32(typescript@5.9.3))': dependencies: - vue: 3.5.31(typescript@5.9.3) + vue: 3.5.32(typescript@5.9.3) - '@emnapi/core@1.9.0': + '@emnapi/core@1.9.2': dependencies: - '@emnapi/wasi-threads': 1.2.0 + '@emnapi/wasi-threads': 1.2.1 tslib: 2.8.1 optional: true - '@emnapi/runtime@1.9.0': + '@emnapi/runtime@1.9.2': dependencies: tslib: 2.8.1 optional: true - '@emnapi/wasi-threads@1.2.0': + '@emnapi/wasi-threads@1.2.1': dependencies: tslib: 2.8.1 optional: true @@ -3951,34 +3939,34 @@ snapshots: '@esbuild/win32-x64@0.27.3': optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@10.1.0)': + '@eslint-community/eslint-utils@4.9.1(eslint@10.2.0)': dependencies: - eslint: 10.1.0 + eslint: 10.2.0 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} - '@eslint/config-array@0.23.3': + '@eslint/config-array@0.23.5': dependencies: - '@eslint/object-schema': 3.0.3 + '@eslint/object-schema': 3.0.5 debug: 4.4.3 - minimatch: 10.2.4 + minimatch: 10.2.5 transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.5.3': + '@eslint/config-helpers@0.5.5': dependencies: - '@eslint/core': 1.1.1 + '@eslint/core': 1.2.1 - '@eslint/core@1.1.1': + '@eslint/core@1.2.1': dependencies: '@types/json-schema': 7.0.15 - '@eslint/object-schema@3.0.3': {} + '@eslint/object-schema@3.0.5': {} - '@eslint/plugin-kit@0.6.1': + '@eslint/plugin-kit@0.7.1': dependencies: - '@eslint/core': 1.1.1 + '@eslint/core': 1.2.1 levn: 0.4.1 '@humanfs/core@0.19.1': {} @@ -3992,9 +3980,9 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} - '@intlify/bundle-utils@11.0.7(vue-i18n@11.3.0(vue@3.5.31(typescript@5.9.3)))': + '@intlify/bundle-utils@11.0.7(vue-i18n@11.3.2(vue@3.5.32(typescript@5.9.3)))': dependencies: - '@intlify/message-compiler': 11.2.8 + '@intlify/message-compiler': 11.3.2 '@intlify/shared': 11.2.8 acorn: 8.16.0 esbuild: 0.25.12 @@ -4004,39 +3992,34 @@ snapshots: source-map-js: 1.2.1 yaml-eslint-parser: 1.3.2 optionalDependencies: - vue-i18n: 11.3.0(vue@3.5.31(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 + vue-i18n: 11.3.2(vue@3.5.32(typescript@5.9.3)) - '@intlify/devtools-types@11.3.0': + '@intlify/core-base@11.3.2': dependencies: - '@intlify/core-base': 11.3.0 - '@intlify/shared': 11.3.0 + '@intlify/devtools-types': 11.3.2 + '@intlify/message-compiler': 11.3.2 + '@intlify/shared': 11.3.2 - '@intlify/message-compiler@11.2.8': + '@intlify/devtools-types@11.3.2': dependencies: - '@intlify/shared': 11.2.8 - source-map-js: 1.2.1 + '@intlify/core-base': 11.3.2 + '@intlify/shared': 11.3.2 - '@intlify/message-compiler@11.3.0': + '@intlify/message-compiler@11.3.2': dependencies: - '@intlify/shared': 11.3.0 + '@intlify/shared': 11.3.2 source-map-js: 1.2.1 '@intlify/shared@11.2.8': {} - '@intlify/shared@11.3.0': {} + '@intlify/shared@11.3.2': {} - '@intlify/unplugin-vue-i18n@11.0.7(@vue/compiler-dom@3.5.31)(eslint@10.1.0)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.3.0(vue@3.5.31(typescript@5.9.3)))(vue@3.5.31(typescript@5.9.3))': + '@intlify/unplugin-vue-i18n@11.0.7(@vue/compiler-dom@3.5.32)(eslint@10.2.0)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.3.2(vue@3.5.32(typescript@5.9.3)))(vue@3.5.32(typescript@5.9.3))': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.1.0) - '@intlify/bundle-utils': 11.0.7(vue-i18n@11.3.0(vue@3.5.31(typescript@5.9.3))) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.0) + '@intlify/bundle-utils': 11.0.7(vue-i18n@11.3.2(vue@3.5.32(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.31)(vue-i18n@11.3.0(vue@3.5.31(typescript@5.9.3)))(vue@3.5.31(typescript@5.9.3)) + '@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.2.8)(@vue/compiler-dom@3.5.32)(vue-i18n@11.3.2(vue@3.5.32(typescript@5.9.3)))(vue@3.5.32(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) @@ -4045,9 +4028,9 @@ snapshots: pathe: 2.0.3 picocolors: 1.1.1 unplugin: 2.3.11 - vue: 3.5.31(typescript@5.9.3) + vue: 3.5.32(typescript@5.9.3) optionalDependencies: - vue-i18n: 11.3.0(vue@3.5.31(typescript@5.9.3)) + vue-i18n: 11.3.2(vue@3.5.32(typescript@5.9.3)) transitivePeerDependencies: - '@vue/compiler-dom' - eslint @@ -4055,14 +4038,14 @@ snapshots: - supports-color - typescript - '@intlify/vue-i18n-extensions@8.0.0(@intlify/shared@11.2.8)(@vue/compiler-dom@3.5.31)(vue-i18n@11.3.0(vue@3.5.31(typescript@5.9.3)))(vue@3.5.31(typescript@5.9.3))': + '@intlify/vue-i18n-extensions@8.0.0(@intlify/shared@11.2.8)(@vue/compiler-dom@3.5.32)(vue-i18n@11.3.2(vue@3.5.32(typescript@5.9.3)))(vue@3.5.32(typescript@5.9.3))': dependencies: - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.2 optionalDependencies: '@intlify/shared': 11.2.8 - '@vue/compiler-dom': 3.5.31 - vue: 3.5.31(typescript@5.9.3) - vue-i18n: 11.3.0(vue@3.5.31(typescript@5.9.3)) + '@vue/compiler-dom': 3.5.32 + vue: 3.5.32(typescript@5.9.3) + vue-i18n: 11.3.2(vue@3.5.32(typescript@5.9.3)) '@jridgewell/gen-mapping@0.3.13': dependencies: @@ -4088,10 +4071,10 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 - '@napi-rs/wasm-runtime@1.1.2(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)': + '@napi-rs/wasm-runtime@1.1.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': dependencies: - '@emnapi/core': 1.9.0 - '@emnapi/runtime': 1.9.0 + '@emnapi/core': 1.9.2 + '@emnapi/runtime': 1.9.2 '@tybys/wasm-util': 0.10.1 optional: true @@ -4107,61 +4090,60 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.20.1 - '@oxc-project/types@0.122.0': {} + '@oxc-project/types@0.124.0': {} '@pkgr/core@0.2.9': {} - '@rolldown/binding-android-arm64@1.0.0-rc.12': + '@rolldown/binding-android-arm64@1.0.0-rc.15': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-rc.12': + '@rolldown/binding-darwin-arm64@1.0.0-rc.15': optional: true - '@rolldown/binding-darwin-x64@1.0.0-rc.12': + '@rolldown/binding-darwin-x64@1.0.0-rc.15': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-rc.12': + '@rolldown/binding-freebsd-x64@1.0.0-rc.15': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.12': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.15': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.12': + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.15': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.12': + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.15': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.12': + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.15': optional: true - '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.12': + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.15': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.12': + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.15': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-rc.12': + '@rolldown/binding-linux-x64-musl@1.0.0-rc.15': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-rc.12': + '@rolldown/binding-openharmony-arm64@1.0.0-rc.15': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-rc.12(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)': + '@rolldown/binding-wasm32-wasi@1.0.0-rc.15': dependencies: - '@napi-rs/wasm-runtime': 1.1.2(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0) - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' + '@emnapi/core': 1.9.2 + '@emnapi/runtime': 1.9.2 + '@napi-rs/wasm-runtime': 1.1.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.12': + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.15': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.12': + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.15': optional: true - '@rolldown/pluginutils@1.0.0-rc.12': {} + '@rolldown/pluginutils@1.0.0-rc.15': {} '@rolldown/pluginutils@1.0.0-rc.2': {} @@ -4169,7 +4151,7 @@ snapshots: dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 - picomatch: 4.0.3 + picomatch: 4.0.4 optionalDependencies: rollup: 4.57.1 @@ -4280,7 +4262,7 @@ snapshots: '@types/lodash@4.17.23': {} - '@types/node@24.12.0': + '@types/node@24.12.2': dependencies: undici-types: 7.16.0 @@ -4289,31 +4271,31 @@ snapshots: '@types/web-bluetooth@0.0.21': {} - '@typescript-eslint/eslint-plugin@8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.1.0)(typescript@5.9.3))(eslint@10.1.0)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.2.0)(typescript@5.9.3))(eslint@10.2.0)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.56.0(eslint@10.1.0)(typescript@5.9.3) + '@typescript-eslint/parser': 8.56.0(eslint@10.2.0)(typescript@5.9.3) '@typescript-eslint/scope-manager': 8.56.0 - '@typescript-eslint/type-utils': 8.56.0(eslint@10.1.0)(typescript@5.9.3) - '@typescript-eslint/utils': 8.56.0(eslint@10.1.0)(typescript@5.9.3) + '@typescript-eslint/type-utils': 8.56.0(eslint@10.2.0)(typescript@5.9.3) + '@typescript-eslint/utils': 8.56.0(eslint@10.2.0)(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.56.0 - eslint: 10.1.0 + eslint: 10.2.0 ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.4.0(typescript@5.9.3) + ts-api-utils: 2.5.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.57.2(@typescript-eslint/parser@8.56.0(eslint@10.1.0)(typescript@5.9.3))(eslint@10.1.0)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.58.1(@typescript-eslint/parser@8.56.0(eslint@10.2.0)(typescript@5.9.3))(eslint@10.2.0)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.56.0(eslint@10.1.0)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.57.2 - '@typescript-eslint/type-utils': 8.57.2(eslint@10.1.0)(typescript@5.9.3) - '@typescript-eslint/utils': 8.57.2(eslint@10.1.0)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.57.2 - eslint: 10.1.0 + '@typescript-eslint/parser': 8.56.0(eslint@10.2.0)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.58.1 + '@typescript-eslint/type-utils': 8.58.1(eslint@10.2.0)(typescript@5.9.3) + '@typescript-eslint/utils': 8.58.1(eslint@10.2.0)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.58.1 + eslint: 10.2.0 ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.5.0(typescript@5.9.3) @@ -4321,14 +4303,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.56.0(eslint@10.1.0)(typescript@5.9.3)': + '@typescript-eslint/parser@8.56.0(eslint@10.2.0)(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.1.0 + eslint: 10.2.0 typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -4342,10 +4324,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.57.2(typescript@5.9.3)': + '@typescript-eslint/project-service@8.58.1(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.57.2(typescript@5.9.3) - '@typescript-eslint/types': 8.57.2 + '@typescript-eslint/tsconfig-utils': 8.58.1(typescript@5.9.3) + '@typescript-eslint/types': 8.58.1 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: @@ -4356,38 +4338,38 @@ snapshots: '@typescript-eslint/types': 8.56.0 '@typescript-eslint/visitor-keys': 8.56.0 - '@typescript-eslint/scope-manager@8.57.2': + '@typescript-eslint/scope-manager@8.58.1': dependencies: - '@typescript-eslint/types': 8.57.2 - '@typescript-eslint/visitor-keys': 8.57.2 + '@typescript-eslint/types': 8.58.1 + '@typescript-eslint/visitor-keys': 8.58.1 '@typescript-eslint/tsconfig-utils@8.56.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/tsconfig-utils@8.57.2(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.58.1(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.56.0(eslint@10.1.0)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.56.0(eslint@10.2.0)(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.1.0)(typescript@5.9.3) + '@typescript-eslint/utils': 8.56.0(eslint@10.2.0)(typescript@5.9.3) debug: 4.4.3 - eslint: 10.1.0 - ts-api-utils: 2.4.0(typescript@5.9.3) + eslint: 10.2.0 + ts-api-utils: 2.5.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.57.2(eslint@10.1.0)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.58.1(eslint@10.2.0)(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.57.2 - '@typescript-eslint/typescript-estree': 8.57.2(typescript@5.9.3) - '@typescript-eslint/utils': 8.57.2(eslint@10.1.0)(typescript@5.9.3) + '@typescript-eslint/types': 8.58.1 + '@typescript-eslint/typescript-estree': 8.58.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.58.1(eslint@10.2.0)(typescript@5.9.3) debug: 4.4.3 - eslint: 10.1.0 + eslint: 10.2.0 ts-api-utils: 2.5.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: @@ -4395,7 +4377,7 @@ snapshots: '@typescript-eslint/types@8.56.0': {} - '@typescript-eslint/types@8.57.2': {} + '@typescript-eslint/types@8.58.1': {} '@typescript-eslint/typescript-estree@8.56.0(typescript@5.9.3)': dependencies: @@ -4406,45 +4388,45 @@ snapshots: 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) + tinyglobby: 0.2.16 + ts-api-utils: 2.5.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.57.2(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.58.1(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.57.2(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.57.2(typescript@5.9.3) - '@typescript-eslint/types': 8.57.2 - '@typescript-eslint/visitor-keys': 8.57.2 + '@typescript-eslint/project-service': 8.58.1(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.58.1(typescript@5.9.3) + '@typescript-eslint/types': 8.58.1 + '@typescript-eslint/visitor-keys': 8.58.1 debug: 4.4.3 - minimatch: 10.2.4 + minimatch: 10.2.5 semver: 7.7.4 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 ts-api-utils: 2.5.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.56.0(eslint@10.1.0)(typescript@5.9.3)': + '@typescript-eslint/utils@8.56.0(eslint@10.2.0)(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.1.0) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.0) '@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.1.0 + eslint: 10.2.0 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.57.2(eslint@10.1.0)(typescript@5.9.3)': + '@typescript-eslint/utils@8.58.1(eslint@10.2.0)(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.1.0) - '@typescript-eslint/scope-manager': 8.57.2 - '@typescript-eslint/types': 8.57.2 - '@typescript-eslint/typescript-estree': 8.57.2(typescript@5.9.3) - eslint: 10.1.0 + '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.0) + '@typescript-eslint/scope-manager': 8.58.1 + '@typescript-eslint/types': 8.58.1 + '@typescript-eslint/typescript-estree': 8.58.1(typescript@5.9.3) + eslint: 10.2.0 typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -4454,9 +4436,9 @@ snapshots: '@typescript-eslint/types': 8.56.0 eslint-visitor-keys: 5.0.1 - '@typescript-eslint/visitor-keys@8.57.2': + '@typescript-eslint/visitor-keys@8.58.1': dependencies: - '@typescript-eslint/types': 8.57.2 + '@typescript-eslint/types': 8.58.1 eslint-visitor-keys: 5.0.1 '@videojs/http-streaming@3.17.4(video.js@8.23.7)': @@ -4481,7 +4463,7 @@ snapshots: global: 4.4.0 is-function: 1.0.2 - '@vitejs/plugin-legacy@8.0.1(terser@5.46.1)(vite@8.0.3(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.1)(yaml@2.8.3))': + '@vitejs/plugin-legacy@8.0.1(terser@5.46.1)(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.3)(terser@5.46.1)(yaml@2.8.3))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.29.0) @@ -4496,54 +4478,54 @@ snapshots: regenerator-runtime: 0.14.1 systemjs: 6.15.1 terser: 5.46.1 - vite: 8.0.3(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.1)(yaml@2.8.3) + vite: 8.0.8(@types/node@24.12.2)(esbuild@0.27.3)(terser@5.46.1)(yaml@2.8.3) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@6.0.5(vite@8.0.3(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.1)(yaml@2.8.3))(vue@3.5.31(typescript@5.9.3))': + '@vitejs/plugin-vue@6.0.5(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.3)(terser@5.46.1)(yaml@2.8.3))(vue@3.5.32(typescript@5.9.3))': dependencies: '@rolldown/pluginutils': 1.0.0-rc.2 - vite: 8.0.3(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.1)(yaml@2.8.3) - vue: 3.5.31(typescript@5.9.3) + vite: 8.0.8(@types/node@24.12.2)(esbuild@0.27.3)(terser@5.46.1)(yaml@2.8.3) + vue: 3.5.32(typescript@5.9.3) - '@vitest/expect@4.1.2': + '@vitest/expect@4.1.4': dependencies: '@standard-schema/spec': 1.1.0 '@types/chai': 5.2.3 - '@vitest/spy': 4.1.2 - '@vitest/utils': 4.1.2 + '@vitest/spy': 4.1.4 + '@vitest/utils': 4.1.4 chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.2(vite@8.0.3(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.1)(yaml@2.8.3))': + '@vitest/mocker@4.1.4(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.3)(terser@5.46.1)(yaml@2.8.3))': dependencies: - '@vitest/spy': 4.1.2 + '@vitest/spy': 4.1.4 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 8.0.3(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.1)(yaml@2.8.3) + vite: 8.0.8(@types/node@24.12.2)(esbuild@0.27.3)(terser@5.46.1)(yaml@2.8.3) - '@vitest/pretty-format@4.1.2': + '@vitest/pretty-format@4.1.4': dependencies: tinyrainbow: 3.1.0 - '@vitest/runner@4.1.2': + '@vitest/runner@4.1.4': dependencies: - '@vitest/utils': 4.1.2 + '@vitest/utils': 4.1.4 pathe: 2.0.3 - '@vitest/snapshot@4.1.2': + '@vitest/snapshot@4.1.4': dependencies: - '@vitest/pretty-format': 4.1.2 - '@vitest/utils': 4.1.2 + '@vitest/pretty-format': 4.1.4 + '@vitest/utils': 4.1.4 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@4.1.2': {} + '@vitest/spy@4.1.4': {} - '@vitest/utils@4.1.2': + '@vitest/utils@4.1.4': dependencies: - '@vitest/pretty-format': 4.1.2 + '@vitest/pretty-format': 4.1.4 convert-source-map: 2.0.0 tinyrainbow: 3.1.0 @@ -4559,45 +4541,45 @@ snapshots: path-browserify: 1.0.1 vscode-uri: 3.1.0 - '@vue-macros/common@3.1.2(vue@3.5.31(typescript@5.9.3))': + '@vue-macros/common@3.1.2(vue@3.5.32(typescript@5.9.3))': dependencies: - '@vue/compiler-sfc': 3.5.31 + '@vue/compiler-sfc': 3.5.32 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.31(typescript@5.9.3) + vue: 3.5.32(typescript@5.9.3) - '@vue/compiler-core@3.5.31': + '@vue/compiler-core@3.5.32': dependencies: '@babel/parser': 7.29.2 - '@vue/shared': 3.5.31 + '@vue/shared': 3.5.32 entities: 7.0.1 estree-walker: 2.0.2 source-map-js: 1.2.1 - '@vue/compiler-dom@3.5.31': + '@vue/compiler-dom@3.5.32': dependencies: - '@vue/compiler-core': 3.5.31 - '@vue/shared': 3.5.31 + '@vue/compiler-core': 3.5.32 + '@vue/shared': 3.5.32 - '@vue/compiler-sfc@3.5.31': + '@vue/compiler-sfc@3.5.32': dependencies: '@babel/parser': 7.29.2 - '@vue/compiler-core': 3.5.31 - '@vue/compiler-dom': 3.5.31 - '@vue/compiler-ssr': 3.5.31 - '@vue/shared': 3.5.31 + '@vue/compiler-core': 3.5.32 + '@vue/compiler-dom': 3.5.32 + '@vue/compiler-ssr': 3.5.32 + '@vue/shared': 3.5.32 estree-walker: 2.0.2 magic-string: 0.30.21 - postcss: 8.5.8 + postcss: 8.5.9 source-map-js: 1.2.1 - '@vue/compiler-ssr@3.5.31': + '@vue/compiler-ssr@3.5.32': dependencies: - '@vue/compiler-dom': 3.5.31 - '@vue/shared': 3.5.31 + '@vue/compiler-dom': 3.5.32 + '@vue/shared': 3.5.32 '@vue/devtools-api@6.6.4': {} @@ -4632,23 +4614,23 @@ snapshots: '@vue/devtools-shared@8.1.1': {} - '@vue/eslint-config-prettier@10.2.0(eslint@10.1.0)(prettier@3.8.1)': + '@vue/eslint-config-prettier@10.2.0(eslint@10.2.0)(prettier@3.8.2)': dependencies: - eslint: 10.1.0 - eslint-config-prettier: 10.1.8(eslint@10.1.0) - eslint-plugin-prettier: 5.5.5(eslint-config-prettier@10.1.8(eslint@10.1.0))(eslint@10.1.0)(prettier@3.8.1) - prettier: 3.8.1 + eslint: 10.2.0 + eslint-config-prettier: 10.1.8(eslint@10.2.0) + eslint-plugin-prettier: 5.5.5(eslint-config-prettier@10.1.8(eslint@10.2.0))(eslint@10.2.0)(prettier@3.8.2) + prettier: 3.8.2 transitivePeerDependencies: - '@types/eslint' - '@vue/eslint-config-typescript@14.7.0(eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.1.0)(typescript@5.9.3))(eslint@10.1.0)(vue-eslint-parser@10.4.0(eslint@10.1.0)))(eslint@10.1.0)(typescript@5.9.3)': + '@vue/eslint-config-typescript@14.7.0(eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.2.0)(typescript@5.9.3))(eslint@10.2.0)(vue-eslint-parser@10.4.0(eslint@10.2.0)))(eslint@10.2.0)(typescript@5.9.3)': dependencies: - '@typescript-eslint/utils': 8.56.0(eslint@10.1.0)(typescript@5.9.3) - eslint: 10.1.0 - eslint-plugin-vue: 10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.1.0)(typescript@5.9.3))(eslint@10.1.0)(vue-eslint-parser@10.4.0(eslint@10.1.0)) + '@typescript-eslint/utils': 8.56.0(eslint@10.2.0)(typescript@5.9.3) + eslint: 10.2.0 + eslint-plugin-vue: 10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.2.0)(typescript@5.9.3))(eslint@10.2.0)(vue-eslint-parser@10.4.0(eslint@10.2.0)) fast-glob: 3.3.3 - typescript-eslint: 8.56.0(eslint@10.1.0)(typescript@5.9.3) - vue-eslint-parser: 10.4.0(eslint@10.1.0) + typescript-eslint: 8.56.0(eslint@10.2.0)(typescript@5.9.3) + vue-eslint-parser: 10.4.0(eslint@10.2.0) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: @@ -4657,63 +4639,63 @@ snapshots: '@vue/language-core@3.2.6': dependencies: '@volar/language-core': 2.4.28 - '@vue/compiler-dom': 3.5.31 - '@vue/shared': 3.5.31 + '@vue/compiler-dom': 3.5.32 + '@vue/shared': 3.5.32 alien-signals: 3.1.2 muggle-string: 0.4.1 path-browserify: 1.0.1 picomatch: 4.0.4 - '@vue/reactivity@3.5.31': + '@vue/reactivity@3.5.32': dependencies: - '@vue/shared': 3.5.31 + '@vue/shared': 3.5.32 - '@vue/runtime-core@3.5.31': + '@vue/runtime-core@3.5.32': dependencies: - '@vue/reactivity': 3.5.31 - '@vue/shared': 3.5.31 + '@vue/reactivity': 3.5.32 + '@vue/shared': 3.5.32 - '@vue/runtime-dom@3.5.31': + '@vue/runtime-dom@3.5.32': dependencies: - '@vue/reactivity': 3.5.31 - '@vue/runtime-core': 3.5.31 - '@vue/shared': 3.5.31 + '@vue/reactivity': 3.5.32 + '@vue/runtime-core': 3.5.32 + '@vue/shared': 3.5.32 csstype: 3.2.3 - '@vue/server-renderer@3.5.31(vue@3.5.31(typescript@5.9.3))': + '@vue/server-renderer@3.5.32(vue@3.5.32(typescript@5.9.3))': dependencies: - '@vue/compiler-ssr': 3.5.31 - '@vue/shared': 3.5.31 - vue: 3.5.31(typescript@5.9.3) + '@vue/compiler-ssr': 3.5.32 + '@vue/shared': 3.5.32 + vue: 3.5.32(typescript@5.9.3) - '@vue/shared@3.5.31': {} + '@vue/shared@3.5.32': {} - '@vue/tsconfig@0.9.1(typescript@5.9.3)(vue@3.5.31(typescript@5.9.3))': + '@vue/tsconfig@0.9.1(typescript@5.9.3)(vue@3.5.32(typescript@5.9.3))': optionalDependencies: typescript: 5.9.3 - vue: 3.5.31(typescript@5.9.3) + vue: 3.5.32(typescript@5.9.3) - '@vueuse/core@14.2.1(vue@3.5.31(typescript@5.9.3))': + '@vueuse/core@14.2.1(vue@3.5.32(typescript@5.9.3))': dependencies: '@types/web-bluetooth': 0.0.21 '@vueuse/metadata': 14.2.1 - '@vueuse/shared': 14.2.1(vue@3.5.31(typescript@5.9.3)) - vue: 3.5.31(typescript@5.9.3) + '@vueuse/shared': 14.2.1(vue@3.5.32(typescript@5.9.3)) + vue: 3.5.32(typescript@5.9.3) - '@vueuse/integrations@14.2.1(focus-trap@8.0.0)(jwt-decode@4.0.0)(vue@3.5.31(typescript@5.9.3))': + '@vueuse/integrations@14.2.1(focus-trap@8.0.0)(jwt-decode@4.0.0)(vue@3.5.32(typescript@5.9.3))': dependencies: - '@vueuse/core': 14.2.1(vue@3.5.31(typescript@5.9.3)) - '@vueuse/shared': 14.2.1(vue@3.5.31(typescript@5.9.3)) - vue: 3.5.31(typescript@5.9.3) + '@vueuse/core': 14.2.1(vue@3.5.32(typescript@5.9.3)) + '@vueuse/shared': 14.2.1(vue@3.5.32(typescript@5.9.3)) + vue: 3.5.32(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.31(typescript@5.9.3))': + '@vueuse/shared@14.2.1(vue@3.5.32(typescript@5.9.3))': dependencies: - vue: 3.5.31(typescript@5.9.3) + vue: 3.5.32(typescript@5.9.3) '@xmldom/xmldom@0.7.13': {} @@ -4755,13 +4737,13 @@ snapshots: '@babel/parser': 7.29.2 ast-kit: 2.2.0 - autoprefixer@10.4.27(postcss@8.5.8): + autoprefixer@10.4.27(postcss@8.5.9): dependencies: browserslist: 4.28.1 caniuse-lite: 1.0.30001774 fraction.js: 5.3.4 picocolors: 1.1.1 - postcss: 8.5.8 + postcss: 8.5.9 postcss-value-parser: 4.2.0 babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.29.0): @@ -4798,7 +4780,7 @@ snapshots: boolbase@1.0.0: {} - brace-expansion@2.0.2: + brace-expansion@2.0.3: dependencies: balanced-match: 1.0.2 @@ -5004,31 +4986,31 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-prettier@10.1.8(eslint@10.1.0): + eslint-config-prettier@10.1.8(eslint@10.2.0): dependencies: - eslint: 10.1.0 + eslint: 10.2.0 - eslint-plugin-prettier@5.5.5(eslint-config-prettier@10.1.8(eslint@10.1.0))(eslint@10.1.0)(prettier@3.8.1): + eslint-plugin-prettier@5.5.5(eslint-config-prettier@10.1.8(eslint@10.2.0))(eslint@10.2.0)(prettier@3.8.2): dependencies: - eslint: 10.1.0 - prettier: 3.8.1 + eslint: 10.2.0 + prettier: 3.8.2 prettier-linter-helpers: 1.0.1 synckit: 0.11.12 optionalDependencies: - eslint-config-prettier: 10.1.8(eslint@10.1.0) + eslint-config-prettier: 10.1.8(eslint@10.2.0) - eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.1.0)(typescript@5.9.3))(eslint@10.1.0)(vue-eslint-parser@10.4.0(eslint@10.1.0)): + eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.2.0)(typescript@5.9.3))(eslint@10.2.0)(vue-eslint-parser@10.4.0(eslint@10.2.0)): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.1.0) - eslint: 10.1.0 + '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.0) + eslint: 10.2.0 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.1.0) + vue-eslint-parser: 10.4.0(eslint@10.2.0) xml-name-validator: 4.0.0 optionalDependencies: - '@typescript-eslint/parser': 8.56.0(eslint@10.1.0)(typescript@5.9.3) + '@typescript-eslint/parser': 8.56.0(eslint@10.2.0)(typescript@5.9.3) eslint-scope@9.1.2: dependencies: @@ -5041,14 +5023,14 @@ snapshots: eslint-visitor-keys@5.0.1: {} - eslint@10.1.0: + eslint@10.2.0: dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.1.0) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.0) '@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 + '@eslint/config-array': 0.23.5 + '@eslint/config-helpers': 0.5.5 + '@eslint/core': 1.2.1 + '@eslint/plugin-kit': 0.7.1 '@humanfs/node': 0.16.7 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 @@ -5070,7 +5052,7 @@ snapshots: imurmurhash: 0.1.4 is-glob: 4.0.3 json-stable-stringify-without-jsonify: 1.0.1 - minimatch: 10.2.4 + minimatch: 10.2.5 natural-compare: 1.4.0 optionator: 0.9.4 transitivePeerDependencies: @@ -5148,15 +5130,15 @@ snapshots: dependencies: reusify: 1.1.0 - fdir@6.5.0(picomatch@4.0.3): + fdir@6.5.0(picomatch@4.0.4): optionalDependencies: - picomatch: 4.0.3 + picomatch: 4.0.4 file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 - filesize@11.0.14: {} + filesize@11.0.15: {} fill-range@7.1.1: dependencies: @@ -5355,7 +5337,7 @@ snapshots: dependencies: p-locate: 5.0.0 - lodash-es@4.17.23: {} + lodash-es@4.18.1: {} lodash._baseiteratee@4.7.0: dependencies: @@ -5405,12 +5387,12 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 - marked-katex-extension@5.1.7(katex@0.16.28)(marked@17.0.5): + marked-katex-extension@5.1.8(katex@0.16.28)(marked@17.0.6): dependencies: katex: 0.16.28 - marked: 17.0.5 + marked: 17.0.6 - marked@17.0.5: {} + marked@17.0.6: {} marks-pane@1.0.9: {} @@ -5423,19 +5405,19 @@ snapshots: micromatch@4.0.8: dependencies: braces: 3.0.3 - picomatch: 2.3.1 + picomatch: 2.3.2 min-document@2.19.2: dependencies: dom-walk: 0.1.2 - minimatch@10.2.4: + minimatch@10.2.5: dependencies: brace-expansion: 5.0.5 minimatch@9.0.9: dependencies: - brace-expansion: 2.0.2 + brace-expansion: 2.0.3 mitt@3.0.1: {} @@ -5515,16 +5497,14 @@ snapshots: picocolors@1.1.1: {} - picomatch@2.3.1: {} - - picomatch@4.0.3: {} + picomatch@2.3.2: {} picomatch@4.0.4: {} - pinia@3.0.4(typescript@5.9.3)(vue@3.5.31(typescript@5.9.3)): + pinia@3.0.4(typescript@5.9.3)(vue@3.5.32(typescript@5.9.3)): dependencies: '@vue/devtools-api': 7.7.9 - vue: 3.5.31(typescript@5.9.3) + vue: 3.5.32(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 @@ -5551,7 +5531,7 @@ snapshots: postcss-value-parser@4.2.0: {} - postcss@8.5.8: + postcss@8.5.9: dependencies: nanoid: 3.3.11 picocolors: 1.1.1 @@ -5563,7 +5543,7 @@ snapshots: dependencies: fast-diff: 1.3.0 - prettier@3.8.1: {} + prettier@3.8.2: {} pretty-bytes@7.1.0: {} @@ -5579,9 +5559,9 @@ snapshots: punycode@2.3.1: {} - qrcode.vue@3.8.0(vue@3.5.31(typescript@5.9.3)): + qrcode.vue@3.8.1(vue@3.5.32(typescript@5.9.3)): dependencies: - vue: 3.5.31(typescript@5.9.3) + vue: 3.5.32(typescript@5.9.3) quansync@0.2.11: {} @@ -5638,29 +5618,26 @@ snapshots: rfdc@1.4.1: {} - rolldown@1.0.0-rc.12(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0): + rolldown@1.0.0-rc.15: dependencies: - '@oxc-project/types': 0.122.0 - '@rolldown/pluginutils': 1.0.0-rc.12 + '@oxc-project/types': 0.124.0 + '@rolldown/pluginutils': 1.0.0-rc.15 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-rc.12 - '@rolldown/binding-darwin-arm64': 1.0.0-rc.12 - '@rolldown/binding-darwin-x64': 1.0.0-rc.12 - '@rolldown/binding-freebsd-x64': 1.0.0-rc.12 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.12 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.12 - '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.12 - '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.12 - '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.12 - '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.12 - '@rolldown/binding-linux-x64-musl': 1.0.0-rc.12 - '@rolldown/binding-openharmony-arm64': 1.0.0-rc.12 - '@rolldown/binding-wasm32-wasi': 1.0.0-rc.12(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0) - '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.12 - '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.12 - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' + '@rolldown/binding-android-arm64': 1.0.0-rc.15 + '@rolldown/binding-darwin-arm64': 1.0.0-rc.15 + '@rolldown/binding-darwin-x64': 1.0.0-rc.15 + '@rolldown/binding-freebsd-x64': 1.0.0-rc.15 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.15 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.15 + '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.15 + '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.15 + '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.15 + '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.15 + '@rolldown/binding-linux-x64-musl': 1.0.0-rc.15 + '@rolldown/binding-openharmony-arm64': 1.0.0-rc.15 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.15 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.15 + '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.15 rollup@4.57.1: dependencies: @@ -5763,12 +5740,17 @@ snapshots: tinybench@2.9.0: {} - tinyexec@1.0.4: {} + tinyexec@1.1.1: {} tinyglobby@0.2.15: dependencies: - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + + tinyglobby@0.2.16: + dependencies: + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 tinyrainbow@3.1.0: {} @@ -5776,10 +5758,6 @@ snapshots: dependencies: is-number: 7.0.0 - ts-api-utils@2.4.0(typescript@5.9.3): - dependencies: - typescript: 5.9.3 - ts-api-utils@2.5.0(typescript@5.9.3): dependencies: typescript: 5.9.3 @@ -5803,13 +5781,13 @@ snapshots: type@2.7.3: {} - typescript-eslint@8.56.0(eslint@10.1.0)(typescript@5.9.3): + typescript-eslint@8.56.0(eslint@10.2.0)(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.1.0)(typescript@5.9.3))(eslint@10.1.0)(typescript@5.9.3) - '@typescript-eslint/parser': 8.56.0(eslint@10.1.0)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.2.0)(typescript@5.9.3))(eslint@10.2.0)(typescript@5.9.3) + '@typescript-eslint/parser': 8.56.0(eslint@10.2.0)(typescript@5.9.3) '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.56.0(eslint@10.1.0)(typescript@5.9.3) - eslint: 10.1.0 + '@typescript-eslint/utils': 8.56.0(eslint@10.2.0)(typescript@5.9.3) + eslint: 10.2.0 typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -5840,7 +5818,7 @@ snapshots: dependencies: '@jridgewell/remapping': 2.3.5 acorn: 8.16.0 - picomatch: 4.0.3 + picomatch: 4.0.4 webpack-virtual-modules: 0.6.2 unplugin@3.0.0: @@ -5894,7 +5872,7 @@ snapshots: videojs-hotkeys@0.2.30: {} - videojs-mobile-ui@1.2.3(video.js@8.23.7): + videojs-mobile-ui@1.2.4(video.js@8.23.7): dependencies: global: 4.4.0 video.js: 8.23.7 @@ -5910,32 +5888,29 @@ snapshots: transitivePeerDependencies: - rollup - vite@8.0.3(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.1)(yaml@2.8.3): + vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.3)(terser@5.46.1)(yaml@2.8.3): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 - postcss: 8.5.8 - rolldown: 1.0.0-rc.12(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0) - tinyglobby: 0.2.15 + postcss: 8.5.9 + rolldown: 1.0.0-rc.15 + tinyglobby: 0.2.16 optionalDependencies: - '@types/node': 24.12.0 + '@types/node': 24.12.2 esbuild: 0.27.3 fsevents: 2.3.3 terser: 5.46.1 yaml: 2.8.3 - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' - - vitest@4.1.2(@types/node@24.12.0)(vite@8.0.3(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.1)(yaml@2.8.3)): - dependencies: - '@vitest/expect': 4.1.2 - '@vitest/mocker': 4.1.2(vite@8.0.3(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.1)(yaml@2.8.3)) - '@vitest/pretty-format': 4.1.2 - '@vitest/runner': 4.1.2 - '@vitest/snapshot': 4.1.2 - '@vitest/spy': 4.1.2 - '@vitest/utils': 4.1.2 + + vitest@4.1.4(@types/node@24.12.2)(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.3)(terser@5.46.1)(yaml@2.8.3)): + dependencies: + '@vitest/expect': 4.1.4 + '@vitest/mocker': 4.1.4(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.3)(terser@5.46.1)(yaml@2.8.3)) + '@vitest/pretty-format': 4.1.4 + '@vitest/runner': 4.1.4 + '@vitest/snapshot': 4.1.4 + '@vitest/spy': 4.1.4 + '@vitest/utils': 4.1.4 es-module-lexer: 2.0.0 expect-type: 1.3.0 magic-string: 0.30.21 @@ -5944,22 +5919,22 @@ snapshots: picomatch: 4.0.4 std-env: 4.0.0 tinybench: 2.9.0 - tinyexec: 1.0.4 - tinyglobby: 0.2.15 + tinyexec: 1.1.1 + tinyglobby: 0.2.16 tinyrainbow: 3.1.0 - vite: 8.0.3(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.1)(yaml@2.8.3) + vite: 8.0.8(@types/node@24.12.2)(esbuild@0.27.3)(terser@5.46.1)(yaml@2.8.3) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 24.12.0 + '@types/node': 24.12.2 transitivePeerDependencies: - msw vscode-uri@3.1.0: {} - vue-eslint-parser@10.4.0(eslint@10.1.0): + vue-eslint-parser@10.4.0(eslint@10.2.0): dependencies: debug: 4.4.3 - eslint: 10.1.0 + eslint: 10.2.0 eslint-scope: 9.1.2 eslint-visitor-keys: 5.0.1 espree: 11.2.0 @@ -5968,13 +5943,13 @@ snapshots: transitivePeerDependencies: - supports-color - vue-i18n@11.3.0(vue@3.5.31(typescript@5.9.3)): + vue-i18n@11.3.2(vue@3.5.32(typescript@5.9.3)): dependencies: - '@intlify/core-base': 11.3.0 - '@intlify/devtools-types': 11.3.0 - '@intlify/shared': 11.3.0 + '@intlify/core-base': 11.3.2 + '@intlify/devtools-types': 11.3.2 + '@intlify/shared': 11.3.2 '@vue/devtools-api': 6.6.4 - vue: 3.5.31(typescript@5.9.3) + vue: 3.5.32(typescript@5.9.3) vue-lazyload@3.0.0: {} @@ -5982,10 +5957,10 @@ snapshots: dependencies: epubjs: 0.3.93 - vue-router@5.0.4(@vue/compiler-sfc@3.5.31)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.31(typescript@5.9.3)))(vue@3.5.31(typescript@5.9.3)): + vue-router@5.0.4(@vue/compiler-sfc@3.5.32)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.32(typescript@5.9.3)))(vue@3.5.32(typescript@5.9.3)): dependencies: '@babel/generator': 7.29.1 - '@vue-macros/common': 3.1.2(vue@3.5.31(typescript@5.9.3)) + '@vue-macros/common': 3.1.2(vue@3.5.32(typescript@5.9.3)) '@vue/devtools-api': 8.1.1 ast-walker-scope: 0.8.3 chokidar: 5.0.0 @@ -6000,15 +5975,15 @@ snapshots: tinyglobby: 0.2.15 unplugin: 3.0.0 unplugin-utils: 0.3.1 - vue: 3.5.31(typescript@5.9.3) + vue: 3.5.32(typescript@5.9.3) yaml: 2.8.3 optionalDependencies: - '@vue/compiler-sfc': 3.5.31 - pinia: 3.0.4(typescript@5.9.3)(vue@3.5.31(typescript@5.9.3)) + '@vue/compiler-sfc': 3.5.32 + pinia: 3.0.4(typescript@5.9.3)(vue@3.5.32(typescript@5.9.3)) - vue-toastification@2.0.0-rc.5(vue@3.5.31(typescript@5.9.3)): + vue-toastification@2.0.0-rc.5(vue@3.5.32(typescript@5.9.3)): dependencies: - vue: 3.5.31(typescript@5.9.3) + vue: 3.5.32(typescript@5.9.3) vue-tsc@3.2.6(typescript@5.9.3): dependencies: @@ -6016,13 +5991,13 @@ snapshots: '@vue/language-core': 3.2.6 typescript: 5.9.3 - vue@3.5.31(typescript@5.9.3): + vue@3.5.32(typescript@5.9.3): dependencies: - '@vue/compiler-dom': 3.5.31 - '@vue/compiler-sfc': 3.5.31 - '@vue/runtime-dom': 3.5.31 - '@vue/server-renderer': 3.5.31(vue@3.5.31(typescript@5.9.3)) - '@vue/shared': 3.5.31 + '@vue/compiler-dom': 3.5.32 + '@vue/compiler-sfc': 3.5.32 + '@vue/runtime-dom': 3.5.32 + '@vue/server-renderer': 3.5.32(vue@3.5.32(typescript@5.9.3)) + '@vue/shared': 3.5.32 optionalDependencies: typescript: 5.9.3 diff --git a/go.mod b/go.mod index 32b050ba5b..8028e2f218 100644 --- a/go.mod +++ b/go.mod @@ -18,7 +18,7 @@ require ( github.com/mitchellh/go-homedir v1.1.0 github.com/redis/go-redis/v9 v9.18.0 github.com/samber/lo v1.53.0 - github.com/shirou/gopsutil/v4 v4.26.2 + github.com/shirou/gopsutil/v4 v4.26.3 github.com/spf13/afero v1.15.0 github.com/spf13/cobra v1.10.2 github.com/spf13/pflag v1.0.10 @@ -26,9 +26,9 @@ require ( github.com/stretchr/testify v1.11.1 github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce go.etcd.io/bbolt v1.4.3 - golang.org/x/crypto v0.49.0 - golang.org/x/image v0.38.0 - golang.org/x/text v0.35.0 + golang.org/x/crypto v0.50.0 + golang.org/x/image v0.39.0 + golang.org/x/text v0.36.0 gopkg.in/natefinch/lumberjack.v2 v2.2.1 gopkg.in/yaml.v3 v3.0.1 ) @@ -77,9 +77,9 @@ require ( go.uber.org/atomic v1.11.0 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect go4.org v0.0.0-20230225012048-214862532bf5 // indirect - golang.org/x/net v0.51.0 // indirect + golang.org/x/net v0.52.0 // indirect golang.org/x/sync v0.20.0 // indirect - golang.org/x/sys v0.42.0 // indirect + golang.org/x/sys v0.43.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v2 v2.4.0 // indirect ) diff --git a/go.sum b/go.sum index 4aa318e3f9..95c50491b7 100644 --- a/go.sum +++ b/go.sum @@ -217,8 +217,8 @@ github.com/sagikazarmark/locafero v0.11.0 h1:1iurJgmM9G3PA/I+wWYIOw/5SyBtxapeHDc github.com/sagikazarmark/locafero v0.11.0/go.mod h1:nVIGvgyzw595SUSUE6tvCp3YYTeHs15MvlmU87WwIik= github.com/samber/lo v1.53.0 h1:t975lj2py4kJPQ6haz1QMgtId2gtmfktACxIXArw3HM= github.com/samber/lo v1.53.0/go.mod h1:4+MXEGsJzbKGaUEQFKBq2xtfuznW9oz/WrgyzMzRoM0= -github.com/shirou/gopsutil/v4 v4.26.2 h1:X8i6sicvUFih4BmYIGT1m2wwgw2VG9YgrDTi7cIRGUI= -github.com/shirou/gopsutil/v4 v4.26.2/go.mod h1:LZ6ewCSkBqUpvSOf+LsTGnRinC6iaNUNMGBtDkJBaLQ= +github.com/shirou/gopsutil/v4 v4.26.3 h1:2ESdQt90yU3oXF/CdOlRCJxrP+Am1aBYubTMTfxJ1qc= +github.com/shirou/gopsutil/v4 v4.26.3/go.mod h1:LZ6ewCSkBqUpvSOf+LsTGnRinC6iaNUNMGBtDkJBaLQ= github.com/sorairolake/lzip-go v0.3.8 h1:j5Q2313INdTA80ureWYRhX+1K78mUXfMoPZCw/ivWik= github.com/sorairolake/lzip-go v0.3.8/go.mod h1:JcBqGMV0frlxwrsE9sMWXDjqn3EeVf0/54YPsw66qkU= github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 h1:+jumHNA0Wrelhe64i8F6HNlS8pkoyMv5sreGx2Ry5Rw= @@ -283,8 +283,8 @@ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4= -golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA= +golang.org/x/crypto v0.50.0 h1:zO47/JPrL6vsNkINmLoo/PH1gcxpls50DNogFvB5ZGI= +golang.org/x/crypto v0.50.0/go.mod h1:3muZ7vA7PBCE6xgPX7nkzzjiUq87kRItoJQM1Yo8S+Q= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -296,8 +296,8 @@ golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EH golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.38.0 h1:5l+q+Y9JDC7mBOMjo4/aPhMDcxEptsX+Tt3GgRQRPuE= -golang.org/x/image v0.38.0/go.mod h1:/3f6vaXC+6CEanU4KJxbcUZyEePbyKbaLoDOe4ehFYY= +golang.org/x/image v0.39.0 h1:skVYidAEVKgn8lZ602XO75asgXBgLj9G/FE3RbuPFww= +golang.org/x/image v0.39.0/go.mod h1:sIbmppfU+xFLPIG0FoVUTvyBMmgng1/XAMhQ2ft0hpA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -336,8 +336,8 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20221002022538-bcab6841153b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= -golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= +golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= +golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -377,8 +377,8 @@ golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220928140112-f11e5e49a4ec/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= -golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= +golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= @@ -389,8 +389,8 @@ golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= -golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= +golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= +golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= From dd53644acbecd7b8b788396aa8dd133ae006382c Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 11 Apr 2026 07:58:44 +0200 Subject: [PATCH 125/126] chore(release): 2.63.2 --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 94782f041a..a246537ddd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines. +## [2.63.2](https://github.com/filebrowser/filebrowser/compare/v2.63.1...v2.63.2) (2026-04-11) + + +### Bug Fixes + +* **preview:** let arrow keys seek video instead of switching files ([#5895](https://github.com/filebrowser/filebrowser/issues/5895)) ([0fadf28](https://github.com/filebrowser/filebrowser/commit/0fadf28b18e506ddca0027e83ebe567ac57932bf)) + ## [2.63.1](https://github.com/filebrowser/filebrowser/compare/v2.63.0...v2.63.1) (2026-04-04) From 2a89f1be8652bb1709569673dffd3623575da127 Mon Sep 17 00:00:00 2001 From: Laurynas Gadliauskas Date: Fri, 17 Apr 2026 11:52:18 +0300 Subject: [PATCH 126/126] feat: update translations --- frontend/src/i18n/ar_AR.json | 46 +++++++++++------ frontend/src/i18n/en_GB.json | 18 +++++++ frontend/src/i18n/es_AR.json | 70 +++++++++++++------------- frontend/src/i18n/es_CO.json | 88 +++++++++++++++++++------------- frontend/src/i18n/es_ES.json | 88 +++++++++++++++++++------------- frontend/src/i18n/es_MX.json | 88 +++++++++++++++++++------------- frontend/src/i18n/fr_FR.json | 46 +++++++++++------ frontend/src/i18n/id_ID.json | 46 +++++++++++------ frontend/src/i18n/lt_LT.json | 46 +++++++++++------ frontend/src/i18n/pt_BR.json | 46 +++++++++++------ frontend/src/i18n/pt_PT.json | 72 +++++++++++++------------- frontend/src/i18n/ru_RU.json | 90 ++++++++++++++++----------------- frontend/src/i18n/tr_TR.json | 48 ++++++++++++------ frontend/src/i18n/uk_UA.json | 46 +++++++++++------ frontend/src/i18n/zh_CN.json | 98 ++++++++++++++++++------------------ 15 files changed, 567 insertions(+), 369 deletions(-) diff --git a/frontend/src/i18n/ar_AR.json b/frontend/src/i18n/ar_AR.json index ea4222d307..6b39d56303 100644 --- a/frontend/src/i18n/ar_AR.json +++ b/frontend/src/i18n/ar_AR.json @@ -2,26 +2,26 @@ "buttons": { "archive": "أرشيف", "cancel": "إلغاء", - "clear": "Clear", + "clear": "واضح", "close": "إغلاق", - "continue": "Continue", + "continue": "متابعة", "copy": "نسخ", - "copyDownloadLinkToClipboard": "Copy download link to clipboard", + "copyDownloadLinkToClipboard": "انسخ رابط التنزيل إلى الحافظة", "copyFile": "نسخ الملف", "copyToClipboard": "نسخ الى الحافظة", "create": "إنشاء", - "decreaseFontSize": "Decrease font size", + "decreaseFontSize": "قلل حجم الخط", "delete": "حذف", "directorySizes": "حساب أحجام الدليل", - "discardChanges": "Discard", + "discardChanges": "تجاهل", "download": "تحميل", "edit": "تعديل", - "editAsText": "Edit as Text", + "editAsText": "تحرير كنص", "file": "ملف", "folder": "مجلّد", - "fullScreen": "Toggle full screen", + "fullScreen": "تبديل وضع ملء الشاشة", "hideDotfiles": "إخفاء dotfiles", - "increaseFontSize": "Increase font size", + "increaseFontSize": "قم بزيادة حجم الخط", "info": "معلومات", "more": "المزيد", "move": "نقل", @@ -29,24 +29,29 @@ "new": "جديد", "next": "التالي", "ok": "موافق", + "openDirect": "عرض الخام", "openFile": "فتح الملف", + "overrideAll": "استبدل جميع الملفات في مجلد الوجهة", "permalink": "احصل على رابط دائم", "permissions": "أذونات", - "preview": "Preview", + "preview": "معاينة", "previous": "السابق", "publish": "نشر", "rename": "إعادة تسمية", + "renameAll": "أعد تسمية جميع الملفات (أنشئ نسخة)", "replace": "استبدال", "reportIssue": "إبلاغ عن مشكلة", "save": "حفظ", - "saveChanges": "Save changes", + "saveChanges": "احفظ التغييرات", "schedule": "جدولة", "search": "بحث", "select": "تحديد", "selectMultiple": "تحديد متعدد", "share": "مشاركة", "shell": "تبديل شيل", - "stopSearch": "Stop searching", + "singleDecision": "حدد لكل ملف متعارض", + "skipAll": "تجاوز جميع الملفات المتعارضة", + "stopSearch": "توقف عن البحث", "submit": "إرسال", "switchView": "تغيير العرض", "toggleSidebar": "تبديل الشريط الجانبي", @@ -82,6 +87,7 @@ "semicolon": "Semicolon (;)" }, "csvTooLarge": "CSV file is too large for preview (\u003e5MB). Please download to view.", + "fileEncoding": "File Encoding", "files": "الملفات", "folders": "المجلدات", "home": "الصفحة الأولى", @@ -134,23 +140,29 @@ "archiveMessage": "اختر اسم الأرشيف والتنسيق:", "copy": "نسخ", "copyMessage": "رجاءً حدد المكان لنسخ ملفاتك فيه:", + "currentPassword": "كلمة مرورك", + "currentPasswordMessage": "Enter your password to validate this action.", "currentlyNavigating": "يتم الانتقال حاليا إلى:", "deleteMessageMultiple": "هل تريد بالتأكيد حذف ملف (ات) {count}؟", "deleteMessageShare": "هل أنت متأكد أنك تريد حذف هذه المشاركة ({path})؟", "deleteMessageSingle": "هل تريد بالتأكيد حذف هذا الملف/المجلد؟", "deleteTitle": "حذف الملفات", - "deleteUser": "Are you sure you want to delete this user?", + "deleteUser": "هل أنت متأكد من رغبتك في حذف هذا المستخدم؟", "directories": "الدلائل", "directoriesAndFiles": "الدلائل والملفات", - "discardEditorChanges": "Are you sure you wish to discard the changes you've made?", + "discardEditorChanges": "هل أنت متأكد من رغبتك في التراجع عن التغييرات التي أجريتها؟", "displayName": "الاسم:", "download": "تحميل الملفات", "downloadMessage": "حدد إمتداد الملف المراد تحميله.", "error": "لقد حدث خطأ ما", "execute": "تنفيذ", + "fastConflictResolve": "يحتوي مجلد الوجهة على ملفات {count} بنفس الاسم.", "fileInfo": "معلومات الملف", "files": "الملفات", + "filesInDest": "الملفات في الوجهة", + "filesInOrigin": "الملفات في الأصل", "filesSelected": "تم تحديد {count} ملفات.", + "forbiddenError": "خطأ ممنوع", "group": "مجموعة", "inodeCount": "({count} مؤشرات فهرسة)", "lastModified": "آخر تعديل", @@ -165,6 +177,7 @@ "numberFiles": "عدد الملفات", "optionalPassword": "كلمة مرور اختيارية", "others": "آخرين", + "override": "استبدال", "owner": "المالك", "permissions": "أذونات", "read": "قراءة", @@ -173,11 +186,15 @@ "renameMessage": "ضع اسما جديدا لـ", "replace": "إستبدال", "replaceMessage": "أحد الملفات التي تحاول رفعها يتعارض مع ملف موجود بنفس الاسم. هل تريد استبدال الملف الموجود؟", - "resolution": "Resolution", + "replaceOrSkip": "استبدل الملفات أو تخطاها", + "resolution": "دقة", + "resolveConflict": "ما هي الملفات التي تريد الاحتفاظ بها؟", "schedule": "جدولة", "scheduleMessage": "أختر الوقت والتاريخ لجدولة نشر هذا المقال.", "show": "عرض", + "singleConflictResolve": "إذا قمت بتحديد كلا الإصدارين، فسيتم إضافة رقم إلى اسم الملف المنسوخ.", "size": "الحجم", + "skip": "تخطى", "skipTrashMessage": "تخطى سلة المهملات واحذف فورا", "unarchive": "فك الضغط", "unarchiveDestinationLocationMessage": "حدد الوجهة:", @@ -190,6 +207,7 @@ "uploadFiles": "تحميل ملفات {files}...", "uploadFolder": "مجلّد", "uploadMessage": "حدد خيارا للتحميل.", + "uploadingFiles": "جاري تحميل الملفات", "write": "كتابة" }, "search": { diff --git a/frontend/src/i18n/en_GB.json b/frontend/src/i18n/en_GB.json index 83c963df5a..7dbb508e01 100644 --- a/frontend/src/i18n/en_GB.json +++ b/frontend/src/i18n/en_GB.json @@ -29,13 +29,16 @@ "new": "New", "next": "Next", "ok": "OK", + "openDirect": "View raw", "openFile": "Open file", + "overrideAll": "Replace all files in destination folder", "permalink": "Get Permanent Link", "permissions": "Permissions", "preview": "Preview", "previous": "Previous", "publish": "Publish", "rename": "Rename", + "renameAll": "Rename all files (create a copy)", "replace": "Replace", "reportIssue": "Report Issue", "save": "Save", @@ -46,6 +49,8 @@ "selectMultiple": "Select multiple", "share": "Share", "shell": "Toggle shell", + "singleDecision": "Decide for each conflicting file", + "skipAll": "Skip all conflicting files", "stopSearch": "Stop searching", "submit": "Submit", "switchView": "Switch view", @@ -82,6 +87,7 @@ "semicolon": "Semicolon (;)" }, "csvTooLarge": "CSV file is too large for preview (\u003e5MB). Please download to view.", + "fileEncoding": "File Encoding", "files": "Files", "folders": "Folders", "home": "Home", @@ -134,6 +140,8 @@ "archiveMessage": "Choose archive name and format:", "copy": "Copy", "copyMessage": "Choose the place to copy your files:", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action.", "currentlyNavigating": "Currently navigating on:", "deleteMessageMultiple": "Are you sure you want to delete {count} file(s)?", "deleteMessageShare": "Are you sure you want to delete this share({path})?", @@ -148,9 +156,13 @@ "downloadMessage": "Choose the format you want to download.", "error": "Something went wrong", "execute": "Execute", + "fastConflictResolve": "The destination folder there are {count} files with same name.", "fileInfo": "File information", "files": "Files", + "filesInDest": "Files in destination", + "filesInOrigin": "Files in origin", "filesSelected": "{count} files selected.", + "forbiddenError": "Forbidden Error", "group": "Group", "inodeCount": "({count} inodes)", "lastModified": "Last Modified", @@ -165,6 +177,7 @@ "numberFiles": "Number of files", "optionalPassword": "Optional password", "others": "Others", + "override": "Overwrite", "owner": "Owner", "permissions": "Permissions", "read": "Read", @@ -173,11 +186,15 @@ "renameMessage": "Insert a new name for", "replace": "Replace", "replaceMessage": "One of the files you're trying to upload is conflicting because of its name. Do you wish to replace the existing one?\n", + "replaceOrSkip": "Replace or skip files", "resolution": "Resolution", + "resolveConflict": "Which files do you want to keep?", "schedule": "Schedule", "scheduleMessage": "Pick a date and time to schedule the publication of this post.", "show": "Show", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", "size": "Size", + "skip": "Skip", "skipTrashMessage": "Skip trash bin and delete immediately", "unarchive": "Extract", "unarchiveDestinationLocationMessage": "Select the destination:", @@ -190,6 +207,7 @@ "uploadFiles": "Uploading {files} files...", "uploadFolder": "Folder", "uploadMessage": "Select an option to upload.", + "uploadingFiles": "Uploading files", "write": "Write" }, "search": { diff --git a/frontend/src/i18n/es_AR.json b/frontend/src/i18n/es_AR.json index 576dc98d43..2f47911110 100644 --- a/frontend/src/i18n/es_AR.json +++ b/frontend/src/i18n/es_AR.json @@ -2,26 +2,26 @@ "buttons": { "archive": "Archivar", "cancel": "Cancelar", - "clear": "Clear", + "clear": "Limpiar", "close": "Cerrar", - "continue": "Continue", + "continue": "Continuar", "copy": "Copiar", - "copyDownloadLinkToClipboard": "Copy download link to clipboard", + "copyDownloadLinkToClipboard": "Copiar enlace de descarga al portapapeles", "copyFile": "Copiar archivo", "copyToClipboard": "Copiar al portapapeles", "create": "Crear", - "decreaseFontSize": "Decrease font size", + "decreaseFontSize": "Disminuir el tamaño de la fuente", "delete": "Borrar", "directorySizes": "Calcular los tamaños del directorio", - "discardChanges": "Discard", + "discardChanges": "Descartar", "download": "Descargar", "edit": "Editar", - "editAsText": "Edit as Text", + "editAsText": "Editar como texto", "file": "Archivo", "folder": "Carpeta", - "fullScreen": "Toggle full screen", + "fullScreen": "Alternar pantalla completa", "hideDotfiles": "Ocultar archivos empezados por punto", - "increaseFontSize": "Increase font size", + "increaseFontSize": "Aumentar el tamaño de la fuente", "info": "Info", "more": "Más", "move": "Mover", @@ -29,35 +29,35 @@ "new": "Nuevo", "next": "Siguiente", "ok": "OK", + "openDirect": "Ver sin procesar", "openFile": "Abrir archivo", + "overrideAll": "Reemplazar todos los archivos en la carpeta de destino", "permalink": "Link permanente", "permissions": "Permisos", - "preview": "Preview", + "preview": "Vista previa", "previous": "Anterior", "publish": "Publicar", "rename": "Renombrar", + "renameAll": "Cambiar el nombre de todos los archivos (crear una copia)", "replace": "Reemplazar", "reportIssue": "Reportar problema", "save": "Guardar", + "saveChanges": "Guardar cambios", "schedule": "Programar", "search": "Buscar", "select": "Seleccionar", "selectMultiple": "Selección múltiple", "share": "Compartir", "shell": "Presiona Enter para buscar...", - "stopSearch": "Stop searching", + "singleDecision": "Decida para cada archivo en conflicto", + "skipAll": "Omitir todos los archivos conflictivos", + "stopSearch": "Deja de buscar", "submit": "Enviar", "switchView": "Cambiar vista", "toggleSidebar": "Mostrar/Ocultar menú", "unarchive": "Desarchivar", "update": "Actualizar", - "upload": "Subir", - "openDirect": "View raw", - "saveChanges": "Guardar cambios", - "overrideAll": "Replace all files in destination folder", - "skipAll": "Skip all conflicting files", - "renameAll": "Rename all files (create a copy)", - "singleDecision": "Decide for each conflicting file" + "upload": "Subir" }, "download": { "downloadFile": "Descargar fichero", @@ -87,6 +87,7 @@ "semicolon": "Semicolon (;)" }, "csvTooLarge": "CSV file is too large for preview (\u003e5MB). Please download to view.", + "fileEncoding": "File Encoding", "files": "Archivos", "folders": "Carpetas", "home": "Inicio", @@ -101,8 +102,7 @@ "size": "Tamaño", "sortByLastModified": "Ordenar por última modificación", "sortByName": "Ordenar por nombre", - "sortBySize": "Ordenar por tamaño", - "fileEncoding": "File Encoding" + "sortBySize": "Ordenar por tamaño" }, "help": { "click": "seleccionar archivo o carpeta", @@ -140,23 +140,29 @@ "archiveMessage": "Elige el nombre del archivo formato:", "copy": "Copiar", "copyMessage": "Elige el lugar donde quieres copiar tus archivos:", + "currentPassword": "Tu contraseña", + "currentPasswordMessage": "Enter your password to validate this action.", "currentlyNavigating": "Actualmente estás en:", "deleteMessageMultiple": "¿Estás seguro que quieres eliminar {count} archivo(s)?", "deleteMessageShare": "¿Estás seguro de querer eliminar la ruta ({path}) compartida?", "deleteMessageSingle": "¿Estás seguro que quieres eliminar este archivo/carpeta?", "deleteTitle": "Borrar archivos", - "deleteUser": "Are you sure you want to delete this user?", + "deleteUser": "¿Estás seguro de que quieres eliminar a este usuario?", "directories": "Directorios", "directoriesAndFiles": "Directorios y archivos", - "discardEditorChanges": "Are you sure you wish to discard the changes you've made?", + "discardEditorChanges": "¿Estás seguro de que deseas descartar los cambios que has realizado?", "displayName": "Nombre:", "download": "Descargar archivos", "downloadMessage": "Elige el formato de descarga.", "error": "Algo ha fallado", "execute": "Ejecuta", + "fastConflictResolve": "En la carpeta de destino hay {count} archivos con el mismo nombre.", "fileInfo": "Información del archivo", "files": "Archivos", + "filesInDest": "Archivos en destino", + "filesInOrigin": "Archivos en origen", "filesSelected": "{count} archivos seleccionados.", + "forbiddenError": "Error prohibido", "group": "Grupo", "inodeCount": "({count} inodos)", "lastModified": "Última modificación", @@ -171,6 +177,7 @@ "numberFiles": "Número de archivos", "optionalPassword": "Contraseña opcional", "others": "Otros", + "override": "Sobrescribir", "owner": "Dueño", "permissions": "Permisos", "read": "Lee", @@ -179,11 +186,15 @@ "renameMessage": "Escribe el nuevo nombre para", "replace": "Reemplazar", "replaceMessage": "Uno de los archivos ue intentas subir está creando conflicto por su nombre. ¿Quieres cambiar el nombre del ya existente?\n", - "resolution": "Resolution", + "replaceOrSkip": "Reemplazar u omitir archivos", + "resolution": "Resolución", + "resolveConflict": "¿Qué archivos desea conservar?", "schedule": "Programar", "scheduleMessage": "Elige una hora y fecha para programar la publicación de este post.", "show": "Mostrar", + "singleConflictResolve": "Si selecciona ambas versiones, se añadirá un número al nombre del archivo copiado", "size": "Tamaño", + "skip": "Omitir", "skipTrashMessage": "Omitir papelera y eliminar inmediatamente", "unarchive": "Desarchiva", "unarchiveDestinationLocationMessage": "Selecciona el destino:", @@ -196,19 +207,8 @@ "uploadFiles": "Cargando {files} archivos...", "uploadFolder": "Carpeta", "uploadMessage": "Seleccione una opción para cargar.", - "write": "Escribe", - "replaceOrSkip": "Replace or skip files", - "resolveConflict": "Which files do you want to keep?", - "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", - "fastConflictResolve": "The destination folder there are {count} files with same name.", - "uploadingFiles": "Uploading files", - "filesInOrigin": "Files in origin", - "filesInDest": "Files in destination", - "override": "Overwrite", - "skip": "Skip", - "forbiddenError": "Forbidden Error", - "currentPassword": "Your password", - "currentPasswordMessage": "Enter your password to validate this action." + "uploadingFiles": "Cargando archivos", + "write": "Escribe" }, "search": { "images": "Images", diff --git a/frontend/src/i18n/es_CO.json b/frontend/src/i18n/es_CO.json index e244ac8136..48609e332b 100644 --- a/frontend/src/i18n/es_CO.json +++ b/frontend/src/i18n/es_CO.json @@ -2,26 +2,26 @@ "buttons": { "archive": "Archivar", "cancel": "Cancelar", - "clear": "Clear", + "clear": "Limpiar", "close": "Cerrar", - "continue": "Continue", + "continue": "Continuar", "copy": "Copiar", - "copyDownloadLinkToClipboard": "Copy download link to clipboard", + "copyDownloadLinkToClipboard": "Copiar enlace de descarga al portapapeles", "copyFile": "Copiar archivo", "copyToClipboard": "Copiar al portapapeles", "create": "Crear", - "decreaseFontSize": "Decrease font size", + "decreaseFontSize": "Disminuir el tamaño de la fuente", "delete": "Borrar", "directorySizes": "Calcular los tamaños del directorio", - "discardChanges": "Discard", + "discardChanges": "Descartar", "download": "Descargar", "edit": "Editar", - "editAsText": "Edit as Text", + "editAsText": "Editar como texto", "file": "Archivo", "folder": "Carpeta", - "fullScreen": "Toggle full screen", + "fullScreen": "Alternar pantalla completa", "hideDotfiles": "Ocultar archivos empezados por punto", - "increaseFontSize": "Increase font size", + "increaseFontSize": "Aumentar el tamaño de la fuente", "info": "Info", "more": "Más", "move": "Mover", @@ -29,24 +29,29 @@ "new": "Nuevo", "next": "Siguiente", "ok": "OK", + "openDirect": "Ver sin procesar", "openFile": "Abrir archivo", + "overrideAll": "Reemplazar todos los archivos en la carpeta de destino", "permalink": "Link permanente", "permissions": "Permisos", - "preview": "Preview", + "preview": "Vista previa", "previous": "Anterior", "publish": "Publicar", "rename": "Renombrar", + "renameAll": "Cambiar el nombre de todos los archivos (crear una copia)", "replace": "Reemplazar", "reportIssue": "Reportar problema", "save": "Guardar", - "saveChanges": "Save changes", + "saveChanges": "Guardar cambios", "schedule": "Programar", "search": "Buscar", "select": "Seleccionar", "selectMultiple": "Selección múltiple", "share": "Compartir", "shell": "Presiona Enter para buscar...", - "stopSearch": "Stop searching", + "singleDecision": "Decida para cada archivo en conflicto", + "skipAll": "Omitir todos los archivos conflictivos", + "stopSearch": "Deja de buscar", "submit": "Enviar", "switchView": "Cambiar vista", "toggleSidebar": "Mostrar/Ocultar menú", @@ -74,14 +79,15 @@ "files": { "body": "Cuerpo", "closePreview": "Cerrar vista previa", - "columnSeparator": "Column Separator", - "csvLoadFailed": "Failed to load CSV file.", + "columnSeparator": "Separador de columna", + "csvLoadFailed": "No se pudo cargar el archivo CSV.", "csvSeparators": { - "both": "Both (,) and (;)", - "comma": "Comma (,)", - "semicolon": "Semicolon (;)" + "both": "Tanto (,) como (;)", + "comma": "Coma (,)", + "semicolon": "Punto y coma (;)" }, - "csvTooLarge": "CSV file is too large for preview (\u003e5MB). Please download to view.", + "csvTooLarge": "El archivo CSV es demasiado grande para previsualizarlo (\u003e5 MB). Descárguelo para verlo.", + "fileEncoding": "Codificación de archivos", "files": "Archivos", "folders": "Carpetas", "home": "Inicio", @@ -92,7 +98,7 @@ "multipleSelectionEnabled": "Selección múltiple activada", "name": "Nombre", "noPreview": "La vista previa no está disponible para este archivo.", - "showingRows": "Showing {count} row(s)", + "showingRows": "Mostrando {count} fila(s)", "size": "Tamaño", "sortByLastModified": "Ordenar por última modificación", "sortByName": "Ordenar por nombre", @@ -116,11 +122,11 @@ "createAnAccount": "Crear una cuenta", "loginInstead": "Usuario ya existente", "logout_reasons": { - "inactivity": "You have been logged out due to inactivity." + "inactivity": "Se ha cerrado tu sesión por inactividad." }, "password": "Contraseña", "passwordConfirm": "Confirmación de contraseña", - "passwordTooShort": "Password must be at least {min} characters", + "passwordTooShort": "La contraseña debe tener al menos {min} caracteres.", "passwordsDontMatch": "Las contraseñas no coinciden", "signup": "Registrate", "submit": "Iniciar sesión", @@ -134,23 +140,29 @@ "archiveMessage": "Elige el nombre del archivo formato:", "copy": "Copiar", "copyMessage": "Elige el lugar donde quieres copiar tus archivos:", + "currentPassword": "Tu contraseña", + "currentPasswordMessage": "Introduce tu contraseña para validar esta acción.", "currentlyNavigating": "Actualmente estás en:", "deleteMessageMultiple": "¿Estás seguro que quieres eliminar {count} archivo(s)?", "deleteMessageShare": "¿Estás seguro de querer eliminar la ruta ({path}) compartida?", "deleteMessageSingle": "¿Estás seguro que quieres eliminar este archivo/carpeta?", "deleteTitle": "Borrar archivos", - "deleteUser": "Are you sure you want to delete this user?", + "deleteUser": "¿Estás seguro de que quieres eliminar a este usuario?", "directories": "Directorios", "directoriesAndFiles": "Directorios y archivos", - "discardEditorChanges": "Are you sure you wish to discard the changes you've made?", + "discardEditorChanges": "¿Estás seguro de que deseas descartar los cambios que has realizado?", "displayName": "Nombre:", "download": "Descargar archivos", "downloadMessage": "Elige el formato de descarga.", "error": "Algo ha fallado", "execute": "Ejecuta", + "fastConflictResolve": "La carpeta de destino contiene {count} archivos con el mismo nombre.", "fileInfo": "Información del archivo", "files": "Archivos", + "filesInDest": "Archivos en el destino", + "filesInOrigin": "Archivos en origen", "filesSelected": "{count} archivos seleccionados.", + "forbiddenError": "Error prohibido", "group": "Grupo", "inodeCount": "({count} inodos)", "lastModified": "Última modificación", @@ -165,6 +177,7 @@ "numberFiles": "Número de archivos", "optionalPassword": "Contraseña opcional", "others": "Otros", + "override": "Exagerar", "owner": "Dueño", "permissions": "Permisos", "read": "Lee", @@ -173,11 +186,15 @@ "renameMessage": "Escribe el nuevo nombre para", "replace": "Reemplazar", "replaceMessage": "Uno de los archivos ue intentas subir está creando conflicto por su nombre. ¿Quieres cambiar el nombre del ya existente?\n", - "resolution": "Resolution", + "replaceOrSkip": "Reemplazar u omitir archivos", + "resolution": "Resolución", + "resolveConflict": "¿Qué archivos desea conservar?", "schedule": "Programar", "scheduleMessage": "Elige una hora y fecha para programar la publicación de este post.", "show": "Mostrar", + "singleConflictResolve": "Si selecciona ambas versiones, se añadirá un número al nombre del archivo copiado.", "size": "Tamaño", + "skip": "Saltar", "skipTrashMessage": "Omitir papelera y eliminar inmediatamente", "unarchive": "Desarchiva", "unarchiveDestinationLocationMessage": "Selecciona el destino:", @@ -190,6 +207,7 @@ "uploadFiles": "Cargando {files} archivos...", "uploadFolder": "Carpeta", "uploadMessage": "Seleccione una opción para cargar.", + "uploadingFiles": "Cargando archivos", "write": "Escribe" }, "search": { @@ -203,7 +221,7 @@ "video": "Vídeo" }, "settings": { - "aceEditorTheme": "Ace editor theme", + "aceEditorTheme": "Tema del editor Ace", "admin": "Admin", "administrator": "Administrador", "allowCommands": "Ejecutar comandos", @@ -221,11 +239,11 @@ "commandsUpdated": "¡Comandos actualizados!", "createUserDir": "Crea automaticamente una carpeta de inicio cuando se agrega un usuario", "createUserHomeDirectory": "Crear directorio de inicio de usuario", - "currentPassword": "Your Current Password", + "currentPassword": "Su contraseña actual", "customStylesheet": "Modificar hoja de estilos", "defaultUserDescription": "Estas son las configuraciones por defecto para nuevos usuarios.", "disableExternalLinks": "Deshabilitar enlaces externos (excepto documentación)", - "disableUsedDiskPercentage": "Disable used disk percentage graph", + "disableUsedDiskPercentage": "Deshabilitar el gráfico de porcentaje de disco usado", "documentation": "documentación", "examples": "Ejemplos", "executeOnShell": "Ejecutar en la shell", @@ -233,13 +251,13 @@ "globalRules": "This is a global set of allow and disallow rules. They apply to every user. You can define specific rules on each user's settings to override this ones.", "globalSettings": "Ajustes globales", "hideDotfiles": "", - "hideLoginButton": "Hide the login button from public pages", + "hideLoginButton": "Ocultar el botón de inicio de sesión en las páginas públicas.", "insertPath": "Introduce la ruta", "insertRegex": "Introducir expresión regular", "instanceName": "Nombre de la instancia", "language": "Idioma", "lockPassword": "Evitar que el usuario cambie la contraseña", - "minimumPasswordLength": "Minimum password length", + "minimumPasswordLength": "Longitud mínima de la contraseña", "newPassword": "Tu nueva contraseña", "newPasswordConfirm": "Confirma tu contraseña", "newUser": "Nuevo usuario", @@ -258,7 +276,7 @@ "permissions": "Permisos", "permissionsHelp": "Puedes nombrar al usuario como administrador o elegir los permisos individualmente. Si seleccionas \"Administrador\", todas las otras opciones serán activadas automáticamente. La administración de usuarios es un privilegio de administrador.\n", "profileSettings": "Ajustes del perfil", - "redirectAfterCopyMove": "Redirect to destination after copy/move", + "redirectAfterCopyMove": "Redirigir al destino después de copiar/mover", "ruleExample1": "previene el acceso a una extensión de archivo (Como .git) en cada carpeta.\n", "ruleExample2": "bloquea el acceso al archivo llamado Caddyfile en la carpeta raíz.", "rules": "Reglas", @@ -272,14 +290,14 @@ "singleClick": "", "themes": { "dark": "", - "default": "System default", + "default": "Configuración predeterminada del sistema", "light": "", "title": "" }, - "tusUploads": "Chunked Uploads", - "tusUploadsChunkSize": "Indicates to maximum size of a request (direct uploads will be used for smaller uploads). You may input a plain integer denoting byte size input or a string like 10MB, 1GB etc.", - "tusUploadsHelp": "File Browser supports chunked file uploads, allowing for the creation of efficient, reliable, resumable and chunked file uploads even on unreliable networks.", - "tusUploadsRetryCount": "Number of retries to perform if a chunk fails to upload.", + "tusUploads": "Cargas fragmentadas", + "tusUploadsChunkSize": "Indica el tamaño máximo de una solicitud (para cargas más pequeñas se utilizarán cargas directas). Puede introducir un número entero que indique el tamaño en bytes o una cadena de texto como 10 MB, 1 GB, etc.", + "tusUploadsHelp": "El Explorador de archivos admite la carga de archivos por fragmentos, lo que permite crear cargas de archivos eficientes, fiables, reanudables y divididas en fragmentos incluso en redes poco fiables.", + "tusUploadsRetryCount": "Número de reintentos que se realizarán si falla la carga de un fragmento.", "user": "Usuario", "userCommands": "Comandos", "userCommandsHelp": "Una lista separada por espacios con los comandos permitidos para este usuario. Ejemplo:\n", @@ -323,6 +341,6 @@ "unit": "Unidad" }, "upload": { - "abortUpload": "Are you sure you wish to abort?" + "abortUpload": "¿Está segura de que desea abortar?" } } diff --git a/frontend/src/i18n/es_ES.json b/frontend/src/i18n/es_ES.json index f2b55df505..7616a0539a 100644 --- a/frontend/src/i18n/es_ES.json +++ b/frontend/src/i18n/es_ES.json @@ -2,26 +2,26 @@ "buttons": { "archive": "Archivar", "cancel": "Cancelar", - "clear": "Clear", + "clear": "Limpiar", "close": "Cerrar", - "continue": "Continue", + "continue": "Continuar", "copy": "Copiar", - "copyDownloadLinkToClipboard": "Copy download link to clipboard", + "copyDownloadLinkToClipboard": "Copiar enlace de descarga al portapapeles", "copyFile": "Copiar archivo", "copyToClipboard": "Copiar al portapapeles", "create": "Crear", - "decreaseFontSize": "Decrease font size", + "decreaseFontSize": "Disminuir el tamaño de la fuente", "delete": "Borrar", "directorySizes": "Calcular los tamaños del directorio", - "discardChanges": "Discard", + "discardChanges": "Descartar", "download": "Descargar", "edit": "Editar", - "editAsText": "Edit as Text", + "editAsText": "Editar como texto", "file": "Archivo", "folder": "Carpeta", - "fullScreen": "Toggle full screen", + "fullScreen": "Alternar pantalla completa", "hideDotfiles": "Ocultar archivos empezados por punto", - "increaseFontSize": "Increase font size", + "increaseFontSize": "Aumentar el tamaño de la fuente", "info": "Info", "more": "Más", "move": "Mover", @@ -29,24 +29,29 @@ "new": "Nuevo", "next": "Siguiente", "ok": "OK", + "openDirect": "Ver sin procesar", "openFile": "Abrir archivo", + "overrideAll": "Reemplazar todos los archivos en la carpeta de destino", "permalink": "Link permanente", "permissions": "Permisos", - "preview": "Preview", + "preview": "Vista previa", "previous": "Anterior", "publish": "Publicar", "rename": "Renombrar", + "renameAll": "Cambiar el nombre de todos los archivos (crear una copia)", "replace": "Reemplazar", "reportIssue": "Reportar problema", "save": "Guardar", - "saveChanges": "Save changes", + "saveChanges": "Guardar cambios", "schedule": "Programar", "search": "Buscar", "select": "Seleccionar", "selectMultiple": "Selección múltiple", "share": "Compartir", "shell": "Presiona Enter para buscar...", - "stopSearch": "Stop searching", + "singleDecision": "Decida para cada archivo en conflicto", + "skipAll": "Omitir todos los archivos conflictivos", + "stopSearch": "Deja de buscar", "submit": "Enviar", "switchView": "Cambiar vista", "toggleSidebar": "Mostrar/Ocultar menú", @@ -74,14 +79,15 @@ "files": { "body": "Cuerpo", "closePreview": "Cerrar vista previa", - "columnSeparator": "Column Separator", - "csvLoadFailed": "Failed to load CSV file.", + "columnSeparator": "Separador de columna", + "csvLoadFailed": "No se pudo cargar el archivo CSV.", "csvSeparators": { - "both": "Both (,) and (;)", - "comma": "Comma (,)", - "semicolon": "Semicolon (;)" + "both": "Tanto (,) como (;)", + "comma": "Coma (,)", + "semicolon": "Punto y coma (;)" }, - "csvTooLarge": "CSV file is too large for preview (\u003e5MB). Please download to view.", + "csvTooLarge": "El archivo CSV es demasiado grande para previsualizarlo (\u003e5 MB). Descárguelo para verlo.", + "fileEncoding": "Codificación de archivos", "files": "Archivos", "folders": "Carpetas", "home": "Inicio", @@ -92,7 +98,7 @@ "multipleSelectionEnabled": "Selección múltiple activada", "name": "Nombre", "noPreview": "La vista previa no está disponible para este archivo.", - "showingRows": "Showing {count} row(s)", + "showingRows": "Mostrando {count} fila(s)", "size": "Tamaño", "sortByLastModified": "Ordenar por última modificación", "sortByName": "Ordenar por nombre", @@ -116,11 +122,11 @@ "createAnAccount": "Crear una cuenta", "loginInstead": "Usuario ya existente", "logout_reasons": { - "inactivity": "You have been logged out due to inactivity." + "inactivity": "Se ha cerrado tu sesión por inactividad." }, "password": "Contraseña", "passwordConfirm": "Confirmación de contraseña", - "passwordTooShort": "Password must be at least {min} characters", + "passwordTooShort": "La contraseña debe tener al menos {min} caracteres.", "passwordsDontMatch": "Las contraseñas no coinciden", "signup": "Registrate", "submit": "Iniciar sesión", @@ -134,23 +140,29 @@ "archiveMessage": "Elige el nombre del archivo formato:", "copy": "Copiar", "copyMessage": "Elige el lugar donde quieres copiar tus archivos:", + "currentPassword": "Tu contraseña", + "currentPasswordMessage": "Introduce tu contraseña para validar esta acción.", "currentlyNavigating": "Actualmente estás en:", "deleteMessageMultiple": "¿Estás seguro que quieres eliminar {count} archivo(s)?", "deleteMessageShare": "¿Estás seguro de querer eliminar la ruta ({path}) compartida?", "deleteMessageSingle": "¿Estás seguro que quieres eliminar este archivo/carpeta?", "deleteTitle": "Borrar archivos", - "deleteUser": "Are you sure you want to delete this user?", + "deleteUser": "¿Estás seguro de que quieres eliminar a este usuario?", "directories": "Directorios", "directoriesAndFiles": "Directorios y archivos", - "discardEditorChanges": "Are you sure you wish to discard the changes you've made?", + "discardEditorChanges": "¿Estás seguro de que deseas descartar los cambios que has realizado?", "displayName": "Nombre:", "download": "Descargar archivos", "downloadMessage": "Elige el formato de descarga.", "error": "Algo ha fallado", "execute": "Ejecuta", + "fastConflictResolve": "La carpeta de destino contiene {count} archivos con el mismo nombre.", "fileInfo": "Información del archivo", "files": "Archivos", + "filesInDest": "Archivos en el destino", + "filesInOrigin": "Archivos en origen", "filesSelected": "{count} archivos seleccionados.", + "forbiddenError": "Error prohibido", "group": "Grupo", "inodeCount": "({count} inodos)", "lastModified": "Última modificación", @@ -165,6 +177,7 @@ "numberFiles": "Número de archivos", "optionalPassword": "Contraseña opcional", "others": "Otros", + "override": "Exagerar", "owner": "Dueño", "permissions": "Permisos", "read": "Lee", @@ -173,11 +186,15 @@ "renameMessage": "Escribe el nuevo nombre para", "replace": "Reemplazar", "replaceMessage": "Uno de los archivos que intentas subir está creando conflicto por su nombre. ¿Quieres cambiar el nombre del ya existente?", - "resolution": "Resolution", + "replaceOrSkip": "Reemplazar u omitir archivos", + "resolution": "Resolución", + "resolveConflict": "¿Qué archivos desea conservar?", "schedule": "Programar", "scheduleMessage": "Elige una hora y fecha para programar la publicación de este post.", "show": "Mostrar", + "singleConflictResolve": "Si selecciona ambas versiones, se añadirá un número al nombre del archivo copiado.", "size": "Tamaño", + "skip": "Saltar", "skipTrashMessage": "Omitir papelera y eliminar inmediatamente", "unarchive": "Desarchiva", "unarchiveDestinationLocationMessage": "Selecciona el destino:", @@ -190,6 +207,7 @@ "uploadFiles": "Cargando {files} archivos...", "uploadFolder": "Carpeta", "uploadMessage": "Seleccione una opción para cargar.", + "uploadingFiles": "Cargando archivos", "write": "Escribe" }, "search": { @@ -203,7 +221,7 @@ "video": "Vídeo" }, "settings": { - "aceEditorTheme": "Ace editor theme", + "aceEditorTheme": "Tema del editor Ace", "admin": "Admin", "administrator": "Administrador", "allowCommands": "Ejecutar comandos", @@ -221,11 +239,11 @@ "commandsUpdated": "¡Comandos actualizados!", "createUserDir": "Crea automáticamente el directorio de inicio del usuario mientras agregas un nuevo usuario", "createUserHomeDirectory": "Crear directorio de inicio de usuario", - "currentPassword": "Your Current Password", + "currentPassword": "Su contraseña actual", "customStylesheet": "Modificar hoja de estilos", "defaultUserDescription": "Estas son las configuraciones por defecto para nuevos usuarios.", "disableExternalLinks": "Deshabilitar enlaces externos (excepto documentación)", - "disableUsedDiskPercentage": "Disable used disk percentage graph", + "disableUsedDiskPercentage": "Deshabilitar el gráfico de porcentaje de disco usado", "documentation": "documentación", "examples": "Ejemplos", "executeOnShell": "Ejecutar en shell", @@ -233,13 +251,13 @@ "globalRules": "Este es un conjunto global de permitir y rechazar las reglas. Se aplican a todos los usuarios. Puedes definir reglas específicas en la configuración de cada usuario para anular estas.", "globalSettings": "Ajustes globales", "hideDotfiles": "Ocultar archivos empezados por punto", - "hideLoginButton": "Hide the login button from public pages", + "hideLoginButton": "Ocultar el botón de inicio de sesión en las páginas públicas.", "insertPath": "Introduce la ruta", "insertRegex": "Introducir expresión regular", "instanceName": "Nombre de la instancia", "language": "Idioma", "lockPassword": "Evitar que el usuario cambie la contraseña", - "minimumPasswordLength": "Minimum password length", + "minimumPasswordLength": "Longitud mínima de la contraseña", "newPassword": "Tu nueva contraseña", "newPasswordConfirm": "Confirma tu contraseña", "newUser": "Nuevo usuario", @@ -258,7 +276,7 @@ "permissions": "Permisos", "permissionsHelp": "Puedes nombrar al usuario como administrador o elegir los permisos individualmente. Si seleccionas \"Administrador\", todas las otras opciones serán activadas automáticamente. La administración de usuarios es un privilegio del administrador.", "profileSettings": "Ajustes del perfil", - "redirectAfterCopyMove": "Redirect to destination after copy/move", + "redirectAfterCopyMove": "Redirigir al destino después de copiar/mover", "ruleExample1": "previene el acceso a una extensión de archivo (como .git) en cada carpeta.", "ruleExample2": "bloquea el acceso al archivo llamado Caddyfile en la carpeta raíz.", "rules": "Reglas", @@ -272,14 +290,14 @@ "singleClick": "Usa un solo clic para abrir archivos y directorios", "themes": { "dark": "Oscuro", - "default": "System default", + "default": "Configuración predeterminada del sistema", "light": "Claro", "title": "Tema" }, - "tusUploads": "Chunked Uploads", - "tusUploadsChunkSize": "Indicates to maximum size of a request (direct uploads will be used for smaller uploads). You may input a plain integer denoting byte size input or a string like 10MB, 1GB etc.", - "tusUploadsHelp": "File Browser supports chunked file uploads, allowing for the creation of efficient, reliable, resumable and chunked file uploads even on unreliable networks.", - "tusUploadsRetryCount": "Number of retries to perform if a chunk fails to upload.", + "tusUploads": "Cargas fragmentadas", + "tusUploadsChunkSize": "Indica el tamaño máximo de una solicitud (para cargas más pequeñas se utilizarán cargas directas). Puede introducir un número entero que indique el tamaño en bytes o una cadena de texto como 10 MB, 1 GB, etc.", + "tusUploadsHelp": "El Explorador de archivos admite la carga de archivos por fragmentos, lo que permite crear cargas de archivos eficientes, fiables, reanudables y divididas en fragmentos incluso en redes poco fiables.", + "tusUploadsRetryCount": "Número de reintentos que se realizarán si falla la carga de un fragmento.", "user": "Usuario", "userCommands": "Comandos", "userCommandsHelp": "Una lista separada por espacios con los comandos permitidos para este usuario. Ejemplo:\n", @@ -323,6 +341,6 @@ "unit": "Unidad de tiempo" }, "upload": { - "abortUpload": "Are you sure you wish to abort?" + "abortUpload": "¿Está segura de que desea abortar?" } } diff --git a/frontend/src/i18n/es_MX.json b/frontend/src/i18n/es_MX.json index 4ba9b33370..8796cbe861 100644 --- a/frontend/src/i18n/es_MX.json +++ b/frontend/src/i18n/es_MX.json @@ -2,26 +2,26 @@ "buttons": { "archive": "Archivo", "cancel": "Cancelar", - "clear": "Clear", + "clear": "Limpiar", "close": "Cerrar", - "continue": "Continue", + "continue": "Continuar", "copy": "Copiar", - "copyDownloadLinkToClipboard": "Copy download link to clipboard", + "copyDownloadLinkToClipboard": "Copiar enlace de descarga al portapapeles", "copyFile": "Copiar archivo", "copyToClipboard": "Copiar al portapapeles", "create": "Crear", - "decreaseFontSize": "Decrease font size", + "decreaseFontSize": "Disminuir el tamaño de la fuente", "delete": "Borrar", "directorySizes": "Calcular los tamaños del directorio", - "discardChanges": "Discard", + "discardChanges": "Descartar", "download": "Descargar", "edit": "Editar", - "editAsText": "Edit as Text", + "editAsText": "Editar como texto", "file": "Archivo", "folder": "Carpeta", - "fullScreen": "Toggle full screen", + "fullScreen": "Alternar pantalla completa", "hideDotfiles": "Ocultar archivos empezados por punto", - "increaseFontSize": "Increase font size", + "increaseFontSize": "Aumentar el tamaño de la fuente", "info": "Info", "more": "Más", "move": "Mover", @@ -29,24 +29,29 @@ "new": "Nuevo", "next": "Siguiente", "ok": "OK", + "openDirect": "Ver sin procesar", "openFile": "Abrir archivo", + "overrideAll": "Reemplazar todos los archivos en la carpeta de destino", "permalink": "Link permanente", "permissions": "Permisos", - "preview": "Preview", + "preview": "Vista previa", "previous": "Anterior", "publish": "Publicar", "rename": "Renombrar", + "renameAll": "Cambiar el nombre de todos los archivos (crear una copia)", "replace": "Reemplazar", "reportIssue": "Reportar problema", "save": "Guardar", - "saveChanges": "Save changes", + "saveChanges": "Guardar cambios", "schedule": "Programar", "search": "Buscar", "select": "Seleccionar", "selectMultiple": "Selección múltiple", "share": "Compartir", "shell": "Presiona Enter para buscar...", - "stopSearch": "Stop searching", + "singleDecision": "Decida para cada archivo en conflicto", + "skipAll": "Omitir todos los archivos conflictivos", + "stopSearch": "Deja de buscar", "submit": "Enviar", "switchView": "Cambiar vista", "toggleSidebar": "Mostrar/Ocultar menú", @@ -74,14 +79,15 @@ "files": { "body": "Cuerpo", "closePreview": "Cerrar vista previa", - "columnSeparator": "Column Separator", - "csvLoadFailed": "Failed to load CSV file.", + "columnSeparator": "Separador de columna", + "csvLoadFailed": "No se pudo cargar el archivo CSV.", "csvSeparators": { - "both": "Both (,) and (;)", - "comma": "Comma (,)", - "semicolon": "Semicolon (;)" + "both": "Tanto (,) como (;)", + "comma": "Coma (,)", + "semicolon": "Punto y coma (;)" }, - "csvTooLarge": "CSV file is too large for preview (\u003e5MB). Please download to view.", + "csvTooLarge": "El archivo CSV es demasiado grande para previsualizarlo (\u003e5 MB). Descárguelo para verlo.", + "fileEncoding": "Codificación de archivos", "files": "Archivos", "folders": "Carpetas", "home": "Inicio", @@ -92,7 +98,7 @@ "multipleSelectionEnabled": "Selección múltiple activada", "name": "Nombre", "noPreview": "La vista previa no está disponible para este archivo.", - "showingRows": "Showing {count} row(s)", + "showingRows": "Mostrando {count} fila(s)", "size": "Tamaño", "sortByLastModified": "Ordenar por última modificación", "sortByName": "Ordenar por nombre", @@ -116,11 +122,11 @@ "createAnAccount": "Crear una cuenta", "loginInstead": "Usuario ya existente", "logout_reasons": { - "inactivity": "You have been logged out due to inactivity." + "inactivity": "Se ha cerrado tu sesión por inactividad." }, "password": "Contraseña", "passwordConfirm": "Confirmación de contraseña", - "passwordTooShort": "Password must be at least {min} characters", + "passwordTooShort": "La contraseña debe tener al menos {min} caracteres.", "passwordsDontMatch": "Las contraseñas no coinciden", "signup": "Registrate", "submit": "Iniciar sesión", @@ -134,23 +140,29 @@ "archiveMessage": "Elige el nombre del archivo formato:", "copy": "Copiar", "copyMessage": "Elige el lugar donde quieres copiar tus archivos:", + "currentPassword": "Tu contraseña", + "currentPasswordMessage": "Introduce tu contraseña para validar esta acción.", "currentlyNavigating": "Actualmente estás en:", "deleteMessageMultiple": "¿Estás seguro que quieres eliminar {count} archivo(s)?", "deleteMessageShare": "¿Estás seguro de querer eliminar la ruta ({path}) compartida?", "deleteMessageSingle": "¿Estás seguro que quieres eliminar este archivo/carpeta?", "deleteTitle": "Borrar archivos", - "deleteUser": "Are you sure you want to delete this user?", + "deleteUser": "¿Estás seguro de que quieres eliminar a este usuario?", "directories": "Directorios", "directoriesAndFiles": "Directorios y archivos", - "discardEditorChanges": "Are you sure you wish to discard the changes you've made?", + "discardEditorChanges": "¿Estás seguro de que deseas descartar los cambios que has realizado?", "displayName": "Nombre:", "download": "Descargar archivos", "downloadMessage": "Elige el formato de descarga.", "error": "Algo ha fallado", "execute": "Ejecuta", + "fastConflictResolve": "La carpeta de destino contiene {count} archivos con el mismo nombre.", "fileInfo": "Información del archivo", "files": "Archivos", + "filesInDest": "Archivos en el destino", + "filesInOrigin": "Archivos en origen", "filesSelected": "{count} archivos seleccionados.", + "forbiddenError": "Error prohibido", "group": "Grupo", "inodeCount": "({count} inodos)", "lastModified": "Última modificación", @@ -165,6 +177,7 @@ "numberFiles": "Número de archivos", "optionalPassword": "Contraseña opcional", "others": "Otros", + "override": "Exagerar", "owner": "Dueño", "permissions": "Permisos", "read": "Lee", @@ -173,11 +186,15 @@ "renameMessage": "Escribe el nuevo nombre para", "replace": "Reemplazar", "replaceMessage": "Uno de los archivos ue intentas subir está creando conflicto por su nombre. ¿Quieres cambiar el nombre del ya existente?\n", - "resolution": "Resolution", + "replaceOrSkip": "Reemplazar u omitir archivos", + "resolution": "Resolución", + "resolveConflict": "¿Qué archivos desea conservar?", "schedule": "Programar", "scheduleMessage": "Elige una hora y fecha para programar la publicación de este post.", "show": "Mostrar", + "singleConflictResolve": "Si selecciona ambas versiones, se añadirá un número al nombre del archivo copiado.", "size": "Tamaño", + "skip": "Saltar", "skipTrashMessage": "Omitir papelera y eliminar inmediatamente", "unarchive": "Desarchiva", "unarchiveDestinationLocationMessage": "Selecciona el destino:", @@ -190,6 +207,7 @@ "uploadFiles": "Cargando {files} archivos...", "uploadFolder": "Carpeta", "uploadMessage": "Seleccione una opción para cargar.", + "uploadingFiles": "Cargando archivos", "write": "Escribe" }, "search": { @@ -203,7 +221,7 @@ "video": "Vídeo" }, "settings": { - "aceEditorTheme": "Ace editor theme", + "aceEditorTheme": "Tema del editor Ace", "admin": "Admin", "administrator": "Administrador", "allowCommands": "Ejecutar comandos", @@ -221,11 +239,11 @@ "commandsUpdated": "¡Comandos actualizados!", "createUserDir": "Crea automaticamente una carpeta de inicio cuando se agrega un usuario", "createUserHomeDirectory": "Crear directorio de inicio de usuario", - "currentPassword": "Your Current Password", + "currentPassword": "Su contraseña actual", "customStylesheet": "Modificar hoja de estilos", "defaultUserDescription": "Estas son las configuraciones por defecto para nuevos usuarios.", "disableExternalLinks": "Deshabilitar enlaces externos (excepto documentación)", - "disableUsedDiskPercentage": "Disable used disk percentage graph", + "disableUsedDiskPercentage": "Deshabilitar el gráfico de porcentaje de disco usado", "documentation": "documentación", "examples": "Ejemplos", "executeOnShell": "Ejecutar en la shell", @@ -233,13 +251,13 @@ "globalRules": "This is a global set of allow and disallow rules. They apply to every user. You can define specific rules on each user's settings to override this ones.", "globalSettings": "Ajustes globales", "hideDotfiles": "", - "hideLoginButton": "Hide the login button from public pages", + "hideLoginButton": "Ocultar el botón de inicio de sesión en las páginas públicas.", "insertPath": "Introduce la ruta", "insertRegex": "Introducir expresión regular", "instanceName": "Nombre de la instancia", "language": "Idioma", "lockPassword": "Evitar que el usuario cambie la contraseña", - "minimumPasswordLength": "Minimum password length", + "minimumPasswordLength": "Longitud mínima de la contraseña", "newPassword": "Tu nueva contraseña", "newPasswordConfirm": "Confirma tu contraseña", "newUser": "Nuevo usuario", @@ -258,7 +276,7 @@ "permissions": "Permisos", "permissionsHelp": "Puedes nombrar al usuario como administrador o elegir los permisos individualmente. Si seleccionas \"Administrador\", todas las otras opciones serán activadas automáticamente. La administración de usuarios es un privilegio de administrador.\n", "profileSettings": "Ajustes del perfil", - "redirectAfterCopyMove": "Redirect to destination after copy/move", + "redirectAfterCopyMove": "Redirigir al destino después de copiar/mover", "ruleExample1": "previene el acceso a una extensión de archivo (Como .git) en cada carpeta.\n", "ruleExample2": "bloquea el acceso al archivo llamado Caddyfile en la carpeta raíz.", "rules": "Reglas", @@ -272,14 +290,14 @@ "singleClick": "", "themes": { "dark": "", - "default": "System default", + "default": "Configuración predeterminada del sistema", "light": "", "title": "" }, - "tusUploads": "Chunked Uploads", - "tusUploadsChunkSize": "Indicates to maximum size of a request (direct uploads will be used for smaller uploads). You may input a plain integer denoting byte size input or a string like 10MB, 1GB etc.", - "tusUploadsHelp": "File Browser supports chunked file uploads, allowing for the creation of efficient, reliable, resumable and chunked file uploads even on unreliable networks.", - "tusUploadsRetryCount": "Number of retries to perform if a chunk fails to upload.", + "tusUploads": "Cargas fragmentadas", + "tusUploadsChunkSize": "Indica el tamaño máximo de una solicitud (para cargas más pequeñas se utilizarán cargas directas). Puede introducir un número entero que indique el tamaño en bytes o una cadena de texto como 10 MB, 1 GB, etc.", + "tusUploadsHelp": "El Explorador de archivos admite la carga de archivos por fragmentos, lo que permite crear cargas de archivos eficientes, fiables, reanudables y divididas en fragmentos incluso en redes poco fiables.", + "tusUploadsRetryCount": "Número de reintentos que se realizarán si falla la carga de un fragmento.", "user": "Usuario", "userCommands": "Comandos", "userCommandsHelp": "Una lista separada por espacios con los comandos permitidos para este usuario. Ejemplo:\n", @@ -323,6 +341,6 @@ "unit": "Unidad" }, "upload": { - "abortUpload": "Are you sure you wish to abort?" + "abortUpload": "¿Está segura de que desea abortar?" } } diff --git a/frontend/src/i18n/fr_FR.json b/frontend/src/i18n/fr_FR.json index 65676dafe8..1c5ab6a327 100644 --- a/frontend/src/i18n/fr_FR.json +++ b/frontend/src/i18n/fr_FR.json @@ -2,26 +2,26 @@ "buttons": { "archive": "Archive", "cancel": "Annuler", - "clear": "Clear", + "clear": "Effacer", "close": "Fermer", - "continue": "Continue", + "continue": "Continuer", "copy": "Copier", - "copyDownloadLinkToClipboard": "Copy download link to clipboard", + "copyDownloadLinkToClipboard": "Copier le lien de téléchargement dans le presse-papiers", "copyFile": "Copier le fichier", "copyToClipboard": "Copier dans le presse-papier", "create": "Créer", - "decreaseFontSize": "Decrease font size", + "decreaseFontSize": "Réduire la taille de la police", "delete": "Supprimer", "directorySizes": "Calculer la taille des dossiers", - "discardChanges": "Discard", + "discardChanges": "Abandonner", "download": "Télécharger", "edit": "Modifier", - "editAsText": "Edit as Text", + "editAsText": "Modifier en tant que texte", "file": "Fichier", "folder": "Dossier", - "fullScreen": "Toggle full screen", + "fullScreen": "Basculer vers le plein écran", "hideDotfiles": "Cacher les dotfiles", - "increaseFontSize": "Increase font size", + "increaseFontSize": "Augmenter la taille de la police", "info": "Info", "more": "Plus", "move": "Déplacer", @@ -29,24 +29,29 @@ "new": "Nouveau", "next": "Suivant", "ok": "OK", + "openDirect": "Afficher le code brut", "openFile": "Ouvrir le fichier", + "overrideAll": "Remplacer tous les fichiers du dossier de destination", "permalink": "Obtenir un lien permanent", "permissions": "Permissions", - "preview": "Preview", + "preview": "Aperçu", "previous": "Précédent", "publish": "Publier", "rename": "Renommer", + "renameAll": "Renommer tous les fichiers (créer une copie)", "replace": "Remplacer", "reportIssue": "Rapporter une erreur", "save": "Enregistrer", - "saveChanges": "Save changes", + "saveChanges": "Sauvegarder les modifications", "schedule": "Fixer la date", "search": "Rechercher", "select": "Sélectionner", "selectMultiple": "Sélection multiple", "share": "Partager", "shell": "Toggle shell", - "stopSearch": "Stop searching", + "singleDecision": "Décidez pour chaque fichier en conflit", + "skipAll": "Ignorer tous les fichiers en conflit", + "stopSearch": "Arrêtez de chercher", "submit": "Soumettre", "switchView": "Changer le mode d'affichage", "toggleSidebar": "Barre latérale Toggle", @@ -82,6 +87,7 @@ "semicolon": "Semicolon (;)" }, "csvTooLarge": "CSV file is too large for preview (\u003e5MB). Please download to view.", + "fileEncoding": "File Encoding", "files": "Fichiers", "folders": "Dossiers", "home": "Accueil", @@ -134,23 +140,29 @@ "archiveMessage": "Choisissez le nom et le format de l'archive :", "copy": "Copier", "copyMessage": "Choisissez l'emplacement où copier la sélection :", + "currentPassword": "Votre mot de passe", + "currentPasswordMessage": "Enter your password to validate this action.", "currentlyNavigating": "Actuellement, nous naviguons sur :", "deleteMessageMultiple": "Etes-vous sûr de vouloir supprimer ces {count} fichier(s) ?", "deleteMessageShare": "Etes-vous sûr de vouloir supprimer ce partage({path}) ?", "deleteMessageSingle": "Etes-vous sûr de vouloir supprimer ce fichier/dossier ?", "deleteTitle": "Supprimer les fichiers", - "deleteUser": "Are you sure you want to delete this user?", + "deleteUser": "Êtes-vous sûr de vouloir supprimer cet utilisateur ?", "directories": "Annuaires", "directoriesAndFiles": "Répertoires et fichiers", - "discardEditorChanges": "Are you sure you wish to discard the changes you've made?", + "discardEditorChanges": "Êtes-vous sûr de vouloir annuler les modifications que vous avez apportées ?", "displayName": "Nom d'affichage :", "download": "Télécharger les fichiers", "downloadMessage": "Choisissez le format que vous souhaitez télécharger.", "error": "Aïe ! Quelque chose s'est mal passé.", "execute": "Exécuter", + "fastConflictResolve": "Le dossier de destination contient {count} des fichiers portant le même nom.", "fileInfo": "Informations sur le fichier", "files": "Fichiers", + "filesInDest": "Fichiers dans la destination", + "filesInOrigin": "Fichiers d'origine", "filesSelected": "{count} fichiers sélectionnés", + "forbiddenError": "Erreur interdite", "group": "Grouper", "inodeCount": "({count} inodes)", "lastModified": "Dernière modification", @@ -165,6 +177,7 @@ "numberFiles": "Nombre de fichiers", "optionalPassword": "Mot de passe facultatif", "others": "Autres", + "override": "Écraser", "owner": "Propriétaire", "permissions": "Permissions", "read": "Lire", @@ -173,11 +186,15 @@ "renameMessage": "Insérer un nouveau nom pour", "replace": "Remplacer", "replaceMessage": "Un des fichiers que vous êtes en train d'importer a le même nom qu'un autre déjà présent. Voulez-vous remplacer le fichier actuel par le nouveau ?", - "resolution": "Resolution", + "replaceOrSkip": "Remplacer ou ignorer les fichiers", + "resolution": "Résolution", + "resolveConflict": "Quels fichiers souhaitez-vous conserver ?", "schedule": "Fixer la date", "scheduleMessage": "Choisissez une date pour planifier la publication de ce post", "show": "Montrer", + "singleConflictResolve": "Si vous sélectionnez les deux versions, un numéro sera ajouté au nom du fichier copié.", "size": "Taille", + "skip": "Passer", "skipTrashMessage": "Ignorer la corbeille et supprimer immédiatement", "unarchive": "Extraire", "unarchiveDestinationLocationMessage": "Sélectionnez la destination :", @@ -190,6 +207,7 @@ "uploadFiles": "Téléchargement des {files} fichiers...", "uploadFolder": "Dossier", "uploadMessage": "Sélectionnez une option à télécharger.", + "uploadingFiles": "Téléchargement de fichiers", "write": "Écrire" }, "search": { diff --git a/frontend/src/i18n/id_ID.json b/frontend/src/i18n/id_ID.json index 0c4a97566e..1420dea250 100644 --- a/frontend/src/i18n/id_ID.json +++ b/frontend/src/i18n/id_ID.json @@ -2,26 +2,26 @@ "buttons": { "archive": "Arsip", "cancel": "Batalkan", - "clear": "Clear", + "clear": "Bersihkan", "close": "Tutup", - "continue": "Continue", + "continue": "Lanjutkan", "copy": "Salin", - "copyDownloadLinkToClipboard": "Copy download link to clipboard", + "copyDownloadLinkToClipboard": "Salin tautan unduhan ke papan klip", "copyFile": "Salin file", "copyToClipboard": "Salin ke clipboard", "create": "Buat", - "decreaseFontSize": "Decrease font size", + "decreaseFontSize": "Kurangi ukuran font", "delete": "Hapus", "directorySizes": "Hitung ukuran direktori", - "discardChanges": "Discard", + "discardChanges": "Hapus", "download": "Download", "edit": "Edit", - "editAsText": "Edit as Text", + "editAsText": "Edit sebagai Teks", "file": "File", "folder": "Folder", - "fullScreen": "Toggle full screen", + "fullScreen": "Beralih ke layar penuh", "hideDotfiles": "Sembunyikan dotfile", - "increaseFontSize": "Increase font size", + "increaseFontSize": "Perbesar ukuran font", "info": "Info", "more": "Selengkapnya", "move": "Pindahkan", @@ -29,24 +29,29 @@ "new": "Baru", "next": "Selanjutnya", "ok": "OK", + "openDirect": "Lihat mentah", "openFile": "Buka file", + "overrideAll": "Ganti semua file di folder tujuan", "permalink": "Dapatkan Tautan Permanen", "permissions": "Akses", - "preview": "Preview", + "preview": "Pratinjau", "previous": "Sebelumnya", "publish": "Terbitkan", "rename": "Ubah nama", + "renameAll": "Ganti nama semua file (buat salinannya)", "replace": "Ganti", "reportIssue": "Laporkan kendala", "save": "Simpan", - "saveChanges": "Save changes", + "saveChanges": "Simpan perubahan", "schedule": "Jadwalkan", "search": "Cari", "select": "Pilih", "selectMultiple": "Pilih beberapa", "share": "Bagikan", "shell": "Toggle shell", - "stopSearch": "Stop searching", + "singleDecision": "Putuskan untuk setiap file yang bertentangan", + "skipAll": "Lewati semua file yang bertentangan", + "stopSearch": "Berhenti mencari", "submit": "Kirim", "switchView": "Ubah tampilan", "toggleSidebar": "Toggle sidebar", @@ -82,6 +87,7 @@ "semicolon": "Semicolon (;)" }, "csvTooLarge": "CSV file is too large for preview (\u003e5MB). Please download to view.", + "fileEncoding": "File Encoding", "files": "File", "folders": "Folder", "home": "Beranda", @@ -134,23 +140,29 @@ "archiveMessage": "Pilih nama dan format arsip:", "copy": "Salin", "copyMessage": "Pilih lokasi untuk menyalin file:", + "currentPassword": "Kata sandi Anda", + "currentPasswordMessage": "Enter your password to validate this action.", "currentlyNavigating": "Saat ini Anda sedang membuka:", "deleteMessageMultiple": "Apakah Anda yakin ingin menghapus {count} file?", "deleteMessageShare": "Apakah Anda yakin ingin menghapus ({path}) yang dibagikan ini?", "deleteMessageSingle": "Apakah Anda yakin ingin menghapus file / folder ini?", "deleteTitle": "Hapus file", - "deleteUser": "Are you sure you want to delete this user?", + "deleteUser": "Apakah Anda yakin ingin menghapus pengguna ini?", "directories": "Direktori", "directoriesAndFiles": "Direktori dan file", - "discardEditorChanges": "Are you sure you wish to discard the changes you've made?", + "discardEditorChanges": "Apakah Anda yakin ingin menghapus perubahan yang telah Anda buat?", "displayName": "Nama Tampilan:", "download": "Download file", "downloadMessage": "Pilih format yang ingin didownload", "error": "Terjadi kesalahan.", "execute": "Jalankan", + "fastConflictResolve": "Folder tujuan tersebut terdapat {count} file dengan nama yang sama.", "fileInfo": "Informasi file", "files": "File", + "filesInDest": "Berkas di tujuan", + "filesInOrigin": "Berkas di sumber asalnya", "filesSelected": "{count} file dipilih.", + "forbiddenError": "Kesalahan Terlarang", "group": "Grup", "inodeCount": "({count} inode)", "lastModified": "Terakhir Diperbarui", @@ -165,6 +177,7 @@ "numberFiles": "Jumlah file", "optionalPassword": "Kata sandi opsional", "others": "Lainnya", + "override": "Menimpa", "owner": "Pemilik", "permissions": "Izin", "read": "Baca", @@ -173,11 +186,15 @@ "renameMessage": "Beri nama baru untuk", "replace": "Ganti", "replaceMessage": "Salah satu file yang diupload memiliki nama yang bertentangan. Apakah Anda ingin mengganti file tersebut?", - "resolution": "Resolution", + "replaceOrSkip": "Ganti atau lewati file", + "resolution": "Resolusi", + "resolveConflict": "File mana yang ingin Anda simpan?", "schedule": "Jadwalkan", "scheduleMessage": "Pilih tanggal dan waktu untuk menerbitkan post ini", "show": "Tampilkan", + "singleConflictResolve": "Jika Anda memilih kedua versi, angka akan ditambahkan ke nama file yang disalin.", "size": "Ukuran", + "skip": "Lewati", "skipTrashMessage": "Lewati keranjang sampah dan langsung hapus saja", "unarchive": "Buka arsip", "unarchiveDestinationLocationMessage": "Pilih folder tujuan:", @@ -190,6 +207,7 @@ "uploadFiles": "Mengupload file {files}...", "uploadFolder": "Folder", "uploadMessage": "Pilih opsi untuk diupload", + "uploadingFiles": "Mengupload file", "write": "Tulis" }, "search": { diff --git a/frontend/src/i18n/lt_LT.json b/frontend/src/i18n/lt_LT.json index 5482d1cc7e..77d30d9fdc 100644 --- a/frontend/src/i18n/lt_LT.json +++ b/frontend/src/i18n/lt_LT.json @@ -2,26 +2,26 @@ "buttons": { "archive": "Archyvuoti", "cancel": "Atšaukti", - "clear": "Clear", + "clear": "Išvalyti", "close": "Uždaryti", - "continue": "Continue", + "continue": "Tęsti", "copy": "Kopijuoti", - "copyDownloadLinkToClipboard": "Copy download link to clipboard", + "copyDownloadLinkToClipboard": "Nukopijuokite atsisiuntimo nuorodą", "copyFile": "Kopijuoti", "copyToClipboard": "Kopijuoti į iškarpinę", "create": "Sukurti", - "decreaseFontSize": "Decrease font size", + "decreaseFontSize": "Sumažinti šrifto dydį", "delete": "Ištrinti", "directorySizes": "Skaičiuoti katalogų dydžius", - "discardChanges": "Discard", + "discardChanges": "Ištrinti", "download": "Atsisiųsti", "edit": "Redaguoti", - "editAsText": "Edit as Text", + "editAsText": "Redaguoti kaip tekstą", "file": "Failas", "folder": "Aplankas", - "fullScreen": "Toggle full screen", + "fullScreen": "Perjungti viso ekrano režimą", "hideDotfiles": "Paslėpti konfigūracijos failus", - "increaseFontSize": "Increase font size", + "increaseFontSize": "Padidinti šrifto dydį", "info": "Informacija", "more": "Daugiau", "move": "Perkelti", @@ -29,24 +29,29 @@ "new": "Naujas", "next": "Kitas", "ok": "OK", + "openDirect": "Peržiūrėti neapdorotai", "openFile": "Atidaryti failą", + "overrideAll": "Pakeisti visus failus paskirties aplanke", "permalink": "Gauti nuolatinę nuorodą", "permissions": "Leidimai", - "preview": "Preview", + "preview": "Peržiūrėti", "previous": "Ankstesnis", "publish": "Publikuoti", "rename": "Pervadinti", + "renameAll": "Pervardyti visus failus (sukurti kopiją)", "replace": "Pakeisti kitu", "reportIssue": "Pranešti apie problemą", "save": "Išsaugoti", - "saveChanges": "Save changes", + "saveChanges": "Išsaugoti pakeitimus", "schedule": "Suplanuoti", "search": "Ieškoti", "select": "Rinktis", "selectMultiple": "Rinktis kelis", "share": "Dalintis", "shell": "Suskleisti komandinių eilučių sąsają", - "stopSearch": "Stop searching", + "singleDecision": "Nuspręskite dėl kiekvieno konfliktuojančio failo", + "skipAll": "Praleisti visus konfliktuojančius failus", + "stopSearch": "Nustokite ieškoti", "submit": "Pateikti", "switchView": "Pakeisti vaizdą", "toggleSidebar": "Suskleisti šoninį meniu", @@ -82,6 +87,7 @@ "semicolon": "Semicolon (;)" }, "csvTooLarge": "CSV file is too large for preview (\u003e5MB). Please download to view.", + "fileEncoding": "File Encoding", "files": "Failai", "folders": "Aplankai", "home": "Pagrindinis", @@ -134,23 +140,29 @@ "archiveMessage": "Pasirinkite archyvo pavadinimą ir formatą:", "copy": "Kopijuoti", "copyMessage": "Pasirinkite, kur norite įklijuoti savo failus:", + "currentPassword": "Jūsų slaptažodis", + "currentPasswordMessage": "Enter your password to validate this action.", "currentlyNavigating": "Šiuo metu naršote:", "deleteMessageMultiple": "Ar tikrai norite ištrinti {count} failą (–us)?", "deleteMessageShare": "Ar tikrai norite ištrinti šią dalijimosi nuorodą ({path})?", "deleteMessageSingle": "Ar tikrai norite ištrinti šį failą/aplanką?", "deleteTitle": "Ištrinti failus", - "deleteUser": "Are you sure you want to delete this user?", + "deleteUser": "Ar tikrai norite ištrinti šį vartotoją?", "directories": "Direktorijos", "directoriesAndFiles": "Direktorijos ir failai", - "discardEditorChanges": "Are you sure you wish to discard the changes you've made?", + "discardEditorChanges": "Ar tikrai norite atmesti atliktus pakeitimus?", "displayName": "Rodomas pavadinimas:", "download": "Atsisiųsti failus", "downloadMessage": "Pasirinkite, kokį formatą norite atsisiųsti.", "error": "Įvyko klaida", "execute": "Paleisti", + "fastConflictResolve": "Paskirties aplanke yra {count} failų tuo pačiu pavadinimu.", "fileInfo": "Failo informacija", "files": "Failai", + "filesInDest": "Failai paskirties vietoje", + "filesInOrigin": "Failai kilmės vietoje", "filesSelected": "Pasirinkti {count} failai", + "forbiddenError": "Draudžiama klaida", "group": "Grupė", "inodeCount": "({count} failai/aplankai)", "lastModified": "Paskutinį kartą keista", @@ -165,6 +177,7 @@ "numberFiles": "Failų skaičius", "optionalPassword": "Slaptažodis (nebūtinas)", "others": "Kiti", + "override": "Perrašyti", "owner": "Savininkas", "permissions": "Leidimai", "read": "Skaityti", @@ -173,11 +186,15 @@ "renameMessage": "Įterpti naują pavadinimą", "replace": "Pakeisti kitu", "replaceMessage": "Jau egzistuoja failas su tokiu pačiu pavadinimu. Ar norite pakeisti egzistuojantį failą nauju?", - "resolution": "Resolution", + "replaceOrSkip": "Pakeisti arba praleisti failus", + "resolution": "Sprendimas", + "resolveConflict": "Kuriuos failus norite išsaugoti?", "schedule": "Suplanuoti", "scheduleMessage": "Pasirinkite datą ir laiką, kada norite publikuoti šį įrašą.", "show": "Rodyti", + "singleConflictResolve": "Jei pasirinksite abi versijas, prie nukopijuoto failo pavadinimo bus pridėtas numeris", "size": "Dydis", + "skip": "Praleisti", "skipTrashMessage": "Ištrinti visam laikui", "unarchive": "Išarchyvuoti", "unarchiveDestinationLocationMessage": "Pasirinkite vietą:", @@ -190,6 +207,7 @@ "uploadFiles": "Įkeliami {files} failai...", "uploadFolder": "Aplankas", "uploadMessage": "Pasirinkite, ką norite įkelti.", + "uploadingFiles": "Keliami failai", "write": "Rašyti" }, "search": { diff --git a/frontend/src/i18n/pt_BR.json b/frontend/src/i18n/pt_BR.json index fe2c41e693..45b3745894 100644 --- a/frontend/src/i18n/pt_BR.json +++ b/frontend/src/i18n/pt_BR.json @@ -2,26 +2,26 @@ "buttons": { "archive": "Arquivar", "cancel": "Cancelar", - "clear": "Clear", + "clear": "Limpar", "close": "Fechar", - "continue": "Continue", + "continue": "Continuar", "copy": "Copiar", - "copyDownloadLinkToClipboard": "Copy download link to clipboard", + "copyDownloadLinkToClipboard": "Copie o link de download para a área de transferência", "copyFile": "Copiar arquivo", "copyToClipboard": "Copiar", "create": "Criar", - "decreaseFontSize": "Decrease font size", + "decreaseFontSize": "Diminuir o tamanho da fonte", "delete": "Deletar", "directorySizes": "Calcular tamanho dos diretórios", - "discardChanges": "Discard", + "discardChanges": "Descartar", "download": "Baixar", "edit": "Editar", - "editAsText": "Edit as Text", + "editAsText": "Editar como texto", "file": "Arquivo", "folder": "Pasta", - "fullScreen": "Toggle full screen", + "fullScreen": "Alternar tela cheia", "hideDotfiles": "Ocultar dotfiles", - "increaseFontSize": "Increase font size", + "increaseFontSize": "Aumentar o tamanho da fonte", "info": "Informações", "more": "Mais", "move": "Mover", @@ -29,24 +29,29 @@ "new": "Novo", "next": "Próximo", "ok": "OK", + "openDirect": "Ver texto bruto", "openFile": "Abrir arquivo", + "overrideAll": "Substitua todos os arquivos na pasta de destino", "permalink": "Obter link permanente", "permissions": "Permissões", - "preview": "Preview", + "preview": "Visualizar", "previous": "Anterior", "publish": "Publicar", "rename": "Renomear", + "renameAll": "Renomear todos os arquivos (criar uma cópia)", "replace": "Substituir", "reportIssue": "Reportar erro", "save": "Salvar", - "saveChanges": "Save changes", + "saveChanges": "Salvar alterações", "schedule": "Agendar", "search": "Pesquisar", "select": "Selecionar", "selectMultiple": "Selecionar múltiplos", "share": "Compartilhar", "shell": "Alternar shell", - "stopSearch": "Stop searching", + "singleDecision": "Decida para cada arquivo conflitante", + "skipAll": "Ignorar todos os arquivos conflitantes", + "stopSearch": "Pare de procurar", "submit": "Enviar", "switchView": "Alterar visualização", "toggleSidebar": "Alternar barra lateral", @@ -82,6 +87,7 @@ "semicolon": "Semicolon (;)" }, "csvTooLarge": "CSV file is too large for preview (\u003e5MB). Please download to view.", + "fileEncoding": "File Encoding", "files": "Arquivos", "folders": "Pastas", "home": "Início", @@ -134,23 +140,29 @@ "archiveMessage": "Escolha o nome e formato do arquivo:", "copy": "Copiar", "copyMessage": "Escolha o local para copiar os arquivos:", + "currentPassword": "Sua senha", + "currentPasswordMessage": "Enter your password to validate this action.", "currentlyNavigating": "Navegando em:", "deleteMessageMultiple": "Tem certeza que deseja deletar {count} arquivo(s)?", "deleteMessageShare": "Tem certeza que deseja deletar esse compartilhamento({path})?", "deleteMessageSingle": "Tem certeza que deseja deletar esta pasta/arquivo?", "deleteTitle": "Deletar arquivos", - "deleteUser": "Are you sure you want to delete this user?", + "deleteUser": "Tem certeza de que deseja excluir este usuário?", "directories": "Diretórios", "directoriesAndFiles": "Diretórios e arquivos", - "discardEditorChanges": "Are you sure you wish to discard the changes you've made?", + "discardEditorChanges": "Tem certeza de que deseja descartar as alterações feitas?", "displayName": "Nome:", "download": "Baixar arquivos", "downloadMessage": "Escolha o formato do arquivo a ser baixado.", "error": "Ops! Algum erro ocorreu.", "execute": "Executar", + "fastConflictResolve": "Na pasta de destino existem {count} arquivos com o mesmo nome.", "fileInfo": "Informação do arquivo", "files": "Arquivos", + "filesInDest": "Arquivos no destino", + "filesInOrigin": "Arquivos na origem", "filesSelected": "{count} arquivos selecionados.", + "forbiddenError": "Erro proibido", "group": "Grupo", "inodeCount": "({count} inodes)", "lastModified": "Última modificação", @@ -165,6 +177,7 @@ "numberFiles": "Número de arquivos", "optionalPassword": "Senha opcional", "others": "Outros", + "override": "Sobrescrever", "owner": "Proprietário", "permissions": "Permissões", "read": "Ler", @@ -173,11 +186,15 @@ "renameMessage": "Insira um novo nome para", "replace": "Substituir", "replaceMessage": "Já existe um arquivo com o mesmo nome do que está tentando enviar. Deseja substituir?", - "resolution": "Resolution", + "replaceOrSkip": "Substitua ou ignore arquivos", + "resolution": "Resolução", + "resolveConflict": "Quais arquivos você deseja manter?", "schedule": "Agendar", "scheduleMessage": "Escolha uma data e hora para publicação deste post.", "show": "Mostrar", + "singleConflictResolve": "Se você selecionar ambas as versões, um número será adicionado ao nome do arquivo copiado", "size": "Tamanho", + "skip": "Pular", "skipTrashMessage": "Pular lixeira e deletar imediatamente", "unarchive": "Desarquivar", "unarchiveDestinationLocationMessage": "Selecione a pasta de destino:", @@ -190,6 +207,7 @@ "uploadFiles": "Importando {files} arquivos...", "uploadFolder": "Pasta", "uploadMessage": "Selecionar uma opção para enviar.", + "uploadingFiles": "Carregando arquivos", "write": "Escrever" }, "search": { diff --git a/frontend/src/i18n/pt_PT.json b/frontend/src/i18n/pt_PT.json index 451962d914..a8aed6a767 100644 --- a/frontend/src/i18n/pt_PT.json +++ b/frontend/src/i18n/pt_PT.json @@ -2,26 +2,26 @@ "buttons": { "archive": "Arquivar", "cancel": "Cancelar", - "clear": "Clear", + "clear": "Limpar", "close": "Fechar", - "continue": "Continue", + "continue": "Continuar", "copy": "Copiar", - "copyDownloadLinkToClipboard": "Copy download link to clipboard", + "copyDownloadLinkToClipboard": "Copie o link de download para a área de transferência", "copyFile": "Copiar ficheiro", "copyToClipboard": "Copiar para o clipboard", "create": "Criar", - "decreaseFontSize": "Decrease font size", + "decreaseFontSize": "Diminuir o tamanho da letra", "delete": "Eliminar", "directorySizes": "Calcular tamanho de diretório", - "discardChanges": "Discard", + "discardChanges": "Descartar", "download": "Descarregar", "edit": "Editar", - "editAsText": "Edit as Text", + "editAsText": "Editar como texto", "file": "Ficheiro", "folder": "Pasta", - "fullScreen": "Toggle full screen", + "fullScreen": "Alternar ecrã inteiro", "hideDotfiles": "Esconder dotfiles", - "increaseFontSize": "Increase font size", + "increaseFontSize": "Aumentar o tamanho da letra", "info": "Info", "more": "Mais", "move": "Mover", @@ -29,35 +29,35 @@ "new": "Novo", "next": "Próximo", "ok": "OK", + "openDirect": "Ver texto em bruto", "openFile": "Abrir ficheiro", + "overrideAll": "Substitua todos os ficheiros na pasta de destino", "permalink": "Obter link permanente", "permissions": "Permissões", - "preview": "Preview", + "preview": "Visualizar", "previous": "Anterior", "publish": "Publicar", "rename": "Alterar o nome", + "renameAll": "Renomear todos os ficheiros (criar uma cópia)", "replace": "Substituir", "reportIssue": "Reportar erro", "save": "Guardar", - "saveChanges": "Save changes", + "saveChanges": "Guardar alterações", "schedule": "Agendar", "search": "Pesquisar", "select": "Selecionar", "selectMultiple": "Selecionar vários", "share": "Partilhar", "shell": "Toggle shell", - "stopSearch": "Stop searching", + "singleDecision": "Decida para cada ficheiro conflituante", + "skipAll": "Ignorar todos os ficheiros conflituantes", + "stopSearch": "Pare de procurar", "submit": "Submeter", "switchView": "Alterar vista", "toggleSidebar": "Alternar barra lateral", "unarchive": "Desarquivar", "update": "Atualizar", - "upload": "Enviar", - "openDirect": "View raw", - "overrideAll": "Replace all files in destination folder", - "skipAll": "Skip all conflicting files", - "renameAll": "Rename all files (create a copy)", - "singleDecision": "Decide for each conflicting file" + "upload": "Upload" }, "download": { "downloadFile": "Descarregar ficheiro", @@ -87,6 +87,7 @@ "semicolon": "Semicolon (;)" }, "csvTooLarge": "CSV file is too large for preview (\u003e5MB). Please download to view.", + "fileEncoding": "File Encoding", "files": "Ficheiros", "folders": "Pastas", "home": "Início", @@ -101,8 +102,7 @@ "size": "Tamanho", "sortByLastModified": "Ordenar pela última alteração", "sortByName": "Ordenar pelo nome", - "sortBySize": "Ordenar pelo tamanho", - "fileEncoding": "File Encoding" + "sortBySize": "Ordenar pelo tamanho" }, "help": { "click": "selecionar pasta ou ficheiro", @@ -140,23 +140,29 @@ "archiveMessage": "Escolha o nome e o formato do arquivo:", "copy": "Copiar", "copyMessage": "Escolha um lugar para onde copiar os ficheiros:", + "currentPassword": "A sua senha", + "currentPasswordMessage": "Enter your password to validate this action.", "currentlyNavigating": "A navegar em:", "deleteMessageMultiple": "Quer eliminar {count} ficheiro(s)?", "deleteMessageShare": "Tem a certeza de que quer apagar esta partilha ({path})?", "deleteMessageSingle": "Quer eliminar esta pasta/ficheiro?", "deleteTitle": "Eliminar ficheiros", - "deleteUser": "Are you sure you want to delete this user?", + "deleteUser": "Tem a certeza de que pretende eliminar este utilizador?", "directories": "Diretórios", "directoriesAndFiles": "Diretórios e ficheiros", - "discardEditorChanges": "Are you sure you wish to discard the changes you've made?", + "discardEditorChanges": "Tem a certeza de que pretende descartar as alterações efetuadas?", "displayName": "Nome:", "download": "Descarregar ficheiros", "downloadMessage": "Escolha o formato do ficheiro que quer descarregar.", "error": "Algo correu mal", "execute": "Executar", + "fastConflictResolve": "Na pasta de destino existem {count} ficheiros com o mesmo nome.", "fileInfo": "Informação do ficheiro", "files": "Ficheiros", + "filesInDest": "Ficheiros no destino", + "filesInOrigin": "Ficheiros na origem", "filesSelected": "{count} ficheiros selecionados.", + "forbiddenError": "Erro proibido", "group": "Grupo", "inodeCount": "({count} inodes)", "lastModified": "Última alteração", @@ -171,6 +177,7 @@ "numberFiles": "Número de ficheiros", "optionalPassword": "Senha opcional", "others": "Outros", + "override": "Reescrever", "owner": "Proprietário", "permissions": "Permissões", "read": "Ler", @@ -179,11 +186,15 @@ "renameMessage": "Insira um novo nome para", "replace": "Substituir", "replaceMessage": "Já existe um ficheiro com nome igual a um dos que está a tentar enviar. Quer substituí-lo?\n", - "resolution": "Resolution", + "replaceOrSkip": "Substitua ou ignore ficheiros", + "resolution": "Resolução", + "resolveConflict": "Quais os ficheiros que deseja manter?", "schedule": "Agendar", "scheduleMessage": "Escolha uma data para publicar este post.", "show": "Mostrar", + "singleConflictResolve": "Se selecionar ambas as versões, será adicionado um número ao nome do ficheiro copiado", "size": "Tamanho", + "skip": "Saltar", "skipTrashMessage": "Saltar o caixote do lixo e apagar imediatamente", "unarchive": "Desarquivar", "unarchiveDestinationLocationMessage": "Selecione o destino:", @@ -196,19 +207,8 @@ "uploadFiles": "A fazer upload de {files} ficheiros...", "uploadFolder": "Pasta", "uploadMessage": "Selecionar uma opção para enviar.", - "write": "Escrever", - "replaceOrSkip": "Replace or skip files", - "resolveConflict": "Which files do you want to keep?", - "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", - "fastConflictResolve": "The destination folder there are {count} files with same name.", - "uploadingFiles": "Uploading files", - "filesInOrigin": "Files in origin", - "filesInDest": "Files in destination", - "override": "Overwrite", - "skip": "Skip", - "forbiddenError": "Forbidden Error", - "currentPassword": "Your password", - "currentPasswordMessage": "Enter your password to validate this action." + "uploadingFiles": "Carregando os ficheiros", + "write": "Escrever" }, "search": { "images": "Imagens", @@ -271,7 +271,7 @@ "execute": "Executar comandos", "modify": "Editar ficheiros", "rename": "Alterar o nome ou mover ficheiros e pastas", - "share": "Share files (require download permission)" + "share": "Partilhar ficheiros" }, "permissions": "Permissões", "permissionsHelp": "Pode definir o utilizador como administrador ou escolher as permissões manualmente. Se selecionar a opção \"Administrador\", todas as outras opções serão automaticamente selecionadas. A gestão dos utilizadores é um privilégio restringido aos administradores.\n", diff --git a/frontend/src/i18n/ru_RU.json b/frontend/src/i18n/ru_RU.json index ff99d00775..c3062fd956 100644 --- a/frontend/src/i18n/ru_RU.json +++ b/frontend/src/i18n/ru_RU.json @@ -2,22 +2,26 @@ "buttons": { "archive": "Архивировать", "cancel": "Отмена", - "clear": "Clear", + "clear": "Очистить", "close": "Закрыть", - "continue": "Continue", + "continue": "Продолжить", "copy": "Копировать", - "copyDownloadLinkToClipboard": "Copy download link to clipboard", + "copyDownloadLinkToClipboard": "Скопировать ссылку для скачивания в буфер обмена", "copyFile": "Скопировать файл", "copyToClipboard": "Скопировать в буфер", "create": "Создать", + "decreaseFontSize": "Уменьшить размер шрифта", "delete": "Удалить", "directorySizes": "Посчитать размеры каталогов", + "discardChanges": "Отменить", "download": "Скачать", "edit": "Edit", + "editAsText": "Редактировать как текст", "file": "Файл", "folder": "Папка", - "fullScreen": "Toggle full screen", + "fullScreen": "Переключить полноэкранный режим", "hideDotfiles": "Скрыть дотфайлы", + "increaseFontSize": "Увеличьте размер шрифта", "info": "Инфо", "more": "Ещё", "move": "Переместить", @@ -25,39 +29,35 @@ "new": "Новый", "next": "Вперёд", "ok": "OK", + "openDirect": "Просмотреть исходный код", "openFile": "Открыть файл", + "overrideAll": "Замените все файлы в целевой папке", "permalink": "Получить постоянную ссылку", "permissions": "Права доступа", - "preview": "Preview", + "preview": "Превью", "previous": "Назад", "publish": "Опубликовать", "rename": "Переименовать", + "renameAll": "Переименуйте все файлы (создайте их копии)", "replace": "Перезаписать", "reportIssue": "Сообщить о проблеме", "save": "Сохранить", + "saveChanges": "Сохранить изменения", "schedule": "Планировка", "search": "Поиск", "select": "Выбрать", "selectMultiple": "Мультивыбор", "share": "Поделиться", "shell": "Командная строка", - "stopSearch": "Stop searching", + "singleDecision": "Принимайте решения по каждому конфликтующему файлу", + "skipAll": "Пропустить все конфликтующие файлы", + "stopSearch": "Прекратите поиски", "submit": "Отправить", "switchView": "Вид", "toggleSidebar": "Боковая панель", "unarchive": "Разархивировать", "update": "Обновить", - "upload": "Загрузить", - "openDirect": "View raw", - "discardChanges": "Отказаться", - "saveChanges": "Сохранить", - "editAsText": "Редактировать как текст", - "increaseFontSize": "Увеличить размер шрифта", - "decreaseFontSize": "Уменьшить размер шрифта", - "overrideAll": "Replace all files in destination folder", - "skipAll": "Skip all conflicting files", - "renameAll": "Rename all files (create a copy)", - "singleDecision": "Decide for each conflicting file" + "upload": "Загрузить" }, "download": { "downloadFile": "Скачать файл", @@ -79,6 +79,15 @@ "files": { "body": "Тело", "closePreview": "Закрыть", + "columnSeparator": "Column Separator", + "csvLoadFailed": "Failed to load CSV file.", + "csvSeparators": { + "both": "Both (,) and (;)", + "comma": "Comma (,)", + "semicolon": "Semicolon (;)" + }, + "csvTooLarge": "CSV file is too large for preview (\u003e5MB). Please download to view.", + "fileEncoding": "File Encoding", "files": "Файлы", "folders": "Папки", "home": "Главная", @@ -89,20 +98,11 @@ "multipleSelectionEnabled": "Мультивыбор включен", "name": "Имя", "noPreview": "Предварительный просмотр этого файла недоступен.", + "showingRows": "Showing {count} row(s)", "size": "Размер", "sortByLastModified": "Сортировка по дате изменения", "sortByName": "Сортировка по имени", - "sortBySize": "Сортировка по размеру", - "csvTooLarge": "Этот CSV файл слишком большой для предпросмотра (>5 МБ). Скачайте и откройте его локально.", - "csvLoadFailed": "Не удалось загрузить этот CSV.", - "showingRows": "Отображается {count} строк(а)", - "columnSeparator": "Разделитель столбцов", - "csvSeparators": { - "comma": "Запятая (,)", - "semicolon": "Точка с запятой (;)", - "both": "Оба варианта — (,) и (;)" - }, - "fileEncoding": "File Encoding" + "sortBySize": "Сортировка по размеру" }, "help": { "click": "выбрать файл или каталог", @@ -140,22 +140,29 @@ "archiveMessage": "Выберите имя и формат архива:", "copy": "Копирование", "copyMessage": "Копировать в:", + "currentPassword": "Ваш пароль", + "currentPasswordMessage": "Enter your password to validate this action.", "currentlyNavigating": "Текущий каталог:", "deleteMessageMultiple": "Удалить ({count}) файл(ы/ов)?", "deleteMessageShare": "Вы уверены, что хотите удалить этот общий доступ ({path})?", "deleteMessageSingle": "Удалить этот файл/каталог?", "deleteTitle": "Удаление файлов", - "deleteUser": "Are you sure you want to delete this user?", + "deleteUser": "Вы уверены, что хотите удалить этого пользователя?", "directories": "Каталоги", "directoriesAndFiles": "Каталоги и файлы", + "discardEditorChanges": "Вы уверены, что хотите отменить внесенные изменения?", "displayName": "Отображаемое имя:", "download": "Скачивание файлов", "downloadMessage": "Выберите формат, в котором хотите скачать.", "error": "Ошибка", "execute": "Выполнение", + "fastConflictResolve": "В целевой папке находятся {count} файлы с одинаковым именем.", "fileInfo": "Информация о файле", "files": "Файлы", + "filesInDest": "Файлы в месте назначения", + "filesInOrigin": "Исходные файлы", "filesSelected": "Файлов выбрано: {count}.", + "forbiddenError": "Запрещенная ошибка", "group": "Группа", "inodeCount": "(количество инодов: {count})", "lastModified": "Последнее изменение", @@ -170,6 +177,7 @@ "numberFiles": "Количество файлов", "optionalPassword": "Дополнительный пароль", "others": "Другие", + "override": "Перезаписать", "owner": "Владелец", "permissions": "Права доступа", "read": "Чтение", @@ -178,10 +186,15 @@ "renameMessage": "Новое имя", "replace": "Замена", "replaceMessage": "Имя одного из загружаемых файлов совпадает с уже существующим файлом. Вы хотите заменить существующий?\n", + "replaceOrSkip": "Заменить или пропустить файлы", + "resolution": "Разрешение", + "resolveConflict": "Какие файлы вы хотите сохранить?", "schedule": "Планировка", "scheduleMessage": "Выберите дату и время публикации этой записи.", "show": "Показать", + "singleConflictResolve": "Если вы выберете обе версии, к имени скопированного файла будет добавлен номер", "size": "Размер", + "skip": "Пропустить", "skipTrashMessage": "Удалить, не сохраняя в корзину", "unarchive": "Разархивирование", "unarchiveDestinationLocationMessage": "Выберите место назначения:", @@ -194,21 +207,8 @@ "uploadFiles": "Uploading {files} files...", "uploadFolder": "Папка", "uploadMessage": "Выберите вариант для загрузки.", - "write": "Запись", - "resolution": "Разрешение", - "discardEditorChanges": "Вы действительно желаете отменить ваши правки?", - "replaceOrSkip": "Replace or skip files", - "resolveConflict": "Which files do you want to keep?", - "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", - "fastConflictResolve": "The destination folder there are {count} files with same name.", - "uploadingFiles": "Uploading files", - "filesInOrigin": "Files in origin", - "filesInDest": "Files in destination", - "override": "Overwrite", - "skip": "Skip", - "forbiddenError": "Forbidden Error", - "currentPassword": "Your password", - "currentPasswordMessage": "Enter your password to validate this action." + "uploadingFiles": "Загрузка файлов", + "write": "Запись" }, "search": { "images": "Изображения", @@ -271,7 +271,7 @@ "execute": "Выполнять команды", "modify": "Редактировать файлы", "rename": "Переименовывать или перемещать файлы и каталоги", - "share": "Share files (require download permission)" + "share": "Делиться файлами" }, "permissions": "Права доступа", "permissionsHelp": "Можно настроить пользователя как администратора или выбрать разрешения индивидуально. При выборе \"Администратор\", все параметры будут выбраны автоматически. Управление пользователями - привилегия администратора.", diff --git a/frontend/src/i18n/tr_TR.json b/frontend/src/i18n/tr_TR.json index 56a3dd1771..770630a65b 100644 --- a/frontend/src/i18n/tr_TR.json +++ b/frontend/src/i18n/tr_TR.json @@ -2,26 +2,26 @@ "buttons": { "archive": "Arşivle", "cancel": "İptal et", - "clear": "Clear", + "clear": "Temizle", "close": "Kapat", - "continue": "Continue", + "continue": "Devam", "copy": "Kopyala", - "copyDownloadLinkToClipboard": "Copy download link to clipboard", + "copyDownloadLinkToClipboard": "İndirme bağlantısını panoya kopyala", "copyFile": "Dosyayı kopyala", "copyToClipboard": "Panoya kopyala", "create": "Yarat", - "decreaseFontSize": "Decrease font size", + "decreaseFontSize": "Yazı tipi boyutunu küçültün", "delete": "Sil", "directorySizes": "Dizin boyutlarını hesapla", - "discardChanges": "Discard", + "discardChanges": "Sil", "download": "İndir", "edit": "Düzenle", - "editAsText": "Edit as Text", + "editAsText": "Metin olarak düzenle", "file": "Dosya", "folder": "Klasör", - "fullScreen": "Toggle full screen", + "fullScreen": "Tam ekranı aç/kapat", "hideDotfiles": "Nokta dosyalarını gizle", - "increaseFontSize": "Increase font size", + "increaseFontSize": "Yazı tipi boyutunu büyüt", "info": "Bilgi", "more": "Devamı", "move": "Taşı", @@ -29,24 +29,29 @@ "new": "Yeni", "next": "Sonraki", "ok": "Tamam", + "openDirect": "Ham görüntüyü görüntüle", "openFile": "Dosyayı aç", + "overrideAll": "Hedef klasördeki tüm dosyaları değiştirin", "permalink": "Kalıcı Bağlantı Al", "permissions": "İzinler", - "preview": "Preview", + "preview": "Önizle", "previous": "Önceki", "publish": "Yayınla", "rename": "Adı değiştir", + "renameAll": "Tüm dosyaları yeniden adlandırın (kopyasını oluşturun)", "replace": "Değiştir", "reportIssue": "Sorun Bildir", "save": "Kaydet", - "saveChanges": "Save changes", + "saveChanges": "Kaydet", "schedule": "Planla", "search": "Ara", "select": "Seç", "selectMultiple": "Çoklu seç", "share": "Paylaş", "shell": "Kabuğu aç/kapat", - "stopSearch": "Stop searching", + "singleDecision": "Her bir çakışan dosya için ayrı ayrı karar verin", + "skipAll": "Çakışan tüm dosyaları atla", + "stopSearch": "Aramayı bırakın", "submit": "Gönder", "switchView": "Görünümü değiştir", "toggleSidebar": "Yan menüyü aç/kapat", @@ -82,6 +87,7 @@ "semicolon": "Semicolon (;)" }, "csvTooLarge": "CSV file is too large for preview (\u003e5MB). Please download to view.", + "fileEncoding": "File Encoding", "files": "Dosyalar", "folders": "Klasörler", "home": "Anasayfa", @@ -108,7 +114,7 @@ "del": "seçili kalemleri sil", "doubleClick": "dosya veya dizini açar", "esc": "seçimi temizler ve/veya istemi kapatır", - "f1": "this information", + "f1": "bu bilgi", "f2": "adı değiştir", "help": "Yardım" }, @@ -134,23 +140,29 @@ "archiveMessage": "Arşiv adı ve biçimi seçin:", "copy": "Kopyala", "copyMessage": "Dosyalarınızı kopyalayacağınız yeri seçin:", + "currentPassword": "Şifreniz", + "currentPasswordMessage": "Enter your password to validate this action.", "currentlyNavigating": "Şu anda buradasınız:", "deleteMessageMultiple": "{count} dosyayı silmek istediğinizden emin misiniz?", "deleteMessageShare": "Bu paylaşımı({path}) silmek istediğinizden emin misiniz?", "deleteMessageSingle": "Bu dosyayı/klasörü silmek istediğinizden emin misiniz?", "deleteTitle": "Dosyaları sil", - "deleteUser": "Are you sure you want to delete this user?", + "deleteUser": "Bu kullanıcıyı silmek istediğinizden emin misiniz?", "directories": "Dizinler", "directoriesAndFiles": "Dizinler ve dosyalar", - "discardEditorChanges": "Are you sure you wish to discard the changes you've made?", + "discardEditorChanges": "Yaptığınız değişiklikleri gerçekten geri almak istediğinizden emin misiniz?", "displayName": "Görünecek Ad:", "download": "Dosyaları indir", "downloadMessage": "İndirmek istediğiniz formatı seçin.", "error": "Bir hata ile karşılaştık", "execute": "Uygula", + "fastConflictResolve": "Hedef klasörde aynı ada sahip {count} dosya var.", "fileInfo": "Dosya ayrıntıları", "files": "Dosyalar", + "filesInDest": "Hedefteki dosyalar", + "filesInOrigin": "Dosyaların kaynağı", "filesSelected": "{count} dosya seçildi.", + "forbiddenError": "Yasaklanmış Hata", "group": "Grup", "inodeCount": "({count} düğüm)", "lastModified": "Son değişiklik", @@ -165,6 +177,7 @@ "numberFiles": "Dosya sayısı", "optionalPassword": "İsteğe bağlı şifre", "others": "Diğerleri", + "override": "Üzerine yazılsın", "owner": "Sahibi", "permissions": "İzinler", "read": "Oku", @@ -173,11 +186,15 @@ "renameMessage": "Şunun için yeni bir ad girin:", "replace": "Değiştir", "replaceMessage": "Yüklemeye çalıştığınız dosyalardan birinin adı aynı. Mevcut olanı değiştirmek istiyor musunuz?", - "resolution": "Resolution", + "replaceOrSkip": "Dosyaları değiştir veya atla", + "resolution": "Çözünürlük", + "resolveConflict": "Hangi dosyaları saklamak istiyorsunuz?", "schedule": "Planla", "scheduleMessage": "Bu gönderinin yayınlanmasını planlamak için bir tarih ve saat seçin.", "show": "Göster", + "singleConflictResolve": "Her iki sürümü de seçerseniz, kopyalanan dosyanın adına bir sayı eklenecektir", "size": "Boyut", + "skip": "Geç", "skipTrashMessage": "Çöp kutusunu atlayıp hemen sil", "unarchive": "Arşivden çıkar", "unarchiveDestinationLocationMessage": "Hedefi seçin:", @@ -190,6 +207,7 @@ "uploadFiles": "{files} dosyası yükleniyor...", "uploadFolder": "Klasör", "uploadMessage": "Yükleme seçeneğini belirleyin.", + "uploadingFiles": "Dosyalar yükleniyor", "write": "Yaz" }, "search": { diff --git a/frontend/src/i18n/uk_UA.json b/frontend/src/i18n/uk_UA.json index 6253ff1793..4e1d4fefd4 100644 --- a/frontend/src/i18n/uk_UA.json +++ b/frontend/src/i18n/uk_UA.json @@ -2,26 +2,26 @@ "buttons": { "archive": "Архівувати", "cancel": "Скасувати", - "clear": "Clear", + "clear": "Очистити", "close": "Закрити", - "continue": "Continue", + "continue": "Продовжити", "copy": "Копіювати", - "copyDownloadLinkToClipboard": "Copy download link to clipboard", + "copyDownloadLinkToClipboard": "Скопіювати посилання для завантаження в буфер обміну", "copyFile": "Копіювати файл", "copyToClipboard": "Копіювати в буфер обміну", "create": "Створити", - "decreaseFontSize": "Decrease font size", + "decreaseFontSize": "Зменшити розмір шрифту", "delete": "Видалити", "directorySizes": "Порахувати розміри каталогів", - "discardChanges": "Discard", + "discardChanges": "Отменить", "download": "Скачати", "edit": "Edit", - "editAsText": "Edit as Text", + "editAsText": "Редагувати як текст", "file": "Файл", "folder": "Папка", - "fullScreen": "Toggle full screen", + "fullScreen": "Перемикання повноекранного режиму", "hideDotfiles": "Сховати дотфайли", - "increaseFontSize": "Increase font size", + "increaseFontSize": "Збільшити розмір шрифту", "info": "Інфо", "more": "Більше", "move": "Перемістити", @@ -29,24 +29,29 @@ "new": "Новий", "next": "Вперед", "ok": "OK", + "openDirect": "Переглянути необроблені дані", "openFile": "Відкрити файл", + "overrideAll": "Замінити всі файли в папці призначення", "permalink": "Отримати постійне посилання", "permissions": "Права доступу", - "preview": "Preview", + "preview": "Превью", "previous": "Назад", "publish": "Опублікувати", "rename": "Перейменувати", + "renameAll": "Перейменувати всі файли (створити копію)", "replace": "Замінити", "reportIssue": "Повідомити про проблему", "save": "Зберегти", - "saveChanges": "Save changes", + "saveChanges": "Зберегти зміни", "schedule": "Запланувати", "search": "Пошук", "select": "Вибрати", "selectMultiple": "Вибрати кілька", "share": "Поділитися", "shell": "Командний рядок", - "stopSearch": "Stop searching", + "singleDecision": "Визначте для кожного конфліктуючого файлу", + "skipAll": "Пропустити всі конфліктуючі файли", + "stopSearch": "Припинити пошук", "submit": "Відправити", "switchView": "Вигляд", "toggleSidebar": "Бокове меню", @@ -82,6 +87,7 @@ "semicolon": "Semicolon (;)" }, "csvTooLarge": "CSV file is too large for preview (\u003e5MB). Please download to view.", + "fileEncoding": "File Encoding", "files": "Файли", "folders": "Папки", "home": "Головна", @@ -134,23 +140,29 @@ "archiveMessage": "Виберіть ім'я та формат архіву:", "copy": "Копіювання", "copyMessage": "Виберіть, куди буде скопійовано ваші файли:", + "currentPassword": "Ваш пароль", + "currentPasswordMessage": "Enter your password to validate this action.", "currentlyNavigating": "Поточний каталог:", "deleteMessageMultiple": "Ви впевнені, що хочете видалити {count} файл(и/ів)?", "deleteMessageShare": "Ви впевнені, що хочете видалити цей спільний доступ ({path})?", "deleteMessageSingle": "Ви впевнені, що хочете видалити цей файл/папку?", "deleteTitle": "Видалення файлів", - "deleteUser": "Are you sure you want to delete this user?", + "deleteUser": "Ви впевнені, що хочете видалити цього користувача?", "directories": "Каталоги", "directoriesAndFiles": "Каталоги та файли", - "discardEditorChanges": "Are you sure you wish to discard the changes you've made?", + "discardEditorChanges": "Ви впевнені, що хочете скасувати внесені зміни?", "displayName": "Ім'я для показу:", "download": "Скачування файлів", "downloadMessage": "Виберіть формат, який потрібно завантажити.", "error": "Щось пішло не так", "execute": "Виконання", + "fastConflictResolve": "У папці призначення знаходяться {count} файли з однаковими іменами.", "fileInfo": "Інформація про файл", "files": "Файли", + "filesInDest": "Файли в місці призначення", + "filesInOrigin": "Файли у вихідному вигляді", "filesSelected": "Вибрано файлів: {count}", + "forbiddenError": "Заборонена помилка", "group": "Група", "inodeCount": "(кількість інодів: {count})", "lastModified": "Остання зміна", @@ -165,6 +177,7 @@ "numberFiles": "Кількість файлів", "optionalPassword": "Додатковий пароль", "others": "Інші", + "override": "Перезаписати", "owner": "Власник", "permissions": "Права доступу", "read": "Читання", @@ -173,11 +186,15 @@ "renameMessage": "Вставте нове ім'я для", "replace": "Заміна", "replaceMessage": "Один з файлів, який ви намагаєтеся завантажити має назву файлу, що вже існує. Ви хочете замінити наявний файл?", - "resolution": "Resolution", + "replaceOrSkip": "Замінити або пропустити файли", + "resolution": "Роздільна здатність", + "resolveConflict": "Які файли ви хочете зберегти?", "schedule": "Планування", "scheduleMessage": "Виберіть дату та час публікації цього запису.", "show": "Показати", + "singleConflictResolve": "Якщо вибрати обидві версії, до назви скопійованого файлу буде додано число", "size": "Розмір", + "skip": "Пропустити", "skipTrashMessage": "Видалити без збереження в кошик", "unarchive": "Розархівування", "unarchiveDestinationLocationMessage": "Виберіть місце призначення:", @@ -190,6 +207,7 @@ "uploadFiles": "Uploading {files} files...", "uploadFolder": "Папка", "uploadMessage": "Виберіть опцію для завантаження.", + "uploadingFiles": "Завантаження файлів", "write": "Запис" }, "search": { diff --git a/frontend/src/i18n/zh_CN.json b/frontend/src/i18n/zh_CN.json index ef9bcad361..5ee5c17e48 100644 --- a/frontend/src/i18n/zh_CN.json +++ b/frontend/src/i18n/zh_CN.json @@ -2,22 +2,26 @@ "buttons": { "archive": "压缩", "cancel": "取消", - "clear": "Clear", + "clear": "清空", "close": "关闭", - "continue": "Continue", + "continue": "继续", "copy": "复制", - "copyDownloadLinkToClipboard": "Copy download link to clipboard", + "copyDownloadLinkToClipboard": "复制下载链接到剪贴板", "copyFile": "复制文件", "copyToClipboard": "复制到剪贴板", "create": "创建", + "decreaseFontSize": "减小字体大小", "delete": "删除", "directorySizes": "计算文件夹大小", + "discardChanges": "丢弃", "download": "下载", "edit": "修改", + "editAsText": "编辑为文本", "file": "文件", "folder": "文件夹", - "fullScreen": "Toggle full screen", + "fullScreen": "切换全屏", "hideDotfiles": "不显示隐藏的文件", + "increaseFontSize": "增大字体大小", "info": "信息", "more": "更多", "move": "移动", @@ -25,39 +29,35 @@ "new": "新", "next": "下一个", "ok": "确定", + "openDirect": "查看原始数据", "openFile": "打开文件", + "overrideAll": "替换目标文件夹中的所有文件", "permalink": "获取永久链接", "permissions": "权限", - "preview": "Preview", + "preview": "预览", "previous": "上一个", "publish": "发布", "rename": "重命名", + "renameAll": "重命名所有文件(创建副本)", "replace": "替换", "reportIssue": "报告问题", "save": "保存", + "saveChanges": "保存更改", "schedule": "计划", "search": "搜索", "select": "选择", "selectMultiple": "选择多个", "share": "分享", "shell": "激活 shell", + "singleDecision": "针对每个冲突的文件做出决定", + "skipAll": "跳过所有冲突文件", + "stopSearch": "停止搜索", "submit": "提交", "switchView": "切换显示方式", "toggleSidebar": "切换侧边栏", "unarchive": "解压缩", "update": "更新", - "upload": "上传", - "openDirect": "View raw", - "discardChanges": "放弃更改", - "stopSearch": "停止搜索", - "saveChanges": "保存更改", - "editAsText": "以文本形式编辑", - "increaseFontSize": "增大字体大小", - "decreaseFontSize": "减小字体大小", - "overrideAll": "Replace all files in destination folder", - "skipAll": "Skip all conflicting files", - "renameAll": "Rename all files (create a copy)", - "singleDecision": "Decide for each conflicting file" + "upload": "上传" }, "download": { "downloadFile": "下载文件", @@ -79,6 +79,15 @@ "files": { "body": "内容", "closePreview": "关闭预览", + "columnSeparator": "Column Separator", + "csvLoadFailed": "Failed to load CSV file.", + "csvSeparators": { + "both": "Both (,) and (;)", + "comma": "Comma (,)", + "semicolon": "Semicolon (;)" + }, + "csvTooLarge": "CSV file is too large for preview (\u003e5MB). Please download to view.", + "fileEncoding": "File Encoding", "files": "文件", "folders": "文件夹", "home": "主页", @@ -89,20 +98,11 @@ "multipleSelectionEnabled": "多选模式已开启", "name": "名称", "noPreview": "此文件暂时不支持预览。", + "showingRows": "Showing {count} row(s)", "size": "大小", "sortByLastModified": "按最后修改时间排序", "sortByName": "按名称排序", - "sortBySize": "按大小排序", - "csvTooLarge": "CSV文件大到无法预览(>5MB)。请下载查看。", - "csvLoadFailed": "加载 CSV 文件失败。", - "showingRows": "正在显示 {count} 行", - "columnSeparator": "列分隔符", - "csvSeparators": { - "comma": "逗号 (,)", - "semicolon": "分号 (;)", - "both": "逗号 (,) 和分号 (;)" - }, - "fileEncoding": "File Encoding" + "sortBySize": "按大小排序" }, "help": { "click": "选择文件或目录", @@ -140,22 +140,29 @@ "archiveMessage": "设置压缩包名称和格式:", "copy": "复制", "copyMessage": "请选择欲复制至的目录:", + "currentPassword": "您的密码", + "currentPasswordMessage": "Enter your password to validate this action.", "currentlyNavigating": "当前目录:", "deleteMessageMultiple": "你确定要删除这 {count} 个文件吗?", "deleteMessageShare": "你确定要删除这个分享({path})吗?", "deleteMessageSingle": "你确定要删除这个文件/文件夹吗?", "deleteTitle": "删除文件", - "deleteUser": "Are you sure you want to delete this user?", + "deleteUser": "您确定要删除此用户吗?", "directories": "目录", "directoriesAndFiles": "目录和文件", + "discardEditorChanges": "您确定要放弃您所做的更改吗?", "displayName": "名称:", "download": "下载文件", "downloadMessage": "请选择要下载的压缩格式。", "error": "出了一点问题...", "execute": "执行", + "fastConflictResolve": "目标文件夹中有 {count} 个同名文件。", "fileInfo": "文件信息", "files": "文件", + "filesInDest": "目标位置的文件", + "filesInOrigin": "源文件", "filesSelected": "已选择 {count} 个文件。", + "forbiddenError": "禁止错误", "group": "组", "inodeCount": "({count} inodes)", "lastModified": "最后修改", @@ -170,6 +177,7 @@ "numberFiles": "文件数", "optionalPassword": "密码(选填,不填即无密码)", "others": "其他", + "override": "覆盖", "owner": "所有者", "permissions": "权限", "read": "读取", @@ -178,10 +186,15 @@ "renameMessage": "请输入新名称,旧名称为:", "replace": "替换", "replaceMessage": "您尝试上传的文件中有一个与现有文件的名称存在冲突。是否替换现有的同名文件?", + "replaceOrSkip": "替换或跳过文件", + "resolution": "解决", + "resolveConflict": "你想保留哪些文件?", "schedule": "计划", "scheduleMessage": "请选择发布这篇帖子的日期与时间。", "show": "点击以显示", + "singleConflictResolve": "如果同时选择这两个版本,复制的文件名称后会添加一个数字。", "size": "大小", + "skip": "跳过", "skipTrashMessage": "跳过回收站并立即删除", "unarchive": "解压缩", "unarchiveDestinationLocationMessage": "选择目的地:", @@ -194,21 +207,8 @@ "uploadFiles": "正在上传 {files} 个文件...", "uploadFolder": "文件夹", "uploadMessage": "选择上传选项。", - "write": "写入", - "resolution": "分辨率", - "discardEditorChanges": "你确定要放弃所做的更改吗?", - "replaceOrSkip": "Replace or skip files", - "resolveConflict": "Which files do you want to keep?", - "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", - "fastConflictResolve": "The destination folder there are {count} files with same name.", - "uploadingFiles": "Uploading files", - "filesInOrigin": "Files in origin", - "filesInDest": "Files in destination", - "override": "Overwrite", - "skip": "Skip", - "forbiddenError": "Forbidden Error", - "currentPassword": "Your password", - "currentPasswordMessage": "Enter your password to validate this action." + "uploadingFiles": "上载档案", + "write": "写入" }, "search": { "images": "图像", @@ -239,6 +239,7 @@ "commandsUpdated": "命令已更新!", "createUserDir": "在添加新用户的同时自动创建用户的个人目录", "createUserHomeDirectory": "创建用户主目录", + "currentPassword": "Your Current Password", "customStylesheet": "自定义样式表(CSS)", "defaultUserDescription": "这些是新用户的默认设置。", "disableExternalLinks": "禁止外部链接(帮助文档除外)", @@ -270,13 +271,13 @@ "execute": "执行命令", "modify": "编辑", "rename": "重命名或移动文件和文件夹", - "share": "Share files (require download permission)" + "share": "分享文件" }, "permissions": "权限", "permissionsHelp": "您可以将该用户设置为管理员,也可以单独选择各项权限。如果选择了“管理员”,则其他的选项会被自动勾上,同时该用户可以管理其他用户。", "profileSettings": "个人设置", - "redirectAfterCopyMove": "复制/移动后转到目标位置", - "ruleExample1": "阻止用户访问所有文件夹下任何以 . 开头的文件(隐藏文件, 例如: .git, .gitignore)。\n", + "redirectAfterCopyMove": "Redirect to destination after copy/move", + "ruleExample1": "阻止用户访问所有文件夹下任何以 . 开头的文件(隐藏文件, 例如: .git, .gitignore)。", "ruleExample2": "阻止用户访问其目录范围的根目录下名为 Caddyfile 的文件。", "rules": "规则", "rulesHelp": "您可以为该用户制定一组黑名单或白名单式的规则,被屏蔽的文件将不会显示在列表中,用户也无权限访问,支持相对于目录范围的路径。", @@ -308,8 +309,7 @@ "userScopeGenerationPlaceholder": "范围将自动生成", "userUpdated": "用户已更新!", "username": "用户名", - "users": "用户", - "currentPassword": "您当前的密码" + "users": "用户" }, "sidebar": { "help": "帮助",