@@ -619,39 +619,43 @@ test("output validators work for arrays objects and unions", async () => {
619619} ) ;
620620
621621test ( "zodOutputToConvex infers required types for fields with defaults" , ( ) => {
622- const ZSimpleObject = z . object ( {
622+ const zSimpleObject = z . object ( {
623623 age : z . number ( ) . default ( 25 ) ,
624624 name : z . string ( ) ,
625- status : z . union ( [ z . literal ( "active" ) , z . literal ( "inactive" ) ] ) . default ( "active" ) ,
625+ status : z
626+ . union ( [ z . literal ( "active" ) , z . literal ( "inactive" ) ] )
627+ . default ( "active" ) ,
626628 } ) ;
627- const _VSimpleObject = zodOutputToConvex ( ZSimpleObject ) ;
628- type TZodSimpleObject = z . infer < typeof ZSimpleObject > ;
629- type TConvexSimpleObject = Infer < typeof _VSimpleObject > ;
629+ const vSimpleObject = zodOutputToConvex ( zSimpleObject ) ;
630+ type TZodSimpleObject = z . infer < typeof zSimpleObject > ;
631+ type TConvexSimpleObject = Infer < typeof vSimpleObject > ;
630632
631633 // Fields with defaults should be required (not optional) in the output type
632- expectTypeOf < TConvexSimpleObject [ "age" ] > ( ) . toEqualTypeOf < TZodSimpleObject [ "age" ] > ( ) ;
634+ expectTypeOf < TConvexSimpleObject [ "age" ] > ( ) . toEqualTypeOf <
635+ TZodSimpleObject [ "age" ]
636+ > ( ) ;
633637 expectTypeOf < TConvexSimpleObject [ "status" ] > ( ) . toEqualTypeOf <
634638 TZodSimpleObject [ "status" ]
635639 > ( ) ;
636640 expectTypeOf < TConvexSimpleObject > ( ) . toEqualTypeOf < TZodSimpleObject > ( ) ;
637641
638642 // Validator objects should have isOptional: "required" for fields with defaults
639- expect ( _VSimpleObject . fields . age . isOptional ) . toBe ( "required" ) ;
640- expect ( _VSimpleObject . fields . status . isOptional ) . toBe ( "required" ) ;
641- expect ( _VSimpleObject . fields . name . isOptional ) . toBe ( "required" ) ;
643+ expect ( vSimpleObject . fields . age . isOptional ) . toBe ( "required" ) ;
644+ expect ( vSimpleObject . fields . status . isOptional ) . toBe ( "required" ) ;
645+ expect ( vSimpleObject . fields . name . isOptional ) . toBe ( "required" ) ;
642646
643647 // Test nested objects with defaults
644- const ZNestedObject = z . object ( {
648+ const zNestedObject = z . object ( {
645649 id : z . string ( ) ,
646650 profile : z . object ( {
647651 displayName : z . string ( ) . default ( "Anonymous" ) ,
648652 isPublic : z . boolean ( ) . default ( false ) ,
649653 } ) ,
650654 tags : z . array ( z . string ( ) ) . default ( [ ] ) ,
651655 } ) ;
652- const _VNestedObject = zodOutputToConvex ( ZNestedObject ) ;
653- type TZodNestedObject = z . infer < typeof ZNestedObject > ;
654- type TConvexNestedObject = Infer < typeof _VNestedObject > ;
656+ const vNestedObject = zodOutputToConvex ( zNestedObject ) ;
657+ type TZodNestedObject = z . infer < typeof zNestedObject > ;
658+ type TConvexNestedObject = Infer < typeof vNestedObject > ;
655659
656660 // Nested object fields with defaults should be required
657661 expectTypeOf < TConvexNestedObject [ "tags" ] > ( ) . toEqualTypeOf <
@@ -666,10 +670,14 @@ test("zodOutputToConvex infers required types for fields with defaults", () => {
666670 expectTypeOf < TConvexNestedObject > ( ) . toEqualTypeOf < TZodNestedObject > ( ) ;
667671
668672 // Nested validator objects should have isOptional: "required" for fields with defaults
669- expect ( _VNestedObject . fields . tags . isOptional ) . toBe ( "required" ) ;
670- expect ( _VNestedObject . fields . profile . fields . displayName . isOptional ) . toBe ( "required" ) ;
671- expect ( _VNestedObject . fields . profile . fields . isPublic . isOptional ) . toBe ( "required" ) ;
672- expect ( _VNestedObject . fields . id . isOptional ) . toBe ( "required" ) ;
673+ expect ( vNestedObject . fields . tags . isOptional ) . toBe ( "required" ) ;
674+ expect ( vNestedObject . fields . profile . fields . displayName . isOptional ) . toBe (
675+ "required" ,
676+ ) ;
677+ expect ( vNestedObject . fields . profile . fields . isPublic . isOptional ) . toBe (
678+ "required" ,
679+ ) ;
680+ expect ( vNestedObject . fields . id . isOptional ) . toBe ( "required" ) ;
673681} ) ;
674682
675683test ( "zod output compliance" , async ( ) => {
0 commit comments