@@ -30,8 +30,8 @@ export interface CreateSerializationAdapterOptions<TInput, TOutput> {
3030  fromSerializable : ( value : TOutput )  =>  TInput 
3131} 
3232
33- export  type  ValidateSerializable < T ,  TSerializable >  =   T   extends   unknown 
34-   ?  T  extends  ReadonlyArray < unknown > 
33+ export  type  ValidateSerializable < T ,  TSerializable >  = 
34+   T  extends  ReadonlyArray < unknown > 
3535    ? ValidateSerializableArray < T ,  TSerializable > 
3636    : T  extends  TSerializable 
3737      ? T 
@@ -45,8 +45,9 @@ export type ValidateSerializable<T, TSerializable> = T extends unknown
4545              ? ValidateSerializableSet < T ,  TSerializable > 
4646              : T  extends  Map < any ,  any > 
4747                ? ValidateSerializableMap < T ,  TSerializable > 
48-                 : {  [ K  in  keyof  T ] : ValidateSerializable < T [ K ] ,  TSerializable >  } 
49-   : never 
48+                 : { 
49+                     [ K  in  keyof  T ] : ValidateSerializable < T [ K ] ,  TSerializable > 
50+                   } 
5051
5152export  type  ValidateSerializablePromise < T ,  TSerializable >  = 
5253  T  extends  Promise < infer TAwaited > 
@@ -71,30 +72,27 @@ export type ValidateSerializableMap<T, TSerializable> =
7172      > 
7273    : never 
7374
74- type  ApplyArrayValidation < 
75-   TValue , 
76-   TSerializable , 
77-   TKind  extends  'input'  |  'result' , 
78- >  =  TKind  extends  'input' 
79-   ? ValidateSerializable < TValue ,  TSerializable > 
80-   : ValidateSerializableResult < TValue ,  TSerializable > 
81- 
82- type  ValidateSerializableArrayCore < 
75+ type  ValidateSerializableArray < 
8376  T  extends  ReadonlyArray < unknown > , 
8477  TSerializable , 
85-   TKind  extends  'input'  |  'result' , 
86- >  =  T  extends  any 
87-   ? number  extends  T [ 'length' ] 
88-     ? T  extends  Array < infer U > 
89-       ? Array < ApplyArrayValidation < U ,  TSerializable ,  TKind > > 
90-       : ReadonlyArray < ApplyArrayValidation < T [ number ] ,  TSerializable ,  TKind > > 
91-     : {  [ K  in  keyof  T ] : ApplyArrayValidation < T [ K ] ,  TSerializable ,  TKind >  } 
92-   : never 
78+ >  =  number  extends  T [ 'length' ] 
79+   ? T  extends  Array < infer U > 
80+     ? Array < ValidateSerializable < U ,  TSerializable > > 
81+     : ReadonlyArray < ValidateSerializable < T [ number ] ,  TSerializable > > 
82+   : ValidateSerializableTuple < T ,  TSerializable > 
9383
94- type  ValidateSerializableArray < 
84+ type  ValidateSerializableTuple < 
9585  T  extends  ReadonlyArray < unknown > , 
9686  TSerializable , 
97- >  =  ValidateSerializableArrayCore < T ,  TSerializable ,  'input' > 
87+ >  =  T  extends  readonly  [ infer THead ,  ...infer TTail ] 
88+   ? readonly  [ 
89+       ValidateSerializable < THead ,  TSerializable > , 
90+       ...ValidateSerializableTuple < 
91+         TTail  extends  ReadonlyArray < unknown >  ? TTail  : [ ] , 
92+         TSerializable 
93+       > , 
94+     ] 
95+   : T 
9896
9997export  type  RegisteredReadableStream  = 
10098  unknown  extends  SerializerExtensions [ 'ReadableStream' ] 
@@ -199,26 +197,38 @@ export type RegisteredSerializationAdapters<TRegister> = RegisteredConfigType<
199197export  type  ValidateSerializableInputResult < TRegister ,  T >  = 
200198  ValidateSerializableResult < T ,  RegisteredSerializableInput < TRegister > > 
201199
202- export  type  ValidateSerializableResult < T ,  TSerializable >  =   T   extends   unknown 
203-   ?  T  extends  ReadonlyArray < unknown > 
200+ export  type  ValidateSerializableResult < T ,  TSerializable >  = 
201+   T  extends  ReadonlyArray < unknown > 
204202    ? ValidateSerializableResultArray < T ,  TSerializable > 
205203    : T  extends  TSerializable 
206204      ? T 
207-       : T  extends  ( ...args : Array < any > )  =>  any 
208-         ? 'Function is not serializable' 
209-         : unknown  extends  SerializerExtensions [ 'ReadableStream' ] 
210-           ? {  [ K  in  keyof  T ] : ValidateSerializableResult < T [ K ] ,  TSerializable >  } 
211-           : T  extends  SerializerExtensions [ 'ReadableStream' ] 
212-             ? ReadableStream 
213-             : { 
214-                 [ K  in  keyof  T ] : ValidateSerializableResult < T [ K ] ,  TSerializable > 
215-               } 
216-   : never 
205+       : unknown  extends  SerializerExtensions [ 'ReadableStream' ] 
206+         ? {  [ K  in  keyof  T ] : ValidateSerializableResult < T [ K ] ,  TSerializable >  } 
207+         : T  extends  SerializerExtensions [ 'ReadableStream' ] 
208+           ? ReadableStream 
209+           : {  [ K  in  keyof  T ] : ValidateSerializableResult < T [ K ] ,  TSerializable >  } 
217210
218211type  ValidateSerializableResultArray < 
219212  T  extends  ReadonlyArray < unknown > , 
220213  TSerializable , 
221- >  =  ValidateSerializableArrayCore < T ,  TSerializable ,  'result' > 
214+ >  =  number  extends  T [ 'length' ] 
215+   ? T  extends  Array < infer U > 
216+     ? Array < ValidateSerializableResult < U ,  TSerializable > > 
217+     : ReadonlyArray < ValidateSerializableResult < T [ number ] ,  TSerializable > > 
218+   : ValidateSerializableResultTuple < T ,  TSerializable > 
219+ 
220+ type  ValidateSerializableResultTuple < 
221+   T  extends  ReadonlyArray < unknown > , 
222+   TSerializable , 
223+ >  =  T  extends  readonly  [ infer THead ,  ...infer TTail ] 
224+   ? readonly  [ 
225+       ValidateSerializableResult < THead ,  TSerializable > , 
226+       ...ValidateSerializableResultTuple < 
227+         TTail  extends  ReadonlyArray < unknown >  ? TTail  : [ ] , 
228+         TSerializable 
229+       > , 
230+     ] 
231+   : T 
222232
223233export  type  RegisteredSSROption < TRegister >  = 
224234  unknown  extends  RegisteredConfigType < TRegister ,  'defaultSsr' > 
0 commit comments