diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6bfa0bc..b8513d0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,7 +18,7 @@ jobs: matrix: node-version: [22] steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: persist-credentials: false @@ -48,7 +48,7 @@ jobs: permissions: contents: read steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: persist-credentials: false @@ -80,7 +80,7 @@ jobs: matrix: os: [ubuntu-latest, windows-latest] steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: persist-credentials: false @@ -109,7 +109,7 @@ jobs: permissions: contents: read steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: persist-credentials: false diff --git a/.github/workflows/eval.yml b/.github/workflows/eval.yml index a607113..ef6e012 100644 --- a/.github/workflows/eval.yml +++ b/.github/workflows/eval.yml @@ -46,7 +46,7 @@ jobs: COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_CLI_TOKEN }} GITHUB_COPILOT_API_TOKEN: ${{ secrets.COPILOT_CLI_TOKEN }} steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: persist-credentials: false diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index b3e6051..5f3dc70 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -23,7 +23,7 @@ jobs: name: github-pages url: ${{ steps.deployment.outputs.page_url }} steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: persist-credentials: false diff --git a/.github/workflows/post-release-smoke.yml b/.github/workflows/post-release-smoke.yml index 1ea0c53..f861418 100644 --- a/.github/workflows/post-release-smoke.yml +++ b/.github/workflows/post-release-smoke.yml @@ -42,7 +42,7 @@ jobs: matrix: os: [ubuntu-latest, windows-latest, macos-latest] steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: persist-credentials: false @@ -85,7 +85,7 @@ jobs: matrix: os: [ubuntu-latest, windows-latest, macos-latest] steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: persist-credentials: false diff --git a/.github/workflows/release-all.yml b/.github/workflows/release-all.yml index 393cbd2..9dbab8e 100644 --- a/.github/workflows/release-all.yml +++ b/.github/workflows/release-all.yml @@ -35,7 +35,7 @@ jobs: contents: write id-token: write steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: fetch-depth: 0 token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 6a98b03..7cb61df 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -30,7 +30,7 @@ jobs: contents: write id-token: write steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: fetch-depth: 0 token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/release-sdk.yml b/.github/workflows/release-sdk.yml index 43343b7..3ddb876 100644 --- a/.github/workflows/release-sdk.yml +++ b/.github/workflows/release-sdk.yml @@ -30,7 +30,7 @@ jobs: contents: write id-token: write steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: fetch-depth: 0 token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/release-vscode.yml b/.github/workflows/release-vscode.yml index 416230e..e63b7b8 100644 --- a/.github/workflows/release-vscode.yml +++ b/.github/workflows/release-vscode.yml @@ -29,7 +29,7 @@ jobs: permissions: contents: write steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: fetch-depth: 0 token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/visual-baselines.yml b/.github/workflows/visual-baselines.yml index 7ff5e6a..e4cc5ca 100644 --- a/.github/workflows/visual-baselines.yml +++ b/.github/workflows/visual-baselines.yml @@ -20,7 +20,7 @@ jobs: permissions: contents: read steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: persist-credentials: false diff --git a/packages/vscode/package.json b/packages/vscode/package.json index 812cfe5..069450d 100644 --- a/packages/vscode/package.json +++ b/packages/vscode/package.json @@ -574,7 +574,7 @@ "ovsx": "^1.0.2", "react": "^19.2.8", "react-dom": "^19.2.8", - "recharts": "^3.10.0", + "recharts": "^3.10.1", "thermoworks-sdk": "workspace:^", "typescript": "^7.0.2", "vite": "^8.1.5", diff --git a/packages/web/package.json b/packages/web/package.json index 2dec452..6be2b4a 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -22,14 +22,14 @@ "lucide-react": "^1.26.0", "react": "^19.2.8", "react-dom": "^19.2.8", - "react-router-dom": "^7.18.1", - "recharts": "^3.10.0", + "react-router": "^8.3.0", + "recharts": "^3.10.1", "tailwind-merge": "^3.6.0", "thermoworks-sdk": "workspace:^" }, "devDependencies": { "@axe-core/playwright": "^4.12.1", - "@playwright/test": "^1.61.1", + "@playwright/test": "^1.62.0", "@tailwindcss/vite": "^4.3.3", "@testing-library/jest-dom": "^7.0.0", "@testing-library/react": "^16.3.2", diff --git a/packages/web/src/components/AppLayout.tsx b/packages/web/src/components/AppLayout.tsx index 6053103..dc1a0db 100644 --- a/packages/web/src/components/AppLayout.tsx +++ b/packages/web/src/components/AppLayout.tsx @@ -1,5 +1,5 @@ import { type MouseEvent, useEffect, useRef } from "react"; -import { Outlet, useLocation } from "react-router-dom"; +import { Outlet, useLocation } from "react-router"; import type { StoredAccount } from "../hooks/useAccounts.ts"; import { useKeyboardShortcuts } from "../hooks/useKeyboardShortcuts.ts"; import { useOfflineMutationReplay } from "../hooks/useOfflineMutations.ts"; diff --git a/packages/web/src/components/BottomNav.tsx b/packages/web/src/components/BottomNav.tsx index ea874e5..1081e17 100644 --- a/packages/web/src/components/BottomNav.tsx +++ b/packages/web/src/components/BottomNav.tsx @@ -1,4 +1,4 @@ -import { NavLink } from "react-router-dom"; +import { NavLink } from "react-router"; import { navigationItems } from "../lib/navigation.ts"; import { cn } from "../lib/utils.ts"; diff --git a/packages/web/src/components/DeviceCard.tsx b/packages/web/src/components/DeviceCard.tsx index 9d72d36..faf0948 100644 --- a/packages/web/src/components/DeviceCard.tsx +++ b/packages/web/src/components/DeviceCard.tsx @@ -10,7 +10,7 @@ import { Wifi, } from "lucide-react"; import React, { Suspense, useState } from "react"; -import { Link } from "react-router-dom"; +import { Link } from "react-router"; import { useArchiveData } from "../hooks/useArchiveData.ts"; import { resolveChannelLabel, useChannelLabels } from "../hooks/useChannelLabels.ts"; import { useRestTimer } from "../hooks/useRestTimer.ts"; diff --git a/packages/web/src/components/Sidebar.tsx b/packages/web/src/components/Sidebar.tsx index d309222..a8bffbc 100644 --- a/packages/web/src/components/Sidebar.tsx +++ b/packages/web/src/components/Sidebar.tsx @@ -1,6 +1,6 @@ import { ChevronsLeft, ChevronsRight, LogOut } from "lucide-react"; import { useCallback, useEffect, useState } from "react"; -import { NavLink } from "react-router-dom"; +import { NavLink } from "react-router"; import type { StoredAccount } from "../hooks/useAccounts.ts"; import { navigationItems } from "../lib/navigation.ts"; import { cn } from "../lib/utils.ts"; diff --git a/packages/web/src/hooks/useKeyboardShortcuts.ts b/packages/web/src/hooks/useKeyboardShortcuts.ts index 36eab40..0282990 100644 --- a/packages/web/src/hooks/useKeyboardShortcuts.ts +++ b/packages/web/src/hooks/useKeyboardShortcuts.ts @@ -1,5 +1,5 @@ import { useCallback, useEffect, useMemo, useState } from "react"; -import { useNavigate } from "react-router-dom"; +import { useNavigate } from "react-router"; import { navigationItems } from "../lib/navigation.ts"; export interface Shortcut { diff --git a/packages/web/src/main.tsx b/packages/web/src/main.tsx index 4966a37..675b89a 100644 --- a/packages/web/src/main.tsx +++ b/packages/web/src/main.tsx @@ -1,7 +1,7 @@ import "./spa-redirect.ts"; import { lazy, StrictMode, Suspense } from "react"; import { createRoot } from "react-dom/client"; -import { HashRouter, Route, Routes } from "react-router-dom"; +import { HashRouter, Route, Routes } from "react-router"; import { App } from "./App.tsx"; import { ErrorBoundary } from "./components/ErrorBoundary.tsx"; import { DeviceListSkeleton, EventListSkeleton, Skeleton } from "./components/Skeleton.tsx"; diff --git a/packages/web/src/pages/Compare.tsx b/packages/web/src/pages/Compare.tsx index 34ed51a..09ee222 100644 --- a/packages/web/src/pages/Compare.tsx +++ b/packages/web/src/pages/Compare.tsx @@ -1,6 +1,6 @@ import { RefreshCw } from "lucide-react"; import { useEffect, useMemo, useState } from "react"; -import { useOutletContext } from "react-router-dom"; +import { useOutletContext } from "react-router"; import type { ArchiveChannel, DeviceChannel, TemperatureReading } from "thermoworks-sdk"; import type { AppOutletContext } from "../components/AppLayout.tsx"; import { diff --git a/packages/web/src/pages/Dashboard.tsx b/packages/web/src/pages/Dashboard.tsx index b99fc57..a2d467d 100644 --- a/packages/web/src/pages/Dashboard.tsx +++ b/packages/web/src/pages/Dashboard.tsx @@ -1,6 +1,6 @@ import { Monitor } from "lucide-react"; import { useCallback, useMemo, useState } from "react"; -import { Link, useOutletContext } from "react-router-dom"; +import { Link, useOutletContext } from "react-router"; import type { AppOutletContext } from "../components/AppLayout.tsx"; import { DeviceGroups } from "../components/DeviceGroups.tsx"; import { DeviceList } from "../components/DeviceList.tsx"; diff --git a/packages/web/src/pages/DataUsage.tsx b/packages/web/src/pages/DataUsage.tsx index 604609d..e3ea340 100644 --- a/packages/web/src/pages/DataUsage.tsx +++ b/packages/web/src/pages/DataUsage.tsx @@ -1,5 +1,5 @@ import { Database, HardDrive, Loader2, RefreshCw } from "lucide-react"; -import { Link, useOutletContext } from "react-router-dom"; +import { Link, useOutletContext } from "react-router"; import type { AppOutletContext } from "../components/AppLayout.tsx"; import { useDataUsage } from "../hooks/useDataUsage.ts"; import { cn } from "../lib/utils.ts"; diff --git a/packages/web/src/pages/DeviceDetail.tsx b/packages/web/src/pages/DeviceDetail.tsx index c542a04..d4065f5 100644 --- a/packages/web/src/pages/DeviceDetail.tsx +++ b/packages/web/src/pages/DeviceDetail.tsx @@ -1,6 +1,6 @@ import { ArrowLeft, Battery, RotateCcw, Share2, Signal, Wifi } from "lucide-react"; import React, { Suspense, useCallback } from "react"; -import { Link, useOutletContext, useParams } from "react-router-dom"; +import { Link, useOutletContext, useParams } from "react-router"; import type { AppOutletContext } from "../components/AppLayout.tsx"; import { ChannelReading } from "../components/ChannelReading.tsx"; import { CookReport } from "../components/CookReport.tsx"; diff --git a/packages/web/src/pages/Devices.tsx b/packages/web/src/pages/Devices.tsx index ed82cb6..6783a37 100644 --- a/packages/web/src/pages/Devices.tsx +++ b/packages/web/src/pages/Devices.tsx @@ -1,6 +1,6 @@ import { Eye, EyeOff, Loader2, Star, ThermometerSun } from "lucide-react"; import { useMemo } from "react"; -import { Link, useOutletContext } from "react-router-dom"; +import { Link, useOutletContext } from "react-router"; import type { AppOutletContext } from "../components/AppLayout.tsx"; import { useDevices } from "../hooks/useDevices.ts"; import { useDeviceVisibility } from "../hooks/useDeviceVisibility.ts"; diff --git a/packages/web/src/pages/Events.tsx b/packages/web/src/pages/Events.tsx index 8a5ac3e..8d9c2d9 100644 --- a/packages/web/src/pages/Events.tsx +++ b/packages/web/src/pages/Events.tsx @@ -9,7 +9,7 @@ import { Square, } from "lucide-react"; import { useCallback, useEffect, useMemo, useRef, useState } from "react"; -import { useNavigate, useOutletContext } from "react-router-dom"; +import { useNavigate, useOutletContext } from "react-router"; import type { EventFilter } from "thermoworks-sdk"; import type { AppOutletContext } from "../components/AppLayout.tsx"; import { useDevices } from "../hooks/useDevices.ts"; diff --git a/packages/web/src/pages/ExportSchedules.tsx b/packages/web/src/pages/ExportSchedules.tsx index ba3782d..e3f4b05 100644 --- a/packages/web/src/pages/ExportSchedules.tsx +++ b/packages/web/src/pages/ExportSchedules.tsx @@ -1,4 +1,4 @@ -import { useOutletContext } from "react-router-dom"; +import { useOutletContext } from "react-router"; import type { AppOutletContext } from "../components/AppLayout.tsx"; import { ExportScheduler } from "../components/ExportScheduler.tsx"; diff --git a/packages/web/src/pages/Guide.tsx b/packages/web/src/pages/Guide.tsx index f3389ab..01e1fd1 100644 --- a/packages/web/src/pages/Guide.tsx +++ b/packages/web/src/pages/Guide.tsx @@ -1,6 +1,6 @@ import { Beef, Bird, Drumstick, Fish, Search, Thermometer } from "lucide-react"; import { useMemo, useState } from "react"; -import { useOutletContext } from "react-router-dom"; +import { useOutletContext } from "react-router"; import type { AppOutletContext } from "../components/AppLayout.tsx"; import { useTemperatureGuide } from "../hooks/useTemperatureGuide.ts"; import { useTemperatureUnit } from "../hooks/useTemperatureUnit.ts"; diff --git a/packages/web/src/pages/PitDisplay.tsx b/packages/web/src/pages/PitDisplay.tsx index a88dd70..218b6b5 100644 --- a/packages/web/src/pages/PitDisplay.tsx +++ b/packages/web/src/pages/PitDisplay.tsx @@ -1,6 +1,6 @@ import { Maximize2, Minimize2, X } from "lucide-react"; import { useCallback, useEffect, useMemo, useRef, useState } from "react"; -import { Link } from "react-router-dom"; +import { Link } from "react-router"; import { OfflineCacheProvider } from "../context/OfflineCacheContext.tsx"; import { TemperatureUnitProvider } from "../context/TemperatureUnitContext.tsx"; import { useDevices } from "../hooks/useDevices.ts"; diff --git a/packages/web/src/pages/Settings.tsx b/packages/web/src/pages/Settings.tsx index 33a6df1..652cd72 100644 --- a/packages/web/src/pages/Settings.tsx +++ b/packages/web/src/pages/Settings.tsx @@ -1,5 +1,5 @@ import { Settings as SettingsIcon } from "lucide-react"; -import { useOutletContext } from "react-router-dom"; +import { useOutletContext } from "react-router"; import { AccountPanel } from "../components/AccountPanel.tsx"; import type { AppOutletContext } from "../components/AppLayout.tsx"; import { NotificationPrefs } from "../components/NotificationPrefs.tsx"; diff --git a/packages/web/src/pages/SharedArchiveView.tsx b/packages/web/src/pages/SharedArchiveView.tsx index 130b076..e42a440 100644 --- a/packages/web/src/pages/SharedArchiveView.tsx +++ b/packages/web/src/pages/SharedArchiveView.tsx @@ -1,6 +1,6 @@ import { Archive as ArchiveIcon, Clock, Globe } from "lucide-react"; import { useCallback, useEffect, useState } from "react"; -import { useParams } from "react-router-dom"; +import { useParams } from "react-router"; import type { Archive, ArchiveChannel } from "thermoworks-sdk"; import { ShareError, ShareHeader, ShareLoading } from "../components/ShareLayout.tsx"; import { getPublicArchive } from "../lib/api.ts"; diff --git a/packages/web/src/pages/SharedDeviceView.tsx b/packages/web/src/pages/SharedDeviceView.tsx index d4910ad..5947c04 100644 --- a/packages/web/src/pages/SharedDeviceView.tsx +++ b/packages/web/src/pages/SharedDeviceView.tsx @@ -1,6 +1,6 @@ import { Globe, RefreshCw } from "lucide-react"; import { useCallback, useEffect, useRef, useState } from "react"; -import { useParams } from "react-router-dom"; +import { useParams } from "react-router"; import type { Device, DeviceChannel } from "thermoworks-sdk"; import { ChannelReading } from "../components/ChannelReading.tsx"; import { ShareError, ShareHeader, ShareLoading } from "../components/ShareLayout.tsx"; diff --git a/packages/web/src/pages/SharedReportView.tsx b/packages/web/src/pages/SharedReportView.tsx index bb37726..11a88f0 100644 --- a/packages/web/src/pages/SharedReportView.tsx +++ b/packages/web/src/pages/SharedReportView.tsx @@ -1,5 +1,5 @@ import { useMemo } from "react"; -import { useSearchParams } from "react-router-dom"; +import { useSearchParams } from "react-router"; import { CookReport } from "../components/CookReport.tsx"; import { ShareError, ShareHeader } from "../components/ShareLayout.tsx"; import { TemperatureUnitProvider } from "../context/TemperatureUnitContext.tsx"; diff --git a/packages/web/tests/DeviceCard.test.tsx b/packages/web/tests/DeviceCard.test.tsx index 22d74c4..cc551de 100644 --- a/packages/web/tests/DeviceCard.test.tsx +++ b/packages/web/tests/DeviceCard.test.tsx @@ -1,6 +1,6 @@ import { fireEvent, render, screen } from "@testing-library/react"; import type { ReactNode } from "react"; -import { MemoryRouter } from "react-router-dom"; +import { MemoryRouter } from "react-router"; import { describe, expect, it, vi } from "vitest"; import { DeviceCard } from "../src/components/DeviceCard.tsx"; import { TemperatureUnitProvider } from "../src/context/TemperatureUnitContext.tsx"; diff --git a/packages/web/tests/DeviceList.test.tsx b/packages/web/tests/DeviceList.test.tsx index adb1163..f163108 100644 --- a/packages/web/tests/DeviceList.test.tsx +++ b/packages/web/tests/DeviceList.test.tsx @@ -1,6 +1,6 @@ import { cleanup, render, screen } from "@testing-library/react"; import type { ReactNode } from "react"; -import { MemoryRouter } from "react-router-dom"; +import { MemoryRouter } from "react-router"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { DeviceList, mergeVisibleReorder } from "../src/components/DeviceList.tsx"; import { TemperatureUnitProvider } from "../src/context/TemperatureUnitContext.tsx"; diff --git a/packages/web/tests/compare.test.tsx b/packages/web/tests/compare.test.tsx index 5bd28a6..7f3e439 100644 --- a/packages/web/tests/compare.test.tsx +++ b/packages/web/tests/compare.test.tsx @@ -11,8 +11,8 @@ const { mockUseDevices, mockClient } = vi.hoisted(() => ({ mockClient: { isAuthenticated: true } as ThermoworksWebClient, })); -vi.mock("react-router-dom", async (importOriginal) => { - const actual = await importOriginal(); +vi.mock("react-router", async (importOriginal) => { + const actual = await importOriginal(); return { ...actual, useOutletContext: () => ({ client: mockClient }), diff --git a/packages/web/tests/data-usage.test.tsx b/packages/web/tests/data-usage.test.tsx index 9ab759b..03eda0f 100644 --- a/packages/web/tests/data-usage.test.tsx +++ b/packages/web/tests/data-usage.test.tsx @@ -1,5 +1,5 @@ import { render, screen } from "@testing-library/react"; -import { MemoryRouter, Outlet, Route, Routes } from "react-router-dom"; +import { MemoryRouter, Outlet, Route, Routes } from "react-router"; import { describe, expect, it, vi } from "vitest"; import type { BillingPlan, diff --git a/packages/web/tests/device-detail.test.tsx b/packages/web/tests/device-detail.test.tsx index 049b6d8..742c685 100644 --- a/packages/web/tests/device-detail.test.tsx +++ b/packages/web/tests/device-detail.test.tsx @@ -1,5 +1,5 @@ import { fireEvent, render, screen, waitFor } from "@testing-library/react"; -import { MemoryRouter, Outlet, Route, Routes } from "react-router-dom"; +import { MemoryRouter, Outlet, Route, Routes } from "react-router"; import { describe, expect, it, vi } from "vitest"; import type { AppOutletContext } from "../src/components/AppLayout.tsx"; import { TemperatureUnitProvider } from "../src/context/TemperatureUnitContext.tsx"; diff --git a/packages/web/tests/device-visibility.test.tsx b/packages/web/tests/device-visibility.test.tsx index 71f4fe8..5a8e61d 100644 --- a/packages/web/tests/device-visibility.test.tsx +++ b/packages/web/tests/device-visibility.test.tsx @@ -1,6 +1,6 @@ import { cleanup, fireEvent, render, screen, within } from "@testing-library/react"; import type { ReactNode } from "react"; -import { MemoryRouter } from "react-router-dom"; +import { MemoryRouter } from "react-router"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { DeviceList } from "../src/components/DeviceList.tsx"; import { TemperatureUnitProvider } from "../src/context/TemperatureUnitContext.tsx"; diff --git a/packages/web/tests/events.test.tsx b/packages/web/tests/events.test.tsx index 3ca4ebd..df3c819 100644 --- a/packages/web/tests/events.test.tsx +++ b/packages/web/tests/events.test.tsx @@ -1,5 +1,5 @@ import { act, fireEvent, render, renderHook, screen, waitFor } from "@testing-library/react"; -import { MemoryRouter, Outlet, Route, Routes } from "react-router-dom"; +import { MemoryRouter, Outlet, Route, Routes } from "react-router"; import type { Archive, DeviceEvent, EventFilter } from "thermoworks-sdk"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { useEvents } from "../src/hooks/useEvents.ts"; diff --git a/packages/web/tests/guide.test.tsx b/packages/web/tests/guide.test.tsx index b7f0425..1b3eb4f 100644 --- a/packages/web/tests/guide.test.tsx +++ b/packages/web/tests/guide.test.tsx @@ -1,5 +1,5 @@ import { fireEvent, render, screen } from "@testing-library/react"; -import { MemoryRouter, Outlet, Route, Routes } from "react-router-dom"; +import { MemoryRouter, Outlet, Route, Routes } from "react-router"; import { describe, expect, it, vi } from "vitest"; import { TemperatureUnitProvider } from "../src/context/TemperatureUnitContext.tsx"; import type { ThermoworksWebClient } from "../src/lib/api.ts"; diff --git a/packages/web/tests/pit-display.test.tsx b/packages/web/tests/pit-display.test.tsx index c0ef00a..a19c533 100644 --- a/packages/web/tests/pit-display.test.tsx +++ b/packages/web/tests/pit-display.test.tsx @@ -1,5 +1,5 @@ import { render, screen } from "@testing-library/react"; -import { MemoryRouter } from "react-router-dom"; +import { MemoryRouter } from "react-router"; import { beforeEach, describe, expect, it, vi } from "vitest"; import type { DeviceWithChannels } from "../src/lib/api.ts"; import { PitDisplay } from "../src/pages/PitDisplay.tsx"; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 11ca66d..a3f2de4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,8 +6,10 @@ settings: overrides: form-data: ^4.0.6 - hono: ^4.12.27 + hono: ^4.12.32 esbuild: ^0.28.1 + fast-uri: ^3.1.4 + brace-expansion: ^5.0.8 importers: @@ -141,8 +143,8 @@ importers: specifier: ^19.2.8 version: 19.2.8(react@19.2.8) recharts: - specifier: ^3.10.0 - version: 3.10.0(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react-is@19.2.7)(react@19.2.8)(redux@5.0.1) + specifier: ^3.10.1 + version: 3.10.1(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react-is@19.2.7)(react@19.2.8)(redux@5.0.1) thermoworks-sdk: specifier: workspace:^ version: link:../sdk @@ -182,12 +184,12 @@ importers: react-dom: specifier: ^19.2.8 version: 19.2.8(react@19.2.8) - react-router-dom: - specifier: ^7.18.1 - version: 7.18.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + react-router: + specifier: ^8.3.0 + version: 8.3.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) recharts: - specifier: ^3.10.0 - version: 3.10.0(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react-is@19.2.7)(react@19.2.8)(redux@5.0.1) + specifier: ^3.10.1 + version: 3.10.1(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react-is@19.2.7)(react@19.2.8)(redux@5.0.1) tailwind-merge: specifier: ^3.6.0 version: 3.6.0 @@ -197,10 +199,10 @@ importers: devDependencies: '@axe-core/playwright': specifier: ^4.12.1 - version: 4.12.1(playwright-core@1.61.1) + version: 4.12.1(playwright-core@1.62.0) '@playwright/test': - specifier: ^1.61.1 - version: 1.61.1 + specifier: ^1.62.0 + version: 1.62.0 '@tailwindcss/vite': specifier: ^4.3.3 version: 4.3.3(vite@8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(yaml@2.9.0)) @@ -709,13 +711,13 @@ packages: resolution: {integrity: sha512-GwtvgtXxnWsucXvbQXkRgqksiH2Qed37H9xHZocE5sA3N8O8O8/8FA3uclQXxXVzc9XBZuEOMK7+r02FmSpHtw==} engines: {node: '>=18.14.1'} peerDependencies: - hono: ^4.12.27 + hono: ^4.12.32 '@hono/node-server@2.0.8': resolution: {integrity: sha512-GuCWzLxwg218fy1JaHculFsdcuY12hxit83V+algozTPnwhNjLrRL/Alg9OYjLZLoUZ1rw/S4CdTMsnkSKCmFA==} engines: {node: '>=20'} peerDependencies: - hono: ^4.12.27 + hono: ^4.12.32 '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -971,9 +973,9 @@ packages: '@oxc-project/types@0.139.0': resolution: {integrity: sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw==} - '@playwright/test@1.61.1': - resolution: {integrity: sha512-8nKv6+0RJSL9FE4jYOEGXnPeM/Hg12qZpmqzZjRh3qM0Y7c3z1mrOTfFLids72RDQYVh9WpLEfR5WdpNX4fkig==} - engines: {node: '>=18'} + '@playwright/test@1.62.0': + resolution: {integrity: sha512-9zOJ6ZQRAena31MpOH9VSzIz8Ou3YJ/wtY/eQm5T2uhfhG7/U3COrMS8xOtUrZrp9OgdmzEnIYODye3nY1VqzA==} + engines: {node: '>=20'} hasBin: true '@reduxjs/toolkit@2.12.0': @@ -1841,9 +1843,9 @@ packages: boundary@2.0.0: resolution: {integrity: sha512-rJKn5ooC9u8q13IMCrW0RSp31pxBCHE3y9V/tp3TdWSLf8Em3p6Di4NBpfzbJge9YjjFEsD0RtFEjtvHL5VyEA==} - brace-expansion@5.0.7: - resolution: {integrity: sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA==} - engines: {node: 18 || 20 || >=22} + brace-expansion@5.0.8: + resolution: {integrity: sha512-JZyDyq3D4AUifKTPOB7DELf6XsB3WdPuNxCtob1vFXPsSXhdAiHBWJ/tJ8HAc9aH84BK+5JFZLNkJKx3G9kzQg==} + engines: {node: 20 || >=22} braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} @@ -1973,6 +1975,9 @@ packages: convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + cookie-es@3.1.1: + resolution: {integrity: sha512-UaXxwISYJPTr9hwQxMFYZ7kNhSXboMXP+Z3TRX6f1/NyaGPfuNUZOWP1pUEb75B2HjfklIYLVRfWiFZJyC6Npg==} + cookie-signature@1.2.2: resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} engines: {node: '>=6.6.0'} @@ -1981,10 +1986,6 @@ packages: resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} engines: {node: '>= 0.6'} - cookie@1.1.1: - resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} - engines: {node: '>=18'} - cors@2.8.6: resolution: {integrity: sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==} engines: {node: '>= 0.10'} @@ -2270,8 +2271,8 @@ packages: resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} - fast-uri@3.1.3: - resolution: {integrity: sha512-i70LwGWUduXqzicKXWshooq+sWL1K3WUU5rKZNG/0i3a1OSoX3HqhH5WbWwTmqWfor4urUakGPiRQcleRZTwOg==} + fast-uri@3.1.4: + resolution: {integrity: sha512-8JnbkQ4juDyvYs4mgFGQqg4yCYtFDtUtmp2QIQq11ZZe5CFQ5wcqm1rqDgAh/QdMySuBnPzMUiJUNZG5N/AiQw==} fastq@1.20.1: resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} @@ -2393,8 +2394,8 @@ packages: resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} engines: {node: '>= 0.4'} - hono@4.12.27: - resolution: {integrity: sha512-1yrb/+w6HWQJrUCLkJ2IF5jNIPvvFkblV5RNOYl6bV+OA6p9GLcMpHFFGTosSvHvcAUibuUukRqhlYI4z32C7Q==} + hono@4.12.32: + resolution: {integrity: sha512-XcuyW9qE2kJn07PkecMOBd5Vq/hMy7mmGw+idz1yblbg9N17ijJODrvPkn7/dwL3Kulj8LcRJ69DLOWf91dRUg==} engines: {node: '>=16.9.0'} hosted-git-info@4.1.0: @@ -3039,14 +3040,14 @@ packages: pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} - playwright-core@1.61.1: - resolution: {integrity: sha512-h7Qlt6m4REp25qvIdvbDtVmD4LqVXfpRxhORv9L0jzETM05p4fuPJ3dKyuSXQxDSbXnmS79HAgi9589lGSpLkg==} - engines: {node: '>=18'} + playwright-core@1.62.0: + resolution: {integrity: sha512-nsNRyq0r2zsG8AcRHWknc9QRA5XCueC7gWMrs+Gx2tlZn9hcl8zudfh00lhJPY1DE7NmZ6bDsT9g2yey8mXljA==} + engines: {node: '>=20'} hasBin: true - playwright@1.61.1: - resolution: {integrity: sha512-DWnY5o3YbLWK4GovuAVwpqL+1VwGNdUGrRr++8j8PtQQzvAVZUIMjKQ90fY689sEJZJBbZVw1rXaOKSTitkzPQ==} - engines: {node: '>=18'} + playwright@1.62.0: + resolution: {integrity: sha512-Z14dG305dgaLu6foB1TXQagFiW8JfSUIUaUuPaKQ6NtBPKF1P/qXcqfh6c6K/icPqdy37JmjbiBXf6JNg6Sylw==} + engines: {node: '>=20'} hasBin: true pluralize@2.0.0: @@ -3148,19 +3149,12 @@ packages: redux: optional: true - react-router-dom@7.18.1: - resolution: {integrity: sha512-KaZh+X/6UtEp28x51AUYZDMg9NGoz2ja3dNHa+ta/tk40vCzKhQ/RypCWBMLbmDr6//E24Vv5uPsrqXFozdkAg==} - engines: {node: '>=20.0.0'} + react-router@8.3.0: + resolution: {integrity: sha512-qyPMvW83jGIct3yiieisxdk9M745anqhpIMKN5m1t6yBMfgVPpt77aHOqs5fUlEJRMCGffg9BaQLH9oPVOL7xQ==} + engines: {node: '>=22.22.0'} peerDependencies: - react: '>=18' - react-dom: '>=18' - - react-router@7.18.1: - resolution: {integrity: sha512-GDLgg3i3uM0aeJO3Fm+TCS+sDQ7gu12T6x0qdTEzcwqEfleci7JwugVNIF3U//0FWKnJT7ptG+20B2jfDqnZAg==} - engines: {node: '>=20.0.0'} - peerDependencies: - react: '>=18' - react-dom: '>=18' + react: '>=19.2.7' + react-dom: '>=19.2.7' peerDependenciesMeta: react-dom: optional: true @@ -3185,8 +3179,8 @@ packages: resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} engines: {node: '>= 14.18.0'} - recharts@3.10.0: - resolution: {integrity: sha512-wulMvfncpIlmu2uFtRU/mE5/+NiVtASXkw2KdwJTdHs3WsASX0WxZlX+rpKgyn5BDbIhkPtCpUKkB9XNK5KE0w==} + recharts@3.10.1: + resolution: {integrity: sha512-QXFrvt6IVcw7eeZCoyXTwkIJAX3Dv1nyVhMicXJ47GsGDDpcN8z6o644DibE9XjpBTThtsomLKnTV6lc+cVFUA==} engines: {node: '>=18'} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -3285,9 +3279,6 @@ packages: resolution: {integrity: sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==} engines: {node: '>= 18'} - set-cookie-parser@2.7.2: - resolution: {integrity: sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==} - setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} @@ -3811,10 +3802,10 @@ snapshots: '@asamuzakjp/nwsapi@2.3.9': {} - '@axe-core/playwright@4.12.1(playwright-core@1.61.1)': + '@axe-core/playwright@4.12.1(playwright-core@1.62.0)': dependencies: axe-core: 4.12.1 - playwright-core: 1.61.1 + playwright-core: 1.62.0 '@azu/format-text@1.0.2': {} @@ -4175,13 +4166,13 @@ snapshots: dependencies: node-addon-api: 8.9.0 - '@hono/node-server@1.19.14(hono@4.12.27)': + '@hono/node-server@1.19.14(hono@4.12.32)': dependencies: - hono: 4.12.27 + hono: 4.12.32 - '@hono/node-server@2.0.8(hono@4.12.27)': + '@hono/node-server@2.0.8(hono@4.12.32)': dependencies: - hono: 4.12.27 + hono: 4.12.32 '@jridgewell/gen-mapping@0.3.13': dependencies: @@ -4220,10 +4211,10 @@ snapshots: '@microsoft/vally-server@0.11.0(supports-color@7.2.0)': dependencies: - '@hono/node-server': 2.0.8(hono@4.12.27) + '@hono/node-server': 2.0.8(hono@4.12.32) '@microsoft/vally': 0.11.0(supports-color@7.2.0) better-sqlite3: 12.11.1 - hono: 4.12.27 + hono: 4.12.32 transitivePeerDependencies: - supports-color @@ -4241,7 +4232,7 @@ snapshots: '@modelcontextprotocol/sdk@1.29.0(supports-color@7.2.0)(zod@4.4.3)': dependencies: - '@hono/node-server': 1.19.14(hono@4.12.27) + '@hono/node-server': 1.19.14(hono@4.12.32) ajv: 8.20.0 ajv-formats: 3.0.1(ajv@8.20.0) content-type: 1.0.5 @@ -4251,7 +4242,7 @@ snapshots: eventsource-parser: 3.1.0 express: 5.2.1(supports-color@7.2.0) express-rate-limit: 8.5.2(express@5.2.1(supports-color@7.2.0)) - hono: 4.12.27 + hono: 4.12.32 jose: 6.2.3 json-schema-typed: 8.0.2 pkce-challenge: 5.0.1 @@ -4456,9 +4447,9 @@ snapshots: '@oxc-project/types@0.139.0': {} - '@playwright/test@1.61.1': + '@playwright/test@1.62.0': dependencies: - playwright: 1.61.1 + playwright: 1.62.0 '@reduxjs/toolkit@2.12.0(react-redux@9.3.0(@types/react@19.2.17)(react@19.2.8)(redux@5.0.1))(react@19.2.8)': dependencies: @@ -5111,7 +5102,7 @@ snapshots: ajv@8.20.0: dependencies: fast-deep-equal: 3.1.3 - fast-uri: 3.1.3 + fast-uri: 3.1.4 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 @@ -5203,7 +5194,7 @@ snapshots: boundary@2.0.0: {} - brace-expansion@5.0.7: + brace-expansion@5.0.8: dependencies: balanced-match: 4.0.4 @@ -5319,12 +5310,12 @@ snapshots: convert-source-map@2.0.0: {} + cookie-es@3.1.1: {} + cookie-signature@1.2.2: {} cookie@0.7.2: {} - cookie@1.1.1: {} - cors@2.8.6: dependencies: object-assign: 4.1.1 @@ -5637,7 +5628,7 @@ snapshots: merge2: 1.4.1 micromatch: 4.0.8 - fast-uri@3.1.3: {} + fast-uri@3.1.4: {} fastq@1.20.1: dependencies: @@ -5766,7 +5757,7 @@ snapshots: dependencies: function-bind: 1.1.2 - hono@4.12.27: {} + hono@4.12.32: {} hosted-git-info@4.1.0: dependencies: @@ -6289,7 +6280,7 @@ snapshots: minimatch@10.2.5: dependencies: - brace-expansion: 5.0.7 + brace-expansion: 5.0.8 minimist@1.2.8: {} @@ -6445,11 +6436,11 @@ snapshots: mlly: 1.8.2 pathe: 2.0.3 - playwright-core@1.61.1: {} + playwright-core@1.62.0: {} - playwright@1.61.1: + playwright@1.62.0: dependencies: - playwright-core: 1.61.1 + playwright-core: 1.62.0 optionalDependencies: fsevents: 2.3.2 @@ -6556,17 +6547,10 @@ snapshots: '@types/react': 19.2.17 redux: 5.0.1 - react-router-dom@7.18.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8): + react-router@8.3.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8): dependencies: + cookie-es: 3.1.1 react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - react-router: 7.18.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - - react-router@7.18.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8): - dependencies: - cookie: 1.1.1 - react: 19.2.8 - set-cookie-parser: 2.7.2 optionalDependencies: react-dom: 19.2.8(react@19.2.8) @@ -6592,7 +6576,7 @@ snapshots: readdirp@4.1.2: {} - recharts@3.10.0(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react-is@19.2.7)(react@19.2.8)(redux@5.0.1): + recharts@3.10.1(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react-is@19.2.7)(react@19.2.8)(redux@5.0.1): dependencies: '@reduxjs/toolkit': 2.12.0(react-redux@9.3.0(@types/react@19.2.17)(react@19.2.8)(redux@5.0.1))(react@19.2.8) clsx: 2.1.1 @@ -6757,8 +6741,6 @@ snapshots: transitivePeerDependencies: - supports-color - set-cookie-parser@2.7.2: {} - setprototypeof@1.2.0: {} shebang-command@2.0.0: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 2858ec5..4e9d5e4 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -28,10 +28,8 @@ minimumReleaseAgeExclude: - '@tailwindcss/oxide-win32-x64-msvc@4.3.2' - '@tailwindcss/oxide@4.3.2' - '@tailwindcss/vite@4.3.2' - - react-router-dom@7.18.1 - - react-router@7.18.1 - tailwindcss@4.3.2 - - recharts@3.9.1 || 3.9.2 + - recharts@3.9.1 || 3.9.2 || 3.10.1 - vite@8.1.2 || 8.1.3 || 8.1.4 - '@biomejs/biome@2.5.2 || 2.5.3' - '@biomejs/cli-darwin-arm64@2.5.2 || 2.5.3' @@ -67,7 +65,12 @@ minimumReleaseAgeExclude: - '@typescript/typescript-win32-arm64@7.0.2' - '@typescript/typescript-win32-x64@7.0.2' - typescript@7.0.2 + - '@playwright/test@1.62.0' + - playwright-core@1.62.0 + - playwright@1.62.0 overrides: form-data: ^4.0.6 - hono: ^4.12.27 + hono: ^4.12.32 esbuild: ^0.28.1 + fast-uri: ^3.1.4 + brace-expansion: ^5.0.8