@@ -23,7 +23,10 @@ expectAssignable(server.get('/', (req) => expectType<unknown>(req.body)))
23
23
// Remapping
24
24
// -------------------------------------------------------------------
25
25
26
- interface NumberProvider extends FastifyTypeProvider { output : number } // remap all schemas to numbers
26
+ interface NumberProvider extends FastifyTypeProvider {
27
+ validator : number
28
+ serializer : number
29
+ } // remap all schemas to numbers
27
30
28
31
expectAssignable ( server . withTypeProvider < NumberProvider > ( ) . get (
29
32
'/' ,
@@ -47,7 +50,7 @@ expectAssignable(server.withTypeProvider<NumberProvider>().get(
47
50
// Override
48
51
// -------------------------------------------------------------------
49
52
50
- interface OverriddenProvider extends FastifyTypeProvider { output : 'inferenced' }
53
+ interface OverriddenProvider extends FastifyTypeProvider { validator : 'inferenced' }
51
54
52
55
expectAssignable ( server . withTypeProvider < OverriddenProvider > ( ) . get < { Body : 'override' } > (
53
56
'/' ,
@@ -69,7 +72,10 @@ expectAssignable(server.withTypeProvider<OverriddenProvider>().get<{ Body: 'over
69
72
// TypeBox
70
73
// -------------------------------------------------------------------
71
74
72
- interface TypeBoxProvider extends FastifyTypeProvider { output : this[ 'input' ] extends TSchema ? Static < this[ 'input' ] > : unknown }
75
+ interface TypeBoxProvider extends FastifyTypeProvider {
76
+ validator : this[ 'schema' ] extends TSchema ? Static < this[ 'schema' ] > : unknown
77
+ serializer : this[ 'schema' ] extends TSchema ? Static < this[ 'schema' ] > : unknown
78
+ }
73
79
74
80
expectAssignable ( server . withTypeProvider < TypeBoxProvider > ( ) . get (
75
81
'/' ,
@@ -103,7 +109,10 @@ expectAssignable<FastifyInstance>(server.withTypeProvider<TypeBoxProvider>())
103
109
// JsonSchemaToTs
104
110
// -------------------------------------------------------------------
105
111
106
- interface JsonSchemaToTsProvider extends FastifyTypeProvider { output : this[ 'input' ] extends JSONSchema ? FromSchema < this[ 'input' ] > : unknown }
112
+ interface JsonSchemaToTsProvider extends FastifyTypeProvider {
113
+ validator : this[ 'schema' ] extends JSONSchema ? FromSchema < this[ 'schema' ] > : unknown
114
+ serializer : this[ 'schema' ] extends JSONSchema ? FromSchema < this[ 'schema' ] > : unknown
115
+ }
107
116
108
117
// explicitly setting schema `as const`
109
118
@@ -1003,7 +1012,7 @@ expectAssignable(server.withTypeProvider<JsonSchemaToTsProvider>().get<{Reply: b
1003
1012
// FastifyPlugin: Auxiliary
1004
1013
// -------------------------------------------------------------------
1005
1014
1006
- interface AuxiliaryPluginProvider extends FastifyTypeProvider { output : 'plugin-auxiliary' }
1015
+ interface AuxiliaryPluginProvider extends FastifyTypeProvider { validator : 'plugin-auxiliary' }
1007
1016
1008
1017
// Auxiliary plugins may have varying server types per application. Recommendation would be to explicitly remap instance provider context within plugin if required.
1009
1018
function plugin < T extends FastifyInstance > ( instance : T ) {
@@ -1032,7 +1041,7 @@ expectAssignable(server.withTypeProvider<AuxiliaryPluginProvider>().register(plu
1032
1041
// Handlers: Inline
1033
1042
// -------------------------------------------------------------------
1034
1043
1035
- interface InlineHandlerProvider extends FastifyTypeProvider { output : 'handler-inline' }
1044
+ interface InlineHandlerProvider extends FastifyTypeProvider { validator : 'handler-inline' }
1036
1045
1037
1046
// Inline handlers should infer for the request parameters (non-shared)
1038
1047
expectAssignable ( server . withTypeProvider < InlineHandlerProvider > ( ) . get (
@@ -1052,7 +1061,7 @@ expectAssignable(server.withTypeProvider<InlineHandlerProvider>().get(
1052
1061
// Handlers: Auxiliary
1053
1062
// -------------------------------------------------------------------
1054
1063
1055
- interface AuxiliaryHandlerProvider extends FastifyTypeProvider { output : 'handler-auxiliary' }
1064
+ interface AuxiliaryHandlerProvider extends FastifyTypeProvider { validator : 'handler-auxiliary' }
1056
1065
1057
1066
// Auxiliary handlers are likely shared for multiple routes and thus should infer as unknown due to potential varying parameters
1058
1067
function auxiliaryHandler ( request : FastifyRequest , reply : FastifyReply , done : HookHandlerDoneFunction ) : void {
@@ -1069,3 +1078,29 @@ expectAssignable(server.withTypeProvider<AuxiliaryHandlerProvider>().get(
1069
1078
expectType < 'handler-auxiliary' > ( req . body )
1070
1079
}
1071
1080
) )
1081
+
1082
+ // -------------------------------------------------------------------
1083
+ // Separate Providers
1084
+ // -------------------------------------------------------------------
1085
+
1086
+ interface SeparateProvider extends FastifyTypeProvider {
1087
+ validator : string
1088
+ serializer : Date
1089
+ }
1090
+
1091
+ expectAssignable ( server . withTypeProvider < SeparateProvider > ( ) . get (
1092
+ '/' ,
1093
+ {
1094
+ schema : {
1095
+ body : null ,
1096
+ response : {
1097
+ 200 : { type : 'string' }
1098
+ }
1099
+ }
1100
+ } ,
1101
+ ( req , res ) => {
1102
+ expectType < string > ( req . body )
1103
+
1104
+ res . send ( new Date ( ) )
1105
+ }
1106
+ ) )
0 commit comments