Răsfoiți Sursa

upgrade to zod 4

Chris Tate 5 luni în urmă
părinte
comite
3141cc1881

+ 1 - 1
apps/web/app/docs/installation/page.tsx

@@ -38,7 +38,7 @@ bun add @json-render/core @json-render/react`}</Code>
           <code className="text-foreground">react</code> ^19.0.0
         </li>
         <li>
-          <code className="text-foreground">zod</code> ^3.0.0
+          <code className="text-foreground">zod</code> ^4.0.0
         </li>
       </ul>
       <Code lang="bash">npm install react zod</Code>

+ 1 - 1
apps/web/package.json

@@ -30,7 +30,7 @@
     "shiki": "^3.21.0",
     "sonner": "^2.0.7",
     "tailwind-merge": "^3.4.0",
-    "zod": "^3.24.0"
+    "zod": "^4.0.0"
   },
   "devDependencies": {
     "@repo/eslint-config": "workspace:*",

+ 1 - 1
examples/dashboard/package.json

@@ -17,7 +17,7 @@
     "next": "16.1.1",
     "react": "19.2.3",
     "react-dom": "19.2.3",
-    "zod": "^3.24.0"
+    "zod": "^4.0.0"
   },
   "devDependencies": {
     "@repo/eslint-config": "workspace:*",

+ 2 - 2
packages/core/package.json

@@ -45,7 +45,7 @@
     "typecheck": "tsc --noEmit"
   },
   "dependencies": {
-    "zod": "^3.23.8"
+    "zod": "^4.0.0"
   },
   "devDependencies": {
     "@repo/typescript-config": "workspace:*",
@@ -53,6 +53,6 @@
     "typescript": "^5.4.5"
   },
   "peerDependencies": {
-    "zod": "^3.0.0"
+    "zod": "^4.0.0"
   }
 }

+ 3 - 3
packages/core/src/actions.ts

@@ -60,7 +60,7 @@ export const ActionConfirmSchema = z.object({
  */
 export const ActionOnSuccessSchema = z.union([
   z.object({ navigate: z.string() }),
-  z.object({ set: z.record(z.unknown()) }),
+  z.object({ set: z.record(z.string(), z.unknown()) }),
   z.object({ action: z.string() }),
 ]);
 
@@ -68,7 +68,7 @@ export const ActionOnSuccessSchema = z.union([
  * Schema for error handlers
  */
 export const ActionOnErrorSchema = z.union([
-  z.object({ set: z.record(z.unknown()) }),
+  z.object({ set: z.record(z.string(), z.unknown()) }),
   z.object({ action: z.string() }),
 ]);
 
@@ -77,7 +77,7 @@ export const ActionOnErrorSchema = z.union([
  */
 export const ActionSchema = z.object({
   name: z.string(),
-  params: z.record(DynamicValueSchema).optional(),
+  params: z.record(z.string(), DynamicValueSchema).optional(),
   confirm: ActionConfirmSchema.optional(),
   onSuccess: ActionOnSuccessSchema.optional(),
   onError: ActionOnErrorSchema.optional(),

+ 2 - 2
packages/core/src/catalog.ts

@@ -159,7 +159,7 @@ export function createCatalog<
     elementSchema = z.object({
       key: z.string(),
       type: z.string(),
-      props: z.record(z.unknown()),
+      props: z.record(z.string(), z.unknown()),
       children: z.array(z.string()).optional(),
       parentKey: z.string().nullable().optional(),
       visible: VisibilityConditionSchema.optional(),
@@ -177,7 +177,7 @@ export function createCatalog<
   // Create tree schema
   const treeSchema = z.object({
     root: z.string(),
-    elements: z.record(elementSchema),
+    elements: z.record(z.string(), elementSchema),
   }) as unknown as z.ZodType<UITree>;
 
   return {

+ 1 - 1
packages/core/src/validation.ts

@@ -32,7 +32,7 @@ export interface ValidationConfig {
  */
 export const ValidationCheckSchema = z.object({
   fn: z.string(),
-  args: z.record(DynamicValueSchema).optional(),
+  args: z.record(z.string(), DynamicValueSchema).optional(),
   message: z.string(),
 });
 

+ 22 - 22
pnpm-lock.yaml

@@ -40,7 +40,7 @@ importers:
     dependencies:
       '@ai-sdk/gateway':
         specifier: ^3.0.13
-        version: 3.0.13(zod@3.25.76)
+        version: 3.0.13(zod@4.3.5)
       '@json-render/core':
         specifier: workspace:*
         version: link:../../packages/core
@@ -61,7 +61,7 @@ importers:
         version: 1.3.1(next@16.1.1(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)
       ai:
         specifier: ^6.0.33
-        version: 6.0.33(zod@3.25.76)
+        version: 6.0.33(zod@4.3.5)
       class-variance-authority:
         specifier: ^0.7.1
         version: 0.7.1
@@ -93,8 +93,8 @@ importers:
         specifier: ^3.4.0
         version: 3.4.0
       zod:
-        specifier: ^3.24.0
-        version: 3.25.76
+        specifier: ^4.0.0
+        version: 4.3.5
     devDependencies:
       '@repo/eslint-config':
         specifier: workspace:*
@@ -134,7 +134,7 @@ importers:
     dependencies:
       '@ai-sdk/gateway':
         specifier: ^3.0.13
-        version: 3.0.13(zod@3.25.76)
+        version: 3.0.13(zod@4.3.5)
       '@json-render/core':
         specifier: workspace:*
         version: link:../../packages/core
@@ -143,7 +143,7 @@ importers:
         version: link:../../packages/react
       ai:
         specifier: ^6.0.33
-        version: 6.0.33(zod@3.25.76)
+        version: 6.0.33(zod@4.3.5)
       next:
         specifier: 16.1.1
         version: 16.1.1(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
@@ -154,8 +154,8 @@ importers:
         specifier: 19.2.3
         version: 19.2.3(react@19.2.3)
       zod:
-        specifier: ^3.24.0
-        version: 3.25.76
+        specifier: ^4.0.0
+        version: 4.3.5
     devDependencies:
       '@repo/eslint-config':
         specifier: workspace:*
@@ -179,8 +179,8 @@ importers:
   packages/core:
     dependencies:
       zod:
-        specifier: ^3.23.8
-        version: 3.25.76
+        specifier: ^4.0.0
+        version: 4.3.5
     devDependencies:
       '@repo/typescript-config':
         specifier: workspace:*
@@ -3158,8 +3158,8 @@ packages:
     resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
     engines: {node: '>=10'}
 
-  zod@3.25.76:
-    resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==}
+  zod@4.3.5:
+    resolution: {integrity: sha512-k7Nwx6vuWx1IJ9Bjuf4Zt1PEllcwe7cls3VNzm4CQ1/hgtFUK2bRNG3rvnpPUhFjmqJKAKtjV576KnUkHocg/g==}
 
   zwitch@2.0.4:
     resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
@@ -3168,19 +3168,19 @@ snapshots:
 
   '@acemir/cssom@0.9.31': {}
 
-  '@ai-sdk/gateway@3.0.13(zod@3.25.76)':
+  '@ai-sdk/gateway@3.0.13(zod@4.3.5)':
     dependencies:
       '@ai-sdk/provider': 3.0.2
-      '@ai-sdk/provider-utils': 4.0.5(zod@3.25.76)
+      '@ai-sdk/provider-utils': 4.0.5(zod@4.3.5)
       '@vercel/oidc': 3.1.0
-      zod: 3.25.76
+      zod: 4.3.5
 
-  '@ai-sdk/provider-utils@4.0.5(zod@3.25.76)':
+  '@ai-sdk/provider-utils@4.0.5(zod@4.3.5)':
     dependencies:
       '@ai-sdk/provider': 3.0.2
       '@standard-schema/spec': 1.1.0
       eventsource-parser: 3.0.6
-      zod: 3.25.76
+      zod: 4.3.5
 
   '@ai-sdk/provider@3.0.2':
     dependencies:
@@ -4063,13 +4063,13 @@ snapshots:
 
   agent-base@7.1.4: {}
 
-  ai@6.0.33(zod@3.25.76):
+  ai@6.0.33(zod@4.3.5):
     dependencies:
-      '@ai-sdk/gateway': 3.0.13(zod@3.25.76)
+      '@ai-sdk/gateway': 3.0.13(zod@4.3.5)
       '@ai-sdk/provider': 3.0.2
-      '@ai-sdk/provider-utils': 4.0.5(zod@3.25.76)
+      '@ai-sdk/provider-utils': 4.0.5(zod@4.3.5)
       '@opentelemetry/api': 1.9.0
-      zod: 3.25.76
+      zod: 4.3.5
 
   ajv@6.12.6:
     dependencies:
@@ -6051,6 +6051,6 @@ snapshots:
 
   yocto-queue@0.1.0: {}
 
-  zod@3.25.76: {}
+  zod@4.3.5: {}
 
   zwitch@2.0.4: {}