@@ -337,6 +337,9 @@ type OptionalField = {
337337 [ OptionalKind ] : 'Optional'
338338}
339339
340+ type TrimArrayName < T extends string > =
341+ T extends `${infer Name } []` ? Name : T
342+
340343export type UnwrapSchema <
341344 Schema extends TSchema | string | undefined ,
342345 Definitions extends DefinitionBase [ 'typebox' ] = TModule < { } >
@@ -346,9 +349,17 @@ export type UnwrapSchema<
346349 ? Schema extends OptionalField
347350 ? Prettify < Partial < Static < Schema > > >
348351 : StaticDecode < Schema >
349- : Schema extends string
350- ? StaticDecode < TImport < UnwrapTypeModule < Definitions > , Schema > >
351- : unknown
352+ : Schema extends `${infer Key } []`
353+ ? Definitions extends Record < Key , infer NamedSchema >
354+ ? Array < NamedSchema >
355+ : StaticDecode < TImport < UnwrapTypeModule < Definitions > , TrimArrayName < Schema > > > [ ]
356+ : Schema extends string
357+ ? Definitions extends Record < Schema , infer NamedSchema >
358+ ? NamedSchema
359+ : StaticDecode <
360+ TImport < UnwrapTypeModule < Definitions > , Schema >
361+ >
362+ : unknown
352363
353364export type UnwrapBodySchema <
354365 Schema extends TSchema | string | undefined ,
@@ -359,9 +370,15 @@ export type UnwrapBodySchema<
359370 ? Schema extends OptionalField
360371 ? Prettify < Partial < Static < Schema > > > | null
361372 : StaticDecode < Schema >
362- : Schema extends string
363- ? Static < TImport < UnwrapTypeModule < Definitions > , Schema > >
364- : unknown
373+ : Schema extends `${infer Key } []`
374+ ? Definitions extends Record < Key , infer NamedSchema >
375+ ? Array < NamedSchema >
376+ : Static < TImport < UnwrapTypeModule < Definitions > , TrimArrayName < Schema > > > [ ]
377+ : Schema extends string
378+ ? Definitions extends Record < Schema , infer NamedSchema >
379+ ? NamedSchema
380+ : Static < TImport < UnwrapTypeModule < Definitions > , Schema > >
381+ : unknown
365382
366383export type IsNull < T > = [ T ] extends [ null ] ? true : false
367384
@@ -528,16 +545,17 @@ export type HTTPMethod =
528545 | 'ALL'
529546
530547export interface InputSchema < Name extends string = string > {
531- body ?: TSchema | Name
548+ body ?: TSchema | Name | `${ Name } []`
532549 headers ?: TObject | TNull | TUndefined | Name
533550 query ?: TObject | TNull | TUndefined | Name
534551 params ?: TObject | TNull | TUndefined | Name
535552 cookie ?: TObject | TNull | TUndefined | Name
536553 response ?:
537554 | TSchema
538555 | Record < number , TSchema >
556+ | `${Name } []`
539557 | Name
540- | Record < number , Name | TSchema >
558+ | Record < number , `${ Name } []` | Name | TSchema >
541559}
542560
543561export interface MergeSchema <
0 commit comments