Conversation
|
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
WalkthroughThis update primarily upgrades the Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant ZodSchema
participant Coercer
participant Converter
User->>ZodSchema: Define schema with .default(), .prefault(), or .catch()
User->>Coercer: Pass input for coercion
Coercer->>ZodSchema: Inspect schema type
alt default or prefault
Coercer->>ZodSchema: Check input for undefined
Coercer->>ZodSchema: Return default/prefault value if needed
else catch
Coercer->>ZodSchema: Coerce input without undefined check
end
Coercer-->>User: Return coerced value
User->>Converter: Convert schema to JSON Schema
Converter->>ZodSchema: Inspect schema type
alt default or prefault
Converter->>ZodSchema: Extract defaultValue property
Converter-->>User: JSON Schema with default
else catch
Converter->>ZodSchema: Convert inner type
Converter-->>User: JSON Schema for inner type
end
Poem
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
More templates
@orpc/arktype
@orpc/client
@orpc/nest
@orpc/contract
@orpc/openapi
@orpc/openapi-client
@orpc/react
@orpc/react-query
@orpc/server
@orpc/shared
@orpc/solid-query
@orpc/standard-server
@orpc/standard-server-fetch
@orpc/standard-server-node
@orpc/standard-server-peer
@orpc/svelte-query
@orpc/valibot
@orpc/vue-colada
@orpc/vue-query
@orpc/zod
commit: |
There was a problem hiding this comment.
Actionable comments posted: 3
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
Cache: Disabled due to data retention organization setting
Knowledge Base: Disabled due to data retention organization setting
⛔ Files ignored due to path filters (1)
pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (35)
packages/client/package.json(1 hunks)packages/contract/package.json(1 hunks)packages/nest/package.json(1 hunks)packages/openapi/package.json(1 hunks)packages/react-query/package.json(1 hunks)packages/react/package.json(1 hunks)packages/solid-query/package.json(1 hunks)packages/svelte-query/package.json(1 hunks)packages/vue-colada/package.json(1 hunks)packages/zod/package.json(1 hunks)packages/zod/src/zod4/coercer.combination.test.ts(2 hunks)packages/zod/src/zod4/coercer.native.test.ts(1 hunks)packages/zod/src/zod4/coercer.rest.test.ts(1 hunks)packages/zod/src/zod4/coercer.structure.test.ts(1 hunks)packages/zod/src/zod4/coercer.test.ts(1 hunks)packages/zod/src/zod4/coercer.ts(2 hunks)packages/zod/src/zod4/converter.combination.test.ts(1 hunks)packages/zod/src/zod4/converter.meta.test.ts(2 hunks)packages/zod/src/zod4/converter.native.test.ts(1 hunks)packages/zod/src/zod4/converter.number.test.ts(1 hunks)packages/zod/src/zod4/converter.processed.test.ts(1 hunks)packages/zod/src/zod4/converter.rest.test.ts(1 hunks)packages/zod/src/zod4/converter.string.test.ts(1 hunks)packages/zod/src/zod4/converter.structure.test.ts(2 hunks)packages/zod/src/zod4/converter.test.ts(2 hunks)packages/zod/src/zod4/converter.ts(4 hunks)packages/zod/src/zod4/registries.ts(1 hunks)playgrounds/astro/package.json(1 hunks)playgrounds/contract-first/package.json(1 hunks)playgrounds/nest/package.json(1 hunks)playgrounds/next/package.json(1 hunks)playgrounds/nuxt/package.json(1 hunks)playgrounds/solid-start/package.json(1 hunks)playgrounds/svelte-kit/package.json(1 hunks)playgrounds/tanstack-start/package.json(1 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (1)
packages/zod/src/zod4/converter.ts (1)
packages/zod/src/zod4/coercer.ts (1)
schema(45-346)
⏰ Context from checks skipped due to timeout of 90000ms (2)
- GitHub Check: publish-commit
- GitHub Check: lint
🔇 Additional comments (41)
playgrounds/next/package.json (1)
27-27:Details
✅ Verification successful
Confirm the Zod pre-release version
This change pinszodto3.25.0-beta.20250516T005923, aligning with the repository-wide upgrade. Ensure this beta release is published on npm to avoid installation failures.Run the following to verify availability:
🏁 Script executed:
npm view zod@3.25.0-beta.20250516T005923 versionLength of output: 78
Zod pre-release version confirmed
npm view zod@3.25.0-beta.20250516T005923 versionreturns3.25.0-beta.20250516T005923, confirming it’s published on npm and safe to install.playgrounds/tanstack-start/package.json (1)
31-31:Details
✅ Verification successful
Confirm availability of the Zod beta version
The
zoddevDependency has been bumped to3.25.0-beta.20250516T005923to align with the Zod v4 migration across the repo. Please verify that this pre-release exists on npm and can be resolved correctly.
🏁 Script executed:
#!/bin/bash # Verify that the Zod beta version is available on npm npm view zod@3.25.0-beta.20250516T005923 versionLength of output: 78
Zod beta version available on npm
Verified that
zod@3.25.0-beta.20250516T005923is published and resolvable on npm. No further action required.playgrounds/astro/package.json (1)
28-28:Details
✅ Verification successful
Confirm
zodbeta version consistency and availability
Please ensure that this exactzodversion (3.25.0-beta.20250516T005923) is intentionally pinned across all relatedpackage.jsonfiles and verify it’s published and installable from npm.
🏁 Script executed:
#!/bin/bash # List all 'zod' entries in the repo to check for consistent versioning rg -n '"zod":' . # Verify that the specified beta version exists on npm npm view zod versions --json | jq '.[] | select(.=="3.25.0-beta.20250516T005923")'Length of output: 1517
zod beta version pinning and npm availability confirmed
- All
package.jsonentries across playgrounds and packages reference"zod": "3.25.0-beta.20250516T005923".- The beta version
3.25.0-beta.20250516T005923is published and installable from npm.No further action required.
playgrounds/solid-start/package.json (1)
20-20:Details
✅ Verification successful
Verify pre-release Zod version availability and compatibility.
The change pins
zodto the exact beta version3.25.0-beta.20250516T005923. Please confirm this pre-release is published and installable, and that it works correctly in your build and tooling. Also ensure consistency with otherpackage.jsonfiles that were updated in this PR.Run the following script to validate the version on npm:
🏁 Script executed:
#!/usr/bin/env bash # Confirm that the beta version of zod is available on npm npm view zod@3.25.0-beta.20250516T005923 versionLength of output: 78
🏁 Script executed:
#!/usr/bin/env bash # Search for all zod dependency versions in package.json files to verify consistency rg -g '*.json' '"zod": ' -nLength of output: 1377
🏁 Script executed:
#!/usr/bin/env bash # Show context for zod entries in the root package.json of the zod package rg -n '"zod":' -C 3 packages/zod/package.jsonLength of output: 414
Confirmed Zod@3.25.0-beta.20250516T005923 availability and alignment
npm view confirms this beta is published and installable. All playgrounds and packages that depend on Zod now pin exactly3.25.0-beta.20250516T005923, and the corepackages/zod/package.jsonretains a peerDependency of>=3.24.2by design. No further action needed.playgrounds/contract-first/package.json (1)
22-22:Details
✅ Verification successful
Validate the beta version bump for Zod
Please confirm that switching to this exact pre-release (3.25.0-beta.20250516T005923) is intentional and that it doesn’t introduce breaking changes. Also ensure that everypackage.jsonin the repo is updated to the same Zod version to avoid mismatches.Run this script from the repo root to verify consistency:
🏁 Script executed:
#!/usr/bin/env bash set -e TARGET='\"zod\": \"3.25.0-beta.20250516T005923\"' echo "Checking Zod version across all package.json files..." mismatches=0 while IFS= read -r file; do if grep -q '"zod":' "$file" && ! grep -q "$TARGET" "$file"; then echo "Mismatch in $file: $(grep '"zod":' "$file")" mismatches=$((mismatches+1)) fi done < <(find . -type f -name 'package.json') if [ "$mismatches" -gt 0 ]; then echo "❌ Found $mismatches package.json with an incorrect Zod version." exit 1 else echo "✅ All Zod versions are consistent." fiLength of output: 339
I’ll re-run the consistency check using a simpler loop to avoid the
/dev/fderror:
🏁 Script executed:
#!/usr/bin/env bash set -e TARGET='"zod": "3.25.0-beta.20250516T005923"' echo "Checking Zod version across all package.json files..." mismatches=0 for file in $(find . -type f -name 'package.json'); do if grep -q '"zod":' "$file" && ! grep -q "$TARGET" "$file"; then echo "Mismatch in $file: $(grep '"zod":' "$file")" mismatches=$((mismatches+1)) fi done if [ "$mismatches" -gt 0 ]; then echo "❌ Found $mismatches package.json with an incorrect Zod version." exit 1 else echo "✅ All Zod versions are consistent." fiLength of output: 65866
Zod pre-release bump confirmed across local packages
All workspacepackage.jsonfiles under/,/packages, and/playgroundsreference"zod": "3.25.0-beta.20250516T005923". Only dependency manifests innode_modulesstill show older versions, which is expected. No further action required.playgrounds/nuxt/package.json (1)
22-22: Bumpzodto beta pre-release
Updated thezodversion from^3.24.2to3.25.0-beta.20250516T005923to align with Zod 4 support. Please ensure the lockfile (package-lock.json or yarn.lock) is regenerated and confirm that this specific pre-release is published and resolvable on npm.packages/zod/src/zod4/converter.rest.test.ts (1)
1-1: Use newzod/v4import path
The test now imports fromzod/v4instead of the oldzod4entrypoint, matching the updated Zod 4 module structure.packages/zod/src/zod4/coercer.rest.test.ts (1)
1-1: Switch import tozod/v4
Aligns the coercion tests with the new Zod 4 module path by importingzfromzod/v4.packages/zod/src/zod4/converter.combination.test.ts (1)
1-1: Upgrade test import tozod/v4
Updated the import for Zod tozod/v4to support Zod 4, consistent with other converter tests.packages/zod/src/zod4/converter.number.test.ts (1)
1-1: Import Zod fromzod/v4
Changed the import tozod/v4to match the new Zod 4 structure; numeric schema tests now reference the correct module.packages/zod/src/zod4/converter.processed.test.ts (1)
1-1: Consistent import update to zod v4
The default import path has been correctly changed from'zod4'to'zod/v4'to align with the new package structure.packages/zod/src/zod4/coercer.native.test.ts (1)
1-1: Align import with zod v4
Updated the default import to'zod/v4', matching the migration across all native coercion tests.packages/zod/src/zod4/coercer.structure.test.ts (1)
1-1: Import path updated for structure coercion tests
Changed import from'zod4'to'zod/v4'for consistency with the zod v4 submodule.packages/zod/src/zod4/converter.string.test.ts (1)
1-1: Update converter tests to use zod/v4
The import path correctly reflects the new zod v4 entry point.packages/zod/src/zod4/coercer.test.ts (1)
1-1: Switch to zod/v4 for coercer plugin tests
The module import is now aligned with the updated zod v4 structure (import * as z from 'zod/v4').packages/zod/src/zod4/converter.native.test.ts (1)
1-1: Align import path for Zod v4
Updated the import from the legacy'zod4'path to'zod/v4'to reflect the new package structure.packages/nest/package.json (1)
74-74: Update devDependency Zod to beta v4
Bumped"zod"to"3.25.0-beta.20250516T005923"in devDependencies to maintain consistency with the migration.packages/react/package.json (1)
56-56: Bump Zod to v4 beta in devDependencies
Updated"zod"to"3.25.0-beta.20250516T005923", aligning with the overall version strategy.packages/openapi/package.json (1)
72-72: Synchronize Zod beta version
Changed"zod"to"3.25.0-beta.20250516T005923"under devDependencies to match the unified beta release.packages/contract/package.json (1)
44-44: Sync devDependency Zod version
Updated"zod"to"3.25.0-beta.20250516T005923"in devDependencies to complete the Zod v4 upgrade.packages/solid-query/package.json (1)
49-49: Consistent Zod beta version bump
ThezoddevDependency was updated to3.25.0-beta.20250516T005923, aligning with the PR objective of uniform Zod v4 support across packages.packages/react-query/package.json (1)
50-50: Consistent Zod beta version bump
ThezoddevDependency was updated to3.25.0-beta.20250516T005923, consistent with the coordinated upgrade across your other packages.packages/svelte-query/package.json (1)
49-49: Consistent Zod beta version bump
ThezoddevDependency was updated to3.25.0-beta.20250516T005923, matching the version used in the rest of the monorepo.packages/client/package.json (1)
67-67: Consistent Zod beta version bump
ThezoddevDependency was updated to3.25.0-beta.20250516T005923, ensuring uniform Zod v4 beta usage across all client and plugin packages.packages/zod/src/zod4/converter.test.ts (2)
1-2: Verify new Zod import paths
The imports were updated to:import * as z from 'zod/v4' import * as zm from 'zod/v4-mini'Please confirm that these paths are valid exports in the
3.25.0-beta.20250516T005923release and resolve correctly in your build.
19-19: Approve test metadata update
The test name was changed to'zod mini', which correctly reflects the mini-variant import. No logic or assertion changes introduced.packages/vue-colada/package.json (1)
49-51: Dependency updates are in line with zod 4 compatibility workThese dependency updates align with the broader work to update dependencies across the monorepo. The additions of
@pinia/coladaand the specific versions of Vue and Pinia are appropriate for compatibility with the updated zod ecosystem.packages/zod/src/zod4/registries.ts (1)
2-3: Import path updates for Zod 4 compatibilityThe import paths have been correctly updated from
'@zod/core'to'zod/v4/core'to align with Zod 4's module structure. This change is consistent with the broader migration effort across the codebase.packages/zod/src/zod4/converter.meta.test.ts (3)
1-1: Import path updated for Zod 4 compatibilityThe import path has been correctly updated from
'zod4'to'zod/v4'to align with Zod 4's module structure.
67-71: Added test case for prefault schemaGood addition of a test case for the new
prefaultschema method introduced in Zod 4. This ensures the converter correctly handles this schema type.
75-75:Details
✅ Verification successful
Updated expected behavior for catch schema
The expected input validity flag for
string.catch("a")has been changed fromfalsetotrue. This appears to reflect a behavioral change in Zod 4.
🌐 Web query:
What is the behavior difference between catch() and default() methods in Zod 4?💡 Result:
Behavior Difference Between
.catch()and.default()in Zod 4.default(): Default Value for Undefined Input
- The
.default()method in Zod allows you to specify a default value that is used only when the input provided isundefined.- If the input is present and matches the base schema, it is parsed as usual.
- If the input is present but does not match the schema (i.e., it's invalid), Zod throws a validation error—it does not use the default value in this case.
- Use
.default()when you want to supply a value only for missing (undefined) fields, but still want invalid inputs to trigger an error[1]..catch(): Default Value for Any Parsing Error
- The
.catch()method also lets you specify a fallback value, but its behavior is broader.- If the input is
undefinedor if any validation error occurs (e.g., input with the wrong type or invalid value), Zod will not throw an error. Instead, it will return the specified catch value.- Use
.catch()when you want to avoid validation errors entirely and always receive some value, even if the input is present but doesn't match the schema[1][4][10].Comparison Table
Method Returns Default When Input is Undefined Returns Default When Input is Invalid Throws Error on Invalid Input .default()Yes No Yes .catch()Yes Yes No Example
Suppose you define a schema for user roles:
const roleSchema = z.enum(['Admin', 'User', 'Guest']);
roleSchema.default('User')will:
- Return
"User"if the input isundefined.- Throw an error if the input is anything other than
"Admin","User", or"Guest".roleSchema.catch('User')will:
- Return
"User"both if the input isundefinedor if the input is invalid (e.g.,"SuperAdmin",42, etc.)[1].Summary
- Use
.default()for optional fields with a fallback value, but strict validation for any provided input.- Use
.catch()for a forgiving schema that never throws and always returns a value, defaulting on any error (missing or invalid input)[1][4][10].Citations:
- 1: https://www.gybex.dev/blog/zod-default-and-catch-methods
- 2: https://zod.dev
- 3: colinhacks/zod#1227
- 4: https://zod.dev/?id=catch
- 5: colinhacks/zod#316
- 6: https://zod.dev/ERROR_HANDLING
- 7: https://www.jsdocs.io/package/zod
- 8: https://v4.zod.dev/api
- 9: https://zod.dev/?id=error-handling
- 10: https://zod.dev/README?id=catchall
Approve updated
.catch()expected behaviorThe input validity flag for
string.catch("a")should betruein Zod 4, since.catch()returns the fallback value on any parsing error (including invalid input) rather than throwing.• packages/zod/src/zod4/converter.meta.test.ts:75 – updated
input: [true, { type: 'string' }]now correctly reflects Zod 4’s documented behavior.packages/zod/src/zod4/coercer.combination.test.ts (1)
1-1: Import path updated for Zod 4 compatibilityThe import path has been correctly updated from
'zod4'to'zod/v4'to align with Zod 4's module structure.packages/zod/src/zod4/converter.structure.test.ts (2)
1-2: Import paths updated to match Zod v4 structure.The import paths have been updated from 'zod4' and '@zod/mini' to 'zod/v4' and 'zod/v4-mini' respectively, adapting to the new module structure in Zod v4.
32-36: New test case looks good.This test case verifies the conversion of a schema with both optional and default modifiers. The test ensures that array items of type string with a default value of 'a' are properly converted to the expected JSON schema.
packages/zod/package.json (1)
54-55:Details
❓ Verification inconclusive
Consider implications of using a beta version in production.
The update to a beta version of Zod (3.25.0-beta.20250516T005923) is appropriate for implementing Zod v4 features, but be cautious about using beta releases in production environments as they may contain breaking changes or bugs.
🌐 Web query:
Are there any known issues with zod version 3.25.0-beta.20250516T005923?💡 Result:
I don't have specific information about Zod version "3.25.0-beta.20250516T005923" as it appears to be a very recent beta version released today (May 16, 2025) based on the version number format.
Since this appears to be a brand new beta release:
- There may not be widespread documentation of issues yet
- Being a beta version, it's expected to potentially have some bugs or unfinished features
- The official Zod GitHub repository would be the best place to check for known issues
To get accurate information about any known issues with this specific beta version, I recommend:
- Checking the Zod GitHub repository issues page
- Reading the release notes for this specific version
- Joining the Zod community Discord if one exists
- Posting a question on Stack Overflow if you're experiencing a specific problem
If you're using this in a production environment, be aware that beta versions are generally not recommended for critical applications.
Review updated: Confirm beta stability before production usage
This Zod version is a fresh beta release with no reported issues so far, but beta releases can include breaking changes or bugs. Before rolling this into production, please:
- Verify there are no open issues specific to 3.25.0-beta.20250516T005923 on the Zod GitHub issues page
- Review the release notes for this beta to understand any unfinished or experimental features
- Consider testing critical flows thoroughly against this beta in a staging environment
- Stay connected with the Zod community (Discord, GitHub discussions) for early bug reports
packages/zod/src/zod4/coercer.ts (2)
3-25: Updated imports for Zod v4 compatibility.The imports have been updated from '@zod/core' to 'zod/v4/core' and
$ZodPrefaulthas been added to the import list, aligning with the Zod v4 module structure.
297-311: Improved handling of default, prefault, and catch schemas.The code now separates the handling of 'default'/'prefault' from 'catch' schemas, improving code clarity and maintainability:
- 'default' and 'prefault' types now return the value unchanged when undefined before coercing inner types
- 'catch' has been moved to its own case block, focusing only on coercing the inner type
This change correctly adapts to the Zod v4 schema behavior where prefault is a distinct schema type.
packages/zod/src/zod4/converter.ts (4)
21-21: Updated imports for Zod v4 compatibility.The imports have been updated to use the new 'zod/v4/core' path and added the
$ZodPrefaulttype to the imports list, aligning with the Zod v4 module structure.Also applies to: 31-31, 36-36
477-486: Enhanced schema handling for default and prefault types.The code now handles both 'default' and 'prefault' schema types, and accesses the default value through a property (
defaultValue) instead of a function call (defaultValue()), adapting to the Zod v4 API changes.
488-491: Simplified catch schema handling.The code for handling 'catch' schemas has been simplified by directly returning the result of the
#convertmethod call, making the code more concise and readable.
566-566: Improved array item schema handling for default values.Added a check for
schema.default !== undefinedin the condition, ensuring that schemas with default values are properly handled even when they're not required. This fixes a potential edge case where default values might be ignored in array items.
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (1)
packages/vue-colada/tests/shared.tsx (1)
13-13: Consider using a more precise type assertion instead ofanyThe
as anytype assertion was added to bypass TypeScript's type checking between the result ofcreatePinia()and what's expected by Vue's plugin system. While this works as a quick fix, usinganyloses type safety.Consider using a more specific type if available:
- createPinia() as any, + createPinia() as Pinia, // or the appropriate plugin typeAlternatively, you could check if updating the
@types/piniapackage or Vue's type definitions might resolve the type incompatibility without requiring the assertion.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
Cache: Disabled due to data retention organization setting
Knowledge Base: Disabled due to data retention organization setting
📒 Files selected for processing (2)
packages/vue-colada/tests/shared.tsx(1 hunks)packages/zod/src/zod4/coercer.combination.test.ts(2 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- packages/zod/src/zod4/coercer.combination.test.ts
⏰ Context from checks skipped due to timeout of 90000ms (2)
- GitHub Check: publish-commit
- GitHub Check: lint
Codecov ReportAll modified and coverable lines are covered by tests ✅ 📢 Thoughts on this report? Let us know! |
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (1)
package.json (1)
46-46: Review TypeScript version range
Switching from a fixed"5.8.3"to a caret range"^5.8.3"permits minor and patch upgrades, which can sometimes introduce unexpected issues. Ensure your CI enforcespnpm install --frozen-lockfileand runstsc --noEmitacross all workspaces to catch any regressions. If tighter control is needed, consider pinning to an exact version or adding anenginesfield to enforce the supported range.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
Cache: Disabled due to data retention organization setting
Knowledge Base: Disabled due to data retention organization setting
⛔ Files ignored due to path filters (1)
pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (11)
apps/content/package.json(1 hunks)package.json(2 hunks)packages/nest/package.json(1 hunks)packages/standard-server-node/package.json(1 hunks)packages/vue-query/package.json(1 hunks)playgrounds/astro/package.json(1 hunks)playgrounds/contract-first/package.json(1 hunks)playgrounds/nest/package.json(3 hunks)playgrounds/next/package.json(1 hunks)playgrounds/svelte-kit/package.json(1 hunks)playgrounds/tanstack-start/package.json(1 hunks)
✅ Files skipped from review due to trivial changes (4)
- packages/standard-server-node/package.json
- apps/content/package.json
- packages/vue-query/package.json
- playgrounds/next/package.json
🚧 Files skipped from review as they are similar to previous changes (6)
- playgrounds/astro/package.json
- playgrounds/contract-first/package.json
- packages/nest/package.json
- playgrounds/svelte-kit/package.json
- playgrounds/tanstack-start/package.json
- playgrounds/nest/package.json
⏰ Context from checks skipped due to timeout of 90000ms (2)
- GitHub Check: publish-commit
- GitHub Check: lint
🔇 Additional comments (1)
package.json (1)
36-36: Approve bump of @types/node to ^22.15.17
Updating to the latest Node.js type definitions helps ensure compatibility with new Node APIs.
Adapt current change from zod4, and improve a bit
Summary by CodeRabbit
zod,@tanstack/react-query,@types/node, andtypescript, to newer or beta versions.