From 0b9b99984ead3e86f2dc8f9ed59dac2d8db28609 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ullrich=20Sch=C3=A4fer?= Date: Mon, 6 Apr 2026 22:17:52 +0200 Subject: [PATCH 01/13] Fix all OpenSpec validation failures (36/36 passing) - Add ## Purpose sections and convert delta headers to ## Requirements on all 25 specs - Add SHALL keywords to requirements missing them (gpx-import, planner-session, planner-journal-handoff) - Convert prose GPX format section to proper scenarios (no-go-areas) - Create specs/ delta files for 7 changes that were missing them (activity-photos, local-dev-stack, multi-day-routes, route-discovery, route-sharing, visual-redesign, waypoint-notes) Co-Authored-By: Claude Opus 4.6 (1M context) --- .../specs/activity-photos/spec.md | 52 +++++++++++++++++++ .../specs/local-dev-environment/spec.md | 29 +++++++++++ .../specs/multi-day-routes/spec.md | 50 ++++++++++++++++++ .../specs/route-discovery/spec.md | 28 ++++++++++ .../route-sharing/specs/route-sharing/spec.md | 38 ++++++++++++++ .../specs/design-system/spec.md | 40 ++++++++++++++ .../specs/waypoint-notes/spec.md | 46 ++++++++++++++++ openspec/specs/account-settings/spec.md | 6 ++- openspec/specs/activity-feed/spec.md | 6 ++- openspec/specs/brouter-integration/spec.md | 6 ++- openspec/specs/crash-recovery/spec.md | 4 ++ openspec/specs/gpx-import/spec.md | 10 +++- openspec/specs/infrastructure/spec.md | 6 ++- openspec/specs/journal-auth/spec.md | 6 ++- openspec/specs/local-dev-environment/spec.md | 6 ++- openspec/specs/map-display/spec.md | 6 ++- openspec/specs/no-go-areas/spec.md | 32 ++++++------ openspec/specs/observability/spec.md | 4 ++ .../specs/planner-journal-handoff/spec.md | 8 ++- openspec/specs/planner-session/spec.md | 10 ++-- openspec/specs/rate-limiting/spec.md | 4 ++ openspec/specs/route-coloring/spec.md | 4 ++ openspec/specs/route-drag-reshape/spec.md | 4 ++ openspec/specs/route-management/spec.md | 6 ++- openspec/specs/route-preview/spec.md | 6 ++- openspec/specs/route-splitting/spec.md | 4 ++ openspec/specs/secret-management/spec.md | 4 ++ openspec/specs/security-hardening/spec.md | 4 ++ openspec/specs/session-notes/spec.md | 4 ++ openspec/specs/shared-packages/spec.md | 6 ++- openspec/specs/transactional-emails/spec.md | 4 ++ openspec/specs/wahoo-import/spec.md | 6 ++- 32 files changed, 414 insertions(+), 35 deletions(-) create mode 100644 openspec/changes/activity-photos/specs/activity-photos/spec.md create mode 100644 openspec/changes/local-dev-stack/specs/local-dev-environment/spec.md create mode 100644 openspec/changes/multi-day-routes/specs/multi-day-routes/spec.md create mode 100644 openspec/changes/route-discovery/specs/route-discovery/spec.md create mode 100644 openspec/changes/route-sharing/specs/route-sharing/spec.md create mode 100644 openspec/changes/visual-redesign/specs/design-system/spec.md create mode 100644 openspec/changes/waypoint-notes/specs/waypoint-notes/spec.md diff --git a/openspec/changes/activity-photos/specs/activity-photos/spec.md b/openspec/changes/activity-photos/specs/activity-photos/spec.md new file mode 100644 index 0000000..aa24477 --- /dev/null +++ b/openspec/changes/activity-photos/specs/activity-photos/spec.md @@ -0,0 +1,52 @@ +## ADDED Requirements + +### Requirement: Photo upload via presigned URLs +Users SHALL be able to upload photos to an activity using presigned PUT URLs, with client-side image processing before upload. + +#### Scenario: Upload photo +- **WHEN** a user selects a photo on the activity detail page +- **THEN** the client resizes the image (max 2048px long edge), strips EXIF data, converts to WebP +- **AND** requests a presigned PUT URL from `POST /api/activities/:id/photos` +- **AND** uploads directly to Garage (S3-compatible storage) +- **AND** confirms the upload via `PATCH /api/activities/:id/photos/:photoId` + +#### Scenario: Size limit enforced +- **WHEN** a processed photo exceeds 5 MB +- **THEN** the presigned URL rejects the upload via content-length condition + +#### Scenario: Per-activity photo limit +- **WHEN** an activity already has 20 photos +- **THEN** the server rejects new presigned URL requests + +### Requirement: Photo gallery display +The activity detail page SHALL display uploaded photos in a responsive grid with lightbox viewing. + +#### Scenario: Gallery grid +- **WHEN** a user views an activity with photos +- **THEN** photos are displayed in a responsive grid (1 column mobile, 2 tablet, 3 desktop) with lazy loading + +#### Scenario: Lightbox view +- **WHEN** a user clicks a photo in the gallery +- **THEN** a full-size lightbox overlay opens with left/right navigation and close on escape + +### Requirement: Photo deletion +Activity owners SHALL be able to delete photos with soft delete and background S3 cleanup. + +#### Scenario: Delete photo +- **WHEN** a user clicks the delete icon on a photo +- **THEN** the photo status is set to 'deleted' and it disappears from the UI +- **AND** the S3 object is cleaned up on next page load or periodic cleanup + +### Requirement: Photo storage infrastructure +Photos SHALL be stored in Garage (S3-compatible, self-hosted) running as a Docker container. + +#### Scenario: Garage container +- **WHEN** docker compose starts +- **THEN** a Garage container is running with an `activity-photos` bucket + +### Requirement: Photo privacy disclosure +Photo storage and EXIF handling SHALL be documented in the privacy manifest. + +#### Scenario: Privacy page updated +- **WHEN** a user visits the privacy page +- **THEN** it documents photo storage location, EXIF stripping, and deletion behavior diff --git a/openspec/changes/local-dev-stack/specs/local-dev-environment/spec.md b/openspec/changes/local-dev-stack/specs/local-dev-environment/spec.md new file mode 100644 index 0000000..af699e6 --- /dev/null +++ b/openspec/changes/local-dev-stack/specs/local-dev-environment/spec.md @@ -0,0 +1,29 @@ +## MODIFIED Requirements + +### Requirement: Optional local monitoring stack +The dev environment SHALL support an optional monitoring profile matching the production stack. + +#### Scenario: Start with monitoring +- **WHEN** a developer runs `pnpm dev:full` with `--profile monitoring` +- **THEN** Prometheus, Grafana, and Loki start alongside the app services + +### Requirement: Production-aligned PostgreSQL config +The dev PostgreSQL SHALL match production configuration including pg_stat_statements. + +#### Scenario: pg_stat_statements available +- **WHEN** the dev PostgreSQL container starts +- **THEN** pg_stat_statements is enabled via initialization scripts + +### Requirement: Database seed script +The dev environment SHALL provide a seed script for consistent test data. + +#### Scenario: Seed database +- **WHEN** a developer runs the seed script +- **THEN** test users, routes, and activities are created in the local database + +### Requirement: Dev environment reset +The dev environment SHALL provide a command to tear down and recreate the local stack. + +#### Scenario: Reset dev environment +- **WHEN** a developer runs `pnpm dev:reset` +- **THEN** all Docker volumes are removed, containers are recreated, and the database is re-seeded diff --git a/openspec/changes/multi-day-routes/specs/multi-day-routes/spec.md b/openspec/changes/multi-day-routes/specs/multi-day-routes/spec.md new file mode 100644 index 0000000..45c50a4 --- /dev/null +++ b/openspec/changes/multi-day-routes/specs/multi-day-routes/spec.md @@ -0,0 +1,50 @@ +## ADDED Requirements + +### Requirement: Overnight waypoint markers +Any waypoint SHALL be toggleable as an overnight stop, creating day boundaries in the route. + +#### Scenario: Toggle overnight +- **WHEN** a user toggles the overnight flag on a waypoint +- **THEN** the waypoint's `overnight: true` flag is set in the Yjs document +- **AND** the route is visually divided into days at that point + +#### Scenario: Implicit day boundaries +- **WHEN** overnight stops are set +- **THEN** the first waypoint is the implicit start of Day 1 and the last waypoint is the implicit end of the final day + +### Requirement: Per-day statistics +The Planner SHALL compute and display distance, ascent, and estimated duration for each day. + +#### Scenario: Day stats computed +- **WHEN** a route has overnight waypoints +- **THEN** per-day distance, total ascent, and estimated duration are derived from segment boundaries and coordinates + +### Requirement: Day-aware sidebar +The sidebar SHALL group waypoints by day with collapsible sections and per-day stats. + +#### Scenario: Day breakdown +- **WHEN** a route has multiple days +- **THEN** waypoints are grouped under "Day 1", "Day 2", etc. with collapsible sections +- **AND** each section header shows day distance and ascent + +### Requirement: Elevation chart day dividers +The elevation chart SHALL show day boundaries as dashed vertical lines. + +#### Scenario: Day dividers on chart +- **WHEN** a route has multiple days +- **THEN** dashed vertical lines with "Day N" labels appear at each overnight waypoint position + +### Requirement: Map day labels +The map SHALL display day summary labels at day boundary waypoints. + +#### Scenario: Day labels on map +- **WHEN** a route has multiple days +- **THEN** white pill markers at day boundaries show "Day N . X km" + +### Requirement: Multi-day GPX export +Day structure SHALL be preserved in GPX exports via waypoint type elements. + +#### Scenario: Export multi-day route +- **WHEN** a user exports a plan with overnight waypoints +- **THEN** overnight waypoints include a `overnight` element in the GPX +- **AND** reimporting the GPX restores the day structure diff --git a/openspec/changes/route-discovery/specs/route-discovery/spec.md b/openspec/changes/route-discovery/specs/route-discovery/spec.md new file mode 100644 index 0000000..93264b9 --- /dev/null +++ b/openspec/changes/route-discovery/specs/route-discovery/spec.md @@ -0,0 +1,28 @@ +## ADDED Requirements + +### Requirement: Map-based route exploration +The Journal SHALL provide an explore page with a full-page map for browsing public routes by location. + +#### Scenario: Browse public routes +- **WHEN** a user visits `/routes/explore` +- **THEN** a full-page Leaflet map is displayed +- **AND** public routes within the current viewport are shown as clickable polylines + +#### Scenario: Route popup +- **WHEN** a user clicks a route polyline on the explore map +- **THEN** a popup shows the route name, distance, elevation gain, author, and a link to the detail page + +### Requirement: Bounding box spatial query +The Journal SHALL provide an API endpoint for querying public routes by map viewport bounds. + +#### Scenario: Viewport query +- **WHEN** the map viewport changes +- **THEN** the client requests routes intersecting the current bounds via PostGIS `ST_Intersects` +- **AND** results are limited to 50 routes with simplified geometries + +### Requirement: Spatial index +The routes table SHALL have a GiST index on the geometry column for fast bounding box queries. + +#### Scenario: Index exists +- **WHEN** the database is set up +- **THEN** a GiST index on `journal.routes.geom` supports efficient spatial queries diff --git a/openspec/changes/route-sharing/specs/route-sharing/spec.md b/openspec/changes/route-sharing/specs/route-sharing/spec.md new file mode 100644 index 0000000..bd8fddf --- /dev/null +++ b/openspec/changes/route-sharing/specs/route-sharing/spec.md @@ -0,0 +1,38 @@ +## ADDED Requirements + +### Requirement: Route visibility +Routes and activities SHALL support private (default) and public visibility levels. + +#### Scenario: Set route public +- **WHEN** a route owner toggles visibility to "public" +- **THEN** the route is viewable by anyone with the link + +#### Scenario: Default private +- **WHEN** a new route is created +- **THEN** its visibility is "private" (owner-only) + +### Requirement: Per-user route sharing +Route owners SHALL be able to share routes with specific users at view or edit permission levels. + +#### Scenario: Share with user +- **WHEN** a route owner shares a route with another user at "view" level +- **THEN** the shared user sees the route in their collection and can view it + +#### Scenario: Edit permission +- **WHEN** a route owner shares a route with "edit" permission +- **THEN** the shared user can update the route name, description, and GPX + +### Requirement: Route forking +Logged-in users SHALL be able to fork any public route into their own collection. + +#### Scenario: Fork public route +- **WHEN** a user clicks "Fork" on a public route +- **THEN** a copy of the route metadata and latest GPX is created in their collection +- **AND** a `forkedFromId` link references the original route + +### Requirement: Contributor tracking +Route versions SHALL record the identity of the contributor who saved them. + +#### Scenario: Planner callback contributor +- **WHEN** the Planner saves back to the Journal via JWT callback +- **THEN** the contributor's identity is recorded on the new route version diff --git a/openspec/changes/visual-redesign/specs/design-system/spec.md b/openspec/changes/visual-redesign/specs/design-system/spec.md new file mode 100644 index 0000000..e01a1b8 --- /dev/null +++ b/openspec/changes/visual-redesign/specs/design-system/spec.md @@ -0,0 +1,40 @@ +## ADDED Requirements + +### Requirement: Design token system +The Planner SHALL use CSS custom properties for colors, typography, and spacing with Tailwind config extensions. + +#### Scenario: Consistent styling +- **WHEN** a component is styled +- **THEN** it uses project design tokens (warm off-whites, sage green accent, earthy tones) via Tailwind classes + +#### Scenario: Typography +- **WHEN** text is rendered +- **THEN** body text uses Outfit font and statistics use Geist Mono + +### Requirement: Redesigned topbar +The Planner topbar SHALL include a logo, segmented color mode toggle, participant avatars, and export controls. + +#### Scenario: Topbar layout +- **WHEN** a user is in a planning session +- **THEN** the topbar shows: logo with mountain mark, color mode toggle, participant avatars with names, and Export GPX button + +### Requirement: Redesigned sidebar +The Planner sidebar SHALL display a route summary header with stats, collapsible day breakdown, and waypoints nested inside days. + +#### Scenario: Route summary +- **WHEN** a route is computed +- **THEN** the sidebar header shows route name, distance, ascent, and estimated duration + +### Requirement: Redesigned map markers +Map waypoint markers SHALL use olive/dark numbered circles with overnight badges on stop waypoints. + +#### Scenario: Marker styling +- **WHEN** waypoints are displayed on the map +- **THEN** they appear as dark numbered circles instead of default blue markers + +### Requirement: Mobile responsive layout +The Planner SHALL use a bottom sheet pattern on mobile instead of a hidden sidebar. + +#### Scenario: Mobile view +- **WHEN** the Planner is viewed on a mobile device +- **THEN** a bottom sheet replaces the sidebar with swipeable tabs (Days/Waypoints/Notes) diff --git a/openspec/changes/waypoint-notes/specs/waypoint-notes/spec.md b/openspec/changes/waypoint-notes/specs/waypoint-notes/spec.md new file mode 100644 index 0000000..1a8e3d5 --- /dev/null +++ b/openspec/changes/waypoint-notes/specs/waypoint-notes/spec.md @@ -0,0 +1,46 @@ +## ADDED Requirements + +### Requirement: Per-waypoint text notes +Each waypoint SHALL support an optional plain-text note synced via Yjs. + +#### Scenario: Add note to waypoint +- **WHEN** a user clicks the note area under a waypoint in the sidebar and types text +- **THEN** the note is stored in the waypoint's Y.Map as a `note` string field +- **AND** auto-saves on blur + +#### Scenario: Note syncs to participants +- **WHEN** a user adds or edits a waypoint note +- **THEN** all other participants see the update in real-time via Yjs + +### Requirement: Map note indicators +Waypoint markers with notes SHALL show a visual indicator on the map. + +#### Scenario: Note icon on marker +- **WHEN** a waypoint has a note +- **THEN** its map marker shows a small note icon + +#### Scenario: Note tooltip +- **WHEN** a user hovers or taps a marker with a note +- **THEN** the note text appears in a tooltip + +### Requirement: Notes in GPX export +Waypoint notes SHALL be exported as `` elements in GPX output. + +#### Scenario: Export notes +- **WHEN** a user exports a plan with waypoint notes +- **THEN** each waypoint's note appears as a `` element in the GPX file + +### Requirement: Nearby POI display +When a waypoint is selected, nearby POIs from OpenStreetMap SHALL be shown on the map and in the sidebar. + +#### Scenario: POI lookup +- **WHEN** a user selects a waypoint +- **THEN** nearby POIs are fetched from the Overpass API and displayed as small markers on the map and as a list in the sidebar + +### Requirement: Snap waypoint to POI +Users SHALL be able to move a waypoint to a nearby POI's exact coordinates. + +#### Scenario: Snap to POI +- **WHEN** a user clicks a nearby POI +- **THEN** the waypoint moves to the POI's coordinates +- **AND** the POI's name and type are added as a note prefix (e.g., "Campsite - Waldcamp Fichtelberg") diff --git a/openspec/specs/account-settings/spec.md b/openspec/specs/account-settings/spec.md index e323676..385c578 100644 --- a/openspec/specs/account-settings/spec.md +++ b/openspec/specs/account-settings/spec.md @@ -1,4 +1,8 @@ -## MODIFIED Requirements +## Purpose + +User account settings page with connected services management, profile editing, and security controls. + +## Requirements ### Requirement: Connected Services section The settings page SHALL include a "Connected Services" section for managing external integrations. diff --git a/openspec/specs/activity-feed/spec.md b/openspec/specs/activity-feed/spec.md index aed90e4..21f2c7b 100644 --- a/openspec/specs/activity-feed/spec.md +++ b/openspec/specs/activity-feed/spec.md @@ -1,4 +1,8 @@ -## ADDED Requirements +## Purpose + +Activity creation, chronological feed, detail views, and route linking in the Journal app. + +## Requirements ### Requirement: Create activity The Journal SHALL allow authenticated users to create an activity by uploading a GPX trace and adding a description. diff --git a/openspec/specs/brouter-integration/spec.md b/openspec/specs/brouter-integration/spec.md index 6757712..3ccf4fa 100644 --- a/openspec/specs/brouter-integration/spec.md +++ b/openspec/specs/brouter-integration/spec.md @@ -1,4 +1,8 @@ -## ADDED Requirements +## Purpose + +Route computation between waypoints via the BRouter HTTP API, including routing host election, result broadcasting via Yjs, profile selection, and rate-limited proxying. + +## Requirements ### Requirement: Route computation from waypoints The Planner SHALL compute a route between ordered waypoints by calling the BRouter HTTP API with tiledesc enabled and returning the result as an EnrichedRoute, preserving per-point elevation, surface data, and segment boundary indices. diff --git a/openspec/specs/crash-recovery/spec.md b/openspec/specs/crash-recovery/spec.md index 20de3f4..d760b38 100644 --- a/openspec/specs/crash-recovery/spec.md +++ b/openspec/specs/crash-recovery/spec.md @@ -1,3 +1,7 @@ +## Purpose + +Browser crash resilience via localStorage-based Yjs state persistence and recovery on reconnect. + ## Requirements ### Requirement: localStorage crash recovery diff --git a/openspec/specs/gpx-import/spec.md b/openspec/specs/gpx-import/spec.md index 2666e02..f066bff 100644 --- a/openspec/specs/gpx-import/spec.md +++ b/openspec/specs/gpx-import/spec.md @@ -1,4 +1,8 @@ -## ADDED Requirements +## Purpose + +GPX file import in the Planner via home page file picker and in-session drag-and-drop, with client-side parsing and waypoint extraction. + +## Requirements ### Requirement: Import GPX from home page Users SHALL be able to import a GPX file from the planner home page to start a new planning session. @@ -30,7 +34,9 @@ Users SHALL be able to drag a GPX file onto the map in an existing session. - **WHEN** a user drops a GPX file and the confirmation dialog appears - **THEN** clicking "Cancel" leaves the session unchanged -### Requirement: Non-GPX files are rejected +### Requirement: Non-GPX file rejection +The Planner SHALL reject non-GPX files dropped on the map. + #### Scenario: Drop non-GPX file - **WHEN** a user drops a non-GPX file on the map - **THEN** the file is ignored with a brief error toast diff --git a/openspec/specs/infrastructure/spec.md b/openspec/specs/infrastructure/spec.md index b37dfe6..b708a26 100644 --- a/openspec/specs/infrastructure/spec.md +++ b/openspec/specs/infrastructure/spec.md @@ -1,4 +1,8 @@ -## ADDED Requirements +## Purpose + +Server provisioning on Hetzner, Docker Compose deployment, CI/CD pipelines, database and BRouter management, TLS, Sentry, Grafana, and monitoring stack for the flagship instance. + +## Requirements ### Requirement: Terraform Hetzner provisioning Infrastructure SHALL be provisioned on Hetzner Cloud using Terraform with the Hetzner provider. diff --git a/openspec/specs/journal-auth/spec.md b/openspec/specs/journal-auth/spec.md index 4d8a60e..ffd4d34 100644 --- a/openspec/specs/journal-auth/spec.md +++ b/openspec/specs/journal-auth/spec.md @@ -1,4 +1,8 @@ -## MODIFIED Requirements +## Purpose + +Authentication for the Journal app, including OAuth token storage for external services in the sync_connections table. + +## Requirements ### Requirement: Store external service tokens The journal auth system SHALL store OAuth tokens for external services alongside user credentials. diff --git a/openspec/specs/local-dev-environment/spec.md b/openspec/specs/local-dev-environment/spec.md index d943ad8..e9de720 100644 --- a/openspec/specs/local-dev-environment/spec.md +++ b/openspec/specs/local-dev-environment/spec.md @@ -1,4 +1,8 @@ -## ADDED Requirements +## Purpose + +One-command local development setup with PostgreSQL, BRouter, automatic schema migration, and segment downloading. + +## Requirements ### Requirement: One-command dev startup The project SHALL provide a single command that starts all services needed for local development. diff --git a/openspec/specs/map-display/spec.md b/openspec/specs/map-display/spec.md index f9c7760..bdbb97e 100644 --- a/openspec/specs/map-display/spec.md +++ b/openspec/specs/map-display/spec.md @@ -1,4 +1,8 @@ -## ADDED Requirements +## Purpose + +Interactive map rendering with Leaflet and OSM tiles, waypoint editing, route visualization, elevation profiles, multiplayer cursors, and polygon drawing for both Planner and Journal apps. + +## Requirements ### Requirement: Map rendering with OSM tiles The Planner and Journal SHALL render interactive maps using Leaflet with OpenStreetMap tiles as the default base layer. diff --git a/openspec/specs/no-go-areas/spec.md b/openspec/specs/no-go-areas/spec.md index 5c4c60d..d60a68f 100644 --- a/openspec/specs/no-go-areas/spec.md +++ b/openspec/specs/no-go-areas/spec.md @@ -1,3 +1,7 @@ +## Purpose + +Polygon-based route avoidance areas drawn on the map, synced via Yjs, sent to BRouter as constraints, and persisted in GPX extensions. + ## Requirements ### Requirement: Draw no-go areas @@ -35,22 +39,16 @@ No-go areas SHALL be preserved when saving to the journal or exporting a plan. - **AND** the file is compatible with any GPX-consuming application ### Requirement: GPX extensions format -No-go areas are stored in GPX using a custom XML namespace: +No-go areas SHALL be stored in GPX using the `trails:planning` custom XML namespace with point-based polygon representation. -```xml - - - - - - - - - - - -``` +#### Scenario: Valid no-go area in GPX +- **WHEN** a GPX file contains a `` element with 3+ `` child elements +- **THEN** the parser creates a no-go area polygon from the point coordinates -- Each `` element contains 3+ `` elements -- Parser accepts both namespaced (`trails:nogo`) and non-namespaced (`nogo`) elements -- Areas with fewer than 3 points are rejected on parse +#### Scenario: Namespace-agnostic parsing +- **WHEN** a GPX file contains non-namespaced `` elements instead of `` +- **THEN** the parser accepts them identically + +#### Scenario: Invalid no-go area rejected +- **WHEN** a GPX file contains a no-go area with fewer than 3 points +- **THEN** the parser rejects it diff --git a/openspec/specs/observability/spec.md b/openspec/specs/observability/spec.md index 88ae7ca..ae48ccc 100644 --- a/openspec/specs/observability/spec.md +++ b/openspec/specs/observability/spec.md @@ -1,3 +1,7 @@ +## Purpose + +Health endpoints, Prometheus metrics, structured logging, Grafana dashboards, and alerting for both apps and the flagship instance. + ## Requirements ### Requirement: Health endpoints diff --git a/openspec/specs/planner-journal-handoff/spec.md b/openspec/specs/planner-journal-handoff/spec.md index 900a2a0..ec2bf29 100644 --- a/openspec/specs/planner-journal-handoff/spec.md +++ b/openspec/specs/planner-journal-handoff/spec.md @@ -1,7 +1,11 @@ -## MODIFIED Requirements +## Purpose + +Round-trip GPX exchange between Planner and Journal, including JWT-scoped callbacks for saving routes and GPX reimport in the Planner. + +## Requirements ### Requirement: Export Plan reimport -The "Export Plan" GPX can now be reimported directly in the planner via the file upload UI, completing the round-trip without needing the journal. +The Planner SHALL support reimporting an exported plan GPX via the file upload UI, completing the round-trip without needing the journal. #### Scenario: Reimport exported plan - **WHEN** a user exports a plan and later imports it via the planner's GPX upload diff --git a/openspec/specs/planner-session/spec.md b/openspec/specs/planner-session/spec.md index 9026a2b..e839e41 100644 --- a/openspec/specs/planner-session/spec.md +++ b/openspec/specs/planner-session/spec.md @@ -1,7 +1,11 @@ -## MODIFIED Requirements +## Purpose -### Requirement: Session initialization -Sessions can now be initialized from a GPX file upload in addition to URL parameters and the journal handoff. +Collaborative planning session management with Yjs CRDT synchronization, supporting initialization from URL parameters, journal handoff, and GPX file upload. + +## Requirements + +### Requirement: Session initialization from GPX +The Planner SHALL support initializing sessions from a GPX file upload in addition to URL parameters and the journal handoff. #### Scenario: Session created from GPX upload - **WHEN** a session is created via GPX file upload on the home page diff --git a/openspec/specs/rate-limiting/spec.md b/openspec/specs/rate-limiting/spec.md index d9e8681..0e81957 100644 --- a/openspec/specs/rate-limiting/spec.md +++ b/openspec/specs/rate-limiting/spec.md @@ -1,3 +1,7 @@ +## Purpose + +Request rate limiting for Planner session creation and BRouter API calls to prevent abuse. + ## Requirements ### Requirement: Session creation rate limit diff --git a/openspec/specs/route-coloring/spec.md b/openspec/specs/route-coloring/spec.md index a837197..be460ea 100644 --- a/openspec/specs/route-coloring/spec.md +++ b/openspec/specs/route-coloring/spec.md @@ -1,3 +1,7 @@ +## Purpose + +Multi-mode route visualization (plain, elevation gradient, surface type) with session-synced color mode selection. + ## Requirements ### Requirement: Route color modes diff --git a/openspec/specs/route-drag-reshape/spec.md b/openspec/specs/route-drag-reshape/spec.md index 676ecb5..a5002c7 100644 --- a/openspec/specs/route-drag-reshape/spec.md +++ b/openspec/specs/route-drag-reshape/spec.md @@ -1,3 +1,7 @@ +## Purpose + +Ghost marker drag interaction for reshaping routes by inserting new waypoints mid-segment. + ## Requirements ### Requirement: Ghost marker on route hover diff --git a/openspec/specs/route-management/spec.md b/openspec/specs/route-management/spec.md index b911f1e..df14b4b 100644 --- a/openspec/specs/route-management/spec.md +++ b/openspec/specs/route-management/spec.md @@ -1,4 +1,8 @@ -## ADDED Requirements +## Purpose + +Route CRUD operations, GPX import/export, sequential versioning, PostGIS spatial storage, and route metadata in the Journal app. + +## Requirements ### Requirement: Create route The Journal SHALL allow authenticated users to create a new route with a name and optional description. diff --git a/openspec/specs/route-preview/spec.md b/openspec/specs/route-preview/spec.md index 6b4a297..52c6bcf 100644 --- a/openspec/specs/route-preview/spec.md +++ b/openspec/specs/route-preview/spec.md @@ -1,4 +1,8 @@ -## ADDED Requirements +## Purpose + +Map thumbnails on route and activity list pages, and interactive maps with zoom and layer switching on detail pages. + +## Requirements ### Requirement: Route map preview on list pages Route and activity list pages SHALL show a small map thumbnail for each item that has geometry. diff --git a/openspec/specs/route-splitting/spec.md b/openspec/specs/route-splitting/spec.md index 95cb2f1..54e1556 100644 --- a/openspec/specs/route-splitting/spec.md +++ b/openspec/specs/route-splitting/spec.md @@ -1,3 +1,7 @@ +## Purpose + +Waypoint insertion by clicking the ghost marker on the route polyline, splitting a segment into two. + ## Requirements ### Requirement: Insert waypoint by clicking on route diff --git a/openspec/specs/secret-management/spec.md b/openspec/specs/secret-management/spec.md index 3d64bb1..d31b9c2 100644 --- a/openspec/specs/secret-management/spec.md +++ b/openspec/specs/secret-management/spec.md @@ -1,3 +1,7 @@ +## Purpose + +SOPS-encrypted secrets stored in the repository, split into app and infra files, decryptable with a single age key at deploy time. + ## Requirements ### Requirement: Encrypted secrets in repository diff --git a/openspec/specs/security-hardening/spec.md b/openspec/specs/security-hardening/spec.md index 874ec46..35b4e7e 100644 --- a/openspec/specs/security-hardening/spec.md +++ b/openspec/specs/security-hardening/spec.md @@ -1,3 +1,7 @@ +## Purpose + +Security headers, scanner path blocking, secret scanning, dependency auditing, non-root containers, and vulnerability disclosure policy. + ## Requirements ### Requirement: Security response headers diff --git a/openspec/specs/session-notes/spec.md b/openspec/specs/session-notes/spec.md index dac0808..1c206c2 100644 --- a/openspec/specs/session-notes/spec.md +++ b/openspec/specs/session-notes/spec.md @@ -1,3 +1,7 @@ +## Purpose + +Collaborative text notes in Planner sessions, synced in real-time via Yjs. + ## Requirements ### Requirement: Collaborative session notes diff --git a/openspec/specs/shared-packages/spec.md b/openspec/specs/shared-packages/spec.md index ec7aa45..960cc45 100644 --- a/openspec/specs/shared-packages/spec.md +++ b/openspec/specs/shared-packages/spec.md @@ -1,4 +1,8 @@ -## ADDED Requirements +## Purpose + +Shared TypeScript packages (@trails-cool/types, gpx, map, ui, i18n) used by both Planner and Journal apps. + +## Requirements ### Requirement: Shared types package The `@trails-cool/types` package SHALL export TypeScript interfaces for Route, Activity, Waypoint, RouteVersion, and RouteMetadata used by both apps. diff --git a/openspec/specs/transactional-emails/spec.md b/openspec/specs/transactional-emails/spec.md index 4e50bee..3edd696 100644 --- a/openspec/specs/transactional-emails/spec.md +++ b/openspec/specs/transactional-emails/spec.md @@ -1,3 +1,7 @@ +## Purpose + +Transactional email sending with HTML and plain-text templates for magic links and welcome messages, using SMTP in production and console logging in dev. + ## Requirements ### Requirement: Email sending interface diff --git a/openspec/specs/wahoo-import/spec.md b/openspec/specs/wahoo-import/spec.md index 2b34eff..881905f 100644 --- a/openspec/specs/wahoo-import/spec.md +++ b/openspec/specs/wahoo-import/spec.md @@ -1,4 +1,8 @@ -## ADDED Requirements +## Purpose + +Provider-agnostic activity sync framework with Wahoo as the first provider, supporting OAuth connection, webhook-based automatic sync, manual import, and FIT-to-GPX conversion. + +## Requirements ### Requirement: Provider-agnostic sync framework The system SHALL provide a common interface for external activity sync providers. From be131450727639f3c02f91e9875aa1568fc13af6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ullrich=20Sch=C3=A4fer?= Date: Mon, 6 Apr 2026 22:37:34 +0200 Subject: [PATCH 02/13] Fix DB connection leak in health check handlers Both server.ts files called createDb() on every /health request, creating a new postgres.js connection pool (~10 connections) that was never closed. Docker healthchecks hit this every 15s, exhausting max_connections within minutes and causing "too many clients" errors. Fix: use a fresh postgres.js client (max: 1) per health check that is properly closed in a finally block. This truly tests whether the DB is accepting new connections without leaking. Co-Authored-By: Claude Opus 4.6 (1M context) --- apps/journal/server.ts | 9 +++++---- apps/planner/server.ts | 9 +++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/apps/journal/server.ts b/apps/journal/server.ts index 3385112..2f696db 100644 --- a/apps/journal/server.ts +++ b/apps/journal/server.ts @@ -4,6 +4,7 @@ import { createReadStream, statSync } from "node:fs"; import { join, extname, resolve } from "node:path"; import { logger } from "./app/lib/logger.server.ts"; import { httpRequestDuration, registry } from "./app/lib/metrics.server.ts"; +import postgres from "postgres"; const port = Number(process.env.PORT ?? 3000); const CLIENT_DIR = resolve(import.meta.dirname, "build", "client"); @@ -56,16 +57,16 @@ async function handleMetrics(_req: IncomingMessage, res: ServerResponse): Promis const version = process.env.SENTRY_RELEASE ?? "dev"; async function handleHealth(_req: IncomingMessage, res: ServerResponse): Promise { + const client = postgres(process.env.DATABASE_URL ?? "postgres://trails:trails@localhost:5432/trails", { max: 1 }); try { - const { createDb } = await import("@trails-cool/db"); - const { sql } = await import("drizzle-orm"); - const db = createDb(); - await db.execute(sql`SELECT 1`); + await client`SELECT 1`; res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({ status: "ok", version, db: "connected" })); } catch { res.writeHead(503, { "Content-Type": "application/json" }); res.end(JSON.stringify({ status: "degraded", version, db: "unreachable" })); + } finally { + await client.end(); } } diff --git a/apps/planner/server.ts b/apps/planner/server.ts index cc984c8..457d8da 100644 --- a/apps/planner/server.ts +++ b/apps/planner/server.ts @@ -6,6 +6,7 @@ import { createServer, type IncomingMessage, type ServerResponse } from "node:ht import { createReadStream, statSync } from "node:fs"; import { join, extname, resolve } from "node:path"; import { setupYjsWebSocket } from "./app/lib/yjs-server.ts"; +import postgres from "postgres"; const sentryEnvironment = process.env.CI ? "ci" : (process.env.NODE_ENV ?? "development"); @@ -74,16 +75,16 @@ async function handleMetrics(_req: IncomingMessage, res: ServerResponse): Promis const version = process.env.SENTRY_RELEASE ?? "dev"; async function handleHealth(_req: IncomingMessage, res: ServerResponse): Promise { + const client = postgres(process.env.DATABASE_URL ?? "postgres://trails:trails@localhost:5432/trails", { max: 1 }); try { - const { createDb } = await import("@trails-cool/db"); - const { sql } = await import("drizzle-orm"); - const db = createDb(); - await db.execute(sql`SELECT 1`); + await client`SELECT 1`; res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({ status: "ok", version, db: "connected" })); } catch { res.writeHead(503, { "Content-Type": "application/json" }); res.end(JSON.stringify({ status: "degraded", version, db: "unreachable" })); + } finally { + await client.end(); } } From f80ed10a8b82eca36b3c150a8a44cd623d4a89d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ullrich=20Sch=C3=A4fer?= Date: Mon, 6 Apr 2026 22:40:24 +0200 Subject: [PATCH 03/13] Remove unused journal health route file MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit api.health.ts was never registered in routes.ts — the server.ts handler intercepts /api/health before React Router sees it. Co-Authored-By: Claude Opus 4.6 (1M context) --- apps/journal/app/routes/api.health.ts | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 apps/journal/app/routes/api.health.ts diff --git a/apps/journal/app/routes/api.health.ts b/apps/journal/app/routes/api.health.ts deleted file mode 100644 index 6603a65..0000000 --- a/apps/journal/app/routes/api.health.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { data } from "react-router"; -import { withDb } from "@trails-cool/db"; - -const version = process.env.SENTRY_RELEASE ?? "dev"; - -export async function loader() { - try { - await withDb(async () => {}); - return data({ status: "ok", version, db: "connected" }); - } catch { - return data({ status: "degraded", version, db: "unreachable" }, { status: 503 }); - } -} From 81eb38a24d3bd5c62bfecc7d5d2a721c751bae33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ullrich=20Sch=C3=A4fer?= Date: Sun, 5 Apr 2026 20:07:42 +0200 Subject: [PATCH 04/13] Fix Leaflet SSR error: rename to .client.tsx Leaflet accesses `window` on import, crashing during SSR. Renamed RouteMapThumbnail to .client.tsx so React Router excludes it from the server bundle entirely. Updated all lazy() imports to match. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../{RouteMapThumbnail.tsx => RouteMapThumbnail.client.tsx} | 0 apps/journal/app/routes/activities.$id.tsx | 2 +- apps/journal/app/routes/activities._index.tsx | 2 +- apps/journal/app/routes/routes.$id.tsx | 2 +- apps/journal/app/routes/routes._index.tsx | 2 +- 5 files changed, 4 insertions(+), 4 deletions(-) rename apps/journal/app/components/{RouteMapThumbnail.tsx => RouteMapThumbnail.client.tsx} (100%) diff --git a/apps/journal/app/components/RouteMapThumbnail.tsx b/apps/journal/app/components/RouteMapThumbnail.client.tsx similarity index 100% rename from apps/journal/app/components/RouteMapThumbnail.tsx rename to apps/journal/app/components/RouteMapThumbnail.client.tsx diff --git a/apps/journal/app/routes/activities.$id.tsx b/apps/journal/app/routes/activities.$id.tsx index 2ddb6f5..8907c24 100644 --- a/apps/journal/app/routes/activities.$id.tsx +++ b/apps/journal/app/routes/activities.$id.tsx @@ -9,7 +9,7 @@ import { listRoutes } from "~/lib/routes.server"; import { ClientDate } from "~/components/ClientDate"; const RouteMapThumbnail = lazy(() => - import("~/components/RouteMapThumbnail").then((m) => ({ default: m.RouteMapThumbnail })), + import("~/components/RouteMapThumbnail.client").then((m) => ({ default: m.RouteMapThumbnail })), ); export async function loader({ params, request }: Route.LoaderArgs) { diff --git a/apps/journal/app/routes/activities._index.tsx b/apps/journal/app/routes/activities._index.tsx index 6a4daef..903ce6a 100644 --- a/apps/journal/app/routes/activities._index.tsx +++ b/apps/journal/app/routes/activities._index.tsx @@ -7,7 +7,7 @@ import { listActivities } from "~/lib/activities.server"; import { ClientDate } from "~/components/ClientDate"; const RouteMapThumbnail = lazy(() => - import("~/components/RouteMapThumbnail").then((m) => ({ default: m.RouteMapThumbnail })), + import("~/components/RouteMapThumbnail.client").then((m) => ({ default: m.RouteMapThumbnail })), ); export async function loader({ request }: Route.LoaderArgs) { diff --git a/apps/journal/app/routes/routes.$id.tsx b/apps/journal/app/routes/routes.$id.tsx index 8773c2c..c78cb14 100644 --- a/apps/journal/app/routes/routes.$id.tsx +++ b/apps/journal/app/routes/routes.$id.tsx @@ -7,7 +7,7 @@ import { getRoute, getRouteWithVersions, deleteRoute, updateRoute } from "~/lib/ import { ClientDate } from "~/components/ClientDate"; const RouteMapThumbnail = lazy(() => - import("~/components/RouteMapThumbnail").then((m) => ({ default: m.RouteMapThumbnail })), + import("~/components/RouteMapThumbnail.client").then((m) => ({ default: m.RouteMapThumbnail })), ); diff --git a/apps/journal/app/routes/routes._index.tsx b/apps/journal/app/routes/routes._index.tsx index 1f4210c..8cb7ae8 100644 --- a/apps/journal/app/routes/routes._index.tsx +++ b/apps/journal/app/routes/routes._index.tsx @@ -7,7 +7,7 @@ import { listRoutes } from "~/lib/routes.server"; import { ClientDate } from "~/components/ClientDate"; const RouteMapThumbnail = lazy(() => - import("~/components/RouteMapThumbnail").then((m) => ({ default: m.RouteMapThumbnail })), + import("~/components/RouteMapThumbnail.client").then((m) => ({ default: m.RouteMapThumbnail })), ); export async function loader({ request }: Route.LoaderArgs) { From 9b2adebc4dc5d06eac488426ea5bc367965c98ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ullrich=20Sch=C3=A4fer?= Date: Sun, 5 Apr 2026 20:10:57 +0200 Subject: [PATCH 05/13] Add ClientMap wrapper to avoid lazy() SSR resolution .client.tsx modules return undefined on the server, but lazy() still tries to resolve them during SSR causing "Element type is invalid". Replace lazy()+Suspense with a ClientMap component that dynamically imports the map only in useEffect (client-side only). Co-Authored-By: Claude Opus 4.6 (1M context) --- apps/journal/app/components/ClientMap.tsx | 21 +++++++++++++++++++ apps/journal/app/routes/activities.$id.tsx | 10 ++------- apps/journal/app/routes/activities._index.tsx | 10 ++------- apps/journal/app/routes/routes.$id.tsx | 11 +++------- apps/journal/app/routes/routes._index.tsx | 10 ++------- 5 files changed, 30 insertions(+), 32 deletions(-) create mode 100644 apps/journal/app/components/ClientMap.tsx diff --git a/apps/journal/app/components/ClientMap.tsx b/apps/journal/app/components/ClientMap.tsx new file mode 100644 index 0000000..774bf1b --- /dev/null +++ b/apps/journal/app/components/ClientMap.tsx @@ -0,0 +1,21 @@ +import { useState, useEffect, type ComponentProps } from "react"; + +type MapProps = ComponentProps; + +export function ClientMap(props: MapProps) { + const [Component, setComponent] = useState>(); + + useEffect(() => { + import("./RouteMapThumbnail.client").then((m) => setComponent(() => m.RouteMapThumbnail)); + }, []); + + if (!Component) { + return ( +
+ Loading map... +
+ ); + } + + return ; +} diff --git a/apps/journal/app/routes/activities.$id.tsx b/apps/journal/app/routes/activities.$id.tsx index 8907c24..1b80106 100644 --- a/apps/journal/app/routes/activities.$id.tsx +++ b/apps/journal/app/routes/activities.$id.tsx @@ -1,4 +1,3 @@ -import { Suspense, lazy } from "react"; import { data, redirect } from "react-router"; import { useTranslation } from "react-i18next"; import type { Route } from "./+types/activities.$id"; @@ -7,10 +6,7 @@ import { getActivity, deleteActivity, linkActivityToRoute, createRouteFromActivi import { deleteImportByActivity } from "~/lib/sync/imports.server"; import { listRoutes } from "~/lib/routes.server"; import { ClientDate } from "~/components/ClientDate"; - -const RouteMapThumbnail = lazy(() => - import("~/components/RouteMapThumbnail.client").then((m) => ({ default: m.RouteMapThumbnail })), -); +import { ClientMap } from "~/components/ClientMap"; export async function loader({ params, request }: Route.LoaderArgs) { const activity = await getActivity(params.id); @@ -125,9 +121,7 @@ export default function ActivityDetailPage({ loaderData }: Route.ComponentProps) {activity.geojson && (
- Loading map...
}> - - + )} diff --git a/apps/journal/app/routes/activities._index.tsx b/apps/journal/app/routes/activities._index.tsx index 903ce6a..4380be9 100644 --- a/apps/journal/app/routes/activities._index.tsx +++ b/apps/journal/app/routes/activities._index.tsx @@ -1,14 +1,10 @@ import { data, redirect } from "react-router"; -import { Suspense, lazy } from "react"; import { useTranslation } from "react-i18next"; import type { Route } from "./+types/activities._index"; import { getSessionUser } from "~/lib/auth.server"; import { listActivities } from "~/lib/activities.server"; import { ClientDate } from "~/components/ClientDate"; - -const RouteMapThumbnail = lazy(() => - import("~/components/RouteMapThumbnail.client").then((m) => ({ default: m.RouteMapThumbnail })), -); +import { ClientMap } from "~/components/ClientMap"; export async function loader({ request }: Route.LoaderArgs) { const user = await getSessionUser(request); @@ -64,9 +60,7 @@ export default function ActivitiesListPage({ loaderData }: Route.ComponentProps)
{activity.geojson ? ( - }> - - + ) : (
{t("routes.noMapPreview")} diff --git a/apps/journal/app/routes/routes.$id.tsx b/apps/journal/app/routes/routes.$id.tsx index c78cb14..662ba9b 100644 --- a/apps/journal/app/routes/routes.$id.tsx +++ b/apps/journal/app/routes/routes.$id.tsx @@ -1,14 +1,11 @@ -import { useState, useCallback, Suspense, lazy } from "react"; +import { useState, useCallback } from "react"; import { data, redirect } from "react-router"; import { useTranslation } from "react-i18next"; import type { Route } from "./+types/routes.$id"; import { getSessionUser } from "~/lib/auth.server"; import { getRoute, getRouteWithVersions, deleteRoute, updateRoute } from "~/lib/routes.server"; import { ClientDate } from "~/components/ClientDate"; - -const RouteMapThumbnail = lazy(() => - import("~/components/RouteMapThumbnail.client").then((m) => ({ default: m.RouteMapThumbnail })), -); +import { ClientMap } from "~/components/ClientMap"; export async function loader({ params, request }: Route.LoaderArgs) { @@ -161,9 +158,7 @@ export default function RouteDetailPage({ loaderData }: Route.ComponentProps) { {route.geojson && (
- Loading map...
}> - - +
)} diff --git a/apps/journal/app/routes/routes._index.tsx b/apps/journal/app/routes/routes._index.tsx index 8cb7ae8..85511a6 100644 --- a/apps/journal/app/routes/routes._index.tsx +++ b/apps/journal/app/routes/routes._index.tsx @@ -1,14 +1,10 @@ import { data, redirect } from "react-router"; -import { Suspense, lazy } from "react"; import { useTranslation } from "react-i18next"; import type { Route } from "./+types/routes._index"; import { getSessionUser } from "~/lib/auth.server"; import { listRoutes } from "~/lib/routes.server"; import { ClientDate } from "~/components/ClientDate"; - -const RouteMapThumbnail = lazy(() => - import("~/components/RouteMapThumbnail.client").then((m) => ({ default: m.RouteMapThumbnail })), -); +import { ClientMap } from "~/components/ClientMap"; export async function loader({ request }: Route.LoaderArgs) { const user = await getSessionUser(request); @@ -62,9 +58,7 @@ export default function RoutesListPage({ loaderData }: Route.ComponentProps) {
{route.geojson ? ( - }> - - + ) : (
{t("routes.noMapPreview")} From 0af67bef0e816e4a37d0dc48fc78ef8f301e4164 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ullrich=20Sch=C3=A4fer?= Date: Mon, 6 Apr 2026 23:09:49 +0200 Subject: [PATCH 06/13] Bump eslint, typescript-eslint, and turbo Co-Authored-By: Claude Opus 4.6 (1M context) --- package.json | 6 +- pnpm-lock.yaml | 286 ++++++++++++++++++++++++------------------------- 2 files changed, 146 insertions(+), 146 deletions(-) diff --git a/package.json b/package.json index 8b5c2c2..a775260 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "drizzle-kit": "^0.31.10", "drizzle-orm": "^0.45.2", "drizzle-postgis": "^1.1.1", - "eslint": "^10.1.0", + "eslint": "^10.2.0", "eslint-config-prettier": "^10.1.8", "fit-file-parser": "^2.3.3", "i18next": "^26.0.1", @@ -67,8 +67,8 @@ "react-leaflet": "^5.0.0", "react-router": "^7.13.2", "tailwindcss": "^4.2.2", - "turbo": "^2.8.21", - "typescript-eslint": "^8.57.2", + "turbo": "^2.9.3", + "typescript-eslint": "^8.58.0", "vite": "catalog:", "vitest": "^4.1.2" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 83947ff..a63c2b4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -60,7 +60,7 @@ importers: devDependencies: '@eslint/js': specifier: ^10.0.1 - version: 10.0.1(eslint@10.1.0(jiti@2.6.1)) + version: 10.0.1(eslint@10.2.0(jiti@2.6.1)) '@playwright/test': specifier: ^1.58.2 version: 1.58.2 @@ -107,11 +107,11 @@ importers: specifier: ^1.1.1 version: 1.1.1 eslint: - specifier: ^10.1.0 - version: 10.1.0(jiti@2.6.1) + specifier: ^10.2.0 + version: 10.2.0(jiti@2.6.1) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@10.1.0(jiti@2.6.1)) + version: 10.1.8(eslint@10.2.0(jiti@2.6.1)) fit-file-parser: specifier: ^2.3.3 version: 2.3.3 @@ -158,11 +158,11 @@ importers: specifier: ^4.2.2 version: 4.2.2 turbo: - specifier: ^2.8.21 - version: 2.8.21 + specifier: ^2.9.3 + version: 2.9.3 typescript-eslint: - specifier: ^8.57.2 - version: 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + specifier: ^8.58.0 + version: 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@5.9.3) vite: specifier: 'catalog:' version: 6.4.1(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0) @@ -1070,16 +1070,16 @@ packages: resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.23.3': - resolution: {integrity: sha512-j+eEWmB6YYLwcNOdlwQ6L2OsptI/LO6lNBuLIqe5R7RetD658HLoF+Mn7LzYmAWWNNzdC6cqP+L6r8ujeYXWLw==} + '@eslint/config-array@0.23.4': + resolution: {integrity: sha512-lf19F24LSMfF8weXvW5QEtnLqW70u7kgit5e9PSx0MsHAFclGd1T9ynvWEMDT1w5J4Qt54tomGeAhdoAku1Xow==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/config-helpers@0.5.3': - resolution: {integrity: sha512-lzGN0onllOZCGroKJmRwY6QcEHxbjBw1gwB8SgRSqK8YbbtEXMvKynsXc3553ckIEBxsbMBU7oOZXKIPGZNeZw==} + '@eslint/config-helpers@0.5.4': + resolution: {integrity: sha512-jJhqiY3wPMlWWO3370M86CPJ7pt8GmEwSLglMfQhjXal07RCvhmU0as4IuUEW5SJeunfItiEetHmSxCCe9lDBg==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/core@1.1.1': - resolution: {integrity: sha512-QUPblTtE51/7/Zhfv8BDwO0qkkzQL7P/aWWbqcf4xWLEYn1oKjdO0gglQBB4GAsu7u6wjijbCmzsUTy6mnk6oQ==} + '@eslint/core@1.2.0': + resolution: {integrity: sha512-8FTGbNzTvmSlc4cZBaShkC6YvFMG0riksYWRFKXztqVdXaQbcZLXlFbSpC05s70sGEsXAw0qwhx69JiW7hQS7A==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@eslint/js@10.0.1': @@ -1091,12 +1091,12 @@ packages: eslint: optional: true - '@eslint/object-schema@3.0.3': - resolution: {integrity: sha512-iM869Pugn9Nsxbh/YHRqYiqd23AmIbxJOcpUMOuWCVNdoQJ5ZtwL6h3t0bcZzJUlC3Dq9jCFCESBZnX0GTv7iQ==} + '@eslint/object-schema@3.0.4': + resolution: {integrity: sha512-55lO/7+Yp0ISKRP0PsPtNTeNGapXaO085aELZmWCVc5SH3jfrqpuU6YgOdIxMS99ZHkQN1cXKE+cdIqwww9ptw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/plugin-kit@0.6.1': - resolution: {integrity: sha512-iH1B076HoAshH1mLpHMgwdGeTs0CYwL0SPMkGuSebZrwBp16v415e9NZXg2jtrqPVQjf6IANe2Vtlr5KswtcZQ==} + '@eslint/plugin-kit@0.7.0': + resolution: {integrity: sha512-ejvBr8MQCbVsWNZnCwDXjUKq40MDmHalq7cJ6e9s/qzTUFIIo/afzt1Vui9T97FM/V/pN4YsFVoed5NIa96RDg==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@exodus/bytes@1.15.0': @@ -1879,33 +1879,33 @@ packages: '@types/react-dom': optional: true - '@turbo/darwin-64@2.8.21': - resolution: {integrity: sha512-kfGoM0Iw8ZNZpbds+4IzOe0hjvHldqJwUPRAjXJi3KBxg/QOZL95N893SRoMtf2aJ+jJ3dk32yPkp8rvcIjP9g==} + '@turbo/darwin-64@2.9.3': + resolution: {integrity: sha512-P8foouaP+y/p+hhEGBoZpzMbpVvUMwPjDpcy6wN7EYfvvyISD1USuV27qWkczecihwuPJzQ1lDBuL8ERcavTyg==} cpu: [x64] os: [darwin] - '@turbo/darwin-arm64@2.8.21': - resolution: {integrity: sha512-o9HEflxUEyr987x0cTUzZBhDOyL6u95JmdmlkH2VyxAw7zq2sdtM5e72y9ufv2N5SIoOBw1fVn9UES5VY5H6vQ==} + '@turbo/darwin-arm64@2.9.3': + resolution: {integrity: sha512-SIzEkvtNdzdI50FJDaIQ6kQGqgSSdFPcdn0wqmmONN6iGKjy6hsT+EH99GP65FsfV7DLZTh2NmtTIRl2kdoz5Q==} cpu: [arm64] os: [darwin] - '@turbo/linux-64@2.8.21': - resolution: {integrity: sha512-uTxlCcXWy5h1fSSymP8XSJ+AudzEHMDV3IDfKX7+DGB8kgJ+SLoTUAH7z4OFA7I/l2sznz0upPdbNNZs91YMag==} + '@turbo/linux-64@2.9.3': + resolution: {integrity: sha512-pLRwFmcHHNBvsCySLS6OFabr/07kDT2pxEt/k6eBf/3asiVQZKJ7Rk88AafQx2aYA641qek4RsXvYO3JYpiBug==} cpu: [x64] os: [linux] - '@turbo/linux-arm64@2.8.21': - resolution: {integrity: sha512-cdHIcxNcihHHkCHp0Y4Zb60K4Qz+CK4xw1gb6s/t/9o4SMeMj+hTBCtoW6QpPnl9xPYmxuTou8Zw6+cylTnREg==} + '@turbo/linux-arm64@2.9.3': + resolution: {integrity: sha512-gy6ApUroC2Nzv+qjGtE/uPNkhHAFU4c8God+zd5Aiv9L9uBgHlxVJpHT3XWl5xwlJZ2KWuMrlHTaS5kmNB+q1Q==} cpu: [arm64] os: [linux] - '@turbo/windows-64@2.8.21': - resolution: {integrity: sha512-/iBj4OzbqEY8CX+eaeKbBTMZv2CLXNrt0692F7HnK7LcyYwyDecaAiSET6ZzL4opT7sbwkKvzAC/fhqT3Quu1A==} + '@turbo/windows-64@2.9.3': + resolution: {integrity: sha512-d0YelTX6hAsB7kIEtGB3PzIzSfAg3yDoUlHwuwJc3adBXUsyUIs0YLG+1NNtuhcDOUGnWQeKUoJ2pGWvbpRj7w==} cpu: [x64] os: [win32] - '@turbo/windows-arm64@2.8.21': - resolution: {integrity: sha512-95tMA/ZbIidJFUUtkmqioQ1gf3n3I1YbRP3ZgVdWTVn2qVbkodcIdGXBKRHHrIbRsLRl99SiHi/L7IxhpZDagQ==} + '@turbo/windows-arm64@2.9.3': + resolution: {integrity: sha512-/08CwpKJl3oRY8nOlh2YgilZVJDHsr60XTNxRhuDeuFXONpUZ5X+Nv65izbG/xBew9qxcJFbDX9/sAmAX+ITcQ==} cpu: [arm64] os: [win32] @@ -2013,63 +2013,63 @@ packages: '@types/ws@8.18.1': resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} - '@typescript-eslint/eslint-plugin@8.57.2': - resolution: {integrity: sha512-NZZgp0Fm2IkD+La5PR81sd+g+8oS6JwJje+aRWsDocxHkjyRw0J5L5ZTlN3LI1LlOcGL7ph3eaIUmTXMIjLk0w==} + '@typescript-eslint/eslint-plugin@8.58.0': + resolution: {integrity: sha512-RLkVSiNuUP1C2ROIWfqX+YcUfLaSnxGE/8M+Y57lopVwg9VTYYfhuz15Yf1IzCKgZj6/rIbYTmJCUSqr76r0Wg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.57.2 + '@typescript-eslint/parser': ^8.58.0 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/parser@8.57.2': - resolution: {integrity: sha512-30ScMRHIAD33JJQkgfGW1t8CURZtjc2JpTrq5n2HFhOefbAhb7ucc7xJwdWcrEtqUIYJ73Nybpsggii6GtAHjA==} + '@typescript-eslint/parser@8.58.0': + resolution: {integrity: sha512-rLoGZIf9afaRBYsPUMtvkDWykwXwUPL60HebR4JgTI8mxfFe2cQTu3AGitANp4b9B2QlVru6WzjgB2IzJKiCSA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/project-service@8.57.2': - resolution: {integrity: sha512-FuH0wipFywXRTHf+bTTjNyuNQQsQC3qh/dYzaM4I4W0jrCqjCVuUh99+xd9KamUfmCGPvbO8NDngo/vsnNVqgw==} + '@typescript-eslint/project-service@8.58.0': + resolution: {integrity: sha512-8Q/wBPWLQP1j16NxoPNIKpDZFMaxl7yWIoqXWYeWO+Bbd2mjgvoF0dxP2jKZg5+x49rgKdf7Ck473M8PC3V9lg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/scope-manager@8.57.2': - resolution: {integrity: sha512-snZKH+W4WbWkrBqj4gUNRIGb/jipDW3qMqVJ4C9rzdFc+wLwruxk+2a5D+uoFcKPAqyqEnSb4l2ULuZf95eSkw==} + '@typescript-eslint/scope-manager@8.58.0': + resolution: {integrity: sha512-W1Lur1oF50FxSnNdGp3Vs6P+yBRSmZiw4IIjEeYxd8UQJwhUF0gDgDD/W/Tgmh73mxgEU3qX0Bzdl/NGuSPEpQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.57.2': - resolution: {integrity: sha512-3Lm5DSM+DCowsUOJC+YqHHnKEfFh5CoGkj5Z31NQSNF4l5wdOwqGn99wmwN/LImhfY3KJnmordBq/4+VDe2eKw==} + '@typescript-eslint/tsconfig-utils@8.58.0': + resolution: {integrity: sha512-doNSZEVJsWEu4htiVC+PR6NpM+pa+a4ClH9INRWOWCUzMst/VA9c4gXq92F8GUD1rwhNvRLkgjfYtFXegXQF7A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/type-utils@8.57.2': - resolution: {integrity: sha512-Co6ZCShm6kIbAM/s+oYVpKFfW7LBc6FXoPXjTRQ449PPNBY8U0KZXuevz5IFuuUj2H9ss40atTaf9dlGLzbWZg==} + '@typescript-eslint/type-utils@8.58.0': + resolution: {integrity: sha512-aGsCQImkDIqMyx1u4PrVlbi/krmDsQUs4zAcCV6M7yPcPev+RqVlndsJy9kJ8TLihW9TZ0kbDAzctpLn5o+lOg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/types@8.57.2': - resolution: {integrity: sha512-/iZM6FnM4tnx9csuTxspMW4BOSegshwX5oBDznJ7S4WggL7Vczz5d2W11ecc4vRrQMQHXRSxzrCsyG5EsPPTbA==} + '@typescript-eslint/types@8.58.0': + resolution: {integrity: sha512-O9CjxypDT89fbHxRfETNoAnHj/i6IpRK0CvbVN3qibxlLdo5p5hcLmUuCCrHMpxiWSwKyI8mCP7qRNYuOJ0Uww==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.57.2': - resolution: {integrity: sha512-2MKM+I6g8tJxfSmFKOnHv2t8Sk3T6rF20A1Puk0svLK+uVapDZB/4pfAeB7nE83uAZrU6OxW+HmOd5wHVdXwXA==} + '@typescript-eslint/typescript-estree@8.58.0': + resolution: {integrity: sha512-7vv5UWbHqew/dvs+D3e1RvLv1v2eeZ9txRHPnEEBUgSNLx5ghdzjHa0sgLWYVKssH+lYmV0JaWdoubo0ncGYLA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/utils@8.57.2': - resolution: {integrity: sha512-krRIbvPK1ju1WBKIefiX+bngPs+odIQUtR7kymzPfo1POVw3jlF+nLkmexdSSd4UCbDcQn+wMBATOOmpBbqgKg==} + '@typescript-eslint/utils@8.58.0': + resolution: {integrity: sha512-RfeSqcFeHMHlAWzt4TBjWOAtoW9lnsAGiP3GbaX9uVgTYYrMbVnGONEfUCiSss+xMHFl+eHZiipmA8WkQ7FuNA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/visitor-keys@8.57.2': - resolution: {integrity: sha512-zhahknjobV2FiD6Ee9iLbS7OV9zi10rG26odsQdfBO/hjSzUQbkIYgda+iNKK1zNiW2ey+Lf8MU5btN17V3dUw==} + '@typescript-eslint/visitor-keys@8.58.0': + resolution: {integrity: sha512-XJ9UD9+bbDo4a4epraTwG3TsNPeiB9aShrUneAVXy8q4LuwowN+qu89/6ByLMINqvIMeI9H9hOHQtg/ijrYXzQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@vitejs/plugin-basic-ssl@2.3.0': @@ -2577,8 +2577,8 @@ packages: resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint@10.1.0: - resolution: {integrity: sha512-S9jlY/ELKEUwwQnqWDO+f+m6sercqOPSqXM5Go94l7DOmxHVDgmSFGWEzeE/gwgTAr0W103BWt0QLe/7mabIvA==} + eslint@10.2.0: + resolution: {integrity: sha512-+L0vBFYGIpSNIt/KWTpFonPrqYvgKw1eUI5Vn7mEogrQcWtWYtNQ7dNqC+px/J0idT3BAkiWrhfS7k+Tum8TUA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: @@ -3576,8 +3576,8 @@ packages: resolution: {integrity: sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw==} engines: {node: '>= 6.0.0'} - turbo@2.8.21: - resolution: {integrity: sha512-FlJ8OD5Qcp0jTAM7E4a/RhUzRNds2GzKlyxHKA6N247VLy628rrxAGlMpIXSz6VB430+TiQDJ/SMl6PL1lu6wQ==} + turbo@2.9.3: + resolution: {integrity: sha512-J/VUvsGRykPb9R8Kh8dHVBOqioDexLk9BhLCU/ZybRR+HN9UR3cURdazFvNgMDt9zPP8TF6K73Z+tplfmi0PqQ==} hasBin: true type-check@0.4.0: @@ -3588,12 +3588,12 @@ packages: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} - typescript-eslint@8.57.2: - resolution: {integrity: sha512-VEPQ0iPgWO/sBaZOU1xo4nuNdODVOajPnTIbog2GKYr31nIlZ0fWPoCQgGfF3ETyBl1vn63F/p50Um9Z4J8O8A==} + typescript-eslint@8.58.0: + resolution: {integrity: sha512-e2TQzKfaI85fO+F3QywtX+tCTsu/D3WW5LVU6nz8hTFKFZ8yBJ6mSYRpXqdR3mFjPWmO0eWsTa5f+UpAOe/FMA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' typescript@5.9.3: resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} @@ -4288,38 +4288,38 @@ snapshots: '@esbuild/win32-x64@0.27.4': optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@10.1.0(jiti@2.6.1))': + '@eslint-community/eslint-utils@4.9.1(eslint@10.2.0(jiti@2.6.1))': dependencies: - eslint: 10.1.0(jiti@2.6.1) + eslint: 10.2.0(jiti@2.6.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} - '@eslint/config-array@0.23.3': + '@eslint/config-array@0.23.4': dependencies: - '@eslint/object-schema': 3.0.3 + '@eslint/object-schema': 3.0.4 debug: 4.4.3 minimatch: 10.2.4 transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.5.3': + '@eslint/config-helpers@0.5.4': dependencies: - '@eslint/core': 1.1.1 + '@eslint/core': 1.2.0 - '@eslint/core@1.1.1': + '@eslint/core@1.2.0': dependencies: '@types/json-schema': 7.0.15 - '@eslint/js@10.0.1(eslint@10.1.0(jiti@2.6.1))': + '@eslint/js@10.0.1(eslint@10.2.0(jiti@2.6.1))': optionalDependencies: - eslint: 10.1.0(jiti@2.6.1) + eslint: 10.2.0(jiti@2.6.1) - '@eslint/object-schema@3.0.3': {} + '@eslint/object-schema@3.0.4': {} - '@eslint/plugin-kit@0.6.1': + '@eslint/plugin-kit@0.7.0': dependencies: - '@eslint/core': 1.1.1 + '@eslint/core': 1.2.0 levn: 0.4.1 '@exodus/bytes@1.15.0': {} @@ -5211,22 +5211,22 @@ snapshots: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@turbo/darwin-64@2.8.21': + '@turbo/darwin-64@2.9.3': optional: true - '@turbo/darwin-arm64@2.8.21': + '@turbo/darwin-arm64@2.9.3': optional: true - '@turbo/linux-64@2.8.21': + '@turbo/linux-64@2.9.3': optional: true - '@turbo/linux-arm64@2.8.21': + '@turbo/linux-arm64@2.9.3': optional: true - '@turbo/windows-64@2.8.21': + '@turbo/windows-64@2.9.3': optional: true - '@turbo/windows-arm64@2.8.21': + '@turbo/windows-arm64@2.9.3': optional: true '@turf/bbox@7.3.4': @@ -5413,15 +5413,15 @@ snapshots: dependencies: '@types/node': 25.5.0 - '@typescript-eslint/eslint-plugin@8.57.2(@typescript-eslint/parser@8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.58.0(@typescript-eslint/parser@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.2.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.57.2 - '@typescript-eslint/type-utils': 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.57.2 - eslint: 10.1.0(jiti@2.6.1) + '@typescript-eslint/parser': 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.58.0 + '@typescript-eslint/type-utils': 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.58.0 + eslint: 10.2.0(jiti@2.6.1) ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.5.0(typescript@5.9.3) @@ -5429,56 +5429,56 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/parser@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.57.2 - '@typescript-eslint/types': 8.57.2 - '@typescript-eslint/typescript-estree': 8.57.2(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.57.2 + '@typescript-eslint/scope-manager': 8.58.0 + '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/typescript-estree': 8.58.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.58.0 debug: 4.4.3 - eslint: 10.1.0(jiti@2.6.1) + eslint: 10.2.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.57.2(typescript@5.9.3)': + '@typescript-eslint/project-service@8.58.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.57.2(typescript@5.9.3) - '@typescript-eslint/types': 8.57.2 + '@typescript-eslint/tsconfig-utils': 8.58.0(typescript@5.9.3) + '@typescript-eslint/types': 8.58.0 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.57.2': + '@typescript-eslint/scope-manager@8.58.0': dependencies: - '@typescript-eslint/types': 8.57.2 - '@typescript-eslint/visitor-keys': 8.57.2 + '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/visitor-keys': 8.58.0 - '@typescript-eslint/tsconfig-utils@8.57.2(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.58.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.57.2 - '@typescript-eslint/typescript-estree': 8.57.2(typescript@5.9.3) - '@typescript-eslint/utils': 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/typescript-estree': 8.58.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3 - eslint: 10.1.0(jiti@2.6.1) + eslint: 10.2.0(jiti@2.6.1) ts-api-utils: 2.5.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.57.2': {} + '@typescript-eslint/types@8.58.0': {} - '@typescript-eslint/typescript-estree@8.57.2(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.58.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.57.2(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.57.2(typescript@5.9.3) - '@typescript-eslint/types': 8.57.2 - '@typescript-eslint/visitor-keys': 8.57.2 + '@typescript-eslint/project-service': 8.58.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.58.0(typescript@5.9.3) + '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/visitor-keys': 8.58.0 debug: 4.4.3 minimatch: 10.2.4 semver: 7.7.4 @@ -5488,20 +5488,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/utils@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.1.0(jiti@2.6.1)) - '@typescript-eslint/scope-manager': 8.57.2 - '@typescript-eslint/types': 8.57.2 - '@typescript-eslint/typescript-estree': 8.57.2(typescript@5.9.3) - eslint: 10.1.0(jiti@2.6.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.0(jiti@2.6.1)) + '@typescript-eslint/scope-manager': 8.58.0 + '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/typescript-estree': 8.58.0(typescript@5.9.3) + eslint: 10.2.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.57.2': + '@typescript-eslint/visitor-keys@8.58.0': dependencies: - '@typescript-eslint/types': 8.57.2 + '@typescript-eslint/types': 8.58.0 eslint-visitor-keys: 5.0.1 '@vitejs/plugin-basic-ssl@2.3.0(vite@6.4.1(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0))': @@ -5951,9 +5951,9 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-prettier@10.1.8(eslint@10.1.0(jiti@2.6.1)): + eslint-config-prettier@10.1.8(eslint@10.2.0(jiti@2.6.1)): dependencies: - eslint: 10.1.0(jiti@2.6.1) + eslint: 10.2.0(jiti@2.6.1) eslint-scope@9.1.2: dependencies: @@ -5966,14 +5966,14 @@ snapshots: eslint-visitor-keys@5.0.1: {} - eslint@10.1.0(jiti@2.6.1): + eslint@10.2.0(jiti@2.6.1): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.1.0(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.0(jiti@2.6.1)) '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.23.3 - '@eslint/config-helpers': 0.5.3 - '@eslint/core': 1.1.1 - '@eslint/plugin-kit': 0.6.1 + '@eslint/config-array': 0.23.4 + '@eslint/config-helpers': 0.5.4 + '@eslint/core': 1.2.0 + '@eslint/plugin-kit': 0.7.0 '@humanfs/node': 0.16.7 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 @@ -6956,14 +6956,14 @@ snapshots: dependencies: tslib: 1.14.1 - turbo@2.8.21: + turbo@2.9.3: optionalDependencies: - '@turbo/darwin-64': 2.8.21 - '@turbo/darwin-arm64': 2.8.21 - '@turbo/linux-64': 2.8.21 - '@turbo/linux-arm64': 2.8.21 - '@turbo/windows-64': 2.8.21 - '@turbo/windows-arm64': 2.8.21 + '@turbo/darwin-64': 2.9.3 + '@turbo/darwin-arm64': 2.9.3 + '@turbo/linux-64': 2.9.3 + '@turbo/linux-arm64': 2.9.3 + '@turbo/windows-64': 2.9.3 + '@turbo/windows-arm64': 2.9.3 type-check@0.4.0: dependencies: @@ -6974,13 +6974,13 @@ snapshots: media-typer: 0.3.0 mime-types: 2.1.35 - typescript-eslint@8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3): + typescript-eslint@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.57.2(@typescript-eslint/parser@8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/parser': 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.57.2(typescript@5.9.3) - '@typescript-eslint/utils': 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) - eslint: 10.1.0(jiti@2.6.1) + '@typescript-eslint/eslint-plugin': 8.58.0(@typescript-eslint/parser@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.2.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.58.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 10.2.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color From 2a59fc0538623a76c412e7a6c2502bab97d73d0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ullrich=20Sch=C3=A4fer?= Date: Mon, 6 Apr 2026 23:10:16 +0200 Subject: [PATCH 07/13] Bump postgres from 3.4.8 to 3.4.9 and isbot from 5.1.36 to 5.1.37 Co-Authored-By: Claude Opus 4.6 (1M context) --- apps/journal/package.json | 2 +- apps/planner/package.json | 2 +- package.json | 2 +- pnpm-lock.yaml | 42 ++++++++++++++++++++++----------------- pnpm-workspace.yaml | 2 +- 5 files changed, 28 insertions(+), 22 deletions(-) diff --git a/apps/journal/package.json b/apps/journal/package.json index a6edfca..db076bd 100644 --- a/apps/journal/package.json +++ b/apps/journal/package.json @@ -24,7 +24,7 @@ "@trails-cool/types": "workspace:*", "@trails-cool/ui": "workspace:*", "drizzle-orm": "catalog:", - "isbot": "^5.1.0", + "isbot": "^5.1.37", "jose": "^6.2.2", "nodemailer": "^8.0.4", "pino": "^10.3.1", diff --git a/apps/planner/package.json b/apps/planner/package.json index 48c9e19..483aece 100644 --- a/apps/planner/package.json +++ b/apps/planner/package.json @@ -23,7 +23,7 @@ "@trails-cool/types": "workspace:*", "@trails-cool/ui": "workspace:*", "drizzle-orm": "catalog:", - "isbot": "^5.1.0", + "isbot": "^5.1.37", "lib0": "^0.2.117", "pino": "^10.3.1", "prom-client": "^15.1.3", diff --git a/package.json b/package.json index 8b5c2c2..c1f7c8a 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,7 @@ "leaflet": "^1.9.4", "linkedom": "^0.18.12", "playwright": "^1.58.2", - "postgres": "^3.4.8", + "postgres": "catalog:", "prettier": "^3.8.1", "react": "^19.2.4", "react-dom": "^19.2.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 83947ff..0989299 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -28,8 +28,8 @@ catalogs: specifier: ^0.45.2 version: 0.45.2 postgres: - specifier: ^3.4.0 - version: 3.4.8 + specifier: ^3.4.9 + version: 3.4.9 react: specifier: ^19.1.0 version: 19.2.4 @@ -102,7 +102,7 @@ importers: version: 0.31.10 drizzle-orm: specifier: ^0.45.2 - version: 0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.15.6)(postgres@3.4.8) + version: 0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.15.6)(postgres@3.4.9) drizzle-postgis: specifier: ^1.1.1 version: 1.1.1 @@ -134,8 +134,8 @@ importers: specifier: ^1.58.2 version: 1.58.2 postgres: - specifier: ^3.4.8 - version: 3.4.8 + specifier: 'catalog:' + version: 3.4.9 prettier: specifier: ^3.8.1 version: 3.8.1 @@ -210,10 +210,10 @@ importers: version: link:../../packages/ui drizzle-orm: specifier: 'catalog:' - version: 0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.15.6)(postgres@3.4.8) + version: 0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.15.6)(postgres@3.4.9) isbot: - specifier: ^5.1.0 - version: 5.1.36 + specifier: ^5.1.37 + version: 5.1.37 jose: specifier: ^6.2.2 version: 6.2.2 @@ -307,10 +307,10 @@ importers: version: link:../../packages/ui drizzle-orm: specifier: 'catalog:' - version: 0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.15.6)(postgres@3.4.8) + version: 0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.15.6)(postgres@3.4.9) isbot: - specifier: ^5.1.0 - version: 5.1.36 + specifier: ^5.1.37 + version: 5.1.37 lib0: specifier: ^0.2.117 version: 0.2.117 @@ -374,10 +374,10 @@ importers: dependencies: drizzle-orm: specifier: 'catalog:' - version: 0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.15.6)(postgres@3.4.8) + version: 0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.15.6)(postgres@3.4.9) postgres: specifier: 'catalog:' - version: 3.4.8 + version: 3.4.9 packages/gpx: dependencies: @@ -2828,6 +2828,10 @@ packages: resolution: {integrity: sha512-C/ZtXyJqDPZ7G7JPr06ApWyYoHjYexQbS6hPYD4WYCzpv2Qes6Z+CCEfTX4Owzf+1EJ933PoI2p+B9v7wpGZBQ==} engines: {node: '>=18'} + isbot@5.1.37: + resolution: {integrity: sha512-5bcicX81xf6NlTEV8rWdg7Pk01LFizDetuYGHx6d/f6y3lR2/oo8IfxjzJqn1UdDEyCcwT9e7NRloj8DwCYujQ==} + engines: {node: '>=18'} + isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -3230,8 +3234,8 @@ packages: resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} engines: {node: '>=0.10.0'} - postgres@3.4.8: - resolution: {integrity: sha512-d+JFcLM17njZaOLkv6SCev7uoLaBtfK86vMUXhW1Z4glPWh4jozno9APvW/XKFJ3CCxVoC7OL38BqRydtu5nGg==} + postgres@3.4.9: + resolution: {integrity: sha512-GD3qdB0x1z9xgFI6cdRD6xu2Sp2WCOEoe3mtnyB5Ee0XrrL5Pe+e4CCnJrRMnL1zYtRDZmQQVbvOttLnKDLnaw==} engines: {node: '>=12'} prelude-ls@1.2.1: @@ -5813,11 +5817,11 @@ snapshots: esbuild: 0.25.12 tsx: 4.21.0 - drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.15.6)(postgres@3.4.8): + drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.15.6)(postgres@3.4.9): optionalDependencies: '@opentelemetry/api': 1.9.1 '@types/pg': 8.15.6 - postgres: 3.4.8 + postgres: 3.4.9 drizzle-postgis@1.1.1: dependencies: @@ -6263,6 +6267,8 @@ snapshots: isbot@5.1.36: {} + isbot@5.1.37: {} + isexe@2.0.0: {} isomorphic.js@0.2.5: {} @@ -6618,7 +6624,7 @@ snapshots: dependencies: xtend: 4.0.2 - postgres@3.4.8: {} + postgres@3.4.9: {} prelude-ls@1.2.1: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index a0e4aa0..b0b00b8 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -18,7 +18,7 @@ catalog: drizzle-orm: ^0.45.2 drizzle-kit: ^0.31.0 drizzle-postgis: ^1.1.0 - postgres: ^3.4.0 + postgres: ^3.4.9 overrides: esbuild: ">=0.25.0" From 7c3ab0a95c5d8ca991561f67c04b7d1b0d8e5637 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ullrich=20Sch=C3=A4fer?= Date: Mon, 6 Apr 2026 23:11:40 +0200 Subject: [PATCH 08/13] Bump @sentry/node and @sentry/react from 10.46.0 to 10.47.0 Co-Authored-By: Claude Opus 4.6 (1M context) --- apps/journal/package.json | 4 +- apps/planner/package.json | 4 +- pnpm-lock.yaml | 385 +++++++++++++++++++------------------- 3 files changed, 193 insertions(+), 200 deletions(-) diff --git a/apps/journal/package.json b/apps/journal/package.json index a6edfca..9aad143 100644 --- a/apps/journal/package.json +++ b/apps/journal/package.json @@ -13,8 +13,8 @@ "dependencies": { "@react-router/node": "catalog:", "@react-router/serve": "catalog:", - "@sentry/node": "^10.46.0", - "@sentry/react": "^10.46.0", + "@sentry/node": "^10.47.0", + "@sentry/react": "^10.47.0", "@simplewebauthn/browser": "^13.3.0", "@simplewebauthn/server": "^13.3.0", "@trails-cool/db": "workspace:*", diff --git a/apps/planner/package.json b/apps/planner/package.json index 48c9e19..bc1fcc3 100644 --- a/apps/planner/package.json +++ b/apps/planner/package.json @@ -14,8 +14,8 @@ "@geoman-io/leaflet-geoman-free": "^2.19.2", "@react-router/node": "catalog:", "@react-router/serve": "catalog:", - "@sentry/node": "^10.46.0", - "@sentry/react": "^10.46.0", + "@sentry/node": "^10.47.0", + "@sentry/react": "^10.47.0", "@trails-cool/db": "workspace:*", "@trails-cool/gpx": "workspace:*", "@trails-cool/i18n": "workspace:*", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 83947ff..9424ef0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -179,11 +179,11 @@ importers: specifier: 'catalog:' version: 7.13.2(react-router@7.13.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3) '@sentry/node': - specifier: ^10.46.0 - version: 10.46.0 + specifier: ^10.47.0 + version: 10.47.0 '@sentry/react': - specifier: ^10.46.0 - version: 10.46.0(react@19.2.4) + specifier: ^10.47.0 + version: 10.47.0(react@19.2.4) '@simplewebauthn/browser': specifier: ^13.3.0 version: 13.3.0 @@ -282,11 +282,11 @@ importers: specifier: 'catalog:' version: 7.13.2(react-router@7.13.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3) '@sentry/node': - specifier: ^10.46.0 - version: 10.46.0 + specifier: ^10.47.0 + version: 10.47.0 '@sentry/react': - specifier: ^10.46.0 - version: 10.46.0(react@19.2.4) + specifier: ^10.47.0 + version: 10.47.0(react@19.2.4) '@trails-cool/db': specifier: workspace:* version: link:../../packages/db @@ -1108,8 +1108,8 @@ packages: '@noble/hashes': optional: true - '@fastify/otel@0.17.1': - resolution: {integrity: sha512-K4wyxfUZx2ux5o+b6BtTqouYFVILohLZmSbA2tKUueJstNcBnoGPVhllCaOvbQ3ZrXdUxUC/fyrSWSCqHhdOPg==} + '@fastify/otel@0.18.0': + resolution: {integrity: sha512-3TASCATfw+ctICSb4ymrv7iCm0qJ0N9CarB+CZ7zIJ7KqNbwI5JjyDL1/sxoC0ccTO1Zyd1iQ+oqncPg5FJXaA==} peerDependencies: '@opentelemetry/api': ^1.9.0 @@ -1168,8 +1168,8 @@ packages: resolution: {integrity: sha512-TEEVrLbNROUkYY51sBJGk7lO/OLjuepch8+hmpM6ffMJQ2z/KVCjdHuCFX6fJj8OkJP2zckPjrJzQtXU3IAsFg==} engines: {node: '>=8.0.0'} - '@opentelemetry/api-logs@0.213.0': - resolution: {integrity: sha512-zRM5/Qj6G84Ej3F1yt33xBVY/3tnMxtL1fiDIxYbDWYaZ/eudVw3/PBiZ8G7JwUxXxjW8gU4g6LnOyfGKYHYgw==} + '@opentelemetry/api-logs@0.214.0': + resolution: {integrity: sha512-40lSJeqYO8Uz2Yj7u94/SJWE/wONa7rmMKjI1ZcIjgf3MHNHv1OZUCrCETGuaRF62d5pQD1wKIW+L4lmSMTzZA==} engines: {node: '>=8.0.0'} '@opentelemetry/api@1.9.0': @@ -1186,146 +1186,140 @@ packages: peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/core@2.6.0': - resolution: {integrity: sha512-HLM1v2cbZ4TgYN6KEOj+Bbj8rAKriOdkF9Ed3tG25FoprSiQl7kYc+RRT6fUZGOvx0oMi5U67GoFdT+XUn8zEg==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/core@2.6.1': resolution: {integrity: sha512-8xHSGWpJP9wBxgBpnqGL0R3PbdWQndL1Qp50qrg71+B28zK5OQmUgcDKLJgzyAAV38t4tOyLMGDD60LneR5W8g==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/instrumentation-amqplib@0.60.0': - resolution: {integrity: sha512-q/B2IvoVXRm1M00MvhnzpMN6rKYOszPXVsALi6u0ss4AYHe+TidZEtLW9N1ZhrobI1dSriHnBqqtAOZVAv07sg==} + '@opentelemetry/instrumentation-amqplib@0.61.0': + resolution: {integrity: sha512-mCKoyTGfRNisge4br0NpOFSy2Z1NnEW8hbCJdUDdJFHrPqVzc4IIBPA/vX0U+LUcQqrQvJX+HMIU0dbDRe0i0Q==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-connect@0.56.0': - resolution: {integrity: sha512-PKp+sSZ7AfzMvGgO3VCyo1inwNu+q7A1k9X88WK4PQ+S6Hp7eFk8pie+sWHDTaARovmqq5V2osav3lQej2B0nw==} + '@opentelemetry/instrumentation-connect@0.57.0': + resolution: {integrity: sha512-FMEBChnI4FLN5TE9DHwfH7QpNir1JzXno1uz/TAucVdLCyrG0jTrKIcNHt/i30A0M2AunNBCkcd8Ei26dIPKdg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-dataloader@0.30.0': - resolution: {integrity: sha512-MXHP2Q38cd2OhzEBKAIXUi9uBlPEYzF6BNJbyjUXBQ6kLaf93kRC41vNMIz0Nl5mnuwK7fDvKT+/lpx7BXRwdg==} + '@opentelemetry/instrumentation-dataloader@0.31.0': + resolution: {integrity: sha512-f654tZFQXS5YeLDNb9KySrwtg7SnqZN119FauD7acBoTzuLduaiGTNz88ixcVSOOMGZ+EjJu/RFtx5klObC95g==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-express@0.61.0': - resolution: {integrity: sha512-Xdmqo9RZuZlL29Flg8QdwrrX7eW1CZ7wFQPKHyXljNymgKhN1MCsYuqQ/7uxavhSKwAl7WxkTzKhnqpUApLMvQ==} + '@opentelemetry/instrumentation-express@0.62.0': + resolution: {integrity: sha512-Tvx+vgAZKEQxU3Rx+xWLiR0mLxHwmk69/8ya04+VsV9WYh8w6Lhx5hm5yAMvo1wy0KqWgFKBLwSeo3sHCwdOww==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-fs@0.32.0': - resolution: {integrity: sha512-koR6apx0g0wX6RRiPpjA4AFQUQUbXrK16kq4/SZjVp7u5cffJhNkY4TnITxcGA4acGSPYAfx3NHRIv4Khn1axQ==} + '@opentelemetry/instrumentation-fs@0.33.0': + resolution: {integrity: sha512-sCZWXGalQ01wr3tAhSR9ucqFJ0phidpAle6/17HVjD6gN8FLmZMK/8sKxdXYHy3PbnlV1P4zeiSVFNKpbFMNLA==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-generic-pool@0.56.0': - resolution: {integrity: sha512-fg+Jffs6fqrf0uQS0hom7qBFKsbtpBiBl8+Vkc63Gx8xh6pVh+FhagmiO6oM0m3vyb683t1lP7yGYq22SiDnqg==} + '@opentelemetry/instrumentation-generic-pool@0.57.0': + resolution: {integrity: sha512-orhmlaK+ZIW9hKU+nHTbXrCSXZcH83AescTqmpamHRobRmYSQwRbD0a1odc0yAzuzOtxYiHiXAnpnIpaSSY7Ow==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-graphql@0.61.0': - resolution: {integrity: sha512-pUiVASv6nh2XrerTvlbVHh7vKFzscpgwiQ/xvnZuAIzQ5lRjWVdRPUuXbvZJ/Yq79QsE81TZdJ7z9YsXiss1ew==} + '@opentelemetry/instrumentation-graphql@0.62.0': + resolution: {integrity: sha512-3YNuLVPUxafXkH1jBAbGsKNsP3XVzcFDhCDCE3OqBwCwShlqQbLMRMFh1T/d5jaVZiGVmSsfof+ICKD2iOV8xg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-hapi@0.59.0': - resolution: {integrity: sha512-33wa4mEr+9+ztwdgLor1SeBu4Opz4IsmpcLETXAd3VmBrOjez8uQtrsOhPCa5Vhbm5gzDlMYTgFRLQzf8/YHFA==} + '@opentelemetry/instrumentation-hapi@0.60.0': + resolution: {integrity: sha512-aNljZKYrEa7obLAxd1bCEDxF7kzCLGXTuTJZ8lMR9rIVEjmuKBXN1gfqpm/OB//Zc2zP4iIve1jBp7sr3mQV6w==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-http@0.213.0': - resolution: {integrity: sha512-B978Xsm5XEPGhm1P07grDoaOFLHapJPkOG9h016cJsyWWxmiLnPu2M/4Nrm7UCkHSiLnkXgC+zVGUAIahy8EEA==} + '@opentelemetry/instrumentation-http@0.214.0': + resolution: {integrity: sha512-FlkDhZDRjDJDcO2LcSCtjRpkal1NJ8y0fBqBhTvfAR3JSYY2jAIj1kSS5IjmEBt4c3aWv+u/lqLuoCDrrKCSKg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-ioredis@0.61.0': - resolution: {integrity: sha512-hsHDadUtAFbws1YSDc1XW0svGFKiUbqv2td1Cby+UAiwvojm1NyBo/taifH0t8CuFZ0x/2SDm0iuTwrM5pnVOg==} + '@opentelemetry/instrumentation-ioredis@0.62.0': + resolution: {integrity: sha512-ZYt//zcPve8qklaZX+5Z4MkU7UpEkFRrxsf2cnaKYBitqDnsCN69CPAuuMOX6NYdW2rG9sFy7V/QWtBlP5XiNQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-kafkajs@0.22.0': - resolution: {integrity: sha512-wJU4IBQMUikdJAcTChLFqK5lo+flo7pahqd8DSLv7uMxsdOdAHj6RzKYAm8pPfUS6ItKYutYyuicwKaFwQKsoA==} + '@opentelemetry/instrumentation-kafkajs@0.23.0': + resolution: {integrity: sha512-4K+nVo+zI+aDz0Z85SObwbdixIbzS9moIuKJaYsdlzcHYnKOPtB7ya8r8Ezivy/GVIBHiKJVq4tv+BEkgOMLaQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-knex@0.57.0': - resolution: {integrity: sha512-vMCSh8kolEm5rRsc+FZeTZymWmIJwc40hjIKnXH4O0Dv/gAkJJIRXCsPX5cPbe0c0j/34+PsENd0HqKruwhVYw==} + '@opentelemetry/instrumentation-knex@0.58.0': + resolution: {integrity: sha512-Hc/o8fSsaWxZ8r1Yw4rNDLwTpUopTf4X32y4W6UhlHmW8Wizz8wfhgOKIelSeqFVTKBBPIDUOsQWuIMxBmu8Bw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-koa@0.61.0': - resolution: {integrity: sha512-lvrfWe9ShK/D2X4brmx8ZqqeWPfRl8xekU0FCn7C1dHm5k6+rTOOi36+4fnaHAP8lig9Ux6XQ1D4RNIpPCt1WQ==} + '@opentelemetry/instrumentation-koa@0.62.0': + resolution: {integrity: sha512-uVip0VuGUQXZ+vFxkKxAUNq8qNl+VFlyHDh/U6IQ8COOEDfbEchdaHnpFrMYF3psZRUuoSIgb7xOeXj00RdwDA==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.9.0 - '@opentelemetry/instrumentation-lru-memoizer@0.57.0': - resolution: {integrity: sha512-cEqpUocSKJfwDtLYTTJehRLWzkZ2eoePCxfVIgGkGkb83fMB71O+y4MvRHJPbeV2bdoWdOVrl8uO0+EynWhTEA==} + '@opentelemetry/instrumentation-lru-memoizer@0.58.0': + resolution: {integrity: sha512-6grM3TdMyHzlGY1cUA+mwoPueB1F3dYKgKtZIH6jOFXqfHAByyLTc+6PFjGM9tKh52CFBJaDwodNlL/Td39z7Q==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-mongodb@0.66.0': - resolution: {integrity: sha512-d7m9QnAY+4TCWI4q1QRkfrc6fo/92VwssaB1DzQfXNRvu51b78P+HJlWP7Qg6N6nkwdb9faMZNBCZJfftmszkw==} + '@opentelemetry/instrumentation-mongodb@0.67.0': + resolution: {integrity: sha512-1WJp5N1lYfHq2IhECOTewFs5Tf2NfUOwQRqs/rZdXKTezArMlucxgzAaqcgp3A3YREXopXTpXHsxZTGHjNhMdQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-mongoose@0.59.0': - resolution: {integrity: sha512-6/jWU+c1NgznkVLDU/2y0bXV2nJo3o9FWZ9mZ9nN6T/JBNRoMnVXZl2FdBmgH+a5MwaWLs5kmRJTP5oUVGIkPw==} + '@opentelemetry/instrumentation-mongoose@0.60.0': + resolution: {integrity: sha512-8BahAZpKsOoc+lrZGb7Ofn4g3z8qtp5IxDfvAVpKXsEheQN7ONMH5djT5ihy6yf8yyeQJGS0gXFfpEAEeEHqQg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-mysql2@0.59.0': - resolution: {integrity: sha512-n9/xrVCRBfG9egVbffnlU1uhr+HX0vF4GgtAB/Bvm48wpFgRidqD8msBMiym1kRYzmpWvJqTxNT47u1MkgBEdw==} + '@opentelemetry/instrumentation-mysql2@0.60.0': + resolution: {integrity: sha512-m/5d3bxQALllCzezYDk/6vajh0tj5OijMMvOZGr+qN1NMXm1dzMNwyJ0gNZW7Fo3YFRyj/jJMxIw+W7d525dlw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-mysql@0.59.0': - resolution: {integrity: sha512-r+V/Fh0sm7Ga8/zk/TI5H5FQRAjwr0RrpfPf8kNIehlsKf12XnvIaZi8ViZkpX0gyPEpLXqzqWD6QHlgObgzZw==} + '@opentelemetry/instrumentation-mysql@0.60.0': + resolution: {integrity: sha512-08pO8GFPEIz2zquKDGteBZDNmwketdgH8hTe9rVYgW9kCJXq1Psj3wPQGx+VaX4ZJKCfPeoLMYup9+cxHvZyVQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-pg@0.65.0': - resolution: {integrity: sha512-W0zpHEIEuyZ8zvb3njaX9AAbHgPYOsSWVOoWmv1sjVRSF6ZpBqtlxBWbU+6hhq1TFWBeWJOXZ8nZS/PUFpLJYQ==} + '@opentelemetry/instrumentation-pg@0.66.0': + resolution: {integrity: sha512-KxfLGXBb7k2ueaPJfq2GXBDXBly8P+SpR/4Mj410hhNgmQF3sCqwXvUBQxZQkDAmsdBAoenM+yV1LhtsMRamcA==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-redis@0.61.0': - resolution: {integrity: sha512-JnPexA034/0UJRsvH96B0erQoNOqKJZjE2ZRSw9hiTSC23LzE0nJE/u6D+xqOhgUhRnhhcPHq4MdYtmUdYTF+Q==} + '@opentelemetry/instrumentation-redis@0.62.0': + resolution: {integrity: sha512-y3pPpot7WzR/8JtHcYlTYsyY8g+pbFhAqbwAuG5bLPnR6v6pt1rQc0DpH0OlGP/9CZbWBP+Zhwp9yFoygf/ZXQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-tedious@0.32.0': - resolution: {integrity: sha512-BQS6gG8RJ1foEqfEZ+wxoqlwfCAzb1ZVG0ad8Gfe4x8T658HJCLGLd4E4NaoQd8EvPfLqOXgzGaE/2U4ytDSWA==} + '@opentelemetry/instrumentation-tedious@0.33.0': + resolution: {integrity: sha512-Q6WQwAD01MMTub31GlejoiFACYNw26J426wyjvU7by7fDIr2nZXNW4vhTGs7i7F0TnXBO3xN688g1tdUgYwJ5w==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-undici@0.23.0': - resolution: {integrity: sha512-LL0VySzKVR2cJSFVZaTYpZl1XTpBGnfzoQPe2W7McS2267ldsaEIqtQY6VXs2KCXN0poFjze5110PIpxHDaDGg==} + '@opentelemetry/instrumentation-undici@0.24.0': + resolution: {integrity: sha512-oKzZ3uvqP17sV0EsoQcJgjEfIp0kiZRbYu/eD8p13Cbahumf8lb/xpYeNr/hfAJ4owzEtIDcGIjprfLcYbIKBQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.7.0 @@ -1342,8 +1336,8 @@ packages: peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation@0.213.0': - resolution: {integrity: sha512-3i9NdkET/KvQomeh7UaR/F4r9P25Rx6ooALlWXPIjypcEOUxksCmVu0zA70NBJWlrMW1rPr/LRidFAflLI+s/w==} + '@opentelemetry/instrumentation@0.214.0': + resolution: {integrity: sha512-MHqEX5Dk59cqVah5LiARMACku7jXSVk9iVDWOea4x3cr7VfdByeDCURK6o1lntT1JS/Tsovw01UJrBhN3/uC5w==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 @@ -1419,8 +1413,8 @@ packages: engines: {node: '>=18'} hasBin: true - '@prisma/instrumentation@7.4.2': - resolution: {integrity: sha512-r9JfchJF1Ae6yAxcaLu/V1TGqBhAuSDe3mRNOssBfx1rMzfZ4fdNvrgUBwyb/TNTGXFxlH9AZix5P257x07nrg==} + '@prisma/instrumentation@7.6.0': + resolution: {integrity: sha512-ZPW2gRiwpPzEfgeZgaekhqXrbW+Y2RJKHVqUmlhZhKzRNCcvR6DykzylDrynpArKKRQtLxoZy36fK7U0p3pdgQ==} peerDependencies: '@opentelemetry/api': ^1.8 @@ -1611,28 +1605,28 @@ packages: cpu: [x64] os: [win32] - '@sentry-internal/browser-utils@10.46.0': - resolution: {integrity: sha512-WB1gBT9G13V02ekZ6NpUhoI1aGHV2eNfjEPthkU2bGBvFpQKnstwzjg7waIRGR7cu+YSW2Q6UI6aQLgBeOPD1g==} + '@sentry-internal/browser-utils@10.47.0': + resolution: {integrity: sha512-bVFRAeJWMBcBCvJKIFCMJ1/yQToL4vPGqfmlnDZeypcxkqUDKQ/Y3ziLHXoDL2sx0lagcgU2vH1QhCQ67Aujjw==} engines: {node: '>=18'} - '@sentry-internal/feedback@10.46.0': - resolution: {integrity: sha512-c4pI/z9nZCQXe9GYEw/hE/YTY9AxGBp8/wgKI+T8zylrN35SGHaXv63szzE1WbI8lacBY8lBF7rstq9bQVCaHw==} + '@sentry-internal/feedback@10.47.0': + resolution: {integrity: sha512-pdvMmi4dQpX5S/vAAzrhHPIw3T3HjUgDNgUiCBrlp7N9/6zGO2gNPhUnNekP+CjgI/z0rvf49RLqlDenpNrMOg==} engines: {node: '>=18'} - '@sentry-internal/replay-canvas@10.46.0': - resolution: {integrity: sha512-ub314MWUsekVCuoH0/HJbbimlI24SkV745UW2pj9xRbxOAEf1wjkmIzxKrMDbTgJGuEunug02XZVdJFJUzOcDw==} + '@sentry-internal/replay-canvas@10.47.0': + resolution: {integrity: sha512-A5OY8friSe6g8WAK4L8IeOPiEd9D3Ps40DzRH5j2f6SUja0t90mKMvHRcRf8zq0d4BkdB+JM7tjOkwxpuv8heA==} engines: {node: '>=18'} - '@sentry-internal/replay@10.46.0': - resolution: {integrity: sha512-JBsWeXG6bRbxBFK8GzWymWGOB9QE7Kl57BeF3jzgdHTuHSWZ2mRnAmb1K05T4LU+gVygk6yW0KmdC8Py9Qzg9A==} + '@sentry-internal/replay@10.47.0': + resolution: {integrity: sha512-ScdovxP7hJxgMt70+7hFvwT02GIaIUAxdEM/YPsayZBeCoAukPW8WiwztJfoKtsfPyKJ5A6f0H3PIxTPcA9Row==} engines: {node: '>=18'} '@sentry/babel-plugin-component-annotate@5.1.1': resolution: {integrity: sha512-x2wEpBHwsTyTF2rWsLKJlzrRF1TTIGOfX+ngdE+Yd5DBkoS58HwQv824QOviPGQRla4/ypISqAXzjdDPL/zalg==} engines: {node: '>= 18'} - '@sentry/browser@10.46.0': - resolution: {integrity: sha512-80DmGlTk5Z2/OxVOzLNxwolMyouuAYKqG8KUcoyintZqHbF6kO1RulI610HmyUt3OagKeBCqt9S7w0VIfCRL+Q==} + '@sentry/browser@10.47.0': + resolution: {integrity: sha512-rC0agZdxKA5XWfL4VwPOr/rJMogXDqZgnVzr93YWpFn9DMZT/7LzxSJVPIJwRUjx3bFEby3PcTa3YaX7pxm1AA==} engines: {node: '>=18'} '@sentry/bundler-plugin-core@5.1.1': @@ -1691,17 +1685,18 @@ packages: engines: {node: '>= 10'} hasBin: true - '@sentry/core@10.46.0': - resolution: {integrity: sha512-N3fj4zqBQOhXliS1Ne9euqIKuciHCGOJfPGQLwBoW9DNz03jF+NB8+dUKtrJ79YLoftjVgf8nbgwtADK7NR+2Q==} + '@sentry/core@10.47.0': + resolution: {integrity: sha512-nsYRAx3EWezDut+Zl+UwwP07thh9uY7CfSAi2whTdcJl5hu1nSp2z8bba7Vq/MGbNLnazkd3A+GITBEML924JA==} engines: {node: '>=18'} - '@sentry/node-core@10.46.0': - resolution: {integrity: sha512-gwLGXfkzmiCmUI1VWttyoZBaVp1ItpDKc8AV2mQblWPQGdLSD0c6uKV/FkU291yZA3rXsrLXVwcWoibwnjE2vw==} + '@sentry/node-core@10.47.0': + resolution: {integrity: sha512-qv6LsqHbkQmd0aQEUox/svRSz26J+l4gGjFOUNEay2armZu9XLD+Ct89jpFgZD5oIPNAj2jraodTRqydXiwS5w==} engines: {node: '>=18'} peerDependencies: '@opentelemetry/api': ^1.9.0 '@opentelemetry/context-async-hooks': ^1.30.1 || ^2.1.0 '@opentelemetry/core': ^1.30.1 || ^2.1.0 + '@opentelemetry/exporter-trace-otlp-http': '>=0.57.0 <1' '@opentelemetry/instrumentation': '>=0.57.1 <1' '@opentelemetry/resources': ^1.30.1 || ^2.1.0 '@opentelemetry/sdk-trace-base': ^1.30.1 || ^2.1.0 @@ -1713,6 +1708,8 @@ packages: optional: true '@opentelemetry/core': optional: true + '@opentelemetry/exporter-trace-otlp-http': + optional: true '@opentelemetry/instrumentation': optional: true '@opentelemetry/resources': @@ -1722,12 +1719,12 @@ packages: '@opentelemetry/semantic-conventions': optional: true - '@sentry/node@10.46.0': - resolution: {integrity: sha512-vF+7FrUXEtmYWuVcnvBjlWKeyLw/kwHpwnGj9oUmO/a2uKjDmUr53ZVcapggNxCjivavGYr9uHOY64AGdeUyzA==} + '@sentry/node@10.47.0': + resolution: {integrity: sha512-R+btqPepv88o635G6HtVewLjqCLUedBg5HBs7Nq1qbbKvyti01uArUF2f+3DsLenk5B9LUNiRlE+frZA44Ahmw==} engines: {node: '>=18'} - '@sentry/opentelemetry@10.46.0': - resolution: {integrity: sha512-dzzV2ovruGsx9jzusGGr6cNPvMgYRu2BIrF8aMZ3rkQ1OpPJjPStqtA1l1fw0aoxHOxIjFU7ml4emF+xdmMl3g==} + '@sentry/opentelemetry@10.47.0': + resolution: {integrity: sha512-f6Hw2lrpCjlOksiosP0Z2jK/+l+21SIdoNglVeG/sttMyx8C8ywONKh0Ha50sFsvB1VaB8n94RKzzf3hkh9V3g==} engines: {node: '>=18'} peerDependencies: '@opentelemetry/api': ^1.9.0 @@ -1736,8 +1733,8 @@ packages: '@opentelemetry/sdk-trace-base': ^1.30.1 || ^2.1.0 '@opentelemetry/semantic-conventions': ^1.39.0 - '@sentry/react@10.46.0': - resolution: {integrity: sha512-Rb1S+9OuUPVwsz7GWnQ6Kgf3azbsseUymIegg3JZHNcW/fM1nPpaljzTBnuineia113DH0pgMBcdrrZDLaosFQ==} + '@sentry/react@10.47.0': + resolution: {integrity: sha512-ZtJV6xxF8jUVE9e3YQUG3Do0XapG1GjniyLyqMPgN6cNvs/HaRJODf7m60By+VGqcl5XArEjEPTvx8CdPUXDfA==} engines: {node: '>=18'} peerDependencies: react: ^16.14.0 || 17.x || 18.x || 19.x @@ -4324,7 +4321,7 @@ snapshots: '@exodus/bytes@1.15.0': {} - '@fastify/otel@0.17.1(@opentelemetry/api@1.9.1)': + '@fastify/otel@0.18.0(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 '@opentelemetry/core': 2.6.1(@opentelemetry/api@1.9.1) @@ -4388,7 +4385,7 @@ snapshots: dependencies: '@opentelemetry/api': 1.9.1 - '@opentelemetry/api-logs@0.213.0': + '@opentelemetry/api-logs@0.214.0': dependencies: '@opentelemetry/api': 1.9.1 @@ -4400,173 +4397,168 @@ snapshots: dependencies: '@opentelemetry/api': 1.9.1 - '@opentelemetry/core@2.6.0(@opentelemetry/api@1.9.1)': - dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/semantic-conventions': 1.40.0 - '@opentelemetry/core@2.6.1(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 '@opentelemetry/semantic-conventions': 1.40.0 - '@opentelemetry/instrumentation-amqplib@0.60.0(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-amqplib@0.61.0(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 '@opentelemetry/core': 2.6.1(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation': 0.213.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation': 0.214.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.40.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-connect@0.56.0(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-connect@0.57.0(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 '@opentelemetry/core': 2.6.1(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation': 0.213.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation': 0.214.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.40.0 '@types/connect': 3.4.38 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-dataloader@0.30.0(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-dataloader@0.31.0(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 - '@opentelemetry/instrumentation': 0.213.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation': 0.214.0(@opentelemetry/api@1.9.1) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-express@0.61.0(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-express@0.62.0(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 '@opentelemetry/core': 2.6.1(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation': 0.213.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation': 0.214.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.40.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-fs@0.32.0(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-fs@0.33.0(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 '@opentelemetry/core': 2.6.1(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation': 0.213.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation': 0.214.0(@opentelemetry/api@1.9.1) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-generic-pool@0.56.0(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-generic-pool@0.57.0(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 - '@opentelemetry/instrumentation': 0.213.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation': 0.214.0(@opentelemetry/api@1.9.1) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-graphql@0.61.0(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-graphql@0.62.0(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 - '@opentelemetry/instrumentation': 0.213.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation': 0.214.0(@opentelemetry/api@1.9.1) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-hapi@0.59.0(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-hapi@0.60.0(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 '@opentelemetry/core': 2.6.1(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation': 0.213.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation': 0.214.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.40.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-http@0.213.0(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-http@0.214.0(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 - '@opentelemetry/core': 2.6.0(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation': 0.213.0(@opentelemetry/api@1.9.1) + '@opentelemetry/core': 2.6.1(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation': 0.214.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.40.0 forwarded-parse: 2.1.2 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-ioredis@0.61.0(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-ioredis@0.62.0(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 - '@opentelemetry/instrumentation': 0.213.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation': 0.214.0(@opentelemetry/api@1.9.1) '@opentelemetry/redis-common': 0.38.2 '@opentelemetry/semantic-conventions': 1.40.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-kafkajs@0.22.0(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-kafkajs@0.23.0(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 - '@opentelemetry/instrumentation': 0.213.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation': 0.214.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.40.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-knex@0.57.0(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-knex@0.58.0(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 - '@opentelemetry/instrumentation': 0.213.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation': 0.214.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.40.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-koa@0.61.0(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-koa@0.62.0(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 '@opentelemetry/core': 2.6.1(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation': 0.213.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation': 0.214.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.40.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-lru-memoizer@0.57.0(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-lru-memoizer@0.58.0(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 - '@opentelemetry/instrumentation': 0.213.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation': 0.214.0(@opentelemetry/api@1.9.1) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-mongodb@0.66.0(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-mongodb@0.67.0(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 - '@opentelemetry/instrumentation': 0.213.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation': 0.214.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.40.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-mongoose@0.59.0(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-mongoose@0.60.0(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 '@opentelemetry/core': 2.6.1(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation': 0.213.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation': 0.214.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.40.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-mysql2@0.59.0(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-mysql2@0.60.0(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 - '@opentelemetry/instrumentation': 0.213.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation': 0.214.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.40.0 '@opentelemetry/sql-common': 0.41.2(@opentelemetry/api@1.9.1) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-mysql@0.59.0(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-mysql@0.60.0(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 - '@opentelemetry/instrumentation': 0.213.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation': 0.214.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.40.0 '@types/mysql': 2.15.27 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-pg@0.65.0(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-pg@0.66.0(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 '@opentelemetry/core': 2.6.1(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation': 0.213.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation': 0.214.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.40.0 '@opentelemetry/sql-common': 0.41.2(@opentelemetry/api@1.9.1) '@types/pg': 8.15.6 @@ -4574,29 +4566,29 @@ snapshots: transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-redis@0.61.0(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-redis@0.62.0(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 - '@opentelemetry/instrumentation': 0.213.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation': 0.214.0(@opentelemetry/api@1.9.1) '@opentelemetry/redis-common': 0.38.2 '@opentelemetry/semantic-conventions': 1.40.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-tedious@0.32.0(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-tedious@0.33.0(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 - '@opentelemetry/instrumentation': 0.213.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation': 0.214.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.40.0 '@types/tedious': 4.0.14 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-undici@0.23.0(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-undici@0.24.0(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 '@opentelemetry/core': 2.6.1(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation': 0.213.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation': 0.214.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.40.0 transitivePeerDependencies: - supports-color @@ -4619,10 +4611,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation@0.213.0(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation@0.214.0(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 - '@opentelemetry/api-logs': 0.213.0 + '@opentelemetry/api-logs': 0.214.0 import-in-the-middle: 3.0.0 require-in-the-middle: 8.0.1 transitivePeerDependencies: @@ -4752,7 +4744,7 @@ snapshots: dependencies: playwright: 1.58.2 - '@prisma/instrumentation@7.4.2(@opentelemetry/api@1.9.1)': + '@prisma/instrumentation@7.6.0(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 '@opentelemetry/instrumentation': 0.207.0(@opentelemetry/api@1.9.1) @@ -4922,33 +4914,33 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.60.0': optional: true - '@sentry-internal/browser-utils@10.46.0': + '@sentry-internal/browser-utils@10.47.0': dependencies: - '@sentry/core': 10.46.0 + '@sentry/core': 10.47.0 - '@sentry-internal/feedback@10.46.0': + '@sentry-internal/feedback@10.47.0': dependencies: - '@sentry/core': 10.46.0 + '@sentry/core': 10.47.0 - '@sentry-internal/replay-canvas@10.46.0': + '@sentry-internal/replay-canvas@10.47.0': dependencies: - '@sentry-internal/replay': 10.46.0 - '@sentry/core': 10.46.0 + '@sentry-internal/replay': 10.47.0 + '@sentry/core': 10.47.0 - '@sentry-internal/replay@10.46.0': + '@sentry-internal/replay@10.47.0': dependencies: - '@sentry-internal/browser-utils': 10.46.0 - '@sentry/core': 10.46.0 + '@sentry-internal/browser-utils': 10.47.0 + '@sentry/core': 10.47.0 '@sentry/babel-plugin-component-annotate@5.1.1': {} - '@sentry/browser@10.46.0': + '@sentry/browser@10.47.0': dependencies: - '@sentry-internal/browser-utils': 10.46.0 - '@sentry-internal/feedback': 10.46.0 - '@sentry-internal/replay': 10.46.0 - '@sentry-internal/replay-canvas': 10.46.0 - '@sentry/core': 10.46.0 + '@sentry-internal/browser-utils': 10.47.0 + '@sentry-internal/feedback': 10.47.0 + '@sentry-internal/replay': 10.47.0 + '@sentry-internal/replay-canvas': 10.47.0 + '@sentry/core': 10.47.0 '@sentry/bundler-plugin-core@5.1.1': dependencies: @@ -5007,75 +4999,76 @@ snapshots: - encoding - supports-color - '@sentry/core@10.46.0': {} + '@sentry/core@10.47.0': {} - '@sentry/node-core@10.46.0(@opentelemetry/api@1.9.1)(@opentelemetry/context-async-hooks@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/core@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/instrumentation@0.213.0(@opentelemetry/api@1.9.1))(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.40.0)': + '@sentry/node-core@10.47.0(@opentelemetry/api@1.9.1)(@opentelemetry/context-async-hooks@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/core@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/instrumentation@0.214.0(@opentelemetry/api@1.9.1))(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.40.0)': dependencies: - '@sentry/core': 10.46.0 - '@sentry/opentelemetry': 10.46.0(@opentelemetry/api@1.9.1)(@opentelemetry/context-async-hooks@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/core@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.40.0) + '@sentry/core': 10.47.0 + '@sentry/opentelemetry': 10.47.0(@opentelemetry/api@1.9.1)(@opentelemetry/context-async-hooks@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/core@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.40.0) import-in-the-middle: 3.0.0 optionalDependencies: '@opentelemetry/api': 1.9.1 '@opentelemetry/context-async-hooks': 2.6.1(@opentelemetry/api@1.9.1) '@opentelemetry/core': 2.6.1(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation': 0.213.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation': 0.214.0(@opentelemetry/api@1.9.1) '@opentelemetry/resources': 2.6.1(@opentelemetry/api@1.9.1) '@opentelemetry/sdk-trace-base': 2.6.1(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.40.0 - '@sentry/node@10.46.0': + '@sentry/node@10.47.0': dependencies: - '@fastify/otel': 0.17.1(@opentelemetry/api@1.9.1) + '@fastify/otel': 0.18.0(@opentelemetry/api@1.9.1) '@opentelemetry/api': 1.9.1 '@opentelemetry/context-async-hooks': 2.6.1(@opentelemetry/api@1.9.1) '@opentelemetry/core': 2.6.1(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation': 0.213.0(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-amqplib': 0.60.0(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-connect': 0.56.0(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-dataloader': 0.30.0(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-express': 0.61.0(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-fs': 0.32.0(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-generic-pool': 0.56.0(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-graphql': 0.61.0(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-hapi': 0.59.0(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-http': 0.213.0(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-ioredis': 0.61.0(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-kafkajs': 0.22.0(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-knex': 0.57.0(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-koa': 0.61.0(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-lru-memoizer': 0.57.0(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-mongodb': 0.66.0(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-mongoose': 0.59.0(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-mysql': 0.59.0(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-mysql2': 0.59.0(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-pg': 0.65.0(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-redis': 0.61.0(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-tedious': 0.32.0(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-undici': 0.23.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation': 0.214.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-amqplib': 0.61.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-connect': 0.57.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-dataloader': 0.31.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-express': 0.62.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-fs': 0.33.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-generic-pool': 0.57.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-graphql': 0.62.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-hapi': 0.60.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-http': 0.214.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-ioredis': 0.62.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-kafkajs': 0.23.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-knex': 0.58.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-koa': 0.62.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-lru-memoizer': 0.58.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-mongodb': 0.67.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-mongoose': 0.60.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-mysql': 0.60.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-mysql2': 0.60.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-pg': 0.66.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-redis': 0.62.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-tedious': 0.33.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation-undici': 0.24.0(@opentelemetry/api@1.9.1) '@opentelemetry/resources': 2.6.1(@opentelemetry/api@1.9.1) '@opentelemetry/sdk-trace-base': 2.6.1(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.40.0 - '@prisma/instrumentation': 7.4.2(@opentelemetry/api@1.9.1) - '@sentry/core': 10.46.0 - '@sentry/node-core': 10.46.0(@opentelemetry/api@1.9.1)(@opentelemetry/context-async-hooks@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/core@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/instrumentation@0.213.0(@opentelemetry/api@1.9.1))(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.40.0) - '@sentry/opentelemetry': 10.46.0(@opentelemetry/api@1.9.1)(@opentelemetry/context-async-hooks@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/core@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.40.0) + '@prisma/instrumentation': 7.6.0(@opentelemetry/api@1.9.1) + '@sentry/core': 10.47.0 + '@sentry/node-core': 10.47.0(@opentelemetry/api@1.9.1)(@opentelemetry/context-async-hooks@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/core@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/instrumentation@0.214.0(@opentelemetry/api@1.9.1))(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.40.0) + '@sentry/opentelemetry': 10.47.0(@opentelemetry/api@1.9.1)(@opentelemetry/context-async-hooks@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/core@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.40.0) import-in-the-middle: 3.0.0 transitivePeerDependencies: + - '@opentelemetry/exporter-trace-otlp-http' - supports-color - '@sentry/opentelemetry@10.46.0(@opentelemetry/api@1.9.1)(@opentelemetry/context-async-hooks@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/core@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.40.0)': + '@sentry/opentelemetry@10.47.0(@opentelemetry/api@1.9.1)(@opentelemetry/context-async-hooks@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/core@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.40.0)': dependencies: '@opentelemetry/api': 1.9.1 '@opentelemetry/context-async-hooks': 2.6.1(@opentelemetry/api@1.9.1) '@opentelemetry/core': 2.6.1(@opentelemetry/api@1.9.1) '@opentelemetry/sdk-trace-base': 2.6.1(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.40.0 - '@sentry/core': 10.46.0 + '@sentry/core': 10.47.0 - '@sentry/react@10.46.0(react@19.2.4)': + '@sentry/react@10.47.0(react@19.2.4)': dependencies: - '@sentry/browser': 10.46.0 - '@sentry/core': 10.46.0 + '@sentry/browser': 10.47.0 + '@sentry/core': 10.47.0 react: 19.2.4 '@sentry/rollup-plugin@5.1.1(rollup@4.60.0)': From 3b0436fe33faeb29b7996f544c4fd687dc8b2303 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ullrich=20Sch=C3=A4fer?= Date: Mon, 6 Apr 2026 23:13:04 +0200 Subject: [PATCH 09/13] Bump react-router packages from 7.13.2 to 7.14.0 Co-Authored-By: Claude Opus 4.6 (1M context) --- package.json | 8 ++-- pnpm-lock.yaml | 110 ++++++++++++++++++++++---------------------- pnpm-workspace.yaml | 8 ++-- 3 files changed, 63 insertions(+), 63 deletions(-) diff --git a/package.json b/package.json index 8b5c2c2..c18c45a 100644 --- a/package.json +++ b/package.json @@ -36,9 +36,9 @@ "devDependencies": { "@eslint/js": "^10.0.1", "@playwright/test": "^1.58.2", - "@react-router/dev": "^7.13.2", - "@react-router/node": "^7.13.2", - "@react-router/serve": "^7.13.2", + "@react-router/dev": "catalog:", + "@react-router/node": "catalog:", + "@react-router/serve": "catalog:", "@sentry/vite-plugin": "^5.1.1", "@tailwindcss/vite": "^4.2.2", "@testing-library/jest-dom": "^6.9.1", @@ -65,7 +65,7 @@ "react-dom": "^19.2.4", "react-i18next": "^17.0.1", "react-leaflet": "^5.0.0", - "react-router": "^7.13.2", + "react-router": "catalog:", "tailwindcss": "^4.2.2", "turbo": "^2.8.21", "typescript-eslint": "^8.57.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 83947ff..da0e5b0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,14 +7,14 @@ settings: catalogs: default: '@react-router/dev': - specifier: ^7.13.2 - version: 7.13.2 + specifier: ^7.14.0 + version: 7.14.0 '@react-router/node': - specifier: ^7.13.2 - version: 7.13.2 + specifier: ^7.14.0 + version: 7.14.0 '@react-router/serve': - specifier: ^7.13.2 - version: 7.13.2 + specifier: ^7.14.0 + version: 7.14.0 '@tailwindcss/vite': specifier: ^4.1.7 version: 4.2.2 @@ -37,8 +37,8 @@ catalogs: specifier: ^19.1.0 version: 19.2.4 react-router: - specifier: ^7.13.2 - version: 7.13.2 + specifier: ^7.14.0 + version: 7.14.0 tailwindcss: specifier: ^4.1.7 version: 4.2.2 @@ -65,14 +65,14 @@ importers: specifier: ^1.58.2 version: 1.58.2 '@react-router/dev': - specifier: ^7.13.2 - version: 7.13.2(@react-router/serve@7.13.2(react-router@7.13.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3))(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(react-router@7.13.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(tsx@4.21.0)(typescript@5.9.3)(vite@6.4.1(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)) + specifier: 'catalog:' + version: 7.14.0(@react-router/serve@7.14.0(react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3))(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(tsx@4.21.0)(typescript@5.9.3)(vite@6.4.1(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)) '@react-router/node': - specifier: ^7.13.2 - version: 7.13.2(react-router@7.13.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3) + specifier: 'catalog:' + version: 7.14.0(react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3) '@react-router/serve': - specifier: ^7.13.2 - version: 7.13.2(react-router@7.13.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3) + specifier: 'catalog:' + version: 7.14.0(react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3) '@sentry/vite-plugin': specifier: ^5.1.1 version: 5.1.1(rollup@4.60.0) @@ -152,8 +152,8 @@ importers: specifier: ^5.0.0 version: 5.0.0(leaflet@1.9.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) react-router: - specifier: ^7.13.2 - version: 7.13.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + specifier: 'catalog:' + version: 7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) tailwindcss: specifier: ^4.2.2 version: 4.2.2 @@ -174,10 +174,10 @@ importers: dependencies: '@react-router/node': specifier: 'catalog:' - version: 7.13.2(react-router@7.13.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3) + version: 7.14.0(react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3) '@react-router/serve': specifier: 'catalog:' - version: 7.13.2(react-router@7.13.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3) + version: 7.14.0(react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3) '@sentry/node': specifier: ^10.46.0 version: 10.46.0 @@ -234,11 +234,11 @@ importers: version: 19.2.4(react@19.2.4) react-router: specifier: 'catalog:' - version: 7.13.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) devDependencies: '@react-router/dev': specifier: 'catalog:' - version: 7.13.2(@react-router/serve@7.13.2(react-router@7.13.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3))(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(react-router@7.13.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(tsx@4.21.0)(typescript@5.9.3)(vite@6.4.1(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)) + version: 7.14.0(@react-router/serve@7.14.0(react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3))(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(tsx@4.21.0)(typescript@5.9.3)(vite@6.4.1(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)) '@simplewebauthn/types': specifier: ^12.0.0 version: 12.0.0 @@ -277,10 +277,10 @@ importers: version: 2.19.2(leaflet@1.9.4) '@react-router/node': specifier: 'catalog:' - version: 7.13.2(react-router@7.13.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3) + version: 7.14.0(react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3) '@react-router/serve': specifier: 'catalog:' - version: 7.13.2(react-router@7.13.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3) + version: 7.14.0(react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3) '@sentry/node': specifier: ^10.46.0 version: 10.46.0 @@ -328,7 +328,7 @@ importers: version: 19.2.4(react@19.2.4) react-router: specifier: 'catalog:' - version: 7.13.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) ws: specifier: ^8.20.0 version: 8.20.0 @@ -344,7 +344,7 @@ importers: devDependencies: '@react-router/dev': specifier: 'catalog:' - version: 7.13.2(@react-router/serve@7.13.2(react-router@7.13.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3))(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(react-router@7.13.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(tsx@4.21.0)(typescript@5.9.3)(vite@6.4.1(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)) + version: 7.14.0(@react-router/serve@7.14.0(react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3))(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(tsx@4.21.0)(typescript@5.9.3)(vite@6.4.1(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)) '@tailwindcss/vite': specifier: 'catalog:' version: 4.2.2(vite@6.4.1(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)) @@ -1431,17 +1431,17 @@ packages: react: ^19.0.0 react-dom: ^19.0.0 - '@react-router/dev@7.13.2': - resolution: {integrity: sha512-8Lgf+WCEIPDhp22YB3fyoiWnNyM39sjkfWnSxAwy+Sg83OHxnQFQg0OK1oPM9lm1n/hxJe4lLYOPNwDSyeGiog==} + '@react-router/dev@7.14.0': + resolution: {integrity: sha512-/1ElF4lDTEIZ/rbEdlj6MmRY9ERRDyaTswWes+3pbqEKF2r/ixSzACueHWIfV9ULg/x5/weCvSexDD9f16ObwA==} engines: {node: '>=20.0.0'} hasBin: true peerDependencies: - '@react-router/serve': ^7.13.2 - '@vitejs/plugin-rsc': ~0.5.7 - react-router: ^7.13.2 + '@react-router/serve': ^7.14.0 + '@vitejs/plugin-rsc': ~0.5.21 + react-router: ^7.14.0 react-server-dom-webpack: ^19.2.3 typescript: ^5.1.0 - vite: ^5.1.0 || ^6.0.0 || ^7.0.0 + vite: ^5.1.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 wrangler: ^3.28.2 || ^4.0.0 peerDependenciesMeta: '@react-router/serve': @@ -1455,33 +1455,33 @@ packages: wrangler: optional: true - '@react-router/express@7.13.2': - resolution: {integrity: sha512-OuhenOg3LmCLT23+WA6CU/nIyhGv0/3kmyqpQuXxearj6Gbn1ufI+mkejFWPXsNJf+/y1ttY6P6XL8PzNX5E8w==} + '@react-router/express@7.14.0': + resolution: {integrity: sha512-isrPotskov4KJ/v0GvTACaXWua/3iPs71717iZZfxix77MqVo1uW7jtuXc8ChJRRWSHZOv2NFvIOYCUFXzmNJA==} engines: {node: '>=20.0.0'} peerDependencies: express: ^4.17.1 || ^5 - react-router: 7.13.2 + react-router: 7.14.0 typescript: ^5.1.0 peerDependenciesMeta: typescript: optional: true - '@react-router/node@7.13.2': - resolution: {integrity: sha512-1q0v1gclPga2mNQ7Q+MLuLdEPRpDefAmz25jOlrEz+jSyYkaFt9qbSdkTUPw/QIg/DDnnT3QV8lhgr6r5iIAOA==} + '@react-router/node@7.14.0': + resolution: {integrity: sha512-ZxJJLE4PX29+cHLacH3pmCHMCJQz/1dpEgFQtm8Pst2IP5GI6897rShYylLZbJ7jRBJSkskHn+opSEh+o6mmOA==} engines: {node: '>=20.0.0'} peerDependencies: - react-router: 7.13.2 + react-router: 7.14.0 typescript: ^5.1.0 peerDependenciesMeta: typescript: optional: true - '@react-router/serve@7.13.2': - resolution: {integrity: sha512-H/clM2tMw7daRd7bTM0kYYim4ZLrcWd30DY+R/xu8h2t2YvdfLAfHD0GfqGu3Ds8yAOrWFqH5Ly7BM7jk7fvCg==} + '@react-router/serve@7.14.0': + resolution: {integrity: sha512-setPBP5+ci0vwx+ufGZl0inOwsCoGU1ssOJcW4fHo+Pb6GbbMTrbCOVO6yQkDsTrQju+iStp3d7FTxLHphLhcA==} engines: {node: '>=20.0.0'} hasBin: true peerDependencies: - react-router: 7.13.2 + react-router: 7.14.0 '@remix-run/node-fetch-server@0.13.0': resolution: {integrity: sha512-1EsNo0ZpgXu/90AWoRZf/oE3RVTUS80tiTUpt+hv5pjtAkw7icN4WskDwz/KdAw5ARbJLMhZBrO1NqThmy/McA==} @@ -3335,8 +3335,8 @@ packages: resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} engines: {node: '>=0.10.0'} - react-router@7.13.2: - resolution: {integrity: sha512-tX1Aee+ArlKQP+NIUd7SE6Li+CiGKwQtbS+FfRxPX6Pe4vHOo6nr9d++u5cwg+Z8K/x8tP+7qLmujDtfrAoUJA==} + react-router@7.14.0: + resolution: {integrity: sha512-m/xR9N4LQLmAS0ZhkY2nkPA1N7gQ5TUVa5n8TgANuDTARbn1gt+zLPXEm7W0XDTbrQ2AJSJKhoa6yx1D8BcpxQ==} engines: {node: '>=20.0.0'} peerDependencies: react: '>=18' @@ -4765,7 +4765,7 @@ snapshots: react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - '@react-router/dev@7.13.2(@react-router/serve@7.13.2(react-router@7.13.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3))(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(react-router@7.13.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(tsx@4.21.0)(typescript@5.9.3)(vite@6.4.1(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0))': + '@react-router/dev@7.14.0(@react-router/serve@7.14.0(react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3))(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(tsx@4.21.0)(typescript@5.9.3)(vite@6.4.1(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0))': dependencies: '@babel/core': 7.29.0 '@babel/generator': 7.29.1 @@ -4774,7 +4774,7 @@ snapshots: '@babel/preset-typescript': 7.28.5(@babel/core@7.29.0) '@babel/traverse': 7.29.0 '@babel/types': 7.29.0 - '@react-router/node': 7.13.2(react-router@7.13.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3) + '@react-router/node': 7.14.0(react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3) '@remix-run/node-fetch-server': 0.13.0 arg: 5.0.2 babel-dead-code-elimination: 1.0.12 @@ -4791,14 +4791,14 @@ snapshots: pkg-types: 2.3.0 prettier: 3.8.1 react-refresh: 0.14.2 - react-router: 7.13.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react-router: 7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) semver: 7.7.4 tinyglobby: 0.2.15 valibot: 1.3.1(typescript@5.9.3) vite: 6.4.1(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0) vite-node: 3.2.4(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0) optionalDependencies: - '@react-router/serve': 7.13.2(react-router@7.13.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3) + '@react-router/serve': 7.14.0(react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - '@types/node' @@ -4815,31 +4815,31 @@ snapshots: - tsx - yaml - '@react-router/express@7.13.2(express@4.22.1)(react-router@7.13.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3)': + '@react-router/express@7.14.0(express@4.22.1)(react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3)': dependencies: - '@react-router/node': 7.13.2(react-router@7.13.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3) + '@react-router/node': 7.14.0(react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3) express: 4.22.1 - react-router: 7.13.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react-router: 7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) optionalDependencies: typescript: 5.9.3 - '@react-router/node@7.13.2(react-router@7.13.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3)': + '@react-router/node@7.14.0(react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3)': dependencies: '@mjackson/node-fetch-server': 0.2.0 - react-router: 7.13.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react-router: 7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) optionalDependencies: typescript: 5.9.3 - '@react-router/serve@7.13.2(react-router@7.13.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3)': + '@react-router/serve@7.14.0(react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3)': dependencies: '@mjackson/node-fetch-server': 0.2.0 - '@react-router/express': 7.13.2(express@4.22.1)(react-router@7.13.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3) - '@react-router/node': 7.13.2(react-router@7.13.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3) + '@react-router/express': 7.14.0(express@4.22.1)(react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3) + '@react-router/node': 7.14.0(react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3) compression: 1.8.1 express: 4.22.1 get-port: 5.1.1 morgan: 1.10.1 - react-router: 7.13.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react-router: 7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) source-map-support: 0.5.21 transitivePeerDependencies: - supports-color @@ -6707,7 +6707,7 @@ snapshots: react-refresh@0.14.2: {} - react-router@7.13.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: cookie: 1.1.1 react: 19.2.4 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index a0e4aa0..5394b12 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -5,10 +5,10 @@ packages: catalog: react: ^19.1.0 react-dom: ^19.1.0 - react-router: ^7.13.2 - "@react-router/dev": ^7.13.2 - "@react-router/node": ^7.13.2 - "@react-router/serve": ^7.13.2 + react-router: ^7.14.0 + "@react-router/dev": ^7.14.0 + "@react-router/node": ^7.14.0 + "@react-router/serve": ^7.14.0 "@types/react": ^19.1.4 "@types/react-dom": ^19.1.5 tailwindcss: ^4.1.7 From 18f5388614e08d9bbbfdc97aefb0663ea6abecc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ullrich=20Sch=C3=A4fer?= Date: Mon, 6 Apr 2026 23:10:50 +0200 Subject: [PATCH 10/13] Bump playwright from 1.58.2 to 1.59.1 Co-Authored-By: Claude Opus 4.6 (1M context) --- package.json | 4 ++-- pnpm-lock.yaml | 30 +++++++++++++++--------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/package.json b/package.json index 34d04db..cd50fb5 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ }, "devDependencies": { "@eslint/js": "^10.0.1", - "@playwright/test": "^1.58.2", + "@playwright/test": "^1.59.1", "@react-router/dev": "catalog:", "@react-router/node": "catalog:", "@react-router/serve": "catalog:", @@ -58,7 +58,7 @@ "jsdom": "^29.0.1", "leaflet": "^1.9.4", "linkedom": "^0.18.12", - "playwright": "^1.58.2", + "playwright": "^1.59.1", "postgres": "catalog:", "prettier": "^3.8.1", "react": "^19.2.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a938aa7..b1be9e8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -62,8 +62,8 @@ importers: specifier: ^10.0.1 version: 10.0.1(eslint@10.2.0(jiti@2.6.1)) '@playwright/test': - specifier: ^1.58.2 - version: 1.58.2 + specifier: ^1.59.1 + version: 1.59.1 '@react-router/dev': specifier: 'catalog:' version: 7.14.0(@react-router/serve@7.14.0(react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3))(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(tsx@4.21.0)(typescript@5.9.3)(vite@6.4.1(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)) @@ -131,8 +131,8 @@ importers: specifier: ^0.18.12 version: 0.18.12 playwright: - specifier: ^1.58.2 - version: 1.58.2 + specifier: ^1.59.1 + version: 1.59.1 postgres: specifier: 'catalog:' version: 3.4.9 @@ -1408,8 +1408,8 @@ packages: '@pinojs/redact@0.4.0': resolution: {integrity: sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==} - '@playwright/test@1.58.2': - resolution: {integrity: sha512-akea+6bHYBBfA9uQqSYmlJXn61cTa+jbO87xVLCWbTqbWadRVmhxlXATaOjOgcBaWU4ePo0wB41KMFv3o35IXA==} + '@playwright/test@1.59.1': + resolution: {integrity: sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==} engines: {node: '>=18'} hasBin: true @@ -3195,13 +3195,13 @@ packages: pkg-types@2.3.0: resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} - playwright-core@1.58.2: - resolution: {integrity: sha512-yZkEtftgwS8CsfYo7nm0KE8jsvm6i/PTgVtB8DL726wNf6H2IMsDuxCpJj59KDaxCtSnrWan2AeDqM7JBaultg==} + playwright-core@1.59.1: + resolution: {integrity: sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==} engines: {node: '>=18'} hasBin: true - playwright@1.58.2: - resolution: {integrity: sha512-vA30H8Nvkq/cPBnNw4Q8TWz1EJyqgpuinBcHET0YVJVFldr8JDNiU9LaWAE1KqSkRYazuaBhTpB5ZzShOezQ6A==} + playwright@1.59.1: + resolution: {integrity: sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==} engines: {node: '>=18'} hasBin: true @@ -4744,9 +4744,9 @@ snapshots: '@pinojs/redact@0.4.0': {} - '@playwright/test@1.58.2': + '@playwright/test@1.59.1': dependencies: - playwright: 1.58.2 + playwright: 1.59.1 '@prisma/instrumentation@7.6.0(@opentelemetry/api@1.9.1)': dependencies: @@ -6584,11 +6584,11 @@ snapshots: exsolve: 1.0.8 pathe: 2.0.3 - playwright-core@1.58.2: {} + playwright-core@1.59.1: {} - playwright@1.58.2: + playwright@1.59.1: dependencies: - playwright-core: 1.58.2 + playwright-core: 1.59.1 optionalDependencies: fsevents: 2.3.2 From 70319e702ff3bb9aa3057994b28a5e6db9b43017 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ullrich=20Sch=C3=A4fer?= Date: Mon, 6 Apr 2026 23:29:26 +0200 Subject: [PATCH 11/13] Bump i18next from 26.0.1 to 26.0.3 and react-i18next from 17.0.1 to 17.0.2 Previous attempt left duplicate i18next versions in the lockfile (26.0.1 for @trails-cool/i18n peer dep, 26.0.3 for root). This caused two different i18next instances at runtime, breaking i18n initialization and leaving pages blank in E2E tests. Fix: update specifiers and run pnpm dedupe to ensure a single version. Co-Authored-By: Claude Opus 4.6 (1M context) --- package.json | 4 ++-- pnpm-lock.yaml | 51 ++++++++++++++++---------------------------------- 2 files changed, 18 insertions(+), 37 deletions(-) diff --git a/package.json b/package.json index 34d04db..18e50b9 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "eslint": "^10.2.0", "eslint-config-prettier": "^10.1.8", "fit-file-parser": "^2.3.3", - "i18next": "^26.0.1", + "i18next": "^26.0.3", "i18next-browser-languagedetector": "^8.2.1", "jsdom": "^29.0.1", "leaflet": "^1.9.4", @@ -63,7 +63,7 @@ "prettier": "^3.8.1", "react": "^19.2.4", "react-dom": "^19.2.4", - "react-i18next": "^17.0.1", + "react-i18next": "^17.0.2", "react-leaflet": "^5.0.0", "react-router": "catalog:", "tailwindcss": "^4.2.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a938aa7..429864f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -116,8 +116,8 @@ importers: specifier: ^2.3.3 version: 2.3.3 i18next: - specifier: ^26.0.1 - version: 26.0.1(typescript@5.9.3) + specifier: ^26.0.3 + version: 26.0.3(typescript@5.9.3) i18next-browser-languagedetector: specifier: ^8.2.1 version: 8.2.1 @@ -146,8 +146,8 @@ importers: specifier: ^19.2.4 version: 19.2.4(react@19.2.4) react-i18next: - specifier: ^17.0.1 - version: 17.0.1(i18next@26.0.1(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + specifier: ^17.0.2 + version: 17.0.2(i18next@26.0.3(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) react-leaflet: specifier: ^5.0.0 version: 5.0.0(leaflet@1.9.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -389,13 +389,13 @@ importers: dependencies: i18next: specifier: '>=26' - version: 26.0.1(typescript@5.9.3) + version: 26.0.3(typescript@5.9.3) react: specifier: '>=18' version: 19.2.4 react-i18next: specifier: '>=17' - version: 17.0.1(i18next@26.0.1(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + version: 17.0.2(i18next@26.0.3(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) packages/map: dependencies: @@ -1172,10 +1172,6 @@ packages: resolution: {integrity: sha512-40lSJeqYO8Uz2Yj7u94/SJWE/wONa7rmMKjI1ZcIjgf3MHNHv1OZUCrCETGuaRF62d5pQD1wKIW+L4lmSMTzZA==} engines: {node: '>=8.0.0'} - '@opentelemetry/api@1.9.0': - resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} - engines: {node: '>=8.0.0'} - '@opentelemetry/api@1.9.1': resolution: {integrity: sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q==} engines: {node: '>=8.0.0'} @@ -1981,9 +1977,6 @@ packages: '@types/mysql@2.15.27': resolution: {integrity: sha512-YfWiV16IY0OeBfBCk8+hXKmdTKrKlwKN1MNKAPBu5JYxLwBEZl7QzeEpGnlZb3VMGJrrGmB84gXiH+ofs/TezA==} - '@types/node@25.5.0': - resolution: {integrity: sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==} - '@types/node@25.5.2': resolution: {integrity: sha512-tO4ZIRKNC+MDWV4qKVZe3Ql/woTnmHDr5JD8UI5hn2pwBrHEwOEMZK7WlNb5RKB6EoJ02gwmQS9OrjuFnZYdpg==} @@ -2765,8 +2758,8 @@ packages: i18next-browser-languagedetector@8.2.1: resolution: {integrity: sha512-bZg8+4bdmaOiApD7N7BPT9W8MLZG+nPTOFlLiJiT8uzKXFjhxw4v2ierCXOwB5sFDMtuA5G4kgYZ0AznZxQ/cw==} - i18next@26.0.1: - resolution: {integrity: sha512-vtz5sXU4+nkCm8yEU+JJ6yYIx0mkg9e68W0G0PXpnOsmzLajNsW5o28DJMqbajxfsfq0gV3XdrBudsDQnwxfsQ==} + i18next@26.0.3: + resolution: {integrity: sha512-1571kXINxHKY7LksWp8wP+zP0YqHSSpl/OW0Y0owFEf2H3s8gCAffWaZivcz14rMkOvn3R/psiQxVsR9t2Nafg==} peerDependencies: typescript: ^5 || ^6 peerDependenciesMeta: @@ -2821,10 +2814,6 @@ packages: is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} - isbot@5.1.36: - resolution: {integrity: sha512-C/ZtXyJqDPZ7G7JPr06ApWyYoHjYexQbS6hPYD4WYCzpv2Qes6Z+CCEfTX4Owzf+1EJ933PoI2p+B9v7wpGZBQ==} - engines: {node: '>=18'} - isbot@5.1.37: resolution: {integrity: sha512-5bcicX81xf6NlTEV8rWdg7Pk01LFizDetuYGHx6d/f6y3lR2/oo8IfxjzJqn1UdDEyCcwT9e7NRloj8DwCYujQ==} engines: {node: '>=18'} @@ -3306,8 +3295,8 @@ packages: peerDependencies: react: ^19.2.4 - react-i18next@17.0.1: - resolution: {integrity: sha512-iG65FGnFHcYyHNuT01ukffYWCOBFTWSdVD8EZd/dCVWgtjFPObcSsvYYNwcsokO/rDcTb5d6D8Acv8MrOdm6Hw==} + react-i18next@17.0.2: + resolution: {integrity: sha512-shBftH2vaTWK2Bsp7FiL+cevx3xFJlvFxmsDFQSrJc+6twHkP0tv/bGa01VVWzpreUVVwU+3Hev5iFqRg65RwA==} peerDependencies: i18next: '>= 26.0.1' react: '>= 16.8.0' @@ -4393,8 +4382,6 @@ snapshots: dependencies: '@opentelemetry/api': 1.9.1 - '@opentelemetry/api@1.9.0': {} - '@opentelemetry/api@1.9.1': {} '@opentelemetry/context-async-hooks@2.6.1(@opentelemetry/api@1.9.1)': @@ -4778,7 +4765,7 @@ snapshots: dedent: 1.7.2 es-module-lexer: 1.7.0 exit-hook: 2.2.1 - isbot: 5.1.36 + isbot: 5.1.37 jsesc: 3.0.2 lodash: 4.17.23 p-map: 7.0.4 @@ -5372,10 +5359,6 @@ snapshots: dependencies: '@types/node': 25.5.2 - '@types/node@25.5.0': - dependencies: - undici-types: 7.18.2 - '@types/node@25.5.2': dependencies: undici-types: 7.18.2 @@ -5408,7 +5391,7 @@ snapshots: '@types/ws@8.18.1': dependencies: - '@types/node': 25.5.0 + '@types/node': 25.5.2 '@typescript-eslint/eslint-plugin@8.58.0(@typescript-eslint/parser@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.2.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: @@ -6212,7 +6195,7 @@ snapshots: dependencies: '@babel/runtime': 7.29.2 - i18next@26.0.1(typescript@5.9.3): + i18next@26.0.3(typescript@5.9.3): dependencies: '@babel/runtime': 7.29.2 optionalDependencies: @@ -6258,8 +6241,6 @@ snapshots: is-potential-custom-element-name@1.0.1: {} - isbot@5.1.36: {} - isbot@5.1.37: {} isexe@2.0.0: {} @@ -6635,7 +6616,7 @@ snapshots: prom-client@15.1.3: dependencies: - '@opentelemetry/api': 1.9.0 + '@opentelemetry/api': 1.9.1 tdigest: 0.1.2 proxy-addr@2.0.7: @@ -6684,11 +6665,11 @@ snapshots: react: 19.2.4 scheduler: 0.27.0 - react-i18next@17.0.1(i18next@26.0.1(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3): + react-i18next@17.0.2(i18next@26.0.3(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3): dependencies: '@babel/runtime': 7.29.2 html-parse-stringify: 3.0.1 - i18next: 26.0.1(typescript@5.9.3) + i18next: 26.0.3(typescript@5.9.3) react: 19.2.4 use-sync-external-store: 1.6.0(react@19.2.4) optionalDependencies: From 1c99768928eedf1909bdcda7b3b94c202680a74d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ullrich=20Sch=C3=A4fer?= Date: Mon, 6 Apr 2026 23:35:53 +0200 Subject: [PATCH 12/13] Fix security alerts: bump vite to 6.4.2, override lodash to 4.18.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Vite 6.4.1 → 6.4.2: fixes path traversal in optimized deps .map handling (medium) and arbitrary file read via dev server WebSocket (high) - lodash 4.17.23 → 4.18.1 via pnpm override: fixes code injection via _.template (CVE-2026-4800, high) and prototype pollution via _.unset/_.omit (CVE-2026-2950, medium). Transitive dep from @react-router/dev — override needed until they bump it upstream. Skipped 4.18.0 which was marked as a bad release. Co-Authored-By: Claude Opus 4.6 (1M context) --- package.json | 3 +- pnpm-lock.yaml | 67 +++++++++++++++++++++++---------------------- pnpm-workspace.yaml | 2 +- 3 files changed, 37 insertions(+), 35 deletions(-) diff --git a/package.json b/package.json index 81ff0e8..0a2fe43 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,8 @@ "overrides": { "picomatch@>=4.0.0 <4.0.4": "4.0.4", "brace-expansion@>=4.0.0 <5.0.5": "5.0.5", - "path-to-regexp@<0.1.13": "0.1.13" + "path-to-regexp@<0.1.13": "0.1.13", + "lodash@<4.18.1": "4.18.1" }, "onlyBuiltDependencies": [ "@sentry/cli", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 74d9f8a..994c1ab 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -46,13 +46,14 @@ catalogs: specifier: ^5.8.3 version: 5.9.3 vite: - specifier: ^6.0.0 - version: 6.4.1 + specifier: ^6.4.2 + version: 6.4.2 overrides: picomatch@>=4.0.0 <4.0.4: 4.0.4 brace-expansion@>=4.0.0 <5.0.5: 5.0.5 path-to-regexp@<0.1.13: 0.1.13 + lodash@<4.18.1: 4.18.1 importers: @@ -66,7 +67,7 @@ importers: version: 1.59.1 '@react-router/dev': specifier: 'catalog:' - version: 7.14.0(@react-router/serve@7.14.0(react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3))(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(tsx@4.21.0)(typescript@5.9.3)(vite@6.4.1(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)) + version: 7.14.0(@react-router/serve@7.14.0(react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3))(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(tsx@4.21.0)(typescript@5.9.3)(vite@6.4.2(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)) '@react-router/node': specifier: 'catalog:' version: 7.14.0(react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3) @@ -78,7 +79,7 @@ importers: version: 5.1.1(rollup@4.60.0) '@tailwindcss/vite': specifier: ^4.2.2 - version: 4.2.2(vite@6.4.1(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)) + version: 4.2.2(vite@6.4.2(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)) '@testing-library/jest-dom': specifier: ^6.9.1 version: 6.9.1 @@ -165,10 +166,10 @@ importers: version: 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@5.9.3) vite: specifier: 'catalog:' - version: 6.4.1(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0) + version: 6.4.2(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0) vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.2)(jsdom@29.0.1)(vite@6.4.1(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.2)(jsdom@29.0.1)(vite@6.4.2(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)) apps/journal: dependencies: @@ -238,13 +239,13 @@ importers: devDependencies: '@react-router/dev': specifier: 'catalog:' - version: 7.14.0(@react-router/serve@7.14.0(react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3))(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(tsx@4.21.0)(typescript@5.9.3)(vite@6.4.1(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)) + version: 7.14.0(@react-router/serve@7.14.0(react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3))(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(tsx@4.21.0)(typescript@5.9.3)(vite@6.4.2(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)) '@simplewebauthn/types': specifier: ^12.0.0 version: 12.0.0 '@tailwindcss/vite': specifier: 'catalog:' - version: 4.2.2(vite@6.4.1(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)) + version: 4.2.2(vite@6.4.2(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)) '@types/nodemailer': specifier: ^8.0.0 version: 8.0.0 @@ -256,7 +257,7 @@ importers: version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-basic-ssl': specifier: ^2.3.0 - version: 2.3.0(vite@6.4.1(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)) + version: 2.3.0(vite@6.4.2(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)) pino-pretty: specifier: ^13.1.3 version: 13.1.3 @@ -268,7 +269,7 @@ importers: version: 5.9.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0) + version: 6.4.2(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0) apps/planner: dependencies: @@ -344,10 +345,10 @@ importers: devDependencies: '@react-router/dev': specifier: 'catalog:' - version: 7.14.0(@react-router/serve@7.14.0(react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3))(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(tsx@4.21.0)(typescript@5.9.3)(vite@6.4.1(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)) + version: 7.14.0(@react-router/serve@7.14.0(react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3))(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(tsx@4.21.0)(typescript@5.9.3)(vite@6.4.2(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)) '@tailwindcss/vite': specifier: 'catalog:' - version: 4.2.2(vite@6.4.1(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)) + version: 4.2.2(vite@6.4.2(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)) '@types/react': specifier: 'catalog:' version: 19.2.14 @@ -368,7 +369,7 @@ importers: version: 5.9.3 vite: specifier: 'catalog:' - version: 6.4.1(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0) + version: 6.4.2(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0) packages/db: dependencies: @@ -2964,8 +2965,8 @@ packages: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} - lodash@4.17.23: - resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} + lodash@4.18.1: + resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} lru-cache@11.2.7: resolution: {integrity: sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==} @@ -3639,8 +3640,8 @@ packages: engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true - vite@6.4.1: - resolution: {integrity: sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==} + vite@6.4.2: + resolution: {integrity: sha512-2N/55r4JDJ4gdrCvGgINMy+HH3iRpNIz8K6SFwVsA+JbQScLiC+clmAxBgwiSPgcG9U15QmvqCGWzMbqda5zGQ==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -4331,7 +4332,7 @@ snapshots: '@turf/line-intersect': 7.3.4 '@turf/line-split': 7.3.4 leaflet: 1.9.4 - lodash: 4.17.23 + lodash: 4.18.1 polyclip-ts: 0.16.8 '@hexagon/base64@1.1.28': {} @@ -4748,7 +4749,7 @@ snapshots: react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - '@react-router/dev@7.14.0(@react-router/serve@7.14.0(react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3))(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(tsx@4.21.0)(typescript@5.9.3)(vite@6.4.1(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0))': + '@react-router/dev@7.14.0(@react-router/serve@7.14.0(react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3))(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(tsx@4.21.0)(typescript@5.9.3)(vite@6.4.2(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0))': dependencies: '@babel/core': 7.29.0 '@babel/generator': 7.29.1 @@ -4767,7 +4768,7 @@ snapshots: exit-hook: 2.2.1 isbot: 5.1.37 jsesc: 3.0.2 - lodash: 4.17.23 + lodash: 4.18.1 p-map: 7.0.4 pathe: 1.1.2 picocolors: 1.1.1 @@ -4778,7 +4779,7 @@ snapshots: semver: 7.7.4 tinyglobby: 0.2.15 valibot: 1.3.1(typescript@5.9.3) - vite: 6.4.1(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0) + vite: 6.4.2(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0) vite-node: 3.2.4(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0) optionalDependencies: '@react-router/serve': 7.14.0(react-router@7.14.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3) @@ -5158,12 +5159,12 @@ snapshots: '@tailwindcss/oxide-win32-arm64-msvc': 4.2.2 '@tailwindcss/oxide-win32-x64-msvc': 4.2.2 - '@tailwindcss/vite@4.2.2(vite@6.4.1(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0))': + '@tailwindcss/vite@4.2.2(vite@6.4.2(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0))': dependencies: '@tailwindcss/node': 4.2.2 '@tailwindcss/oxide': 4.2.2 tailwindcss: 4.2.2 - vite: 6.4.1(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0) + vite: 6.4.2(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0) '@testing-library/dom@10.4.1': dependencies: @@ -5484,9 +5485,9 @@ snapshots: '@typescript-eslint/types': 8.58.0 eslint-visitor-keys: 5.0.1 - '@vitejs/plugin-basic-ssl@2.3.0(vite@6.4.1(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0))': + '@vitejs/plugin-basic-ssl@2.3.0(vite@6.4.2(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0))': dependencies: - vite: 6.4.1(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0) + vite: 6.4.2(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0) '@vitest/expect@4.1.2': dependencies: @@ -5497,13 +5498,13 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.2(vite@6.4.1(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0))': + '@vitest/mocker@4.1.2(vite@6.4.2(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0))': dependencies: '@vitest/spy': 4.1.2 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 6.4.1(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0) + vite: 6.4.2(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0) '@vitest/pretty-format@4.1.2': dependencies: @@ -6367,7 +6368,7 @@ snapshots: dependencies: p-locate: 5.0.0 - lodash@4.17.23: {} + lodash@4.18.1: {} lru-cache@11.2.7: {} @@ -7003,7 +7004,7 @@ snapshots: debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 6.4.1(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0) + vite: 6.4.2(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0) transitivePeerDependencies: - '@types/node' - jiti @@ -7018,7 +7019,7 @@ snapshots: - tsx - yaml - vite@6.4.1(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0): + vite@6.4.2(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.4) @@ -7033,10 +7034,10 @@ snapshots: lightningcss: 1.32.0 tsx: 4.21.0 - vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.2)(jsdom@29.0.1)(vite@6.4.1(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)): + vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.2)(jsdom@29.0.1)(vite@6.4.2(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)): dependencies: '@vitest/expect': 4.1.2 - '@vitest/mocker': 4.1.2(vite@6.4.1(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)) + '@vitest/mocker': 4.1.2(vite@6.4.2(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)) '@vitest/pretty-format': 4.1.2 '@vitest/runner': 4.1.2 '@vitest/snapshot': 4.1.2 @@ -7053,7 +7054,7 @@ snapshots: tinyexec: 1.0.4 tinyglobby: 0.2.15 tinyrainbow: 3.1.0 - vite: 6.4.1(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0) + vite: 6.4.2(@types/node@25.5.2)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.1 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 34e5c3d..cb04669 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -14,7 +14,7 @@ catalog: tailwindcss: ^4.1.7 "@tailwindcss/vite": ^4.1.7 typescript: ^5.8.3 - vite: ^6.0.0 + vite: ^6.4.2 drizzle-orm: ^0.45.2 drizzle-kit: ^0.31.0 drizzle-postgis: ^1.1.0 From 3b49aa7a5b372da3d8781b71cf61b60b5d9a680e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 10 Apr 2026 19:01:58 +0000 Subject: [PATCH 13/13] Bump nodemailer from 8.0.4 to 8.0.5 Bumps [nodemailer](https://github.com/nodemailer/nodemailer) from 8.0.4 to 8.0.5. - [Release notes](https://github.com/nodemailer/nodemailer/releases) - [Changelog](https://github.com/nodemailer/nodemailer/blob/master/CHANGELOG.md) - [Commits](https://github.com/nodemailer/nodemailer/compare/v8.0.4...v8.0.5) --- updated-dependencies: - dependency-name: nodemailer dependency-version: 8.0.5 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- apps/journal/package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/journal/package.json b/apps/journal/package.json index 9969ff3..9d3ac4b 100644 --- a/apps/journal/package.json +++ b/apps/journal/package.json @@ -26,7 +26,7 @@ "drizzle-orm": "catalog:", "isbot": "^5.1.37", "jose": "^6.2.2", - "nodemailer": "^8.0.4", + "nodemailer": "^8.0.5", "pino": "^10.3.1", "prom-client": "^15.1.3", "react": "catalog:", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 994c1ab..f21b4a3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -219,8 +219,8 @@ importers: specifier: ^6.2.2 version: 6.2.2 nodemailer: - specifier: ^8.0.4 - version: 8.0.4 + specifier: ^8.0.5 + version: 8.0.5 pino: specifier: ^10.3.1 version: 10.3.1 @@ -3073,8 +3073,8 @@ packages: node-releases@2.0.36: resolution: {integrity: sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==} - nodemailer@8.0.4: - resolution: {integrity: sha512-k+jf6N8PfQJ0Fe8ZhJlgqU5qJU44Lpvp2yvidH3vp1lPnVQMgi4yEEMPXg5eJS1gFIJTVq1NHBk7Ia9ARdSBdQ==} + nodemailer@8.0.5: + resolution: {integrity: sha512-0PF8Yb1yZuQfQbq+5/pZJrtF6WQcjTd5/S4JOHs9PGFxuTqoB/icwuB44pOdURHJbRKX1PPoJZtY7R4VUoCC8w==} engines: {node: '>=6.0.0'} nth-check@2.1.1: @@ -6442,7 +6442,7 @@ snapshots: node-releases@2.0.36: {} - nodemailer@8.0.4: {} + nodemailer@8.0.5: {} nth-check@2.1.1: dependencies: