diff --git a/changelog/79.trivial.md b/changelog/79.trivial.md new file mode 100644 index 00000000..b1061683 --- /dev/null +++ b/changelog/79.trivial.md @@ -0,0 +1,2 @@ +Updates zod to v4 and drops the `@tanstack/zod-adapter` package. +Route search schemas are now passed straight to `validateSearch`. diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 0585562f..7a5dc4f4 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -1,12 +1,12 @@ { "name": "frontend", - "version": "0.7.2", + "version": "0.7.10", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "frontend", - "version": "0.7.2", + "version": "0.7.10", "dependencies": { "@floating-ui/react": "^0.27.16", "@mdx-js/react": "^3.1.0", @@ -33,7 +33,6 @@ "@tanstack/react-router": "^1.115.3", "@tanstack/react-table": "^8.21.2", "@tanstack/react-virtual": "^3.11.2", - "@tanstack/zod-adapter": "^1.115.3", "@types/d3-scale": "^4.0.9", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", @@ -50,7 +49,7 @@ "tailwind-merge": "^3.0.2", "tailwindcss": "^4.0.9", "tailwindcss-animate": "^1.0.7", - "zod": "^3.24.2" + "zod": "^4.0.0" }, "devDependencies": { "@biomejs/biome": "^2.2.4", @@ -4001,16 +4000,6 @@ "url": "https://github.com/sponsors/tannerlinsley" } }, - "node_modules/@tanstack/router-generator/node_modules/zod": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", - "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - }, "node_modules/@tanstack/router-plugin": { "version": "1.168.35", "resolved": "https://registry.npmjs.org/@tanstack/router-plugin/-/router-plugin-1.168.35.tgz", @@ -4060,16 +4049,6 @@ } } }, - "node_modules/@tanstack/router-plugin/node_modules/zod": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.5.1.tgz", - "integrity": "sha512-P3GqeAEOEDqKvafVGLezbg+39YW/ze4xrD4qdS0adOY8eoI3zfjv1PQM4UwQzgT8mZKXEbqtVt8K+ZKGqkMFKg==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - }, "node_modules/@tanstack/router-utils": { "version": "1.162.2", "resolved": "https://registry.npmjs.org/@tanstack/router-utils/-/router-utils-1.162.2.tgz", @@ -4141,23 +4120,6 @@ "url": "https://github.com/sponsors/tannerlinsley" } }, - "node_modules/@tanstack/zod-adapter": { - "version": "1.167.0", - "resolved": "https://registry.npmjs.org/@tanstack/zod-adapter/-/zod-adapter-1.167.0.tgz", - "integrity": "sha512-5Wlm5teSu+pz3KKhfa1ESsiOJXbvV6ITr1vKOQKi9yEdtozp6VefEzxzafLLida97mnL2tmauva/njokQrG5CA==", - "license": "MIT", - "engines": { - "node": ">=20.19" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" - }, - "peerDependencies": { - "@tanstack/react-router": ">=1.43.2", - "zod": "^3.23.8" - } - }, "node_modules/@testing-library/dom": { "version": "10.4.1", "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz", @@ -10300,9 +10262,9 @@ } }, "node_modules/zod": { - "version": "3.25.76", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", - "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.6.2.tgz", + "integrity": "sha512-lh5RCAGFa1Cm2hjtNwLQhSs/AsqdWnTQaBER9fEwN/88pSh7KOtJavtBx/0VlkN/uFd61SwYmljLMDAsHlvzBQ==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" diff --git a/frontend/package.json b/frontend/package.json index c5882875..84e7ccc9 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -38,7 +38,6 @@ "@tanstack/react-router": "^1.115.3", "@tanstack/react-table": "^8.21.2", "@tanstack/react-virtual": "^3.11.2", - "@tanstack/zod-adapter": "^1.115.3", "@types/d3-scale": "^4.0.9", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", @@ -55,7 +54,7 @@ "tailwind-merge": "^3.0.2", "tailwindcss": "^4.0.9", "tailwindcss-animate": "^1.0.7", - "zod": "^3.24.2" + "zod": "^4.0.0" }, "devDependencies": { "@biomejs/biome": "^2.2.4", diff --git a/frontend/src/routes/_app/datasets.index.tsx b/frontend/src/routes/_app/datasets.index.tsx index 179ada69..3ecb8b4b 100644 --- a/frontend/src/routes/_app/datasets.index.tsx +++ b/frontend/src/routes/_app/datasets.index.tsx @@ -1,6 +1,5 @@ import { useInfiniteQuery } from "@tanstack/react-query"; import { createFileRoute, useNavigate } from "@tanstack/react-router"; -import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; import { datasetsListInfiniteOptions, @@ -20,7 +19,7 @@ const DatasetsSearchSchema = z.object({ export const Route = createFileRoute("/_app/datasets/")({ component: SourcesIndexPage, - validateSearch: zodValidator(DatasetsSearchSchema), + validateSearch: DatasetsSearchSchema, staticData: { title: "Datasets", }, diff --git a/frontend/src/routes/_app/diagnostics.$providerSlug.$diagnosticSlug/explorer.tsx b/frontend/src/routes/_app/diagnostics.$providerSlug.$diagnosticSlug/explorer.tsx index 8ad952ee..336d80ff 100644 --- a/frontend/src/routes/_app/diagnostics.$providerSlug.$diagnosticSlug/explorer.tsx +++ b/frontend/src/routes/_app/diagnostics.$providerSlug.$diagnosticSlug/explorer.tsx @@ -1,6 +1,5 @@ import { useSuspenseQuery } from "@tanstack/react-query"; import { createFileRoute, getRouteApi, Navigate } from "@tanstack/react-router"; -import { zodValidator } from "@tanstack/zod-adapter"; import { Suspense } from "react"; import { explorerGetCollectionOptions } from "@/client/@tanstack/react-query.gen"; import { ErrorBoundary, ErrorFallback } from "@/components/app"; @@ -103,5 +102,5 @@ export const Route = createFileRoute( "/_app/diagnostics/$providerSlug/$diagnosticSlug/explorer", )({ component: Explorer, - validateSearch: zodValidator(mipEraSearchSchema), + validateSearch: mipEraSearchSchema, }); diff --git a/frontend/src/routes/_app/diagnostics.$providerSlug.$diagnosticSlug/figures.tsx b/frontend/src/routes/_app/diagnostics.$providerSlug.$diagnosticSlug/figures.tsx index 3eb8ce33..435247a0 100644 --- a/frontend/src/routes/_app/diagnostics.$providerSlug.$diagnosticSlug/figures.tsx +++ b/frontend/src/routes/_app/diagnostics.$providerSlug.$diagnosticSlug/figures.tsx @@ -1,5 +1,4 @@ import { createFileRoute } from "@tanstack/react-router"; -import { zodValidator } from "@tanstack/zod-adapter"; import { MipEraScope } from "@/components/charts/mipEraBar"; import { FigureGallery } from "@/components/diagnostics/figureGallery"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; @@ -35,5 +34,5 @@ export const Route = createFileRoute( "/_app/diagnostics/$providerSlug/$diagnosticSlug/figures", )({ component: Figures, - validateSearch: zodValidator(mipEraSearchSchema), + validateSearch: mipEraSearchSchema, }); diff --git a/frontend/src/routes/_app/diagnostics.$providerSlug.$diagnosticSlug/groups.tsx b/frontend/src/routes/_app/diagnostics.$providerSlug.$diagnosticSlug/groups.tsx index 3cfeae21..bf9d9a0d 100644 --- a/frontend/src/routes/_app/diagnostics.$providerSlug.$diagnosticSlug/groups.tsx +++ b/frontend/src/routes/_app/diagnostics.$providerSlug.$diagnosticSlug/groups.tsx @@ -1,5 +1,4 @@ import { createFileRoute } from "@tanstack/react-router"; -import { zodValidator } from "@tanstack/zod-adapter"; import { MipEraScope } from "@/components/charts/mipEraBar"; import ExecutionGroupTable from "@/components/execution/executionGroupTable.tsx"; import { useMipEra } from "@/hooks/useMipEra"; @@ -27,7 +26,7 @@ export const Route = createFileRoute( "/_app/diagnostics/$providerSlug/$diagnosticSlug/groups", )({ component: Executions, - validateSearch: zodValidator(mipEraSearchSchema), + validateSearch: mipEraSearchSchema, staticData: { title: "Execution Groups", }, diff --git a/frontend/src/routes/_app/diagnostics.$providerSlug.$diagnosticSlug/scalars.tsx b/frontend/src/routes/_app/diagnostics.$providerSlug.$diagnosticSlug/scalars.tsx index d2f2b94b..be8374fd 100644 --- a/frontend/src/routes/_app/diagnostics.$providerSlug.$diagnosticSlug/scalars.tsx +++ b/frontend/src/routes/_app/diagnostics.$providerSlug.$diagnosticSlug/scalars.tsx @@ -1,5 +1,4 @@ import { createFileRoute, useNavigate } from "@tanstack/react-router"; -import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; import { MipEraScope } from "@/components/charts/mipEraBar"; import { Values } from "@/components/execution/values"; @@ -73,7 +72,7 @@ export const Route = createFileRoute( "/_app/diagnostics/$providerSlug/$diagnosticSlug/scalars", )({ component: ScalarsValuesTab, - validateSearch: zodValidator(valuesSearchSchema), + validateSearch: valuesSearchSchema, staticData: { title: "Scalar Values", }, diff --git a/frontend/src/routes/_app/diagnostics.$providerSlug.$diagnosticSlug/series.tsx b/frontend/src/routes/_app/diagnostics.$providerSlug.$diagnosticSlug/series.tsx index 132c5cef..86d3f410 100644 --- a/frontend/src/routes/_app/diagnostics.$providerSlug.$diagnosticSlug/series.tsx +++ b/frontend/src/routes/_app/diagnostics.$providerSlug.$diagnosticSlug/series.tsx @@ -1,5 +1,4 @@ import { createFileRoute, useNavigate } from "@tanstack/react-router"; -import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; import { MipEraScope } from "@/components/charts/mipEraBar"; import { Values } from "@/components/execution/values"; @@ -74,7 +73,7 @@ export const Route = createFileRoute( "/_app/diagnostics/$providerSlug/$diagnosticSlug/series", )({ component: SeriesValuesTab, - validateSearch: zodValidator(valuesSearchSchema), + validateSearch: valuesSearchSchema, staticData: { title: "Series Values", }, diff --git a/frontend/src/routes/_app/executions.$groupId/scalar.tsx b/frontend/src/routes/_app/executions.$groupId/scalar.tsx index 72cf40b3..298943e4 100644 --- a/frontend/src/routes/_app/executions.$groupId/scalar.tsx +++ b/frontend/src/routes/_app/executions.$groupId/scalar.tsx @@ -1,5 +1,4 @@ import { createFileRoute, useNavigate } from "@tanstack/react-router"; -import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; import { Values } from "@/components/execution/values"; import { @@ -69,7 +68,7 @@ const ScalarValuesTab = () => { export const Route = createFileRoute("/_app/executions/$groupId/scalar")({ component: ScalarValuesTab, - validateSearch: zodValidator(scalarValuesSearchSchema), + validateSearch: scalarValuesSearchSchema, staticData: { title: "Scalar Values", }, diff --git a/frontend/src/routes/_app/executions.$groupId/series.tsx b/frontend/src/routes/_app/executions.$groupId/series.tsx index 09587be9..84d46ad9 100644 --- a/frontend/src/routes/_app/executions.$groupId/series.tsx +++ b/frontend/src/routes/_app/executions.$groupId/series.tsx @@ -1,5 +1,4 @@ import { createFileRoute, useNavigate } from "@tanstack/react-router"; -import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; import { Values } from "@/components/execution/values"; import { @@ -69,7 +68,7 @@ const SeriesValuesTab = () => { export const Route = createFileRoute("/_app/executions/$groupId/series")({ component: SeriesValuesTab, - validateSearch: zodValidator(seriesValuesSearchSchema), + validateSearch: seriesValuesSearchSchema, staticData: { title: "Series Values", }, diff --git a/frontend/src/routes/_app/executions.index.tsx b/frontend/src/routes/_app/executions.index.tsx index b7e43b5c..7b9fbb30 100644 --- a/frontend/src/routes/_app/executions.index.tsx +++ b/frontend/src/routes/_app/executions.index.tsx @@ -1,6 +1,5 @@ import { useInfiniteQuery } from "@tanstack/react-query"; import { createFileRoute, Link, useNavigate } from "@tanstack/react-router"; -import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; import { executionsListRecentExecutionGroupsQueryKey } from "@/client/@tanstack/react-query.gen"; import { executionsListRecentExecutionGroups } from "@/client/sdk.gen"; @@ -23,7 +22,7 @@ const ExecutionsSearchSchema = z.object({ export const Route = createFileRoute("/_app/executions/")({ component: ExecutionsListPage, - validateSearch: zodValidator(ExecutionsSearchSchema), + validateSearch: ExecutionsSearchSchema, staticData: { title: "Executions", }, diff --git a/frontend/src/routes/_app/explorer/themes.tsx b/frontend/src/routes/_app/explorer/themes.tsx index 6ad1b0a7..6d6ef896 100644 --- a/frontend/src/routes/_app/explorer/themes.tsx +++ b/frontend/src/routes/_app/explorer/themes.tsx @@ -1,6 +1,5 @@ import { useSuspenseQuery } from "@tanstack/react-query"; import { createFileRoute } from "@tanstack/react-router"; -import { zodValidator } from "@tanstack/zod-adapter"; import { useState } from "react"; import { z } from "zod"; import { explorerGetThemeOptions } from "@/client/@tanstack/react-query.gen"; @@ -65,5 +64,5 @@ const Themes = () => { export const Route = createFileRoute("/_app/explorer/themes")({ component: Themes, - validateSearch: zodValidator(themesSchema), + validateSearch: themesSchema, }); diff --git a/frontend/src/routes/_app/models.$sourceId.tsx b/frontend/src/routes/_app/models.$sourceId.tsx index a43d5064..8c150ba0 100644 --- a/frontend/src/routes/_app/models.$sourceId.tsx +++ b/frontend/src/routes/_app/models.$sourceId.tsx @@ -1,6 +1,5 @@ import { useQuery } from "@tanstack/react-query"; import { createFileRoute, Link } from "@tanstack/react-router"; -import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; import { modelsEnsembleOptions, @@ -33,7 +32,7 @@ const ModelSearchSchema = z.object(mipEraSearchFields); export const Route = createFileRoute("/_app/models/$sourceId")({ component: ModelDetailPage, - validateSearch: zodValidator(ModelSearchSchema), + validateSearch: ModelSearchSchema, staticData: { title: "Model", }, diff --git a/frontend/src/routes/_app/models.index.tsx b/frontend/src/routes/_app/models.index.tsx index 01ffba3c..58c058a6 100644 --- a/frontend/src/routes/_app/models.index.tsx +++ b/frontend/src/routes/_app/models.index.tsx @@ -1,6 +1,5 @@ import { useQuery } from "@tanstack/react-query"; import { createFileRoute, useNavigate } from "@tanstack/react-router"; -import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; import { modelsListOptions } from "@/client/@tanstack/react-query.gen"; import { PageHeader } from "@/components/app/pageHeader"; @@ -19,7 +18,7 @@ const ModelsSearchSchema = z.object({ export const Route = createFileRoute("/_app/models/")({ component: ModelsIndexPage, - validateSearch: zodValidator(ModelsSearchSchema), + validateSearch: ModelsSearchSchema, staticData: { title: "Models", },