From 85096f74160e5ff8a14de49d67502ef6e5e88a0a Mon Sep 17 00:00:00 2001 From: q3k Date: Wed, 21 May 2025 12:54:38 +0200 Subject: [PATCH 01/51] Do not respond to right alt (Alt Gr) keyboard events. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On some keyboard layouts (eg. pl) the right alt key (a.k.a. Alt Gr) is used in combination with letters to type special characters, eg. AltGr-C makes a 'ć' on a pl keyboard layout. At least on Firefox on macOS it seems like events that would otherwise result in a special character still get passed to keydown and friends. This means that if etherpad handles alt-c, it might swallow someone's intent to type in 'ć' and instead open up the chat window. This could arguably be a bug in Firefox or macOS, as the same doesn't happen in Firefox on Linux/X11. But before I bring the discussion to a wider audience I'd like to at least make the issue go away at etherpad level. --- src/static/js/ace2_inner.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/static/js/ace2_inner.ts b/src/static/js/ace2_inner.ts index 709840f80..654042d69 100644 --- a/src/static/js/ace2_inner.ts +++ b/src/static/js/ace2_inner.ts @@ -2526,7 +2526,15 @@ function Ace2Inner(editorInfo, cssManagers) { const handleKeyEvent = (evt) => { if (!isEditable) return; - const {type, charCode, keyCode, which, altKey, shiftKey} = evt; + const {type, charCode, keyCode, which, shiftKey} = evt; + + // If DOM3 support exists, ensure that the left ALT key was pressed. This + // allows keyboard layouts with special meaning for right-alt-char to + // continue working on Firefox / macOS. + let altKey = evt.altKey; + if (evt.originalEvent.location !== undefined) { + altKey = altKey && evt.originalEvent.location === evt.originalEvent.DOM_KEY_LOCATION_LEFT; + } // Don't take action based on modifier keys going up and down. // Modifier keys do not generate "keypress" events. From 4485c689ac7b7cfef53223c31133073d6c6631c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20M=C3=BCller?= Date: Sat, 28 Jun 2025 11:26:38 +0200 Subject: [PATCH 02/51] use node lts docker image instead of newest version --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index eccecab90..9e4a0dfb7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,7 +5,7 @@ # Author: muxator ARG BUILD_ENV=git -FROM node:alpine AS adminbuild +FROM node:lts-alpine AS adminbuild RUN npm install -g pnpm@latest WORKDIR /opt/etherpad-lite COPY . . @@ -13,7 +13,7 @@ RUN pnpm install RUN pnpm run build:ui -FROM node:alpine AS build +FROM node:lts-alpine AS build LABEL maintainer="Etherpad team, https://github.com/ether/etherpad-lite" # Set these arguments when building the image from behind a proxy From 4ed3cee57fdc279c5d1c807aa25ed79cbebeeab3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Jun 2025 17:00:00 +0000 Subject: [PATCH 03/51] Bump express-rate-limit from 7.5.0 to 7.5.1 Bumps [express-rate-limit](https://github.com/express-rate-limit/express-rate-limit) from 7.5.0 to 7.5.1. - [Release notes](https://github.com/express-rate-limit/express-rate-limit/releases) - [Commits](https://github.com/express-rate-limit/express-rate-limit/compare/v7.5.0...v7.5.1) --- updated-dependencies: - dependency-name: express-rate-limit dependency-version: 7.5.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pnpm-lock.yaml | 12 ++++++------ src/package.json | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 989549452..a414e0b80 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -168,8 +168,8 @@ importers: specifier: 4.21.2 version: 4.21.2 express-rate-limit: - specifier: ^7.5.0 - version: 7.5.0(express@4.21.2) + specifier: ^7.5.1 + version: 7.5.1(express@4.21.2) fast-deep-equal: specifier: ^3.1.3 version: 3.1.3 @@ -3050,11 +3050,11 @@ packages: resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==} engines: {node: '>=12.0.0'} - express-rate-limit@7.5.0: - resolution: {integrity: sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg==} + express-rate-limit@7.5.1: + resolution: {integrity: sha512-7iN8iPMDzOMHPUYllBEsQdWVB6fPDMPqwjBaFrgr4Jgr/+okjvzAy+UHlYYL/Vs0OsOrMkwS6PJDkFlJwoxUnw==} engines: {node: '>= 16'} peerDependencies: - express: ^4.11 || 5 || ^5.0.0-beta.1 + express: '>= 4.11' express@4.21.2: resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} @@ -7950,7 +7950,7 @@ snapshots: expect-type@1.2.1: {} - express-rate-limit@7.5.0(express@4.21.2): + express-rate-limit@7.5.1(express@4.21.2): dependencies: express: 4.21.2 diff --git a/src/package.json b/src/package.json index 6d827911d..c5298e442 100644 --- a/src/package.json +++ b/src/package.json @@ -39,7 +39,7 @@ "ejs": "^3.1.10", "esbuild": "^0.25.5", "express": "4.21.2", - "express-rate-limit": "^7.5.0", + "express-rate-limit": "^7.5.1", "fast-deep-equal": "^3.1.3", "find-root": "1.1.0", "formidable": "^3.5.4", From ba5e653456a1f8a50411206e52c638ee219886bb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Jun 2025 17:09:26 +0000 Subject: [PATCH 04/51] Bump axios from 1.8.4 to 1.10.0 Bumps [axios](https://github.com/axios/axios) from 1.8.4 to 1.10.0. - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v1.8.4...v1.10.0) --- updated-dependencies: - dependency-name: axios dependency-version: 1.10.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- bin/package.json | 2 +- pnpm-lock.yaml | 30 +++++++++++++++--------------- src/package.json | 2 +- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/bin/package.json b/bin/package.json index 01464c2a4..24009172d 100644 --- a/bin/package.json +++ b/bin/package.json @@ -7,7 +7,7 @@ "doc": "doc" }, "dependencies": { - "axios": "^1.8.4", + "axios": "^1.10.0", "ep_etherpad-lite": "workspace:../src", "log4js": "^6.9.1", "semver": "^7.7.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a414e0b80..886578923 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -104,8 +104,8 @@ importers: bin: dependencies: axios: - specifier: ^1.8.4 - version: 1.8.4 + specifier: ^1.10.0 + version: 1.10.0 ep_etherpad-lite: specifier: workspace:../src version: link:../src @@ -136,7 +136,7 @@ importers: devDependencies: vitepress: specifier: ^1.6.3 - version: 1.6.3(@algolia/client-search@5.23.2)(@types/node@24.0.1)(axios@1.8.4)(jwt-decode@4.0.0)(postcss@8.5.3)(typescript@5.8.3) + version: 1.6.3(@algolia/client-search@5.23.2)(@types/node@24.0.1)(axios@1.10.0)(jwt-decode@4.0.0)(postcss@8.5.3)(typescript@5.8.3) src: dependencies: @@ -147,8 +147,8 @@ importers: specifier: ^3.2.6 version: 3.2.6 axios: - specifier: ^1.8.4 - version: 1.8.4 + specifier: ^1.10.0 + version: 1.10.0 cookie-parser: specifier: ^1.4.7 version: 1.4.7 @@ -2362,8 +2362,8 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - axios@1.8.4: - resolution: {integrity: sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==} + axios@1.10.0: + resolution: {integrity: sha512-/1xYAC4MP/HEG+3duIhFr4ZQXR4sQXOIe+o6sdqzeykGLx6Upp/1p8MHqhINOvGeP7xyNHe7tsiJByc4SSVUxw==} bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} @@ -6567,7 +6567,7 @@ snapshots: '@types/cookiejar': 2.1.5 '@types/methods': 1.1.4 '@types/node': 24.0.1 - form-data: 4.0.2 + form-data: 4.0.3 '@types/supertest@6.0.3': dependencies: @@ -6954,13 +6954,13 @@ snapshots: transitivePeerDependencies: - typescript - '@vueuse/integrations@12.8.2(axios@1.8.4)(focus-trap@7.6.4)(jwt-decode@4.0.0)(typescript@5.8.3)': + '@vueuse/integrations@12.8.2(axios@1.10.0)(focus-trap@7.6.4)(jwt-decode@4.0.0)(typescript@5.8.3)': dependencies: '@vueuse/core': 12.8.2(typescript@5.8.3) '@vueuse/shared': 12.8.2(typescript@5.8.3) vue: 3.5.13(typescript@5.8.3) optionalDependencies: - axios: 1.8.4 + axios: 1.10.0 focus-trap: 7.6.4 jwt-decode: 4.0.0 transitivePeerDependencies: @@ -7112,10 +7112,10 @@ snapshots: dependencies: possible-typed-array-names: 1.1.0 - axios@1.8.4: + axios@1.10.0: dependencies: follow-redirects: 1.15.9 - form-data: 4.0.2 + form-data: 4.0.3 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug @@ -9806,7 +9806,7 @@ snapshots: cookiejar: 2.1.4 debug: 4.4.1(supports-color@8.1.1) fast-safe-stringify: 2.1.1 - form-data: 4.0.2 + form-data: 4.0.3 formidable: 2.1.5 methods: 1.1.2 mime: 2.6.0 @@ -10175,7 +10175,7 @@ snapshots: fsevents: 2.3.3 tsx: 4.20.3 - vitepress@1.6.3(@algolia/client-search@5.23.2)(@types/node@24.0.1)(axios@1.8.4)(jwt-decode@4.0.0)(postcss@8.5.3)(typescript@5.8.3): + vitepress@1.6.3(@algolia/client-search@5.23.2)(@types/node@24.0.1)(axios@1.10.0)(jwt-decode@4.0.0)(postcss@8.5.3)(typescript@5.8.3): dependencies: '@docsearch/css': 3.8.2 '@docsearch/js': 3.8.2(@algolia/client-search@5.23.2) @@ -10188,7 +10188,7 @@ snapshots: '@vue/devtools-api': 7.7.2 '@vue/shared': 3.5.13 '@vueuse/core': 12.8.2(typescript@5.8.3) - '@vueuse/integrations': 12.8.2(axios@1.8.4)(focus-trap@7.6.4)(jwt-decode@4.0.0)(typescript@5.8.3) + '@vueuse/integrations': 12.8.2(axios@1.10.0)(focus-trap@7.6.4)(jwt-decode@4.0.0)(typescript@5.8.3) focus-trap: 7.6.4 mark.js: 8.11.1 minisearch: 7.1.2 diff --git a/src/package.json b/src/package.json index c5298e442..5ac80de45 100644 --- a/src/package.json +++ b/src/package.json @@ -32,7 +32,7 @@ "dependencies": { "@etherpad/express-session": "^1.18.4", "async": "^3.2.6", - "axios": "^1.8.4", + "axios": "^1.10.0", "cookie-parser": "^1.4.7", "cross-env": "^7.0.3", "cross-spawn": "^7.0.6", From 0b2a22db5a7d4b1d6cff25c12c19b069e45b54bf Mon Sep 17 00:00:00 2001 From: "translatewiki.net" Date: Mon, 30 Jun 2025 14:03:44 +0200 Subject: [PATCH 05/51] Localisation updates from https://translatewiki.net. --- src/locales/es.json | 13 ++++++++++++- src/locales/ms.json | 2 +- src/locales/ne.json | 1 + src/locales/ps.json | 7 ++++--- 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/locales/es.json b/src/locales/es.json index bd71603af..85153d0cb 100644 --- a/src/locales/es.json +++ b/src/locales/es.json @@ -14,6 +14,7 @@ "Macofe", "MartaEgea", "Mklehr", + "Ovruni", "Rubenwap", "Tiberius1701", "VegaDark", @@ -50,11 +51,13 @@ "admin_settings": "Configuración", "admin_settings.current": "Configuración actual", "admin_settings.current_example-devel": "Plantilla de ejemplo de configuración de desarrollo", + "admin_settings.current_example-prod": "Ejemplo de plantilla de configuración de producción", "admin_settings.current_restart.value": "Reiniciar Etherpad", "admin_settings.current_save.value": "Guardar configuración", "admin_settings.page-title": "Configuración. Etherpad", "index.newPad": "Nuevo pad", "index.createOpenPad": "o crea/abre un pad con el nombre:", + "index.openPad": "abrir un pad existente con el nombre:", "pad.toolbar.bold.title": "Negrita (Ctrl-B)", "pad.toolbar.italic.title": "Cursiva (Ctrl-I)", "pad.toolbar.underline.title": "Subrayado (Ctrl-U)", @@ -87,6 +90,8 @@ "pad.settings.fontType": "Tipografía:", "pad.settings.fontType.normal": "Normal", "pad.settings.language": "Idioma:", + "pad.settings.deletePad": "Eliminar pad", + "pad.delete.confirm": "¿De verdad quieres borrar este pad?", "pad.settings.about": "Acerca de", "pad.settings.poweredBy": "Funciona con", "pad.importExport.import_export": "Importar/Exportar", @@ -123,6 +128,10 @@ "pad.modals.corruptPad.cause": "Esto puede deberse a una mala configuración del servidor o algún otro comportamiento inesperado. Contacta con el administrador del servicio.", "pad.modals.deleted": "Borrado.", "pad.modals.deleted.explanation": "Este pad ha sido borrado.", + "pad.modals.rateLimited": "Límite de solicitudes.", + "pad.modals.rateLimited.explanation": "Enviaste demasiados mensajes a este pad por lo que te desconectó.", + "pad.modals.rejected.explanation": "El servidor rechazó un mensaje que envió tu navegador.", + "pad.modals.rejected.cause": "Es posible que el servidor se haya actualizado mientras veías el panel, o que haya un error en Etherpad. Intenta recargar la página.", "pad.modals.disconnected": "Te has desconectado.", "pad.modals.disconnected.explanation": "Se perdió la conexión con el servidor", "pad.modals.disconnected.cause": "El servidor podría no estar disponible. Contacta con el administrador del servicio si esto continúa sucediendo.", @@ -135,6 +144,7 @@ "pad.chat.loadmessages": "Cargar más mensajes", "pad.chat.stick.title": "Ampliar", "pad.chat.writeMessage.placeholder": "Enviar un mensaje", + "timeslider.followContents": "Sigue las actualizaciones de contenido del pad", "timeslider.pageTitle": "{{appTitle}} Línea de tiempo", "timeslider.toolbar.returnbutton": "Volver al pad", "timeslider.toolbar.authors": "Autores:", @@ -173,5 +183,6 @@ "pad.impexp.uploadFailed": "El envío falló. Inténtalo de nuevo.", "pad.impexp.importfailed": "Fallo al importar", "pad.impexp.copypaste": "Intenta copiar y pegar", - "pad.impexp.exportdisabled": "La exportación al formato {{type}} está desactivada. Contacta con tu administrador del sistema." + "pad.impexp.exportdisabled": "La exportación al formato {{type}} está desactivada. Contacta con tu administrador del sistema.", + "pad.impexp.maxFileSize": "El archivo es demasiado grande. Contacte al administrador del sitio para aumentar el tamaño de archivo permitido para la importación." } diff --git a/src/locales/ms.json b/src/locales/ms.json index 8fe029802..767d283e3 100644 --- a/src/locales/ms.json +++ b/src/locales/ms.json @@ -112,7 +112,7 @@ "pad.savedrevs.marked": "Semakan ini telah ditandai sebagai semakan tersimpan", "pad.savedrevs.timeslider": "Anda boleh melihat semakan yang tersimpan dengan melawat gelangsar masa", "pad.userlist.entername": "Taipkan nama anda", - "pad.userlist.unnamed": "tanpa nama", + "pad.userlist.unnamed": "tidak bernama", "pad.editbar.clearcolors": "Padamkan warna pengarang pada seluruh dokumen?", "pad.impexp.importbutton": "Import Sekarang", "pad.impexp.importing": "Sedang mengimport...", diff --git a/src/locales/ne.json b/src/locales/ne.json index 17bb951ac..29515c7ff 100644 --- a/src/locales/ne.json +++ b/src/locales/ne.json @@ -12,6 +12,7 @@ ] }, "admin_plugins.description": "विवरण", + "admin_plugins.name": "नाम", "index.newPad": "नयाँ प्याड", "index.createOpenPad": "नाम सहितको नयाँ प्याड सिर्जना गर्ने / खोल्ने :", "pad.toolbar.bold.title": "मोटो (Ctrl-B)", diff --git a/src/locales/ps.json b/src/locales/ps.json index 7413c41e2..8a9a6b727 100644 --- a/src/locales/ps.json +++ b/src/locales/ps.json @@ -1,7 +1,8 @@ { "@metadata": { "authors": [ - "Ahmed-Najib-Biabani-Ibrahimkhel" + "Ahmed-Najib-Biabani-Ibrahimkhel", + "شاه زمان پټان" ] }, "index.newPad": "نوې ليکچه", @@ -16,11 +17,11 @@ "pad.toolbar.redo.title": "بياکړل (Ctrl-Y)", "pad.toolbar.clearAuthorship.title": "د ليکوالۍ رنگونه سپينول (Ctrl+Shift+C)", "pad.toolbar.savedRevision.title": "مخکتنه خوندي کول", - "pad.toolbar.settings.title": "امستنې", + "pad.toolbar.settings.title": "اوڼنې", "pad.colorpicker.save": "خوندي کول", "pad.colorpicker.cancel": "ناگارل", "pad.loading": "رابرسېرېږي...", - "pad.settings.padSettings": "د ليکچې امستنې", + "pad.settings.padSettings": "د ليکچې اوڼنې", "pad.settings.myView": "زما کتنه", "pad.settings.stickychat": "تل په پردې بانډار کول", "pad.settings.chatandusers": "کارنان او بانډار ښکاره کول", From 475456ec10705e7771dd488796a74acb5834411a Mon Sep 17 00:00:00 2001 From: "translatewiki.net" Date: Mon, 7 Jul 2025 14:03:40 +0200 Subject: [PATCH 06/51] Localisation updates from https://translatewiki.net. --- src/locales/uk.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/locales/uk.json b/src/locales/uk.json index 314e3219d..5a8e06888 100644 --- a/src/locales/uk.json +++ b/src/locales/uk.json @@ -84,6 +84,8 @@ "pad.settings.fontType": "Тип шрифту:", "pad.settings.fontType.normal": "Звичайний", "pad.settings.language": "Мова:", + "pad.settings.deletePad": "Вилучити документ", + "pad.delete.confirm": "Ви дійсно хочете вилучити цей документ?", "pad.settings.about": "Про програму", "pad.settings.poweredBy": "Працює на", "pad.importExport.import_export": "Імпорт/Експорт", From b58dbad7db4d983e67bd97f559157c2a2758184d Mon Sep 17 00:00:00 2001 From: "translatewiki.net" Date: Thu, 10 Jul 2025 14:04:28 +0200 Subject: [PATCH 07/51] Localisation updates from https://translatewiki.net. --- src/locales/hu.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/locales/hu.json b/src/locales/hu.json index 46f111903..377672b17 100644 --- a/src/locales/hu.json +++ b/src/locales/hu.json @@ -10,7 +10,8 @@ "Notramo", "Ovari", "R-Joe", - "Tgr" + "Tgr", + "Urbalazs" ] }, "admin.page-title": "Admin irányítópult - Etherpad", @@ -67,7 +68,7 @@ "pad.toolbar.embed.title": "Jegyzetfüzet beágyazása és megosztása", "pad.toolbar.showusers.title": "Jegyzetfüzet felhasználóinak megmutatása", "pad.colorpicker.save": "Mentés", - "pad.colorpicker.cancel": "Mégsem", + "pad.colorpicker.cancel": "Mégse", "pad.loading": "Betöltés…", "pad.noCookie": "Nem található a süti. Engedélyezd a böngésződben a sütik használatát! A munkamenet és a beállítások nem kerülnek mentésre a látogatások között. Ennek oka lehet az, hogy az Etherpad egyes böngészőkben szerepel az iFrame-ben. Ellenőrizze, hogy az Etherpad ugyanabban az altartomány / tartományban van-e, mint a szülő iFrame", "pad.permissionDenied": "Nincs engedélyed ezen jegyzetfüzet eléréséhez", From 67b630a3bf50741c06b01ce47c2993e137c2462e Mon Sep 17 00:00:00 2001 From: "translatewiki.net" Date: Mon, 14 Jul 2025 14:03:32 +0200 Subject: [PATCH 08/51] Localisation updates from https://translatewiki.net. --- src/locales/gl.json | 2 +- src/locales/ps.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/locales/gl.json b/src/locales/gl.json index 341857d91..93116f05d 100644 --- a/src/locales/gl.json +++ b/src/locales/gl.json @@ -120,7 +120,7 @@ "pad.modals.disconnected.explanation": "Perdeuse a conexión co servidor", "pad.modals.disconnected.cause": "O servidor non está dispoñible. Póñase en contacto co administrador do servizo se o problema continúa.", "pad.share": "Compartir este documento", - "pad.share.readonly": "Só lectura", + "pad.share.readonly": "Lectura só", "pad.share.link": "Ligazón", "pad.share.emebdcode": "Incorporar o URL", "pad.chat": "Chat", diff --git a/src/locales/ps.json b/src/locales/ps.json index 8a9a6b727..c7a31768f 100644 --- a/src/locales/ps.json +++ b/src/locales/ps.json @@ -6,7 +6,7 @@ ] }, "index.newPad": "نوې ليکچه", - "index.createOpenPad": "يا په همدې نوم يوه نوې ليکچه جوړول/پرانيستل:", + "index.createOpenPad": "يا په همدې نوم يوه نوې ليکچه جوړول/پرانېستل:", "pad.toolbar.bold.title": "زغرد (Ctrl-B)", "pad.toolbar.italic.title": "رېوند (Ctrl-I)", "pad.toolbar.underline.title": "لرکرښن (Ctrl+U)", From 9409fd45578c4c7a86052898b3a81f4cf5cd6888 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 16 Jul 2025 16:13:25 +0000 Subject: [PATCH 09/51] build(deps): bump oidc-provider and @types/oidc-provider Bumps [oidc-provider](https://github.com/panva/node-oidc-provider) and [@types/oidc-provider](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/oidc-provider). These dependencies needed to be updated together. Updates `oidc-provider` from 9.1.3 to 9.3.0 - [Release notes](https://github.com/panva/node-oidc-provider/releases) - [Changelog](https://github.com/panva/node-oidc-provider/blob/main/CHANGELOG.md) - [Commits](https://github.com/panva/node-oidc-provider/compare/v9.1.3...v9.3.0) Updates `@types/oidc-provider` from 9.1.0 to 9.1.1 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/oidc-provider) --- updated-dependencies: - dependency-name: oidc-provider dependency-version: 9.3.0 dependency-type: direct:production update-type: version-update:semver-minor - dependency-name: "@types/oidc-provider" dependency-version: 9.1.1 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pnpm-lock.yaml | 45 +++++++++++++++++++++++++-------------------- src/package.json | 4 ++-- 2 files changed, 27 insertions(+), 22 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 886578923..31f680e62 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -222,8 +222,8 @@ importers: specifier: ^3.0.1 version: 3.0.1 oidc-provider: - specifier: ^9.1.3 - version: 9.1.3 + specifier: ^9.3.0 + version: 9.3.0 openapi-backend: specifier: ^5.12.0 version: 5.12.0 @@ -319,8 +319,8 @@ importers: specifier: ^24.0.1 version: 24.0.1 '@types/oidc-provider': - specifier: ^9.1.0 - version: 9.1.0 + specifier: ^9.1.1 + version: 9.1.1 '@types/semver': specifier: ^7.7.0 version: 7.7.0 @@ -1145,8 +1145,8 @@ packages: resolution: {integrity: sha512-x/iUDjcS90W69PryLDIMgFyV21YLTnG9zOpPXS7Bkt2b8AsY3zZsIpOLBkYr9fBcF3HbkKaER5hOBZLfpLgYNw==} engines: {node: '>= 14.0.0'} - '@koa/router@13.1.0': - resolution: {integrity: sha512-mNVu1nvkpSd8Q8gMebGbCkDWJ51ODetrFvLKYusej+V0ByD4btqHYnPIzTBLXnQMVUlm/oxVwqmWBY3zQfZilw==} + '@koa/router@13.1.1': + resolution: {integrity: sha512-JQEuMANYRVHs7lm7KY9PCIjkgJk73h4m4J+g2mkw2Vo1ugPZ17UJVqEH8F+HeAdjKz5do1OaLe7ArDz+z308gw==} engines: {node: '>= 18'} '@napi-rs/wasm-runtime@0.2.8': @@ -1854,8 +1854,8 @@ packages: '@types/node@24.0.1': resolution: {integrity: sha512-MX4Zioh39chHlDJbKmEgydJDS3tspMP/lnQC67G3SWsTnb9NeYVWOjkxpOSy4oMfPs4StcWHwBrvUb4ybfnuaw==} - '@types/oidc-provider@9.1.0': - resolution: {integrity: sha512-UoC3ZQur+TtVL5hiUN8LoCbXocS2WI2eAPBtZtv1Y5F3vW0QTBawFAgDoctPqCQF73kah/Nzb5Gd3m5GtxFxiA==} + '@types/oidc-provider@9.1.1': + resolution: {integrity: sha512-sG4UcE4AbUwAsEpyrcyoqZ383wJiQObZU+gTa1Iv288+l09HwSr88hBZE2IBLlXS+RKmLId0i4B430PBFO/XRA==} '@types/qs@6.9.18': resolution: {integrity: sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==} @@ -3592,8 +3592,8 @@ packages: jose@5.10.0: resolution: {integrity: sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg==} - jose@6.0.11: - resolution: {integrity: sha512-QxG7EaliDARm1O1S8BGakqncGT9s25bKL1WSf6/oa17Tkqwi8D2ZNglqCF+DsYF88/rV66Q/Q2mFAy697E1DUg==} + jose@6.0.12: + resolution: {integrity: sha512-T8xypXs8CpmiIi78k0E+Lk7T2zlK4zDyg+o1CZ4AkOHgDg98ogdP2BeZ61lTFKFyoEwJ9RgAgN+SdM3iPgNonQ==} js-cookie@3.0.5: resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==} @@ -4001,8 +4001,8 @@ packages: resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} engines: {node: '>= 0.4'} - oidc-provider@9.1.3: - resolution: {integrity: sha512-DaiiCllAr+y33M2HzTRRpV7/jmcZBSfIXaDv0eHURIV85N0O+QUqtjVtPY+viCwHKBRGWwfShWWFKddPUxpAWw==} + oidc-provider@9.3.0: + resolution: {integrity: sha512-JVocwYM+Fs76nOCED2hMf3iMfrzhN4jISmCYVuFhBEnZiFk3QlODzQXkO1XS/Spw8VwRlKxwIl3otkiintFIjw==} oidc-token-hash@5.1.0: resolution: {integrity: sha512-y0W+X7Ppo7oZX6eovsRkuzcSM40Bicg2JEJkDJ4irIt1wsYAP5MLSNv+QAogO8xivMffw/9OvV3um1pxXgt1uA==} @@ -4664,11 +4664,12 @@ packages: superagent@10.2.1: resolution: {integrity: sha512-O+PCv11lgTNJUzy49teNAWLjBZfc+A1enOwTpLlH6/rsvKcTwcdTT8m9azGkVqM7HBl5jpyZ7KTPhHweokBcdg==} engines: {node: '>=14.18.0'} + deprecated: Please upgrade to superagent v10.2.2+, see release notes at https://github.com/forwardemail/superagent/releases/tag/v10.2.2 - maintenance is supported by Forward Email @ https://forwardemail.net superagent@8.1.2: resolution: {integrity: sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==} engines: {node: '>=6.4.0 <13 || >=14'} - deprecated: Please upgrade to v9.0.0+ as we have fixed a public vulnerability with formidable dependency. Note that v9.0.0+ requires Node.js v14.18.0+. See https://github.com/ladjs/superagent/pull/1800 for insight. This project is supported and maintained by the team at Forward Email @ https://forwardemail.net + deprecated: Please upgrade to superagent v10.2.2+, see release notes at https://github.com/forwardemail/superagent/releases/tag/v10.2.2 - maintenance is supported by Forward Email @ https://forwardemail.net superjson@2.2.2: resolution: {integrity: sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==} @@ -4677,6 +4678,7 @@ packages: supertest@7.1.1: resolution: {integrity: sha512-aI59HBTlG9e2wTjxGJV+DygfNLgnWbGdZxiA/sgrnNNikIW8lbDvCtF6RnhZoJ82nU7qv7ZLjrvWqCEm52fAmw==} engines: {node: '>=14.18.0'} + deprecated: Please upgrade to supertest v7.1.3+, see release notes at https://github.com/forwardemail/supertest/releases/tag/v7.1.3 - maintenance is supported by Forward Email @ https://forwardemail.net supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} @@ -5864,11 +5866,14 @@ snapshots: dependencies: vary: 1.1.2 - '@koa/router@13.1.0': + '@koa/router@13.1.1': dependencies: + debug: 4.4.1(supports-color@8.1.1) http-errors: 2.0.0 koa-compose: 4.1.0 path-to-regexp: 6.3.0 + transitivePeerDependencies: + - supports-color '@napi-rs/wasm-runtime@0.2.8': dependencies: @@ -6523,7 +6528,7 @@ snapshots: dependencies: undici-types: 7.8.0 - '@types/oidc-provider@9.1.0': + '@types/oidc-provider@9.1.1': dependencies: '@types/keygrip': 1.0.6 '@types/koa': 2.15.0 @@ -8584,7 +8589,7 @@ snapshots: jose@5.10.0: {} - jose@6.0.11: {} + jose@6.0.12: {} js-cookie@3.0.5: {} @@ -9027,13 +9032,13 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.1.1 - oidc-provider@9.1.3: + oidc-provider@9.3.0: dependencies: '@koa/cors': 5.0.0 - '@koa/router': 13.1.0 + '@koa/router': 13.1.1 debug: 4.4.1(supports-color@8.1.1) eta: 3.5.0 - jose: 6.0.11 + jose: 6.0.12 jsesc: 3.1.0 koa: 3.0.0 nanoid: 5.1.5 @@ -9216,7 +9221,7 @@ snapshots: proxy-agent@6.5.0: dependencies: agent-base: 7.1.3 - debug: 4.4.0 + debug: 4.4.1(supports-color@8.1.1) http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 lru-cache: 7.18.3 diff --git a/src/package.json b/src/package.json index 5ac80de45..ee832bdd4 100644 --- a/src/package.json +++ b/src/package.json @@ -57,7 +57,7 @@ "lru-cache": "^11.1.0", "measured-core": "^2.0.0", "mime-types": "^3.0.1", - "oidc-provider": "^9.1.3", + "oidc-provider": "^9.3.0", "openapi-backend": "^5.12.0", "proxy-addr": "^2.0.7", "rate-limiter-flexible": "^7.1.1", @@ -95,7 +95,7 @@ "@types/mime-types": "^3.0.1", "@types/mocha": "^10.0.9", "@types/node": "^24.0.1", - "@types/oidc-provider": "^9.1.0", + "@types/oidc-provider": "^9.1.1", "@types/semver": "^7.7.0", "@types/sinon": "^17.0.3", "@types/supertest": "^6.0.2", From 7d462e7a1f8691b3c455ee1eb6f9eebf3fcf9613 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 16 Jul 2025 17:10:54 +0000 Subject: [PATCH 10/51] build(deps-dev): bump the dev-dependencies group across 1 directory with 17 updates --- updated-dependencies: - dependency-name: "@playwright/test" dependency-version: 1.53.2 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-dependencies - dependency-name: "@types/jsonwebtoken" dependency-version: 9.0.10 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-dependencies - dependency-name: "@types/node" dependency-version: 24.0.10 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-dependencies - dependency-name: eslint dependency-version: 9.30.1 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: dev-dependencies - dependency-name: mocha dependency-version: 11.7.1 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: dev-dependencies - dependency-name: supertest dependency-version: 7.1.3 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-dependencies - dependency-name: vitest dependency-version: 3.2.4 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-dependencies - dependency-name: "@typescript-eslint/eslint-plugin" dependency-version: 8.36.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: dev-dependencies - dependency-name: "@typescript-eslint/parser" dependency-version: 8.36.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: dev-dependencies - dependency-name: i18next dependency-version: 25.3.1 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: dev-dependencies - dependency-name: lucide-react dependency-version: 0.525.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: dev-dependencies - dependency-name: react-hook-form dependency-version: 7.60.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: dev-dependencies - dependency-name: react-i18next dependency-version: 15.6.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: dev-dependencies - dependency-name: react-router-dom dependency-version: 7.6.3 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-dependencies - dependency-name: vite dependency-version: 7.0.3 dependency-type: direct:development update-type: version-update:semver-major dependency-group: dev-dependencies - dependency-name: vite-plugin-static-copy dependency-version: 3.1.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: dev-dependencies - dependency-name: zustand dependency-version: 5.0.6 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-dependencies ... Signed-off-by: dependabot[bot] --- admin/package.json | 22 +- bin/package.json | 2 +- pnpm-lock.yaml | 1390 ++++++++++++++++++++++---------------------- src/package.json | 14 +- ui/package.json | 2 +- 5 files changed, 712 insertions(+), 718 deletions(-) diff --git a/admin/package.json b/admin/package.json index d7c21392c..2dc202067 100644 --- a/admin/package.json +++ b/admin/package.json @@ -18,25 +18,25 @@ "@radix-ui/react-toast": "^1.2.14", "@types/react": "^19.1.8", "@types/react-dom": "^19.1.6", - "@typescript-eslint/eslint-plugin": "^8.34.0", - "@typescript-eslint/parser": "^8.34.0", + "@typescript-eslint/eslint-plugin": "^8.37.0", + "@typescript-eslint/parser": "^8.37.0", "@vitejs/plugin-react-swc": "^3.10.2", - "eslint": "^9.28.0", + "eslint": "^9.31.0", "eslint-plugin-react-hooks": "^5.2.0", "eslint-plugin-react-refresh": "^0.4.20", - "i18next": "^25.2.1", + "i18next": "^25.3.2", "i18next-browser-languagedetector": "^8.2.0", - "lucide-react": "^0.515.0", + "lucide-react": "^0.525.0", "react": "^19.1.0", "react-dom": "^19.1.0", - "react-hook-form": "^7.57.0", - "react-i18next": "^15.5.3", - "react-router-dom": "^7.6.2", + "react-hook-form": "^7.60.0", + "react-i18next": "^15.6.0", + "react-router-dom": "^7.6.3", "socket.io-client": "^4.8.1", "typescript": "^5.8.2", - "vite": "^6.3.5", - "vite-plugin-static-copy": "^3.0.0", + "vite": "^7.0.4", + "vite-plugin-static-copy": "^3.1.1", "vite-plugin-svgr": "^4.3.0", - "zustand": "^5.0.5" + "zustand": "^5.0.6" } } diff --git a/bin/package.json b/bin/package.json index 24009172d..c9cc71fae 100644 --- a/bin/package.json +++ b/bin/package.json @@ -15,7 +15,7 @@ "ueberdb2": "^5.0.14" }, "devDependencies": { - "@types/node": "^24.0.1", + "@types/node": "^24.0.14", "@types/semver": "^7.7.0", "typescript": "^5.8.2" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 31f680e62..d9806d8b3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -41,32 +41,32 @@ importers: specifier: ^19.1.6 version: 19.1.6(@types/react@19.1.8) '@typescript-eslint/eslint-plugin': - specifier: ^8.34.0 - version: 8.34.0(@typescript-eslint/parser@8.34.0(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0)(typescript@5.8.3) + specifier: ^8.37.0 + version: 8.37.0(@typescript-eslint/parser@8.37.0(eslint@9.31.0)(typescript@5.8.3))(eslint@9.31.0)(typescript@5.8.3) '@typescript-eslint/parser': - specifier: ^8.34.0 - version: 8.34.0(eslint@9.28.0)(typescript@5.8.3) + specifier: ^8.37.0 + version: 8.37.0(eslint@9.31.0)(typescript@5.8.3) '@vitejs/plugin-react-swc': specifier: ^3.10.2 - version: 3.10.2(vite@6.3.5(@types/node@24.0.1)(tsx@4.20.3)) + version: 3.10.2(vite@7.0.4(@types/node@24.0.14)(tsx@4.20.3)) eslint: - specifier: ^9.28.0 - version: 9.28.0 + specifier: ^9.31.0 + version: 9.31.0 eslint-plugin-react-hooks: specifier: ^5.2.0 - version: 5.2.0(eslint@9.28.0) + version: 5.2.0(eslint@9.31.0) eslint-plugin-react-refresh: specifier: ^0.4.20 - version: 0.4.20(eslint@9.28.0) + version: 0.4.20(eslint@9.31.0) i18next: - specifier: ^25.2.1 - version: 25.2.1(typescript@5.8.3) + specifier: ^25.3.2 + version: 25.3.2(typescript@5.8.3) i18next-browser-languagedetector: specifier: ^8.2.0 version: 8.2.0 lucide-react: - specifier: ^0.515.0 - version: 0.515.0(react@19.1.0) + specifier: ^0.525.0 + version: 0.525.0(react@19.1.0) react: specifier: ^19.1.0 version: 19.1.0 @@ -74,14 +74,14 @@ importers: specifier: ^19.1.0 version: 19.1.0(react@19.1.0) react-hook-form: - specifier: ^7.57.0 - version: 7.57.0(react@19.1.0) + specifier: ^7.60.0 + version: 7.60.0(react@19.1.0) react-i18next: - specifier: ^15.5.3 - version: 15.5.3(i18next@25.2.1(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3) + specifier: ^15.6.0 + version: 15.6.0(i18next@25.3.2(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3) react-router-dom: - specifier: ^7.6.2 - version: 7.6.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^7.6.3 + version: 7.6.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0) socket.io-client: specifier: ^4.8.1 version: 4.8.1 @@ -89,17 +89,17 @@ importers: specifier: ^5.8.2 version: 5.8.3 vite: - specifier: ^6.3.5 - version: 6.3.5(@types/node@24.0.1)(tsx@4.20.3) + specifier: ^7.0.4 + version: 7.0.4(@types/node@24.0.14)(tsx@4.20.3) vite-plugin-static-copy: - specifier: ^3.0.0 - version: 3.0.0(vite@6.3.5(@types/node@24.0.1)(tsx@4.20.3)) + specifier: ^3.1.1 + version: 3.1.1(vite@7.0.4(@types/node@24.0.14)(tsx@4.20.3)) vite-plugin-svgr: specifier: ^4.3.0 - version: 4.3.0(rollup@4.40.1)(typescript@5.8.3)(vite@6.3.5(@types/node@24.0.1)(tsx@4.20.3)) + version: 4.3.0(rollup@4.45.1)(typescript@5.8.3)(vite@7.0.4(@types/node@24.0.14)(tsx@4.20.3)) zustand: - specifier: ^5.0.5 - version: 5.0.5(@types/react@19.1.8)(react@19.1.0) + specifier: ^5.0.6 + version: 5.0.6(@types/react@19.1.8)(react@19.1.0) bin: dependencies: @@ -123,8 +123,8 @@ importers: version: 5.0.14 devDependencies: '@types/node': - specifier: ^24.0.1 - version: 24.0.1 + specifier: ^24.0.14 + version: 24.0.14 '@types/semver': specifier: ^7.7.0 version: 7.7.0 @@ -136,7 +136,7 @@ importers: devDependencies: vitepress: specifier: ^1.6.3 - version: 1.6.3(@algolia/client-search@5.23.2)(@types/node@24.0.1)(axios@1.10.0)(jwt-decode@4.0.0)(postcss@8.5.3)(typescript@5.8.3) + version: 1.6.3(@algolia/client-search@5.23.2)(@types/node@24.0.14)(axios@1.10.0)(jwt-decode@4.0.0)(postcss@8.5.6)(typescript@5.8.3) src: dependencies: @@ -283,8 +283,8 @@ importers: version: 0.10.0 devDependencies: '@playwright/test': - specifier: ^1.53.0 - version: 1.53.0 + specifier: ^1.54.1 + version: 1.54.1 '@types/async': specifier: ^3.2.24 version: 3.2.24 @@ -307,8 +307,8 @@ importers: specifier: ^21.1.7 version: 21.1.7 '@types/jsonwebtoken': - specifier: ^9.0.9 - version: 9.0.9 + specifier: ^9.0.10 + version: 9.0.10 '@types/mime-types': specifier: ^3.0.1 version: 3.0.1 @@ -316,8 +316,8 @@ importers: specifier: ^10.0.9 version: 10.0.10 '@types/node': - specifier: ^24.0.1 - version: 24.0.1 + specifier: ^24.0.14 + version: 24.0.14 '@types/oidc-provider': specifier: ^9.1.1 version: 9.1.1 @@ -343,17 +343,17 @@ importers: specifier: ^4.0.3 version: 4.0.3 eslint: - specifier: ^9.28.0 - version: 9.28.0 + specifier: ^9.31.0 + version: 9.31.0 eslint-config-etherpad: specifier: ^4.0.4 - version: 4.0.4(eslint@9.28.0)(typescript@5.8.3) + version: 4.0.4(eslint@9.31.0)(typescript@5.8.3) etherpad-cli-client: specifier: ^3.0.2 version: 3.0.2 mocha: - specifier: ^11.6.0 - version: 11.6.0 + specifier: ^11.7.1 + version: 11.7.1 mocha-froth: specifier: ^0.2.10 version: 0.2.10 @@ -373,14 +373,14 @@ importers: specifier: ^1.0.11 version: 1.0.11 supertest: - specifier: ^7.1.1 - version: 7.1.1 + specifier: ^7.1.3 + version: 7.1.3 typescript: specifier: ^5.8.2 version: 5.8.3 vitest: - specifier: ^3.2.3 - version: 3.2.3(@types/debug@4.1.12)(@types/node@24.0.1)(jsdom@26.0.0)(tsx@4.20.3) + specifier: ^3.2.4 + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.0.14)(jsdom@26.0.0)(tsx@4.20.3) ui: devDependencies: @@ -391,8 +391,8 @@ importers: specifier: ^5.8.2 version: 5.8.3 vite: - specifier: ^6.3.5 - version: 6.3.5(@types/node@24.0.1)(tsx@4.20.3) + specifier: ^7.0.4 + version: 7.0.4(@types/node@24.0.14)(tsx@4.20.3) packages: @@ -612,14 +612,14 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.25.3': - resolution: {integrity: sha512-W8bFfPA8DowP8l//sxjJLSLkD8iEjMc7cBVyP+u4cEv9sM7mdUCkgsj+t0n/BWPFtv7WWCN5Yzj0N6FJNUUqBQ==} + '@esbuild/aix-ppc64@0.25.5': + resolution: {integrity: sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.25.5': - resolution: {integrity: sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==} + '@esbuild/aix-ppc64@0.25.6': + resolution: {integrity: sha512-ShbM/3XxwuxjFiuVBHA+d3j5dyac0aEVVq1oluIDf71hUw0aRF59dV/efUsIwFnR6m8JNM2FjZOzmaZ8yG61kw==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] @@ -630,14 +630,14 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.25.3': - resolution: {integrity: sha512-XelR6MzjlZuBM4f5z2IQHK6LkK34Cvv6Rj2EntER3lwCBFdg6h2lKbtRjpTTsdEjD/WSe1q8UyPBXP1x3i/wYQ==} + '@esbuild/android-arm64@0.25.5': + resolution: {integrity: sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.25.5': - resolution: {integrity: sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==} + '@esbuild/android-arm64@0.25.6': + resolution: {integrity: sha512-hd5zdUarsK6strW+3Wxi5qWws+rJhCCbMiC9QZyzoxfk5uHRIE8T287giQxzVpEvCwuJ9Qjg6bEjcRJcgfLqoA==} engines: {node: '>=18'} cpu: [arm64] os: [android] @@ -648,14 +648,14 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.25.3': - resolution: {integrity: sha512-PuwVXbnP87Tcff5I9ngV0lmiSu40xw1At6i3GsU77U7cjDDB4s0X2cyFuBiDa1SBk9DnvWwnGvVaGBqoFWPb7A==} + '@esbuild/android-arm@0.25.5': + resolution: {integrity: sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-arm@0.25.5': - resolution: {integrity: sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==} + '@esbuild/android-arm@0.25.6': + resolution: {integrity: sha512-S8ToEOVfg++AU/bHwdksHNnyLyVM+eMVAOf6yRKFitnwnbwwPNqKr3srzFRe7nzV69RQKb5DgchIX5pt3L53xg==} engines: {node: '>=18'} cpu: [arm] os: [android] @@ -666,14 +666,14 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.25.3': - resolution: {integrity: sha512-ogtTpYHT/g1GWS/zKM0cc/tIebFjm1F9Aw1boQ2Y0eUQ+J89d0jFY//s9ei9jVIlkYi8AfOjiixcLJSGNSOAdQ==} + '@esbuild/android-x64@0.25.5': + resolution: {integrity: sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/android-x64@0.25.5': - resolution: {integrity: sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==} + '@esbuild/android-x64@0.25.6': + resolution: {integrity: sha512-0Z7KpHSr3VBIO9A/1wcT3NTy7EB4oNC4upJ5ye3R7taCc2GUdeynSLArnon5G8scPwaU866d3H4BCrE5xLW25A==} engines: {node: '>=18'} cpu: [x64] os: [android] @@ -684,14 +684,14 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.25.3': - resolution: {integrity: sha512-eESK5yfPNTqpAmDfFWNsOhmIOaQA59tAcF/EfYvo5/QWQCzXn5iUSOnqt3ra3UdzBv073ykTtmeLJZGt3HhA+w==} + '@esbuild/darwin-arm64@0.25.5': + resolution: {integrity: sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.25.5': - resolution: {integrity: sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==} + '@esbuild/darwin-arm64@0.25.6': + resolution: {integrity: sha512-FFCssz3XBavjxcFxKsGy2DYK5VSvJqa6y5HXljKzhRZ87LvEi13brPrf/wdyl/BbpbMKJNOr1Sd0jtW4Ge1pAA==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] @@ -702,14 +702,14 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.25.3': - resolution: {integrity: sha512-Kd8glo7sIZtwOLcPbW0yLpKmBNWMANZhrC1r6K++uDR2zyzb6AeOYtI6udbtabmQpFaxJ8uduXMAo1gs5ozz8A==} + '@esbuild/darwin-x64@0.25.5': + resolution: {integrity: sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.25.5': - resolution: {integrity: sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==} + '@esbuild/darwin-x64@0.25.6': + resolution: {integrity: sha512-GfXs5kry/TkGM2vKqK2oyiLFygJRqKVhawu3+DOCk7OxLy/6jYkWXhlHwOoTb0WqGnWGAS7sooxbZowy+pK9Yg==} engines: {node: '>=18'} cpu: [x64] os: [darwin] @@ -720,14 +720,14 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.25.3': - resolution: {integrity: sha512-EJiyS70BYybOBpJth3M0KLOus0n+RRMKTYzhYhFeMwp7e/RaajXvP+BWlmEXNk6uk+KAu46j/kaQzr6au+JcIw==} + '@esbuild/freebsd-arm64@0.25.5': + resolution: {integrity: sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.25.5': - resolution: {integrity: sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==} + '@esbuild/freebsd-arm64@0.25.6': + resolution: {integrity: sha512-aoLF2c3OvDn2XDTRvn8hN6DRzVVpDlj2B/F66clWd/FHLiHaG3aVZjxQX2DYphA5y/evbdGvC6Us13tvyt4pWg==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] @@ -738,14 +738,14 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.3': - resolution: {integrity: sha512-Q+wSjaLpGxYf7zC0kL0nDlhsfuFkoN+EXrx2KSB33RhinWzejOd6AvgmP5JbkgXKmjhmpfgKZq24pneodYqE8Q==} + '@esbuild/freebsd-x64@0.25.5': + resolution: {integrity: sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.5': - resolution: {integrity: sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==} + '@esbuild/freebsd-x64@0.25.6': + resolution: {integrity: sha512-2SkqTjTSo2dYi/jzFbU9Plt1vk0+nNg8YC8rOXXea+iA3hfNJWebKYPs3xnOUf9+ZWhKAaxnQNUf2X9LOpeiMQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] @@ -756,14 +756,14 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.25.3': - resolution: {integrity: sha512-xCUgnNYhRD5bb1C1nqrDV1PfkwgbswTTBRbAd8aH5PhYzikdf/ddtsYyMXFfGSsb/6t6QaPSzxtbfAZr9uox4A==} + '@esbuild/linux-arm64@0.25.5': + resolution: {integrity: sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.25.5': - resolution: {integrity: sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==} + '@esbuild/linux-arm64@0.25.6': + resolution: {integrity: sha512-b967hU0gqKd9Drsh/UuAm21Khpoh6mPBSgz8mKRq4P5mVK8bpA+hQzmm/ZwGVULSNBzKdZPQBRT3+WuVavcWsQ==} engines: {node: '>=18'} cpu: [arm64] os: [linux] @@ -774,14 +774,14 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.25.3': - resolution: {integrity: sha512-dUOVmAUzuHy2ZOKIHIKHCm58HKzFqd+puLaS424h6I85GlSDRZIA5ycBixb3mFgM0Jdh+ZOSB6KptX30DD8YOQ==} + '@esbuild/linux-arm@0.25.5': + resolution: {integrity: sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.25.5': - resolution: {integrity: sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==} + '@esbuild/linux-arm@0.25.6': + resolution: {integrity: sha512-SZHQlzvqv4Du5PrKE2faN0qlbsaW/3QQfUUc6yO2EjFcA83xnwm91UbEEVx4ApZ9Z5oG8Bxz4qPE+HFwtVcfyw==} engines: {node: '>=18'} cpu: [arm] os: [linux] @@ -792,14 +792,14 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.25.3': - resolution: {integrity: sha512-yplPOpczHOO4jTYKmuYuANI3WhvIPSVANGcNUeMlxH4twz/TeXuzEP41tGKNGWJjuMhotpGabeFYGAOU2ummBw==} + '@esbuild/linux-ia32@0.25.5': + resolution: {integrity: sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.25.5': - resolution: {integrity: sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==} + '@esbuild/linux-ia32@0.25.6': + resolution: {integrity: sha512-aHWdQ2AAltRkLPOsKdi3xv0mZ8fUGPdlKEjIEhxCPm5yKEThcUjHpWB1idN74lfXGnZ5SULQSgtr5Qos5B0bPw==} engines: {node: '>=18'} cpu: [ia32] os: [linux] @@ -810,14 +810,14 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.25.3': - resolution: {integrity: sha512-P4BLP5/fjyihmXCELRGrLd793q/lBtKMQl8ARGpDxgzgIKJDRJ/u4r1A/HgpBpKpKZelGct2PGI4T+axcedf6g==} + '@esbuild/linux-loong64@0.25.5': + resolution: {integrity: sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.25.5': - resolution: {integrity: sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==} + '@esbuild/linux-loong64@0.25.6': + resolution: {integrity: sha512-VgKCsHdXRSQ7E1+QXGdRPlQ/e08bN6WMQb27/TMfV+vPjjTImuT9PmLXupRlC90S1JeNNW5lzkAEO/McKeJ2yg==} engines: {node: '>=18'} cpu: [loong64] os: [linux] @@ -828,14 +828,14 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.25.3': - resolution: {integrity: sha512-eRAOV2ODpu6P5divMEMa26RRqb2yUoYsuQQOuFUexUoQndm4MdpXXDBbUoKIc0iPa4aCO7gIhtnYomkn2x+bag==} + '@esbuild/linux-mips64el@0.25.5': + resolution: {integrity: sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.25.5': - resolution: {integrity: sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==} + '@esbuild/linux-mips64el@0.25.6': + resolution: {integrity: sha512-WViNlpivRKT9/py3kCmkHnn44GkGXVdXfdc4drNmRl15zVQ2+D2uFwdlGh6IuK5AAnGTo2qPB1Djppj+t78rzw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] @@ -846,14 +846,14 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.25.3': - resolution: {integrity: sha512-ZC4jV2p7VbzTlnl8nZKLcBkfzIf4Yad1SJM4ZMKYnJqZFD4rTI+pBG65u8ev4jk3/MPwY9DvGn50wi3uhdaghg==} + '@esbuild/linux-ppc64@0.25.5': + resolution: {integrity: sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.25.5': - resolution: {integrity: sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==} + '@esbuild/linux-ppc64@0.25.6': + resolution: {integrity: sha512-wyYKZ9NTdmAMb5730I38lBqVu6cKl4ZfYXIs31Baf8aoOtB4xSGi3THmDYt4BTFHk7/EcVixkOV2uZfwU3Q2Jw==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] @@ -864,14 +864,14 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.25.3': - resolution: {integrity: sha512-LDDODcFzNtECTrUUbVCs6j9/bDVqy7DDRsuIXJg6so+mFksgwG7ZVnTruYi5V+z3eE5y+BJZw7VvUadkbfg7QA==} + '@esbuild/linux-riscv64@0.25.5': + resolution: {integrity: sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.25.5': - resolution: {integrity: sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==} + '@esbuild/linux-riscv64@0.25.6': + resolution: {integrity: sha512-KZh7bAGGcrinEj4qzilJ4hqTY3Dg2U82c8bv+e1xqNqZCrCyc+TL9AUEn5WGKDzm3CfC5RODE/qc96OcbIe33w==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] @@ -882,14 +882,14 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.25.3': - resolution: {integrity: sha512-s+w/NOY2k0yC2p9SLen+ymflgcpRkvwwa02fqmAwhBRI3SC12uiS10edHHXlVWwfAagYSY5UpmT/zISXPMW3tQ==} + '@esbuild/linux-s390x@0.25.5': + resolution: {integrity: sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.25.5': - resolution: {integrity: sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==} + '@esbuild/linux-s390x@0.25.6': + resolution: {integrity: sha512-9N1LsTwAuE9oj6lHMyyAM+ucxGiVnEqUdp4v7IaMmrwb06ZTEVCIs3oPPplVsnjPfyjmxwHxHMF8b6vzUVAUGw==} engines: {node: '>=18'} cpu: [s390x] os: [linux] @@ -900,26 +900,26 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.25.3': - resolution: {integrity: sha512-nQHDz4pXjSDC6UfOE1Fw9Q8d6GCAd9KdvMZpfVGWSJztYCarRgSDfOVBY5xwhQXseiyxapkiSJi/5/ja8mRFFA==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - '@esbuild/linux-x64@0.25.5': resolution: {integrity: sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.3': - resolution: {integrity: sha512-1QaLtOWq0mzK6tzzp0jRN3eccmN3hezey7mhLnzC6oNlJoUJz4nym5ZD7mDnS/LZQgkrhEbEiTn515lPeLpgWA==} + '@esbuild/linux-x64@0.25.6': + resolution: {integrity: sha512-A6bJB41b4lKFWRKNrWoP2LHsjVzNiaurf7wyj/XtFNTsnPuxwEBWHLty+ZE0dWBKuSK1fvKgrKaNjBS7qbFKig==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.5': + resolution: {integrity: sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-arm64@0.25.5': - resolution: {integrity: sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==} + '@esbuild/netbsd-arm64@0.25.6': + resolution: {integrity: sha512-IjA+DcwoVpjEvyxZddDqBY+uJ2Snc6duLpjmkXm/v4xuS3H+3FkLZlDm9ZsAbF9rsfP3zeA0/ArNDORZgrxR/Q==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] @@ -930,26 +930,26 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.3': - resolution: {integrity: sha512-i5Hm68HXHdgv8wkrt+10Bc50zM0/eonPb/a/OFVfB6Qvpiirco5gBA5bz7S2SHuU+Y4LWn/zehzNX14Sp4r27g==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - '@esbuild/netbsd-x64@0.25.5': resolution: {integrity: sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.3': - resolution: {integrity: sha512-zGAVApJEYTbOC6H/3QBr2mq3upG/LBEXr85/pTtKiv2IXcgKV0RT0QA/hSXZqSvLEpXeIxah7LczB4lkiYhTAQ==} + '@esbuild/netbsd-x64@0.25.6': + resolution: {integrity: sha512-dUXuZr5WenIDlMHdMkvDc1FAu4xdWixTCRgP7RQLBOkkGgwuuzaGSYcOpW4jFxzpzL1ejb8yF620UxAqnBrR9g==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.5': + resolution: {integrity: sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-arm64@0.25.5': - resolution: {integrity: sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==} + '@esbuild/openbsd-arm64@0.25.6': + resolution: {integrity: sha512-l8ZCvXP0tbTJ3iaqdNf3pjaOSd5ex/e6/omLIQCVBLmHTlfXW3zAxQ4fnDmPLOB1x9xrcSi/xtCWFwCZRIaEwg==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] @@ -960,32 +960,38 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.3': - resolution: {integrity: sha512-fpqctI45NnCIDKBH5AXQBsD0NDPbEFczK98hk/aa6HJxbl+UtLkJV2+Bvy5hLSLk3LHmqt0NTkKNso1A9y1a4w==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - '@esbuild/openbsd-x64@0.25.5': resolution: {integrity: sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.25.6': + resolution: {integrity: sha512-hKrmDa0aOFOr71KQ/19JC7az1P0GWtCN1t2ahYAf4O007DHZt/dW8ym5+CUdJhQ/qkZmI1HAF8KkJbEFtCL7gw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.25.6': + resolution: {integrity: sha512-+SqBcAWoB1fYKmpWoQP4pGtx+pUUC//RNYhFdbcSA16617cchuryuhOCRpPsjCblKukAckWsV+aQ3UKT/RMPcA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + '@esbuild/sunos-x64@0.21.5': resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.25.3': - resolution: {integrity: sha512-ROJhm7d8bk9dMCUZjkS8fgzsPAZEjtRJqCAmVgB0gMrvG7hfmPmz9k1rwO4jSiblFjYmNvbECL9uhaPzONMfgA==} + '@esbuild/sunos-x64@0.25.5': + resolution: {integrity: sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.25.5': - resolution: {integrity: sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==} + '@esbuild/sunos-x64@0.25.6': + resolution: {integrity: sha512-dyCGxv1/Br7MiSC42qinGL8KkG4kX0pEsdb0+TKhmJZgCUDBGmyo1/ArCjNGiOLiIAgdbWgmWgib4HoCi5t7kA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] @@ -996,14 +1002,14 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.25.3': - resolution: {integrity: sha512-YWcow8peiHpNBiIXHwaswPnAXLsLVygFwCB3A7Bh5jRkIBFWHGmNQ48AlX4xDvQNoMZlPYzjVOQDYEzWCqufMQ==} + '@esbuild/win32-arm64@0.25.5': + resolution: {integrity: sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.25.5': - resolution: {integrity: sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==} + '@esbuild/win32-arm64@0.25.6': + resolution: {integrity: sha512-42QOgcZeZOvXfsCBJF5Afw73t4veOId//XD3i+/9gSkhSV6Gk3VPlWncctI+JcOyERv85FUo7RxuxGy+z8A43Q==} engines: {node: '>=18'} cpu: [arm64] os: [win32] @@ -1014,14 +1020,14 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.25.3': - resolution: {integrity: sha512-qspTZOIGoXVS4DpNqUYUs9UxVb04khS1Degaw/MnfMe7goQ3lTfQ13Vw4qY/Nj0979BGvMRpAYbs/BAxEvU8ew==} + '@esbuild/win32-ia32@0.25.5': + resolution: {integrity: sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.25.5': - resolution: {integrity: sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==} + '@esbuild/win32-ia32@0.25.6': + resolution: {integrity: sha512-4AWhgXmDuYN7rJI6ORB+uU9DHLq/erBbuMoAuB4VWJTu5KtCgcKYPynF0YI1VkBNuEfjNlLrFr9KZPJzrtLkrQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] @@ -1032,14 +1038,14 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.25.3': - resolution: {integrity: sha512-ICgUR+kPimx0vvRzf+N/7L7tVSQeE3BYY+NhHRHXS1kBuPO7z2+7ea2HbhDyZdTephgvNvKrlDDKUexuCVBVvg==} + '@esbuild/win32-x64@0.25.5': + resolution: {integrity: sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==} engines: {node: '>=18'} cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.25.5': - resolution: {integrity: sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==} + '@esbuild/win32-x64@0.25.6': + resolution: {integrity: sha512-NgJPHHbEpLQgDH2MjQu90pzW/5vvXIZ7KOnPyNBm92A6WgZ/7b6fJyUBjoumLqeOQQGqY2QjQxRo97ah4Sj0cA==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -1054,36 +1060,32 @@ packages: resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.20.1': - resolution: {integrity: sha512-OL0RJzC/CBzli0DrrR31qzj6d6i6Mm3HByuhflhl4LOBiWxN+3i6/t/ZQQNii4tjksXi8r2CRW1wMpWA2ULUEw==} + '@eslint/config-array@0.21.0': + resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/config-helpers@0.2.3': - resolution: {integrity: sha512-u180qk2Um1le4yf0ruXH3PYFeEZeYC3p/4wCTKrr2U1CmGdzGi3KtY0nuPDH48UJxlKCC5RDzbcbh4X0XlqgHg==} + '@eslint/config-helpers@0.3.0': + resolution: {integrity: sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.14.0': - resolution: {integrity: sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/core@0.15.0': - resolution: {integrity: sha512-b7ePw78tEWWkpgZCDYkbqDOP8dmM6qe+AOC6iuJqlq1R/0ahMAeH3qynpnqKFGkMltrp44ohV4ubGyvLX28tzw==} + '@eslint/core@0.15.1': + resolution: {integrity: sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/eslintrc@3.3.1': resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.28.0': - resolution: {integrity: sha512-fnqSjGWd/CoIp4EXIxWVK/sHA6DOHN4+8Ix2cX5ycOY7LG0UY8nHCU5pIp2eaE1Mc7Qd8kHspYNzYXT2ojPLzg==} + '@eslint/js@9.31.0': + resolution: {integrity: sha512-LOm5OVt7D4qiKCqoiPbA7LWmI+tbw1VbTUowBcUMgQSuM6poJufkFkYDcQpo5KfgD39TnNySV26QjOh7VFpSyw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.6': resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/plugin-kit@0.3.2': - resolution: {integrity: sha512-4SaFZCNfJqvk/kenHpI8xvN42DMaoycy4PzKc5otHxRswww1kAt82OlBuwRVLofCACCTZEcla2Ydxv8scMXaTg==} + '@eslint/plugin-kit@0.3.3': + resolution: {integrity: sha512-1+WqvgNMhmlAambTvT3KPtCl/Ibr68VldY2XY40SL1CE0ZXiakFR/cbTspaF5HsnpDMvcYYoJHfl4980NBjGag==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@etherpad/express-session@1.18.4': @@ -1132,8 +1134,8 @@ packages: resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} engines: {node: '>=6.0.0'} - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + '@jridgewell/sourcemap-codec@1.5.4': + resolution: {integrity: sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==} '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} @@ -1179,8 +1181,8 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@playwright/test@1.53.0': - resolution: {integrity: sha512-15hjKreZDcp7t6TL/7jkAo6Df5STZN09jGiv5dbP9A6vMVncXRqE7/B2SncsyOwrkZRBH2i6/TPOL8BVmm3c7w==} + '@playwright/test@1.54.1': + resolution: {integrity: sha512-FS8hQ12acieG2dYSksmLOF7BNxnVf2afRJdCuM1eMSxj6QTSE6G4InGF7oApGgDb65MX7AwMVlIkpru0yZA4Xw==} engines: {node: '>=18'} hasBin: true @@ -1437,103 +1439,103 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.40.1': - resolution: {integrity: sha512-kxz0YeeCrRUHz3zyqvd7n+TVRlNyTifBsmnmNPtk3hQURUyG9eAB+usz6DAwagMusjx/zb3AjvDUvhFGDAexGw==} + '@rollup/rollup-android-arm-eabi@4.45.1': + resolution: {integrity: sha512-NEySIFvMY0ZQO+utJkgoMiCAjMrGvnbDLHvcmlA33UXJpYBCvlBEbMMtV837uCkS+plG2umfhn0T5mMAxGrlRA==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.40.1': - resolution: {integrity: sha512-PPkxTOisoNC6TpnDKatjKkjRMsdaWIhyuMkA4UsBXT9WEZY4uHezBTjs6Vl4PbqQQeu6oION1w2voYZv9yquCw==} + '@rollup/rollup-android-arm64@4.45.1': + resolution: {integrity: sha512-ujQ+sMXJkg4LRJaYreaVx7Z/VMgBBd89wGS4qMrdtfUFZ+TSY5Rs9asgjitLwzeIbhwdEhyj29zhst3L1lKsRQ==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.40.1': - resolution: {integrity: sha512-VWXGISWFY18v/0JyNUy4A46KCFCb9NVsH+1100XP31lud+TzlezBbz24CYzbnA4x6w4hx+NYCXDfnvDVO6lcAA==} + '@rollup/rollup-darwin-arm64@4.45.1': + resolution: {integrity: sha512-FSncqHvqTm3lC6Y13xncsdOYfxGSLnP+73k815EfNmpewPs+EyM49haPS105Rh4aF5mJKywk9X0ogzLXZzN9lA==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.40.1': - resolution: {integrity: sha512-nIwkXafAI1/QCS7pxSpv/ZtFW6TXcNUEHAIA9EIyw5OzxJZQ1YDrX+CL6JAIQgZ33CInl1R6mHet9Y/UZTg2Bw==} + '@rollup/rollup-darwin-x64@4.45.1': + resolution: {integrity: sha512-2/vVn/husP5XI7Fsf/RlhDaQJ7x9zjvC81anIVbr4b/f0xtSmXQTFcGIQ/B1cXIYM6h2nAhJkdMHTnD7OtQ9Og==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.40.1': - resolution: {integrity: sha512-BdrLJ2mHTrIYdaS2I99mriyJfGGenSaP+UwGi1kB9BLOCu9SR8ZpbkmmalKIALnRw24kM7qCN0IOm6L0S44iWw==} + '@rollup/rollup-freebsd-arm64@4.45.1': + resolution: {integrity: sha512-4g1kaDxQItZsrkVTdYQ0bxu4ZIQ32cotoQbmsAnW1jAE4XCMbcBPDirX5fyUzdhVCKgPcrwWuucI8yrVRBw2+g==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.40.1': - resolution: {integrity: sha512-VXeo/puqvCG8JBPNZXZf5Dqq7BzElNJzHRRw3vjBE27WujdzuOPecDPc/+1DcdcTptNBep3861jNq0mYkT8Z6Q==} + '@rollup/rollup-freebsd-x64@4.45.1': + resolution: {integrity: sha512-L/6JsfiL74i3uK1Ti2ZFSNsp5NMiM4/kbbGEcOCps99aZx3g8SJMO1/9Y0n/qKlWZfn6sScf98lEOUe2mBvW9A==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.40.1': - resolution: {integrity: sha512-ehSKrewwsESPt1TgSE/na9nIhWCosfGSFqv7vwEtjyAqZcvbGIg4JAcV7ZEh2tfj/IlfBeZjgOXm35iOOjadcg==} + '@rollup/rollup-linux-arm-gnueabihf@4.45.1': + resolution: {integrity: sha512-RkdOTu2jK7brlu+ZwjMIZfdV2sSYHK2qR08FUWcIoqJC2eywHbXr0L8T/pONFwkGukQqERDheaGTeedG+rra6Q==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.40.1': - resolution: {integrity: sha512-m39iO/aaurh5FVIu/F4/Zsl8xppd76S4qoID8E+dSRQvTyZTOI2gVk3T4oqzfq1PtcvOfAVlwLMK3KRQMaR8lg==} + '@rollup/rollup-linux-arm-musleabihf@4.45.1': + resolution: {integrity: sha512-3kJ8pgfBt6CIIr1o+HQA7OZ9mp/zDk3ctekGl9qn/pRBgrRgfwiffaUmqioUGN9hv0OHv2gxmvdKOkARCtRb8Q==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.40.1': - resolution: {integrity: sha512-Y+GHnGaku4aVLSgrT0uWe2o2Rq8te9hi+MwqGF9r9ORgXhmHK5Q71N757u0F8yU1OIwUIFy6YiJtKjtyktk5hg==} + '@rollup/rollup-linux-arm64-gnu@4.45.1': + resolution: {integrity: sha512-k3dOKCfIVixWjG7OXTCOmDfJj3vbdhN0QYEqB+OuGArOChek22hn7Uy5A/gTDNAcCy5v2YcXRJ/Qcnm4/ma1xw==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.40.1': - resolution: {integrity: sha512-jEwjn3jCA+tQGswK3aEWcD09/7M5wGwc6+flhva7dsQNRZZTe30vkalgIzV4tjkopsTS9Jd7Y1Bsj6a4lzz8gQ==} + '@rollup/rollup-linux-arm64-musl@4.45.1': + resolution: {integrity: sha512-PmI1vxQetnM58ZmDFl9/Uk2lpBBby6B6rF4muJc65uZbxCs0EA7hhKCk2PKlmZKuyVSHAyIw3+/SiuMLxKxWog==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.40.1': - resolution: {integrity: sha512-ySyWikVhNzv+BV/IDCsrraOAZ3UaC8SZB67FZlqVwXwnFhPihOso9rPOxzZbjp81suB1O2Topw+6Ug3JNegejQ==} + '@rollup/rollup-linux-loongarch64-gnu@4.45.1': + resolution: {integrity: sha512-9UmI0VzGmNJ28ibHW2GpE2nF0PBQqsyiS4kcJ5vK+wuwGnV5RlqdczVocDSUfGX/Na7/XINRVoUgJyFIgipoRg==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.40.1': - resolution: {integrity: sha512-BvvA64QxZlh7WZWqDPPdt0GH4bznuL6uOO1pmgPnnv86rpUpc8ZxgZwcEgXvo02GRIZX1hQ0j0pAnhwkhwPqWg==} + '@rollup/rollup-linux-powerpc64le-gnu@4.45.1': + resolution: {integrity: sha512-7nR2KY8oEOUTD3pBAxIBBbZr0U7U+R9HDTPNy+5nVVHDXI4ikYniH1oxQz9VoB5PbBU1CZuDGHkLJkd3zLMWsg==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.40.1': - resolution: {integrity: sha512-EQSP+8+1VuSulm9RKSMKitTav89fKbHymTf25n5+Yr6gAPZxYWpj3DzAsQqoaHAk9YX2lwEyAf9S4W8F4l3VBQ==} + '@rollup/rollup-linux-riscv64-gnu@4.45.1': + resolution: {integrity: sha512-nlcl3jgUultKROfZijKjRQLUu9Ma0PeNv/VFHkZiKbXTBQXhpytS8CIj5/NfBeECZtY2FJQubm6ltIxm/ftxpw==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.40.1': - resolution: {integrity: sha512-n/vQ4xRZXKuIpqukkMXZt9RWdl+2zgGNx7Uda8NtmLJ06NL8jiHxUawbwC+hdSq1rrw/9CghCpEONor+l1e2gA==} + '@rollup/rollup-linux-riscv64-musl@4.45.1': + resolution: {integrity: sha512-HJV65KLS51rW0VY6rvZkiieiBnurSzpzore1bMKAhunQiECPuxsROvyeaot/tcK3A3aGnI+qTHqisrpSgQrpgA==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.40.1': - resolution: {integrity: sha512-h8d28xzYb98fMQKUz0w2fMc1XuGzLLjdyxVIbhbil4ELfk5/orZlSTpF/xdI9C8K0I8lCkq+1En2RJsawZekkg==} + '@rollup/rollup-linux-s390x-gnu@4.45.1': + resolution: {integrity: sha512-NITBOCv3Qqc6hhwFt7jLV78VEO/il4YcBzoMGGNxznLgRQf43VQDae0aAzKiBeEPIxnDrACiMgbqjuihx08OOw==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.40.1': - resolution: {integrity: sha512-XiK5z70PEFEFqcNj3/zRSz/qX4bp4QIraTy9QjwJAb/Z8GM7kVUsD0Uk8maIPeTyPCP03ChdI+VVmJriKYbRHQ==} + '@rollup/rollup-linux-x64-gnu@4.45.1': + resolution: {integrity: sha512-+E/lYl6qu1zqgPEnTrs4WysQtvc/Sh4fC2nByfFExqgYrqkKWp1tWIbe+ELhixnenSpBbLXNi6vbEEJ8M7fiHw==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.40.1': - resolution: {integrity: sha512-2BRORitq5rQ4Da9blVovzNCMaUlyKrzMSvkVR0D4qPuOy/+pMCrh1d7o01RATwVy+6Fa1WBw+da7QPeLWU/1mQ==} + '@rollup/rollup-linux-x64-musl@4.45.1': + resolution: {integrity: sha512-a6WIAp89p3kpNoYStITT9RbTbTnqarU7D8N8F2CV+4Cl9fwCOZraLVuVFvlpsW0SbIiYtEnhCZBPLoNdRkjQFw==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.40.1': - resolution: {integrity: sha512-b2bcNm9Kbde03H+q+Jjw9tSfhYkzrDUf2d5MAd1bOJuVplXvFhWz7tRtWvD8/ORZi7qSCy0idW6tf2HgxSXQSg==} + '@rollup/rollup-win32-arm64-msvc@4.45.1': + resolution: {integrity: sha512-T5Bi/NS3fQiJeYdGvRpTAP5P02kqSOpqiopwhj0uaXB6nzs5JVi2XMJb18JUSKhCOX8+UE1UKQufyD6Or48dJg==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.40.1': - resolution: {integrity: sha512-DfcogW8N7Zg7llVEfpqWMZcaErKfsj9VvmfSyRjCyo4BI3wPEfrzTtJkZG6gKP/Z92wFm6rz2aDO7/JfiR/whA==} + '@rollup/rollup-win32-ia32-msvc@4.45.1': + resolution: {integrity: sha512-lxV2Pako3ujjuUe9jiU3/s7KSrDfH6IgTSQOnDWr9aJ92YsFd7EurmClK0ly/t8dzMkDtd04g60WX6yl0sGfdw==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.40.1': - resolution: {integrity: sha512-ECyOuDeH3C1I8jH2MK1RtBJW+YPMvSfT0a5NN0nHfQYnDSJ6tUiZH3gzwVP5/Kfh/+Tt7tpWVF9LXNTnhTJ3kA==} + '@rollup/rollup-win32-x64-msvc@4.45.1': + resolution: {integrity: sha512-M/fKi4sasCdM8i0aWJjCSFm2qEnYRR8AMLG2kxp6wD13+tMGA4Z1tVAuHkNRjud5SW2EM3naLuK35w9twvf6aA==} cpu: [x64] os: [win32] @@ -1764,9 +1766,6 @@ packages: '@types/deep-eql@4.0.2': resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} - '@types/estree@1.0.7': - resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} - '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} @@ -1806,8 +1805,8 @@ packages: '@types/json5@0.0.29': resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - '@types/jsonwebtoken@9.0.9': - resolution: {integrity: sha512-uoe+GxEuHbvy12OUQct2X9JenKM3qAscquYymuQN4fMWG9DBQtykrQEFcAbVACF7qaLw9BePSodUL0kquqBJpQ==} + '@types/jsonwebtoken@9.0.10': + resolution: {integrity: sha512-asx5hIG9Qmf/1oStypjanR7iKTv0gXQ1Ov/jfrX6kS/EO0OFni8orbmGCn0672NHR3kXHwpAwR+B368ZGN/2rA==} '@types/keygrip@1.0.6': resolution: {integrity: sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ==} @@ -1851,8 +1850,8 @@ packages: '@types/node-fetch@2.6.12': resolution: {integrity: sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==} - '@types/node@24.0.1': - resolution: {integrity: sha512-MX4Zioh39chHlDJbKmEgydJDS3tspMP/lnQC67G3SWsTnb9NeYVWOjkxpOSy4oMfPs4StcWHwBrvUb4ybfnuaw==} + '@types/node@24.0.14': + resolution: {integrity: sha512-4zXMWD91vBLGRtHK3YbIoFMia+1nqEz72coM42C5ETjnNCa/heoj7NT1G67iAfOqMmcfhuCZ4uNpyz8EjlAejw==} '@types/oidc-provider@9.1.1': resolution: {integrity: sha512-sG4UcE4AbUwAsEpyrcyoqZ383wJiQObZU+gTa1Iv288+l09HwSr88hBZE2IBLlXS+RKmLId0i4B430PBFO/XRA==} @@ -1930,11 +1929,11 @@ packages: typescript: optional: true - '@typescript-eslint/eslint-plugin@8.34.0': - resolution: {integrity: sha512-QXwAlHlbcAwNlEEMKQS2RCgJsgXrTJdjXT08xEgbPFa2yYQgVjBymxP5DrfrE7X7iodSzd9qBUHUycdyVJTW1w==} + '@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.34.0 + '@typescript-eslint/parser': ^8.37.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' @@ -1948,15 +1947,15 @@ packages: typescript: optional: true - '@typescript-eslint/parser@8.34.0': - resolution: {integrity: sha512-vxXJV1hVFx3IXz/oy2sICsJukaBrtDEQSBiV48/YIV5KWjX1dO+bcIr/kCPrW6weKXvsaGKFNlwH0v2eYdRRbA==} + '@typescript-eslint/parser@8.37.0': + resolution: {integrity: sha512-kVIaQE9vrN9RLCQMQ3iyRlVJpTiDUY6woHGb30JDkfJErqrQEmtdWH3gV0PBAfGZgQXoqzXOO0T3K6ioApbbAA==} 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.34.0': - resolution: {integrity: sha512-iEgDALRf970/B2YExmtPMPF54NenZUf4xpL3wsCRx/lgjz6ul/l13R81ozP/ZNuXfnLCS+oPmG7JIxfdNYKELw==} + '@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' @@ -1965,12 +1964,12 @@ packages: resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/scope-manager@8.34.0': - resolution: {integrity: sha512-9Ac0X8WiLykl0aj1oYQNcLZjHgBojT6cW68yAgZ19letYu+Hxd0rE0veI1XznSSst1X5lwnxhPbVdwjDRIomRw==} + '@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/tsconfig-utils@8.34.0': - resolution: {integrity: sha512-+W9VYHKFIzA5cBeooqQxqNriAP0QeQ7xTiDuIOr71hzgffm3EL2hxwWBIIj4GuofIbKxGNarpKqIq6Q6YrShOA==} + '@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' @@ -1985,8 +1984,8 @@ packages: typescript: optional: true - '@typescript-eslint/type-utils@8.34.0': - resolution: {integrity: sha512-n7zSmOcUVhcRYC75W2pnPpbO1iwhJY3NLoHEtbJwJSNlVAZuwqu05zY3f3s2SDWWDSo9FdN5szqc73DCtDObAg==} + '@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 @@ -1996,8 +1995,8 @@ packages: resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/types@8.34.0': - resolution: {integrity: sha512-9V24k/paICYPniajHfJ4cuAWETnt7Ssy+R0Rbcqo5sSFr3QEZ/8TSoUi9XeXVBGXCaLtwTOKSLGcInCAvyZeMA==} + '@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/typescript-estree@7.18.0': @@ -2009,8 +2008,8 @@ packages: typescript: optional: true - '@typescript-eslint/typescript-estree@8.34.0': - resolution: {integrity: sha512-rOi4KZxI7E0+BMqG7emPSK1bB4RICCpF7QD3KCLXn9ZvWoESsOMlHyZPAHyG04ujVplPaHbmEvs34m+wjgtVtg==} + '@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' @@ -2021,8 +2020,8 @@ packages: peerDependencies: eslint: ^8.56.0 - '@typescript-eslint/utils@8.34.0': - resolution: {integrity: sha512-8L4tWatGchV9A1cKbjaavS6mwYwp39jql8xUmIIKJdm+qiaeHy5KMKlBrf30akXAWBzn2SqKsNOtSENWUwg7XQ==} + '@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 @@ -2032,8 +2031,8 @@ packages: resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/visitor-keys@8.34.0': - resolution: {integrity: sha512-qHV7pW7E85A0x6qyrFn+O+q1k1p3tQCsqIZ1KZ5ESLXY57aTvUd3/a4rdPTeXisvhXn2VQG0VSKUqs8KHF2zcA==} + '@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} '@ungap/structured-clone@1.3.0': @@ -2126,11 +2125,11 @@ packages: vite: ^5.0.0 || ^6.0.0 vue: ^3.2.25 - '@vitest/expect@3.2.3': - resolution: {integrity: sha512-W2RH2TPWVHA1o7UmaFKISPvdicFJH+mjykctJFoAkUw+SPTJTGjUNdKscFBrqM7IPnCVu6zihtKYa7TkZS1dkQ==} + '@vitest/expect@3.2.4': + resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} - '@vitest/mocker@3.2.3': - resolution: {integrity: sha512-cP6fIun+Zx8he4rbWvi+Oya6goKQDZK+Yq4hhlggwQBbrlOQ4qtZ+G4nxB6ZnzI9lyIb+JnvyiJnPC2AGbKSPA==} + '@vitest/mocker@3.2.4': + resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==} peerDependencies: msw: ^2.4.9 vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0 @@ -2140,20 +2139,20 @@ packages: vite: optional: true - '@vitest/pretty-format@3.2.3': - resolution: {integrity: sha512-yFglXGkr9hW/yEXngO+IKMhP0jxyFw2/qys/CK4fFUZnSltD+MU7dVYGrH8rvPcK/O6feXQA+EU33gjaBBbAng==} + '@vitest/pretty-format@3.2.4': + resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} - '@vitest/runner@3.2.3': - resolution: {integrity: sha512-83HWYisT3IpMaU9LN+VN+/nLHVBCSIUKJzGxC5RWUOsK1h3USg7ojL+UXQR3b4o4UBIWCYdD2fxuzM7PQQ1u8w==} + '@vitest/runner@3.2.4': + resolution: {integrity: sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==} - '@vitest/snapshot@3.2.3': - resolution: {integrity: sha512-9gIVWx2+tysDqUmmM1L0hwadyumqssOL1r8KJipwLx5JVYyxvVRfxvMq7DaWbZZsCqZnu/dZedaZQh4iYTtneA==} + '@vitest/snapshot@3.2.4': + resolution: {integrity: sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==} - '@vitest/spy@3.2.3': - resolution: {integrity: sha512-JHu9Wl+7bf6FEejTCREy+DmgWe+rQKbK+y32C/k5f4TBIAlijhJbRBIRIOCEpVevgRsCQR2iHRUH2/qKVM/plw==} + '@vitest/spy@3.2.4': + resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==} - '@vitest/utils@3.2.3': - resolution: {integrity: sha512-4zFBCU5Pf+4Z6v+rwnZ1HU1yzOKKvDkMXZrymE2PBlbjKJRlrOxbvpfPSvJTGRIwGoahaOGvp+kbCoxifhzJ1Q==} + '@vitest/utils@3.2.4': + resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} '@vue/compiler-core@3.5.13': resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==} @@ -2462,9 +2461,9 @@ packages: ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - chai@5.2.0: - resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} - engines: {node: '>=12'} + chai@5.2.1: + resolution: {integrity: sha512-5nFxhUrX0PqtyogoYOA8IPswy5sZFTOsBFl/9bNsmDLgsxYTzSZQJDPppDnZPTQbzSEm0hqGjWPzRemQCYbD6A==} + engines: {node: '>=18'} chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} @@ -2828,13 +2827,13 @@ packages: engines: {node: '>=12'} hasBin: true - esbuild@0.25.3: - resolution: {integrity: sha512-qKA6Pvai73+M2FtftpNKRxJ78GIjmFXFxd/1DVBqGo/qNhLSfv+G12n9pNoWdytJC8U00TrViOwpjT0zgqQS8Q==} + esbuild@0.25.5: + resolution: {integrity: sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==} engines: {node: '>=18'} hasBin: true - esbuild@0.25.5: - resolution: {integrity: sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==} + esbuild@0.25.6: + resolution: {integrity: sha512-GVuzuUwtdsghE3ocJ9Bs8PNoF13HNQ5TXbEi2AhvVb8xU1Iwt9Fos9FEamfoee+u/TOsn7GUWc04lz46n2bbTg==} engines: {node: '>=18'} hasBin: true @@ -2992,8 +2991,8 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.28.0: - resolution: {integrity: sha512-ocgh41VhRlf9+fVpe7QKzwLj9c92fDiqOj8Y3Sd4/ZmVA4Btx4PlUYPq4pp9JDyupkf1upbEXecxL2mwNV7jPQ==} + eslint@9.31.0: + resolution: {integrity: sha512-QldCVh/ztyKJJZLr4jXNUByx3gR+TDYZCRXEktiZoUR3PGy4qCmSbkxcIle8GEwGpb5JBZazlaJ/CxLidXdEbQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -3046,8 +3045,8 @@ packages: engines: {node: '>=18.0.0'} hasBin: true - expect-type@1.2.1: - resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==} + expect-type@1.2.2: + resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==} engines: {node: '>=12.0.0'} express-rate-limit@7.5.1: @@ -3085,14 +3084,6 @@ packages: fastq@1.19.1: resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} - fdir@6.4.4: - resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==} - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true - fdir@6.4.6: resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==} peerDependencies: @@ -3392,8 +3383,8 @@ packages: i18next-browser-languagedetector@8.2.0: resolution: {integrity: sha512-P+3zEKLnOF0qmiesW383vsLdtQVyKtCNA9cjSoKCppTKPQVfKd2W8hbVo5ZhNJKDqeM7BOcvNoKJOjpHh4Js9g==} - i18next@25.2.1: - resolution: {integrity: sha512-+UoXK5wh+VlE1Zy5p6MjcvctHXAhRwQKCxiJD8noKZzIXmnAX8gdHX5fLPA3MEVxEN4vbZkQFy8N0LyD9tUqPw==} + i18next@25.3.2: + resolution: {integrity: sha512-JSnbZDxRVbphc5jiptxr3o2zocy5dEqpVm9qCGdJwRNO+9saUJS0/u4LnM/13C23fUEWxAylPqKU/NpMV/IjqA==} peerDependencies: typescript: ^5 peerDependenciesMeta: @@ -3759,8 +3750,8 @@ packages: resolution: {integrity: sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==} engines: {node: '>=8.0'} - loupe@3.1.3: - resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} + loupe@3.1.4: + resolution: {integrity: sha512-wJzkKwJrheKtknCOKNEtDK4iqg/MxmZheEMtSTYvnzRdEYaZzmgH976nenp8WdJRdx5Vc1X/9MO0Oszl6ezeXg==} lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} @@ -3779,8 +3770,8 @@ packages: resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} engines: {node: '>=12'} - lucide-react@0.515.0: - resolution: {integrity: sha512-Sy7bY0MeicRm2pzrnoHm2h6C1iVoeHyBU2fjdQDsXGP51fhkhau1/ZV/dzrcxEmAKsxYb6bGaIsMnGHuQ5s0dw==} + lucide-react@0.525.0: + resolution: {integrity: sha512-Tm1txJ2OkymCGkvwoHt33Y2JpN5xucVq1slHcgE6Lk0WjDfjgKWor5CdVER8U6DvcfMwh4M8XxmpTiyzfmfDYQ==} peerDependencies: react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -3913,8 +3904,8 @@ packages: mocha-froth@0.2.10: resolution: {integrity: sha512-xyJqAYtm2zjrkG870hjeSVvGgS4Dc9tRokmN6R7XLgBKhdtAJ1ytU6zL045djblfHaPyTkSerQU4wqcjsv7Aew==} - mocha@11.6.0: - resolution: {integrity: sha512-i0JVb+OUBqw63X/1pC3jCyJsqYisgxySBbsQa8TKvefpA1oEnw7JXxXnftfMHRsw7bEEVGRtVlHcDYXBa7FzVw==} + mocha@11.7.1: + resolution: {integrity: sha512-5EK+Cty6KheMS/YLPPMJC64g5V61gIR25KsRItHw6x4hEKT6Njp1n9LOlH4gpevuwMVS66SXaBBpg+RWZkza4A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true @@ -4112,8 +4103,8 @@ packages: pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - pathval@2.0.0: - resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + pathval@2.0.1: + resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} engines: {node: '>= 14.16'} perfect-debounce@1.0.0: @@ -4126,17 +4117,17 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - picomatch@4.0.2: - resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} - playwright-core@1.53.0: - resolution: {integrity: sha512-mGLg8m0pm4+mmtB7M89Xw/GSqoNC+twivl8ITteqvAndachozYe2ZA7srU6uleV1vEdAHYqjq+SV8SNxRRFYBw==} + playwright-core@1.54.1: + resolution: {integrity: sha512-Nbjs2zjj0htNhzgiy5wu+3w09YetDx5pkrpI/kZotDlDUaYk0HVA5xrBVPdow4SAUIlhgKcJeJg4GRKW6xHusA==} engines: {node: '>=18'} hasBin: true - playwright@1.53.0: - resolution: {integrity: sha512-ghGNnIEYZC4E+YtclRn4/p6oYbdPiASELBIYkBXfaTVKreQUYbMUYQDwS12a8F0/HtIjr/CkGjtwABeFPGcS4Q==} + playwright@1.54.1: + resolution: {integrity: sha512-peWpSwIBmSLi6aW2auvrUtf2DqY16YYcCMO8rTVx486jKmDTJg7UAhyrraP98GB8BoPURZP8+nxO7TSd4cPr5g==} engines: {node: '>=18'} hasBin: true @@ -4144,8 +4135,8 @@ packages: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} - postcss@8.5.3: - resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} + postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} preact@10.26.4: @@ -4221,14 +4212,14 @@ packages: peerDependencies: react: ^19.1.0 - react-hook-form@7.57.0: - resolution: {integrity: sha512-RbEks3+cbvTP84l/VXGUZ+JMrKOS8ykQCRYdm5aYsxnDquL0vspsyNhGRO7pcH6hsZqWlPOjLye7rJqdtdAmlg==} + react-hook-form@7.60.0: + resolution: {integrity: sha512-SBrYOvMbDB7cV8ZfNpaiLcgjH/a1c7aK0lK+aNigpf4xWLO8q+o4tcvVurv3c4EOyzn/3dCsYt4GKD42VvJ/+A==} engines: {node: '>=18.0.0'} peerDependencies: react: ^16.8.0 || ^17 || ^18 || ^19 - react-i18next@15.5.3: - resolution: {integrity: sha512-ypYmOKOnjqPEJZO4m1BI0kS8kWqkBNsKYyhVUfij0gvjy9xJNoG/VcGkxq5dRlVwzmrmY1BQMAmpbbUBLwC4Kw==} + react-i18next@15.6.0: + resolution: {integrity: sha512-W135dB0rDfiFmbMipC17nOhGdttO5mzH8BivY+2ybsQBbXvxWIwl3cmeH3T9d+YPBSJu/ouyJKFJTtkK7rJofw==} peerDependencies: i18next: '>= 23.2.3' react: '>= 16.8.0' @@ -4263,15 +4254,15 @@ packages: '@types/react': optional: true - react-router-dom@7.6.2: - resolution: {integrity: sha512-Q8zb6VlTbdYKK5JJBLQEN06oTUa/RAbG/oQS1auK1I0TbJOXktqm+QENEVJU6QvWynlXPRBXI3fiOQcSEA78rA==} + react-router-dom@7.6.3: + resolution: {integrity: sha512-DiWJm9qdUAmiJrVWaeJdu4TKu13+iB/8IEi0EW/XgaHCjW/vWGrwzup0GVvaMteuZjKnh5bEvJP/K0MDnzawHw==} engines: {node: '>=20.0.0'} peerDependencies: react: '>=18' react-dom: '>=18' - react-router@7.6.2: - resolution: {integrity: sha512-U7Nv3y+bMimgWjhlT5CRdzHPu2/KVmqPwKUCChW8en5P3znxUqwlYFlbmyj8Rgp1SF6zs5X4+77kBVknkg6a0w==} + react-router@7.6.3: + resolution: {integrity: sha512-zf45LZp5skDC6I3jDLXQUu0u26jtuP4lEGbc7BbdyxenBN1vJSTA18czM2D+h5qyMBuMrD+9uB+mU37HIoKGRA==} engines: {node: '>=20.0.0'} peerDependencies: react: '>=18' @@ -4358,8 +4349,8 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - rollup@4.40.1: - resolution: {integrity: sha512-C5VvvgCCyfyotVITIAv+4efVytl5F7wt+/I2i9q9GZcEXW9BP52YYOXC58igUi+LFZVHukErIIqQSWwv/M3WRw==} + rollup@4.45.1: + resolution: {integrity: sha512-4iya7Jb76fVpQyLoiVpzUrsjQ12r3dM7fIVz+4NwoYvZOShknRmiv+iu9CClZml5ZLGb0XMcYLutK6w9tgxHDw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -4666,6 +4657,10 @@ packages: engines: {node: '>=14.18.0'} deprecated: Please upgrade to superagent v10.2.2+, see release notes at https://github.com/forwardemail/superagent/releases/tag/v10.2.2 - maintenance is supported by Forward Email @ https://forwardemail.net + superagent@10.2.2: + resolution: {integrity: sha512-vWMq11OwWCC84pQaFPzF/VO3BrjkCeewuvJgt1jfV0499Z1QSAWN4EqfMM5WlFDDX9/oP8JjlDKpblrmEoyu4Q==} + engines: {node: '>=14.18.0'} + superagent@8.1.2: resolution: {integrity: sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==} engines: {node: '>=6.4.0 <13 || >=14'} @@ -4675,10 +4670,9 @@ packages: resolution: {integrity: sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==} engines: {node: '>=16'} - supertest@7.1.1: - resolution: {integrity: sha512-aI59HBTlG9e2wTjxGJV+DygfNLgnWbGdZxiA/sgrnNNikIW8lbDvCtF6RnhZoJ82nU7qv7ZLjrvWqCEm52fAmw==} + supertest@7.1.3: + resolution: {integrity: sha512-ORY0gPa6ojmg/C74P/bDoS21WL6FMXq5I8mawkEz30/zkwdu0gOeqstFy316vHG6OKxqQ+IbGneRemHI8WraEw==} engines: {node: '>=14.18.0'} - deprecated: Please upgrade to supertest v7.1.3+, see release notes at https://github.com/forwardemail/supertest/releases/tag/v7.1.3 - maintenance is supported by Forward Email @ https://forwardemail.net supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} @@ -4726,16 +4720,12 @@ packages: tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - tinyglobby@0.2.13: - resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==} - engines: {node: '>=12.0.0'} - tinyglobby@0.2.14: resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} engines: {node: '>=12.0.0'} - tinypool@1.1.0: - resolution: {integrity: sha512-7CotroY9a8DKsKprEy/a14aCCm8jYVmR7aFy4fpkZM8sdpNJbKkixuNjgM50yCmip2ezc8z4N7k3oe2+rfRJCQ==} + tinypool@1.1.1: + resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==} engines: {node: ^18.0.0 || >=20.0.0} tinyrainbow@2.0.0: @@ -4951,16 +4941,16 @@ packages: vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - vite-node@3.2.3: - resolution: {integrity: sha512-gc8aAifGuDIpZHrPjuHyP4dpQmYXqWw7D1GmDnWeNWP654UEXzVfQ5IHPSK5HaHkwB/+p1atpYpSdw/2kOv8iQ==} + vite-node@3.2.4: + resolution: {integrity: sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true - vite-plugin-static-copy@3.0.0: - resolution: {integrity: sha512-Uki9pPUQ4ZnoMEdIFabvoh9h6Bh9Q1m3iF7BrZvoiF30reREpJh2gZb4jOnW1/uYFzyRiLCmFSkM+8hwiq1vWQ==} + vite-plugin-static-copy@3.1.1: + resolution: {integrity: sha512-oR53SkL5cX4KT1t18E/xU50vJDo0N8oaHza4EMk0Fm+2/u6nQivxavOfrDk3udWj+dizRizB/QnBvJOOQrTTAQ==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: - vite: ^5.0.0 || ^6.0.0 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 vite-plugin-svgr@4.3.0: resolution: {integrity: sha512-Jy9qLB2/PyWklpYy0xk0UU3TlU0t2UMpJXZvf+hWII1lAmRHrOUKi11Uw8N3rxoNk7atZNYO3pR3vI1f7oi+6w==} @@ -4998,19 +4988,19 @@ packages: terser: optional: true - vite@6.3.5: - resolution: {integrity: sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + vite@7.0.4: + resolution: {integrity: sha512-SkaSguuS7nnmV7mfJ8l81JGBFV7Gvzp8IzgE8A8t23+AxuNX61Q5H1Tpz5efduSN7NHC8nQXD3sKQKZAu5mNEA==} + engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + '@types/node': ^20.19.0 || >=22.12.0 jiti: '>=1.21.0' - less: '*' + less: ^4.0.0 lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 terser: ^5.16.0 tsx: ^4.8.1 yaml: ^2.4.2 @@ -5050,16 +5040,16 @@ packages: postcss: optional: true - vitest@3.2.3: - resolution: {integrity: sha512-E6U2ZFXe3N/t4f5BwUaVCKRLHqUpk1CBWeMh78UT4VaTPH/2dyvH6ALl29JTovEPu9dVKr/K/J4PkXgrMbw4Ww==} + vitest@3.2.4: + resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/debug': ^4.1.12 '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - '@vitest/browser': 3.2.3 - '@vitest/ui': 3.2.3 + '@vitest/browser': 3.2.4 + '@vitest/ui': 3.2.4 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -5147,8 +5137,8 @@ packages: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} - workerpool@9.3.2: - resolution: {integrity: sha512-Xz4Nm9c+LiBHhDR5bDLnNzmj6+5F+cyEAWPMkbs2awq/dYazR/efelZzUAjB/y3kNHL+uzkHvxVVpaOfGCPV7A==} + workerpool@9.3.3: + resolution: {integrity: sha512-slxCaKbYjEdFT/o2rH9xS1hf4uRDch1w7Uo+apxhZ+sf/1d9e0ZVkn42kPNGP2dgjIx6YFvSevj0zHvbWe2jdw==} wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} @@ -5231,8 +5221,8 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - zustand@5.0.5: - resolution: {integrity: sha512-mILtRfKW9xM47hqxGIxCv12gXusoY/xTSHBYApXozR0HmQv299whhBeeAcRy+KrPPybzosvJBCOmVjq6x12fCg==} + zustand@5.0.6: + resolution: {integrity: sha512-ihAqNeUVhe0MAD+X8M5UzqyZ9k3FFZLBTtqo6JLPwV53cbRB/mJwBI0PxcIgqhBBHlEs8G45OTDTMq3gNcLq3A==} engines: {node: '>=12.20.0'} peerDependencies: '@types/react': '>=18.0.0' @@ -5538,230 +5528,233 @@ snapshots: '@esbuild/aix-ppc64@0.21.5': optional: true - '@esbuild/aix-ppc64@0.25.3': + '@esbuild/aix-ppc64@0.25.5': optional: true - '@esbuild/aix-ppc64@0.25.5': + '@esbuild/aix-ppc64@0.25.6': optional: true '@esbuild/android-arm64@0.21.5': optional: true - '@esbuild/android-arm64@0.25.3': + '@esbuild/android-arm64@0.25.5': optional: true - '@esbuild/android-arm64@0.25.5': + '@esbuild/android-arm64@0.25.6': optional: true '@esbuild/android-arm@0.21.5': optional: true - '@esbuild/android-arm@0.25.3': + '@esbuild/android-arm@0.25.5': optional: true - '@esbuild/android-arm@0.25.5': + '@esbuild/android-arm@0.25.6': optional: true '@esbuild/android-x64@0.21.5': optional: true - '@esbuild/android-x64@0.25.3': + '@esbuild/android-x64@0.25.5': optional: true - '@esbuild/android-x64@0.25.5': + '@esbuild/android-x64@0.25.6': optional: true '@esbuild/darwin-arm64@0.21.5': optional: true - '@esbuild/darwin-arm64@0.25.3': + '@esbuild/darwin-arm64@0.25.5': optional: true - '@esbuild/darwin-arm64@0.25.5': + '@esbuild/darwin-arm64@0.25.6': optional: true '@esbuild/darwin-x64@0.21.5': optional: true - '@esbuild/darwin-x64@0.25.3': + '@esbuild/darwin-x64@0.25.5': optional: true - '@esbuild/darwin-x64@0.25.5': + '@esbuild/darwin-x64@0.25.6': optional: true '@esbuild/freebsd-arm64@0.21.5': optional: true - '@esbuild/freebsd-arm64@0.25.3': + '@esbuild/freebsd-arm64@0.25.5': optional: true - '@esbuild/freebsd-arm64@0.25.5': + '@esbuild/freebsd-arm64@0.25.6': optional: true '@esbuild/freebsd-x64@0.21.5': optional: true - '@esbuild/freebsd-x64@0.25.3': + '@esbuild/freebsd-x64@0.25.5': optional: true - '@esbuild/freebsd-x64@0.25.5': + '@esbuild/freebsd-x64@0.25.6': optional: true '@esbuild/linux-arm64@0.21.5': optional: true - '@esbuild/linux-arm64@0.25.3': + '@esbuild/linux-arm64@0.25.5': optional: true - '@esbuild/linux-arm64@0.25.5': + '@esbuild/linux-arm64@0.25.6': optional: true '@esbuild/linux-arm@0.21.5': optional: true - '@esbuild/linux-arm@0.25.3': + '@esbuild/linux-arm@0.25.5': optional: true - '@esbuild/linux-arm@0.25.5': + '@esbuild/linux-arm@0.25.6': optional: true '@esbuild/linux-ia32@0.21.5': optional: true - '@esbuild/linux-ia32@0.25.3': + '@esbuild/linux-ia32@0.25.5': optional: true - '@esbuild/linux-ia32@0.25.5': + '@esbuild/linux-ia32@0.25.6': optional: true '@esbuild/linux-loong64@0.21.5': optional: true - '@esbuild/linux-loong64@0.25.3': + '@esbuild/linux-loong64@0.25.5': optional: true - '@esbuild/linux-loong64@0.25.5': + '@esbuild/linux-loong64@0.25.6': optional: true '@esbuild/linux-mips64el@0.21.5': optional: true - '@esbuild/linux-mips64el@0.25.3': + '@esbuild/linux-mips64el@0.25.5': optional: true - '@esbuild/linux-mips64el@0.25.5': + '@esbuild/linux-mips64el@0.25.6': optional: true '@esbuild/linux-ppc64@0.21.5': optional: true - '@esbuild/linux-ppc64@0.25.3': + '@esbuild/linux-ppc64@0.25.5': optional: true - '@esbuild/linux-ppc64@0.25.5': + '@esbuild/linux-ppc64@0.25.6': optional: true '@esbuild/linux-riscv64@0.21.5': optional: true - '@esbuild/linux-riscv64@0.25.3': + '@esbuild/linux-riscv64@0.25.5': optional: true - '@esbuild/linux-riscv64@0.25.5': + '@esbuild/linux-riscv64@0.25.6': optional: true '@esbuild/linux-s390x@0.21.5': optional: true - '@esbuild/linux-s390x@0.25.3': + '@esbuild/linux-s390x@0.25.5': optional: true - '@esbuild/linux-s390x@0.25.5': + '@esbuild/linux-s390x@0.25.6': optional: true '@esbuild/linux-x64@0.21.5': optional: true - '@esbuild/linux-x64@0.25.3': - optional: true - '@esbuild/linux-x64@0.25.5': optional: true - '@esbuild/netbsd-arm64@0.25.3': + '@esbuild/linux-x64@0.25.6': optional: true '@esbuild/netbsd-arm64@0.25.5': optional: true - '@esbuild/netbsd-x64@0.21.5': + '@esbuild/netbsd-arm64@0.25.6': optional: true - '@esbuild/netbsd-x64@0.25.3': + '@esbuild/netbsd-x64@0.21.5': optional: true '@esbuild/netbsd-x64@0.25.5': optional: true - '@esbuild/openbsd-arm64@0.25.3': + '@esbuild/netbsd-x64@0.25.6': optional: true '@esbuild/openbsd-arm64@0.25.5': optional: true - '@esbuild/openbsd-x64@0.21.5': + '@esbuild/openbsd-arm64@0.25.6': optional: true - '@esbuild/openbsd-x64@0.25.3': + '@esbuild/openbsd-x64@0.21.5': optional: true '@esbuild/openbsd-x64@0.25.5': optional: true - '@esbuild/sunos-x64@0.21.5': + '@esbuild/openbsd-x64@0.25.6': optional: true - '@esbuild/sunos-x64@0.25.3': + '@esbuild/openharmony-arm64@0.25.6': + optional: true + + '@esbuild/sunos-x64@0.21.5': optional: true '@esbuild/sunos-x64@0.25.5': optional: true - '@esbuild/win32-arm64@0.21.5': + '@esbuild/sunos-x64@0.25.6': optional: true - '@esbuild/win32-arm64@0.25.3': + '@esbuild/win32-arm64@0.21.5': optional: true '@esbuild/win32-arm64@0.25.5': optional: true - '@esbuild/win32-ia32@0.21.5': + '@esbuild/win32-arm64@0.25.6': optional: true - '@esbuild/win32-ia32@0.25.3': + '@esbuild/win32-ia32@0.21.5': optional: true '@esbuild/win32-ia32@0.25.5': optional: true - '@esbuild/win32-x64@0.21.5': + '@esbuild/win32-ia32@0.25.6': optional: true - '@esbuild/win32-x64@0.25.3': + '@esbuild/win32-x64@0.21.5': optional: true '@esbuild/win32-x64@0.25.5': optional: true - '@eslint-community/eslint-utils@4.7.0(eslint@9.28.0)': + '@esbuild/win32-x64@0.25.6': + optional: true + + '@eslint-community/eslint-utils@4.7.0(eslint@9.31.0)': dependencies: - eslint: 9.28.0 + eslint: 9.31.0 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} - '@eslint/config-array@0.20.1': + '@eslint/config-array@0.21.0': dependencies: '@eslint/object-schema': 2.1.6 debug: 4.4.1(supports-color@8.1.1) @@ -5769,13 +5762,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.2.3': {} + '@eslint/config-helpers@0.3.0': {} - '@eslint/core@0.14.0': - dependencies: - '@types/json-schema': 7.0.15 - - '@eslint/core@0.15.0': + '@eslint/core@0.15.1': dependencies: '@types/json-schema': 7.0.15 @@ -5793,13 +5782,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.28.0': {} + '@eslint/js@9.31.0': {} '@eslint/object-schema@2.1.6': {} - '@eslint/plugin-kit@0.3.2': + '@eslint/plugin-kit@0.3.3': dependencies: - '@eslint/core': 0.15.0 + '@eslint/core': 0.15.1 levn: 0.4.1 '@etherpad/express-session@1.18.4': @@ -5846,19 +5835,19 @@ snapshots: '@jridgewell/gen-mapping@0.3.8': dependencies: '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.4 '@jridgewell/trace-mapping': 0.3.25 '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/set-array@1.2.1': {} - '@jridgewell/sourcemap-codec@1.5.0': {} + '@jridgewell/sourcemap-codec@1.5.4': {} '@jridgewell/trace-mapping@0.3.25': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.4 '@jsdevtools/ono@7.1.3': {} @@ -5905,9 +5894,9 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@playwright/test@1.53.0': + '@playwright/test@1.54.1': dependencies: - playwright: 1.53.0 + playwright: 1.54.1 '@radix-ui/primitive@1.1.2': {} @@ -6123,72 +6112,72 @@ snapshots: '@rolldown/pluginutils@1.0.0-beta.11': {} - '@rollup/pluginutils@5.1.4(rollup@4.40.1)': + '@rollup/pluginutils@5.1.4(rollup@4.45.1)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 - picomatch: 4.0.2 + picomatch: 4.0.3 optionalDependencies: - rollup: 4.40.1 + rollup: 4.45.1 - '@rollup/rollup-android-arm-eabi@4.40.1': + '@rollup/rollup-android-arm-eabi@4.45.1': optional: true - '@rollup/rollup-android-arm64@4.40.1': + '@rollup/rollup-android-arm64@4.45.1': optional: true - '@rollup/rollup-darwin-arm64@4.40.1': + '@rollup/rollup-darwin-arm64@4.45.1': optional: true - '@rollup/rollup-darwin-x64@4.40.1': + '@rollup/rollup-darwin-x64@4.45.1': optional: true - '@rollup/rollup-freebsd-arm64@4.40.1': + '@rollup/rollup-freebsd-arm64@4.45.1': optional: true - '@rollup/rollup-freebsd-x64@4.40.1': + '@rollup/rollup-freebsd-x64@4.45.1': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.40.1': + '@rollup/rollup-linux-arm-gnueabihf@4.45.1': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.40.1': + '@rollup/rollup-linux-arm-musleabihf@4.45.1': optional: true - '@rollup/rollup-linux-arm64-gnu@4.40.1': + '@rollup/rollup-linux-arm64-gnu@4.45.1': optional: true - '@rollup/rollup-linux-arm64-musl@4.40.1': + '@rollup/rollup-linux-arm64-musl@4.45.1': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.40.1': + '@rollup/rollup-linux-loongarch64-gnu@4.45.1': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.40.1': + '@rollup/rollup-linux-powerpc64le-gnu@4.45.1': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.40.1': + '@rollup/rollup-linux-riscv64-gnu@4.45.1': optional: true - '@rollup/rollup-linux-riscv64-musl@4.40.1': + '@rollup/rollup-linux-riscv64-musl@4.45.1': optional: true - '@rollup/rollup-linux-s390x-gnu@4.40.1': + '@rollup/rollup-linux-s390x-gnu@4.45.1': optional: true - '@rollup/rollup-linux-x64-gnu@4.40.1': + '@rollup/rollup-linux-x64-gnu@4.45.1': optional: true - '@rollup/rollup-linux-x64-musl@4.40.1': + '@rollup/rollup-linux-x64-musl@4.45.1': optional: true - '@rollup/rollup-win32-arm64-msvc@4.40.1': + '@rollup/rollup-win32-arm64-msvc@4.45.1': optional: true - '@rollup/rollup-win32-ia32-msvc@4.40.1': + '@rollup/rollup-win32-ia32-msvc@4.45.1': optional: true - '@rollup/rollup-win32-x64-msvc@4.40.1': + '@rollup/rollup-win32-x64-msvc@4.45.1': optional: true '@rtsao/scc@1.1.0': {} @@ -6384,14 +6373,14 @@ snapshots: '@types/accepts@1.3.7': dependencies: - '@types/node': 24.0.1 + '@types/node': 24.0.14 '@types/async@3.2.24': {} '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 24.0.1 + '@types/node': 24.0.14 '@types/chai@5.2.2': dependencies: @@ -6399,7 +6388,7 @@ snapshots: '@types/connect@3.4.38': dependencies: - '@types/node': 24.0.1 + '@types/node': 24.0.14 '@types/content-disposition@0.5.9': {} @@ -6410,11 +6399,11 @@ snapshots: '@types/connect': 3.4.38 '@types/express': 4.17.21 '@types/keygrip': 1.0.6 - '@types/node': 24.0.1 + '@types/node': 24.0.14 '@types/cors@2.8.17': dependencies: - '@types/node': 24.0.1 + '@types/node': 24.0.14 '@types/debug@4.1.12': dependencies: @@ -6422,13 +6411,11 @@ snapshots: '@types/deep-eql@4.0.2': {} - '@types/estree@1.0.7': {} - '@types/estree@1.0.8': {} '@types/express-serve-static-core@4.19.6': dependencies: - '@types/node': 24.0.1 + '@types/node': 24.0.14 '@types/qs': 6.9.18 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -6442,11 +6429,11 @@ snapshots: '@types/formidable@3.4.5': dependencies: - '@types/node': 24.0.1 + '@types/node': 24.0.14 '@types/fs-extra@9.0.13': dependencies: - '@types/node': 24.0.1 + '@types/node': 24.0.14 '@types/hast@3.0.4': dependencies: @@ -6464,7 +6451,7 @@ snapshots: '@types/jsdom@21.1.7': dependencies: - '@types/node': 24.0.1 + '@types/node': 24.0.14 '@types/tough-cookie': 4.0.5 parse5: 7.2.1 @@ -6472,10 +6459,10 @@ snapshots: '@types/json5@0.0.29': {} - '@types/jsonwebtoken@9.0.9': + '@types/jsonwebtoken@9.0.10': dependencies: '@types/ms': 2.1.0 - '@types/node': 24.0.1 + '@types/node': 24.0.14 '@types/keygrip@1.0.6': {} @@ -6492,7 +6479,7 @@ snapshots: '@types/http-errors': 2.0.5 '@types/keygrip': 1.0.6 '@types/koa-compose': 3.2.8 - '@types/node': 24.0.1 + '@types/node': 24.0.14 '@types/linkify-it@5.0.0': {} @@ -6521,10 +6508,10 @@ snapshots: '@types/node-fetch@2.6.12': dependencies: - '@types/node': 24.0.1 + '@types/node': 24.0.14 form-data: 4.0.3 - '@types/node@24.0.1': + '@types/node@24.0.14': dependencies: undici-types: 7.8.0 @@ -6532,7 +6519,7 @@ snapshots: dependencies: '@types/keygrip': 1.0.6 '@types/koa': 2.15.0 - '@types/node': 24.0.1 + '@types/node': 24.0.14 '@types/qs@6.9.18': {} @@ -6551,12 +6538,12 @@ snapshots: '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 24.0.1 + '@types/node': 24.0.14 '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.5 - '@types/node': 24.0.1 + '@types/node': 24.0.14 '@types/send': 0.17.4 '@types/sinon@17.0.4': @@ -6571,7 +6558,7 @@ snapshots: dependencies: '@types/cookiejar': 2.1.5 '@types/methods': 1.1.4 - '@types/node': 24.0.1 + '@types/node': 24.0.14 form-data: 4.0.3 '@types/supertest@6.0.3': @@ -6586,7 +6573,7 @@ snapshots: '@types/tar@6.1.13': dependencies: - '@types/node': 24.0.1 + '@types/node': 24.0.14 minipass: 4.2.8 '@types/tough-cookie@4.0.5': {} @@ -6601,15 +6588,15 @@ snapshots: '@types/whatwg-mimetype@3.0.2': {} - '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0)(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.31.0)(typescript@5.8.3))(eslint@9.31.0)(typescript@5.8.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 7.18.0(eslint@9.28.0)(typescript@5.8.3) + '@typescript-eslint/parser': 7.18.0(eslint@9.31.0)(typescript@5.8.3) '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/type-utils': 7.18.0(eslint@9.28.0)(typescript@5.8.3) - '@typescript-eslint/utils': 7.18.0(eslint@9.28.0)(typescript@5.8.3) + '@typescript-eslint/type-utils': 7.18.0(eslint@9.31.0)(typescript@5.8.3) + '@typescript-eslint/utils': 7.18.0(eslint@9.31.0)(typescript@5.8.3) '@typescript-eslint/visitor-keys': 7.18.0 - eslint: 9.28.0 + eslint: 9.31.0 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -6619,15 +6606,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.34.0(@typescript-eslint/parser@8.34.0(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0)(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@8.37.0(@typescript-eslint/parser@8.37.0(eslint@9.31.0)(typescript@5.8.3))(eslint@9.31.0)(typescript@5.8.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.34.0(eslint@9.28.0)(typescript@5.8.3) - '@typescript-eslint/scope-manager': 8.34.0 - '@typescript-eslint/type-utils': 8.34.0(eslint@9.28.0)(typescript@5.8.3) - '@typescript-eslint/utils': 8.34.0(eslint@9.28.0)(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.34.0 - eslint: 9.28.0 + '@typescript-eslint/parser': 8.37.0(eslint@9.31.0)(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.37.0 + '@typescript-eslint/type-utils': 8.37.0(eslint@9.31.0)(typescript@5.8.3) + '@typescript-eslint/utils': 8.37.0(eslint@9.31.0)(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.37.0 + eslint: 9.31.0 graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -6636,35 +6623,35 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.18.0(eslint@9.28.0)(typescript@5.8.3)': + '@typescript-eslint/parser@7.18.0(eslint@9.31.0)(typescript@5.8.3)': dependencies: '@typescript-eslint/scope-manager': 7.18.0 '@typescript-eslint/types': 7.18.0 '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.8.3) '@typescript-eslint/visitor-keys': 7.18.0 debug: 4.4.1(supports-color@8.1.1) - eslint: 9.28.0 + eslint: 9.31.0 optionalDependencies: typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.34.0(eslint@9.28.0)(typescript@5.8.3)': + '@typescript-eslint/parser@8.37.0(eslint@9.31.0)(typescript@5.8.3)': dependencies: - '@typescript-eslint/scope-manager': 8.34.0 - '@typescript-eslint/types': 8.34.0 - '@typescript-eslint/typescript-estree': 8.34.0(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.34.0 + '@typescript-eslint/scope-manager': 8.37.0 + '@typescript-eslint/types': 8.37.0 + '@typescript-eslint/typescript-estree': 8.37.0(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.37.0 debug: 4.4.1(supports-color@8.1.1) - eslint: 9.28.0 + eslint: 9.31.0 typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.34.0(typescript@5.8.3)': + '@typescript-eslint/project-service@8.37.0(typescript@5.8.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.34.0(typescript@5.8.3) - '@typescript-eslint/types': 8.34.0 + '@typescript-eslint/tsconfig-utils': 8.37.0(typescript@5.8.3) + '@typescript-eslint/types': 8.37.0 debug: 4.4.1(supports-color@8.1.1) typescript: 5.8.3 transitivePeerDependencies: @@ -6675,33 +6662,34 @@ snapshots: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/visitor-keys': 7.18.0 - '@typescript-eslint/scope-manager@8.34.0': + '@typescript-eslint/scope-manager@8.37.0': dependencies: - '@typescript-eslint/types': 8.34.0 - '@typescript-eslint/visitor-keys': 8.34.0 + '@typescript-eslint/types': 8.37.0 + '@typescript-eslint/visitor-keys': 8.37.0 - '@typescript-eslint/tsconfig-utils@8.34.0(typescript@5.8.3)': + '@typescript-eslint/tsconfig-utils@8.37.0(typescript@5.8.3)': dependencies: typescript: 5.8.3 - '@typescript-eslint/type-utils@7.18.0(eslint@9.28.0)(typescript@5.8.3)': + '@typescript-eslint/type-utils@7.18.0(eslint@9.31.0)(typescript@5.8.3)': dependencies: '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.8.3) - '@typescript-eslint/utils': 7.18.0(eslint@9.28.0)(typescript@5.8.3) + '@typescript-eslint/utils': 7.18.0(eslint@9.31.0)(typescript@5.8.3) debug: 4.4.1(supports-color@8.1.1) - eslint: 9.28.0 + eslint: 9.31.0 ts-api-utils: 1.4.3(typescript@5.8.3) optionalDependencies: typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.34.0(eslint@9.28.0)(typescript@5.8.3)': + '@typescript-eslint/type-utils@8.37.0(eslint@9.31.0)(typescript@5.8.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.34.0(typescript@5.8.3) - '@typescript-eslint/utils': 8.34.0(eslint@9.28.0)(typescript@5.8.3) + '@typescript-eslint/types': 8.37.0 + '@typescript-eslint/typescript-estree': 8.37.0(typescript@5.8.3) + '@typescript-eslint/utils': 8.37.0(eslint@9.31.0)(typescript@5.8.3) debug: 4.4.1(supports-color@8.1.1) - eslint: 9.28.0 + eslint: 9.31.0 ts-api-utils: 2.1.0(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: @@ -6709,7 +6697,7 @@ snapshots: '@typescript-eslint/types@7.18.0': {} - '@typescript-eslint/types@8.34.0': {} + '@typescript-eslint/types@8.37.0': {} '@typescript-eslint/typescript-estree@7.18.0(typescript@5.8.3)': dependencies: @@ -6726,12 +6714,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.34.0(typescript@5.8.3)': + '@typescript-eslint/typescript-estree@8.37.0(typescript@5.8.3)': dependencies: - '@typescript-eslint/project-service': 8.34.0(typescript@5.8.3) - '@typescript-eslint/tsconfig-utils': 8.34.0(typescript@5.8.3) - '@typescript-eslint/types': 8.34.0 - '@typescript-eslint/visitor-keys': 8.34.0 + '@typescript-eslint/project-service': 8.37.0(typescript@5.8.3) + '@typescript-eslint/tsconfig-utils': 8.37.0(typescript@5.8.3) + '@typescript-eslint/types': 8.37.0 + '@typescript-eslint/visitor-keys': 8.37.0 debug: 4.4.1(supports-color@8.1.1) fast-glob: 3.3.3 is-glob: 4.0.3 @@ -6742,24 +6730,24 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@7.18.0(eslint@9.28.0)(typescript@5.8.3)': + '@typescript-eslint/utils@7.18.0(eslint@9.31.0)(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.28.0) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.31.0) '@typescript-eslint/scope-manager': 7.18.0 '@typescript-eslint/types': 7.18.0 '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.8.3) - eslint: 9.28.0 + eslint: 9.31.0 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@8.34.0(eslint@9.28.0)(typescript@5.8.3)': + '@typescript-eslint/utils@8.37.0(eslint@9.31.0)(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.28.0) - '@typescript-eslint/scope-manager': 8.34.0 - '@typescript-eslint/types': 8.34.0 - '@typescript-eslint/typescript-estree': 8.34.0(typescript@5.8.3) - eslint: 9.28.0 + '@eslint-community/eslint-utils': 4.7.0(eslint@9.31.0) + '@typescript-eslint/scope-manager': 8.37.0 + '@typescript-eslint/types': 8.37.0 + '@typescript-eslint/typescript-estree': 8.37.0(typescript@5.8.3) + eslint: 9.31.0 typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -6769,9 +6757,9 @@ snapshots: '@typescript-eslint/types': 7.18.0 eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@8.34.0': + '@typescript-eslint/visitor-keys@8.37.0': dependencies: - '@typescript-eslint/types': 8.34.0 + '@typescript-eslint/types': 8.37.0 eslint-visitor-keys: 4.2.1 '@ungap/structured-clone@1.3.0': {} @@ -6823,59 +6811,59 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.3.3': optional: true - '@vitejs/plugin-react-swc@3.10.2(vite@6.3.5(@types/node@24.0.1)(tsx@4.20.3))': + '@vitejs/plugin-react-swc@3.10.2(vite@7.0.4(@types/node@24.0.14)(tsx@4.20.3))': dependencies: '@rolldown/pluginutils': 1.0.0-beta.11 '@swc/core': 1.12.1 - vite: 6.3.5(@types/node@24.0.1)(tsx@4.20.3) + vite: 7.0.4(@types/node@24.0.14)(tsx@4.20.3) transitivePeerDependencies: - '@swc/helpers' - '@vitejs/plugin-vue@5.2.3(vite@5.4.19(@types/node@24.0.1))(vue@3.5.13(typescript@5.8.3))': + '@vitejs/plugin-vue@5.2.3(vite@5.4.19(@types/node@24.0.14))(vue@3.5.13(typescript@5.8.3))': dependencies: - vite: 5.4.19(@types/node@24.0.1) + vite: 5.4.19(@types/node@24.0.14) vue: 3.5.13(typescript@5.8.3) - '@vitest/expect@3.2.3': + '@vitest/expect@3.2.4': dependencies: '@types/chai': 5.2.2 - '@vitest/spy': 3.2.3 - '@vitest/utils': 3.2.3 - chai: 5.2.0 + '@vitest/spy': 3.2.4 + '@vitest/utils': 3.2.4 + chai: 5.2.1 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.3(vite@6.3.5(@types/node@24.0.1)(tsx@4.20.3))': + '@vitest/mocker@3.2.4(vite@7.0.4(@types/node@24.0.14)(tsx@4.20.3))': dependencies: - '@vitest/spy': 3.2.3 + '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 6.3.5(@types/node@24.0.1)(tsx@4.20.3) + vite: 7.0.4(@types/node@24.0.14)(tsx@4.20.3) - '@vitest/pretty-format@3.2.3': + '@vitest/pretty-format@3.2.4': dependencies: tinyrainbow: 2.0.0 - '@vitest/runner@3.2.3': + '@vitest/runner@3.2.4': dependencies: - '@vitest/utils': 3.2.3 + '@vitest/utils': 3.2.4 pathe: 2.0.3 strip-literal: 3.0.0 - '@vitest/snapshot@3.2.3': + '@vitest/snapshot@3.2.4': dependencies: - '@vitest/pretty-format': 3.2.3 + '@vitest/pretty-format': 3.2.4 magic-string: 0.30.17 pathe: 2.0.3 - '@vitest/spy@3.2.3': + '@vitest/spy@3.2.4': dependencies: tinyspy: 4.0.3 - '@vitest/utils@3.2.3': + '@vitest/utils@3.2.4': dependencies: - '@vitest/pretty-format': 3.2.3 - loupe: 3.1.3 + '@vitest/pretty-format': 3.2.4 + loupe: 3.1.4 tinyrainbow: 2.0.0 '@vue/compiler-core@3.5.13': @@ -6900,7 +6888,7 @@ snapshots: '@vue/shared': 3.5.13 estree-walker: 2.0.2 magic-string: 0.30.17 - postcss: 8.5.3 + postcss: 8.5.6 source-map-js: 1.2.1 '@vue/compiler-ssr@3.5.13': @@ -7222,13 +7210,13 @@ snapshots: ccount@2.0.1: {} - chai@5.2.0: + chai@5.2.1: dependencies: assertion-error: 2.0.1 check-error: 2.1.1 deep-eql: 5.0.2 - loupe: 3.1.3 - pathval: 2.0.0 + loupe: 3.1.4 + pathval: 2.0.1 chalk@4.1.2: dependencies: @@ -7510,7 +7498,7 @@ snapshots: engine.io@6.6.4: dependencies: '@types/cors': 2.8.17 - '@types/node': 24.0.1 + '@types/node': 24.0.14 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -7636,34 +7624,6 @@ snapshots: '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 - esbuild@0.25.3: - optionalDependencies: - '@esbuild/aix-ppc64': 0.25.3 - '@esbuild/android-arm': 0.25.3 - '@esbuild/android-arm64': 0.25.3 - '@esbuild/android-x64': 0.25.3 - '@esbuild/darwin-arm64': 0.25.3 - '@esbuild/darwin-x64': 0.25.3 - '@esbuild/freebsd-arm64': 0.25.3 - '@esbuild/freebsd-x64': 0.25.3 - '@esbuild/linux-arm': 0.25.3 - '@esbuild/linux-arm64': 0.25.3 - '@esbuild/linux-ia32': 0.25.3 - '@esbuild/linux-loong64': 0.25.3 - '@esbuild/linux-mips64el': 0.25.3 - '@esbuild/linux-ppc64': 0.25.3 - '@esbuild/linux-riscv64': 0.25.3 - '@esbuild/linux-s390x': 0.25.3 - '@esbuild/linux-x64': 0.25.3 - '@esbuild/netbsd-arm64': 0.25.3 - '@esbuild/netbsd-x64': 0.25.3 - '@esbuild/openbsd-arm64': 0.25.3 - '@esbuild/openbsd-x64': 0.25.3 - '@esbuild/sunos-x64': 0.25.3 - '@esbuild/win32-arm64': 0.25.3 - '@esbuild/win32-ia32': 0.25.3 - '@esbuild/win32-x64': 0.25.3 - esbuild@0.25.5: optionalDependencies: '@esbuild/aix-ppc64': 0.25.5 @@ -7692,6 +7652,35 @@ snapshots: '@esbuild/win32-ia32': 0.25.5 '@esbuild/win32-x64': 0.25.5 + esbuild@0.25.6: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.6 + '@esbuild/android-arm': 0.25.6 + '@esbuild/android-arm64': 0.25.6 + '@esbuild/android-x64': 0.25.6 + '@esbuild/darwin-arm64': 0.25.6 + '@esbuild/darwin-x64': 0.25.6 + '@esbuild/freebsd-arm64': 0.25.6 + '@esbuild/freebsd-x64': 0.25.6 + '@esbuild/linux-arm': 0.25.6 + '@esbuild/linux-arm64': 0.25.6 + '@esbuild/linux-ia32': 0.25.6 + '@esbuild/linux-loong64': 0.25.6 + '@esbuild/linux-mips64el': 0.25.6 + '@esbuild/linux-ppc64': 0.25.6 + '@esbuild/linux-riscv64': 0.25.6 + '@esbuild/linux-s390x': 0.25.6 + '@esbuild/linux-x64': 0.25.6 + '@esbuild/netbsd-arm64': 0.25.6 + '@esbuild/netbsd-x64': 0.25.6 + '@esbuild/openbsd-arm64': 0.25.6 + '@esbuild/openbsd-x64': 0.25.6 + '@esbuild/openharmony-arm64': 0.25.6 + '@esbuild/sunos-x64': 0.25.6 + '@esbuild/win32-arm64': 0.25.6 + '@esbuild/win32-ia32': 0.25.6 + '@esbuild/win32-x64': 0.25.6 + escalade@3.2.0: {} escape-html@1.0.3: {} @@ -7708,24 +7697,24 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-compat-utils@0.5.1(eslint@9.28.0): + eslint-compat-utils@0.5.1(eslint@9.31.0): dependencies: - eslint: 9.28.0 + eslint: 9.31.0 semver: 7.7.2 - eslint-config-etherpad@4.0.4(eslint@9.28.0)(typescript@5.8.3): + eslint-config-etherpad@4.0.4(eslint@9.31.0)(typescript@5.8.3): dependencies: '@rushstack/eslint-patch': 1.11.0 - '@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0)(typescript@5.8.3) - '@typescript-eslint/parser': 7.18.0(eslint@9.28.0)(typescript@5.8.3) - eslint-import-resolver-typescript: 3.10.0(eslint-plugin-import@2.31.0)(eslint@9.28.0) - eslint-plugin-cypress: 2.15.2(eslint@9.28.0) - eslint-plugin-eslint-comments: 3.2.0(eslint@9.28.0) - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@9.28.0)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.0)(eslint@9.28.0) - eslint-plugin-mocha: 10.5.0(eslint@9.28.0) - eslint-plugin-n: 16.6.2(eslint@9.28.0) - eslint-plugin-prefer-arrow: 1.2.3(eslint@9.28.0) - eslint-plugin-promise: 6.6.0(eslint@9.28.0) + '@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.31.0)(typescript@5.8.3))(eslint@9.31.0)(typescript@5.8.3) + '@typescript-eslint/parser': 7.18.0(eslint@9.31.0)(typescript@5.8.3) + eslint-import-resolver-typescript: 3.10.0(eslint-plugin-import@2.31.0)(eslint@9.31.0) + eslint-plugin-cypress: 2.15.2(eslint@9.31.0) + eslint-plugin-eslint-comments: 3.2.0(eslint@9.31.0) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@9.31.0)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.0)(eslint@9.31.0) + eslint-plugin-mocha: 10.5.0(eslint@9.31.0) + eslint-plugin-n: 16.6.2(eslint@9.31.0) + eslint-plugin-prefer-arrow: 1.2.3(eslint@9.31.0) + eslint-plugin-promise: 6.6.0(eslint@9.31.0) eslint-plugin-you-dont-need-lodash-underscore: 6.14.0 transitivePeerDependencies: - eslint @@ -7742,51 +7731,51 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.0(eslint-plugin-import@2.31.0)(eslint@9.28.0): + eslint-import-resolver-typescript@3.10.0(eslint-plugin-import@2.31.0)(eslint@9.31.0): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.1(supports-color@8.1.1) - eslint: 9.28.0 + eslint: 9.31.0 get-tsconfig: 4.10.1 is-bun-module: 2.0.0 stable-hash: 0.0.5 tinyglobby: 0.2.14 unrs-resolver: 1.3.3 optionalDependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@9.28.0)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.0)(eslint@9.28.0) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@9.31.0)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.0)(eslint@9.31.0) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@7.18.0(eslint@9.28.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.0)(eslint@9.28.0): + eslint-module-utils@2.12.0(@typescript-eslint/parser@7.18.0(eslint@9.31.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.0)(eslint@9.31.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 7.18.0(eslint@9.28.0)(typescript@5.8.3) - eslint: 9.28.0 + '@typescript-eslint/parser': 7.18.0(eslint@9.31.0)(typescript@5.8.3) + eslint: 9.31.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.0(eslint-plugin-import@2.31.0)(eslint@9.28.0) + eslint-import-resolver-typescript: 3.10.0(eslint-plugin-import@2.31.0)(eslint@9.31.0) transitivePeerDependencies: - supports-color - eslint-plugin-cypress@2.15.2(eslint@9.28.0): + eslint-plugin-cypress@2.15.2(eslint@9.31.0): dependencies: - eslint: 9.28.0 + eslint: 9.31.0 globals: 13.24.0 - eslint-plugin-es-x@7.8.0(eslint@9.28.0): + eslint-plugin-es-x@7.8.0(eslint@9.31.0): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.28.0) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.31.0) '@eslint-community/regexpp': 4.12.1 - eslint: 9.28.0 - eslint-compat-utils: 0.5.1(eslint@9.28.0) + eslint: 9.31.0 + eslint-compat-utils: 0.5.1(eslint@9.31.0) - eslint-plugin-eslint-comments@3.2.0(eslint@9.28.0): + eslint-plugin-eslint-comments@3.2.0(eslint@9.31.0): dependencies: escape-string-regexp: 1.0.5 - eslint: 9.28.0 + eslint: 9.31.0 ignore: 5.3.2 - eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@9.28.0)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.0)(eslint@9.28.0): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@9.31.0)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.0)(eslint@9.31.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -7795,9 +7784,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.28.0 + eslint: 9.31.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.18.0(eslint@9.28.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.0)(eslint@9.28.0) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.18.0(eslint@9.31.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.0)(eslint@9.31.0) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -7809,25 +7798,25 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 7.18.0(eslint@9.28.0)(typescript@5.8.3) + '@typescript-eslint/parser': 7.18.0(eslint@9.31.0)(typescript@5.8.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-mocha@10.5.0(eslint@9.28.0): + eslint-plugin-mocha@10.5.0(eslint@9.31.0): dependencies: - eslint: 9.28.0 - eslint-utils: 3.0.0(eslint@9.28.0) + eslint: 9.31.0 + eslint-utils: 3.0.0(eslint@9.31.0) globals: 13.24.0 rambda: 7.5.0 - eslint-plugin-n@16.6.2(eslint@9.28.0): + eslint-plugin-n@16.6.2(eslint@9.31.0): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.28.0) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.31.0) builtins: 5.1.0 - eslint: 9.28.0 - eslint-plugin-es-x: 7.8.0(eslint@9.28.0) + eslint: 9.31.0 + eslint-plugin-es-x: 7.8.0(eslint@9.31.0) get-tsconfig: 4.10.1 globals: 13.24.0 ignore: 5.3.2 @@ -7837,21 +7826,21 @@ snapshots: resolve: 1.22.10 semver: 7.7.2 - eslint-plugin-prefer-arrow@1.2.3(eslint@9.28.0): + eslint-plugin-prefer-arrow@1.2.3(eslint@9.31.0): dependencies: - eslint: 9.28.0 + eslint: 9.31.0 - eslint-plugin-promise@6.6.0(eslint@9.28.0): + eslint-plugin-promise@6.6.0(eslint@9.31.0): dependencies: - eslint: 9.28.0 + eslint: 9.31.0 - eslint-plugin-react-hooks@5.2.0(eslint@9.28.0): + eslint-plugin-react-hooks@5.2.0(eslint@9.31.0): dependencies: - eslint: 9.28.0 + eslint: 9.31.0 - eslint-plugin-react-refresh@0.4.20(eslint@9.28.0): + eslint-plugin-react-refresh@0.4.20(eslint@9.31.0): dependencies: - eslint: 9.28.0 + eslint: 9.31.0 eslint-plugin-you-dont-need-lodash-underscore@6.14.0: dependencies: @@ -7862,9 +7851,9 @@ snapshots: esrecurse: 4.3.0 estraverse: 5.3.0 - eslint-utils@3.0.0(eslint@9.28.0): + eslint-utils@3.0.0(eslint@9.31.0): dependencies: - eslint: 9.28.0 + eslint: 9.31.0 eslint-visitor-keys: 2.1.0 eslint-visitor-keys@2.1.0: {} @@ -7873,16 +7862,16 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.28.0: + eslint@9.31.0: dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.28.0) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.31.0) '@eslint-community/regexpp': 4.12.1 - '@eslint/config-array': 0.20.1 - '@eslint/config-helpers': 0.2.3 - '@eslint/core': 0.14.0 + '@eslint/config-array': 0.21.0 + '@eslint/config-helpers': 0.3.0 + '@eslint/core': 0.15.1 '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.28.0 - '@eslint/plugin-kit': 0.3.2 + '@eslint/js': 9.31.0 + '@eslint/plugin-kit': 0.3.3 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 @@ -7953,7 +7942,7 @@ snapshots: - supports-color - utf-8-validate - expect-type@1.2.1: {} + expect-type@1.2.2: {} express-rate-limit@7.5.1(express@4.21.2): dependencies: @@ -8019,13 +8008,9 @@ snapshots: dependencies: reusify: 1.1.0 - fdir@6.4.4(picomatch@4.0.2): + fdir@6.4.6(picomatch@4.0.3): optionalDependencies: - picomatch: 4.0.2 - - fdir@6.4.6(picomatch@4.0.2): - optionalDependencies: - picomatch: 4.0.2 + picomatch: 4.0.3 fetch-blob@3.2.0: dependencies: @@ -8397,7 +8382,7 @@ snapshots: dependencies: '@babel/runtime': 7.27.6 - i18next@25.2.1(typescript@5.8.3): + i18next@25.3.2(typescript@5.8.3): dependencies: '@babel/runtime': 7.27.6 optionalDependencies: @@ -8803,7 +8788,7 @@ snapshots: transitivePeerDependencies: - supports-color - loupe@3.1.3: {} + loupe@3.1.4: {} lower-case@2.0.2: dependencies: @@ -8819,13 +8804,13 @@ snapshots: lru-cache@7.18.3: {} - lucide-react@0.515.0(react@19.1.0): + lucide-react@0.525.0(react@19.1.0): dependencies: react: 19.1.0 magic-string@0.30.17: dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.4 mark.js@8.11.1: {} @@ -8933,7 +8918,7 @@ snapshots: mocha-froth@0.2.10: {} - mocha@11.6.0: + mocha@11.7.1: dependencies: browser-stdout: 1.3.1 chokidar: 4.0.3 @@ -8951,7 +8936,7 @@ snapshots: serialize-javascript: 6.0.2 strip-json-comments: 3.1.1 supports-color: 8.1.1 - workerpool: 9.3.2 + workerpool: 9.3.3 yargs: 17.7.2 yargs-parser: 21.1.1 yargs-unparser: 2.0.0 @@ -9177,7 +9162,7 @@ snapshots: pathe@2.0.3: {} - pathval@2.0.0: {} + pathval@2.0.1: {} perfect-debounce@1.0.0: {} @@ -9185,19 +9170,19 @@ snapshots: picomatch@2.3.1: {} - picomatch@4.0.2: {} + picomatch@4.0.3: {} - playwright-core@1.53.0: {} + playwright-core@1.54.1: {} - playwright@1.53.0: + playwright@1.54.1: dependencies: - playwright-core: 1.53.0 + playwright-core: 1.54.1 optionalDependencies: fsevents: 2.3.2 possible-typed-array-names@1.1.0: {} - postcss@8.5.3: + postcss@8.5.6: dependencies: nanoid: 3.3.11 picocolors: 1.1.1 @@ -9278,15 +9263,15 @@ snapshots: react: 19.1.0 scheduler: 0.26.0 - react-hook-form@7.57.0(react@19.1.0): + react-hook-form@7.60.0(react@19.1.0): dependencies: react: 19.1.0 - react-i18next@15.5.3(i18next@25.2.1(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3): + react-i18next@15.6.0(i18next@25.3.2(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3): dependencies: '@babel/runtime': 7.27.6 html-parse-stringify: 3.0.1 - i18next: 25.2.1(typescript@5.8.3) + i18next: 25.3.2(typescript@5.8.3) react: 19.1.0 optionalDependencies: react-dom: 19.1.0(react@19.1.0) @@ -9311,13 +9296,13 @@ snapshots: optionalDependencies: '@types/react': 19.1.8 - react-router-dom@7.6.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + react-router-dom@7.6.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0): dependencies: react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - react-router: 7.6.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + react-router: 7.6.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react-router@7.6.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + react-router@7.6.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0): dependencies: cookie: 1.0.2 react: 19.1.0 @@ -9413,30 +9398,30 @@ snapshots: rfdc@1.4.1: {} - rollup@4.40.1: + rollup@4.45.1: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.40.1 - '@rollup/rollup-android-arm64': 4.40.1 - '@rollup/rollup-darwin-arm64': 4.40.1 - '@rollup/rollup-darwin-x64': 4.40.1 - '@rollup/rollup-freebsd-arm64': 4.40.1 - '@rollup/rollup-freebsd-x64': 4.40.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.40.1 - '@rollup/rollup-linux-arm-musleabihf': 4.40.1 - '@rollup/rollup-linux-arm64-gnu': 4.40.1 - '@rollup/rollup-linux-arm64-musl': 4.40.1 - '@rollup/rollup-linux-loongarch64-gnu': 4.40.1 - '@rollup/rollup-linux-powerpc64le-gnu': 4.40.1 - '@rollup/rollup-linux-riscv64-gnu': 4.40.1 - '@rollup/rollup-linux-riscv64-musl': 4.40.1 - '@rollup/rollup-linux-s390x-gnu': 4.40.1 - '@rollup/rollup-linux-x64-gnu': 4.40.1 - '@rollup/rollup-linux-x64-musl': 4.40.1 - '@rollup/rollup-win32-arm64-msvc': 4.40.1 - '@rollup/rollup-win32-ia32-msvc': 4.40.1 - '@rollup/rollup-win32-x64-msvc': 4.40.1 + '@rollup/rollup-android-arm-eabi': 4.45.1 + '@rollup/rollup-android-arm64': 4.45.1 + '@rollup/rollup-darwin-arm64': 4.45.1 + '@rollup/rollup-darwin-x64': 4.45.1 + '@rollup/rollup-freebsd-arm64': 4.45.1 + '@rollup/rollup-freebsd-x64': 4.45.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.45.1 + '@rollup/rollup-linux-arm-musleabihf': 4.45.1 + '@rollup/rollup-linux-arm64-gnu': 4.45.1 + '@rollup/rollup-linux-arm64-musl': 4.45.1 + '@rollup/rollup-linux-loongarch64-gnu': 4.45.1 + '@rollup/rollup-linux-powerpc64le-gnu': 4.45.1 + '@rollup/rollup-linux-riscv64-gnu': 4.45.1 + '@rollup/rollup-linux-riscv64-musl': 4.45.1 + '@rollup/rollup-linux-s390x-gnu': 4.45.1 + '@rollup/rollup-linux-x64-gnu': 4.45.1 + '@rollup/rollup-linux-x64-musl': 4.45.1 + '@rollup/rollup-win32-arm64-msvc': 4.45.1 + '@rollup/rollup-win32-ia32-msvc': 4.45.1 + '@rollup/rollup-win32-x64-msvc': 4.45.1 fsevents: 2.3.3 rrweb-cssom@0.8.0: {} @@ -9730,7 +9715,7 @@ snapshots: streamroller@3.1.5: dependencies: date-format: 4.0.14 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.0 fs-extra: 8.1.0 transitivePeerDependencies: - supports-color @@ -9805,6 +9790,20 @@ snapshots: transitivePeerDependencies: - supports-color + superagent@10.2.2: + dependencies: + component-emitter: 1.3.1 + cookiejar: 2.1.4 + debug: 4.4.1(supports-color@8.1.1) + fast-safe-stringify: 2.1.1 + form-data: 4.0.3 + formidable: 3.5.4 + methods: 1.1.2 + mime: 2.6.0 + qs: 6.14.0 + transitivePeerDependencies: + - supports-color + superagent@8.1.2: dependencies: component-emitter: 1.3.1 @@ -9824,10 +9823,10 @@ snapshots: dependencies: copy-anything: 3.0.5 - supertest@7.1.1: + supertest@7.1.3: dependencies: methods: 1.1.2 - superagent: 10.2.1 + superagent: 10.2.2 transitivePeerDependencies: - supports-color @@ -9873,17 +9872,12 @@ snapshots: tinyexec@0.3.2: {} - tinyglobby@0.2.13: - dependencies: - fdir: 6.4.4(picomatch@4.0.2) - picomatch: 4.0.2 - tinyglobby@0.2.14: dependencies: - fdir: 6.4.6(picomatch@4.0.2) - picomatch: 4.0.2 + fdir: 6.4.6(picomatch@4.0.3) + picomatch: 4.0.3 - tinypool@1.1.0: {} + tinypool@1.1.1: {} tinyrainbow@2.0.0: {} @@ -10117,13 +10111,13 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-node@3.2.3(@types/node@24.0.1)(tsx@4.20.3): + vite-node@3.2.4(@types/node@24.0.14)(tsx@4.20.3): dependencies: cac: 6.7.14 debug: 4.4.1(supports-color@8.1.1) es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 6.3.5(@types/node@24.0.1)(tsx@4.20.3) + vite: 7.0.4(@types/node@24.0.14)(tsx@4.20.3) transitivePeerDependencies: - '@types/node' - jiti @@ -10138,49 +10132,49 @@ snapshots: - tsx - yaml - vite-plugin-static-copy@3.0.0(vite@6.3.5(@types/node@24.0.1)(tsx@4.20.3)): + vite-plugin-static-copy@3.1.1(vite@7.0.4(@types/node@24.0.14)(tsx@4.20.3)): dependencies: chokidar: 3.6.0 fs-extra: 11.3.0 p-map: 7.0.3 picocolors: 1.1.1 tinyglobby: 0.2.14 - vite: 6.3.5(@types/node@24.0.1)(tsx@4.20.3) + vite: 7.0.4(@types/node@24.0.14)(tsx@4.20.3) - vite-plugin-svgr@4.3.0(rollup@4.40.1)(typescript@5.8.3)(vite@6.3.5(@types/node@24.0.1)(tsx@4.20.3)): + vite-plugin-svgr@4.3.0(rollup@4.45.1)(typescript@5.8.3)(vite@7.0.4(@types/node@24.0.14)(tsx@4.20.3)): dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.40.1) + '@rollup/pluginutils': 5.1.4(rollup@4.45.1) '@svgr/core': 8.1.0(typescript@5.8.3) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.8.3)) - vite: 6.3.5(@types/node@24.0.1)(tsx@4.20.3) + vite: 7.0.4(@types/node@24.0.14)(tsx@4.20.3) transitivePeerDependencies: - rollup - supports-color - typescript - vite@5.4.19(@types/node@24.0.1): + vite@5.4.19(@types/node@24.0.14): dependencies: esbuild: 0.21.5 - postcss: 8.5.3 - rollup: 4.40.1 + postcss: 8.5.6 + rollup: 4.45.1 optionalDependencies: - '@types/node': 24.0.1 + '@types/node': 24.0.14 fsevents: 2.3.3 - vite@6.3.5(@types/node@24.0.1)(tsx@4.20.3): + vite@7.0.4(@types/node@24.0.14)(tsx@4.20.3): dependencies: - esbuild: 0.25.3 - fdir: 6.4.4(picomatch@4.0.2) - picomatch: 4.0.2 - postcss: 8.5.3 - rollup: 4.40.1 - tinyglobby: 0.2.13 + esbuild: 0.25.6 + fdir: 6.4.6(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.45.1 + tinyglobby: 0.2.14 optionalDependencies: - '@types/node': 24.0.1 + '@types/node': 24.0.14 fsevents: 2.3.3 tsx: 4.20.3 - vitepress@1.6.3(@algolia/client-search@5.23.2)(@types/node@24.0.1)(axios@1.10.0)(jwt-decode@4.0.0)(postcss@8.5.3)(typescript@5.8.3): + vitepress@1.6.3(@algolia/client-search@5.23.2)(@types/node@24.0.14)(axios@1.10.0)(jwt-decode@4.0.0)(postcss@8.5.6)(typescript@5.8.3): dependencies: '@docsearch/css': 3.8.2 '@docsearch/js': 3.8.2(@algolia/client-search@5.23.2) @@ -10189,7 +10183,7 @@ snapshots: '@shikijs/transformers': 2.5.0 '@shikijs/types': 2.5.0 '@types/markdown-it': 14.1.2 - '@vitejs/plugin-vue': 5.2.3(vite@5.4.19(@types/node@24.0.1))(vue@3.5.13(typescript@5.8.3)) + '@vitejs/plugin-vue': 5.2.3(vite@5.4.19(@types/node@24.0.14))(vue@3.5.13(typescript@5.8.3)) '@vue/devtools-api': 7.7.2 '@vue/shared': 3.5.13 '@vueuse/core': 12.8.2(typescript@5.8.3) @@ -10198,10 +10192,10 @@ snapshots: mark.js: 8.11.1 minisearch: 7.1.2 shiki: 2.5.0 - vite: 5.4.19(@types/node@24.0.1) + vite: 5.4.19(@types/node@24.0.14) vue: 3.5.13(typescript@5.8.3) optionalDependencies: - postcss: 8.5.3 + postcss: 8.5.6 transitivePeerDependencies: - '@algolia/client-search' - '@types/node' @@ -10229,34 +10223,34 @@ snapshots: - typescript - universal-cookie - vitest@3.2.3(@types/debug@4.1.12)(@types/node@24.0.1)(jsdom@26.0.0)(tsx@4.20.3): + vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.0.14)(jsdom@26.0.0)(tsx@4.20.3): dependencies: '@types/chai': 5.2.2 - '@vitest/expect': 3.2.3 - '@vitest/mocker': 3.2.3(vite@6.3.5(@types/node@24.0.1)(tsx@4.20.3)) - '@vitest/pretty-format': 3.2.3 - '@vitest/runner': 3.2.3 - '@vitest/snapshot': 3.2.3 - '@vitest/spy': 3.2.3 - '@vitest/utils': 3.2.3 - chai: 5.2.0 + '@vitest/expect': 3.2.4 + '@vitest/mocker': 3.2.4(vite@7.0.4(@types/node@24.0.14)(tsx@4.20.3)) + '@vitest/pretty-format': 3.2.4 + '@vitest/runner': 3.2.4 + '@vitest/snapshot': 3.2.4 + '@vitest/spy': 3.2.4 + '@vitest/utils': 3.2.4 + chai: 5.2.1 debug: 4.4.1(supports-color@8.1.1) - expect-type: 1.2.1 + expect-type: 1.2.2 magic-string: 0.30.17 pathe: 2.0.3 - picomatch: 4.0.2 + picomatch: 4.0.3 std-env: 3.9.0 tinybench: 2.9.0 tinyexec: 0.3.2 tinyglobby: 0.2.14 - tinypool: 1.1.0 + tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 6.3.5(@types/node@24.0.1)(tsx@4.20.3) - vite-node: 3.2.3(@types/node@24.0.1)(tsx@4.20.3) + vite: 7.0.4(@types/node@24.0.14)(tsx@4.20.3) + vite-node: 3.2.4(@types/node@24.0.14)(tsx@4.20.3) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 - '@types/node': 24.0.1 + '@types/node': 24.0.14 jsdom: 26.0.0 transitivePeerDependencies: - jiti @@ -10357,7 +10351,7 @@ snapshots: word-wrap@1.2.5: {} - workerpool@9.3.2: {} + workerpool@9.3.3: {} wrap-ansi@7.0.0: dependencies: @@ -10414,7 +10408,7 @@ snapshots: yocto-queue@0.1.0: {} - zustand@5.0.5(@types/react@19.1.8)(react@19.1.0): + zustand@5.0.6(@types/react@19.1.8)(react@19.1.0): optionalDependencies: '@types/react': 19.1.8 react: 19.1.0 diff --git a/src/package.json b/src/package.json index ee832bdd4..4257f1d2c 100644 --- a/src/package.json +++ b/src/package.json @@ -83,7 +83,7 @@ "etherpad-lite": "node/server.ts" }, "devDependencies": { - "@playwright/test": "^1.53.0", + "@playwright/test": "^1.54.1", "@types/async": "^3.2.24", "@types/express": "^4.17.21", "@types/formidable": "^3.4.5", @@ -91,10 +91,10 @@ "@types/jquery": "^3.5.32", "@types/js-cookie": "^3.0.6", "@types/jsdom": "^21.1.7", - "@types/jsonwebtoken": "^9.0.9", + "@types/jsonwebtoken": "^9.0.10", "@types/mime-types": "^3.0.1", "@types/mocha": "^10.0.9", - "@types/node": "^24.0.1", + "@types/node": "^24.0.14", "@types/oidc-provider": "^9.1.1", "@types/semver": "^7.7.0", "@types/sinon": "^17.0.3", @@ -103,19 +103,19 @@ "@types/underscore": "^1.13.0", "@types/whatwg-mimetype": "^3.0.2", "chokidar": "^4.0.3", - "eslint": "^9.28.0", + "eslint": "^9.31.0", "eslint-config-etherpad": "^4.0.4", "etherpad-cli-client": "^3.0.2", - "mocha": "^11.6.0", + "mocha": "^11.7.1", "mocha-froth": "^0.2.10", "nodeify": "^1.0.1", "openapi-schema-validation": "^0.4.2", "set-cookie-parser": "^2.7.1", "sinon": "^21.0.0", "split-grid": "^1.0.11", - "supertest": "^7.1.1", + "supertest": "^7.1.3", "typescript": "^5.8.2", - "vitest": "^3.2.3" + "vitest": "^3.2.4" }, "engines": { "node": ">=18.18.2", diff --git a/ui/package.json b/ui/package.json index f5cb300e7..788475036 100644 --- a/ui/package.json +++ b/ui/package.json @@ -12,6 +12,6 @@ "devDependencies": { "ep_etherpad-lite": "workspace:../src", "typescript": "^5.8.2", - "vite": "^6.3.5" + "vite": "^7.0.4" } } From fb562fcb2afc69bb55d93f8c6a82988f7193da8d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Jul 2025 15:50:26 +0000 Subject: [PATCH 11/51] build(deps): bump awalsh128/cache-apt-pkgs-action from 1.5.0 to 1.5.1 Bumps [awalsh128/cache-apt-pkgs-action](https://github.com/awalsh128/cache-apt-pkgs-action) from 1.5.0 to 1.5.1. - [Release notes](https://github.com/awalsh128/cache-apt-pkgs-action/releases) - [Commits](https://github.com/awalsh128/cache-apt-pkgs-action/compare/v1.5.0...v1.5.1) --- updated-dependencies: - dependency-name: awalsh128/cache-apt-pkgs-action dependency-version: 1.5.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/backend-tests.yml | 4 ++-- .github/workflows/upgrade-from-latest-release.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/backend-tests.yml b/.github/workflows/backend-tests.yml index 3c6e63bb4..553dd5f66 100644 --- a/.github/workflows/backend-tests.yml +++ b/.github/workflows/backend-tests.yml @@ -53,7 +53,7 @@ jobs: run: pnpm config set auto-install-peers false - name: Install libreoffice - uses: awalsh128/cache-apt-pkgs-action@v1.5.0 + uses: awalsh128/cache-apt-pkgs-action@v1.5.1 with: packages: libreoffice libreoffice-pdfimport version: 1.0 @@ -113,7 +113,7 @@ jobs: run: pnpm config set auto-install-peers false - name: Install libreoffice - uses: awalsh128/cache-apt-pkgs-action@v1.5.0 + uses: awalsh128/cache-apt-pkgs-action@v1.5.1 with: packages: libreoffice libreoffice-pdfimport version: 1.0 diff --git a/.github/workflows/upgrade-from-latest-release.yml b/.github/workflows/upgrade-from-latest-release.yml index 08421e7ec..4c562f147 100644 --- a/.github/workflows/upgrade-from-latest-release.yml +++ b/.github/workflows/upgrade-from-latest-release.yml @@ -43,7 +43,7 @@ jobs: - name: Only install direct dependencies run: pnpm config set auto-install-peers false - name: Install libreoffice - uses: awalsh128/cache-apt-pkgs-action@v1.5.0 + uses: awalsh128/cache-apt-pkgs-action@v1.5.1 with: packages: libreoffice libreoffice-pdfimport version: 1.0 @@ -62,7 +62,7 @@ jobs: run: pnpm config set auto-install-peers false - name: Install libreoffice - uses: awalsh128/cache-apt-pkgs-action@v1.5.0 + uses: awalsh128/cache-apt-pkgs-action@v1.5.1 with: packages: libreoffice libreoffice-pdfimport version: 1.0 From 3fff4fe2ceb7980bd6b6b62208937c389aa8a4e7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 16 Jul 2025 17:04:10 +0000 Subject: [PATCH 12/51] build(deps): bump superagent from 10.2.1 to 10.2.2 Bumps [superagent](https://github.com/ladjs/superagent) from 10.2.1 to 10.2.2. - [Release notes](https://github.com/ladjs/superagent/releases) - [Changelog](https://github.com/forwardemail/superagent/blob/master/HISTORY.md) - [Commits](https://github.com/ladjs/superagent/compare/v10.2.1...v10.2.2) --- updated-dependencies: - dependency-name: superagent dependency-version: 10.2.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pnpm-lock.yaml | 15 +++++++-------- src/package.json | 2 +- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d9806d8b3..3d2c9c3ca 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -258,8 +258,8 @@ importers: specifier: ^4.8.1 version: 4.8.1 superagent: - specifier: 10.2.1 - version: 10.2.1 + specifier: 10.2.2 + version: 10.2.2 swagger-ui-express: specifier: ^5.0.1 version: 5.0.1(express@4.21.2) @@ -4652,10 +4652,9 @@ packages: strip-literal@3.0.0: resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==} - superagent@10.2.1: - resolution: {integrity: sha512-O+PCv11lgTNJUzy49teNAWLjBZfc+A1enOwTpLlH6/rsvKcTwcdTT8m9azGkVqM7HBl5jpyZ7KTPhHweokBcdg==} + superagent@10.2.2: + resolution: {integrity: sha512-vWMq11OwWCC84pQaFPzF/VO3BrjkCeewuvJgt1jfV0499Z1QSAWN4EqfMM5WlFDDX9/oP8JjlDKpblrmEoyu4Q==} engines: {node: '>=14.18.0'} - deprecated: Please upgrade to superagent v10.2.2+, see release notes at https://github.com/forwardemail/superagent/releases/tag/v10.2.2 - maintenance is supported by Forward Email @ https://forwardemail.net superagent@10.2.2: resolution: {integrity: sha512-vWMq11OwWCC84pQaFPzF/VO3BrjkCeewuvJgt1jfV0499Z1QSAWN4EqfMM5WlFDDX9/oP8JjlDKpblrmEoyu4Q==} @@ -9776,13 +9775,13 @@ snapshots: dependencies: js-tokens: 9.0.1 - superagent@10.2.1: + superagent@10.2.2: dependencies: component-emitter: 1.3.1 cookiejar: 2.1.4 - debug: 4.4.0 + debug: 4.4.1(supports-color@8.1.1) fast-safe-stringify: 2.1.1 - form-data: 4.0.2 + form-data: 4.0.3 formidable: 3.5.4 methods: 1.1.2 mime: 2.6.0 diff --git a/src/package.json b/src/package.json index 4257f1d2c..080cb5718 100644 --- a/src/package.json +++ b/src/package.json @@ -69,7 +69,7 @@ "semver": "^7.7.2", "socket.io": "^4.8.1", "socket.io-client": "^4.8.1", - "superagent": "10.2.1", + "superagent": "10.2.2", "swagger-ui-express": "^5.0.1", "tinycon": "0.6.8", "tsx": "4.20.3", From e7c82fae7a3b17c4f8cb5fac0020c411acc958de Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 16 Jul 2025 17:03:22 +0000 Subject: [PATCH 13/51] build(deps): bump openapi-backend from 5.12.0 to 5.13.0 Bumps [openapi-backend](https://github.com/openapistack/openapi-backend) from 5.12.0 to 5.13.0. - [Commits](https://github.com/openapistack/openapi-backend/compare/5.12.0...5.13.0) --- updated-dependencies: - dependency-name: openapi-backend dependency-version: 5.13.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pnpm-lock.yaml | 10 +++++----- src/package.json | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3d2c9c3ca..7c3750bb7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -225,8 +225,8 @@ importers: specifier: ^9.3.0 version: 9.3.0 openapi-backend: - specifier: ^5.12.0 - version: 5.12.0 + specifier: ^5.13.0 + version: 5.13.0 proxy-addr: specifier: ^2.0.7 version: 2.0.7 @@ -4013,8 +4013,8 @@ packages: oniguruma-to-es@3.1.1: resolution: {integrity: sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ==} - openapi-backend@5.12.0: - resolution: {integrity: sha512-tD4Ak8w5XBlGVi4gso/QNbxcfrj3j6ypuKg9bx7l6hQaeMVxEdf5Ro8M/SVoNg7L8VptzIkwE8Lp3H+Ba88hWA==} + openapi-backend@5.13.0: + resolution: {integrity: sha512-dE2f0MCpL2ZKctVG4w+Nl+1C4GQput5dQ4QYy6XeblGvM2Z1b3JcP2FzL6DrLzzDYEKTLgAaQM3jD7yhftwKSg==} engines: {node: '>=12.0.0'} openapi-schema-validation@0.4.2: @@ -9050,7 +9050,7 @@ snapshots: regex: 6.0.1 regex-recursion: 6.0.2 - openapi-backend@5.12.0: + openapi-backend@5.13.0: dependencies: '@apidevtools/json-schema-ref-parser': 11.9.3 ajv: 8.17.1 diff --git a/src/package.json b/src/package.json index 080cb5718..9efc1b81e 100644 --- a/src/package.json +++ b/src/package.json @@ -58,7 +58,7 @@ "measured-core": "^2.0.0", "mime-types": "^3.0.1", "oidc-provider": "^9.3.0", - "openapi-backend": "^5.12.0", + "openapi-backend": "^5.13.0", "proxy-addr": "^2.0.7", "rate-limiter-flexible": "^7.1.1", "rehype": "^13.0.2", From 45a906e19dae2ba17190b412e557b2912b999992 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 16 Jul 2025 16:13:44 +0000 Subject: [PATCH 14/51] build(deps): bump express-rate-limit from 7.5.1 to 8.0.0 Bumps [express-rate-limit](https://github.com/express-rate-limit/express-rate-limit) from 7.5.1 to 8.0.0. - [Release notes](https://github.com/express-rate-limit/express-rate-limit/releases) - [Commits](https://github.com/express-rate-limit/express-rate-limit/compare/v7.5.1...v8.0.0) --- updated-dependencies: - dependency-name: express-rate-limit dependency-version: 8.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- pnpm-lock.yaml | 19 ++++++++++++++----- src/package.json | 2 +- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7c3750bb7..941768971 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -168,8 +168,8 @@ importers: specifier: 4.21.2 version: 4.21.2 express-rate-limit: - specifier: ^7.5.1 - version: 7.5.1(express@4.21.2) + specifier: ^8.0.0 + version: 8.0.0(express@4.21.2) fast-deep-equal: specifier: ^3.1.3 version: 3.1.3 @@ -1150,6 +1150,7 @@ packages: '@koa/router@13.1.1': resolution: {integrity: sha512-JQEuMANYRVHs7lm7KY9PCIjkgJk73h4m4J+g2mkw2Vo1ugPZ17UJVqEH8F+HeAdjKz5do1OaLe7ArDz+z308gw==} engines: {node: '>= 18'} + deprecated: Please upgrade to v13.1.1+ per '@napi-rs/wasm-runtime@0.2.8': resolution: {integrity: sha512-OBlgKdX7gin7OIq4fadsjpg+cp2ZphvAIKucHsNfTdJiqdOmOEwQd/bHi0VwNrcw5xpBJyUw6cK/QilCqy1BSg==} @@ -3049,8 +3050,8 @@ packages: resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==} engines: {node: '>=12.0.0'} - express-rate-limit@7.5.1: - resolution: {integrity: sha512-7iN8iPMDzOMHPUYllBEsQdWVB6fPDMPqwjBaFrgr4Jgr/+okjvzAy+UHlYYL/Vs0OsOrMkwS6PJDkFlJwoxUnw==} + express-rate-limit@8.0.0: + resolution: {integrity: sha512-FXEAp2ccTeN1ZSO+sPHRHWB0/CrTP5asFBjUaNeD9A0v3iPmgFbLu24vqPjiM9utszI58VGlMokjXQ0W9Dbmjw==} engines: {node: '>= 16'} peerDependencies: express: '>= 4.11' @@ -3426,6 +3427,9 @@ packages: resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} engines: {node: '>= 12'} + ip@2.0.1: + resolution: {integrity: sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==} + ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} @@ -4659,6 +4663,7 @@ packages: superagent@10.2.2: resolution: {integrity: sha512-vWMq11OwWCC84pQaFPzF/VO3BrjkCeewuvJgt1jfV0499Z1QSAWN4EqfMM5WlFDDX9/oP8JjlDKpblrmEoyu4Q==} engines: {node: '>=14.18.0'} + deprecated: Please upgrade to superagent v10.2.2+, see release notes at https://github.com/forwardemail/superagent/releases/tag/v10.2.2 - maintenance is supported by Forward Email @ https://forwardemail.net superagent@8.1.2: resolution: {integrity: sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==} @@ -4672,6 +4677,7 @@ packages: supertest@7.1.3: resolution: {integrity: sha512-ORY0gPa6ojmg/C74P/bDoS21WL6FMXq5I8mawkEz30/zkwdu0gOeqstFy316vHG6OKxqQ+IbGneRemHI8WraEw==} engines: {node: '>=14.18.0'} + deprecated: Please upgrade to supertest v7.1.3+, see release notes at https://github.com/forwardemail/supertest/releases/tag/v7.1.3 - maintenance is supported by Forward Email @ https://forwardemail.net supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} @@ -7943,9 +7949,10 @@ snapshots: expect-type@1.2.2: {} - express-rate-limit@7.5.1(express@4.21.2): + express-rate-limit@8.0.0(express@4.21.2): dependencies: express: 4.21.2 + ip: 2.0.1 express@4.21.2: dependencies: @@ -8419,6 +8426,8 @@ snapshots: jsbn: 1.1.0 sprintf-js: 1.1.3 + ip@2.0.1: {} + ipaddr.js@1.9.1: {} is-array-buffer@3.0.5: diff --git a/src/package.json b/src/package.json index 9efc1b81e..d0cef60f0 100644 --- a/src/package.json +++ b/src/package.json @@ -39,7 +39,7 @@ "ejs": "^3.1.10", "esbuild": "^0.25.5", "express": "4.21.2", - "express-rate-limit": "^7.5.1", + "express-rate-limit": "^8.0.0", "fast-deep-equal": "^3.1.3", "find-root": "1.1.0", "formidable": "^3.5.4", From 40884fa96be91430cfdaf5580e70827075013e68 Mon Sep 17 00:00:00 2001 From: SamTV12345 <40429738+samtv12345@users.noreply.github.com> Date: Sun, 27 Jul 2025 21:54:24 +0200 Subject: [PATCH 15/51] feat: disable stats endpoint if enableMetrics is false --- admin/src/pages/ShoutPage.tsx | 23 +- admin/vite.config.ts | 4 - doc/package.json | 3 + pnpm-lock.yaml | 1036 ++++++++++-------------- settings.json.docker | 8 + settings.json.template | 8 + src/node/hooks/express.ts | 2 +- src/node/hooks/express/adminplugins.ts | 6 + src/node/hooks/express/specialpages.ts | 11 +- src/node/types/ArgsExpressType.ts | 2 + src/node/utils/Settings.ts | 6 + 11 files changed, 462 insertions(+), 647 deletions(-) diff --git a/admin/src/pages/ShoutPage.tsx b/admin/src/pages/ShoutPage.tsx index 8348e18fa..d598d54d7 100644 --- a/admin/src/pages/ShoutPage.tsx +++ b/admin/src/pages/ShoutPage.tsx @@ -9,22 +9,29 @@ export const ShoutPage = ()=>{ const [message, setMessage] = useState(""); const [sticky, setSticky] = useState(false); const socket = useStore(state => state.settingsSocket); + const pluginSocket = useStore(state => state.pluginsSocket); const [shouts, setShouts] = useState([]); - useEffect(() => { - fetch('/stats') - .then(response => response.json()) - .then(data => setTotalUsers(data.totalUsers)); - }, []); - useEffect(() => { - if(socket) { + if(socket && pluginSocket) { + console.log('Socket connected', socket.id); socket.on('shout', (shout) => { setShouts([...shouts, shout]) }) + pluginSocket.on('results:stats', (statData) => { + console.log('Shoutdata', statData); + setTotalUsers(statData.totalUsers); + }) } - }, [socket, shouts]) + }, [socket, shouts, pluginSocket]) + + + useEffect(() => { + if (pluginSocket) { + pluginSocket.emit('getStats', {}); + } + }, [pluginSocket]); const sendMessage = () => { socket?.emit('shout', { diff --git a/admin/vite.config.ts b/admin/vite.config.ts index 23921ca85..7b63c9e20 100644 --- a/admin/vite.config.ts +++ b/admin/vite.config.ts @@ -28,10 +28,6 @@ export default defineConfig({ '/admin-auth/': { target: 'http://localhost:9001', changeOrigin: true, - }, - '/stats': { - target: 'http://localhost:9001', - changeOrigin: true, } } } diff --git a/doc/package.json b/doc/package.json index adc5a6ca3..cf5860d2b 100644 --- a/doc/package.json +++ b/doc/package.json @@ -6,5 +6,8 @@ "docs:dev": "vitepress dev", "docs:build": "vitepress build", "docs:preview": "vitepress preview" + }, + "peerDependencies": { + "search-insights": "^2.17.3" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 941768971..b743bee5a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -42,22 +42,22 @@ importers: version: 19.1.6(@types/react@19.1.8) '@typescript-eslint/eslint-plugin': specifier: ^8.37.0 - version: 8.37.0(@typescript-eslint/parser@8.37.0(eslint@9.31.0)(typescript@5.8.3))(eslint@9.31.0)(typescript@5.8.3) + version: 8.38.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0)(typescript@5.8.3))(eslint@9.32.0)(typescript@5.8.3) '@typescript-eslint/parser': specifier: ^8.37.0 - version: 8.37.0(eslint@9.31.0)(typescript@5.8.3) + version: 8.38.0(eslint@9.32.0)(typescript@5.8.3) '@vitejs/plugin-react-swc': specifier: ^3.10.2 - version: 3.10.2(vite@7.0.4(@types/node@24.0.14)(tsx@4.20.3)) + version: 3.10.2(vite@7.0.6(@types/node@24.1.0)(tsx@4.20.3)) eslint: specifier: ^9.31.0 - version: 9.31.0 + version: 9.32.0 eslint-plugin-react-hooks: specifier: ^5.2.0 - version: 5.2.0(eslint@9.31.0) + version: 5.2.0(eslint@9.32.0) eslint-plugin-react-refresh: specifier: ^0.4.20 - version: 0.4.20(eslint@9.31.0) + version: 0.4.20(eslint@9.32.0) i18next: specifier: ^25.3.2 version: 25.3.2(typescript@5.8.3) @@ -75,13 +75,13 @@ importers: version: 19.1.0(react@19.1.0) react-hook-form: specifier: ^7.60.0 - version: 7.60.0(react@19.1.0) + version: 7.61.1(react@19.1.0) react-i18next: specifier: ^15.6.0 - version: 15.6.0(i18next@25.3.2(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3) + version: 15.6.1(i18next@25.3.2(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3) react-router-dom: specifier: ^7.6.3 - version: 7.6.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 7.7.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) socket.io-client: specifier: ^4.8.1 version: 4.8.1 @@ -90,13 +90,13 @@ importers: version: 5.8.3 vite: specifier: ^7.0.4 - version: 7.0.4(@types/node@24.0.14)(tsx@4.20.3) + version: 7.0.6(@types/node@24.1.0)(tsx@4.20.3) vite-plugin-static-copy: specifier: ^3.1.1 - version: 3.1.1(vite@7.0.4(@types/node@24.0.14)(tsx@4.20.3)) + version: 3.1.1(vite@7.0.6(@types/node@24.1.0)(tsx@4.20.3)) vite-plugin-svgr: specifier: ^4.3.0 - version: 4.3.0(rollup@4.45.1)(typescript@5.8.3)(vite@7.0.4(@types/node@24.0.14)(tsx@4.20.3)) + version: 4.3.0(rollup@4.40.1)(typescript@5.8.3)(vite@7.0.6(@types/node@24.1.0)(tsx@4.20.3)) zustand: specifier: ^5.0.6 version: 5.0.6(@types/react@19.1.8)(react@19.1.0) @@ -124,7 +124,7 @@ importers: devDependencies: '@types/node': specifier: ^24.0.14 - version: 24.0.14 + version: 24.1.0 '@types/semver': specifier: ^7.7.0 version: 7.7.0 @@ -136,7 +136,7 @@ importers: devDependencies: vitepress: specifier: ^1.6.3 - version: 1.6.3(@algolia/client-search@5.23.2)(@types/node@24.0.14)(axios@1.10.0)(jwt-decode@4.0.0)(postcss@8.5.6)(typescript@5.8.3) + version: 1.6.3(@algolia/client-search@5.23.2)(@types/node@24.1.0)(axios@1.10.0)(jwt-decode@4.0.0)(postcss@8.5.6)(typescript@5.8.3) src: dependencies: @@ -169,7 +169,7 @@ importers: version: 4.21.2 express-rate-limit: specifier: ^8.0.0 - version: 8.0.0(express@4.21.2) + version: 8.0.1(express@4.21.2) fast-deep-equal: specifier: ^3.1.3 version: 3.1.3 @@ -317,7 +317,7 @@ importers: version: 10.0.10 '@types/node': specifier: ^24.0.14 - version: 24.0.14 + version: 24.1.0 '@types/oidc-provider': specifier: ^9.1.1 version: 9.1.1 @@ -344,10 +344,10 @@ importers: version: 4.0.3 eslint: specifier: ^9.31.0 - version: 9.31.0 + version: 9.32.0 eslint-config-etherpad: specifier: ^4.0.4 - version: 4.0.4(eslint@9.31.0)(typescript@5.8.3) + version: 4.0.4(eslint@9.32.0)(typescript@5.8.3) etherpad-cli-client: specifier: ^3.0.2 version: 3.0.2 @@ -374,13 +374,13 @@ importers: version: 1.0.11 supertest: specifier: ^7.1.3 - version: 7.1.3 + version: 7.1.4 typescript: specifier: ^5.8.2 version: 5.8.3 vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.0.14)(jsdom@26.0.0)(tsx@4.20.3) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.1.0)(jsdom@26.0.0)(tsx@4.20.3) ui: devDependencies: @@ -392,7 +392,7 @@ importers: version: 5.8.3 vite: specifier: ^7.0.4 - version: 7.0.4(@types/node@24.0.14)(tsx@4.20.3) + version: 7.0.6(@types/node@24.1.0)(tsx@4.20.3) packages: @@ -618,12 +618,6 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.25.6': - resolution: {integrity: sha512-ShbM/3XxwuxjFiuVBHA+d3j5dyac0aEVVq1oluIDf71hUw0aRF59dV/efUsIwFnR6m8JNM2FjZOzmaZ8yG61kw==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - '@esbuild/android-arm64@0.21.5': resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} engines: {node: '>=12'} @@ -636,12 +630,6 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.25.6': - resolution: {integrity: sha512-hd5zdUarsK6strW+3Wxi5qWws+rJhCCbMiC9QZyzoxfk5uHRIE8T287giQxzVpEvCwuJ9Qjg6bEjcRJcgfLqoA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - '@esbuild/android-arm@0.21.5': resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} engines: {node: '>=12'} @@ -654,12 +642,6 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.25.6': - resolution: {integrity: sha512-S8ToEOVfg++AU/bHwdksHNnyLyVM+eMVAOf6yRKFitnwnbwwPNqKr3srzFRe7nzV69RQKb5DgchIX5pt3L53xg==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - '@esbuild/android-x64@0.21.5': resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} engines: {node: '>=12'} @@ -672,12 +654,6 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.25.6': - resolution: {integrity: sha512-0Z7KpHSr3VBIO9A/1wcT3NTy7EB4oNC4upJ5ye3R7taCc2GUdeynSLArnon5G8scPwaU866d3H4BCrE5xLW25A==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - '@esbuild/darwin-arm64@0.21.5': resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} engines: {node: '>=12'} @@ -690,12 +666,6 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.25.6': - resolution: {integrity: sha512-FFCssz3XBavjxcFxKsGy2DYK5VSvJqa6y5HXljKzhRZ87LvEi13brPrf/wdyl/BbpbMKJNOr1Sd0jtW4Ge1pAA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-x64@0.21.5': resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} engines: {node: '>=12'} @@ -708,12 +678,6 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.25.6': - resolution: {integrity: sha512-GfXs5kry/TkGM2vKqK2oyiLFygJRqKVhawu3+DOCk7OxLy/6jYkWXhlHwOoTb0WqGnWGAS7sooxbZowy+pK9Yg==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - '@esbuild/freebsd-arm64@0.21.5': resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} engines: {node: '>=12'} @@ -726,12 +690,6 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.25.6': - resolution: {integrity: sha512-aoLF2c3OvDn2XDTRvn8hN6DRzVVpDlj2B/F66clWd/FHLiHaG3aVZjxQX2DYphA5y/evbdGvC6Us13tvyt4pWg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - '@esbuild/freebsd-x64@0.21.5': resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} engines: {node: '>=12'} @@ -744,12 +702,6 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.6': - resolution: {integrity: sha512-2SkqTjTSo2dYi/jzFbU9Plt1vk0+nNg8YC8rOXXea+iA3hfNJWebKYPs3xnOUf9+ZWhKAaxnQNUf2X9LOpeiMQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - '@esbuild/linux-arm64@0.21.5': resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} engines: {node: '>=12'} @@ -762,12 +714,6 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.25.6': - resolution: {integrity: sha512-b967hU0gqKd9Drsh/UuAm21Khpoh6mPBSgz8mKRq4P5mVK8bpA+hQzmm/ZwGVULSNBzKdZPQBRT3+WuVavcWsQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - '@esbuild/linux-arm@0.21.5': resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} engines: {node: '>=12'} @@ -780,12 +726,6 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.25.6': - resolution: {integrity: sha512-SZHQlzvqv4Du5PrKE2faN0qlbsaW/3QQfUUc6yO2EjFcA83xnwm91UbEEVx4ApZ9Z5oG8Bxz4qPE+HFwtVcfyw==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - '@esbuild/linux-ia32@0.21.5': resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} engines: {node: '>=12'} @@ -798,12 +738,6 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.25.6': - resolution: {integrity: sha512-aHWdQ2AAltRkLPOsKdi3xv0mZ8fUGPdlKEjIEhxCPm5yKEThcUjHpWB1idN74lfXGnZ5SULQSgtr5Qos5B0bPw==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - '@esbuild/linux-loong64@0.21.5': resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} engines: {node: '>=12'} @@ -816,12 +750,6 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.25.6': - resolution: {integrity: sha512-VgKCsHdXRSQ7E1+QXGdRPlQ/e08bN6WMQb27/TMfV+vPjjTImuT9PmLXupRlC90S1JeNNW5lzkAEO/McKeJ2yg==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - '@esbuild/linux-mips64el@0.21.5': resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} engines: {node: '>=12'} @@ -834,12 +762,6 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.25.6': - resolution: {integrity: sha512-WViNlpivRKT9/py3kCmkHnn44GkGXVdXfdc4drNmRl15zVQ2+D2uFwdlGh6IuK5AAnGTo2qPB1Djppj+t78rzw==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - '@esbuild/linux-ppc64@0.21.5': resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} engines: {node: '>=12'} @@ -852,12 +774,6 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.25.6': - resolution: {integrity: sha512-wyYKZ9NTdmAMb5730I38lBqVu6cKl4ZfYXIs31Baf8aoOtB4xSGi3THmDYt4BTFHk7/EcVixkOV2uZfwU3Q2Jw==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - '@esbuild/linux-riscv64@0.21.5': resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} engines: {node: '>=12'} @@ -870,12 +786,6 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.25.6': - resolution: {integrity: sha512-KZh7bAGGcrinEj4qzilJ4hqTY3Dg2U82c8bv+e1xqNqZCrCyc+TL9AUEn5WGKDzm3CfC5RODE/qc96OcbIe33w==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - '@esbuild/linux-s390x@0.21.5': resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} engines: {node: '>=12'} @@ -888,12 +798,6 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.25.6': - resolution: {integrity: sha512-9N1LsTwAuE9oj6lHMyyAM+ucxGiVnEqUdp4v7IaMmrwb06ZTEVCIs3oPPplVsnjPfyjmxwHxHMF8b6vzUVAUGw==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - '@esbuild/linux-x64@0.21.5': resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} engines: {node: '>=12'} @@ -906,24 +810,12 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.25.6': - resolution: {integrity: sha512-A6bJB41b4lKFWRKNrWoP2LHsjVzNiaurf7wyj/XtFNTsnPuxwEBWHLty+ZE0dWBKuSK1fvKgrKaNjBS7qbFKig==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - '@esbuild/netbsd-arm64@0.25.5': resolution: {integrity: sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-arm64@0.25.6': - resolution: {integrity: sha512-IjA+DcwoVpjEvyxZddDqBY+uJ2Snc6duLpjmkXm/v4xuS3H+3FkLZlDm9ZsAbF9rsfP3zeA0/ArNDORZgrxR/Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - '@esbuild/netbsd-x64@0.21.5': resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} engines: {node: '>=12'} @@ -936,24 +828,12 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.6': - resolution: {integrity: sha512-dUXuZr5WenIDlMHdMkvDc1FAu4xdWixTCRgP7RQLBOkkGgwuuzaGSYcOpW4jFxzpzL1ejb8yF620UxAqnBrR9g==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - '@esbuild/openbsd-arm64@0.25.5': resolution: {integrity: sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-arm64@0.25.6': - resolution: {integrity: sha512-l8ZCvXP0tbTJ3iaqdNf3pjaOSd5ex/e6/omLIQCVBLmHTlfXW3zAxQ4fnDmPLOB1x9xrcSi/xtCWFwCZRIaEwg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - '@esbuild/openbsd-x64@0.21.5': resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} engines: {node: '>=12'} @@ -966,18 +846,6 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.6': - resolution: {integrity: sha512-hKrmDa0aOFOr71KQ/19JC7az1P0GWtCN1t2ahYAf4O007DHZt/dW8ym5+CUdJhQ/qkZmI1HAF8KkJbEFtCL7gw==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openharmony-arm64@0.25.6': - resolution: {integrity: sha512-+SqBcAWoB1fYKmpWoQP4pGtx+pUUC//RNYhFdbcSA16617cchuryuhOCRpPsjCblKukAckWsV+aQ3UKT/RMPcA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openharmony] - '@esbuild/sunos-x64@0.21.5': resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} engines: {node: '>=12'} @@ -990,12 +858,6 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.25.6': - resolution: {integrity: sha512-dyCGxv1/Br7MiSC42qinGL8KkG4kX0pEsdb0+TKhmJZgCUDBGmyo1/ArCjNGiOLiIAgdbWgmWgib4HoCi5t7kA==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - '@esbuild/win32-arm64@0.21.5': resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} engines: {node: '>=12'} @@ -1008,12 +870,6 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.25.6': - resolution: {integrity: sha512-42QOgcZeZOvXfsCBJF5Afw73t4veOId//XD3i+/9gSkhSV6Gk3VPlWncctI+JcOyERv85FUo7RxuxGy+z8A43Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - '@esbuild/win32-ia32@0.21.5': resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} engines: {node: '>=12'} @@ -1026,12 +882,6 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.25.6': - resolution: {integrity: sha512-4AWhgXmDuYN7rJI6ORB+uU9DHLq/erBbuMoAuB4VWJTu5KtCgcKYPynF0YI1VkBNuEfjNlLrFr9KZPJzrtLkrQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - '@esbuild/win32-x64@0.21.5': resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} engines: {node: '>=12'} @@ -1044,12 +894,6 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.25.6': - resolution: {integrity: sha512-NgJPHHbEpLQgDH2MjQu90pzW/5vvXIZ7KOnPyNBm92A6WgZ/7b6fJyUBjoumLqeOQQGqY2QjQxRo97ah4Sj0cA==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - '@eslint-community/eslint-utils@4.7.0': resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1068,6 +912,10 @@ packages: resolution: {integrity: sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/core@0.15.0': + resolution: {integrity: sha512-b7ePw78tEWWkpgZCDYkbqDOP8dmM6qe+AOC6iuJqlq1R/0ahMAeH3qynpnqKFGkMltrp44ohV4ubGyvLX28tzw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/core@0.15.1': resolution: {integrity: sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1076,16 +924,16 @@ packages: resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.31.0': - resolution: {integrity: sha512-LOm5OVt7D4qiKCqoiPbA7LWmI+tbw1VbTUowBcUMgQSuM6poJufkFkYDcQpo5KfgD39TnNySV26QjOh7VFpSyw==} + '@eslint/js@9.32.0': + resolution: {integrity: sha512-BBpRFZK3eX6uMLKz8WxFOBIFFcGFJ/g8XuwjTHCqHROSIsopI+ddn/d5Cfh36+7+e5edVS8dbSHnBNhrLEX0zg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.6': resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/plugin-kit@0.3.3': - resolution: {integrity: sha512-1+WqvgNMhmlAambTvT3KPtCl/Ibr68VldY2XY40SL1CE0ZXiakFR/cbTspaF5HsnpDMvcYYoJHfl4980NBjGag==} + '@eslint/plugin-kit@0.3.4': + resolution: {integrity: sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@etherpad/express-session@1.18.4': @@ -1134,8 +982,8 @@ packages: resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} engines: {node: '>=6.0.0'} - '@jridgewell/sourcemap-codec@1.5.4': - resolution: {integrity: sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==} + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} @@ -1150,7 +998,6 @@ packages: '@koa/router@13.1.1': resolution: {integrity: sha512-JQEuMANYRVHs7lm7KY9PCIjkgJk73h4m4J+g2mkw2Vo1ugPZ17UJVqEH8F+HeAdjKz5do1OaLe7ArDz+z308gw==} engines: {node: '>= 18'} - deprecated: Please upgrade to v13.1.1+ per '@napi-rs/wasm-runtime@0.2.8': resolution: {integrity: sha512-OBlgKdX7gin7OIq4fadsjpg+cp2ZphvAIKucHsNfTdJiqdOmOEwQd/bHi0VwNrcw5xpBJyUw6cK/QilCqy1BSg==} @@ -1440,103 +1287,103 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.45.1': - resolution: {integrity: sha512-NEySIFvMY0ZQO+utJkgoMiCAjMrGvnbDLHvcmlA33UXJpYBCvlBEbMMtV837uCkS+plG2umfhn0T5mMAxGrlRA==} + '@rollup/rollup-android-arm-eabi@4.40.1': + resolution: {integrity: sha512-kxz0YeeCrRUHz3zyqvd7n+TVRlNyTifBsmnmNPtk3hQURUyG9eAB+usz6DAwagMusjx/zb3AjvDUvhFGDAexGw==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.45.1': - resolution: {integrity: sha512-ujQ+sMXJkg4LRJaYreaVx7Z/VMgBBd89wGS4qMrdtfUFZ+TSY5Rs9asgjitLwzeIbhwdEhyj29zhst3L1lKsRQ==} + '@rollup/rollup-android-arm64@4.40.1': + resolution: {integrity: sha512-PPkxTOisoNC6TpnDKatjKkjRMsdaWIhyuMkA4UsBXT9WEZY4uHezBTjs6Vl4PbqQQeu6oION1w2voYZv9yquCw==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.45.1': - resolution: {integrity: sha512-FSncqHvqTm3lC6Y13xncsdOYfxGSLnP+73k815EfNmpewPs+EyM49haPS105Rh4aF5mJKywk9X0ogzLXZzN9lA==} + '@rollup/rollup-darwin-arm64@4.40.1': + resolution: {integrity: sha512-VWXGISWFY18v/0JyNUy4A46KCFCb9NVsH+1100XP31lud+TzlezBbz24CYzbnA4x6w4hx+NYCXDfnvDVO6lcAA==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.45.1': - resolution: {integrity: sha512-2/vVn/husP5XI7Fsf/RlhDaQJ7x9zjvC81anIVbr4b/f0xtSmXQTFcGIQ/B1cXIYM6h2nAhJkdMHTnD7OtQ9Og==} + '@rollup/rollup-darwin-x64@4.40.1': + resolution: {integrity: sha512-nIwkXafAI1/QCS7pxSpv/ZtFW6TXcNUEHAIA9EIyw5OzxJZQ1YDrX+CL6JAIQgZ33CInl1R6mHet9Y/UZTg2Bw==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.45.1': - resolution: {integrity: sha512-4g1kaDxQItZsrkVTdYQ0bxu4ZIQ32cotoQbmsAnW1jAE4XCMbcBPDirX5fyUzdhVCKgPcrwWuucI8yrVRBw2+g==} + '@rollup/rollup-freebsd-arm64@4.40.1': + resolution: {integrity: sha512-BdrLJ2mHTrIYdaS2I99mriyJfGGenSaP+UwGi1kB9BLOCu9SR8ZpbkmmalKIALnRw24kM7qCN0IOm6L0S44iWw==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.45.1': - resolution: {integrity: sha512-L/6JsfiL74i3uK1Ti2ZFSNsp5NMiM4/kbbGEcOCps99aZx3g8SJMO1/9Y0n/qKlWZfn6sScf98lEOUe2mBvW9A==} + '@rollup/rollup-freebsd-x64@4.40.1': + resolution: {integrity: sha512-VXeo/puqvCG8JBPNZXZf5Dqq7BzElNJzHRRw3vjBE27WujdzuOPecDPc/+1DcdcTptNBep3861jNq0mYkT8Z6Q==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.45.1': - resolution: {integrity: sha512-RkdOTu2jK7brlu+ZwjMIZfdV2sSYHK2qR08FUWcIoqJC2eywHbXr0L8T/pONFwkGukQqERDheaGTeedG+rra6Q==} + '@rollup/rollup-linux-arm-gnueabihf@4.40.1': + resolution: {integrity: sha512-ehSKrewwsESPt1TgSE/na9nIhWCosfGSFqv7vwEtjyAqZcvbGIg4JAcV7ZEh2tfj/IlfBeZjgOXm35iOOjadcg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.45.1': - resolution: {integrity: sha512-3kJ8pgfBt6CIIr1o+HQA7OZ9mp/zDk3ctekGl9qn/pRBgrRgfwiffaUmqioUGN9hv0OHv2gxmvdKOkARCtRb8Q==} + '@rollup/rollup-linux-arm-musleabihf@4.40.1': + resolution: {integrity: sha512-m39iO/aaurh5FVIu/F4/Zsl8xppd76S4qoID8E+dSRQvTyZTOI2gVk3T4oqzfq1PtcvOfAVlwLMK3KRQMaR8lg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.45.1': - resolution: {integrity: sha512-k3dOKCfIVixWjG7OXTCOmDfJj3vbdhN0QYEqB+OuGArOChek22hn7Uy5A/gTDNAcCy5v2YcXRJ/Qcnm4/ma1xw==} + '@rollup/rollup-linux-arm64-gnu@4.40.1': + resolution: {integrity: sha512-Y+GHnGaku4aVLSgrT0uWe2o2Rq8te9hi+MwqGF9r9ORgXhmHK5Q71N757u0F8yU1OIwUIFy6YiJtKjtyktk5hg==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.45.1': - resolution: {integrity: sha512-PmI1vxQetnM58ZmDFl9/Uk2lpBBby6B6rF4muJc65uZbxCs0EA7hhKCk2PKlmZKuyVSHAyIw3+/SiuMLxKxWog==} + '@rollup/rollup-linux-arm64-musl@4.40.1': + resolution: {integrity: sha512-jEwjn3jCA+tQGswK3aEWcD09/7M5wGwc6+flhva7dsQNRZZTe30vkalgIzV4tjkopsTS9Jd7Y1Bsj6a4lzz8gQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.45.1': - resolution: {integrity: sha512-9UmI0VzGmNJ28ibHW2GpE2nF0PBQqsyiS4kcJ5vK+wuwGnV5RlqdczVocDSUfGX/Na7/XINRVoUgJyFIgipoRg==} + '@rollup/rollup-linux-loongarch64-gnu@4.40.1': + resolution: {integrity: sha512-ySyWikVhNzv+BV/IDCsrraOAZ3UaC8SZB67FZlqVwXwnFhPihOso9rPOxzZbjp81suB1O2Topw+6Ug3JNegejQ==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.45.1': - resolution: {integrity: sha512-7nR2KY8oEOUTD3pBAxIBBbZr0U7U+R9HDTPNy+5nVVHDXI4ikYniH1oxQz9VoB5PbBU1CZuDGHkLJkd3zLMWsg==} + '@rollup/rollup-linux-powerpc64le-gnu@4.40.1': + resolution: {integrity: sha512-BvvA64QxZlh7WZWqDPPdt0GH4bznuL6uOO1pmgPnnv86rpUpc8ZxgZwcEgXvo02GRIZX1hQ0j0pAnhwkhwPqWg==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.45.1': - resolution: {integrity: sha512-nlcl3jgUultKROfZijKjRQLUu9Ma0PeNv/VFHkZiKbXTBQXhpytS8CIj5/NfBeECZtY2FJQubm6ltIxm/ftxpw==} + '@rollup/rollup-linux-riscv64-gnu@4.40.1': + resolution: {integrity: sha512-EQSP+8+1VuSulm9RKSMKitTav89fKbHymTf25n5+Yr6gAPZxYWpj3DzAsQqoaHAk9YX2lwEyAf9S4W8F4l3VBQ==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.45.1': - resolution: {integrity: sha512-HJV65KLS51rW0VY6rvZkiieiBnurSzpzore1bMKAhunQiECPuxsROvyeaot/tcK3A3aGnI+qTHqisrpSgQrpgA==} + '@rollup/rollup-linux-riscv64-musl@4.40.1': + resolution: {integrity: sha512-n/vQ4xRZXKuIpqukkMXZt9RWdl+2zgGNx7Uda8NtmLJ06NL8jiHxUawbwC+hdSq1rrw/9CghCpEONor+l1e2gA==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.45.1': - resolution: {integrity: sha512-NITBOCv3Qqc6hhwFt7jLV78VEO/il4YcBzoMGGNxznLgRQf43VQDae0aAzKiBeEPIxnDrACiMgbqjuihx08OOw==} + '@rollup/rollup-linux-s390x-gnu@4.40.1': + resolution: {integrity: sha512-h8d28xzYb98fMQKUz0w2fMc1XuGzLLjdyxVIbhbil4ELfk5/orZlSTpF/xdI9C8K0I8lCkq+1En2RJsawZekkg==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.45.1': - resolution: {integrity: sha512-+E/lYl6qu1zqgPEnTrs4WysQtvc/Sh4fC2nByfFExqgYrqkKWp1tWIbe+ELhixnenSpBbLXNi6vbEEJ8M7fiHw==} + '@rollup/rollup-linux-x64-gnu@4.40.1': + resolution: {integrity: sha512-XiK5z70PEFEFqcNj3/zRSz/qX4bp4QIraTy9QjwJAb/Z8GM7kVUsD0Uk8maIPeTyPCP03ChdI+VVmJriKYbRHQ==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.45.1': - resolution: {integrity: sha512-a6WIAp89p3kpNoYStITT9RbTbTnqarU7D8N8F2CV+4Cl9fwCOZraLVuVFvlpsW0SbIiYtEnhCZBPLoNdRkjQFw==} + '@rollup/rollup-linux-x64-musl@4.40.1': + resolution: {integrity: sha512-2BRORitq5rQ4Da9blVovzNCMaUlyKrzMSvkVR0D4qPuOy/+pMCrh1d7o01RATwVy+6Fa1WBw+da7QPeLWU/1mQ==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.45.1': - resolution: {integrity: sha512-T5Bi/NS3fQiJeYdGvRpTAP5P02kqSOpqiopwhj0uaXB6nzs5JVi2XMJb18JUSKhCOX8+UE1UKQufyD6Or48dJg==} + '@rollup/rollup-win32-arm64-msvc@4.40.1': + resolution: {integrity: sha512-b2bcNm9Kbde03H+q+Jjw9tSfhYkzrDUf2d5MAd1bOJuVplXvFhWz7tRtWvD8/ORZi7qSCy0idW6tf2HgxSXQSg==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.45.1': - resolution: {integrity: sha512-lxV2Pako3ujjuUe9jiU3/s7KSrDfH6IgTSQOnDWr9aJ92YsFd7EurmClK0ly/t8dzMkDtd04g60WX6yl0sGfdw==} + '@rollup/rollup-win32-ia32-msvc@4.40.1': + resolution: {integrity: sha512-DfcogW8N7Zg7llVEfpqWMZcaErKfsj9VvmfSyRjCyo4BI3wPEfrzTtJkZG6gKP/Z92wFm6rz2aDO7/JfiR/whA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.45.1': - resolution: {integrity: sha512-M/fKi4sasCdM8i0aWJjCSFm2qEnYRR8AMLG2kxp6wD13+tMGA4Z1tVAuHkNRjud5SW2EM3naLuK35w9twvf6aA==} + '@rollup/rollup-win32-x64-msvc@4.40.1': + resolution: {integrity: sha512-ECyOuDeH3C1I8jH2MK1RtBJW+YPMvSfT0a5NN0nHfQYnDSJ6tUiZH3gzwVP5/Kfh/+Tt7tpWVF9LXNTnhTJ3kA==} cpu: [x64] os: [win32] @@ -1767,6 +1614,9 @@ packages: '@types/deep-eql@4.0.2': resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + '@types/estree@1.0.7': + resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} @@ -1851,8 +1701,8 @@ packages: '@types/node-fetch@2.6.12': resolution: {integrity: sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==} - '@types/node@24.0.14': - resolution: {integrity: sha512-4zXMWD91vBLGRtHK3YbIoFMia+1nqEz72coM42C5ETjnNCa/heoj7NT1G67iAfOqMmcfhuCZ4uNpyz8EjlAejw==} + '@types/node@24.1.0': + resolution: {integrity: sha512-ut5FthK5moxFKH2T1CUOC6ctR67rQRvvHdFLCD2Ql6KXmMuCrjsSsRI9UsLCm9M18BMwClv4pn327UvB7eeO1w==} '@types/oidc-provider@9.1.1': resolution: {integrity: sha512-sG4UcE4AbUwAsEpyrcyoqZ383wJiQObZU+gTa1Iv288+l09HwSr88hBZE2IBLlXS+RKmLId0i4B430PBFO/XRA==} @@ -1930,11 +1780,11 @@ packages: typescript: optional: true - '@typescript-eslint/eslint-plugin@8.37.0': - resolution: {integrity: sha512-jsuVWeIkb6ggzB+wPCsR4e6loj+rM72ohW6IBn2C+5NCvfUVY8s33iFPySSVXqtm5Hu29Ne/9bnA0JmyLmgenA==} + '@typescript-eslint/eslint-plugin@8.38.0': + resolution: {integrity: sha512-CPoznzpuAnIOl4nhj4tRr4gIPj5AfKgkiJmGQDaq+fQnRJTYlcBjbX3wbciGmpoPf8DREufuPRe1tNMZnGdanA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.37.0 + '@typescript-eslint/parser': ^8.38.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' @@ -1948,15 +1798,15 @@ packages: typescript: optional: true - '@typescript-eslint/parser@8.37.0': - resolution: {integrity: sha512-kVIaQE9vrN9RLCQMQ3iyRlVJpTiDUY6woHGb30JDkfJErqrQEmtdWH3gV0PBAfGZgQXoqzXOO0T3K6ioApbbAA==} + '@typescript-eslint/parser@8.38.0': + resolution: {integrity: sha512-Zhy8HCvBUEfBECzIl1PKqF4p11+d0aUJS1GeUiuqK9WmOug8YCmC4h4bjyBvMyAMI9sbRczmrYL5lKg/YMbrcQ==} 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==} + '@typescript-eslint/project-service@8.38.0': + resolution: {integrity: sha512-dbK7Jvqcb8c9QfH01YB6pORpqX1mn5gDZc9n63Ak/+jD67oWXn3Gs0M6vddAN+eDXBCS5EmNWzbSxsn9SzFWWg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' @@ -1965,12 +1815,12 @@ packages: resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/scope-manager@8.37.0': - resolution: {integrity: sha512-0vGq0yiU1gbjKob2q691ybTg9JX6ShiVXAAfm2jGf3q0hdP6/BruaFjL/ManAR/lj05AvYCH+5bbVo0VtzmjOA==} + '@typescript-eslint/scope-manager@8.38.0': + resolution: {integrity: sha512-WJw3AVlFFcdT9Ri1xs/lg8LwDqgekWXWhH3iAF+1ZM+QPd7oxQ6jvtW/JPwzAScxitILUIFs0/AnQ/UWHzbATQ==} 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==} + '@typescript-eslint/tsconfig-utils@8.38.0': + resolution: {integrity: sha512-Lum9RtSE3EroKk/bYns+sPOodqb2Fv50XOl/gMviMKNvanETUuUcC9ObRbzrJ4VSd2JalPqgSAavwrPiPvnAiQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' @@ -1985,8 +1835,8 @@ packages: typescript: optional: true - '@typescript-eslint/type-utils@8.37.0': - resolution: {integrity: sha512-SPkXWIkVZxhgwSwVq9rqj/4VFo7MnWwVaRNznfQDc/xPYHjXnPfLWn+4L6FF1cAz6e7dsqBeMawgl7QjUMj4Ow==} + '@typescript-eslint/type-utils@8.38.0': + resolution: {integrity: sha512-c7jAvGEZVf0ao2z+nnz8BUaHZD09Agbh+DY7qvBQqLiz8uJzRgVPj5YvOh8I8uEiH8oIUGIfHzMwUcGVco/SJg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1996,8 +1846,8 @@ packages: resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/types@8.37.0': - resolution: {integrity: sha512-ax0nv7PUF9NOVPs+lmQ7yIE7IQmAf8LGcXbMvHX5Gm+YJUYNAl340XkGnrimxZ0elXyoQJuN5sbg6C4evKA4SQ==} + '@typescript-eslint/types@8.38.0': + resolution: {integrity: sha512-wzkUfX3plUqij4YwWaJyqhiPE5UCRVlFpKn1oCRn2O1bJ592XxWJj8ROQ3JD5MYXLORW84063z3tZTb/cs4Tyw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/typescript-estree@7.18.0': @@ -2009,8 +1859,8 @@ packages: typescript: optional: true - '@typescript-eslint/typescript-estree@8.37.0': - resolution: {integrity: sha512-zuWDMDuzMRbQOM+bHyU4/slw27bAUEcKSKKs3hcv2aNnc/tvE/h7w60dwVw8vnal2Pub6RT1T7BI8tFZ1fE+yg==} + '@typescript-eslint/typescript-estree@8.38.0': + resolution: {integrity: sha512-fooELKcAKzxux6fA6pxOflpNS0jc+nOQEEOipXFNjSlBS6fqrJOVY/whSn70SScHrcJ2LDsxWrneFoWYSVfqhQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' @@ -2021,8 +1871,8 @@ packages: peerDependencies: eslint: ^8.56.0 - '@typescript-eslint/utils@8.37.0': - resolution: {integrity: sha512-TSFvkIW6gGjN2p6zbXo20FzCABbyUAuq6tBvNRGsKdsSQ6a7rnV6ADfZ7f4iI3lIiXc4F4WWvtUfDw9CJ9pO5A==} + '@typescript-eslint/utils@8.38.0': + resolution: {integrity: sha512-hHcMA86Hgt+ijJlrD8fX0j1j8w4C92zue/8LOPAFioIno+W0+L7KqE8QZKCcPGc/92Vs9x36w/4MPTJhqXdyvg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -2032,8 +1882,8 @@ packages: resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/visitor-keys@8.37.0': - resolution: {integrity: sha512-YzfhzcTnZVPiLfP/oeKtDp2evwvHLMe0LOy7oe+hb9KKIumLNohYS9Hgp1ifwpu42YWxhZE8yieggz6JpqO/1w==} + '@typescript-eslint/visitor-keys@8.38.0': + resolution: {integrity: sha512-pWrTcoFNWuwHlA9CvlfSsGWs14JxfN1TH25zM5L7o0pRLhsoZkDnTsXfQRJBEWJoV5DL0jf+Z+sxiud+K0mq1g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.3.0': @@ -2462,9 +2312,9 @@ packages: ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - chai@5.2.1: - resolution: {integrity: sha512-5nFxhUrX0PqtyogoYOA8IPswy5sZFTOsBFl/9bNsmDLgsxYTzSZQJDPppDnZPTQbzSEm0hqGjWPzRemQCYbD6A==} - engines: {node: '>=18'} + chai@5.2.0: + resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} + engines: {node: '>=12'} chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} @@ -2833,11 +2683,6 @@ packages: engines: {node: '>=18'} hasBin: true - esbuild@0.25.6: - resolution: {integrity: sha512-GVuzuUwtdsghE3ocJ9Bs8PNoF13HNQ5TXbEi2AhvVb8xU1Iwt9Fos9FEamfoee+u/TOsn7GUWc04lz46n2bbTg==} - engines: {node: '>=18'} - hasBin: true - escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -2992,8 +2837,8 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.31.0: - resolution: {integrity: sha512-QldCVh/ztyKJJZLr4jXNUByx3gR+TDYZCRXEktiZoUR3PGy4qCmSbkxcIle8GEwGpb5JBZazlaJ/CxLidXdEbQ==} + eslint@9.32.0: + resolution: {integrity: sha512-LSehfdpgMeWcTZkWZVIJl+tkZ2nuSkyyB9C27MZqFWXuph7DvaowgcTvKqxvpLW1JZIk8PN7hFY3Rj9LQ7m7lg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -3046,12 +2891,12 @@ packages: engines: {node: '>=18.0.0'} hasBin: true - expect-type@1.2.2: - resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==} + expect-type@1.2.1: + resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==} engines: {node: '>=12.0.0'} - express-rate-limit@8.0.0: - resolution: {integrity: sha512-FXEAp2ccTeN1ZSO+sPHRHWB0/CrTP5asFBjUaNeD9A0v3iPmgFbLu24vqPjiM9utszI58VGlMokjXQ0W9Dbmjw==} + express-rate-limit@8.0.1: + resolution: {integrity: sha512-aZVCnybn7TVmxO4BtlmnvX+nuz8qHW124KKJ8dumsBsmv5ZLxE0pYu7S2nwyRBGHHCAzdmnGyrc5U/rksSPO7Q==} engines: {node: '>= 16'} peerDependencies: express: '>= 4.11' @@ -3162,6 +3007,10 @@ packages: resolution: {integrity: sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==} engines: {node: '>= 6'} + form-data@4.0.4: + resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} + engines: {node: '>= 6'} + formdata-polyfill@4.0.10: resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} engines: {node: '>=12.20.0'} @@ -3423,13 +3272,14 @@ packages: resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} + ip-address@10.0.1: + resolution: {integrity: sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==} + engines: {node: '>= 12'} + ip-address@9.0.5: resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} engines: {node: '>= 12'} - ip@2.0.1: - resolution: {integrity: sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==} - ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} @@ -3754,8 +3604,11 @@ packages: resolution: {integrity: sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==} engines: {node: '>=8.0'} - loupe@3.1.4: - resolution: {integrity: sha512-wJzkKwJrheKtknCOKNEtDK4iqg/MxmZheEMtSTYvnzRdEYaZzmgH976nenp8WdJRdx5Vc1X/9MO0Oszl6ezeXg==} + loupe@3.1.3: + resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} + + loupe@3.2.0: + resolution: {integrity: sha512-2NCfZcT5VGVNX9mSZIxLRkEAegDGBpuQZBy13desuHeVORmBDyAET4TkJr4SjqQy3A8JDofMN6LpkK8Xcm/dlw==} lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} @@ -4107,8 +3960,8 @@ packages: pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - pathval@2.0.1: - resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} + pathval@2.0.0: + resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} engines: {node: '>= 14.16'} perfect-debounce@1.0.0: @@ -4121,6 +3974,10 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + picomatch@4.0.3: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} @@ -4139,6 +3996,10 @@ packages: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} + postcss@8.5.3: + resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} + engines: {node: ^10 || ^12 || >=14} + postcss@8.5.6: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} @@ -4216,14 +4077,14 @@ packages: peerDependencies: react: ^19.1.0 - react-hook-form@7.60.0: - resolution: {integrity: sha512-SBrYOvMbDB7cV8ZfNpaiLcgjH/a1c7aK0lK+aNigpf4xWLO8q+o4tcvVurv3c4EOyzn/3dCsYt4GKD42VvJ/+A==} + react-hook-form@7.61.1: + resolution: {integrity: sha512-2vbXUFDYgqEgM2RcXcAT2PwDW/80QARi+PKmHy5q2KhuKvOlG8iIYgf7eIlIANR5trW9fJbP4r5aub3a4egsew==} engines: {node: '>=18.0.0'} peerDependencies: react: ^16.8.0 || ^17 || ^18 || ^19 - react-i18next@15.6.0: - resolution: {integrity: sha512-W135dB0rDfiFmbMipC17nOhGdttO5mzH8BivY+2ybsQBbXvxWIwl3cmeH3T9d+YPBSJu/ouyJKFJTtkK7rJofw==} + react-i18next@15.6.1: + resolution: {integrity: sha512-uGrzSsOUUe2sDBG/+FJq2J1MM+Y4368/QW8OLEKSFvnDflHBbZhSd1u3UkW0Z06rMhZmnB/AQrhCpYfE5/5XNg==} peerDependencies: i18next: '>= 23.2.3' react: '>= 16.8.0' @@ -4258,15 +4119,15 @@ packages: '@types/react': optional: true - react-router-dom@7.6.3: - resolution: {integrity: sha512-DiWJm9qdUAmiJrVWaeJdu4TKu13+iB/8IEi0EW/XgaHCjW/vWGrwzup0GVvaMteuZjKnh5bEvJP/K0MDnzawHw==} + react-router-dom@7.7.1: + resolution: {integrity: sha512-bavdk2BA5r3MYalGKZ01u8PGuDBloQmzpBZVhDLrOOv1N943Wq6dcM9GhB3x8b7AbqPMEezauv4PeGkAJfy7FQ==} engines: {node: '>=20.0.0'} peerDependencies: react: '>=18' react-dom: '>=18' - react-router@7.6.3: - resolution: {integrity: sha512-zf45LZp5skDC6I3jDLXQUu0u26jtuP4lEGbc7BbdyxenBN1vJSTA18czM2D+h5qyMBuMrD+9uB+mU37HIoKGRA==} + react-router@7.7.1: + resolution: {integrity: sha512-jVKHXoWRIsD/qS6lvGveckwb862EekvapdHJN/cGmzw40KnJH5gg53ujOJ4qX6EKIK9LSBfFed/xiQ5yeXNrUA==} engines: {node: '>=20.0.0'} peerDependencies: react: '>=18' @@ -4353,8 +4214,8 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - rollup@4.45.1: - resolution: {integrity: sha512-4iya7Jb76fVpQyLoiVpzUrsjQ12r3dM7fIVz+4NwoYvZOShknRmiv+iu9CClZml5ZLGb0XMcYLutK6w9tgxHDw==} + rollup@4.40.1: + resolution: {integrity: sha512-C5VvvgCCyfyotVITIAv+4efVytl5F7wt+/I2i9q9GZcEXW9BP52YYOXC58igUi+LFZVHukErIIqQSWwv/M3WRw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -4660,10 +4521,9 @@ packages: resolution: {integrity: sha512-vWMq11OwWCC84pQaFPzF/VO3BrjkCeewuvJgt1jfV0499Z1QSAWN4EqfMM5WlFDDX9/oP8JjlDKpblrmEoyu4Q==} engines: {node: '>=14.18.0'} - superagent@10.2.2: - resolution: {integrity: sha512-vWMq11OwWCC84pQaFPzF/VO3BrjkCeewuvJgt1jfV0499Z1QSAWN4EqfMM5WlFDDX9/oP8JjlDKpblrmEoyu4Q==} + superagent@10.2.3: + resolution: {integrity: sha512-y/hkYGeXAj7wUMjxRbB21g/l6aAEituGXM9Rwl4o20+SX3e8YOSV6BxFXl+dL3Uk0mjSL3kCbNkwURm8/gEDig==} engines: {node: '>=14.18.0'} - deprecated: Please upgrade to superagent v10.2.2+, see release notes at https://github.com/forwardemail/superagent/releases/tag/v10.2.2 - maintenance is supported by Forward Email @ https://forwardemail.net superagent@8.1.2: resolution: {integrity: sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==} @@ -4674,10 +4534,9 @@ packages: resolution: {integrity: sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==} engines: {node: '>=16'} - supertest@7.1.3: - resolution: {integrity: sha512-ORY0gPa6ojmg/C74P/bDoS21WL6FMXq5I8mawkEz30/zkwdu0gOeqstFy316vHG6OKxqQ+IbGneRemHI8WraEw==} + supertest@7.1.4: + resolution: {integrity: sha512-tjLPs7dVyqgItVFirHYqe2T+MfWc2VOBQ8QFKKbWTA3PU7liZR8zoSpAi/C1k1ilm9RsXIKYf197oap9wXGVYg==} engines: {node: '>=14.18.0'} - deprecated: Please upgrade to supertest v7.1.3+, see release notes at https://github.com/forwardemail/supertest/releases/tag/v7.1.3 - maintenance is supported by Forward Email @ https://forwardemail.net supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} @@ -4993,8 +4852,8 @@ packages: terser: optional: true - vite@7.0.4: - resolution: {integrity: sha512-SkaSguuS7nnmV7mfJ8l81JGBFV7Gvzp8IzgE8A8t23+AxuNX61Q5H1Tpz5efduSN7NHC8nQXD3sKQKZAu5mNEA==} + vite@7.0.6: + resolution: {integrity: sha512-MHFiOENNBd+Bd9uvc8GEsIzdkn1JxMmEeYX35tI3fv0sJBUTfW5tQsoaOwuY4KhBI09A3dUJ/DXf2yxPVPUceg==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -5142,8 +5001,8 @@ packages: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} - workerpool@9.3.3: - resolution: {integrity: sha512-slxCaKbYjEdFT/o2rH9xS1hf4uRDch1w7Uo+apxhZ+sf/1d9e0ZVkn42kPNGP2dgjIx6YFvSevj0zHvbWe2jdw==} + workerpool@9.3.2: + resolution: {integrity: sha512-Xz4Nm9c+LiBHhDR5bDLnNzmj6+5F+cyEAWPMkbs2awq/dYazR/efelZzUAjB/y3kNHL+uzkHvxVVpaOfGCPV7A==} wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} @@ -5536,225 +5395,147 @@ snapshots: '@esbuild/aix-ppc64@0.25.5': optional: true - '@esbuild/aix-ppc64@0.25.6': - optional: true - '@esbuild/android-arm64@0.21.5': optional: true '@esbuild/android-arm64@0.25.5': optional: true - '@esbuild/android-arm64@0.25.6': - optional: true - '@esbuild/android-arm@0.21.5': optional: true '@esbuild/android-arm@0.25.5': optional: true - '@esbuild/android-arm@0.25.6': - optional: true - '@esbuild/android-x64@0.21.5': optional: true '@esbuild/android-x64@0.25.5': optional: true - '@esbuild/android-x64@0.25.6': - optional: true - '@esbuild/darwin-arm64@0.21.5': optional: true '@esbuild/darwin-arm64@0.25.5': optional: true - '@esbuild/darwin-arm64@0.25.6': - optional: true - '@esbuild/darwin-x64@0.21.5': optional: true '@esbuild/darwin-x64@0.25.5': optional: true - '@esbuild/darwin-x64@0.25.6': - optional: true - '@esbuild/freebsd-arm64@0.21.5': optional: true '@esbuild/freebsd-arm64@0.25.5': optional: true - '@esbuild/freebsd-arm64@0.25.6': - optional: true - '@esbuild/freebsd-x64@0.21.5': optional: true '@esbuild/freebsd-x64@0.25.5': optional: true - '@esbuild/freebsd-x64@0.25.6': - optional: true - '@esbuild/linux-arm64@0.21.5': optional: true '@esbuild/linux-arm64@0.25.5': optional: true - '@esbuild/linux-arm64@0.25.6': - optional: true - '@esbuild/linux-arm@0.21.5': optional: true '@esbuild/linux-arm@0.25.5': optional: true - '@esbuild/linux-arm@0.25.6': - optional: true - '@esbuild/linux-ia32@0.21.5': optional: true '@esbuild/linux-ia32@0.25.5': optional: true - '@esbuild/linux-ia32@0.25.6': - optional: true - '@esbuild/linux-loong64@0.21.5': optional: true '@esbuild/linux-loong64@0.25.5': optional: true - '@esbuild/linux-loong64@0.25.6': - optional: true - '@esbuild/linux-mips64el@0.21.5': optional: true '@esbuild/linux-mips64el@0.25.5': optional: true - '@esbuild/linux-mips64el@0.25.6': - optional: true - '@esbuild/linux-ppc64@0.21.5': optional: true '@esbuild/linux-ppc64@0.25.5': optional: true - '@esbuild/linux-ppc64@0.25.6': - optional: true - '@esbuild/linux-riscv64@0.21.5': optional: true '@esbuild/linux-riscv64@0.25.5': optional: true - '@esbuild/linux-riscv64@0.25.6': - optional: true - '@esbuild/linux-s390x@0.21.5': optional: true '@esbuild/linux-s390x@0.25.5': optional: true - '@esbuild/linux-s390x@0.25.6': - optional: true - '@esbuild/linux-x64@0.21.5': optional: true '@esbuild/linux-x64@0.25.5': optional: true - '@esbuild/linux-x64@0.25.6': - optional: true - '@esbuild/netbsd-arm64@0.25.5': optional: true - '@esbuild/netbsd-arm64@0.25.6': - optional: true - '@esbuild/netbsd-x64@0.21.5': optional: true '@esbuild/netbsd-x64@0.25.5': optional: true - '@esbuild/netbsd-x64@0.25.6': - optional: true - '@esbuild/openbsd-arm64@0.25.5': optional: true - '@esbuild/openbsd-arm64@0.25.6': - optional: true - '@esbuild/openbsd-x64@0.21.5': optional: true '@esbuild/openbsd-x64@0.25.5': optional: true - '@esbuild/openbsd-x64@0.25.6': - optional: true - - '@esbuild/openharmony-arm64@0.25.6': - optional: true - '@esbuild/sunos-x64@0.21.5': optional: true '@esbuild/sunos-x64@0.25.5': optional: true - '@esbuild/sunos-x64@0.25.6': - optional: true - '@esbuild/win32-arm64@0.21.5': optional: true '@esbuild/win32-arm64@0.25.5': optional: true - '@esbuild/win32-arm64@0.25.6': - optional: true - '@esbuild/win32-ia32@0.21.5': optional: true '@esbuild/win32-ia32@0.25.5': optional: true - '@esbuild/win32-ia32@0.25.6': - optional: true - '@esbuild/win32-x64@0.21.5': optional: true '@esbuild/win32-x64@0.25.5': optional: true - '@esbuild/win32-x64@0.25.6': - optional: true - - '@eslint-community/eslint-utils@4.7.0(eslint@9.31.0)': + '@eslint-community/eslint-utils@4.7.0(eslint@9.32.0)': dependencies: - eslint: 9.31.0 + eslint: 9.32.0 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} @@ -5769,6 +5550,10 @@ snapshots: '@eslint/config-helpers@0.3.0': {} + '@eslint/core@0.15.0': + dependencies: + '@types/json-schema': 7.0.15 + '@eslint/core@0.15.1': dependencies: '@types/json-schema': 7.0.15 @@ -5787,11 +5572,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.31.0': {} + '@eslint/js@9.32.0': {} '@eslint/object-schema@2.1.6': {} - '@eslint/plugin-kit@0.3.3': + '@eslint/plugin-kit@0.3.4': dependencies: '@eslint/core': 0.15.1 levn: 0.4.1 @@ -5840,19 +5625,19 @@ snapshots: '@jridgewell/gen-mapping@0.3.8': dependencies: '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.4 + '@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/trace-mapping': 0.3.25 '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/set-array@1.2.1': {} - '@jridgewell/sourcemap-codec@1.5.4': {} + '@jridgewell/sourcemap-codec@1.5.0': {} '@jridgewell/trace-mapping@0.3.25': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.4 + '@jridgewell/sourcemap-codec': 1.5.0 '@jsdevtools/ono@7.1.3': {} @@ -6117,72 +5902,72 @@ snapshots: '@rolldown/pluginutils@1.0.0-beta.11': {} - '@rollup/pluginutils@5.1.4(rollup@4.45.1)': + '@rollup/pluginutils@5.1.4(rollup@4.40.1)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 - picomatch: 4.0.3 + picomatch: 4.0.2 optionalDependencies: - rollup: 4.45.1 + rollup: 4.40.1 - '@rollup/rollup-android-arm-eabi@4.45.1': + '@rollup/rollup-android-arm-eabi@4.40.1': optional: true - '@rollup/rollup-android-arm64@4.45.1': + '@rollup/rollup-android-arm64@4.40.1': optional: true - '@rollup/rollup-darwin-arm64@4.45.1': + '@rollup/rollup-darwin-arm64@4.40.1': optional: true - '@rollup/rollup-darwin-x64@4.45.1': + '@rollup/rollup-darwin-x64@4.40.1': optional: true - '@rollup/rollup-freebsd-arm64@4.45.1': + '@rollup/rollup-freebsd-arm64@4.40.1': optional: true - '@rollup/rollup-freebsd-x64@4.45.1': + '@rollup/rollup-freebsd-x64@4.40.1': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.45.1': + '@rollup/rollup-linux-arm-gnueabihf@4.40.1': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.45.1': + '@rollup/rollup-linux-arm-musleabihf@4.40.1': optional: true - '@rollup/rollup-linux-arm64-gnu@4.45.1': + '@rollup/rollup-linux-arm64-gnu@4.40.1': optional: true - '@rollup/rollup-linux-arm64-musl@4.45.1': + '@rollup/rollup-linux-arm64-musl@4.40.1': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.45.1': + '@rollup/rollup-linux-loongarch64-gnu@4.40.1': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.45.1': + '@rollup/rollup-linux-powerpc64le-gnu@4.40.1': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.45.1': + '@rollup/rollup-linux-riscv64-gnu@4.40.1': optional: true - '@rollup/rollup-linux-riscv64-musl@4.45.1': + '@rollup/rollup-linux-riscv64-musl@4.40.1': optional: true - '@rollup/rollup-linux-s390x-gnu@4.45.1': + '@rollup/rollup-linux-s390x-gnu@4.40.1': optional: true - '@rollup/rollup-linux-x64-gnu@4.45.1': + '@rollup/rollup-linux-x64-gnu@4.40.1': optional: true - '@rollup/rollup-linux-x64-musl@4.45.1': + '@rollup/rollup-linux-x64-musl@4.40.1': optional: true - '@rollup/rollup-win32-arm64-msvc@4.45.1': + '@rollup/rollup-win32-arm64-msvc@4.40.1': optional: true - '@rollup/rollup-win32-ia32-msvc@4.45.1': + '@rollup/rollup-win32-ia32-msvc@4.40.1': optional: true - '@rollup/rollup-win32-x64-msvc@4.45.1': + '@rollup/rollup-win32-x64-msvc@4.40.1': optional: true '@rtsao/scc@1.1.0': {} @@ -6378,14 +6163,14 @@ snapshots: '@types/accepts@1.3.7': dependencies: - '@types/node': 24.0.14 + '@types/node': 24.1.0 '@types/async@3.2.24': {} '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 24.0.14 + '@types/node': 24.1.0 '@types/chai@5.2.2': dependencies: @@ -6393,7 +6178,7 @@ snapshots: '@types/connect@3.4.38': dependencies: - '@types/node': 24.0.14 + '@types/node': 24.1.0 '@types/content-disposition@0.5.9': {} @@ -6404,11 +6189,11 @@ snapshots: '@types/connect': 3.4.38 '@types/express': 4.17.21 '@types/keygrip': 1.0.6 - '@types/node': 24.0.14 + '@types/node': 24.1.0 '@types/cors@2.8.17': dependencies: - '@types/node': 24.0.14 + '@types/node': 24.1.0 '@types/debug@4.1.12': dependencies: @@ -6416,11 +6201,13 @@ snapshots: '@types/deep-eql@4.0.2': {} + '@types/estree@1.0.7': {} + '@types/estree@1.0.8': {} '@types/express-serve-static-core@4.19.6': dependencies: - '@types/node': 24.0.14 + '@types/node': 24.1.0 '@types/qs': 6.9.18 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -6434,11 +6221,11 @@ snapshots: '@types/formidable@3.4.5': dependencies: - '@types/node': 24.0.14 + '@types/node': 24.1.0 '@types/fs-extra@9.0.13': dependencies: - '@types/node': 24.0.14 + '@types/node': 24.1.0 '@types/hast@3.0.4': dependencies: @@ -6456,7 +6243,7 @@ snapshots: '@types/jsdom@21.1.7': dependencies: - '@types/node': 24.0.14 + '@types/node': 24.1.0 '@types/tough-cookie': 4.0.5 parse5: 7.2.1 @@ -6467,7 +6254,7 @@ snapshots: '@types/jsonwebtoken@9.0.10': dependencies: '@types/ms': 2.1.0 - '@types/node': 24.0.14 + '@types/node': 24.1.0 '@types/keygrip@1.0.6': {} @@ -6484,7 +6271,7 @@ snapshots: '@types/http-errors': 2.0.5 '@types/keygrip': 1.0.6 '@types/koa-compose': 3.2.8 - '@types/node': 24.0.14 + '@types/node': 24.1.0 '@types/linkify-it@5.0.0': {} @@ -6513,10 +6300,10 @@ snapshots: '@types/node-fetch@2.6.12': dependencies: - '@types/node': 24.0.14 + '@types/node': 24.1.0 form-data: 4.0.3 - '@types/node@24.0.14': + '@types/node@24.1.0': dependencies: undici-types: 7.8.0 @@ -6524,7 +6311,7 @@ snapshots: dependencies: '@types/keygrip': 1.0.6 '@types/koa': 2.15.0 - '@types/node': 24.0.14 + '@types/node': 24.1.0 '@types/qs@6.9.18': {} @@ -6543,12 +6330,12 @@ snapshots: '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 24.0.14 + '@types/node': 24.1.0 '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.5 - '@types/node': 24.0.14 + '@types/node': 24.1.0 '@types/send': 0.17.4 '@types/sinon@17.0.4': @@ -6563,7 +6350,7 @@ snapshots: dependencies: '@types/cookiejar': 2.1.5 '@types/methods': 1.1.4 - '@types/node': 24.0.14 + '@types/node': 24.1.0 form-data: 4.0.3 '@types/supertest@6.0.3': @@ -6578,7 +6365,7 @@ snapshots: '@types/tar@6.1.13': dependencies: - '@types/node': 24.0.14 + '@types/node': 24.1.0 minipass: 4.2.8 '@types/tough-cookie@4.0.5': {} @@ -6593,15 +6380,15 @@ snapshots: '@types/whatwg-mimetype@3.0.2': {} - '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.31.0)(typescript@5.8.3))(eslint@9.31.0)(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.32.0)(typescript@5.8.3))(eslint@9.32.0)(typescript@5.8.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 7.18.0(eslint@9.31.0)(typescript@5.8.3) + '@typescript-eslint/parser': 7.18.0(eslint@9.32.0)(typescript@5.8.3) '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/type-utils': 7.18.0(eslint@9.31.0)(typescript@5.8.3) - '@typescript-eslint/utils': 7.18.0(eslint@9.31.0)(typescript@5.8.3) + '@typescript-eslint/type-utils': 7.18.0(eslint@9.32.0)(typescript@5.8.3) + '@typescript-eslint/utils': 7.18.0(eslint@9.32.0)(typescript@5.8.3) '@typescript-eslint/visitor-keys': 7.18.0 - eslint: 9.31.0 + eslint: 9.32.0 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -6611,15 +6398,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.37.0(@typescript-eslint/parser@8.37.0(eslint@9.31.0)(typescript@5.8.3))(eslint@9.31.0)(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@8.38.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0)(typescript@5.8.3))(eslint@9.32.0)(typescript@5.8.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.37.0(eslint@9.31.0)(typescript@5.8.3) - '@typescript-eslint/scope-manager': 8.37.0 - '@typescript-eslint/type-utils': 8.37.0(eslint@9.31.0)(typescript@5.8.3) - '@typescript-eslint/utils': 8.37.0(eslint@9.31.0)(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.37.0 - eslint: 9.31.0 + '@typescript-eslint/parser': 8.38.0(eslint@9.32.0)(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.38.0 + '@typescript-eslint/type-utils': 8.38.0(eslint@9.32.0)(typescript@5.8.3) + '@typescript-eslint/utils': 8.38.0(eslint@9.32.0)(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.38.0 + eslint: 9.32.0 graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -6628,35 +6415,35 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.18.0(eslint@9.31.0)(typescript@5.8.3)': + '@typescript-eslint/parser@7.18.0(eslint@9.32.0)(typescript@5.8.3)': dependencies: '@typescript-eslint/scope-manager': 7.18.0 '@typescript-eslint/types': 7.18.0 '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.8.3) '@typescript-eslint/visitor-keys': 7.18.0 debug: 4.4.1(supports-color@8.1.1) - eslint: 9.31.0 + eslint: 9.32.0 optionalDependencies: typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.37.0(eslint@9.31.0)(typescript@5.8.3)': + '@typescript-eslint/parser@8.38.0(eslint@9.32.0)(typescript@5.8.3)': dependencies: - '@typescript-eslint/scope-manager': 8.37.0 - '@typescript-eslint/types': 8.37.0 - '@typescript-eslint/typescript-estree': 8.37.0(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.37.0 + '@typescript-eslint/scope-manager': 8.38.0 + '@typescript-eslint/types': 8.38.0 + '@typescript-eslint/typescript-estree': 8.38.0(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.38.0 debug: 4.4.1(supports-color@8.1.1) - eslint: 9.31.0 + eslint: 9.32.0 typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.37.0(typescript@5.8.3)': + '@typescript-eslint/project-service@8.38.0(typescript@5.8.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.37.0(typescript@5.8.3) - '@typescript-eslint/types': 8.37.0 + '@typescript-eslint/tsconfig-utils': 8.38.0(typescript@5.8.3) + '@typescript-eslint/types': 8.38.0 debug: 4.4.1(supports-color@8.1.1) typescript: 5.8.3 transitivePeerDependencies: @@ -6667,34 +6454,34 @@ snapshots: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/visitor-keys': 7.18.0 - '@typescript-eslint/scope-manager@8.37.0': + '@typescript-eslint/scope-manager@8.38.0': dependencies: - '@typescript-eslint/types': 8.37.0 - '@typescript-eslint/visitor-keys': 8.37.0 + '@typescript-eslint/types': 8.38.0 + '@typescript-eslint/visitor-keys': 8.38.0 - '@typescript-eslint/tsconfig-utils@8.37.0(typescript@5.8.3)': + '@typescript-eslint/tsconfig-utils@8.38.0(typescript@5.8.3)': dependencies: typescript: 5.8.3 - '@typescript-eslint/type-utils@7.18.0(eslint@9.31.0)(typescript@5.8.3)': + '@typescript-eslint/type-utils@7.18.0(eslint@9.32.0)(typescript@5.8.3)': dependencies: '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.8.3) - '@typescript-eslint/utils': 7.18.0(eslint@9.31.0)(typescript@5.8.3) + '@typescript-eslint/utils': 7.18.0(eslint@9.32.0)(typescript@5.8.3) debug: 4.4.1(supports-color@8.1.1) - eslint: 9.31.0 + eslint: 9.32.0 ts-api-utils: 1.4.3(typescript@5.8.3) optionalDependencies: typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.37.0(eslint@9.31.0)(typescript@5.8.3)': + '@typescript-eslint/type-utils@8.38.0(eslint@9.32.0)(typescript@5.8.3)': dependencies: - '@typescript-eslint/types': 8.37.0 - '@typescript-eslint/typescript-estree': 8.37.0(typescript@5.8.3) - '@typescript-eslint/utils': 8.37.0(eslint@9.31.0)(typescript@5.8.3) + '@typescript-eslint/types': 8.38.0 + '@typescript-eslint/typescript-estree': 8.38.0(typescript@5.8.3) + '@typescript-eslint/utils': 8.38.0(eslint@9.32.0)(typescript@5.8.3) debug: 4.4.1(supports-color@8.1.1) - eslint: 9.31.0 + eslint: 9.32.0 ts-api-utils: 2.1.0(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: @@ -6702,7 +6489,7 @@ snapshots: '@typescript-eslint/types@7.18.0': {} - '@typescript-eslint/types@8.37.0': {} + '@typescript-eslint/types@8.38.0': {} '@typescript-eslint/typescript-estree@7.18.0(typescript@5.8.3)': dependencies: @@ -6719,12 +6506,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.37.0(typescript@5.8.3)': + '@typescript-eslint/typescript-estree@8.38.0(typescript@5.8.3)': dependencies: - '@typescript-eslint/project-service': 8.37.0(typescript@5.8.3) - '@typescript-eslint/tsconfig-utils': 8.37.0(typescript@5.8.3) - '@typescript-eslint/types': 8.37.0 - '@typescript-eslint/visitor-keys': 8.37.0 + '@typescript-eslint/project-service': 8.38.0(typescript@5.8.3) + '@typescript-eslint/tsconfig-utils': 8.38.0(typescript@5.8.3) + '@typescript-eslint/types': 8.38.0 + '@typescript-eslint/visitor-keys': 8.38.0 debug: 4.4.1(supports-color@8.1.1) fast-glob: 3.3.3 is-glob: 4.0.3 @@ -6735,24 +6522,24 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@7.18.0(eslint@9.31.0)(typescript@5.8.3)': + '@typescript-eslint/utils@7.18.0(eslint@9.32.0)(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.31.0) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0) '@typescript-eslint/scope-manager': 7.18.0 '@typescript-eslint/types': 7.18.0 '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.8.3) - eslint: 9.31.0 + eslint: 9.32.0 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@8.37.0(eslint@9.31.0)(typescript@5.8.3)': + '@typescript-eslint/utils@8.38.0(eslint@9.32.0)(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.31.0) - '@typescript-eslint/scope-manager': 8.37.0 - '@typescript-eslint/types': 8.37.0 - '@typescript-eslint/typescript-estree': 8.37.0(typescript@5.8.3) - eslint: 9.31.0 + '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0) + '@typescript-eslint/scope-manager': 8.38.0 + '@typescript-eslint/types': 8.38.0 + '@typescript-eslint/typescript-estree': 8.38.0(typescript@5.8.3) + eslint: 9.32.0 typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -6762,9 +6549,9 @@ snapshots: '@typescript-eslint/types': 7.18.0 eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@8.37.0': + '@typescript-eslint/visitor-keys@8.38.0': dependencies: - '@typescript-eslint/types': 8.37.0 + '@typescript-eslint/types': 8.38.0 eslint-visitor-keys: 4.2.1 '@ungap/structured-clone@1.3.0': {} @@ -6816,17 +6603,17 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.3.3': optional: true - '@vitejs/plugin-react-swc@3.10.2(vite@7.0.4(@types/node@24.0.14)(tsx@4.20.3))': + '@vitejs/plugin-react-swc@3.10.2(vite@7.0.6(@types/node@24.1.0)(tsx@4.20.3))': dependencies: '@rolldown/pluginutils': 1.0.0-beta.11 '@swc/core': 1.12.1 - vite: 7.0.4(@types/node@24.0.14)(tsx@4.20.3) + vite: 7.0.6(@types/node@24.1.0)(tsx@4.20.3) transitivePeerDependencies: - '@swc/helpers' - '@vitejs/plugin-vue@5.2.3(vite@5.4.19(@types/node@24.0.14))(vue@3.5.13(typescript@5.8.3))': + '@vitejs/plugin-vue@5.2.3(vite@5.4.19(@types/node@24.1.0))(vue@3.5.13(typescript@5.8.3))': dependencies: - vite: 5.4.19(@types/node@24.0.14) + vite: 5.4.19(@types/node@24.1.0) vue: 3.5.13(typescript@5.8.3) '@vitest/expect@3.2.4': @@ -6834,16 +6621,16 @@ snapshots: '@types/chai': 5.2.2 '@vitest/spy': 3.2.4 '@vitest/utils': 3.2.4 - chai: 5.2.1 + chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@7.0.4(@types/node@24.0.14)(tsx@4.20.3))': + '@vitest/mocker@3.2.4(vite@7.0.6(@types/node@24.1.0)(tsx@4.20.3))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 7.0.4(@types/node@24.0.14)(tsx@4.20.3) + vite: 7.0.6(@types/node@24.1.0)(tsx@4.20.3) '@vitest/pretty-format@3.2.4': dependencies: @@ -6868,7 +6655,7 @@ snapshots: '@vitest/utils@3.2.4': dependencies: '@vitest/pretty-format': 3.2.4 - loupe: 3.1.4 + loupe: 3.2.0 tinyrainbow: 2.0.0 '@vue/compiler-core@3.5.13': @@ -6893,7 +6680,7 @@ snapshots: '@vue/shared': 3.5.13 estree-walker: 2.0.2 magic-string: 0.30.17 - postcss: 8.5.6 + postcss: 8.5.3 source-map-js: 1.2.1 '@vue/compiler-ssr@3.5.13': @@ -7215,13 +7002,13 @@ snapshots: ccount@2.0.1: {} - chai@5.2.1: + chai@5.2.0: dependencies: assertion-error: 2.0.1 check-error: 2.1.1 deep-eql: 5.0.2 - loupe: 3.1.4 - pathval: 2.0.1 + loupe: 3.1.3 + pathval: 2.0.0 chalk@4.1.2: dependencies: @@ -7503,7 +7290,7 @@ snapshots: engine.io@6.6.4: dependencies: '@types/cors': 2.8.17 - '@types/node': 24.0.14 + '@types/node': 24.1.0 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -7657,35 +7444,6 @@ snapshots: '@esbuild/win32-ia32': 0.25.5 '@esbuild/win32-x64': 0.25.5 - esbuild@0.25.6: - optionalDependencies: - '@esbuild/aix-ppc64': 0.25.6 - '@esbuild/android-arm': 0.25.6 - '@esbuild/android-arm64': 0.25.6 - '@esbuild/android-x64': 0.25.6 - '@esbuild/darwin-arm64': 0.25.6 - '@esbuild/darwin-x64': 0.25.6 - '@esbuild/freebsd-arm64': 0.25.6 - '@esbuild/freebsd-x64': 0.25.6 - '@esbuild/linux-arm': 0.25.6 - '@esbuild/linux-arm64': 0.25.6 - '@esbuild/linux-ia32': 0.25.6 - '@esbuild/linux-loong64': 0.25.6 - '@esbuild/linux-mips64el': 0.25.6 - '@esbuild/linux-ppc64': 0.25.6 - '@esbuild/linux-riscv64': 0.25.6 - '@esbuild/linux-s390x': 0.25.6 - '@esbuild/linux-x64': 0.25.6 - '@esbuild/netbsd-arm64': 0.25.6 - '@esbuild/netbsd-x64': 0.25.6 - '@esbuild/openbsd-arm64': 0.25.6 - '@esbuild/openbsd-x64': 0.25.6 - '@esbuild/openharmony-arm64': 0.25.6 - '@esbuild/sunos-x64': 0.25.6 - '@esbuild/win32-arm64': 0.25.6 - '@esbuild/win32-ia32': 0.25.6 - '@esbuild/win32-x64': 0.25.6 - escalade@3.2.0: {} escape-html@1.0.3: {} @@ -7702,24 +7460,24 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-compat-utils@0.5.1(eslint@9.31.0): + eslint-compat-utils@0.5.1(eslint@9.32.0): dependencies: - eslint: 9.31.0 + eslint: 9.32.0 semver: 7.7.2 - eslint-config-etherpad@4.0.4(eslint@9.31.0)(typescript@5.8.3): + eslint-config-etherpad@4.0.4(eslint@9.32.0)(typescript@5.8.3): dependencies: '@rushstack/eslint-patch': 1.11.0 - '@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.31.0)(typescript@5.8.3))(eslint@9.31.0)(typescript@5.8.3) - '@typescript-eslint/parser': 7.18.0(eslint@9.31.0)(typescript@5.8.3) - eslint-import-resolver-typescript: 3.10.0(eslint-plugin-import@2.31.0)(eslint@9.31.0) - eslint-plugin-cypress: 2.15.2(eslint@9.31.0) - eslint-plugin-eslint-comments: 3.2.0(eslint@9.31.0) - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@9.31.0)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.0)(eslint@9.31.0) - eslint-plugin-mocha: 10.5.0(eslint@9.31.0) - eslint-plugin-n: 16.6.2(eslint@9.31.0) - eslint-plugin-prefer-arrow: 1.2.3(eslint@9.31.0) - eslint-plugin-promise: 6.6.0(eslint@9.31.0) + '@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.32.0)(typescript@5.8.3))(eslint@9.32.0)(typescript@5.8.3) + '@typescript-eslint/parser': 7.18.0(eslint@9.32.0)(typescript@5.8.3) + eslint-import-resolver-typescript: 3.10.0(eslint-plugin-import@2.31.0)(eslint@9.32.0) + eslint-plugin-cypress: 2.15.2(eslint@9.32.0) + eslint-plugin-eslint-comments: 3.2.0(eslint@9.32.0) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@9.32.0)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.0)(eslint@9.32.0) + eslint-plugin-mocha: 10.5.0(eslint@9.32.0) + eslint-plugin-n: 16.6.2(eslint@9.32.0) + eslint-plugin-prefer-arrow: 1.2.3(eslint@9.32.0) + eslint-plugin-promise: 6.6.0(eslint@9.32.0) eslint-plugin-you-dont-need-lodash-underscore: 6.14.0 transitivePeerDependencies: - eslint @@ -7736,51 +7494,51 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.0(eslint-plugin-import@2.31.0)(eslint@9.31.0): + eslint-import-resolver-typescript@3.10.0(eslint-plugin-import@2.31.0)(eslint@9.32.0): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.1(supports-color@8.1.1) - eslint: 9.31.0 + eslint: 9.32.0 get-tsconfig: 4.10.1 is-bun-module: 2.0.0 stable-hash: 0.0.5 tinyglobby: 0.2.14 unrs-resolver: 1.3.3 optionalDependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@9.31.0)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.0)(eslint@9.31.0) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@9.32.0)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.0)(eslint@9.32.0) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@7.18.0(eslint@9.31.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.0)(eslint@9.31.0): + eslint-module-utils@2.12.0(@typescript-eslint/parser@7.18.0(eslint@9.32.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.0)(eslint@9.32.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 7.18.0(eslint@9.31.0)(typescript@5.8.3) - eslint: 9.31.0 + '@typescript-eslint/parser': 7.18.0(eslint@9.32.0)(typescript@5.8.3) + eslint: 9.32.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.0(eslint-plugin-import@2.31.0)(eslint@9.31.0) + eslint-import-resolver-typescript: 3.10.0(eslint-plugin-import@2.31.0)(eslint@9.32.0) transitivePeerDependencies: - supports-color - eslint-plugin-cypress@2.15.2(eslint@9.31.0): + eslint-plugin-cypress@2.15.2(eslint@9.32.0): dependencies: - eslint: 9.31.0 + eslint: 9.32.0 globals: 13.24.0 - eslint-plugin-es-x@7.8.0(eslint@9.31.0): + eslint-plugin-es-x@7.8.0(eslint@9.32.0): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.31.0) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0) '@eslint-community/regexpp': 4.12.1 - eslint: 9.31.0 - eslint-compat-utils: 0.5.1(eslint@9.31.0) + eslint: 9.32.0 + eslint-compat-utils: 0.5.1(eslint@9.32.0) - eslint-plugin-eslint-comments@3.2.0(eslint@9.31.0): + eslint-plugin-eslint-comments@3.2.0(eslint@9.32.0): dependencies: escape-string-regexp: 1.0.5 - eslint: 9.31.0 + eslint: 9.32.0 ignore: 5.3.2 - eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@9.31.0)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.0)(eslint@9.31.0): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@9.32.0)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.0)(eslint@9.32.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -7789,9 +7547,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.31.0 + eslint: 9.32.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.18.0(eslint@9.31.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.0)(eslint@9.31.0) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.18.0(eslint@9.32.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.0)(eslint@9.32.0) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -7803,25 +7561,25 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 7.18.0(eslint@9.31.0)(typescript@5.8.3) + '@typescript-eslint/parser': 7.18.0(eslint@9.32.0)(typescript@5.8.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-mocha@10.5.0(eslint@9.31.0): + eslint-plugin-mocha@10.5.0(eslint@9.32.0): dependencies: - eslint: 9.31.0 - eslint-utils: 3.0.0(eslint@9.31.0) + eslint: 9.32.0 + eslint-utils: 3.0.0(eslint@9.32.0) globals: 13.24.0 rambda: 7.5.0 - eslint-plugin-n@16.6.2(eslint@9.31.0): + eslint-plugin-n@16.6.2(eslint@9.32.0): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.31.0) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0) builtins: 5.1.0 - eslint: 9.31.0 - eslint-plugin-es-x: 7.8.0(eslint@9.31.0) + eslint: 9.32.0 + eslint-plugin-es-x: 7.8.0(eslint@9.32.0) get-tsconfig: 4.10.1 globals: 13.24.0 ignore: 5.3.2 @@ -7831,21 +7589,21 @@ snapshots: resolve: 1.22.10 semver: 7.7.2 - eslint-plugin-prefer-arrow@1.2.3(eslint@9.31.0): + eslint-plugin-prefer-arrow@1.2.3(eslint@9.32.0): dependencies: - eslint: 9.31.0 + eslint: 9.32.0 - eslint-plugin-promise@6.6.0(eslint@9.31.0): + eslint-plugin-promise@6.6.0(eslint@9.32.0): dependencies: - eslint: 9.31.0 + eslint: 9.32.0 - eslint-plugin-react-hooks@5.2.0(eslint@9.31.0): + eslint-plugin-react-hooks@5.2.0(eslint@9.32.0): dependencies: - eslint: 9.31.0 + eslint: 9.32.0 - eslint-plugin-react-refresh@0.4.20(eslint@9.31.0): + eslint-plugin-react-refresh@0.4.20(eslint@9.32.0): dependencies: - eslint: 9.31.0 + eslint: 9.32.0 eslint-plugin-you-dont-need-lodash-underscore@6.14.0: dependencies: @@ -7856,9 +7614,9 @@ snapshots: esrecurse: 4.3.0 estraverse: 5.3.0 - eslint-utils@3.0.0(eslint@9.31.0): + eslint-utils@3.0.0(eslint@9.32.0): dependencies: - eslint: 9.31.0 + eslint: 9.32.0 eslint-visitor-keys: 2.1.0 eslint-visitor-keys@2.1.0: {} @@ -7867,16 +7625,16 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.31.0: + eslint@9.32.0: dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.31.0) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.21.0 '@eslint/config-helpers': 0.3.0 - '@eslint/core': 0.15.1 + '@eslint/core': 0.15.0 '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.31.0 - '@eslint/plugin-kit': 0.3.3 + '@eslint/js': 9.32.0 + '@eslint/plugin-kit': 0.3.4 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 @@ -7947,12 +7705,12 @@ snapshots: - supports-color - utf-8-validate - expect-type@1.2.2: {} + expect-type@1.2.1: {} - express-rate-limit@8.0.0(express@4.21.2): + express-rate-limit@8.0.1(express@4.21.2): dependencies: express: 4.21.2 - ip: 2.0.1 + ip-address: 10.0.1 express@4.21.2: dependencies: @@ -8097,6 +7855,14 @@ snapshots: hasown: 2.0.2 mime-types: 2.1.35 + form-data@4.0.4: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.2 + mime-types: 2.1.35 + formdata-polyfill@4.0.10: dependencies: fetch-blob: 3.2.0 @@ -8421,13 +8187,13 @@ snapshots: hasown: 2.0.2 side-channel: 1.1.0 + ip-address@10.0.1: {} + ip-address@9.0.5: dependencies: jsbn: 1.1.0 sprintf-js: 1.1.3 - ip@2.0.1: {} - ipaddr.js@1.9.1: {} is-array-buffer@3.0.5: @@ -8796,7 +8562,9 @@ snapshots: transitivePeerDependencies: - supports-color - loupe@3.1.4: {} + loupe@3.1.3: {} + + loupe@3.2.0: {} lower-case@2.0.2: dependencies: @@ -8818,7 +8586,7 @@ snapshots: magic-string@0.30.17: dependencies: - '@jridgewell/sourcemap-codec': 1.5.4 + '@jridgewell/sourcemap-codec': 1.5.0 mark.js@8.11.1: {} @@ -8944,7 +8712,7 @@ snapshots: serialize-javascript: 6.0.2 strip-json-comments: 3.1.1 supports-color: 8.1.1 - workerpool: 9.3.3 + workerpool: 9.3.2 yargs: 17.7.2 yargs-parser: 21.1.1 yargs-unparser: 2.0.0 @@ -9170,7 +8938,7 @@ snapshots: pathe@2.0.3: {} - pathval@2.0.1: {} + pathval@2.0.0: {} perfect-debounce@1.0.0: {} @@ -9178,6 +8946,8 @@ snapshots: picomatch@2.3.1: {} + picomatch@4.0.2: {} + picomatch@4.0.3: {} playwright-core@1.54.1: {} @@ -9190,6 +8960,12 @@ snapshots: possible-typed-array-names@1.1.0: {} + postcss@8.5.3: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + postcss@8.5.6: dependencies: nanoid: 3.3.11 @@ -9271,11 +9047,11 @@ snapshots: react: 19.1.0 scheduler: 0.26.0 - react-hook-form@7.60.0(react@19.1.0): + react-hook-form@7.61.1(react@19.1.0): dependencies: react: 19.1.0 - react-i18next@15.6.0(i18next@25.3.2(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3): + react-i18next@15.6.1(i18next@25.3.2(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3): dependencies: '@babel/runtime': 7.27.6 html-parse-stringify: 3.0.1 @@ -9304,13 +9080,13 @@ snapshots: optionalDependencies: '@types/react': 19.1.8 - react-router-dom@7.6.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + react-router-dom@7.7.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0): dependencies: react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - react-router: 7.6.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + react-router: 7.7.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react-router@7.6.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + react-router@7.7.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0): dependencies: cookie: 1.0.2 react: 19.1.0 @@ -9406,30 +9182,30 @@ snapshots: rfdc@1.4.1: {} - rollup@4.45.1: + rollup@4.40.1: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.7 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.45.1 - '@rollup/rollup-android-arm64': 4.45.1 - '@rollup/rollup-darwin-arm64': 4.45.1 - '@rollup/rollup-darwin-x64': 4.45.1 - '@rollup/rollup-freebsd-arm64': 4.45.1 - '@rollup/rollup-freebsd-x64': 4.45.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.45.1 - '@rollup/rollup-linux-arm-musleabihf': 4.45.1 - '@rollup/rollup-linux-arm64-gnu': 4.45.1 - '@rollup/rollup-linux-arm64-musl': 4.45.1 - '@rollup/rollup-linux-loongarch64-gnu': 4.45.1 - '@rollup/rollup-linux-powerpc64le-gnu': 4.45.1 - '@rollup/rollup-linux-riscv64-gnu': 4.45.1 - '@rollup/rollup-linux-riscv64-musl': 4.45.1 - '@rollup/rollup-linux-s390x-gnu': 4.45.1 - '@rollup/rollup-linux-x64-gnu': 4.45.1 - '@rollup/rollup-linux-x64-musl': 4.45.1 - '@rollup/rollup-win32-arm64-msvc': 4.45.1 - '@rollup/rollup-win32-ia32-msvc': 4.45.1 - '@rollup/rollup-win32-x64-msvc': 4.45.1 + '@rollup/rollup-android-arm-eabi': 4.40.1 + '@rollup/rollup-android-arm64': 4.40.1 + '@rollup/rollup-darwin-arm64': 4.40.1 + '@rollup/rollup-darwin-x64': 4.40.1 + '@rollup/rollup-freebsd-arm64': 4.40.1 + '@rollup/rollup-freebsd-x64': 4.40.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.40.1 + '@rollup/rollup-linux-arm-musleabihf': 4.40.1 + '@rollup/rollup-linux-arm64-gnu': 4.40.1 + '@rollup/rollup-linux-arm64-musl': 4.40.1 + '@rollup/rollup-linux-loongarch64-gnu': 4.40.1 + '@rollup/rollup-linux-powerpc64le-gnu': 4.40.1 + '@rollup/rollup-linux-riscv64-gnu': 4.40.1 + '@rollup/rollup-linux-riscv64-musl': 4.40.1 + '@rollup/rollup-linux-s390x-gnu': 4.40.1 + '@rollup/rollup-linux-x64-gnu': 4.40.1 + '@rollup/rollup-linux-x64-musl': 4.40.1 + '@rollup/rollup-win32-arm64-msvc': 4.40.1 + '@rollup/rollup-win32-ia32-msvc': 4.40.1 + '@rollup/rollup-win32-x64-msvc': 4.40.1 fsevents: 2.3.3 rrweb-cssom@0.8.0: {} @@ -9723,7 +9499,7 @@ snapshots: streamroller@3.1.5: dependencies: date-format: 4.0.14 - debug: 4.4.0 + debug: 4.4.1(supports-color@8.1.1) fs-extra: 8.1.0 transitivePeerDependencies: - supports-color @@ -9798,13 +9574,13 @@ snapshots: transitivePeerDependencies: - supports-color - superagent@10.2.2: + superagent@10.2.3: dependencies: component-emitter: 1.3.1 cookiejar: 2.1.4 debug: 4.4.1(supports-color@8.1.1) fast-safe-stringify: 2.1.1 - form-data: 4.0.3 + form-data: 4.0.4 formidable: 3.5.4 methods: 1.1.2 mime: 2.6.0 @@ -9831,10 +9607,10 @@ snapshots: dependencies: copy-anything: 3.0.5 - supertest@7.1.3: + supertest@7.1.4: dependencies: methods: 1.1.2 - superagent: 10.2.2 + superagent: 10.2.3 transitivePeerDependencies: - supports-color @@ -10119,13 +9895,13 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-node@3.2.4(@types/node@24.0.14)(tsx@4.20.3): + vite-node@3.2.4(@types/node@24.1.0)(tsx@4.20.3): dependencies: cac: 6.7.14 debug: 4.4.1(supports-color@8.1.1) es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.0.4(@types/node@24.0.14)(tsx@4.20.3) + vite: 7.0.6(@types/node@24.1.0)(tsx@4.20.3) transitivePeerDependencies: - '@types/node' - jiti @@ -10140,49 +9916,49 @@ snapshots: - tsx - yaml - vite-plugin-static-copy@3.1.1(vite@7.0.4(@types/node@24.0.14)(tsx@4.20.3)): + vite-plugin-static-copy@3.1.1(vite@7.0.6(@types/node@24.1.0)(tsx@4.20.3)): dependencies: chokidar: 3.6.0 fs-extra: 11.3.0 p-map: 7.0.3 picocolors: 1.1.1 tinyglobby: 0.2.14 - vite: 7.0.4(@types/node@24.0.14)(tsx@4.20.3) + vite: 7.0.6(@types/node@24.1.0)(tsx@4.20.3) - vite-plugin-svgr@4.3.0(rollup@4.45.1)(typescript@5.8.3)(vite@7.0.4(@types/node@24.0.14)(tsx@4.20.3)): + vite-plugin-svgr@4.3.0(rollup@4.40.1)(typescript@5.8.3)(vite@7.0.6(@types/node@24.1.0)(tsx@4.20.3)): dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.45.1) + '@rollup/pluginutils': 5.1.4(rollup@4.40.1) '@svgr/core': 8.1.0(typescript@5.8.3) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.8.3)) - vite: 7.0.4(@types/node@24.0.14)(tsx@4.20.3) + vite: 7.0.6(@types/node@24.1.0)(tsx@4.20.3) transitivePeerDependencies: - rollup - supports-color - typescript - vite@5.4.19(@types/node@24.0.14): + vite@5.4.19(@types/node@24.1.0): dependencies: esbuild: 0.21.5 - postcss: 8.5.6 - rollup: 4.45.1 + postcss: 8.5.3 + rollup: 4.40.1 optionalDependencies: - '@types/node': 24.0.14 + '@types/node': 24.1.0 fsevents: 2.3.3 - vite@7.0.4(@types/node@24.0.14)(tsx@4.20.3): + vite@7.0.6(@types/node@24.1.0)(tsx@4.20.3): dependencies: - esbuild: 0.25.6 + esbuild: 0.25.5 fdir: 6.4.6(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.45.1 + rollup: 4.40.1 tinyglobby: 0.2.14 optionalDependencies: - '@types/node': 24.0.14 + '@types/node': 24.1.0 fsevents: 2.3.3 tsx: 4.20.3 - vitepress@1.6.3(@algolia/client-search@5.23.2)(@types/node@24.0.14)(axios@1.10.0)(jwt-decode@4.0.0)(postcss@8.5.6)(typescript@5.8.3): + vitepress@1.6.3(@algolia/client-search@5.23.2)(@types/node@24.1.0)(axios@1.10.0)(jwt-decode@4.0.0)(postcss@8.5.6)(typescript@5.8.3): dependencies: '@docsearch/css': 3.8.2 '@docsearch/js': 3.8.2(@algolia/client-search@5.23.2) @@ -10191,7 +9967,7 @@ snapshots: '@shikijs/transformers': 2.5.0 '@shikijs/types': 2.5.0 '@types/markdown-it': 14.1.2 - '@vitejs/plugin-vue': 5.2.3(vite@5.4.19(@types/node@24.0.14))(vue@3.5.13(typescript@5.8.3)) + '@vitejs/plugin-vue': 5.2.3(vite@5.4.19(@types/node@24.1.0))(vue@3.5.13(typescript@5.8.3)) '@vue/devtools-api': 7.7.2 '@vue/shared': 3.5.13 '@vueuse/core': 12.8.2(typescript@5.8.3) @@ -10200,7 +9976,7 @@ snapshots: mark.js: 8.11.1 minisearch: 7.1.2 shiki: 2.5.0 - vite: 5.4.19(@types/node@24.0.14) + vite: 5.4.19(@types/node@24.1.0) vue: 3.5.13(typescript@5.8.3) optionalDependencies: postcss: 8.5.6 @@ -10231,34 +10007,34 @@ snapshots: - typescript - universal-cookie - vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.0.14)(jsdom@26.0.0)(tsx@4.20.3): + vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.1.0)(jsdom@26.0.0)(tsx@4.20.3): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.0.4(@types/node@24.0.14)(tsx@4.20.3)) + '@vitest/mocker': 3.2.4(vite@7.0.6(@types/node@24.1.0)(tsx@4.20.3)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 '@vitest/spy': 3.2.4 '@vitest/utils': 3.2.4 - chai: 5.2.1 + chai: 5.2.0 debug: 4.4.1(supports-color@8.1.1) - expect-type: 1.2.2 + expect-type: 1.2.1 magic-string: 0.30.17 pathe: 2.0.3 - picomatch: 4.0.3 + picomatch: 4.0.2 std-env: 3.9.0 tinybench: 2.9.0 tinyexec: 0.3.2 tinyglobby: 0.2.14 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.0.4(@types/node@24.0.14)(tsx@4.20.3) - vite-node: 3.2.4(@types/node@24.0.14)(tsx@4.20.3) + vite: 7.0.6(@types/node@24.1.0)(tsx@4.20.3) + vite-node: 3.2.4(@types/node@24.1.0)(tsx@4.20.3) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 - '@types/node': 24.0.14 + '@types/node': 24.1.0 jsdom: 26.0.0 transitivePeerDependencies: - jiti @@ -10359,7 +10135,7 @@ snapshots: word-wrap@1.2.5: {} - workerpool@9.3.3: {} + workerpool@9.3.2: {} wrap-ansi@7.0.0: dependencies: diff --git a/settings.json.docker b/settings.json.docker index 6b4b32426..49126a96d 100644 --- a/settings.json.docker +++ b/settings.json.docker @@ -171,6 +171,14 @@ */ "showSettingsInAdminPage": "${SHOW_SETTINGS_IN_ADMIN_PAGE:true}", + /* + * Enable/disable the metrics endpoint. + * + * This is used by the monitoring plugins to collect metrics about Etherpad. + * If you do not use any monitoring plugins, you can disable this. + */ + "enableMetrics": ${ENABLE_METRICS:true}, + /* * Settings for cleanup of pads */ diff --git a/settings.json.template b/settings.json.template index e6293d87f..b9de2fbec 100644 --- a/settings.json.template +++ b/settings.json.template @@ -162,6 +162,14 @@ */ "showSettingsInAdminPage": true, + /* + * Enable/disable the metrics endpoint. + * + * This is used by the monitoring plugins to collect metrics about Etherpad. + * If you do not use any monitoring plugins, you can disable this. + */ + "enableMetrics": ${ENABLE_METRICS:true}, + /* * Settings for cleanup of pads */ diff --git a/src/node/hooks/express.ts b/src/node/hooks/express.ts index d4e92dd35..09097edb1 100644 --- a/src/node/hooks/express.ts +++ b/src/node/hooks/express.ts @@ -234,7 +234,7 @@ exports.restartServer = async () => { // Give plugins an opportunity to install handlers/middleware before the express-session // middleware. This allows plugins to avoid creating an express-session record in the database // when it is not needed (e.g., public static content). - await hooks.aCallAll('expressPreSession', {app}); + await hooks.aCallAll('expressPreSession', {app, settings}); app.use(exports.sessionMiddleware); app.use(webaccess.checkAccess); diff --git a/src/node/hooks/express/adminplugins.ts b/src/node/hooks/express/adminplugins.ts index 178e6187f..47f06c513 100644 --- a/src/node/hooks/express/adminplugins.ts +++ b/src/node/hooks/express/adminplugins.ts @@ -39,6 +39,11 @@ exports.socketio = (hookName:string, args:ArgsExpressType, cb:Function) => { }) } + socket.on('getStats', ()=>{ + console.log("Getting stats for admin plugins"); + socket.emit('results:stats', require('../../stats').toJSON()); + }) + socket.on('getInstalled', async (query: string) => { // send currently installed plugins const installed = @@ -53,6 +58,7 @@ exports.socketio = (hookName:string, args:ArgsExpressType, cb:Function) => { socket.emit('results:installed', {installed}); }); + socket.on('checkUpdates', async () => { // Check plugins for updates try { diff --git a/src/node/hooks/express/specialpages.ts b/src/node/hooks/express/specialpages.ts index dca63b9ae..4184789d3 100644 --- a/src/node/hooks/express/specialpages.ts +++ b/src/node/hooks/express/specialpages.ts @@ -20,7 +20,7 @@ exports.socketio = (hookName: string, {io}: any) => { } -exports.expressPreSession = async (hookName:string, {app}:ArgsExpressType) => { +exports.expressPreSession = async (hookName:string, {app, settings}:ArgsExpressType) => { // This endpoint is intended to conform to: // https://www.ietf.org/archive/id/draft-inadarei-api-health-check-06.html app.get('/health', (req:any, res:any) => { @@ -31,9 +31,12 @@ exports.expressPreSession = async (hookName:string, {app}:ArgsExpressType) => { }); }); - app.get('/stats', (req:any, res:any) => { - res.json(require('../../stats').toJSON()); - }); + if (settings.enableMetrics) { + app.get('/stats', (req:any, res:any) => { + res.json(require('../../stats').toJSON()); + }); + } + app.get('/javascript', (req:any, res:any) => { res.send(eejs.require('ep_etherpad-lite/templates/javascript.html', {req})); diff --git a/src/node/types/ArgsExpressType.ts b/src/node/types/ArgsExpressType.ts index d8dc700be..cc409c033 100644 --- a/src/node/types/ArgsExpressType.ts +++ b/src/node/types/ArgsExpressType.ts @@ -1,7 +1,9 @@ import {Express} from "express"; +import {MapArrayType} from "./MapType"; export type ArgsExpressType = { app:Express, io: any, server:any + settings: MapArrayType } diff --git a/src/node/utils/Settings.ts b/src/node/utils/Settings.ts index 4d7b421e1..bfadd2f8c 100644 --- a/src/node/utils/Settings.ts +++ b/src/node/utils/Settings.ts @@ -205,6 +205,12 @@ exports.padOptions = { lang: null, }; + +/** + * Wether to enable the /stats endpoint. The functionality in the admin menu is untouched for this. + */ +exports.enableMetrics = true + /** * Whether certain shortcut keys are enabled for a user in the pad */ From cd5a0227dcc345669c8ccf4771bd4dceced54d5e Mon Sep 17 00:00:00 2001 From: SamTV12345 <40429738+samtv12345@users.noreply.github.com> Date: Sun, 27 Jul 2025 22:00:09 +0200 Subject: [PATCH 16/51] feat: fixed templates --- settings.json.docker | 2 +- settings.json.template | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/settings.json.docker b/settings.json.docker index 49126a96d..c335bcc07 100644 --- a/settings.json.docker +++ b/settings.json.docker @@ -177,7 +177,7 @@ * This is used by the monitoring plugins to collect metrics about Etherpad. * If you do not use any monitoring plugins, you can disable this. */ - "enableMetrics": ${ENABLE_METRICS:true}, + "enableMetrics": "${ENABLE_METRICS:true}", /* * Settings for cleanup of pads diff --git a/settings.json.template b/settings.json.template index b9de2fbec..8a2b72dd9 100644 --- a/settings.json.template +++ b/settings.json.template @@ -168,7 +168,7 @@ * This is used by the monitoring plugins to collect metrics about Etherpad. * If you do not use any monitoring plugins, you can disable this. */ - "enableMetrics": ${ENABLE_METRICS:true}, + "enableMetrics": "${ENABLE_METRICS:true}", /* * Settings for cleanup of pads From 6378e1ccf9d138e6cbd87e3b2330ba6a11146c60 Mon Sep 17 00:00:00 2001 From: SamTV12345 <40429738+samtv12345@users.noreply.github.com> Date: Sun, 27 Jul 2025 22:02:39 +0200 Subject: [PATCH 17/51] feat: fixed admin tests --- src/tests/frontend-new/admin-spec/adminupdateplugins.spec.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/tests/frontend-new/admin-spec/adminupdateplugins.spec.ts b/src/tests/frontend-new/admin-spec/adminupdateplugins.spec.ts index 214202350..5b5b87d65 100644 --- a/src/tests/frontend-new/admin-spec/adminupdateplugins.spec.ts +++ b/src/tests/frontend-new/admin-spec/adminupdateplugins.spec.ts @@ -13,7 +13,6 @@ test.describe('Plugins page', ()=> { await page.waitForSelector('.search-field'); const pluginTable = page.locator('table tbody').nth(1); await expect(pluginTable).not.toBeEmpty() - await expect(pluginTable.locator('tr')).toHaveCount(190) }) test('Searches for a plugin', async ({page}) => { @@ -33,8 +32,6 @@ test.describe('Plugins page', ()=> { await expect(pluginTable).not.toBeEmpty({ timeout: 15000 }) - const plugins = await pluginTable.locator('tr').count() - await expect(pluginTable.locator('tr')).toHaveCount(190) // Now everything is loaded, lets install a plugin From 96ff4276e02fe71c8b5eb9c7c33d8ca13685d64d Mon Sep 17 00:00:00 2001 From: SamTV12345 <40429738+samtv12345@users.noreply.github.com> Date: Sun, 27 Jul 2025 22:04:59 +0200 Subject: [PATCH 18/51] feat: fixed upgrade yml --- .github/workflows/backend-tests.yml | 8 ++++---- .github/workflows/build-and-deploy-docs.yml | 2 +- .github/workflows/docker.yml | 2 +- .github/workflows/frontend-admin-tests.yml | 2 +- .github/workflows/frontend-tests.yml | 6 +++--- .github/workflows/load-test.yml | 6 +++--- .github/workflows/perform-type-check.yml | 2 +- .github/workflows/rate-limit.yml | 2 +- .github/workflows/upgrade-from-latest-release.yml | 2 +- .github/workflows/windows.yml | 2 +- bin/plugins/lib/backend-tests.yml | 2 +- bin/plugins/lib/frontend-tests.yml | 2 +- bin/plugins/lib/npmpublish.yml | 2 +- 13 files changed, 20 insertions(+), 20 deletions(-) diff --git a/.github/workflows/backend-tests.yml b/.github/workflows/backend-tests.yml index 553dd5f66..a1d8be074 100644 --- a/.github/workflows/backend-tests.yml +++ b/.github/workflows/backend-tests.yml @@ -36,7 +36,7 @@ jobs: - uses: pnpm/action-setup@v4 name: Install pnpm with: - version: 9.0.4 + version: 10 run_install: false - name: Get pnpm store directory shell: bash @@ -96,7 +96,7 @@ jobs: - uses: pnpm/action-setup@v4 name: Install pnpm with: - version: 9.0.4 + version: 10 run_install: false - name: Get pnpm store directory shell: bash @@ -168,7 +168,7 @@ jobs: - uses: pnpm/action-setup@v4 name: Install pnpm with: - version: 9.0.4 + version: 10 run_install: false - name: Get pnpm store directory shell: bash @@ -225,7 +225,7 @@ jobs: - uses: pnpm/action-setup@v4 name: Install pnpm with: - version: 9.0.4 + version: 10 run_install: false - name: Get pnpm store directory shell: bash diff --git a/.github/workflows/build-and-deploy-docs.yml b/.github/workflows/build-and-deploy-docs.yml index 3134de22a..eab0eec43 100644 --- a/.github/workflows/build-and-deploy-docs.yml +++ b/.github/workflows/build-and-deploy-docs.yml @@ -38,7 +38,7 @@ jobs: - uses: pnpm/action-setup@v4 name: Install pnpm with: - version: 9.0.4 + version: 10 run_install: false - name: Get pnpm store directory shell: bash diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 313d48fc6..81be50e4f 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -50,7 +50,7 @@ jobs: - uses: pnpm/action-setup@v4 name: Install pnpm with: - version: 9.0.4 + version: 10 run_install: false - name: Get pnpm store directory shell: bash diff --git a/.github/workflows/frontend-admin-tests.yml b/.github/workflows/frontend-admin-tests.yml index 4963fac24..94f790efa 100644 --- a/.github/workflows/frontend-admin-tests.yml +++ b/.github/workflows/frontend-admin-tests.yml @@ -36,7 +36,7 @@ jobs: - uses: pnpm/action-setup@v4 name: Install pnpm with: - version: 9.0.4 + version: 10 run_install: false - name: Get pnpm store directory shell: bash diff --git a/.github/workflows/frontend-tests.yml b/.github/workflows/frontend-tests.yml index c11058b24..d6238ed1f 100644 --- a/.github/workflows/frontend-tests.yml +++ b/.github/workflows/frontend-tests.yml @@ -30,7 +30,7 @@ jobs: - uses: pnpm/action-setup@v4 name: Install pnpm with: - version: 9.0.4 + version: 10 run_install: false - name: Get pnpm store directory shell: bash @@ -103,7 +103,7 @@ jobs: - uses: pnpm/action-setup@v4 name: Install pnpm with: - version: 9.0.4 + version: 10 run_install: false - name: Get pnpm store directory shell: bash @@ -184,7 +184,7 @@ jobs: - uses: pnpm/action-setup@v4 name: Install pnpm with: - version: 9.0.4 + version: 10 run_install: false - name: Get pnpm store directory shell: bash diff --git a/.github/workflows/load-test.yml b/.github/workflows/load-test.yml index 50847cd9a..16a783b18 100644 --- a/.github/workflows/load-test.yml +++ b/.github/workflows/load-test.yml @@ -32,7 +32,7 @@ jobs: - uses: pnpm/action-setup@v4 name: Install pnpm with: - version: 9.0.4 + version: 10 run_install: false - name: Get pnpm store directory shell: bash @@ -76,7 +76,7 @@ jobs: - uses: pnpm/action-setup@v4 name: Install pnpm with: - version: 9.0.4 + version: 10 run_install: false - name: Get pnpm store directory shell: bash @@ -147,7 +147,7 @@ jobs: - uses: pnpm/action-setup@v4 name: Install pnpm with: - version: 9.0.4 + version: 10 run_install: false - name: Get pnpm store directory shell: bash diff --git a/.github/workflows/perform-type-check.yml b/.github/workflows/perform-type-check.yml index ba35dec32..fb5f6d3c8 100644 --- a/.github/workflows/perform-type-check.yml +++ b/.github/workflows/perform-type-check.yml @@ -29,7 +29,7 @@ jobs: - uses: pnpm/action-setup@v4 name: Install pnpm with: - version: 9.0.4 + version: 10 run_install: false - name: Get pnpm store directory shell: bash diff --git a/.github/workflows/rate-limit.yml b/.github/workflows/rate-limit.yml index 003a10000..3b3417864 100644 --- a/.github/workflows/rate-limit.yml +++ b/.github/workflows/rate-limit.yml @@ -32,7 +32,7 @@ jobs: - uses: pnpm/action-setup@v4 name: Install pnpm with: - version: 9.0.4 + version: 10 run_install: false - name: Get pnpm store directory shell: bash diff --git a/.github/workflows/upgrade-from-latest-release.yml b/.github/workflows/upgrade-from-latest-release.yml index 4c562f147..66df392ef 100644 --- a/.github/workflows/upgrade-from-latest-release.yml +++ b/.github/workflows/upgrade-from-latest-release.yml @@ -38,7 +38,7 @@ jobs: - uses: pnpm/action-setup@v4 name: Install pnpm with: - version: 9.0.4 + version: 10 run_install: false - name: Only install direct dependencies run: pnpm config set auto-install-peers false diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index c0ce8b8bd..3b56b8452 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -39,7 +39,7 @@ jobs: - uses: pnpm/action-setup@v4 name: Install pnpm with: - version: 9.0.4 + version: 10 run_install: false - name: Get pnpm store directory shell: bash diff --git a/bin/plugins/lib/backend-tests.yml b/bin/plugins/lib/backend-tests.yml index 79ffc6f88..e38c2e902 100644 --- a/bin/plugins/lib/backend-tests.yml +++ b/bin/plugins/lib/backend-tests.yml @@ -29,7 +29,7 @@ jobs: - uses: pnpm/action-setup@v3 name: Install pnpm with: - version: 8 + version: 10 run_install: false - name: Get pnpm store directory shell: bash diff --git a/bin/plugins/lib/frontend-tests.yml b/bin/plugins/lib/frontend-tests.yml index 053ce180d..ca9ca965c 100644 --- a/bin/plugins/lib/frontend-tests.yml +++ b/bin/plugins/lib/frontend-tests.yml @@ -18,7 +18,7 @@ jobs: - uses: pnpm/action-setup@v3 name: Install pnpm with: - version: 8 + version: 10 run_install: false - name: Get pnpm store directory shell: bash diff --git a/bin/plugins/lib/npmpublish.yml b/bin/plugins/lib/npmpublish.yml index 6c2712cc4..efa341c2c 100644 --- a/bin/plugins/lib/npmpublish.yml +++ b/bin/plugins/lib/npmpublish.yml @@ -21,7 +21,7 @@ jobs: - uses: pnpm/action-setup@v3 name: Install pnpm with: - version: 8 + version: 10 run_install: false - name: Get pnpm store directory shell: bash From 5142d46ddde4cebdf93faf7f3a959a08af03701b Mon Sep 17 00:00:00 2001 From: SamTV12345 <40429738+samtv12345@users.noreply.github.com> Date: Sun, 27 Jul 2025 22:20:05 +0200 Subject: [PATCH 19/51] feat: fixed indentation test --- src/tests/frontend-new/specs/indentation.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tests/frontend-new/specs/indentation.spec.ts b/src/tests/frontend-new/specs/indentation.spec.ts index 3e94dbad3..1979a095d 100644 --- a/src/tests/frontend-new/specs/indentation.spec.ts +++ b/src/tests/frontend-new/specs/indentation.spec.ts @@ -38,7 +38,7 @@ test.describe('indentation button', function () { await page.locator('.buttonicon-indent').click() // type a bit, make a line break and type again - await padBody.locator('div').first().focus() + await padBody.focus() await page.keyboard.type('line 1') await page.keyboard.press('Enter'); await page.keyboard.type('line 2') From 94ff30d86d878cfc3c7c7cdaa4b50d39dd3e89b4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 27 Jul 2025 20:45:15 +0000 Subject: [PATCH 20/51] Bump jsdom from 26.0.0 to 26.1.0 Bumps [jsdom](https://github.com/jsdom/jsdom) from 26.0.0 to 26.1.0. - [Release notes](https://github.com/jsdom/jsdom/releases) - [Changelog](https://github.com/jsdom/jsdom/blob/main/Changelog.md) - [Commits](https://github.com/jsdom/jsdom/compare/26.0.0...26.1.0) --- updated-dependencies: - dependency-name: jsdom dependency-version: 26.1.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pnpm-lock.yaml | 177 ++++++++++++++++++++++++----------------------- src/package.json | 2 +- 2 files changed, 93 insertions(+), 86 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b743bee5a..d287014ba 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -189,8 +189,8 @@ importers: specifier: ^3.0.5 version: 3.0.5 jsdom: - specifier: ^26.0.0 - version: 26.0.0 + specifier: ^26.1.0 + version: 26.1.0 jsonminify: specifier: 0.4.2 version: 0.4.2 @@ -380,7 +380,7 @@ importers: version: 5.8.3 vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.1.0)(jsdom@26.0.0)(tsx@4.20.3) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.1.0)(jsdom@26.1.0)(tsx@4.20.3) ui: devDependencies: @@ -476,8 +476,8 @@ packages: resolution: {integrity: sha512-60vepv88RwcJtSHrD6MjIL6Ta3SOYbgfnkHb+ppAVK+o9mXprRtulx7VlRl3lN3bbvysAfCS7WMVfhUYemB0IQ==} engines: {node: '>= 16'} - '@asamuzakjp/css-color@3.1.1': - resolution: {integrity: sha512-hpRD68SV2OMcZCsrbdkccTw5FXjNDLo5OuqSHyHZfwweGsDWZwDJ2+gONyNAbazZclobMirACLw0lk8WVxIqxA==} + '@asamuzakjp/css-color@3.2.0': + resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==} '@babel/code-frame@7.26.2': resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} @@ -550,28 +550,28 @@ packages: resolution: {integrity: sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==} engines: {node: '>=18'} - '@csstools/css-calc@2.1.2': - resolution: {integrity: sha512-TklMyb3uBB28b5uQdxjReG4L80NxAqgrECqLZFQbyLekwwlcDDS8r3f07DKqeo8C4926Br0gf/ZDe17Zv4wIuw==} + '@csstools/css-calc@2.1.4': + resolution: {integrity: sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==} engines: {node: '>=18'} peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.4 - '@csstools/css-tokenizer': ^3.0.3 + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 - '@csstools/css-color-parser@3.0.8': - resolution: {integrity: sha512-pdwotQjCCnRPuNi06jFuP68cykU1f3ZWExLe/8MQ1LOs8Xq+fTkYgd+2V8mWUWMrOn9iS2HftPVaMZDaXzGbhQ==} + '@csstools/css-color-parser@3.0.10': + resolution: {integrity: sha512-TiJ5Ajr6WRd1r8HSiwJvZBiJOqtH86aHpUjq5aEKWHiII2Qfjqd/HCWKPOW8EP4vcspXbHnXrwIDlu5savQipg==} engines: {node: '>=18'} peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.4 - '@csstools/css-tokenizer': ^3.0.3 + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 - '@csstools/css-parser-algorithms@3.0.4': - resolution: {integrity: sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==} + '@csstools/css-parser-algorithms@3.0.5': + resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} engines: {node: '>=18'} peerDependencies: - '@csstools/css-tokenizer': ^3.0.3 + '@csstools/css-tokenizer': ^3.0.4 - '@csstools/css-tokenizer@3.0.3': - resolution: {integrity: sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==} + '@csstools/css-tokenizer@3.0.4': + resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} engines: {node: '>=18'} '@docsearch/css@3.8.2': @@ -2111,6 +2111,10 @@ packages: resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} engines: {node: '>= 14'} + agent-base@7.1.4: + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} + engines: {node: '>= 14'} + ajv-formats@2.1.1: resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} peerDependencies: @@ -2433,8 +2437,8 @@ packages: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} - cssstyle@4.3.0: - resolution: {integrity: sha512-6r0NiY0xizYqfBvWp1G7WXJ06/bZyrk7Dc6PHql82C/pKGUTKu4yAX4Y8JPamb1ob9nBKuxWzCGTRuGwU3yxJQ==} + cssstyle@4.6.0: + resolution: {integrity: sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==} engines: {node: '>=18'} csstype@3.1.3: @@ -2511,8 +2515,8 @@ packages: resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} engines: {node: '>=10'} - decimal.js@10.5.0: - resolution: {integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==} + decimal.js@10.6.0: + resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} deep-eql@5.0.2: resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} @@ -2639,6 +2643,10 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} + entities@6.0.1: + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} + engines: {node: '>=0.12'} + error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} @@ -2999,10 +3007,6 @@ packages: resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} - form-data@4.0.2: - resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==} - engines: {node: '>= 6'} - form-data@4.0.3: resolution: {integrity: sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==} engines: {node: '>= 6'} @@ -3457,8 +3461,8 @@ packages: jsbn@1.1.0: resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} - jsdom@26.0.0: - resolution: {integrity: sha512-BZYDGVAIriBWTpIxYzrXjv3E/4u8+/pSG5bQdIYCbNCGOvsPkDQfTVLAIXAf9ETdCpduCVTkDe2NNZ8NIwUVzw==} + jsdom@26.1.0: + resolution: {integrity: sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==} engines: {node: '>=18'} peerDependencies: canvas: ^3.0.0 @@ -3818,8 +3822,8 @@ packages: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - nwsapi@2.2.20: - resolution: {integrity: sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==} + nwsapi@2.2.21: + resolution: {integrity: sha512-o6nIY3qwiSXl7/LuOU0Dmuctd34Yay0yeuZRLFmDPrrdHpXKFndPj3hM+YEPVHYC5fx2otBx4Ilc/gyYSAUaIA==} object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} @@ -3928,6 +3932,9 @@ packages: parse5@7.2.1: resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==} + parse5@7.3.0: + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} @@ -4600,11 +4607,11 @@ packages: resolution: {integrity: sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==} engines: {node: '>=14.0.0'} - tldts-core@6.1.85: - resolution: {integrity: sha512-DTjUVvxckL1fIoPSb3KE7ISNtkWSawZdpfxGxwiIrZoO6EbHVDXXUIlIuWympPaeS+BLGyggozX/HTMsRAdsoA==} + tldts-core@6.1.86: + resolution: {integrity: sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==} - tldts@6.1.85: - resolution: {integrity: sha512-gBdZ1RjCSevRPFix/hpaUWeak2/RNUZB4/8frF1r5uYMHjFptkiT0JXIebWvgI/0ZHXvxaUDDJshiA0j6GdL3w==} + tldts@6.1.86: + resolution: {integrity: sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==} hasBin: true to-regex-range@5.0.1: @@ -4619,8 +4626,8 @@ packages: resolution: {integrity: sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==} engines: {node: '>=16'} - tr46@5.1.0: - resolution: {integrity: sha512-IUWnUK7ADYR5Sl1fZlO1INDUhVhatWl7BtJWsIhwJ0UAK7ilzzIa8uIqOO/aYVWHZPJkKbEL+362wrzoeRF7bw==} + tr46@5.1.1: + resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} engines: {node: '>=18'} trim-lines@3.0.1: @@ -5027,8 +5034,8 @@ packages: utf-8-validate: optional: true - ws@8.18.1: - resolution: {integrity: sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==} + ws@8.18.3: + resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -5223,12 +5230,12 @@ snapshots: '@types/json-schema': 7.0.15 js-yaml: 4.1.0 - '@asamuzakjp/css-color@3.1.1': + '@asamuzakjp/css-color@3.2.0': dependencies: - '@csstools/css-calc': 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-color-parser': 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 lru-cache: 10.4.3 '@babel/code-frame@7.26.2': @@ -5333,23 +5340,23 @@ snapshots: '@csstools/color-helpers@5.0.2': {} - '@csstools/css-calc@2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': dependencies: - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 - '@csstools/css-color-parser@3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + '@csstools/css-color-parser@3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': dependencies: '@csstools/color-helpers': 5.0.2 - '@csstools/css-calc': 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 - '@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3)': + '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)': dependencies: - '@csstools/css-tokenizer': 3.0.3 + '@csstools/css-tokenizer': 3.0.4 - '@csstools/css-tokenizer@3.0.3': {} + '@csstools/css-tokenizer@3.0.4': {} '@docsearch/css@3.8.2': {} @@ -6772,6 +6779,8 @@ snapshots: agent-base@7.1.3: {} + agent-base@7.1.4: {} + ajv-formats@2.1.1(ajv@8.17.1): optionalDependencies: ajv: 8.17.1 @@ -7119,9 +7128,9 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - cssstyle@4.3.0: + cssstyle@4.6.0: dependencies: - '@asamuzakjp/css-color': 3.1.1 + '@asamuzakjp/css-color': 3.2.0 rrweb-cssom: 0.8.0 csstype@3.1.3: {} @@ -7177,7 +7186,7 @@ snapshots: decamelize@4.0.0: {} - decimal.js@10.5.0: {} + decimal.js@10.6.0: {} deep-eql@5.0.2: {} @@ -7305,6 +7314,8 @@ snapshots: entities@4.5.0: {} + entities@6.0.1: {} + error-ex@1.3.2: dependencies: is-arrayish: 0.2.1 @@ -7840,13 +7851,6 @@ snapshots: cross-spawn: 7.0.6 signal-exit: 4.1.0 - form-data@4.0.2: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - es-set-tostringtag: 2.1.0 - mime-types: 2.1.35 - form-data@4.0.3: dependencies: asynckit: 0.4.0 @@ -8044,7 +8048,7 @@ snapshots: '@types/hast': 3.0.4 devlop: 1.1.0 hast-util-from-parse5: 8.0.3 - parse5: 7.2.1 + parse5: 7.3.0 vfile: 6.0.3 vfile-message: 4.0.2 @@ -8138,14 +8142,14 @@ snapshots: http-proxy-agent@7.0.2: dependencies: - agent-base: 7.1.3 + agent-base: 7.1.4 debug: 4.4.1(supports-color@8.1.1) transitivePeerDependencies: - supports-color https-proxy-agent@7.0.6: dependencies: - agent-base: 7.1.3 + agent-base: 7.1.4 debug: 4.4.1(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -8362,18 +8366,17 @@ snapshots: jsbn@1.1.0: {} - jsdom@26.0.0: + jsdom@26.1.0: dependencies: - cssstyle: 4.3.0 + cssstyle: 4.6.0 data-urls: 5.0.0 - decimal.js: 10.5.0 - form-data: 4.0.2 + decimal.js: 10.6.0 html-encoding-sniffer: 4.0.0 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.20 - parse5: 7.2.1 + nwsapi: 2.2.21 + parse5: 7.3.0 rrweb-cssom: 0.8.0 saxes: 6.0.0 symbol-tree: 3.2.4 @@ -8383,7 +8386,7 @@ snapshots: whatwg-encoding: 3.1.1 whatwg-mimetype: 4.0.0 whatwg-url: 14.2.0 - ws: 8.18.1 + ws: 8.18.3 xml-name-validator: 5.0.0 transitivePeerDependencies: - bufferutil @@ -8756,7 +8759,7 @@ snapshots: normalize-path@3.0.0: {} - nwsapi@2.2.20: {} + nwsapi@2.2.21: {} object-assign@4.1.1: {} @@ -8885,7 +8888,7 @@ snapshots: pac-proxy-agent@7.2.0: dependencies: '@tootallnate/quickjs-emscripten': 0.23.0 - agent-base: 7.1.3 + agent-base: 7.1.4 debug: 4.4.1(supports-color@8.1.1) get-uri: 6.0.4 http-proxy-agent: 7.0.2 @@ -8917,6 +8920,10 @@ snapshots: dependencies: entities: 4.5.0 + parse5@7.3.0: + dependencies: + entities: 6.0.1 + parseurl@1.3.3: {} path-exists@4.0.0: {} @@ -9460,7 +9467,7 @@ snapshots: socks-proxy-agent@8.0.5: dependencies: - agent-base: 7.1.3 + agent-base: 7.1.4 debug: 4.4.1(supports-color@8.1.1) socks: 2.8.5 transitivePeerDependencies: @@ -9667,11 +9674,11 @@ snapshots: tinyspy@4.0.3: {} - tldts-core@6.1.85: {} + tldts-core@6.1.86: {} - tldts@6.1.85: + tldts@6.1.86: dependencies: - tldts-core: 6.1.85 + tldts-core: 6.1.86 to-regex-range@5.0.1: dependencies: @@ -9681,9 +9688,9 @@ snapshots: tough-cookie@5.1.2: dependencies: - tldts: 6.1.85 + tldts: 6.1.86 - tr46@5.1.0: + tr46@5.1.1: dependencies: punycode: 2.3.1 @@ -10007,7 +10014,7 @@ snapshots: - typescript - universal-cookie - vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.1.0)(jsdom@26.0.0)(tsx@4.20.3): + vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.1.0)(jsdom@26.1.0)(tsx@4.20.3): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 @@ -10035,7 +10042,7 @@ snapshots: optionalDependencies: '@types/debug': 4.1.12 '@types/node': 24.1.0 - jsdom: 26.0.0 + jsdom: 26.1.0 transitivePeerDependencies: - jiti - less @@ -10080,7 +10087,7 @@ snapshots: whatwg-url@14.2.0: dependencies: - tr46: 5.1.0 + tr46: 5.1.1 webidl-conversions: 7.0.0 which-boxed-primitive@1.1.1: @@ -10153,7 +10160,7 @@ snapshots: ws@8.17.1: {} - ws@8.18.1: {} + ws@8.18.3: {} wtfnode@0.10.0: {} diff --git a/src/package.json b/src/package.json index d0cef60f0..1e11ba6b8 100644 --- a/src/package.json +++ b/src/package.json @@ -46,7 +46,7 @@ "http-errors": "^2.0.0", "jose": "^5.10.0", "js-cookie": "^3.0.5", - "jsdom": "^26.0.0", + "jsdom": "^26.1.0", "jsonminify": "0.4.2", "jsonwebtoken": "^9.0.2", "jwt-decode": "^4.0.0", From bc5237518e167dabbb0b7045eb2a7e56f98eaaf3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 27 Jul 2025 20:28:27 +0000 Subject: [PATCH 21/51] build(deps): bump esbuild from 0.25.5 to 0.25.6 Bumps [esbuild](https://github.com/evanw/esbuild) from 0.25.5 to 0.25.6. - [Release notes](https://github.com/evanw/esbuild/releases) - [Changelog](https://github.com/evanw/esbuild/blob/main/CHANGELOG.md) - [Commits](https://github.com/evanw/esbuild/compare/v0.25.5...v0.25.6) --- updated-dependencies: - dependency-name: esbuild dependency-version: 0.25.6 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pnpm-lock.yaml | 272 ++++++++++++++++++++++++++++++++++++++++++++++- src/package.json | 2 +- 2 files changed, 271 insertions(+), 3 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d287014ba..af5657b7f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -162,8 +162,8 @@ importers: specifier: ^3.1.10 version: 3.1.10 esbuild: - specifier: ^0.25.5 - version: 0.25.5 + specifier: ^0.25.8 + version: 0.25.8 express: specifier: 4.21.2 version: 4.21.2 @@ -618,6 +618,12 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.25.8': + resolution: {integrity: sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.21.5': resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} engines: {node: '>=12'} @@ -630,6 +636,12 @@ packages: cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.25.8': + resolution: {integrity: sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.21.5': resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} engines: {node: '>=12'} @@ -642,6 +654,12 @@ packages: cpu: [arm] os: [android] + '@esbuild/android-arm@0.25.8': + resolution: {integrity: sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.21.5': resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} engines: {node: '>=12'} @@ -654,6 +672,12 @@ packages: cpu: [x64] os: [android] + '@esbuild/android-x64@0.25.8': + resolution: {integrity: sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.21.5': resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} engines: {node: '>=12'} @@ -666,6 +690,12 @@ packages: cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.25.8': + resolution: {integrity: sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.21.5': resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} engines: {node: '>=12'} @@ -678,6 +708,12 @@ packages: cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.25.8': + resolution: {integrity: sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.21.5': resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} engines: {node: '>=12'} @@ -690,6 +726,12 @@ packages: cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.25.8': + resolution: {integrity: sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.21.5': resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} engines: {node: '>=12'} @@ -702,6 +744,12 @@ packages: cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.25.8': + resolution: {integrity: sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.21.5': resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} engines: {node: '>=12'} @@ -714,6 +762,12 @@ packages: cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.25.8': + resolution: {integrity: sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.21.5': resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} engines: {node: '>=12'} @@ -726,6 +780,12 @@ packages: cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.25.8': + resolution: {integrity: sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.21.5': resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} engines: {node: '>=12'} @@ -738,6 +798,12 @@ packages: cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.25.8': + resolution: {integrity: sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.21.5': resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} engines: {node: '>=12'} @@ -750,6 +816,12 @@ packages: cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.25.8': + resolution: {integrity: sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.21.5': resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} engines: {node: '>=12'} @@ -762,6 +834,12 @@ packages: cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.25.8': + resolution: {integrity: sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.21.5': resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} engines: {node: '>=12'} @@ -774,6 +852,12 @@ packages: cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.25.8': + resolution: {integrity: sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.21.5': resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} engines: {node: '>=12'} @@ -786,6 +870,12 @@ packages: cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.25.8': + resolution: {integrity: sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.21.5': resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} engines: {node: '>=12'} @@ -798,6 +888,12 @@ packages: cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.25.8': + resolution: {integrity: sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.21.5': resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} engines: {node: '>=12'} @@ -810,12 +906,24 @@ packages: cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.25.8': + resolution: {integrity: sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + '@esbuild/netbsd-arm64@0.25.5': resolution: {integrity: sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] + '@esbuild/netbsd-arm64@0.25.8': + resolution: {integrity: sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + '@esbuild/netbsd-x64@0.21.5': resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} engines: {node: '>=12'} @@ -828,12 +936,24 @@ packages: cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.25.8': + resolution: {integrity: sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + '@esbuild/openbsd-arm64@0.25.5': resolution: {integrity: sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] + '@esbuild/openbsd-arm64@0.25.8': + resolution: {integrity: sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-x64@0.21.5': resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} engines: {node: '>=12'} @@ -846,6 +966,18 @@ packages: cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.25.8': + resolution: {integrity: sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.25.8': + resolution: {integrity: sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + '@esbuild/sunos-x64@0.21.5': resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} engines: {node: '>=12'} @@ -858,6 +990,12 @@ packages: cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.25.8': + resolution: {integrity: sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.21.5': resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} engines: {node: '>=12'} @@ -870,6 +1008,12 @@ packages: cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.25.8': + resolution: {integrity: sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.21.5': resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} engines: {node: '>=12'} @@ -882,6 +1026,12 @@ packages: cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.25.8': + resolution: {integrity: sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.21.5': resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} engines: {node: '>=12'} @@ -894,6 +1044,12 @@ packages: cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.25.8': + resolution: {integrity: sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-utils@4.7.0': resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2691,6 +2847,11 @@ packages: engines: {node: '>=18'} hasBin: true + esbuild@0.25.8: + resolution: {integrity: sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==} + engines: {node: '>=18'} + hasBin: true + escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -5402,144 +5563,222 @@ snapshots: '@esbuild/aix-ppc64@0.25.5': optional: true + '@esbuild/aix-ppc64@0.25.8': + optional: true + '@esbuild/android-arm64@0.21.5': optional: true '@esbuild/android-arm64@0.25.5': optional: true + '@esbuild/android-arm64@0.25.8': + optional: true + '@esbuild/android-arm@0.21.5': optional: true '@esbuild/android-arm@0.25.5': optional: true + '@esbuild/android-arm@0.25.8': + optional: true + '@esbuild/android-x64@0.21.5': optional: true '@esbuild/android-x64@0.25.5': optional: true + '@esbuild/android-x64@0.25.8': + optional: true + '@esbuild/darwin-arm64@0.21.5': optional: true '@esbuild/darwin-arm64@0.25.5': optional: true + '@esbuild/darwin-arm64@0.25.8': + optional: true + '@esbuild/darwin-x64@0.21.5': optional: true '@esbuild/darwin-x64@0.25.5': optional: true + '@esbuild/darwin-x64@0.25.8': + optional: true + '@esbuild/freebsd-arm64@0.21.5': optional: true '@esbuild/freebsd-arm64@0.25.5': optional: true + '@esbuild/freebsd-arm64@0.25.8': + optional: true + '@esbuild/freebsd-x64@0.21.5': optional: true '@esbuild/freebsd-x64@0.25.5': optional: true + '@esbuild/freebsd-x64@0.25.8': + optional: true + '@esbuild/linux-arm64@0.21.5': optional: true '@esbuild/linux-arm64@0.25.5': optional: true + '@esbuild/linux-arm64@0.25.8': + optional: true + '@esbuild/linux-arm@0.21.5': optional: true '@esbuild/linux-arm@0.25.5': optional: true + '@esbuild/linux-arm@0.25.8': + optional: true + '@esbuild/linux-ia32@0.21.5': optional: true '@esbuild/linux-ia32@0.25.5': optional: true + '@esbuild/linux-ia32@0.25.8': + optional: true + '@esbuild/linux-loong64@0.21.5': optional: true '@esbuild/linux-loong64@0.25.5': optional: true + '@esbuild/linux-loong64@0.25.8': + optional: true + '@esbuild/linux-mips64el@0.21.5': optional: true '@esbuild/linux-mips64el@0.25.5': optional: true + '@esbuild/linux-mips64el@0.25.8': + optional: true + '@esbuild/linux-ppc64@0.21.5': optional: true '@esbuild/linux-ppc64@0.25.5': optional: true + '@esbuild/linux-ppc64@0.25.8': + optional: true + '@esbuild/linux-riscv64@0.21.5': optional: true '@esbuild/linux-riscv64@0.25.5': optional: true + '@esbuild/linux-riscv64@0.25.8': + optional: true + '@esbuild/linux-s390x@0.21.5': optional: true '@esbuild/linux-s390x@0.25.5': optional: true + '@esbuild/linux-s390x@0.25.8': + optional: true + '@esbuild/linux-x64@0.21.5': optional: true '@esbuild/linux-x64@0.25.5': optional: true + '@esbuild/linux-x64@0.25.8': + optional: true + '@esbuild/netbsd-arm64@0.25.5': optional: true + '@esbuild/netbsd-arm64@0.25.8': + optional: true + '@esbuild/netbsd-x64@0.21.5': optional: true '@esbuild/netbsd-x64@0.25.5': optional: true + '@esbuild/netbsd-x64@0.25.8': + optional: true + '@esbuild/openbsd-arm64@0.25.5': optional: true + '@esbuild/openbsd-arm64@0.25.8': + optional: true + '@esbuild/openbsd-x64@0.21.5': optional: true '@esbuild/openbsd-x64@0.25.5': optional: true + '@esbuild/openbsd-x64@0.25.8': + optional: true + + '@esbuild/openharmony-arm64@0.25.8': + optional: true + '@esbuild/sunos-x64@0.21.5': optional: true '@esbuild/sunos-x64@0.25.5': optional: true + '@esbuild/sunos-x64@0.25.8': + optional: true + '@esbuild/win32-arm64@0.21.5': optional: true '@esbuild/win32-arm64@0.25.5': optional: true + '@esbuild/win32-arm64@0.25.8': + optional: true + '@esbuild/win32-ia32@0.21.5': optional: true '@esbuild/win32-ia32@0.25.5': optional: true + '@esbuild/win32-ia32@0.25.8': + optional: true + '@esbuild/win32-x64@0.21.5': optional: true '@esbuild/win32-x64@0.25.5': optional: true + '@esbuild/win32-x64@0.25.8': + optional: true + '@eslint-community/eslint-utils@4.7.0(eslint@9.32.0)': dependencies: eslint: 9.32.0 @@ -7455,6 +7694,35 @@ snapshots: '@esbuild/win32-ia32': 0.25.5 '@esbuild/win32-x64': 0.25.5 + esbuild@0.25.8: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.8 + '@esbuild/android-arm': 0.25.8 + '@esbuild/android-arm64': 0.25.8 + '@esbuild/android-x64': 0.25.8 + '@esbuild/darwin-arm64': 0.25.8 + '@esbuild/darwin-x64': 0.25.8 + '@esbuild/freebsd-arm64': 0.25.8 + '@esbuild/freebsd-x64': 0.25.8 + '@esbuild/linux-arm': 0.25.8 + '@esbuild/linux-arm64': 0.25.8 + '@esbuild/linux-ia32': 0.25.8 + '@esbuild/linux-loong64': 0.25.8 + '@esbuild/linux-mips64el': 0.25.8 + '@esbuild/linux-ppc64': 0.25.8 + '@esbuild/linux-riscv64': 0.25.8 + '@esbuild/linux-s390x': 0.25.8 + '@esbuild/linux-x64': 0.25.8 + '@esbuild/netbsd-arm64': 0.25.8 + '@esbuild/netbsd-x64': 0.25.8 + '@esbuild/openbsd-arm64': 0.25.8 + '@esbuild/openbsd-x64': 0.25.8 + '@esbuild/openharmony-arm64': 0.25.8 + '@esbuild/sunos-x64': 0.25.8 + '@esbuild/win32-arm64': 0.25.8 + '@esbuild/win32-ia32': 0.25.8 + '@esbuild/win32-x64': 0.25.8 + escalade@3.2.0: {} escape-html@1.0.3: {} diff --git a/src/package.json b/src/package.json index 1e11ba6b8..e9c477dbe 100644 --- a/src/package.json +++ b/src/package.json @@ -37,7 +37,7 @@ "cross-env": "^7.0.3", "cross-spawn": "^7.0.6", "ejs": "^3.1.10", - "esbuild": "^0.25.5", + "esbuild": "^0.25.8", "express": "4.21.2", "express-rate-limit": "^8.0.0", "fast-deep-equal": "^3.1.3", From 483153493f6e75f4d816de20de2deb9a6488d621 Mon Sep 17 00:00:00 2001 From: SamTV12345 <40429738+samtv12345@users.noreply.github.com> Date: Mon, 28 Jul 2025 19:41:36 +0200 Subject: [PATCH 22/51] feat: added home button --- settings.json.docker | 1 + settings.json.template | 1 + src/locales/de.json | 3 ++- src/locales/en.json | 1 + src/node/utils/toolbar.ts | 1 + src/static/css/pad/icons.css | 2 +- src/static/js/pad_editbar.ts | 3 +++ src/tests/frontend-new/specs/editbar.spec.ts | 17 +++++++++++++++++ 8 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 src/tests/frontend-new/specs/editbar.spec.ts diff --git a/settings.json.docker b/settings.json.docker index c335bcc07..00d2b37a1 100644 --- a/settings.json.docker +++ b/settings.json.docker @@ -651,6 +651,7 @@ "right": [ ["importexport", "timeslider", "savedrevision"], ["settings", "embed"], + ["home"], ["showusers"] ], "timeslider": [ diff --git a/settings.json.template b/settings.json.template index 8a2b72dd9..73efd415e 100644 --- a/settings.json.template +++ b/settings.json.template @@ -650,6 +650,7 @@ "right": [ ["importexport", "timeslider", "savedrevision"], ["settings", "embed"], + ["home"], ["showusers"] ], "timeslider": [ diff --git a/src/locales/de.json b/src/locales/de.json index 4cb8eb6d1..55bfa9e2b 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -70,7 +70,8 @@ "pad.toolbar.savedRevision.title": "Version speichern", "pad.toolbar.settings.title": "Einstellungen", "pad.toolbar.embed.title": "Dieses Pad teilen oder einbetten", - "pad.toolbar.showusers.title": "Benutzer dieses Pads anzeigen", + "pad.toolbar.home.title": "Zurück zur Startseite", + "pad.toolbar.showusers.title": "Benutzer dieses Pads anzeigen", "pad.colorpicker.save": "Speichern", "pad.colorpicker.cancel": "Abbrechen", "pad.loading": "Laden …", diff --git a/src/locales/en.json b/src/locales/en.json index 5305a7025..cec299d96 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -53,6 +53,7 @@ "pad.toolbar.savedRevision.title": "Save Revision", "pad.toolbar.settings.title": "Settings", "pad.toolbar.embed.title": "Share and Embed this pad", + "pad.toolbar.home.title": "Back to home", "pad.toolbar.showusers.title": "Show the users on this pad", "pad.colorpicker.save": "Save", diff --git a/src/node/utils/toolbar.ts b/src/node/utils/toolbar.ts index f0ef45479..461ede049 100644 --- a/src/node/utils/toolbar.ts +++ b/src/node/utils/toolbar.ts @@ -240,6 +240,7 @@ module.exports = { settings: defaultButtonAttributes('settings'), embed: defaultButtonAttributes('embed'), showusers: defaultButtonAttributes('showusers'), + home: defaultButtonAttributes('home'), timeslider_export: { command: 'import_export', diff --git a/src/static/css/pad/icons.css b/src/static/css/pad/icons.css index eb1016dca..f93eff98e 100644 --- a/src/static/css/pad/icons.css +++ b/src/static/css/pad/icons.css @@ -101,7 +101,7 @@ .buttonicon-pencil-alt:before { content: '\e808'; } /* '' */ .buttonicon-file-code:before { content: '\e809'; } /* '' */ .buttonicon-mail:before { content: '\e80a'; } /* '' */ -.buttonicon-home:before { content: '\e80b'; } /* '' */ +.buttonicon-home:before { content: '\e80b'; font-size: 20px } /* '' */ .buttonicon-trash:before { content: '\e80e'; } /* '' */ .buttonicon-times:before { content: '\e826'; } /* '' */ .buttonicon-pause:before { content: '\e829'; } /* '' */ diff --git a/src/static/js/pad_editbar.ts b/src/static/js/pad_editbar.ts index d98174fe5..810a9caac 100644 --- a/src/static/js/pad_editbar.ts +++ b/src/static/js/pad_editbar.ts @@ -364,6 +364,9 @@ exports.padeditbar = new class { this.registerDropdownCommand('connectivity'); this.registerDropdownCommand('import_export'); this.registerDropdownCommand('embed'); + this.registerCommand('home', ()=>{ + window.location.href = window.location.href + "/../.." + }) this.registerCommand('settings', () => { this.toggleDropDown('settings'); diff --git a/src/tests/frontend-new/specs/editbar.spec.ts b/src/tests/frontend-new/specs/editbar.spec.ts new file mode 100644 index 000000000..c2dc56fda --- /dev/null +++ b/src/tests/frontend-new/specs/editbar.spec.ts @@ -0,0 +1,17 @@ +import {expect, test} from "@playwright/test"; +import {clearPadContent, getPadBody, goToNewPad} from "../helper/padHelper"; + +test.beforeEach(async ({ page })=>{ + // create a new pad before each test run + await goToNewPad(page); +}) + +test('should go to home on pad', async ({page}) => { + const homeButton = page.locator('.buttonicon.buttonicon-home') + const attribute = await homeButton.getAttribute('data-l10n-id') + expect(attribute).toBe('pad.toolbar.home.title'); + + await homeButton.click(); + const url = page.url(); + expect(url).not.toContain('/p/'); +}) From 233b8fcc04e537d7eb706d66c815b2641c263b62 Mon Sep 17 00:00:00 2001 From: SamTV12345 <40429738+samtv12345@users.noreply.github.com> Date: Mon, 28 Jul 2025 19:51:37 +0200 Subject: [PATCH 23/51] feat: added home button also in settings.ts as default --- settings.json.docker | 3 +-- settings.json.template | 3 +-- src/node/utils/Settings.ts | 2 +- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/settings.json.docker b/settings.json.docker index 00d2b37a1..be83e0062 100644 --- a/settings.json.docker +++ b/settings.json.docker @@ -650,8 +650,7 @@ ], "right": [ ["importexport", "timeslider", "savedrevision"], - ["settings", "embed"], - ["home"], + ["settings", "embed", "home"], ["showusers"] ], "timeslider": [ diff --git a/settings.json.template b/settings.json.template index 73efd415e..93026dece 100644 --- a/settings.json.template +++ b/settings.json.template @@ -649,8 +649,7 @@ ], "right": [ ["importexport", "timeslider", "savedrevision"], - ["settings", "embed"], - ["home"], + ["settings", "embed", "home"], ["showusers"] ], "timeslider": [ diff --git a/src/node/utils/Settings.ts b/src/node/utils/Settings.ts index bfadd2f8c..de21727f0 100644 --- a/src/node/utils/Settings.ts +++ b/src/node/utils/Settings.ts @@ -251,7 +251,7 @@ exports.toolbar = { ], right: [ ['importexport', 'timeslider', 'savedrevision'], - ['settings', 'embed'], + ['settings', 'embed', 'home'], ['showusers'], ], timeslider: [ From 5250f7bb7552cea01dc811614c9045109116afd3 Mon Sep 17 00:00:00 2001 From: "translatewiki.net" Date: Thu, 31 Jul 2025 14:05:00 +0200 Subject: [PATCH 24/51] Localisation updates from https://translatewiki.net. --- src/locales/de.json | 4 ++-- src/locales/fa.json | 2 ++ src/locales/fi.json | 7 ++++++- src/locales/fr.json | 2 ++ src/locales/gl.json | 1 + src/locales/ia.json | 1 + src/locales/it.json | 1 + src/locales/mk.json | 1 + src/locales/pms.json | 1 + src/locales/ps.json | 1 + src/locales/ru.json | 1 + src/locales/{sh.json => sh-latn.json} | 3 +-- src/locales/zh-hant.json | 1 + 13 files changed, 21 insertions(+), 5 deletions(-) rename src/locales/{sh.json => sh-latn.json} (99%) diff --git a/src/locales/de.json b/src/locales/de.json index 55bfa9e2b..a36bc5233 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -70,8 +70,8 @@ "pad.toolbar.savedRevision.title": "Version speichern", "pad.toolbar.settings.title": "Einstellungen", "pad.toolbar.embed.title": "Dieses Pad teilen oder einbetten", - "pad.toolbar.home.title": "Zurück zur Startseite", - "pad.toolbar.showusers.title": "Benutzer dieses Pads anzeigen", + "pad.toolbar.home.title": "Zurück zur Startseite", + "pad.toolbar.showusers.title": "Benutzer dieses Pads anzeigen", "pad.colorpicker.save": "Speichern", "pad.colorpicker.cancel": "Abbrechen", "pad.loading": "Laden …", diff --git a/src/locales/fa.json b/src/locales/fa.json index 6be60fa79..567ed0e43 100644 --- a/src/locales/fa.json +++ b/src/locales/fa.json @@ -4,6 +4,7 @@ "BMRG14", "Beginneruser", "Dalba", + "Darafsh", "Ebrahim", "Ebraminio", "FarsiNevis", @@ -66,6 +67,7 @@ "pad.toolbar.savedRevision.title": "ذخیره‌سازی نسخه", "pad.toolbar.settings.title": "تنظیمات", "pad.toolbar.embed.title": "اشتراک و جاسازی این دفترچه یادداشت", + "pad.toolbar.home.title": "بازگشت به صفحهٔ اصلی", "pad.toolbar.showusers.title": "نمایش کاربران در این دفترچه یادداشت", "pad.colorpicker.save": "ذخیره", "pad.colorpicker.cancel": "لغو", diff --git a/src/locales/fi.json b/src/locales/fi.json index c51be0ac6..d05404e2d 100644 --- a/src/locales/fi.json +++ b/src/locales/fi.json @@ -50,11 +50,13 @@ "admin_settings": "Asetukset", "admin_settings.current": "Nykyinen kokoonpano", "admin_settings.current_example-devel": "Esimerkki kehitysasetusten mallista", + "admin_settings.current_example-prod": "Esimerkkipohja tuotantoasetuksille", "admin_settings.current_restart.value": "Käynnistä Etherpad uudelleen", "admin_settings.current_save.value": "Tallenna asetukset", "admin_settings.page-title": "asetukset - Etherpad", "index.newPad": "Uusi muistio", "index.createOpenPad": "tai luo tai avaa muistio nimellä:", + "index.openPad": "avaa olemassa oleva muistio nimellä:", "pad.toolbar.bold.title": "Lihavointi (Ctrl-B)", "pad.toolbar.italic.title": "Kursivointi (Ctrl-I)", "pad.toolbar.underline.title": "Alleviivaus (Ctrl-U)", @@ -71,6 +73,7 @@ "pad.toolbar.savedRevision.title": "Tallenna muutos", "pad.toolbar.settings.title": "Asetukset", "pad.toolbar.embed.title": "Jaa ja upota muistio", + "pad.toolbar.home.title": "Takaisin kotiin", "pad.toolbar.showusers.title": "Näytä muistion käyttäjät", "pad.colorpicker.save": "Tallenna", "pad.colorpicker.cancel": "Peru", @@ -137,6 +140,7 @@ "pad.chat.loadmessages": "Lataa lisää viestejä", "pad.chat.stick.title": "Liimaa chatti ruutuun", "pad.chat.writeMessage.placeholder": "Kirjoita viestisi tähän", + "timeslider.followContents": "Seuraa muistion sisällön päivityksiä", "timeslider.pageTitle": "{{appTitle}} -aikajana", "timeslider.toolbar.returnbutton": "Palaa muistioon", "timeslider.toolbar.authors": "Tekijät:", @@ -175,5 +179,6 @@ "pad.impexp.uploadFailed": "Lähetys epäonnistui. Yritä uudelleen.", "pad.impexp.importfailed": "Tuonti epäonnistui", "pad.impexp.copypaste": "Kopioi ja liitä", - "pad.impexp.exportdisabled": "Vienti muotoon \"{{type}}\" ei ole käytössä. Ota yhteys ylläpitäjään saadaksesi lisätietoja." + "pad.impexp.exportdisabled": "Vienti muotoon \"{{type}}\" ei ole käytössä. Ota yhteys ylläpitäjään saadaksesi lisätietoja.", + "pad.impexp.maxFileSize": "Tiedosto on liian suuri. Ota yhteyttä sivustosi ylläpitäjään ja pyydä heitä korottomaan suurinta sallittua tiedostokokoa." } diff --git a/src/locales/fr.json b/src/locales/fr.json index 96e5a3b98..997560977 100644 --- a/src/locales/fr.json +++ b/src/locales/fr.json @@ -5,6 +5,7 @@ "C13m3n7", "Cquoi", "Crochet.david", + "Derugon", "Envlh", "Framafan", "Fylip22", @@ -83,6 +84,7 @@ "pad.toolbar.savedRevision.title": "Enregistrer la révision", "pad.toolbar.settings.title": "Paramètres", "pad.toolbar.embed.title": "Partager et intégrer ce bloc-notes", + "pad.toolbar.home.title": "Retour à l’accueil", "pad.toolbar.showusers.title": "Afficher les utilisateurs du bloc-notes", "pad.colorpicker.save": "Enregistrer", "pad.colorpicker.cancel": "Annuler", diff --git a/src/locales/gl.json b/src/locales/gl.json index 93116f05d..b878f165b 100644 --- a/src/locales/gl.json +++ b/src/locales/gl.json @@ -58,6 +58,7 @@ "pad.toolbar.savedRevision.title": "Gardar a revisión", "pad.toolbar.settings.title": "Axustes", "pad.toolbar.embed.title": "Compartir e incorporar este documento", + "pad.toolbar.home.title": "Volver ao inicio", "pad.toolbar.showusers.title": "Mostrar as usuarias deste documento", "pad.colorpicker.save": "Gardar", "pad.colorpicker.cancel": "Cancelar", diff --git a/src/locales/ia.json b/src/locales/ia.json index a593f42a9..86773cc09 100644 --- a/src/locales/ia.json +++ b/src/locales/ia.json @@ -56,6 +56,7 @@ "pad.toolbar.savedRevision.title": "Version salveguardate", "pad.toolbar.settings.title": "Configuration", "pad.toolbar.embed.title": "Condivider e incorporar iste pad", + "pad.toolbar.home.title": "Retro al initio", "pad.toolbar.showusers.title": "Monstrar le usatores de iste pad", "pad.colorpicker.save": "Salveguardar", "pad.colorpicker.cancel": "Cancellar", diff --git a/src/locales/it.json b/src/locales/it.json index 0774f6ad5..81a51b297 100644 --- a/src/locales/it.json +++ b/src/locales/it.json @@ -42,6 +42,7 @@ "pad.toolbar.savedRevision.title": "Versione salvata", "pad.toolbar.settings.title": "Impostazioni", "pad.toolbar.embed.title": "Condividi ed incorpora questo Pad", + "pad.toolbar.home.title": "Torna alla pagina principale", "pad.toolbar.showusers.title": "Visualizza gli utenti su questo Pad", "pad.colorpicker.save": "Salva", "pad.colorpicker.cancel": "Annulla", diff --git a/src/locales/mk.json b/src/locales/mk.json index 059ccda33..dc14015c5 100644 --- a/src/locales/mk.json +++ b/src/locales/mk.json @@ -58,6 +58,7 @@ "pad.toolbar.savedRevision.title": "Зачувај преработка", "pad.toolbar.settings.title": "Поставки", "pad.toolbar.embed.title": "Споделете и вметнете ја тетраткава", + "pad.toolbar.home.title": "Назад на Почетна", "pad.toolbar.showusers.title": "Прикажи корисниците на тетраткава", "pad.colorpicker.save": "Зачувај", "pad.colorpicker.cancel": "Откажи", diff --git a/src/locales/pms.json b/src/locales/pms.json index 220a3380a..d3270f81d 100644 --- a/src/locales/pms.json +++ b/src/locales/pms.json @@ -56,6 +56,7 @@ "pad.toolbar.savedRevision.title": "Argistré la revision", "pad.toolbar.settings.title": "Paràmeter", "pad.toolbar.embed.title": "Partagé e antëgré ës feuj", + "pad.toolbar.home.title": "Artorn a l'intrada", "pad.toolbar.showusers.title": "Smon-e j'utent ansima a 's feuj", "pad.colorpicker.save": "Argistré", "pad.colorpicker.cancel": "Anulé", diff --git a/src/locales/ps.json b/src/locales/ps.json index c7a31768f..59ee52f10 100644 --- a/src/locales/ps.json +++ b/src/locales/ps.json @@ -18,6 +18,7 @@ "pad.toolbar.clearAuthorship.title": "د ليکوالۍ رنگونه سپينول (Ctrl+Shift+C)", "pad.toolbar.savedRevision.title": "مخکتنه خوندي کول", "pad.toolbar.settings.title": "اوڼنې", + "pad.toolbar.home.title": "بېرته کور ته", "pad.colorpicker.save": "خوندي کول", "pad.colorpicker.cancel": "ناگارل", "pad.loading": "رابرسېرېږي...", diff --git a/src/locales/ru.json b/src/locales/ru.json index 457f17864..92e9b8352 100644 --- a/src/locales/ru.json +++ b/src/locales/ru.json @@ -71,6 +71,7 @@ "pad.toolbar.savedRevision.title": "Сохранить версию", "pad.toolbar.settings.title": "Настройки", "pad.toolbar.embed.title": "Поделиться и встроить этот документ", + "pad.toolbar.home.title": "Вернуться в начало", "pad.toolbar.showusers.title": "Показать пользователей в документе", "pad.colorpicker.save": "Сохранить", "pad.colorpicker.cancel": "Отмена", diff --git a/src/locales/sh.json b/src/locales/sh-latn.json similarity index 99% rename from src/locales/sh.json rename to src/locales/sh-latn.json index f5c045c55..e09c64dd4 100644 --- a/src/locales/sh.json +++ b/src/locales/sh-latn.json @@ -1,8 +1,7 @@ { "@metadata": { "authors": [ - "Conquistador", - "Vlad5250" + "Winston Sung" ] }, "admin_plugins.available_not-found": "Nijedan plugin nije pronađen.", diff --git a/src/locales/zh-hant.json b/src/locales/zh-hant.json index 4933b5a18..6bb3a1f05 100644 --- a/src/locales/zh-hant.json +++ b/src/locales/zh-hant.json @@ -66,6 +66,7 @@ "pad.toolbar.savedRevision.title": "儲存修訂版", "pad.toolbar.settings.title": "設定", "pad.toolbar.embed.title": "分享和嵌入此記事本", + "pad.toolbar.home.title": "返回首頁", "pad.toolbar.showusers.title": "顯示此記事本的使用者", "pad.colorpicker.save": "儲存", "pad.colorpicker.cancel": "取消", From 341691d44ac36e99884e61ea0c8679436e3151a7 Mon Sep 17 00:00:00 2001 From: SamTV12345 <40429738+samtv12345@users.noreply.github.com> Date: Tue, 29 Jul 2025 17:17:21 +0200 Subject: [PATCH 25/51] feat: started with recent pads implementation --- src/locales/de.json | 2 ++ src/locales/en.json | 3 +++ src/static/js/l10n.ts | 2 -- src/static/js/vendors/html10n.ts | 1 - src/static/skins/colibris/index.css | 13 ++++++++++- src/static/skins/colibris/index.js | 34 +++++++++++++++++++++++++++++ src/static/skins/colibris/pad.js | 5 +++++ src/templates/index.html | 5 +++++ 8 files changed, 61 insertions(+), 4 deletions(-) diff --git a/src/locales/de.json b/src/locales/de.json index a36bc5233..0b5790463 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -54,6 +54,8 @@ "index.newPad": "Neues Pad", "index.createOpenPad": "oder ein Pad mit folgendem Namen erstellen/öffnen:", "index.openPad": "Öffne ein vorhandenes Pad mit folgendem Namen:", + "index.recentPads": "Zuletzt bearbeitete Pads", + "index.recentPadsEmpty": "Keine kürzlich bearbeiteten Pads gefunden.", "pad.toolbar.bold.title": "Fett (Strg-B)", "pad.toolbar.italic.title": "Kursiv (Strg-I)", "pad.toolbar.underline.title": "Unterstrichen (Strg-U)", diff --git a/src/locales/en.json b/src/locales/en.json index cec299d96..3075e6ec2 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -36,6 +36,9 @@ "index.newPad": "New Pad", "index.createOpenPad": "or create/open a Pad with the name:", "index.openPad": "open an existing Pad with the name:", + "index.recentPads": "Recent Pads", + "index.recentPadsEmpty": "No recent pads found.", + "pad.toolbar.bold.title": "Bold (Ctrl+B)", "pad.toolbar.italic.title": "Italic (Ctrl+I)", diff --git a/src/static/js/l10n.ts b/src/static/js/l10n.ts index 2211318c0..929708b40 100644 --- a/src/static/js/l10n.ts +++ b/src/static/js/l10n.ts @@ -7,8 +7,6 @@ let language = document.cookie.match(/language=((\w{2,3})(-\w+)?)/); if (language) regexpLang = language[1]; html10n.mt.bind('indexed', () => { - console.log('Navigator language', navigator.language) - console.log('Localizing things', [regexpLang, navigator.language, 'en']) html10n.localize([regexpLang, navigator.language, 'en']); }); diff --git a/src/static/js/vendors/html10n.ts b/src/static/js/vendors/html10n.ts index 6f86a79b1..156ab75f6 100644 --- a/src/static/js/vendors/html10n.ts +++ b/src/static/js/vendors/html10n.ts @@ -472,7 +472,6 @@ export class Html10n { } localize(langs: (string|undefined)[]|string) { - console.log('Available langs ', langs) if ('string' === typeof langs) { langs = [langs]; } diff --git a/src/static/skins/colibris/index.css b/src/static/skins/colibris/index.css index 5129c43a8..4e2943b7b 100644 --- a/src/static/skins/colibris/index.css +++ b/src/static/skins/colibris/index.css @@ -16,6 +16,16 @@ body { background-size: cover; } + +.pad-datalist { + position: absolute; + top: 110%; + background-color: #586a69; + border-radius: 3px; + min-height: 200px; + width: 350px; +} + #wrapper { border-top: none; margin-top: 0; @@ -35,6 +45,7 @@ input { max-width: 350px; text-align: center; color:#FFF; + position: relative; } #label { @@ -85,4 +96,4 @@ button[type=submit]:hover { max-width: 350px; padding: 0 12px; position: relative; -} \ No newline at end of file +} diff --git a/src/static/skins/colibris/index.js b/src/static/skins/colibris/index.js index 633db7267..30e2ef2c6 100644 --- a/src/static/skins/colibris/index.js +++ b/src/static/skins/colibris/index.js @@ -1,7 +1,41 @@ 'use strict'; + window.customStart = () => { // define your javascript here // jquery is available - except index.js // you can load extra scripts with $.getScript http://api.jquery.com/jQuery.getScript/ + const recentPadList = document.getElementById('recent-pads'); + const parentStyle = recentPadList.parentElement.style; + const recentPadListHeading = document.querySelector('[data-l10n-id="index.recentPads"]'); + const recentPadsFromLocalStorage = localStorage.getItem('recent-pads'); + let recentPadListData = []; + if (recentPadsFromLocalStorage != null) { + recentPadListData = JSON.parse(recentPadsFromLocalStorage); + } + + if (recentPadListData.length === 0) { + recentPadListHeading.setAttribute('data-l10n-id', 'index.recentPadsEmpty'); + parentStyle.display = 'flex'; + parentStyle.justifyContent = 'center'; + parentStyle.alignItems = 'center'; + parentStyle.height = '100%'; + recentPadList.remove(); + } else { + /** + * @typedef {Object} Pad + * @property {string} name + */ + + /** + * @param {Pad} pad + */ + recentPadListData.forEach((pad) => { + const li = document.createElement('li'); + li.className = 'recent-pad'; + const padPath = `${window.location.href}p/${pad.name}`; + li.innerHTML = `${pad}`; + recentPadList.appendChild(li); + }); + } }; diff --git a/src/static/skins/colibris/pad.js b/src/static/skins/colibris/pad.js index 3a2af8508..eb44d2b8b 100644 --- a/src/static/skins/colibris/pad.js +++ b/src/static/skins/colibris/pad.js @@ -4,4 +4,9 @@ window.customStart = () => { $('#pad_title').show(); $('.buttonicon').on('mousedown', function () { $(this).parent().addClass('pressed'); }); $('.buttonicon').on('mouseup', function () { $(this).parent().removeClass('pressed'); }); + + const pathSegments = window.location.pathname.split('/').filter(Boolean); + const lastSegment = pathSegments[pathSegments.length - 1]; + const padName = window.location.href + }; diff --git a/src/templates/index.html b/src/templates/index.html index f7d1a2c62..ab5e1e4bb 100644 --- a/src/templates/index.html +++ b/src/templates/index.html @@ -145,6 +145,11 @@ +
+

+
    +
+
<% } %> <% e.end_block(); %> From 4e734eb19e620cdc04eb7ff0d08bc13effc47ca6 Mon Sep 17 00:00:00 2001 From: SamTV12345 <40429738+samtv12345@users.noreply.github.com> Date: Tue, 29 Jul 2025 20:55:58 +0200 Subject: [PATCH 26/51] feat: first version --- doc/skins.md | 2 +- src/locales/de.json | 4 +- src/locales/en.json | 4 +- src/static/skins/colibris/index.css | 213 ++++++++++++++++++---------- src/static/skins/colibris/index.js | 2 +- src/static/skins/colibris/pad.js | 16 ++- src/templates/index.html | 39 +++-- 7 files changed, 189 insertions(+), 91 deletions(-) diff --git a/doc/skins.md b/doc/skins.md index 90a786f84..954179f78 100644 --- a/doc/skins.md +++ b/doc/skins.md @@ -15,5 +15,5 @@ You can choose a skin changing the parameter `skinName` in `settings.json`. Since Etherpad **1.7.5**, two skins are included: -* `no-skin`: an empty skin, leaving the default Etherpad appearance unchanged, that you can use as a guidance to develop your own. +* `no-skin`: an empty skin, leaving the default Etherpad appearance unchanged, that you can use as guidance to develop your own. * `colibris`: a new, experimental skin, that will become the default in Etherpad 2.0. diff --git a/src/locales/de.json b/src/locales/de.json index 0b5790463..4bfbd5647 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -52,10 +52,12 @@ "admin_settings.current_save.value": "Einstellungen speichern", "admin_settings.page-title": "Einstellungen - Etherpad", "index.newPad": "Neues Pad", - "index.createOpenPad": "oder ein Pad mit folgendem Namen erstellen/öffnen:", + "index.createOpenPad": "Pad öffnen", "index.openPad": "Öffne ein vorhandenes Pad mit folgendem Namen:", "index.recentPads": "Zuletzt bearbeitete Pads", "index.recentPadsEmpty": "Keine kürzlich bearbeiteten Pads gefunden.", + "index.generateNewPad": "Neues Pad generieren", + "index.labelPad": "Padname (optional)", "pad.toolbar.bold.title": "Fett (Strg-B)", "pad.toolbar.italic.title": "Kursiv (Strg-I)", "pad.toolbar.underline.title": "Unterstrichen (Strg-U)", diff --git a/src/locales/en.json b/src/locales/en.json index 3075e6ec2..4e187c168 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -34,10 +34,12 @@ "admin_settings.page-title": "Settings - Etherpad", "index.newPad": "New Pad", - "index.createOpenPad": "or create/open a Pad with the name:", + "index.createOpenPad": "Open pad by name", "index.openPad": "open an existing Pad with the name:", "index.recentPads": "Recent Pads", "index.recentPadsEmpty": "No recent pads found.", + "index.generateNewPad": "Generate random pad name", + "index.labelPad": "Pad name (optional)", "pad.toolbar.bold.title": "Bold (Ctrl+B)", diff --git a/src/static/skins/colibris/index.css b/src/static/skins/colibris/index.css index 4e2943b7b..baf6a45f8 100644 --- a/src/static/skins/colibris/index.css +++ b/src/static/skins/colibris/index.css @@ -1,99 +1,164 @@ -#button, -body, -form { - border: none +:root { + --etherpad-color: #64d29b; + --etherpad-color-dark: #4a5d5c; + --etherpad-border: oklch(92.8% 0.006 264.531); + --muted-text: oklch(44.6% 0.03 256.802); + --muted-border: oklch(87.2% 0.01 258.338); + --muted-background: hsl(240 4.8% 95.9%); + --ep-color: rgb(22 163 74); } + body { - background: url(images/fond.jpg) center center no-repeat fixed #fff; - font-family: Quicksand, Cantarell, "Open Sans", "Helvetica Neue", sans-serif; - font-size: 16px; - line-height: 1.42857143; - color: #333; - display: flex; - align-items: center; - justify-content: center; - background-size: cover; + border-top: 0; + background: oklch(98.5% 0.002 247.839); } +h1 { + margin: auto 0 0; + font-size: 26px; +} -.pad-datalist { - position: absolute; - top: 110%; - background-color: #586a69; - border-radius: 3px; - min-height: 200px; - width: 350px; +.mission-statement h2 { + font-weight: 700; + font-size: 2.25rem; + text-align: center; + margin-top: 4rem; +} + +.mission-statement p { + color: var(--muted-text); + font-size: 20px; + text-align: center; + max-width: 40%; + margin: auto; } #wrapper { - border-top: none; + border-top: 0; margin-top: 0; padding: 0; - background: 0 0; - box-shadow: none -} - -input { - color: #4a5d5c; + background: unset; + box-shadow: none; } #inner { - background: transparent; - padding-top: 0; - width: 350px; - max-width: 350px; - text-align: center; - color:#FFF; + display: flex; + flex-direction: column; position: relative; + margin-top: 20px; + margin-bottom: 20px; + max-width: 80%; } #label { - text-shadow: none; - color: #FFF; - font-weight: normal; - text-align: center; + font-size: 0.875rem; + line-height: 1.25rem; + font-weight: 700; + color: rgb(55 65 81); + margin-bottom: 0.5rem; + margin-top: 0; } -#button { - margin: 0 auto; - text-align: center; +#go2Name { + order: 1; +} + +#padname, #go2Name, #go2Name [type="submit"], #button, #button:hover { + all: unset; +} + + +#padname { width: 100%; - text-shadow: none; - font-size: 23px; - line-height: 1.8; - color: #64d29b; - background: #586a69; - border-radius: 3px; - box-shadow: none; - height: 53px; - border: none; - display: block; -} - - -button[type=submit] { - border-top-right-radius: 3px; - border-bottom-right-radius: 3px; - left: 305px; - color: #64d29b; - background: #586a69; - border: none; - top: 0; - opacity: 1; - transition: .2s background; -} - -#button:hover, -button[type=submit]:hover { - cursor: pointer; - background: #4a5d5c; - color: #64d29b; + padding: 0.5rem 0.75rem; + border: 1px solid #d1d5db; + border-radius: 0.375rem; + font-size: 1rem; + margin-bottom: 0.5rem; + outline: none; + transition: border 0.2s; } #padname { - height: 38px; - max-width: 350px; - padding: 0 12px; - position: relative; + box-sizing: border-box; + width: 100%; + color: var(--muted-text); + border: 1px solid var(--muted-border); + border-radius: 5px; +} + +#button, #button:hover, #go2Name [type="submit"] { + order: 2; + margin-top: 0.5rem; + line-height: 1.25rem; + background: white; + border: 1px solid var(--muted-border); + text-align: center; + padding-top: 0.5rem; + padding-bottom: 0.5rem; + font-size: 14px; + font-weight: 700; + border-radius: 5px; + cursor: pointer; +} + +#button, #button:hover { + order: 2; +} + +#button:hover { + background-color: var(--muted-background); +} + +#go2Name input { + width: 100%; +} + + +#go2Name [type="submit"] { + display: block; + background-color: var(--ep-color); + color: white; + width: 100%; +} + + +body nav { + display: flex; + border-bottom-width: 1px; + border-bottom-style: solid; + border-bottom-color: var(--etherpad-border); + padding: 1rem 1.5rem; +} + +.logo-box svg { + width: 1.25rem; + height: 1.25rem; + color: #fff; +} + +.logo-box { + width: 2rem; + height: 2rem; + background: #16a34a; + display: flex; + align-items: center; + justify-content: center; + margin-right: 1rem; +} + + +#wrapper { + width: 100%; + max-width: 28rem; + background: #fff; + border: 1px solid #e5e7eb; + border-radius: 0.75rem; + box-shadow: 0 1px 2px 0 #0001; + margin: 2rem auto auto; +} + +.card-content { + padding: 1.5rem; } diff --git a/src/static/skins/colibris/index.js b/src/static/skins/colibris/index.js index 30e2ef2c6..c358b391f 100644 --- a/src/static/skins/colibris/index.js +++ b/src/static/skins/colibris/index.js @@ -8,7 +8,7 @@ window.customStart = () => { const recentPadList = document.getElementById('recent-pads'); const parentStyle = recentPadList.parentElement.style; const recentPadListHeading = document.querySelector('[data-l10n-id="index.recentPads"]'); - const recentPadsFromLocalStorage = localStorage.getItem('recent-pads'); + const recentPadsFromLocalStorage = localStorage.getItem('recentPads'); let recentPadListData = []; if (recentPadsFromLocalStorage != null) { recentPadListData = JSON.parse(recentPadsFromLocalStorage); diff --git a/src/static/skins/colibris/pad.js b/src/static/skins/colibris/pad.js index eb44d2b8b..cf4c7e777 100644 --- a/src/static/skins/colibris/pad.js +++ b/src/static/skins/colibris/pad.js @@ -6,7 +6,17 @@ window.customStart = () => { $('.buttonicon').on('mouseup', function () { $(this).parent().removeClass('pressed'); }); const pathSegments = window.location.pathname.split('/').filter(Boolean); - const lastSegment = pathSegments[pathSegments.length - 1]; - const padName = window.location.href - + const padName = pathSegments[pathSegments.length - 1]; + const recentPads = localStorage.getItem('recentPads'); + if (recentPads == null) { + localStorage.setItem('recentPads', JSON.stringify([])); + } + const recentPadsList = JSON.parse(localStorage.getItem('recentPads')); + if (!recentPadsList.includes(padName)) { + if (recentPadsList.length >= 10) { + recentPadsList.shift(); // Remove the oldest pad if we have more than 10 + } + recentPadsList.push(padName); + localStorage.setItem('recentPads', JSON.stringify(recentPadsList)); + } }; diff --git a/src/templates/index.html b/src/templates/index.html index ab5e1e4bb..78368aec9 100644 --- a/src/templates/index.html +++ b/src/templates/index.html @@ -109,6 +109,10 @@ width: 45px; height: 38px; } + nav { + display: none; + } + @media only screen and (min-device-width: 320px) and (max-device-width: 800px) { body { background: #bbb; @@ -131,29 +135,44 @@ <% e.end_block(); %> + + + +
+

Create and share documents

+

+ Etherpad allows you to edit documents collaboratively in real-time, much like a live multi-player editor that runs in your browser. +

+
+
<% e.begin_block("indexWrapper"); %>
<% if (!settings.requireSession) { %> <% if (settings.editOnly) { %> - + <% } else {%> - - + <% } %>
- - + + +
-
-

-
    -
-
<% } %>
<% e.end_block(); %>
+
+

+
    +
+
<% e.begin_block("indexCustomScripts"); %> From ed4522467a44f080fb0999e9a501bee31b9e0306 Mon Sep 17 00:00:00 2001 From: SamTV12345 <40429738+samtv12345@users.noreply.github.com> Date: Tue, 29 Jul 2025 22:10:12 +0200 Subject: [PATCH 27/51] feat: append link programmatically --- src/static/skins/colibris/index.css | 26 +++++++++++++++++++++++++- src/static/skins/colibris/index.js | 5 ++++- src/templates/index.html | 2 +- 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/static/skins/colibris/index.css b/src/static/skins/colibris/index.css index baf6a45f8..89807e0df 100644 --- a/src/static/skins/colibris/index.css +++ b/src/static/skins/colibris/index.css @@ -103,6 +103,10 @@ h1 { cursor: pointer; } +#go2Name [type="submit"]:hover { + background-color: oklch(52.7% 0.154 150.069) +} + #button, #button:hover { order: 2; } @@ -149,7 +153,7 @@ body nav { } -#wrapper { +#wrapper, .pad-datalist { width: 100%; max-width: 28rem; background: #fff; @@ -159,6 +163,26 @@ body nav { margin: 2rem auto auto; } +.pad-datalist { + max-width: 56rem; +} + +ul { + list-style-type: none; +} + +.pad-datalist h2 { + border-bottom: 1px solid var(--muted-border); + padding-left: 1.5rem; + padding-right: 1.5rem; + padding-top: 1rem; + padding-bottom: 1rem; + border-bottom-width: 1px; + border-bottom-style: solid; + border-bottom-color: #e5e7eb; + width: 100%; +} + .card-content { padding: 1.5rem; } diff --git a/src/static/skins/colibris/index.js b/src/static/skins/colibris/index.js index c358b391f..85832bf47 100644 --- a/src/static/skins/colibris/index.js +++ b/src/static/skins/colibris/index.js @@ -34,7 +34,10 @@ window.customStart = () => { const li = document.createElement('li'); li.className = 'recent-pad'; const padPath = `${window.location.href}p/${pad.name}`; - li.innerHTML = `${pad}`; + const link = document.createElement('a'); + link.href = padPath; + link.innerText = pad; + li.appendChild(link); recentPadList.appendChild(li); }); } diff --git a/src/templates/index.html b/src/templates/index.html index 78368aec9..5f60d374c 100644 --- a/src/templates/index.html +++ b/src/templates/index.html @@ -169,7 +169,7 @@ <% e.end_block(); %>
-

+

From 32774919b18c373be24ee41fc73753024a24b5f0 Mon Sep 17 00:00:00 2001 From: SamTV12345 <40429738+samtv12345@users.noreply.github.com> Date: Tue, 29 Jul 2025 22:12:48 +0200 Subject: [PATCH 28/51] feat: added design layout --- .../skins/colibris/images/Designlayout.png | Bin 0 -> 58846 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/static/skins/colibris/images/Designlayout.png diff --git a/src/static/skins/colibris/images/Designlayout.png b/src/static/skins/colibris/images/Designlayout.png new file mode 100644 index 0000000000000000000000000000000000000000..399bd6df731e42ec79ae74d5c49ea2dda2632122 GIT binary patch literal 58846 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 byZ_019QImo&dG5PbW@$DtDnm{r-UW|jW%Fz literal 0 HcmV?d00001 From d46286cf2c8b92bfdc4402de16ccd928ea1fae8f Mon Sep 17 00:00:00 2001 From: SamTV12345 <40429738+samtv12345@users.noreply.github.com> Date: Tue, 29 Jul 2025 22:13:11 +0200 Subject: [PATCH 29/51] feat: added link --- src/static/skins/colibris/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/static/skins/colibris/index.js b/src/static/skins/colibris/index.js index 85832bf47..628512806 100644 --- a/src/static/skins/colibris/index.js +++ b/src/static/skins/colibris/index.js @@ -38,6 +38,7 @@ window.customStart = () => { link.href = padPath; link.innerText = pad; li.appendChild(link); + //https://v0.dev/chat/etherpad-design-clone-qZnwOrVRXxH recentPadList.appendChild(li); }); } From bdbaa4e67c2d6f85a49383c7b1157d69aa2b4cd6 Mon Sep 17 00:00:00 2001 From: SamTV12345 <40429738+samtv12345@users.noreply.github.com> Date: Wed, 30 Jul 2025 22:50:14 +0200 Subject: [PATCH 30/51] feat: continued with pad link functionality --- src/static/js/scroll.ts | 1 - src/static/skins/colibris/index.css | 36 +++++++++++++-- src/static/skins/colibris/index.js | 70 +++++++++++++++++++++++++++-- src/static/skins/colibris/pad.js | 15 ++++++- src/templates/pad.html | 2 +- 5 files changed, 113 insertions(+), 11 deletions(-) diff --git a/src/static/js/scroll.ts b/src/static/js/scroll.ts index 74c246243..d4fe5a5d3 100644 --- a/src/static/js/scroll.ts +++ b/src/static/js/scroll.ts @@ -16,7 +16,6 @@ class Scroll { this.outerWin = outerWin; this.doc = this.outerWin.contentDocument!; this.rootDocument = document; - console.log(this.rootDocument) } scrollWhenCaretIsInTheLastLineOfViewportWhenNecessary(rep: RepModel, isScrollableEvent: boolean, innerHeight: number) { diff --git a/src/static/skins/colibris/index.css b/src/static/skins/colibris/index.css index 89807e0df..f7690ffa9 100644 --- a/src/static/skins/colibris/index.css +++ b/src/static/skins/colibris/index.css @@ -167,16 +167,44 @@ body nav { max-width: 56rem; } +.break-column { + flex-basis: 100%; + width: 0; +} + ul { list-style-type: none; } +.recent-pad { + padding: 0.75rem 1.5rem; + display: flex; + position: relative; + flex-direction: column; +} + +.recent-pad:hover a { + color: var(--ep-color); +} + +.recent-pad-arrow { + position: absolute; + right: 1rem; +} + +.recent-pad a { + font-size: 0.875rem; + line-height: 1.25rem; + font-weight: 800; +} + +a, a:visited, a:hover, a:active { + color: inherit; +} + .pad-datalist h2 { border-bottom: 1px solid var(--muted-border); - padding-left: 1.5rem; - padding-right: 1.5rem; - padding-top: 1rem; - padding-bottom: 1rem; + padding: 1rem 1.5rem; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #e5e7eb; diff --git a/src/static/skins/colibris/index.js b/src/static/skins/colibris/index.js index 628512806..9bc40fc90 100644 --- a/src/static/skins/colibris/index.js +++ b/src/static/skins/colibris/index.js @@ -19,7 +19,7 @@ window.customStart = () => { parentStyle.display = 'flex'; parentStyle.justifyContent = 'center'; parentStyle.alignItems = 'center'; - parentStyle.height = '100%'; + parentStyle.maxHeight = '100%'; recentPadList.remove(); } else { /** @@ -30,15 +30,79 @@ window.customStart = () => { /** * @param {Pad} pad */ + + const arrowIcon = ''; + const clockIcon = ''; + const personalIcon = ''; recentPadListData.forEach((pad) => { const li = document.createElement('li'); + + + li.style.cursor = 'pointer'; + li.className = 'recent-pad'; const padPath = `${window.location.href}p/${pad.name}`; const link = document.createElement('a'); + link.style.textDecoration = 'none'; + link.href = padPath; - link.innerText = pad; + link.innerText = pad.name; li.appendChild(link); - //https://v0.dev/chat/etherpad-design-clone-qZnwOrVRXxH + + + const arrowIconElement = document.createElement('span'); + arrowIconElement.className = 'recent-pad-arrow'; + arrowIconElement.innerHTML = arrowIcon; + li.appendChild(arrowIconElement); + + const nextRow = document.createElement('div'); + + nextRow.style.display = 'flex'; + nextRow.style.gap = '10px'; + nextRow.style.marginTop = '10px'; + + const clockIconElement = document.createElement('span'); + clockIconElement.className = 'recent-pad-clock'; + clockIconElement.innerHTML = clockIcon; + + nextRow.appendChild(clockIconElement); + + const time = new Date(pad.timestamp); + const userLocale = navigator.language || 'en-US'; + + const formattedTime = time.toLocaleDateString(userLocale, { + year: 'numeric', + month: '2-digit', + day: '2-digit', + hour: '2-digit', + minute: '2-digit', + }); + const timeElement = document.createElement('span'); + timeElement.className = 'recent-pad-time'; + timeElement.innerText = formattedTime; + + nextRow.appendChild(timeElement); + + const personalIconElement = document.createElement('span'); + personalIconElement.className = 'recent-pad-personal'; + personalIconElement.innerHTML = personalIcon; + + personalIconElement.style.marginLeft = '5px'; + + const members = document.createElement('span'); + members.className = 'recent-pad-members'; + members.innerText = pad.members; + + + nextRow.appendChild(personalIconElement); + nextRow.appendChild(members); + li.appendChild(nextRow); + + li.addEventListener('click', () => { + window.location.href = padPath; + }); + + // https://v0.dev/chat/etherpad-design-clone-qZnwOrVRXxH recentPadList.appendChild(li); }); } diff --git a/src/static/skins/colibris/pad.js b/src/static/skins/colibris/pad.js index cf4c7e777..95c3cb626 100644 --- a/src/static/skins/colibris/pad.js +++ b/src/static/skins/colibris/pad.js @@ -12,11 +12,22 @@ window.customStart = () => { localStorage.setItem('recentPads', JSON.stringify([])); } const recentPadsList = JSON.parse(localStorage.getItem('recentPads')); - if (!recentPadsList.includes(padName)) { + if (!recentPadsList.some((pad) => pad.name === padName)) { if (recentPadsList.length >= 10) { recentPadsList.shift(); // Remove the oldest pad if we have more than 10 } - recentPadsList.push(padName); + recentPadsList.push({ + name: padName, + timestamp: new Date().toISOString(), // Store the timestamp for sorting + members: 0, + }); + localStorage.setItem('recentPads', JSON.stringify(recentPadsList)); + } else { + // Update the timestamp if the pad already exists + const existingPad = recentPadsList.find((pad) => pad.name === padName); + if (existingPad) { + existingPad.timestamp = new Date().toISOString(); + } localStorage.setItem('recentPads', JSON.stringify(recentPadsList)); } }; diff --git a/src/templates/pad.html b/src/templates/pad.html index 6dd9a0ef8..abc9b7a7d 100644 --- a/src/templates/pad.html +++ b/src/templates/pad.html @@ -164,7 +164,7 @@

<% e.end_block(); %> - +

About

Powered by Etherpad From 4248082c19dee9c1a28b5e49e7566747a2fdac7e Mon Sep 17 00:00:00 2001 From: SamTV12345 <40429738+samtv12345@users.noreply.github.com> Date: Fri, 1 Aug 2025 21:35:14 +0200 Subject: [PATCH 31/51] feat: updated welcome page --- src/locales/de.json | 5 +++- src/locales/en.json | 3 ++ src/static/js/pad_userlist.ts | 9 ++++++ src/static/skins/colibris/index.css | 46 +++++++++++++++++++++++++++-- src/static/skins/colibris/index.js | 28 ++++++++++++++++++ src/static/skins/colibris/pad.js | 8 +++-- src/templates/index.html | 13 ++++---- 7 files changed, 100 insertions(+), 12 deletions(-) diff --git a/src/locales/de.json b/src/locales/de.json index 4bfbd5647..4ef7e68c4 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -58,7 +58,10 @@ "index.recentPadsEmpty": "Keine kürzlich bearbeiteten Pads gefunden.", "index.generateNewPad": "Neues Pad generieren", "index.labelPad": "Padname (optional)", - "pad.toolbar.bold.title": "Fett (Strg-B)", + "index.placeholderPadEnter": "Gib den Namen des Pads ein...", + "index.createAndShareDocuments": "Erstelle und teile Dokumente in Echtzeit", + "index.createAndShareDocumentsDescription": "Etherpad ermöglicht die gemeinsame Bearbeitung von Dokumenten in Echtzeit, ähnlich wie ein Live-Multiplayer-Editor, der in Ihrem Browser läuft.", + "pad.toolbar.bold.title": "Fett (Strg-B)", "pad.toolbar.italic.title": "Kursiv (Strg-I)", "pad.toolbar.underline.title": "Unterstrichen (Strg-U)", "pad.toolbar.strikethrough.title": "Durchgestrichen (Strg+5)", diff --git a/src/locales/en.json b/src/locales/en.json index 4e187c168..ec6a11a4f 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -40,6 +40,9 @@ "index.recentPadsEmpty": "No recent pads found.", "index.generateNewPad": "Generate random pad name", "index.labelPad": "Pad name (optional)", + "index.placeholderPadEnter": "Gib den Namen des Pads ein...", + "index.createAndShareDocuments": "Create and share documents in real time", + "index.createAndShareDocumentsDescription": "Etherpad allows you to edit documents collaboratively in real-time, much like a live multi-player editor that runs in your browser.", "pad.toolbar.bold.title": "Bold (Ctrl+B)", diff --git a/src/static/js/pad_userlist.ts b/src/static/js/pad_userlist.ts index 4a665d10e..3bed27ab3 100644 --- a/src/static/js/pad_userlist.ts +++ b/src/static/js/pad_userlist.ts @@ -489,6 +489,15 @@ const paduserlist = (() => { online++; } } + const recentPadsList = JSON.parse(localStorage.getItem('recentPads')); + const pathSegments = window.location.pathname.split('/'); + const padName = pathSegments[pathSegments.length - 1]; + const existingPad = recentPadsList.find((pad) => pad.name === padName); + if (existingPad) { + existingPad.members = online; + } + localStorage.setItem('recentPads', JSON.stringify(recentPadsList)); + $('#online_count').text(online); diff --git a/src/static/skins/colibris/index.css b/src/static/skins/colibris/index.css index f7690ffa9..fc4a87f61 100644 --- a/src/static/skins/colibris/index.css +++ b/src/static/skins/colibris/index.css @@ -6,12 +6,19 @@ --muted-border: oklch(87.2% 0.01 258.338); --muted-background: hsl(240 4.8% 95.9%); --ep-color: rgb(22 163 74); + --warm-green-olive: #7c9a3e; + --warm-green-moss: #8fae4a; + --warm-green-lime: #b7c96c; + --warm-green-avocado: #6e8b3d; + --warm-green-spring: #a3c85a; } body { border-top: 0; background: oklch(98.5% 0.002 247.839); + display: flex; + flex-direction: column; } h1 { @@ -19,11 +26,16 @@ h1 { font-size: 26px; } +.mission-statement, .pad-datalist { + display: block; +} + .mission-statement h2 { font-weight: 700; font-size: 2.25rem; text-align: center; - margin-top: 4rem; + margin: 0; + padding-top: 4rem; } .mission-statement p { @@ -165,6 +177,7 @@ body nav { .pad-datalist { max-width: 56rem; + margin-bottom: 1rem; } .break-column { @@ -183,6 +196,17 @@ ul { flex-direction: column; } +.body { + flex-grow: 1; + background: linear-gradient( + to bottom right, + #d1fae5, /* emerald-100 */ + #f0fdfa, /* teal-50 */ + #dbeafe, /* blue-100 */ + #c7d2fe /* indigo-200 */ + ); +} + .recent-pad:hover a { color: var(--ep-color); } @@ -208,9 +232,27 @@ a, a:visited, a:hover, a:active { border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #e5e7eb; - width: 100%; } .card-content { padding: 1.5rem; } + +@media (max-width: 640px) { + #inner { + max-width: 100%; + padding: 0 1rem; + } + + .mission-statement p { + max-width: 100%; + } + + .pad-datalist { + max-width: 90%; + } + + .mission-statement h2 { + font-size: 1.5rem; + } +} diff --git a/src/static/skins/colibris/index.js b/src/static/skins/colibris/index.js index 9bc40fc90..3001fa5f8 100644 --- a/src/static/skins/colibris/index.js +++ b/src/static/skins/colibris/index.js @@ -1,10 +1,32 @@ 'use strict'; +window.addEventListener('pageshow', (event) => { + if (event.persisted) { + if (document.readyState === 'complete' || document.readyState === 'interactive') { + window.customStart(); + } else { + window.addEventListener('DOMContentLoaded', window.customStart, {once: true}); + } + } +}); window.customStart = () => { + document.getElementById('recent-pads').replaceChildren() // define your javascript here // jquery is available - except index.js // you can load extra scripts with $.getScript http://api.jquery.com/jQuery.getScript/ + const divHoldingPlaceHolderLabel = document + .querySelector('[data-l10n-id="index.placeholderPadEnter"]'); + + const observer = new MutationObserver(() => { + document.querySelector('#go2Name input') + .setAttribute('placeholder', divHoldingPlaceHolderLabel.textContent); + }); + + observer + .observe(divHoldingPlaceHolderLabel, {childList: true, subtree: true, characterData: true}); + + const recentPadList = document.getElementById('recent-pads'); const parentStyle = recentPadList.parentElement.style; const recentPadListHeading = document.querySelector('[data-l10n-id="index.recentPads"]'); @@ -14,6 +36,12 @@ window.customStart = () => { recentPadListData = JSON.parse(recentPadsFromLocalStorage); } + // Remove duplicates based on pad name and sort by timestamp + recentPadListData = recentPadListData.filter( + (pad, index, self) => + index === self.findIndex((p) => p.name === pad.name) + ).sort((a, b) => new Date(a.timestamp) > new Date(b.timestamp) ? -1 : 1); + if (recentPadListData.length === 0) { recentPadListHeading.setAttribute('data-l10n-id', 'index.recentPadsEmpty'); parentStyle.display = 'flex'; diff --git a/src/static/skins/colibris/pad.js b/src/static/skins/colibris/pad.js index 95c3cb626..1e7a85b3f 100644 --- a/src/static/skins/colibris/pad.js +++ b/src/static/skins/colibris/pad.js @@ -1,11 +1,13 @@ 'use strict'; +const MAX_PADS_IN_HISTORY = 3; + window.customStart = () => { $('#pad_title').show(); $('.buttonicon').on('mousedown', function () { $(this).parent().addClass('pressed'); }); $('.buttonicon').on('mouseup', function () { $(this).parent().removeClass('pressed'); }); - const pathSegments = window.location.pathname.split('/').filter(Boolean); + const pathSegments = window.location.pathname.split('/'); const padName = pathSegments[pathSegments.length - 1]; const recentPads = localStorage.getItem('recentPads'); if (recentPads == null) { @@ -13,13 +15,13 @@ window.customStart = () => { } const recentPadsList = JSON.parse(localStorage.getItem('recentPads')); if (!recentPadsList.some((pad) => pad.name === padName)) { - if (recentPadsList.length >= 10) { + if (recentPadsList.length >= MAX_PADS_IN_HISTORY) { recentPadsList.shift(); // Remove the oldest pad if we have more than 10 } recentPadsList.push({ name: padName, timestamp: new Date().toISOString(), // Store the timestamp for sorting - members: 0, + members: 1, }); localStorage.setItem('recentPads', JSON.stringify(recentPadsList)); } else { diff --git a/src/templates/index.html b/src/templates/index.html index 5f60d374c..d46bd3405 100644 --- a/src/templates/index.html +++ b/src/templates/index.html @@ -109,7 +109,7 @@ width: 45px; height: 38px; } - nav { + nav, .mission-statement, .pad-datalist { display: none; } @@ -143,11 +143,10 @@ +
-

Create and share documents

-

- Etherpad allows you to edit documents collaboratively in real-time, much like a live multi-player editor that runs in your browser. -

+

+

@@ -161,18 +160,20 @@ <% } %>
- +
<% } %>
<% e.end_block(); %>
+

+ <% e.begin_block("indexCustomScripts"); %> From 039fa93efe25e2b23f8d993ce648e4324b12fbee Mon Sep 17 00:00:00 2001 From: SamTV12345 <40429738+samtv12345@users.noreply.github.com> Date: Fri, 1 Aug 2025 21:53:34 +0200 Subject: [PATCH 32/51] feat: moved to fetch instead of ajax call --- src/node/hooks/express/apicalls.ts | 27 +++++++++++++++++++++++++-- src/static/js/pad.ts | 23 +++++++++++------------ 2 files changed, 36 insertions(+), 14 deletions(-) diff --git a/src/node/hooks/express/apicalls.ts b/src/node/hooks/express/apicalls.ts index 91c44e389..ee7b6d5df 100644 --- a/src/node/hooks/express/apicalls.ts +++ b/src/node/hooks/express/apicalls.ts @@ -1,16 +1,39 @@ 'use strict'; +import express from "express"; + const log4js = require('log4js'); const clientLogger = log4js.getLogger('client'); const {Formidable} = require('formidable'); const apiHandler = require('../../handler/APIHandler'); const util = require('util'); + +function objectAsString(obj) { + var output = ''; + for (var property in obj) { + if(obj.hasOwnProperty(property) && typeof obj[property] !== 'function') { + var value = obj[property]; + if(typeof value === 'object' && !Array.isArray(value) && value !== null) { + value = '{' + objectAsString(value) + '}'; + } + output += property + ': ' + value +'; '; + } + } + return output; +} + exports.expressPreSession = async (hookName:string, {app}:any) => { + app.use(express.json()); // The Etherpad client side sends information about how a disconnect happened app.post('/ep/pad/connection-diagnostic-info', async (req:any, res:any) => { - const [fields, files] = await (new Formidable({})).parse(req); - clientLogger.info(`DIAGNOSTIC-INFO: ${fields.diagnosticInfo}`); + if (!req.body ||!req.body.diagnosticInfo || typeof req.body.diagnosticInfo !== 'object') { + clientLogger.warn('DIAGNOSTIC-INFO: No diagnostic info provided'); + res.status(400).end('No diagnostic info provided'); + return; + } + + clientLogger.info(`DIAGNOSTIC-INFO: ${objectAsString(req.body.diagnosticInfo)}`); res.end('OK'); }); diff --git a/src/static/js/pad.ts b/src/static/js/pad.ts index e94611fcd..7c3fa6ca5 100644 --- a/src/static/js/pad.ts +++ b/src/static/js/pad.ts @@ -725,18 +725,17 @@ const pad = { } }, asyncSendDiagnosticInfo: () => { - window.setTimeout(() => { - $.ajax( - { - type: 'post', - url: '../ep/pad/connection-diagnostic-info', - data: { - diagnosticInfo: JSON.stringify(pad.diagnosticInfo), - }, - success: () => {}, - error: () => {}, - }); - }, 0); + fetch('../ep/pad/connection-diagnostic-info', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + diagnosticInfo: pad.diagnosticInfo, + }), + }).catch((error) => { + console.error('Error sending diagnostic info:', error); + }) }, forceReconnect: () => { $('form#reconnectform input.padId').val(pad.getPadId()); From d06027144b77d0f37e06b1557b23fbab3392082f Mon Sep 17 00:00:00 2001 From: SamTV12345 <40429738+samtv12345@users.noreply.github.com> Date: Fri, 1 Aug 2025 21:58:10 +0200 Subject: [PATCH 33/51] chore: fixed objectAsString --- src/node/hooks/express/apicalls.ts | 8 ++++---- src/static/js/pad.ts | 1 + 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/node/hooks/express/apicalls.ts b/src/node/hooks/express/apicalls.ts index ee7b6d5df..946e86549 100644 --- a/src/node/hooks/express/apicalls.ts +++ b/src/node/hooks/express/apicalls.ts @@ -9,11 +9,11 @@ const apiHandler = require('../../handler/APIHandler'); const util = require('util'); -function objectAsString(obj) { - var output = ''; - for (var property in obj) { +function objectAsString(obj: any): string { + let output = ''; + for (const property in obj) { if(obj.hasOwnProperty(property) && typeof obj[property] !== 'function') { - var value = obj[property]; + let value = obj[property]; if(typeof value === 'object' && !Array.isArray(value) && value !== null) { value = '{' + objectAsString(value) + '}'; } diff --git a/src/static/js/pad.ts b/src/static/js/pad.ts index 7c3fa6ca5..5edcb1119 100644 --- a/src/static/js/pad.ts +++ b/src/static/js/pad.ts @@ -725,6 +725,7 @@ const pad = { } }, asyncSendDiagnosticInfo: () => { + const currentUrl = window.location.href; fetch('../ep/pad/connection-diagnostic-info', { method: 'POST', headers: { From 9ee09ec8f25eeb1e99d09bb571058d0a07ce8406 Mon Sep 17 00:00:00 2001 From: SamTV12345 <40429738+samtv12345@users.noreply.github.com> Date: Fri, 1 Aug 2025 22:12:05 +0200 Subject: [PATCH 34/51] chore: use express session upstream --- pnpm-lock.yaml | 53 ++++++++++++++++++++++++------------------------ src/package.json | 2 +- 2 files changed, 27 insertions(+), 28 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index af5657b7f..a5634eebd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -140,9 +140,6 @@ importers: src: dependencies: - '@etherpad/express-session': - specifier: ^1.18.4 - version: 1.18.4 async: specifier: ^3.2.6 version: 3.2.6 @@ -170,6 +167,9 @@ importers: express-rate-limit: specifier: ^8.0.0 version: 8.0.1(express@4.21.2) + express-session: + specifier: ^1.18.2 + version: 1.18.2 fast-deep-equal: specifier: ^3.1.3 version: 3.1.3 @@ -1092,10 +1092,6 @@ packages: resolution: {integrity: sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@etherpad/express-session@1.18.4': - resolution: {integrity: sha512-uiUtcfv0hyEA+Lur00V6yINaa/qe09HiFqmc+DzSXYChILFLgOV3G4p4XJkIRrUOGmqaJRiliB1BoQIiY3Tnjw==} - engines: {node: '>= 0.8.0'} - '@humanfs/core@0.19.1': resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} engines: {node: '>=18.18.0'} @@ -2544,9 +2540,8 @@ packages: cookie-signature@1.0.6: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} - cookie@0.4.2: - resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} - engines: {node: '>= 0.6'} + cookie-signature@1.0.7: + resolution: {integrity: sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==} cookie@0.7.1: resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} @@ -3070,6 +3065,10 @@ packages: peerDependencies: express: '>= 4.11' + express-session@1.18.2: + resolution: {integrity: sha512-SZjssGQC7TzTs9rpPDuUrR23GNZ9+2+IkA/+IJWmvQilTr5OSliEHGF+D9scbIpdC6yGtTI0/VhaHoVes2AN/A==} + engines: {node: '>= 0.8.0'} + express@4.21.2: resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} engines: {node: '>= 0.10.0'} @@ -4025,8 +4024,8 @@ packages: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} - on-headers@1.0.2: - resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + on-headers@1.1.0: + resolution: {integrity: sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==} engines: {node: '>= 0.8'} once@1.4.0: @@ -5827,19 +5826,6 @@ snapshots: '@eslint/core': 0.15.1 levn: 0.4.1 - '@etherpad/express-session@1.18.4': - dependencies: - cookie: 0.4.2 - cookie-signature: 1.0.6 - debug: 4.4.0 - depd: 2.0.0 - on-headers: 1.0.2 - parseurl: 1.3.3 - safe-buffer: 5.2.1 - uid-safe: 2.1.5 - transitivePeerDependencies: - - supports-color - '@humanfs/core@0.19.1': {} '@humanfs/node@0.16.6': @@ -7324,7 +7310,7 @@ snapshots: cookie-signature@1.0.6: {} - cookie@0.4.2: {} + cookie-signature@1.0.7: {} cookie@0.7.1: {} @@ -7991,6 +7977,19 @@ snapshots: express: 4.21.2 ip-address: 10.0.1 + express-session@1.18.2: + dependencies: + cookie: 0.7.2 + cookie-signature: 1.0.7 + debug: 2.6.9 + depd: 2.0.0 + on-headers: 1.1.0 + parseurl: 1.3.3 + safe-buffer: 5.2.1 + uid-safe: 2.1.5 + transitivePeerDependencies: + - supports-color + express@4.21.2: dependencies: accepts: 1.3.8 @@ -9086,7 +9085,7 @@ snapshots: dependencies: ee-first: 1.1.1 - on-headers@1.0.2: {} + on-headers@1.1.0: {} once@1.4.0: dependencies: diff --git a/src/package.json b/src/package.json index e9c477dbe..e77570f2e 100644 --- a/src/package.json +++ b/src/package.json @@ -30,7 +30,7 @@ } ], "dependencies": { - "@etherpad/express-session": "^1.18.4", + "express-session": "^1.18.2", "async": "^3.2.6", "axios": "^1.10.0", "cookie-parser": "^1.4.7", From c180f5526150acf457187481b44e7cb08c69e6ce Mon Sep 17 00:00:00 2001 From: SamTV12345 <40429738+samtv12345@users.noreply.github.com> Date: Fri, 1 Aug 2025 22:16:32 +0200 Subject: [PATCH 35/51] chore: use express session upstream --- src/node/db/SessionStore.ts | 5 +++-- src/node/hooks/express.ts | 3 +-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/node/db/SessionStore.ts b/src/node/db/SessionStore.ts index 0b398efad..ab652860f 100644 --- a/src/node/db/SessionStore.ts +++ b/src/node/db/SessionStore.ts @@ -1,13 +1,14 @@ 'use strict'; const DB = require('./DB'); -const Store = require('@etherpad/express-session').Store; +import expressSession from 'express-session' + const log4js = require('log4js'); const util = require('util'); const logger = log4js.getLogger('SessionStore'); -class SessionStore extends Store { +class SessionStore extends expressSession.Store { /** * @param {?number} [refresh] - How often (in milliseconds) `touch()` will update a session's * database record with the cookie's latest expiration time. If the difference between the diff --git a/src/node/hooks/express.ts b/src/node/hooks/express.ts index 09097edb1..0b0d10c97 100644 --- a/src/node/hooks/express.ts +++ b/src/node/hooks/express.ts @@ -8,8 +8,7 @@ import _ from 'underscore'; import cookieParser from 'cookie-parser'; import events from 'events'; import express from 'express'; -// @ts-ignore -import expressSession from '@etherpad/express-session'; +import expressSession from 'express-session'; import fs from 'fs'; const hooks = require('../../static/js/pluginfw/hooks'); import log4js from 'log4js'; From ed3976afaad4f0a571c56486459270adfa70e3b4 Mon Sep 17 00:00:00 2001 From: SamTV12345 <40429738+samtv12345@users.noreply.github.com> Date: Fri, 1 Aug 2025 22:27:55 +0200 Subject: [PATCH 36/51] chore: use express session upstream --- pnpm-lock.yaml | 22 ++++++++++++++++++++++ src/node/db/SessionStore.ts | 5 +++-- src/node/hooks/express.ts | 9 ++++----- src/package.json | 4 +++- 4 files changed, 32 insertions(+), 8 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a5634eebd..5cf1ac270 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -288,9 +288,15 @@ importers: '@types/async': specifier: ^3.2.24 version: 3.2.24 + '@types/cookie-parser': + specifier: ^1.4.9 + version: 1.4.9(@types/express@4.17.21) '@types/express': specifier: ^4.17.21 version: 4.17.21 + '@types/express-session': + specifier: ^1.18.2 + version: 1.18.2 '@types/formidable': specifier: ^3.4.5 version: 3.4.5 @@ -1751,6 +1757,11 @@ packages: '@types/content-disposition@0.5.9': resolution: {integrity: sha512-8uYXI3Gw35MhiVYhG3s295oihrxRyytcRHjSjqnqZVDDy/xcGBRny7+Xj1Wgfhv5QzRtN2hB2dVRBUX9XW3UcQ==} + '@types/cookie-parser@1.4.9': + resolution: {integrity: sha512-tGZiZ2Gtc4m3wIdLkZ8mkj1T6CEHb35+VApbL2T14Dew8HA7c+04dmKqsKRNC+8RJPm16JEK0tFSwdZqubfc4g==} + peerDependencies: + '@types/express': '*' + '@types/cookiejar@2.1.5': resolution: {integrity: sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==} @@ -1775,6 +1786,9 @@ packages: '@types/express-serve-static-core@4.19.6': resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} + '@types/express-session@1.18.2': + resolution: {integrity: sha512-k+I0BxwVXsnEU2hV77cCobC08kIsn4y44C3gC0b46uxZVMaXA04lSPgRLR/bSL2w0t0ShJiG8o4jPzRG/nscFg==} + '@types/express@4.17.21': resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} @@ -6414,6 +6428,10 @@ snapshots: '@types/content-disposition@0.5.9': {} + '@types/cookie-parser@1.4.9(@types/express@4.17.21)': + dependencies: + '@types/express': 4.17.21 + '@types/cookiejar@2.1.5': {} '@types/cookies@0.9.1': @@ -6444,6 +6462,10 @@ snapshots: '@types/range-parser': 1.2.7 '@types/send': 0.17.4 + '@types/express-session@1.18.2': + dependencies: + '@types/express': 4.17.21 + '@types/express@4.17.21': dependencies: '@types/body-parser': 1.19.5 diff --git a/src/node/db/SessionStore.ts b/src/node/db/SessionStore.ts index ab652860f..15eb5a971 100644 --- a/src/node/db/SessionStore.ts +++ b/src/node/db/SessionStore.ts @@ -1,4 +1,5 @@ -'use strict'; +// @ts-nocheck + const DB = require('./DB'); import expressSession from 'express-session' @@ -20,7 +21,7 @@ class SessionStore extends expressSession.Store { * Etherpad is restarted. Use `null` to prevent `touch()` from ever updating the record. * Ignored if the cookie does not expire. */ - constructor(refresh = null) { + constructor(refresh: number | null = null) { super(); this._refresh = refresh; // Maps session ID to an object with the following properties: diff --git a/src/node/hooks/express.ts b/src/node/hooks/express.ts index 0b0d10c97..633a85ae8 100644 --- a/src/node/hooks/express.ts +++ b/src/node/hooks/express.ts @@ -4,11 +4,10 @@ import {Socket} from "node:net"; import type {MapArrayType} from "../types/MapType"; import _ from 'underscore'; -// @ts-ignore import cookieParser from 'cookie-parser'; import events from 'events'; import express from 'express'; -import expressSession from 'express-session'; +import expressSession, {Store} from 'express-session'; import fs from 'fs'; const hooks = require('../../static/js/pluginfw/hooks'); import log4js from 'log4js'; @@ -23,7 +22,7 @@ import SecretRotator from '../security/SecretRotator'; let secretRotator: SecretRotator|null = null; const logger = log4js.getLogger('http'); let serverName:string; -let sessionStore: { shutdown: () => void; } | null; +let sessionStore: Store | null; const sockets:Set = new Set(); const socketsEvents = new events.EventEmitter(); const startTime = stats.settableGauge('httpStartTime'); @@ -58,6 +57,7 @@ const closeServer = async () => { startTime.setValue(0); logger.info('HTTP server closed'); } + // @ts-ignore if (sessionStore) sessionStore.shutdown(); sessionStore = null; if (secretRotator) secretRotator.stop(); @@ -197,10 +197,9 @@ exports.restartServer = async () => { sessionStore = new SessionStore(settings.cookie.sessionRefreshInterval); exports.sessionMiddleware = expressSession({ - propagateTouch: true, rolling: true, secret, - store: sessionStore, + store: sessionStore ?? undefined, resave: false, saveUninitialized: false, // Set the cookie name to a javascript identifier compatible string. Makes code handling it diff --git a/src/package.json b/src/package.json index e77570f2e..2e359ff02 100644 --- a/src/package.json +++ b/src/package.json @@ -30,7 +30,6 @@ } ], "dependencies": { - "express-session": "^1.18.2", "async": "^3.2.6", "axios": "^1.10.0", "cookie-parser": "^1.4.7", @@ -40,6 +39,7 @@ "esbuild": "^0.25.8", "express": "4.21.2", "express-rate-limit": "^8.0.0", + "express-session": "^1.18.2", "fast-deep-equal": "^3.1.3", "find-root": "1.1.0", "formidable": "^3.5.4", @@ -85,7 +85,9 @@ "devDependencies": { "@playwright/test": "^1.54.1", "@types/async": "^3.2.24", + "@types/cookie-parser": "^1.4.9", "@types/express": "^4.17.21", + "@types/express-session": "^1.18.2", "@types/formidable": "^3.4.5", "@types/http-errors": "^2.0.5", "@types/jquery": "^3.5.32", From 123d951e3016bf913efccc35a42531fd53ca962e Mon Sep 17 00:00:00 2001 From: SamTV12345 <40429738+SamTV12345@users.noreply.github.com> Date: Fri, 1 Aug 2025 23:20:52 +0200 Subject: [PATCH 37/51] Feature/small updates (#7056) * chore: use express session upstream * chore: use express session upstream * chore: use express session upstream * chore: updates etherpad-cli-client and vitepress * chore: updates etherpad-cli-client and vitepress --- doc/package.json | 2 +- pnpm-lock.yaml | 1003 +++++++++++----------------------------------- src/package.json | 2 +- 3 files changed, 234 insertions(+), 773 deletions(-) diff --git a/doc/package.json b/doc/package.json index cf5860d2b..50bb14a74 100644 --- a/doc/package.json +++ b/doc/package.json @@ -1,6 +1,6 @@ { "devDependencies": { - "vitepress": "^1.6.3" + "vitepress": "^2.0.0-alpha.9" }, "scripts": { "docs:dev": "vitepress dev", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5cf1ac270..798131ad8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -135,8 +135,8 @@ importers: doc: devDependencies: vitepress: - specifier: ^1.6.3 - version: 1.6.3(@algolia/client-search@5.23.2)(@types/node@24.1.0)(axios@1.10.0)(jwt-decode@4.0.0)(postcss@8.5.6)(typescript@5.8.3) + specifier: ^2.0.0-alpha.9 + version: 2.0.0-alpha.9(@types/node@24.1.0)(axios@1.10.0)(jwt-decode@4.0.0)(postcss@8.5.6)(tsx@4.20.3)(typescript@5.8.3) src: dependencies: @@ -355,8 +355,8 @@ importers: specifier: ^4.0.4 version: 4.0.4(eslint@9.32.0)(typescript@5.8.3) etherpad-cli-client: - specifier: ^3.0.2 - version: 3.0.2 + specifier: ^3.0.4 + version: 3.0.4 mocha: specifier: ^11.7.1 version: 11.7.1 @@ -402,78 +402,6 @@ importers: packages: - '@algolia/autocomplete-core@1.17.7': - resolution: {integrity: sha512-BjiPOW6ks90UKl7TwMv7oNQMnzU+t/wk9mgIDi6b1tXpUek7MW0lbNOUHpvam9pe3lVCf4xPFT+lK7s+e+fs7Q==} - - '@algolia/autocomplete-plugin-algolia-insights@1.17.7': - resolution: {integrity: sha512-Jca5Ude6yUOuyzjnz57og7Et3aXjbwCSDf/8onLHSQgw1qW3ALl9mrMWaXb5FmPVkV3EtkD2F/+NkT6VHyPu9A==} - peerDependencies: - search-insights: '>= 1 < 3' - - '@algolia/autocomplete-preset-algolia@1.17.7': - resolution: {integrity: sha512-ggOQ950+nwbWROq2MOCIL71RE0DdQZsceqrg32UqnhDz8FlO9rL8ONHNsI2R1MH0tkgVIDKI/D0sMiUchsFdWA==} - peerDependencies: - '@algolia/client-search': '>= 4.9.1 < 6' - algoliasearch: '>= 4.9.1 < 6' - - '@algolia/autocomplete-shared@1.17.7': - resolution: {integrity: sha512-o/1Vurr42U/qskRSuhBH+VKxMvkkUVTLU6WZQr+L5lGZZLYWyhdzWjW0iGXY7EkwRTjBqvN2EsR81yCTGV/kmg==} - peerDependencies: - '@algolia/client-search': '>= 4.9.1 < 6' - algoliasearch: '>= 4.9.1 < 6' - - '@algolia/client-abtesting@5.23.2': - resolution: {integrity: sha512-EudQGeYEzviwqPH8WoqP5VTQssE/PW6sEdL0zzOyKt2bWnWoUp5Rnm67sCbxYDR44JpUchbkul0PfWrSYsBPjQ==} - engines: {node: '>= 14.0.0'} - - '@algolia/client-analytics@5.23.2': - resolution: {integrity: sha512-zmJrkZqWFu+ft+VRcttZZJhw5ElkhBtOArRzQOu9sRnrSSodBOdPRhAfvu8tG93Hv67wh5qQaTBwLxM58AxuMg==} - engines: {node: '>= 14.0.0'} - - '@algolia/client-common@5.23.2': - resolution: {integrity: sha512-xaE6o4BMdqYBe0iB7JjX6G9/Qeqx6TSs9T4d6VJ0JHPsEyklSwIbKRiomPeYD7vzt2P4t45Io6QBhifOUP+0qg==} - engines: {node: '>= 14.0.0'} - - '@algolia/client-insights@5.23.2': - resolution: {integrity: sha512-F85hpMszbr5ZGt8gFdl7WOugELRF4z3R1nD9n3t7PZ/2alV7IR75UQY8/jMQDwij/lrnVaKbLeIvKKy6K7ncZw==} - engines: {node: '>= 14.0.0'} - - '@algolia/client-personalization@5.23.2': - resolution: {integrity: sha512-TuGaGKiQvQqFNR4c3Vdl+JBe6dkEPmRzVyIdWLrurOPEmFmVCKRxtSnLr0TVFl6de/JfDAXuchvtvLHFxv9P2A==} - engines: {node: '>= 14.0.0'} - - '@algolia/client-query-suggestions@5.23.2': - resolution: {integrity: sha512-fg2tZf7Sf51Icjfrea0dnfbfwlJ7kXMcRsWSJN3DZhEi/Y4mMmK9L0Cq8sby6HDzxy5T8xEWNWC3TMx5FvrJ6w==} - engines: {node: '>= 14.0.0'} - - '@algolia/client-search@5.23.2': - resolution: {integrity: sha512-XiTjt0qgsJk9OqvDpMwTgUaPAYNSQcMILRfSYiorgiyc71yYM7Lq1vRSVxhB0m51mrViWj4rIR6kSiJRXebqvQ==} - engines: {node: '>= 14.0.0'} - - '@algolia/ingestion@1.23.2': - resolution: {integrity: sha512-7ClIghvUFZTomBipD8Kor9Z5llcAM3lHUBG3VFOvUsOxOJcaMMONlBXyoFDfI1na+u14lVaGehY2oIEfY1eB0w==} - engines: {node: '>= 14.0.0'} - - '@algolia/monitoring@1.23.2': - resolution: {integrity: sha512-kF7KKd0iIIlaD70flFS+8+DNxRvIzrG9A22iWG5LDX225Kl6pITroq+qIUweqqyyoqJBYuIXKZGDGtnahEwQxw==} - engines: {node: '>= 14.0.0'} - - '@algolia/recommend@5.23.2': - resolution: {integrity: sha512-nAgS2O5ww8J4fgW6GAiybAdr0uH7MV74srPdx51cPJRpQBEge4WnYBaOWx1/a53qI0xwNtQudnEyBGUzsSYaAw==} - engines: {node: '>= 14.0.0'} - - '@algolia/requester-browser-xhr@5.23.2': - resolution: {integrity: sha512-yw6IzgQcwr4cZuoQCEoQui9G0rhVRGCyhPhW+gmrXe6oVr4qB50FV6mWGLA170+iqGVjPn/DVuOhExjBzcViTQ==} - engines: {node: '>= 14.0.0'} - - '@algolia/requester-fetch@5.23.2': - resolution: {integrity: sha512-8rmSybTwIqmGx3P0qkOEUkkyeIewglaKq6yUnxnVkBJbd4USfIZsw9cME1YUEHeZI7aOhTQg9QteUHSKXclF5A==} - engines: {node: '>= 14.0.0'} - - '@algolia/requester-node-http@5.23.2': - resolution: {integrity: sha512-IHpUiW3d3oVE5tCYqQN7X71/EbXI7f8WxU85eWW1UYEWEknqW3csdGctyIW7+qMHFfxeDymI1Wln/gGHHIXLIw==} - engines: {node: '>= 14.0.0'} - '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} @@ -519,10 +447,18 @@ packages: resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.25.9': resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.27.1': + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.25.9': resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} engines: {node: '>=6.9.0'} @@ -536,6 +472,11 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.28.0': + resolution: {integrity: sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/runtime@7.27.6': resolution: {integrity: sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==} engines: {node: '>=6.9.0'} @@ -552,6 +493,10 @@ packages: resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==} engines: {node: '>=6.9.0'} + '@babel/types@7.28.2': + resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==} + engines: {node: '>=6.9.0'} + '@csstools/color-helpers@5.0.2': resolution: {integrity: sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==} engines: {node: '>=18'} @@ -580,28 +525,11 @@ packages: resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} engines: {node: '>=18'} - '@docsearch/css@3.8.2': - resolution: {integrity: sha512-y05ayQFyUmCXze79+56v/4HpycYF3uFqB78pLPrSV5ZKAlDuIAAJNhaRi8tTdRNXh05yxX/TyNnzD6LwSM89vQ==} + '@docsearch/css@4.0.0-beta.5': + resolution: {integrity: sha512-bZy+gIXRZch0KNPC7MLoj4wkEcNVeEHBXOKJtonoJ2EaLw2vbO1PLGIXxtPgW7Ab7TvI0StkrmGuEQqE2q/1QA==} - '@docsearch/js@3.8.2': - resolution: {integrity: sha512-Q5wY66qHn0SwA7Taa0aDbHiJvaFJLOJyHmooQ7y8hlwwQLQ/5WwCcoX0g7ii04Qi2DJlHsd0XXzJ8Ypw9+9YmQ==} - - '@docsearch/react@3.8.2': - resolution: {integrity: sha512-xCRrJQlTt8N9GU0DG4ptwHRkfnSnD/YpdeaXe02iKfqs97TkZJv60yE+1eq/tjPcVnTW8dP5qLP7itifFVV5eg==} - peerDependencies: - '@types/react': '>= 16.8.0 < 19.0.0' - react: '>= 16.8.0 < 19.0.0' - react-dom: '>= 16.8.0 < 19.0.0' - search-insights: '>= 1 < 3' - peerDependenciesMeta: - '@types/react': - optional: true - react: - optional: true - react-dom: - optional: true - search-insights: - optional: true + '@docsearch/js@4.0.0-beta.5': + resolution: {integrity: sha512-FEtkwdblZDrTkd0mYwmfR94Vo/jgkXVIbS6vD2FcKazK/L5RmgNb7KAUDUWW11V/fIcS5XHvHprIxEnoB9gllQ==} '@emnapi/core@1.4.0': resolution: {integrity: sha512-H+N/FqT07NmLmt6OFFtDfwe8PNygprzBikrEMyQfgqSmT0vzE515Pz7R8izwB9q/zsH/MA64AKoul3sA6/CzVg==} @@ -612,12 +540,6 @@ packages: '@emnapi/wasi-threads@1.0.1': resolution: {integrity: sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==} - '@esbuild/aix-ppc64@0.21.5': - resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - '@esbuild/aix-ppc64@0.25.5': resolution: {integrity: sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==} engines: {node: '>=18'} @@ -630,12 +552,6 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.21.5': - resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - '@esbuild/android-arm64@0.25.5': resolution: {integrity: sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==} engines: {node: '>=18'} @@ -648,12 +564,6 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm@0.21.5': - resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - '@esbuild/android-arm@0.25.5': resolution: {integrity: sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==} engines: {node: '>=18'} @@ -666,12 +576,6 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-x64@0.21.5': - resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - '@esbuild/android-x64@0.25.5': resolution: {integrity: sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==} engines: {node: '>=18'} @@ -684,12 +588,6 @@ packages: cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.21.5': - resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-arm64@0.25.5': resolution: {integrity: sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==} engines: {node: '>=18'} @@ -702,12 +600,6 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.21.5': - resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - '@esbuild/darwin-x64@0.25.5': resolution: {integrity: sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==} engines: {node: '>=18'} @@ -720,12 +612,6 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.21.5': - resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - '@esbuild/freebsd-arm64@0.25.5': resolution: {integrity: sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==} engines: {node: '>=18'} @@ -738,12 +624,6 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.21.5': - resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - '@esbuild/freebsd-x64@0.25.5': resolution: {integrity: sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==} engines: {node: '>=18'} @@ -756,12 +636,6 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.21.5': - resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - '@esbuild/linux-arm64@0.25.5': resolution: {integrity: sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==} engines: {node: '>=18'} @@ -774,12 +648,6 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.21.5': - resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - '@esbuild/linux-arm@0.25.5': resolution: {integrity: sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==} engines: {node: '>=18'} @@ -792,12 +660,6 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.21.5': - resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - '@esbuild/linux-ia32@0.25.5': resolution: {integrity: sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==} engines: {node: '>=18'} @@ -810,12 +672,6 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.21.5': - resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - '@esbuild/linux-loong64@0.25.5': resolution: {integrity: sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==} engines: {node: '>=18'} @@ -828,12 +684,6 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.21.5': - resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - '@esbuild/linux-mips64el@0.25.5': resolution: {integrity: sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==} engines: {node: '>=18'} @@ -846,12 +696,6 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.21.5': - resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - '@esbuild/linux-ppc64@0.25.5': resolution: {integrity: sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==} engines: {node: '>=18'} @@ -864,12 +708,6 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.21.5': - resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - '@esbuild/linux-riscv64@0.25.5': resolution: {integrity: sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==} engines: {node: '>=18'} @@ -882,12 +720,6 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.21.5': - resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - '@esbuild/linux-s390x@0.25.5': resolution: {integrity: sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==} engines: {node: '>=18'} @@ -900,12 +732,6 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.21.5': - resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - '@esbuild/linux-x64@0.25.5': resolution: {integrity: sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==} engines: {node: '>=18'} @@ -930,12 +756,6 @@ packages: cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.21.5': - resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - '@esbuild/netbsd-x64@0.25.5': resolution: {integrity: sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==} engines: {node: '>=18'} @@ -960,12 +780,6 @@ packages: cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.21.5': - resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - '@esbuild/openbsd-x64@0.25.5': resolution: {integrity: sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==} engines: {node: '>=18'} @@ -984,12 +798,6 @@ packages: cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.21.5': - resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - '@esbuild/sunos-x64@0.25.5': resolution: {integrity: sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==} engines: {node: '>=18'} @@ -1002,12 +810,6 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.21.5': - resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - '@esbuild/win32-arm64@0.25.5': resolution: {integrity: sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==} engines: {node: '>=18'} @@ -1020,12 +822,6 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.21.5': - resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - '@esbuild/win32-ia32@0.25.5': resolution: {integrity: sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==} engines: {node: '>=18'} @@ -1038,12 +834,6 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.21.5': - resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - '@esbuild/win32-x64@0.25.5': resolution: {integrity: sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==} engines: {node: '>=18'} @@ -1118,8 +908,8 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} - '@iconify-json/simple-icons@1.2.30': - resolution: {integrity: sha512-KiVViMvnohpS5Q9WMP+4ksOhF3Dnq73Ba9hxBhUIIhp1r6RJ6edMZ8QGKZcFZp/B0/PZC4jAIhXcKKq73WZckQ==} + '@iconify-json/simple-icons@1.2.45': + resolution: {integrity: sha512-POOz+NjYQDy2fy1u+sIZi05N6r6oSooIGBaBcZLh7w8QOmLgJAZ6mBt+7Messp7ku9ucRua61if33BPoOZCwRQ==} '@iconify/types@2.0.0': resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} @@ -1436,6 +1226,9 @@ packages: '@rolldown/pluginutils@1.0.0-beta.11': resolution: {integrity: sha512-L/gAA/hyCSuzTF1ftlzUSI/IKr2POHsv1Dd78GfqkR83KMNuswWD61JxGV2L7nRwBBBSDr6R1gCkdTmoN7W4ag==} + '@rolldown/pluginutils@1.0.0-beta.29': + resolution: {integrity: sha512-NIJgOsMjbxAXvoGq/X0gD7VPMQ8j9g0BiDaNjVNVjvl+iKXxL3Jre0v31RmBYeLEmkbj2s02v8vFTbUXi5XS2Q==} + '@rollup/pluginutils@5.1.4': resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} engines: {node: '>=14.0.0'} @@ -1554,26 +1347,26 @@ packages: '@scarf/scarf@1.4.0': resolution: {integrity: sha512-xxeapPiUXdZAE3che6f3xogoJPeZgig6omHEy1rIY5WVsB3H2BHNnZH+gHG6x91SCWyQCzWGsuL2Hh3ClO5/qQ==} - '@shikijs/core@2.5.0': - resolution: {integrity: sha512-uu/8RExTKtavlpH7XqnVYBrfBkUc20ngXiX9NSrBhOVZYv/7XQRKUyhtkeflY5QsxC0GbJThCerruZfsUaSldg==} + '@shikijs/core@3.9.1': + resolution: {integrity: sha512-W5Vwen0KJCtR7KFRo+3JLGAqLUPsfW7e+wZ4yaRBGIogwI9ZlnkpRm9ZV8JtfzMxOkIwZwMmmN0hNErLtm3AYg==} - '@shikijs/engine-javascript@2.5.0': - resolution: {integrity: sha512-VjnOpnQf8WuCEZtNUdjjwGUbtAVKuZkVQ/5cHy/tojVVRIRtlWMYVjyWhxOmIq05AlSOv72z7hRNRGVBgQOl0w==} + '@shikijs/engine-javascript@3.9.1': + resolution: {integrity: sha512-4hGenxYpAmtALryKsdli2K58F0s7RBYpj/RSDcAAGfRM6eTEGI5cZnt86mr+d9/4BaZ5sH5s4p3VU5irIdhj9Q==} - '@shikijs/engine-oniguruma@2.5.0': - resolution: {integrity: sha512-pGd1wRATzbo/uatrCIILlAdFVKdxImWJGQ5rFiB5VZi2ve5xj3Ax9jny8QvkaV93btQEwR/rSz5ERFpC5mKNIw==} + '@shikijs/engine-oniguruma@3.9.1': + resolution: {integrity: sha512-WPlL/xqviwS3te4unSGGGfflKsuHLMI6tPdNYvgz/IygcBT6UiwDFSzjBKyebwi5GGSlXsjjdoJLIBnAplmEZw==} - '@shikijs/langs@2.5.0': - resolution: {integrity: sha512-Qfrrt5OsNH5R+5tJ/3uYBBZv3SuGmnRPejV9IlIbFH3HTGLDlkqgHymAlzklVmKBjAaVmkPkyikAV/sQ1wSL+w==} + '@shikijs/langs@3.9.1': + resolution: {integrity: sha512-Vyy2Yv9PP3Veh3VSsIvNncOR+O93wFsNYgN2B6cCCJlS7H9SKFYc55edsqernsg8WT/zam1cfB6llJsQWLnVhA==} - '@shikijs/themes@2.5.0': - resolution: {integrity: sha512-wGrk+R8tJnO0VMzmUExHR+QdSaPUl/NKs+a4cQQRWyoc3YFbUzuLEi/KWK1hj+8BfHRKm2jNhhJck1dfstJpiw==} + '@shikijs/themes@3.9.1': + resolution: {integrity: sha512-zAykkGECNICCMXpKeVvq04yqwaSuAIvrf8MjsU5bzskfg4XreU+O0B5wdNCYRixoB9snd3YlZ373WV5E/g5T9A==} - '@shikijs/transformers@2.5.0': - resolution: {integrity: sha512-SI494W5X60CaUwgi8u4q4m4s3YAFSxln3tzNjOSYqq54wlVgz0/NbbXEb3mdLbqMBztcmS7bVTaEd2w0qMmfeg==} + '@shikijs/transformers@3.9.1': + resolution: {integrity: sha512-QI4Bh565EhKGaefiDAyn5o7S8rQIUGXcOjZANSiQHa/KSGCyJTZP9UUiRbvdovVpaI/nagODX6mspFk/vcYOQQ==} - '@shikijs/types@2.5.0': - resolution: {integrity: sha512-ygl5yhxki9ZLNuNpPitBWvcy9fsSKKaRuO4BAlMyagszQidxcpLAr0qiW/q43DtSIDxO6hEbtYLiFZNXO/hdGw==} + '@shikijs/types@3.9.1': + resolution: {integrity: sha512-rqM3T7a0iM1oPKz9iaH/cVgNX9Vz1HERcUcXJ94/fulgVdwqfnhXzGxO4bLrAnh/o5CPLy3IcYedogfV+Ns0Qg==} '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} @@ -1834,21 +1627,12 @@ packages: '@types/koa@2.15.0': resolution: {integrity: sha512-7QFsywoE5URbuVnG3loe03QXuGajrnotr3gQkXcEBShORai23MePfFYdhz90FEtBBpkyIYQbVD+evKtloCgX3g==} - '@types/linkify-it@5.0.0': - resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} - '@types/lockfile@1.0.4': resolution: {integrity: sha512-Q8oFIHJHr+htLrTXN2FuZfg+WXVHQRwU/hC2GpUu+Q8e3FUM9EDkS2pE3R2AO1ZGu56f479ybdMCNF1DAu8cAQ==} - '@types/markdown-it@14.1.2': - resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==} - '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} - '@types/mdurl@2.0.0': - resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} - '@types/methods@1.1.4': resolution: {integrity: sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==} @@ -2135,11 +1919,11 @@ packages: peerDependencies: vite: ^4 || ^5 || ^6 || ^7.0.0-beta.0 - '@vitejs/plugin-vue@5.2.3': - resolution: {integrity: sha512-IYSLEQj4LgZZuoVpdSUCw3dIynTWQgPlaRP6iAvMle4My0HdYwr5g5wQAfwOeHQBmYwEkqF70nRpSilr6PoUDg==} - engines: {node: ^18.0.0 || >=20.0.0} + '@vitejs/plugin-vue@6.0.1': + resolution: {integrity: sha512-+MaE752hU0wfPFJEUAIxqw18+20euHHdxVtMvbFcOEpjEyfqXH/5DCoTHiVJ0J29EhTJdoTkjEv5YBKU9dnoTw==} + engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: - vite: ^5.0.0 || ^6.0.0 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 vue: ^3.2.25 '@vitest/expect@3.2.4': @@ -2171,49 +1955,51 @@ packages: '@vitest/utils@3.2.4': resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} - '@vue/compiler-core@3.5.13': - resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==} + '@vue/compiler-core@3.5.18': + resolution: {integrity: sha512-3slwjQrrV1TO8MoXgy3aynDQ7lslj5UqDxuHnrzHtpON5CBinhWjJETciPngpin/T3OuW3tXUf86tEurusnztw==} - '@vue/compiler-dom@3.5.13': - resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==} + '@vue/compiler-dom@3.5.18': + resolution: {integrity: sha512-RMbU6NTU70++B1JyVJbNbeFkK+A+Q7y9XKE2EM4NLGm2WFR8x9MbAtWxPPLdm0wUkuZv9trpwfSlL6tjdIa1+A==} - '@vue/compiler-sfc@3.5.13': - resolution: {integrity: sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==} + '@vue/compiler-sfc@3.5.18': + resolution: {integrity: sha512-5aBjvGqsWs+MoxswZPoTB9nSDb3dhd1x30xrrltKujlCxo48j8HGDNj3QPhF4VIS0VQDUrA1xUfp2hEa+FNyXA==} - '@vue/compiler-ssr@3.5.13': - resolution: {integrity: sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==} + '@vue/compiler-ssr@3.5.18': + resolution: {integrity: sha512-xM16Ak7rSWHkM3m22NlmcdIM+K4BMyFARAfV9hYFl+SFuRzrZ3uGMNW05kA5pmeMa0X9X963Kgou7ufdbpOP9g==} - '@vue/devtools-api@7.7.2': - resolution: {integrity: sha512-1syn558KhyN+chO5SjlZIwJ8bV/bQ1nOVTG66t2RbG66ZGekyiYNmRO7X9BJCXQqPsFHlnksqvPhce2qpzxFnA==} + '@vue/devtools-api@7.7.7': + resolution: {integrity: sha512-lwOnNBH2e7x1fIIbVT7yF5D+YWhqELm55/4ZKf45R9T8r9dE2AIOy8HKjfqzGsoTHFbWbr337O4E0A0QADnjBg==} - '@vue/devtools-kit@7.7.2': - resolution: {integrity: sha512-CY0I1JH3Z8PECbn6k3TqM1Bk9ASWxeMtTCvZr7vb+CHi+X/QwQm5F1/fPagraamKMAHVfuuCbdcnNg1A4CYVWQ==} + '@vue/devtools-kit@7.7.7': + resolution: {integrity: sha512-wgoZtxcTta65cnZ1Q6MbAfePVFxfM+gq0saaeytoph7nEa7yMXoi6sCPy4ufO111B9msnw0VOWjPEFCXuAKRHA==} - '@vue/devtools-shared@7.7.2': - resolution: {integrity: sha512-uBFxnp8gwW2vD6FrJB8JZLUzVb6PNRG0B0jBnHsOH8uKyva2qINY8PTF5Te4QlTbMDqU5K6qtJDr6cNsKWhbOA==} + '@vue/devtools-shared@7.7.7': + resolution: {integrity: sha512-+udSj47aRl5aKb0memBvcUG9koarqnxNM5yjuREvqwK6T3ap4mn3Zqqc17QrBFTqSMjr3HK1cvStEZpMDpfdyw==} - '@vue/reactivity@3.5.13': - resolution: {integrity: sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==} + '@vue/reactivity@3.5.18': + resolution: {integrity: sha512-x0vPO5Imw+3sChLM5Y+B6G1zPjwdOri9e8V21NnTnlEvkxatHEH5B5KEAJcjuzQ7BsjGrKtfzuQ5eQwXh8HXBg==} - '@vue/runtime-core@3.5.13': - resolution: {integrity: sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==} + '@vue/runtime-core@3.5.18': + resolution: {integrity: sha512-DUpHa1HpeOQEt6+3nheUfqVXRog2kivkXHUhoqJiKR33SO4x+a5uNOMkV487WPerQkL0vUuRvq/7JhRgLW3S+w==} - '@vue/runtime-dom@3.5.13': - resolution: {integrity: sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==} + '@vue/runtime-dom@3.5.18': + resolution: {integrity: sha512-YwDj71iV05j4RnzZnZtGaXwPoUWeRsqinblgVJwR8XTXYZ9D5PbahHQgsbmzUvCWNF6x7siQ89HgnX5eWkr3mw==} - '@vue/server-renderer@3.5.13': - resolution: {integrity: sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==} + '@vue/server-renderer@3.5.18': + resolution: {integrity: sha512-PvIHLUoWgSbDG7zLHqSqaCoZvHi6NNmfVFOqO+OnwvqMz/tqQr3FuGWS8ufluNddk7ZLBJYMrjcw1c6XzR12mA==} peerDependencies: - vue: 3.5.13 + vue: 3.5.18 - '@vue/shared@3.5.13': - resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==} + '@vue/shared@3.5.18': + resolution: {integrity: sha512-cZy8Dq+uuIXbxCZpuLd2GJdeSO/lIzIspC2WtkqIpje5QyFbvLaI5wZtdUjLHjGZrlVX6GilejatWwVYYRc8tA==} - '@vueuse/core@12.8.2': - resolution: {integrity: sha512-HbvCmZdzAu3VGi/pWYm5Ut+Kd9mn1ZHnn4L5G8kOQTPs/IwIAmJoBrmYk2ckLArgMXZj0AW3n5CAejLUO+PhdQ==} + '@vueuse/core@13.6.0': + resolution: {integrity: sha512-DJbD5fV86muVmBgS9QQPddVX7d9hWYswzlf4bIyUD2dj8GC46R1uNClZhVAmsdVts4xb2jwp1PbpuiA50Qee1A==} + peerDependencies: + vue: ^3.5.0 - '@vueuse/integrations@12.8.2': - resolution: {integrity: sha512-fbGYivgK5uBTRt7p5F3zy6VrETlV9RtZjBqd1/HxGdjdckBgBM4ugP8LHpjolqTj14TXTxSK1ZfgPbHYyGuH7g==} + '@vueuse/integrations@13.6.0': + resolution: {integrity: sha512-dVFdgwYvkYjdizRL3ESdUW+Hg84i9Yhuzs+Ec3kEcuzJmT5xhiL/IGdw4z394qSBngUQvFi+wbHwhHX3EGbAxQ==} peerDependencies: async-validator: ^4 axios: ^1 @@ -2226,7 +2012,8 @@ packages: nprogress: ^0.2 qrcode: ^1.5 sortablejs: ^1 - universal-cookie: ^7 + universal-cookie: ^7 || ^8 + vue: ^3.5.0 peerDependenciesMeta: async-validator: optional: true @@ -2253,11 +2040,13 @@ packages: universal-cookie: optional: true - '@vueuse/metadata@12.8.2': - resolution: {integrity: sha512-rAyLGEuoBJ/Il5AmFHiziCPdQzRt88VxR+Y/A/QhJ1EWtWqPBBAxTAFaSkviwEuOEZNtW8pvkPgoCZQ+HxqW1A==} + '@vueuse/metadata@13.6.0': + resolution: {integrity: sha512-rnIH7JvU7NjrpexTsl2Iwv0V0yAx9cw7+clymjKuLSXG0QMcLD0LDgdNmXic+qL0SGvgSVPEpM9IDO/wqo1vkQ==} - '@vueuse/shared@12.8.2': - resolution: {integrity: sha512-dznP38YzxZoNloI0qpEfpkms8knDtaoQ6Y/sfS0L7Yki4zh40LFHEhur0odJC6xTHG5dxWVPiUWBXn+wCG2s5w==} + '@vueuse/shared@13.6.0': + resolution: {integrity: sha512-pDykCSoS2T3fsQrYqf9SyF0QXWHmcGPQ+qiOVjlYSzlWd9dgppB2bFSM1GgKKkt7uzn0BBMV3IbJsUfHG2+BCg==} + peerDependencies: + vue: ^3.5.0 accepts@1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} @@ -2295,10 +2084,6 @@ packages: ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - algoliasearch@5.23.2: - resolution: {integrity: sha512-IhKP22Czzg8Y9HaF6aIb5aAHK2HBj4VAzLLnKEPUnxqDwxpryH9sXbm0NkeY7Cby9GlF81wF+AG/VulKDFBphg==} - engines: {node: '>= 14.0.0'} - ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -2409,8 +2194,8 @@ packages: binary-search@1.3.6: resolution: {integrity: sha512-nbE1WxOTTrUWIfsfZ4aHGYu5DOuNkbxGokjV6Z2kxfJK3uaAb8zNK1muzOeipoLHZjInT4Br88BHpzevc681xA==} - birpc@0.2.19: - resolution: {integrity: sha512-5WeXXAvTmitV1RqJFppT5QtUiz2p1mRSYU000Jkft5ZUCLJIk4uQriYNO50HknxKwM6jd8utNc66K1qGIwwWBQ==} + birpc@2.5.0: + resolution: {integrity: sha512-VSWO/W6nNQdyP520F1mhf+Lc2f8pjGQOtoHHm7Ze8Go1kX7akpVIrtTa0fn+HB0QJEDVacl6aO08YE0PgXfdnQ==} body-parser@1.20.3: resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} @@ -2776,9 +2561,6 @@ packages: electron-to-chromium@1.5.132: resolution: {integrity: sha512-QgX9EBvWGmvSRa74zqfnG7+Eno0Ak0vftBll0Pt2/z5b3bEGYL6OUXLgKPtvx73dn3dvwrlyVkjPKRRlhLYTEg==} - emoji-regex-xs@1.0.0: - resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} - emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -2846,11 +2628,6 @@ packages: resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} engines: {node: '>= 0.4'} - esbuild@0.21.5: - resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} - engines: {node: '>=12'} - hasBin: true - esbuild@0.25.5: resolution: {integrity: sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==} engines: {node: '>=18'} @@ -3064,8 +2841,8 @@ packages: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} - etherpad-cli-client@3.0.2: - resolution: {integrity: sha512-3uJxz8cx1WSVAPe7haqfwQj4N4wWDrei5BXBjH+e1BLPiEpqWtnMX29Qo9jWhqO9ctyPPHO0nZ1x/ZCNxMVCqA==} + etherpad-cli-client@3.0.4: + resolution: {integrity: sha512-0CgNY84Ox0fgRblOr0qlm03pRtr/qt6DCFNTh2m/EYOsu8KO8QWrGAUiCr53ny8/gtQJ4BhNxSiohaSH+Vhykw==} engines: {node: '>=18.0.0'} hasBin: true @@ -3161,8 +2938,8 @@ packages: flatted@3.3.3: resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} - focus-trap@7.6.4: - resolution: {integrity: sha512-xx560wGBk7seZ6y933idtjJQc1l+ck+pI3sKvhKozdBV1dRZoKhkW5xoCaFv9tQiX5RH1xfSxjuNu6g+lmN/gw==} + focus-trap@7.6.5: + resolution: {integrity: sha512-7Ke1jyybbbPZyZXFxEftUtxFGLMpE2n6A+z//m4CRDlj0hW+o3iYSmh8nFlYMurOiJVDmJRilUQtJr08KfIxlg==} follow-redirects@1.15.9: resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} @@ -3193,9 +2970,6 @@ packages: resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} engines: {node: '>=12.20.0'} - formidable@2.1.5: - resolution: {integrity: sha512-Oz5Hwvwak/DCaXVVUtPn4oLMLLy1CdclLKO1LFgU7XzDpVMUU5UjlSLpGMocyQNNk8F6IJW9M/YdooSn2MRI+Q==} - formidable@3.5.4: resolution: {integrity: sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug==} engines: {node: '>=14.0.0'} @@ -4045,8 +3819,11 @@ packages: once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - oniguruma-to-es@3.1.1: - resolution: {integrity: sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ==} + oniguruma-parser@0.12.1: + resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==} + + oniguruma-to-es@4.3.3: + resolution: {integrity: sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==} openapi-backend@5.13.0: resolution: {integrity: sha512-dE2f0MCpL2ZKctVG4w+Nl+1C4GQput5dQ4QYy6XeblGvM2Z1b3JcP2FzL6DrLzzDYEKTLgAaQM3jD7yhftwKSg==} @@ -4177,17 +3954,10 @@ packages: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} - postcss@8.5.3: - resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} - engines: {node: ^10 || ^12 || >=14} - postcss@8.5.6: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} - preact@10.26.4: - resolution: {integrity: sha512-KJhO7LBFTjP71d83trW+Ilnjbo+ySsaAgCfXOXUlmGzJ4ygYPWmysm77yg4emwfmoz3b22yvH5IsVFHbhUaH5w==} - prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -4544,8 +4314,8 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shiki@2.5.0: - resolution: {integrity: sha512-mI//trrsaiCIPsja5CNfsyNOqgAZUb6VpJA+340toL42UpzQlXpwRV9nch69X6gaUxrr9kaOOa6e3y3uAkGFxQ==} + shiki@3.9.1: + resolution: {integrity: sha512-HogZ8nMnv9VAQMrG+P7BleJFhrKHm3fi6CYyHRbUu61gJ0lpqLr6ecYEui31IYG1Cn9Bad7N2vf332iXHnn0bQ==} side-channel-list@1.0.0: resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} @@ -4706,11 +4476,6 @@ packages: resolution: {integrity: sha512-y/hkYGeXAj7wUMjxRbB21g/l6aAEituGXM9Rwl4o20+SX3e8YOSV6BxFXl+dL3Uk0mjSL3kCbNkwURm8/gEDig==} engines: {node: '>=14.18.0'} - superagent@8.1.2: - resolution: {integrity: sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==} - engines: {node: '>=6.4.0 <13 || >=14'} - deprecated: Please upgrade to superagent v10.2.2+, see release notes at https://github.com/forwardemail/superagent/releases/tag/v10.2.2 - maintenance is supported by Forward Email @ https://forwardemail.net - superjson@2.2.2: resolution: {integrity: sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==} engines: {node: '>=16'} @@ -5002,37 +4767,6 @@ packages: peerDependencies: vite: '>=2.6.0' - vite@5.4.19: - resolution: {integrity: sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - vite@7.0.6: resolution: {integrity: sha512-MHFiOENNBd+Bd9uvc8GEsIzdkn1JxMmEeYX35tI3fv0sJBUTfW5tQsoaOwuY4KhBI09A3dUJ/DXf2yxPVPUceg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -5073,15 +4807,18 @@ packages: yaml: optional: true - vitepress@1.6.3: - resolution: {integrity: sha512-fCkfdOk8yRZT8GD9BFqusW3+GggWYZ/rYncOfmgcDtP3ualNHCAg+Robxp2/6xfH1WwPHtGpPwv7mbA3qomtBw==} + vitepress@2.0.0-alpha.9: + resolution: {integrity: sha512-oUdZiT8ZCLf80Nw02Ha+v25aaabwik6iSMTEBXg46bMypNS/5i6AfMgFqpTuR5l3qG9XfNmau/SLT0sRiks2Zg==} hasBin: true peerDependencies: markdown-it-mathjax3: ^4 + oxc-minify: ^0.78.0 postcss: ^8 peerDependenciesMeta: markdown-it-mathjax3: optional: true + oxc-minify: + optional: true postcss: optional: true @@ -5117,8 +4854,8 @@ packages: resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} engines: {node: '>=0.10.0'} - vue@3.5.13: - resolution: {integrity: sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==} + vue@3.5.18: + resolution: {integrity: sha512-7W4Y4ZbMiQ3SEo+m9lnoNpV9xG7QVMLa+/0RFwwiAVkeYoyGXqWE85jabU4pllJNUzqfLShJ5YLptewhCWUgNA==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -5289,110 +5026,6 @@ packages: snapshots: - '@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.23.2)(algoliasearch@5.23.2)': - dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.23.2)(algoliasearch@5.23.2) - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.23.2)(algoliasearch@5.23.2) - transitivePeerDependencies: - - '@algolia/client-search' - - algoliasearch - - search-insights - - '@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.23.2)(algoliasearch@5.23.2)': - dependencies: - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.23.2)(algoliasearch@5.23.2) - transitivePeerDependencies: - - '@algolia/client-search' - - algoliasearch - - '@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.23.2)(algoliasearch@5.23.2)': - dependencies: - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.23.2)(algoliasearch@5.23.2) - '@algolia/client-search': 5.23.2 - algoliasearch: 5.23.2 - - '@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.23.2)(algoliasearch@5.23.2)': - dependencies: - '@algolia/client-search': 5.23.2 - algoliasearch: 5.23.2 - - '@algolia/client-abtesting@5.23.2': - dependencies: - '@algolia/client-common': 5.23.2 - '@algolia/requester-browser-xhr': 5.23.2 - '@algolia/requester-fetch': 5.23.2 - '@algolia/requester-node-http': 5.23.2 - - '@algolia/client-analytics@5.23.2': - dependencies: - '@algolia/client-common': 5.23.2 - '@algolia/requester-browser-xhr': 5.23.2 - '@algolia/requester-fetch': 5.23.2 - '@algolia/requester-node-http': 5.23.2 - - '@algolia/client-common@5.23.2': {} - - '@algolia/client-insights@5.23.2': - dependencies: - '@algolia/client-common': 5.23.2 - '@algolia/requester-browser-xhr': 5.23.2 - '@algolia/requester-fetch': 5.23.2 - '@algolia/requester-node-http': 5.23.2 - - '@algolia/client-personalization@5.23.2': - dependencies: - '@algolia/client-common': 5.23.2 - '@algolia/requester-browser-xhr': 5.23.2 - '@algolia/requester-fetch': 5.23.2 - '@algolia/requester-node-http': 5.23.2 - - '@algolia/client-query-suggestions@5.23.2': - dependencies: - '@algolia/client-common': 5.23.2 - '@algolia/requester-browser-xhr': 5.23.2 - '@algolia/requester-fetch': 5.23.2 - '@algolia/requester-node-http': 5.23.2 - - '@algolia/client-search@5.23.2': - dependencies: - '@algolia/client-common': 5.23.2 - '@algolia/requester-browser-xhr': 5.23.2 - '@algolia/requester-fetch': 5.23.2 - '@algolia/requester-node-http': 5.23.2 - - '@algolia/ingestion@1.23.2': - dependencies: - '@algolia/client-common': 5.23.2 - '@algolia/requester-browser-xhr': 5.23.2 - '@algolia/requester-fetch': 5.23.2 - '@algolia/requester-node-http': 5.23.2 - - '@algolia/monitoring@1.23.2': - dependencies: - '@algolia/client-common': 5.23.2 - '@algolia/requester-browser-xhr': 5.23.2 - '@algolia/requester-fetch': 5.23.2 - '@algolia/requester-node-http': 5.23.2 - - '@algolia/recommend@5.23.2': - dependencies: - '@algolia/client-common': 5.23.2 - '@algolia/requester-browser-xhr': 5.23.2 - '@algolia/requester-fetch': 5.23.2 - '@algolia/requester-node-http': 5.23.2 - - '@algolia/requester-browser-xhr@5.23.2': - dependencies: - '@algolia/client-common': 5.23.2 - - '@algolia/requester-fetch@5.23.2': - dependencies: - '@algolia/client-common': 5.23.2 - - '@algolia/requester-node-http@5.23.2': - dependencies: - '@algolia/client-common': 5.23.2 - '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.8 @@ -5474,8 +5107,12 @@ snapshots: '@babel/helper-string-parser@7.25.9': {} + '@babel/helper-string-parser@7.27.1': {} + '@babel/helper-validator-identifier@7.25.9': {} + '@babel/helper-validator-identifier@7.27.1': {} + '@babel/helper-validator-option@7.25.9': {} '@babel/helpers@7.27.0': @@ -5487,6 +5124,10 @@ snapshots: dependencies: '@babel/types': 7.27.0 + '@babel/parser@7.28.0': + dependencies: + '@babel/types': 7.28.2 + '@babel/runtime@7.27.6': {} '@babel/template@7.27.0': @@ -5512,6 +5153,11 @@ snapshots: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 + '@babel/types@7.28.2': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@csstools/color-helpers@5.0.2': {} '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': @@ -5532,27 +5178,9 @@ snapshots: '@csstools/css-tokenizer@3.0.4': {} - '@docsearch/css@3.8.2': {} + '@docsearch/css@4.0.0-beta.5': {} - '@docsearch/js@3.8.2(@algolia/client-search@5.23.2)': - dependencies: - '@docsearch/react': 3.8.2(@algolia/client-search@5.23.2) - preact: 10.26.4 - transitivePeerDependencies: - - '@algolia/client-search' - - '@types/react' - - react - - react-dom - - search-insights - - '@docsearch/react@3.8.2(@algolia/client-search@5.23.2)': - dependencies: - '@algolia/autocomplete-core': 1.17.7(@algolia/client-search@5.23.2)(algoliasearch@5.23.2) - '@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.23.2)(algoliasearch@5.23.2) - '@docsearch/css': 3.8.2 - algoliasearch: 5.23.2 - transitivePeerDependencies: - - '@algolia/client-search' + '@docsearch/js@4.0.0-beta.5': {} '@emnapi/core@1.4.0': dependencies: @@ -5570,153 +5198,102 @@ snapshots: tslib: 2.8.1 optional: true - '@esbuild/aix-ppc64@0.21.5': - optional: true - '@esbuild/aix-ppc64@0.25.5': optional: true '@esbuild/aix-ppc64@0.25.8': optional: true - '@esbuild/android-arm64@0.21.5': - optional: true - '@esbuild/android-arm64@0.25.5': optional: true '@esbuild/android-arm64@0.25.8': optional: true - '@esbuild/android-arm@0.21.5': - optional: true - '@esbuild/android-arm@0.25.5': optional: true '@esbuild/android-arm@0.25.8': optional: true - '@esbuild/android-x64@0.21.5': - optional: true - '@esbuild/android-x64@0.25.5': optional: true '@esbuild/android-x64@0.25.8': optional: true - '@esbuild/darwin-arm64@0.21.5': - optional: true - '@esbuild/darwin-arm64@0.25.5': optional: true '@esbuild/darwin-arm64@0.25.8': optional: true - '@esbuild/darwin-x64@0.21.5': - optional: true - '@esbuild/darwin-x64@0.25.5': optional: true '@esbuild/darwin-x64@0.25.8': optional: true - '@esbuild/freebsd-arm64@0.21.5': - optional: true - '@esbuild/freebsd-arm64@0.25.5': optional: true '@esbuild/freebsd-arm64@0.25.8': optional: true - '@esbuild/freebsd-x64@0.21.5': - optional: true - '@esbuild/freebsd-x64@0.25.5': optional: true '@esbuild/freebsd-x64@0.25.8': optional: true - '@esbuild/linux-arm64@0.21.5': - optional: true - '@esbuild/linux-arm64@0.25.5': optional: true '@esbuild/linux-arm64@0.25.8': optional: true - '@esbuild/linux-arm@0.21.5': - optional: true - '@esbuild/linux-arm@0.25.5': optional: true '@esbuild/linux-arm@0.25.8': optional: true - '@esbuild/linux-ia32@0.21.5': - optional: true - '@esbuild/linux-ia32@0.25.5': optional: true '@esbuild/linux-ia32@0.25.8': optional: true - '@esbuild/linux-loong64@0.21.5': - optional: true - '@esbuild/linux-loong64@0.25.5': optional: true '@esbuild/linux-loong64@0.25.8': optional: true - '@esbuild/linux-mips64el@0.21.5': - optional: true - '@esbuild/linux-mips64el@0.25.5': optional: true '@esbuild/linux-mips64el@0.25.8': optional: true - '@esbuild/linux-ppc64@0.21.5': - optional: true - '@esbuild/linux-ppc64@0.25.5': optional: true '@esbuild/linux-ppc64@0.25.8': optional: true - '@esbuild/linux-riscv64@0.21.5': - optional: true - '@esbuild/linux-riscv64@0.25.5': optional: true '@esbuild/linux-riscv64@0.25.8': optional: true - '@esbuild/linux-s390x@0.21.5': - optional: true - '@esbuild/linux-s390x@0.25.5': optional: true '@esbuild/linux-s390x@0.25.8': optional: true - '@esbuild/linux-x64@0.21.5': - optional: true - '@esbuild/linux-x64@0.25.5': optional: true @@ -5729,9 +5306,6 @@ snapshots: '@esbuild/netbsd-arm64@0.25.8': optional: true - '@esbuild/netbsd-x64@0.21.5': - optional: true - '@esbuild/netbsd-x64@0.25.5': optional: true @@ -5744,9 +5318,6 @@ snapshots: '@esbuild/openbsd-arm64@0.25.8': optional: true - '@esbuild/openbsd-x64@0.21.5': - optional: true - '@esbuild/openbsd-x64@0.25.5': optional: true @@ -5756,36 +5327,24 @@ snapshots: '@esbuild/openharmony-arm64@0.25.8': optional: true - '@esbuild/sunos-x64@0.21.5': - optional: true - '@esbuild/sunos-x64@0.25.5': optional: true '@esbuild/sunos-x64@0.25.8': optional: true - '@esbuild/win32-arm64@0.21.5': - optional: true - '@esbuild/win32-arm64@0.25.5': optional: true '@esbuild/win32-arm64@0.25.8': optional: true - '@esbuild/win32-ia32@0.21.5': - optional: true - '@esbuild/win32-ia32@0.25.5': optional: true '@esbuild/win32-ia32@0.25.8': optional: true - '@esbuild/win32-x64@0.21.5': - optional: true - '@esbuild/win32-x64@0.25.5': optional: true @@ -5853,7 +5412,7 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} - '@iconify-json/simple-icons@1.2.30': + '@iconify-json/simple-icons@1.2.45': dependencies: '@iconify/types': 2.0.0 @@ -6148,6 +5707,8 @@ snapshots: '@rolldown/pluginutils@1.0.0-beta.11': {} + '@rolldown/pluginutils@1.0.0-beta.29': {} + '@rollup/pluginutils@5.1.4(rollup@4.40.1)': dependencies: '@types/estree': 1.0.8 @@ -6222,40 +5783,38 @@ snapshots: '@scarf/scarf@1.4.0': {} - '@shikijs/core@2.5.0': + '@shikijs/core@3.9.1': dependencies: - '@shikijs/engine-javascript': 2.5.0 - '@shikijs/engine-oniguruma': 2.5.0 - '@shikijs/types': 2.5.0 + '@shikijs/types': 3.9.1 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 hast-util-to-html: 9.0.5 - '@shikijs/engine-javascript@2.5.0': + '@shikijs/engine-javascript@3.9.1': dependencies: - '@shikijs/types': 2.5.0 + '@shikijs/types': 3.9.1 '@shikijs/vscode-textmate': 10.0.2 - oniguruma-to-es: 3.1.1 + oniguruma-to-es: 4.3.3 - '@shikijs/engine-oniguruma@2.5.0': + '@shikijs/engine-oniguruma@3.9.1': dependencies: - '@shikijs/types': 2.5.0 + '@shikijs/types': 3.9.1 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/langs@2.5.0': + '@shikijs/langs@3.9.1': dependencies: - '@shikijs/types': 2.5.0 + '@shikijs/types': 3.9.1 - '@shikijs/themes@2.5.0': + '@shikijs/themes@3.9.1': dependencies: - '@shikijs/types': 2.5.0 + '@shikijs/types': 3.9.1 - '@shikijs/transformers@2.5.0': + '@shikijs/transformers@3.9.1': dependencies: - '@shikijs/core': 2.5.0 - '@shikijs/types': 2.5.0 + '@shikijs/core': 3.9.1 + '@shikijs/types': 3.9.1 - '@shikijs/types@2.5.0': + '@shikijs/types@3.9.1': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -6527,21 +6086,12 @@ snapshots: '@types/koa-compose': 3.2.8 '@types/node': 24.1.0 - '@types/linkify-it@5.0.0': {} - '@types/lockfile@1.0.4': {} - '@types/markdown-it@14.1.2': - dependencies: - '@types/linkify-it': 5.0.0 - '@types/mdurl': 2.0.0 - '@types/mdast@4.0.4': dependencies: '@types/unist': 3.0.3 - '@types/mdurl@2.0.0': {} - '@types/methods@1.1.4': {} '@types/mime-types@3.0.1': {} @@ -6865,10 +6415,11 @@ snapshots: transitivePeerDependencies: - '@swc/helpers' - '@vitejs/plugin-vue@5.2.3(vite@5.4.19(@types/node@24.1.0))(vue@3.5.13(typescript@5.8.3))': + '@vitejs/plugin-vue@6.0.1(vite@7.0.6(@types/node@24.1.0)(tsx@4.20.3))(vue@3.5.18(typescript@5.8.3))': dependencies: - vite: 5.4.19(@types/node@24.1.0) - vue: 3.5.13(typescript@5.8.3) + '@rolldown/pluginutils': 1.0.0-beta.29 + vite: 7.0.6(@types/node@24.1.0)(tsx@4.20.3) + vue: 3.5.18(typescript@5.8.3) '@vitest/expect@3.2.4': dependencies: @@ -6912,106 +6463,100 @@ snapshots: loupe: 3.2.0 tinyrainbow: 2.0.0 - '@vue/compiler-core@3.5.13': + '@vue/compiler-core@3.5.18': dependencies: - '@babel/parser': 7.27.0 - '@vue/shared': 3.5.13 + '@babel/parser': 7.28.0 + '@vue/shared': 3.5.18 entities: 4.5.0 estree-walker: 2.0.2 source-map-js: 1.2.1 - '@vue/compiler-dom@3.5.13': + '@vue/compiler-dom@3.5.18': dependencies: - '@vue/compiler-core': 3.5.13 - '@vue/shared': 3.5.13 + '@vue/compiler-core': 3.5.18 + '@vue/shared': 3.5.18 - '@vue/compiler-sfc@3.5.13': + '@vue/compiler-sfc@3.5.18': dependencies: - '@babel/parser': 7.27.0 - '@vue/compiler-core': 3.5.13 - '@vue/compiler-dom': 3.5.13 - '@vue/compiler-ssr': 3.5.13 - '@vue/shared': 3.5.13 + '@babel/parser': 7.28.0 + '@vue/compiler-core': 3.5.18 + '@vue/compiler-dom': 3.5.18 + '@vue/compiler-ssr': 3.5.18 + '@vue/shared': 3.5.18 estree-walker: 2.0.2 magic-string: 0.30.17 - postcss: 8.5.3 + postcss: 8.5.6 source-map-js: 1.2.1 - '@vue/compiler-ssr@3.5.13': + '@vue/compiler-ssr@3.5.18': dependencies: - '@vue/compiler-dom': 3.5.13 - '@vue/shared': 3.5.13 + '@vue/compiler-dom': 3.5.18 + '@vue/shared': 3.5.18 - '@vue/devtools-api@7.7.2': + '@vue/devtools-api@7.7.7': dependencies: - '@vue/devtools-kit': 7.7.2 + '@vue/devtools-kit': 7.7.7 - '@vue/devtools-kit@7.7.2': + '@vue/devtools-kit@7.7.7': dependencies: - '@vue/devtools-shared': 7.7.2 - birpc: 0.2.19 + '@vue/devtools-shared': 7.7.7 + birpc: 2.5.0 hookable: 5.5.3 mitt: 3.0.1 perfect-debounce: 1.0.0 speakingurl: 14.0.1 superjson: 2.2.2 - '@vue/devtools-shared@7.7.2': + '@vue/devtools-shared@7.7.7': dependencies: rfdc: 1.4.1 - '@vue/reactivity@3.5.13': + '@vue/reactivity@3.5.18': dependencies: - '@vue/shared': 3.5.13 + '@vue/shared': 3.5.18 - '@vue/runtime-core@3.5.13': + '@vue/runtime-core@3.5.18': dependencies: - '@vue/reactivity': 3.5.13 - '@vue/shared': 3.5.13 + '@vue/reactivity': 3.5.18 + '@vue/shared': 3.5.18 - '@vue/runtime-dom@3.5.13': + '@vue/runtime-dom@3.5.18': dependencies: - '@vue/reactivity': 3.5.13 - '@vue/runtime-core': 3.5.13 - '@vue/shared': 3.5.13 + '@vue/reactivity': 3.5.18 + '@vue/runtime-core': 3.5.18 + '@vue/shared': 3.5.18 csstype: 3.1.3 - '@vue/server-renderer@3.5.13(vue@3.5.13(typescript@5.8.3))': + '@vue/server-renderer@3.5.18(vue@3.5.18(typescript@5.8.3))': dependencies: - '@vue/compiler-ssr': 3.5.13 - '@vue/shared': 3.5.13 - vue: 3.5.13(typescript@5.8.3) + '@vue/compiler-ssr': 3.5.18 + '@vue/shared': 3.5.18 + vue: 3.5.18(typescript@5.8.3) - '@vue/shared@3.5.13': {} + '@vue/shared@3.5.18': {} - '@vueuse/core@12.8.2(typescript@5.8.3)': + '@vueuse/core@13.6.0(vue@3.5.18(typescript@5.8.3))': dependencies: '@types/web-bluetooth': 0.0.21 - '@vueuse/metadata': 12.8.2 - '@vueuse/shared': 12.8.2(typescript@5.8.3) - vue: 3.5.13(typescript@5.8.3) - transitivePeerDependencies: - - typescript + '@vueuse/metadata': 13.6.0 + '@vueuse/shared': 13.6.0(vue@3.5.18(typescript@5.8.3)) + vue: 3.5.18(typescript@5.8.3) - '@vueuse/integrations@12.8.2(axios@1.10.0)(focus-trap@7.6.4)(jwt-decode@4.0.0)(typescript@5.8.3)': + '@vueuse/integrations@13.6.0(axios@1.10.0)(focus-trap@7.6.5)(jwt-decode@4.0.0)(vue@3.5.18(typescript@5.8.3))': dependencies: - '@vueuse/core': 12.8.2(typescript@5.8.3) - '@vueuse/shared': 12.8.2(typescript@5.8.3) - vue: 3.5.13(typescript@5.8.3) + '@vueuse/core': 13.6.0(vue@3.5.18(typescript@5.8.3)) + '@vueuse/shared': 13.6.0(vue@3.5.18(typescript@5.8.3)) + vue: 3.5.18(typescript@5.8.3) optionalDependencies: axios: 1.10.0 - focus-trap: 7.6.4 + focus-trap: 7.6.5 jwt-decode: 4.0.0 - transitivePeerDependencies: - - typescript - '@vueuse/metadata@12.8.2': {} + '@vueuse/metadata@13.6.0': {} - '@vueuse/shared@12.8.2(typescript@5.8.3)': + '@vueuse/shared@13.6.0(vue@3.5.18(typescript@5.8.3))': dependencies: - vue: 3.5.13(typescript@5.8.3) - transitivePeerDependencies: - - typescript + vue: 3.5.18(typescript@5.8.3) accepts@1.3.8: dependencies: @@ -7046,22 +6591,6 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - algoliasearch@5.23.2: - dependencies: - '@algolia/client-abtesting': 5.23.2 - '@algolia/client-analytics': 5.23.2 - '@algolia/client-common': 5.23.2 - '@algolia/client-insights': 5.23.2 - '@algolia/client-personalization': 5.23.2 - '@algolia/client-query-suggestions': 5.23.2 - '@algolia/client-search': 5.23.2 - '@algolia/ingestion': 1.23.2 - '@algolia/monitoring': 1.23.2 - '@algolia/recommend': 5.23.2 - '@algolia/requester-browser-xhr': 5.23.2 - '@algolia/requester-fetch': 5.23.2 - '@algolia/requester-node-http': 5.23.2 - ansi-regex@5.0.1: {} ansi-regex@6.1.0: {} @@ -7175,7 +6704,7 @@ snapshots: binary-search@1.3.6: {} - birpc@0.2.19: {} + birpc@2.5.0: {} body-parser@1.20.3: dependencies: @@ -7519,8 +7048,6 @@ snapshots: electron-to-chromium@1.5.132: {} - emoji-regex-xs@1.0.0: {} - emoji-regex@8.0.0: {} emoji-regex@9.2.2: {} @@ -7648,32 +7175,6 @@ snapshots: is-date-object: 1.1.0 is-symbol: 1.1.1 - esbuild@0.21.5: - optionalDependencies: - '@esbuild/aix-ppc64': 0.21.5 - '@esbuild/android-arm': 0.21.5 - '@esbuild/android-arm64': 0.21.5 - '@esbuild/android-x64': 0.21.5 - '@esbuild/darwin-arm64': 0.21.5 - '@esbuild/darwin-x64': 0.21.5 - '@esbuild/freebsd-arm64': 0.21.5 - '@esbuild/freebsd-x64': 0.21.5 - '@esbuild/linux-arm': 0.21.5 - '@esbuild/linux-arm64': 0.21.5 - '@esbuild/linux-ia32': 0.21.5 - '@esbuild/linux-loong64': 0.21.5 - '@esbuild/linux-mips64el': 0.21.5 - '@esbuild/linux-ppc64': 0.21.5 - '@esbuild/linux-riscv64': 0.21.5 - '@esbuild/linux-s390x': 0.21.5 - '@esbuild/linux-x64': 0.21.5 - '@esbuild/netbsd-x64': 0.21.5 - '@esbuild/openbsd-x64': 0.21.5 - '@esbuild/sunos-x64': 0.21.5 - '@esbuild/win32-arm64': 0.21.5 - '@esbuild/win32-ia32': 0.21.5 - '@esbuild/win32-x64': 0.21.5 - esbuild@0.25.5: optionalDependencies: '@esbuild/aix-ppc64': 0.25.5 @@ -7982,11 +7483,11 @@ snapshots: etag@1.8.1: {} - etherpad-cli-client@3.0.2: + etherpad-cli-client@3.0.4: dependencies: async: 3.2.6 socket.io-client: 4.8.1 - superagent: 8.1.2 + superagent: 10.2.3 transitivePeerDependencies: - bufferutil - supports-color @@ -8125,7 +7626,7 @@ snapshots: flatted@3.3.3: {} - focus-trap@7.6.4: + focus-trap@7.6.5: dependencies: tabbable: 6.2.0 @@ -8160,13 +7661,6 @@ snapshots: dependencies: fetch-blob: 3.2.0 - formidable@2.1.5: - dependencies: - '@paralleldrive/cuid2': 2.2.2 - dezalgo: 1.0.4 - once: 1.4.0 - qs: 6.14.0 - formidable@3.5.4: dependencies: '@paralleldrive/cuid2': 2.2.2 @@ -9113,9 +8607,11 @@ snapshots: dependencies: wrappy: 1.0.2 - oniguruma-to-es@3.1.1: + oniguruma-parser@0.12.1: {} + + oniguruma-to-es@4.3.3: dependencies: - emoji-regex-xs: 1.0.0 + oniguruma-parser: 0.12.1 regex: 6.0.1 regex-recursion: 6.0.2 @@ -9256,20 +8752,12 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss@8.5.3: - dependencies: - nanoid: 3.3.11 - picocolors: 1.1.1 - source-map-js: 1.2.1 - postcss@8.5.6: dependencies: nanoid: 3.3.11 picocolors: 1.1.1 source-map-js: 1.2.1 - preact@10.26.4: {} - prelude-ls@1.2.1: {} promise@1.3.0: @@ -9651,14 +9139,14 @@ snapshots: shebang-regex@3.0.0: {} - shiki@2.5.0: + shiki@3.9.1: dependencies: - '@shikijs/core': 2.5.0 - '@shikijs/engine-javascript': 2.5.0 - '@shikijs/engine-oniguruma': 2.5.0 - '@shikijs/langs': 2.5.0 - '@shikijs/themes': 2.5.0 - '@shikijs/types': 2.5.0 + '@shikijs/core': 3.9.1 + '@shikijs/engine-javascript': 3.9.1 + '@shikijs/engine-oniguruma': 3.9.1 + '@shikijs/langs': 3.9.1 + '@shikijs/themes': 3.9.1 + '@shikijs/types': 3.9.1 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -9884,21 +9372,6 @@ snapshots: transitivePeerDependencies: - supports-color - superagent@8.1.2: - dependencies: - component-emitter: 1.3.1 - cookiejar: 2.1.4 - debug: 4.4.1(supports-color@8.1.1) - fast-safe-stringify: 2.1.1 - form-data: 4.0.3 - formidable: 2.1.5 - methods: 1.1.2 - mime: 2.6.0 - qs: 6.14.0 - semver: 7.7.2 - transitivePeerDependencies: - - supports-color - superjson@2.2.2: dependencies: copy-anything: 3.0.5 @@ -10232,15 +9705,6 @@ snapshots: - supports-color - typescript - vite@5.4.19(@types/node@24.1.0): - dependencies: - esbuild: 0.21.5 - postcss: 8.5.3 - rollup: 4.40.1 - optionalDependencies: - '@types/node': 24.1.0 - fsevents: 2.3.3 - vite@7.0.6(@types/node@24.1.0)(tsx@4.20.3): dependencies: esbuild: 0.25.5 @@ -10254,54 +9718,51 @@ snapshots: fsevents: 2.3.3 tsx: 4.20.3 - vitepress@1.6.3(@algolia/client-search@5.23.2)(@types/node@24.1.0)(axios@1.10.0)(jwt-decode@4.0.0)(postcss@8.5.6)(typescript@5.8.3): + vitepress@2.0.0-alpha.9(@types/node@24.1.0)(axios@1.10.0)(jwt-decode@4.0.0)(postcss@8.5.6)(tsx@4.20.3)(typescript@5.8.3): dependencies: - '@docsearch/css': 3.8.2 - '@docsearch/js': 3.8.2(@algolia/client-search@5.23.2) - '@iconify-json/simple-icons': 1.2.30 - '@shikijs/core': 2.5.0 - '@shikijs/transformers': 2.5.0 - '@shikijs/types': 2.5.0 - '@types/markdown-it': 14.1.2 - '@vitejs/plugin-vue': 5.2.3(vite@5.4.19(@types/node@24.1.0))(vue@3.5.13(typescript@5.8.3)) - '@vue/devtools-api': 7.7.2 - '@vue/shared': 3.5.13 - '@vueuse/core': 12.8.2(typescript@5.8.3) - '@vueuse/integrations': 12.8.2(axios@1.10.0)(focus-trap@7.6.4)(jwt-decode@4.0.0)(typescript@5.8.3) - focus-trap: 7.6.4 + '@docsearch/css': 4.0.0-beta.5 + '@docsearch/js': 4.0.0-beta.5 + '@iconify-json/simple-icons': 1.2.45 + '@shikijs/core': 3.9.1 + '@shikijs/transformers': 3.9.1 + '@shikijs/types': 3.9.1 + '@vitejs/plugin-vue': 6.0.1(vite@7.0.6(@types/node@24.1.0)(tsx@4.20.3))(vue@3.5.18(typescript@5.8.3)) + '@vue/devtools-api': 7.7.7 + '@vue/shared': 3.5.18 + '@vueuse/core': 13.6.0(vue@3.5.18(typescript@5.8.3)) + '@vueuse/integrations': 13.6.0(axios@1.10.0)(focus-trap@7.6.5)(jwt-decode@4.0.0)(vue@3.5.18(typescript@5.8.3)) + focus-trap: 7.6.5 mark.js: 8.11.1 minisearch: 7.1.2 - shiki: 2.5.0 - vite: 5.4.19(@types/node@24.1.0) - vue: 3.5.13(typescript@5.8.3) + shiki: 3.9.1 + vite: 7.0.6(@types/node@24.1.0)(tsx@4.20.3) + vue: 3.5.18(typescript@5.8.3) optionalDependencies: postcss: 8.5.6 transitivePeerDependencies: - - '@algolia/client-search' - '@types/node' - - '@types/react' - async-validator - axios - change-case - drauu - fuse.js - idb-keyval + - jiti - jwt-decode - less - lightningcss - nprogress - qrcode - - react - - react-dom - sass - sass-embedded - - search-insights - sortablejs - stylus - sugarss - terser + - tsx - typescript - universal-cookie + - yaml vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.1.0)(jsdom@26.1.0)(tsx@4.20.3): dependencies: @@ -10348,13 +9809,13 @@ snapshots: void-elements@3.1.0: {} - vue@3.5.13(typescript@5.8.3): + vue@3.5.18(typescript@5.8.3): dependencies: - '@vue/compiler-dom': 3.5.13 - '@vue/compiler-sfc': 3.5.13 - '@vue/runtime-dom': 3.5.13 - '@vue/server-renderer': 3.5.13(vue@3.5.13(typescript@5.8.3)) - '@vue/shared': 3.5.13 + '@vue/compiler-dom': 3.5.18 + '@vue/compiler-sfc': 3.5.18 + '@vue/runtime-dom': 3.5.18 + '@vue/server-renderer': 3.5.18(vue@3.5.18(typescript@5.8.3)) + '@vue/shared': 3.5.18 optionalDependencies: typescript: 5.8.3 diff --git a/src/package.json b/src/package.json index 2e359ff02..b2cbf4f9b 100644 --- a/src/package.json +++ b/src/package.json @@ -107,7 +107,7 @@ "chokidar": "^4.0.3", "eslint": "^9.31.0", "eslint-config-etherpad": "^4.0.4", - "etherpad-cli-client": "^3.0.2", + "etherpad-cli-client": "^3.0.4", "mocha": "^11.7.1", "mocha-froth": "^0.2.10", "nodeify": "^1.0.1", From 7b9d44fe22b10462c713617f522b9e3d69ae3724 Mon Sep 17 00:00:00 2001 From: SamTV12345 <40429738+samtv12345@users.noreply.github.com> Date: Sat, 2 Aug 2025 11:07:11 +0200 Subject: [PATCH 38/51] chore: added changelog --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ffd618492..43f55526f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,13 @@ +# 2.4.0 + +### Notable enhancements and fixes +- Added home button to the pad panel. To show it in your current instance, please copy the updated "toolbar" settings from the `settings.json.template` file to your `settings.json` file. +- Added more current design for the default collibri theme. +- Added handling of recent visited pads in the collibri theme. You can now access the most recent three pads you visited in the pad panel. +- Disable stats endpoints if enableMetrics is set to false. This allows you to disable the metrics endpoints if you don't want to use them. +- Use Node LTS instead of always latest Node version. + + # 2.3.2 ### Notable enhancements and fixes From 2d9a8914b95640f35229548efc4d6c96a8bb3b7c Mon Sep 17 00:00:00 2001 From: SamTV12345 <40429738+samtv12345@users.noreply.github.com> Date: Sat, 2 Aug 2025 11:58:32 +0200 Subject: [PATCH 39/51] chore: added release.yml --- .github/workflows/release.yml | 58 +++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 000000000..beefdddf7 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,58 @@ +name: Release etherpad +on: + workflow_call: + inputs: + release_type: + description: 'Choose the type of release to create' + required: true + default: 'patch' + type: choice + options: + - patch + - minor + - major + +jobs: + releases: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + repository: ether/etherpad-lite + path: etherpad + token: '${{ secrets.ETHER_RELEASE_TOKEN }}' + - name: Checkout repository + uses: actions/checkout@v4 + with: + repository: ether/ether.github.com + path: ether.github.com + token: '${{ secrets.ETHER_RELEASE_TOKEN }}' + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + - uses: pnpm/action-setup@v4 + name: Install pnpm + with: + version: 10 + run_install: false + - name: Get pnpm store directory + shell: bash + run: | + echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV + - name: Install dependencies + run: pnpm install --frozen-lockfile + working-directory: etherpad + - name: Install dependencies + run: pnpm install --frozen-lockfile + working-directory: ether.github.com + - name: Prepare release + working-directory: + run: | + cd bin + pnpm run release ${{ inputs.release_type }} + - name: Push after release + working-directory: etherpad + run: | + ./bin/push-after-release.sh From d831ab7d74bf91df2c84c44cc6929a459aa772b7 Mon Sep 17 00:00:00 2001 From: SamTV12345 <40429738+samtv12345@users.noreply.github.com> Date: Sat, 2 Aug 2025 12:00:39 +0200 Subject: [PATCH 40/51] chore: use dispatch --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index beefdddf7..06b172f91 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,6 +1,6 @@ name: Release etherpad on: - workflow_call: + workflow_dispatch: inputs: release_type: description: 'Choose the type of release to create' From 4e8bb723810d4ce9f4a02ecc859b2664ae95b435 Mon Sep 17 00:00:00 2001 From: SamTV12345 <40429738+samtv12345@users.noreply.github.com> Date: Sat, 2 Aug 2025 12:04:39 +0200 Subject: [PATCH 41/51] chore: fixed cd bin --- .github/workflows/release.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 06b172f91..f0213122e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -41,14 +41,14 @@ jobs: shell: bash run: | echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - - name: Install dependencies + - name: Install dependencies etherpad run: pnpm install --frozen-lockfile working-directory: etherpad - - name: Install dependencies + - name: Install dependencies ether.github.com run: pnpm install --frozen-lockfile working-directory: ether.github.com - name: Prepare release - working-directory: + working-directory: etherpad run: | cd bin pnpm run release ${{ inputs.release_type }} From 2b3193378bdf9ead22c1522e7a0f2f6fb5f1445d Mon Sep 17 00:00:00 2001 From: SamTV12345 <40429738+samtv12345@users.noreply.github.com> Date: Sat, 2 Aug 2025 12:09:02 +0200 Subject: [PATCH 42/51] chore: added git stash to release --- bin/release.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bin/release.ts b/bin/release.ts index 5c2b1b4e9..3bc7db9a1 100644 --- a/bin/release.ts +++ b/bin/release.ts @@ -56,6 +56,8 @@ const readJson = (filename: string) => JSON.parse(fs.readFileSync(filename, {enc const assertWorkDirClean = (opts:{ cwd?: string; } = {}) => { + // Stash any changes in the working directory so that we can check for modifications. + runc('git stash') opts.cwd = runc('git rev-parse --show-cdup', opts) || cwd; const m = runc('git diff-files --name-status', opts); console.log(">"+m.trim()+"<") From bb7c735956c3ed42008d5007b5fff077bf1a8389 Mon Sep 17 00:00:00 2001 From: SamTV12345 <40429738+samtv12345@users.noreply.github.com> Date: Sat, 2 Aug 2025 12:12:58 +0200 Subject: [PATCH 43/51] chore: also check out master --- .github/workflows/release.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f0213122e..4815f4257 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -22,6 +22,12 @@ jobs: repository: ether/etherpad-lite path: etherpad token: '${{ secrets.ETHER_RELEASE_TOKEN }}' + - name: Checkout master branch + working-directory: etherpad + run: git checkout master + - name: Switch back to develop + working-directory: etherpad + run: git switch develop - name: Checkout repository uses: actions/checkout@v4 with: From 8c1e86321b3d8fcb340b09e879c0b4b04bdce438 Mon Sep 17 00:00:00 2001 From: SamTV12345 <40429738+samtv12345@users.noreply.github.com> Date: Sat, 2 Aug 2025 12:15:48 +0200 Subject: [PATCH 44/51] chore: check out origin/master --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4815f4257..6101a6d3d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -24,10 +24,10 @@ jobs: token: '${{ secrets.ETHER_RELEASE_TOKEN }}' - name: Checkout master branch working-directory: etherpad - run: git checkout master + run: git checkout origin/master - name: Switch back to develop working-directory: etherpad - run: git switch develop + run: git checkout origin/develop - name: Checkout repository uses: actions/checkout@v4 with: From a9b578e1110cb682a25eedd03c545e9ada1dcd38 Mon Sep 17 00:00:00 2001 From: SamTV12345 <40429738+samtv12345@users.noreply.github.com> Date: Sat, 2 Aug 2025 13:33:19 +0200 Subject: [PATCH 45/51] chore: check out every branch --- .github/workflows/release.yml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6101a6d3d..f7f5f3b2c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -22,12 +22,8 @@ jobs: repository: ether/etherpad-lite path: etherpad token: '${{ secrets.ETHER_RELEASE_TOKEN }}' - - name: Checkout master branch - working-directory: etherpad - run: git checkout origin/master - - name: Switch back to develop - working-directory: etherpad - run: git checkout origin/develop + fetch-depth: '0' + fetch-tags: 'true' - name: Checkout repository uses: actions/checkout@v4 with: From 2bfcbca58c48005cd09ca5f659f59015c9266af7 Mon Sep 17 00:00:00 2001 From: SamTV12345 <40429738+samtv12345@users.noreply.github.com> Date: Sat, 2 Aug 2025 13:37:12 +0200 Subject: [PATCH 46/51] chore: disabled other actions --- .github/{workflows => no_workflow}/backend-tests.yml | 0 .../build-and-deploy-docs.yml | 0 .../{workflows => no_workflow}/codeql-analysis.yml | 0 .../{workflows => no_workflow}/dependency-review.yml | 0 .github/{workflows => no_workflow}/docker.yml | 0 .../frontend-admin-tests.yml | 0 .../{workflows => no_workflow}/frontend-tests.yml | 0 .github/{workflows => no_workflow}/load-test.yml | 0 .../perform-type-check.yml | 0 .github/{workflows => no_workflow}/rate-limit.yml | 0 .../upgrade-from-latest-release.yml | 0 .github/{workflows => no_workflow}/windows.yml | 0 .github/workflows/release.yml | 12 ++++++++++++ 13 files changed, 12 insertions(+) rename .github/{workflows => no_workflow}/backend-tests.yml (100%) rename .github/{workflows => no_workflow}/build-and-deploy-docs.yml (100%) rename .github/{workflows => no_workflow}/codeql-analysis.yml (100%) rename .github/{workflows => no_workflow}/dependency-review.yml (100%) rename .github/{workflows => no_workflow}/docker.yml (100%) rename .github/{workflows => no_workflow}/frontend-admin-tests.yml (100%) rename .github/{workflows => no_workflow}/frontend-tests.yml (100%) rename .github/{workflows => no_workflow}/load-test.yml (100%) rename .github/{workflows => no_workflow}/perform-type-check.yml (100%) rename .github/{workflows => no_workflow}/rate-limit.yml (100%) rename .github/{workflows => no_workflow}/upgrade-from-latest-release.yml (100%) rename .github/{workflows => no_workflow}/windows.yml (100%) diff --git a/.github/workflows/backend-tests.yml b/.github/no_workflow/backend-tests.yml similarity index 100% rename from .github/workflows/backend-tests.yml rename to .github/no_workflow/backend-tests.yml diff --git a/.github/workflows/build-and-deploy-docs.yml b/.github/no_workflow/build-and-deploy-docs.yml similarity index 100% rename from .github/workflows/build-and-deploy-docs.yml rename to .github/no_workflow/build-and-deploy-docs.yml diff --git a/.github/workflows/codeql-analysis.yml b/.github/no_workflow/codeql-analysis.yml similarity index 100% rename from .github/workflows/codeql-analysis.yml rename to .github/no_workflow/codeql-analysis.yml diff --git a/.github/workflows/dependency-review.yml b/.github/no_workflow/dependency-review.yml similarity index 100% rename from .github/workflows/dependency-review.yml rename to .github/no_workflow/dependency-review.yml diff --git a/.github/workflows/docker.yml b/.github/no_workflow/docker.yml similarity index 100% rename from .github/workflows/docker.yml rename to .github/no_workflow/docker.yml diff --git a/.github/workflows/frontend-admin-tests.yml b/.github/no_workflow/frontend-admin-tests.yml similarity index 100% rename from .github/workflows/frontend-admin-tests.yml rename to .github/no_workflow/frontend-admin-tests.yml diff --git a/.github/workflows/frontend-tests.yml b/.github/no_workflow/frontend-tests.yml similarity index 100% rename from .github/workflows/frontend-tests.yml rename to .github/no_workflow/frontend-tests.yml diff --git a/.github/workflows/load-test.yml b/.github/no_workflow/load-test.yml similarity index 100% rename from .github/workflows/load-test.yml rename to .github/no_workflow/load-test.yml diff --git a/.github/workflows/perform-type-check.yml b/.github/no_workflow/perform-type-check.yml similarity index 100% rename from .github/workflows/perform-type-check.yml rename to .github/no_workflow/perform-type-check.yml diff --git a/.github/workflows/rate-limit.yml b/.github/no_workflow/rate-limit.yml similarity index 100% rename from .github/workflows/rate-limit.yml rename to .github/no_workflow/rate-limit.yml diff --git a/.github/workflows/upgrade-from-latest-release.yml b/.github/no_workflow/upgrade-from-latest-release.yml similarity index 100% rename from .github/workflows/upgrade-from-latest-release.yml rename to .github/no_workflow/upgrade-from-latest-release.yml diff --git a/.github/workflows/windows.yml b/.github/no_workflow/windows.yml similarity index 100% rename from .github/workflows/windows.yml rename to .github/no_workflow/windows.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f7f5f3b2c..0a23150ab 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,12 +18,24 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v4 + working-directory: etherpad with: repository: ether/etherpad-lite path: etherpad token: '${{ secrets.ETHER_RELEASE_TOKEN }}' fetch-depth: '0' fetch-tags: 'true' + - name: Checkout master + run: | + git fetch origin master + git checkout master + git reset --hard origin/master + - name: Checkout develop + working-directory: etherpad + run: | + git fetch origin develop + git checkout develop + git reset --hard origin/develop - name: Checkout repository uses: actions/checkout@v4 with: From bf1792e441e5ec88e95df15a4fac305e7bb23dc8 Mon Sep 17 00:00:00 2001 From: SamTV12345 <40429738+samtv12345@users.noreply.github.com> Date: Sat, 2 Aug 2025 13:37:56 +0200 Subject: [PATCH 47/51] chore: change working directory --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0a23150ab..28cad0054 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,7 +18,6 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v4 - working-directory: etherpad with: repository: ether/etherpad-lite path: etherpad @@ -26,6 +25,7 @@ jobs: fetch-depth: '0' fetch-tags: 'true' - name: Checkout master + working-directory: etherpad run: | git fetch origin master git checkout master From 71e2678a926acfab4e688694ab3ab995b01c8272 Mon Sep 17 00:00:00 2001 From: SamTV12345 <40429738+samtv12345@users.noreply.github.com> Date: Sat, 2 Aug 2025 13:39:46 +0200 Subject: [PATCH 48/51] chore: set git config --- .github/workflows/release.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 28cad0054..5c5acdaad 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -61,6 +61,10 @@ jobs: - name: Install dependencies ether.github.com run: pnpm install --frozen-lockfile working-directory: ether.github.com + - name: Set git user + run: | + git config --global user.name "Etherpad Release Bot" + git config --global user.email "noreply@etherpad.org" - name: Prepare release working-directory: etherpad run: | From 46768caaaf2b7cf2a8c5c82138f6db5c8b29bd87 Mon Sep 17 00:00:00 2001 From: SamTV12345 <40429738+samtv12345@users.noreply.github.com> Date: Sat, 2 Aug 2025 13:42:37 +0200 Subject: [PATCH 49/51] chore: git tag without signature --- bin/release.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/release.ts b/bin/release.ts index 3bc7db9a1..5de3a826d 100644 --- a/bin/release.ts +++ b/bin/release.ts @@ -174,8 +174,8 @@ try { console.log('Merging develop into master...'); run('git merge --no-ff --no-edit develop'); console.log(`Creating ${newVersion} tag...`); - run(`git tag -s '${newVersion}' -m '${newVersion}'`); - run(`git tag -s 'v${newVersion}' -m 'v${newVersion}'`); + run(`git tag -a '${newVersion}' -m '${newVersion}'`); + run(`git tag -a 'v${newVersion}' -m 'v${newVersion}'`); console.log('Switching back to develop...'); run('git checkout develop'); console.log('Merging master into develop...'); From 283bf8e407bd6010575b338f3647950bcf641963 Mon Sep 17 00:00:00 2001 From: SamTV12345 <40429738+samtv12345@users.noreply.github.com> Date: Sat, 2 Aug 2025 13:45:17 +0200 Subject: [PATCH 50/51] chore: use asciidoctor --- .github/workflows/release.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5c5acdaad..9ec1cbdae 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -65,6 +65,13 @@ jobs: run: | git config --global user.name "Etherpad Release Bot" git config --global user.email "noreply@etherpad.org" + - uses: ruby/setup-ruby@v1 + with: + ruby-version: 2.7 + + - uses: reitzig/actions-asciidoctor@v2.0.2 + with: + version: 2.0.18 - name: Prepare release working-directory: etherpad run: | From a1aad158dfa3114aac526bc47d3658adc2b07e20 Mon Sep 17 00:00:00 2001 From: Etherpad Release Bot Date: Sat, 2 Aug 2025 11:46:15 +0000 Subject: [PATCH 51/51] bump version --- admin/package.json | 2 +- bin/package.json | 2 +- package.json | 2 +- src/package.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/admin/package.json b/admin/package.json index 2dc202067..276b17323 100644 --- a/admin/package.json +++ b/admin/package.json @@ -1,7 +1,7 @@ { "name": "admin", "private": true, - "version": "2.3.2", + "version": "2.4.0", "type": "module", "scripts": { "dev": "vite", diff --git a/bin/package.json b/bin/package.json index c9cc71fae..f684e84e0 100644 --- a/bin/package.json +++ b/bin/package.json @@ -1,6 +1,6 @@ { "name": "bin", - "version": "2.3.2", + "version": "2.4.0", "description": "", "main": "checkAllPads.js", "directories": { diff --git a/package.json b/package.json index 57aa9f73a..9760a751e 100644 --- a/package.json +++ b/package.json @@ -50,6 +50,6 @@ "type": "git", "url": "https://github.com/ether/etherpad-lite.git" }, - "version": "2.3.2", + "version": "2.4.0", "license": "Apache-2.0" } diff --git a/src/package.json b/src/package.json index b2cbf4f9b..a14a99443 100644 --- a/src/package.json +++ b/src/package.json @@ -144,6 +144,6 @@ "debug:socketio": "cross-env DEBUG=socket.io* node --require tsx/cjs node/server.ts", "test:vitest": "vitest" }, - "version": "2.3.2", + "version": "2.4.0", "license": "Apache-2.0" }