diff --git a/.github/actions/deploy-to-cloudflare-pages/action.yml b/.github/actions/deploy-to-cloudflare-pages/action.yml new file mode 100644 index 0000000000..4f7a4a177a --- /dev/null +++ b/.github/actions/deploy-to-cloudflare-pages/action.yml @@ -0,0 +1,103 @@ +name: "Deploy to Cloudflare Pages" +description: "Deploys to Cloudflare Pages on either a temporary branch with preview comment, or on the production version if on the main branch." +inputs: + project_name: + description: "CloudFlare Pages project name" + comment_body: + description: "The message to display when deployment is ready" + default: "Deployment is ready." + required: false + production_url: + description: "The URL to mention as the production URL." + required: true + deploy_dir: + description: "The directory from which to deploy." + required: true + cloudflare_api_token: + description: "The Cloudflare API token to use for deployment." + required: true + cloudflare_account_id: + description: "The Cloudflare account ID to use for deployment." + required: true + github_token: + description: "The GitHub token to use for posting PR comments." + required: true +runs: + using: composite + steps: + # Install wrangler globally to avoid workspace issues + - name: Install Wrangler + shell: bash + run: npm install -g wrangler + + # Deploy using Wrangler (use pre-installed wrangler) + - name: Deploy to Cloudflare Pages + id: deploy + if: github.event_name == 'push' || github.event_name == 'workflow_dispatch' + uses: cloudflare/wrangler-action@v3 + with: + apiToken: ${{ inputs.cloudflare_api_token }} + accountId: ${{ inputs.cloudflare_account_id }} + command: pages deploy ${{ inputs.deploy_dir }} --project-name=${{ inputs.project_name}} --branch=${{ github.ref_name }} + wranglerVersion: '' # Use pre-installed version + + # Deploy preview for PRs + - name: Deploy Preview to Cloudflare Pages + id: preview-deployment + if: github.event_name == 'pull_request' + uses: cloudflare/wrangler-action@v3 + with: + apiToken: ${{ inputs.cloudflare_api_token }} + accountId: ${{ inputs.cloudflare_account_id }} + command: pages deploy ${{ inputs.deploy_dir }} --project-name=${{ inputs.project_name}} --branch=pr-${{ github.event.pull_request.number }} + wranglerVersion: '' # Use pre-installed version + + # Post deployment URL as PR comment + - name: Comment PR with Preview URL + if: github.event_name == 'pull_request' + uses: actions/github-script@v8 + env: + COMMENT_BODY: ${{ inputs.comment_body }} + PRODUCTION_URL: ${{ inputs.production_url }} + PROJECT_NAME: ${{ inputs.project_name }} + with: + github-token: ${{ inputs.github_token }} + script: | + const prNumber = context.issue.number; + // Construct preview URL based on Cloudflare Pages pattern + const projectName = process.env.PROJECT_NAME; + const previewUrl = `https://pr-${prNumber}.${projectName}.pages.dev`; + + // Check if we already commented + const comments = await github.rest.issues.listComments({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: prNumber + }); + + const customMessage = process.env.COMMENT_BODY; + const botComment = comments.data.find(comment => + comment.user.type === 'Bot' && + comment.body.includes(customMessage) + ); + + const mainUrl = process.env.PRODUCTION_URL; + const commentBody = `${customMessage}!\n\n🔗 Preview URL: ${previewUrl}\n📖 Production URL: ${mainUrl}\n\n✅ All checks passed\n\n_This preview will be updated automatically with new commits._`; + + if (botComment) { + // Update existing comment + await github.rest.issues.updateComment({ + owner: context.repo.owner, + repo: context.repo.repo, + comment_id: botComment.id, + body: commentBody + }); + } else { + // Create new comment + await github.rest.issues.createComment({ + issue_number: prNumber, + owner: context.repo.owner, + repo: context.repo.repo, + body: commentBody + }); + } diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml index b80fadb691..6abd9af47e 100644 --- a/.github/workflows/deploy-docs.yml +++ b/.github/workflows/deploy-docs.yml @@ -16,10 +16,10 @@ on: - 'requirements-docs.txt' - '.github/workflows/deploy-docs.yml' - 'scripts/fix-mkdocs-structure.ts' - + # Allow manual triggering from Actions tab workflow_dispatch: - + # Run on pull requests for preview deployments pull_request: branches: @@ -38,55 +38,55 @@ jobs: name: Build and Deploy MkDocs runs-on: ubuntu-latest timeout-minutes: 10 - + # Required permissions for deployment permissions: contents: read deployments: write pull-requests: write # For PR preview comments id-token: write # For OIDC authentication (if needed) - + steps: - name: Checkout Repository uses: actions/checkout@v5 with: fetch-depth: 0 # Fetch all history for git info and mkdocs-git-revision-date plugin - + - name: Setup Python uses: actions/setup-python@v6 with: python-version: '3.13' cache: 'pip' cache-dependency-path: 'requirements-docs.txt' - + - name: Install MkDocs and Dependencies run: | pip install --upgrade pip pip install -r requirements-docs.txt env: PIP_DISABLE_PIP_VERSION_CHECK: 1 - + # Setup pnpm before fixing docs structure - name: Setup pnpm uses: pnpm/action-setup@v4 - + # Setup Node.js with pnpm - name: Setup Node.js uses: actions/setup-node@v5 with: node-version: '22' cache: 'pnpm' - + # Install Node.js dependencies for the TypeScript script - name: Install Dependencies run: | pnpm install --frozen-lockfile - + - name: Fix Documentation Structure run: | # Fix duplicate navigation entries by moving overview pages to index.md pnpm run chore:fix-mkdocs-structure - + - name: Build MkDocs Site run: | # Build with strict mode but allow expected warnings @@ -115,74 +115,14 @@ jobs: test -f site/sitemap.xml || (echo "ERROR: site/sitemap.xml not found" && exit 1) test -d site/assets || (echo "ERROR: site/assets directory not found" && exit 1) echo "✅ Site validation passed" - - # Install wrangler globally to avoid workspace issues - - name: Install Wrangler - run: | - npm install -g wrangler - - # Deploy using Wrangler (use pre-installed wrangler) - - name: Deploy to Cloudflare Pages - id: deploy - if: github.event_name == 'push' || github.event_name == 'workflow_dispatch' - uses: cloudflare/wrangler-action@v3 + + - name: Deploy + uses: ./.github/actions/deploy-to-cloudflare-pages with: - apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} - accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} - command: pages deploy site --project-name=trilium-docs --branch=${{ github.ref_name }} - wranglerVersion: '' # Use pre-installed version - - # Deploy preview for PRs - - name: Deploy Preview to Cloudflare Pages - id: preview-deployment - if: github.event_name == 'pull_request' - uses: cloudflare/wrangler-action@v3 - with: - apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} - accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} - command: pages deploy site --project-name=trilium-docs --branch=pr-${{ github.event.pull_request.number }} - wranglerVersion: '' # Use pre-installed version - - # Post deployment URL as PR comment - - name: Comment PR with Preview URL - if: github.event_name == 'pull_request' - uses: actions/github-script@v8 - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - script: | - const prNumber = context.issue.number; - // Construct preview URL based on Cloudflare Pages pattern - const previewUrl = `https://pr-${prNumber}.trilium-docs.pages.dev`; - const mainUrl = 'https://docs.triliumnotes.org'; - - // Check if we already commented - const comments = await github.rest.issues.listComments({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: prNumber - }); - - const botComment = comments.data.find(comment => - comment.user.type === 'Bot' && - comment.body.includes('Documentation preview is ready') - ); - - const commentBody = `📚 Documentation preview is ready!\n\n🔗 Preview URL: ${previewUrl}\n📖 Production URL: ${mainUrl}\n\n✅ All checks passed\n\n_This preview will be updated automatically with new commits._`; - - if (botComment) { - // Update existing comment - await github.rest.issues.updateComment({ - owner: context.repo.owner, - repo: context.repo.repo, - comment_id: botComment.id, - body: commentBody - }); - } else { - // Create new comment - await github.rest.issues.createComment({ - issue_number: prNumber, - owner: context.repo.owner, - repo: context.repo.repo, - body: commentBody - }); - } + project_name: "trilium-docs" + comment_body: "📚 Documentation preview is ready" + production_url: "https://docs.triliumnotes.org" + deploy_dir: "site" + cloudflare_api_token: ${{ secrets.CLOUDFLARE_API_TOKEN }} + cloudflare_account_id: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} + github_token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index ab913d402c..10d37fdda5 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -19,7 +19,6 @@ concurrency: cancel-in-progress: true env: - GITHUB_UPLOAD_URL: https://uploads.github.com/repos/TriliumNext/Notes/releases/179589950/assets{?name,label} GITHUB_RELEASE_ID: 179589950 permissions: diff --git a/.github/workflows/playwright.yml b/.github/workflows/playwright.yml index 07ad94fd7d..d9da7c329f 100644 --- a/.github/workflows/playwright.yml +++ b/.github/workflows/playwright.yml @@ -4,6 +4,8 @@ on: push: branches: - main + paths-ignore: + - "apps/website/**" pull_request: permissions: diff --git a/.github/workflows/website.yml b/.github/workflows/website.yml new file mode 100644 index 0000000000..377c7544e7 --- /dev/null +++ b/.github/workflows/website.yml @@ -0,0 +1,48 @@ +name: Deploy website + +on: + push: + branches: + - main + paths: + - "apps/website/**" + + pull_request: + paths: + - "apps/website/**" + +jobs: + build-and-deploy: + runs-on: ubuntu-latest + name: Build & deploy website + + permissions: + contents: read + deployments: write + pull-requests: write # For PR preview comments + + steps: + - uses: actions/checkout@v5 + - uses: pnpm/action-setup@v4 + - name: Set up node & dependencies + uses: actions/setup-node@v5 + with: + node-version: 22 + cache: "pnpm" + + - name: Install dependencies + run: pnpm install --filter website --frozen-lockfile + + - name: Build the website + run: pnpm website:build + + - name: Deploy + uses: ./.github/actions/deploy-to-cloudflare-pages + with: + project_name: "trilium-homepage" + comment_body: "📚 Website preview is ready" + production_url: "https://triliumnotes.org" + deploy_dir: "apps/website/dist" + cloudflare_api_token: ${{ secrets.CLOUDFLARE_API_TOKEN }} + cloudflare_account_id: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} + github_token: ${{ secrets.GITHUB_TOKEN }} diff --git a/apps/client/package.json b/apps/client/package.json index 1077e2e34a..dbdff0e800 100644 --- a/apps/client/package.json +++ b/apps/client/package.json @@ -7,7 +7,7 @@ "author": { "name": "Trilium Notes Team", "email": "contact@eliandoran.me", - "url": "https://github.com/TriliumNext/Notes" + "url": "https://github.com/TriliumNext/Trilium" }, "scripts": { "build": "cross-env NODE_OPTIONS=--max-old-space-size=4096 vite build", @@ -57,7 +57,7 @@ "normalize.css": "8.0.1", "panzoom": "9.4.3", "preact": "10.27.2", - "react-i18next": "15.7.3", + "react-i18next": "16.0.0", "split.js": "1.6.5", "svg-pan-zoom": "3.6.2", "tabulator-tables": "6.3.1", @@ -73,7 +73,7 @@ "@types/mark.js": "8.11.12", "@types/tabulator-tables": "6.2.11", "copy-webpack-plugin": "13.0.1", - "happy-dom": "18.0.1", + "happy-dom": "19.0.1", "script-loader": "0.7.2", "vite-plugin-static-copy": "3.1.2" } diff --git a/apps/client/src/stylesheets/style.css b/apps/client/src/stylesheets/style.css index fc1687840a..d308c19b5b 100644 --- a/apps/client/src/stylesheets/style.css +++ b/apps/client/src/stylesheets/style.css @@ -2025,12 +2025,16 @@ body.zen .ribbon-container:not(:has(.classic-toolbar-widget.visible)), body.zen .ribbon-container:has(.classic-toolbar-widget.visible) .ribbon-top-row, body.zen .ribbon-container .ribbon-body:not(:has(.classic-toolbar-widget.visible)), body.zen .note-icon-widget, -body.zen .title-row .button-widget, +body.zen .title-row .icon-action, body.zen .floating-buttons-children > *:not(.bx-edit-alt), body.zen .action-button { display: none !important; } +body.zen .split-note-container-widget > .gutter { + display: unset !important; +} + body.zen #launcher-pane { position: absolute !important; top: 0 !important; diff --git a/apps/client/src/stylesheets/theme-next/base.css b/apps/client/src/stylesheets/theme-next/base.css index bcaa513ee3..f89474473e 100644 --- a/apps/client/src/stylesheets/theme-next/base.css +++ b/apps/client/src/stylesheets/theme-next/base.css @@ -334,6 +334,7 @@ li.dropdown-item a.dropdown-item-button:focus-visible { #toast-container .toast .toast-header { background: transparent !important; border-bottom: none; + color: var(--toast-text-color) !important; } #toast-container .toast .toast-header strong > * { @@ -353,12 +354,12 @@ li.dropdown-item a.dropdown-item-button:focus-visible { overflow: hidden; text-overflow: ellipsis; padding-top: 0; - color: var(--muted-text-color); } #toast-container .toast:not(.no-title) .bx { margin-right: 0.5em; font-size: 1.1em; + opacity: 0.85; } #toast-container .toast.no-title .bx { diff --git a/apps/client/src/translations/ca/translation.json b/apps/client/src/translations/ca/translation.json index 727d2bf533..d4cdcc1cac 100644 --- a/apps/client/src/translations/ca/translation.json +++ b/apps/client/src/translations/ca/translation.json @@ -121,7 +121,7 @@ "sat": "Ds", "sun": "Dg", "january": "Gener", - "febuary": "Febrer", + "february": "Febrer", "march": "Març", "april": "Abril", "may": "Maig", diff --git a/apps/client/src/translations/cn/translation.json b/apps/client/src/translations/cn/translation.json index 8414cd917d..f2932b3f9c 100644 --- a/apps/client/src/translations/cn/translation.json +++ b/apps/client/src/translations/cn/translation.json @@ -582,7 +582,7 @@ "cannot_find_day_note": "无法找到日记", "cannot_find_week_note": "无法找到周记", "january": "一月", - "febuary": "二月", + "february": "二月", "march": "三月", "april": "四月", "may": "五月", @@ -1623,7 +1623,9 @@ "ws": { "sync-check-failed": "同步检查失败!", "consistency-checks-failed": "一致性检查失败!请查看日志了解详细信息。", - "encountered-error": "遇到错误 \"{{message}}\",请查看控制台。" + "encountered-error": "遇到错误 \"{{message}}\",请查看控制台。", + "lost-websocket-connection-title": "与服务器的连线中断", + "lost-websocket-connection-message": "检查您的反向代理(如 nginx 或 Apache)设置以确保 Websocket 连线没有被阻挡。" }, "hoisted_note": { "confirm_unhoisting": "请求的笔记 '{{requestedNote}}' 位于聚焦的笔记 '{{hoistedNote}}' 的子树之外,您必须取消聚焦才能访问该笔记。是否继续取消聚焦?" @@ -1952,7 +1954,11 @@ "editorfeatures": { "title": "功能", "emoji_completion_enabled": "启用表情自动补全", - "note_completion_enabled": "启用笔记自动补全" + "note_completion_enabled": "启用笔记自动补全", + "emoji_completion_description": "如果启用,表情可以轻易地经由输入 `:` 加上表情名称来插入。", + "note_completion_description": "如果启用,导向笔记的链接可以经由输入 `@` 加上笔记标题来创建。", + "slash_commands_enabled": "启用斜杠命令", + "slash_commands_description": "如果启用,可以经由输入 `/` 来触发命令,如插入换行符或标题。" }, "table_view": { "new-row": "新增行", diff --git a/apps/client/src/translations/cs/translation.json b/apps/client/src/translations/cs/translation.json index e48f21a1e5..aedf9519f6 100644 --- a/apps/client/src/translations/cs/translation.json +++ b/apps/client/src/translations/cs/translation.json @@ -15,7 +15,27 @@ "message": "Nastala kritická chyba která aplikaci brání ve spuštění:\n\n{{message}}\n\nPravděpodobně neočekávaným způsobem selhal skript. Pokuste se restartovat aplikaci v safe módu a problém napravit." }, "widget-error": { - "title": "Nepodařilo se inicializovat widget" + "title": "Nepodařilo se inicializovat widget", + "message-custom": "Uživatelský widget z poznámky s ID \"{{id}}\" a názvem \"{{title}}\" nemohl být inicializován z důvodu: \n\n{{message}}", + "message-unknown": "Neznámý widget nemohl být inicializován z důvodu:\n\n{{message}}" + }, + "bundle-error": { + "title": "Načtení uživatelského skriptu selhalo", + "message": "Uživatelský skript z poznámky s ID \"{{id}}\" a názvem \"{{title}}\" nemohl být spuštěn z důvodu: \n\n{{message}}" } + }, + "ai_llm": { + "n_notes_queued_0": "{{ count }} poznámka ve frontě k indexaci", + "n_notes_queued_1": "{{ count }} poznámky ve frontě k indexaci", + "n_notes_queued_2": "{{ count }} poznámek ve frontě k indexaci", + "notes_indexed_0": "{{ count }} poznámka indexována", + "notes_indexed_1": "{{ count }} poznámky indexovány", + "notes_indexed_2": "{{ count }} poznámek indexováno" + }, + "add_link": { + "add_link": "Přidat odkaz", + "help_on_links": "Nápověda k odkazům", + "note": "Poznámka", + "search_note": "hledat poznámku podle názvu" } } diff --git a/apps/client/src/translations/de/translation.json b/apps/client/src/translations/de/translation.json index 3cbf29e16d..a308371f86 100644 --- a/apps/client/src/translations/de/translation.json +++ b/apps/client/src/translations/de/translation.json @@ -581,7 +581,7 @@ "sun": "So", "cannot_find_day_note": "Tagesnotiz kann nicht gefunden werden", "january": "Januar", - "febuary": "Februar", + "february": "Februar", "march": "März", "april": "April", "may": "Mai", @@ -1587,7 +1587,9 @@ "ws": { "sync-check-failed": "Synchronisationsprüfung fehlgeschlagen!", "consistency-checks-failed": "Konsistenzprüfung fehlgeschlagen! Siehe Logs für Details.", - "encountered-error": "Fehler „{{message}}“ aufgetreten, siehe Konsole für Details." + "encountered-error": "Fehler „{{message}}“ aufgetreten, siehe Konsole für Details.", + "lost-websocket-connection-title": "Verbindung zum Server verloren", + "lost-websocket-connection-message": "Überprüfe die Konfiguration des Reverse-Proxys (z. B. nginx oder Apache), um sicherzustellen, dass WebSocket-Verbindungen zugelassen und nicht blockiert werden." }, "hoisted_note": { "confirm_unhoisting": "Die angeforderte Notiz ‚{{requestedNote}}‘ befindet sich außerhalb des hoisted Bereichs der Notiz ‚{{hoistedNote}}‘. Du musst sie unhoisten, um auf die Notiz zuzugreifen. Möchtest du mit dem Unhoisting fortfahren?" @@ -1966,7 +1968,11 @@ "editorfeatures": { "title": "Funktionen", "emoji_completion_enabled": "Emoji-Autovervollständigung aktivieren", - "note_completion_enabled": "Automatisches Vervollständigen von Notizen aktivieren" + "note_completion_enabled": "Automatisches Vervollständigen von Notizen aktivieren", + "emoji_completion_description": "Wenn aktiviert, können Emojis ganz einfach in den Text eingefügt werden, indem man \":\" gefolgt vom Namen eines Emojis eingibt.", + "note_completion_description": "Wenn aktiviert, können Links zu Notizen erstellt werden, indem man \"@\" gefolgt vom Titel einer Notiz eingibt.", + "slash_commands_enabled": "Aktiviere Slash-Befehle", + "slash_commands_description": "Wenn aktiviert, können Bearbeitungsbefehle wie das Einfügen von Zeilenumbrüchen oder Überschriften durch Eingabe von \"/\" aktiviert werden." }, "table_view": { "new-row": "Neue Zeile", diff --git a/apps/client/src/translations/en/translation.json b/apps/client/src/translations/en/translation.json index bc74e430bc..abb80f919f 100644 --- a/apps/client/src/translations/en/translation.json +++ b/apps/client/src/translations/en/translation.json @@ -582,7 +582,7 @@ "cannot_find_day_note": "Cannot find day note", "cannot_find_week_note": "Cannot find week note", "january": "January", - "febuary": "February", + "february": "February", "march": "March", "april": "April", "may": "May", diff --git a/apps/client/src/translations/es/translation.json b/apps/client/src/translations/es/translation.json index 76ab74df82..10fef850d1 100644 --- a/apps/client/src/translations/es/translation.json +++ b/apps/client/src/translations/es/translation.json @@ -276,7 +276,10 @@ "mime": "MIME: ", "file_size": "Tamaño del archivo:", "preview": "Vista previa:", - "preview_not_available": "La vista previa no está disponible para este tipo de notas." + "preview_not_available": "La vista previa no está disponible para este tipo de notas.", + "diff_off": "Mostrar contenido", + "diff_on": "Mostrar diferencia", + "diff_off_hint": "Haga clic para mostrar el contenido de la nota" }, "sort_child_notes": { "sort_children_by": "Ordenar hijos por...", @@ -577,7 +580,7 @@ "cannot_find_day_note": "No se puede encontrar la nota del día", "cannot_find_week_note": "No se puede encontrar la nota de la semana", "january": "Enero", - "febuary": "Febrero", + "february": "Febrero", "march": "Marzo", "april": "Abril", "may": "Mayo", @@ -949,7 +952,9 @@ "no_attachments": "Esta nota no tiene archivos adjuntos." }, "book": { - "no_children_help": "Esta nota de tipo libro no tiene ninguna subnota así que no hay nada que mostrar. Véa la wiki para más detalles." + "no_children_help": "Esta nota de tipo libro no tiene ninguna subnota así que no hay nada que mostrar. Véa la wiki para más detalles.", + "drag_locked_title": "Bloqueado para edición", + "drag_locked_message": "No se permite Arrastrar pues la colección está bloqueada para edición." }, "editable_code": { "placeholder": "Escriba el contenido de su nota de código aquí..." @@ -1593,7 +1598,9 @@ "apply-bulk-actions": "Aplicar acciones en lote", "converted-to-attachments": "{{count}} notas han sido convertidas en archivos adjuntos.", "convert-to-attachment-confirm": "¿Está seguro que desea convertir las notas seleccionadas en archivos adjuntos de sus notas padres?", - "open-in-popup": "Edición rápida" + "open-in-popup": "Edición rápida", + "archive": "Archivar", + "unarchive": "Desarchivar" }, "shared_info": { "shared_publicly": "Esta nota está compartida públicamente en {{- link}}", @@ -1676,7 +1683,8 @@ "hoist-this-note-workspace": "Anclar esta nota (espacio de trabajo)", "refresh-saved-search-results": "Refrescar resultados de búsqueda guardados", "create-child-note": "Crear subnota", - "unhoist": "Desanclar" + "unhoist": "Desanclar", + "toggle-sidebar": "Alternar barra lateral" }, "title_bar_buttons": { "window-on-top": "Mantener esta ventana en la parte superior" @@ -1751,13 +1759,15 @@ "undeleting-notes-finished-successfully": "La recuperación de notas finalizó exitosamente." }, "frontend_script_api": { - "async_warning": "Está pasando una función asíncrona a `api.runOnBackend ()` que probablemente no funcionará como pretendía.", - "sync_warning": "Estás pasando una función sincrónica a `api.runasynconbackendwithmanualTransactionHandling ()`, \\ n while debería usar `api.runonbackend ()` en su lugar." + "async_warning": "Está pasando una función asíncrona a `api.runOnBackend ()` que probablemente no funcionará como pretendía.\\nO haga la función sincrónica (removiendo la palabra `async`), o use `api.runAsyncOnBackendWithManualTransactionHandling()`.", + "sync_warning": "Estás pasando una función sincrónica a `api.runasynconbackendwithmanualTransactionHandling ()`, \\n while debería usar `api.runonbackend ()` en su lugar." }, "ws": { "sync-check-failed": "¡La comprobación de sincronización falló!", "consistency-checks-failed": "¡Las comprobaciones de consistencia fallaron! Vea los registros para más detalles.", - "encountered-error": "Error encontrado \"{{message}}\", compruebe la consola." + "encountered-error": "Error encontrado \"{{message}}\", compruebe la consola.", + "lost-websocket-connection-title": "Se ha perdido la conexión con el servidor", + "lost-websocket-connection-message": "Compruebe la configuración de su proxy inverso (por ejemplo, nginx o Apache) para asegurarse de que las conexiones WebSocket están correctamente permitidas y no están bloqueadas." }, "hoisted_note": { "confirm_unhoisting": "La nota requerida '{{requestedNote}}' está fuera del subárbol de la nota anclada '{{hoistedNote}}' y debe desanclarla para acceder a la nota. ¿Desea proceder con el desanclaje?" @@ -1833,7 +1843,7 @@ "native-title-bar": "Barra de título nativa", "native-title-bar-description": "Para Windows y macOS, quitar la barra de título nativa hace que la aplicación se vea más compacta. En Linux, mantener la barra de título nativa hace que se integre mejor con el resto del sistema.", "background-effects": "Habilitar efectos de fondo (sólo en Windows 11)", - "background-effects-description": "El efecto Mica agrega un fondo borroso y elegante a las ventanas de aplicaciones, creando profundidad y un aspecto moderno.", + "background-effects-description": "El efecto Mica agrega un fondo borroso y elegante a las ventanas de la aplicación, creando profundidad y un aspecto moderno. \"Título nativo de la barra\" debe deshabilitarse.", "restart-app-button": "Reiniciar la aplicación para ver los cambios", "zoom-factor": "Factor de zoom" }, @@ -1943,14 +1953,20 @@ "delete_row": "Eliminar fila" }, "board_view": { - "delete-note": "Eliminar nota", + "delete-note": "Eliminar nota...", "move-to": "Mover a", "insert-above": "Insertar arriba", "insert-below": "Insertar abajo", "delete-column": "Eliminar columna", "delete-column-confirmation": "¿Seguro que desea eliminar esta columna? El atributo correspondiente también se eliminará de las notas de esta columna.", "add-column": "Añadir columna", - "new-item": "Nuevo elemento" + "new-item": "Nuevo elemento", + "archive-note": "Archivar nota", + "unarchive-note": "Desarchivar nota", + "new-item-placeholder": "Ingresar título de la nota...", + "add-column-placeholder": "Ingresar título de la columna...", + "edit-note-title": "Haga clic para editar el título de la nota", + "edit-column-title": "Haga clic para editar el título de la columna" }, "content_renderer": { "open_externally": "Abrir externamente" @@ -1978,7 +1994,11 @@ "editorfeatures": { "note_completion_enabled": "Activar autocompletado de notas", "emoji_completion_enabled": "Activar autocompletado de emojis", - "title": "Funciones" + "title": "Funciones", + "emoji_completion_description": "Si está habilitado, los emojis pueden fácilmente insertarse en el texto escribiendo `:`, seguido del nombre de un emoji.", + "note_completion_description": "Si está habilitado, los vínculos a notas pueden crearse escribiendo `@` seguido del título de una nota.", + "slash_commands_enabled": "Habilitar comandos de barra", + "slash_commands_description": "Si está habilitado, editar comandos como insertar saltos de línea o títulos, puede alternarse escribiendo `/`." }, "command_palette": { "tree-action-name": "Árbol:{{name}}", @@ -2012,7 +2032,9 @@ "title": "Rendimiento", "enable-motion": "Habilitar transiciones y animaciones", "enable-shadows": "Activar sombras", - "enable-backdrop-effects": "Habilitar efectos de fondo para menús, ventanas emergentes y paneles" + "enable-backdrop-effects": "Habilitar efectos de fondo para menús, ventanas emergentes y paneles", + "enable-smooth-scroll": "Habilitar desplazamiento suave", + "app-restart-required": "(es necesario reiniciar la aplicación para que el cambio surta efecto)" }, "settings": { "related_settings": "Configuración relacionada" @@ -2023,5 +2045,9 @@ }, "units": { "percentage": "%" + }, + "pagination": { + "total_notes": "{{count}} notas", + "page_title": "Página de {{startIndex}} - {{endIndex}}" } } diff --git a/apps/client/src/translations/fr/translation.json b/apps/client/src/translations/fr/translation.json index 8bbcb34d73..dc38a26daa 100644 --- a/apps/client/src/translations/fr/translation.json +++ b/apps/client/src/translations/fr/translation.json @@ -576,7 +576,7 @@ "sun": "Dim", "cannot_find_day_note": "Note journalière introuvable", "january": "Janvier", - "febuary": "Février", + "february": "Février", "march": "Mars", "april": "Avril", "may": "Mai", diff --git a/apps/client/src/translations/hr/translation.json b/apps/client/src/translations/hr/translation.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/apps/client/src/translations/hr/translation.json @@ -0,0 +1 @@ +{} diff --git a/apps/client/src/translations/ja/translation.json b/apps/client/src/translations/ja/translation.json index 72b1fb6f84..1cb33b0806 100644 --- a/apps/client/src/translations/ja/translation.json +++ b/apps/client/src/translations/ja/translation.json @@ -38,12 +38,12 @@ "save": "保存", "edit_branch_prefix": "ブランチ接頭辞の編集", "help_on_tree_prefix": "ツリー接頭辞に関するヘルプ", - "prefix": "接頭辞: ", - "branch_prefix_saved": "ブランチ接頭辞が保存されました。" + "prefix": "接頭辞: ", + "branch_prefix_saved": "ブランチの接頭辞が保存されました。" }, "global_menu": { "menu": "メニュー", - "options": "オプション", + "options": "設定", "open_new_window": "新しいウィンドウを開く", "zoom": "ズーム", "toggle_fullscreen": "フルスクリーンの切り替え", @@ -86,7 +86,7 @@ "clone_to_selected_note": "選択したノートにクローン", "no_path_to_clone_to": "クローン先のパスが存在しません。", "note_cloned": "ノート \"{{clonedTitle}}\" は \"{{targetTitle}}\" にクローンされました", - "clone_notes_to": "ノートをクローンして...", + "clone_notes_to": "ノートをクローン...", "help_on_links": "ヘルプへのリンク" }, "delete_notes": { @@ -111,7 +111,7 @@ "sat": "土", "sun": "日", "january": "1月", - "febuary": "2月", + "february": "2月", "march": "3月", "april": "4月", "may": "5月", @@ -123,7 +123,18 @@ "november": "11月", "december": "12月", "cannot_find_day_note": "dayノートが見つかりません", - "cannot_find_week_note": "weekノートが見つかりません" + "cannot_find_week_note": "weekノートが見つかりません", + "week": "週", + "week_previous": "前の週", + "week_next": "次の週", + "month": "月", + "month_previous": "前の月", + "month_next": "次の月", + "year": "年", + "year_previous": "前の年", + "year_next": "次の年", + "list": "リスト", + "today": "今日" }, "note_icon": { "change_note_icon": "ノートアイコンの変更", @@ -135,7 +146,8 @@ "note_type": "ノートタイプ", "editable": "編集可能", "basic_properties": "基本プロパティ", - "language": "言語" + "language": "言語", + "configure_code_notes": "コードノートを設定しています..." }, "i18n": { "title": "ローカライゼーション", @@ -324,8 +336,8 @@ }, "recent_changes": { "title": "最近の変更", - "erase_notes_button": "削除したメモを今すぐ消去する", - "deleted_notes_message": "削除されたメモは完全に消去されました。", + "erase_notes_button": "削除したノートを今すぐ消去", + "deleted_notes_message": "削除されたノートは完全に消去されました。", "no_changes_message": "変更はまだありません...", "undelete_link": "削除を取り消す", "confirm_undelete": "このノートとサブノートを復元しますか?" @@ -384,9 +396,9 @@ "protect-subtree": "サブツリーを保護", "unprotect-subtree": "サブツリーの保護を解除", "copy-clone": "コピー/クローン", - "clone-to": "クローンして...", + "clone-to": "クローン先...", "cut": "カット", - "move-to": "移動して...", + "move-to": "移動先...", "paste-into": "貼り付け", "paste-after": "後ろに貼り付け", "duplicate": "複製", @@ -399,7 +411,9 @@ "open-in-popup": "クイックエディット", "hoist-note": "ホイストノート", "unhoist-note": "ノートをホイストしない", - "edit-branch-prefix": "ブランチの接頭辞を編集" + "edit-branch-prefix": "ブランチの接頭辞を編集", + "archive": "アーカイブ", + "unarchive": "アーカイブ解除" }, "zen_mode": { "button_exit": "禅モードを退出" @@ -449,10 +463,12 @@ "delete_note": { "delete_note": "ノートを削除", "delete_matched_notes": "一致したノートを削除", - "delete_matched_notes_description": "これにより、一致したノートが削除されます。" + "delete_matched_notes_description": "これにより、一致したノートが削除されます。", + "undelete_notes_instruction": "削除後、「最近の変更」ダイアログから削除を取り消すことができます。", + "erase_notes_instruction": "ノートを完全に消去するには、削除後に「設定」->「その他」に移動し、「削除したノートを今すぐ消去」ボタンをクリックします。" }, "board_view": { - "delete-note": "ノートを削除", + "delete-note": "ノートを削除...", "insert-above": "上に挿入", "insert-below": "下に挿入", "delete-column": "列を削除", @@ -478,7 +494,8 @@ "execute_script": { "execute_script": "スクリプトを実行", "help_text": "一致したノートに対して簡単なスクリプトを実行できます。", - "example_2": "より複雑な例としては、一致したノートの属性をすべて削除することが挙げられます:" + "example_2": "より複雑な例としては、一致したノートの属性をすべて削除することが挙げられます:", + "example_1": "例えば、ノートのタイトルに文字列を追加するには、この小さなスクリプトを使用します:" }, "script_executor": { "execute_script": "スクリプトを実行", @@ -537,7 +554,7 @@ "collections": "コレクション" }, "edited_notes": { - "no_edited_notes_found": "この日の編集されたメモはまだありません...", + "no_edited_notes_found": "この日の編集されたノートはまだありません...", "title": "編集されたノート", "deleted": "(削除済み)" }, @@ -548,7 +565,10 @@ "download": "ダウンロード", "open": "開く", "title": "ファイル", - "upload_new_revision": "編集履歴をアップロード" + "upload_new_revision": "編集履歴をアップロード", + "original_file_name": "元のファイル名", + "upload_success": "新しいファイルの変更がアップロードされました。", + "upload_failed": "新しいファイルの変更のアップロードに失敗しました。" }, "note_info_widget": { "note_id": "ノート ID", @@ -567,7 +587,11 @@ "download": "ダウンロード", "open": "開く", "title": "画像", - "upload_new_revision": "編集履歴をアップロード" + "upload_new_revision": "編集履歴をアップロード", + "original_file_name": "元のファイル名", + "copy_reference_to_clipboard": "参照をクリップボードにコピー", + "upload_success": "新しい画像の変更がアップロードされました。", + "upload_failed": "新しい画像の変更のアップロードに失敗しました: {{message}}" }, "revisions": { "download_button": "ダウンロード", @@ -595,7 +619,8 @@ "diff_off_hint": "クリックしてノートの内容を表示", "diff_not_available": "差分は利用できません。", "snapshot_interval": "ノートの変更履歴の記録間隔: {{seconds}} 秒。", - "maximum_revisions": "ノートの変更履歴の記録制限: {{number}}." + "maximum_revisions": "ノートの変更履歴の記録制限: {{number}}.", + "mime": "MIME: " }, "attachments_actions": { "download": "ダウンロード", @@ -612,7 +637,11 @@ "delete_confirm": "本当に添付ファイル '{{title}}' を削除しますか?", "delete_success": "添付ファイル '{{title}}' は削除されました。", "enter_new_name": "新しい添付ファイルの名前を入力してください", - "upload_new_revision": "編集履歴をアップロード" + "upload_new_revision": "編集履歴をアップロード", + "upload_success": "新しい添付ファイルの変更がアップロードされました。", + "upload_failed": "新しい添付ファイルの変更のアップロードに失敗しました。", + "convert_confirm": "添付ファイル「{{title}}」を別のノートに変換してもよろしいですか?", + "convert_success": "添付ファイル「{{title}}」がノートに変換されました。" }, "etapi": { "created": "作成日時", @@ -642,21 +671,23 @@ "note_paths": { "title": "ノートパス", "clone_button": "ノートを新しい場所にクローン...", - "intro_placed": "このノートは以下のパスに置かれる:", + "intro_placed": "このノートは以下のパスに置かれています:", "intro_not_placed": "このノートはまだノートツリーに配置されていません。", "archived": "アーカイブされた", "search": "検索", "outside_hoisted": "このパスはホイストされたノートの外側にあるため、ホイストを解除する必要があります。" }, "note_properties": { - "info": "情報" + "info": "情報", + "this_note_was_originally_taken_from": "このノートは元々以下から引用したものです:" }, "similar_notes": { "title": "類似ノート", "no_similar_notes_found": "類似したノートが見つかりません。" }, "abstract_search_option": { - "remove_this_search_option": "この検索オプションを削除" + "remove_this_search_option": "この検索オプションを削除", + "failed_rendering": "検索オプションのレンダリングに失敗しました: {{dto}} エラー: {{error}}{{stack}}" }, "debug": { "debug": "デバッグ", @@ -690,7 +721,8 @@ "content_and_attachments_and_revisions_size": "添付ファイルと編集履歴を含むノート内容のサイズ", "revision_count": "編集履歴の回数", "owned_label_count": "ラベルの数", - "owned_relation_count": "関係の数" + "owned_relation_count": "リレーションの数", + "target_relation_count": "ノートを対象とするリレーションの数" }, "table_view": { "sort-column-descending": "降順", @@ -710,7 +742,7 @@ "delete_column_confirmation": "この列を本当に削除してもよろしいですか?対応する属性はすべてのノートから削除されます。", "delete-column": "列を削除", "new-column-label": "ラベル", - "new-column-relation": "関係" + "new-column-relation": "リレーション" }, "search_script": { "title": "検索スクリプト:", @@ -759,7 +791,14 @@ "refresh": "リフレッシュ" }, "sync": { - "title": "同期" + "title": "同期", + "force_full_sync_button": "完全同期を強制する", + "fill_entity_changes_button": "エンティティ変更レコードを入力", + "full_sync_triggered": "完全同期がトリガーされました", + "filling_entity_changes": "エンティティ変更行を入力中...", + "sync_rows_filled_successfully": "同期行が正常に入力されました", + "finished-successfully": "同期が正常に完了しました。", + "failed": "同期に失敗しました: {{message}}" }, "fonts": { "fonts": "フォント", @@ -781,7 +820,8 @@ "serif": "セリフ", "sans-serif": "サンセリフ", "monospace": "等幅", - "system-default": "システムのデフォルト" + "system-default": "システムのデフォルト", + "theme_defined": "テーマが定義されました" }, "max_content_width": { "reload_button": "フロントエンドをリロード", @@ -1064,7 +1104,7 @@ "display_relations": "表示するリレーション名をカンマで区切って指定します。それ以外のリレーション名は非表示になります。", "hide_relations": "非表示にするリレーション名をカンマで区切って指定します。それ以外のリレーションは表示されます。", "template": "このノートは、新しいノートを作成するときに利用可能なテンプレートの選択肢に表示されます", - "toc": "#toc または #toc=show は目次を強制的に表示し、#toc=hide は目次を強制的に非表示にします。ラベルが存在しない場合は、グローバル設定が適用されます", + "toc": "#toc または #toc=show は目次を強制的に表示し、#toc=hide は目次を強制的に非表示にします。ラベルが存在しない場合は、グローバル設定が適用されます", "color": "ノートツリー、リンクなどのノートの色を定義します。 'red' や #a13d5f などの有効な CSS カラー値を使用します", "keyboard_shortcut": "このノートにすぐにジャンプするキーボードショートカットを定義します。例: 「ctrl+alt+e」。変更を有効にするには、フロントエンドをリロードする必要があります。", "keep_current_hoisting": "このリンクを開いても、ノートが現在のホイストされたサブツリーに表示できない場合でも、ホイストは変更されません。", @@ -1077,7 +1117,29 @@ "run_on_child_note_creation": "このリレーションが定義されているノートの下に新しいノートが作成されたときに実行されます", "render_note": "「HTMLノートをレンダリング」タイプのノートは、コードノート(HTMLまたはスクリプト)を使用してレンダリングされます。このリレーションを使用して、どのノートをレンダリングするかを指定する必要があります", "other_notes_with_name": "{{attributeType}} の名前が「{{attributeName}}」であるその他のノート", - "color_type": "色" + "color_type": "色", + "share_description": "説明用にHTMLメタタグに追加するテキストを定義します", + "title_template": "このノートの子として作成されるノートのデフォルトのタイトルです。値は JavaScript 文字列として評価されるため、\n 挿入された now および parentNote 変数を介して動的なコンテンツを追加できます。例: \n \n \n \n 詳細については Wiki の詳細 、および parentNotenow の API ドキュメントを参照してください。", + "run_on_note_title_change": "ノートのタイトルが変更されたときに実行されます(ノートの作成も含む)", + "run_on_note_content_change": "ノートの内容が変更されたときに実行されます(ノートの作成も含む)。", + "run_on_note_change": "ノートが変更されたときに実行されます(ノートの作成も含む)。内容の変更は含まれません", + "run_on_note_deletion": "ノートが削除されたときに実行されます", + "run_on_branch_creation": "ブランチが作成されたときに実行されます。ブランチは親ノートと子ノート間のリンクであり、例えばノートの複製や移動の際に作成されます。", + "run_on_branch_change": "ブランチが更新されたときに実行されます。", + "run_on_branch_deletion": "ブランチが削除されたときに実行されます。ブランチは親ノートと子ノート間のリンクであり、ノートを移動した場合などに削除されます(古いブランチ/リンクは削除されます)。", + "run_on_attribute_creation": "このリレーションを定義するノートに新しい属性が作成された場合に実行されます", + "run_on_attribute_change": " このリレーションを定義するノートの属性が変更されたときに実行されます。属性が削除された場合にも実行されます", + "relation_template": "ノートの属性は親子関係がなくても継承されます。ノートの内容とサブツリーは、空の場合はインスタンスノートに追加されます。詳細はドキュメントをご覧ください。", + "inherit": "親子関係がなくても、ノートの属性は継承されます。同様の概念については、テンプレートリレーションを参照してください。ドキュメントの属性継承を参照してください。", + "widget_relation": "このリレーションのターゲットが実行され、サイドバーのウィジェットとしてレンダリングされます", + "share_css": "共有ページに挿入されるCSSノートです。CSSノートは共有サブツリーにも含まれている必要があります。「share_hidden_from_tree」と「share_omit_default_css」の使用も検討してください。", + "share_js": "共有ページに挿入されるJavaScriptノートです。JavaScriptノートは共有サブツリー内にも存在する必要があります。「share_hidden_from_tree」の使用を検討してください。", + "share_template": "共有ノートを表示するためのテンプレートとして使用される埋め込みJavaScriptノートです。デフォルトのテンプレートにフォールバックします。「share_hidden_from_tree」の使用を検討してください。", + "share_favicon": "共有ページに設定するファビコンのノートです。通常は共有ルートに設定し、継承可能にします。ファビコンのノートは共有サブツリーにも設定する必要があります。「share_hidden_from_tree」の使用を検討してください。", + "is_owned_by_note": "ノートによって所有されています", + "and_more": "...その他 {{count}} 件。", + "print_landscape": "PDF にエクスポートするときに、ページの向きを縦向きではなく横向きに変更します。", + "print_page_size": "PDF にエクスポートするときに、ページのサイズを変更します。サポートされる値: A0, A1, A2, A3, A4, A5, A6, Legal, Letter, Tabloid, Ledger。" }, "link_context_menu": { "open_note_in_popup": "クイックエディット", @@ -1104,11 +1166,14 @@ }, "template_switch": { "template": "テンプレート", - "toggle-on-hint": "ノートをテンプレート化する" + "toggle-on-hint": "ノートをテンプレート化する", + "toggle-off-hint": "テンプレートとしてのノートを削除する" }, "open-help-page": "ヘルプページを開く", "shared_info": { - "help_link": "ヘルプについては、wikiをご覧ください。" + "help_link": "ヘルプについては、wikiをご覧ください。", + "shared_locally": "このノートは {{- link}} でローカルに共有されています。", + "shared_publicly": "このノートは {{- link}} で一般公開されています。" }, "highlights_list_2": { "title": "ハイライトリスト", @@ -1132,7 +1197,10 @@ "auto-collapsing-notes-after-inactivity": "非アクティブ状態が続いたためノートが自動で折りたたまれます...", "create-child-note": "子ノートを作成", "hoist-this-note-workspace": "このノートをホイストする(ワークスペース)", - "unhoist": "ホイスト解除" + "unhoist": "ホイスト解除", + "saved-search-note-refreshed": "保存した検索ノートが更新されました。", + "refresh-saved-search-results": "保存した検索結果を更新", + "toggle-sidebar": "サイドバーを切り替え" }, "bulk_actions": { "bulk_actions": "一括操作", @@ -1143,7 +1211,7 @@ "execute_bulk_actions": "一括操作を実行", "bulk_actions_executed": "一括操作が成功に実行されました。", "labels": "ラベル", - "relations": "関係", + "relations": "リレーション", "notes": "ノート", "other": "その他", "none_yet": "アクションを上のリストからクリックして追加。" @@ -1272,11 +1340,17 @@ "continue_anyway": "とにかく続ける", "message_windows": "TriliumNext は現在エミュレーションを実行しています。つまり、ARM版WindowsデバイスでIntel(x64)版を使用していることになります。これはパフォーマンスとバッテリー寿命に重大な影響を及ぼします。", "recommendation": "最適なエクスペリエンスを得るには、リリース ページから TriliumNext のネイティブ ARM64 バージョンをダウンロードしてください。", - "download_link": "ネイティブ版をダウンロード" + "download_link": "ネイティブ版をダウンロード", + "message_macos": "TriliumNext は現在、Rosetta 2による翻訳環境で実行されています。つまり、Apple Silicon MacではIntel (x64)バージョンを使用していることになります。これはパフォーマンスとバッテリー寿命に重大な影響を及ぼします。" }, "editorfeatures": { "emoji_completion_enabled": "絵文字のオートコンプリートを有効", - "note_completion_enabled": "ノートのオートコンプリートを有効" + "note_completion_enabled": "ノートのオートコンプリートを有効", + "emoji_completion_description": "有効にすると、「:」に続けて絵文字の名前を入力することで、テキストに絵文字を簡単に挿入できます。", + "note_completion_description": "有効にすると、「@」 に続けてノートのタイトルを入力することで、ノートへのリンクを作成できます。", + "slash_commands_enabled": "スラッシュコマンドを有効", + "slash_commands_description": "有効にすると、改行や見出しの挿入などの編集コマンドは、「/」 と入力して切り替えることができます。", + "title": "機能" }, "table_context_menu": { "delete_row": "行を削除" @@ -1344,7 +1418,8 @@ "agent": { "processing": "処理中...", "loading": "読み込み中...", - "generating": "生成中..." + "generating": "生成中...", + "thinking": "考え中..." }, "name": "AI", "openai": "OpenAI", @@ -1352,7 +1427,7 @@ "ollama_no_url": "Ollamaは設定されていません。有効なURLを入力してください。", "chat": { "root_note_title": "AIチャット", - "root_note_content": "このメモには、保存されたAIチャットの会話が含まれています。", + "root_note_content": "このノートには、保存されたAIチャットの会話が含まれています。", "new_chat_title": "新しいチャット", "create_new_ai_chat": "新しいAIチャットを作成" }, @@ -1362,7 +1437,71 @@ "selected_provider_description": "チャットおよび補完機能のAIプロバイダーを選択する", "selected_provider": "プロバイダーを選択", "select_model": "モデルを選択...", - "select_provider": "プロバイダーを選択..." + "select_provider": "プロバイダーを選択...", + "not_started": "開始されていません", + "processed_notes": "処理済みノート", + "total_notes": "ノートの総数", + "progress": "進行状況", + "queued_notes": "キューに登録されたノート", + "failed_notes": "失敗したノート", + "last_processed": "最終処理日時", + "refresh_stats": "統計情報を更新", + "temperature": "Temperature(温度)", + "url": "ベースURL", + "base_url": "ベースURL", + "enable_automatic_indexing": "自動インデックス作成を有効にする", + "rebuild_index": "インデックスの再構築", + "rebuild_index_error": "インデックスの再構築開始時にエラーが発生しました。詳細はログをご確認ください。", + "note_title": "ノートのタイトル", + "last_attempt": "最終試行日時", + "actions": "アクション", + "retry_queued": "ノートが再試行キューに追加されました", + "retry_failed": "ノートを再試行キューに追加できませんでした", + "max_notes_per_llm_query": "クエリあたりの最大ノート数", + "max_notes_per_llm_query_description": "AIコンテキストに含める類似ノートの最大数", + "active_providers": "アクティブなプロバイダー", + "disabled_providers": "無効なプロバイダー", + "remove_provider": "検索からプロバイダーを削除", + "restore_provider": "検索にプロバイダーを復元", + "similarity_threshold": "類似度のしきい値", + "similarity_threshold_description": "LLMクエリのコンテキストに含めるノートの最小類似度スコア(0~1)", + "reprocess_index": "検索インデックスを再構築", + "reprocessing_index": "再構築中...", + "reprocess_index_started": "検索インデックスの最適化がバックグラウンドで開始されました", + "reprocess_index_error": "検索インデックスの再構築中にエラーが発生しました", + "index_rebuild_progress": "インデックスの再構築の進行状況", + "index_rebuilding": "インデックスの最適化中({{percentage}}%)", + "index_rebuild_complete": "インデックスの最適化が完了しました", + "index_rebuild_status_error": "インデックスの再構築ステータスの確認中にエラーが発生しました", + "never": "なし", + "incomplete": "未完了 ({{percentage}}%)", + "note_queued_for_retry": "ノートが再試行キューに追加されました", + "failed_to_retry_note": "ノートの再試行に失敗しました", + "all_notes_queued_for_retry": "失敗したすべてのノートは再試行のためにキューに入れられました", + "failed_to_retry_all": "ノートの再試行に失敗しました", + "use_enhanced_context": "拡張されたコンテキストを使用する", + "enhanced_context_description": "ノートとその関連ノートからより多くのコンテキストをAIに提供し、より良い応答を実現します", + "show_thinking": "思考を表示", + "show_thinking_description": "AIの思考プロセスをチェーン表示", + "enter_message": "メッセージを入力...", + "error_generating_response": "AI応答の生成中にエラーが発生しました", + "index_all_notes": "すべてのノートをインデックスに登録", + "index_status": "インデックスのステータス", + "indexed_notes": "インデックス登録済みのノート", + "indexing_stopped": "インデックス登録を停止しました", + "indexing_in_progress": "インデックス登録中です...", + "last_indexed": "最終インデックス作成日時", + "n_notes_queued_0": "{{ count }} 件のノートがインデックス作成待ちです", + "note_chat": "ノートチャット", + "notes_indexed_0": "{{ count }} 件のノートをインデックスしました", + "sources": "ソース", + "start_indexing": "インデックス作成を開始", + "use_advanced_context": "高度なコンテキストを使用", + "ai_enabled": "AI 機能が有効", + "ai_disabled": "AI 機能が無効", + "no_models_found_online": "モデルが見つかりません。API キーと設定を確認してください。", + "no_models_found_ollama": "Ollama モデルが見つかりません。Ollama が実行中かどうかを確認してください。", + "error_fetching": "モデルの取得エラー: {{error}}" }, "add_label": { "add_label": "ラベルを追加", @@ -1370,7 +1509,10 @@ "label_name_title": "英数字、アンダーバー、コロンが使用可能な文字です。", "new_value_placeholder": "新しい値", "help_text": "一致したすべてのノートに:", - "help_text_note": "このメソッドを値なしで呼び出すこともできます。その場合、ラベルは値なしでノートに割り当てられます。" + "help_text_note": "このメソッドを値なしで呼び出すこともできます。その場合、ラベルは値なしでノートに割り当てられます。", + "to_value": "値", + "help_text_item1": "ノートにまだラベルがない場合は、指定されたラベルを作成します", + "help_text_item2": "または既存のラベルの値を変更する" }, "delete_label": { "delete_label": "ラベルを削除", @@ -1391,32 +1533,39 @@ "label_name_title": "英数字、アンダーバー、コロンが使用可能な文字です。", "new_value_placeholder": "新しい値", "help_text_note": "このメソッドは値なしで呼び出すこともできます。その場合、値なしでラベルがノートに割り当てられます。", - "help_text": "一致したすべてのノートで、既存のラベルの値を変更する。" + "help_text": "一致したすべてのノートで、既存のラベルの値を変更する。", + "to_value": "値" }, "add_relation": { - "add_relation": "関係を追加", - "relation_name": "関係の名前", + "add_relation": "リレーションを追加", + "relation_name": "リレーションの名前", "allowed_characters": "英数字、アンダーバー、コロンが使用可能な文字です。", - "create_relation_on_all_matched_notes": "一致したすべてのノートに対して、指定されたリレーションを作成します。" + "create_relation_on_all_matched_notes": "一致したすべてのノートに対して、指定されたリレーションを作成します。", + "target_note": "対象のノート", + "to": "を" }, "delete_relation": { - "delete_relation": "関係を削除", - "relation_name": "関係の名前", + "delete_relation": "リレーションを削除", + "relation_name": "リレーションの名前", "allowed_characters": "英数字、アンダーバー、コロンが使用可能な文字です。" }, "rename_relation": { - "rename_relation": "関係の名前を変更", - "rename_relation_from": "関係の名前を", + "rename_relation": "リレーションの名前を変更", + "rename_relation_from": "リレーションの名前を", "old_name": "古い名前", "to": "から", "new_name": "新しい名前", "allowed_characters": "英数字、アンダーバー、コロンが使用可能な文字です。" }, "update_relation_target": { - "update_relation": "関係の更新", - "relation_name": "関係の名前", + "update_relation": "リレーションの更新", + "relation_name": "リレーションの名前", "allowed_characters": "英数字、アンダーバー、コロンが使用可能な文字です。", - "on_all_matched_notes": "一致したすべてのノートに" + "on_all_matched_notes": "一致したすべてのノートに", + "target_note": "対象のノート", + "change_target_note": "既存のリレーション対象のノートを変更する", + "update_relation_target": "リレーション対象の更新", + "to": "を" }, "revisions_button": { "note_revisions": "ノートの変更履歴" @@ -1427,21 +1576,24 @@ "zpetne_odkazy": { "backlink": "{{count}} バックリンク", "backlinks": "{{count}} バックリンク", - "relation": "関係" + "relation": "リレーション" }, "mobile_detail_menu": { "delete_this_note": "このノートを削除", - "error_unrecognized_command": "認識されないコマンド {{command}}" + "error_unrecognized_command": "認識されないコマンド {{command}}", + "insert_child_note": "子ノートを挿入", + "error_cannot_get_branch_id": "ノートパス 「{{notePath}} のbranchIdを取得できません" }, "inherited_attribute_list": { "title": "継承属性", - "no_inherited_attributes": "継承属性ではありません。" + "no_inherited_attributes": "継承属性はありません。" }, "note_map": { "open_full": "拡大表示", "collapse": "通常サイズに折りたたむ", "title": "ノートマップ", - "link-distance": "リンク距離" + "link-distance": "リンク距離", + "fix-nodes": "ノードを修正" }, "owned_attribute_list": { "owned_attributes": "所有属性" @@ -1453,7 +1605,9 @@ "unknown_attribute_type": "不明な属性タイプ '{{type}}'", "add_new_attribute": "新しい属性を追加", "remove_this_attribute": "この属性を削除", - "remove_color": "このカラーラベルを削除" + "remove_color": "このカラーラベルを削除", + "promoted_attributes": "プロモート属性", + "url_placeholder": "http://ウェブサイト..." }, "relation_map": { "open_in_new_tab": "新しいタブで開く", @@ -1461,14 +1615,17 @@ "edit_title": "タイトルを編集", "rename_note": "ノート名を変更", "enter_new_title": "新しいノート名を入力:", - "remove_relation": "関係を削除", - "confirm_remove_relation": "本当にこの関係を削除しますか?", - "specify_new_relation_name": "新しい関係の名前(使用可能な文字: 英数字、コロン、アンダースコア)を指定:", + "remove_relation": "リレーションを削除", + "confirm_remove_relation": "本当にこのリレーションを削除しますか?", + "specify_new_relation_name": "新しいリレーションの名前(使用可能な文字: 英数字、コロン、アンダースコア)を指定:", "note_not_found": "ノート {{noteId}} が見つかりません!", "enter_title_of_new_note": "新しいノートのタイトルを入力", "default_new_note_title": "新しいノート", "cannot_match_transform": "変換を一致させることができません: {{transform}}", - "click_on_canvas_to_place_new_note": "キャンバスをクリックして新しいノートを配置" + "click_on_canvas_to_place_new_note": "キャンバスをクリックして新しいノートを配置", + "connection_exists": "これらのノート間の接続 '{{name}}' は既に存在します。", + "start_dragging_relations": "ここからリレーションをドラッグして、別のノートにドロップします。", + "note_already_in_diagram": "ノート「{{title}}」はすでに図に含まれています。" }, "database_anonymization": { "title": "データベースの匿名化", @@ -1534,7 +1691,7 @@ "native-title-bar": "ネイティブタイトルバー", "native-title-bar-description": "WindowsとmacOSでは、ネイティブタイトルバーをオフにしておくと、アプリケーションがよりコンパクトに見えます。Linuxでは、ネイティブタイトルバーを表示したままの方が、他のシステムとの統一性が高まります。", "background-effects": "背景効果を有効化(Windows 11のみ)", - "background-effects-description": "Mica効果は、アプリのウィンドウにぼかされたスタイリッシュな背景を追加し、奥行きとモダンな外観を作り出します。", + "background-effects-description": "Mica効果は、アプリのウィンドウにぼかされたスタイリッシュな背景を追加し、奥行きとモダンな外観を演出します。「ネイティブタイトルバー」を無効にする必要があります。", "restart-app-button": "アプリケーションを再起動して変更を反映", "zoom-factor": "ズーム倍率" }, @@ -1577,10 +1734,23 @@ "attribute_editor": { "help_text_body1": "ラベルを追加するには、例 #rock と入力します。値も追加したい場合は、例 #year = 2020 と入力します", "help_text_body2": "リレーションについては、~author = @ と入力すると、オートコンプリートが表示され、目的のノートを検索できるようになります。", - "placeholder": "ここにラベルとリレーションを入力" + "placeholder": "ここにラベルとリレーションを入力", + "help_text_body3": "代わりに、右側の + ボタンを使用してラベルとリレーションを追加することもできます。", + "save_attributes": "属性を保存 ", + "add_a_new_attribute": "新しい属性を追加", + "add_new_label": "新しいラベルを追加 ", + "add_new_relation": "新しいリレーションを追加 ", + "add_new_label_definition": "新しいラベル定義を追加", + "add_new_relation_definition": "新しいリレーション定義を追加" }, "move_note": { - "on_all_matched_notes": "一致したすべてのノートに" + "on_all_matched_notes": "一致したすべてのノートに", + "move_note": "ノートを移動", + "target_parent_note": "対象の親ノート", + "move_note_new_parent": "ノートに親が 1 つしかない場合は、ノートを新しい親に移動します (つまり、古いブランチが削除され、新しい親に新しいブランチが作成されます)", + "clone_note_new_parent": "ノートに複数のクローン/ブランチがある場合、ノートを新しい親にクローンします(どのブランチを削除すべきか不明なため)", + "nothing_will_happen": "ノートをターゲットノートに移動できない場合は何も起こりません(つまり、ツリーサイクルが生じるため)", + "to": "次へ" }, "onclick_button": { "no_click_handler": "ボタン ウィジェット '{{componentId}}' にはクリック ハンドラーが定義されていません" @@ -1596,20 +1766,35 @@ "placeholder": "ここにノートの内容を入力..." }, "empty": { - "open_note_instruction": "以下の入力欄にノートのタイトルを入力するか、ツリー内のノートを選択してノートを開きます。" + "open_note_instruction": "以下の入力欄にノートのタイトルを入力するか、ツリー内のノートを選択してノートを開きます。", + "search_placeholder": "名前でノートを検索", + "enter_workspace": "ワークスペース {{title}} に入る" }, "file": { - "too_big": "パフォーマンス上の理由により、プレビューではファイルの最初の {{maxNumChars}} 文字のみが表示されます。ファイル全体を表示するには、ファイルをダウンロードして外部で開いてください。" + "too_big": "パフォーマンス上の理由により、プレビューではファイルの最初の {{maxNumChars}} 文字のみが表示されます。ファイル全体を表示するには、ファイルをダウンロードして外部で開いてください。", + "file_preview_not_available": "このファイル形式ではファイルプレビューは利用できません。" }, "protected_session": { - "enter_password_instruction": "保護されたノートを表示するにはパスワードを入力する必要があります:" + "enter_password_instruction": "保護されたノートを表示するにはパスワードを入力する必要があります:", + "start_session_button": "保護されたセッションを開始 enter", + "started": "保護されたセッションが開始されました。", + "wrong_password": "パスワードが間違っています。", + "protecting-finished-successfully": "保護が正常に完了しました。", + "unprotecting-finished-successfully": "保護の解除が正常に完了しました。", + "protecting-in-progress": "保護中: {{count}}", + "unprotecting-in-progress-count": "保護解除中: {{count}}", + "protecting-title": "保護の状態", + "unprotecting-title": "保護解除の状態" }, "render": { - "note_detail_render_help_1": "このヘルプノートが表示されるのは、このノートの「HTML のレンダリング」タイプには、正常に機能するために必要なリレーションがないためです。" + "note_detail_render_help_1": "このヘルプノートが表示されるのは、このノートの「HTML のレンダリング」タイプには、正常に機能するために必要なリレーションがないためです。", + "note_detail_render_help_2": "レンダリングHTMLノートタイプは、スクリプティングに使用されます。簡単に言うと、HTMLコードノート(オプションでJavaScriptを含む)があり、このノートがそれをレンダリングします。これを動作させるには、レンダリングするHTMLノートを指す「renderNote」というリレーションを定義する必要があります。" }, "consistency_checks": { "find_and_fix_button": "一貫性の問題を見つけて修正する", - "finding_and_fixing_message": "一貫性の問題を見つけて修正中…" + "finding_and_fixing_message": "一貫性の問題を見つけて修正中…", + "title": "一貫性をチェック", + "issues_fixed_message": "発見された可能性のある一貫性の問題はすべて修正されました。" }, "vacuum_database": { "title": "データベースのバキューム", @@ -1620,12 +1805,16 @@ }, "ribbon": { "promoted_attributes_message": "プロモート属性がノートに存在する場合、プロモート属性のリボンタブが自動的に開きます", - "edited_notes_message": "編集したノートのリボンタブは、dayノートで自動的に開きます" + "edited_notes_message": "編集したノートのリボンタブは、dayノートで自動的に開きます", + "widgets": "リボンウィジェット" }, "ui-performance": { "enable-motion": "トランジションとアニメーションを有効にする", "enable-shadows": "影を有効にする", - "enable-backdrop-effects": "メニュー、ポップアップ、パネルの背景効果を有効にする" + "enable-backdrop-effects": "メニュー、ポップアップ、パネルの背景効果を有効にする", + "title": "パフォーマンス", + "enable-smooth-scroll": "スムーズスクロールを有効にする", + "app-restart-required": "(変更を有効にするにはアプリケーションの再起動が必要です)" }, "code_mime_types": { "title": "ドロップダウンで利用可能なMIMEタイプ" @@ -1664,7 +1853,12 @@ "erase_excess_revision_snapshots_prompt": "余分な変更履歴が消去されました。" }, "editability_select": { - "note_is_read_only": "ノートは読み取り専用ですが、ボタンをクリックすると編集できます。" + "note_is_read_only": "ノートは読み取り専用ですが、ボタンをクリックすると編集できます。", + "auto": "自動", + "read_only": "読み取り専用", + "always_editable": "常に編集可能", + "note_is_editable": "ノートは長すぎなければ編集可能です。", + "note_is_always_editable": "ノートは長さに関係なく常に編集可能です。" }, "find": { "case_sensitive": "大文字と小文字を区別", @@ -1681,7 +1875,9 @@ "could_not_find_typewidget": "タイプ {{type}} の typeWidget が見つかりませんでした" }, "watched_file_update_status": { - "ignore_this_change": "この変更を無視する" + "ignore_this_change": "この変更を無視する", + "file_last_modified": "ファイル に最後に変更されました。", + "upload_modified_file": "変更したファイルをアップロード" }, "image": { "copied-to-clipboard": "画像への参照がクリップボードにコピーされました。これは任意のテキストノートに貼り付けることができます。", @@ -1689,7 +1885,8 @@ }, "entrypoints": { "note-revision-created": "ノートの改訂版が作成されました。", - "sql-error": "SQL クエリの実行中にエラーが発生しました: {{message}}" + "sql-error": "SQL クエリの実行中にエラーが発生しました: {{message}}", + "note-executed": "ノートが実行されました。" }, "branches": { "cannot-move-notes-here": "ここにノートを移動することはできません。", @@ -1706,7 +1903,9 @@ "ws": { "sync-check-failed": "同期チェックに失敗しました!", "consistency-checks-failed": "整合性チェックに失敗しました! 詳細はログを参照してください。", - "encountered-error": "エラー「{{message}}」が発生しました。コンソールを確認してください。" + "encountered-error": "エラー「{{message}}」が発生しました。コンソールを確認してください。", + "lost-websocket-connection-title": "サーバーへの接続が失われました", + "lost-websocket-connection-message": "リバースプロキシ(例: nginx や Apache など)の設定を確認し、WebSocket 接続が適切に許可され、ブロックされていないことを確認してください。" }, "hoisted_note": { "confirm_unhoisting": "要求されたノート「{{requestedNote}}」は、ホイストされたノート「{{hoistedNote}}」サブツリーの外部にあるため、ノートにアクセスするにはホイストを解除する必要があります。ホイスト解除を続行しますか?" @@ -1752,7 +1951,10 @@ "display-week-numbers": "週番号を表示", "map-style": "マップスタイル:", "max-nesting-depth": "最大階層の深さ:", - "show-scale": "スケールを表示" + "show-scale": "スケールを表示", + "raster": "Raster", + "vector_light": "Vector(ライト)", + "vector_dark": "Vector (ダーク)" }, "call_to_action": { "next_theme_title": "新しいTriliumテーマをお試しください", @@ -1779,5 +1981,89 @@ }, "collections": { "rendering_error": "エラーのためコンテンツを表示できません。" + }, + "abstract_bulk_action": { + "remove_this_search_action": "この検索アクションを削除" + }, + "update_available": { + "update_available": "アップデートが利用可能" + }, + "copy_image_reference_button": { + "button_title": "画像参照をクリップボードにコピーし、テキストノートに貼り付けることができます。" + }, + "attachment_detail": { + "open_help_page": "添付ファイルのヘルプページを開く", + "owning_note": "所有ノート: ", + "you_can_also_open": "、開くこともできます ", + "list_of_all_attachments": "すべての添付ファイルのリスト", + "attachment_deleted": "この添付ファイルは削除されました。" + }, + "attachment_list": { + "open_help_page": "添付ファイルのヘルプページを開く", + "owning_note": "所有ノート: ", + "upload_attachments": "添付ファイルをアップロード", + "no_attachments": "このノートには添付ファイルはありません。" + }, + "book": { + "no_children_help": "このコレクションには子ノートがないため、表示するものがありません。詳細はwikiをご覧ください。", + "drag_locked_title": "編集をロック中", + "drag_locked_message": "コレクションは編集がロックされているため、ドラッグは許可されていません。" + }, + "native_title_bar": { + "title": "ネイティブタイトルバー(アプリの再起動が必要です)", + "enabled": "有効", + "disabled": "無効" + }, + "options_widget": { + "options_change_saved": "オプションの変更が保存されました。", + "options_status": "オプションステータス" + }, + "multi_factor_authentication": { + "title": "多要素認証", + "description": "多要素認証(MFA)は、アカウントのセキュリティをさらに強化します。ログイン時にパスワードを入力するだけでなく、MFAでは本人確認のために1つ以上の追加情報の入力を求められます。これにより、たとえ誰かがパスワードを入手したとしても、2つ目の情報がなければアカウントにアクセスできません。まるでドアに鍵を追加したようなもので、他人が侵入するのがはるかに困難になります。

MFAを有効にするには、以下の手順に従ってください。正しく設定しないと、ログインはパスワードのみで行われます。", + "mfa_enabled": "多要素認証を有効にする", + "mfa_method": "MFAメソッド", + "electron_disabled": "現在、デスクトップ ビルドでは多要素認証はサポートされていません。", + "totp_title": "時間ベースのワンタイムパスワード (TOTP)", + "totp_description": "TOTP(時間ベースのワンタイムパスワード)は、30秒ごとに変化する一意の一時的なコードを生成するセキュリティ機能です。このコードとパスワードを使用してアカウントにログインすることで、他人がアクセスするのを大幅に困難にします。", + "totp_secret_title": "TOTPシークレットを生成する", + "totp_secret_generate": "TOTPシークレットを生成する", + "totp_secret_regenerate": "TOTPシークレットを再生成する", + "no_totp_secret_warning": "TOTP を有効にするには、まず TOTP シークレットを生成する必要があります。", + "totp_secret_description_warning": "新しい TOTP シークレットを生成したら、新しい TOTP シークレットを使用して再度ログインする必要があります。", + "totp_secret_generated": "TOTPシークレットが生成されました", + "totp_secret_warning": "生成されたシークレットは安全な場所に保存してください。再度表示されることはありません。", + "totp_secret_regenerate_confirm": "OTP シークレットを再生成してもよろしいですか?これにより、以前の TOTP シークレットと既存のすべての回復コードが無効になります。", + "recovery_keys_title": "シングルサインオン回復キー", + "recovery_keys_description": "シングル サインオン回復キーは、認証コードにアクセスできない場合でもログインするために使用されます。", + "recovery_keys_description_warning": "回復キーはページを離れた後は再度表示されませんので、安全な場所に保管してください。
回復キーは一度使用すると再度使用できなくなります。", + "recovery_keys_error": "回復コードの生成中にエラーが発生しました", + "recovery_keys_no_key_set": "回復コードが設定されていません", + "recovery_keys_generate": "回復コードを生成する", + "recovery_keys_regenerate": "回復コードの再生成", + "recovery_keys_used": "使用日: {{date}}", + "recovery_keys_unused": "回復コード {{index}} は未使用です", + "oauth_title": "OAuth/OpenID", + "oauth_description": "OpenIDは、Googleなどの他のサービスのアカウントを使用してウェブサイトにログインし、本人確認を行うための標準化された方法です。デフォルトの発行者はGoogleですが、他のOpenIDプロバイダに変更できます。詳しくはこちらをご覧ください。Google経由でOpenIDサービスを設定するには、こちらの手順に従ってください。", + "oauth_description_warning": "OAuth/OpenIDを有効にするには、config.iniファイルにOAuth/OpenIDのベースURL、クライアントID、クライアントシークレットを設定し、アプリケーションを再起動する必要があります。環境変数から設定する場合は、TRILIUM_OAUTH_BASE_URL, TRILIUM_OAUTH_CLIENT_ID and TRILIUM_OAUTH_CLIENT_SECRET を設定してください。", + "oauth_missing_vars": "設定がありません: {{-variables}}", + "oauth_user_account": "ユーザーアカウント: ", + "oauth_user_email": "ユーザーEメール: ", + "oauth_user_not_logged_in": "ログインしていません!" + }, + "note-map": { + "button-link-map": "リンクマップ", + "button-tree-map": "ツリーマップ" + }, + "spacer": { + "configure_launchbar": "ランチャーバーを設定" + }, + "attachment_detail_2": { + "will_be_deleted_in": "この添付ファイルは {{time}} 後に自動的に削除されます", + "will_be_deleted_soon": "この添付ファイルはすぐに自動的に削除されます", + "deletion_reason": "、添付ファイルがノートのコンテンツにリンクされていないためです。削除されないようにするには、添付ファイルのリンクをコンテンツに再度追加するか、添付ファイルをノートに変換してください。", + "role_and_size": "ロール: {{role}},サイズ: {{size}}", + "link_copied": "添付ファイルのリンクをクリップボードにコピーしました。", + "unrecognized_role": "添付ファイルのロール「{{role}}」は認識されません。" } } diff --git a/apps/client/src/translations/pt_br/translation.json b/apps/client/src/translations/pt_br/translation.json index 915cbf64b3..5bdd1ae543 100644 --- a/apps/client/src/translations/pt_br/translation.json +++ b/apps/client/src/translations/pt_br/translation.json @@ -840,7 +840,7 @@ "cannot_find_day_note": "Nota do dia não encontrada", "cannot_find_week_note": "Nota semanal não encontrada", "january": "Janeiro", - "febuary": "Fevereiro", + "february": "Fevereiro", "march": "Março", "april": "Abril", "may": "Maio", diff --git a/apps/client/src/translations/ro/translation.json b/apps/client/src/translations/ro/translation.json index 794babe090..073b1c0571 100644 --- a/apps/client/src/translations/ro/translation.json +++ b/apps/client/src/translations/ro/translation.json @@ -322,7 +322,7 @@ "august": "August", "cannot_find_day_note": "Nu se poate găsi notița acelei zile", "december": "Decembrie", - "febuary": "Februarie", + "february": "Februarie", "fri": "Vin", "january": "Ianuarie", "july": "Iulie", diff --git a/apps/client/src/translations/ru/translation.json b/apps/client/src/translations/ru/translation.json index c59116edee..bc10e287ea 100644 --- a/apps/client/src/translations/ru/translation.json +++ b/apps/client/src/translations/ru/translation.json @@ -282,13 +282,13 @@ "editBranchPrefix": "изменить префикс клона активной заметки", "multiSelectNote": "множественный выбор заметки выше/ниже", "selectNote": "выбрать заметку", - "copyNotes": "скопировать активную заметку (или выделение) в буфер обмер (используется для клонирования)", + "copyNotes": "скопировать активную заметку (или выделение) в буфер обмена (используется для клонирования)", "createEditLink": "создать/редактировать внешнюю ссылку", "headings": "##, ###, #### и т. д., за которыми следует пробел для заголовков", "bulletList": "* или - с последующим пробелом для маркированного списка", "numberedList": "1. или 1) с последующим пробелом для нумерованного списка", "blockQuote": "начните строку с >, а затем пробела для блока цитаты", - "quickSearch": "сфокусироваться на полее ввода быстрого поиска", + "quickSearch": "сфокусироваться на поле ввода быстрого поиска", "editNoteTitle": "в области дерева переключится с области дерева на заголовок заметки. Сочетание клавиш Enter из области заголовка заметки переключит фокус на текстовый редактор. Ctrl+. переключит обратно с редактора на область дерева.", "title": "Справка" }, @@ -370,7 +370,7 @@ "confirm_delete": "Вы хотите удалить эту версию?", "revisions_deleted": "Версии заметки были удалены.", "revision_restored": "Версия заметки была восстановлена.", - "revision_deleted": "Версия заметки были удалены.", + "revision_deleted": "Версия заметки была удалена.", "download_button": "Скачать", "file_size": "Размер файла:", "preview": "Предпросмотр:", @@ -463,7 +463,7 @@ "run_at_hour": "В какой час это должно выполняться? Следует использовать вместе с #run=hourly. Можно задать несколько раз для большего количества запусков в течение дня.", "disable_inclusion": "скрипты с этой меткой не будут включены в выполнение родительского скрипта.", "sorted": "сохраняет алфавитную сортировку дочерних заметок", - "sort_direction": "ASC (по возрастани, по умолчанию) или DESC (по убыванию)", + "sort_direction": "ASC (по возрастанию, по умолчанию) или DESC (по убыванию)", "sort_folders_first": "Папки (заметки, включая дочерние) должны быть отсортированы вверх", "top": "закрепить заданную заметку наверху в ее родителе (применяется только к отсортированным родительским заметкам)", "hide_promoted_attributes": "Скрыть продвигаемых атрибуты в этой заметке", @@ -479,7 +479,7 @@ "workspace_search_home": "новые заметки поиска будут созданы как дочерние записи этой заметки при перемещении их к какому-либо предку этой заметки рабочей области", "workspace_calendar_root": "Определяет корень календаря для каждого рабочего пространства", "hide_highlight_widget": "Скрыть виджет «Выделенное»", - "is_owned_by_note": "принадлежит записке", + "is_owned_by_note": "принадлежит заметке", "and_more": "... и ещё {{count}}.", "app_theme": "отмечает заметки CSS, которые являются полноценными темами Trilium и, таким образом, доступны в опциях Trilium.", "title_template": "Заголовок по умолчанию для заметок, создаваемых как дочерние элементы данной заметки. Значение вычисляется как строка JavaScript\n и, таким образом, может быть дополнено динамическим контентом с помощью внедренных переменных now и parentNote. Примеры:\n \n \n \n Подробности см. в вики, документации API для parentNote и now.", @@ -528,8 +528,8 @@ "run_on_note_deletion": "выполняется при удалении заметки", "run_on_branch_creation": "выполняется при создании ветви. Ветвь — это связующее звено между родительской и дочерней заметками и создаётся, например, при клонировании или перемещении заметки.", "run_on_branch_change": "выполняется при обновлении ветки.", - "run_on_attribute_creation": "выполняется, когда создается новый атрибут для заметка, определяющей это отношение", - "run_on_attribute_change": " выполняется при изменении атрибута заметки, определяющей это отношение. Также срабатывает при удалении атрибута", + "run_on_attribute_creation": "выполняется, когда создается новый атрибут для заметки, определяющей это отношение", + "run_on_attribute_change": "выполняется при изменении атрибута заметки, определяющей это отношение. Также срабатывает при удалении атрибута", "relation_template": "атрибуты заметки будут унаследованы даже без родительско-дочерних отношений. Содержимое заметки и её поддерево будут добавлены к экземпляру заметки, если оно пустое. Подробности см. в документации.", "inherit": "атрибуты заметки будут унаследованы даже без родительско-дочерних отношений. См. описание шаблонных отношений для получения аналогичной информации. См. раздел «Наследование атрибутов» в документации.", "render_note": "заметки типа «Рендер HTML» будут отображаться с использованием кодовой заметки (HTML или скрипта), и необходимо указать с помощью этой связи, какую заметку следует отобразить", @@ -712,7 +712,7 @@ }, "code_block": { "copy_title": "Копировать в буфер обмена", - "theme_group_dark": "Темныце темы", + "theme_group_dark": "Темные темы", "theme_group_light": "Светлые темы", "theme_none": "Нет подсветки синтаксиса", "word_wrapping": "Перенос слов" @@ -783,7 +783,7 @@ "beta-feature": "Бета", "widget": "Виджет", "image": "Изображение", - "file": "Файд", + "file": "Файл", "canvas": "Холст", "mermaid-diagram": "Диаграмма Mermaid", "book": "Коллекция", @@ -811,7 +811,7 @@ "export": "Экспорт", "open-in-a-new-tab": "Открыть в новой вкладке", "open-in-a-new-split": "Открыть в новой панели", - "unhoist-note": "Отрепить заметку", + "unhoist-note": "Открепить заметку", "hoist-note": "Закрепить заметку", "protect-subtree": "Защитить поддерево", "unprotect-subtree": "Снять защиту с поддерева", @@ -864,7 +864,7 @@ "to": "в", "move_note": "Переместить заметку", "target_parent_note": "целевая версии заметки", - "on_all_matched_notes": "На всех совпадающих нотах", + "on_all_matched_notes": "На всех совпадающих заметках", "move_note_new_parent": "переместить заметку в новый родительский элемент, если у заметки есть только один родительский элемент (т. е. старая ветвь удаляется и создается новая ветвь в новом родительском элементе)", "clone_note_new_parent": "клонировать заметку в новый родительский элемент, если у заметки есть несколько клонов/ветвей (неясно, какую ветвь следует удалить)", "nothing_will_happen": "ничего не произойдет, если эту заметку невозможно переместить в целевую заметку (т.е. это создаст цикл дерева)" @@ -902,7 +902,7 @@ "delete_attachment": "Удалить вложение", "upload_new_revision": "Загрузить новую версию", "open_custom": "Открыть как...", - "open_custom_client_only": "Иной способ открытие вложений возможен только из десктопного приложения.", + "open_custom_client_only": "Открытие вложений другим способом возможно только в десктопном приложении.", "open_externally_detail_page": "Открытие вложения извне доступно только из детальной страницы. Для этого сначала нажмите на сведения о вложении и повторите действие.", "open_custom_title": "Файл будет открыт во внешнем приложении и отслеживаться на наличие изменений. После этого вы сможете загрузить изменённую версию обратно в Trilium.", "open_externally_title": "Файл будет открыт во внешнем приложении и отслеживаться на наличие изменений. После этого вы сможете загрузить изменённую версию обратно в Trilium.", @@ -925,7 +925,7 @@ "sat": "Сбт", "sun": "Вс", "january": "Январь", - "febuary": "Февраль", + "february": "Февраль", "march": "Март", "april": "Апрель", "may": "Май", @@ -1020,8 +1020,8 @@ "file_properties": { "download": "Скачать", "open": "Открыть", - "title": "Файд", - "upload_success": "Загрузка новой версии файла не удалась.", + "title": "Файл", + "upload_success": "Новая версия файла успешно загружена.", "upload_new_revision": "Загрузить новую версию", "file_size": "Размер файла", "file_type": "Тип файла", @@ -1153,7 +1153,7 @@ "label_abc": "возвращает заметки с меткой abc", "label_year": "ищет заметки с меткой year, имеющей значение 2019", "label_rock_pop": "соответствует заметкам с метками как rock, так и pop", - "label_rock_or_pop": "должна присутствовать только одна из vtnjr", + "label_rock_or_pop": "должна присутствовать только одна из меток", "label_year_comparison": "числовое сравнение (также >, >=, <).", "label_date_created": "заметки, созданные за последний месяц", "error": "Ошибка поиска: {{error}}", @@ -1413,7 +1413,7 @@ "first-week-contains-first-day": "Первая неделя содержит первый день года", "first-week-contains-first-thursday": "Первая неделя содержит первый четверг года", "first-week-has-minimum-days": "Первая неделя имеет минимальное количество дней", - "min-days-in-first-week": "Минимальное количество дней в первую неделю", + "min-days-in-first-week": "Минимальное количество дней в первой неделе", "first-week-info": "Первая неделя содержит первый четверг года в соответствии со стандартом ISO 8601.", "first-week-warning": "Изменение параметров первой недели может привести к дублированию существующих недельных заметок, и существующие недельные заметки не будут обновлены соответствующим образом.", "formatting-locale": "Формат даты и числа" @@ -1719,7 +1719,7 @@ "database_vacuumed": "База данных была сжата" }, "vim_key_bindings": { - "use_vim_keybindings_in_code_notes": "Раскладка клавиш VIM", + "use_vim_keybindings_in_code_notes": "Сочетания клавиш Vim", "enable_vim_keybindings": "Включить сочетания клавиш Vim в заметках кода (без режима ex)" }, "network_connections": { @@ -1802,7 +1802,7 @@ "button_title": "Экспортировать диаграмму как SVG" }, "copy_image_reference_button": { - "button_title": "Скопировать ссылку на изображение в буфер обмена, можент быть вставлена в текстовую заметку." + "button_title": "Скопировать ссылку на изображение в буфер обмена, может быть вставлена в текстовую заметку." }, "note_launcher": { "this_launcher_doesnt_define_target_note": "Этот лаунчер не определяет целевую заметку." @@ -1973,7 +1973,9 @@ "ws": { "sync-check-failed": "Проверка синхронизации не удалась!", "encountered-error": "Обнаружена ошибка \"{{message}}\", проверьте консоль.", - "consistency-checks-failed": "Проверка целостности не пройдена! Подробности смотрите в логах." + "consistency-checks-failed": "Проверка целостности не пройдена! Подробности смотрите в логах.", + "lost-websocket-connection-title": "Потеряно соединение с сервером", + "lost-websocket-connection-message": "Проверьте конфигурацию обратного прокси (например, nginx или Apache), чтобы убедиться, что соединения WebSocket должным образом разрешены и не заблокированы." }, "attachment_detail_2": { "role_and_size": "Роль: {{role}}, Размер: {{size}}", @@ -2045,7 +2047,7 @@ "could_not_find_typewidget": "Не удалось найти typeWidget для типа '{{type}}'" }, "book": { - "no_children_help": "В этой коллекции нет дочерних заметок, поэтому отображать нечего. Подробности см. на wiki.", + "no_children_help": "В этой коллекции нет дочерних заметок, поэтому отображать нечего. Подробности см. в wiki.", "drag_locked_title": "Защищено от изменения", "drag_locked_message": "Перетаскивание не допускается, так как коллекция защищена от редактирования." }, diff --git a/apps/client/src/translations/tw/translation.json b/apps/client/src/translations/tw/translation.json index bf1d83f976..8bf6461b13 100644 --- a/apps/client/src/translations/tw/translation.json +++ b/apps/client/src/translations/tw/translation.json @@ -581,7 +581,7 @@ "sun": "日", "cannot_find_day_note": "無法找到日記", "january": "一月", - "febuary": "二月", + "february": "二月", "march": "三月", "april": "四月", "may": "五月", @@ -1582,7 +1582,9 @@ "ws": { "sync-check-failed": "同步檢查失敗!", "consistency-checks-failed": "一致性檢查失敗!請查看日誌以了解詳細資訊。", - "encountered-error": "遇到錯誤 \"{{message}}\",請查看控制台。" + "encountered-error": "遇到錯誤 \"{{message}}\",請查看控制台。", + "lost-websocket-connection-title": "與伺服器的連線中斷", + "lost-websocket-connection-message": "檢查您的反向代理(如 nginx 或 Apache)設定以確保 Websocket 連線沒有被阻擋。" }, "hoisted_note": { "confirm_unhoisting": "請求的筆記 '{{requestedNote}}' 位於聚焦的筆記 '{{hoistedNote}}' 的子階層之外,您必須取消聚焦才能訪問該筆記。是否繼續取消聚焦?" @@ -1952,7 +1954,11 @@ "editorfeatures": { "title": "功能", "emoji_completion_enabled": "啟用 Emoji 自動完成", - "note_completion_enabled": "啟用筆記自動完成" + "note_completion_enabled": "啟用筆記自動完成", + "emoji_completion_description": "如果啟用,emoji 可以輕易地經由輸入 `:` 加上 emoji 名稱來插入。", + "note_completion_description": "如果啟用,導向筆記的連結可以經由輸入 `@` 加上筆記標題來建立。", + "slash_commands_enabled": "啟用斜線命令", + "slash_commands_description": "如果啟用,可以經由輸入 `/` 來觸發命令,如插入換行符或標題。" }, "table_view": { "new-row": "新增列", diff --git a/apps/client/src/translations/uk/translation.json b/apps/client/src/translations/uk/translation.json index 090c999594..82c9e5ae3d 100644 --- a/apps/client/src/translations/uk/translation.json +++ b/apps/client/src/translations/uk/translation.json @@ -722,7 +722,7 @@ "cannot_find_day_note": "Не вдається знайти денну нотатку", "cannot_find_week_note": "Не вдається знайти тижневу нотатку", "january": "Січень", - "febuary": "Лютий", + "february": "Лютий", "march": "Березень", "april": "Квітень", "may": "Травень", diff --git a/apps/client/src/widgets/buttons/calendar.ts b/apps/client/src/widgets/buttons/calendar.ts index 51e76dd614..56e9ff3b82 100644 --- a/apps/client/src/widgets/buttons/calendar.ts +++ b/apps/client/src/widgets/buttons/calendar.ts @@ -18,7 +18,7 @@ dayjs.extend(isSameOrAfter); const MONTHS = [ t("calendar.january"), - t("calendar.febuary"), + t("calendar.february"), t("calendar.march"), t("calendar.april"), t("calendar.may"), diff --git a/apps/client/src/widgets/collections/NoteList.tsx b/apps/client/src/widgets/collections/NoteList.tsx index 7eac3f57af..e721d3eb9b 100644 --- a/apps/client/src/widgets/collections/NoteList.tsx +++ b/apps/client/src/widgets/collections/NoteList.tsx @@ -189,6 +189,7 @@ function useViewModeConfig(note: FNote | null | undefined, vie useEffect(() => { if (!note || !viewType) return; + setViewConfig(undefined); const viewStorage = new ViewModeStorage(note, viewType); viewStorage.restore().then(config => { const storeFn = (config: T) => { diff --git a/apps/client/src/widgets/collections/table/columns.tsx b/apps/client/src/widgets/collections/table/columns.tsx index 6351ba5987..74db6ddb71 100644 --- a/apps/client/src/widgets/collections/table/columns.tsx +++ b/apps/client/src/widgets/collections/table/columns.tsx @@ -30,7 +30,8 @@ const labelTypeMappings: Record> = { editor: "datetime" }, number: { - editor: "number" + editor: "number", + sorter: "number" }, time: { editor: "input" diff --git a/apps/client/src/widgets/collections/table/index.tsx b/apps/client/src/widgets/collections/table/index.tsx index 40f5310c6e..d99d912d6a 100644 --- a/apps/client/src/widgets/collections/table/index.tsx +++ b/apps/client/src/widgets/collections/table/index.tsx @@ -16,9 +16,10 @@ import useColTableEditing from "./col_editing"; import AttributeDetailWidget from "../../attribute_widgets/attribute_detail"; import attributes from "../../../services/attributes"; import { RefObject } from "preact"; +import SpacedUpdate from "../../../services/spaced_update"; interface TableConfig { - tableData?: { + tableData: { columns?: ColumnDefinition[]; }; } @@ -53,12 +54,12 @@ export default function TableView({ note, noteIds, notePath, viewConfig, saveCon return (
- {columnDefs && ( + {persistenceProps && ( <> } @@ -94,23 +95,31 @@ function TableFooter({ note }: { note: FNote }) { ) } -function usePersistence(initialConfig: TableConfig | null | undefined, saveConfig: (newConfig: TableConfig) => void) { - const config = useRef(initialConfig); - const spacedUpdate = useSpacedUpdate(() => { - if (config.current) { - saveConfig(config.current); - } - }, 5_000); - const persistenceWriterFunc = useCallback((_id, type: string, data: object) => { - if (!config.current) config.current = {}; - if (!config.current.tableData) config.current.tableData = {}; - (config.current.tableData as Record)[type] = data; - spacedUpdate.scheduleUpdate(); - }, []); - const persistenceReaderFunc = useCallback((_id, type: string) => { - return config.current?.tableData?.[type]; - }, []); - return { persistenceReaderFunc, persistenceWriterFunc }; +function usePersistence(viewConfig: TableConfig | null | undefined, saveConfig: (newConfig: TableConfig) => void) { + const [ persistenceProps, setPersistenceProps ] = useState>(); + + useEffect(() => { + const viewConfigLocal = viewConfig ?? { tableData: {} }; + const spacedUpdate = new SpacedUpdate(() => { + saveConfig(viewConfigLocal); + }, 5_000); + + setPersistenceProps({ + persistenceReaderFunc(_, type) { + return viewConfigLocal.tableData?.[type]; + }, + persistenceWriterFunc(_, type, data) { + (viewConfigLocal.tableData as Record)[type] = data; + spacedUpdate.scheduleUpdate(); + }, + }); + + return () => { + spacedUpdate.updateNowIfNecessary(); + }; + }, [ viewConfig, saveConfig ]) + + return persistenceProps; } function useData(note: FNote, noteIds: string[], viewConfig: TableConfig | undefined, newAttributePosition: RefObject, resetNewAttributePosition: () => void) { @@ -125,6 +134,7 @@ function useData(note: FNote, noteIds: string[], viewConfig: TableConfig | undef function refresh() { const info = getAttributeDefinitionInformation(note); + buildRowDefinitions(note, info, includeArchived, maxDepth).then(({ definitions: rowData, hasSubtree: hasChildren, rowNumber }) => { const columnDefs = buildColumnDefinitions({ info, diff --git a/apps/client/src/widgets/dialogs/add_link.tsx b/apps/client/src/widgets/dialogs/add_link.tsx index 287a19379c..82ac9fced5 100644 --- a/apps/client/src/widgets/dialogs/add_link.tsx +++ b/apps/client/src/widgets/dialogs/add_link.tsx @@ -25,6 +25,7 @@ export default function AddLinkDialog() { const [ linkType, setLinkType ] = useState(); const [ suggestion, setSuggestion ] = useState(null); const [ shown, setShown ] = useState(false); + const hasSubmittedRef = useRef(false); useTriliumEvent("showAddLinkDialog", opts => { setOpts(opts); @@ -85,14 +86,11 @@ export default function AddLinkDialog() { } function onSubmit() { - if (suggestion?.notePath) { - // Handle note link + hasSubmittedRef.current = true; + + if (suggestion) { + // Insertion logic in onHidden because it needs focus. setShown(false); - opts?.addLink(suggestion.notePath, linkType === "reference-link" ? null : linkTitle); - } else if (suggestion?.externalLink) { - // Handle external link - setShown(false); - opts?.addLink(suggestion.externalLink, linkTitle, true); } else { logError("No link to add."); } @@ -111,6 +109,19 @@ export default function AddLinkDialog() { onSubmit={onSubmit} onShown={onShown} onHidden={() => { + // Insert the link. + if (hasSubmittedRef.current && suggestion && opts) { + hasSubmittedRef.current = false; + + if (suggestion.notePath) { + // Handle note link + opts.addLink(suggestion.notePath, linkType === "reference-link" ? null : linkTitle); + } else if (suggestion.externalLink) { + // Handle external link + opts.addLink(suggestion.externalLink, linkTitle, true); + } + } + setSuggestion(null); setShown(false); }} diff --git a/apps/client/src/widgets/react/HelpRemoveButtons.tsx b/apps/client/src/widgets/react/HelpRemoveButtons.tsx index 7eda18b971..79c0a138f7 100644 --- a/apps/client/src/widgets/react/HelpRemoveButtons.tsx +++ b/apps/client/src/widgets/react/HelpRemoveButtons.tsx @@ -14,17 +14,20 @@ export default function HelpRemoveButtons({ help, removeText, onRemove }: HelpRe {help && <> {help} {" "} - } + } { + e.preventDefault(); + onRemove?.(); + }} /> ); -} \ No newline at end of file +} diff --git a/apps/client/src/widgets/react/Modal.tsx b/apps/client/src/widgets/react/Modal.tsx index f13257a5d6..37a0d96c03 100644 --- a/apps/client/src/widgets/react/Modal.tsx +++ b/apps/client/src/widgets/react/Modal.tsx @@ -36,9 +36,9 @@ interface ModalProps { onSubmit?: () => void; /** Called when the modal is shown. */ onShown?: () => void; - /** + /** * Called when the modal is hidden, either via close button, backdrop click or submit. - * + * * Here it's generally a good idea to set `show` to false to reflect the actual state of the modal. */ onHidden: () => void; @@ -71,23 +71,25 @@ export default function Modal({ children, className, size, title, header, footer useEffect(() => { const modalElement = modalRef.current; - if (!modalElement) { - return; - } + if (!modalElement) return; + if (onShown) { modalElement.addEventListener("shown.bs.modal", onShown); } - modalElement.addEventListener("hidden.bs.modal", () => { + + function onModalHidden() { onHidden(); if (elementToFocus.current && "focus" in elementToFocus.current) { (elementToFocus.current as HTMLElement).focus(); } - }); + } + + modalElement.addEventListener("hidden.bs.modal", onModalHidden); return () => { if (onShown) { modalElement.removeEventListener("shown.bs.modal", onShown); } - modalElement.removeEventListener("hidden.bs.modal", onHidden); + modalElement.removeEventListener("hidden.bs.modal", onModalHidden); }; }, [ onShown, onHidden ]); @@ -180,4 +182,4 @@ const ModalInner = memo(({ children, footer, footerAlignment, bodyStyle, footerS )} ); -}); \ No newline at end of file +}); diff --git a/apps/client/tsconfig.app.json b/apps/client/tsconfig.app.json index 16b93e1ced..4abc845e41 100644 --- a/apps/client/tsconfig.app.json +++ b/apps/client/tsconfig.app.json @@ -1,7 +1,7 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { - "lib": [ "ESNext" ], + "lib": [ "ESNext", "DOM.Iterable" ], "outDir": "dist", "types": [ "node", diff --git a/apps/desktop/electron-forge/forge.config.ts b/apps/desktop/electron-forge/forge.config.ts index b433ee4d71..4b5dcde754 100644 --- a/apps/desktop/electron-forge/forge.config.ts +++ b/apps/desktop/electron-forge/forge.config.ts @@ -114,7 +114,7 @@ const config: ForgeConfig = { config: { name: EXECUTABLE_NAME, productName: PRODUCT_NAME, - iconUrl: "https://raw.githubusercontent.com/TriliumNext/Notes/develop/images/app-icons/icon.ico", + iconUrl: "https://raw.githubusercontent.com/TriliumNext/Trilium/refs/heads/main/apps/desktop/electron-forge/app-icon/icon.ico", setupIcon: path.join(ELECTRON_FORGE_DIR, "setup-icon/setup.ico"), loadingGif: path.join(ELECTRON_FORGE_DIR, "setup-icon/setup-banner.gif"), windowsSign: windowsSignConfiguration @@ -130,7 +130,7 @@ const config: ForgeConfig = { name: "@electron-forge/maker-zip", config: { options: { - iconUrl: "https://raw.githubusercontent.com/TriliumNext/Notes/develop/images/app-icons/icon.ico", + iconUrl: "https://raw.githubusercontent.com/TriliumNext/Trilium/refs/heads/main/apps/desktop/electron-forge/app-icon/icon.ico", icon: path.join(APP_ICON_PATH, "icon.ico") } } diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 613b92bfb2..63ad808e25 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -8,7 +8,7 @@ "author": { "name": "Trilium Notes Team", "email": "contact@eliandoran.me", - "url": "https://github.com/TriliumNext/Notes" + "url": "https://triliumnotes.org" }, "scripts": { "dev": "cross-env TRILIUM_PORT=37742 TRILIUM_DATA_DIR=data tsx ../../scripts/electron-start.mts src/main.ts", @@ -34,7 +34,7 @@ "@triliumnext/commons": "workspace:*", "@triliumnext/server": "workspace:*", "copy-webpack-plugin": "13.0.1", - "electron": "38.1.2", + "electron": "38.2.0", "@electron-forge/cli": "7.9.0", "@electron-forge/maker-deb": "7.9.0", "@electron-forge/maker-dmg": "7.9.0", diff --git a/apps/desktop/scripts/build.ts b/apps/desktop/scripts/build.ts index 679dc71f03..945a4cfebf 100644 --- a/apps/desktop/scripts/build.ts +++ b/apps/desktop/scripts/build.ts @@ -15,7 +15,6 @@ async function main() { // Copy node modules dependencies build.copyNodeModules([ "better-sqlite3", "bindings", "file-uri-to-path", "@electron/remote" ]); - build.copy("/node_modules/jsdom/lib/jsdom/living/xhr/xhr-sync-worker.js", "xhr-sync-worker.js"); build.copy("/node_modules/ckeditor5/dist/ckeditor5-content.css", "ckeditor5-content.css"); // Integrate the client. diff --git a/apps/desktop/tsconfig.json b/apps/desktop/tsconfig.json index 5f1b2ca988..95e7236ba4 100644 --- a/apps/desktop/tsconfig.json +++ b/apps/desktop/tsconfig.json @@ -1,7 +1,7 @@ { "extends": "../../tsconfig.base.json", "files": [], - "include": [], + "include": [], "references": [ { "path": "../server" diff --git a/apps/edit-docs/package.json b/apps/edit-docs/package.json index 309851713f..bb664f634b 100644 --- a/apps/edit-docs/package.json +++ b/apps/edit-docs/package.json @@ -12,7 +12,7 @@ "@triliumnext/desktop": "workspace:*", "@types/fs-extra": "11.0.4", "copy-webpack-plugin": "13.0.1", - "electron": "38.1.2", + "electron": "38.2.0", "fs-extra": "11.3.2" }, "scripts": { diff --git a/apps/server/package.json b/apps/server/package.json index 84699fb27c..4b58cf52cc 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -25,10 +25,11 @@ "docker-start-rootless-alpine": "pnpm docker-build-rootless-alpine && docker run -p 8081:8080 triliumnext-rootless-alpine" }, "dependencies": { - "better-sqlite3": "12.4.1" + "better-sqlite3": "12.4.1", + "node-html-parser": "7.0.1" }, "devDependencies": { - "@anthropic-ai/sdk": "0.63.1", + "@anthropic-ai/sdk": "0.64.0", "@braintree/sanitize-url": "7.1.1", "@electron/remote": "2.1.3", "@preact/preset-vite": "2.10.2", @@ -49,7 +50,6 @@ "@types/html": "1.0.4", "@types/ini": "4.1.1", "@types/js-yaml": "4.0.9", - "@types/jsdom": "21.1.7", "@types/mime-types": "3.0.1", "@types/multer": "2.0.0", "@types/safe-compare": "1.1.2", @@ -81,7 +81,7 @@ "debounce": "2.2.0", "debug": "4.4.3", "ejs": "3.1.10", - "electron": "38.1.2", + "electron": "38.2.0", "electron-debug": "4.1.0", "electron-window-state": "5.0.3", "escape-html": "1.0.3", @@ -105,7 +105,6 @@ "is-svg": "6.1.0", "jimp": "1.6.0", "js-yaml": "4.1.0", - "jsdom": "26.1.0", "marked": "16.3.0", "mime-types": "3.0.1", "multer": "2.0.2", diff --git a/apps/server/scripts/build.ts b/apps/server/scripts/build.ts index 84862d060d..d2ed99ee2a 100644 --- a/apps/server/scripts/build.ts +++ b/apps/server/scripts/build.ts @@ -11,7 +11,6 @@ async function main() { // Copy node modules dependencies build.copyNodeModules([ "better-sqlite3", "bindings", "file-uri-to-path" ]); - build.copy("/node_modules/jsdom/lib/jsdom/living/xhr/xhr-sync-worker.js", "xhr-sync-worker.js"); build.copy("/node_modules/ckeditor5/dist/ckeditor5-content.css", "ckeditor5-content.css"); // Integrate the client. diff --git a/apps/server/src/assets/translations/cs/server.json b/apps/server/src/assets/translations/cs/server.json index bb74146c55..72710a16ed 100644 --- a/apps/server/src/assets/translations/cs/server.json +++ b/apps/server/src/assets/translations/cs/server.json @@ -10,6 +10,15 @@ "expand-subtree": "Rozbalit podstrom aktivní poznámky", "collapse-tree": "Sbalit celý strom poznámek", "collapse-subtree": "Sbalí podstrom aktivní poznámky", - "sort-child-notes": "Seřadit podřízené poznámky" + "sort-child-notes": "Seřadit podřízené poznámky", + "creating-and-moving-notes": "Vytváření a přesouvání poznámek", + "create-note-after": "Vytvořit poznámku za aktivní poznámkou", + "create-note-into": "Vytvořit poznámku jako potomka aktivní poznámky", + "create-note-into-inbox": "Vytvořit poznámku v inboxu (pokud je definován) nebo denní poznámku", + "delete-note": "Smazat poznámku", + "move-note-up": "Posunout poznámku nahoru", + "move-note-down": "Posunout poznámku dolů", + "move-note-up-in-hierarchy": "Přesunout poznámku o úroveň výše", + "move-note-down-in-hierarchy": "Přesunout poznámku ve struktuře níže" } } diff --git a/apps/server/src/assets/translations/hr/server.json b/apps/server/src/assets/translations/hr/server.json new file mode 100644 index 0000000000..425f08c5f3 --- /dev/null +++ b/apps/server/src/assets/translations/hr/server.json @@ -0,0 +1,102 @@ +{ + "keyboard_actions": { + "back-in-note-history": "Idi na prethodnu povijesnu bilješku", + "forward-in-note-history": "Idi na sljedeću povijesnu bilješku", + "open-jump-to-note-dialog": "Otvori prozor \"Skokni na bilješku\"", + "open-command-palette": "Otvori naredbenu ploču", + "scroll-to-active-note": "Pomakni stablo bilješke na aktivnu bilješku", + "quick-search": "Uključi traku brzog pretraživanja", + "search-in-subtree": "Traži bilješke u podstablu aktivne bilješke", + "expand-subtree": "Proširi podstablo trenutne bilješke", + "collapse-tree": "Zatvara cijelo stablo bilješke", + "collapse-subtree": "Zatvara podstablo trenutne bilješke", + "sort-child-notes": "Sortiraj podbilješke", + "creating-and-moving-notes": "Stvaranje i premještanje bilješki", + "create-note-after": "Stvori bilješku nakon aktivne bilješke", + "create-note-into": "Stvori bilješku kao podbilješku aktivne bilješke", + "delete-note": "Obriši bilješku", + "move-note-up": "Premjesti bilješku gore", + "move-note-down": "Premjesti bilješku dolje", + "move-note-up-in-hierarchy": "Premjesti bilješku više u hijerarhiju", + "move-note-down-in-hierarchy": "Premjesti bilješku niže u hijerarhiju", + "edit-branch-prefix": "Prikaži prozor \"Uredi prefiks grane\"", + "clone-notes-to": "Kloniraj označene bilješke", + "move-notes-to": "Premjesti označene bilješke", + "note-clipboard": "Međuspremnik bilješki", + "copy-notes-to-clipboard": "Kopiraj označene bilješke u međuspremnik", + "paste-notes-from-clipboard": "Zalijepi bilješke iz međuspremnika u aktivnu bilješku", + "cut-notes-to-clipboard": "Izreži označene bilješke u međuspremnik", + "select-all-notes-in-parent": "Označi sve bilješke u trenutnoj razini bilješke", + "add-note-above-to-the-selection": "Dodaj bilješku iznad označenog", + "add-note-below-to-selection": "Dodaj bilješku ispod označenog", + "duplicate-subtree": "Udvostruči podstablo", + "tabs-and-windows": "Kartice i Prozori", + "open-new-tab": "Otvori novu karticu", + "close-active-tab": "Zatvori aktivnu karticu", + "reopen-last-tab": "Ponovno otvori zadnju zatvorenu karticu", + "activate-next-tab": "Aktiviraj karticu nadesno", + "activate-previous-tab": "Aktiviraj karticu nalijevo", + "open-new-window": "Otvori novi prazni prozor", + "toggle-tray": "Prikaži/sakrij aplikaciju unutar trake sustava", + "first-tab": "Aktiviraj prvu karticu na popisu", + "second-tab": "Aktiviraj drugu karticu na popisu", + "third-tab": "Aktiviraj treću karticu na popisu", + "fourth-tab": "Aktiviraj četvrtu karticu na popisu", + "fifth-tab": "Aktiviraj petu karticu na popisu", + "sixth-tab": "Aktiviraj šestu karticu na popisu", + "seventh-tab": "Aktiviraj sedmu karticu na popisu", + "eight-tab": "Aktiviraj osmu karticu na popisu", + "ninth-tab": "Aktiviraj devetu karticu na popisu", + "last-tab": "Aktiviraj posljednju karticu na popisu", + "dialogs": "Prozori", + "show-note-source": "Prikaži prozor \"Izvor Bilješke\"", + "show-options": "Otvori stranicu \"Postavke\"", + "show-revisions": "Prikaži prozor \"Ispravci Bilješki\"", + "show-recent-changes": "Prikaži prozor \"Nedavne Promjene\"", + "show-sql-console": "Otvori stranicu \"SQL konzola\"", + "show-backend-log": "Otvori stranicu \"Dnevnik Pozadine\"", + "show-help": "Otvori ugrađeni Vodič za Korisnike", + "show-cheatsheet": "Prikaži modalni prozor s uobičajenim radnjama na tipkovnici", + "text-note-operations": "Radnje tekstualnih bilješki", + "add-link-to-text": "Otvori prozor za dodavanje poveznice u tekst", + "follow-link-under-cursor": "Slijedi poveznice unutar kojih je stavljen znak umetanja", + "insert-date-and-time-to-text": "Umetni trenutni datum i vrijeme u tekst", + "paste-markdown-into-text": "Lijepi Markdown iz međuspremnika u tekstualnu bilješku", + "cut-into-note": "Reže označeno u trenutnoj bilježnici i stvara podbilješku s označenim tekstom", + "add-include-note-to-text": "Otvara prozor za uključivanje bilješke", + "edit-readonly-note": "Uredi bilješku samo za čitanje", + "attributes-labels-and-relations": "Atributi (oznake i relacije)", + "add-new-label": "Stvori novu oznaku", + "create-new-relation": "Stvori novu relaciju", + "ribbon-tabs": "Vrpčane kartice", + "toggle-basic-properties": "Uključi/Isključi Osnova Svojstva", + "toggle-file-properties": "Uključi/Isključi Svojstva Datoteke", + "toggle-image-properties": "Uključi/Isključi Svojstva Slike", + "toggle-owned-attributes": "Uključi/Isključi Atribute u Vlasništvu", + "toggle-inherited-attributes": "Uključi/Isključi Naslijeđene Atribute", + "toggle-promoted-attributes": "Uključi/Isključi Promovirane Atribute", + "toggle-link-map": "Uključi/Isključi Kartu Poveznica", + "toggle-note-info": "Uključi/Isključi Informacije Bilješke", + "toggle-note-paths": "Uključi/Isključi Puteve Bilješke", + "toggle-similar-notes": "Uključi/Isključi Slične Bilješke", + "other": "Ostalo", + "toggle-right-pane": "Uključi/isključi prikaz desnog okna, koje uključuje Sadržaj i Istaknuto", + "print-active-note": "Ispiši aktivnu bilješku", + "open-note-externally": "Otvori bilješku kao datoteku u zadanoj aplikaciji", + "render-active-note": "Iscrtaj (ponovno iscrtaj) aktivnu bilješku", + "run-active-note": "Pokreni bilješku aktivnog JavaScript (frontend/backend) koda", + "toggle-note-hoisting": "Uključi/isključi podizanje aktivne bilješke", + "unhoist": "Poništi podizanje od bilokud", + "reload-frontend-app": "Ponovno učitaj frontend", + "open-dev-tools": "Otvori alate za razvojne programere", + "find-in-text": "Uključi/Isključi traku za pretraživanje", + "toggle-left-note-tree-panel": "Uključi/isključi lijevu (stablo bilješki) ploču", + "toggle-full-screen": "Uključi/isključi prikaz na cijelom zaslonu", + "zoom-out": "Odzumiraj", + "zoom-in": "Zumiraj", + "note-navigation": "Navigacija bilješki", + "reset-zoom-level": "Resetiraj razinu zumiranja", + "copy-without-formatting": "Kopiraj označeni tekst bez oblikovanja", + "force-save-revision": "Prisilno stvori/pohrani novi ispravak bilješke aktivne bilješke" + } +} diff --git a/apps/server/src/assets/translations/ja/server.json b/apps/server/src/assets/translations/ja/server.json index 511e836cf5..1c19777aaf 100644 --- a/apps/server/src/assets/translations/ja/server.json +++ b/apps/server/src/assets/translations/ja/server.json @@ -46,7 +46,7 @@ "last-tab": "最後のタブをアクティブにする", "dialogs": "ダイアログ", "show-note-source": "「ノートのソース」ダイアログを表示", - "show-options": "「オプション」ページを開く", + "show-options": "「設定」ページを開く", "show-recent-changes": "「最近の変更」ダイアログを表示", "show-sql-console": "「SQLコンソール」ページを開く", "show-backend-log": "「バックエンドログ」ページを開く", @@ -88,9 +88,9 @@ "duplicate-subtree": "サブツリーの複製", "edit-branch-prefix": "「ブランチ接頭辞の編集」ダイアログを表示", "show-revisions": "「ノートの変更履歴」ダイアログを表示", - "attributes-labels-and-relations": "属性(ラベルと関係)", + "attributes-labels-and-relations": "属性(ラベルとリレーション)", "add-new-label": "新しいラベルを作成する", - "create-new-relation": "新しい関係を作成する", + "create-new-relation": "新しいリレーションを作成する", "toggle-basic-properties": "基本属性切り替え", "toggle-file-properties": "ファイル属性切り替え", "toggle-image-properties": "画像属性切り替え", @@ -184,7 +184,7 @@ "edit-branch-prefix": "ブランチ接頭辞の編集", "show-revisions": "変更履歴を表示", "add-new-label": "ラベルを追加", - "add-new-relation": "関係を追加", + "add-new-relation": "リレーションを追加", "toggle-ribbon-tab-basic-properties": "リボンタブ切り替え:基本属性", "toggle-ribbon-tab-book-properties": "リボンタブ切り替え:書籍属性", "toggle-ribbon-tab-file-properties": "リボンタブ切り替え:ファイル属性", @@ -253,7 +253,8 @@ "password": "パスワード", "password-placeholder": "パスワード", "finish-setup": "セットアップ完了", - "back": "戻る" + "back": "戻る", + "note": "ノート:" }, "setup_sync-in-progress": { "heading": "同期中", @@ -341,7 +342,8 @@ "multi-factor-authentication-title": "多要素認証", "etapi-title": "ETAPI", "visible-launchers-title": "可視化されたランチャー", - "inbox-title": "Inbox" + "inbox-title": "Inbox", + "base-abstract-launcher-title": "ベース アブストラクトランチャー" }, "notes": { "new-note": "新しいノート", @@ -417,8 +419,17 @@ }, "share_page": { "clipped-from": "このノートは元々{{- url}}から切り取られたものです", - "no-content": "このノートには内容がありません。" + "no-content": "このノートには内容がありません。", + "parent": "親:", + "child-notes": "子ノート:" }, "weekdayNumber": "第{weekNumber}週", - "quarterNumber": "四半期 {quarterNumber}" + "quarterNumber": "四半期 {quarterNumber}", + "sql_init": { + "db_not_initialized_desktop": "DB が初期化されていません。画面の指示に従ってください。", + "db_not_initialized_server": "DB が初期化されていません。セットアップ ページ 「http://[your-server-host]:{{port}}」 にアクセスして、Trilium を初期化する方法の説明を確認してください。" + }, + "desktop": { + "instance_already_running": "すでにインスタンスが実行されているので、代わりにそのインスタンスにフォーカスします。" + } } diff --git a/apps/server/src/becca/similarity.spec.ts b/apps/server/src/becca/similarity.spec.ts new file mode 100644 index 0000000000..4809e1f130 --- /dev/null +++ b/apps/server/src/becca/similarity.spec.ts @@ -0,0 +1,20 @@ +import { trimIndentation } from "@triliumnext/commons"; +import { buildNote } from "../test/becca_easy_mocking"; +import { buildRewardMap } from "./similarity"; + +describe("buildRewardMap", () => { + it("calculates heading rewards", () => { + const note = buildNote({ + content: trimIndentation`\ +

Heading 1

+

Heading 2

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer eget purus et eros faucibus dignissim. Vestibulum lacinia urna quis eleifend consectetur. Aenean elementum pellentesque ultrices. Donec tincidunt, felis vel pretium suscipit, nibh lorem gravida est, quis tincidunt metus nibh a tortor. Aenean erat libero, faucibus ac mattis non, imperdiet eget nunc. Pellentesque aliquam molestie nibh eu interdum. Sed augue velit, varius id lacinia ut, dictum in dolor. Praesent posuere quam vel porta eleifend. Nullam porta tempus convallis. Aliquam auctor dui nec consectetur suscipit. Mauris laoreet commodo dapibus. Donec sodales justo velit, at placerat nulla cursus sit amet. Aliquam erat volutpat. Donec nec mauris iaculis, ullamcorper lectus et, feugiat arcu. Nunc vel ligula quis lectus efficitur porta non at nulla.

+

Heading 3

+ ` + }); + const map = buildRewardMap(note); + for (const key of [ "new", "note", "heading", "1", "2", "3" ]) { + expect(typeof map.get(key)).toStrictEqual("number"); + } + }); +}); diff --git a/apps/server/src/becca/similarity.ts b/apps/server/src/becca/similarity.ts index dc0a4c3f8c..10a0e706dc 100644 --- a/apps/server/src/becca/similarity.ts +++ b/apps/server/src/becca/similarity.ts @@ -2,7 +2,7 @@ import becca from "./becca.js"; import log from "../services/log.js"; import beccaService from "./becca_service.js"; import dateUtils from "../services/date_utils.js"; -import { JSDOM } from "jsdom"; +import { parse } from "node-html-parser"; import type BNote from "./entities/bnote.js"; import { SimilarNote } from "@triliumnext/commons"; @@ -44,7 +44,7 @@ function filterUrlValue(value: string) { .replace(/(\.net|\.com|\.org|\.info|\.edu)/gi, ""); } -function buildRewardMap(note: BNote) { +export function buildRewardMap(note: BNote) { // Need to use Map instead of object: https://github.com/zadam/trilium/issues/1895 const map = new Map(); @@ -123,10 +123,12 @@ function buildRewardMap(note: BNote) { if (note.type === "text" && note.isDecrypted) { const content = note.getContent(); - const dom = new JSDOM(content); + if (typeof content !== "string") return map; + + const dom = parse(content); const addHeadingsToRewardMap = (elName: string, rewardFactor: number) => { - for (const el of dom.window.document.querySelectorAll(elName)) { + for (const el of dom.querySelectorAll(elName)) { addToRewardMap(el.textContent, rewardFactor); } }; diff --git a/apps/server/src/routes/api/clipper.spec.ts b/apps/server/src/routes/api/clipper.spec.ts new file mode 100644 index 0000000000..1efa6915e5 --- /dev/null +++ b/apps/server/src/routes/api/clipper.spec.ts @@ -0,0 +1,50 @@ +import { BNote } from "../../services/backend_script_entrypoint"; +import { buildNote } from "../../test/becca_easy_mocking"; +import { processContent } from "./clipper"; + +let note!: BNote; + +describe("processContent", () => { + beforeAll(() => { + note = buildNote({}); + note.saveAttachment = () => {}; + vi.mock("../../services/image.js", () => ({ + default: { + saveImageToAttachment() { + return { + attachmentId: "foo", + title: "encodedTitle", + } + } + } + })); + }); + + it("processes basic note", () => { + const processed = processContent([], note, "

Hello world.

"); + expect(processed).toStrictEqual("

Hello world.

") + }); + + it("processes plain text", () => { + const processed = processContent([], note, "Hello world."); + expect(processed).toStrictEqual("

Hello world.

") + }); + + it("replaces images", () => { + const processed = processContent( + [{"imageId":"OKZxZA3MonZJkwFcEhId","src":"inline.png","dataUrl":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAQCAYAAADESFVDAAAAF0lEQVQoU2P8DwQMBADjqKLRIGAgKggAzHs/0SoYCGwAAAAASUVORK5CYII="}], + note, `` + ); + expect(processed).toStrictEqual(``); + }); + + it("skips over non-data images", () => { + for (const url of [ "foo", "" ]) { + const processed = processContent( + [{"imageId":"OKZxZA3MonZJkwFcEhId","src":"inline.png","dataUrl": url}], + note, `` + ); + expect(processed).toStrictEqual(``); + } + }); +}); diff --git a/apps/server/src/routes/api/clipper.ts b/apps/server/src/routes/api/clipper.ts index 2535a26e21..133c35a88e 100644 --- a/apps/server/src/routes/api/clipper.ts +++ b/apps/server/src/routes/api/clipper.ts @@ -1,5 +1,5 @@ import type { Request } from "express"; -import jsdom from "jsdom"; +import { parse } from "node-html-parser"; import path from "path"; import type BNote from "../../becca/entities/bnote.js"; @@ -16,7 +16,6 @@ import log from "../../services/log.js"; import noteService from "../../services/notes.js"; import utils from "../../services/utils.js"; import ws from "../../services/ws.js"; -const { JSDOM } = jsdom; interface Image { src: string; @@ -147,7 +146,7 @@ async function createNote(req: Request) { }; } -function processContent(images: Image[], note: BNote, content: string) { +export function processContent(images: Image[], note: BNote, content: string) { let rewrittenContent = htmlSanitizer.sanitize(content); if (images) { @@ -181,10 +180,10 @@ function processContent(images: Image[], note: BNote, content: string) { rewrittenContent = `

${rewrittenContent}

`; } // Create a JSDOM object from the existing HTML content - const dom = new JSDOM(rewrittenContent); + const dom = parse(rewrittenContent); // Get the content inside the body tag and serialize it - rewrittenContent = dom.window.document.body.innerHTML; + rewrittenContent = dom.innerHTML ?? ""; return rewrittenContent; } diff --git a/apps/server/src/routes/api/note_map.spec.ts b/apps/server/src/routes/api/note_map.spec.ts new file mode 100644 index 0000000000..0ab5d1d2d7 --- /dev/null +++ b/apps/server/src/routes/api/note_map.spec.ts @@ -0,0 +1,99 @@ +import { trimIndentation } from "@triliumnext/commons"; +import { buildNote, buildNotes } from "../../test/becca_easy_mocking"; +import note_map from "./note_map"; + +describe("Note map service", () => { + it("correctly identifies backlinks", () => { + const note = buildNote({ id: "dUtgloZIckax", title: "Backlink text" }); + buildNotes([ + { + title: "First", + id: "first", + "~internalLink": "dUtgloZIckax", + content: trimIndentation`\ +

+ The quick brownie +

+

+ + Backlink text + +

+
+ +
+ ` + }, + { + title: "Second", + id: "second", + "~internalLink": "dUtgloZIckax", + content: trimIndentation`\ +

+ + Backlink text + +

+

+ + First + +

+

+ + Second + +

+ ` + } + ]); + + const backlinksResponse = note_map.getBacklinks({ + params: { + noteId: note.noteId + } + } as any); + expect(backlinksResponse).toMatchObject([ + { + excerpts: [ + trimIndentation`\ + ` + ], + noteId: "first", + }, + { + excerpts: [ + trimIndentation`\ + ` + ], + noteId: "second" + } + ]); + }); +}); diff --git a/apps/server/src/routes/api/note_map.ts b/apps/server/src/routes/api/note_map.ts index 3a2bed5b25..473388af09 100644 --- a/apps/server/src/routes/api/note_map.ts +++ b/apps/server/src/routes/api/note_map.ts @@ -1,10 +1,10 @@ "use strict"; import becca from "../../becca/becca.js"; -import { JSDOM } from "jsdom"; import type BNote from "../../becca/entities/bnote.js"; import type BAttribute from "../../becca/entities/battribute.js"; import type { Request } from "express"; +import { HTMLElement, parse, TextNode } from "node-html-parser"; import { BacklinkCountResponse, BacklinksResponse } from "@triliumnext/commons"; interface TreeLink { @@ -241,25 +241,26 @@ function updateDescendantCountMapForSearch(noteIdToDescendantCountMap: Record 0) { - images[0]?.parentNode?.removeChild(images[0]); + for (const image of images) { + image.remove(); } } const EXCERPT_CHAR_LIMIT = 200; -type ElementOrText = Element | Text; +type ElementOrText = HTMLElement | TextNode; -function findExcerpts(sourceNote: BNote, referencedNoteId: string) { +export function findExcerpts(sourceNote: BNote, referencedNoteId: string) { const html = sourceNote.getContent(); - const document = new JSDOM(html).window.document; + const document = parse(html.toString()); const excerpts: string[] = []; removeImages(document); for (const linkEl of document.querySelectorAll("a")) { + console.log("Got ", linkEl.innerHTML); const href = linkEl.getAttribute("href"); if (!href || !href.endsWith(referencedNoteId)) { @@ -270,8 +271,8 @@ function findExcerpts(sourceNote: BNote, referencedNoteId: string) { let centerEl: HTMLElement = linkEl; - while (centerEl.tagName !== "BODY" && centerEl.parentElement && (centerEl.parentElement?.textContent?.length || 0) <= EXCERPT_CHAR_LIMIT) { - centerEl = centerEl.parentElement; + while (centerEl.tagName !== "BODY" && centerEl.parentNode && (centerEl.parentNode?.textContent?.length || 0) <= EXCERPT_CHAR_LIMIT) { + centerEl = centerEl.parentNode; } const excerptEls: ElementOrText[] = [centerEl]; @@ -282,7 +283,7 @@ function findExcerpts(sourceNote: BNote, referencedNoteId: string) { while (excerptLength < EXCERPT_CHAR_LIMIT) { let added = false; - const prev: Element | null = left.previousElementSibling; + const prev: HTMLElement | null = left.previousElementSibling; if (prev) { const prevText = prev.textContent || ""; @@ -290,7 +291,7 @@ function findExcerpts(sourceNote: BNote, referencedNoteId: string) { if (prevText.length + excerptLength > EXCERPT_CHAR_LIMIT) { const prefix = prevText.substr(prevText.length - (EXCERPT_CHAR_LIMIT - excerptLength)); - const textNode = document.createTextNode(`…${prefix}`); + const textNode = new TextNode(`…${prefix}`); excerptEls.unshift(textNode); break; @@ -302,7 +303,7 @@ function findExcerpts(sourceNote: BNote, referencedNoteId: string) { added = true; } - const next: Element | null = right.nextElementSibling; + const next: HTMLElement | null = right.nextElementSibling; if (next) { const nextText = next.textContent; @@ -310,7 +311,7 @@ function findExcerpts(sourceNote: BNote, referencedNoteId: string) { if (nextText && nextText.length + excerptLength > EXCERPT_CHAR_LIMIT) { const suffix = nextText.substr(nextText.length - (EXCERPT_CHAR_LIMIT - excerptLength)); - const textNode = document.createTextNode(`${suffix}…`); + const textNode = new TextNode(`${suffix}…`); excerptEls.push(textNode); break; @@ -327,7 +328,7 @@ function findExcerpts(sourceNote: BNote, referencedNoteId: string) { } } - const excerptWrapper = document.createElement("div"); + const excerptWrapper = new HTMLElement("div", {}); excerptWrapper.classList.add("ck-content"); excerptWrapper.classList.add("backlink-excerpt"); diff --git a/apps/server/src/share/content_renderer.spec.ts b/apps/server/src/share/content_renderer.spec.ts index 85d1c9ddee..8f3f70622d 100644 --- a/apps/server/src/share/content_renderer.spec.ts +++ b/apps/server/src/share/content_renderer.spec.ts @@ -1,7 +1,88 @@ import { describe, it, expect } from "vitest"; -import { renderCode, type Result } from "./content_renderer.js"; +import { getContent, renderCode, type Result } from "./content_renderer.js"; +import { trimIndentation } from "@triliumnext/commons"; +import { buildShareNote, buildShareNotes } from "../test/shaca_mocking.js"; describe("content_renderer", () => { + beforeAll(() => { + vi.mock("../becca/becca_loader.js", () => ({ + default: { + load: vi.fn(), + loaded: Promise.resolve() + } + })); + }); + + it("Reports protected notes not being renderable", () => { + const note = buildShareNote({ isProtected: true }); + const result = getContent(note); + expect(result.content).toStrictEqual("

Protected note cannot be displayed

"); + }); + + describe("Text note", () => { + it("parses simple note", () => { + const content = trimIndentation`\ +
+ +
+

+ + Welcome to Trilium Notes! + +

`; + const note = buildShareNote({ content }); + const result = getContent(note); + expect(result.content).toStrictEqual(content); + }); + + it("handles attachment link", () => { + const content = trimIndentation`\ +

Test

+

+ + 5863845791835102555.mp4 + +   +

+ `; + const note = buildShareNote({ + content, + attachments: [ { id: "q14s2Id7V6pp", title: "5863845791835102555.mp4" } ] + }); + const result = getContent(note); + expect(result.content).toStrictEqual(trimIndentation`\ +

Test

+

+ 5863845791835102555.mp4 +   +

+ `); + }); + + it("renders included notes", () => { + buildShareNotes([ + { id: "subnote1", content: `

Foo

Bar
` }, + { id: "subnote2", content: `Baz` } + ]); + const note = buildShareNote({ + id: "note1", + content: trimIndentation`\ +

Before

+
 
+
 
+

After

+ ` + }); + const result = getContent(note); + expect(result.content).toStrictEqual(trimIndentation`\ +

Before

+

Foo

Bar
+ Baz +

After

+ `); + }); + }); + describe("renderCode", () => { it("identifies empty content", () => { const emptyResult: Result = { diff --git a/apps/server/src/share/content_renderer.ts b/apps/server/src/share/content_renderer.ts index c1c16e48d0..83ddfde2e5 100644 --- a/apps/server/src/share/content_renderer.ts +++ b/apps/server/src/share/content_renderer.ts @@ -1,4 +1,4 @@ -import { JSDOM } from "jsdom"; +import { parse, HTMLElement, TextNode } from "node-html-parser"; import shaca from "./shaca/shaca.js"; import assetPath from "../services/asset_path.js"; import shareRoot from "./share_root.js"; @@ -16,7 +16,7 @@ export interface Result { isEmpty?: boolean; } -function getContent(note: SNote) { +export function getContent(note: SNote) { if (note.isProtected) { return { header: "", @@ -66,9 +66,27 @@ function renderIndex(result: Result) { } function renderText(result: Result, note: SNote) { - const document = new JSDOM(result.content || "").window.document; + if (typeof result.content !== "string") return; + const document = parse(result.content || ""); - result.isEmpty = document.body.textContent?.trim().length === 0 && document.querySelectorAll("img").length === 0; + // Process include notes. + for (const includeNoteEl of document.querySelectorAll("section.include-note")) { + const noteId = includeNoteEl.getAttribute("data-note-id"); + if (!noteId) continue; + + const note = shaca.getNote(noteId); + if (!note) continue; + + const includedResult = getContent(note); + if (typeof includedResult.content !== "string") continue; + + const includedDocument = parse(includedResult.content).childNodes; + if (includedDocument) { + includeNoteEl.replaceWith(...includedDocument); + } + } + + result.isEmpty = document.textContent?.trim().length === 0 && document.querySelectorAll("img").length === 0; if (!result.isEmpty) { for (const linkEl of document.querySelectorAll("a")) { @@ -84,7 +102,7 @@ function renderText(result: Result, note: SNote) { } } - result.content = document.body.innerHTML; + result.content = document.innerHTML ?? ""; if (result.content.includes(``)) { result.header += ` @@ -105,7 +123,7 @@ document.addEventListener("DOMContentLoaded", function() { } } -function handleAttachmentLink(linkEl: HTMLAnchorElement, href: string) { +function handleAttachmentLink(linkEl: HTMLElement, href: string) { const linkRegExp = /attachmentId=([a-zA-Z0-9_]+)/g; let attachmentMatch; if ((attachmentMatch = linkRegExp.exec(href))) { @@ -116,7 +134,8 @@ function handleAttachmentLink(linkEl: HTMLAnchorElement, href: string) { linkEl.setAttribute("href", `api/attachments/${attachmentId}/download`); linkEl.classList.add(`attachment-link`); linkEl.classList.add(`role-${attachment.role}`); - linkEl.innerText = attachment.title; + linkEl.childNodes.length = 0; + linkEl.appendChild(new TextNode(attachment.title)); } else { linkEl.removeAttribute("href"); } @@ -149,11 +168,8 @@ export function renderCode(result: Result) { if (typeof result.content !== "string" || !result.content?.trim()) { result.isEmpty = true; } else { - const document = new JSDOM().window.document; - - const preEl = document.createElement("pre"); - preEl.appendChild(document.createTextNode(result.content)); - + const preEl = new HTMLElement("pre", {}); + preEl.appendChild(new TextNode(result.content)); result.content = preEl.outerHTML; } } diff --git a/apps/server/src/test/becca_easy_mocking.ts b/apps/server/src/test/becca_easy_mocking.ts new file mode 100644 index 0000000000..6df198a5a4 --- /dev/null +++ b/apps/server/src/test/becca_easy_mocking.ts @@ -0,0 +1,92 @@ +import utils from "../services/utils.js"; +import BNote from "../becca/entities/bnote.js"; +import BAttribute from "../becca/entities/battribute.js"; + +type AttributeDefinitions = { [key in `#${string}`]: string; }; +type RelationDefinitions = { [key in `~${string}`]: string; }; + +interface NoteDefinition extends AttributeDefinitions, RelationDefinitions { + id?: string | undefined; + title?: string; + content?: string; +} + +/** + * Creates the given notes with the given title and optionally one or more attributes. + * + * For a label to be created, simply pass on a key prefixed with `#` and any desired value. + * + * The notes and attributes will be injected in the froca. + * + * @param notes + * @returns an array containing the IDs of the created notes. + * @example + * buildNotes([ + * { title: "A", "#startDate": "2025-05-05" }, + * { title: "B", "#startDate": "2025-05-07" } + * ]); + */ +export function buildNotes(notes: NoteDefinition[]) { + const ids: string[] = []; + + for (const noteDef of notes) { + ids.push(buildNote(noteDef).noteId); + } + + return ids; +} + +export function buildNote(noteDef: NoteDefinition) { + const note = new BNote({ + noteId: noteDef.id ?? utils.randomString(12), + title: noteDef.title ?? "New note", + type: "text", + mime: "text/html", + isProtected: false, + blobId: "" + }); + + // Handle content. + if (noteDef.content) { + note.getContent = () => noteDef.content!; + } + + // Handle labels and relations. + let position = 0; + for (const [ key, value ] of Object.entries(noteDef)) { + const attributeId = utils.randomString(12); + const name = key.substring(1); + + let attribute: BAttribute | null = null; + if (key.startsWith("#")) { + attribute = new BAttribute({ + noteId: note.noteId, + attributeId, + type: "label", + name, + value, + position, + isInheritable: false + }); + } + + if (key.startsWith("~")) { + attribute = new BAttribute({ + noteId: note.noteId, + attributeId, + type: "relation", + name, + value, + position, + isInheritable: false + }); + } + + if (!attribute) { + continue; + } + + position++; + } + return note; +} diff --git a/apps/server/src/test/shaca_mocking.ts b/apps/server/src/test/shaca_mocking.ts new file mode 100644 index 0000000000..8b2068a0ec --- /dev/null +++ b/apps/server/src/test/shaca_mocking.ts @@ -0,0 +1,135 @@ +import utils from "../services/utils.js"; +import SAttachment from "../share/shaca/entities/sattachment.js"; +import SAttribute from "../share/shaca/entities/sattribute.js"; +import SNote from "../share/shaca/entities/snote.js"; +import shaca from "../share/shaca/shaca.js"; + +type AttributeDefinitions = { [key in `#${string}`]: string; }; +type RelationDefinitions = { [key in `~${string}`]: string; }; + +interface AttachementDefinition { + id?: string; + role?: string; + mime?: string; + title?: string; +} + +interface NoteDefinition extends AttributeDefinitions, RelationDefinitions { + id?: string | undefined; + title?: string; + content?: string | Buffer; + children?: NoteDefinition[]; + attachments?: AttachementDefinition[]; + isProtected?: boolean; +} + +/** + * Creates the given notes with the given title and optionally one or more attributes. + * + * For a label to be created, simply pass on a key prefixed with `#` and any desired value. + * + * The notes and attributes will be injected in the froca. + * + * @param notes + * @returns an array containing the IDs of the created notes. + * @example + * buildShareNotes([ + * { title: "A", "#startDate": "2025-05-05" }, + * { title: "B", "#startDate": "2025-05-07" } + * ]); + */ +export function buildShareNotes(notes: NoteDefinition[]) { + const ids: string[] = []; + + for (const noteDef of notes) { + ids.push(buildShareNote(noteDef).noteId); + } + + return ids; +} + +export function buildShareNote(noteDef: NoteDefinition) { + const blobId = "foo"; + const note = new SNote([ + noteDef.id ?? utils.randomString(12), + noteDef.title ?? "New note", + "text", + "text/html", + blobId, + new Date().toUTCString(), // utcDateModified + !!noteDef.isProtected + ]); + shaca.notes[note.noteId] = note; + + // Handle content + if (noteDef.content) { + note.getContent = () => { + if (noteDef.isProtected) return undefined; + return noteDef.content; + }; + } + + // Handle attachments. + if (noteDef.attachments) { + for (const attachmentDef of noteDef.attachments) { + new SAttachment([ + attachmentDef.id ?? utils.randomString(12), + note.noteId, + attachmentDef.role ?? "file", + attachmentDef.mime ?? "application/blob", + attachmentDef.title ?? "New attachment", + blobId, + new Date().toUTCString(), // utcDateModified + ]); + } + } + + // Handle children. + if (noteDef.children) { + for (const childDef of noteDef.children) { + const childNote = buildShareNote(childDef); + + // TODO: Create corresponding SBranch. + } + } + + // Handle labels & relations + let position = 0; + for (const [ key, value ] of Object.entries(noteDef)) { + const attributeId = utils.randomString(12); + const name = key.substring(1); + + let attribute: SAttribute | null = null; + if (key.startsWith("#")) { + attribute = new SAttribute([ + attributeId, + note.noteId, + "label", + name, + value, + false, // isInheritable + position // position + ]); + } + + if (key.startsWith("~")) { + attribute = new SAttribute([ + attributeId, + note.noteId, + "relation", + name, + value, + false, // isInheritable + position // position + ]); + } + + if (!attribute) { + continue; + } + + shaca.attributes[attributeId] = attribute; + position++; + } + return note; +} diff --git a/apps/website/.gitignore b/apps/website/.gitignore index 5a3bb85067..23f5d64255 100644 --- a/apps/website/.gitignore +++ b/apps/website/.gitignore @@ -1,28 +1,28 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + node_modules +dist +dist-ssr +*.local -# Output -.output -.vercel -.netlify -.wrangler -/.svelte-kit -/build - -# OS +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea .DS_Store -Thumbs.db +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? -# Env -.env -.env.* -!.env.example -!.env.test - -# Vite -vite.config.js.timestamp-* -vite.config.ts.timestamp-* - -# Paraglide -src/lib/paraglide - -project.inlang/cache \ No newline at end of file +*.d.ts +!types-assets.d.ts +*.map \ No newline at end of file diff --git a/apps/website/.npmrc b/apps/website/.npmrc deleted file mode 100644 index b6f27f1359..0000000000 --- a/apps/website/.npmrc +++ /dev/null @@ -1 +0,0 @@ -engine-strict=true diff --git a/apps/website/README.md b/apps/website/README.md index 88ad0a1c69..1ebc2149e9 100644 --- a/apps/website/README.md +++ b/apps/website/README.md @@ -1,11 +1,15 @@ -# apps/website +# `create-preact` -Landing page for Trilium Notes powered by [Svelte](https://github.com/sveltejs/cli) and [Tailwind CSS](https://tailwindcss.com/). +

+ +

-## Developing +

Get started using Preact and Vite!

-To run a dev server that will hot-reload changes: `pnpm dev` +## Getting Started -## Building +- `npm run dev` - Starts a dev server at http://localhost:5173/ -To create a production build: `pnpm build` +- `npm run build` - Builds for production, emitting to `dist/`. Prerenders all found routes in app to static HTML + +- `npm run preview` - Starts a server at http://localhost:4173/ to test production build locally diff --git a/apps/website/eslint.config.js b/apps/website/eslint.config.js deleted file mode 100644 index 1652371850..0000000000 --- a/apps/website/eslint.config.js +++ /dev/null @@ -1,39 +0,0 @@ -import js from '@eslint/js'; -import { includeIgnoreFile } from '@eslint/compat'; -import svelte from 'eslint-plugin-svelte'; -import globals from 'globals'; -import { fileURLToPath } from 'node:url'; -import ts from 'typescript-eslint'; -import svelteConfig from './svelte.config.js'; - -const gitignorePath = fileURLToPath(new URL('./.gitignore', import.meta.url)); - -export default ts.config( - includeIgnoreFile(gitignorePath), - js.configs.recommended, - ...ts.configs.recommended, - ...svelte.configs.recommended, - { - languageOptions: { - globals: { ...globals.browser, ...globals.node } - }, - rules: { // typescript-eslint strongly recommend that you do not use the no-undef lint rule on TypeScript projects. - // see: https://typescript-eslint.io/troubleshooting/faqs/eslint/#i-get-errors-from-the-no-undef-rule-about-global-variables-not-being-defined-even-though-there-are-no-typescript-errors - "no-undef": 'off' } - }, - { - files: [ - '**/*.svelte', - '**/*.svelte.ts', - '**/*.svelte.js' - ], - languageOptions: { - parserOptions: { - projectService: true, - extraFileExtensions: ['.svelte'], - parser: ts.parser, - svelteConfig - } - } - } -); diff --git a/apps/website/index.html b/apps/website/index.html new file mode 100644 index 0000000000..59b5a1e3c6 --- /dev/null +++ b/apps/website/index.html @@ -0,0 +1,14 @@ + + + + + + + + Trilium Notes + + +
+ + + diff --git a/apps/website/messages/en.json b/apps/website/messages/en.json deleted file mode 100644 index 37a9894402..0000000000 --- a/apps/website/messages/en.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "$schema": "https://inlang.com/schema/inlang-message-format", - "hello_world": "Hello, {name} from en!" -} diff --git a/apps/website/package.json b/apps/website/package.json index aa8f73e17c..6258f33019 100644 --- a/apps/website/package.json +++ b/apps/website/package.json @@ -1,37 +1,25 @@ { - "name": "website", "private": true, - "version": "0.0.1", + "name": "@triliumnext/website", "type": "module", "scripts": { - "dev": "vite dev", + "dev": "vite", "build": "vite build", - "preview": "vite preview", - "prepare": "svelte-kit sync || echo ''", - "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", - "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", - "lint": "eslint ." - }, - "devDependencies": { - "@eslint/compat": "^1.2.5", - "@eslint/js": "^9.18.0", - "@sveltejs/adapter-auto": "^6.0.0", - "@sveltejs/kit": "^2.16.0", - "@sveltejs/vite-plugin-svelte": "^6.0.0", - "@tailwindcss/typography": "^0.5.15", - "@tailwindcss/vite": "^4.0.0", - "eslint": "^9.18.0", - "eslint-plugin-svelte": "^3.0.0", - "globals": "^16.0.0", - "mdsvex": "^0.12.3", - "svelte": "^5.0.0", - "svelte-check": "^4.0.0", - "tailwindcss": "^4.0.0", - "typescript": "^5.0.0", - "typescript-eslint": "^8.20.0", - "vite": "^7.0.0" + "preview": "vite preview" }, "dependencies": { - "@inlang/paraglide-js": "^2.0.0" + "preact": "^10.26.9", + "preact-iso": "^2.10.0", + "preact-render-to-string": "^6.6.1" + }, + "devDependencies": { + "@preact/preset-vite": "^2.10.2", + "eslint": "^9.36.0", + "eslint-config-preact": "^2.0.0", + "typescript": "^5.9.2", + "vite": "^7.0.4" + }, + "eslintConfig": { + "extends": "preact" } } diff --git a/apps/website/project.inlang/project_id b/apps/website/project.inlang/project_id deleted file mode 100644 index 2002b3bce0..0000000000 --- a/apps/website/project.inlang/project_id +++ /dev/null @@ -1 +0,0 @@ -dv1iXGpHP2mMvuQQo4 \ No newline at end of file diff --git a/apps/website/project.inlang/settings.json b/apps/website/project.inlang/settings.json deleted file mode 100644 index acfd0d3d45..0000000000 --- a/apps/website/project.inlang/settings.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "$schema": "https://inlang.com/schema/project-settings", - "modules": [ - "https://cdn.jsdelivr.net/npm/@inlang/plugin-message-format@4/dist/index.js", - "https://cdn.jsdelivr.net/npm/@inlang/plugin-m-function-matcher@2/dist/index.js" - ], - "plugin.inlang.messageFormat": { - "pathPattern": "./messages/{locale}.json" - }, - "baseLocale": "en", - "locales": [ - "en" - ] -} diff --git a/apps/website/public/collection_board.webp b/apps/website/public/collection_board.webp new file mode 100644 index 0000000000..6ed49dd449 Binary files /dev/null and b/apps/website/public/collection_board.webp differ diff --git a/apps/website/public/collection_calendar.webp b/apps/website/public/collection_calendar.webp new file mode 100644 index 0000000000..34b7961e0f Binary files /dev/null and b/apps/website/public/collection_calendar.webp differ diff --git a/apps/website/public/collection_geomap.webp b/apps/website/public/collection_geomap.webp new file mode 100644 index 0000000000..e564fbfc6f Binary files /dev/null and b/apps/website/public/collection_geomap.webp differ diff --git a/apps/website/public/collection_table.webp b/apps/website/public/collection_table.webp new file mode 100644 index 0000000000..2113caf65f Binary files /dev/null and b/apps/website/public/collection_table.webp differ diff --git a/apps/website/public/screenshot_desktop_mac_dark.webp b/apps/website/public/screenshot_desktop_mac_dark.webp new file mode 100644 index 0000000000..347838682f Binary files /dev/null and b/apps/website/public/screenshot_desktop_mac_dark.webp differ diff --git a/apps/website/public/screenshot_desktop_mac_light.webp b/apps/website/public/screenshot_desktop_mac_light.webp new file mode 100644 index 0000000000..2415bbd3ff Binary files /dev/null and b/apps/website/public/screenshot_desktop_mac_light.webp differ diff --git a/apps/website/public/screenshot_desktop_win_dark.webp b/apps/website/public/screenshot_desktop_win_dark.webp new file mode 100644 index 0000000000..051d8f1c22 Binary files /dev/null and b/apps/website/public/screenshot_desktop_win_dark.webp differ diff --git a/apps/website/public/screenshot_desktop_win_light.webp b/apps/website/public/screenshot_desktop_win_light.webp new file mode 100644 index 0000000000..a44801ea3b Binary files /dev/null and b/apps/website/public/screenshot_desktop_win_light.webp differ diff --git a/apps/website/public/type_canvas.webp b/apps/website/public/type_canvas.webp new file mode 100644 index 0000000000..839818606a Binary files /dev/null and b/apps/website/public/type_canvas.webp differ diff --git a/apps/website/public/type_code.webp b/apps/website/public/type_code.webp new file mode 100644 index 0000000000..91816541a7 Binary files /dev/null and b/apps/website/public/type_code.webp differ diff --git a/apps/website/public/type_file.webp b/apps/website/public/type_file.webp new file mode 100644 index 0000000000..6423d4fc43 Binary files /dev/null and b/apps/website/public/type_file.webp differ diff --git a/apps/website/public/type_mermaid.webp b/apps/website/public/type_mermaid.webp new file mode 100644 index 0000000000..c7c7eb3c6e Binary files /dev/null and b/apps/website/public/type_mermaid.webp differ diff --git a/apps/website/public/type_mindmap.webp b/apps/website/public/type_mindmap.webp new file mode 100644 index 0000000000..23addc0658 Binary files /dev/null and b/apps/website/public/type_mindmap.webp differ diff --git a/apps/website/public/type_text.webp b/apps/website/public/type_text.webp new file mode 100644 index 0000000000..dd897dbca4 Binary files /dev/null and b/apps/website/public/type_text.webp differ diff --git a/apps/website/src/app.css b/apps/website/src/app.css deleted file mode 100644 index e6f2515013..0000000000 --- a/apps/website/src/app.css +++ /dev/null @@ -1,10 +0,0 @@ -@import 'tailwindcss'; -@plugin '@tailwindcss/typography'; - -main a { - text-decoration: revert; -} - -a.rounded-full, a.rounded-xl { - text-decoration: none; -} diff --git a/apps/website/src/app.d.ts b/apps/website/src/app.d.ts deleted file mode 100644 index da08e6da59..0000000000 --- a/apps/website/src/app.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -// See https://svelte.dev/docs/kit/types#app.d.ts -// for information about these interfaces -declare global { - namespace App { - // interface Error {} - // interface Locals {} - // interface PageData {} - // interface PageState {} - // interface Platform {} - } -} - -export {}; diff --git a/apps/website/src/app.html b/apps/website/src/app.html deleted file mode 100644 index fee9ee80f9..0000000000 --- a/apps/website/src/app.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - %sveltekit.head% - - - %sveltekit.body% - - diff --git a/apps/website/src/assets/boxicons/bx-arrow-in-down-square-half.svg b/apps/website/src/assets/boxicons/bx-arrow-in-down-square-half.svg new file mode 100644 index 0000000000..6f4f20ac74 --- /dev/null +++ b/apps/website/src/assets/boxicons/bx-arrow-in-down-square-half.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/website/src/assets/boxicons/bx-buy-me-a-coffee.svg b/apps/website/src/assets/boxicons/bx-buy-me-a-coffee.svg new file mode 100644 index 0000000000..5e105e2f76 --- /dev/null +++ b/apps/website/src/assets/boxicons/bx-buy-me-a-coffee.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/website/src/assets/boxicons/bx-calendar.svg b/apps/website/src/assets/boxicons/bx-calendar.svg new file mode 100644 index 0000000000..a9e2839960 --- /dev/null +++ b/apps/website/src/assets/boxicons/bx-calendar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/website/src/assets/boxicons/bx-chevrons-up.svg b/apps/website/src/assets/boxicons/bx-chevrons-up.svg new file mode 100644 index 0000000000..ffb1feeef1 --- /dev/null +++ b/apps/website/src/assets/boxicons/bx-chevrons-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/website/src/assets/boxicons/bx-code.svg b/apps/website/src/assets/boxicons/bx-code.svg new file mode 100644 index 0000000000..56dfdf85b9 --- /dev/null +++ b/apps/website/src/assets/boxicons/bx-code.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/website/src/assets/boxicons/bx-columns-3.svg b/apps/website/src/assets/boxicons/bx-columns-3.svg new file mode 100644 index 0000000000..646faa6dac --- /dev/null +++ b/apps/website/src/assets/boxicons/bx-columns-3.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/website/src/assets/boxicons/bx-discussion.svg b/apps/website/src/assets/boxicons/bx-discussion.svg new file mode 100644 index 0000000000..221197340d --- /dev/null +++ b/apps/website/src/assets/boxicons/bx-discussion.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/website/src/assets/boxicons/bx-docker.svg b/apps/website/src/assets/boxicons/bx-docker.svg new file mode 100644 index 0000000000..b6d9253777 --- /dev/null +++ b/apps/website/src/assets/boxicons/bx-docker.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/website/src/assets/boxicons/bx-extension.svg b/apps/website/src/assets/boxicons/bx-extension.svg new file mode 100644 index 0000000000..92fc514721 --- /dev/null +++ b/apps/website/src/assets/boxicons/bx-extension.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/website/src/assets/boxicons/bx-file.svg b/apps/website/src/assets/boxicons/bx-file.svg new file mode 100644 index 0000000000..99f70f539b --- /dev/null +++ b/apps/website/src/assets/boxicons/bx-file.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/website/src/assets/boxicons/bx-folder.svg b/apps/website/src/assets/boxicons/bx-folder.svg new file mode 100644 index 0000000000..af88fa32b0 --- /dev/null +++ b/apps/website/src/assets/boxicons/bx-folder.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/website/src/assets/boxicons/bx-github.svg b/apps/website/src/assets/boxicons/bx-github.svg new file mode 100644 index 0000000000..d027cc0db4 --- /dev/null +++ b/apps/website/src/assets/boxicons/bx-github.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/website/src/assets/boxicons/bx-globe.svg b/apps/website/src/assets/boxicons/bx-globe.svg new file mode 100644 index 0000000000..fbd0bb7119 --- /dev/null +++ b/apps/website/src/assets/boxicons/bx-globe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/website/src/assets/boxicons/bx-help-circle.svg b/apps/website/src/assets/boxicons/bx-help-circle.svg new file mode 100644 index 0000000000..73335bc118 --- /dev/null +++ b/apps/website/src/assets/boxicons/bx-help-circle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/website/src/assets/boxicons/bx-history.svg b/apps/website/src/assets/boxicons/bx-history.svg new file mode 100644 index 0000000000..a87acdea8b --- /dev/null +++ b/apps/website/src/assets/boxicons/bx-history.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/website/src/assets/boxicons/bx-map.svg b/apps/website/src/assets/boxicons/bx-map.svg new file mode 100644 index 0000000000..3a27e2fa6c --- /dev/null +++ b/apps/website/src/assets/boxicons/bx-map.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/website/src/assets/boxicons/bx-menu.svg b/apps/website/src/assets/boxicons/bx-menu.svg new file mode 100644 index 0000000000..1c1eebcb57 --- /dev/null +++ b/apps/website/src/assets/boxicons/bx-menu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/website/src/assets/boxicons/bx-message-dots.svg b/apps/website/src/assets/boxicons/bx-message-dots.svg new file mode 100644 index 0000000000..5217978562 --- /dev/null +++ b/apps/website/src/assets/boxicons/bx-message-dots.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/website/src/assets/boxicons/bx-network-chart.svg b/apps/website/src/assets/boxicons/bx-network-chart.svg new file mode 100644 index 0000000000..2693f0baca --- /dev/null +++ b/apps/website/src/assets/boxicons/bx-network-chart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/website/src/assets/boxicons/bx-note.svg b/apps/website/src/assets/boxicons/bx-note.svg new file mode 100644 index 0000000000..7cf848727a --- /dev/null +++ b/apps/website/src/assets/boxicons/bx-note.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/website/src/assets/boxicons/bx-paperclip.svg b/apps/website/src/assets/boxicons/bx-paperclip.svg new file mode 100644 index 0000000000..7d392cf8c6 --- /dev/null +++ b/apps/website/src/assets/boxicons/bx-paperclip.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/website/src/assets/boxicons/bx-paypal.svg b/apps/website/src/assets/boxicons/bx-paypal.svg new file mode 100644 index 0000000000..e4f3db18c7 --- /dev/null +++ b/apps/website/src/assets/boxicons/bx-paypal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/website/src/assets/boxicons/bx-pen.svg b/apps/website/src/assets/boxicons/bx-pen.svg new file mode 100644 index 0000000000..e26e07d9ab --- /dev/null +++ b/apps/website/src/assets/boxicons/bx-pen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/website/src/assets/boxicons/bx-reddit.svg b/apps/website/src/assets/boxicons/bx-reddit.svg new file mode 100644 index 0000000000..e6090b397b --- /dev/null +++ b/apps/website/src/assets/boxicons/bx-reddit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/website/src/assets/boxicons/bx-refresh-cw.svg b/apps/website/src/assets/boxicons/bx-refresh-cw.svg new file mode 100644 index 0000000000..c25ae9c9db --- /dev/null +++ b/apps/website/src/assets/boxicons/bx-refresh-cw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/website/src/assets/boxicons/bx-search.svg b/apps/website/src/assets/boxicons/bx-search.svg new file mode 100644 index 0000000000..5f648745d7 --- /dev/null +++ b/apps/website/src/assets/boxicons/bx-search.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/website/src/assets/boxicons/bx-send-alt.svg b/apps/website/src/assets/boxicons/bx-send-alt.svg new file mode 100644 index 0000000000..68ed3e1e23 --- /dev/null +++ b/apps/website/src/assets/boxicons/bx-send-alt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/website/src/assets/boxicons/bx-shield.svg b/apps/website/src/assets/boxicons/bx-shield.svg new file mode 100644 index 0000000000..babfd1ec11 --- /dev/null +++ b/apps/website/src/assets/boxicons/bx-shield.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/website/src/assets/boxicons/bx-swap-horizontal.svg b/apps/website/src/assets/boxicons/bx-swap-horizontal.svg new file mode 100644 index 0000000000..dc45d78e38 --- /dev/null +++ b/apps/website/src/assets/boxicons/bx-swap-horizontal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/website/src/assets/boxicons/bx-table.svg b/apps/website/src/assets/boxicons/bx-table.svg new file mode 100644 index 0000000000..7a3cd410c5 --- /dev/null +++ b/apps/website/src/assets/boxicons/bx-table.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/website/src/assets/boxicons/bx-tag.svg b/apps/website/src/assets/boxicons/bx-tag.svg new file mode 100644 index 0000000000..6e698bd71a --- /dev/null +++ b/apps/website/src/assets/boxicons/bx-tag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/website/src/assets/boxicons/bx-vector-square.svg b/apps/website/src/assets/boxicons/bx-vector-square.svg new file mode 100644 index 0000000000..57eefdeb98 --- /dev/null +++ b/apps/website/src/assets/boxicons/bx-vector-square.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/website/src/assets/favicon.ico b/apps/website/src/assets/favicon.ico new file mode 100644 index 0000000000..398e3854e6 Binary files /dev/null and b/apps/website/src/assets/favicon.ico differ diff --git a/apps/website/static/icon-color.svg b/apps/website/src/assets/icon-color.svg similarity index 100% rename from apps/website/static/icon-color.svg rename to apps/website/src/assets/icon-color.svg diff --git a/apps/website/src/components/Button.css b/apps/website/src/components/Button.css new file mode 100644 index 0000000000..4eabe906a5 --- /dev/null +++ b/apps/website/src/components/Button.css @@ -0,0 +1,20 @@ +a.button { + display: block; + background-color: var(--brand-1); + padding: 0.5em 1em; + border-radius: 6px; + color: var(--brand-foreground-color); + text-decoration: none; + text-align: center; + box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.15); + + &.outline { + border: 1px solid var(--brand-1); + color: var(--brand-1); + background-color: transparent; + } + + .text { + vertical-align: middle; + } +} \ No newline at end of file diff --git a/apps/website/src/components/Button.tsx b/apps/website/src/components/Button.tsx new file mode 100644 index 0000000000..729346e58d --- /dev/null +++ b/apps/website/src/components/Button.tsx @@ -0,0 +1,44 @@ +import { ComponentChildren } from "preact"; +import Icon from "./Icon.js"; +import "./Button.css"; + +interface LinkProps { + className?: string; + href?: string; + openExternally?: boolean; + children: ComponentChildren; + title?: string; + onClick?: (e: MouseEvent) => void; +} + +interface ButtonProps extends Omit { + href?: string; + iconSvg?: string; + text: ComponentChildren; + openExternally?: boolean; + outline?: boolean; +} + +export default function Button({ iconSvg, text, className, outline, ...restProps }: ButtonProps) { + return ( + + {iconSvg && <>{" "}} + {text} + + ) +} + +export function Link({ openExternally, children, ...restProps }: LinkProps) { + return ( + + {children} + + ) +} diff --git a/apps/website/src/components/Card.tsx b/apps/website/src/components/Card.tsx new file mode 100644 index 0000000000..49c357132e --- /dev/null +++ b/apps/website/src/components/Card.tsx @@ -0,0 +1,37 @@ +import { ComponentChildren, HTMLAttributes } from "preact"; +import { Link } from "./Button.js"; +import Icon from "./Icon.js"; + +interface CardProps extends Omit, "title"> { + title: ComponentChildren; + imageUrl?: string; + iconSvg?: string; + className?: string; + moreInfoUrl?: string; + children: ComponentChildren; +} + +export default function Card({ title, children, imageUrl, iconSvg, className, moreInfoUrl, ...restProps }: CardProps) { + return ( +
+ {imageUrl && } + +
+

+ {iconSvg && }{" "} + {title} +

+ +
+ {children} +
+ + {moreInfoUrl && ( +
+ Learn more... +
+ )} +
+
+ ) +} diff --git a/apps/website/src/components/DownloadButton.css b/apps/website/src/components/DownloadButton.css new file mode 100644 index 0000000000..d7ed4cf8fb --- /dev/null +++ b/apps/website/src/components/DownloadButton.css @@ -0,0 +1,27 @@ +a.download-button { + display: none; + align-items: center; + justify-content: center; + gap: 1em; + + @media (min-width: 720px) { + display: flex !important; + } + + .platform { + font-size: 0.75em; + opacity: 0.75; + } + + &.big { + padding: 0.5em 3.5em; + margin: 1em 0; + gap: m; + text-align: left; + + .platform { + display: block; + } + } +} + diff --git a/apps/website/src/components/DownloadButton.tsx b/apps/website/src/components/DownloadButton.tsx new file mode 100644 index 0000000000..8ed8cf18a8 --- /dev/null +++ b/apps/website/src/components/DownloadButton.tsx @@ -0,0 +1,30 @@ +import { getRecommendedDownload, RecommendedDownload } from "../download-helper.js"; +import "./DownloadButton.css"; +import Button from "./Button.js"; +import downloadIcon from "../assets/boxicons/bx-arrow-in-down-square-half.svg?raw"; +import packageJson from "../../../../package.json" with { type: "json" }; +import { useEffect, useState } from "preact/hooks"; + +interface DownloadButtonProps { + big?: boolean; +} + +export default function DownloadButton({ big }: DownloadButtonProps) { + const [ recommendedDownload, setRecommendedDownload ] = useState(); + useEffect(() => setRecommendedDownload(getRecommendedDownload()), []); + + return (recommendedDownload && +
+ +
+ {restDownloads.map(download => ( + + {download[1].name} + + ))} +
+ + + ) +} diff --git a/apps/website/src/pages/Home/index.css b/apps/website/src/pages/Home/index.css new file mode 100644 index 0000000000..aa20da29d6 --- /dev/null +++ b/apps/website/src/pages/Home/index.css @@ -0,0 +1,244 @@ +section.hero-section { + position: relative; + + &::before { + content: ""; + position: absolute; + inset: 0; + pointer-events: none; + background: + radial-gradient(40vmax 40vmax at 15% 25%, rgba(228, 123, 25, 0.25), transparent 70%), + radial-gradient(35vmax 35vmax at 75% 20%, rgba(79, 165, 43, 0.22), transparent 70%), + radial-gradient(28vmax 28vmax at 60% 75%, rgba(227, 63, 59, 0.22), transparent 70%), + radial-gradient(20vmax 20vmax at 85% 65%, rgba(228, 123, 25, 0.18), transparent 70%), + radial-gradient(15vmax 15vmax at 40% 50%, rgba(79, 165, 43, 0.15), transparent 70%); + + @media (prefers-color-scheme: dark) { + background: + radial-gradient(40vmax 40vmax at 20% 30%, rgba(228, 123, 25, 0.25), transparent 70%), + radial-gradient(30vmax 30vmax at 75% 25%, rgba(79, 165, 43, 0.25), transparent 70%), + radial-gradient(25vmax 25vmax at 60% 75%, rgba(227, 63, 59, 0.25), transparent 70%), + radial-gradient(20vmax 20vmax at 85% 65%, rgba(228, 123, 25, 0.15), transparent 70%); + } + } + &::after { + content: ""; + position: absolute; + inset: 0; + background: radial-gradient(circle, rgba(255, 255, 255, 0) 60%, rgba(0, 0, 0, 0.06) 100%); + pointer-events: none; + + @media (prefers-color-scheme: dark) { + content: ""; + position: absolute; + inset: 0; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200' viewBox='0 0 200 200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); + opacity: 0.04; + pointer-events: none; + } + } + + &>.content-wrapper { + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + min-width: 80vw; + } + + .title-section { + flex-basis: 40%; + color: var(--muted-color); + + h1 { + line-height: 1.1; + font-weight: 100; + color: var(--foreground-color); + } + } + + .screenshot { + position: relative; + width: 100%; + height: auto; + margin-bottom: 0; + } + + .download-wrapper { + display: flex; + flex-direction: column; + align-content: center; + } + + .download-button { + margin-bottom: 0.25em; + } + + .more-download-options { + display: inline-block; + color: var(--brand-1); + font-size: 0.8em; + text-align: center; + } + + .additional-options { + margin-top: 1em; + display: flex; + gap: 1em; + font-size: 0.85em; + align-items: center; + + a { + flex-grow: 1; + } + } +} + +@media (max-width: 719px) { + section.hero-section { + padding-bottom: 0; + + .content-wrapper { + width: 100%; + } + + .title-section { + max-width: 90%; + } + + .screenshot { + margin-top: 2em; + } + } +} + +@media (min-width: 720px) { + section.hero-section > .content-wrapper { + flex-direction: row; + gap: 3em; + padding: 3em; + } + + section.hero-section .download-wrapper { + display: inline-flex; + } +} + +section.accented { + background: linear-gradient(135deg, rgba(228, 123, 25, 0.08), rgba(79, 165, 43, 0.08)); +} + +.benefits-container .card { + padding: 1em; +} + +section.final-cta { + text-align: center; + padding: 6em 0; + + h2 { + margin-bottom: 0; + } + + p { + color: var(--muted-color); + } + + .buttons { + display: flex; + align-items: center; + gap: 1em; + justify-content: center; + margin-top: 2em; + + .button { + padding: 0.75em 2em; + } + } +} + +section.faq { + box-shadow: 0 0 6px rgba(0, 0, 0, 0.15); + + @media (prefers-color-scheme: dark) { + box-shadow: unset; + border-top: 1px solid var(--brand-1); + } +} + +.list-with-screenshot { + gap: 2em; + + @media (min-width: 720px) { + display: flex; + } + + ul { + list-style-type: none; + margin: 0; + padding: 0; + + li { + margin-bottom: 1em; + + &:last-of-type { + margin-bottom: 0; + } + + .card { + border: 1px solid transparent; + } + + &.selected .card { + border: 1px solid var(--brand-1); + } + } + } + + .details { + flex-basis: 50%; + flex-shrink: 0; + + @media (max-width: 719px) { + margin-top: 1em; + } + } + + &.horizontal { + flex-direction: column-reverse; + + ul { + gap: 1em; + display: grid; + + @media (min-width: 720px) { + grid-template-columns: 1fr 1fr 1fr; + } + } + + li { + margin: 0; + } + + .card { + height: 100%; + } + + h3 { + color: var(--brand-1); + } + + .details { + max-height: 35vh; + overflow: hidden; + display: flex; + flex-direction: column; + + img { + height: 100%; + width: auto; + object-fit: contain; + } + } + } +} diff --git a/apps/website/src/pages/Home/index.tsx b/apps/website/src/pages/Home/index.tsx new file mode 100644 index 0000000000..0652d13660 --- /dev/null +++ b/apps/website/src/pages/Home/index.tsx @@ -0,0 +1,304 @@ +import { ComponentChildren } from 'preact'; +import Card from '../../components/Card.js'; +import Section from '../../components/Section.js'; +import DownloadButton from '../../components/DownloadButton.js'; +import "./index.css"; +import { useColorScheme, usePageTitle } from '../../hooks.js'; +import Button, { Link } from '../../components/Button.js'; +import gitHubIcon from "../../assets/boxicons/bx-github.svg?raw"; +import dockerIcon from "../../assets/boxicons/bx-docker.svg?raw"; +import noteStructureIcon from "../../assets/boxicons/bx-folder.svg?raw"; +import attributesIcon from "../../assets/boxicons/bx-tag.svg?raw"; +import hoistingIcon from "../../assets/boxicons/bx-chevrons-up.svg?raw"; +import revisionsIcon from "../../assets/boxicons/bx-history.svg?raw"; +import syncIcon from "../../assets/boxicons/bx-refresh-cw.svg?raw"; +import protectedNotesIcon from "../../assets/boxicons/bx-shield.svg?raw"; +import jumpToIcon from "../../assets/boxicons/bx-send-alt.svg?raw"; +import searchIcon from "../../assets/boxicons/bx-search.svg?raw"; +import webClipperIcon from "../../assets/boxicons/bx-paperclip.svg?raw"; +import importExportIcon from "../../assets/boxicons/bx-swap-horizontal.svg?raw"; +import shareIcon from "../../assets/boxicons/bx-globe.svg?raw"; +import codeIcon from "../../assets/boxicons/bx-code.svg?raw"; +import restApiIcon from "../../assets/boxicons/bx-extension.svg?raw"; +import textNoteIcon from "../../assets/boxicons/bx-note.svg?raw"; +import fileIcon from "../../assets/boxicons/bx-file.svg?raw"; +import canvasIcon from "../../assets/boxicons/bx-pen.svg?raw"; +import mermaidIcon from "../../assets/boxicons/bx-vector-square.svg?raw"; +import mindmapIcon from "../../assets/boxicons/bx-network-chart.svg?raw"; +import calendarIcon from "../../assets/boxicons/bx-calendar.svg?raw"; +import tableIcon from "../../assets/boxicons/bx-table.svg?raw"; +import boardIcon from "../../assets/boxicons/bx-columns-3.svg?raw"; +import geomapIcon from "../../assets/boxicons/bx-map.svg?raw"; +import { getPlatform } from '../../download-helper.js'; +import { useEffect, useState } from 'preact/hooks'; + +export function Home() { + usePageTitle(""); + + return ( + <> + + + + + + + + + + ); +} + +function HeroSection() { + const platform = getPlatform(); + const colorScheme = useColorScheme(); + const [ screenshotUrl, setScreenshotUrl ] = useState(); + + useEffect(() => { + switch (platform) { + case "macos": + setScreenshotUrl(`/screenshot_desktop_mac_${colorScheme}.webp`); + break; + case "linux": + break; + case "windows": + default: + setScreenshotUrl(`/screenshot_desktop_win_${colorScheme}.webp`); + break; + } + }, [ colorScheme ]); + + return ( +
+
+

Organize your thoughts. Build your personal knowledge base.

+

Trilium is an open-source solution for note-taking and organizing a personal knowledge base. Use it locally on your desktop, or sync it with your self-hosted server to keep your notes everywhere you go.

+ + +
+ + + + {screenshotUrl && Screenshot of the Trilium Notes desktop application} +
+ ) +} + +function OrganizationBenefitsSection() { + return ( + <> +
+
+ Notes can be arranged hierarchically. There's no need for folders, since each note can contain sub-notes. A single note can be added in multiple places in the hierarchy. + Use relations between notes or add labels for easy categorization. Use promoted attributes to enter structured information which can be used in tables, boards. + Easily separate your personal and work notes by grouping them under a workspace, which focuses your note tree to only show a specific set of notes. +
+
+ + ); +} + +function ProductivityBenefitsSection() { + return ( + <> +
+
+ Notes are periodically saved in the background and revisions can be used for review or to undo accidental changes. Revisions can also be created on-demand. + Use a self-hosted or cloud instance to easily synchronize your notes across multiple devices, and to access it from your mobile phone using a PWA. + Protect sensitive personal information by encrypting the notes and locking them behind a password-protected session. + Jump quickly to notes or UI commands across the hierarchy by searching for their title, with fuzzy matching to account for typos or slight differences. + Or search for text inside notes and narrow down the search by filtering by the parent note, or by depth. + Grab web pages (or screenshots) and place them directly into Trilium using the web clipper browser extension. +
+
+ + ); +} + +function NoteTypesSection() { + return ( +
+ +

+ and others:{" "} + note map,{" "} + relation map,{" "} + saved searches,{" "} + render note,{" "} + web views. +

+
+ ); +} + +function ExtensibilityBenefitsSection() { + return ( + <> +
+
+ Easily interact with other applications using Markdown, ENEX, OML formats. + If you have a server, it can be used to share a subset of your notes with other people. + Build your own integrations within Trilium with custom widgets, or server-side logic. + Interact with Trilium programatically using its builtin REST API. +
+
+ + ); +} + +function CollectionsSection() { + return ( +
+ +
+ ); +} + +function ListWithScreenshot({ items, horizontal, cardExtra }: { + items: { title: string, imageUrl: string, description: string, moreInfo: string, iconSvg?: string }[]; + horizontal?: boolean; + cardExtra?: ComponentChildren; +}) { + const [ selectedItem, setSelectedItem ] = useState(items[0]); + + return ( +
+
    + {items.map(item => ( +
  • + setSelectedItem(item)} + onClick={() => setSelectedItem(item)} + moreInfoUrl={item.moreInfo} + iconSvg={item.iconSvg} + > + {item.description} + +
  • + ))} +
+ +
+ {selectedItem && ( + <> + Screenshot of the feature being selected + + )} +
+
+ ) +} + +function FaqSection() { + return ( +
+
+ Currently there is no official mobile application. However, if you have a server instance you can access it using a web browser and even install it as a PWA. For Android, there is an unofficial application called TriliumDroid that even works offline (same as a desktop client). + All your notes will be stored in an SQLite database in an application folder. The reasoning why Trilium uses a database instead of plain text files is both performance and some features would be much more difficult to implement such as clones (same note in multiple places in the tree). To find the application folder, simply go to the About window. + No, the server allows access via a web browser and manages the synchronization if you have multiple devices. To get started, it's enough to download the desktop application and start using it. + Depending on usage, the application should be able to handle at least 100.000 notes without an issue. Do note that the sync process can sometimes fail if uploading many large files (> 1 GB per file) since Trilium is meant more as a knowledge base application rather than a file store (like NextCloud, for example). + No, it's generally not a good idea to share a SQLite database over a network drive. Although sometimes it might work, there are chances that the database will get corrupted due to imperfect file locks over a network. + By default, notes are not encrypted and can be read directly from the database. Once a note is marked as encrypted, the note is encrypted using AES-128-CBC. +
+
+ ); +} + +function FaqItem({ question, children }: { question: string; children: ComponentChildren }) { + return ( + + {children} + + ) +} + +function FinalCta() { + return ( +
+

Build your personal knowledge base with powerful features and full privacy.

+ +
+
+
+ ) +} diff --git a/apps/website/src/pages/SupportUs/SupportUs.css b/apps/website/src/pages/SupportUs/SupportUs.css new file mode 100644 index 0000000000..2159d97435 --- /dev/null +++ b/apps/website/src/pages/SupportUs/SupportUs.css @@ -0,0 +1,21 @@ +section.donate { + background: var(--background-color); + + ul.donate-buttons { + list-style-type: none; + display: flex; + gap: 1em; + padding: 0; + flex-direction: column; + + @media (min-width: 720px) { + gap: 0 1em; + flex-direction: row; + } + } + + h3 { + font-size: 1.5em; + color: var(--brand-1); + } +} diff --git a/apps/website/src/pages/SupportUs/SupportUs.tsx b/apps/website/src/pages/SupportUs/SupportUs.tsx new file mode 100644 index 0000000000..d7f8d77e2e --- /dev/null +++ b/apps/website/src/pages/SupportUs/SupportUs.tsx @@ -0,0 +1,70 @@ +import Section from "../../components/Section.js"; +import "./SupportUs.css"; +import githubIcon from "../../assets/boxicons/bx-github.svg?raw"; +import paypalIcon from "../../assets/boxicons/bx-paypal.svg?raw"; +import buyMeACoffeeIcon from "../../assets/boxicons/bx-buy-me-a-coffee.svg?raw"; +import Button, { Link } from "../../components/Button.js"; +import Card from "../../components/Card.js"; +import { usePageTitle } from "../../hooks.js"; + +export default function Donate() { + usePageTitle("Support us"); + + return ( + <> +
+
+ +

+ Trilium is built and maintained with hundreds of hours of work. + Your support keeps it open-source, improves features, and covers costs such as hosting. +

+ +

Consider supporting the main developer (eliandoran) of the application via:

+ + +
+ + +
    +
  • Translate the application into your native language via Weblate.
  • +
  • Interact with the community on GitHub Discussions or on Matrix.
  • +
  • Report bugs via GitHub issues.
  • +
  • Improve the documentation by informing us on gaps in the documentation or contributing guides, FAQs or tutorials.
  • +
  • Spread the word: Share Trilium Notes with friends, or on blogs and social media.
  • +
+
+
+
+ + ) +} diff --git a/apps/website/src/pages/_404.css b/apps/website/src/pages/_404.css new file mode 100644 index 0000000000..8eabd31e64 --- /dev/null +++ b/apps/website/src/pages/_404.css @@ -0,0 +1,9 @@ +section.section-404 { + text-align: center; + background: var(--background-color); + + h2 { + color: var(--brand-3); + margin: 1em; + } +} \ No newline at end of file diff --git a/apps/website/src/pages/_404.tsx b/apps/website/src/pages/_404.tsx new file mode 100644 index 0000000000..07d9364375 --- /dev/null +++ b/apps/website/src/pages/_404.tsx @@ -0,0 +1,13 @@ +import Section from "../components/Section.js"; +import { usePageTitle } from "../hooks.js"; +import "./_404.css"; + +export function NotFound() { + usePageTitle("404"); + + return ( +
+ The page you were looking for could not be found. Maybe it was deleted or the URL is incorrect. +
+ ); +} diff --git a/apps/website/src/routes/+layout.svelte b/apps/website/src/routes/+layout.svelte deleted file mode 100644 index 98e32e276b..0000000000 --- a/apps/website/src/routes/+layout.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - -
- -
-{@render children()} -
- - diff --git a/apps/website/src/routes/+page.svelte b/apps/website/src/routes/+page.svelte deleted file mode 100644 index a438901b5e..0000000000 --- a/apps/website/src/routes/+page.svelte +++ /dev/null @@ -1,176 +0,0 @@ - - - - Trilium Notes - - - -
- -
-
-
-
-
- -
-
- - -
-

Organize Your Thoughts.
Build Your Knowledge.

-

- Trilium Notes helps you build and organize complex personal knowledge bases effortlessly. - Its unique tree structure, rich editing tools, and powerful search features make managing your information intuitive and flexible. - - -

- -
- - -
- Screenshot of the app on desktop Windows -
-
-
-
- -
-

Beyond Text: Smarter Note Types

- -
- - - - - - - -
- -

Technical Features

- -
- - - - - - - -
-
- -
-

Feature Highlights

- -
- -
-

Organization & Navigation

-
    -
  • Arbitrarily deep note tree with cloning support.
  • -
  • Fast navigation, full-text search, and note hoisting.
  • -
  • Note attributes for organization, querying, and scripting.
  • -
  • Seamless note versioning.
  • -
-
- - -
-

Editing & Content

-
    -
  • Rich WYSIWYG editor with tables, images, math, and markdown autoformat.
  • -
  • Source code editing with syntax highlighting.
  • -
  • Evernote and Markdown import/export.
  • -
  • Web Clipper for easy saving of web content.
  • -
-
- - -
-

Security & Sync

-
    -
  • Direct OpenID and TOTP integration for secure login.
  • -
  • Strong note encryption with per-note granularity.
  • -
  • Sharing notes publicly on the internet.
  • -
-
- - -
-

Advanced & Customization

-
    -
  • Relation maps and link maps to visualize notes.
  • -
  • Touch-optimized mobile frontend and dark/user themes.
  • -
  • Customizable UI with sidebar buttons and user widgets.
  • -
  • Scales efficiently beyond 100,000 notes.
  • -
-
-
-
- - -
-
-

Ready to get started with Trilium Notes?

-

Build your personal knowledge base with powerful features and full privacy.

- - -
-
\ No newline at end of file diff --git a/apps/website/src/routes/demo/+page.svelte b/apps/website/src/routes/demo/+page.svelte deleted file mode 100644 index a815390c5d..0000000000 --- a/apps/website/src/routes/demo/+page.svelte +++ /dev/null @@ -1 +0,0 @@ -paraglide diff --git a/apps/website/src/routes/demo/paraglide/+page.svelte b/apps/website/src/routes/demo/paraglide/+page.svelte deleted file mode 100644 index 797149f8ae..0000000000 --- a/apps/website/src/routes/demo/paraglide/+page.svelte +++ /dev/null @@ -1,15 +0,0 @@ - - - - -

{m.hello_world({ name: 'SvelteKit User' })}

-
- -

-If you use VSCode, install the Sherlock i18n extension for a better i18n experience. -

diff --git a/apps/website/src/routes/download-now.svelte b/apps/website/src/routes/download-now.svelte deleted file mode 100644 index 20abe9c55f..0000000000 --- a/apps/website/src/routes/download-now.svelte +++ /dev/null @@ -1,18 +0,0 @@ - - -{#if url} - - Download now - - ({platform} {architecture}) - - -{/if} \ No newline at end of file diff --git a/apps/website/src/routes/download/+page.svelte b/apps/website/src/routes/download/+page.svelte deleted file mode 100644 index b09c684f98..0000000000 --- a/apps/website/src/routes/download/+page.svelte +++ /dev/null @@ -1,65 +0,0 @@ - - - - Trilium Notes: Download - - - -
-
-

Download the desktop application

- - -
- Architecture: -
- {#each architectures as arch} - - {/each} -
-
- -
- {#each Object.entries(downloadMatrix.desktop) as [platformId, platform]} - {@const textColor = (platformId === "windows" ? "text-blue-600" : platformId === "linux" ? "text-violet-600" : "text-gray-800 dark:text-gray-100")} - {@const bgColor = (platformId === "windows" ? "bg-blue-600" : platformId === "linux" ? "bg-violet-600" : "bg-gray-800")} - {@const hoverColor = (platformId === "windows" ? "hover:bg-blue-700" : platformId === "linux" ? "hover:bg-violet-700" : "hover:bg-gray-900")} - - {/each} -
-
- -
-

Set up a server for access on multiple devices

- -
- {#each Object.entries(downloadMatrix.server) as [platformId, platform]} - {@const textColor = (platformId === "linux" ? "text-violet-600" : "text-gray-800 dark:text-gray-100")} - {@const bgColor = (platformId === "linux" ? "bg-violet-600" : "bg-gray-800")} - {@const hoverColor = (platformId === "linux" ? "hover:bg-violet-700" : "hover:bg-gray-900")} - - {/each} -
-
- - - -
diff --git a/apps/website/src/routes/download/download-card.svelte b/apps/website/src/routes/download/download-card.svelte deleted file mode 100644 index 9fd89c20fc..0000000000 --- a/apps/website/src/routes/download/download-card.svelte +++ /dev/null @@ -1,31 +0,0 @@ - - -
-

{typeof platform.title === "object" ? platform.title[architecture] : platform.title}

-

{typeof platform.title === "object" ? platform.description[architecture] : platform.description}

-
- {#if recommended} - - {recommended[1].name} - - {/if} -
- {#each Object.entries(platform.downloads).filter((e) => !e[1].recommended) as [format, download]} - - {download.name} - - {/each} -
-
-
\ No newline at end of file diff --git a/apps/website/src/routes/feature-block.svelte b/apps/website/src/routes/feature-block.svelte deleted file mode 100644 index 982eea437c..0000000000 --- a/apps/website/src/routes/feature-block.svelte +++ /dev/null @@ -1,14 +0,0 @@ - - -
- {imgAlt} -
-

{title}

-

{text}

-
-
\ No newline at end of file diff --git a/apps/website/src/routes/header.svelte b/apps/website/src/routes/header.svelte deleted file mode 100644 index af1a7f057d..0000000000 --- a/apps/website/src/routes/header.svelte +++ /dev/null @@ -1,23 +0,0 @@ - -
- -
\ No newline at end of file diff --git a/apps/website/src/style.css b/apps/website/src/style.css new file mode 100644 index 0000000000..64be436ad6 --- /dev/null +++ b/apps/website/src/style.css @@ -0,0 +1,184 @@ +:root { + --background-color: #fff; + --foreground-color: black; + --muted-color: #606060; + --card-background-color: white; + --card-box-shadow: 0 0 3px rgba(0, 0, 0, 0.25); + --header-background-color: rgba(255, 255, 255, 0.75); + --brand-1: #e47b19; + --brand-2: #4fa52b; + --brand-3: #e33f3b; + --brand-foreground-color: white; +} + +@media (prefers-color-scheme: dark) { + :root { + --foreground-color: #fff; + --background-color: #0a0e14; + --muted-color: #cacaca; + --header-background-color: rgba(0, 0, 0, 0.75); + --card-background-color: #ffffff12; + --card-box-shadow: 0 0 12px rgba(0, 0, 0, 0.15); + } +} + +html, +body { + margin: 0; + line-height: 1.5; + font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial; + min-height: 100vh; +} + +main { + min-height: calc(100vh - 80px - 90px); + display: flex; + flex-direction: column; +} + +body { + font-family: sans-serif; + background: var(--background-color); + color: var(--foreground-color); +} + +a { + color: var(--brand-3); + text-decoration: none; + + &:not(.button):hover { + text-decoration: underline; + } +} + +.content-wrapper { + max-width: 1200px; + width: 90%; + margin: auto; +} + +section { + padding: 1em 0; + justify-content: center; + align-items: stretch; + + &.fill { + flex-grow: 1; + display: flex; + } + + h2 { + text-align: center; + font-weight: 100; + margin-top: 0; + margin-bottom: 1em; + } +} + +img { + width: 100%; + height: auto; +} + +.card { + border: 0; + box-shadow: var(--card-box-shadow); + background-color: var(--card-background-color); + border-radius: 16px; + overflow: hidden; + display: flex; + flex-direction: column; + + h3 { + font-size: 1.1rem; + font-weight: 300; + margin: 0; + color: var(--brand-1); + margin-bottom: 0.5em; + + &> span { + vertical-align: middle; + } + } + + &> .image { + height: 200px; + object-fit: cover; + } + + .card-content { + margin: 0; + padding: 1em; + color: var(--muted-color); + display: flex; + flex-direction: column; + flex-grow: 1; + + .more-info-container { + margin-top: 0.5em; + flex-grow: 1; + display: flex; + flex-direction: column; + justify-content: flex-end; + + .more-info { + font-size: 0.9em; + } + } + } +} + +.bx { + display: inline-block; + width: 24px; + height: 24px; + vertical-align: middle; + + svg { + fill: currentColor; + } +} + +@media (max-width: 719px) { + .grid-4-cols > *, + .grid-3-cols > *, + .grid-2-cols > * { + margin-bottom: 1em; + } + + .desktop-only { + display: none !important; + } +} + +@media (min-width: 720px) { + section { + padding: 3em 0; + + h2 { + margin-bottom: 2em; + } + } + + .grid-4-cols { + display: grid; + grid-template-columns: 1fr 1fr 1fr 1fr; + gap: 1em; + } + + .grid-3-cols { + display: grid; + grid-template-columns: 1fr 1fr 1fr; + gap: 1em; + } + + .grid-2-cols { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 1em; + } + + .mobile-only { + display: none !important; + } +} \ No newline at end of file diff --git a/apps/website/static/favicon.png b/apps/website/static/favicon.png deleted file mode 120000 index 17ded225a6..0000000000 --- a/apps/website/static/favicon.png +++ /dev/null @@ -1 +0,0 @@ -../../../apps/client/src/assets/icon.png \ No newline at end of file diff --git a/apps/website/static/note-types/canvas.png b/apps/website/static/note-types/canvas.png deleted file mode 100644 index ad5c74b363..0000000000 Binary files a/apps/website/static/note-types/canvas.png and /dev/null differ diff --git a/apps/website/static/note-types/geo-map.png b/apps/website/static/note-types/geo-map.png deleted file mode 100644 index cd891b6465..0000000000 Binary files a/apps/website/static/note-types/geo-map.png and /dev/null differ diff --git a/apps/website/static/note-types/mermaid.png b/apps/website/static/note-types/mermaid.png deleted file mode 100644 index 1e8bd73866..0000000000 Binary files a/apps/website/static/note-types/mermaid.png and /dev/null differ diff --git a/apps/website/static/note-types/mind-map.png b/apps/website/static/note-types/mind-map.png deleted file mode 100644 index a970d485ff..0000000000 Binary files a/apps/website/static/note-types/mind-map.png and /dev/null differ diff --git a/apps/website/static/screenshots/desktop-win.png b/apps/website/static/screenshots/desktop-win.png deleted file mode 100644 index ab6ee05ec5..0000000000 Binary files a/apps/website/static/screenshots/desktop-win.png and /dev/null differ diff --git a/apps/website/static/screenshots/macos/dark.png b/apps/website/static/screenshots/macos/dark.png deleted file mode 100644 index 2eae66f18a..0000000000 Binary files a/apps/website/static/screenshots/macos/dark.png and /dev/null differ diff --git a/apps/website/static/screenshots/macos/light.png b/apps/website/static/screenshots/macos/light.png deleted file mode 100644 index a2b64b7fba..0000000000 Binary files a/apps/website/static/screenshots/macos/light.png and /dev/null differ diff --git a/apps/website/static/technical-features/grafana-metrics.png b/apps/website/static/technical-features/grafana-metrics.png deleted file mode 120000 index 1dd11db675..0000000000 --- a/apps/website/static/technical-features/grafana-metrics.png +++ /dev/null @@ -1 +0,0 @@ -../../../../docs/User Guide/User Guide/Advanced Usage/1_Metrics_image.png \ No newline at end of file diff --git a/apps/website/svelte.config.js b/apps/website/svelte.config.js deleted file mode 100644 index 0cd57a52d6..0000000000 --- a/apps/website/svelte.config.js +++ /dev/null @@ -1,11 +0,0 @@ -import { mdsvex } from 'mdsvex'; -import adapter from '@sveltejs/adapter-auto'; -import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; - -const config = { - preprocess: [vitePreprocess(), mdsvex()], - kit: { adapter: adapter() }, - extensions: ['.svelte', '.svx'] -}; - -export default config; diff --git a/apps/website/tsconfig.json b/apps/website/tsconfig.json index 5adb685c03..5b02bdf111 100644 --- a/apps/website/tsconfig.json +++ b/apps/website/tsconfig.json @@ -1,20 +1,18 @@ { - "extends": "./.svelte-kit/tsconfig.json", + "extends": "../../tsconfig.base.json", "compilerOptions": { - "allowJs": true, - "checkJs": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "resolveJsonModule": true, - "skipLibCheck": true, - "sourceMap": true, - "strict": true, + "target": "ES2020", + "module": "ESNext", "moduleResolution": "bundler", - "composite": true - } - // Path aliases are handled by https://svelte.dev/docs/kit/configuration#alias - // except $lib which is handled by https://svelte.dev/docs/kit/configuration#files - // - // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes - // from the referenced tsconfig.json - TypeScript does not merge them in + /* Preact Config */ + "jsx": "react-jsx", + "jsxImportSource": "preact", + "skipLibCheck": true, + "paths": { + "react": ["./node_modules/preact/compat/"], + "react-dom": ["./node_modules/preact/compat/"] + } + }, + "include": ["node_modules/vite/client.d.ts", "**/*"], + "exclude": ["dist"] } diff --git a/apps/website/types-assets.d.ts b/apps/website/types-assets.d.ts new file mode 100644 index 0000000000..32e7448399 --- /dev/null +++ b/apps/website/types-assets.d.ts @@ -0,0 +1,9 @@ +declare module "*?raw" { + var content: string; + export default content; +} + +declare module "*.svg" { + var path: string; + export default path; +} diff --git a/apps/website/vite.config.ts b/apps/website/vite.config.ts index 135fc634d5..078ef45299 100644 --- a/apps/website/vite.config.ts +++ b/apps/website/vite.config.ts @@ -1,24 +1,17 @@ -import tailwindcss from '@tailwindcss/vite'; -import { paraglideVitePlugin } from '@inlang/paraglide-js'; -import { sveltekit } from '@sveltejs/kit/vite'; -import { defineConfig, type Plugin } from 'vite'; +import { defineConfig } from 'vite'; +import preact from '@preact/preset-vite'; -export default () => { - // See https://github.com/nrwl/nx/issues/28978. - const cwd = process.cwd(); - process.chdir(__dirname); // Temporarily change the working directory - - const config = defineConfig({ - plugins: [ - tailwindcss(), - sveltekit(), - paraglideVitePlugin({ - project: './project.inlang', - outdir: './src/lib/paraglide' - }) - ] as Plugin[] - }); - - process.chdir(cwd); // Restore the original working directory - return config; -}; +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [ + preact({ + prerender: { + enabled: true, + renderTarget: '#app', + additionalPrerenderRoutes: ['/404'], + previewMiddlewareEnabled: true, + previewMiddlewareFallback: '/404', + }, + }), + ], +}); diff --git a/package.json b/package.json index ab08b8105a..db1abf06c7 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "desktop:start": "pnpm run --filter desktop dev", "desktop:build": "pnpm run --filter desktop build", "desktop:start-prod": "pnpm run --filter desktop start-prod", + "website:build": "pnpm run --filter website build", "electron:build": "pnpm desktop:build", "electron:start": "pnpm desktop:start", "electron:start-prod": "pnpm desktop:start-prod", @@ -50,14 +51,13 @@ "eslint-config-prettier": "^10.0.0", "eslint-plugin-playwright": "^2.0.0", "eslint-plugin-react-hooks": "5.2.0", - "happy-dom": "~18.0.0", + "happy-dom": "~19.0.0", "jiti": "2.6.0", - "jsdom": "~26.1.0", "jsonc-eslint-parser": "^2.1.0", "react-refresh": "^0.17.0", - "rollup-plugin-webpack-stats": "2.1.4", + "rollup-plugin-webpack-stats": "2.1.5", "tslib": "^2.3.0", - "tsx": "4.20.5", + "tsx": "4.20.6", "typescript": "~5.9.0", "typescript-eslint": "^8.19.0", "upath": "2.0.1", @@ -69,16 +69,16 @@ "author": { "name": "Trilium Notes Team", "email": "contact@eliandoran.me", - "url": "https://github.com/TriliumNext/Notes" + "url": "https://triliumnotes.org" }, "repository": { "type": "git", - "url": "git+https://github.com/TriliumNext/Notes.git" + "url": "git+https://github.com/TriliumNext/Trilium.git" }, "bugs": { - "url": "https://github.com/TriliumNext/Notes/issues" + "url": "https://github.com/TriliumNext/Trilium/issues" }, - "homepage": "https://github.com/TriliumNext/Notes#readme", + "homepage": "https://triliumnotes.org", "packageManager": "pnpm@10.17.1", "pnpm": { "patchedDependencies": { diff --git a/packages/ckeditor5/package.json b/packages/ckeditor5/package.json index 61841db17a..e4c72a52bb 100644 --- a/packages/ckeditor5/package.json +++ b/packages/ckeditor5/package.json @@ -15,7 +15,7 @@ "ckeditor5-premium-features": "46.1.1" }, "devDependencies": { - "@smithy/middleware-retry": "4.3.0", + "@smithy/middleware-retry": "4.3.1", "@types/jquery": "3.5.33" } } diff --git a/packages/codemirror/package.json b/packages/codemirror/package.json index 0ccb49feef..3c9a7c9718 100644 --- a/packages/codemirror/package.json +++ b/packages/codemirror/package.json @@ -16,7 +16,7 @@ "@codemirror/lang-xml": "6.1.0", "@codemirror/legacy-modes": "6.5.1", "@codemirror/search": "6.5.11", - "@codemirror/view": "6.38.3", + "@codemirror/view": "6.38.4", "@fsegurai/codemirror-theme-abcdef": "6.2.2", "@fsegurai/codemirror-theme-abyss": "6.2.2", "@fsegurai/codemirror-theme-android-studio": "6.2.2", diff --git a/packages/commons/package.json b/packages/commons/package.json index 64107f8c68..a5d5c4d03f 100644 --- a/packages/commons/package.json +++ b/packages/commons/package.json @@ -9,6 +9,6 @@ "author": { "name": "Trilium Notes Team", "email": "contact@eliandoran.me", - "url": "https://github.com/TriliumNext/Notes" + "url": "https://triliumnotes.org" } } \ No newline at end of file diff --git a/packages/express-partial-content/vite.config.ts b/packages/express-partial-content/vite.config.ts index e813c9ac19..fc85d4a521 100644 --- a/packages/express-partial-content/vite.config.ts +++ b/packages/express-partial-content/vite.config.ts @@ -8,7 +8,7 @@ export default defineConfig(() => ({ test: { watch: false, globals: true, - environment: 'jsdom', + environment: 'happy-dom', include: ['{src,tests}/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], reporters: ['default'], coverage: { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0f297e6bea..b73a74d4e4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -83,14 +83,11 @@ importers: specifier: 5.2.0 version: 5.2.0(eslint@9.36.0(jiti@2.6.0)) happy-dom: - specifier: ~18.0.0 - version: 18.0.1 + specifier: ~19.0.0 + version: 19.0.1 jiti: specifier: 2.6.0 version: 2.6.0 - jsdom: - specifier: ~26.1.0 - version: 26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) jsonc-eslint-parser: specifier: ^2.1.0 version: 2.4.1 @@ -98,14 +95,14 @@ importers: specifier: ^0.17.0 version: 0.17.0 rollup-plugin-webpack-stats: - specifier: 2.1.4 - version: 2.1.4(rolldown@1.0.0-beta.29)(rollup@4.52.0)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) + specifier: 2.1.5 + version: 2.1.5(rolldown@1.0.0-beta.29)(rollup@4.52.0)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) tslib: specifier: ^2.3.0 version: 2.8.1 tsx: - specifier: 4.20.5 - version: 4.20.5 + specifier: 4.20.6 + version: 4.20.6 typescript: specifier: ~5.9.0 version: 5.9.2 @@ -117,13 +114,13 @@ importers: version: 2.0.1 vite: specifier: ^7.0.0 - version: 7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + version: 7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) vite-plugin-dts: specifier: ~4.5.0 - version: 4.5.4(@types/node@22.18.6)(rollup@4.52.0)(typescript@5.9.2)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) + version: 4.5.4(@types/node@22.18.6)(rollup@4.52.0)(typescript@5.9.2)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) vitest: specifier: ^3.0.0 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.6)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.6.0)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.6)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@19.0.1)(jiti@2.6.0)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) apps/client: dependencies: @@ -254,8 +251,8 @@ importers: specifier: 10.27.2 version: 10.27.2 react-i18next: - specifier: 15.7.3 - version: 15.7.3(i18next@25.5.2(typescript@5.9.2))(react-dom@19.1.0(react@16.14.0))(react@16.14.0)(typescript@5.9.2) + specifier: 16.0.0 + version: 16.0.0(i18next@25.5.2(typescript@5.9.2))(react-dom@19.1.0(react@16.14.0))(react@16.14.0)(typescript@5.9.2) split.js: specifier: 1.6.5 version: 1.6.5 @@ -274,7 +271,7 @@ importers: version: 5.0.0 '@preact/preset-vite': specifier: 2.10.2 - version: 2.10.2(@babel/core@7.28.0)(preact@10.27.2)(vite@7.1.7(@types/node@24.5.1)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) + version: 2.10.2(@babel/core@7.28.0)(preact@10.27.2)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) '@types/bootstrap': specifier: 5.2.10 version: 5.2.10 @@ -297,14 +294,14 @@ importers: specifier: 13.0.1 version: 13.0.1(webpack@5.101.3(esbuild@0.25.10)) happy-dom: - specifier: 18.0.1 - version: 18.0.1 + specifier: 19.0.1 + version: 19.0.1 script-loader: specifier: 0.7.2 version: 0.7.2 vite-plugin-static-copy: specifier: 3.1.2 - version: 3.1.2(vite@7.1.7(@types/node@24.5.1)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) + version: 3.1.2(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) apps/db-compare: dependencies: @@ -325,7 +322,7 @@ importers: dependencies: '@electron/remote': specifier: 2.1.3 - version: 2.1.3(electron@38.1.2) + version: 2.1.3(electron@38.2.0) better-sqlite3: specifier: 12.4.1 version: 12.4.1 @@ -382,8 +379,8 @@ importers: specifier: 13.0.1 version: 13.0.1(webpack@5.101.3(esbuild@0.25.10)) electron: - specifier: 38.1.2 - version: 38.1.2 + specifier: 38.2.0 + version: 38.2.0 prebuild-install: specifier: ^7.1.1 version: 7.1.3 @@ -401,7 +398,7 @@ importers: version: 1.6.3 tsx: specifier: ^4.19.3 - version: 4.20.5 + version: 4.20.6 yargs: specifier: ^18.0.0 version: 18.0.0 @@ -438,8 +435,8 @@ importers: specifier: 13.0.1 version: 13.0.1(webpack@5.101.3(esbuild@0.25.10)) electron: - specifier: 38.1.2 - version: 38.1.2 + specifier: 38.2.0 + version: 38.2.0 fs-extra: specifier: 11.3.2 version: 11.3.2 @@ -449,19 +446,22 @@ importers: better-sqlite3: specifier: 12.4.1 version: 12.4.1 + node-html-parser: + specifier: 7.0.1 + version: 7.0.1 devDependencies: '@anthropic-ai/sdk': - specifier: 0.63.1 - version: 0.63.1 + specifier: 0.64.0 + version: 0.64.0 '@braintree/sanitize-url': specifier: 7.1.1 version: 7.1.1 '@electron/remote': specifier: 2.1.3 - version: 2.1.3(electron@38.1.2) + version: 2.1.3(electron@38.2.0) '@preact/preset-vite': specifier: 2.10.2 - version: 2.10.2(@babel/core@7.28.0)(preact@10.27.2)(vite@7.1.7(@types/node@24.5.1)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) + version: 2.10.2(@babel/core@7.28.0)(preact@10.27.2)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) '@triliumnext/commons': specifier: workspace:* version: link:../../packages/commons @@ -513,9 +513,6 @@ importers: '@types/js-yaml': specifier: 4.0.9 version: 4.0.9 - '@types/jsdom': - specifier: 21.1.7 - version: 21.1.7 '@types/mime-types': specifier: 3.0.1 version: 3.0.1 @@ -610,8 +607,8 @@ importers: specifier: 3.1.10 version: 3.1.10 electron: - specifier: 38.1.2 - version: 38.1.2 + specifier: 38.2.0 + version: 38.2.0 electron-debug: specifier: 4.1.0 version: 4.1.0 @@ -681,9 +678,6 @@ importers: js-yaml: specifier: 4.1.0 version: 4.1.0 - jsdom: - specifier: 26.1.0 - version: 26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) marked: specifier: 16.3.0 version: 16.3.0 @@ -752,7 +746,7 @@ importers: version: 1.0.1 vite: specifier: ^7.1.3 - version: 7.1.7(@types/node@24.5.1)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + version: 7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) ws: specifier: 8.18.3 version: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -771,61 +765,31 @@ importers: apps/website: dependencies: - '@inlang/paraglide-js': - specifier: ^2.0.0 - version: 2.3.2(babel-plugin-macros@3.1.0) + preact: + specifier: 10.27.2 + version: 10.27.2 + preact-iso: + specifier: ^2.10.0 + version: 2.11.0(preact-render-to-string@6.6.1(preact@10.27.2))(preact@10.27.2) + preact-render-to-string: + specifier: ^6.6.1 + version: 6.6.1(preact@10.27.2) devDependencies: - '@eslint/compat': - specifier: ^1.2.5 - version: 1.4.0(eslint@9.36.0(jiti@2.6.0)) - '@eslint/js': - specifier: ^9.18.0 - version: 9.36.0 - '@sveltejs/adapter-auto': - specifier: ^6.0.0 - version: 6.1.0(@sveltejs/kit@2.43.4(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.39.6)(vite@7.1.7(@types/node@24.5.1)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(svelte@5.39.6)(vite@7.1.7(@types/node@24.5.1)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))) - '@sveltejs/kit': - specifier: ^2.16.0 - version: 2.43.4(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.39.6)(vite@7.1.7(@types/node@24.5.1)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(svelte@5.39.6)(vite@7.1.7(@types/node@24.5.1)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) - '@sveltejs/vite-plugin-svelte': - specifier: ^6.0.0 - version: 6.2.1(svelte@5.39.6)(vite@7.1.7(@types/node@24.5.1)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) - '@tailwindcss/typography': - specifier: ^0.5.15 - version: 0.5.19(tailwindcss@4.1.13) - '@tailwindcss/vite': - specifier: ^4.0.0 - version: 4.1.13(vite@7.1.7(@types/node@24.5.1)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) + '@preact/preset-vite': + specifier: ^2.10.2 + version: 2.10.2(@babel/core@7.28.0)(preact@10.27.2)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) eslint: - specifier: ^9.18.0 + specifier: ^9.36.0 version: 9.36.0(jiti@2.6.0) - eslint-plugin-svelte: - specifier: ^3.0.0 - version: 3.12.4(eslint@9.36.0(jiti@2.6.0))(svelte@5.39.6)(ts-node@10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@24.5.1)(typescript@5.9.2)) - globals: - specifier: ^16.0.0 - version: 16.4.0 - mdsvex: - specifier: ^0.12.3 - version: 0.12.6(svelte@5.39.6) - svelte: - specifier: ^5.0.0 - version: 5.39.6 - svelte-check: - specifier: ^4.0.0 - version: 4.3.2(picomatch@4.0.3)(svelte@5.39.6)(typescript@5.9.2) - tailwindcss: - specifier: ^4.0.0 - version: 4.1.13 + eslint-config-preact: + specifier: ^2.0.0 + version: 2.0.0(eslint@9.36.0(jiti@2.6.0)) typescript: - specifier: ^5.0.0 + specifier: ^5.9.2 version: 5.9.2 - typescript-eslint: - specifier: ^8.20.0 - version: 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) vite: - specifier: ^7.0.0 - version: 7.1.7(@types/node@24.5.1)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + specifier: ^7.0.4 + version: 7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) packages/ckeditor5: dependencies: @@ -852,8 +816,8 @@ importers: version: 46.1.1(bufferutil@4.0.9)(ckeditor5@46.1.1(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41))(utf-8-validate@6.0.5) devDependencies: '@smithy/middleware-retry': - specifier: 4.3.0 - version: 4.3.0 + specifier: 4.3.1 + version: 4.3.1 '@types/jquery': specifier: 3.5.33 version: 3.5.33 @@ -877,7 +841,7 @@ importers: version: 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) '@vitest/browser': specifier: ^3.0.5 - version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(playwright@1.55.1)(utf-8-validate@6.0.5)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.19.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(playwright@1.55.1)(utf-8-validate@6.0.5)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)) '@vitest/coverage-istanbul': specifier: ^3.0.5 version: 3.2.4(vitest@3.2.4) @@ -895,7 +859,7 @@ importers: version: 14.1.1 lint-staged: specifier: ^16.0.0 - version: 16.2.0 + version: 16.2.3 stylelint: specifier: ^16.0.0 version: 16.24.0(typescript@5.9.2) @@ -910,13 +874,13 @@ importers: version: 5.9.2 vite-plugin-svgo: specifier: ~2.0.0 - version: 2.0.0(typescript@5.9.2)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) + version: 2.0.0(typescript@5.9.2)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) vitest: specifier: ^3.0.5 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.6)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.6.0)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.6)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@19.0.1)(jiti@2.6.0)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) webdriverio: specifier: ^9.0.7 - version: 9.19.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) + version: 9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) packages/ckeditor5-footnotes: devDependencies: @@ -937,7 +901,7 @@ importers: version: 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) '@vitest/browser': specifier: ^3.0.5 - version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(playwright@1.55.1)(utf-8-validate@6.0.5)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.19.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(playwright@1.55.1)(utf-8-validate@6.0.5)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)) '@vitest/coverage-istanbul': specifier: ^3.0.5 version: 3.2.4(vitest@3.2.4) @@ -955,7 +919,7 @@ importers: version: 14.1.1 lint-staged: specifier: ^16.0.0 - version: 16.2.0 + version: 16.2.3 stylelint: specifier: ^16.0.0 version: 16.24.0(typescript@5.9.2) @@ -970,13 +934,13 @@ importers: version: 5.9.2 vite-plugin-svgo: specifier: ~2.0.0 - version: 2.0.0(typescript@5.9.2)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) + version: 2.0.0(typescript@5.9.2)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) vitest: specifier: ^3.0.5 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.6)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.6.0)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.6)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@19.0.1)(jiti@2.6.0)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) webdriverio: specifier: ^9.0.7 - version: 9.19.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) + version: 9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) packages/ckeditor5-keyboard-marker: devDependencies: @@ -997,7 +961,7 @@ importers: version: 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) '@vitest/browser': specifier: ^3.0.5 - version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(playwright@1.55.1)(utf-8-validate@6.0.5)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.19.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(playwright@1.55.1)(utf-8-validate@6.0.5)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)) '@vitest/coverage-istanbul': specifier: ^3.0.5 version: 3.2.4(vitest@3.2.4) @@ -1015,7 +979,7 @@ importers: version: 14.1.1 lint-staged: specifier: ^16.0.0 - version: 16.2.0 + version: 16.2.3 stylelint: specifier: ^16.0.0 version: 16.24.0(typescript@5.9.2) @@ -1030,13 +994,13 @@ importers: version: 5.9.2 vite-plugin-svgo: specifier: ~2.0.0 - version: 2.0.0(typescript@5.9.2)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) + version: 2.0.0(typescript@5.9.2)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) vitest: specifier: ^3.0.5 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.6)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.6.0)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.6)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@19.0.1)(jiti@2.6.0)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) webdriverio: specifier: ^9.0.7 - version: 9.19.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) + version: 9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) packages/ckeditor5-math: dependencies: @@ -1064,7 +1028,7 @@ importers: version: 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) '@vitest/browser': specifier: ^3.0.5 - version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(playwright@1.55.1)(utf-8-validate@6.0.5)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.19.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(playwright@1.55.1)(utf-8-validate@6.0.5)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)) '@vitest/coverage-istanbul': specifier: ^3.0.5 version: 3.2.4(vitest@3.2.4) @@ -1082,7 +1046,7 @@ importers: version: 14.1.1 lint-staged: specifier: ^16.0.0 - version: 16.2.0 + version: 16.2.3 stylelint: specifier: ^16.0.0 version: 16.24.0(typescript@5.9.2) @@ -1097,13 +1061,13 @@ importers: version: 5.9.2 vite-plugin-svgo: specifier: ~2.0.0 - version: 2.0.0(typescript@5.9.2)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) + version: 2.0.0(typescript@5.9.2)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) vitest: specifier: ^3.0.5 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.6)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.6.0)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.6)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@19.0.1)(jiti@2.6.0)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) webdriverio: specifier: ^9.0.7 - version: 9.19.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) + version: 9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) packages/ckeditor5-mermaid: dependencies: @@ -1131,7 +1095,7 @@ importers: version: 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) '@vitest/browser': specifier: ^3.0.5 - version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(playwright@1.55.1)(utf-8-validate@6.0.5)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.19.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(playwright@1.55.1)(utf-8-validate@6.0.5)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)) '@vitest/coverage-istanbul': specifier: ^3.0.5 version: 3.2.4(vitest@3.2.4) @@ -1149,7 +1113,7 @@ importers: version: 14.1.1 lint-staged: specifier: ^16.0.0 - version: 16.2.0 + version: 16.2.3 stylelint: specifier: ^16.0.0 version: 16.24.0(typescript@5.9.2) @@ -1164,13 +1128,13 @@ importers: version: 5.9.2 vite-plugin-svgo: specifier: ~2.0.0 - version: 2.0.0(typescript@5.9.2)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) + version: 2.0.0(typescript@5.9.2)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) vitest: specifier: ^3.0.5 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.6)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.6.0)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.6)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@19.0.1)(jiti@2.6.0)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) webdriverio: specifier: ^9.0.7 - version: 9.19.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) + version: 9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) packages/codemirror: dependencies: @@ -1208,89 +1172,89 @@ importers: specifier: 6.5.11 version: 6.5.11 '@codemirror/view': - specifier: 6.38.3 - version: 6.38.3 + specifier: 6.38.4 + version: 6.38.4 '@fsegurai/codemirror-theme-abcdef': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-abyss': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-android-studio': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-andromeda': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-basic-dark': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-basic-light': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-cobalt2': specifier: 6.0.2 - version: 6.0.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1) + version: 6.0.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-forest': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-github-dark': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-github-light': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-gruvbox-dark': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-gruvbox-light': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-material-dark': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-material-light': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-monokai': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-nord': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-palenight': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-solarized-dark': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-solarized-light': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-tokyo-night-day': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-tokyo-night-storm': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-volcano': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-vscode-dark': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-vscode-light': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) '@replit/codemirror-indentation-markers': specifier: 6.5.3 - version: 6.5.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3) + version: 6.5.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4) '@replit/codemirror-lang-nix': specifier: 6.0.1 - version: 6.0.1(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/lr@1.4.2) + version: 6.0.1(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/lr@1.4.2) '@replit/codemirror-vim': specifier: 6.3.0 - version: 6.3.0(@codemirror/commands@6.8.1)(@codemirror/language@6.11.0)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3) + version: 6.3.0(@codemirror/commands@6.8.1)(@codemirror/language@6.11.0)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4) '@ssddanbrown/codemirror-lang-smarty': specifier: 1.0.0 version: 1.0.0 @@ -1390,8 +1354,8 @@ packages: '@antfu/utils@9.2.0': resolution: {integrity: sha512-Oq1d9BGZakE/FyoEtcNeSwM7MpDO2vUBi11RWBZXf75zPsbUVWmUs03EqkRFrcgbXyKTas0BdZWC1wcuSoqSAw==} - '@anthropic-ai/sdk@0.63.1': - resolution: {integrity: sha512-wMA/Xx5GLO+npV992YKUfsmlI6699XG/jFjCPTf/nsMBfUh3e3KmNiOKuhqSMZibOjoLOlhYc7L4pfLPI8A+RA==} + '@anthropic-ai/sdk@0.64.0': + resolution: {integrity: sha512-K2JaWzPiIA4/ghD7bMlyM/4JvM3k7sKdHFmXWAKqqpVL9ee1H7pguRqygxTgK+SrzK86ZMf1x3L+RK4IrDtxjA==} hasBin: true peerDependencies: zod: ^3.25.0 || ^4.0.0 @@ -1554,6 +1518,13 @@ packages: resolution: {integrity: sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==} engines: {node: '>=6.9.0'} + '@babel/eslint-parser@7.28.4': + resolution: {integrity: sha512-Aa+yDiH87980jR6zvRfFuCR1+dLb00vBydhTL+zI992Rz/wQhSvuxjmOOuJOgO3XmakO6RykRGD2S1mq1AtgHA==} + engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} + peerDependencies: + '@babel/core': ^7.11.0 + eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 + '@babel/generator@7.27.0': resolution: {integrity: sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==} engines: {node: '>=6.9.0'} @@ -1623,6 +1594,11 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/plugin-syntax-class-properties@7.12.13': + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-jsx@7.27.1': resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} engines: {node: '>=6.9.0'} @@ -2058,8 +2034,8 @@ packages: '@codemirror/theme-one-dark@6.1.2': resolution: {integrity: sha512-F+sH0X16j/qFLMAfbciKTxVOwkdAS336b7AXTKOZhy8BR3eH/RelsnLgLFINrpST63mmN2OuwUt0W2ndUgYwUA==} - '@codemirror/view@6.38.3': - resolution: {integrity: sha512-x2t87+oqwB1mduiQZ6huIghjMt4uZKFEdj66IcXw7+a5iBEvv9lh7EWDRHI7crnD4BMGpnyq/RzmCGbiEZLcvQ==} + '@codemirror/view@6.38.4': + resolution: {integrity: sha512-hduz0suCcUSC/kM8Fq3A9iLwInJDl8fD1xLpTIk+5xkNm8z/FT7UsIa9sOXrkpChh+XXc18RzswE8QqELsVl+g==} '@cspotcode/source-map-support@0.8.1': resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} @@ -2296,312 +2272,156 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.25.9': - resolution: {integrity: sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - '@esbuild/android-arm64@0.25.10': resolution: {integrity: sha512-LSQa7eDahypv/VO6WKohZGPSJDq5OVOo3UoFR1E4t4Gj1W7zEQMUhI+lo81H+DtB+kP+tDgBp+M4oNCwp6kffg==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.25.9': - resolution: {integrity: sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - '@esbuild/android-arm@0.25.10': resolution: {integrity: sha512-dQAxF1dW1C3zpeCDc5KqIYuZ1tgAdRXNoZP7vkBIRtKZPYe2xVr/d3SkirklCHudW1B45tGiUlz2pUWDfbDD4w==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-arm@0.25.9': - resolution: {integrity: sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - '@esbuild/android-x64@0.25.10': resolution: {integrity: sha512-MiC9CWdPrfhibcXwr39p9ha1x0lZJ9KaVfvzA0Wxwz9ETX4v5CHfF09bx935nHlhi+MxhA63dKRRQLiVgSUtEg==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/android-x64@0.25.9': - resolution: {integrity: sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - '@esbuild/darwin-arm64@0.25.10': resolution: {integrity: sha512-JC74bdXcQEpW9KkV326WpZZjLguSZ3DfS8wrrvPMHgQOIEIG/sPXEN/V8IssoJhbefLRcRqw6RQH2NnpdprtMA==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.25.9': - resolution: {integrity: sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-x64@0.25.10': resolution: {integrity: sha512-tguWg1olF6DGqzws97pKZ8G2L7Ig1vjDmGTwcTuYHbuU6TTjJe5FXbgs5C1BBzHbJ2bo1m3WkQDbWO2PvamRcg==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.25.9': - resolution: {integrity: sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - '@esbuild/freebsd-arm64@0.25.10': resolution: {integrity: sha512-3ZioSQSg1HT2N05YxeJWYR+Libe3bREVSdWhEEgExWaDtyFbbXWb49QgPvFH8u03vUPX10JhJPcz7s9t9+boWg==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.25.9': - resolution: {integrity: sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - '@esbuild/freebsd-x64@0.25.10': resolution: {integrity: sha512-LLgJfHJk014Aa4anGDbh8bmI5Lk+QidDmGzuC2D+vP7mv/GeSN+H39zOf7pN5N8p059FcOfs2bVlrRr4SK9WxA==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.9': - resolution: {integrity: sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - '@esbuild/linux-arm64@0.25.10': resolution: {integrity: sha512-5luJWN6YKBsawd5f9i4+c+geYiVEw20FVW5x0v1kEMWNq8UctFjDiMATBxLvmmHA4bf7F6hTRaJgtghFr9iziQ==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.25.9': - resolution: {integrity: sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - '@esbuild/linux-arm@0.25.10': resolution: {integrity: sha512-oR31GtBTFYCqEBALI9r6WxoU/ZofZl962pouZRTEYECvNF/dtXKku8YXcJkhgK/beU+zedXfIzHijSRapJY3vg==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.25.9': - resolution: {integrity: sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - '@esbuild/linux-ia32@0.25.10': resolution: {integrity: sha512-NrSCx2Kim3EnnWgS4Txn0QGt0Xipoumb6z6sUtl5bOEZIVKhzfyp/Lyw4C1DIYvzeW/5mWYPBFJU3a/8Yr75DQ==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.25.9': - resolution: {integrity: sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - '@esbuild/linux-loong64@0.25.10': resolution: {integrity: sha512-xoSphrd4AZda8+rUDDfD9J6FUMjrkTz8itpTITM4/xgerAZZcFW7Dv+sun7333IfKxGG8gAq+3NbfEMJfiY+Eg==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.25.9': - resolution: {integrity: sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - '@esbuild/linux-mips64el@0.25.10': resolution: {integrity: sha512-ab6eiuCwoMmYDyTnyptoKkVS3k8fy/1Uvq7Dj5czXI6DF2GqD2ToInBI0SHOp5/X1BdZ26RKc5+qjQNGRBelRA==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.25.9': - resolution: {integrity: sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - '@esbuild/linux-ppc64@0.25.10': resolution: {integrity: sha512-NLinzzOgZQsGpsTkEbdJTCanwA5/wozN9dSgEl12haXJBzMTpssebuXR42bthOF3z7zXFWH1AmvWunUCkBE4EA==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.25.9': - resolution: {integrity: sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - '@esbuild/linux-riscv64@0.25.10': resolution: {integrity: sha512-FE557XdZDrtX8NMIeA8LBJX3dC2M8VGXwfrQWU7LB5SLOajfJIxmSdyL/gU1m64Zs9CBKvm4UAuBp5aJ8OgnrA==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.25.9': - resolution: {integrity: sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - '@esbuild/linux-s390x@0.25.10': resolution: {integrity: sha512-3BBSbgzuB9ajLoVZk0mGu+EHlBwkusRmeNYdqmznmMc9zGASFjSsxgkNsqmXugpPk00gJ0JNKh/97nxmjctdew==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.25.9': - resolution: {integrity: sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - '@esbuild/linux-x64@0.25.10': resolution: {integrity: sha512-QSX81KhFoZGwenVyPoberggdW1nrQZSvfVDAIUXr3WqLRZGZqWk/P4T8p2SP+de2Sr5HPcvjhcJzEiulKgnxtA==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.25.9': - resolution: {integrity: sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - '@esbuild/netbsd-arm64@0.25.10': resolution: {integrity: sha512-AKQM3gfYfSW8XRk8DdMCzaLUFB15dTrZfnX8WXQoOUpUBQ+NaAFCP1kPS/ykbbGYz7rxn0WS48/81l9hFl3u4A==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-arm64@0.25.9': - resolution: {integrity: sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - '@esbuild/netbsd-x64@0.25.10': resolution: {integrity: sha512-7RTytDPGU6fek/hWuN9qQpeGPBZFfB4zZgcz2VK2Z5VpdUxEI8JKYsg3JfO0n/Z1E/6l05n0unDCNc4HnhQGig==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.9': - resolution: {integrity: sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - '@esbuild/openbsd-arm64@0.25.10': resolution: {integrity: sha512-5Se0VM9Wtq797YFn+dLimf2Zx6McttsH2olUBsDml+lm0GOCRVebRWUvDtkY4BWYv/3NgzS8b/UM3jQNh5hYyw==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-arm64@0.25.9': - resolution: {integrity: sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - '@esbuild/openbsd-x64@0.25.10': resolution: {integrity: sha512-XkA4frq1TLj4bEMB+2HnI0+4RnjbuGZfet2gs/LNs5Hc7D89ZQBHQ0gL2ND6Lzu1+QVkjp3x1gIcPKzRNP8bXw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.9': - resolution: {integrity: sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - '@esbuild/openharmony-arm64@0.25.10': resolution: {integrity: sha512-AVTSBhTX8Y/Fz6OmIVBip9tJzZEUcY8WLh7I59+upa5/GPhh2/aM6bvOMQySspnCCHvFi79kMtdJS1w0DXAeag==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] - '@esbuild/openharmony-arm64@0.25.9': - resolution: {integrity: sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openharmony] - '@esbuild/sunos-x64@0.25.10': resolution: {integrity: sha512-fswk3XT0Uf2pGJmOpDB7yknqhVkJQkAQOcW/ccVOtfx05LkbWOaRAtn5SaqXypeKQra1QaEa841PgrSL9ubSPQ==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.25.9': - resolution: {integrity: sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - '@esbuild/win32-arm64@0.25.10': resolution: {integrity: sha512-ah+9b59KDTSfpaCg6VdJoOQvKjI33nTaQr4UluQwW7aEwZQsbMCfTmfEO4VyewOxx4RaDT/xCy9ra2GPWmO7Kw==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.25.9': - resolution: {integrity: sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - '@esbuild/win32-ia32@0.25.10': resolution: {integrity: sha512-QHPDbKkrGO8/cz9LKVnJU22HOi4pxZnZhhA2HYHez5Pz4JeffhDjf85E57Oyco163GnzNCVkZK0b/n4Y0UHcSw==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.25.9': - resolution: {integrity: sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - '@esbuild/win32-x64@0.25.10': resolution: {integrity: sha512-9KpxSVFCu0iK1owoez6aC/s/EdUQLDN3adTxGCqxMVhrPDj6bt5dbrHDXUuq+Bs2vATFBBrQS5vdQ/Ed2P+nbw==} engines: {node: '>=18'} cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.25.9': - resolution: {integrity: sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - '@eslint-community/eslint-utils@4.9.0': resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2612,15 +2432,6 @@ packages: resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/compat@1.4.0': - resolution: {integrity: sha512-DEzm5dKeDBPm3r08Ixli/0cmxr8LkRdwxMRUIJBlSCpAwSrvFEJpVBzV+66JhDxiaqKxnRzCXhtiMiczF7Hglg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.40 || 9 - peerDependenciesMeta: - eslint: - optional: true - '@eslint/config-array@0.21.0': resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2637,10 +2448,6 @@ packages: resolution: {integrity: sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.16.0': - resolution: {integrity: sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==} - 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} @@ -2952,17 +2759,6 @@ packages: '@iconify/utils@3.0.1': resolution: {integrity: sha512-A78CUEnFGX8I/WlILxJCuIJXloL0j/OJ9PSchPAfCargEIKmUBWvvEMmKWB5oONwiUqlNt+5eRufdkLxeHIWYw==} - '@inlang/paraglide-js@2.3.2': - resolution: {integrity: sha512-mF7ku1AaXQxa6fnbBczXiEAM7lxhYzaAH7FnDVvAbpzNtgRJESi11KN0bzpCH0YhsKLdimFrQlzjaSVlo9Uh+Q==} - hasBin: true - - '@inlang/recommend-sherlock@0.2.1': - resolution: {integrity: sha512-ckv8HvHy/iTqaVAEKrr+gnl+p3XFNwe5D2+6w6wJk2ORV2XkcRkKOJ/XsTUJbPSiyi4PI+p+T3bqbmNx/rDUlg==} - - '@inlang/sdk@2.4.9': - resolution: {integrity: sha512-cvz/C1rF5WBxzHbEoiBoI6Sz6q6M+TdxfWkEGBYTD77opY8i8WN01prUWXEM87GPF4SZcyIySez9U0Ccm12oFQ==} - engines: {node: '>=18.0.0'} - '@inquirer/ansi@1.0.0': resolution: {integrity: sha512-JWaTfCxI1eTmJ1BIv86vUfjVatOdxwD0DAVKYevY8SazeUUZtW+tNbsdejVO1GYE0GXJW1N1ahmiC3TFd+7wZA==} engines: {node: '>=18'} @@ -3193,9 +2989,6 @@ packages: resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} engines: {node: '>=6.0.0'} - '@jridgewell/remapping@2.3.5': - resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} - '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} @@ -3315,13 +3108,6 @@ packages: peerDependencies: '@inquirer/prompts': '>= 3 < 8' - '@lix-js/sdk@0.4.7': - resolution: {integrity: sha512-pRbW+joG12L0ULfMiWYosIW0plmW4AsUdiPCp+Z8rAsElJ+wJ6in58zhD3UwUcd4BNcpldEGjg6PdA7e0RgsDQ==} - engines: {node: '>=18'} - - '@lix-js/server-protocol-schema@0.1.1': - resolution: {integrity: sha512-jBeALB6prAbtr5q4vTuxnRZZv1M2rKe8iNqRQhFJ4Tv7150unEa0vKyz0hs8Gl3fUGsWaNJBh3J8++fpbrpRBQ==} - '@ljharb/resumer@0.0.1': resolution: {integrity: sha512-skQiAOrCfO7vRTq53cxznMpks7wS1va95UCidALlOVWqvBAzwPVErwizDwoMqNVMEn1mDq0utxZd02eIrvF1lw==} engines: {node: '>= 0.4'} @@ -3386,6 +3172,9 @@ packages: '@marijn/find-cluster-break@1.0.2': resolution: {integrity: sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==} + '@mdn/browser-compat-data@5.7.6': + resolution: {integrity: sha512-7xdrMX0Wk7grrTZQwAoy1GkvPMFoizStUoL+VmtUkAxegbCCec+3FKwOM6yc/uGU5+BEczQHXAlWiqvM8JeENg==} + '@mermaid-js/layout-elk@0.2.0': resolution: {integrity: sha512-vjjYGnCCjYlIA/rR7M//eFi0rHM6dsMyN1JQKfckpt30DTC/esrw36hcrvA2FNPHaqh3Q/SyBWzddyaky8EtUQ==} peerDependencies: @@ -3422,6 +3211,9 @@ packages: '@napi-rs/wasm-runtime@1.0.5': resolution: {integrity: sha512-TBr9Cf9onSAS2LQ2+QHx6XcC6h9+RIzJgbqG3++9TUZSH204AwEy5jg3BTQ0VATsyoGj4ee49tN/y6rvaOOtcg==} + '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': + resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} + '@noble/hashes@1.8.0': resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} engines: {node: ^14.21.3 || >=16} @@ -3672,8 +3464,8 @@ packages: '@protobufjs/utf8@1.1.0': resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - '@puppeteer/browsers@2.10.7': - resolution: {integrity: sha512-wHWLkQWBjHtajZeqCB74nsa/X70KheyOhySYBRmVQDJiNj0zjZR/naPCvdWjMhcG1LmjaMV/9WtTo5mpe8qWLw==} + '@puppeteer/browsers@2.10.10': + resolution: {integrity: sha512-3ZG500+ZeLql8rE0hjfhkycJjDj0pI/btEh3L9IkWUYcOrgP0xCNRq3HbtbqOPbvDhFaAWD88pDFtlLv8ns8gA==} engines: {node: '>=18'} hasBin: true @@ -4399,9 +4191,6 @@ packages: resolution: {integrity: sha512-moXtHH33AobOhTZF8xcX1MpOFqdvfCk7v6+teJL8zymBiDXwEsQH6XG9HGx2VIxnJZNm4cNSzflTLDnQLmIdmw==} engines: {node: ^20.17.0 || >=22.9.0} - '@sinclair/typebox@0.31.28': - resolution: {integrity: sha512-/s55Jujywdw/Jpan+vsy6JZs1z2ZTGxTmbZTPiuSL2wz9mfzA2gN1zzaqmvfi4pq+uOt7Du85fkiwv5ymW84aQ==} - '@sindresorhus/is@4.6.0': resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} engines: {node: '>=10'} @@ -4414,14 +4203,14 @@ packages: resolution: {integrity: sha512-prmU+rDddxHOH0oNcwemL+SwnzcG65sBF2yXRO7aeXIn/xTlq2pX7JLVbkBnVLowHLg4/OL4+jBmv9hVrVGS+w==} engines: {node: '>=18.0.0'} - '@smithy/core@3.11.1': - resolution: {integrity: sha512-REH7crwORgdjSpYs15JBiIWOYjj0hJNC3aCecpJvAlMMaaqL5i2CLb1i6Hc4yevToTKSqslLMI9FKjhugEwALA==} - engines: {node: '>=18.0.0'} - '@smithy/core@3.12.0': resolution: {integrity: sha512-zJeAgogZfbwlPGL93y4Z/XNeIN37YCreRUd6YMIRvaq+6RnBK8PPYYIQ85Is/GglPh3kNImD5riDCXbVSDpCiQ==} engines: {node: '>=18.0.0'} + '@smithy/core@3.13.0': + resolution: {integrity: sha512-BI6ALLPOKnPOU1Cjkc+1TPhOlP3JXSR/UH14JmnaLq41t3ma+IjuXrKfhycVjr5IQ0XxRh2NnQo3olp+eCVrGg==} + engines: {node: '>=18.0.0'} + '@smithy/credential-provider-imds@4.0.6': resolution: {integrity: sha512-hKMWcANhUiNbCJouYkZ9V3+/Qf9pteR1dnwgdyzR09R4ODEYx8BbUysHwRSyex4rZ9zapddZhLFTnT4ZijR4pw==} engines: {node: '>=18.0.0'} @@ -4470,16 +4259,16 @@ packages: resolution: {integrity: sha512-F7gDyfI2BB1Kc+4M6rpuOLne5LOcEknH1n6UQB69qv+HucXBR1rkzXBnQTB2q46sFy1PM/zuSJOB532yc8bg3w==} engines: {node: '>=18.0.0'} - '@smithy/middleware-endpoint@4.2.3': - resolution: {integrity: sha512-+1H5A28DeffRVrqmVmtqtRraEjoaC6JVap3xEQdVoBh2EagCVY7noPmcBcG4y7mnr9AJitR1ZAse2l+tEtK5vg==} - engines: {node: '>=18.0.0'} - '@smithy/middleware-endpoint@4.2.4': resolution: {integrity: sha512-FZ4hzupOmthm8Q8ujYrd0I+/MHwVMuSTdkDtIQE0xVuvJt9pLT6Q+b0p4/t+slDyrpcf+Wj7SN+ZqT5OryaaZg==} engines: {node: '>=18.0.0'} - '@smithy/middleware-retry@4.3.0': - resolution: {integrity: sha512-qhEX9745fAxZvtLM4bQJAVC98elWjiMO2OiHl1s6p7hUzS4QfZO1gXUYNwEK8m0J6NoCD5W52ggWxbIDHI0XSg==} + '@smithy/middleware-endpoint@4.2.5': + resolution: {integrity: sha512-DdOIpssQ5LFev7hV6GX9TMBW5ChTsQBxqgNW1ZGtJNSAi5ksd5klwPwwMY0ejejfEzwXXGqxgVO3cpaod4veiA==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-retry@4.3.1': + resolution: {integrity: sha512-aH2bD1bzb6FB04XBhXA5mgedEZPKx3tD/qBuYCAKt5iieWvWO1Y2j++J9uLqOndXb9Pf/83Xka/YjSnMbcPchA==} engines: {node: '>=18.0.0'} '@smithy/middleware-serde@4.1.1': @@ -4526,14 +4315,14 @@ packages: resolution: {integrity: sha512-d3+U/VpX7a60seHziWnVZOHuEgJlclufjkS6zhXvxcJgkJq4UWdH5eOBLzHRMx6gXjsdT9h6lfpmLzbrdupHgQ==} engines: {node: '>=18.0.0'} - '@smithy/smithy-client@4.6.3': - resolution: {integrity: sha512-K27LqywsaqKz4jusdUQYJh/YP2VbnbdskZ42zG8xfV+eovbTtMc2/ZatLWCfSkW0PDsTUXlpvlaMyu8925HsOw==} - engines: {node: '>=18.0.0'} - '@smithy/smithy-client@4.6.4': resolution: {integrity: sha512-qL7O3VDyfzCSN9r+sdbQXGhaHtrfSJL30En6Jboj0I3bobf2g1/T0eP2L4qxqrEW26gWhJ4THI4ElVVLjYyBHg==} engines: {node: '>=18.0.0'} + '@smithy/smithy-client@4.6.5': + resolution: {integrity: sha512-6J2hhuWu7EjnvLBIGltPCqzNswL1cW/AkaZx6i56qLsQ0ix17IAhmDD9aMmL+6CN9nCJODOXpBTCQS6iKAA7/g==} + engines: {node: '>=18.0.0'} + '@smithy/types@4.5.0': resolution: {integrity: sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg==} engines: {node: '>=18.0.0'} @@ -4613,19 +4402,12 @@ packages: '@socket.io/component-emitter@3.1.2': resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} - '@sqlite.org/sqlite-wasm@3.48.0-build4': - resolution: {integrity: sha512-hI6twvUkzOmyGZhQMza1gpfqErZxXRw6JEsiVjUbo7tFanVD+8Oil0Ih3l2nGzHdxPI41zFmfUQG7GHqhciKZQ==} - hasBin: true - '@ssddanbrown/codemirror-lang-smarty@1.0.0': resolution: {integrity: sha512-F0ut1kmdbT3eORk3xVIKfQsGCZiQdh+6sLayBa0+FTex2gyIQlVQZRRA7bPSlchI3uZtWwNnqGNz5O/QLWRlFg==} '@ssddanbrown/codemirror-lang-twig@1.0.0': resolution: {integrity: sha512-7WIMIh8Ssc54TooGCY57WU2rKEqZZrcV2tZSVRPtd0gKYsrDEKCSLWpQjUWEx7bdgh3NKHUjq1O4ugIzI/+dwQ==} - '@standard-schema/spec@1.0.0': - resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} - '@stylistic/eslint-plugin@4.4.1': resolution: {integrity: sha512-CEigAk7eOLyHvdgmpZsKFwtiqS2wFwI1fn4j09IU9GmD4euFM4jEBAViWeCqaNLlbX2k2+A/Fq9cje4HQBXuJQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4638,44 +4420,6 @@ packages: peerDependencies: stylelint: ^16.8.0 - '@sveltejs/acorn-typescript@1.0.5': - resolution: {integrity: sha512-IwQk4yfwLdibDlrXVE04jTZYlLnwsTT2PIOQQGNLWfjavGifnk1JD1LcZjZaBTRcxZu2FfPfNLOE04DSu9lqtQ==} - peerDependencies: - acorn: ^8.9.0 - - '@sveltejs/adapter-auto@6.1.0': - resolution: {integrity: sha512-shOuLI5D2s+0zTv2ab5M5PqfknXqWbKi+0UwB9yLTRIdzsK1R93JOO8jNhIYSHdW+IYXIYnLniu+JZqXs7h9Wg==} - peerDependencies: - '@sveltejs/kit': ^2.0.0 - - '@sveltejs/kit@2.43.4': - resolution: {integrity: sha512-GfvOq3A/qMRhj2L9eKjxaI8FLqZDh5SY74YzhRKT//u2AvQw96ksEfjuHviC4jg9U08mBVB0Y47EwEJHO4BB4Q==} - engines: {node: '>=18.13'} - hasBin: true - peerDependencies: - '@opentelemetry/api': ^1.0.0 - '@sveltejs/vite-plugin-svelte': ^3.0.0 || ^4.0.0-next.1 || ^5.0.0 || ^6.0.0-next.0 - svelte: ^4.0.0 || ^5.0.0-next.0 - vite: ^5.0.3 || ^6.0.0 || ^7.0.0-beta.0 - peerDependenciesMeta: - '@opentelemetry/api': - optional: true - - '@sveltejs/vite-plugin-svelte-inspector@5.0.1': - resolution: {integrity: sha512-ubWshlMk4bc8mkwWbg6vNvCeT7lGQojE3ijDh3QTR6Zr/R+GXxsGbyH4PExEPpiFmqPhYiVSVmHBjUcVc1JIrA==} - engines: {node: ^20.19 || ^22.12 || >=24} - peerDependencies: - '@sveltejs/vite-plugin-svelte': ^6.0.0-next.0 - svelte: ^5.0.0 - vite: ^6.3.0 || ^7.0.0 - - '@sveltejs/vite-plugin-svelte@6.2.1': - resolution: {integrity: sha512-YZs/OSKOQAQCnJvM/P+F1URotNnYNeU3P2s4oIpzm1uFaqUEqRxUB0g5ejMjEb5Gjb9/PiBI5Ktrq4rUUF8UVQ==} - engines: {node: ^20.19 || ^22.12 || >=24} - peerDependencies: - svelte: ^5.0.0 - vite: ^6.3.0 || ^7.0.0 - '@swc/core-darwin-arm64@1.11.29': resolution: {integrity: sha512-whsCX7URzbuS5aET58c75Dloby3Gtj/ITk2vc4WW6pSDQKSPDuONsIcZ7B2ng8oz0K6ttbi4p3H/PNPQLJ4maQ==} engines: {node: '>=10'} @@ -4761,101 +4505,6 @@ packages: resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} engines: {node: '>=10'} - '@tailwindcss/node@4.1.13': - resolution: {integrity: sha512-eq3ouolC1oEFOAvOMOBAmfCIqZBJuvWvvYWh5h5iOYfe1HFC6+GZ6EIL0JdM3/niGRJmnrOc+8gl9/HGUaaptw==} - - '@tailwindcss/oxide-android-arm64@4.1.13': - resolution: {integrity: sha512-BrpTrVYyejbgGo57yc8ieE+D6VT9GOgnNdmh5Sac6+t0m+v+sKQevpFVpwX3pBrM2qKrQwJ0c5eDbtjouY/+ew==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [android] - - '@tailwindcss/oxide-darwin-arm64@4.1.13': - resolution: {integrity: sha512-YP+Jksc4U0KHcu76UhRDHq9bx4qtBftp9ShK/7UGfq0wpaP96YVnnjFnj3ZFrUAjc5iECzODl/Ts0AN7ZPOANQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - '@tailwindcss/oxide-darwin-x64@4.1.13': - resolution: {integrity: sha512-aAJ3bbwrn/PQHDxCto9sxwQfT30PzyYJFG0u/BWZGeVXi5Hx6uuUOQEI2Fa43qvmUjTRQNZnGqe9t0Zntexeuw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - '@tailwindcss/oxide-freebsd-x64@4.1.13': - resolution: {integrity: sha512-Wt8KvASHwSXhKE/dJLCCWcTSVmBj3xhVhp/aF3RpAhGeZ3sVo7+NTfgiN8Vey/Fi8prRClDs6/f0KXPDTZE6nQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [freebsd] - - '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.13': - resolution: {integrity: sha512-mbVbcAsW3Gkm2MGwA93eLtWrwajz91aXZCNSkGTx/R5eb6KpKD5q8Ueckkh9YNboU8RH7jiv+ol/I7ZyQ9H7Bw==} - engines: {node: '>= 10'} - cpu: [arm] - os: [linux] - - '@tailwindcss/oxide-linux-arm64-gnu@4.1.13': - resolution: {integrity: sha512-wdtfkmpXiwej/yoAkrCP2DNzRXCALq9NVLgLELgLim1QpSfhQM5+ZxQQF8fkOiEpuNoKLp4nKZ6RC4kmeFH0HQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - - '@tailwindcss/oxide-linux-arm64-musl@4.1.13': - resolution: {integrity: sha512-hZQrmtLdhyqzXHB7mkXfq0IYbxegaqTmfa1p9MBj72WPoDD3oNOh1Lnxf6xZLY9C3OV6qiCYkO1i/LrzEdW2mg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - - '@tailwindcss/oxide-linux-x64-gnu@4.1.13': - resolution: {integrity: sha512-uaZTYWxSXyMWDJZNY1Ul7XkJTCBRFZ5Fo6wtjrgBKzZLoJNrG+WderJwAjPzuNZOnmdrVg260DKwXCFtJ/hWRQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - '@tailwindcss/oxide-linux-x64-musl@4.1.13': - resolution: {integrity: sha512-oXiPj5mi4Hdn50v5RdnuuIms0PVPI/EG4fxAfFiIKQh5TgQgX7oSuDWntHW7WNIi/yVLAiS+CRGW4RkoGSSgVQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - '@tailwindcss/oxide-wasm32-wasi@4.1.13': - resolution: {integrity: sha512-+LC2nNtPovtrDwBc/nqnIKYh/W2+R69FA0hgoeOn64BdCX522u19ryLh3Vf3F8W49XBcMIxSe665kwy21FkhvA==} - engines: {node: '>=14.0.0'} - cpu: [wasm32] - bundledDependencies: - - '@napi-rs/wasm-runtime' - - '@emnapi/core' - - '@emnapi/runtime' - - '@tybys/wasm-util' - - '@emnapi/wasi-threads' - - tslib - - '@tailwindcss/oxide-win32-arm64-msvc@4.1.13': - resolution: {integrity: sha512-dziTNeQXtoQ2KBXmrjCxsuPk3F3CQ/yb7ZNZNA+UkNTeiTGgfeh+gH5Pi7mRncVgcPD2xgHvkFCh/MhZWSgyQg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - - '@tailwindcss/oxide-win32-x64-msvc@4.1.13': - resolution: {integrity: sha512-3+LKesjXydTkHk5zXX01b5KMzLV1xl2mcktBJkje7rhFUpUlYJy7IMOLqjIRQncLTa1WZZiFY/foAeB5nmaiTw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - - '@tailwindcss/oxide@4.1.13': - resolution: {integrity: sha512-CPgsM1IpGRa880sMbYmG1s4xhAy3xEt1QULgTJGQmZUeNgXFR7s1YxYygmJyBGtou4SyEosGAGEeYqY7R53bIA==} - engines: {node: '>= 10'} - - '@tailwindcss/typography@0.5.19': - resolution: {integrity: sha512-w31dd8HOx3k9vPtcQh5QHP9GwKcgbMp87j58qi6xgiBnFFtKEAgCWnDw4qUT8aHwkCp8bKvb/KGKWWHedP0AAg==} - peerDependencies: - tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1' - - '@tailwindcss/vite@4.1.13': - resolution: {integrity: sha512-0PmqLQ010N58SbMTJ7BVJ4I2xopiQn/5i6nlb4JmxzQf8zcS5+m2Cv6tqh+sfDwtIdjoEnOvwsGQ1hkUi8QEHQ==} - peerDependencies: - vite: ^5.2.0 || ^6 || ^7 - '@testing-library/dom@10.4.0': resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} engines: {node: '>=18'} @@ -5154,9 +4803,6 @@ packages: '@types/js-yaml@4.0.9': resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} - '@types/jsdom@21.1.7': - resolution: {integrity: sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==} - '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -5220,11 +4866,8 @@ packages: '@types/node@16.9.1': resolution: {integrity: sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==} - '@types/node@20.17.32': - resolution: {integrity: sha512-zeMXFn8zQ+UkjK4ws0RiOC9EWByyW1CcVmLe+2rQocXRsGEDxUCwPEIVgpsGcLHS/P8JkT0oa3839BRABS0oPw==} - - '@types/node@20.19.11': - resolution: {integrity: sha512-uug3FEEGv0r+jrecvUUpbY8lLisvIjg6AAic6a2bSP5OEOLeJsDSnvhCDov7ipFFMXS3orMpzlmi0ZcuGkBbow==} + '@types/node@20.19.17': + resolution: {integrity: sha512-gfehUI8N1z92kygssiuWvLiwcbOB3IRktR6hTDgJlXMYh5OvkPSRmgfoBUmfZt+vhwJtX7v1Yw4KvvAf7c5QKQ==} '@types/node@22.15.21': resolution: {integrity: sha512-EV/37Td6c+MgKAbkcLG6vqZ2zEYHD7bvSrzqqs2RIhbA6w3x+Dqz8MZM3sP6kGTeLrdoOgKZe+Xja7tUB2DNkQ==} @@ -5235,8 +4878,8 @@ packages: '@types/node@22.18.6': resolution: {integrity: sha512-r8uszLPpeIWbNKtvWRt/DbVi5zbqZyj1PTmhRMqBMvDnaz1QpmSKujUtJLrqGZeoM8v72MfYggDceY4K1itzWQ==} - '@types/node@24.5.1': - resolution: {integrity: sha512-/SQdmUP2xa+1rdx7VwB9yPq8PaKej8TD5cQ+XfKDPWWC+VDJU4rvVVagXqKUzhKjtFoNA8rXDJAkCxQPAe00+Q==} + '@types/node@24.5.2': + resolution: {integrity: sha512-FYxk1I7wPv3K2XBaoyH2cTnocQEu8AOZ60hPbsyukMPLv5/5qr7V1i8PLHdl6Zf87I+xZXFvPCXYjiTFq+YSDQ==} '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -5614,8 +5257,8 @@ packages: '@vue/shared@3.5.14': resolution: {integrity: sha512-oXTwNxVfc9EtP1zzXAlSlgARLXNC84frFYkS0HHz0h3E4WZSP9sywqjqzGCP9Y34M8ipNmd380pVgmMuwELDyQ==} - '@wdio/config@9.19.2': - resolution: {integrity: sha512-OVCzPQxav0QDk5rktQ6LYARZ5ueUuJXIqTXUpS3A9Jt6PF+ZUI5sbO/y+z+qHQXqDq+LkscmFsmkzgnoHzHcfg==} + '@wdio/config@9.20.0': + resolution: {integrity: sha512-ggwd3EMsVj/LTcbYw2h+hma+/7fQ1cTXMuy9B5WTkLjDlOtbLjsqs9QLt4BLIo1cdsxvAw/UVpRVUuYy7rTmtQ==} engines: {node: '>=18.20.0'} '@wdio/logger@9.18.0': @@ -5629,12 +5272,12 @@ packages: resolution: {integrity: sha512-FLTF0VL6+o5BSTCO7yLSXocm3kUnu31zYwzdsz4n9s5YWt83sCtzGZlZpt7TaTzb3jVUfxuHNQDTb8UMkCu0lQ==} engines: {node: '>=18.20.0'} - '@wdio/types@9.19.2': - resolution: {integrity: sha512-fBI7ljL+YcPXSXUhdk2+zVuz7IYP1aDMTq1eVmMme9GY0y67t0dCNPOt6xkCAEdL5dOcV6D2L1r6Cf/M2ifTvQ==} + '@wdio/types@9.20.0': + resolution: {integrity: sha512-zMmAtse2UMCSOW76mvK3OejauAdcFGuKopNRH7crI0gwKTZtvV89yXWRziz9cVXpFgfmJCjf9edxKFWdhuF5yw==} engines: {node: '>=18.20.0'} - '@wdio/utils@9.19.2': - resolution: {integrity: sha512-caimJiTsxDUfXn/gRAzcYTO3RydSl7XzD+QpjfWZYJjzr8a2XfNnj+Vdmr8gG4BSkiVHirW9mFCZeQp2eTD7rA==} + '@wdio/utils@9.20.0': + resolution: {integrity: sha512-T1ze005kncUTocYImSBQc/FAVcOwP/vOU4MDJFgzz/RTcps600qcKX98sVdWM5/ukXCVkjOufWteDHIbX5/tEA==} engines: {node: '>=18.20.0'} '@webassemblyjs/ast@1.14.1': @@ -5695,8 +5338,8 @@ packages: '@xtuc/long@4.2.2': resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - '@zip.js/zip.js@2.7.72': - resolution: {integrity: sha512-3/A4JwrgkvGBlCxtItjxs8HrNbuTAAl/zlGkV6tC5Fb5k5nk4x2Dqxwl/YnUys5Ch+QB01eJ8Q5K/J2uXfy9Vw==} + '@zip.js/zip.js@2.8.2': + resolution: {integrity: sha512-PI6UdgpSeVoGvzguKHmy2bwOqI3UYkntLZOCpyJSKIi7234c5aJmQYkJB/P4P2YUJkqhbqvu7iM2/0eJZ178nA==} engines: {bun: '>=0.7.0', deno: '>=1.0.0', node: '>=16.5.0'} abab@2.0.6: @@ -5896,8 +5539,8 @@ packages: resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} - ansis@4.1.0: - resolution: {integrity: sha512-BGcItUBWSMRgOCe+SVZJ+S7yTRG0eGt9cXAHev72yuGcY23hnLA7Bky5L/xLyPINoSN95geovfBkqoTlNZYa7w==} + ansis@4.2.0: + resolution: {integrity: sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==} engines: {node: '>=14'} any-base@1.1.0: @@ -5959,17 +5602,34 @@ packages: array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - array-timsort@1.0.3: - resolution: {integrity: sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==} + array-includes@3.1.9: + resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} + engines: {node: '>= 0.4'} array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} + array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} + + array.prototype.flat@1.3.3: + resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} + engines: {node: '>= 0.4'} + + array.prototype.flatmap@1.3.3: + resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} + engines: {node: '>= 0.4'} + array.prototype.reduce@1.0.8: resolution: {integrity: sha512-DwuEqgXFBwbmZSRqt3BpQigWNUoqw9Ml2dTWdF3B2zQlQX4OeUE0zyuzX0fX0IbTvjdkZbcBTU3idgpO78qkTw==} engines: {node: '>= 0.4'} + array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.4'} + arraybuffer.prototype.slice@1.0.4: resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} engines: {node: '>= 0.4'} @@ -5981,6 +5641,9 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} + ast-metadata-inferer@0.8.1: + resolution: {integrity: sha512-ht3Dm6Zr7SXv6t1Ra6gFo0+kLDglHGrEbYihTkcycrbHw7WCcuhBzPlJYHEsIpycaUwzsJHje+vUcxXUX4ztTA==} + ast-types@0.13.4: resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} engines: {node: '>=4'} @@ -6034,17 +5697,9 @@ packages: axios@1.12.2: resolution: {integrity: sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==} - axobject-query@4.1.0: - resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} - engines: {node: '>= 0.4'} - b4a@1.6.7: resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==} - babel-plugin-macros@3.1.0: - resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} - engines: {node: '>=10', npm: '>=6'} - babel-plugin-transform-hook-names@1.0.2: resolution: {integrity: sha512-5gafyjyyBTTdX/tQQ0hRgu4AhNHG/hqWi0ZZmg2xvs2FgRkJXzDNKBZCyoYqgFkovfDrgM8OoKg8karoUvWeCw==} peerDependencies: @@ -6065,6 +5720,9 @@ packages: bare-events@2.6.0: resolution: {integrity: sha512-EKZ5BTXYExaNqi3I3f9RtEsaI/xBSGjE0XZCZilPzFAV/goswFHuPd9jEZlPIZ/iNZJwDSao9qRiScySz7MbQg==} + bare-events@2.7.0: + resolution: {integrity: sha512-b3N5eTW1g7vXkw+0CXh/HazGTcO5KYuu/RCNaJbDMPI6LHDi+7qe8EmxKUVe1sUbY2KZOVZFyj62x0OEz9qyAA==} + bare-fs@4.1.6: resolution: {integrity: sha512-25RsLF33BqooOEFNdMcEhMpJy8EoR88zSMrnOQOaM3USnOK2VmaJ1uaQEwPA6AQjrv1lXChScosN6CzbwbO9OQ==} engines: {bare: '>=1.16.0'} @@ -6074,6 +5732,15 @@ packages: bare-buffer: optional: true + bare-fs@4.4.5: + resolution: {integrity: sha512-TCtu93KGLu6/aiGWzMr12TmSRS6nKdfhAnzTQRbXoSWxkbb9eRd53jQ51jG7g1gYjjtto3hbBrrhzg6djcgiKg==} + engines: {bare: '>=1.16.0'} + peerDependencies: + bare-buffer: '*' + peerDependenciesMeta: + bare-buffer: + optional: true + bare-os@3.6.1: resolution: {integrity: sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==} engines: {bare: '>=1.14.0'} @@ -6092,6 +5759,20 @@ packages: bare-events: optional: true + bare-stream@2.7.0: + resolution: {integrity: sha512-oyXQNicV1y8nc2aKffH+BUHFRXmx6VrPzlnaEvMhram0nPBrKcEdcyBg5r08D0i8VxngHFAiVyn1QKXpSG0B8A==} + peerDependencies: + bare-buffer: '*' + bare-events: '*' + peerDependenciesMeta: + bare-buffer: + optional: true + bare-events: + optional: true + + bare-url@2.2.2: + resolution: {integrity: sha512-g+ueNGKkrjMazDG3elZO1pNs3HY5+mMmOet1jtKyhOaCnkLzitxf26z7hoAEkDNgdNmnc1KIlt/dw6Po6xZMpA==} + base32-encode@1.2.0: resolution: {integrity: sha512-cHFU8XeRyx0GgmoWi5qHMCVRiqU6J3MHWxVgun7jggCBUpVzm1Ir7M9dYr2whjSNc3tFeXfQ/oZjQu/4u55h9A==} @@ -6504,10 +6185,6 @@ packages: resolution: {integrity: sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==} engines: {node: '>=6'} - clsx@2.1.1: - resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} - engines: {node: '>=6'} - codemirror-lang-elixir@4.0.0: resolution: {integrity: sha512-mzFesxo/t6KOxwnkqVd34R/q7yk+sMtHh6vUKGAvjwHmpL7bERHB+vQAsmU/nqrndkwVeJEHWGw/z/ybfdiudA==} @@ -6603,10 +6280,6 @@ packages: resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} engines: {node: ^12.20.0 || >=14} - comment-json@4.2.5: - resolution: {integrity: sha512-bKw/r35jR3HGt5PEPm1ljsQQGyCrR8sFGNiN5L+ykDHdpO8Smxkrkla9Yi6NkQyUrb8V54PGhfMs6NrIwtxtdw==} - engines: {node: '>= 6'} - comment-parser@1.4.1: resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} engines: {node: '>= 12.0.0'} @@ -6657,10 +6330,6 @@ packages: resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} engines: {node: '>=0.8'} - consola@3.4.0: - resolution: {integrity: sha512-EiPU8G6dQG0GFHNR8ljnZFki/8a+cQwEQ+7wpxdChl02Q8HXlwEZWD5lqAF8vC2sEC3Tehr8hy7vErz88LHyUA==} - engines: {node: ^14.18.0 || >=16.10.0} - console-control-strings@1.1.0: resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} @@ -6701,10 +6370,6 @@ packages: resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} engines: {node: '>= 0.6'} - cookie@1.0.2: - resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} - engines: {node: '>=18'} - cookiejar@2.1.4: resolution: {integrity: sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==} @@ -7242,14 +6907,6 @@ packages: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} - dedent@1.5.1: - resolution: {integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==} - peerDependencies: - babel-plugin-macros: ^3.1.0 - peerDependenciesMeta: - babel-plugin-macros: - optional: true - deep-eql@5.0.2: resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} @@ -7352,6 +7009,10 @@ packages: resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} engines: {node: '>=8'} + detect-libc@2.1.1: + resolution: {integrity: sha512-ecqj/sy1jcK1uWrwpR67UhYrIFQ+5WlGxth34WquCbamhFA6hkkwiu37o6J5xCHdo1oixJRfVRw+ywV+Hq/0Aw==} + engines: {node: '>=8'} + detect-node-es@1.1.0: resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} @@ -7367,9 +7028,6 @@ packages: detect-touch-events@2.0.2: resolution: {integrity: sha512-g8GWBkJLiIDRJfRXEdrd1wMXpNyGId2DkbfuwFahSb4OCvn717hyRJtAcEDISfp3zkwEhZ4Y4woHPA6DeyB3Fw==} - devalue@5.3.2: - resolution: {integrity: sha512-UDsjUbpQn9kvm68slnrs+mfxwFkIflOhkanmyabZ8zOYk8SMEIbJ3TK+88g70hSIeytu4y18f0z/hYHMTrXIWw==} - devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} @@ -7403,6 +7061,10 @@ packages: resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} engines: {node: '>=6'} + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + doctrine@3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} @@ -7542,8 +7204,8 @@ packages: resolution: {integrity: sha512-bO3y10YikuUwUuDUQRM4KfwNkKhnpVO7IPdbsrejwN9/AABJzzTQ4GeHwyzNSrVO+tEH3/Np255a3sVZpZDjvg==} engines: {node: '>=8.0.0'} - electron@38.1.2: - resolution: {integrity: sha512-WXUcN3W8h8NTTZViA3KNX0rV2YBU0X0mEUM3ubupXTDY4QtIN7tmiqYVOKSKpR2LckTmBWGuEeY4D6xVoffwKQ==} + electron@38.2.0: + resolution: {integrity: sha512-Cw5Mb+N5NxsG0Hc1qr8I65Kt5APRrbgTtEEn3zTod30UNJRnAE1xbGk/1NOaDn3ODzI/MYn6BzT9T9zreP7xWA==} engines: {node: '>= 12.20.55'} hasBin: true @@ -7636,6 +7298,10 @@ packages: resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==} engines: {node: '>= 0.4'} + es-abstract@1.24.0: + resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==} + engines: {node: '>= 0.4'} + es-array-method-boxes-properly@1.0.0: resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} @@ -7647,6 +7313,10 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} + es-iterator-helpers@1.2.1: + resolution: {integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==} + engines: {node: '>= 0.4'} + es-module-lexer@1.7.0: resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} @@ -7658,6 +7328,10 @@ packages: resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} engines: {node: '>= 0.4'} + es-shim-unscopables@1.1.0: + resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} + engines: {node: '>= 0.4'} + es-to-primitive@1.3.0: resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} engines: {node: '>= 0.4'} @@ -7690,11 +7364,6 @@ packages: engines: {node: '>=18'} hasBin: true - esbuild@0.25.9: - resolution: {integrity: sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==} - engines: {node: '>=18'} - hasBin: true - escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -7729,6 +7398,11 @@ packages: eslint: ^9.0.0 typescript: ^5.0.0 + eslint-config-preact@2.0.0: + resolution: {integrity: sha512-TFj70lEE7y3R9DQAFJ/clRfVmyaXdwE3q56gA9zm+iTmlpYjtZKtV1jv/jtgdF2LqgvJjlGlGE1rHVwE9yNdkg==} + peerDependencies: + eslint: ^8.57.1 || ^9.0.0 + eslint-config-prettier@10.1.8: resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==} hasBin: true @@ -7741,6 +7415,12 @@ packages: eslint-plugin-ckeditor5-rules@12.1.1: resolution: {integrity: sha512-e0PhbA3sNWy4Djs6r+kVfWNvu6urJXucIUfqI2GKjgOfqYOhmpLNaudH6FHKAg/OM8g0ETb7TbG3Bc375ru+sg==} + eslint-plugin-compat@6.0.2: + resolution: {integrity: sha512-1ME+YfJjmOz1blH0nPZpHgjMGK4kjgEeoYqGCqoBPQ/mGu/dJzdoP0f1C8H2jcWZjzhZjAMccbM/VdXhPORIfA==} + engines: {node: '>=18.x'} + peerDependencies: + eslint: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + eslint-plugin-mocha@11.1.0: resolution: {integrity: sha512-rKntVWRsQFPbf8OkSgVNRVRrcVAPaGTyEgWCEyXaPDJkTl0v5/lwu1vTk5sWiUJU8l2sxwvGUZzSNrEKdVMeQw==} peerDependencies: @@ -7758,15 +7438,11 @@ packages: peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 - eslint-plugin-svelte@3.12.4: - resolution: {integrity: sha512-hD7wPe+vrPgx3U2X2b/wyTMtWobm660PygMGKrWWYTc9lvtY8DpNFDaU2CJQn1szLjGbn/aJ3g8WiXuKakrEkw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-plugin-react@7.37.5: + resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==} + engines: {node: '>=4'} peerDependencies: - eslint: ^8.57.1 || ^9.0.0 - svelte: ^3.37.0 || ^4.0.0 || ^5.0.0 - peerDependenciesMeta: - svelte: - optional: true + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} @@ -7776,6 +7452,10 @@ packages: resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-visitor-keys@2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -7794,9 +7474,6 @@ packages: jiti: optional: true - esm-env@1.2.2: - resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==} - espree@10.4.0: resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -7814,9 +7491,6 @@ packages: resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} engines: {node: '>=0.10'} - esrap@2.1.0: - resolution: {integrity: sha512-yzmPNpl7TBbMRC5Lj2JlJZNPml0tzqoqP5B1JXycNUwtqma9AKCO0M2wHrdgsHcy1WRW7S9rJknAMtByg3usgA==} - esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} @@ -7856,6 +7530,9 @@ packages: eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + events-universal@1.0.1: + resolution: {integrity: sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==} + events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} @@ -8466,8 +8143,8 @@ packages: handle-thing@2.0.1: resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} - happy-dom@18.0.1: - resolution: {integrity: sha512-qn+rKOW7KWpVTtgIUi6RVmTBZJSe2k0Db0vh1f7CWrWclkkc7/Q+FrOfkZIb2eiErLyqu5AXEzE7XthO9JVxRA==} + happy-dom@19.0.1: + resolution: {integrity: sha512-Rr1H/mvgdCGoIq+jjaGxE/y+ZB+O2DhUBXk9vqoRVc5zsZ/Ne6Fssb8fXaAjPFh3Ajmbx+kfDDf946PHiUbC6Q==} engines: {node: '>=20.0.0'} has-bigints@1.1.0: @@ -8482,10 +8159,6 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - has-own-prop@2.0.0: - resolution: {integrity: sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==} - engines: {node: '>=8'} - has-property-descriptors@1.0.2: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} @@ -8708,10 +8381,6 @@ packages: resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} - human-id@4.1.1: - resolution: {integrity: sha512-3gKm/gCSUipeLsRYZbbdA1BD83lBoWUkZ7G9VFrhWPAU76KwYo5KR8V28bpoPm/ygy0x5/GCbpRQdY7VLYCoIg==} - hasBin: true - human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} @@ -8806,8 +8475,8 @@ packages: resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} engines: {node: '>=8'} - import-meta-resolve@4.1.0: - resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} + import-meta-resolve@4.2.0: + resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} imul@1.0.1: resolution: {integrity: sha512-WFAgfwPLAjU66EKt6vRdTlKj4nAgIDQzh29JonLa4Bqtl6D8JrIMvWjCnx7xEjVNmP3U0fM5o8ZObk7d0f62bA==} @@ -9007,6 +8676,10 @@ packages: is-my-json-valid@2.20.6: resolution: {integrity: sha512-1JQwulVNjx8UqkPE/bqDaxtH4PXCe/2VRh/y3p99heOV87HG4Id5/VfDswd+YiAfHcRTfDlWgISycnHuhZq1aw==} + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + is-network-error@1.2.0: resolution: {integrity: sha512-32jdpRpJo8SeL7zOuBJbMLz/VTw9mDpTvcKzzR8DkXWsJbbE60gdiX8YOd0UAV6b8Skt+CMytzfgVVIRFidn0Q==} engines: {node: '>=16'} @@ -9062,9 +8735,6 @@ packages: is-reference@1.2.1: resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} - is-reference@3.0.3: - resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} - is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} @@ -9168,6 +8838,10 @@ packages: resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} engines: {node: '>=8'} + iterator.prototype@1.1.5: + resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} + engines: {node: '>= 0.4'} + jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} @@ -9241,9 +8915,6 @@ packages: jquery@3.7.1: resolution: {integrity: sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==} - js-sha256@0.11.1: - resolution: {integrity: sha512-o6WSo/LUvY2uC4j7mO50a2ms7E/EAdbP0swigLV+nzHKTTaYnaLIWJ02VdXrsJX0vGedDESQnLsOekr94ryfjg==} - js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -9343,6 +9014,10 @@ packages: jsplumb@2.15.6: resolution: {integrity: sha512-sIpbpz5eMVM+vV+MQzFCidlaa1RsknrQs6LOTKYDjYUDdTAi2AN2bFi94TxB33TifcIsRNV1jebcaxg0tCoPzg==} + jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + jszip@3.10.1: resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} @@ -9384,10 +9059,6 @@ packages: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} - kleur@4.1.5: - resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} - engines: {node: '>=6'} - klona@2.0.6: resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} engines: {node: '>= 8'} @@ -9401,10 +9072,6 @@ packages: kolorist@1.8.0: resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} - kysely@0.27.6: - resolution: {integrity: sha512-FIyV/64EkKhJmjgC0g2hygpBv5RNWVPyNCqSAD7eTCv6eFWNIi4PN1UvdSJGicN/o35bnevgis4Y0UDC0qi8jQ==} - engines: {node: '>=14.0.0'} - langium@3.3.1: resolution: {integrity: sha512-QJv/h939gDpvT+9SiLVlY7tZC3xB2qK57v0J04Sh9wpMb6MP1q8gB21L3WIo8T5P1MSMg3Ep14L7KkDCFG3y4w==} engines: {node: '>=16.0.0'} @@ -9521,8 +9188,8 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - lint-staged@16.2.0: - resolution: {integrity: sha512-spdYSOCQ2MdZ9CM1/bu/kDmaYGsrpNOeu1InFFV8uhv14x6YIubGxbCpSmGILFoxkiheNQPDXSg5Sbb5ZuVnug==} + lint-staged@16.2.3: + resolution: {integrity: sha512-1OnJEESB9zZqsp61XHH2fvpS1es3hRCxMplF/AJUDa8Ho8VrscYDIuxGrj3m8KPXbcWZ8fT9XTMUhEQmOVKpKw==} engines: {node: '>=20.17'} hasBin: true @@ -9553,9 +9220,6 @@ packages: locate-app@2.5.0: resolution: {integrity: sha512-xIqbzPMBYArJRmPGUZD9CzV9wOqmVtQnaAn3wrj3s6WYW0bQvPI7x+sPYUGmDTYMHefVK//zc6HEYZ1qnxIK+Q==} - locate-character@3.0.0: - resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} - locate-path@2.0.0: resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} engines: {node: '>=4'} @@ -9693,9 +9357,6 @@ packages: magic-string@0.30.18: resolution: {integrity: sha512-yi8swmWbO17qHhwIBNeeZxTceJMeBvWJaId6dyvTSOwTipqeHhMhOrz6513r1sOKnpvQ7zkhlG8tPrpilwTxHQ==} - magic-string@0.30.19: - resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==} - magicast@0.3.5: resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} @@ -9818,11 +9479,6 @@ packages: mdn-data@2.12.2: resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} - mdsvex@0.12.6: - resolution: {integrity: sha512-pupx2gzWh3hDtm/iDW4WuCpljmyHbHi34r7ktOqpPGvyiM4MyfNgdJ3qMizXdgCErmvYC9Nn/qyjePy+4ss9Wg==} - peerDependencies: - svelte: ^3.56.0 || ^4.0.0 || ^5.0.0-next.120 - media-typer@0.3.0: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} @@ -10137,10 +9793,6 @@ packages: resolution: {integrity: sha512-2emPTb1reeLLYwHxyVx993iYyCHEiRRO+y8NFXFPL5kl5q14sgTK76cXyEKkeKCHeRw35SfdkUJ10Q1KfHuiIQ==} engines: {node: '>= 0.4'} - mri@1.2.0: - resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} - engines: {node: '>=4'} - mrmime@2.0.1: resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} engines: {node: '>=10'} @@ -10307,6 +9959,9 @@ packages: node-html-parser@6.1.13: resolution: {integrity: sha512-qIsTMOY4C/dAa5Q5vsobRpOOvPfC4pB61UVW2uSwZNUp0QU/jCekTal1vMmbO0DgdHeLUJpv/ARmDqErVxA3Sg==} + node-html-parser@7.0.1: + resolution: {integrity: sha512-KGtmPY2kS0thCWGK0VuPyOS+pBKhhe8gXztzA2ilAOhbUbxa9homF1bOyKvhGzMLXUoRds9IOmr/v5lr/lqNmA==} + node-releases@2.0.19: resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} @@ -10427,10 +10082,22 @@ packages: resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} engines: {node: '>= 0.4'} + object.entries@1.1.9: + resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + object.getownpropertydescriptors@2.1.8: resolution: {integrity: sha512-qkHIGe4q0lSYMv0XI4SsBTJz3WaURhLvd0lKSgtVuOsJ2krg4SgMw3PIRQFMp07yi++UR3se2mkcLqsBNpBb/A==} engines: {node: '>= 0.8'} + object.values@1.2.1: + resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} + engines: {node: '>= 0.4'} + obuf@1.1.2: resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} @@ -11048,18 +10715,6 @@ packages: peerDependencies: postcss: ^8.4.21 - postcss-load-config@3.1.4: - resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} - engines: {node: '>= 10'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - postcss-loader@4.3.0: resolution: {integrity: sha512-M/dSoIiNDOo8Rk0mUqoj4kpGq91gcxCfb9PoyZVdZ76/AuhxylHDYZblNE8o+EQ9AMSASeMFEKxZf5aU6wlx1Q==} engines: {node: '>= 10.13.0'} @@ -11569,16 +11224,6 @@ packages: peerDependencies: postcss: ^8.4.31 - postcss-scss@4.0.9: - resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.4.29 - - postcss-selector-parser@6.0.10: - resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} - engines: {node: '>=4'} - postcss-selector-parser@6.1.2: resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} engines: {node: '>=4'} @@ -11660,6 +11305,17 @@ packages: potpack@2.1.0: resolution: {integrity: sha512-pcaShQc1Shq0y+E7GqJqvZj8DTthWV1KeHGdi0Z6IAin2Oi3JnLCOfwnCo84qc+HAp52wT9nK9H7FAJp5a44GQ==} + preact-iso@2.11.0: + resolution: {integrity: sha512-oThWJQcgcnaWh6UKy1qrBkxIWp5CkqvnHiFdLiDUxfNkGdpQ5veGQw9wOVS0NDp7X8xo98wxE4wng5jLv1e9Ug==} + peerDependencies: + preact: 10.27.2 + preact-render-to-string: '>=6.4.0' + + preact-render-to-string@6.6.1: + resolution: {integrity: sha512-IIMfXRjmbSP9QmG18WJLQa4Z4yx3J0VC9QN5q9z2XYlWSzFlJ+bSm/AyLyyV/YFwjof1OXFX2Mz6Ao60LXudJg==} + peerDependencies: + preact: 10.27.2 + preact@10.27.2: resolution: {integrity: sha512-5SYSgFKSyhCbk6SrXyMpqjb5+MQBgfvEKE/OC+PujcY34sOpqtr+0AZQtPYx5IA6VxynQ7rUPCtKzyovpj9Bpg==} @@ -11676,13 +11332,6 @@ packages: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - prism-svelte@0.4.7: - resolution: {integrity: sha512-yABh19CYbM24V7aS7TuPYRNMqthxwbvx6FF/Rw920YbyBWO3tnyPIqRMgHuSVsLmuHkkBS1Akyof463FVdkeDQ==} - - prismjs@1.30.0: - resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} - engines: {node: '>=6'} - proc-log@2.0.1: resolution: {integrity: sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -11845,10 +11494,10 @@ packages: peerDependencies: react: ^19.1.0 - react-i18next@15.7.3: - resolution: {integrity: sha512-AANws4tOE+QSq/IeMF/ncoHlMNZaVLxpa5uUGW1wjike68elVYr0018L9xYoqBr1OFO7G7boDPrbn0HpMCJxTw==} + react-i18next@16.0.0: + resolution: {integrity: sha512-JQ+dFfLnFSKJQt7W01lJHWRC0SX7eDPobI+MSTJ3/gP39xH2g33AuTE7iddAfXYHamJdAeMGM0VFboPaD3G68Q==} peerDependencies: - i18next: '>= 25.4.1' + i18next: '>= 25.5.2' react: '>= 16.8.0' react-dom: '*' react-native: '*' @@ -12059,6 +11708,10 @@ packages: engines: {node: '>= 0.4'} hasBin: true + resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true + responselike@2.0.1: resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} @@ -12125,8 +11778,8 @@ packages: resolution: {integrity: sha512-EsoOi8moHN6CAYyTZipxDDVTJn0j2nBCWor4wRU45RQ8ER2qREDykXLr3Ulz6hBh6oBKCFTQIjo21i0FXNo/IA==} hasBin: true - rollup-plugin-stats@1.5.0: - resolution: {integrity: sha512-TsWaV7ulwPA9JhqGJemrDJkvXNeNQb60lB13gIcT2kVDXlBM/PQD3GqVyhCJpvn43Y4YT5+VmWDRsbIAbuilBA==} + rollup-plugin-stats@1.5.1: + resolution: {integrity: sha512-WXx9F3i57DLKkB8mt6Zw3jN9sS8YOqTsfvuOG8RW0D95Wn5KHt2e9POh8sYWODgmTsiKK0Nm54ZjxLnp7yeCDw==} engines: {node: '>=18'} peerDependencies: rolldown: ^1.0.0-beta.0 @@ -12152,8 +11805,8 @@ packages: peerDependencies: rollup: ^3.0.0||^4.0.0 - rollup-plugin-webpack-stats@2.1.4: - resolution: {integrity: sha512-kv9W0rK9Qy1Q8/vkxEPGOwJvq7zVERnHD13At5Jv15FPPOXwxm1LblXtpuASeoM1ALhOPD0sJSDz64qgtSgh7g==} + rollup-plugin-webpack-stats@2.1.5: + resolution: {integrity: sha512-dUYAd/7B7zNxosBQFK0xa2uNeBS1ESoWo8cYYeRX9kYYkI9ciHIBf2jGwAOQNg0V2KJjMmwkJEvqXfE1MColjg==} engines: {node: '>=18'} peerDependencies: rolldown: ^1.0.0-beta.0 @@ -12198,10 +11851,6 @@ packages: rxjs@7.8.2: resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} - sade@1.8.1: - resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} - engines: {node: '>=6'} - safaridriver@1.0.0: resolution: {integrity: sha512-J92IFbskyo7OYB3Dt4aTdyhag1GlInrfbPCmMteb7aBK7PwlnGz1HI0+oyNN97j7pV9DqUAVoVgkNRMrfY47mQ==} engines: {node: '>=18.0.0'} @@ -12463,9 +12112,6 @@ packages: set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - set-cookie-parser@2.7.1: - resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} - set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} @@ -12569,10 +12215,6 @@ packages: resolution: {integrity: sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==} engines: {node: '>=18'} - sirv@3.0.2: - resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==} - engines: {node: '>=18'} - slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -12626,10 +12268,6 @@ packages: resolution: {integrity: sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==} engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} - socks@2.8.5: - resolution: {integrity: sha512-iF+tNDQla22geJdTyJB1wM/qrX9DMRwWrciEPwWLPRWAUEM8sQiyxgckLxWT1f7+9VabJS0jTGGr4QgBuvi6Ww==} - engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} - socks@2.8.7: resolution: {integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==} engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} @@ -12710,11 +12348,6 @@ packages: sprintf-js@1.1.3: resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} - sqlite-wasm-kysely@0.3.0: - resolution: {integrity: sha512-TzjBNv7KwRw6E3pdKdlRyZiTmUIE0UttT/Sl56MVwVARl/u5gp978KepazCJZewFUnlWHz9i3NQd4kOtP/Afdg==} - peerDependencies: - kysely: '*' - sqlite3@5.1.7: resolution: {integrity: sha512-GGIyOiFaG+TUra3JIfkI/zGP8yZYLPQ0pl1bH+ODjiX57sPhrLU5sQJn1y9bDKZUFYkX1crlrPfSYt0BKKdkog==} @@ -12762,6 +12395,10 @@ packages: std-env@3.9.0: resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} + stop-iteration-iterator@1.1.0: + resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} + engines: {node: '>= 0.4'} + stream-buffers@2.2.0: resolution: {integrity: sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==} engines: {node: '>= 0.10.0'} @@ -12781,6 +12418,9 @@ packages: streamx@2.22.1: resolution: {integrity: sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==} + streamx@2.23.0: + resolution: {integrity: sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==} + strict-event-emitter@0.5.1: resolution: {integrity: sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==} @@ -12816,6 +12456,13 @@ packages: resolution: {integrity: sha512-Kxl3KJGb/gxkaUMOjRsQ8IrXiGW75O4E3RPjFIINOVH8AMl2SQ/yWdTzWwF3FevIX9LcMAjJW+GRwAlAbTSXdg==} engines: {node: '>=20'} + string.prototype.matchall@4.0.12: + resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} + engines: {node: '>= 0.4'} + + string.prototype.repeat@1.0.0: + resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} + string.prototype.trim@1.2.10: resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} engines: {node: '>= 0.4'} @@ -13026,27 +12673,6 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - svelte-check@4.3.2: - resolution: {integrity: sha512-71udP5w2kaSTcX8iV0hn3o2FWlabQHhJTJLIQrCqMsrcOeDUO2VhCQKKCA8AMVHSPwdxLEWkUWh9OKxns5PD9w==} - engines: {node: '>= 18.0.0'} - hasBin: true - peerDependencies: - svelte: ^4.0.0 || ^5.0.0-next.0 - typescript: '>=5.0.0' - - svelte-eslint-parser@1.3.3: - resolution: {integrity: sha512-oTrDR8Z7Wnguut7QH3YKh7JR19xv1seB/bz4dxU5J/86eJtZOU4eh0/jZq4dy6tAlz/KROxnkRQspv5ZEt7t+Q==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - svelte: ^3.37.0 || ^4.0.0 || ^5.0.0 - peerDependenciesMeta: - svelte: - optional: true - - svelte@5.39.6: - resolution: {integrity: sha512-bOJXmuwLNaoqPCTWO8mPu/fwxI5peGE5Efe7oo6Cakpz/G60vsnVF6mxbGODaxMUFUKEnjm6XOwHEqOht6cbvw==} - engines: {node: '>=18'} - svg-pan-zoom@3.6.2: resolution: {integrity: sha512-JwnvRWfVKw/Xzfe6jriFyfey/lWJLq4bUh2jwoR5ChWQuQoOH8FEh1l/bEp46iHHKHEJWIyFJETbazraxNWECg==} @@ -13104,9 +12730,6 @@ packages: tabulator-tables@6.3.1: resolution: {integrity: sha512-qFW7kfadtcaISQIibKAIy0f3eeIXUVi8242Vly1iJfMD79kfEGzfczNuPBN/80hDxHzQJXYbmJ8VipI40hQtfA==} - tailwindcss@4.1.13: - resolution: {integrity: sha512-i+zidfmTqtwquj4hMEwdjshYYgMbOrPzb9a0M3ZgNa0JMoZeFC6bxZvO8yr8ozS6ix2SDz0+mvryPeBs2TFE+w==} - tapable@2.2.2: resolution: {integrity: sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==} engines: {node: '>=6'} @@ -13122,6 +12745,9 @@ packages: tar-fs@3.1.0: resolution: {integrity: sha512-5Mty5y/sOF1YWj1J6GiBodjlDc05CUR8PKXrsnFAiSG0xA+GHeWLovaZPYUDXkH/1iKRf2+M5+OrRgzC7O9b7w==} + tar-fs@3.1.1: + resolution: {integrity: sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==} + tar-stream@3.1.7: resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} @@ -13361,8 +12987,8 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - tsx@4.20.5: - resolution: {integrity: sha512-+wKjMNU9w/EaQayHXb7WA7ZaHY6hN8WgfvHNQ3t1PnU91/7O8TcTnIhCDYTZwnt8JsO9IBqZ30Ln1r7pPF52Aw==} + tsx@4.20.6: + resolution: {integrity: sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==} engines: {node: '>=18.0.0'} hasBin: true @@ -13481,9 +13107,6 @@ packages: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} - undici-types@6.19.8: - resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} @@ -13537,30 +13160,18 @@ packages: unist-util-find-after@5.0.0: resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} - unist-util-is@4.1.0: - resolution: {integrity: sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==} - unist-util-is@6.0.0: resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} unist-util-position@5.0.0: resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} - unist-util-stringify-position@2.0.3: - resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} - unist-util-stringify-position@4.0.0: resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} - unist-util-visit-parents@3.1.1: - resolution: {integrity: sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==} - unist-util-visit-parents@6.0.1: resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} - unist-util-visit@2.0.3: - resolution: {integrity: sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==} - unist-util-visit@5.0.0: resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} @@ -13584,10 +13195,6 @@ packages: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} - unplugin@2.3.10: - resolution: {integrity: sha512-6NCPkv1ClwH+/BGE9QeoTIl09nuiAt0gS28nn1PvYXsGKRwM2TCbFA2QiilmehPDTXIe684k4rZI1yl3A1PCUw==} - engines: {node: '>=18.12.0'} - unused-filename@4.0.1: resolution: {integrity: sha512-ZX6U1J04K1FoSUeoX1OicAhw4d0aro2qo+L8RhJkiGTNtBNkd/Fi1Wxoc9HzcVu6HfOzm0si/N15JjxFmD1z6A==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -13664,10 +13271,6 @@ packages: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} - uuid@10.0.0: - resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} - hasBin: true - uuid@11.1.0: resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} hasBin: true @@ -13710,9 +13313,6 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - vfile-message@2.0.4: - resolution: {integrity: sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==} - vfile-message@4.0.2: resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} @@ -13790,14 +13390,6 @@ packages: yaml: optional: true - vitefu@1.1.1: - resolution: {integrity: sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==} - peerDependencies: - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0 - peerDependenciesMeta: - vite: - optional: true - vitest@3.2.4: resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} @@ -13896,12 +13488,12 @@ packages: resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} engines: {node: '>= 8'} - webdriver@9.19.2: - resolution: {integrity: sha512-kw6dSwNzimU8/CkGVlM36pqWHZ7BhCwV4/d8fu6rpIYGeQbPwcNc4M90TfJuzYMA7Au3NdrwT/EVQgVLQ9Ju8Q==} + webdriver@9.20.0: + resolution: {integrity: sha512-Kk+AGV1xWLNHVpzUynQJDULMzbcO3IjXo3s0BzfC30OpGxhpaNmoazMQodhtv0Lp242Mb1VYXD89dCb4oAHc4w==} engines: {node: '>=18.20.0'} - webdriverio@9.19.2: - resolution: {integrity: sha512-xP/9odQ9tt2pEuMgo0Oobklhu1lObgL1KmejZeyxVStwnrSTbFmn1AAqPq5pfXizUsyv2PR5+id9frrarx/c4w==} + webdriverio@9.20.0: + resolution: {integrity: sha512-cqaXfahTzCFaQLlk++feZaze6tAsW8OSdaVRgmOGJRII1z2A4uh4YGHtusTpqOiZAST7OBPqycOwfh01G/Ktbg==} engines: {node: '>=18.20.0'} peerDependencies: puppeteer-core: '>=22.x || <=24.x' @@ -13957,9 +13549,6 @@ packages: resolution: {integrity: sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==} engines: {node: '>=10.13.0'} - webpack-virtual-modules@0.6.2: - resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - webpack@5.101.3: resolution: {integrity: sha512-7b0dTKR3Ed//AD/6kkx/o7duS8H3f1a4w3BYpIriX4BzIhjkn4teo05cptsxvLesHFKK5KObnadmCHBwGc+51A==} engines: {node: '>=10.13.0'} @@ -14276,9 +13865,6 @@ packages: engines: {node: '>=8.0.0'} hasBin: true - zimmerframe@1.1.4: - resolution: {integrity: sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==} - zip-stream@6.0.1: resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==} engines: {node: '>= 14'} @@ -14318,7 +13904,7 @@ snapshots: '@antfu/utils@9.2.0': {} - '@anthropic-ai/sdk@0.63.1': + '@anthropic-ai/sdk@0.64.0': dependencies: json-schema-to-ts: 3.1.1 @@ -14350,6 +13936,7 @@ snapshots: '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 lru-cache: 10.4.3 + optional: true '@aws-crypto/crc32@5.2.0': dependencies: @@ -14401,7 +13988,7 @@ snapshots: '@aws-sdk/util-user-agent-browser': 3.821.0 '@aws-sdk/util-user-agent-node': 3.823.0 '@smithy/config-resolver': 4.1.4 - '@smithy/core': 3.11.1 + '@smithy/core': 3.12.0 '@smithy/eventstream-serde-browser': 4.0.4 '@smithy/eventstream-serde-config-resolver': 4.1.2 '@smithy/eventstream-serde-node': 4.0.4 @@ -14409,14 +13996,14 @@ snapshots: '@smithy/hash-node': 4.0.4 '@smithy/invalid-dependency': 4.0.4 '@smithy/middleware-content-length': 4.0.4 - '@smithy/middleware-endpoint': 4.2.3 - '@smithy/middleware-retry': 4.3.0 + '@smithy/middleware-endpoint': 4.2.4 + '@smithy/middleware-retry': 4.3.1 '@smithy/middleware-serde': 4.1.1 '@smithy/middleware-stack': 4.1.1 '@smithy/node-config-provider': 4.2.2 '@smithy/node-http-handler': 4.2.1 '@smithy/protocol-http': 5.2.1 - '@smithy/smithy-client': 4.6.3 + '@smithy/smithy-client': 4.6.4 '@smithy/types': 4.5.0 '@smithy/url-parser': 4.1.1 '@smithy/util-base64': 4.1.0 @@ -14450,19 +14037,19 @@ snapshots: '@aws-sdk/util-user-agent-browser': 3.821.0 '@aws-sdk/util-user-agent-node': 3.823.0 '@smithy/config-resolver': 4.1.4 - '@smithy/core': 3.11.1 + '@smithy/core': 3.12.0 '@smithy/fetch-http-handler': 5.2.1 '@smithy/hash-node': 4.0.4 '@smithy/invalid-dependency': 4.0.4 '@smithy/middleware-content-length': 4.0.4 - '@smithy/middleware-endpoint': 4.2.3 - '@smithy/middleware-retry': 4.3.0 + '@smithy/middleware-endpoint': 4.2.4 + '@smithy/middleware-retry': 4.3.1 '@smithy/middleware-serde': 4.1.1 '@smithy/middleware-stack': 4.1.1 '@smithy/node-config-provider': 4.2.2 '@smithy/node-http-handler': 4.2.1 '@smithy/protocol-http': 5.2.1 - '@smithy/smithy-client': 4.6.3 + '@smithy/smithy-client': 4.6.4 '@smithy/types': 4.5.0 '@smithy/url-parser': 4.1.1 '@smithy/util-base64': 4.1.0 @@ -14482,12 +14069,12 @@ snapshots: dependencies: '@aws-sdk/types': 3.821.0 '@aws-sdk/xml-builder': 3.821.0 - '@smithy/core': 3.11.1 + '@smithy/core': 3.12.0 '@smithy/node-config-provider': 4.2.2 '@smithy/property-provider': 4.1.1 '@smithy/protocol-http': 5.2.1 '@smithy/signature-v4': 5.1.2 - '@smithy/smithy-client': 4.6.3 + '@smithy/smithy-client': 4.6.4 '@smithy/types': 4.5.0 '@smithy/util-base64': 4.1.0 '@smithy/util-body-length-browser': 4.1.0 @@ -14512,7 +14099,7 @@ snapshots: '@smithy/node-http-handler': 4.2.1 '@smithy/property-provider': 4.1.1 '@smithy/protocol-http': 5.2.1 - '@smithy/smithy-client': 4.6.3 + '@smithy/smithy-client': 4.6.4 '@smithy/types': 4.5.0 '@smithy/util-stream': 4.3.2 tslib: 2.8.1 @@ -14624,7 +14211,7 @@ snapshots: '@aws-sdk/core': 3.823.0 '@aws-sdk/types': 3.821.0 '@aws-sdk/util-endpoints': 3.821.0 - '@smithy/core': 3.11.1 + '@smithy/core': 3.12.0 '@smithy/protocol-http': 5.2.1 '@smithy/types': 4.5.0 tslib: 2.8.1 @@ -14644,19 +14231,19 @@ snapshots: '@aws-sdk/util-user-agent-browser': 3.821.0 '@aws-sdk/util-user-agent-node': 3.823.0 '@smithy/config-resolver': 4.1.4 - '@smithy/core': 3.11.1 + '@smithy/core': 3.12.0 '@smithy/fetch-http-handler': 5.2.1 '@smithy/hash-node': 4.0.4 '@smithy/invalid-dependency': 4.0.4 '@smithy/middleware-content-length': 4.0.4 - '@smithy/middleware-endpoint': 4.2.3 - '@smithy/middleware-retry': 4.3.0 + '@smithy/middleware-endpoint': 4.2.4 + '@smithy/middleware-retry': 4.3.1 '@smithy/middleware-serde': 4.1.1 '@smithy/middleware-stack': 4.1.1 '@smithy/node-config-provider': 4.2.2 '@smithy/node-http-handler': 4.2.1 '@smithy/protocol-http': 5.2.1 - '@smithy/smithy-client': 4.6.3 + '@smithy/smithy-client': 4.6.4 '@smithy/types': 4.5.0 '@smithy/url-parser': 4.1.1 '@smithy/util-base64': 4.1.0 @@ -14747,34 +14334,42 @@ snapshots: dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.0 + '@babel/generator': 7.28.3 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) '@babel/helpers': 7.27.6 - '@babel/parser': 7.28.0 + '@babel/parser': 7.28.4 '@babel/template': 7.27.2 - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 convert-source-map: 2.0.0 - debug: 4.4.1 + debug: 4.4.3(supports-color@6.0.0) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 transitivePeerDependencies: - supports-color + '@babel/eslint-parser@7.28.4(@babel/core@7.28.0)(eslint@9.36.0(jiti@2.6.0))': + dependencies: + '@babel/core': 7.28.0 + '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 + eslint: 9.36.0(jiti@2.6.0) + eslint-visitor-keys: 2.1.0 + semver: 6.3.1 + '@babel/generator@7.27.0': dependencies: - '@babel/parser': 7.27.5 - '@babel/types': 7.28.1 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 '@babel/generator@7.28.0': dependencies: - '@babel/parser': 7.28.0 - '@babel/types': 7.28.1 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 @@ -14795,7 +14390,7 @@ snapshots: dependencies: '@babel/compat-data': 7.28.0 '@babel/helper-validator-option': 7.27.1 - browserslist: 4.25.1 + browserslist: 4.26.2 lru-cache: 5.1.1 semver: 6.3.1 @@ -14813,7 +14408,7 @@ snapshots: '@babel/core': 7.28.0 '@babel/helper-module-imports': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.28.0 + '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color @@ -14828,7 +14423,7 @@ snapshots: '@babel/helpers@7.27.6': dependencies: '@babel/template': 7.27.2 - '@babel/types': 7.28.1 + '@babel/types': 7.28.4 '@babel/parser@7.27.5': dependencies: @@ -14842,6 +14437,11 @@ snapshots: dependencies: '@babel/types': 7.28.4 + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.0)': dependencies: '@babel/core': 7.28.0 @@ -14871,15 +14471,15 @@ snapshots: '@babel/template@7.27.0': dependencies: - '@babel/code-frame': 7.26.2 - '@babel/parser': 7.27.5 - '@babel/types': 7.28.1 + '@babel/code-frame': 7.27.1 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 - '@babel/parser': 7.28.0 - '@babel/types': 7.28.1 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 '@babel/traverse@7.27.0': dependencies: @@ -15951,7 +15551,7 @@ snapshots: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 '@codemirror/theme-one-dark': 6.1.2 - '@codemirror/view': 6.38.3 + '@codemirror/view': 6.38.4 ckeditor5: 46.1.1(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) '@ckeditor/ckeditor5-source-editing@46.1.1': @@ -16137,14 +15737,14 @@ snapshots: dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.3 + '@codemirror/view': 6.38.4 '@lezer/common': 1.2.3 '@codemirror/commands@6.8.1': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.3 + '@codemirror/view': 6.38.4 '@lezer/common': 1.2.3 '@codemirror/lang-css@6.3.1': @@ -16162,7 +15762,7 @@ snapshots: '@codemirror/lang-javascript': 6.2.4 '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.3 + '@codemirror/view': 6.38.4 '@lezer/common': 1.2.3 '@lezer/css': 1.1.11 '@lezer/html': 1.3.10 @@ -16173,7 +15773,7 @@ snapshots: '@codemirror/language': 6.11.0 '@codemirror/lint': 6.8.5 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.3 + '@codemirror/view': 6.38.4 '@lezer/common': 1.2.3 '@lezer/javascript': 1.5.1 @@ -16188,7 +15788,7 @@ snapshots: '@codemirror/lang-html': 6.4.10 '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.3 + '@codemirror/view': 6.38.4 '@lezer/common': 1.2.3 '@lezer/markdown': 1.4.3 @@ -16198,7 +15798,7 @@ snapshots: '@codemirror/lang-html': 6.4.10 '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.3 + '@codemirror/view': 6.38.4 '@lezer/common': 1.2.3 '@lezer/markdown': 1.4.3 @@ -16224,14 +15824,14 @@ snapshots: '@codemirror/autocomplete': 6.18.6 '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.3 + '@codemirror/view': 6.38.4 '@lezer/common': 1.2.3 '@lezer/xml': 1.0.6 '@codemirror/language@6.11.0': dependencies: '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.3 + '@codemirror/view': 6.38.4 '@lezer/common': 1.2.3 '@lezer/highlight': 1.2.1 '@lezer/lr': 1.4.2 @@ -16244,13 +15844,13 @@ snapshots: '@codemirror/lint@6.8.5': dependencies: '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.3 + '@codemirror/view': 6.38.4 crelt: 1.0.6 '@codemirror/search@6.5.11': dependencies: '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.3 + '@codemirror/view': 6.38.4 crelt: 1.0.6 '@codemirror/state@6.5.2': @@ -16261,10 +15861,10 @@ snapshots: dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.3 + '@codemirror/view': 6.38.4 '@lezer/highlight': 1.2.1 - '@codemirror/view@6.38.3': + '@codemirror/view@6.38.4': dependencies: '@codemirror/state': 6.5.2 crelt: 1.0.6 @@ -16275,12 +15875,14 @@ snapshots: dependencies: '@jridgewell/trace-mapping': 0.3.9 - '@csstools/color-helpers@5.0.2': {} + '@csstools/color-helpers@5.0.2': + optional: true '@csstools/css-calc@2.1.3(@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.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 + optional: true '@csstools/css-color-parser@3.0.9(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': dependencies: @@ -16288,6 +15890,7 @@ snapshots: '@csstools/css-calc': 2.1.3(@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 + optional: true '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)': dependencies: @@ -16693,9 +16296,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@electron/remote@2.1.3(electron@38.1.2)': + '@electron/remote@2.1.3(electron@38.2.0)': dependencies: - electron: 38.1.2 + electron: 38.2.0 '@electron/universal@2.0.2': dependencies: @@ -16748,159 +16351,81 @@ snapshots: '@esbuild/aix-ppc64@0.25.10': optional: true - '@esbuild/aix-ppc64@0.25.9': - optional: true - '@esbuild/android-arm64@0.25.10': optional: true - '@esbuild/android-arm64@0.25.9': - optional: true - '@esbuild/android-arm@0.25.10': optional: true - '@esbuild/android-arm@0.25.9': - optional: true - '@esbuild/android-x64@0.25.10': optional: true - '@esbuild/android-x64@0.25.9': - optional: true - '@esbuild/darwin-arm64@0.25.10': optional: true - '@esbuild/darwin-arm64@0.25.9': - optional: true - '@esbuild/darwin-x64@0.25.10': optional: true - '@esbuild/darwin-x64@0.25.9': - optional: true - '@esbuild/freebsd-arm64@0.25.10': optional: true - '@esbuild/freebsd-arm64@0.25.9': - optional: true - '@esbuild/freebsd-x64@0.25.10': optional: true - '@esbuild/freebsd-x64@0.25.9': - optional: true - '@esbuild/linux-arm64@0.25.10': optional: true - '@esbuild/linux-arm64@0.25.9': - optional: true - '@esbuild/linux-arm@0.25.10': optional: true - '@esbuild/linux-arm@0.25.9': - optional: true - '@esbuild/linux-ia32@0.25.10': optional: true - '@esbuild/linux-ia32@0.25.9': - optional: true - '@esbuild/linux-loong64@0.25.10': optional: true - '@esbuild/linux-loong64@0.25.9': - optional: true - '@esbuild/linux-mips64el@0.25.10': optional: true - '@esbuild/linux-mips64el@0.25.9': - optional: true - '@esbuild/linux-ppc64@0.25.10': optional: true - '@esbuild/linux-ppc64@0.25.9': - optional: true - '@esbuild/linux-riscv64@0.25.10': optional: true - '@esbuild/linux-riscv64@0.25.9': - optional: true - '@esbuild/linux-s390x@0.25.10': optional: true - '@esbuild/linux-s390x@0.25.9': - optional: true - '@esbuild/linux-x64@0.25.10': optional: true - '@esbuild/linux-x64@0.25.9': - optional: true - '@esbuild/netbsd-arm64@0.25.10': optional: true - '@esbuild/netbsd-arm64@0.25.9': - optional: true - '@esbuild/netbsd-x64@0.25.10': optional: true - '@esbuild/netbsd-x64@0.25.9': - optional: true - '@esbuild/openbsd-arm64@0.25.10': optional: true - '@esbuild/openbsd-arm64@0.25.9': - optional: true - '@esbuild/openbsd-x64@0.25.10': optional: true - '@esbuild/openbsd-x64@0.25.9': - optional: true - '@esbuild/openharmony-arm64@0.25.10': optional: true - '@esbuild/openharmony-arm64@0.25.9': - optional: true - '@esbuild/sunos-x64@0.25.10': optional: true - '@esbuild/sunos-x64@0.25.9': - optional: true - '@esbuild/win32-arm64@0.25.10': optional: true - '@esbuild/win32-arm64@0.25.9': - optional: true - '@esbuild/win32-ia32@0.25.10': optional: true - '@esbuild/win32-ia32@0.25.9': - optional: true - '@esbuild/win32-x64@0.25.10': optional: true - '@esbuild/win32-x64@0.25.9': - optional: true - '@eslint-community/eslint-utils@4.9.0(eslint@9.36.0(jiti@2.6.0))': dependencies: eslint: 9.36.0(jiti@2.6.0) @@ -16908,12 +16433,6 @@ snapshots: '@eslint-community/regexpp@4.12.1': {} - '@eslint/compat@1.4.0(eslint@9.36.0(jiti@2.6.0))': - dependencies: - '@eslint/core': 0.16.0 - optionalDependencies: - eslint: 9.36.0(jiti@2.6.0) - '@eslint/config-array@0.21.0': dependencies: '@eslint/object-schema': 2.1.6 @@ -16932,10 +16451,6 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@eslint/core@0.16.0': - dependencies: - '@types/json-schema': 7.0.15 - '@eslint/eslintrc@3.3.1': dependencies: ajv: 6.12.6 @@ -17051,172 +16566,172 @@ snapshots: '@floating-ui/utils@0.2.9': {} - '@fsegurai/codemirror-theme-abcdef@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-abcdef@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.3 + '@codemirror/view': 6.38.4 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-abyss@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-abyss@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.3 + '@codemirror/view': 6.38.4 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-android-studio@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-android-studio@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.3 + '@codemirror/view': 6.38.4 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-andromeda@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-andromeda@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.3 + '@codemirror/view': 6.38.4 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-basic-dark@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-basic-dark@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.3 + '@codemirror/view': 6.38.4 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-basic-light@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-basic-light@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.3 + '@codemirror/view': 6.38.4 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-cobalt2@6.0.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-cobalt2@6.0.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.3 + '@codemirror/view': 6.38.4 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-forest@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-forest@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.3 + '@codemirror/view': 6.38.4 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-github-dark@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-github-dark@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.3 + '@codemirror/view': 6.38.4 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-github-light@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-github-light@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.3 + '@codemirror/view': 6.38.4 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-gruvbox-dark@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-gruvbox-dark@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.3 + '@codemirror/view': 6.38.4 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-gruvbox-light@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-gruvbox-light@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.3 + '@codemirror/view': 6.38.4 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-material-dark@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-material-dark@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.3 + '@codemirror/view': 6.38.4 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-material-light@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-material-light@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.3 + '@codemirror/view': 6.38.4 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-monokai@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-monokai@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.3 + '@codemirror/view': 6.38.4 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-nord@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-nord@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.3 + '@codemirror/view': 6.38.4 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-palenight@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-palenight@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.3 + '@codemirror/view': 6.38.4 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-solarized-dark@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-solarized-dark@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.3 + '@codemirror/view': 6.38.4 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-solarized-light@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-solarized-light@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.3 + '@codemirror/view': 6.38.4 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-tokyo-night-day@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-tokyo-night-day@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.3 + '@codemirror/view': 6.38.4 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-tokyo-night-storm@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-tokyo-night-storm@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.3 + '@codemirror/view': 6.38.4 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-volcano@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-volcano@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.3 + '@codemirror/view': 6.38.4 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-vscode-dark@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-vscode-dark@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.3 + '@codemirror/view': 6.38.4 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-vscode-light@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-vscode-light@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.3 + '@codemirror/view': 6.38.4 '@lezer/highlight': 1.2.1 '@fullcalendar/core@6.1.19': @@ -17279,32 +16794,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@inlang/paraglide-js@2.3.2(babel-plugin-macros@3.1.0)': - dependencies: - '@inlang/recommend-sherlock': 0.2.1 - '@inlang/sdk': 2.4.9(babel-plugin-macros@3.1.0) - commander: 11.1.0 - consola: 3.4.0 - json5: 2.2.3 - unplugin: 2.3.10 - urlpattern-polyfill: 10.1.0 - transitivePeerDependencies: - - babel-plugin-macros - - '@inlang/recommend-sherlock@0.2.1': - dependencies: - comment-json: 4.2.5 - - '@inlang/sdk@2.4.9(babel-plugin-macros@3.1.0)': - dependencies: - '@lix-js/sdk': 0.4.7(babel-plugin-macros@3.1.0) - '@sinclair/typebox': 0.31.28 - kysely: 0.27.6 - sqlite-wasm-kysely: 0.3.0(kysely@0.27.6) - uuid: 10.0.0 - transitivePeerDependencies: - - babel-plugin-macros - '@inquirer/ansi@1.0.0': optional: true @@ -17445,7 +16934,7 @@ snapshots: dependencies: string-width: 5.1.2 string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 strip-ansi-cjs: strip-ansi@6.0.1 wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 @@ -17656,11 +17145,6 @@ snapshots: '@jridgewell/sourcemap-codec': 1.5.5 '@jridgewell/trace-mapping': 0.3.25 - '@jridgewell/remapping@2.3.5': - dependencies: - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/set-array@1.2.1': {} @@ -17804,20 +17288,6 @@ snapshots: '@inquirer/prompts': 6.0.1 '@inquirer/type': 1.5.5 - '@lix-js/sdk@0.4.7(babel-plugin-macros@3.1.0)': - dependencies: - '@lix-js/server-protocol-schema': 0.1.1 - dedent: 1.5.1(babel-plugin-macros@3.1.0) - human-id: 4.1.1 - js-sha256: 0.11.1 - kysely: 0.27.6 - sqlite-wasm-kysely: 0.3.0(kysely@0.27.6) - uuid: 10.0.0 - transitivePeerDependencies: - - babel-plugin-macros - - '@lix-js/server-protocol-schema@0.1.1': {} - '@ljharb/resumer@0.0.1': dependencies: '@ljharb/through': 2.3.14 @@ -17894,6 +17364,8 @@ snapshots: '@marijn/find-cluster-break@1.0.2': {} + '@mdn/browser-compat-data@5.7.6': {} + '@mermaid-js/layout-elk@0.2.0(mermaid@11.12.0)': dependencies: d3: 7.9.0 @@ -17962,6 +17434,10 @@ snapshots: '@tybys/wasm-util': 0.10.1 optional: true + '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': + dependencies: + eslint-scope: 5.1.1 + '@noble/hashes@1.8.0': {} '@nodelib/fs.scandir@2.1.5': @@ -18159,18 +17635,18 @@ snapshots: '@popperjs/core@2.11.8': {} - '@preact/preset-vite@2.10.2(@babel/core@7.28.0)(preact@10.27.2)(vite@7.1.7(@types/node@24.5.1)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': + '@preact/preset-vite@2.10.2(@babel/core@7.28.0)(preact@10.27.2)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@babel/core': 7.28.0 '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.0) '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.28.0) - '@prefresh/vite': 2.4.8(preact@10.27.2)(vite@7.1.7(@types/node@24.5.1)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) + '@prefresh/vite': 2.4.8(preact@10.27.2)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) '@rollup/pluginutils': 4.2.1 babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.28.0) debug: 4.4.1 picocolors: 1.1.1 - vite: 7.1.7(@types/node@24.5.1)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) - vite-prerender-plugin: 0.5.11(vite@7.1.7(@types/node@24.5.1)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) + vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite-prerender-plugin: 0.5.11(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) transitivePeerDependencies: - preact - supports-color @@ -18183,7 +17659,7 @@ snapshots: '@prefresh/utils@1.2.1': {} - '@prefresh/vite@2.4.8(preact@10.27.2)(vite@7.1.7(@types/node@24.5.1)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': + '@prefresh/vite@2.4.8(preact@10.27.2)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@babel/core': 7.28.0 '@prefresh/babel-plugin': 0.5.2 @@ -18191,7 +17667,7 @@ snapshots: '@prefresh/utils': 1.2.1 '@rollup/pluginutils': 4.2.1 preact: 10.27.2 - vite: 7.1.7(@types/node@24.5.1)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -18222,14 +17698,14 @@ snapshots: '@protobufjs/utf8@1.1.0': {} - '@puppeteer/browsers@2.10.7': + '@puppeteer/browsers@2.10.10': dependencies: debug: 4.4.3(supports-color@6.0.0) extract-zip: 2.0.1 progress: 2.0.3 proxy-agent: 6.5.0 semver: 7.7.2 - tar-fs: 3.1.0 + tar-fs: 3.1.1 yargs: 17.7.2 transitivePeerDependencies: - bare-buffer @@ -18237,7 +17713,7 @@ snapshots: '@radix-ui/primitive@1.0.0': dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.4 '@radix-ui/primitive@1.1.1': {} @@ -18273,7 +17749,7 @@ snapshots: '@radix-ui/react-context@1.0.0(react@16.14.0)': dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.4 react: 16.14.0 '@radix-ui/react-context@1.1.1(@types/react@19.1.7)(react@16.14.0)': @@ -18284,7 +17760,7 @@ snapshots: '@radix-ui/react-direction@1.0.0(react@16.14.0)': dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.4 react: 16.14.0 '@radix-ui/react-dismissable-layer@1.1.5(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0)': @@ -18319,7 +17795,7 @@ snapshots: '@radix-ui/react-id@1.0.0(react@16.14.0)': dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.4 '@radix-ui/react-use-layout-effect': 1.0.0(react@16.14.0) react: 16.14.0 @@ -18383,7 +17859,7 @@ snapshots: '@radix-ui/react-presence@1.0.0(react-dom@19.1.0(react@16.14.0))(react@16.14.0)': dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.4 '@radix-ui/react-compose-refs': 1.0.0(react@16.14.0) '@radix-ui/react-use-layout-effect': 1.0.0(react@16.14.0) react: 16.14.0 @@ -18401,7 +17877,7 @@ snapshots: '@radix-ui/react-primitive@1.0.1(react-dom@19.1.0(react@16.14.0))(react@16.14.0)': dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.4 '@radix-ui/react-slot': 1.0.1(react@16.14.0) react: 16.14.0 react-dom: 19.1.0(react@16.14.0) @@ -18417,7 +17893,7 @@ snapshots: '@radix-ui/react-roving-focus@1.0.2(react-dom@19.1.0(react@16.14.0))(react@16.14.0)': dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.4 '@radix-ui/primitive': 1.0.0 '@radix-ui/react-collection': 1.0.1(react-dom@19.1.0(react@16.14.0))(react@16.14.0) '@radix-ui/react-compose-refs': 1.0.0(react@16.14.0) @@ -18470,7 +17946,7 @@ snapshots: '@radix-ui/react-use-controllable-state@1.0.0(react@16.14.0)': dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.4 '@radix-ui/react-use-callback-ref': 1.0.0(react@16.14.0) react: 16.14.0 @@ -18515,29 +17991,29 @@ snapshots: '@radix-ui/rect@1.1.0': {} - '@replit/codemirror-indentation-markers@6.5.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)': + '@replit/codemirror-indentation-markers@6.5.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.3 + '@codemirror/view': 6.38.4 - '@replit/codemirror-lang-nix@6.0.1(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/lr@1.4.2)': + '@replit/codemirror-lang-nix@6.0.1(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/lr@1.4.2)': dependencies: '@codemirror/autocomplete': 6.18.6 '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.3 + '@codemirror/view': 6.38.4 '@lezer/common': 1.2.3 '@lezer/highlight': 1.2.1 '@lezer/lr': 1.4.2 - '@replit/codemirror-vim@6.3.0(@codemirror/commands@6.8.1)(@codemirror/language@6.11.0)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)': + '@replit/codemirror-vim@6.3.0(@codemirror/commands@6.8.1)(@codemirror/language@6.11.0)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)': dependencies: '@codemirror/commands': 6.8.1 '@codemirror/language': 6.11.0 '@codemirror/search': 6.5.11 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.3 + '@codemirror/view': 6.38.4 '@rolldown/binding-android-arm64@1.0.0-beta.29': optional: true @@ -18860,8 +18336,6 @@ snapshots: '@sigstore/core': 3.0.0 '@sigstore/protobuf-specs': 0.5.0 - '@sinclair/typebox@0.31.28': {} - '@sindresorhus/is@4.6.0': {} '@smithy/abort-controller@4.1.1': @@ -18877,7 +18351,7 @@ snapshots: '@smithy/util-middleware': 4.1.1 tslib: 2.8.1 - '@smithy/core@3.11.1': + '@smithy/core@3.12.0': dependencies: '@smithy/middleware-serde': 4.1.1 '@smithy/protocol-http': 5.2.1 @@ -18887,11 +18361,10 @@ snapshots: '@smithy/util-middleware': 4.1.1 '@smithy/util-stream': 4.3.2 '@smithy/util-utf8': 4.1.0 - '@types/uuid': 9.0.8 + '@smithy/uuid': 1.0.0 tslib: 2.8.1 - uuid: 9.0.1 - '@smithy/core@3.12.0': + '@smithy/core@3.13.0': dependencies: '@smithy/middleware-serde': 4.1.1 '@smithy/protocol-http': 5.2.1 @@ -18976,17 +18449,6 @@ snapshots: '@smithy/types': 4.5.0 tslib: 2.8.1 - '@smithy/middleware-endpoint@4.2.3': - dependencies: - '@smithy/core': 3.11.1 - '@smithy/middleware-serde': 4.1.1 - '@smithy/node-config-provider': 4.2.2 - '@smithy/shared-ini-file-loader': 4.2.0 - '@smithy/types': 4.5.0 - '@smithy/url-parser': 4.1.1 - '@smithy/util-middleware': 4.1.1 - tslib: 2.8.1 - '@smithy/middleware-endpoint@4.2.4': dependencies: '@smithy/core': 3.12.0 @@ -18998,12 +18460,23 @@ snapshots: '@smithy/util-middleware': 4.1.1 tslib: 2.8.1 - '@smithy/middleware-retry@4.3.0': + '@smithy/middleware-endpoint@4.2.5': + dependencies: + '@smithy/core': 3.13.0 + '@smithy/middleware-serde': 4.1.1 + '@smithy/node-config-provider': 4.2.2 + '@smithy/shared-ini-file-loader': 4.2.0 + '@smithy/types': 4.5.0 + '@smithy/url-parser': 4.1.1 + '@smithy/util-middleware': 4.1.1 + tslib: 2.8.1 + + '@smithy/middleware-retry@4.3.1': dependencies: '@smithy/node-config-provider': 4.2.2 '@smithy/protocol-http': 5.2.1 '@smithy/service-error-classification': 4.1.2 - '@smithy/smithy-client': 4.6.4 + '@smithy/smithy-client': 4.6.5 '@smithy/types': 4.5.0 '@smithy/util-middleware': 4.1.1 '@smithy/util-retry': 4.1.2 @@ -19077,20 +18550,20 @@ snapshots: '@smithy/util-utf8': 4.1.0 tslib: 2.8.1 - '@smithy/smithy-client@4.6.3': + '@smithy/smithy-client@4.6.4': dependencies: - '@smithy/core': 3.11.1 - '@smithy/middleware-endpoint': 4.2.3 + '@smithy/core': 3.12.0 + '@smithy/middleware-endpoint': 4.2.4 '@smithy/middleware-stack': 4.1.1 '@smithy/protocol-http': 5.2.1 '@smithy/types': 4.5.0 '@smithy/util-stream': 4.3.2 tslib: 2.8.1 - '@smithy/smithy-client@4.6.4': + '@smithy/smithy-client@4.6.5': dependencies: - '@smithy/core': 3.12.0 - '@smithy/middleware-endpoint': 4.2.4 + '@smithy/core': 3.13.0 + '@smithy/middleware-endpoint': 4.2.5 '@smithy/middleware-stack': 4.1.1 '@smithy/protocol-http': 5.2.1 '@smithy/types': 4.5.0 @@ -19138,7 +18611,7 @@ snapshots: '@smithy/util-defaults-mode-browser@4.0.22': dependencies: '@smithy/property-provider': 4.1.1 - '@smithy/smithy-client': 4.6.3 + '@smithy/smithy-client': 4.6.4 '@smithy/types': 4.5.0 bowser: 2.11.0 tslib: 2.8.1 @@ -19149,7 +18622,7 @@ snapshots: '@smithy/credential-provider-imds': 4.0.6 '@smithy/node-config-provider': 4.2.2 '@smithy/property-provider': 4.1.1 - '@smithy/smithy-client': 4.6.3 + '@smithy/smithy-client': 4.6.4 '@smithy/types': 4.5.0 tslib: 2.8.1 @@ -19205,8 +18678,6 @@ snapshots: '@socket.io/component-emitter@3.1.2': {} - '@sqlite.org/sqlite-wasm@3.48.0-build4': {} - '@ssddanbrown/codemirror-lang-smarty@1.0.0': {} '@ssddanbrown/codemirror-lang-twig@1.0.0': @@ -19215,8 +18686,6 @@ snapshots: '@lezer/highlight': 1.2.1 '@lezer/lr': 1.4.2 - '@standard-schema/spec@1.0.0': {} - '@stylistic/eslint-plugin@4.4.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': dependencies: '@typescript-eslint/utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) @@ -19241,54 +18710,6 @@ snapshots: style-search: 0.1.0 stylelint: 16.24.0(typescript@5.9.2) - '@sveltejs/acorn-typescript@1.0.5(acorn@8.15.0)': - dependencies: - acorn: 8.15.0 - - '@sveltejs/adapter-auto@6.1.0(@sveltejs/kit@2.43.4(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.39.6)(vite@7.1.7(@types/node@24.5.1)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(svelte@5.39.6)(vite@7.1.7(@types/node@24.5.1)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))': - dependencies: - '@sveltejs/kit': 2.43.4(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.39.6)(vite@7.1.7(@types/node@24.5.1)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(svelte@5.39.6)(vite@7.1.7(@types/node@24.5.1)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) - - '@sveltejs/kit@2.43.4(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.39.6)(vite@7.1.7(@types/node@24.5.1)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(svelte@5.39.6)(vite@7.1.7(@types/node@24.5.1)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': - dependencies: - '@standard-schema/spec': 1.0.0 - '@sveltejs/acorn-typescript': 1.0.5(acorn@8.15.0) - '@sveltejs/vite-plugin-svelte': 6.2.1(svelte@5.39.6)(vite@7.1.7(@types/node@24.5.1)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) - '@types/cookie': 0.6.0 - acorn: 8.15.0 - cookie: 1.0.2 - devalue: 5.3.2 - esm-env: 1.2.2 - kleur: 4.1.5 - magic-string: 0.30.19 - mrmime: 2.0.1 - sade: 1.8.1 - set-cookie-parser: 2.7.1 - sirv: 3.0.2 - svelte: 5.39.6 - vite: 7.1.7(@types/node@24.5.1)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) - - '@sveltejs/vite-plugin-svelte-inspector@5.0.1(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.39.6)(vite@7.1.7(@types/node@24.5.1)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(svelte@5.39.6)(vite@7.1.7(@types/node@24.5.1)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': - dependencies: - '@sveltejs/vite-plugin-svelte': 6.2.1(svelte@5.39.6)(vite@7.1.7(@types/node@24.5.1)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) - debug: 4.4.3(supports-color@6.0.0) - svelte: 5.39.6 - vite: 7.1.7(@types/node@24.5.1)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) - transitivePeerDependencies: - - supports-color - - '@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.39.6)(vite@7.1.7(@types/node@24.5.1)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': - dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 5.0.1(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.39.6)(vite@7.1.7(@types/node@24.5.1)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(svelte@5.39.6)(vite@7.1.7(@types/node@24.5.1)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) - debug: 4.4.3(supports-color@6.0.0) - deepmerge: 4.3.1 - magic-string: 0.30.19 - svelte: 5.39.6 - vite: 7.1.7(@types/node@24.5.1)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) - vitefu: 1.1.1(vite@7.1.7(@types/node@24.5.1)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) - transitivePeerDependencies: - - supports-color - '@swc/core-darwin-arm64@1.11.29': optional: true @@ -19353,86 +18774,10 @@ snapshots: dependencies: defer-to-connect: 2.0.1 - '@tailwindcss/node@4.1.13': - dependencies: - '@jridgewell/remapping': 2.3.5 - enhanced-resolve: 5.18.3 - jiti: 2.6.0 - lightningcss: 1.30.1 - magic-string: 0.30.19 - source-map-js: 1.2.1 - tailwindcss: 4.1.13 - - '@tailwindcss/oxide-android-arm64@4.1.13': - optional: true - - '@tailwindcss/oxide-darwin-arm64@4.1.13': - optional: true - - '@tailwindcss/oxide-darwin-x64@4.1.13': - optional: true - - '@tailwindcss/oxide-freebsd-x64@4.1.13': - optional: true - - '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.13': - optional: true - - '@tailwindcss/oxide-linux-arm64-gnu@4.1.13': - optional: true - - '@tailwindcss/oxide-linux-arm64-musl@4.1.13': - optional: true - - '@tailwindcss/oxide-linux-x64-gnu@4.1.13': - optional: true - - '@tailwindcss/oxide-linux-x64-musl@4.1.13': - optional: true - - '@tailwindcss/oxide-wasm32-wasi@4.1.13': - optional: true - - '@tailwindcss/oxide-win32-arm64-msvc@4.1.13': - optional: true - - '@tailwindcss/oxide-win32-x64-msvc@4.1.13': - optional: true - - '@tailwindcss/oxide@4.1.13': - dependencies: - detect-libc: 2.0.4 - tar: 7.4.3 - optionalDependencies: - '@tailwindcss/oxide-android-arm64': 4.1.13 - '@tailwindcss/oxide-darwin-arm64': 4.1.13 - '@tailwindcss/oxide-darwin-x64': 4.1.13 - '@tailwindcss/oxide-freebsd-x64': 4.1.13 - '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.13 - '@tailwindcss/oxide-linux-arm64-gnu': 4.1.13 - '@tailwindcss/oxide-linux-arm64-musl': 4.1.13 - '@tailwindcss/oxide-linux-x64-gnu': 4.1.13 - '@tailwindcss/oxide-linux-x64-musl': 4.1.13 - '@tailwindcss/oxide-wasm32-wasi': 4.1.13 - '@tailwindcss/oxide-win32-arm64-msvc': 4.1.13 - '@tailwindcss/oxide-win32-x64-msvc': 4.1.13 - - '@tailwindcss/typography@0.5.19(tailwindcss@4.1.13)': - dependencies: - postcss-selector-parser: 6.0.10 - tailwindcss: 4.1.13 - - '@tailwindcss/vite@4.1.13(vite@7.1.7(@types/node@24.5.1)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': - dependencies: - '@tailwindcss/node': 4.1.13 - '@tailwindcss/oxide': 4.1.13 - tailwindcss: 4.1.13 - vite: 7.1.7(@types/node@24.5.1)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) - '@testing-library/dom@10.4.0': dependencies: '@babel/code-frame': 7.27.1 - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.4 '@types/aria-query': 5.0.4 aria-query: 5.3.0 chalk: 4.1.2 @@ -19553,7 +18898,8 @@ snapshots: dependencies: '@types/express': 5.0.3 - '@types/cookie@0.6.0': {} + '@types/cookie@0.6.0': + optional: true '@types/cookiejar@2.1.5': {} @@ -19779,12 +19125,6 @@ snapshots: '@types/js-yaml@4.0.9': {} - '@types/jsdom@21.1.7': - dependencies: - '@types/node': 22.15.21 - '@types/tough-cookie': 4.0.5 - parse5: 7.3.0 - '@types/json-schema@7.0.15': {} '@types/jsonfile@6.1.4': @@ -19851,11 +19191,7 @@ snapshots: '@types/node@16.9.1': {} - '@types/node@20.17.32': - dependencies: - undici-types: 6.19.8 - - '@types/node@20.19.11': + '@types/node@20.19.17': dependencies: undici-types: 6.21.0 @@ -19871,7 +19207,7 @@ snapshots: dependencies: undici-types: 6.21.0 - '@types/node@24.5.1': + '@types/node@24.5.2': dependencies: undici-types: 7.12.0 optional: true @@ -19995,7 +19331,8 @@ snapshots: '@types/tmp@0.2.6': {} - '@types/tough-cookie@4.0.5': {} + '@types/tough-cookie@4.0.5': + optional: true '@types/trusted-types@2.0.7': optional: true @@ -20252,20 +19589,20 @@ snapshots: - bufferutil - utf-8-validate - '@vitest/browser@3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(playwright@1.55.1)(utf-8-validate@6.0.5)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.19.2(bufferutil@4.0.9)(utf-8-validate@6.0.5))': + '@vitest/browser@3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(playwright@1.55.1)(utf-8-validate@6.0.5)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))': dependencies: '@testing-library/dom': 10.4.0 '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.0) - '@vitest/mocker': 3.2.4(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) + '@vitest/mocker': 3.2.4(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) '@vitest/utils': 3.2.4 magic-string: 0.30.17 sirv: 3.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.6)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.6.0)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.6)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@19.0.1)(jiti@2.6.0)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) optionalDependencies: playwright: 1.55.1 - webdriverio: 9.19.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) + webdriverio: 9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - bufferutil - msw @@ -20284,7 +19621,7 @@ snapshots: magicast: 0.3.5 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.6)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.6.0)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.6)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@19.0.1)(jiti@2.6.0)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -20303,9 +19640,9 @@ snapshots: std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.6)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.6.0)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.6)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@19.0.1)(jiti@2.6.0)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) optionalDependencies: - '@vitest/browser': 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(playwright@1.55.1)(utf-8-validate@6.0.5)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.19.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + '@vitest/browser': 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(playwright@1.55.1)(utf-8-validate@6.0.5)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)) transitivePeerDependencies: - supports-color @@ -20317,14 +19654,14 @@ snapshots: chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': + '@vitest/mocker@3.2.4(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: msw: 2.7.5(@types/node@22.18.6)(typescript@5.9.2) - vite: 7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) '@vitest/pretty-format@3.2.4': dependencies: @@ -20355,7 +19692,7 @@ snapshots: sirv: 3.0.1 tinyglobby: 0.2.14 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.6)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.6.0)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.6)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@19.0.1)(jiti@2.6.0)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) '@vitest/utils@3.2.4': dependencies: @@ -20410,14 +19747,15 @@ snapshots: '@vue/shared@3.5.14': {} - '@wdio/config@9.19.2': + '@wdio/config@9.20.0': dependencies: '@wdio/logger': 9.18.0 - '@wdio/types': 9.19.2 - '@wdio/utils': 9.19.2 + '@wdio/types': 9.20.0 + '@wdio/utils': 9.20.0 deepmerge-ts: 7.1.5 glob: 10.4.5 - import-meta-resolve: 4.1.0 + import-meta-resolve: 4.2.0 + jiti: 2.6.0 transitivePeerDependencies: - bare-buffer - supports-color @@ -20428,29 +19766,29 @@ snapshots: loglevel: 1.9.2 loglevel-plugin-prefix: 0.8.4 safe-regex2: 5.0.0 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 '@wdio/protocols@9.16.2': {} '@wdio/repl@9.16.2': dependencies: - '@types/node': 20.19.11 + '@types/node': 20.19.17 - '@wdio/types@9.19.2': + '@wdio/types@9.20.0': dependencies: - '@types/node': 20.19.11 + '@types/node': 20.19.17 - '@wdio/utils@9.19.2': + '@wdio/utils@9.20.0': dependencies: - '@puppeteer/browsers': 2.10.7 + '@puppeteer/browsers': 2.10.10 '@wdio/logger': 9.18.0 - '@wdio/types': 9.19.2 + '@wdio/types': 9.20.0 decamelize: 6.0.1 deepmerge-ts: 7.1.5 edgedriver: 6.1.2 geckodriver: 5.0.0 get-port: 7.1.0 - import-meta-resolve: 4.1.0 + import-meta-resolve: 4.2.0 locate-app: 2.5.0 mitt: 3.0.1 safaridriver: 1.0.0 @@ -20544,7 +19882,7 @@ snapshots: '@xtuc/long@4.2.2': {} - '@zip.js/zip.js@2.7.72': {} + '@zip.js/zip.js@2.8.2': {} abab@2.0.6: {} @@ -20707,7 +20045,7 @@ snapshots: ansi-styles@6.2.3: {} - ansis@4.1.0: {} + ansis@4.2.0: {} any-base@1.1.0: {} @@ -20787,10 +20125,42 @@ snapshots: array-flatten@1.1.1: {} - array-timsort@1.0.3: {} + array-includes@3.1.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + is-string: 1.1.1 + math-intrinsics: 1.1.0 array-union@2.1.0: {} + array.prototype.findlast@1.2.5: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-shim-unscopables: 1.1.0 + + array.prototype.flat@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-shim-unscopables: 1.1.0 + + array.prototype.flatmap@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-shim-unscopables: 1.1.0 + array.prototype.reduce@1.0.8: dependencies: call-bind: 1.0.8 @@ -20802,6 +20172,14 @@ snapshots: es-object-atoms: 1.1.1 is-string: 1.1.1 + array.prototype.tosorted@1.1.4: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-shim-unscopables: 1.1.0 + arraybuffer.prototype.slice@1.0.4: dependencies: array-buffer-byte-length: 1.0.2 @@ -20816,6 +20194,10 @@ snapshots: assertion-error@2.0.1: {} + ast-metadata-inferer@0.8.1: + dependencies: + '@mdn/browser-compat-data': 5.7.6 + ast-types@0.13.4: dependencies: tslib: 2.8.1 @@ -20867,17 +20249,8 @@ snapshots: transitivePeerDependencies: - debug - axobject-query@4.1.0: {} - b4a@1.6.7: {} - babel-plugin-macros@3.1.0: - dependencies: - '@babel/runtime': 7.28.4 - cosmiconfig: 7.1.0 - resolve: 1.22.10 - optional: true - babel-plugin-transform-hook-names@1.0.2(@babel/core@7.28.0): dependencies: '@babel/core': 7.28.0 @@ -20894,6 +20267,9 @@ snapshots: bare-events@2.6.0: optional: true + bare-events@2.7.0: + optional: true + bare-fs@4.1.6: dependencies: bare-events: 2.6.0 @@ -20901,6 +20277,15 @@ snapshots: bare-stream: 2.6.5(bare-events@2.6.0) optional: true + bare-fs@4.4.5: + dependencies: + bare-events: 2.7.0 + bare-path: 3.0.0 + bare-stream: 2.7.0(bare-events@2.7.0) + bare-url: 2.2.2 + fast-fifo: 1.3.2 + optional: true + bare-os@3.6.1: optional: true @@ -20916,6 +20301,18 @@ snapshots: bare-events: 2.6.0 optional: true + bare-stream@2.7.0(bare-events@2.7.0): + dependencies: + streamx: 2.23.0 + optionalDependencies: + bare-events: 2.7.0 + optional: true + + bare-url@2.2.2: + dependencies: + bare-path: 3.0.0 + optional: true + base32-encode@1.2.0: dependencies: to-data-view: 1.1.0 @@ -21227,8 +20624,8 @@ snapshots: caniuse-api@3.0.0: dependencies: - browserslist: 4.25.1 - caniuse-lite: 1.0.30001727 + browserslist: 4.26.2 + caniuse-lite: 1.0.30001743 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 @@ -21549,8 +20946,6 @@ snapshots: clsx@1.1.1: {} - clsx@2.1.1: {} - codemirror-lang-elixir@4.0.0: dependencies: '@codemirror/language': 6.11.0 @@ -21629,14 +21024,6 @@ snapshots: commander@9.5.0: {} - comment-json@4.2.5: - dependencies: - array-timsort: 1.0.3 - core-util-is: 1.0.3 - esprima: 4.0.1 - has-own-prop: 2.0.0 - repeat-string: 1.6.1 - comment-parser@1.4.1: {} commondir@1.0.1: {} @@ -21693,8 +21080,6 @@ snapshots: connect-history-api-fallback@2.0.0: {} - consola@3.4.0: {} - console-control-strings@1.1.0: optional: true @@ -21725,8 +21110,6 @@ snapshots: cookie@0.7.2: {} - cookie@1.0.2: {} - cookiejar@2.1.4: {} copy-anything@2.0.6: @@ -21875,7 +21258,7 @@ snapshots: css-select@4.3.0: dependencies: boolbase: 1.0.0 - css-what: 6.1.0 + css-what: 6.2.2 domhandler: 4.3.1 domutils: 2.8.0 nth-check: 2.1.1 @@ -22130,6 +21513,7 @@ snapshots: dependencies: '@asamuzakjp/css-color': 3.1.4 rrweb-cssom: 0.8.0 + optional: true csstype@3.1.3: optional: true @@ -22344,6 +21728,7 @@ snapshots: dependencies: whatwg-mimetype: 4.0.0 whatwg-url: 14.2.0 + optional: true data-view-buffer@1.0.2: dependencies: @@ -22413,10 +21798,6 @@ snapshots: dependencies: mimic-response: 3.1.0 - dedent@1.5.1(babel-plugin-macros@3.1.0): - optionalDependencies: - babel-plugin-macros: 3.1.0 - deep-eql@5.0.2: {} deep-equal@1.1.2: @@ -22513,6 +21894,9 @@ snapshots: detect-libc@2.0.4: {} + detect-libc@2.1.1: + optional: true + detect-node-es@1.1.0: {} detect-node@2.1.0: {} @@ -22523,8 +21907,6 @@ snapshots: detect-touch-events@2.0.2: {} - devalue@5.3.2: {} - devlop@1.1.0: dependencies: dequal: 2.0.3 @@ -22555,6 +21937,10 @@ snapshots: dependencies: '@leichtgewicht/ip-codec': 2.0.5 + doctrine@2.1.0: + dependencies: + esutils: 2.0.3 + doctrine@3.0.0: dependencies: esutils: 2.0.3 @@ -22649,7 +22035,7 @@ snapshots: edgedriver@6.1.2: dependencies: '@wdio/logger': 9.18.0 - '@zip.js/zip.js': 2.7.72 + '@zip.js/zip.js': 2.8.2 decamelize: 6.0.1 edge-paths: 3.0.5 fast-xml-parser: 5.2.5 @@ -22775,7 +22161,7 @@ snapshots: - supports-color optional: true - electron@38.1.2: + electron@38.2.0: dependencies: '@electron/get': 2.0.3 '@types/node': 22.18.6 @@ -22918,12 +22304,88 @@ snapshots: unbox-primitive: 1.1.0 which-typed-array: 1.1.19 + es-abstract@1.24.0: + dependencies: + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 + data-view-byte-offset: 1.0.1 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-set-tostringtag: 2.1.0 + es-to-primitive: 1.3.0 + function.prototype.name: 1.1.8 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + get-symbol-description: 1.1.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 + is-callable: 1.2.7 + is-data-view: 1.0.2 + is-negative-zero: 2.0.3 + is-regex: 1.2.1 + is-set: 2.0.3 + is-shared-array-buffer: 1.0.4 + is-string: 1.1.1 + is-typed-array: 1.1.15 + is-weakref: 1.1.1 + math-intrinsics: 1.1.0 + object-inspect: 1.13.4 + object-keys: 1.1.1 + object.assign: 4.1.7 + own-keys: 1.0.1 + regexp.prototype.flags: 1.5.4 + safe-array-concat: 1.1.3 + safe-push-apply: 1.0.0 + safe-regex-test: 1.1.0 + set-proto: 1.0.0 + stop-iteration-iterator: 1.1.0 + string.prototype.trim: 1.2.10 + string.prototype.trimend: 1.0.9 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.3 + typed-array-byte-length: 1.0.3 + typed-array-byte-offset: 1.0.4 + typed-array-length: 1.0.7 + unbox-primitive: 1.1.0 + which-typed-array: 1.1.19 + es-array-method-boxes-properly@1.0.0: {} es-define-property@1.0.1: {} es-errors@1.3.0: {} + es-iterator-helpers@1.2.1: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-set-tostringtag: 2.1.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + iterator.prototype: 1.1.5 + safe-array-concat: 1.1.3 + es-module-lexer@1.7.0: {} es-object-atoms@1.1.1: @@ -22937,6 +22399,10 @@ snapshots: has-tostringtag: 1.0.2 hasown: 2.0.2 + es-shim-unscopables@1.1.0: + dependencies: + hasown: 2.0.2 + es-to-primitive@1.3.0: dependencies: is-callable: 1.2.7 @@ -22997,35 +22463,6 @@ snapshots: '@esbuild/win32-ia32': 0.25.10 '@esbuild/win32-x64': 0.25.10 - esbuild@0.25.9: - optionalDependencies: - '@esbuild/aix-ppc64': 0.25.9 - '@esbuild/android-arm': 0.25.9 - '@esbuild/android-arm64': 0.25.9 - '@esbuild/android-x64': 0.25.9 - '@esbuild/darwin-arm64': 0.25.9 - '@esbuild/darwin-x64': 0.25.9 - '@esbuild/freebsd-arm64': 0.25.9 - '@esbuild/freebsd-x64': 0.25.9 - '@esbuild/linux-arm': 0.25.9 - '@esbuild/linux-arm64': 0.25.9 - '@esbuild/linux-ia32': 0.25.9 - '@esbuild/linux-loong64': 0.25.9 - '@esbuild/linux-mips64el': 0.25.9 - '@esbuild/linux-ppc64': 0.25.9 - '@esbuild/linux-riscv64': 0.25.9 - '@esbuild/linux-s390x': 0.25.9 - '@esbuild/linux-x64': 0.25.9 - '@esbuild/netbsd-arm64': 0.25.9 - '@esbuild/netbsd-x64': 0.25.9 - '@esbuild/openbsd-arm64': 0.25.9 - '@esbuild/openbsd-x64': 0.25.9 - '@esbuild/openharmony-arm64': 0.25.9 - '@esbuild/sunos-x64': 0.25.9 - '@esbuild/win32-arm64': 0.25.9 - '@esbuild/win32-ia32': 0.25.9 - '@esbuild/win32-x64': 0.25.9 - escalade@3.2.0: {} escape-goat@4.0.0: {} @@ -23060,6 +22497,21 @@ snapshots: transitivePeerDependencies: - supports-color + eslint-config-preact@2.0.0(eslint@9.36.0(jiti@2.6.0)): + dependencies: + '@babel/core': 7.28.0 + '@babel/eslint-parser': 7.28.4(@babel/core@7.28.0)(eslint@9.36.0(jiti@2.6.0)) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.28.0) + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.0) + '@eslint/js': 9.36.0 + eslint: 9.36.0(jiti@2.6.0) + eslint-plugin-compat: 6.0.2(eslint@9.36.0(jiti@2.6.0)) + eslint-plugin-react: 7.37.5(eslint@9.36.0(jiti@2.6.0)) + eslint-plugin-react-hooks: 5.2.0(eslint@9.36.0(jiti@2.6.0)) + globals: 16.4.0 + transitivePeerDependencies: + - supports-color + eslint-config-prettier@10.1.8(eslint@9.36.0(jiti@2.6.0)): dependencies: eslint: 9.36.0(jiti@2.6.0) @@ -23076,6 +22528,18 @@ snapshots: validate-npm-package-name: 6.0.2 yaml: 2.8.1 + eslint-plugin-compat@6.0.2(eslint@9.36.0(jiti@2.6.0)): + dependencies: + '@mdn/browser-compat-data': 5.7.6 + ast-metadata-inferer: 0.8.1 + browserslist: 4.26.2 + caniuse-lite: 1.0.30001743 + eslint: 9.36.0(jiti@2.6.0) + find-up: 5.0.0 + globals: 15.15.0 + lodash.memoize: 4.1.2 + semver: 7.7.2 + eslint-plugin-mocha@11.1.0(eslint@9.36.0(jiti@2.6.0)): dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.0)) @@ -23091,23 +22555,27 @@ snapshots: dependencies: eslint: 9.36.0(jiti@2.6.0) - eslint-plugin-svelte@3.12.4(eslint@9.36.0(jiti@2.6.0))(svelte@5.39.6)(ts-node@10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@24.5.1)(typescript@5.9.2)): + eslint-plugin-react@7.37.5(eslint@9.36.0(jiti@2.6.0)): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.0)) - '@jridgewell/sourcemap-codec': 1.5.5 + array-includes: 3.1.9 + array.prototype.findlast: 1.2.5 + array.prototype.flatmap: 1.3.3 + array.prototype.tosorted: 1.1.4 + doctrine: 2.1.0 + es-iterator-helpers: 1.2.1 eslint: 9.36.0(jiti@2.6.0) - esutils: 2.0.3 - globals: 16.4.0 - known-css-properties: 0.37.0 - postcss: 8.5.6 - postcss-load-config: 3.1.4(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@24.5.1)(typescript@5.9.2)) - postcss-safe-parser: 7.0.1(postcss@8.5.6) - semver: 7.7.2 - svelte-eslint-parser: 1.3.3(svelte@5.39.6) - optionalDependencies: - svelte: 5.39.6 - transitivePeerDependencies: - - ts-node + estraverse: 5.3.0 + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.9 + object.fromentries: 2.0.8 + object.values: 1.2.1 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 6.3.1 + string.prototype.matchall: 4.0.12 + string.prototype.repeat: 1.0.0 eslint-scope@5.1.1: dependencies: @@ -23119,6 +22587,8 @@ snapshots: esrecurse: 4.3.0 estraverse: 5.3.0 + eslint-visitor-keys@2.1.0: {} + eslint-visitor-keys@3.4.3: {} eslint-visitor-keys@4.2.1: {} @@ -23165,8 +22635,6 @@ snapshots: transitivePeerDependencies: - supports-color - esm-env@1.2.2: {} - espree@10.4.0: dependencies: acorn: 8.15.0 @@ -23185,10 +22653,6 @@ snapshots: dependencies: estraverse: 5.3.0 - esrap@2.1.0: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - esrecurse@4.3.0: dependencies: estraverse: 5.3.0 @@ -23215,6 +22679,11 @@ snapshots: eventemitter3@5.0.1: {} + events-universal@1.0.1: + dependencies: + bare-events: 2.7.0 + optional: true + events@3.3.0: {} execa@1.0.0: @@ -23744,12 +23213,12 @@ snapshots: geckodriver@5.0.0: dependencies: '@wdio/logger': 9.18.0 - '@zip.js/zip.js': 2.7.72 + '@zip.js/zip.js': 2.8.2 decamelize: 6.0.1 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 node-fetch: 3.3.2 - tar-fs: 3.1.0 + tar-fs: 3.1.1 which: 5.0.0 transitivePeerDependencies: - bare-buffer @@ -23890,7 +23359,7 @@ snapshots: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 3.0.4 + minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 @@ -24022,9 +23491,9 @@ snapshots: handle-thing@2.0.1: {} - happy-dom@18.0.1: + happy-dom@19.0.1: dependencies: - '@types/node': 20.17.32 + '@types/node': 20.19.17 '@types/whatwg-mimetype': 3.0.2 whatwg-mimetype: 3.0.0 @@ -24034,8 +23503,6 @@ snapshots: has-flag@4.0.0: {} - has-own-prop@2.0.0: {} - has-property-descriptors@1.0.2: dependencies: es-define-property: 1.0.1 @@ -24179,7 +23646,7 @@ snapshots: history@4.10.1: dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.4 loose-envify: 1.4.0 resolve-pathname: 3.0.0 tiny-invariant: 1.3.3 @@ -24198,7 +23665,7 @@ snapshots: hosted-git-info@9.0.0: dependencies: - lru-cache: 11.2.1 + lru-cache: 11.2.2 hpack.js@2.1.6: dependencies: @@ -24218,6 +23685,7 @@ snapshots: html-encoding-sniffer@4.0.0: dependencies: whatwg-encoding: 3.1.1 + optional: true html-escaper@2.0.2: {} @@ -24374,8 +23842,6 @@ snapshots: transitivePeerDependencies: - supports-color - human-id@4.1.1: {} - human-signals@2.1.0: {} humanize-ms@1.2.1: @@ -24460,7 +23926,7 @@ snapshots: import-lazy@4.0.0: {} - import-meta-resolve@4.1.0: {} + import-meta-resolve@4.2.0: {} imul@1.0.1: optional: true @@ -24514,6 +23980,7 @@ snapshots: dependencies: jsbn: 1.1.0 sprintf-js: 1.1.3 + optional: true ipaddr.js@1.9.1: {} @@ -24629,6 +24096,8 @@ snapshots: xtend: 4.0.2 optional: true + is-negative-zero@2.0.3: {} + is-network-error@1.2.0: {} is-node-process@1.2.0: @@ -24666,10 +24135,6 @@ snapshots: dependencies: '@types/estree': 1.0.8 - is-reference@3.0.3: - dependencies: - '@types/estree': 1.0.8 - is-regex@1.1.4: dependencies: call-bind: 1.0.8 @@ -24774,6 +24239,15 @@ snapshots: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 + iterator.prototype@1.1.5: + dependencies: + define-data-property: 1.1.4 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + has-symbols: 1.1.0 + set-function-name: 2.0.2 + jackspeak@3.4.3: dependencies: '@isaacs/cliui': 8.0.2 @@ -24871,8 +24345,6 @@ snapshots: jquery@3.7.1: {} - js-sha256@0.11.1: {} - js-tokens@4.0.0: {} js-tokens@9.0.1: {} @@ -24886,7 +24358,8 @@ snapshots: dependencies: argparse: 2.0.1 - jsbn@1.1.0: {} + jsbn@1.1.0: + optional: true jsdoc-type-pratt-parser@4.1.0: {} @@ -24950,6 +24423,7 @@ snapshots: - bufferutil - supports-color - utf-8-validate + optional: true jsesc@3.1.0: {} @@ -25001,6 +24475,13 @@ snapshots: jsplumb@2.15.6: {} + jsx-ast-utils@3.3.5: + dependencies: + array-includes: 3.1.9 + array.prototype.flat: 1.3.3 + object.assign: 4.1.7 + object.values: 1.2.1 + jszip@3.10.1: dependencies: lie: 3.3.0 @@ -25038,8 +24519,6 @@ snapshots: kind-of@6.0.3: {} - kleur@4.1.5: {} - klona@2.0.6: {} knockout@3.5.1: {} @@ -25048,8 +24527,6 @@ snapshots: kolorist@1.8.0: {} - kysely@0.27.6: {} - langium@3.3.1: dependencies: chevrotain: 11.0.3 @@ -25136,7 +24613,7 @@ snapshots: lightningcss@1.30.1: dependencies: - detect-libc: 2.0.4 + detect-libc: 2.1.1 optionalDependencies: lightningcss-darwin-arm64: 1.30.1 lightningcss-darwin-x64: 1.30.1 @@ -25148,6 +24625,7 @@ snapshots: lightningcss-linux-x64-musl: 1.30.1 lightningcss-win32-arm64-msvc: 1.30.1 lightningcss-win32-x64-msvc: 1.30.1 + optional: true lilconfig@2.1.0: {} @@ -25157,7 +24635,7 @@ snapshots: lines-and-columns@1.2.4: {} - lint-staged@16.2.0: + lint-staged@16.2.3: dependencies: commander: 14.0.1 listr2: 9.0.4 @@ -25212,8 +24690,6 @@ snapshots: type-fest: 4.26.0 userhome: 1.0.1 - locate-character@3.0.0: {} - locate-path@2.0.0: dependencies: p-locate: 2.0.0 @@ -25332,10 +24808,6 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 - magic-string@0.30.19: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - magicast@0.3.5: dependencies: '@babel/parser': 7.28.0 @@ -25637,16 +25109,6 @@ snapshots: mdn-data@2.12.2: {} - mdsvex@0.12.6(svelte@5.39.6): - dependencies: - '@types/mdast': 4.0.4 - '@types/unist': 2.0.11 - prism-svelte: 0.4.7 - prismjs: 1.30.0 - svelte: 5.39.6 - unist-util-visit: 2.0.3 - vfile-message: 2.0.4 - media-typer@0.3.0: {} media-typer@1.1.0: {} @@ -26117,8 +25579,6 @@ snapshots: hasown: 2.0.2 isarray: 2.0.5 - mri@1.2.0: {} - mrmime@2.0.1: {} ms@2.0.0: {} @@ -26310,6 +25770,11 @@ snapshots: css-select: 5.2.2 he: 1.2.0 + node-html-parser@7.0.1: + dependencies: + css-select: 5.2.2 + he: 1.2.0 + node-releases@2.0.19: {} node-releases@2.0.21: {} @@ -26443,6 +25908,20 @@ snapshots: has-symbols: 1.1.0 object-keys: 1.1.1 + object.entries@1.1.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + object.fromentries@2.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-object-atoms: 1.1.1 + object.getownpropertydescriptors@2.1.8: dependencies: array.prototype.reduce: 1.0.8 @@ -26453,6 +25932,13 @@ snapshots: gopd: 1.2.0 safe-array-concat: 1.1.3 + object.values@1.2.1: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + obuf@1.1.2: {} oidc-token-hash@5.1.0: {} @@ -26912,7 +26398,7 @@ snapshots: postcss-colormin@6.1.0(postcss@8.5.3): dependencies: - browserslist: 4.25.1 + browserslist: 4.26.2 caniuse-api: 3.0.0 colord: 2.9.3 postcss: 8.5.3 @@ -26942,7 +26428,7 @@ snapshots: postcss-convert-values@6.1.0(postcss@8.5.3): dependencies: - browserslist: 4.25.1 + browserslist: 4.26.2 postcss: 8.5.3 postcss-value-parser: 4.2.0 @@ -27048,14 +26534,6 @@ snapshots: camelcase-css: 2.0.1 postcss: 8.5.6 - postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@24.5.1)(typescript@5.9.2)): - dependencies: - lilconfig: 2.1.0 - yaml: 1.10.2 - optionalDependencies: - postcss: 8.5.6 - ts-node: 10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@24.5.1)(typescript@5.9.2) - postcss-loader@4.3.0(postcss@8.5.3)(webpack@5.101.3(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.25.10)): dependencies: cosmiconfig: 7.1.0 @@ -27121,7 +26599,7 @@ snapshots: postcss-merge-rules@6.1.1(postcss@8.5.3): dependencies: - browserslist: 4.25.1 + browserslist: 4.26.2 caniuse-api: 3.0.0 cssnano-utils: 4.0.2(postcss@8.5.3) postcss: 8.5.3 @@ -27200,7 +26678,7 @@ snapshots: postcss-minify-params@6.1.0(postcss@8.5.3): dependencies: - browserslist: 4.25.1 + browserslist: 4.26.2 cssnano-utils: 4.0.2(postcss@8.5.3) postcss: 8.5.3 postcss-value-parser: 4.2.0 @@ -27437,7 +26915,7 @@ snapshots: postcss-normalize-unicode@6.1.0(postcss@8.5.3): dependencies: - browserslist: 4.25.1 + browserslist: 4.26.2 postcss: 8.5.3 postcss-value-parser: 4.2.0 @@ -27526,7 +27004,7 @@ snapshots: postcss-reduce-initial@6.1.0(postcss@8.5.3): dependencies: - browserslist: 4.25.1 + browserslist: 4.26.2 caniuse-api: 3.0.0 postcss: 8.5.3 @@ -27568,15 +27046,6 @@ snapshots: dependencies: postcss: 8.5.6 - postcss-scss@4.0.9(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - - postcss-selector-parser@6.0.10: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - postcss-selector-parser@6.1.2: dependencies: cssesc: 3.0.0 @@ -27659,6 +27128,15 @@ snapshots: potpack@2.1.0: {} + preact-iso@2.11.0(preact-render-to-string@6.6.1(preact@10.27.2))(preact@10.27.2): + dependencies: + preact: 10.27.2 + preact-render-to-string: 6.6.1(preact@10.27.2) + + preact-render-to-string@6.6.1(preact@10.27.2): + dependencies: + preact: 10.27.2 + preact@10.27.2: {} prebuild-install@7.1.3: @@ -27686,10 +27164,6 @@ snapshots: ansi-styles: 5.2.0 react-is: 17.0.2 - prism-svelte@0.4.7: {} - - prismjs@1.30.0: {} - proc-log@2.0.1: {} proc-log@5.0.0: {} @@ -27869,9 +27343,9 @@ snapshots: react: 16.14.0 scheduler: 0.26.0 - react-i18next@15.7.3(i18next@25.5.2(typescript@5.9.2))(react-dom@19.1.0(react@16.14.0))(react@16.14.0)(typescript@5.9.2): + react-i18next@16.0.0(i18next@25.5.2(typescript@5.9.2))(react-dom@19.1.0(react@16.14.0))(react@16.14.0)(typescript@5.9.2): dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.4 html-parse-stringify: 3.0.1 i18next: 25.5.2(typescript@5.9.2) react: 16.14.0 @@ -28102,7 +27576,8 @@ snapshots: mdast-util-to-markdown: 2.1.2 unified: 11.0.5 - repeat-string@1.6.1: {} + repeat-string@1.6.1: + optional: true require-directory@2.1.1: {} @@ -28138,6 +27613,12 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + resolve@2.0.0-next.5: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + responselike@2.0.1: dependencies: lowercase-keys: 2.0.0 @@ -28204,7 +27685,7 @@ snapshots: '@oxc-project/runtime': 0.77.3 '@oxc-project/types': 0.77.3 '@rolldown/pluginutils': 1.0.0-beta.29 - ansis: 4.1.0 + ansis: 4.2.0 optionalDependencies: '@rolldown/binding-android-arm64': 1.0.0-beta.29 '@rolldown/binding-darwin-arm64': 1.0.0-beta.29 @@ -28221,11 +27702,11 @@ snapshots: '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.29 '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.29 - rollup-plugin-stats@1.5.0(rolldown@1.0.0-beta.29)(rollup@4.52.0)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)): + rollup-plugin-stats@1.5.1(rolldown@1.0.0-beta.29)(rollup@4.52.0)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)): optionalDependencies: rolldown: 1.0.0-beta.29 rollup: 4.52.0 - vite: 7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) rollup-plugin-styles@4.0.0(rollup@4.40.0): dependencies: @@ -28254,13 +27735,13 @@ snapshots: '@rollup/pluginutils': 5.1.4(rollup@4.40.0) rollup: 4.40.0 - rollup-plugin-webpack-stats@2.1.4(rolldown@1.0.0-beta.29)(rollup@4.52.0)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)): + rollup-plugin-webpack-stats@2.1.5(rolldown@1.0.0-beta.29)(rollup@4.52.0)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)): dependencies: rolldown: 1.0.0-beta.29 - rollup-plugin-stats: 1.5.0(rolldown@1.0.0-beta.29)(rollup@4.52.0)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) + rollup-plugin-stats: 1.5.1(rolldown@1.0.0-beta.29)(rollup@4.52.0)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) optionalDependencies: rollup: 4.52.0 - vite: 7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) rollup@4.40.0: dependencies: @@ -28333,7 +27814,8 @@ snapshots: transitivePeerDependencies: - supports-color - rrweb-cssom@0.8.0: {} + rrweb-cssom@0.8.0: + optional: true run-applescript@7.1.0: {} @@ -28348,10 +27830,6 @@ snapshots: tslib: 2.8.1 optional: true - sade@1.8.1: - dependencies: - mri: 1.2.0 - safaridriver@1.0.0: {} safe-array-concat@1.1.3: @@ -28513,6 +27991,7 @@ snapshots: saxes@6.0.0: dependencies: xmlchars: 2.2.0 + optional: true scheduler@0.19.1: dependencies: @@ -28653,8 +28132,6 @@ snapshots: set-blocking@2.0.0: {} - set-cookie-parser@2.7.1: {} - set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 @@ -28783,12 +28260,6 @@ snapshots: mrmime: 2.0.1 totalist: 3.0.1 - sirv@3.0.2: - dependencies: - '@polka/url': 1.0.0-next.29 - mrmime: 2.0.1 - totalist: 3.0.1 - slash@3.0.0: {} slice-ansi@4.0.0: @@ -28858,7 +28329,7 @@ snapshots: dependencies: agent-base: 7.1.4 debug: 4.4.3(supports-color@6.0.0) - socks: 2.8.5 + socks: 2.8.7 transitivePeerDependencies: - supports-color @@ -28868,11 +28339,6 @@ snapshots: smart-buffer: 4.2.0 optional: true - socks@2.8.5: - dependencies: - ip-address: 9.0.5 - smart-buffer: 4.2.0 - socks@2.8.7: dependencies: ip-address: 10.0.1 @@ -28950,12 +28416,8 @@ snapshots: sprintf-js@1.0.3: {} - sprintf-js@1.1.3: {} - - sqlite-wasm-kysely@0.3.0(kysely@0.27.6): - dependencies: - '@sqlite.org/sqlite-wasm': 3.48.0-build4 - kysely: 0.27.6 + sprintf-js@1.1.3: + optional: true sqlite3@5.1.7: dependencies: @@ -29000,6 +28462,11 @@ snapshots: std-env@3.9.0: {} + stop-iteration-iterator@1.1.0: + dependencies: + es-errors: 1.3.0 + internal-slot: 1.1.0 + stream-buffers@2.2.0: optional: true @@ -29025,6 +28492,13 @@ snapshots: bare-events: 2.6.0 optional: true + streamx@2.23.0: + dependencies: + events-universal: 1.0.1 + fast-fifo: 1.3.2 + text-decoder: 1.2.3 + optional: true + strict-event-emitter@0.5.1: optional: true @@ -29053,7 +28527,7 @@ snapshots: dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 string-width@7.2.0: dependencies: @@ -29066,6 +28540,27 @@ snapshots: get-east-asian-width: 1.4.0 strip-ansi: 7.1.2 + string.prototype.matchall@4.0.12: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + regexp.prototype.flags: 1.5.4 + set-function-name: 2.0.2 + side-channel: 1.1.0 + + string.prototype.repeat@1.0.0: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.23.9 + string.prototype.trim@1.2.10: dependencies: call-bind: 1.0.8 @@ -29180,13 +28675,13 @@ snapshots: stylehacks@6.1.1(postcss@8.5.3): dependencies: - browserslist: 4.25.1 + browserslist: 4.26.2 postcss: 8.5.3 postcss-selector-parser: 6.1.2 stylehacks@7.0.4(postcss@8.5.3): dependencies: - browserslist: 4.25.1 + browserslist: 4.26.2 postcss: 8.5.3 postcss-selector-parser: 6.1.2 @@ -29372,46 +28867,6 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte-check@4.3.2(picomatch@4.0.3)(svelte@5.39.6)(typescript@5.9.2): - dependencies: - '@jridgewell/trace-mapping': 0.3.31 - chokidar: 4.0.3 - fdir: 6.5.0(picomatch@4.0.3) - picocolors: 1.1.1 - sade: 1.8.1 - svelte: 5.39.6 - typescript: 5.9.2 - transitivePeerDependencies: - - picomatch - - svelte-eslint-parser@1.3.3(svelte@5.39.6): - dependencies: - eslint-scope: 8.4.0 - eslint-visitor-keys: 4.2.1 - espree: 10.4.0 - postcss: 8.5.6 - postcss-scss: 4.0.9(postcss@8.5.6) - postcss-selector-parser: 7.1.0 - optionalDependencies: - svelte: 5.39.6 - - svelte@5.39.6: - dependencies: - '@jridgewell/remapping': 2.3.5 - '@jridgewell/sourcemap-codec': 1.5.5 - '@sveltejs/acorn-typescript': 1.0.5(acorn@8.15.0) - '@types/estree': 1.0.8 - acorn: 8.15.0 - aria-query: 5.3.2 - axobject-query: 4.1.0 - clsx: 2.1.1 - esm-env: 1.2.2 - esrap: 2.1.0 - is-reference: 3.0.3 - locate-character: 3.0.0 - magic-string: 0.30.19 - zimmerframe: 1.1.4 - svg-pan-zoom@3.6.2: {} svg-tags@1.0.0: {} @@ -29430,7 +28885,7 @@ snapshots: dependencies: '@trysound/sax': 0.2.0 commander: 7.2.0 - css-select: 5.1.0 + css-select: 5.2.2 css-tree: 2.3.1 css-what: 6.1.0 csso: 5.0.5 @@ -29492,8 +28947,6 @@ snapshots: tabulator-tables@6.3.1: {} - tailwindcss@4.1.13: {} - tapable@2.2.2: {} tapable@2.2.3: {} @@ -29527,6 +28980,16 @@ snapshots: transitivePeerDependencies: - bare-buffer + tar-fs@3.1.1: + dependencies: + pump: 3.0.3 + tar-stream: 3.1.7 + optionalDependencies: + bare-fs: 4.4.5 + bare-path: 3.0.0 + transitivePeerDependencies: + - bare-buffer + tar-stream@3.1.7: dependencies: b4a: 1.6.7 @@ -29669,11 +29132,13 @@ snapshots: tinyspy@4.0.3: {} - tldts-core@6.1.86: {} + tldts-core@6.1.86: + optional: true tldts@6.1.86: dependencies: tldts-core: 6.1.86 + optional: true tmp-promise@3.0.3: dependencies: @@ -29722,6 +29187,7 @@ snapshots: tough-cookie@5.1.2: dependencies: tldts: 6.1.86 + optional: true tr46@0.0.3: {} @@ -29732,6 +29198,7 @@ snapshots: tr46@5.1.1: dependencies: punycode: 2.3.1 + optional: true tree-dump@1.1.0(tslib@2.8.1): dependencies: @@ -29809,32 +29276,11 @@ snapshots: optionalDependencies: '@swc/core': 1.11.29(@swc/helpers@0.5.17) - ts-node@10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@24.5.1)(typescript@5.9.2): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 24.5.1 - acorn: 8.14.1 - acorn-walk: 8.3.4 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.9.2 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - optionalDependencies: - '@swc/core': 1.11.29(@swc/helpers@0.5.17) - optional: true - tslib@2.8.1: {} - tsx@4.20.5: + tsx@4.20.6: dependencies: - esbuild: 0.25.9 + esbuild: 0.25.10 get-tsconfig: 4.10.1 optionalDependencies: fsevents: 2.3.3 @@ -29979,8 +29425,6 @@ snapshots: has-symbols: 1.1.0 which-boxed-primitive: 1.1.1 - undici-types@6.19.8: {} - undici-types@6.21.0: {} undici-types@7.12.0: @@ -30041,8 +29485,6 @@ snapshots: '@types/unist': 3.0.3 unist-util-is: 6.0.0 - unist-util-is@4.1.0: {} - unist-util-is@6.0.0: dependencies: '@types/unist': 3.0.3 @@ -30051,30 +29493,15 @@ snapshots: dependencies: '@types/unist': 3.0.3 - unist-util-stringify-position@2.0.3: - dependencies: - '@types/unist': 2.0.11 - unist-util-stringify-position@4.0.0: dependencies: '@types/unist': 3.0.3 - unist-util-visit-parents@3.1.1: - dependencies: - '@types/unist': 2.0.11 - unist-util-is: 4.1.0 - unist-util-visit-parents@6.0.1: dependencies: '@types/unist': 3.0.3 unist-util-is: 6.0.0 - unist-util-visit@2.0.3: - dependencies: - '@types/unist': 2.0.11 - unist-util-is: 4.1.0 - unist-util-visit-parents: 3.1.1 - unist-util-visit@5.0.0: dependencies: '@types/unist': 3.0.3 @@ -30092,13 +29519,6 @@ snapshots: unpipe@1.0.0: {} - unplugin@2.3.10: - dependencies: - '@jridgewell/remapping': 2.3.5 - acorn: 8.15.0 - picomatch: 4.0.3 - webpack-virtual-modules: 0.6.2 - unused-filename@4.0.1: dependencies: escape-string-regexp: 5.0.0 @@ -30172,8 +29592,6 @@ snapshots: utils-merge@1.0.1: {} - uuid@10.0.0: {} - uuid@11.1.0: {} uuid@8.3.2: {} @@ -30202,11 +29620,6 @@ snapshots: vary@1.1.2: {} - vfile-message@2.0.4: - dependencies: - '@types/unist': 2.0.11 - unist-util-stringify-position: 2.0.3 - vfile-message@4.0.2: dependencies: '@types/unist': 3.0.3 @@ -30217,13 +29630,13 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-node@3.2.4(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): + vite-node@3.2.4(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: cac: 6.7.14 debug: 4.4.3(supports-color@6.0.0) es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - jiti @@ -30238,7 +29651,7 @@ snapshots: - tsx - yaml - vite-plugin-dts@4.5.4(@types/node@22.18.6)(rollup@4.52.0)(typescript@5.9.2)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)): + vite-plugin-dts@4.5.4(@types/node@22.18.6)(rollup@4.52.0)(typescript@5.9.2)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)): dependencies: '@microsoft/api-extractor': 7.52.8(@types/node@22.18.6) '@rollup/pluginutils': 5.1.4(rollup@4.52.0) @@ -30251,28 +29664,28 @@ snapshots: magic-string: 0.30.17 typescript: 5.9.2 optionalDependencies: - vite: 7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - rollup - supports-color - vite-plugin-static-copy@3.1.2(vite@7.1.7(@types/node@24.5.1)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)): + vite-plugin-static-copy@3.1.2(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)): dependencies: chokidar: 3.6.0 fs-extra: 11.3.1 p-map: 7.0.3 picocolors: 1.1.1 tinyglobby: 0.2.14 - vite: 7.1.7(@types/node@24.5.1)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - vite-plugin-svgo@2.0.0(typescript@5.9.2)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)): + vite-plugin-svgo@2.0.0(typescript@5.9.2)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)): dependencies: svgo: 3.3.2 typescript: 5.9.2 - vite: 7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - vite-prerender-plugin@0.5.11(vite@7.1.7(@types/node@24.5.1)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)): + vite-prerender-plugin@0.5.11(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)): dependencies: kolorist: 1.8.0 magic-string: 0.30.18 @@ -30280,9 +29693,9 @@ snapshots: simple-code-frame: 1.3.0 source-map: 0.7.6 stack-trace: 1.0.0-pre2 - vite: 7.1.7(@types/node@24.5.1)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): + vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: esbuild: 0.25.10 fdir: 6.5.0(picomatch@4.0.3) @@ -30299,10 +29712,10 @@ snapshots: sass: 1.91.0 sass-embedded: 1.91.0 terser: 5.44.0 - tsx: 4.20.5 + tsx: 4.20.6 yaml: 2.8.1 - vite@7.1.7(@types/node@24.5.1)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): + vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: esbuild: 0.25.10 fdir: 6.5.0(picomatch@4.0.3) @@ -30311,7 +29724,7 @@ snapshots: rollup: 4.52.0 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.5.1 + '@types/node': 24.5.2 fsevents: 2.3.3 jiti: 2.6.0 less: 4.1.3 @@ -30319,18 +29732,14 @@ snapshots: sass: 1.91.0 sass-embedded: 1.91.0 terser: 5.44.0 - tsx: 4.20.5 + tsx: 4.20.6 yaml: 2.8.1 - vitefu@1.1.1(vite@7.1.7(@types/node@24.5.1)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)): - optionalDependencies: - vite: 7.1.7(@types/node@24.5.1)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) - - vitest@3.2.4(@types/debug@4.1.12)(@types/node@22.18.6)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@18.0.1)(jiti@2.6.0)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): + vitest@3.2.4(@types/debug@4.1.12)(@types/node@22.18.6)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@19.0.1)(jiti@2.6.0)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) + '@vitest/mocker': 3.2.4(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -30348,15 +29757,15 @@ snapshots: tinyglobby: 0.2.14 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) - vite-node: 3.2.4(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite-node: 3.2.4(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 '@types/node': 22.18.6 - '@vitest/browser': 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(playwright@1.55.1)(utf-8-validate@6.0.5)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.19.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + '@vitest/browser': 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.6)(typescript@5.9.2))(playwright@1.55.1)(utf-8-validate@6.0.5)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.0)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)) '@vitest/ui': 3.2.4(vitest@3.2.4) - happy-dom: 18.0.1 + happy-dom: 19.0.1 jsdom: 26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - jiti @@ -30412,6 +29821,7 @@ snapshots: w3c-xmlserializer@5.0.0: dependencies: xml-name-validator: 5.0.0 + optional: true wait-port@1.1.0: dependencies: @@ -30442,15 +29852,15 @@ snapshots: web-streams-polyfill@3.3.3: {} - webdriver@9.19.2(bufferutil@4.0.9)(utf-8-validate@6.0.5): + webdriver@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: - '@types/node': 20.19.11 + '@types/node': 20.19.17 '@types/ws': 8.18.1 - '@wdio/config': 9.19.2 + '@wdio/config': 9.20.0 '@wdio/logger': 9.18.0 '@wdio/protocols': 9.16.2 - '@wdio/types': 9.19.2 - '@wdio/utils': 9.19.2 + '@wdio/types': 9.20.0 + '@wdio/utils': 9.20.0 deepmerge-ts: 7.1.5 https-proxy-agent: 7.0.6 undici: 6.21.3 @@ -30461,16 +29871,16 @@ snapshots: - supports-color - utf-8-validate - webdriverio@9.19.2(bufferutil@4.0.9)(utf-8-validate@6.0.5): + webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: - '@types/node': 20.19.11 + '@types/node': 20.19.17 '@types/sinonjs__fake-timers': 8.1.5 - '@wdio/config': 9.19.2 + '@wdio/config': 9.20.0 '@wdio/logger': 9.18.0 '@wdio/protocols': 9.16.2 '@wdio/repl': 9.16.2 - '@wdio/types': 9.19.2 - '@wdio/utils': 9.19.2 + '@wdio/types': 9.20.0 + '@wdio/utils': 9.20.0 archiver: 7.0.1 aria-query: 5.3.2 cheerio: 1.1.2 @@ -30487,7 +29897,7 @@ snapshots: rgb2hex: 0.2.5 serialize-error: 12.0.0 urlpattern-polyfill: 10.1.0 - webdriver: 9.19.2(bufferutil@4.0.9)(utf-8-validate@6.0.5) + webdriver: 9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - bare-buffer - bufferutil @@ -30500,7 +29910,8 @@ snapshots: webidl-conversions@6.1.0: {} - webidl-conversions@7.0.0: {} + webidl-conversions@7.0.0: + optional: true webpack-dev-middleware@7.4.3(webpack@5.101.3(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.25.10)): dependencies: @@ -30563,8 +29974,6 @@ snapshots: webpack-sources@3.3.3: {} - webpack-virtual-modules@0.6.2: {} - webpack@5.101.3(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.25.10): dependencies: '@types/eslint-scope': 3.7.7 @@ -30663,6 +30072,7 @@ snapshots: dependencies: tr46: 5.1.1 webidl-conversions: 7.0.0 + optional: true whatwg-url@5.0.0: dependencies: @@ -30818,7 +30228,8 @@ snapshots: xml-name-validator@3.0.0: {} - xml-name-validator@5.0.0: {} + xml-name-validator@5.0.0: + optional: true xml-parse-from-string@1.0.1: {} @@ -30950,8 +30361,6 @@ snapshots: optionalDependencies: commander: 9.5.0 - zimmerframe@1.1.4: {} - zip-stream@6.0.1: dependencies: archiver-utils: 5.0.2 diff --git a/scripts/build-utils.ts b/scripts/build-utils.ts index 8da5be9d1c..6a08f112e8 100644 --- a/scripts/build-utils.ts +++ b/scripts/build-utils.ts @@ -1,6 +1,6 @@ import { execSync } from "child_process"; import { build as esbuild } from "esbuild"; -import { cpSync, existsSync, rmSync } from "fs"; +import { cpSync, existsSync, rmSync, writeFileSync } from "fs"; import { copySync, emptyDirSync, mkdirpSync } from "fs-extra"; import { join } from "path"; @@ -37,7 +37,7 @@ export default class BuildHelper { } async buildBackend(entryPoints: string[]) { - await esbuild({ + const result = await esbuild({ entryPoints: entryPoints.map(e => join(this.projectDir, e)), tsconfig: join(this.projectDir, "tsconfig.app.json"), platform: "node", @@ -54,6 +54,7 @@ export default class BuildHelper { "./xhr-sync-worker.js", "vite" ], + metafile: true, splitting: false, loader: { ".css": "text", @@ -64,6 +65,7 @@ export default class BuildHelper { }, minify: true }); + writeFileSync(join(this.outDir, "meta.json"), JSON.stringify(result.metafile)); } triggerBuildAndCopyTo(projectToBuild: string, destPath: string) { diff --git a/scripts/electron-rebuild.mts b/scripts/electron-rebuild.mts index 6ed8360e73..b2d41aa88a 100644 --- a/scripts/electron-rebuild.mts +++ b/scripts/electron-rebuild.mts @@ -1,5 +1,5 @@ import { join, resolve } from "path"; -import { cpSync, existsSync, mkdirSync, readFileSync, rmSync } from "fs"; +import { cpSync, exists, existsSync, mkdirSync, readFileSync, rmSync } from "fs"; import { execSync } from "child_process"; import { rebuild } from "@electron/rebuild" import { getElectronPath, isNixOS } from "./utils.mjs"; @@ -12,8 +12,15 @@ function copyNativeDependencies(projectRoot: string) { if (existsSync(destPath)) { rmSync(destPath, { recursive: true }); } - mkdirSync(destPath); - cpSync(join(workspaceRoot, "node_modules/better-sqlite3"), destPath, { recursive: true, dereference: true }); + mkdirSync(destPath, { recursive: true }); + + const sourcePath = join(workspaceRoot, "node_modules/better-sqlite3"); + if (!existsSync(sourcePath)) { + console.warn("Nothing to rebuild as source path is missing:", sourcePath); + console.info("For CI builds with filtered package installs, this is normal. For normal development, it's not."); + process.exit(0); + } + cpSync(sourcePath, destPath, { recursive: true, dereference: true }); } function rebuildNativeDependencies(projectRoot: string) { diff --git a/tsconfig.base.json b/tsconfig.base.json index 76d2e73fcc..22906a79fc 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -5,7 +5,7 @@ "emitDeclarationOnly": true, "importHelpers": true, "isolatedModules": true, - "lib": ["ES2023"], + "lib": ["ES2023", "DOM", "DOM.Iterable"], "module": "nodenext", "moduleResolution": "nodenext", "noEmitOnError": true, diff --git a/tsconfig.json b/tsconfig.json index db83e79781..f2e5a0b657 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -21,6 +21,9 @@ { "path": "./apps/desktop" }, + { + "path": "./apps/website" + }, { "path": "./apps/dump-db" },