From 5e58bf755961e27645f6037f356835fe9e25ac42 Mon Sep 17 00:00:00 2001 From: aXenDeveloper Date: Tue, 15 Jul 2025 08:22:32 +0200 Subject: [PATCH 1/2] chore: Update packages --- .github/workflows/build-lint-test.yml | 2 +- .github/workflows/bump_publish.yml | 2 +- apps/api/eslint.config.mjs | 12 + apps/api/package.json | 16 +- apps/docs/eslint.config.mjs | 12 + apps/docs/package.json | 24 +- .../src/app/[locale]/(main)/(home)/page.tsx | 3 +- .../animated-beam/animated-beam-home.tsx | 159 ++ .../animated-beam/animated-beam.tsx | 188 ++ apps/docs/src/examples/button.tsx | 2 +- package.json | 4 +- .../eslint/eslint.config.mjs | 16 +- packages/create-vitnode-app/eslint.config.mjs | 12 + packages/create-vitnode-app/package.json | 4 +- .../src/create/create-package-json.ts | 31 +- packages/eslint/eslint.config.mjs | 11 +- packages/eslint/package.json | 6 +- packages/vitnode/eslint.config.mjs | 16 +- packages/vitnode/package.json | 20 +- plugins/blog/eslint.config.mjs | 16 +- plugins/blog/package.json | 12 +- pnpm-lock.yaml | 1673 +++++++++-------- 22 files changed, 1337 insertions(+), 904 deletions(-) create mode 100644 apps/docs/src/components/animated-beam/animated-beam-home.tsx create mode 100644 apps/docs/src/components/animated-beam/animated-beam.tsx diff --git a/.github/workflows/build-lint-test.yml b/.github/workflows/build-lint-test.yml index 8f599dfd2..1e73d61c5 100644 --- a/.github/workflows/build-lint-test.yml +++ b/.github/workflows/build-lint-test.yml @@ -22,7 +22,7 @@ jobs: - uses: pnpm/action-setup@v4 name: Install pnpm with: - version: 10.12.4 + version: 10.13.1 - name: Install Node.js uses: actions/setup-node@v4 diff --git a/.github/workflows/bump_publish.yml b/.github/workflows/bump_publish.yml index f9691e4f4..01eb480cc 100644 --- a/.github/workflows/bump_publish.yml +++ b/.github/workflows/bump_publish.yml @@ -52,7 +52,7 @@ jobs: - uses: pnpm/action-setup@v4 name: Install pnpm with: - version: 10.12.4 + version: 10.13.1 - name: Install Node.js uses: actions/setup-node@v4 diff --git a/apps/api/eslint.config.mjs b/apps/api/eslint.config.mjs index dd3efc12a..c1de0a4ee 100644 --- a/apps/api/eslint.config.mjs +++ b/apps/api/eslint.config.mjs @@ -1,8 +1,20 @@ import eslintVitNode from '@vitnode/eslint-config/eslint'; +import { fileURLToPath } from 'node:url'; +import { dirname } from 'node:path'; + +const __dirname = dirname(fileURLToPath(import.meta.url)); export default [ ...eslintVitNode, { ignores: ['drizzle.config.ts'], }, + { + languageOptions: { + parserOptions: { + project: './tsconfig.json', + tsconfigRootDir: __dirname, + }, + }, + }, ]; diff --git a/apps/api/package.json b/apps/api/package.json index 136a0edbc..49090bd6f 100644 --- a/apps/api/package.json +++ b/apps/api/package.json @@ -15,27 +15,27 @@ "drizzle-kit": "drizzle-kit" }, "dependencies": { - "@hono/zod-openapi": "^0.19.9", - "@hono/zod-validator": "^0.7.0", + "@hono/zod-openapi": "^0.19.10", + "@hono/zod-validator": "^0.7.1", "@react-email/components": "^0.2.0", "@vitnode/core": "workspace:*", "drizzle-kit": "^0.31.4", - "drizzle-orm": "^0.44.2", - "hono": "^4.8.4", + "drizzle-orm": "^0.44.3", + "hono": "^4.8.5", "next-intl": "^4.3.4", "react": "^19.1.0", "react-dom": "^19.1.0", "zod": "^3.25.76" }, "devDependencies": { - "@hono/node-server": "^1.15.0", - "@types/node": "^24.0.12", + "@hono/node-server": "^1.16.0", + "@types/node": "^24.0.13", "@types/react": "^19.1.8", "@types/react-dom": "^19.1.6", "@vitnode/eslint-config": "workspace:*", "dotenv": "^17.2.0", - "eslint": "^9.30.1", - "react-email": "^4.1.1", + "eslint": "^9.31.0", + "react-email": "^4.1.3", "tsc-alias": "^1.8.16", "tsx": "^4.20.3", "typescript": "^5.8.3" diff --git a/apps/docs/eslint.config.mjs b/apps/docs/eslint.config.mjs index f6c3de516..f049e77eb 100644 --- a/apps/docs/eslint.config.mjs +++ b/apps/docs/eslint.config.mjs @@ -1,8 +1,20 @@ import eslintVitNode from '@vitnode/eslint-config/eslint'; +import { fileURLToPath } from 'node:url'; +import { dirname } from 'node:path'; + +const __dirname = dirname(fileURLToPath(import.meta.url)); export default [ ...eslintVitNode, { ignores: ['.source'], }, + { + languageOptions: { + parserOptions: { + project: './tsconfig.json', + tsconfigRootDir: __dirname, + }, + }, + }, ]; diff --git a/apps/docs/package.json b/apps/docs/package.json index 0fd0b8b98..95db8ac8e 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -21,20 +21,20 @@ "drizzle-kit": "drizzle-kit" }, "dependencies": { - "@hono/zod-openapi": "^0.19.9", - "@hono/zod-validator": "^0.7.0", + "@hono/zod-openapi": "^0.19.10", + "@hono/zod-validator": "^0.7.1", "@vitnode/blog": "workspace:*", "@vitnode/core": "workspace:*", "babel-plugin-react-compiler": "19.1.0-rc.2", "drizzle-kit": "^0.31.4", - "drizzle-orm": "^0.44.2", + "drizzle-orm": "^0.44.3", "fumadocs-core": "^15.6.3", - "fumadocs-mdx": "^11.6.10", + "fumadocs-mdx": "^11.6.11", "fumadocs-ui": "^15.6.3", - "hono": "^4.8.4", + "hono": "^4.8.5", "lucide-react": "^0.525.0", - "motion": "^12.23.3", - "next": "^15.3.5", + "motion": "^12.23.5", + "next": "^15.4.1", "next-intl": "^4.3.4", "react": "^19.1.0", "react-dom": "^19.1.0", @@ -43,18 +43,18 @@ "sonner": "^2.0.6" }, "devDependencies": { - "@playwright/test": "^1.54.0", + "@playwright/test": "^1.54.1", "@tailwindcss/postcss": "^4.1.11", "@types/mdx": "^2.0.13", - "@types/node": "^24.0.12", + "@types/node": "^24.0.13", "@types/react": "^19.1.8", "@types/react-dom": "^19.1.6", "@vitnode/eslint-config": "workspace:*", "class-variance-authority": "^0.7.1", - "eslint": "^9.30.1", + "eslint": "^9.31.0", "postcss": "^8.5.6", - "react-email": "^4.1.1", - "shiki": "^3.7.0", + "react-email": "^4.1.3", + "shiki": "^3.8.0", "tailwindcss": "^4.1.11", "tw-animate-css": "^1.3.5", "typescript": "^5.8.3", diff --git a/apps/docs/src/app/[locale]/(main)/(home)/page.tsx b/apps/docs/src/app/[locale]/(main)/(home)/page.tsx index 514e6afb9..93962be47 100644 --- a/apps/docs/src/app/[locale]/(main)/(home)/page.tsx +++ b/apps/docs/src/app/[locale]/(main)/(home)/page.tsx @@ -4,6 +4,7 @@ import { buttonVariants } from '@vitnode/core/components/ui/button'; import { cn } from '@vitnode/core/lib/utils'; import Link from 'fumadocs-core/link'; +import { AnimatedBeamHome } from '../../../../components/animated-beam/animated-beam-home'; import { AdminSection } from './sections/admin/admin'; import { CallToActionSection } from './sections/call-to-action'; import { PoweringBySection } from './sections/powering-by/powering-by'; @@ -77,7 +78,7 @@ export default function HomePage() { -
Here will be some img or something else
+ diff --git a/apps/docs/src/components/animated-beam/animated-beam-home.tsx b/apps/docs/src/components/animated-beam/animated-beam-home.tsx new file mode 100644 index 000000000..7de512a8a --- /dev/null +++ b/apps/docs/src/components/animated-beam/animated-beam-home.tsx @@ -0,0 +1,159 @@ +'use client'; + +import { + Tooltip, + TooltipContent, + TooltipProvider, + TooltipTrigger, +} from '@vitnode/core/components/ui/tooltip'; +import { Link } from '@vitnode/core/lib/navigation'; +import { cn } from '@vitnode/core/lib/utils'; +import { + AtSign, + Database, + Languages, + Paintbrush, + Plug, + ShieldCheck, + Sparkle, + Users, +} from 'lucide-react'; +import React, { useRef } from 'react'; + +import { LogoVitNode } from '../logo-vitnode'; +import { AnimatedBeam } from './animated-beam'; + +const Circle = ({ + className, + tooltip, + ...props +}: React.ComponentProps & { + tooltip?: string; +}) => { + const classNameLink = cn( + 'bg-card hover:bg-accent hover:text-accent-foreground focus-visible:border-ring focus-visible:ring-ring/50 z-10 flex size-12 items-center justify-center rounded-md border p-3 transition-all focus-visible:ring-[3px]', + className, + ); + + if (!tooltip) { + return ; + } + + return ( + + + + + + + {tooltip} + + + ); +}; + +Circle.displayName = 'Circle'; + +export function AnimatedBeamHome() { + const containerRef = useRef(null); + const div1Ref = useRef(null); + const div2Ref = useRef(null); + const div3Ref = useRef(null); + const div4Ref = useRef(null); + const div5Ref = useRef(null); + const div6Ref = useRef(null); + const div7Ref = useRef(null); + const div8Ref = useRef(null); + const div9Ref = useRef(null); + + return ( +
+
+
+ + + + + + + + + +
+
+ + + + + + + + + +
+
+ + + + + + + + + +
+
+ + + + + + + + + +
+ ); +} diff --git a/apps/docs/src/components/animated-beam/animated-beam.tsx b/apps/docs/src/components/animated-beam/animated-beam.tsx new file mode 100644 index 000000000..074f22b95 --- /dev/null +++ b/apps/docs/src/components/animated-beam/animated-beam.tsx @@ -0,0 +1,188 @@ +'use client'; + +import { cn } from '@vitnode/core/lib/utils'; +import { motion } from 'motion/react'; +import { type RefObject, useEffect, useId, useState } from 'react'; + +export const AnimatedBeam = ({ + className, + containerRef, + fromRef, + toRef, + curvature = 0, + reverse = false, // Include the reverse prop + duration = Math.random() * 3 + 4, + delay = 0, + pathColor = 'gray', + pathWidth = 2, + pathOpacity = 0.2, + gradientStartColor = '#325fbd', + gradientStopColor = '#363895', + startXOffset = 0, + startYOffset = 0, + endXOffset = 0, + endYOffset = 0, +}: { + className?: string; + containerRef: RefObject; // Container ref + curvature?: number; + delay?: number; + duration?: number; + endXOffset?: number; + endYOffset?: number; + fromRef: RefObject; + gradientStartColor?: string; + gradientStopColor?: string; + pathColor?: string; + pathOpacity?: number; + pathWidth?: number; + reverse?: boolean; + startXOffset?: number; + startYOffset?: number; + toRef: RefObject; +}) => { + const id = useId(); + const [pathD, setPathD] = useState(''); + const [svgDimensions, setSvgDimensions] = useState({ width: 0, height: 0 }); + + // Calculate the gradient coordinates based on the reverse prop + const gradientCoordinates = reverse + ? { + x1: ['90%', '-10%'], + x2: ['100%', '0%'], + y1: ['0%', '0%'], + y2: ['0%', '0%'], + } + : { + x1: ['10%', '110%'], + x2: ['0%', '100%'], + y1: ['0%', '0%'], + y2: ['0%', '0%'], + }; + + useEffect(() => { + const updatePath = () => { + if (containerRef.current && fromRef.current && toRef.current) { + const containerRect = containerRef.current.getBoundingClientRect(); + const rectA = fromRef.current.getBoundingClientRect(); + const rectB = toRef.current.getBoundingClientRect(); + + const svgWidth = containerRect.width; + const svgHeight = containerRect.height; + // eslint-disable-next-line @eslint-react/hooks-extra/no-direct-set-state-in-use-effect + setSvgDimensions({ width: svgWidth, height: svgHeight }); + + const startX = + rectA.left - containerRect.left + rectA.width / 2 + startXOffset; + const startY = + rectA.top - containerRect.top + rectA.height / 2 + startYOffset; + const endX = + rectB.left - containerRect.left + rectB.width / 2 + endXOffset; + const endY = + rectB.top - containerRect.top + rectB.height / 2 + endYOffset; + + const controlY = startY - curvature; + const d = `M ${startX},${startY} Q ${ + (startX + endX) / 2 + },${controlY} ${endX},${endY}`; + // eslint-disable-next-line @eslint-react/hooks-extra/no-direct-set-state-in-use-effect + setPathD(d); + } + }; + + // Initialize ResizeObserver + const resizeObserver = new ResizeObserver(entries => { + // For all entries, recalculate the path + // eslint-disable-next-line @typescript-eslint/no-unused-vars + for (const _entry of entries) { + updatePath(); + } + }); + + // Observe the container element + if (containerRef.current) { + resizeObserver.observe(containerRef.current); + } + + // Call the updatePath initially to set the initial path + updatePath(); + + // Clean up the observer on component unmount + return () => { + resizeObserver.disconnect(); + }; + }, [ + containerRef, + fromRef, + toRef, + curvature, + startXOffset, + startYOffset, + endXOffset, + endYOffset, + ]); + + return ( + + + + + + + + + + + + + ); +}; diff --git a/apps/docs/src/examples/button.tsx b/apps/docs/src/examples/button.tsx index 7a8571364..4cded248b 100644 --- a/apps/docs/src/examples/button.tsx +++ b/apps/docs/src/examples/button.tsx @@ -25,7 +25,7 @@ export default function ButtonExample() { Link - diff --git a/package.json b/package.json index f79929a79..719857dfb 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "test:e2e": "turbo test:e2e" }, "devDependencies": { - "@types/node": "^24.0.12", + "@types/node": "^24.0.13", "@vitnode/eslint-config": "workspace:*", "prettier": "^3.6.2", "prettier-plugin-tailwindcss": "^0.6.14", @@ -30,7 +30,7 @@ "engines": { "node": ">=22" }, - "packageManager": "pnpm@10.12.4", + "packageManager": "pnpm@10.13.1", "workspaces": [ "apps/*", "packages/*", diff --git a/packages/create-vitnode-app/copy-of-vitnode-app/eslint/eslint.config.mjs b/packages/create-vitnode-app/copy-of-vitnode-app/eslint/eslint.config.mjs index 16c29ce23..0098d1c8a 100644 --- a/packages/create-vitnode-app/copy-of-vitnode-app/eslint/eslint.config.mjs +++ b/packages/create-vitnode-app/copy-of-vitnode-app/eslint/eslint.config.mjs @@ -1,3 +1,17 @@ import eslintVitNode from '@vitnode/eslint-config/eslint'; +import { fileURLToPath } from 'node:url'; +import { dirname } from 'node:path'; -export default [...eslintVitNode]; +const __dirname = dirname(fileURLToPath(import.meta.url)); + +export default [ + ...eslintVitNode, + { + languageOptions: { + parserOptions: { + project: './tsconfig.json', + tsconfigRootDir: __dirname, + }, + }, + }, +]; diff --git a/packages/create-vitnode-app/eslint.config.mjs b/packages/create-vitnode-app/eslint.config.mjs index 7f4241f66..ee68cfb76 100644 --- a/packages/create-vitnode-app/eslint.config.mjs +++ b/packages/create-vitnode-app/eslint.config.mjs @@ -1,4 +1,8 @@ import eslintVitNode from '@vitnode/eslint-config/eslint'; +import { fileURLToPath } from 'node:url'; +import { dirname } from 'node:path'; + +const __dirname = dirname(fileURLToPath(import.meta.url)); export default [ ...eslintVitNode, @@ -10,4 +14,12 @@ export default [ { ignores: ['copy-of-vitnode-app'], }, + { + languageOptions: { + parserOptions: { + project: './tsconfig.json', + tsconfigRootDir: __dirname, + }, + }, + }, ]; diff --git a/packages/create-vitnode-app/package.json b/packages/create-vitnode-app/package.json index 614425550..3e57744c2 100644 --- a/packages/create-vitnode-app/package.json +++ b/packages/create-vitnode-app/package.json @@ -35,11 +35,11 @@ "validate-npm-package-name": "^6.0.1" }, "devDependencies": { - "@types/node": "^24.0.12", + "@types/node": "^24.0.13", "@types/prompts": "^2.4.9", "@types/validate-npm-package-name": "^4.0.2", "@vitnode/eslint-config": "workspace:*", - "eslint": "^9.30.1", + "eslint": "^9.31.0", "typescript": "^5.8.3" } } diff --git a/packages/create-vitnode-app/src/create/create-package-json.ts b/packages/create-vitnode-app/src/create/create-package-json.ts index 55b084fad..25d1fdd78 100644 --- a/packages/create-vitnode-app/src/create/create-package-json.ts +++ b/packages/create-vitnode-app/src/create/create-package-json.ts @@ -116,13 +116,13 @@ export const createPackageJSON = async ({ 'drizzle-kit': 'drizzle-kit', }, dependencies: { - '@hono/zod-openapi': '^0.19.8', - '@hono/zod-validator': '^0.7.0', + '@hono/zod-openapi': '^0.19.10', + '@hono/zod-validator': '^0.7.1', '@react-email/components': '^0.2.0', '@vitnode/core': pkgVitNodeVersion, 'drizzle-kit': '^0.31.3', - 'drizzle-orm': '^0.44.2', - hono: '^4.8.3', + 'drizzle-orm': '^0.44.3', + hono: '^4.8.5', 'next-intl': '^4.3.1', react: '^19.1', 'react-dom': '^19.1', @@ -142,7 +142,7 @@ export const createPackageJSON = async ({ dotenv: '^17.2.0', ...(eslint ? { - eslint: '^9.30.1', + eslint: '^9.31.0', ...(mode === 'onlyApi' ? { 'prettier-plugin-tailwindcss': '^0.6.14', @@ -151,7 +151,7 @@ export const createPackageJSON = async ({ : {}), } : {}), - 'react-email': '^4.1.1', + 'react-email': '^4.1.3', 'tsc-alias': '^1.8.16', tsx: '^4.20.3', typescript: '^5.8.3', @@ -185,17 +185,17 @@ export const createPackageJSON = async ({ 'drizzle-kit': 'drizzle-kit', }, dependencies: { - '@hono/zod-openapi': '^0.19.9', - '@hono/zod-validator': '^0.7.0', + '@hono/zod-openapi': '^0.19.10', + '@hono/zod-validator': '^0.7.1', '@hookform/resolvers': '^5.1.1', '@react-email/components': '^0.2.0', '@vitnode/core': pkgVitNodeVersion, 'babel-plugin-react-compiler': '19.1.0-rc.2', 'drizzle-kit': '^0.31.4', - 'drizzle-orm': '^0.44.2', - hono: '^4.8.4', + 'drizzle-orm': '^0.44.3', + hono: '^4.8.5', 'lucide-react': '^0.525.0', - next: '^15.3.5', + next: '^15.4.1', 'next-intl': '^4.3.4', react: '^19.1', 'react-dom': '^19.1', @@ -211,12 +211,12 @@ export const createPackageJSON = async ({ '@vitnode/eslint-config': pkgVitNodeVersion, ...(eslint ? { - eslint: '^9.30.1', + eslint: '^9.31.0', 'prettier-plugin-tailwindcss': '^0.6.14', prettier: '^3.6.2', } : {}), - 'react-email': '^4.1.1', + 'react-email': '^4.1.3', turbo: '^2.5.4', tailwindcss: '^4.1.11', 'tw-animate-css': '^1.3.5', @@ -256,7 +256,7 @@ export const createPackageJSON = async ({ '@vitnode/core': pkgVitNodeVersion, 'babel-plugin-react-compiler': '19.1.0-rc.2', 'lucide-react': '^0.525.0', - next: '^15.3.5', + next: '^15.4.1', 'next-intl': '^4.3.4', react: '^19.1', 'react-dom': '^19.1', @@ -274,11 +274,10 @@ export const createPackageJSON = async ({ 'class-variance-authority': '^0.7.1', ...(eslint ? { - eslint: '^9.30.1', + eslint: '^9.31.0', } : {}), postcss: '^8.5.6', - 'react-email': '^4.1.1', tailwindcss: '^4.1.11', 'tw-animate-css': '^1.3.5', typescript: '^5.8.3', diff --git a/packages/eslint/eslint.config.mjs b/packages/eslint/eslint.config.mjs index 94643c2ce..53da1d417 100644 --- a/packages/eslint/eslint.config.mjs +++ b/packages/eslint/eslint.config.mjs @@ -8,6 +8,10 @@ import reactPlugin from 'eslint-plugin-react'; import hooksPlugin from 'eslint-plugin-react-hooks'; import reactCompiler from 'eslint-plugin-react-compiler'; import eslintReact from '@eslint-react/eslint-plugin'; +import { fileURLToPath } from 'node:url'; +import { dirname } from 'node:path'; + +const __dirname = dirname(fileURLToPath(import.meta.url)); export default [ { @@ -69,13 +73,6 @@ export default [ }, }, { files: ['**/*.{js,mjs,cjs,jsx,mjsx,ts,tsx,mtsx}'] }, - { - languageOptions: { - parserOptions: { - project: ['./tsconfig.json'], - }, - }, - }, { rules: { '@eslint-react/no-context-provider': 'off', diff --git a/packages/eslint/package.json b/packages/eslint/package.json index f2dfa0b4e..16b0a76a4 100644 --- a/packages/eslint/package.json +++ b/packages/eslint/package.json @@ -42,8 +42,8 @@ "typescript": "^5.8.3" }, "dependencies": { - "@eslint-react/eslint-plugin": "^1.52.2", - "@eslint/js": "^9.30.1", + "@eslint-react/eslint-plugin": "^1.52.3", + "@eslint/js": "^9.31.0", "eslint-config-prettier": "^10.1.5", "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-perfectionist": "^4.15.0", @@ -52,6 +52,6 @@ "eslint-plugin-react-compiler": "19.1.0-rc.2", "eslint-plugin-react-hooks": "6.0.0-rc1", "prettier-plugin-tailwindcss": "^0.6.14", - "typescript-eslint": "^8.36.0" + "typescript-eslint": "^8.37.0" } } diff --git a/packages/vitnode/eslint.config.mjs b/packages/vitnode/eslint.config.mjs index 16c29ce23..0098d1c8a 100644 --- a/packages/vitnode/eslint.config.mjs +++ b/packages/vitnode/eslint.config.mjs @@ -1,3 +1,17 @@ import eslintVitNode from '@vitnode/eslint-config/eslint'; +import { fileURLToPath } from 'node:url'; +import { dirname } from 'node:path'; -export default [...eslintVitNode]; +const __dirname = dirname(fileURLToPath(import.meta.url)); + +export default [ + ...eslintVitNode, + { + languageOptions: { + parserOptions: { + project: './tsconfig.json', + tsconfigRootDir: __dirname, + }, + }, + }, +]; diff --git a/packages/vitnode/package.json b/packages/vitnode/package.json index 1d99497fa..7e170ba8e 100644 --- a/packages/vitnode/package.json +++ b/packages/vitnode/package.json @@ -36,15 +36,15 @@ "zod": "3.x.x" }, "devDependencies": { - "@hono/zod-openapi": "^0.19.9", - "@hono/zod-validator": "^0.7.0", + "@hono/zod-openapi": "^0.19.10", + "@hono/zod-validator": "^0.7.1", "@hookform/resolvers": "^5.1.1", "@react-email/components": "^0.2.0", "@swc/cli": "0.6.0", - "@swc/core": "^1.12.11", + "@swc/core": "^1.12.14", "@testing-library/dom": "^10.4.0", "@testing-library/react": "^16.3.0", - "@types/node": "^24.0.12", + "@types/node": "^24.0.13", "@types/nodemailer": "^6.4.17", "@types/react": "^19.1.8", "@types/react-dom": "^19.1.6", @@ -55,16 +55,16 @@ "concurrently": "^9.2.0", "dotenv": "^17.2.0", "drizzle-kit": "^0.31.4", - "drizzle-orm": "^0.44.2", - "eslint": "^9.30.1", - "hono": "^4.8.4", + "drizzle-orm": "^0.44.3", + "eslint": "^9.31.0", + "hono": "^4.8.5", "jsdom": "^26.1.0", "lucide-react": "^0.525.0", - "next": "^15.3.5", + "next": "^15.4.1", "next-intl": "^4.3.4", "react": "^19.1.0", "react-dom": "^19.1.0", - "react-email": "^4.1.1", + "react-email": "^4.1.3", "react-hook-form": "^7.60.0", "sonner": "^2.0.6", "tailwindcss": "^4.1.11", @@ -110,7 +110,7 @@ "dependencies": { "@dnd-kit/core": "^6.3.1", "@hono/swagger-ui": "^0.5.2", - "@tanstack/react-query": "^5.82.0", + "@tanstack/react-query": "^5.83.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "cmdk": "^1.1.1", diff --git a/plugins/blog/eslint.config.mjs b/plugins/blog/eslint.config.mjs index 16c29ce23..0098d1c8a 100644 --- a/plugins/blog/eslint.config.mjs +++ b/plugins/blog/eslint.config.mjs @@ -1,3 +1,17 @@ import eslintVitNode from '@vitnode/eslint-config/eslint'; +import { fileURLToPath } from 'node:url'; +import { dirname } from 'node:path'; -export default [...eslintVitNode]; +const __dirname = dirname(fileURLToPath(import.meta.url)); + +export default [ + ...eslintVitNode, + { + languageOptions: { + parserOptions: { + project: './tsconfig.json', + tsconfigRootDir: __dirname, + }, + }, + }, +]; diff --git a/plugins/blog/package.json b/plugins/blog/package.json index f05e89868..7a1872a11 100644 --- a/plugins/blog/package.json +++ b/plugins/blog/package.json @@ -33,13 +33,13 @@ "lint:fix": "eslint . --fix" }, "dependencies": { - "@hono/zod-openapi": "^0.19.9", + "@hono/zod-openapi": "^0.19.10", "@vitnode/core": "workspace:*", "drizzle-kit": "^0.31.4", - "drizzle-orm": "^0.44.2", - "hono": "^4.8.4", + "drizzle-orm": "^0.44.3", + "hono": "^4.8.5", "lucide-react": "^0.525.0", - "next": "^15.3.5", + "next": "^15.4.1", "next-intl": "^4.3.4", "react": "^19.1.0", "react-dom": "^19.1.0", @@ -49,12 +49,12 @@ }, "devDependencies": { "@swc/cli": "0.6.0", - "@swc/core": "^1.12.11", + "@swc/core": "^1.12.14", "@types/react": "^19.1.8", "@types/react-dom": "^19.1.6", "@vitnode/eslint-config": "workspace:*", "concurrently": "^9.2.0", - "eslint": "^9.30.1", + "eslint": "^9.31.0", "tsc-alias": "^1.8.16", "typescript": "^5.8.3" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 35bfa6bbf..631eebb23 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: devDependencies: '@types/node': - specifier: ^24.0.12 - version: 24.0.12 + specifier: ^24.0.13 + version: 24.0.13 '@vitnode/eslint-config': specifier: workspace:* version: link:packages/eslint @@ -36,11 +36,11 @@ importers: apps/api: dependencies: '@hono/zod-openapi': - specifier: ^0.19.9 - version: 0.19.9(hono@4.8.4)(zod@3.25.76) + specifier: ^0.19.10 + version: 0.19.10(hono@4.8.5)(zod@3.25.76) '@hono/zod-validator': - specifier: ^0.7.0 - version: 0.7.0(hono@4.8.4)(zod@3.25.76) + specifier: ^0.7.1 + version: 0.7.1(hono@4.8.5)(zod@3.25.76) '@react-email/components': specifier: ^0.2.0 version: 0.2.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -51,14 +51,14 @@ importers: specifier: ^0.31.4 version: 0.31.4 drizzle-orm: - specifier: ^0.44.2 - version: 0.44.2(@neondatabase/serverless@0.10.4)(@types/pg@8.11.10)(gel@2.1.0)(pg@8.13.1)(postgres@3.4.7) + specifier: ^0.44.3 + version: 0.44.3(@neondatabase/serverless@0.10.4)(@types/pg@8.11.10)(gel@2.1.0)(pg@8.13.1)(postgres@3.4.7) hono: - specifier: ^4.8.4 - version: 4.8.4 + specifier: ^4.8.5 + version: 4.8.5 next-intl: specifier: ^4.3.4 - version: 4.3.4(next@15.3.5(@playwright/test@1.54.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(typescript@5.8.3) + version: 4.3.4(next@15.4.1(@playwright/test@1.54.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(typescript@5.8.3) react: specifier: ^19.1.0 version: 19.1.0 @@ -70,11 +70,11 @@ importers: version: 3.25.76 devDependencies: '@hono/node-server': - specifier: ^1.15.0 - version: 1.15.0(hono@4.8.4) + specifier: ^1.16.0 + version: 1.16.0(hono@4.8.5) '@types/node': - specifier: ^24.0.12 - version: 24.0.12 + specifier: ^24.0.13 + version: 24.0.13 '@types/react': specifier: ^19.1.8 version: 19.1.8 @@ -88,11 +88,11 @@ importers: specifier: ^17.2.0 version: 17.2.0 eslint: - specifier: ^9.30.1 - version: 9.30.1(jiti@2.4.2) + specifier: ^9.31.0 + version: 9.31.0(jiti@2.4.2) react-email: - specifier: ^4.1.1 - version: 4.1.1 + specifier: ^4.1.3 + version: 4.1.3 tsc-alias: specifier: ^1.8.16 version: 1.8.16 @@ -106,11 +106,11 @@ importers: apps/docs: dependencies: '@hono/zod-openapi': - specifier: ^0.19.9 - version: 0.19.9(hono@4.8.4)(zod@3.25.76) + specifier: ^0.19.10 + version: 0.19.10(hono@4.8.5)(zod@3.25.76) '@hono/zod-validator': - specifier: ^0.7.0 - version: 0.7.0(hono@4.8.4)(zod@3.25.76) + specifier: ^0.7.1 + version: 0.7.1(hono@4.8.5)(zod@3.25.76) '@vitnode/blog': specifier: workspace:* version: link:../../plugins/blog @@ -124,32 +124,32 @@ importers: specifier: ^0.31.4 version: 0.31.4 drizzle-orm: - specifier: ^0.44.2 - version: 0.44.2(@neondatabase/serverless@0.10.4)(@types/pg@8.11.10)(gel@2.1.0)(pg@8.13.1)(postgres@3.4.7) + specifier: ^0.44.3 + version: 0.44.3(@neondatabase/serverless@0.10.4)(@types/pg@8.11.10)(gel@2.1.0)(pg@8.13.1)(postgres@3.4.7) fumadocs-core: specifier: ^15.6.3 - version: 15.6.3(@types/react@19.1.8)(next@15.3.5(@playwright/test@1.54.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 15.6.3(@types/react@19.1.8)(next@15.4.1(@playwright/test@1.54.1)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) fumadocs-mdx: - specifier: ^11.6.10 - version: 11.6.10(@fumadocs/mdx-remote@1.3.0(acorn@8.15.0)(fumadocs-core@15.6.3(@types/react@19.1.8)(next@15.3.5(@playwright/test@1.54.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0))(acorn@8.15.0)(fumadocs-core@15.6.3(@types/react@19.1.8)(next@15.3.5(@playwright/test@1.54.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(next@15.3.5(@playwright/test@1.54.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@6.3.5(@types/node@24.0.12)(jiti@2.4.2)(lightningcss@1.30.1)(tsx@4.20.3)(yaml@2.8.0)) + specifier: ^11.6.11 + version: 11.6.11(@fumadocs/mdx-remote@1.3.0(acorn@8.15.0)(fumadocs-core@15.6.3(@types/react@19.1.8)(next@15.4.1(@playwright/test@1.54.1)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0))(acorn@8.15.0)(fumadocs-core@15.6.3(@types/react@19.1.8)(next@15.4.1(@playwright/test@1.54.1)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(next@15.4.1(@playwright/test@1.54.1)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@6.3.5(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0)) fumadocs-ui: specifier: ^15.6.3 - version: 15.6.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(next@15.3.5(@playwright/test@1.54.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(tailwindcss@4.1.11) + version: 15.6.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(next@15.4.1(@playwright/test@1.54.1)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(tailwindcss@4.1.11) hono: - specifier: ^4.8.4 - version: 4.8.4 + specifier: ^4.8.5 + version: 4.8.5 lucide-react: specifier: ^0.525.0 version: 0.525.0(react@19.1.0) motion: - specifier: ^12.23.3 - version: 12.23.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^12.23.5 + version: 12.23.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0) next: - specifier: ^15.3.5 - version: 15.3.5(@playwright/test@1.54.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^15.4.1 + version: 15.4.1(@playwright/test@1.54.1)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) next-intl: specifier: ^4.3.4 - version: 4.3.4(next@15.3.5(@playwright/test@1.54.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(typescript@5.8.3) + version: 4.3.4(next@15.4.1(@playwright/test@1.54.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(typescript@5.8.3) react: specifier: ^19.1.0 version: 19.1.0 @@ -167,8 +167,8 @@ importers: version: 2.0.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0) devDependencies: '@playwright/test': - specifier: ^1.54.0 - version: 1.54.0 + specifier: ^1.54.1 + version: 1.54.1 '@tailwindcss/postcss': specifier: ^4.1.11 version: 4.1.11 @@ -176,8 +176,8 @@ importers: specifier: ^2.0.13 version: 2.0.13 '@types/node': - specifier: ^24.0.12 - version: 24.0.12 + specifier: ^24.0.13 + version: 24.0.13 '@types/react': specifier: ^19.1.8 version: 19.1.8 @@ -191,17 +191,17 @@ importers: specifier: ^0.7.1 version: 0.7.1 eslint: - specifier: ^9.30.1 - version: 9.30.1(jiti@2.4.2) + specifier: ^9.31.0 + version: 9.31.0(jiti@2.4.2) postcss: specifier: ^8.5.6 version: 8.5.6 react-email: - specifier: ^4.1.1 - version: 4.1.1 + specifier: ^4.1.3 + version: 4.1.3 shiki: - specifier: ^3.7.0 - version: 3.7.0 + specifier: ^3.8.0 + version: 3.8.0 tailwindcss: specifier: ^4.1.11 version: 4.1.11 @@ -219,7 +219,7 @@ importers: dependencies: '@inquirer/prompts': specifier: ^7.6.0 - version: 7.6.0(@types/node@24.0.12) + version: 7.6.0(@types/node@24.0.13) commander: specifier: ^14.0.0 version: 14.0.0 @@ -234,8 +234,8 @@ importers: version: 6.0.1 devDependencies: '@types/node': - specifier: ^24.0.12 - version: 24.0.12 + specifier: ^24.0.13 + version: 24.0.13 '@types/prompts': specifier: ^2.4.9 version: 2.4.9 @@ -246,8 +246,8 @@ importers: specifier: workspace:* version: link:../eslint eslint: - specifier: ^9.30.1 - version: 9.30.1(jiti@2.4.2) + specifier: ^9.31.0 + version: 9.31.0(jiti@2.4.2) typescript: specifier: ^5.8.3 version: 5.8.3 @@ -255,35 +255,35 @@ importers: packages/eslint: dependencies: '@eslint-react/eslint-plugin': - specifier: ^1.52.2 - version: 1.52.2(eslint@9.30.1(jiti@2.4.2))(ts-api-utils@2.1.0(typescript@5.8.3))(typescript@5.8.3) + specifier: ^1.52.3 + version: 1.52.3(eslint@9.31.0(jiti@2.4.2))(ts-api-utils@2.1.0(typescript@5.8.3))(typescript@5.8.3) '@eslint/js': - specifier: ^9.30.1 - version: 9.30.1 + specifier: ^9.31.0 + version: 9.31.0 eslint: specifier: ^9.0.0 - version: 9.30.1(jiti@2.4.2) + version: 9.31.0(jiti@2.4.2) eslint-config-prettier: specifier: ^10.1.5 - version: 10.1.5(eslint@9.30.1(jiti@2.4.2)) + version: 10.1.5(eslint@9.31.0(jiti@2.4.2)) eslint-plugin-jsx-a11y: specifier: ^6.10.2 - version: 6.10.2(eslint@9.30.1(jiti@2.4.2)) + version: 6.10.2(eslint@9.31.0(jiti@2.4.2)) eslint-plugin-perfectionist: specifier: ^4.15.0 - version: 4.15.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) + version: 4.15.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) eslint-plugin-prettier: specifier: ^5.5.1 - version: 5.5.1(@types/eslint@9.6.1)(eslint-config-prettier@10.1.5(eslint@9.30.1(jiti@2.4.2)))(eslint@9.30.1(jiti@2.4.2))(prettier@3.6.2) + version: 5.5.1(@types/eslint@9.6.1)(eslint-config-prettier@10.1.5(eslint@9.31.0(jiti@2.4.2)))(eslint@9.31.0(jiti@2.4.2))(prettier@3.6.2) eslint-plugin-react: specifier: ^7.37.5 - version: 7.37.5(eslint@9.30.1(jiti@2.4.2)) + version: 7.37.5(eslint@9.31.0(jiti@2.4.2)) eslint-plugin-react-compiler: specifier: 19.1.0-rc.2 - version: 19.1.0-rc.2(eslint@9.30.1(jiti@2.4.2)) + version: 19.1.0-rc.2(eslint@9.31.0(jiti@2.4.2)) eslint-plugin-react-hooks: specifier: 6.0.0-rc1 - version: 6.0.0-rc1(eslint@9.30.1(jiti@2.4.2)) + version: 6.0.0-rc1(eslint@9.31.0(jiti@2.4.2)) prettier: specifier: ^3.0.0 version: 3.6.2 @@ -291,8 +291,8 @@ importers: specifier: ^0.6.14 version: 0.6.14(prettier-plugin-astro@0.7.2)(prettier@3.6.2) typescript-eslint: - specifier: ^8.36.0 - version: 8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) + specifier: ^8.37.0 + version: 8.37.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) devDependencies: typescript: specifier: ^5.8.3 @@ -305,10 +305,10 @@ importers: version: 6.3.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@hono/swagger-ui': specifier: ^0.5.2 - version: 0.5.2(hono@4.8.4) + version: 0.5.2(hono@4.8.5) '@tanstack/react-query': - specifier: ^5.82.0 - version: 5.82.0(react@19.1.0) + specifier: ^5.83.0 + version: 5.83.0(react@19.1.0) class-variance-authority: specifier: ^0.7.1 version: 0.7.1 @@ -338,7 +338,7 @@ importers: version: 7.1.1 react-scan: specifier: ^0.4.3 - version: 0.4.3(@types/react@19.1.8)(next@15.3.5(@babel/core@7.28.0)(@playwright/test@1.54.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(rollup@4.44.2) + version: 0.4.3(@types/react@19.1.8)(next@15.4.1(@babel/core@7.28.0)(@playwright/test@1.54.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(rollup@4.45.0) resend: specifier: ^4.6.0 version: 4.6.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -353,11 +353,11 @@ importers: version: 1.1.2(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) devDependencies: '@hono/zod-openapi': - specifier: ^0.19.9 - version: 0.19.9(hono@4.8.4)(zod@3.25.76) + specifier: ^0.19.10 + version: 0.19.10(hono@4.8.5)(zod@3.25.76) '@hono/zod-validator': - specifier: ^0.7.0 - version: 0.7.0(hono@4.8.4)(zod@3.25.76) + specifier: ^0.7.1 + version: 0.7.1(hono@4.8.5)(zod@3.25.76) '@hookform/resolvers': specifier: ^5.1.1 version: 5.1.1(react-hook-form@7.60.0(react@19.1.0)) @@ -366,10 +366,10 @@ importers: version: 0.2.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@swc/cli': specifier: 0.6.0 - version: 0.6.0(@swc/core@1.12.11)(chokidar@4.0.3) + version: 0.6.0(@swc/core@1.12.14)(chokidar@4.0.3) '@swc/core': - specifier: ^1.12.11 - version: 1.12.11 + specifier: ^1.12.14 + version: 1.12.14 '@testing-library/dom': specifier: ^10.4.0 version: 10.4.0 @@ -377,8 +377,8 @@ importers: specifier: ^16.3.0 version: 16.3.0(@testing-library/dom@10.4.0)(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@types/node': - specifier: ^24.0.12 - version: 24.0.12 + specifier: ^24.0.13 + version: 24.0.13 '@types/nodemailer': specifier: ^6.4.17 version: 6.4.17 @@ -390,10 +390,10 @@ importers: version: 19.1.6(@types/react@19.1.8) '@vitejs/plugin-react': specifier: ^4.6.0 - version: 4.6.0(vite@7.0.4(@types/node@24.0.12)(jiti@2.4.2)(lightningcss@1.30.1)(tsx@4.20.3)(yaml@2.8.0)) + version: 4.6.0(vite@7.0.4(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0)) '@vitest/coverage-v8': specifier: ^3.2.4 - version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.0.12)(jiti@2.4.2)(jsdom@26.1.0)(lightningcss@1.30.1)(tsx@4.20.3)(yaml@2.8.0)) + version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.0.13)(jiti@2.4.2)(jsdom@26.1.0)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0)) '@vitnode/eslint-config': specifier: workspace:* version: link:../eslint @@ -410,14 +410,14 @@ importers: specifier: ^0.31.4 version: 0.31.4 drizzle-orm: - specifier: ^0.44.2 - version: 0.44.2(@neondatabase/serverless@0.10.4)(@types/pg@8.11.10)(gel@2.1.0)(pg@8.13.1)(postgres@3.4.7) + specifier: ^0.44.3 + version: 0.44.3(@neondatabase/serverless@0.10.4)(@types/pg@8.11.10)(gel@2.1.0)(pg@8.13.1)(postgres@3.4.7) eslint: - specifier: ^9.30.1 - version: 9.30.1(jiti@2.4.2) + specifier: ^9.31.0 + version: 9.31.0(jiti@2.4.2) hono: - specifier: ^4.8.4 - version: 4.8.4 + specifier: ^4.8.5 + version: 4.8.5 jsdom: specifier: ^26.1.0 version: 26.1.0 @@ -425,11 +425,11 @@ importers: specifier: ^0.525.0 version: 0.525.0(react@19.1.0) next: - specifier: ^15.3.5 - version: 15.3.5(@babel/core@7.28.0)(@playwright/test@1.54.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^15.4.1 + version: 15.4.1(@babel/core@7.28.0)(@playwright/test@1.54.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) next-intl: specifier: ^4.3.4 - version: 4.3.4(next@15.3.5(@babel/core@7.28.0)(@playwright/test@1.54.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(typescript@5.8.3) + version: 4.3.4(next@15.4.1(@babel/core@7.28.0)(@playwright/test@1.54.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(typescript@5.8.3) react: specifier: ^19.1.0 version: 19.1.0 @@ -437,8 +437,8 @@ importers: specifier: ^19.1.0 version: 19.1.0(react@19.1.0) react-email: - specifier: ^4.1.1 - version: 4.1.1 + specifier: ^4.1.3 + version: 4.1.3 react-hook-form: specifier: ^7.60.0 version: 7.60.0(react@19.1.0) @@ -453,7 +453,7 @@ importers: version: 1.8.16 tsup: specifier: ^8.5.0 - version: 8.5.0(@swc/core@1.12.11)(jiti@2.4.2)(postcss@8.5.6)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.8.0) + version: 8.5.0(@swc/core@1.12.14)(jiti@2.4.2)(postcss@8.5.6)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.8.0) tsx: specifier: ^4.20.3 version: 4.20.3 @@ -465,10 +465,10 @@ importers: version: 5.8.3 vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.8.3)(vite@7.0.4(@types/node@24.0.12)(jiti@2.4.2)(lightningcss@1.30.1)(tsx@4.20.3)(yaml@2.8.0)) + version: 5.1.4(typescript@5.8.3)(vite@7.0.4(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0)) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.0.12)(jiti@2.4.2)(jsdom@26.1.0)(lightningcss@1.30.1)(tsx@4.20.3)(yaml@2.8.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.0.13)(jiti@2.4.2)(jsdom@26.1.0)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0) zod: specifier: ^3.25.76 version: 3.25.76 @@ -476,8 +476,8 @@ importers: plugins/blog: dependencies: '@hono/zod-openapi': - specifier: ^0.19.9 - version: 0.19.9(hono@4.8.4)(zod@3.25.76) + specifier: ^0.19.10 + version: 0.19.10(hono@4.8.5)(zod@3.25.76) '@vitnode/core': specifier: workspace:* version: link:../../packages/vitnode @@ -485,20 +485,20 @@ importers: specifier: ^0.31.4 version: 0.31.4 drizzle-orm: - specifier: ^0.44.2 - version: 0.44.2(@neondatabase/serverless@0.10.4)(@types/pg@8.11.10)(gel@2.1.0)(pg@8.13.1)(postgres@3.4.7) + specifier: ^0.44.3 + version: 0.44.3(@neondatabase/serverless@0.10.4)(@types/pg@8.11.10)(gel@2.1.0)(pg@8.13.1)(postgres@3.4.7) hono: - specifier: ^4.8.4 - version: 4.8.4 + specifier: ^4.8.5 + version: 4.8.5 lucide-react: specifier: ^0.525.0 version: 0.525.0(react@19.1.0) next: - specifier: ^15.3.5 - version: 15.3.5(@playwright/test@1.54.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^15.4.1 + version: 15.4.1(@playwright/test@1.54.1)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) next-intl: specifier: ^4.3.4 - version: 4.3.4(next@15.3.5(@playwright/test@1.54.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(typescript@5.8.3) + version: 4.3.4(next@15.4.1(@playwright/test@1.54.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(typescript@5.8.3) react: specifier: ^19.1.0 version: 19.1.0 @@ -517,10 +517,10 @@ importers: devDependencies: '@swc/cli': specifier: 0.6.0 - version: 0.6.0(@swc/core@1.12.11)(chokidar@4.0.3) + version: 0.6.0(@swc/core@1.12.14)(chokidar@4.0.3) '@swc/core': - specifier: ^1.12.11 - version: 1.12.11 + specifier: ^1.12.14 + version: 1.12.14 '@types/react': specifier: ^19.1.8 version: 19.1.8 @@ -534,8 +534,8 @@ importers: specifier: ^9.2.0 version: 9.2.0 eslint: - specifier: ^9.30.1 - version: 9.30.1(jiti@2.4.2) + specifier: ^9.31.0 + version: 9.31.0(jiti@2.4.2) tsc-alias: specifier: ^1.8.16 version: 1.8.16 @@ -688,8 +688,8 @@ packages: resolution: {integrity: sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==} engines: {node: '>=6.9.0'} - '@babel/types@7.28.0': - resolution: {integrity: sha512-jYnje+JyZG5YThjHiF28oT4SIZLnYOcSBb6+SDaFIyzDVSkXQmQQYclJ2R+YxcdmK0AX6x1E5OQNtuh3jHDrUg==} + '@babel/types@7.28.1': + resolution: {integrity: sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==} engines: {node: '>=6.9.0'} '@bcoe/v8-coverage@1.0.2': @@ -1058,21 +1058,21 @@ packages: resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint-react/ast@1.52.2': - resolution: {integrity: sha512-L0Tbbzx5l7JHgkQ1TqPWQuZ4+PsXDcgtt3056FOYqstUrDRG+5ylm7h3gEWu98I3FDdgLS8q9dOzz0PGgwZCTA==} - engines: {bun: '>=1.0.15', node: '>=18.18.0'} + '@eslint-react/ast@1.52.3': + resolution: {integrity: sha512-71afQeBz0t5FqxLPfOgfQy2703t4T4tM5ooF/swIfUljCQxrFvIYivzYU67wrwLSnmkSfFJKp99bUCz7L3IP4Q==} + engines: {node: '>=18.18.0'} - '@eslint-react/core@1.52.2': - resolution: {integrity: sha512-FpxKZJHlf3zXETNL+WQP/SoYuVQNheWm1iDgW68RyHygD8mzk9CnVLDgjMrfmh2n0eaOqnWCL/IC2YzD6VpYOQ==} - engines: {bun: '>=1.0.15', node: '>=18.18.0'} + '@eslint-react/core@1.52.3': + resolution: {integrity: sha512-N/fY3q1V0F81OzKGn0ZopmHY+OQHYQiS49MvpSWhNciL+TDxOo4CSt+wayMz5/9G/B/PwGB68eprjow0AaTYzA==} + engines: {node: '>=18.18.0'} - '@eslint-react/eff@1.52.2': - resolution: {integrity: sha512-YBPE2J1+PfXrR9Ct+9rQsw8uRU06zHopI508cfj0usaIBf3hz18V2GoRTVhsjniP0QbvKQdHzyPmmS/B6uyMZQ==} - engines: {bun: '>=1.0.15', node: '>=18.18.0'} + '@eslint-react/eff@1.52.3': + resolution: {integrity: sha512-CU07yUuHrrBbb8C82via3GrAXkSMbcpxd6f18f/jjEmMAXzKbN2yq1t0GfG7iwIyZexDZ7R3QBa9ksk6iwtDAA==} + engines: {node: '>=18.18.0'} - '@eslint-react/eslint-plugin@1.52.2': - resolution: {integrity: sha512-e93chCIWTM6DiYpcuEpc7qDUP7bF7swG7Giq0J6S38czLJvtw9YeMaC9y1BL5rlFbmAcCybDm9QcRI55h/EuMw==} - engines: {bun: '>=1.0.15', node: '>=18.18.0'} + '@eslint-react/eslint-plugin@1.52.3': + resolution: {integrity: sha512-5hR4BF4m6DRXeBKSlJ7kcFolZdXxA6tf1lyq21UbeM8jUmY/qqMBotMTfhjkUdrhqL8/kGk3HCELpntYZ5n69Q==} + engines: {node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ^4.9.5 || ^5.3.3 @@ -1080,17 +1080,17 @@ packages: typescript: optional: true - '@eslint-react/kit@1.52.2': - resolution: {integrity: sha512-k0cSgFnPlDPI1xyRzHjEWIapLG0zCy7mx1HBLg5wuKf/zzSh3iNFId53xMebR05vM2k9YH63gsvTwRkGx/77Zw==} - engines: {bun: '>=1.0.15', node: '>=18.18.0'} + '@eslint-react/kit@1.52.3': + resolution: {integrity: sha512-IOsfaRSih7VdL9ZDjuqc7kjOlHOQOaK6hkSENK64dUcvcl6YwHk8/JXfV/glHTp3JxXrPSazBrnZKNXk0DzjKg==} + engines: {node: '>=18.18.0'} - '@eslint-react/shared@1.52.2': - resolution: {integrity: sha512-YHysVcCfmBoxt2+6Ao4HdLPUYNSem70gy+0yzOQvlQFSsGhh+uifQ68SSa/2uJBWfNUm9xQlyDsr2raeO4BlgA==} - engines: {bun: '>=1.0.15', node: '>=18.18.0'} + '@eslint-react/shared@1.52.3': + resolution: {integrity: sha512-+0/2SOkNxLKBtYVLx/BCNo5xTn+dxkzP6C63gQ2ehNudMAt3zf2DouD62cHSSbl+eSAgc0zWYg8ssm5ksLN4xw==} + engines: {node: '>=18.18.0'} - '@eslint-react/var@1.52.2': - resolution: {integrity: sha512-/7IYMPsmO0tIYqkqAVnkqB4eXeVBvgBL/a9hcGCO2eUSzslYzQHSzNPhIoPLD9HXng+0CWlT+KupOFIqP9a26A==} - engines: {bun: '>=1.0.15', node: '>=18.18.0'} + '@eslint-react/var@1.52.3': + resolution: {integrity: sha512-i2dfgoH93MHJNXqzS0vYIIpI2e6djIfzdnpMRHUyBYjTHFSPapE7RhcHFrAVPUrd85cUxIPW3pkTKAhkhUhYeA==} + engines: {node: '>=18.18.0'} '@eslint/config-array@0.21.0': resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==} @@ -1100,10 +1100,6 @@ packages: resolution: {integrity: sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.14.0': - resolution: {integrity: sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.15.1': resolution: {integrity: sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1112,8 +1108,8 @@ packages: resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.30.1': - resolution: {integrity: sha512-zXhuECFlyep42KZUhWjfvsmXGX39W8K8LFb8AWXM9gSV9dQB+MrJGLKvW6Zw0Ggnbpw0VHTtrhFXYe3Gym18jg==} + '@eslint/js@9.31.0': + resolution: {integrity: sha512-LOm5OVt7D4qiKCqoiPbA7LWmI+tbw1VbTUowBcUMgQSuM6poJufkFkYDcQpo5KfgD39TnNySV26QjOh7VFpSyw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.6': @@ -1163,8 +1159,8 @@ packages: fumadocs-core: ^14.0.0 || ^15.0.0 react: 18.x.x || 19.x.x - '@hono/node-server@1.15.0': - resolution: {integrity: sha512-MjmK4l5N4dQpZ9OSWN0tCj7ejuc7WvuWMzSKtc89bnknJykAeHxzRigXBTYZk85H6Awrii6RM59iUiUluApu2A==} + '@hono/node-server@1.16.0': + resolution: {integrity: sha512-9LwRb5XOrTFapOABiQjGC50wRVlzUvWZsDHINCnkBniP+Q+LQf4waN0nzk9t+2kqcTsnGnieSmqpHsr6kH2bdw==} engines: {node: '>=18.14.1'} peerDependencies: hono: ^4 @@ -1174,18 +1170,18 @@ packages: peerDependencies: hono: '*' - '@hono/zod-openapi@0.19.9': - resolution: {integrity: sha512-TonPfh8xUdsdzWNMiKOYSG4Wk2DkZIShHZoXkdOSjPmqpnobXpvSQU3w3XmB7N2t12I2NnnoGSHyMj+BXk+1bw==} + '@hono/zod-openapi@0.19.10': + resolution: {integrity: sha512-dpoS6DenvoJyvxtQ7Kd633FRZ/Qf74+4+o9s+zZI8pEqnbjdF/DtxIib08WDpCaWabMEJOL5TXpMgNEZvb7hpA==} engines: {node: '>=16.0.0'} peerDependencies: hono: '>=4.3.6' - zod: 3.* + zod: '>=3.0.0' - '@hono/zod-validator@0.7.0': - resolution: {integrity: sha512-qe2ZE6sHFE98dcUrbYMtS3bAV8hqcCOflykvZga2S7XhmNSZzT+dIz4OuMILsjLHkJw9JMn912/dB7dQOmuPvg==} + '@hono/zod-validator@0.7.1': + resolution: {integrity: sha512-8+vJT1RvezAx5sN7hiZ5Mis0RMuFL77nBEcqQQgT9ufoLkxr+7ll461WlBJQcGoQSY6EGMClVae19v3s/7bbgQ==} peerDependencies: hono: '>=3.9.0' - zod: ^3.25.0 + zod: ^3.25.0 || ^4.0.0 '@hookform/resolvers@5.1.1': resolution: {integrity: sha512-J/NVING3LMAEvexJkyTLjruSm7aOFx7QX21pzkiJfMoNG0wl5aFEjLTl7ay7IQb9EWY6AkrBy7tHL2Alijpdcg==} @@ -1482,6 +1478,9 @@ packages: resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} + '@jridgewell/source-map@0.3.10': + resolution: {integrity: sha512-0pPkgz9dY+bijgistcTTJ5mR+ocqRXLuhXHYdzoMmmoJ2C9S46RCm2GMUbatPEUK9Yjy26IrAy8D/M00lLkv+Q==} + '@jridgewell/sourcemap-codec@1.5.4': resolution: {integrity: sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==} @@ -1594,53 +1593,53 @@ packages: '@neondatabase/serverless@0.10.4': resolution: {integrity: sha512-2nZuh3VUO9voBauuh+IGYRhGU/MskWHt1IuZvHcJw6GLjDgtqj/KViKo7SIrLdGLdot7vFbiRRw+BgEy3wT9HA==} - '@next/env@15.3.5': - resolution: {integrity: sha512-7g06v8BUVtN2njAX/r8gheoVffhiKFVt4nx74Tt6G4Hqw9HCLYQVx/GkH2qHvPtAHZaUNZ0VXAa0pQP6v1wk7g==} + '@next/env@15.4.1': + resolution: {integrity: sha512-DXQwFGAE2VH+f2TJsKepRXpODPU+scf5fDbKOME8MMyeyswe4XwgRdiiIYmBfkXU+2ssliLYznajTrOQdnLR5A==} - '@next/swc-darwin-arm64@15.3.5': - resolution: {integrity: sha512-lM/8tilIsqBq+2nq9kbTW19vfwFve0NR7MxfkuSUbRSgXlMQoJYg+31+++XwKVSXk4uT23G2eF/7BRIKdn8t8w==} + '@next/swc-darwin-arm64@15.4.1': + resolution: {integrity: sha512-L+81yMsiHq82VRXS2RVq6OgDwjvA4kDksGU8hfiDHEXP+ncKIUhUsadAVB+MRIp2FErs/5hpXR0u2eluWPAhig==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@15.3.5': - resolution: {integrity: sha512-WhwegPQJ5IfoUNZUVsI9TRAlKpjGVK0tpJTL6KeiC4cux9774NYE9Wu/iCfIkL/5J8rPAkqZpG7n+EfiAfidXA==} + '@next/swc-darwin-x64@15.4.1': + resolution: {integrity: sha512-jfz1RXu6SzL14lFl05/MNkcN35lTLMJWPbqt7Xaj35+ZWAX342aePIJrN6xBdGeKl6jPXJm0Yqo3Xvh3Gpo3Uw==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@15.3.5': - resolution: {integrity: sha512-LVD6uMOZ7XePg3KWYdGuzuvVboxujGjbcuP2jsPAN3MnLdLoZUXKRc6ixxfs03RH7qBdEHCZjyLP/jBdCJVRJQ==} + '@next/swc-linux-arm64-gnu@15.4.1': + resolution: {integrity: sha512-k0tOFn3dsnkaGfs6iQz8Ms6f1CyQe4GacXF979sL8PNQxjYS1swx9VsOyUQYaPoGV8nAZ7OX8cYaeiXGq9ahPQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@15.3.5': - resolution: {integrity: sha512-k8aVScYZ++BnS2P69ClK7v4nOu702jcF9AIHKu6llhHEtBSmM2zkPGl9yoqbSU/657IIIb0QHpdxEr0iW9z53A==} + '@next/swc-linux-arm64-musl@15.4.1': + resolution: {integrity: sha512-4ogGQ/3qDzbbK3IwV88ltihHFbQVq6Qr+uEapzXHXBH1KsVBZOB50sn6BWHPcFjwSoMX2Tj9eH/fZvQnSIgc3g==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-x64-gnu@15.3.5': - resolution: {integrity: sha512-2xYU0DI9DGN/bAHzVwADid22ba5d/xrbrQlr2U+/Q5WkFUzeL0TDR963BdrtLS/4bMmKZGptLeg6282H/S2i8A==} + '@next/swc-linux-x64-gnu@15.4.1': + resolution: {integrity: sha512-Jj0Rfw3wIgp+eahMz/tOGwlcYYEFjlBPKU7NqoOkTX0LY45i5W0WcDpgiDWSLrN8KFQq/LW7fZq46gxGCiOYlQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@15.3.5': - resolution: {integrity: sha512-TRYIqAGf1KCbuAB0gjhdn5Ytd8fV+wJSM2Nh2is/xEqR8PZHxfQuaiNhoF50XfY90sNpaRMaGhF6E+qjV1b9Tg==} + '@next/swc-linux-x64-musl@15.4.1': + resolution: {integrity: sha512-9WlEZfnw1vFqkWsTMzZDgNL7AUI1aiBHi0S2m8jvycPyCq/fbZjtE/nDkhJRYbSjXbtRHYLDBlmP95kpjEmJbw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-win32-arm64-msvc@15.3.5': - resolution: {integrity: sha512-h04/7iMEUSMY6fDGCvdanKqlO1qYvzNxntZlCzfE8i5P0uqzVQWQquU1TIhlz0VqGQGXLrFDuTJVONpqGqjGKQ==} + '@next/swc-win32-arm64-msvc@15.4.1': + resolution: {integrity: sha512-WodRbZ9g6CQLRZsG3gtrA9w7Qfa9BwDzhFVdlI6sV0OCPq9JrOrJSp9/ioLsezbV8w9RCJ8v55uzJuJ5RgWLZg==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-x64-msvc@15.3.5': - resolution: {integrity: sha512-5fhH6fccXxnX2KhllnGhkYMndhOiLOLEiVGYjP2nizqeGWkN10sA9taATlXwake2E2XMvYZjjz0Uj7T0y+z1yw==} + '@next/swc-win32-x64-msvc@15.4.1': + resolution: {integrity: sha512-y+wTBxelk2xiNofmDOVU7O5WxTHcvOoL3srOM0kxTzKDjQ57kPU0tpnPJ/BWrRnsOwXEv0+3QSbGR7hY4n9LkQ==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -1657,8 +1656,8 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@orama/orama@3.1.10': - resolution: {integrity: sha512-YNou2xlCIgPhMDe1TBEmp1wsAPFCL7Fd11rct7YfXYYiNAVBNL2rWoEydJRDJFVmqgt0l6mzSg35sDQ3i8yfKQ==} + '@orama/orama@3.1.11': + resolution: {integrity: sha512-Szki0cgFiXE5F9RLx2lUyEtJllnuCSQ4B8RLDwIjXkVit6qZjoDAxH+xhJs29MjKLDz0tbPLdKFa6QrQ/qoGGA==} engines: {node: '>= 20.0.0'} '@petamoriken/float16@3.9.2': @@ -1682,8 +1681,8 @@ packages: resolution: {integrity: sha512-YLT9Zo3oNPJoBjBc4q8G2mjU4tqIbf5CEOORbUUr48dCD9q3umJ3IPlVqOqDakPfd2HuwccBaqlGhN4Gmr5OWg==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - '@playwright/test@1.54.0': - resolution: {integrity: sha512-6Mnd5daQmLivaLu5kxUg6FxPtXY4sXsS5SUwKjWNy4ISe4pKraNHoFxcsaTFiNUULbjy0Vlb5HT86QuM0Jy1pQ==} + '@playwright/test@1.54.1': + resolution: {integrity: sha512-FS8hQ12acieG2dYSksmLOF7BNxnVf2afRJdCuM1eMSxj6QTSE6G4InGF7oApGgDb65MX7AwMVlIkpru0yZA4Xw==} engines: {node: '>=18'} hasBin: true @@ -2529,103 +2528,103 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.44.2': - resolution: {integrity: sha512-g0dF8P1e2QYPOj1gu7s/3LVP6kze9A7m6x0BZ9iTdXK8N5c2V7cpBKHV3/9A4Zd8xxavdhK0t4PnqjkqVmUc9Q==} + '@rollup/rollup-android-arm-eabi@4.45.0': + resolution: {integrity: sha512-2o/FgACbji4tW1dzXOqAV15Eu7DdgbKsF2QKcxfG4xbh5iwU7yr5RRP5/U+0asQliSYv5M4o7BevlGIoSL0LXg==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.44.2': - resolution: {integrity: sha512-Yt5MKrOosSbSaAK5Y4J+vSiID57sOvpBNBR6K7xAaQvk3MkcNVV0f9fE20T+41WYN8hDn6SGFlFrKudtx4EoxA==} + '@rollup/rollup-android-arm64@4.45.0': + resolution: {integrity: sha512-PSZ0SvMOjEAxwZeTx32eI/j5xSYtDCRxGu5k9zvzoY77xUNssZM+WV6HYBLROpY5CkXsbQjvz40fBb7WPwDqtQ==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.44.2': - resolution: {integrity: sha512-EsnFot9ZieM35YNA26nhbLTJBHD0jTwWpPwmRVDzjylQT6gkar+zenfb8mHxWpRrbn+WytRRjE0WKsfaxBkVUA==} + '@rollup/rollup-darwin-arm64@4.45.0': + resolution: {integrity: sha512-BA4yPIPssPB2aRAWzmqzQ3y2/KotkLyZukVB7j3psK/U3nVJdceo6qr9pLM2xN6iRP/wKfxEbOb1yrlZH6sYZg==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.44.2': - resolution: {integrity: sha512-dv/t1t1RkCvJdWWxQ2lWOO+b7cMsVw5YFaS04oHpZRWehI1h0fV1gF4wgGCTyQHHjJDfbNpwOi6PXEafRBBezw==} + '@rollup/rollup-darwin-x64@4.45.0': + resolution: {integrity: sha512-Pr2o0lvTwsiG4HCr43Zy9xXrHspyMvsvEw4FwKYqhli4FuLE5FjcZzuQ4cfPe0iUFCvSQG6lACI0xj74FDZKRA==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.44.2': - resolution: {integrity: sha512-W4tt4BLorKND4qeHElxDoim0+BsprFTwb+vriVQnFFtT/P6v/xO5I99xvYnVzKWrK6j7Hb0yp3x7V5LUbaeOMg==} + '@rollup/rollup-freebsd-arm64@4.45.0': + resolution: {integrity: sha512-lYE8LkE5h4a/+6VnnLiL14zWMPnx6wNbDG23GcYFpRW1V9hYWHAw9lBZ6ZUIrOaoK7NliF1sdwYGiVmziUF4vA==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.44.2': - resolution: {integrity: sha512-tdT1PHopokkuBVyHjvYehnIe20fxibxFCEhQP/96MDSOcyjM/shlTkZZLOufV3qO6/FQOSiJTBebhVc12JyPTA==} + '@rollup/rollup-freebsd-x64@4.45.0': + resolution: {integrity: sha512-PVQWZK9sbzpvqC9Q0GlehNNSVHR+4m7+wET+7FgSnKG3ci5nAMgGmr9mGBXzAuE5SvguCKJ6mHL6vq1JaJ/gvw==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.44.2': - resolution: {integrity: sha512-+xmiDGGaSfIIOXMzkhJ++Oa0Gwvl9oXUeIiwarsdRXSe27HUIvjbSIpPxvnNsRebsNdUo7uAiQVgBD1hVriwSQ==} + '@rollup/rollup-linux-arm-gnueabihf@4.45.0': + resolution: {integrity: sha512-hLrmRl53prCcD+YXTfNvXd776HTxNh8wPAMllusQ+amcQmtgo3V5i/nkhPN6FakW+QVLoUUr2AsbtIRPFU3xIA==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.44.2': - resolution: {integrity: sha512-bDHvhzOfORk3wt8yxIra8N4k/N0MnKInCW5OGZaeDYa/hMrdPaJzo7CSkjKZqX4JFUWjUGm88lI6QJLCM7lDrA==} + '@rollup/rollup-linux-arm-musleabihf@4.45.0': + resolution: {integrity: sha512-XBKGSYcrkdiRRjl+8XvrUR3AosXU0NvF7VuqMsm7s5nRy+nt58ZMB19Jdp1RdqewLcaYnpk8zeVs/4MlLZEJxw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.44.2': - resolution: {integrity: sha512-NMsDEsDiYghTbeZWEGnNi4F0hSbGnsuOG+VnNvxkKg0IGDvFh7UVpM/14mnMwxRxUf9AdAVJgHPvKXf6FpMB7A==} + '@rollup/rollup-linux-arm64-gnu@4.45.0': + resolution: {integrity: sha512-fRvZZPUiBz7NztBE/2QnCS5AtqLVhXmUOPj9IHlfGEXkapgImf4W9+FSkL8cWqoAjozyUzqFmSc4zh2ooaeF6g==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.44.2': - resolution: {integrity: sha512-lb5bxXnxXglVq+7imxykIp5xMq+idehfl+wOgiiix0191av84OqbjUED+PRC5OA8eFJYj5xAGcpAZ0pF2MnW+A==} + '@rollup/rollup-linux-arm64-musl@4.45.0': + resolution: {integrity: sha512-Btv2WRZOcUGi8XU80XwIvzTg4U6+l6D0V6sZTrZx214nrwxw5nAi8hysaXj/mctyClWgesyuxbeLylCBNauimg==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.44.2': - resolution: {integrity: sha512-Yl5Rdpf9pIc4GW1PmkUGHdMtbx0fBLE1//SxDmuf3X0dUC57+zMepow2LK0V21661cjXdTn8hO2tXDdAWAqE5g==} + '@rollup/rollup-linux-loongarch64-gnu@4.45.0': + resolution: {integrity: sha512-Li0emNnwtUZdLwHjQPBxn4VWztcrw/h7mgLyHiEI5Z0MhpeFGlzaiBHpSNVOMB/xucjXTTcO+dhv469Djr16KA==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.44.2': - resolution: {integrity: sha512-03vUDH+w55s680YYryyr78jsO1RWU9ocRMaeV2vMniJJW/6HhoTBwyyiiTPVHNWLnhsnwcQ0oH3S9JSBEKuyqw==} + '@rollup/rollup-linux-powerpc64le-gnu@4.45.0': + resolution: {integrity: sha512-sB8+pfkYx2kvpDCfd63d5ScYT0Fz1LO6jIb2zLZvmK9ob2D8DeVqrmBDE0iDK8KlBVmsTNzrjr3G1xV4eUZhSw==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.44.2': - resolution: {integrity: sha512-iYtAqBg5eEMG4dEfVlkqo05xMOk6y/JXIToRca2bAWuqjrJYJlx/I7+Z+4hSrsWU8GdJDFPL4ktV3dy4yBSrzg==} + '@rollup/rollup-linux-riscv64-gnu@4.45.0': + resolution: {integrity: sha512-5GQ6PFhh7E6jQm70p1aW05G2cap5zMOvO0se5JMecHeAdj5ZhWEHbJ4hiKpfi1nnnEdTauDXxPgXae/mqjow9w==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.44.2': - resolution: {integrity: sha512-e6vEbgaaqz2yEHqtkPXa28fFuBGmUJ0N2dOJK8YUfijejInt9gfCSA7YDdJ4nYlv67JfP3+PSWFX4IVw/xRIPg==} + '@rollup/rollup-linux-riscv64-musl@4.45.0': + resolution: {integrity: sha512-N/euLsBd1rekWcuduakTo/dJw6U6sBP3eUq+RXM9RNfPuWTvG2w/WObDkIvJ2KChy6oxZmOSC08Ak2OJA0UiAA==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.44.2': - resolution: {integrity: sha512-evFOtkmVdY3udE+0QKrV5wBx7bKI0iHz5yEVx5WqDJkxp9YQefy4Mpx3RajIVcM6o7jxTvVd/qpC1IXUhGc1Mw==} + '@rollup/rollup-linux-s390x-gnu@4.45.0': + resolution: {integrity: sha512-2l9sA7d7QdikL0xQwNMO3xURBUNEWyHVHfAsHsUdq+E/pgLTUcCE+gih5PCdmyHmfTDeXUWVhqL0WZzg0nua3g==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.44.2': - resolution: {integrity: sha512-/bXb0bEsWMyEkIsUL2Yt5nFB5naLAwyOWMEviQfQY1x3l5WsLKgvZf66TM7UTfED6erckUVUJQ/jJ1FSpm3pRQ==} + '@rollup/rollup-linux-x64-gnu@4.45.0': + resolution: {integrity: sha512-XZdD3fEEQcwG2KrJDdEQu7NrHonPxxaV0/w2HpvINBdcqebz1aL+0vM2WFJq4DeiAVT6F5SUQas65HY5JDqoPw==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.44.2': - resolution: {integrity: sha512-3D3OB1vSSBXmkGEZR27uiMRNiwN08/RVAcBKwhUYPaiZ8bcvdeEwWPvbnXvvXHY+A/7xluzcN+kaiOFNiOZwWg==} + '@rollup/rollup-linux-x64-musl@4.45.0': + resolution: {integrity: sha512-7ayfgvtmmWgKWBkCGg5+xTQ0r5V1owVm67zTrsEY1008L5ro7mCyGYORomARt/OquB9KY7LpxVBZes+oSniAAQ==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.44.2': - resolution: {integrity: sha512-VfU0fsMK+rwdK8mwODqYeM2hDrF2WiHaSmCBrS7gColkQft95/8tphyzv2EupVxn3iE0FI78wzffoULH1G+dkw==} + '@rollup/rollup-win32-arm64-msvc@4.45.0': + resolution: {integrity: sha512-B+IJgcBnE2bm93jEW5kHisqvPITs4ddLOROAcOc/diBgrEiQJJ6Qcjby75rFSmH5eMGrqJryUgJDhrfj942apQ==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.44.2': - resolution: {integrity: sha512-+qMUrkbUurpE6DVRjiJCNGZBGo9xM4Y0FXU5cjgudWqIBWbcLkjE3XprJUsOFgC6xjBClwVa9k6O3A7K3vxb5Q==} + '@rollup/rollup-win32-ia32-msvc@4.45.0': + resolution: {integrity: sha512-+CXwwG66g0/FpWOnP/v1HnrGVSOygK/osUbu3wPRy8ECXjoYKjRAyfxYpDQOfghC5qPJYLPH0oN4MCOjwgdMug==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.44.2': - resolution: {integrity: sha512-3+QZROYfJ25PDcxFF66UEk8jGWigHJeecZILvkPkyQN7oc5BvFo4YEXFkOs154j3FTMp9mn9Ky8RCOwastduEA==} + '@rollup/rollup-win32-x64-msvc@4.45.0': + resolution: {integrity: sha512-SRf1cytG7wqcHVLrBc9VtPK4pU5wxiB/lNIkNmW2ApKXIg+RpqwHfsaEK+e7eH4A1BpI6BX/aBWXxZCIrJg3uA==} cpu: [x64] os: [win32] @@ -2638,29 +2637,29 @@ packages: '@selderee/plugin-htmlparser2@0.11.0': resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==} - '@shikijs/core@3.7.0': - resolution: {integrity: sha512-yilc0S9HvTPyahHpcum8eonYrQtmGTU0lbtwxhA6jHv4Bm1cAdlPFRCJX4AHebkCm75aKTjjRAW+DezqD1b/cg==} + '@shikijs/core@3.8.0': + resolution: {integrity: sha512-gWt8NNZFurL6FMESO4lEsmspDh0H1fyUibhx1NnEH/S3kOXgYiWa6ZFqy+dcjBLhZqCXsepuUaL1QFXk6PrpsQ==} - '@shikijs/engine-javascript@3.7.0': - resolution: {integrity: sha512-0t17s03Cbv+ZcUvv+y33GtX75WBLQELgNdVghnsdhTgU3hVcWcMsoP6Lb0nDTl95ZJfbP1mVMO0p3byVh3uuzA==} + '@shikijs/engine-javascript@3.8.0': + resolution: {integrity: sha512-IBULFFpQ1N5Cg/C7jPCGnjIKz72CcRtD0BIbNhSuXPUOxLG0bF1URsP/uLfxQFQ9ORfunCQwL7UuSX1RSRBwUQ==} - '@shikijs/engine-oniguruma@3.7.0': - resolution: {integrity: sha512-5BxcD6LjVWsGu4xyaBC5bu8LdNgPCVBnAkWTtOCs/CZxcB22L8rcoWfv7Hh/3WooVjBZmFtyxhgvkQFedPGnFw==} + '@shikijs/engine-oniguruma@3.8.0': + resolution: {integrity: sha512-Tx7kR0oFzqa+rY7t80LjN8ZVtHO3a4+33EUnBVx2qYP3fGxoI9H0bvnln5ySelz9SIUTsS0/Qn+9dg5zcUMsUw==} - '@shikijs/langs@3.7.0': - resolution: {integrity: sha512-1zYtdfXLr9xDKLTGy5kb7O0zDQsxXiIsw1iIBcNOO8Yi5/Y1qDbJ+0VsFoqTlzdmneO8Ij35g7QKF8kcLyznCQ==} + '@shikijs/langs@3.8.0': + resolution: {integrity: sha512-mfGYuUgjQ5GgXinB5spjGlBVhG2crKRpKkfADlp8r9k/XvZhtNXxyOToSnCEnF0QNiZnJjlt5MmU9PmhRdwAbg==} - '@shikijs/rehype@3.7.0': - resolution: {integrity: sha512-YjAZxhQnBXE8ehppKGzuVGPoE4pjVsxqzkWhBZlkP495AjlR++MgfiRFcQfDt3qX5lK3gEDTcghB/8E3yNrWqQ==} + '@shikijs/rehype@3.8.0': + resolution: {integrity: sha512-8/VBgBrVdbM7dB2bG5KZe68pD2zL1OUSi4TECztqB/5VqnLKJNXk0J8qGFhjlDwPSMg/Bg+6UsQOWpgD6pzAAg==} - '@shikijs/themes@3.7.0': - resolution: {integrity: sha512-VJx8497iZPy5zLiiCTSIaOChIcKQwR0FebwE9S3rcN0+J/GTWwQ1v/bqhTbpbY3zybPKeO8wdammqkpXc4NVjQ==} + '@shikijs/themes@3.8.0': + resolution: {integrity: sha512-yaZiLuyO23sXe16JFU76KyUMTZCJi4EMQKIrdQt7okoTzI4yAaJhVXT2Uy4k8yBIEFRiia5dtD7gC1t8m6y3oQ==} - '@shikijs/transformers@3.7.0': - resolution: {integrity: sha512-VplaqIMRNsNOorCXJHkbF5S0pT6xm8Z/s7w7OPZLohf8tR93XH0krvUafpNy/ozEylrWuShJF0+ftEB+wFRwGA==} + '@shikijs/transformers@3.8.0': + resolution: {integrity: sha512-EleKVjNH5Me8yhTtnYD5QGFtY7Acu2HJAWNmDjuOC/Egwt7n31p2nbyBhBqGz5cpdwa1wZkLdVgj/LsZ3ReyAQ==} - '@shikijs/types@3.7.0': - resolution: {integrity: sha512-MGaLeaRlSWpnP0XSAum3kP3a8vtcTsITqoEPYdt3lQG3YCdQH4DnEhodkYcNMcU0uW0RffhoD1O3e0vG5eSBBg==} + '@shikijs/types@3.8.0': + resolution: {integrity: sha512-I/b/aNg0rP+kznVDo7s3UK8jMcqEGTtoPDdQ+JlQ2bcJIyu/e2iRvl42GLIDMK03/W1YOHOuhlhQ7aM+XbKUeg==} '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} @@ -2689,68 +2688,68 @@ packages: chokidar: optional: true - '@swc/core-darwin-arm64@1.12.11': - resolution: {integrity: sha512-J19Jj9Y5x/N0loExH7W0OI9OwwoVyxutDdkyq1o/kgXyBqmmzV7Y/Q9QekI2Fm/qc5mNeAdP7aj4boY4AY/JPw==} + '@swc/core-darwin-arm64@1.12.14': + resolution: {integrity: sha512-HNukQoOKgMsHSETj8vgGGKK3SEcH7Cz6k4bpntCxBKNkO3sH7RcBTDulWGGHJfZaDNix7Rw2ExUVWtLZlzkzXg==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.12.11': - resolution: {integrity: sha512-PTuUQrfStQ6cjW+uprGO2lpQHy84/l0v+GqRqq8s/jdK55rFRjMfCeyf6FAR0l6saO5oNOQl+zWR1aNpj8pMQw==} + '@swc/core-darwin-x64@1.12.14': + resolution: {integrity: sha512-4Ttf3Obtk3MvFrR0e04qr6HfXh4L1Z+K3dRej63TAFuYpo+cPXeOZdPUddAW73lSUGkj+61IHnGPoXD3OQYy4Q==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.12.11': - resolution: {integrity: sha512-poxBq152HsupOtnZilenvHmxZ9a8SRj4LtfxUnkMDNOGrZR9oxbQNwEzNKfi3RXEcXz+P8c0Rai1ubBazXv8oQ==} + '@swc/core-linux-arm-gnueabihf@1.12.14': + resolution: {integrity: sha512-zhJOH2KWjtQpzJ27Xjw/RKLVOa1aiEJC2b70xbCwEX6ZTVAl8tKbhkZ3GMphhfVmLJ9gf/2UQR58oxVnsXqX5Q==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.12.11': - resolution: {integrity: sha512-y1HNamR/D0Hc8xIE910ysyLe269UYiGaQPoLjQS0phzWFfWdMj9bHM++oydVXZ4RSWycO7KyJ3uvw4NilvyMKQ==} + '@swc/core-linux-arm64-gnu@1.12.14': + resolution: {integrity: sha512-akUAe1YrBqZf1EDdUxahQ8QZnJi8Ts6Ya0jf6GBIMvnXL4Y6QIuvKTRwfNxy7rJ+x9zpzP1Vlh14ZZkSKZ1EGA==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.12.11': - resolution: {integrity: sha512-LlBxPh/32pyQsu2emMEOFRm7poEFLsw12Y1mPY7FWZiZeptomKSOSHRzKDz9EolMiV4qhK1caP1lvW4vminYgQ==} + '@swc/core-linux-arm64-musl@1.12.14': + resolution: {integrity: sha512-ZkOOIpSMXuPAjfOXEIAEQcrPOgLi6CaXvA5W+GYnpIpFG21Nd0qb0WbwFRv4K8BRtl993Q21v0gPpOaFHU+wdA==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-x64-gnu@1.12.11': - resolution: {integrity: sha512-bOjiZB8O/1AzHkzjge1jqX62HGRIpOHqFUrGPfAln/NC6NR+Z2A78u3ixV7k5KesWZFhCV0YVGJL+qToL27myA==} + '@swc/core-linux-x64-gnu@1.12.14': + resolution: {integrity: sha512-71EPPccwJiJUxd2aMwNlTfom2mqWEWYGdbeTju01tzSHsEuD7E6ePlgC3P3ngBqB3urj41qKs87z7zPOswT5Iw==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.12.11': - resolution: {integrity: sha512-4dzAtbT/m3/UjF045+33gLiHd8aSXJDoqof7gTtu4q0ZyAf7XJ3HHspz+/AvOJLVo4FHHdFcdXhmo/zi1nFn8A==} + '@swc/core-linux-x64-musl@1.12.14': + resolution: {integrity: sha512-nImF1hZJqKTcl0WWjHqlelOhvuB9rU9kHIw/CmISBUZXogjLIvGyop1TtJNz0ULcz2Oxr3Q2YpwfrzsgvgbGkA==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-win32-arm64-msvc@1.12.11': - resolution: {integrity: sha512-h8HiwBZErKvCAmjW92JvQp0iOqm6bncU4ac5jxBGkRApabpUenNJcj3h2g5O6GL5K6T9/WhnXE5gyq/s1fhPQg==} + '@swc/core-win32-arm64-msvc@1.12.14': + resolution: {integrity: sha512-sABFQFxSuStFoxvEWZUHWYldtB1B4A9eDNFd4Ty50q7cemxp7uoscFoaCqfXSGNBwwBwpS5EiPB6YN4y6hqmLQ==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.12.11': - resolution: {integrity: sha512-1pwr325mXRNUhxTtXmx1IokV5SiRL+6iDvnt3FRXj+X5UvXXKtg2zeyftk+03u8v8v8WUr5I32hIypVJPTNxNg==} + '@swc/core-win32-ia32-msvc@1.12.14': + resolution: {integrity: sha512-KBznRB02NASkpepRdWIK4f1AvmaJCDipKWdW1M1xV9QL2tE4aySJFojVuG1+t0tVDkjRfwcZjycQfRoJ4RjD7Q==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.12.11': - resolution: {integrity: sha512-5gggWo690Gvs7XiPxAmb5tHwzB9RTVXUV7AWoGb6bmyUd1OXYaebQF0HAOtade5jIoNhfQMQJ7QReRgt/d2jAA==} + '@swc/core-win32-x64-msvc@1.12.14': + resolution: {integrity: sha512-SymoP2CJHzrYaFKjWvuQljcF7BkTpzaS1vpywv7K9EzdTb5N8qPDvNd+PhWUqBz9JHBhbJxpaeTDQBXF/WWPmw==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.12.11': - resolution: {integrity: sha512-P3GM+0lqjFctcp5HhR9mOcvLSX3SptI9L1aux0Fuvgt8oH4f92rCUrkodAa0U2ktmdjcyIiG37xg2mb/dSCYSA==} + '@swc/core@1.12.14': + resolution: {integrity: sha512-CJSn2vstd17ddWIHBsjuD4OQnn9krQfaq6EO+w9YfId5DKznyPmzxAARlOXG99cC8/3Kli8ysKy6phL43bSr0w==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': '>=0.5.17' @@ -2859,11 +2858,11 @@ packages: '@tailwindcss/postcss@4.1.11': resolution: {integrity: sha512-q/EAIIpF6WpLhKEuQSEVMZNMIY8KhWoAemZ9eylNAih9jxMGAYPPWBn3I9QL/2jZ+e7OEz/tZkX5HwbBR4HohA==} - '@tanstack/query-core@5.82.0': - resolution: {integrity: sha512-JrjoVuaajBQtnoWSg8iaPHaT4mW73lK2t+exxHNOSMqy0+13eKLqJgTKXKImLejQIfdAHQ6Un0njEhOvUtOd5w==} + '@tanstack/query-core@5.83.0': + resolution: {integrity: sha512-0M8dA+amXUkyz5cVUm/B+zSk3xkQAcuXuz5/Q/LveT4ots2rBpPTZOzd7yJa2Utsf8D2Upl5KyjhHRY+9lB/XA==} - '@tanstack/react-query@5.82.0': - resolution: {integrity: sha512-mnk8/ofKEthFeMdhV1dV8YXRf+9HqvXAcciXkoo755d/ocfWq7N/Y9jGOzS3h7ZW9dDGwSIhs3/HANWUBsyqYg==} + '@tanstack/react-query@5.83.0': + resolution: {integrity: sha512-/XGYhZ3foc5H0VM2jLSD/NyBRIOK4q9kfeml4+0x2DlL6xVuAcVEW+hTlTapAmejObg0i3eNqhkr2dT+eciwoQ==} peerDependencies: react: ^18 || ^19 @@ -2946,11 +2945,11 @@ packages: '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - '@types/node@20.19.6': - resolution: {integrity: sha512-uYssdp9z5zH5GQ0L4zEJ2ZuavYsJwkozjiUzCRfGtaaQcyjAMJ34aP8idv61QlqTozu6kudyr6JMq9Chf09dfA==} + '@types/node@20.19.7': + resolution: {integrity: sha512-1GM9z6BJOv86qkPvzh2i6VW5+VVrXxCLknfmTkWEqz+6DqosiY28XUWCTmBcJ0ACzKqx/iwdIREfo1fwExIlkA==} - '@types/node@24.0.12': - resolution: {integrity: sha512-LtOrbvDf5ndC9Xi+4QZjVL0woFymF/xSTKZKPgrrl7H7XoeDvnD+E2IclKVDyaK9UM756W/3BXqSU+JEHopA9g==} + '@types/node@24.0.13': + resolution: {integrity: sha512-Qm9OYVOFHFYg3wJoTSrz80hoec5Lia/dPp84do3X7dZvLikQvM1YpmvTBEdIr/e+U8HTkFjLHLnl78K/qjf+jQ==} '@types/nodemailer@6.4.17': resolution: {integrity: sha512-I9CCaIp6DTldEg7vyUTZi8+9Vo0hi1/T8gv3C89yk1rSAAzoKQ8H8ki/jBYJSFoH/BisgLP8tkZMlQ91CIquww==} @@ -2986,63 +2985,63 @@ packages: '@types/validate-npm-package-name@4.0.2': resolution: {integrity: sha512-lrpDziQipxCEeK5kWxvljWYhUvOiB2A9izZd9B2AFarYAkqZshb4lPbRs7zKEic6eGtH8V/2qJW+dPp9OtF6bw==} - '@typescript-eslint/eslint-plugin@8.36.0': - resolution: {integrity: sha512-lZNihHUVB6ZZiPBNgOQGSxUASI7UJWhT8nHyUGCnaQ28XFCw98IfrMCG3rUl1uwUWoAvodJQby2KTs79UTcrAg==} + '@typescript-eslint/eslint-plugin@8.37.0': + resolution: {integrity: sha512-jsuVWeIkb6ggzB+wPCsR4e6loj+rM72ohW6IBn2C+5NCvfUVY8s33iFPySSVXqtm5Hu29Ne/9bnA0JmyLmgenA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.36.0 + '@typescript-eslint/parser': ^8.37.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/parser@8.36.0': - resolution: {integrity: sha512-FuYgkHwZLuPbZjQHzJXrtXreJdFMKl16BFYyRrLxDhWr6Qr7Kbcu2s1Yhu8tsiMXw1S0W1pjfFfYEt+R604s+Q==} + '@typescript-eslint/parser@8.37.0': + resolution: {integrity: sha512-kVIaQE9vrN9RLCQMQ3iyRlVJpTiDUY6woHGb30JDkfJErqrQEmtdWH3gV0PBAfGZgQXoqzXOO0T3K6ioApbbAA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/project-service@8.36.0': - resolution: {integrity: sha512-JAhQFIABkWccQYeLMrHadu/fhpzmSQ1F1KXkpzqiVxA/iYI6UnRt2trqXHt1sYEcw1mxLnB9rKMsOxXPxowN/g==} + '@typescript-eslint/project-service@8.37.0': + resolution: {integrity: sha512-BIUXYsbkl5A1aJDdYJCBAo8rCEbAvdquQ8AnLb6z5Lp1u3x5PNgSSx9A/zqYc++Xnr/0DVpls8iQ2cJs/izTXA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/scope-manager@8.36.0': - resolution: {integrity: sha512-wCnapIKnDkN62fYtTGv2+RY8FlnBYA3tNm0fm91kc2BjPhV2vIjwwozJ7LToaLAyb1ca8BxrS7vT+Pvvf7RvqA==} + '@typescript-eslint/scope-manager@8.37.0': + resolution: {integrity: sha512-0vGq0yiU1gbjKob2q691ybTg9JX6ShiVXAAfm2jGf3q0hdP6/BruaFjL/ManAR/lj05AvYCH+5bbVo0VtzmjOA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.36.0': - resolution: {integrity: sha512-Nhh3TIEgN18mNbdXpd5Q8mSCBnrZQeY9V7Ca3dqYvNDStNIGRmJA6dmrIPMJ0kow3C7gcQbpsG2rPzy1Ks/AnA==} + '@typescript-eslint/tsconfig-utils@8.37.0': + resolution: {integrity: sha512-1/YHvAVTimMM9mmlPvTec9NP4bobA1RkDbMydxG8omqwJJLEW/Iy2C4adsAESIXU3WGLXFHSZUU+C9EoFWl4Zg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/type-utils@8.36.0': - resolution: {integrity: sha512-5aaGYG8cVDd6cxfk/ynpYzxBRZJk7w/ymto6uiyUFtdCozQIsQWh7M28/6r57Fwkbweng8qAzoMCPwSJfWlmsg==} + '@typescript-eslint/type-utils@8.37.0': + resolution: {integrity: sha512-SPkXWIkVZxhgwSwVq9rqj/4VFo7MnWwVaRNznfQDc/xPYHjXnPfLWn+4L6FF1cAz6e7dsqBeMawgl7QjUMj4Ow==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/types@8.36.0': - resolution: {integrity: sha512-xGms6l5cTJKQPZOKM75Dl9yBfNdGeLRsIyufewnxT4vZTrjC0ImQT4fj8QmtJK84F58uSh5HVBSANwcfiXxABQ==} + '@typescript-eslint/types@8.37.0': + resolution: {integrity: sha512-ax0nv7PUF9NOVPs+lmQ7yIE7IQmAf8LGcXbMvHX5Gm+YJUYNAl340XkGnrimxZ0elXyoQJuN5sbg6C4evKA4SQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.36.0': - resolution: {integrity: sha512-JaS8bDVrfVJX4av0jLpe4ye0BpAaUW7+tnS4Y4ETa3q7NoZgzYbN9zDQTJ8kPb5fQ4n0hliAt9tA4Pfs2zA2Hg==} + '@typescript-eslint/typescript-estree@8.37.0': + resolution: {integrity: sha512-zuWDMDuzMRbQOM+bHyU4/slw27bAUEcKSKKs3hcv2aNnc/tvE/h7w60dwVw8vnal2Pub6RT1T7BI8tFZ1fE+yg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/utils@8.36.0': - resolution: {integrity: sha512-VOqmHu42aEMT+P2qYjylw6zP/3E/HvptRwdn/PZxyV27KhZg2IOszXod4NcXisWzPAGSS4trE/g4moNj6XmH2g==} + '@typescript-eslint/utils@8.37.0': + resolution: {integrity: sha512-TSFvkIW6gGjN2p6zbXo20FzCABbyUAuq6tBvNRGsKdsSQ6a7rnV6ADfZ7f4iI3lIiXc4F4WWvtUfDw9CJ9pO5A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/visitor-keys@8.36.0': - resolution: {integrity: sha512-vZrhV2lRPWDuGoxcmrzRZyxAggPL+qp3WzUrlZD+slFueDiYHxeBa34dUXPuC0RmGKzl4lS5kFJYvKCq9cnNDA==} + '@typescript-eslint/visitor-keys@8.37.0': + resolution: {integrity: sha512-YzfhzcTnZVPiLfP/oeKtDp2evwvHLMe0LOy7oe+hb9KKIumLNohYS9Hgp1ifwpu42YWxhZE8yieggz6JpqO/1w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.3.0': @@ -3341,10 +3340,6 @@ packages: peerDependencies: esbuild: '>=0.18' - busboy@1.6.0: - resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} - engines: {node: '>=10.16.0'} - cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} @@ -3485,6 +3480,9 @@ packages: resolution: {integrity: sha512-2uM9rYjPvyq39NwLRqaiLtWHyDC1FvryJDa2ATTVims5YAS4PupsEQsDvP14FqhFr0P49CYDugi59xaxJlTXRA==} engines: {node: '>=20'} + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + commander@4.1.1: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} @@ -3690,8 +3688,8 @@ packages: resolution: {integrity: sha512-tCPWVZWZqWVx2XUsVpJRnH9Mx0ClVOf5YUHerZ5so1OKSlqww4zy1R5ksEdGRcO3tM3zj0PYN6V48TbQCL1RfA==} hasBin: true - drizzle-orm@0.44.2: - resolution: {integrity: sha512-zGAqBzWWkVSFjZpwPOrmCrgO++1kZ5H/rZ4qTGeGOe18iXGVJWf3WPfHOVwFIbmi8kHjfJstC6rJomzGx8g/dQ==} + drizzle-orm@0.44.3: + resolution: {integrity: sha512-8nIiYQxOpgUicEL04YFojJmvC4DNO4KoyXsEIqN44+g6gNBr6hmVpWk3uyAt4CaTiRGDwoU+alfqNNeonLAFOQ==} peerDependencies: '@aws-sdk/client-rds-data': '>=3' '@cloudflare/workers-types': '>=4' @@ -3789,8 +3787,8 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - electron-to-chromium@1.5.181: - resolution: {integrity: sha512-+ISMj8OIQ+0qEeDj14Rt8WwcTOiqHyAB+5bnK1K7xNNLjBJ4hRCQfUkw8RWtcLbfBzDwc15ZnKH0c7SNOfwiyA==} + electron-to-chromium@1.5.183: + resolution: {integrity: sha512-vCrDBYjQCAEefWGjlK3EpoSKfKbT10pR4XXPdn65q7snuNOZnthoVpBfZPykmDapOKfoD+MMIPG8ZjKyyc9oHA==} emoji-regex@10.4.0: resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} @@ -3934,9 +3932,9 @@ packages: peerDependencies: eslint: '>=7' - eslint-plugin-react-debug@1.52.2: - resolution: {integrity: sha512-9aJoZbC7VPhZ9ByKEg0R1ReDaltLGb9oLMwXL+oxoP4MFYQOL2BKNca+yfe74YZbSCOYidV1nsmCdTEQxh3nhg==} - engines: {bun: '>=1.0.15', node: '>=18.18.0'} + eslint-plugin-react-debug@1.52.3: + resolution: {integrity: sha512-mbyk+K0/NqydAHpTGj/6w8Py8unOpUCqhg42NnxQtFCL9G7pTEiEk2eDjnQAi4Up00THP4nYvjfnuiTf1ZKaIw==} + engines: {node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ^4.9.5 || ^5.3.3 @@ -3944,9 +3942,9 @@ packages: typescript: optional: true - eslint-plugin-react-dom@1.52.2: - resolution: {integrity: sha512-HDwQTwGfJTFAa4x0Bf9NH/TVHULEFjI0/vBNhkZt7JAHFb7v+SrhlXGUIIKfQTPHHJIAQZm8v3yzc5g/NlCokA==} - engines: {bun: '>=1.0.15', node: '>=18.18.0'} + eslint-plugin-react-dom@1.52.3: + resolution: {integrity: sha512-HUMzOYrgRdT6di+OMMJWBCbIB9yY3YUkLvDhExsfap0HX3X1EpZutEWdQg4CMthF2rslYMMF2cnN5pOVrQ5Rkw==} + engines: {node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ^4.9.5 || ^5.3.3 @@ -3954,9 +3952,9 @@ packages: typescript: optional: true - eslint-plugin-react-hooks-extra@1.52.2: - resolution: {integrity: sha512-95vjCeNMGNZGFoBSwrvaAKfCDvHXXbrdiaizlCmD57AYTHALI9CzvEapQP9qjETNzuf5Uta0/kmRI5Ln4v2y6A==} - engines: {bun: '>=1.0.15', node: '>=18.18.0'} + eslint-plugin-react-hooks-extra@1.52.3: + resolution: {integrity: sha512-1UXAhkgbFsMlY+eEII6rLSksRIvnlnNEZxRqUTixNf4e05u5+48RUqqZr7rRdkfVhr+1DPO1sIx8wQGAiN7IoQ==} + engines: {node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ^4.9.5 || ^5.3.3 @@ -3970,9 +3968,9 @@ packages: peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 - eslint-plugin-react-naming-convention@1.52.2: - resolution: {integrity: sha512-Nww0JUC5aq1Wj0ezuPylBfC4w+j3t3pvg0vR0b+OXjMVAttLQJURgXmAzpURJ1dQOrROLtEQGL4lLTeIAEJ3uQ==} - engines: {bun: '>=1.0.15', node: '>=18.18.0'} + eslint-plugin-react-naming-convention@1.52.3: + resolution: {integrity: sha512-sfemWPC9VX5T7TVJk6OKQkTux8pnyVIwBOZbDntWnfCqV6B74MIvY2nGr9TEn8DFVWbMoTxVQY0MGlREcrbZsA==} + engines: {node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ^4.9.5 || ^5.3.3 @@ -3980,9 +3978,9 @@ packages: typescript: optional: true - eslint-plugin-react-web-api@1.52.2: - resolution: {integrity: sha512-EAwSufPNZHWievnCGBRnpE9BcH351dZWTdnuLnDBOmoP5VJnfvaaxgupuFeGSYwM+emzA+0h8qZa/uwjG57TOw==} - engines: {bun: '>=1.0.15', node: '>=18.18.0'} + eslint-plugin-react-web-api@1.52.3: + resolution: {integrity: sha512-Hd05kVsGmSHBZpQsQDueobfLHDywXP6Ne+dPf24Ev3mMKi5XMkLZ/sD+JmJKyNYvkWMwB1Wn4gl1aIz7HneKeQ==} + engines: {node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ^4.9.5 || ^5.3.3 @@ -3990,9 +3988,9 @@ packages: typescript: optional: true - eslint-plugin-react-x@1.52.2: - resolution: {integrity: sha512-Pxpf3YxCUcNgzJVT6blAJ2KvLX32pUxtXndaCZoTdiytFw/H9OZKq4Qczxx/Lpo9Ri5rm4FbIZL3BfL/HGmzBw==} - engines: {bun: '>=1.0.15', node: '>=18.18.0'} + eslint-plugin-react-x@1.52.3: + resolution: {integrity: sha512-Sds4CXHtdgaCdzoypcY3DSshS0JtK2Eh+QbpUAPUqs0UWQ3qtQKxY0nntTSYeF+GXDfOdAYDkl/8+VFpHQwIKg==} + engines: {node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 ts-api-utils: ^2.1.0 @@ -4021,8 +4019,8 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.30.1: - resolution: {integrity: sha512-zmxXPNMOXmwm9E0yQLi5uqXHs7uq2UIiqEKo3Gq+3fwo1XrJ+hijAZImyF7hclW3E6oHz43Yk3RP8at6OTKflQ==} + eslint@9.31.0: + resolution: {integrity: sha512-QldCVh/ztyKJJZLr4jXNUByx3gR+TDYZCRXEktiZoUR3PGy4qCmSbkxcIle8GEwGpb5JBZazlaJ/CxLidXdEbQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -4202,8 +4200,8 @@ packages: resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} engines: {node: '>= 14.17'} - framer-motion@12.23.3: - resolution: {integrity: sha512-llmLkf44zuIZOPSrE4bl4J0UTg6bav+rlKEfMRKgvDMXqBrUtMg6cspoQeRVK3nqRLxTmAJhfGXk39UDdZD7Kw==} + framer-motion@12.23.5: + resolution: {integrity: sha512-t+6/f2TUowkr1gVuGwVwxR3ZQupCdCZj0mivG8M8CW2kwHPqtSePomECvmto15qoFCwost77O/XuEsq59MLDKw==} peerDependencies: '@emotion/is-prop-valid': '*' react: ^18.0.0 || ^19.0.0 @@ -4249,8 +4247,8 @@ packages: react-dom: optional: true - fumadocs-mdx@11.6.10: - resolution: {integrity: sha512-W13mGPKDviKHq1FdxJqbBmA8vQ0niEISUUREJU8u3q1g5lQgnZ9whZjTnvijnqiGNbBsjb8CmjU20OlmwG6nhA==} + fumadocs-mdx@11.6.11: + resolution: {integrity: sha512-8KPOMU53ujQtNWvmmBpyGb9BRdFXZKS0m0O6udSlXCoLU/VZlQSJE0ntxX1e5JCDVsxPR63jleCVq1c/WXmEVw==} hasBin: true peerDependencies: '@fumadocs/mdx-remote': ^1.2.0 @@ -4436,8 +4434,8 @@ packages: hermes-parser@0.25.1: resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==} - hono@4.8.4: - resolution: {integrity: sha512-KOIBp1+iUs0HrKztM4EHiB2UtzZDTBihDtOF5K6+WaJjCPeaW4Q92R8j63jOhvJI5+tZSMuKD9REVEXXY9illg==} + hono@4.8.5: + resolution: {integrity: sha512-Up2cQbtNz1s111qpnnECdTGqSIUIhZJMLikdKkshebQSEBcoUKq6XJayLGqSZWidiH0zfHRCJqFu062Mz5UuRA==} engines: {node: '>=16.9.0'} html-encoding-sniffer@4.0.0: @@ -5209,14 +5207,14 @@ packages: mlly@1.7.4: resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} - motion-dom@12.23.2: - resolution: {integrity: sha512-73j6xDHX/NvVh5L5oS1ouAVnshsvmApOq4F3VZo5MkYSD/YVsVLal4Qp9wvVgJM9uU2bLZyc0Sn8B9c/MMKk4g==} + motion-dom@12.23.5: + resolution: {integrity: sha512-RrUS4X11w7kIU1COoSVptuYTx1QQ/sViDEI1Yl1zL0nem8UXn3HRcsMrFTCkZSSRLXeVpN540bFP1iS87SicPQ==} motion-utils@12.23.2: resolution: {integrity: sha512-cIEXlBlXAOUyiAtR0S+QPQUM9L3Diz23Bo+zM420NvSd/oPQJwg6U+rT+WRTpp0rizMsBGQOsAwhWIfglUcZfA==} - motion@12.23.3: - resolution: {integrity: sha512-7N0Q4c+Xms+wuq2o27rPONLYNOhQUsLRpMi8CcVxv9FFJhGAqRNjJ1hrBCxHh+Rx6B2W2WPbCOLQc+QJ3rw6Rw==} + motion@12.23.5: + resolution: {integrity: sha512-FpabXbpG816YVOIoOpd0BNOCmOXOLwHMbX4Am4OpDs7VqbAfQvejM+CnTA6TuMKLdmX7h1FxG7bXaDGQiceHCg==} peerDependencies: '@emotion/is-prop-valid': '*' react: ^18.0.0 || ^19.0.0 @@ -5289,13 +5287,13 @@ packages: react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc - next@15.3.5: - resolution: {integrity: sha512-RkazLBMMDJSJ4XZQ81kolSpwiCt907l0xcgcpF4xC2Vml6QVcPNXW0NQRwQ80FFtSn7UM52XN0anaw8TEJXaiw==} + next@15.4.1: + resolution: {integrity: sha512-eNKB1q8C7o9zXF8+jgJs2CzSLIU3T6bQtX6DcTnCq1sIR1CJ0GlSyRs1BubQi3/JgCnr9Vr+rS5mOMI38FFyQw==} engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 - '@playwright/test': ^1.41.2 + '@playwright/test': ^1.51.1 babel-plugin-react-compiler: '*' react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 @@ -5539,13 +5537,13 @@ packages: pkg-types@2.2.0: resolution: {integrity: sha512-2SM/GZGAEkPp3KWORxQZns4M+WSeXbC2HEvmOIJe3Cmiv6ieAJvdVhDldtHqM5J1Y7MrR1XhkBT/rMlhh9FdqQ==} - playwright-core@1.54.0: - resolution: {integrity: sha512-uiWpWaJh3R3etpJ0QrpligEMl62Dk1iSAB6NUXylvmQz+e3eipXHDHvOvydDAssb5Oqo0E818qdn0L9GcJSTyA==} + playwright-core@1.54.1: + resolution: {integrity: sha512-Nbjs2zjj0htNhzgiy5wu+3w09YetDx5pkrpI/kZotDlDUaYk0HVA5xrBVPdow4SAUIlhgKcJeJg4GRKW6xHusA==} engines: {node: '>=18'} hasBin: true - playwright@1.54.0: - resolution: {integrity: sha512-y9yzHmXRwEUOpghM7XGcA38GjWuTOUMaTIcm/5rHcYVjh5MSp9qQMRRMc/+p1cx+csoPnX4wkxAF61v5VKirxg==} + playwright@1.54.1: + resolution: {integrity: sha512-peWpSwIBmSLi6aW2auvrUtf2DqY16YYcCMO8rTVx486jKmDTJg7UAhyrraP98GB8BoPURZP8+nxO7TSd4cPr5g==} engines: {node: '>=18'} hasBin: true @@ -5766,8 +5764,8 @@ packages: peerDependencies: react: ^19.1.0 - react-email@4.1.1: - resolution: {integrity: sha512-KQVQYF4gixDKz3QCVTVxRhckYng/WOKyVJcwIS7PRX/oc9y4htmvw2GfjF4fxFPoPGPeK1mHP4lZS7Ter2izQw==} + react-email@4.1.3: + resolution: {integrity: sha512-bLiJm20NvgFgOz03o6nCW/4wvJQTnhIY1fI2/qyPCa6V7MGe1RuvSGyrMtaEMJm8yyOu0ylJDX5Dlrcv6xihSQ==} engines: {node: '>=18.0.0'} hasBin: true @@ -5961,8 +5959,8 @@ packages: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rollup@4.44.2: - resolution: {integrity: sha512-PVoapzTwSEcelaWGth3uR66u7ZRo6qhPHc0f2uRO9fX6XDVNrIiGYS0Pj9+R8yIIYSD/mCx2b16Ws9itljKSPg==} + rollup@4.45.0: + resolution: {integrity: sha512-WLjEcJRIo7i3WDDgOIJqVI2d+lAC3EwvOGy+Xfq6hs+GQuAA4Di/H72xmXkOhrIWFg2PFYSKZYfH0f4vfKXN4A==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -6076,8 +6074,8 @@ packages: resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} engines: {node: '>= 0.4'} - shiki@3.7.0: - resolution: {integrity: sha512-ZcI4UT9n6N2pDuM2n3Jbk0sR4Swzq43nLPgS/4h0E3B/NrFn2HKElrDtceSf8Zx/OWYOo7G1SAtBLypCp+YXqg==} + shiki@3.8.0: + resolution: {integrity: sha512-yPqK0y68t20aakv+3aMTpUMJZd6UHaBY2/SBUDowh9M70gVUwqT0bf7Kz5CWG0AXfHtFvXCHhBBHVAzdp0ILoQ==} side-channel-list@1.0.0: resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} @@ -6199,10 +6197,6 @@ packages: resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} engines: {node: '>= 0.4'} - streamsearch@1.1.0: - resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} - engines: {node: '>=10.0.0'} - streamx@2.22.1: resolution: {integrity: sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==} @@ -6351,6 +6345,11 @@ packages: resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} engines: {node: '>=18'} + terser@5.43.1: + resolution: {integrity: sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==} + engines: {node: '>=10'} + hasBin: true + test-exclude@7.0.1: resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} engines: {node: '>=18'} @@ -6567,8 +6566,8 @@ packages: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} - typescript-eslint@8.36.0: - resolution: {integrity: sha512-fTCqxthY+h9QbEgSIBfL9iV6CvKDFuoxg6bHPNpJ9HIUzS+jy2lCEyCmGyZRWEBSaykqcDPf1SJ+BfCI8DRopA==} + typescript-eslint@8.37.0: + resolution: {integrity: sha512-TnbEjzkE9EmcO0Q2zM+GE8NQLItNAJpMmED1BdgoBMYNdqMhzlbqfdSwiRlAzEK2pA9UzVW0gzaaIzXWg2BjfA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -6964,15 +6963,18 @@ packages: resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==} engines: {node: '>=18'} - zod-validation-error@3.5.2: - resolution: {integrity: sha512-mdi7YOLtram5dzJ5aDtm1AG9+mxRma1iaMrZdYIpFO7epdKBUwLHIxTF8CPDeCQ828zAXYtizrKlEJAtzgfgrw==} + zod-validation-error@3.5.3: + resolution: {integrity: sha512-OT5Y8lbUadqVZCsnyFaTQ4/O2mys4tj7PqhdbBCp7McPwvIEKfPtdA6QfPeFQK2/Rz5LgwmAXRJTugBNBi0btw==} engines: {node: '>=18.0.0'} peerDependencies: - zod: ^3.25.0 + zod: ^3.25.0 || ^4.0.0 zod@3.25.76: resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} + zod@4.0.5: + resolution: {integrity: sha512-/5UuuRPStvHXu7RS+gmvRf4NXrNxpSllGwDnCBcJZtQsKrviYXm54yDGV2KYNLT5kq0lHGcl7lqWJLgSaG+tgA==} + zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} @@ -7020,7 +7022,7 @@ snapshots: '@babel/parser': 7.28.0 '@babel/template': 7.27.2 '@babel/traverse': 7.28.0 - '@babel/types': 7.28.0 + '@babel/types': 7.28.1 convert-source-map: 2.0.0 debug: 4.4.1 gensync: 1.0.0-beta.2 @@ -7032,14 +7034,14 @@ snapshots: '@babel/generator@7.28.0': dependencies: '@babel/parser': 7.28.0 - '@babel/types': 7.28.0 + '@babel/types': 7.28.1 '@jridgewell/gen-mapping': 0.3.12 '@jridgewell/trace-mapping': 0.3.29 jsesc: 3.1.0 '@babel/helper-annotate-as-pure@7.27.3': dependencies: - '@babel/types': 7.28.0 + '@babel/types': 7.28.1 '@babel/helper-compilation-targets@7.27.2': dependencies: @@ -7067,14 +7069,14 @@ snapshots: '@babel/helper-member-expression-to-functions@7.27.1': dependencies: '@babel/traverse': 7.28.0 - '@babel/types': 7.28.0 + '@babel/types': 7.28.1 transitivePeerDependencies: - supports-color '@babel/helper-module-imports@7.27.1': dependencies: '@babel/traverse': 7.28.0 - '@babel/types': 7.28.0 + '@babel/types': 7.28.1 transitivePeerDependencies: - supports-color @@ -7089,7 +7091,7 @@ snapshots: '@babel/helper-optimise-call-expression@7.27.1': dependencies: - '@babel/types': 7.28.0 + '@babel/types': 7.28.1 '@babel/helper-plugin-utils@7.27.1': {} @@ -7105,7 +7107,7 @@ snapshots: '@babel/helper-skip-transparent-expression-wrappers@7.27.1': dependencies: '@babel/traverse': 7.28.0 - '@babel/types': 7.28.0 + '@babel/types': 7.28.1 transitivePeerDependencies: - supports-color @@ -7118,11 +7120,11 @@ snapshots: '@babel/helpers@7.27.6': dependencies: '@babel/template': 7.27.2 - '@babel/types': 7.28.0 + '@babel/types': 7.28.1 '@babel/parser@7.28.0': dependencies: - '@babel/types': 7.28.0 + '@babel/types': 7.28.1 '@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.28.0)': dependencies: @@ -7156,7 +7158,7 @@ snapshots: dependencies: '@babel/code-frame': 7.27.1 '@babel/parser': 7.28.0 - '@babel/types': 7.28.0 + '@babel/types': 7.28.1 '@babel/traverse@7.28.0': dependencies: @@ -7165,12 +7167,12 @@ snapshots: '@babel/helper-globals': 7.28.0 '@babel/parser': 7.28.0 '@babel/template': 7.27.2 - '@babel/types': 7.28.0 + '@babel/types': 7.28.1 debug: 4.4.1 transitivePeerDependencies: - supports-color - '@babel/types@7.28.0': + '@babel/types@7.28.1': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 @@ -7387,19 +7389,19 @@ snapshots: '@esbuild/win32-x64@0.25.6': optional: true - '@eslint-community/eslint-utils@4.7.0(eslint@9.30.1(jiti@2.4.2))': + '@eslint-community/eslint-utils@4.7.0(eslint@9.31.0(jiti@2.4.2))': dependencies: - eslint: 9.30.1(jiti@2.4.2) + eslint: 9.31.0(jiti@2.4.2) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} - '@eslint-react/ast@1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)': + '@eslint-react/ast@1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: - '@eslint-react/eff': 1.52.2 - '@typescript-eslint/types': 8.36.0 - '@typescript-eslint/typescript-estree': 8.36.0(typescript@5.8.3) - '@typescript-eslint/utils': 8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/eff': 1.52.3 + '@typescript-eslint/types': 8.37.0 + '@typescript-eslint/typescript-estree': 8.37.0(typescript@5.8.3) + '@typescript-eslint/utils': 8.37.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) string-ts: 2.2.1 ts-pattern: 5.7.1 transitivePeerDependencies: @@ -7407,17 +7409,17 @@ snapshots: - supports-color - typescript - '@eslint-react/core@1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)': - dependencies: - '@eslint-react/ast': 1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@eslint-react/eff': 1.52.2 - '@eslint-react/kit': 1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@eslint-react/shared': 1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@eslint-react/var': 1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/scope-manager': 8.36.0 - '@typescript-eslint/type-utils': 8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/types': 8.36.0 - '@typescript-eslint/utils': 8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/core@1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@eslint-react/ast': 1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/eff': 1.52.3 + '@eslint-react/kit': 1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/shared': 1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/var': 1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.37.0 + '@typescript-eslint/type-utils': 8.37.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/types': 8.37.0 + '@typescript-eslint/utils': 8.37.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) birecord: 0.1.1 ts-pattern: 5.7.1 transitivePeerDependencies: @@ -7425,60 +7427,60 @@ snapshots: - supports-color - typescript - '@eslint-react/eff@1.52.2': {} - - '@eslint-react/eslint-plugin@1.52.2(eslint@9.30.1(jiti@2.4.2))(ts-api-utils@2.1.0(typescript@5.8.3))(typescript@5.8.3)': - dependencies: - '@eslint-react/eff': 1.52.2 - '@eslint-react/kit': 1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@eslint-react/shared': 1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/scope-manager': 8.36.0 - '@typescript-eslint/type-utils': 8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/types': 8.36.0 - '@typescript-eslint/utils': 8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - eslint: 9.30.1(jiti@2.4.2) - eslint-plugin-react-debug: 1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - eslint-plugin-react-dom: 1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - eslint-plugin-react-hooks-extra: 1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - eslint-plugin-react-naming-convention: 1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - eslint-plugin-react-web-api: 1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - eslint-plugin-react-x: 1.52.2(eslint@9.30.1(jiti@2.4.2))(ts-api-utils@2.1.0(typescript@5.8.3))(typescript@5.8.3) + '@eslint-react/eff@1.52.3': {} + + '@eslint-react/eslint-plugin@1.52.3(eslint@9.31.0(jiti@2.4.2))(ts-api-utils@2.1.0(typescript@5.8.3))(typescript@5.8.3)': + dependencies: + '@eslint-react/eff': 1.52.3 + '@eslint-react/kit': 1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/shared': 1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.37.0 + '@typescript-eslint/type-utils': 8.37.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/types': 8.37.0 + '@typescript-eslint/utils': 8.37.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.31.0(jiti@2.4.2) + eslint-plugin-react-debug: 1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + eslint-plugin-react-dom: 1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + eslint-plugin-react-hooks-extra: 1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + eslint-plugin-react-naming-convention: 1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + eslint-plugin-react-web-api: 1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + eslint-plugin-react-x: 1.52.3(eslint@9.31.0(jiti@2.4.2))(ts-api-utils@2.1.0(typescript@5.8.3))(typescript@5.8.3) optionalDependencies: typescript: 5.8.3 transitivePeerDependencies: - supports-color - ts-api-utils - '@eslint-react/kit@1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)': + '@eslint-react/kit@1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: - '@eslint-react/eff': 1.52.2 - '@typescript-eslint/utils': 8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/eff': 1.52.3 + '@typescript-eslint/utils': 8.37.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) ts-pattern: 5.7.1 - zod: 3.25.76 + zod: 4.0.5 transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint-react/shared@1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)': + '@eslint-react/shared@1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: - '@eslint-react/eff': 1.52.2 - '@eslint-react/kit': 1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/utils': 8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/eff': 1.52.3 + '@eslint-react/kit': 1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.37.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) ts-pattern: 5.7.1 - zod: 3.25.76 + zod: 4.0.5 transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint-react/var@1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)': + '@eslint-react/var@1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: - '@eslint-react/ast': 1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@eslint-react/eff': 1.52.2 - '@typescript-eslint/scope-manager': 8.36.0 - '@typescript-eslint/types': 8.36.0 - '@typescript-eslint/utils': 8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/ast': 1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/eff': 1.52.3 + '@typescript-eslint/scope-manager': 8.37.0 + '@typescript-eslint/types': 8.37.0 + '@typescript-eslint/utils': 8.37.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) string-ts: 2.2.1 ts-pattern: 5.7.1 transitivePeerDependencies: @@ -7496,10 +7498,6 @@ snapshots: '@eslint/config-helpers@0.3.0': {} - '@eslint/core@0.14.0': - dependencies: - '@types/json-schema': 7.0.15 - '@eslint/core@0.15.1': dependencies: '@types/json-schema': 7.0.15 @@ -7518,7 +7516,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.30.1': {} + '@eslint/js@9.31.0': {} '@eslint/object-schema@2.1.6': {} @@ -7574,10 +7572,10 @@ snapshots: dependencies: tslib: 2.8.1 - '@fumadocs/mdx-remote@1.3.0(acorn@8.15.0)(fumadocs-core@15.6.3(@types/react@19.1.8)(next@15.3.5(@playwright/test@1.54.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)': + '@fumadocs/mdx-remote@1.3.0(acorn@8.15.0)(fumadocs-core@15.6.3(@types/react@19.1.8)(next@15.4.1(@playwright/test@1.54.1)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)': dependencies: '@mdx-js/mdx': 3.1.0(acorn@8.15.0) - fumadocs-core: 15.6.3(@types/react@19.1.8)(next@15.3.5(@playwright/test@1.54.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + fumadocs-core: 15.6.3(@types/react@19.1.8)(next@15.4.1(@playwright/test@1.54.1)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) gray-matter: 4.0.3 react: 19.1.0 zod: 3.25.76 @@ -7586,25 +7584,25 @@ snapshots: - supports-color optional: true - '@hono/node-server@1.15.0(hono@4.8.4)': + '@hono/node-server@1.16.0(hono@4.8.5)': dependencies: - hono: 4.8.4 + hono: 4.8.5 - '@hono/swagger-ui@0.5.2(hono@4.8.4)': + '@hono/swagger-ui@0.5.2(hono@4.8.5)': dependencies: - hono: 4.8.4 + hono: 4.8.5 - '@hono/zod-openapi@0.19.9(hono@4.8.4)(zod@3.25.76)': + '@hono/zod-openapi@0.19.10(hono@4.8.5)(zod@3.25.76)': dependencies: '@asteasolutions/zod-to-openapi': 7.3.4(zod@3.25.76) - '@hono/zod-validator': 0.7.0(hono@4.8.4)(zod@3.25.76) - hono: 4.8.4 + '@hono/zod-validator': 0.7.1(hono@4.8.5)(zod@3.25.76) + hono: 4.8.5 openapi3-ts: 4.5.0 zod: 3.25.76 - '@hono/zod-validator@0.7.0(hono@4.8.4)(zod@3.25.76)': + '@hono/zod-validator@0.7.1(hono@4.8.5)(zod@3.25.76)': dependencies: - hono: 4.8.4 + hono: 4.8.5 zod: 3.25.76 '@hookform/resolvers@5.1.1(react-hook-form@7.60.0(react@19.1.0))': @@ -7711,27 +7709,27 @@ snapshots: '@img/sharp-win32-x64@0.34.3': optional: true - '@inquirer/checkbox@4.1.9(@types/node@24.0.12)': + '@inquirer/checkbox@4.1.9(@types/node@24.0.13)': dependencies: - '@inquirer/core': 10.1.14(@types/node@24.0.12) + '@inquirer/core': 10.1.14(@types/node@24.0.13) '@inquirer/figures': 1.0.12 - '@inquirer/type': 3.0.7(@types/node@24.0.12) + '@inquirer/type': 3.0.7(@types/node@24.0.13) ansi-escapes: 4.3.2 yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 24.0.12 + '@types/node': 24.0.13 - '@inquirer/confirm@5.1.13(@types/node@24.0.12)': + '@inquirer/confirm@5.1.13(@types/node@24.0.13)': dependencies: - '@inquirer/core': 10.1.14(@types/node@24.0.12) - '@inquirer/type': 3.0.7(@types/node@24.0.12) + '@inquirer/core': 10.1.14(@types/node@24.0.13) + '@inquirer/type': 3.0.7(@types/node@24.0.13) optionalDependencies: - '@types/node': 24.0.12 + '@types/node': 24.0.13 - '@inquirer/core@10.1.14(@types/node@24.0.12)': + '@inquirer/core@10.1.14(@types/node@24.0.13)': dependencies: '@inquirer/figures': 1.0.12 - '@inquirer/type': 3.0.7(@types/node@24.0.12) + '@inquirer/type': 3.0.7(@types/node@24.0.13) ansi-escapes: 4.3.2 cli-width: 4.1.0 mute-stream: 2.0.0 @@ -7739,93 +7737,93 @@ snapshots: wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 24.0.12 + '@types/node': 24.0.13 - '@inquirer/editor@4.2.14(@types/node@24.0.12)': + '@inquirer/editor@4.2.14(@types/node@24.0.13)': dependencies: - '@inquirer/core': 10.1.14(@types/node@24.0.12) - '@inquirer/type': 3.0.7(@types/node@24.0.12) + '@inquirer/core': 10.1.14(@types/node@24.0.13) + '@inquirer/type': 3.0.7(@types/node@24.0.13) external-editor: 3.1.0 optionalDependencies: - '@types/node': 24.0.12 + '@types/node': 24.0.13 - '@inquirer/expand@4.0.16(@types/node@24.0.12)': + '@inquirer/expand@4.0.16(@types/node@24.0.13)': dependencies: - '@inquirer/core': 10.1.14(@types/node@24.0.12) - '@inquirer/type': 3.0.7(@types/node@24.0.12) + '@inquirer/core': 10.1.14(@types/node@24.0.13) + '@inquirer/type': 3.0.7(@types/node@24.0.13) yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 24.0.12 + '@types/node': 24.0.13 '@inquirer/figures@1.0.12': {} - '@inquirer/input@4.2.0(@types/node@24.0.12)': + '@inquirer/input@4.2.0(@types/node@24.0.13)': dependencies: - '@inquirer/core': 10.1.14(@types/node@24.0.12) - '@inquirer/type': 3.0.7(@types/node@24.0.12) + '@inquirer/core': 10.1.14(@types/node@24.0.13) + '@inquirer/type': 3.0.7(@types/node@24.0.13) optionalDependencies: - '@types/node': 24.0.12 + '@types/node': 24.0.13 - '@inquirer/number@3.0.16(@types/node@24.0.12)': + '@inquirer/number@3.0.16(@types/node@24.0.13)': dependencies: - '@inquirer/core': 10.1.14(@types/node@24.0.12) - '@inquirer/type': 3.0.7(@types/node@24.0.12) + '@inquirer/core': 10.1.14(@types/node@24.0.13) + '@inquirer/type': 3.0.7(@types/node@24.0.13) optionalDependencies: - '@types/node': 24.0.12 + '@types/node': 24.0.13 - '@inquirer/password@4.0.16(@types/node@24.0.12)': + '@inquirer/password@4.0.16(@types/node@24.0.13)': dependencies: - '@inquirer/core': 10.1.14(@types/node@24.0.12) - '@inquirer/type': 3.0.7(@types/node@24.0.12) + '@inquirer/core': 10.1.14(@types/node@24.0.13) + '@inquirer/type': 3.0.7(@types/node@24.0.13) ansi-escapes: 4.3.2 optionalDependencies: - '@types/node': 24.0.12 + '@types/node': 24.0.13 - '@inquirer/prompts@7.6.0(@types/node@24.0.12)': + '@inquirer/prompts@7.6.0(@types/node@24.0.13)': dependencies: - '@inquirer/checkbox': 4.1.9(@types/node@24.0.12) - '@inquirer/confirm': 5.1.13(@types/node@24.0.12) - '@inquirer/editor': 4.2.14(@types/node@24.0.12) - '@inquirer/expand': 4.0.16(@types/node@24.0.12) - '@inquirer/input': 4.2.0(@types/node@24.0.12) - '@inquirer/number': 3.0.16(@types/node@24.0.12) - '@inquirer/password': 4.0.16(@types/node@24.0.12) - '@inquirer/rawlist': 4.1.4(@types/node@24.0.12) - '@inquirer/search': 3.0.16(@types/node@24.0.12) - '@inquirer/select': 4.2.4(@types/node@24.0.12) + '@inquirer/checkbox': 4.1.9(@types/node@24.0.13) + '@inquirer/confirm': 5.1.13(@types/node@24.0.13) + '@inquirer/editor': 4.2.14(@types/node@24.0.13) + '@inquirer/expand': 4.0.16(@types/node@24.0.13) + '@inquirer/input': 4.2.0(@types/node@24.0.13) + '@inquirer/number': 3.0.16(@types/node@24.0.13) + '@inquirer/password': 4.0.16(@types/node@24.0.13) + '@inquirer/rawlist': 4.1.4(@types/node@24.0.13) + '@inquirer/search': 3.0.16(@types/node@24.0.13) + '@inquirer/select': 4.2.4(@types/node@24.0.13) optionalDependencies: - '@types/node': 24.0.12 + '@types/node': 24.0.13 - '@inquirer/rawlist@4.1.4(@types/node@24.0.12)': + '@inquirer/rawlist@4.1.4(@types/node@24.0.13)': dependencies: - '@inquirer/core': 10.1.14(@types/node@24.0.12) - '@inquirer/type': 3.0.7(@types/node@24.0.12) + '@inquirer/core': 10.1.14(@types/node@24.0.13) + '@inquirer/type': 3.0.7(@types/node@24.0.13) yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 24.0.12 + '@types/node': 24.0.13 - '@inquirer/search@3.0.16(@types/node@24.0.12)': + '@inquirer/search@3.0.16(@types/node@24.0.13)': dependencies: - '@inquirer/core': 10.1.14(@types/node@24.0.12) + '@inquirer/core': 10.1.14(@types/node@24.0.13) '@inquirer/figures': 1.0.12 - '@inquirer/type': 3.0.7(@types/node@24.0.12) + '@inquirer/type': 3.0.7(@types/node@24.0.13) yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 24.0.12 + '@types/node': 24.0.13 - '@inquirer/select@4.2.4(@types/node@24.0.12)': + '@inquirer/select@4.2.4(@types/node@24.0.13)': dependencies: - '@inquirer/core': 10.1.14(@types/node@24.0.12) + '@inquirer/core': 10.1.14(@types/node@24.0.13) '@inquirer/figures': 1.0.12 - '@inquirer/type': 3.0.7(@types/node@24.0.12) + '@inquirer/type': 3.0.7(@types/node@24.0.13) ansi-escapes: 4.3.2 yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 24.0.12 + '@types/node': 24.0.13 - '@inquirer/type@3.0.7(@types/node@24.0.12)': + '@inquirer/type@3.0.7(@types/node@24.0.13)': optionalDependencies: - '@types/node': 24.0.12 + '@types/node': 24.0.13 '@isaacs/balanced-match@4.0.1': {} @@ -7855,6 +7853,12 @@ snapshots: '@jridgewell/resolve-uri@3.1.2': {} + '@jridgewell/source-map@0.3.10': + dependencies: + '@jridgewell/gen-mapping': 0.3.12 + '@jridgewell/trace-mapping': 0.3.29 + optional: true + '@jridgewell/sourcemap-codec@1.5.4': {} '@jridgewell/trace-mapping@0.3.29': @@ -7965,30 +7969,30 @@ snapshots: '@types/pg': 8.11.6 optional: true - '@next/env@15.3.5': {} + '@next/env@15.4.1': {} - '@next/swc-darwin-arm64@15.3.5': + '@next/swc-darwin-arm64@15.4.1': optional: true - '@next/swc-darwin-x64@15.3.5': + '@next/swc-darwin-x64@15.4.1': optional: true - '@next/swc-linux-arm64-gnu@15.3.5': + '@next/swc-linux-arm64-gnu@15.4.1': optional: true - '@next/swc-linux-arm64-musl@15.3.5': + '@next/swc-linux-arm64-musl@15.4.1': optional: true - '@next/swc-linux-x64-gnu@15.3.5': + '@next/swc-linux-x64-gnu@15.4.1': optional: true - '@next/swc-linux-x64-musl@15.3.5': + '@next/swc-linux-x64-musl@15.4.1': optional: true - '@next/swc-win32-arm64-msvc@15.3.5': + '@next/swc-win32-arm64-msvc@15.4.1': optional: true - '@next/swc-win32-x64-msvc@15.3.5': + '@next/swc-win32-x64-msvc@15.4.1': optional: true '@nodelib/fs.scandir@2.1.5': @@ -8003,7 +8007,7 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.19.1 - '@orama/orama@3.1.10': {} + '@orama/orama@3.1.11': {} '@petamoriken/float16@3.9.2': optional: true @@ -8021,9 +8025,9 @@ snapshots: '@pkgr/core@0.2.7': {} - '@playwright/test@1.54.0': + '@playwright/test@1.54.1': dependencies: - playwright: 1.54.0 + playwright: 1.54.1 '@preact/signals-core@1.11.0': {} @@ -8901,72 +8905,72 @@ snapshots: '@rolldown/pluginutils@1.0.0-beta.19': {} - '@rollup/pluginutils@5.2.0(rollup@4.44.2)': + '@rollup/pluginutils@5.2.0(rollup@4.45.0)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.2 optionalDependencies: - rollup: 4.44.2 + rollup: 4.45.0 - '@rollup/rollup-android-arm-eabi@4.44.2': + '@rollup/rollup-android-arm-eabi@4.45.0': optional: true - '@rollup/rollup-android-arm64@4.44.2': + '@rollup/rollup-android-arm64@4.45.0': optional: true - '@rollup/rollup-darwin-arm64@4.44.2': + '@rollup/rollup-darwin-arm64@4.45.0': optional: true - '@rollup/rollup-darwin-x64@4.44.2': + '@rollup/rollup-darwin-x64@4.45.0': optional: true - '@rollup/rollup-freebsd-arm64@4.44.2': + '@rollup/rollup-freebsd-arm64@4.45.0': optional: true - '@rollup/rollup-freebsd-x64@4.44.2': + '@rollup/rollup-freebsd-x64@4.45.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.44.2': + '@rollup/rollup-linux-arm-gnueabihf@4.45.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.44.2': + '@rollup/rollup-linux-arm-musleabihf@4.45.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.44.2': + '@rollup/rollup-linux-arm64-gnu@4.45.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.44.2': + '@rollup/rollup-linux-arm64-musl@4.45.0': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.44.2': + '@rollup/rollup-linux-loongarch64-gnu@4.45.0': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.44.2': + '@rollup/rollup-linux-powerpc64le-gnu@4.45.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.44.2': + '@rollup/rollup-linux-riscv64-gnu@4.45.0': optional: true - '@rollup/rollup-linux-riscv64-musl@4.44.2': + '@rollup/rollup-linux-riscv64-musl@4.45.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.44.2': + '@rollup/rollup-linux-s390x-gnu@4.45.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.44.2': + '@rollup/rollup-linux-x64-gnu@4.45.0': optional: true - '@rollup/rollup-linux-x64-musl@4.44.2': + '@rollup/rollup-linux-x64-musl@4.45.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.44.2': + '@rollup/rollup-win32-arm64-msvc@4.45.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.44.2': + '@rollup/rollup-win32-ia32-msvc@4.45.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.44.2': + '@rollup/rollup-win32-x64-msvc@4.45.0': optional: true '@schummar/icu-type-parser@1.21.5': {} @@ -8978,47 +8982,47 @@ snapshots: domhandler: 5.0.3 selderee: 0.11.0 - '@shikijs/core@3.7.0': + '@shikijs/core@3.8.0': dependencies: - '@shikijs/types': 3.7.0 + '@shikijs/types': 3.8.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 hast-util-to-html: 9.0.5 - '@shikijs/engine-javascript@3.7.0': + '@shikijs/engine-javascript@3.8.0': dependencies: - '@shikijs/types': 3.7.0 + '@shikijs/types': 3.8.0 '@shikijs/vscode-textmate': 10.0.2 oniguruma-to-es: 4.3.3 - '@shikijs/engine-oniguruma@3.7.0': + '@shikijs/engine-oniguruma@3.8.0': dependencies: - '@shikijs/types': 3.7.0 + '@shikijs/types': 3.8.0 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/langs@3.7.0': + '@shikijs/langs@3.8.0': dependencies: - '@shikijs/types': 3.7.0 + '@shikijs/types': 3.8.0 - '@shikijs/rehype@3.7.0': + '@shikijs/rehype@3.8.0': dependencies: - '@shikijs/types': 3.7.0 + '@shikijs/types': 3.8.0 '@types/hast': 3.0.4 hast-util-to-string: 3.0.1 - shiki: 3.7.0 + shiki: 3.8.0 unified: 11.0.5 unist-util-visit: 5.0.0 - '@shikijs/themes@3.7.0': + '@shikijs/themes@3.8.0': dependencies: - '@shikijs/types': 3.7.0 + '@shikijs/types': 3.8.0 - '@shikijs/transformers@3.7.0': + '@shikijs/transformers@3.8.0': dependencies: - '@shikijs/core': 3.7.0 - '@shikijs/types': 3.7.0 + '@shikijs/core': 3.8.0 + '@shikijs/types': 3.8.0 - '@shikijs/types@3.7.0': + '@shikijs/types@3.8.0': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -9033,9 +9037,9 @@ snapshots: '@standard-schema/utils@0.3.0': {} - '@swc/cli@0.6.0(@swc/core@1.12.11)(chokidar@4.0.3)': + '@swc/cli@0.6.0(@swc/core@1.12.14)(chokidar@4.0.3)': dependencies: - '@swc/core': 1.12.11 + '@swc/core': 1.12.14 '@swc/counter': 0.1.3 '@xhmikosr/bin-wrapper': 13.0.5 commander: 8.3.0 @@ -9048,51 +9052,51 @@ snapshots: optionalDependencies: chokidar: 4.0.3 - '@swc/core-darwin-arm64@1.12.11': + '@swc/core-darwin-arm64@1.12.14': optional: true - '@swc/core-darwin-x64@1.12.11': + '@swc/core-darwin-x64@1.12.14': optional: true - '@swc/core-linux-arm-gnueabihf@1.12.11': + '@swc/core-linux-arm-gnueabihf@1.12.14': optional: true - '@swc/core-linux-arm64-gnu@1.12.11': + '@swc/core-linux-arm64-gnu@1.12.14': optional: true - '@swc/core-linux-arm64-musl@1.12.11': + '@swc/core-linux-arm64-musl@1.12.14': optional: true - '@swc/core-linux-x64-gnu@1.12.11': + '@swc/core-linux-x64-gnu@1.12.14': optional: true - '@swc/core-linux-x64-musl@1.12.11': + '@swc/core-linux-x64-musl@1.12.14': optional: true - '@swc/core-win32-arm64-msvc@1.12.11': + '@swc/core-win32-arm64-msvc@1.12.14': optional: true - '@swc/core-win32-ia32-msvc@1.12.11': + '@swc/core-win32-ia32-msvc@1.12.14': optional: true - '@swc/core-win32-x64-msvc@1.12.11': + '@swc/core-win32-x64-msvc@1.12.14': optional: true - '@swc/core@1.12.11': + '@swc/core@1.12.14': dependencies: '@swc/counter': 0.1.3 '@swc/types': 0.1.23 optionalDependencies: - '@swc/core-darwin-arm64': 1.12.11 - '@swc/core-darwin-x64': 1.12.11 - '@swc/core-linux-arm-gnueabihf': 1.12.11 - '@swc/core-linux-arm64-gnu': 1.12.11 - '@swc/core-linux-arm64-musl': 1.12.11 - '@swc/core-linux-x64-gnu': 1.12.11 - '@swc/core-linux-x64-musl': 1.12.11 - '@swc/core-win32-arm64-msvc': 1.12.11 - '@swc/core-win32-ia32-msvc': 1.12.11 - '@swc/core-win32-x64-msvc': 1.12.11 + '@swc/core-darwin-arm64': 1.12.14 + '@swc/core-darwin-x64': 1.12.14 + '@swc/core-linux-arm-gnueabihf': 1.12.14 + '@swc/core-linux-arm64-gnu': 1.12.14 + '@swc/core-linux-arm64-musl': 1.12.14 + '@swc/core-linux-x64-gnu': 1.12.14 + '@swc/core-linux-x64-musl': 1.12.14 + '@swc/core-win32-arm64-msvc': 1.12.14 + '@swc/core-win32-ia32-msvc': 1.12.14 + '@swc/core-win32-x64-msvc': 1.12.14 '@swc/counter@0.1.3': {} @@ -9180,11 +9184,11 @@ snapshots: postcss: 8.5.6 tailwindcss: 4.1.11 - '@tanstack/query-core@5.82.0': {} + '@tanstack/query-core@5.83.0': {} - '@tanstack/react-query@5.82.0(react@19.1.0)': + '@tanstack/react-query@5.83.0(react@19.1.0)': dependencies: - '@tanstack/query-core': 5.82.0 + '@tanstack/query-core': 5.83.0 react: 19.1.0 '@testing-library/dom@10.4.0': @@ -9215,23 +9219,23 @@ snapshots: '@types/babel__core@7.20.5': dependencies: '@babel/parser': 7.28.0 - '@babel/types': 7.28.0 + '@babel/types': 7.28.1 '@types/babel__generator': 7.27.0 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.7 '@types/babel__generator@7.27.0': dependencies: - '@babel/types': 7.28.0 + '@babel/types': 7.28.1 '@types/babel__template@7.4.4': dependencies: '@babel/parser': 7.28.0 - '@babel/types': 7.28.0 + '@babel/types': 7.28.1 '@types/babel__traverse@7.20.7': dependencies: - '@babel/types': 7.28.0 + '@babel/types': 7.28.1 '@types/chai@5.2.2': dependencies: @@ -9239,7 +9243,7 @@ snapshots: '@types/cors@2.8.19': dependencies: - '@types/node': 24.0.12 + '@types/node': 24.0.13 '@types/debug@4.1.12': dependencies: @@ -9277,35 +9281,35 @@ snapshots: '@types/ms@2.1.0': {} - '@types/node@20.19.6': + '@types/node@20.19.7': dependencies: undici-types: 6.21.0 - '@types/node@24.0.12': + '@types/node@24.0.13': dependencies: undici-types: 7.8.0 '@types/nodemailer@6.4.17': dependencies: - '@types/node': 24.0.12 + '@types/node': 24.0.13 '@types/pg@8.11.10': dependencies: - '@types/node': 24.0.12 + '@types/node': 24.0.13 pg-protocol: 1.10.3 pg-types: 4.0.2 optional: true '@types/pg@8.11.6': dependencies: - '@types/node': 24.0.12 + '@types/node': 24.0.13 pg-protocol: 1.10.3 pg-types: 4.0.2 optional: true '@types/prompts@2.4.9': dependencies: - '@types/node': 24.0.12 + '@types/node': 24.0.13 kleur: 3.0.3 '@types/react-dom@19.1.6(@types/react@19.1.8)': @@ -9326,15 +9330,15 @@ snapshots: '@types/validate-npm-package-name@4.0.2': {} - '@typescript-eslint/eslint-plugin@8.36.0(@typescript-eslint/parser@8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@8.37.0(@typescript-eslint/parser@8.37.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/scope-manager': 8.36.0 - '@typescript-eslint/type-utils': 8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/utils': 8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.36.0 - eslint: 9.30.1(jiti@2.4.2) + '@typescript-eslint/parser': 8.37.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.37.0 + '@typescript-eslint/type-utils': 8.37.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.37.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.37.0 + eslint: 9.31.0(jiti@2.4.2) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -9343,55 +9347,56 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/parser@8.37.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: - '@typescript-eslint/scope-manager': 8.36.0 - '@typescript-eslint/types': 8.36.0 - '@typescript-eslint/typescript-estree': 8.36.0(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.36.0 + '@typescript-eslint/scope-manager': 8.37.0 + '@typescript-eslint/types': 8.37.0 + '@typescript-eslint/typescript-estree': 8.37.0(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.37.0 debug: 4.4.1 - eslint: 9.30.1(jiti@2.4.2) + eslint: 9.31.0(jiti@2.4.2) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.36.0(typescript@5.8.3)': + '@typescript-eslint/project-service@8.37.0(typescript@5.8.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.36.0(typescript@5.8.3) - '@typescript-eslint/types': 8.36.0 + '@typescript-eslint/tsconfig-utils': 8.37.0(typescript@5.8.3) + '@typescript-eslint/types': 8.37.0 debug: 4.4.1 typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.36.0': + '@typescript-eslint/scope-manager@8.37.0': dependencies: - '@typescript-eslint/types': 8.36.0 - '@typescript-eslint/visitor-keys': 8.36.0 + '@typescript-eslint/types': 8.37.0 + '@typescript-eslint/visitor-keys': 8.37.0 - '@typescript-eslint/tsconfig-utils@8.36.0(typescript@5.8.3)': + '@typescript-eslint/tsconfig-utils@8.37.0(typescript@5.8.3)': dependencies: typescript: 5.8.3 - '@typescript-eslint/type-utils@8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/type-utils@8.37.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.36.0(typescript@5.8.3) - '@typescript-eslint/utils': 8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/types': 8.37.0 + '@typescript-eslint/typescript-estree': 8.37.0(typescript@5.8.3) + '@typescript-eslint/utils': 8.37.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) debug: 4.4.1 - eslint: 9.30.1(jiti@2.4.2) + eslint: 9.31.0(jiti@2.4.2) ts-api-utils: 2.1.0(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.36.0': {} + '@typescript-eslint/types@8.37.0': {} - '@typescript-eslint/typescript-estree@8.36.0(typescript@5.8.3)': + '@typescript-eslint/typescript-estree@8.37.0(typescript@5.8.3)': dependencies: - '@typescript-eslint/project-service': 8.36.0(typescript@5.8.3) - '@typescript-eslint/tsconfig-utils': 8.36.0(typescript@5.8.3) - '@typescript-eslint/types': 8.36.0 - '@typescript-eslint/visitor-keys': 8.36.0 + '@typescript-eslint/project-service': 8.37.0(typescript@5.8.3) + '@typescript-eslint/tsconfig-utils': 8.37.0(typescript@5.8.3) + '@typescript-eslint/types': 8.37.0 + '@typescript-eslint/visitor-keys': 8.37.0 debug: 4.4.1 fast-glob: 3.3.3 is-glob: 4.0.3 @@ -9402,25 +9407,25 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/utils@8.37.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.30.1(jiti@2.4.2)) - '@typescript-eslint/scope-manager': 8.36.0 - '@typescript-eslint/types': 8.36.0 - '@typescript-eslint/typescript-estree': 8.36.0(typescript@5.8.3) - eslint: 9.30.1(jiti@2.4.2) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.31.0(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.37.0 + '@typescript-eslint/types': 8.37.0 + '@typescript-eslint/typescript-estree': 8.37.0(typescript@5.8.3) + eslint: 9.31.0(jiti@2.4.2) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.36.0': + '@typescript-eslint/visitor-keys@8.37.0': dependencies: - '@typescript-eslint/types': 8.36.0 + '@typescript-eslint/types': 8.37.0 eslint-visitor-keys: 4.2.1 '@ungap/structured-clone@1.3.0': {} - '@vitejs/plugin-react@4.6.0(vite@7.0.4(@types/node@24.0.12)(jiti@2.4.2)(lightningcss@1.30.1)(tsx@4.20.3)(yaml@2.8.0))': + '@vitejs/plugin-react@4.6.0(vite@7.0.4(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0))': dependencies: '@babel/core': 7.28.0 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.0) @@ -9428,11 +9433,11 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.19 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 7.0.4(@types/node@24.0.12)(jiti@2.4.2)(lightningcss@1.30.1)(tsx@4.20.3)(yaml@2.8.0) + vite: 7.0.4(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0) transitivePeerDependencies: - supports-color - '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.0.12)(jiti@2.4.2)(jsdom@26.1.0)(lightningcss@1.30.1)(tsx@4.20.3)(yaml@2.8.0))': + '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.0.13)(jiti@2.4.2)(jsdom@26.1.0)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 @@ -9447,7 +9452,7 @@ snapshots: std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.0.12)(jiti@2.4.2)(jsdom@26.1.0)(lightningcss@1.30.1)(tsx@4.20.3)(yaml@2.8.0) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.0.13)(jiti@2.4.2)(jsdom@26.1.0)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0) transitivePeerDependencies: - supports-color @@ -9459,13 +9464,13 @@ snapshots: chai: 5.2.1 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@7.0.4(@types/node@24.0.12)(jiti@2.4.2)(lightningcss@1.30.1)(tsx@4.20.3)(yaml@2.8.0))': + '@vitest/mocker@3.2.4(vite@7.0.4(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 7.0.4(@types/node@24.0.12)(jiti@2.4.2)(lightningcss@1.30.1)(tsx@4.20.3)(yaml@2.8.0) + vite: 7.0.4(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0) '@vitest/pretty-format@3.2.4': dependencies: @@ -9710,7 +9715,7 @@ snapshots: babel-plugin-react-compiler@19.1.0-rc.2: dependencies: - '@babel/types': 7.28.0 + '@babel/types': 7.28.1 bail@2.0.2: {} @@ -9761,7 +9766,7 @@ snapshots: browserslist@4.25.1: dependencies: caniuse-lite: 1.0.30001727 - electron-to-chromium: 1.5.181 + electron-to-chromium: 1.5.183 node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.25.1) @@ -9779,10 +9784,6 @@ snapshots: esbuild: 0.25.6 load-tsconfig: 0.2.5 - busboy@1.6.0: - dependencies: - streamsearch: 1.1.0 - cac@6.7.14: {} cacheable-lookup@7.0.0: {} @@ -9929,6 +9930,9 @@ snapshots: commander@14.0.0: {} + commander@2.20.3: + optional: true + commander@4.1.1: {} commander@6.2.1: {} @@ -10116,7 +10120,7 @@ snapshots: transitivePeerDependencies: - supports-color - drizzle-orm@0.44.2(@neondatabase/serverless@0.10.4)(@types/pg@8.11.10)(gel@2.1.0)(pg@8.13.1)(postgres@3.4.7): + drizzle-orm@0.44.3(@neondatabase/serverless@0.10.4)(@types/pg@8.11.10)(gel@2.1.0)(pg@8.13.1)(postgres@3.4.7): optionalDependencies: '@neondatabase/serverless': 0.10.4 '@types/pg': 8.11.10 @@ -10132,7 +10136,7 @@ snapshots: eastasianwidth@0.2.0: {} - electron-to-chromium@1.5.181: {} + electron-to-chromium@1.5.183: {} emoji-regex@10.4.0: {} @@ -10145,7 +10149,7 @@ snapshots: engine.io@6.6.4: dependencies: '@types/cors': 2.8.19 - '@types/node': 24.0.12 + '@types/node': 24.0.13 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -10358,11 +10362,11 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-config-prettier@10.1.5(eslint@9.30.1(jiti@2.4.2)): + eslint-config-prettier@10.1.5(eslint@9.31.0(jiti@2.4.2)): dependencies: - eslint: 9.30.1(jiti@2.4.2) + eslint: 9.31.0(jiti@2.4.2) - eslint-plugin-jsx-a11y@6.10.2(eslint@9.30.1(jiti@2.4.2)): + eslint-plugin-jsx-a11y@6.10.2(eslint@9.31.0(jiti@2.4.2)): dependencies: aria-query: 5.3.2 array-includes: 3.1.9 @@ -10372,7 +10376,7 @@ snapshots: axobject-query: 4.1.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 9.30.1(jiti@2.4.2) + eslint: 9.31.0(jiti@2.4.2) hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 @@ -10381,51 +10385,51 @@ snapshots: safe-regex-test: 1.1.0 string.prototype.includes: 2.0.1 - eslint-plugin-perfectionist@4.15.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3): + eslint-plugin-perfectionist@4.15.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3): dependencies: - '@typescript-eslint/types': 8.36.0 - '@typescript-eslint/utils': 8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - eslint: 9.30.1(jiti@2.4.2) + '@typescript-eslint/types': 8.37.0 + '@typescript-eslint/utils': 8.37.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.31.0(jiti@2.4.2) natural-orderby: 5.0.0 transitivePeerDependencies: - supports-color - typescript - eslint-plugin-prettier@5.5.1(@types/eslint@9.6.1)(eslint-config-prettier@10.1.5(eslint@9.30.1(jiti@2.4.2)))(eslint@9.30.1(jiti@2.4.2))(prettier@3.6.2): + eslint-plugin-prettier@5.5.1(@types/eslint@9.6.1)(eslint-config-prettier@10.1.5(eslint@9.31.0(jiti@2.4.2)))(eslint@9.31.0(jiti@2.4.2))(prettier@3.6.2): dependencies: - eslint: 9.30.1(jiti@2.4.2) + eslint: 9.31.0(jiti@2.4.2) prettier: 3.6.2 prettier-linter-helpers: 1.0.0 synckit: 0.11.8 optionalDependencies: '@types/eslint': 9.6.1 - eslint-config-prettier: 10.1.5(eslint@9.30.1(jiti@2.4.2)) + eslint-config-prettier: 10.1.5(eslint@9.31.0(jiti@2.4.2)) - eslint-plugin-react-compiler@19.1.0-rc.2(eslint@9.30.1(jiti@2.4.2)): + eslint-plugin-react-compiler@19.1.0-rc.2(eslint@9.31.0(jiti@2.4.2)): dependencies: '@babel/core': 7.28.0 '@babel/parser': 7.28.0 '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.28.0) - eslint: 9.30.1(jiti@2.4.2) + eslint: 9.31.0(jiti@2.4.2) hermes-parser: 0.25.1 zod: 3.25.76 - zod-validation-error: 3.5.2(zod@3.25.76) + zod-validation-error: 3.5.3(zod@3.25.76) transitivePeerDependencies: - supports-color - eslint-plugin-react-debug@1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3): - dependencies: - '@eslint-react/ast': 1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@eslint-react/core': 1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@eslint-react/eff': 1.52.2 - '@eslint-react/kit': 1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@eslint-react/shared': 1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@eslint-react/var': 1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/scope-manager': 8.36.0 - '@typescript-eslint/type-utils': 8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/types': 8.36.0 - '@typescript-eslint/utils': 8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - eslint: 9.30.1(jiti@2.4.2) + eslint-plugin-react-debug@1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3): + dependencies: + '@eslint-react/ast': 1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/core': 1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/eff': 1.52.3 + '@eslint-react/kit': 1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/shared': 1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/var': 1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.37.0 + '@typescript-eslint/type-utils': 8.37.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/types': 8.37.0 + '@typescript-eslint/utils': 8.37.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.31.0(jiti@2.4.2) string-ts: 2.2.1 ts-pattern: 5.7.1 optionalDependencies: @@ -10433,19 +10437,19 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-react-dom@1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3): - dependencies: - '@eslint-react/ast': 1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@eslint-react/core': 1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@eslint-react/eff': 1.52.2 - '@eslint-react/kit': 1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@eslint-react/shared': 1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@eslint-react/var': 1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/scope-manager': 8.36.0 - '@typescript-eslint/types': 8.36.0 - '@typescript-eslint/utils': 8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) + eslint-plugin-react-dom@1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3): + dependencies: + '@eslint-react/ast': 1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/core': 1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/eff': 1.52.3 + '@eslint-react/kit': 1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/shared': 1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/var': 1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.37.0 + '@typescript-eslint/types': 8.37.0 + '@typescript-eslint/utils': 8.37.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) compare-versions: 6.1.1 - eslint: 9.30.1(jiti@2.4.2) + eslint: 9.31.0(jiti@2.4.2) string-ts: 2.2.1 ts-pattern: 5.7.1 optionalDependencies: @@ -10453,19 +10457,19 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-react-hooks-extra@1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3): - dependencies: - '@eslint-react/ast': 1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@eslint-react/core': 1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@eslint-react/eff': 1.52.2 - '@eslint-react/kit': 1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@eslint-react/shared': 1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@eslint-react/var': 1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/scope-manager': 8.36.0 - '@typescript-eslint/type-utils': 8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/types': 8.36.0 - '@typescript-eslint/utils': 8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - eslint: 9.30.1(jiti@2.4.2) + eslint-plugin-react-hooks-extra@1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3): + dependencies: + '@eslint-react/ast': 1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/core': 1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/eff': 1.52.3 + '@eslint-react/kit': 1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/shared': 1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/var': 1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.37.0 + '@typescript-eslint/type-utils': 8.37.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/types': 8.37.0 + '@typescript-eslint/utils': 8.37.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.31.0(jiti@2.4.2) string-ts: 2.2.1 ts-pattern: 5.7.1 optionalDependencies: @@ -10473,31 +10477,31 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-react-hooks@6.0.0-rc1(eslint@9.30.1(jiti@2.4.2)): + eslint-plugin-react-hooks@6.0.0-rc1(eslint@9.31.0(jiti@2.4.2)): dependencies: '@babel/core': 7.28.0 '@babel/parser': 7.28.0 '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.0) - eslint: 9.30.1(jiti@2.4.2) + eslint: 9.31.0(jiti@2.4.2) hermes-parser: 0.25.1 zod: 3.25.76 - zod-validation-error: 3.5.2(zod@3.25.76) + zod-validation-error: 3.5.3(zod@3.25.76) transitivePeerDependencies: - supports-color - eslint-plugin-react-naming-convention@1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3): - dependencies: - '@eslint-react/ast': 1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@eslint-react/core': 1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@eslint-react/eff': 1.52.2 - '@eslint-react/kit': 1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@eslint-react/shared': 1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@eslint-react/var': 1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/scope-manager': 8.36.0 - '@typescript-eslint/type-utils': 8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/types': 8.36.0 - '@typescript-eslint/utils': 8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - eslint: 9.30.1(jiti@2.4.2) + eslint-plugin-react-naming-convention@1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3): + dependencies: + '@eslint-react/ast': 1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/core': 1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/eff': 1.52.3 + '@eslint-react/kit': 1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/shared': 1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/var': 1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.37.0 + '@typescript-eslint/type-utils': 8.37.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/types': 8.37.0 + '@typescript-eslint/utils': 8.37.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.31.0(jiti@2.4.2) string-ts: 2.2.1 ts-pattern: 5.7.1 optionalDependencies: @@ -10505,18 +10509,18 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-react-web-api@1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3): - dependencies: - '@eslint-react/ast': 1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@eslint-react/core': 1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@eslint-react/eff': 1.52.2 - '@eslint-react/kit': 1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@eslint-react/shared': 1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@eslint-react/var': 1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/scope-manager': 8.36.0 - '@typescript-eslint/types': 8.36.0 - '@typescript-eslint/utils': 8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - eslint: 9.30.1(jiti@2.4.2) + eslint-plugin-react-web-api@1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3): + dependencies: + '@eslint-react/ast': 1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/core': 1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/eff': 1.52.3 + '@eslint-react/kit': 1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/shared': 1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/var': 1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.37.0 + '@typescript-eslint/types': 8.37.0 + '@typescript-eslint/utils': 8.37.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.31.0(jiti@2.4.2) string-ts: 2.2.1 ts-pattern: 5.7.1 optionalDependencies: @@ -10524,21 +10528,21 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-react-x@1.52.2(eslint@9.30.1(jiti@2.4.2))(ts-api-utils@2.1.0(typescript@5.8.3))(typescript@5.8.3): - dependencies: - '@eslint-react/ast': 1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@eslint-react/core': 1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@eslint-react/eff': 1.52.2 - '@eslint-react/kit': 1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@eslint-react/shared': 1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@eslint-react/var': 1.52.2(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/scope-manager': 8.36.0 - '@typescript-eslint/type-utils': 8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/types': 8.36.0 - '@typescript-eslint/utils': 8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) + eslint-plugin-react-x@1.52.3(eslint@9.31.0(jiti@2.4.2))(ts-api-utils@2.1.0(typescript@5.8.3))(typescript@5.8.3): + dependencies: + '@eslint-react/ast': 1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/core': 1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/eff': 1.52.3 + '@eslint-react/kit': 1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/shared': 1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint-react/var': 1.52.3(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.37.0 + '@typescript-eslint/type-utils': 8.37.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/types': 8.37.0 + '@typescript-eslint/utils': 8.37.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) compare-versions: 6.1.1 - eslint: 9.30.1(jiti@2.4.2) - is-immutable-type: 5.0.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.31.0(jiti@2.4.2) + is-immutable-type: 5.0.1(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) string-ts: 2.2.1 ts-pattern: 5.7.1 optionalDependencies: @@ -10547,7 +10551,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-react@7.37.5(eslint@9.30.1(jiti@2.4.2)): + eslint-plugin-react@7.37.5(eslint@9.31.0(jiti@2.4.2)): dependencies: array-includes: 3.1.9 array.prototype.findlast: 1.2.5 @@ -10555,7 +10559,7 @@ snapshots: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.2.1 - eslint: 9.30.1(jiti@2.4.2) + eslint: 9.31.0(jiti@2.4.2) estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -10578,15 +10582,15 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.30.1(jiti@2.4.2): + eslint@9.31.0(jiti@2.4.2): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.30.1(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.31.0(jiti@2.4.2)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.21.0 '@eslint/config-helpers': 0.3.0 - '@eslint/core': 0.14.0 + '@eslint/core': 0.15.1 '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.30.1 + '@eslint/js': 9.31.0 '@eslint/plugin-kit': 0.3.3 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 @@ -10784,7 +10788,7 @@ snapshots: dependencies: magic-string: 0.30.17 mlly: 1.7.4 - rollup: 4.44.2 + rollup: 4.45.0 flat-cache@4.0.1: dependencies: @@ -10804,9 +10808,9 @@ snapshots: form-data-encoder@2.1.4: {} - framer-motion@12.23.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + framer-motion@12.23.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0): dependencies: - motion-dom: 12.23.2 + motion-dom: 12.23.5 motion-utils: 12.23.2 tslib: 2.8.1 optionalDependencies: @@ -10819,12 +10823,12 @@ snapshots: fsevents@2.3.3: optional: true - fumadocs-core@15.6.3(@types/react@19.1.8)(next@15.3.5(@playwright/test@1.54.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + fumadocs-core@15.6.3(@types/react@19.1.8)(next@15.4.1(@playwright/test@1.54.1)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0): dependencies: '@formatjs/intl-localematcher': 0.6.1 - '@orama/orama': 3.1.10 - '@shikijs/rehype': 3.7.0 - '@shikijs/transformers': 3.7.0 + '@orama/orama': 3.1.11 + '@shikijs/rehype': 3.8.0 + '@shikijs/transformers': 3.8.0 github-slugger: 2.0.0 hast-util-to-estree: 3.1.3 hast-util-to-jsx-runtime: 2.3.6 @@ -10836,40 +10840,40 @@ snapshots: remark-gfm: 4.0.1 remark-rehype: 11.1.2 scroll-into-view-if-needed: 3.1.0 - shiki: 3.7.0 + shiki: 3.8.0 unist-util-visit: 5.0.0 optionalDependencies: '@types/react': 19.1.8 - next: 15.3.5(@playwright/test@1.54.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + next: 15.4.1(@playwright/test@1.54.1)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) transitivePeerDependencies: - supports-color - fumadocs-mdx@11.6.10(@fumadocs/mdx-remote@1.3.0(acorn@8.15.0)(fumadocs-core@15.6.3(@types/react@19.1.8)(next@15.3.5(@playwright/test@1.54.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0))(acorn@8.15.0)(fumadocs-core@15.6.3(@types/react@19.1.8)(next@15.3.5(@playwright/test@1.54.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(next@15.3.5(@playwright/test@1.54.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@6.3.5(@types/node@24.0.12)(jiti@2.4.2)(lightningcss@1.30.1)(tsx@4.20.3)(yaml@2.8.0)): + fumadocs-mdx@11.6.11(@fumadocs/mdx-remote@1.3.0(acorn@8.15.0)(fumadocs-core@15.6.3(@types/react@19.1.8)(next@15.4.1(@playwright/test@1.54.1)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0))(acorn@8.15.0)(fumadocs-core@15.6.3(@types/react@19.1.8)(next@15.4.1(@playwright/test@1.54.1)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(next@15.4.1(@playwright/test@1.54.1)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@6.3.5(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0)): dependencies: '@mdx-js/mdx': 3.1.0(acorn@8.15.0) '@standard-schema/spec': 1.0.0 chokidar: 4.0.3 esbuild: 0.25.6 estree-util-value-to-estree: 3.4.0 - fumadocs-core: 15.6.3(@types/react@19.1.8)(next@15.3.5(@playwright/test@1.54.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + fumadocs-core: 15.6.3(@types/react@19.1.8)(next@15.4.1(@playwright/test@1.54.1)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) js-yaml: 4.1.0 lru-cache: 11.1.0 picocolors: 1.1.1 tinyexec: 1.0.1 tinyglobby: 0.2.14 unist-util-visit: 5.0.0 - zod: 3.25.76 + zod: 4.0.5 optionalDependencies: - '@fumadocs/mdx-remote': 1.3.0(acorn@8.15.0)(fumadocs-core@15.6.3(@types/react@19.1.8)(next@15.3.5(@playwright/test@1.54.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0) - next: 15.3.5(@playwright/test@1.54.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - vite: 6.3.5(@types/node@24.0.12)(jiti@2.4.2)(lightningcss@1.30.1)(tsx@4.20.3)(yaml@2.8.0) + '@fumadocs/mdx-remote': 1.3.0(acorn@8.15.0)(fumadocs-core@15.6.3(@types/react@19.1.8)(next@15.4.1(@playwright/test@1.54.1)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0) + next: 15.4.1(@playwright/test@1.54.1)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + vite: 6.3.5(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0) transitivePeerDependencies: - acorn - supports-color - fumadocs-ui@15.6.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(next@15.3.5(@playwright/test@1.54.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(tailwindcss@4.1.11): + fumadocs-ui@15.6.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(next@15.4.1(@playwright/test@1.54.1)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(tailwindcss@4.1.11): dependencies: '@radix-ui/react-accordion': 1.2.11(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-collapsible': 1.1.11(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -10882,7 +10886,7 @@ snapshots: '@radix-ui/react-slot': 1.2.3(@types/react@19.1.8)(react@19.1.0) '@radix-ui/react-tabs': 1.1.12(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) class-variance-authority: 0.7.1 - fumadocs-core: 15.6.3(@types/react@19.1.8)(next@15.3.5(@playwright/test@1.54.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + fumadocs-core: 15.6.3(@types/react@19.1.8)(next@15.4.1(@playwright/test@1.54.1)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) lodash.merge: 4.6.2 next-themes: 0.4.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0) postcss-selector-parser: 7.1.0 @@ -10893,7 +10897,7 @@ snapshots: tailwind-merge: 3.3.1 optionalDependencies: '@types/react': 19.1.8 - next: 15.3.5(@playwright/test@1.54.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + next: 15.4.1(@playwright/test@1.54.1)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) tailwindcss: 4.1.11 transitivePeerDependencies: - '@oramacloud/client' @@ -11134,7 +11138,7 @@ snapshots: dependencies: hermes-estree: 0.25.1 - hono@4.8.4: {} + hono@4.8.5: {} html-encoding-sniffer@4.0.0: dependencies: @@ -11315,10 +11319,10 @@ snapshots: is-hexadecimal@2.0.1: {} - is-immutable-type@5.0.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3): + is-immutable-type@5.0.1(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3): dependencies: - '@typescript-eslint/type-utils': 8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - eslint: 9.30.1(jiti@2.4.2) + '@typescript-eslint/type-utils': 8.37.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.31.0(jiti@2.4.2) ts-api-utils: 2.1.0(typescript@5.8.3) ts-declaration-location: 1.0.7(typescript@5.8.3) typescript: 5.8.3 @@ -11627,7 +11631,7 @@ snapshots: magicast@0.3.5: dependencies: '@babel/parser': 7.28.0 - '@babel/types': 7.28.0 + '@babel/types': 7.28.1 source-map-js: 1.2.1 make-dir@4.0.0: @@ -12134,15 +12138,15 @@ snapshots: pkg-types: 1.3.1 ufo: 1.6.1 - motion-dom@12.23.2: + motion-dom@12.23.5: dependencies: motion-utils: 12.23.2 motion-utils@12.23.2: {} - motion@12.23.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + motion@12.23.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0): dependencies: - framer-motion: 12.23.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + framer-motion: 12.23.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0) tslib: 2.8.1 optionalDependencies: react: 19.1.0 @@ -12185,21 +12189,21 @@ snapshots: negotiator@1.0.0: {} - next-intl@4.3.4(next@15.3.5(@babel/core@7.28.0)(@playwright/test@1.54.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(typescript@5.8.3): + next-intl@4.3.4(next@15.4.1(@babel/core@7.28.0)(@playwright/test@1.54.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(typescript@5.8.3): dependencies: '@formatjs/intl-localematcher': 0.5.10 negotiator: 1.0.0 - next: 15.3.5(@babel/core@7.28.0)(@playwright/test@1.54.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + next: 15.4.1(@babel/core@7.28.0)(@playwright/test@1.54.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 use-intl: 4.3.4(react@19.1.0) optionalDependencies: typescript: 5.8.3 - next-intl@4.3.4(next@15.3.5(@playwright/test@1.54.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(typescript@5.8.3): + next-intl@4.3.4(next@15.4.1(@playwright/test@1.54.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(typescript@5.8.3): dependencies: '@formatjs/intl-localematcher': 0.5.10 negotiator: 1.0.0 - next: 15.3.5(@playwright/test@1.54.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + next: 15.4.1(@playwright/test@1.54.1)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 use-intl: 4.3.4(react@19.1.0) optionalDependencies: @@ -12210,53 +12214,49 @@ snapshots: react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - next@15.3.5(@babel/core@7.28.0)(@playwright/test@1.54.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + next@15.4.1(@babel/core@7.28.0)(@playwright/test@1.54.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): dependencies: - '@next/env': 15.3.5 - '@swc/counter': 0.1.3 + '@next/env': 15.4.1 '@swc/helpers': 0.5.15 - busboy: 1.6.0 caniuse-lite: 1.0.30001727 postcss: 8.4.31 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) styled-jsx: 5.1.6(@babel/core@7.28.0)(react@19.1.0) optionalDependencies: - '@next/swc-darwin-arm64': 15.3.5 - '@next/swc-darwin-x64': 15.3.5 - '@next/swc-linux-arm64-gnu': 15.3.5 - '@next/swc-linux-arm64-musl': 15.3.5 - '@next/swc-linux-x64-gnu': 15.3.5 - '@next/swc-linux-x64-musl': 15.3.5 - '@next/swc-win32-arm64-msvc': 15.3.5 - '@next/swc-win32-x64-msvc': 15.3.5 - '@playwright/test': 1.54.0 + '@next/swc-darwin-arm64': 15.4.1 + '@next/swc-darwin-x64': 15.4.1 + '@next/swc-linux-arm64-gnu': 15.4.1 + '@next/swc-linux-arm64-musl': 15.4.1 + '@next/swc-linux-x64-gnu': 15.4.1 + '@next/swc-linux-x64-musl': 15.4.1 + '@next/swc-win32-arm64-msvc': 15.4.1 + '@next/swc-win32-x64-msvc': 15.4.1 + '@playwright/test': 1.54.1 sharp: 0.34.3 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - next@15.3.5(@playwright/test@1.54.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + next@15.4.1(@playwright/test@1.54.1)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): dependencies: - '@next/env': 15.3.5 - '@swc/counter': 0.1.3 + '@next/env': 15.4.1 '@swc/helpers': 0.5.15 - busboy: 1.6.0 caniuse-lite: 1.0.30001727 postcss: 8.4.31 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) styled-jsx: 5.1.6(@babel/core@7.28.0)(react@19.1.0) optionalDependencies: - '@next/swc-darwin-arm64': 15.3.5 - '@next/swc-darwin-x64': 15.3.5 - '@next/swc-linux-arm64-gnu': 15.3.5 - '@next/swc-linux-arm64-musl': 15.3.5 - '@next/swc-linux-x64-gnu': 15.3.5 - '@next/swc-linux-x64-musl': 15.3.5 - '@next/swc-win32-arm64-msvc': 15.3.5 - '@next/swc-win32-x64-msvc': 15.3.5 - '@playwright/test': 1.54.0 + '@next/swc-darwin-arm64': 15.4.1 + '@next/swc-darwin-x64': 15.4.1 + '@next/swc-linux-arm64-gnu': 15.4.1 + '@next/swc-linux-arm64-musl': 15.4.1 + '@next/swc-linux-x64-gnu': 15.4.1 + '@next/swc-linux-x64-musl': 15.4.1 + '@next/swc-win32-arm64-msvc': 15.4.1 + '@next/swc-win32-x64-msvc': 15.4.1 + '@playwright/test': 1.54.1 babel-plugin-react-compiler: 19.1.0-rc.2 sharp: 0.34.3 transitivePeerDependencies: @@ -12518,11 +12518,11 @@ snapshots: exsolve: 1.0.7 pathe: 2.0.3 - playwright-core@1.54.0: {} + playwright-core@1.54.1: {} - playwright@1.54.0: + playwright@1.54.1: dependencies: - playwright-core: 1.54.0 + playwright-core: 1.54.1 optionalDependencies: fsevents: 2.3.2 @@ -12717,7 +12717,7 @@ snapshots: react: 19.1.0 scheduler: 0.26.0 - react-email@4.1.1: + react-email@4.1.3: dependencies: '@babel/parser': 7.28.0 '@babel/traverse': 7.28.0 @@ -12779,29 +12779,29 @@ snapshots: optionalDependencies: '@types/react': 19.1.8 - react-scan@0.4.3(@types/react@19.1.8)(next@15.3.5(@babel/core@7.28.0)(@playwright/test@1.54.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(rollup@4.44.2): + react-scan@0.4.3(@types/react@19.1.8)(next@15.4.1(@babel/core@7.28.0)(@playwright/test@1.54.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(rollup@4.45.0): dependencies: '@babel/core': 7.28.0 '@babel/generator': 7.28.0 - '@babel/types': 7.28.0 + '@babel/types': 7.28.1 '@clack/core': 0.3.5 '@clack/prompts': 0.8.2 '@pivanov/utils': 0.0.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@preact/signals': 1.3.2(preact@10.26.9) - '@rollup/pluginutils': 5.2.0(rollup@4.44.2) - '@types/node': 20.19.6 + '@rollup/pluginutils': 5.2.0(rollup@4.45.0) + '@types/node': 20.19.7 bippy: 0.3.17(@types/react@19.1.8)(react@19.1.0) esbuild: 0.25.6 estree-walker: 3.0.3 kleur: 4.1.5 mri: 1.2.0 - playwright: 1.54.0 + playwright: 1.54.1 preact: 10.26.9 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) tsx: 4.20.3 optionalDependencies: - next: 15.3.5(@babel/core@7.28.0)(@playwright/test@1.54.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + next: 15.4.1(@babel/core@7.28.0)(@playwright/test@1.54.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) unplugin: 2.1.0 transitivePeerDependencies: - '@types/react' @@ -13002,30 +13002,30 @@ snapshots: reusify@1.1.0: {} - rollup@4.44.2: + rollup@4.45.0: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.44.2 - '@rollup/rollup-android-arm64': 4.44.2 - '@rollup/rollup-darwin-arm64': 4.44.2 - '@rollup/rollup-darwin-x64': 4.44.2 - '@rollup/rollup-freebsd-arm64': 4.44.2 - '@rollup/rollup-freebsd-x64': 4.44.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.44.2 - '@rollup/rollup-linux-arm-musleabihf': 4.44.2 - '@rollup/rollup-linux-arm64-gnu': 4.44.2 - '@rollup/rollup-linux-arm64-musl': 4.44.2 - '@rollup/rollup-linux-loongarch64-gnu': 4.44.2 - '@rollup/rollup-linux-powerpc64le-gnu': 4.44.2 - '@rollup/rollup-linux-riscv64-gnu': 4.44.2 - '@rollup/rollup-linux-riscv64-musl': 4.44.2 - '@rollup/rollup-linux-s390x-gnu': 4.44.2 - '@rollup/rollup-linux-x64-gnu': 4.44.2 - '@rollup/rollup-linux-x64-musl': 4.44.2 - '@rollup/rollup-win32-arm64-msvc': 4.44.2 - '@rollup/rollup-win32-ia32-msvc': 4.44.2 - '@rollup/rollup-win32-x64-msvc': 4.44.2 + '@rollup/rollup-android-arm-eabi': 4.45.0 + '@rollup/rollup-android-arm64': 4.45.0 + '@rollup/rollup-darwin-arm64': 4.45.0 + '@rollup/rollup-darwin-x64': 4.45.0 + '@rollup/rollup-freebsd-arm64': 4.45.0 + '@rollup/rollup-freebsd-x64': 4.45.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.45.0 + '@rollup/rollup-linux-arm-musleabihf': 4.45.0 + '@rollup/rollup-linux-arm64-gnu': 4.45.0 + '@rollup/rollup-linux-arm64-musl': 4.45.0 + '@rollup/rollup-linux-loongarch64-gnu': 4.45.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.45.0 + '@rollup/rollup-linux-riscv64-gnu': 4.45.0 + '@rollup/rollup-linux-riscv64-musl': 4.45.0 + '@rollup/rollup-linux-s390x-gnu': 4.45.0 + '@rollup/rollup-linux-x64-gnu': 4.45.0 + '@rollup/rollup-linux-x64-musl': 4.45.0 + '@rollup/rollup-win32-arm64-msvc': 4.45.0 + '@rollup/rollup-win32-ia32-msvc': 4.45.0 + '@rollup/rollup-win32-x64-msvc': 4.45.0 fsevents: 2.3.3 rrweb-cssom@0.8.0: {} @@ -13171,14 +13171,14 @@ snapshots: shell-quote@1.8.3: {} - shiki@3.7.0: + shiki@3.8.0: dependencies: - '@shikijs/core': 3.7.0 - '@shikijs/engine-javascript': 3.7.0 - '@shikijs/engine-oniguruma': 3.7.0 - '@shikijs/langs': 3.7.0 - '@shikijs/themes': 3.7.0 - '@shikijs/types': 3.7.0 + '@shikijs/core': 3.8.0 + '@shikijs/engine-javascript': 3.8.0 + '@shikijs/engine-oniguruma': 3.8.0 + '@shikijs/langs': 3.8.0 + '@shikijs/themes': 3.8.0 + '@shikijs/types': 3.8.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -13321,8 +13321,6 @@ snapshots: es-errors: 1.3.0 internal-slot: 1.1.0 - streamsearch@1.1.0: {} - streamx@2.22.1: dependencies: fast-fifo: 1.3.2 @@ -13511,6 +13509,14 @@ snapshots: mkdirp: 3.0.1 yallist: 5.0.0 + terser@5.43.1: + dependencies: + '@jridgewell/source-map': 0.3.10 + acorn: 8.15.0 + commander: 2.20.3 + source-map-support: 0.5.21 + optional: true + test-exclude@7.0.1: dependencies: '@istanbuljs/schema': 0.1.3 @@ -13626,7 +13632,7 @@ snapshots: tslib@2.8.1: {} - tsup@8.5.0(@swc/core@1.12.11)(jiti@2.4.2)(postcss@8.5.6)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.8.0): + tsup@8.5.0(@swc/core@1.12.14)(jiti@2.4.2)(postcss@8.5.6)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.8.0): dependencies: bundle-require: 5.1.0(esbuild@0.25.6) cac: 6.7.14 @@ -13639,14 +13645,14 @@ snapshots: picocolors: 1.1.1 postcss-load-config: 6.0.1(jiti@2.4.2)(postcss@8.5.6)(tsx@4.20.3)(yaml@2.8.0) resolve-from: 5.0.0 - rollup: 4.44.2 + rollup: 4.45.0 source-map: 0.8.0-beta.0 sucrase: 3.35.0 tinyexec: 0.3.2 tinyglobby: 0.2.14 tree-kill: 1.2.2 optionalDependencies: - '@swc/core': 1.12.11 + '@swc/core': 1.12.14 postcss: 8.5.6 typescript: 5.8.3 transitivePeerDependencies: @@ -13730,12 +13736,13 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 - typescript-eslint@8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3): + typescript-eslint@8.37.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.36.0(@typescript-eslint/parser@8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/parser': 8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/utils': 8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - eslint: 9.30.1(jiti@2.4.2) + '@typescript-eslint/eslint-plugin': 8.37.0(@typescript-eslint/parser@8.37.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': 8.37.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/typescript-estree': 8.37.0(typescript@5.8.3) + '@typescript-eslint/utils': 8.37.0(eslint@9.31.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.31.0(jiti@2.4.2) typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -13870,13 +13877,13 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-node@3.2.4(@types/node@24.0.12)(jiti@2.4.2)(lightningcss@1.30.1)(tsx@4.20.3)(yaml@2.8.0): + vite-node@3.2.4(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0): dependencies: cac: 6.7.14 debug: 4.4.1 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.0.4(@types/node@24.0.12)(jiti@2.4.2)(lightningcss@1.30.1)(tsx@4.20.3)(yaml@2.8.0) + vite: 7.0.4(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0) transitivePeerDependencies: - '@types/node' - jiti @@ -13891,55 +13898,57 @@ snapshots: - tsx - yaml - vite-tsconfig-paths@5.1.4(typescript@5.8.3)(vite@7.0.4(@types/node@24.0.12)(jiti@2.4.2)(lightningcss@1.30.1)(tsx@4.20.3)(yaml@2.8.0)): + vite-tsconfig-paths@5.1.4(typescript@5.8.3)(vite@7.0.4(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0)): dependencies: debug: 4.4.1 globrex: 0.1.2 tsconfck: 3.1.6(typescript@5.8.3) optionalDependencies: - vite: 7.0.4(@types/node@24.0.12)(jiti@2.4.2)(lightningcss@1.30.1)(tsx@4.20.3)(yaml@2.8.0) + vite: 7.0.4(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0) transitivePeerDependencies: - supports-color - typescript - vite@6.3.5(@types/node@24.0.12)(jiti@2.4.2)(lightningcss@1.30.1)(tsx@4.20.3)(yaml@2.8.0): + vite@6.3.5(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0): dependencies: esbuild: 0.25.6 fdir: 6.4.6(picomatch@4.0.2) picomatch: 4.0.2 postcss: 8.5.6 - rollup: 4.44.2 + rollup: 4.45.0 tinyglobby: 0.2.14 optionalDependencies: - '@types/node': 24.0.12 + '@types/node': 24.0.13 fsevents: 2.3.3 jiti: 2.4.2 lightningcss: 1.30.1 + terser: 5.43.1 tsx: 4.20.3 yaml: 2.8.0 optional: true - vite@7.0.4(@types/node@24.0.12)(jiti@2.4.2)(lightningcss@1.30.1)(tsx@4.20.3)(yaml@2.8.0): + vite@7.0.4(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0): dependencies: esbuild: 0.25.6 fdir: 6.4.6(picomatch@4.0.2) picomatch: 4.0.2 postcss: 8.5.6 - rollup: 4.44.2 + rollup: 4.45.0 tinyglobby: 0.2.14 optionalDependencies: - '@types/node': 24.0.12 + '@types/node': 24.0.13 fsevents: 2.3.3 jiti: 2.4.2 lightningcss: 1.30.1 + terser: 5.43.1 tsx: 4.20.3 yaml: 2.8.0 - vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.0.12)(jiti@2.4.2)(jsdom@26.1.0)(lightningcss@1.30.1)(tsx@4.20.3)(yaml@2.8.0): + vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.0.13)(jiti@2.4.2)(jsdom@26.1.0)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.0.4(@types/node@24.0.12)(jiti@2.4.2)(lightningcss@1.30.1)(tsx@4.20.3)(yaml@2.8.0)) + '@vitest/mocker': 3.2.4(vite@7.0.4(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -13957,12 +13966,12 @@ snapshots: tinyglobby: 0.2.14 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.0.4(@types/node@24.0.12)(jiti@2.4.2)(lightningcss@1.30.1)(tsx@4.20.3)(yaml@2.8.0) - vite-node: 3.2.4(@types/node@24.0.12)(jiti@2.4.2)(lightningcss@1.30.1)(tsx@4.20.3)(yaml@2.8.0) + vite: 7.0.4(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0) + vite-node: 3.2.4(@types/node@24.0.13)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 - '@types/node': 24.0.12 + '@types/node': 24.0.13 jsdom: 26.1.0 transitivePeerDependencies: - jiti @@ -14123,10 +14132,12 @@ snapshots: yoctocolors@2.1.1: {} - zod-validation-error@3.5.2(zod@3.25.76): + zod-validation-error@3.5.3(zod@3.25.76): dependencies: zod: 3.25.76 zod@3.25.76: {} + zod@4.0.5: {} + zwitch@2.0.4: {} From 4333d15848525aa8dc3281888de1cfdf6445d0d4 Mon Sep 17 00:00:00 2001 From: aXenDeveloper Date: Tue, 22 Jul 2025 15:52:41 +0200 Subject: [PATCH 2/2] feat!: Update auto-form to zod 4, update packages --- .github/copilot-instructions.md | 2 +- .github/docs/prd.md | 2 +- README.md | 1 + apps/api/package.json | 14 +- apps/docs/content/docs/ui/auto-form.mdx | 29 +- apps/docs/content/docs/ui/checkbox.mdx | 2 +- apps/docs/content/docs/ui/combobox-async.mdx | 2 +- apps/docs/content/docs/ui/combobox.mdx | 2 +- apps/docs/content/docs/ui/input.mdx | 7 +- apps/docs/content/docs/ui/radio-group.mdx | 2 +- apps/docs/content/docs/ui/switch.mdx | 2 +- apps/docs/content/docs/ui/textarea.mdx | 2 +- apps/docs/package.json | 24 +- .../src/app/[locale]/(main)/(home)/page.tsx | 20 +- .../sections/powering-by/powering-by.tsx | 2 +- apps/docs/src/app/global.css | 2 +- apps/docs/src/examples/auto-form.tsx | 11 +- apps/docs/src/examples/input.tsx | 2 +- apps/docs/src/vitnode.config.ts | 1 + package.json | 6 +- .../root/src/app/global.css | 2 +- packages/create-vitnode-app/package.json | 6 +- .../src/create/create-package-json.ts | 38 +- packages/eslint/package.json | 6 +- packages/vitnode/package.json | 24 +- .../api/modules/users/routes/sign-in.route.ts | 2 +- .../api/modules/users/routes/sign-up.route.ts | 4 +- .../vitnode/src/components/form/auto-form.tsx | 148 +- .../src/components/form/fields/checkbox.tsx | 32 +- .../components/form/fields/combobox-async.tsx | 23 +- .../src/components/form/fields/combobox.tsx | 25 +- .../src/components/form/fields/input.tsx | 35 +- .../src/components/form/fields/item.tsx | 55 - .../components/form/fields/radio-group.tsx | 24 +- .../src/components/form/fields/select.tsx | 24 +- .../src/components/form/fields/switch.tsx | 33 +- .../src/components/form/fields/textarea.tsx | 21 +- packages/vitnode/src/components/ui/form.tsx | 6 +- .../vitnode/src/lib/helpers/auto-form.test.ts | 411 ++-- packages/vitnode/src/lib/helpers/auto-form.ts | 253 +-- .../src/views/admin/views/core/test.tsx | 27 +- .../views/auth/components/password-input.tsx | 29 +- .../src/views/auth/sign-in/form/use-form.ts | 7 +- .../src/views/auth/sign-up/form/form.tsx | 35 +- .../src/views/auth/sign-up/form/use-form.ts | 24 +- plugins/blog/package.json | 8 +- pnpm-lock.yaml | 1949 ++++++++--------- 47 files changed, 1731 insertions(+), 1655 deletions(-) delete mode 100644 packages/vitnode/src/components/form/fields/item.tsx diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 9cb02802a..0a13a63ca 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -14,7 +14,7 @@ - i18n: Use `next-intl`, `t('key')` for translations, `getTranslation` (server), `useTranslation` (client) - Accessibility: WCAG 2.1 AA, semantic HTML, ARIA, keyboard/screen reader support - **Backend:** - - Hono.js 4, OpenAPI via `@hono/zod-openapi`, Zod 3 for validation + - Hono.js 4, OpenAPI via `@hono/zod-openapi`, Zod 4 for validation - Database: PostgreSQL via Drizzle ORM, access via `c.get('database')` - API: RESTful, versioned, rate-limited, secure session management - Error handling: Use Hono's error middleware, log via `c.get('log')` diff --git a/.github/docs/prd.md b/.github/docs/prd.md index 2fa4f21ae..727839c0c 100644 --- a/.github/docs/prd.md +++ b/.github/docs/prd.md @@ -150,7 +150,7 @@ VitNode is designed for individual developers and small teams who need a structu - React 19 with Server Components - TypeScript 5 with strict configuration - Tailwind CSS 4 with Shadcn UI components -- Zod 3 for runtime validation +- Zod 4 for runtime validation - React Hook Form 7 for form management - Next-intl for internationalization diff --git a/README.md b/README.md index 36acaa713..193a0c5d9 100644 --- a/README.md +++ b/README.md @@ -74,6 +74,7 @@ - **Enhanced Plugin System**: Improved CLI tools for plugins - **Better Documentation**: Completely rewritten docs and website - **Streamlined Configuration**: Single config file for all settings +- **Zod 4**: Upgraded to the latest version for schema validation ## 🔍 Project Scope diff --git a/apps/api/package.json b/apps/api/package.json index 49090bd6f..d963e3b8f 100644 --- a/apps/api/package.json +++ b/apps/api/package.json @@ -15,9 +15,9 @@ "drizzle-kit": "drizzle-kit" }, "dependencies": { - "@hono/zod-openapi": "^0.19.10", - "@hono/zod-validator": "^0.7.1", - "@react-email/components": "^0.2.0", + "@hono/zod-openapi": "^1.0.2", + "@hono/zod-validator": "^0.7.2", + "@react-email/components": "^0.3.2", "@vitnode/core": "workspace:*", "drizzle-kit": "^0.31.4", "drizzle-orm": "^0.44.3", @@ -25,17 +25,17 @@ "next-intl": "^4.3.4", "react": "^19.1.0", "react-dom": "^19.1.0", - "zod": "^3.25.76" + "zod": "^4.0.5" }, "devDependencies": { - "@hono/node-server": "^1.16.0", - "@types/node": "^24.0.13", + "@hono/node-server": "^1.17.1", + "@types/node": "^24.1.0", "@types/react": "^19.1.8", "@types/react-dom": "^19.1.6", "@vitnode/eslint-config": "workspace:*", "dotenv": "^17.2.0", "eslint": "^9.31.0", - "react-email": "^4.1.3", + "react-email": "^4.2.3", "tsc-alias": "^1.8.16", "tsx": "^4.20.3", "typescript": "^5.8.3" diff --git a/apps/docs/content/docs/ui/auto-form.mdx b/apps/docs/content/docs/ui/auto-form.mdx index e4d098759..bfe6cf10b 100644 --- a/apps/docs/content/docs/ui/auto-form.mdx +++ b/apps/docs/content/docs/ui/auto-form.mdx @@ -21,7 +21,9 @@ import { z } from 'zod'; ```ts const formSchema = z.object({ username: z.string().min(3, 'Username must be at least 3 characters'), - email: z.string().email('Please enter a valid email address'), + email: z + .email('Please enter a valid email address') + .describe("We'll use this email to contact you. (from zod schema)"), user_type: z.enum(['admin', 'editor', 'viewer']), accept_terms: z.boolean().refine(val => val, { message: 'You must accept the terms and conditions', @@ -37,27 +39,23 @@ const formSchema = z.object({ id: 'username', component: props => ( ), }, { id: 'email', component: props => ( - + ), }, { id: 'user_type', component: props => ( ), }, @@ -73,8 +70,8 @@ const formSchema = z.object({ id: 'accept_terms', component: props => ( ), }, @@ -82,10 +79,10 @@ const formSchema = z.object({ id: 'description', component: props => ( ), }, @@ -127,7 +124,7 @@ Auto Form supports all Zod validators: ```ts const formSchema = z.object({ username: z.string().min(3).max(20), - email: z.string().email(), + email: z.email(), age: z.number().min(18).max(120), password: z .string() @@ -138,6 +135,12 @@ const formSchema = z.object({ }); ``` +## Custom Fields + + + We're working hard to bring you the best documentation experience. + + ## Form Submission To activate submit button and handle form submission with the `onSubmit` callback: @@ -149,9 +152,9 @@ To activate submit button and handle form submission with the `onSubmit` callbac id: 'username', component: props => ( ), }, diff --git a/apps/docs/content/docs/ui/checkbox.mdx b/apps/docs/content/docs/ui/checkbox.mdx index d65f5914d..3226157a3 100644 --- a/apps/docs/content/docs/ui/checkbox.mdx +++ b/apps/docs/content/docs/ui/checkbox.mdx @@ -36,8 +36,8 @@ const formSchema = z.object({ id: 'acceptTerms', component: props => ( ), }, diff --git a/apps/docs/content/docs/ui/combobox-async.mdx b/apps/docs/content/docs/ui/combobox-async.mdx index ae9602dad..4514add41 100644 --- a/apps/docs/content/docs/ui/combobox-async.mdx +++ b/apps/docs/content/docs/ui/combobox-async.mdx @@ -32,6 +32,7 @@ const formSchema = z.object({ id: 'categoryId', component: props => ( { const res = await fetcherClient(categoriesModule, { path: '/', @@ -52,7 +53,6 @@ const formSchema = z.object({ }} id="categoryId" label="Category" - {...props} /> ), }, diff --git a/apps/docs/content/docs/ui/combobox.mdx b/apps/docs/content/docs/ui/combobox.mdx index a39520d3c..3190414cc 100644 --- a/apps/docs/content/docs/ui/combobox.mdx +++ b/apps/docs/content/docs/ui/combobox.mdx @@ -34,6 +34,7 @@ const formSchema = z.object({ id: 'type', component: props => ( ), }, diff --git a/apps/docs/content/docs/ui/input.mdx b/apps/docs/content/docs/ui/input.mdx index 57dc50e7a..78193dd0a 100644 --- a/apps/docs/content/docs/ui/input.mdx +++ b/apps/docs/content/docs/ui/input.mdx @@ -22,7 +22,7 @@ import { AutoFormInput } from '@vitnode/core/components/form/fields/input'; ```ts const formSchema = z.object({ username: z.string().min(3, 'Username must be at least 3 characters'), - email: z.string().email('Please enter a valid email address'), + email: z.email('Please enter a valid email address'), }); ``` @@ -34,9 +34,9 @@ const formSchema = z.object({ id: 'username', component: props => ( ), }, @@ -44,10 +44,9 @@ const formSchema = z.object({ id: 'email', component: props => ( ), }, diff --git a/apps/docs/content/docs/ui/radio-group.mdx b/apps/docs/content/docs/ui/radio-group.mdx index 41da0ac95..2b9368ad8 100644 --- a/apps/docs/content/docs/ui/radio-group.mdx +++ b/apps/docs/content/docs/ui/radio-group.mdx @@ -33,6 +33,7 @@ const formSchema = z.object({ id: 'options', component: props => ( ), }, diff --git a/apps/docs/content/docs/ui/switch.mdx b/apps/docs/content/docs/ui/switch.mdx index 398cb7b7f..412ca7bb4 100644 --- a/apps/docs/content/docs/ui/switch.mdx +++ b/apps/docs/content/docs/ui/switch.mdx @@ -35,7 +35,7 @@ const formSchema = z.object({ { id: 'acceptTerms', component: props => ( - + ), }, ]} diff --git a/apps/docs/content/docs/ui/textarea.mdx b/apps/docs/content/docs/ui/textarea.mdx index a4855470b..42559f631 100644 --- a/apps/docs/content/docs/ui/textarea.mdx +++ b/apps/docs/content/docs/ui/textarea.mdx @@ -34,10 +34,10 @@ const formSchema = z.object({ id: 'desc', component: props => ( ), }, diff --git a/apps/docs/package.json b/apps/docs/package.json index 95db8ac8e..597fc94f4 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -9,7 +9,7 @@ "init": "vitnode init", "dev": "vitnode init && next dev --turbopack", "dev:email": "email dev --dir src/emails", - "build": "next build --turbopack", + "build": "next build", "start": "next start", "lint": "eslint .", "lint:fix": "eslint . --fix", @@ -21,20 +21,20 @@ "drizzle-kit": "drizzle-kit" }, "dependencies": { - "@hono/zod-openapi": "^0.19.10", - "@hono/zod-validator": "^0.7.1", + "@hono/zod-openapi": "^1.0.2", + "@hono/zod-validator": "^0.7.2", "@vitnode/blog": "workspace:*", "@vitnode/core": "workspace:*", "babel-plugin-react-compiler": "19.1.0-rc.2", "drizzle-kit": "^0.31.4", "drizzle-orm": "^0.44.3", - "fumadocs-core": "^15.6.3", - "fumadocs-mdx": "^11.6.11", - "fumadocs-ui": "^15.6.3", + "fumadocs-core": "^15.6.5", + "fumadocs-mdx": "^11.7.0", + "fumadocs-ui": "^15.6.5", "hono": "^4.8.5", "lucide-react": "^0.525.0", - "motion": "^12.23.5", - "next": "^15.4.1", + "motion": "^12.23.6", + "next": "^15.4.2", "next-intl": "^4.3.4", "react": "^19.1.0", "react-dom": "^19.1.0", @@ -46,18 +46,18 @@ "@playwright/test": "^1.54.1", "@tailwindcss/postcss": "^4.1.11", "@types/mdx": "^2.0.13", - "@types/node": "^24.0.13", + "@types/node": "^24.1.0", "@types/react": "^19.1.8", "@types/react-dom": "^19.1.6", "@vitnode/eslint-config": "workspace:*", "class-variance-authority": "^0.7.1", "eslint": "^9.31.0", "postcss": "^8.5.6", - "react-email": "^4.1.3", - "shiki": "^3.8.0", + "react-email": "^4.2.3", + "shiki": "^3.8.1", "tailwindcss": "^4.1.11", "tw-animate-css": "^1.3.5", "typescript": "^5.8.3", - "zod": "^3.25.76" + "zod": "^4.0.5" } } diff --git a/apps/docs/src/app/[locale]/(main)/(home)/page.tsx b/apps/docs/src/app/[locale]/(main)/(home)/page.tsx index 93962be47..705a91568 100644 --- a/apps/docs/src/app/[locale]/(main)/(home)/page.tsx +++ b/apps/docs/src/app/[locale]/(main)/(home)/page.tsx @@ -3,6 +3,7 @@ import type { Metadata } from 'next'; import { buttonVariants } from '@vitnode/core/components/ui/button'; import { cn } from '@vitnode/core/lib/utils'; import Link from 'fumadocs-core/link'; +import { ChevronRight } from 'lucide-react'; import { AnimatedBeamHome } from '../../../../components/animated-beam/animated-beam-home'; import { AdminSection } from './sections/admin/admin'; @@ -18,17 +19,8 @@ export const metadata: Metadata = { export default function HomePage() { return (
-
+
- -
- 🎉{` `} - VitNode 2.0 in progress... - {/* */} - -

Extendable Framework for Building Apps @@ -48,15 +40,16 @@ export default function HomePage() { )} href="/docs/dev" > - Get Started + Get Started

- +
something
+
diff --git a/apps/docs/src/app/[locale]/(main)/(home)/sections/powering-by/powering-by.tsx b/apps/docs/src/app/[locale]/(main)/(home)/sections/powering-by/powering-by.tsx index 1aef86579..c3e345f88 100644 --- a/apps/docs/src/app/[locale]/(main)/(home)/sections/powering-by/powering-by.tsx +++ b/apps/docs/src/app/[locale]/(main)/(home)/sections/powering-by/powering-by.tsx @@ -12,7 +12,7 @@ import { TurboRepoLogo } from './logos/turborepo'; export const PoweringBySection = () => { return ( -
+
diff --git a/apps/docs/src/app/global.css b/apps/docs/src/app/global.css index 824d0ae7a..a32f861e8 100644 --- a/apps/docs/src/app/global.css +++ b/apps/docs/src/app/global.css @@ -54,7 +54,7 @@ --card-foreground: oklch(0.96 0.01 250); --popover: oklch(0.22 0.01 250); --popover-foreground: oklch(0.96 0.01 250); - --primary: oklch(0.51 0.16 262.61); + --primary: oklch(0.6 0.18 262.65); --primary-foreground: oklch(0.98 0 0); --secondary: oklch(0.29 0.03 264.9); --secondary-foreground: oklch(0.96 0.01 250); diff --git a/apps/docs/src/examples/auto-form.tsx b/apps/docs/src/examples/auto-form.tsx index bdccd64b2..87ff240d9 100644 --- a/apps/docs/src/examples/auto-form.tsx +++ b/apps/docs/src/examples/auto-form.tsx @@ -10,7 +10,9 @@ import { z } from 'zod'; export default function AutoFormExample() { const formSchema = z.object({ username: z.string().min(3, 'Username must be at least 3 characters'), - email: z.string().email('Please enter a valid email address'), + email: z + .email('Please enter a valid email address') + .describe("We'll use this email to contact you. (from zod schema)"), user_type: z.enum(['admin', 'editor', 'viewer']), accept_terms: z.boolean().refine(val => val, { message: 'You must accept the terms and conditions', @@ -36,12 +38,7 @@ export default function AutoFormExample() { { id: 'email', component: props => ( - + ), }, { diff --git a/apps/docs/src/examples/input.tsx b/apps/docs/src/examples/input.tsx index 76cc38292..c0fe93052 100644 --- a/apps/docs/src/examples/input.tsx +++ b/apps/docs/src/examples/input.tsx @@ -7,7 +7,7 @@ import { z } from 'zod'; export default function InputExample() { const formSchema = z.object({ username: z.string().min(3, 'Username must be at least 3 characters'), - email: z.string().email('Please enter a valid email address'), + email: z.email('Please enter a valid email address'), }); return ( diff --git a/apps/docs/src/vitnode.config.ts b/apps/docs/src/vitnode.config.ts index fa8a728bc..4dcda6d6d 100644 --- a/apps/docs/src/vitnode.config.ts +++ b/apps/docs/src/vitnode.config.ts @@ -8,6 +8,7 @@ export const vitNodeConfig = buildConfig({ shortTitle: 'VitNode', }, plugins: [blogPlugin()], + debug: true, i18n: { locales: [ { diff --git a/package.json b/package.json index 719857dfb..836657c0d 100644 --- a/package.json +++ b/package.json @@ -18,14 +18,14 @@ "test:e2e": "turbo test:e2e" }, "devDependencies": { - "@types/node": "^24.0.13", + "@types/node": "^24.0.15", "@vitnode/eslint-config": "workspace:*", "prettier": "^3.6.2", "prettier-plugin-tailwindcss": "^0.6.14", "tsx": "^4.20.3", - "turbo": "^2.5.4", + "turbo": "^2.5.5", "typescript": "^5.8.3", - "zod": "^3.25.76" + "zod": "^4.0.5" }, "engines": { "node": ">=22" diff --git a/packages/create-vitnode-app/copy-of-vitnode-app/root/src/app/global.css b/packages/create-vitnode-app/copy-of-vitnode-app/root/src/app/global.css index 3b8486b54..58ef0849a 100644 --- a/packages/create-vitnode-app/copy-of-vitnode-app/root/src/app/global.css +++ b/packages/create-vitnode-app/copy-of-vitnode-app/root/src/app/global.css @@ -47,7 +47,7 @@ --card-foreground: oklch(0.96 0.01 250); --popover: oklch(0.22 0.01 250); --popover-foreground: oklch(0.96 0.01 250); - --primary: oklch(0.51 0.16 262.61); + --primary: oklch(0.6 0.18 262.65); --primary-foreground: oklch(0.98 0 0); --secondary: oklch(0.29 0.03 264.9); --secondary-foreground: oklch(0.96 0.01 250); diff --git a/packages/create-vitnode-app/package.json b/packages/create-vitnode-app/package.json index 3e57744c2..436d9d828 100644 --- a/packages/create-vitnode-app/package.json +++ b/packages/create-vitnode-app/package.json @@ -28,14 +28,14 @@ "typescript" ], "dependencies": { - "@inquirer/prompts": "^7.6.0", + "@inquirer/prompts": "^7.7.1", "commander": "^14.0.0", "ora": "^8.2.0", "picocolors": "^1.1.1", - "validate-npm-package-name": "^6.0.1" + "validate-npm-package-name": "^6.0.2" }, "devDependencies": { - "@types/node": "^24.0.13", + "@types/node": "^24.1.0", "@types/prompts": "^2.4.9", "@types/validate-npm-package-name": "^4.0.2", "@vitnode/eslint-config": "workspace:*", diff --git a/packages/create-vitnode-app/src/create/create-package-json.ts b/packages/create-vitnode-app/src/create/create-package-json.ts index 25d1fdd78..493a536a1 100644 --- a/packages/create-vitnode-app/src/create/create-package-json.ts +++ b/packages/create-vitnode-app/src/create/create-package-json.ts @@ -69,9 +69,9 @@ export const createPackageJSON = async ({ prettier: '^3.6.2', } : {}), - turbo: '^2.5.4', + turbo: '^2.5.5', typescript: '^5.8.3', - zod: '^3.25.74', + zod: '^4.0.5', }, packageManager: `${packageManager}@${availablePackageManagers[packageManager]}`, workspaces: ['apps/*', 'plugins/*'], @@ -116,9 +116,9 @@ export const createPackageJSON = async ({ 'drizzle-kit': 'drizzle-kit', }, dependencies: { - '@hono/zod-openapi': '^0.19.10', - '@hono/zod-validator': '^0.7.1', - '@react-email/components': '^0.2.0', + '@hono/zod-openapi': '^1.0.2', + '@hono/zod-validator': '^0.7.2', + '@react-email/components': '^0.3.2', '@vitnode/core': pkgVitNodeVersion, 'drizzle-kit': '^0.31.3', 'drizzle-orm': '^0.44.3', @@ -126,10 +126,10 @@ export const createPackageJSON = async ({ 'next-intl': '^4.3.1', react: '^19.1', 'react-dom': '^19.1', - zod: '^3.25.67', + zod: '^4.0.5', }, devDependencies: { - '@hono/node-server': '^1.15.0', + '@hono/node-server': '^1.17.1', ...(packageManager === 'bun' ? { '@types/bun': 'latest', @@ -151,7 +151,7 @@ export const createPackageJSON = async ({ : {}), } : {}), - 'react-email': '^4.1.3', + 'react-email': '^4.2.3', 'tsc-alias': '^1.8.16', tsx: '^4.20.3', typescript: '^5.8.3', @@ -169,7 +169,7 @@ export const createPackageJSON = async ({ 'db:migrate': 'vitnode migrate', init: 'vitnode init', dev: 'vitnode init && next dev --turbopack', - build: 'next build --turbopack', + build: 'next build', start: 'next start', ...(eslint ? { @@ -185,23 +185,23 @@ export const createPackageJSON = async ({ 'drizzle-kit': 'drizzle-kit', }, dependencies: { - '@hono/zod-openapi': '^0.19.10', - '@hono/zod-validator': '^0.7.1', + '@hono/zod-openapi': '^1.0.2', + '@hono/zod-validator': '^0.7.2', '@hookform/resolvers': '^5.1.1', - '@react-email/components': '^0.2.0', + '@react-email/components': '^0.3.2', '@vitnode/core': pkgVitNodeVersion, 'babel-plugin-react-compiler': '19.1.0-rc.2', 'drizzle-kit': '^0.31.4', 'drizzle-orm': '^0.44.3', hono: '^4.8.5', 'lucide-react': '^0.525.0', - next: '^15.4.1', + next: '^15.4.2', 'next-intl': '^4.3.4', react: '^19.1', 'react-dom': '^19.1', 'react-hook-form': '^7.60.0', sonner: '^2.0.6', - zod: '^3.25.74', + zod: '^4.0.5', }, devDependencies: { '@tailwindcss/postcss': '^4.1.11', @@ -216,8 +216,8 @@ export const createPackageJSON = async ({ prettier: '^3.6.2', } : {}), - 'react-email': '^4.1.3', - turbo: '^2.5.4', + 'react-email': '^4.2.3', + turbo: '^2.5.5', tailwindcss: '^4.1.11', 'tw-animate-css': '^1.3.5', typescript: '^5.8.3', @@ -243,7 +243,7 @@ export const createPackageJSON = async ({ scripts: { init: 'vitnode init --web', dev: 'vitnode init --web && next dev --turbopack', - build: 'next build --turbopack', + build: 'next build', start: 'next start', ...(eslint ? { @@ -256,7 +256,7 @@ export const createPackageJSON = async ({ '@vitnode/core': pkgVitNodeVersion, 'babel-plugin-react-compiler': '19.1.0-rc.2', 'lucide-react': '^0.525.0', - next: '^15.4.1', + next: '^15.4.2', 'next-intl': '^4.3.4', react: '^19.1', 'react-dom': '^19.1', @@ -281,7 +281,7 @@ export const createPackageJSON = async ({ tailwindcss: '^4.1.11', 'tw-animate-css': '^1.3.5', typescript: '^5.8.3', - zod: '^3.25.74', + zod: '^4.0.5', }, }; diff --git a/packages/eslint/package.json b/packages/eslint/package.json index 16b0a76a4..231e27fcd 100644 --- a/packages/eslint/package.json +++ b/packages/eslint/package.json @@ -44,14 +44,14 @@ "dependencies": { "@eslint-react/eslint-plugin": "^1.52.3", "@eslint/js": "^9.31.0", - "eslint-config-prettier": "^10.1.5", + "eslint-config-prettier": "^10.1.8", "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-perfectionist": "^4.15.0", - "eslint-plugin-prettier": "^5.5.1", + "eslint-plugin-prettier": "^5.5.3", "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-compiler": "19.1.0-rc.2", "eslint-plugin-react-hooks": "6.0.0-rc1", "prettier-plugin-tailwindcss": "^0.6.14", - "typescript-eslint": "^8.37.0" + "typescript-eslint": "^8.38.0" } } diff --git a/packages/vitnode/package.json b/packages/vitnode/package.json index 7e170ba8e..af2dff761 100644 --- a/packages/vitnode/package.json +++ b/packages/vitnode/package.json @@ -19,7 +19,7 @@ "core" ], "peerDependencies": { - "@hono/zod-openapi": "0.19.x", + "@hono/zod-openapi": "1.0.x", "@swc/cli": "0.6.x", "@swc/core": "1.12.x", "@types/react": "19.1.x", @@ -33,22 +33,22 @@ "react-dom": "19.1.x", "react-hook-form": "^7.x.x", "typescript": "^5.8.x", - "zod": "3.x.x" + "zod": "4.x.x" }, "devDependencies": { - "@hono/zod-openapi": "^0.19.10", - "@hono/zod-validator": "^0.7.1", + "@hono/zod-openapi": "^1.0.2", + "@hono/zod-validator": "^0.7.2", "@hookform/resolvers": "^5.1.1", - "@react-email/components": "^0.2.0", + "@react-email/components": "^0.3.2", "@swc/cli": "0.6.0", - "@swc/core": "^1.12.14", + "@swc/core": "^1.13.1", "@testing-library/dom": "^10.4.0", "@testing-library/react": "^16.3.0", - "@types/node": "^24.0.13", + "@types/node": "^24.1.0", "@types/nodemailer": "^6.4.17", "@types/react": "^19.1.8", "@types/react-dom": "^19.1.6", - "@vitejs/plugin-react": "^4.6.0", + "@vitejs/plugin-react": "^4.7.0", "@vitest/coverage-v8": "^3.2.4", "@vitnode/eslint-config": "workspace:*", "chokidar": "^4.0.3", @@ -60,11 +60,11 @@ "hono": "^4.8.5", "jsdom": "^26.1.0", "lucide-react": "^0.525.0", - "next": "^15.4.1", + "next": "^15.4.2", "next-intl": "^4.3.4", "react": "^19.1.0", "react-dom": "^19.1.0", - "react-email": "^4.1.3", + "react-email": "^4.2.3", "react-hook-form": "^7.60.0", "sonner": "^2.0.6", "tailwindcss": "^4.1.11", @@ -75,7 +75,7 @@ "typescript": "^5.8.3", "vite-tsconfig-paths": "^5.1.4", "vitest": "^3.2.4", - "zod": "^3.25.76" + "zod": "^4.0.5" }, "bin": { "vitnode": "./dist/scripts/scripts.js" @@ -121,7 +121,7 @@ "radix-ui": "^1.4.2", "rate-limiter-flexible": "^7.1.1", "react-scan": "^0.4.3", - "resend": "^4.6.0", + "resend": "^4.7.0", "tailwind-merge": "^3.3.1", "use-debounce": "^10.0.5", "vaul": "^1.1.2" diff --git a/packages/vitnode/src/api/modules/users/routes/sign-in.route.ts b/packages/vitnode/src/api/modules/users/routes/sign-in.route.ts index e0c2a61bc..8fad0b330 100644 --- a/packages/vitnode/src/api/modules/users/routes/sign-in.route.ts +++ b/packages/vitnode/src/api/modules/users/routes/sign-in.route.ts @@ -7,7 +7,7 @@ import { UserModel } from '@/api/models/user'; import { CONFIG_PLUGIN } from '@/config'; export const zodSignInSchema = z.object({ - email: z.string().email().toLowerCase().openapi({ + email: z.email().toLowerCase().openapi({ example: 'test@test.com', }), password: z.string().openapi({ diff --git a/packages/vitnode/src/api/modules/users/routes/sign-up.route.ts b/packages/vitnode/src/api/modules/users/routes/sign-up.route.ts index 2fc877a46..2d8b6a3a0 100644 --- a/packages/vitnode/src/api/modules/users/routes/sign-up.route.ts +++ b/packages/vitnode/src/api/modules/users/routes/sign-up.route.ts @@ -10,7 +10,7 @@ import { SessionModel } from '../../../models/session'; const nameRegex = /^(?!.* {2})[\p{L}\p{N}._@ -]*$/u; export const zodSignUpSchema = z.object({ - email: z.string().email().toLowerCase().openapi({ + email: z.email().toLowerCase().openapi({ example: 'test@test.com', }), name: z @@ -50,7 +50,7 @@ export const signUpRoute = buildRoute({ schema: z.object({ id: z.number(), emailVerified: z.boolean(), - email: z.string().email(), + email: z.email(), }), }, }, diff --git a/packages/vitnode/src/components/form/auto-form.tsx b/packages/vitnode/src/components/form/auto-form.tsx index 193f4bd50..963e4c677 100644 --- a/packages/vitnode/src/components/form/auto-form.tsx +++ b/packages/vitnode/src/components/form/auto-form.tsx @@ -1,50 +1,86 @@ 'use client'; -import type { DefaultValues, Mode, UseFormReturn } from 'react-hook-form'; -import type { z } from 'zod'; - import { zodResolver } from '@hookform/resolvers/zod'; import { useTranslations } from 'next-intl'; -import { useForm } from 'react-hook-form'; - -import { getDefaultValues, getObjectFormSchema } from '@/lib/helpers/auto-form'; +import { + type ControllerRenderProps, + type FieldPath, + type FieldValues, + type Mode, + useForm, + type UseFormReturn, +} from 'react-hook-form'; +import * as z from 'zod'; import type { routeMiddlewareSchema } from '../../api/modules/middleware/route'; -import type { ItemAutoFormProps } from './fields/item'; import { useCaptcha } from '../../hooks/use-captcha'; +import { + getDefaults, + getNestedParam, + getZodInputParams, +} from '../../lib/helpers/auto-form'; import { Button } from '../ui/button'; import { DialogClose, DialogFooter, useDialog } from '../ui/dialog'; -import { Form } from '../ui/form'; -import { ItemAutoForm } from './fields/item'; +import { Form, FormField } from '../ui/form'; + +export interface ItemAutoFormComponentProps { + description?: React.ReactNode; + field: ControllerRenderProps; + label?: React.ReactNode; + otherProps: { + enum?: string[]; + isOptional?: boolean; + maxLength?: number; + minLength?: number; + pattern?: string; + type?: string; + }; +} -export type AutoFormOnSubmit = ( +type ItemAutoFormProps< + T extends z.ZodObject = z.ZodObject, + TName extends FieldPath> = FieldPath>, +> = + | { + component: (props: ItemAutoFormComponentProps) => React.ReactNode; + id: TName; + } + | { + component?: never; + description?: React.ReactNode; + id: TName; + label?: React.ReactNode; + }; + +export type AutoFormOnSubmit< + T extends z.ZodObject, + TContext = unknown, +> = ( values: z.infer, - form: UseFormReturn>, + form: UseFormReturn, TContext, z.output>, options: { captchaToken: string; }, ) => Promise | void; export function AutoForm< - T extends - | z.ZodEffects> - | z.ZodObject, + T extends z.ZodObject, TContext = unknown, >({ formSchema, + mode, onSubmit: onSubmitProp, + captcha, fields, submitButtonProps, - mode, - captcha, ...props }: Omit, 'onSubmit'> & { captcha?: z.infer['captcha']; fields: ItemAutoFormProps[]; formSchema: T; mode?: Mode; - onSubmit?: AutoFormOnSubmit; + onSubmit?: AutoFormOnSubmit; submitButtonProps?: Omit< React.ComponentProps, 'isLoading' | 'type' @@ -56,21 +92,19 @@ export function AutoForm< onReset: onResetCaptcha, } = useCaptcha(captcha); const { setIsDirty } = useDialog(); - const objectFormSchema = getObjectFormSchema(formSchema); - const defaultValues = getDefaultValues(objectFormSchema) as DefaultValues< - z.infer - >; const t = useTranslations('core.global'); - const form = useForm, TContext>({ + const jsonSchema: z.core.JSONSchema.JSONSchema = z.toJSONSchema(formSchema); + const inputParams = getZodInputParams(jsonSchema); + const form = useForm, TContext, z.core.output>({ resolver: zodResolver(formSchema), - defaultValues, + defaultValues: getDefaults(jsonSchema), mode, }); const onSubmit = async (values: z.infer) => { const parsedValues = formSchema.safeParse(values); if (parsedValues.success) { - await onSubmitProp?.(parsedValues.data as z.infer, form, { + await onSubmitProp?.(parsedValues.data, form, { captchaToken: captcha ? await getTokenCaptcha() : '', }); @@ -98,9 +132,69 @@ export function AutoForm< return (
- {fields.map(field => ( - - ))} + {fields.map(item => { + const params = getNestedParam(inputParams, item.id); + if (!params) return null; + + if (!item.component && (item.label || item.description)) { + return ( +
+ {item.label && ( + + {item.label} + + )} + {item.description && ( +
+ {item.description} +
+ )} +
+ ); + } + + if (!item.component) return null; + + return ( + { + return ( + <> + {item.component({ + field, + description: + typeof params.description === 'string' + ? params.description + : '', + otherProps: { + isOptional: !params.required, + enum: Array.isArray(params.enum) + ? params.enum + : undefined, + maxLength: + typeof params.maxLength === 'number' + ? params.maxLength + : undefined, + minLength: + typeof params.minLength === 'number' + ? params.minLength + : undefined, + pattern: + typeof params.pattern === 'string' + ? params.pattern + : undefined, + type: params.type === 'string' ? params.type : undefined, + }, + })} + + ); + }} + /> + ); + })} + {captcha &&
} {setIsDirty ? ( diff --git a/packages/vitnode/src/components/form/fields/checkbox.tsx b/packages/vitnode/src/components/form/fields/checkbox.tsx index 02dcf75fc..70f323d8b 100644 --- a/packages/vitnode/src/components/form/fields/checkbox.tsx +++ b/packages/vitnode/src/components/form/fields/checkbox.tsx @@ -1,45 +1,41 @@ -import type { z } from 'zod'; - -import { Checkbox } from '@/components/ui/checkbox'; -import { FormControl, FormItem, FormMessage } from '@/components/ui/form'; - -import type { ItemAutoFormComponentProps } from './item'; +import type { ItemAutoFormComponentProps } from '../auto-form'; +import { Checkbox } from '../../ui/checkbox'; +import { FormControl, FormItem, FormMessage } from '../../ui/form'; import { AutoFormDesc } from '../common/desc'; import { AutoFormLabel } from '../common/label'; -export function AutoFormCheckbox({ +export const AutoFormCheckbox = ({ label, - field, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - shape: _, description, + otherProps: { isOptional }, + field, ...props -}: ItemAutoFormComponentProps & - Omit, 'checked'> & { - description?: React.ReactNode; - label?: React.ReactNode; - }) { +}: ItemAutoFormComponentProps & + Omit, 'checked'>) => { return ( { field.onChange(e); props.onCheckedChange?.(e); }} + {...field} {...props} /> {!!(label ?? description) && (
- {label && {label}} + {label && ( + {label} + )} {description && {description}}
)}
); -} +}; diff --git a/packages/vitnode/src/components/form/fields/combobox-async.tsx b/packages/vitnode/src/components/form/fields/combobox-async.tsx index aafca888e..7bf66e800 100644 --- a/packages/vitnode/src/components/form/fields/combobox-async.tsx +++ b/packages/vitnode/src/components/form/fields/combobox-async.tsx @@ -1,5 +1,3 @@ -import type { z } from 'zod'; - import { useQuery } from '@tanstack/react-query'; import { Check, ChevronsUpDown } from 'lucide-react'; import { useTranslations } from 'next-intl'; @@ -23,27 +21,25 @@ import { } from '@/components/ui/popover'; import { cn } from '@/lib/utils'; -import type { ItemAutoFormComponentProps } from './item'; +import type { ItemAutoFormComponentProps } from '../auto-form'; import { Skeleton } from '../../ui/skeleton'; import { AutoFormDesc } from '../common/desc'; import { AutoFormLabel } from '../common/label'; -export function AutoFormComboboxAsync({ +export const AutoFormComboboxAsync = ({ label, field, description, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - shape: _s, placeholder, className, id, + otherProps: { isOptional }, searchPlaceholder, fetchData, ...props -}: ItemAutoFormComponentProps & +}: ItemAutoFormComponentProps & Omit, 'role' | 'variant'> & { - description?: React.ReactNode; fetchData: (params: { search: string }) => | Promise< { @@ -56,10 +52,9 @@ export function AutoFormComboboxAsync({ value: string; }[]; id: string; - label?: React.ReactNode; placeholder?: string; searchPlaceholder?: string; - }) { + }) => { const t = useTranslations('core.global'); const [search, setSearch] = React.useState(''); const { data, isLoading } = useQuery({ @@ -75,7 +70,7 @@ export function AutoFormComboboxAsync({ return ( - {label && {label}} + {label && {label}} @@ -91,9 +86,7 @@ export function AutoFormComboboxAsync({ variant="outline" {...props} > - {field.value && field.value.label - ? field.value.label - : (placeholder ?? t('select_option'))} + {field.value?.label ?? placeholder ?? t('select_option')} @@ -155,4 +148,4 @@ export function AutoFormComboboxAsync({ ); -} +}; diff --git a/packages/vitnode/src/components/form/fields/combobox.tsx b/packages/vitnode/src/components/form/fields/combobox.tsx index 3b9064784..d4ebfce73 100644 --- a/packages/vitnode/src/components/form/fields/combobox.tsx +++ b/packages/vitnode/src/components/form/fields/combobox.tsx @@ -1,5 +1,3 @@ -import type { z } from 'zod'; - import { Check, ChevronsUpDown } from 'lucide-react'; import { useTranslations } from 'next-intl'; import React from 'react'; @@ -19,37 +17,32 @@ import { PopoverContent, PopoverTrigger, } from '@/components/ui/popover'; -import { getBaseSchema } from '@/lib/helpers/auto-form'; import { cn } from '@/lib/utils'; -import type { ItemAutoFormComponentProps } from './item'; +import type { ItemAutoFormComponentProps } from '../auto-form'; import { AutoFormDesc } from '../common/desc'; import { AutoFormLabel } from '../common/label'; -export function AutoFormCombobox({ +export const AutoFormCombobox = ({ label, field, description, - shape, placeholder, className, + otherProps: { enum: enumValues = [], isOptional }, labels = [], searchPlaceholder, ...props -}: ItemAutoFormComponentProps & +}: ItemAutoFormComponentProps & Omit, 'role' | 'variant'> & { - description?: React.ReactNode; - label?: React.ReactNode; labels?: { label: string; value: string }[]; placeholder?: string; searchPlaceholder?: string; - }) { + }) => { const t = useTranslations('core.global'); - const baseValues = ( - getBaseSchema(shape, true) as unknown as z.ZodEnum<[string, ...string[]]> - )._def.values; - const values: { label: string; value: string }[] = baseValues.map(value => { + + const values: { label: string; value: string }[] = enumValues.map(value => { const label = labels.find(l => l.value === value)?.label; return { @@ -60,7 +53,7 @@ export function AutoFormCombobox({ return ( - {label && {label}} + {label && {label}} @@ -119,4 +112,4 @@ export function AutoFormCombobox({ ); -} +}; diff --git a/packages/vitnode/src/components/form/fields/input.tsx b/packages/vitnode/src/components/form/fields/input.tsx index 255b50c0e..7ad2b3f85 100644 --- a/packages/vitnode/src/components/form/fields/input.tsx +++ b/packages/vitnode/src/components/form/fields/input.tsx @@ -1,33 +1,26 @@ -import type { z } from 'zod'; - -import React from 'react'; - -import { FormControl, FormItem, FormMessage } from '@/components/ui/form'; -import { Input } from '@/components/ui/input'; - -import type { ItemAutoFormComponentProps } from './item'; +import type { ItemAutoFormComponentProps } from '../auto-form'; +import { FormControl, FormItem, FormMessage } from '../../ui/form'; +import { Input } from '../../ui/input'; import { AutoFormDesc } from '../common/desc'; import { AutoFormLabel } from '../common/label'; -export function AutoFormInput({ +export const AutoFormInput = ({ label, - field, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - shape: _, description, + otherProps: { isOptional, maxLength, minLength, pattern, type }, + field, ...props -}: ItemAutoFormComponentProps & - Omit, 'value'> & { - description?: React.ReactNode; - label?: React.ReactNode; - }) { +}: ItemAutoFormComponentProps & + Omit, 'value'>) => { return ( - {label && {label}} - + {label && {label}} { field.onBlur(); props.onBlur?.(e); @@ -36,6 +29,8 @@ export function AutoFormInput({ field.onChange(e); props.onChange?.(e); }} + pattern={pattern} + type={type ?? 'text'} value={field.value ?? ''} {...props} /> @@ -45,4 +40,4 @@ export function AutoFormInput({ ); -} +}; diff --git a/packages/vitnode/src/components/form/fields/item.tsx b/packages/vitnode/src/components/form/fields/item.tsx deleted file mode 100644 index 5b70efc22..000000000 --- a/packages/vitnode/src/components/form/fields/item.tsx +++ /dev/null @@ -1,55 +0,0 @@ -import type { - ControllerRenderProps, - FieldPath, - FieldValues, -} from 'react-hook-form'; -import type { z } from 'zod'; - -import { FormField } from '@/components/ui/form'; -import { getShapeFromSchema } from '@/lib/helpers/auto-form'; - -export interface ItemAutoFormComponentProps< - T extends z.ZodTypeAny, - TName extends FieldPath> = FieldPath>, -> { - field: ControllerRenderProps; - shape: z.ZodAny; -} - -export interface ItemAutoFormProps< - T extends z.ZodTypeAny, - TName extends FieldPath> = FieldPath>, -> { - component: (props: ItemAutoFormComponentProps) => React.ReactNode; - id: TName; -} - -export function ItemAutoForm< - T extends - | z.ZodEffects> - | z.ZodObject, - TName extends FieldPath> = FieldPath>, ->({ - id, - component, - formSchema, -}: ItemAutoFormProps & { formSchema: T }) { - let shape: null | z.ZodAny = null; - const ids = id.split('.'); - for (const id of ids) { - shape = getShapeFromSchema( - shape ? (shape as unknown as z.ZodObject) : formSchema, - id, - ); - } - if (!shape) return null; - - return ( - { - return <>{component({ field, shape })}; - }} - /> - ); -} diff --git a/packages/vitnode/src/components/form/fields/radio-group.tsx b/packages/vitnode/src/components/form/fields/radio-group.tsx index dc2f78a52..91005e3eb 100644 --- a/packages/vitnode/src/components/form/fields/radio-group.tsx +++ b/packages/vitnode/src/components/form/fields/radio-group.tsx @@ -1,5 +1,3 @@ -import type { z } from 'zod'; - import React from 'react'; import { @@ -9,30 +7,24 @@ import { FormMessage, } from '@/components/ui/form'; import { RadioGroup, RadioGroupItem } from '@/components/ui/radio-group'; -import { getBaseSchema } from '@/lib/helpers/auto-form'; -import type { ItemAutoFormComponentProps } from './item'; +import type { ItemAutoFormComponentProps } from '../auto-form'; import { AutoFormDesc } from '../common/desc'; import { AutoFormLabel } from '../common/label'; -export function AutoFormRadioGroup({ +export const AutoFormRadioGroup = ({ label, field, description, - shape, + otherProps: { enum: enumValues = [], isOptional }, labels = [], ...props -}: ItemAutoFormComponentProps & +}: ItemAutoFormComponentProps & Omit, 'value'> & { - description?: React.ReactNode; - label?: React.ReactNode; labels?: { label: string; value: string }[]; - }) { - const baseValues = ( - getBaseSchema(shape, true) as unknown as z.ZodEnum<[string, ...string[]]> - )._def.values; - const values: { label: string; value: string }[] = baseValues.map(value => { + }) => { + const values: { label: string; value: string }[] = enumValues.map(value => { const label = labels.find(l => l.value === value)?.label; return { @@ -43,7 +35,7 @@ export function AutoFormRadioGroup({ return ( - {label && {label}} + {label && {label}} ({ ); -} +}; diff --git a/packages/vitnode/src/components/form/fields/select.tsx b/packages/vitnode/src/components/form/fields/select.tsx index 2d75fd168..87960c915 100644 --- a/packages/vitnode/src/components/form/fields/select.tsx +++ b/packages/vitnode/src/components/form/fields/select.tsx @@ -1,5 +1,3 @@ -import type { z } from 'zod'; - import { useTranslations } from 'next-intl'; import React from 'react'; @@ -11,33 +9,27 @@ import { SelectTrigger, SelectValue, } from '@/components/ui/select'; -import { getBaseSchema } from '@/lib/helpers/auto-form'; -import type { ItemAutoFormComponentProps } from './item'; +import type { ItemAutoFormComponentProps } from '../auto-form'; import { AutoFormDesc } from '../common/desc'; import { AutoFormLabel } from '../common/label'; -export function AutoFormSelect({ +export const AutoFormSelect = ({ label, field, description, - shape, + otherProps: { enum: enumValues = [], isOptional }, placeholder, labels = [], ...props -}: ItemAutoFormComponentProps & +}: ItemAutoFormComponentProps & Omit, 'value'> & { - description?: React.ReactNode; - label?: React.ReactNode; labels?: { label: string; value: string }[]; placeholder?: string; - }) { + }) => { const t = useTranslations('core.global'); - const baseValues = ( - getBaseSchema(shape, true) as unknown as z.ZodEnum<[string, ...string[]]> - )._def.values; - const values: { label: string; value: string }[] = baseValues.map(value => { + const values: { label: string; value: string }[] = enumValues.map(value => { const label = labels.find(l => l.value === value)?.label; return { @@ -52,7 +44,7 @@ export function AutoFormSelect({ return ( - {label && {label}} + {label && {label}}