@@ -82,48 +82,137 @@ expectType<RouteError>(routeError);
82
82
const methodError = new MethodError ( 'Method not allowed' , 'POST' , '/users' ) ;
83
83
expectType < MethodError > ( methodError ) ;
84
84
85
- const getHandler : HandlerFunction < UserResponse > = ( req , res ) => {
86
- res . json ( { id : '1' , name : 'John' , email : 'test@test.com' } ) ;
87
- } ;
88
- api . METHOD < UserResponse > ( 'GET' , '/users' , getHandler ) ;
89
-
90
- const multiHandler : HandlerFunction < UserResponse > = ( req , res ) => {
91
- res . json ( { id : '1' , name : 'John' , email : 'test@test.com' } ) ;
85
+ const authMiddleware : Middleware < UserResponse > = ( req , res , next ) => {
86
+ expectType < Response < UserResponse > > ( res ) ;
87
+ next ( ) ;
92
88
} ;
93
- api . METHOD < UserResponse > ( [ 'GET' , 'POST' ] , '/users' , multiHandler ) ;
94
89
95
- const getUserHandler : HandlerFunction < UserResponse > = ( req , res ) => {
96
- expectType < Request < APIGatewayContext > > ( req ) ;
97
- expectType < APIGatewayContext > ( req . requestContext ) ;
98
- res . json ( { id : '1' , name : 'John' , email : 'test@test.com' } ) ;
90
+ const validationMiddleware : Middleware < UserResponse > = ( req , res , next ) => {
91
+ expectType < Response < UserResponse > > ( res ) ;
92
+ next ( ) ;
99
93
} ;
100
- api . get < UserResponse > ( '/users' , getUserHandler ) ;
101
94
102
- const postUserHandler : HandlerFunction <
95
+ const albAuthMiddleware : Middleware <
103
96
UserResponse ,
104
97
ALBContext ,
105
98
UserQuery ,
106
99
UserParams ,
107
100
UserBody
108
- > = ( req , res ) => {
101
+ > = ( req , res , next ) => {
109
102
expectType < ALBContext > ( req . requestContext ) ;
110
- expectType < UserQuery > ( req . query ) ;
111
- expectType < UserParams > ( req . params ) ;
112
- expectType < UserBody > ( req . body ) ;
113
- res . json ( { id : '1' , name : req . body . name , email : req . body . email } ) ;
103
+ expectType < Response < UserResponse > > ( res ) ;
104
+ next ( ) ;
114
105
} ;
106
+
107
+ const handler : HandlerFunction < UserResponse > = ( req , res ) => {
108
+ res . json ( { id : '1' , name : 'John' , email : 'test@test.com' } ) ;
109
+ } ;
110
+
111
+ api . get < UserResponse > (
112
+ '/users' ,
113
+ authMiddleware ,
114
+ validationMiddleware ,
115
+ ( req , res ) => {
116
+ expectType < Request < APIGatewayContext > > ( req ) ;
117
+ res . json ( { id : '1' , name : 'John' , email : 'test@test.com' } ) ;
118
+ }
119
+ ) ;
120
+
121
+ api . post < UserResponse > (
122
+ '/users' ,
123
+ authMiddleware ,
124
+ validationMiddleware ,
125
+ ( req , res ) => {
126
+ expectType < Request < APIGatewayContext > > ( req ) ;
127
+ res . json ( { id : '1' , name : 'John' , email : 'test@test.com' } ) ;
128
+ }
129
+ ) ;
130
+
131
+ api . put < UserResponse > (
132
+ '/users/:id' ,
133
+ authMiddleware ,
134
+ validationMiddleware ,
135
+ ( req , res ) => {
136
+ expectType < Request < APIGatewayContext > > ( req ) ;
137
+ res . json ( { id : '1' , name : 'John' , email : 'test@test.com' } ) ;
138
+ }
139
+ ) ;
140
+
141
+ api . patch < UserResponse > (
142
+ '/users/:id' ,
143
+ authMiddleware ,
144
+ validationMiddleware ,
145
+ ( req , res ) => {
146
+ expectType < Request < APIGatewayContext > > ( req ) ;
147
+ res . json ( { id : '1' , name : 'John' , email : 'test@test.com' } ) ;
148
+ }
149
+ ) ;
150
+
151
+ api . delete < UserResponse > (
152
+ '/users/:id' ,
153
+ authMiddleware ,
154
+ validationMiddleware ,
155
+ ( req , res ) => {
156
+ expectType < Request < APIGatewayContext > > ( req ) ;
157
+ res . json ( { id : '1' , name : 'John' , email : 'test@test.com' } ) ;
158
+ }
159
+ ) ;
160
+
161
+ api . options < UserResponse > (
162
+ '/users' ,
163
+ authMiddleware ,
164
+ validationMiddleware ,
165
+ ( req , res ) => {
166
+ expectType < Request < APIGatewayContext > > ( req ) ;
167
+ res . json ( { id : '1' , name : 'John' , email : 'test@test.com' } ) ;
168
+ }
169
+ ) ;
170
+
171
+ api . head < UserResponse > (
172
+ '/users' ,
173
+ authMiddleware ,
174
+ validationMiddleware ,
175
+ ( req , res ) => {
176
+ expectType < Request < APIGatewayContext > > ( req ) ;
177
+ res . json ( { id : '1' , name : 'John' , email : 'test@test.com' } ) ;
178
+ }
179
+ ) ;
180
+
181
+ api . any < UserResponse > (
182
+ '/users' ,
183
+ authMiddleware ,
184
+ validationMiddleware ,
185
+ ( req , res ) => {
186
+ expectType < Request < APIGatewayContext > > ( req ) ;
187
+ res . json ( { id : '1' , name : 'John' , email : 'test@test.com' } ) ;
188
+ }
189
+ ) ;
190
+
115
191
api . post < UserResponse , ALBContext , UserQuery , UserParams , UserBody > (
116
192
'/users' ,
117
- postUserHandler
193
+ albAuthMiddleware ,
194
+ ( req , res ) => {
195
+ expectType < ALBContext > ( req . requestContext ) ;
196
+ expectType < UserQuery > ( req . query ) ;
197
+ expectType < UserParams > ( req . params ) ;
198
+ expectType < UserBody > ( req . body ) ;
199
+ res . json ( { id : '1' , name : req . body . name , email : req . body . email } ) ;
200
+ }
118
201
) ;
119
202
120
- const userMiddleware : Middleware < UserResponse > = ( req , res , next ) => {
121
- expectType < Response < UserResponse > > ( res ) ;
122
- next ( ) ;
123
- } ;
124
- api . use < UserResponse > ( userMiddleware ) ;
203
+ api . METHOD < UserResponse > (
204
+ [ 'GET' , 'POST' ] ,
205
+ '/users' ,
206
+ authMiddleware ,
207
+ validationMiddleware ,
208
+ handler
209
+ ) ;
210
+
211
+ // Test middleware without path
212
+ api . use < UserResponse > ( authMiddleware ) ;
125
213
126
- const albMiddleware : Middleware < UserResponse , ALBContext > = (
214
+ // Test middleware with path and ALB context
215
+ const albRouteMiddleware : Middleware < UserResponse , ALBContext > = (
127
216
req ,
128
217
res ,
129
218
next
@@ -132,13 +221,12 @@ const albMiddleware: Middleware<UserResponse, ALBContext> = (
132
221
expectType < Response < UserResponse > > ( res ) ;
133
222
next ( ) ;
134
223
} ;
135
- api . use < UserResponse , ALBContext > ( '/users' , albMiddleware ) ;
224
+ api . use < UserResponse , ALBContext > ( '/users' , albRouteMiddleware ) ;
136
225
137
- const finallyHandler : HandlerFunction = ( req , res ) => {
226
+ api . finally ( ( req , res ) => {
138
227
expectType < Request > ( req ) ;
139
228
expectType < Response > ( res ) ;
140
- } ;
141
- api . finally ( finallyHandler ) ;
229
+ } ) ;
142
230
143
231
const result = api . run < UserResponse > ( { } as APIGatewayProxyEvent , { } as Context ) ;
144
232
expectType < Promise < UserResponse > > ( result ) ;
0 commit comments