chore: bump deps and migrate .inputValidator.validator

- Update `@types/node`, `semver`, TanStack Router/Start, `posthog-node`, `shadcn`, `fumadocs-mdx`, and a handful of other minor dep bumps across the monorepo
- Upgrade pnpm to 11.5.2
- Replace deprecated `.inputValidator(…)` calls with `.validator(…)` on all server functions
This commit is contained in:
2026-06-09 12:57:22 -04:00
parent e776dc74f6
commit 4df8d80c79
16 changed files with 397 additions and 716 deletions
+3 -3
View File
@@ -52,18 +52,18 @@
"handlebars": "^4.7.9", "handlebars": "^4.7.9",
"jsonc-parser": "^3.3.1", "jsonc-parser": "^3.3.1",
"picocolors": "^1.1.1", "picocolors": "^1.1.1",
"semver": "^7.8.1", "semver": "^7.8.3",
"ts-morph": "^28.0.0", "ts-morph": "^28.0.0",
"zod": "^4.4.3" "zod": "^4.4.3"
}, },
"devDependencies": { "devDependencies": {
"@types/node": "^25.9.1", "@types/node": "catalog:",
"@types/semver": "^7.7.1", "@types/semver": "^7.7.1",
"@withstanza/codemods": "workspace:*", "@withstanza/codemods": "workspace:*",
"@withstanza/registry": "workspace:*", "@withstanza/registry": "workspace:*",
"@withstanza/schema": "workspace:*", "@withstanza/schema": "workspace:*",
"@withstanza/utils": "workspace:*", "@withstanza/utils": "workspace:*",
"typescript": "^6.0.3", "typescript": "catalog:",
"vite-plus": "catalog:", "vite-plus": "catalog:",
"vitest": "catalog:" "vitest": "catalog:"
} }
+11 -11
View File
@@ -18,13 +18,13 @@
"@pierre/trees": "1.0.0-beta.4", "@pierre/trees": "1.0.0-beta.4",
"@tabler/icons-react": "^3.44.0", "@tabler/icons-react": "^3.44.0",
"@tailwindcss/vite": "^4.3.0", "@tailwindcss/vite": "^4.3.0",
"@takumi-rs/image-response": "^1.6.0", "@takumi-rs/image-response": "^1.7.0",
"@tanstack/react-devtools": "^0.10.5", "@tanstack/react-devtools": "^0.10.5",
"@tanstack/react-hotkeys": "^0.10.0", "@tanstack/react-hotkeys": "^0.10.0",
"@tanstack/react-pacer": "^0.22.1", "@tanstack/react-pacer": "^0.22.1",
"@tanstack/react-router": "^1.170.11", "@tanstack/react-router": "^1.170.15",
"@tanstack/react-router-devtools": "^1.167.0", "@tanstack/react-router-devtools": "^1.167.0",
"@tanstack/react-start": "^1.168.19", "@tanstack/react-start": "^1.168.25",
"@vercel/analytics": "^2.0.1", "@vercel/analytics": "^2.0.1",
"@vercel/functions": "^3.6.2", "@vercel/functions": "^3.6.2",
"@withstanza/registry": "workspace:*", "@withstanza/registry": "workspace:*",
@@ -32,17 +32,17 @@
"class-variance-authority": "^0.7.1", "class-variance-authority": "^0.7.1",
"clsx": "^2.1.1", "clsx": "^2.1.1",
"fumadocs-core": "^16.9.3", "fumadocs-core": "^16.9.3",
"fumadocs-mdx": "^15.0.10", "fumadocs-mdx": "^15.0.11",
"fumadocs-ui": "npm:@fumadocs/base-ui@^16.9.3", "fumadocs-ui": "npm:@fumadocs/base-ui@^16.9.3",
"lru-cache": "^11.5.1", "lru-cache": "^11.5.1",
"motion": "^12.40.0", "motion": "^12.40.0",
"nitro": "3.0.260603-beta", "nitro": "3.0.260603-beta",
"posthog-node": "^5.35.13", "posthog-node": "^5.36.4",
"react": "^19.2.7", "react": "^19.2.7",
"react-dom": "^19.2.7", "react-dom": "^19.2.7",
"react-resizable-panels": "^4.11.2", "react-resizable-panels": "^4.11.2",
"recharts": "^3.8.1", "recharts": "^3.8.1",
"shadcn": "^4.10.0", "shadcn": "^4.11.0",
"shiki": "^4.2.0", "shiki": "^4.2.0",
"sonner": "^2.0.7", "sonner": "^2.0.7",
"tailwind-merge": "^3.6.0", "tailwind-merge": "^3.6.0",
@@ -51,18 +51,18 @@
"zod": "^4.4.3" "zod": "^4.4.3"
}, },
"devDependencies": { "devDependencies": {
"@tailwindcss/typography": "^0.5.19", "@tailwindcss/typography": "^0.5.20",
"@tanstack/devtools-vite": "^0.7.0", "@tanstack/devtools-vite": "^0.7.0",
"@testing-library/dom": "^10.4.1", "@testing-library/dom": "^10.4.1",
"@testing-library/react": "^16.3.2", "@testing-library/react": "^16.3.2",
"@types/mdx": "^2.0.13", "@types/mdx": "^2.0.14",
"@types/node": "^25.9.1", "@types/node": "catalog:",
"@types/react": "^19.2.16", "@types/react": "^19.2.17",
"@types/react-dom": "^19.2.3", "@types/react-dom": "^19.2.3",
"@vitejs/plugin-react": "^6.0.2", "@vitejs/plugin-react": "^6.0.2",
"@vitejs/plugin-rsc": "^0.5.27", "@vitejs/plugin-rsc": "^0.5.27",
"jsdom": "^29.1.1", "jsdom": "^29.1.1",
"typescript": "^6.0.3", "typescript": "catalog:",
"vite": "catalog:", "vite": "catalog:",
"vite-plus": "catalog:", "vite-plus": "catalog:",
"vitest": "catalog:" "vitest": "catalog:"
+1 -1
View File
@@ -29,7 +29,7 @@ const SEARCH_KEYS = ["name", "pm", ...KNOWN_CATEGORIES] as const;
/** /**
* Shared by the route's `validateSearch` and the server function's * Shared by the route's `validateSearch` and the server function's
* `inputValidator` so direct HTTP calls can't bypass the allow-list. * `validator` so direct HTTP calls can't bypass the allow-list.
*/ */
// Cap to keep a hostile URL from cramming thousands of comma-joined ids into // Cap to keep a hostile URL from cramming thousands of comma-joined ids into
// any single search param. Well above any legitimate selection. // any single search param. Well above any legitimate selection.
+1 -1
View File
@@ -19,7 +19,7 @@ import { getDocMeta } from "@/server/docs-meta.functions";
// they flow through React Flight natively. Client components in the tree ship // they flow through React Flight natively. Client components in the tree ship
// as `'use client'` references and hydrate normally. // as `'use client'` references and hydrate normally.
const getDocLayout = createServerFn({ method: "GET" }) const getDocLayout = createServerFn({ method: "GET" })
.inputValidator((slugs: string[]) => slugs) .validator((slugs: string[]) => slugs)
.handler(async ({ data: slugs }) => { .handler(async ({ data: slugs }) => {
const page = source.getPage(slugs); const page = source.getPage(slugs);
if (!page) throw notFound(); if (!page) throw notFound();
@@ -37,7 +37,7 @@ export type BuilderState = {
export const getBuilderState = createServerFn({ method: "GET" }) export const getBuilderState = createServerFn({ method: "GET" })
// Server functions are HTTP-reachable; share the route's allow-list so a // Server functions are HTTP-reachable; share the route's allow-list so a
// direct POST can't bypass it. // direct POST can't bypass it.
.inputValidator(validateBuilderSearch) .validator(validateBuilderSearch)
.handler(async ({ data }): Promise<BuilderState> => { .handler(async ({ data }): Promise<BuilderState> => {
// Warm the Shiki singleton during the initial empty-state load (which // Warm the Shiki singleton during the initial empty-state load (which
// renders zero previews and so would otherwise never touch the // renders zero previews and so would otherwise never touch the
+1 -1
View File
@@ -6,7 +6,7 @@ import { source } from "@/lib/source";
// Serializable docs page metadata for `head()`. Kept out of `docs.$.tsx` so // Serializable docs page metadata for `head()`. Kept out of `docs.$.tsx` so
// it isn't pulled into the RSC bundle by that file's `react-start/rsc` import. // it isn't pulled into the RSC bundle by that file's `react-start/rsc` import.
export const getDocMeta = createServerFn({ method: "GET" }) export const getDocMeta = createServerFn({ method: "GET" })
.inputValidator((slugs: string[]) => slugs) .validator((slugs: string[]) => slugs)
.handler(async ({ data: slugs }) => { .handler(async ({ data: slugs }) => {
const page = source.getPage(slugs); const page = source.getPage(slugs);
if (!page) throw notFound(); if (!page) throw notFound();
@@ -65,7 +65,7 @@ export type ModuleDetail = {
}; };
export const getModuleDetail = createServerFn({ method: "GET" }) export const getModuleDetail = createServerFn({ method: "GET" })
.inputValidator((data: ModuleDetailInput) => { .validator((data: ModuleDetailInput) => {
// category + id are used to look the entry up in the index; constrain them // category + id are used to look the entry up in the index; constrain them
// to the known shape anyway (the module file is then loaded via the entry's // to the known shape anyway (the module file is then loaded via the entry's
// own `path`, which the index schema already guards against traversal). // own `path`, which the index schema already guards against traversal).
+3 -3
View File
@@ -24,14 +24,14 @@
"devDependencies": { "devDependencies": {
"@changesets/changelog-github": "^0.7.0", "@changesets/changelog-github": "^0.7.0",
"@changesets/cli": "^2.31.0", "@changesets/cli": "^2.31.0",
"@types/node": "^25.9.1", "@types/node": "catalog:",
"@vercel/blob": "^2.4.0", "@vercel/blob": "^2.4.0",
"@withstanza/schema": "workspace:*", "@withstanza/schema": "workspace:*",
"jiti": "^2.7.0", "jiti": "^2.7.0",
"svgo": "^4.0.1", "svgo": "^4.0.1",
"typescript": "^6.0.3", "typescript": "catalog:",
"vite-plus": "catalog:", "vite-plus": "catalog:",
"vitest": "catalog:" "vitest": "catalog:"
}, },
"packageManager": "pnpm@11.5.1" "packageManager": "pnpm@11.5.2"
} }
+2 -2
View File
@@ -17,8 +17,8 @@
"ts-morph": "^28.0.0" "ts-morph": "^28.0.0"
}, },
"devDependencies": { "devDependencies": {
"@types/node": "^25.9.1", "@types/node": "catalog:",
"typescript": "^6.0.3", "typescript": "catalog:",
"vite-plus": "catalog:", "vite-plus": "catalog:",
"vitest": "catalog:" "vitest": "catalog:"
} }
+2 -2
View File
@@ -35,8 +35,8 @@
"stanza-cli": "workspace:*" "stanza-cli": "workspace:*"
}, },
"devDependencies": { "devDependencies": {
"@types/node": "^25.9.1", "@types/node": "catalog:",
"typescript": "^6.0.3", "typescript": "catalog:",
"vite-plus": "catalog:" "vite-plus": "catalog:"
} }
} }
+1 -1
View File
@@ -18,7 +18,7 @@
}, },
"devDependencies": { "devDependencies": {
"@types/validate-npm-package-name": "^4.0.2", "@types/validate-npm-package-name": "^4.0.2",
"typescript": "^6.0.3", "typescript": "catalog:",
"vite-plus": "catalog:", "vite-plus": "catalog:",
"vitest": "catalog:" "vitest": "catalog:"
} }
+2 -2
View File
@@ -43,9 +43,9 @@
"zod": "^4.4.3" "zod": "^4.4.3"
}, },
"devDependencies": { "devDependencies": {
"@types/node": "^25.9.1", "@types/node": "catalog:",
"@withstanza/utils": "workspace:*", "@withstanza/utils": "workspace:*",
"typescript": "^6.0.3", "typescript": "catalog:",
"vite-plus": "catalog:", "vite-plus": "catalog:",
"vitest": "catalog:" "vitest": "catalog:"
} }
+2 -2
View File
@@ -10,8 +10,8 @@
".": "./src/index.ts" ".": "./src/index.ts"
}, },
"devDependencies": { "devDependencies": {
"@types/node": "^25.9.1", "@types/node": "catalog:",
"typescript": "^6.0.3", "typescript": "catalog:",
"vite-plus": "catalog:", "vite-plus": "catalog:",
"vitest": "catalog:" "vitest": "catalog:"
} }
+363 -684
View File
File diff suppressed because it is too large Load Diff
+2
View File
@@ -3,6 +3,8 @@ packages:
- packages/* - packages/*
- registry/modules/* - registry/modules/*
catalog: catalog:
"@types/node": ^25.9.2
typescript: ^6.0.3
vite: npm:@voidzero-dev/vite-plus-core@^0.1.24 vite: npm:@voidzero-dev/vite-plus-core@^0.1.24
vite-plus: ^0.1.24 vite-plus: ^0.1.24
vitest: npm:@voidzero-dev/vite-plus-test@^0.1.24 vitest: npm:@voidzero-dev/vite-plus-test@^0.1.24
+1 -1
View File
@@ -9,6 +9,6 @@
"@withstanza/schema": "workspace:*" "@withstanza/schema": "workspace:*"
}, },
"devDependencies": { "devDependencies": {
"@types/node": "^25.9.1" "@types/node": "^25.9.2"
} }
} }