fastify 5.8.4 → 5.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/SECURITY.md +1 -1
  2. package/SPONSORS.md +6 -4
  3. package/docs/Guides/Database.md +0 -28
  4. package/docs/Guides/Ecosystem.md +17 -2
  5. package/docs/Guides/Serverless.md +2 -2
  6. package/docs/Guides/Write-Plugin.md +1 -1
  7. package/docs/Reference/Encapsulation.md +27 -26
  8. package/docs/Reference/Errors.md +10 -4
  9. package/docs/Reference/HTTP2.md +10 -10
  10. package/docs/Reference/Hooks.md +4 -4
  11. package/docs/Reference/Index.md +14 -16
  12. package/docs/Reference/LTS.md +12 -13
  13. package/docs/Reference/Lifecycle.md +9 -8
  14. package/docs/Reference/Logging.md +44 -39
  15. package/docs/Reference/Middleware.md +21 -25
  16. package/docs/Reference/Principles.md +2 -2
  17. package/docs/Reference/Reply.md +6 -1
  18. package/docs/Reference/Request.md +27 -16
  19. package/docs/Reference/Routes.md +5 -2
  20. package/docs/Reference/Server.md +31 -3
  21. package/docs/Reference/Type-Providers.md +29 -5
  22. package/docs/Reference/Validation-and-Serialization.md +15 -2
  23. package/docs/Reference/Warnings.md +7 -6
  24. package/eslint.config.js +7 -2
  25. package/fastify.d.ts +8 -3
  26. package/fastify.js +43 -14
  27. package/lib/content-type-parser.js +13 -1
  28. package/lib/decorate.js +11 -3
  29. package/lib/error-handler.js +4 -3
  30. package/lib/error-serializer.js +59 -59
  31. package/lib/errors.js +16 -1
  32. package/lib/four-oh-four.js +14 -9
  33. package/lib/handle-request.js +11 -5
  34. package/lib/plugin-override.js +2 -1
  35. package/lib/plugin-utils.js +5 -5
  36. package/lib/reply.js +63 -8
  37. package/lib/request.js +23 -19
  38. package/lib/route.js +20 -6
  39. package/lib/schema-controller.js +1 -1
  40. package/lib/schemas.js +37 -30
  41. package/lib/symbols.js +3 -1
  42. package/lib/validation.js +1 -13
  43. package/lib/warnings.js +3 -3
  44. package/package.json +16 -18
  45. package/scripts/validate-ecosystem-links.js +1 -0
  46. package/test/bundler/esbuild/package.json +1 -1
  47. package/test/close-pipelining.test.js +1 -2
  48. package/test/custom-http-server.test.js +38 -0
  49. package/test/decorator-instance-properties.test.js +63 -0
  50. package/test/diagnostics-channel/async-error-handler.test.js +74 -0
  51. package/test/hooks.test.js +23 -0
  52. package/test/http-methods/get.test.js +1 -1
  53. package/test/http2/plain.test.js +135 -0
  54. package/test/http2/secure-with-fallback.test.js +1 -1
  55. package/test/https/https.test.js +1 -2
  56. package/test/internals/errors.test.js +31 -1
  57. package/test/internals/plugin.test.js +3 -1
  58. package/test/internals/request.test.js +27 -3
  59. package/test/internals/schema-controller-perf.test.js +33 -0
  60. package/test/logger/logging.test.js +18 -1
  61. package/test/logger/options.test.js +38 -1
  62. package/test/reply-error.test.js +1 -1
  63. package/test/reply-trailers.test.js +70 -0
  64. package/test/request-media-type.test.js +105 -0
  65. package/test/request-port.test.js +72 -0
  66. package/test/route-prefix.test.js +34 -0
  67. package/test/router-options.test.js +222 -11
  68. package/test/schema-serialization.test.js +108 -0
  69. package/test/schema-validation.test.js +45 -0
  70. package/test/scripts/validate-ecosystem-links.test.js +40 -57
  71. package/test/throw.test.js +14 -0
  72. package/test/trust-proxy.test.js +74 -0
  73. package/test/types/content-type-parser.tst.ts +70 -0
  74. package/test/types/{decorate-request-reply.test-d.ts → decorate-request-reply.tst.ts} +4 -4
  75. package/test/types/{dummy-plugin.ts → dummy-plugin.mts} +1 -1
  76. package/test/types/errors.tst.ts +91 -0
  77. package/test/types/fastify.tst.ts +351 -0
  78. package/test/types/hooks.tst.ts +578 -0
  79. package/test/types/instance.tst.ts +597 -0
  80. package/test/types/{logger.test-d.ts → logger.tst.ts} +61 -62
  81. package/test/types/plugin.tst.ts +96 -0
  82. package/test/types/register.tst.ts +245 -0
  83. package/test/types/reply.tst.ts +297 -0
  84. package/test/types/request.tst.ts +199 -0
  85. package/test/types/route.tst.ts +576 -0
  86. package/test/types/{schema.test-d.ts → schema.tst.ts} +22 -22
  87. package/test/types/{serverFactory.test-d.ts → serverFactory.tst.ts} +4 -4
  88. package/test/types/tsconfig.json +9 -0
  89. package/test/types/{type-provider.test-d.ts → type-provider.tst.ts} +256 -250
  90. package/test/types/using.tst.ts +14 -0
  91. package/types/errors.d.ts +3 -0
  92. package/types/request.d.ts +23 -2
  93. package/AGENTS.md +0 -290
  94. package/test/types/content-type-parser.test-d.ts +0 -72
  95. package/test/types/errors.test-d.ts +0 -90
  96. package/test/types/fastify.test-d.ts +0 -352
  97. package/test/types/hooks.test-d.ts +0 -550
  98. package/test/types/import.ts +0 -2
  99. package/test/types/instance.test-d.ts +0 -588
  100. package/test/types/plugin.test-d.ts +0 -97
  101. package/test/types/register.test-d.ts +0 -237
  102. package/test/types/reply.test-d.ts +0 -254
  103. package/test/types/request.test-d.ts +0 -188
  104. package/test/types/route.test-d.ts +0 -553
  105. package/test/types/using.test-d.ts +0 -17
@@ -1,550 +0,0 @@
1
- import { FastifyError } from '@fastify/error'
2
- import { expectAssignable, expectError, expectType } from 'tsd'
3
- import fastify, {
4
- ContextConfigDefault, FastifyContextConfig,
5
- FastifyInstance,
6
- FastifyPluginOptions,
7
- FastifyReply,
8
- FastifyRequest,
9
- FastifySchema,
10
- FastifyTypeProviderDefault,
11
- RawReplyDefaultExpression,
12
- RawRequestDefaultExpression,
13
- RawServerDefault,
14
- RegisterOptions,
15
- RouteOptions,
16
- // preClose hook types should be exported correctly https://github.com/fastify/fastify/pull/5335
17
- /* eslint-disable @typescript-eslint/no-unused-vars */
18
- preCloseAsyncHookHandler,
19
- preCloseHookHandler
20
- } from '../../fastify'
21
- import { DoneFuncWithErrOrRes, HookHandlerDoneFunction, RequestPayload, preHandlerAsyncHookHandler } from '../../types/hooks'
22
- import { FastifyRouteConfig, RouteGenericInterface } from '../../types/route'
23
-
24
- const server = fastify()
25
-
26
- // Test payload generic pass through for preSerialization and onSend
27
-
28
- type TestPayloadType = {
29
- foo: string;
30
- bar: number;
31
- }
32
-
33
- // Synchronous Tests
34
-
35
- server.addHook('onRequest', function (request, reply, done) {
36
- expectType<FastifyInstance>(this)
37
- expectType<FastifyRequest>(request)
38
- expectType<FastifyReply>(reply)
39
- expectAssignable<(err?: FastifyError) => void>(done)
40
- expectAssignable<(err?: NodeJS.ErrnoException) => void>(done)
41
- expectType<void>(done(new Error()))
42
- })
43
-
44
- server.addHook('preParsing', function (request, reply, payload, done) {
45
- expectType<FastifyInstance>(this)
46
- expectType<FastifyRequest>(request)
47
- expectType<FastifyReply>(reply)
48
- expectType<RequestPayload>(payload)
49
- expectAssignable<(err?: FastifyError | null, res?: RequestPayload) => void>(done)
50
- expectAssignable<(err?: NodeJS.ErrnoException) => void>(done)
51
- expectType<void>(done(new Error()))
52
- })
53
-
54
- server.addHook('preValidation', function (request, reply, done) {
55
- expectType<FastifyInstance>(this)
56
- expectType<FastifyRequest>(request)
57
- expectType<FastifyReply>(reply)
58
- expectAssignable<(err?: FastifyError) => void>(done)
59
- expectAssignable<(err?: NodeJS.ErrnoException) => void>(done)
60
- expectType<void>(done(new Error()))
61
- })
62
-
63
- server.addHook('preHandler', function (request, reply, done) {
64
- expectType<FastifyInstance>(this)
65
- expectType<FastifyRequest>(request)
66
- expectType<FastifyReply>(reply)
67
- expectAssignable<(err?: FastifyError) => void>(done)
68
- expectAssignable<(err?: NodeJS.ErrnoException) => void>(done)
69
- expectType<void>(done(new Error()))
70
- })
71
-
72
- server.addHook<TestPayloadType>('preSerialization', function (request, reply, payload, done) {
73
- expectType<FastifyInstance>(this)
74
- expectType<FastifyRequest>(request)
75
- expectType<FastifyReply>(reply)
76
- expectType<TestPayloadType>(payload) // we expect this to be unknown when not specified like in the previous test
77
- expectType<void>(done(new Error()))
78
- expectType<void>(done(null, 'foobar'))
79
- expectType<void>(done())
80
- expectError<void>(done(new Error(), 'foobar'))
81
- })
82
-
83
- server.addHook<TestPayloadType>('onSend', function (request, reply, payload, done) {
84
- expectType<FastifyInstance>(this)
85
- expectType<FastifyRequest>(request)
86
- expectType<FastifyReply>(reply)
87
- expectType<TestPayloadType>(payload)
88
- expectType<void>(done(new Error()))
89
- expectType<void>(done(null, 'foobar'))
90
- expectType<void>(done())
91
- expectError<void>(done(new Error(), 'foobar'))
92
- })
93
-
94
- server.addHook('onResponse', function (request, reply, done) {
95
- expectType<FastifyInstance>(this)
96
- expectType<FastifyRequest>(request)
97
- expectType<FastifyReply>(reply)
98
- expectAssignable<(err?: FastifyError) => void>(done)
99
- expectAssignable<(err?: NodeJS.ErrnoException) => void>(done)
100
- expectType<void>(done(new Error()))
101
- })
102
-
103
- server.addHook('onTimeout', function (request, reply, done) {
104
- expectType<FastifyInstance>(this)
105
- expectType<FastifyRequest>(request)
106
- expectType<FastifyReply>(reply)
107
- expectAssignable<(err?: FastifyError) => void>(done)
108
- expectAssignable<(err?: NodeJS.ErrnoException) => void>(done)
109
- expectType<void>(done(new Error()))
110
- })
111
-
112
- server.addHook('onError', function (request, reply, error, done) {
113
- expectType<FastifyInstance>(this)
114
- expectType<FastifyRequest>(request)
115
- expectType<FastifyReply>(reply)
116
- expectType<FastifyError>(error)
117
- expectType<() => void>(done)
118
- expectType<void>(done())
119
- })
120
-
121
- server.addHook('onRequestAbort', function (request, done) {
122
- expectType<FastifyInstance>(this)
123
- expectType<FastifyRequest>(request)
124
- expectAssignable<(err?: FastifyError) => void>(done)
125
- expectAssignable<(err?: NodeJS.ErrnoException) => void>(done)
126
- expectType<void>(done(new Error()))
127
- })
128
-
129
- server.addHook('onRoute', function (opts) {
130
- expectType<FastifyInstance>(this)
131
- expectType<RouteOptions & { routePath: string; path: string; prefix: string }>(opts)
132
- })
133
-
134
- server.addHook('onRegister', function (instance, opts) {
135
- expectType<FastifyInstance>(this)
136
- expectType<FastifyInstance>(instance)
137
- expectType<RegisterOptions & FastifyPluginOptions>(opts)
138
- })
139
-
140
- server.addHook('onReady', function (done) {
141
- expectType<FastifyInstance>(this)
142
- expectAssignable<(err?: FastifyError) => void>(done)
143
- expectAssignable<(err?: NodeJS.ErrnoException) => void>(done)
144
- expectType<void>(done(new Error()))
145
- })
146
-
147
- server.addHook('onListen', function (done) {
148
- expectType<FastifyInstance>(this)
149
- expectAssignable<(err?: FastifyError) => void>(done)
150
- expectAssignable<(err?: NodeJS.ErrnoException) => void>(done)
151
- })
152
-
153
- server.addHook('onClose', function (instance, done) {
154
- expectType<FastifyInstance>(this)
155
- expectType<FastifyInstance>(instance)
156
- expectAssignable<(err?: FastifyError) => void>(done)
157
- expectAssignable<(err?: NodeJS.ErrnoException) => void>(done)
158
- expectType<void>(done(new Error()))
159
- })
160
-
161
- // Asynchronous
162
-
163
- server.addHook('onRequest', async function (request, reply) {
164
- expectType<FastifyInstance>(this)
165
- expectType<FastifyRequest>(request)
166
- expectType<FastifyReply>(reply)
167
- })
168
-
169
- server.addHook('preParsing', async function (request, reply, payload) {
170
- expectType<FastifyInstance>(this)
171
- expectType<FastifyRequest>(request)
172
- expectType<FastifyReply>(reply)
173
- expectType<RequestPayload>(payload)
174
- })
175
-
176
- server.addHook('preValidation', async function (request, reply) {
177
- expectType<FastifyInstance>(this)
178
- expectType<FastifyRequest>(request)
179
- expectType<FastifyReply>(reply)
180
- })
181
-
182
- server.addHook('preHandler', async function (request, reply) {
183
- expectType<FastifyInstance>(this)
184
- expectType<FastifyRequest>(request)
185
- expectType<FastifyReply>(reply)
186
- })
187
-
188
- server.addHook<TestPayloadType>('preSerialization', async function (request, reply, payload) {
189
- expectType<FastifyInstance>(this)
190
- expectType<FastifyRequest>(request)
191
- expectType<FastifyReply>(reply)
192
- expectType<TestPayloadType>(payload) // we expect this to be unknown when not specified like in the previous test
193
- })
194
-
195
- server.addHook<TestPayloadType>('onSend', async function (request, reply, payload) {
196
- expectType<FastifyInstance>(this)
197
- expectType<FastifyRequest>(request)
198
- expectType<FastifyReply>(reply)
199
- expectType<TestPayloadType>(payload)
200
- })
201
-
202
- server.addHook('onResponse', async function (request, reply) {
203
- expectType<FastifyInstance>(this)
204
- expectType<FastifyRequest>(request)
205
- expectType<FastifyReply>(reply)
206
- })
207
-
208
- server.addHook('onTimeout', async function (request, reply) {
209
- expectType<FastifyInstance>(this)
210
- expectType<FastifyRequest>(request)
211
- expectType<FastifyReply>(reply)
212
- })
213
-
214
- server.addHook('onError', async function (request, reply, error) {
215
- expectType<FastifyInstance>(this)
216
- expectType<FastifyRequest>(request)
217
- expectType<FastifyReply>(reply)
218
- expectType<FastifyError>(error)
219
- })
220
-
221
- server.addHook('onRequestAbort', async function (request) {
222
- expectType<FastifyInstance>(this)
223
- expectType<FastifyRequest>(request)
224
- })
225
-
226
- server.addHook('onRegister', async (instance, opts) => {
227
- expectType<FastifyInstance>(instance)
228
- expectType<RegisterOptions & FastifyPluginOptions>(opts)
229
- })
230
-
231
- server.addHook('onReady', async function () {
232
- expectType<FastifyInstance>(this)
233
- })
234
-
235
- server.addHook('onListen', async function () {
236
- expectType<FastifyInstance>(this)
237
- })
238
-
239
- server.addHook('onClose', async function (instance) {
240
- expectType<FastifyInstance>(this)
241
- expectType<FastifyInstance>(instance)
242
- })
243
-
244
- // Use case to monitor any regression on issue #3620
245
- // ref.: https://github.com/fastify/fastify/issues/3620
246
- const customTypedHook: preHandlerAsyncHookHandler<
247
- RawServerDefault,
248
- RawRequestDefaultExpression,
249
- RawReplyDefaultExpression,
250
- RouteGenericInterface,
251
- ContextConfigDefault,
252
- FastifySchema,
253
- FastifyTypeProviderDefault
254
- > = async function (request, reply): Promise<void> {
255
- expectType<FastifyInstance>(this)
256
- expectAssignable<FastifyRequest>(request)
257
- expectAssignable<FastifyReply>(reply)
258
- }
259
-
260
- server.register(async (instance) => {
261
- instance.addHook('preHandler', customTypedHook)
262
- })
263
-
264
- // Test custom Context Config types for hooks
265
- type CustomContextConfig = FastifyContextConfig & {
266
- foo: string;
267
- bar: number;
268
- }
269
- type CustomContextConfigWithDefault = CustomContextConfig & FastifyRouteConfig
270
-
271
- server.route<RouteGenericInterface, CustomContextConfig>({
272
- method: 'GET',
273
- url: '/',
274
- handler: () => { },
275
- onRequest: (request, reply, done) => {
276
- expectType<CustomContextConfigWithDefault>(request.routeOptions.config)
277
- expectType<CustomContextConfigWithDefault>(reply.routeOptions.config)
278
- },
279
- preParsing: (request, reply, payload, done) => {
280
- expectType<CustomContextConfigWithDefault>(request.routeOptions.config)
281
- expectType<CustomContextConfigWithDefault>(reply.routeOptions.config)
282
- },
283
- preValidation: (request, reply, done) => {
284
- expectType<CustomContextConfigWithDefault>(request.routeOptions.config)
285
- expectType<CustomContextConfigWithDefault>(reply.routeOptions.config)
286
- },
287
- preHandler: (request, reply, done) => {
288
- expectType<CustomContextConfigWithDefault>(request.routeOptions.config)
289
- expectType<CustomContextConfigWithDefault>(reply.routeOptions.config)
290
- },
291
- preSerialization: (request, reply, payload, done) => {
292
- expectType<CustomContextConfigWithDefault>(request.routeOptions.config)
293
- expectType<CustomContextConfigWithDefault>(reply.routeOptions.config)
294
- },
295
- onSend: (request, reply, payload, done) => {
296
- expectType<CustomContextConfigWithDefault>(request.routeOptions.config)
297
- expectType<CustomContextConfigWithDefault>(reply.routeOptions.config)
298
- },
299
- onResponse: (request, reply, done) => {
300
- expectType<CustomContextConfigWithDefault>(request.routeOptions.config)
301
- expectType<CustomContextConfigWithDefault>(reply.routeOptions.config)
302
- },
303
- onTimeout: (request, reply, done) => {
304
- expectType<CustomContextConfigWithDefault>(request.routeOptions.config)
305
- expectType<CustomContextConfigWithDefault>(reply.routeOptions.config)
306
- },
307
- onError: (request, reply, error, done) => {
308
- expectType<CustomContextConfigWithDefault>(request.routeOptions.config)
309
- expectType<CustomContextConfigWithDefault>(reply.routeOptions.config)
310
- }
311
- })
312
-
313
- server.get<RouteGenericInterface, CustomContextConfig>('/', {
314
- onRequest: async (request, reply) => {
315
- expectType<CustomContextConfigWithDefault>(request.routeOptions.config)
316
- expectType<CustomContextConfigWithDefault>(reply.routeOptions.config)
317
- },
318
- preParsing: async (request, reply) => {
319
- expectType<CustomContextConfigWithDefault>(request.routeOptions.config)
320
- expectType<CustomContextConfigWithDefault>(reply.routeOptions.config)
321
- },
322
- preValidation: async (request, reply) => {
323
- expectType<CustomContextConfigWithDefault>(request.routeOptions.config)
324
- expectType<CustomContextConfigWithDefault>(reply.routeOptions.config)
325
- },
326
- preHandler: async (request, reply) => {
327
- expectType<CustomContextConfigWithDefault>(request.routeOptions.config)
328
- expectType<CustomContextConfigWithDefault>(reply.routeOptions.config)
329
- },
330
- preSerialization: async (request, reply) => {
331
- expectType<CustomContextConfigWithDefault>(request.routeOptions.config)
332
- expectType<CustomContextConfigWithDefault>(reply.routeOptions.config)
333
- },
334
- onSend: async (request, reply) => {
335
- expectType<CustomContextConfigWithDefault>(request.routeOptions.config)
336
- expectType<CustomContextConfigWithDefault>(reply.routeOptions.config)
337
- },
338
- onResponse: async (request, reply) => {
339
- expectType<CustomContextConfigWithDefault>(request.routeOptions.config)
340
- expectType<CustomContextConfigWithDefault>(reply.routeOptions.config)
341
- },
342
- onTimeout: async (request, reply) => {
343
- expectType<CustomContextConfigWithDefault>(request.routeOptions.config)
344
- expectType<CustomContextConfigWithDefault>(reply.routeOptions.config)
345
- },
346
- onError: async (request, reply) => {
347
- expectType<CustomContextConfigWithDefault>(request.routeOptions.config)
348
- expectType<CustomContextConfigWithDefault>(reply.routeOptions.config)
349
- }
350
- }, async (request, reply) => {
351
- expectType<CustomContextConfigWithDefault>(request.routeOptions.config)
352
- expectType<CustomContextConfigWithDefault>(reply.routeOptions.config)
353
- })
354
-
355
- type CustomContextRequest = FastifyRequest<any, any, any, any, any, CustomContextConfig, any>
356
- type CustomContextReply = FastifyReply<any, any, any, any, CustomContextConfig, any, any>
357
- server.route<RouteGenericInterface, CustomContextConfig>({
358
- method: 'GET',
359
- url: '/',
360
- handler: () => { },
361
- onRequest: async (request: CustomContextRequest, reply: CustomContextReply) => {
362
- expectType<CustomContextConfigWithDefault>(request.routeOptions.config)
363
- expectType<CustomContextConfigWithDefault>(reply.routeOptions.config)
364
- },
365
- preParsing: async (request: CustomContextRequest, reply: CustomContextReply, payload: RequestPayload) => {
366
- expectType<CustomContextConfigWithDefault>(request.routeOptions.config)
367
- expectType<CustomContextConfigWithDefault>(reply.routeOptions.config)
368
- },
369
- preValidation: async (request: CustomContextRequest, reply: CustomContextReply) => {
370
- expectType<CustomContextConfigWithDefault>(request.routeOptions.config)
371
- expectType<CustomContextConfigWithDefault>(reply.routeOptions.config)
372
- },
373
- preHandler: async (request: CustomContextRequest, reply: CustomContextReply) => {
374
- expectType<CustomContextConfigWithDefault>(request.routeOptions.config)
375
- expectType<CustomContextConfigWithDefault>(reply.routeOptions.config)
376
- },
377
- preSerialization: async (request: CustomContextRequest, reply: CustomContextReply, payload: any) => {
378
- expectType<CustomContextConfigWithDefault>(request.routeOptions.config)
379
- expectType<CustomContextConfigWithDefault>(reply.routeOptions.config)
380
- },
381
- onSend: async (request: CustomContextRequest, reply: CustomContextReply, payload: any) => {
382
- expectType<CustomContextConfigWithDefault>(request.routeOptions.config)
383
- expectType<CustomContextConfigWithDefault>(reply.routeOptions.config)
384
- },
385
- onResponse: async (request: CustomContextRequest, reply: CustomContextReply) => {
386
- expectType<CustomContextConfigWithDefault>(request.routeOptions.config)
387
- expectType<CustomContextConfigWithDefault>(reply.routeOptions.config)
388
- },
389
- onTimeout: async (request: CustomContextRequest, reply: CustomContextReply) => {
390
- expectType<CustomContextConfigWithDefault>(request.routeOptions.config)
391
- expectType<CustomContextConfigWithDefault>(reply.routeOptions.config)
392
- },
393
- onError: async (request: CustomContextRequest, reply: CustomContextReply, error: FastifyError) => {
394
- expectType<CustomContextConfigWithDefault>(request.routeOptions.config)
395
- expectType<CustomContextConfigWithDefault>(reply.routeOptions.config)
396
- }
397
- })
398
-
399
- server.route({
400
- method: 'GET',
401
- url: '/',
402
- handler: (request, reply) => {
403
- expectType<FastifyRequest>(request)
404
- expectType<FastifyReply>(reply)
405
- },
406
- onRequest: (request, reply, done) => {
407
- expectType<FastifyRequest>(request)
408
- expectType<FastifyReply>(reply)
409
- expectType<HookHandlerDoneFunction>(done)
410
- },
411
- onRequestAbort: (request, done) => {
412
- expectType<FastifyRequest>(request)
413
- expectType<HookHandlerDoneFunction>(done)
414
- },
415
- preParsing: (request, reply, payload, done) => {
416
- expectType<FastifyRequest>(request)
417
- expectType<FastifyReply>(reply)
418
- expectType<RequestPayload>(payload)
419
- expectType<
420
- <TError extends Error = FastifyError>(
421
- err?: TError | null | undefined,
422
- res?: RequestPayload | undefined
423
- ) => void
424
- >(done)
425
- },
426
- preValidation: (request, reply, done) => {
427
- expectType<FastifyRequest>(request)
428
- expectType<FastifyReply>(reply)
429
- expectType<HookHandlerDoneFunction>(done)
430
- },
431
- preHandler: (request, reply, done) => {
432
- expectType<FastifyRequest>(request)
433
- expectType<FastifyReply>(reply)
434
- expectType<HookHandlerDoneFunction>(done)
435
- },
436
- preSerialization: (request, reply, payload, done) => {
437
- expectType<FastifyRequest>(request)
438
- expectType<FastifyReply>(reply)
439
- expectType<unknown>(payload)
440
- expectType<DoneFuncWithErrOrRes>(done)
441
- },
442
- onSend: (request, reply, payload, done) => {
443
- expectType<FastifyRequest>(request)
444
- expectType<FastifyReply>(reply)
445
- expectType<unknown>(payload)
446
- expectType<DoneFuncWithErrOrRes>(done)
447
- },
448
- onResponse: (request, reply, done) => {
449
- expectType<FastifyRequest>(request)
450
- expectType<FastifyReply>(reply)
451
- expectType<HookHandlerDoneFunction>(done)
452
- },
453
- onTimeout: (request, reply, done) => {
454
- expectType<FastifyRequest>(request)
455
- expectType<FastifyReply>(reply)
456
- expectType<HookHandlerDoneFunction>(done)
457
- },
458
- onError: (request, reply, error, done) => {
459
- expectType<FastifyRequest>(request)
460
- expectType<FastifyReply>(reply)
461
- expectType<FastifyError>(error)
462
- expectType<() => void>(done)
463
- }
464
- })
465
-
466
- server.get('/', {
467
- onRequest: async (request, reply) => {
468
- expectType<FastifyRequest>(request)
469
- expectType<FastifyReply>(reply)
470
- },
471
- onRequestAbort: async (request, reply) => {
472
- expectType<FastifyRequest>(request)
473
- },
474
- preParsing: async (request, reply, payload) => {
475
- expectType<FastifyRequest>(request)
476
- expectType<FastifyReply>(reply)
477
- expectType<RequestPayload>(payload)
478
- },
479
- preValidation: async (request, reply) => {
480
- expectType<FastifyRequest>(request)
481
- expectType<FastifyReply>(reply)
482
- },
483
- preHandler: async (request, reply) => {
484
- expectType<FastifyRequest>(request)
485
- expectType<FastifyReply>(reply)
486
- },
487
- preSerialization: async (request, reply, payload) => {
488
- expectType<FastifyRequest>(request)
489
- expectType<FastifyReply>(reply)
490
- expectType<unknown>(payload)
491
- },
492
- onSend: async (request, reply, payload) => {
493
- expectType<FastifyRequest>(request)
494
- expectType<FastifyReply>(reply)
495
- expectType<unknown>(payload)
496
- },
497
- onResponse: async (request, reply) => {
498
- expectType<FastifyRequest>(request)
499
- expectType<FastifyReply>(reply)
500
- },
501
- onTimeout: async (request, reply) => {
502
- expectType<FastifyRequest>(request)
503
- expectType<FastifyReply>(reply)
504
- },
505
- onError: async (request, reply, error) => {
506
- expectType<FastifyRequest>(request)
507
- expectType<FastifyReply>(reply)
508
- expectType<FastifyError>(error)
509
- }
510
- }, async (request, reply) => {
511
- expectType<FastifyRequest>(request)
512
- expectType<FastifyReply>(reply)
513
- })
514
-
515
- // TODO: Should throw errors
516
- // expectError(server.get('/', { onRequest: async (request, reply, done) => {} }, async (request, reply) => {}))
517
- // expectError(server.get('/', { onRequestAbort: async (request, done) => {} }, async (request, reply) => {}))
518
- // expectError(server.get('/', { preParsing: async (request, reply, payload, done) => {} }, async (request, reply) => {}))
519
- // expectError(server.get('/', { preValidation: async (request, reply, done) => {} }, async (request, reply) => {}))
520
- // expectError(server.get('/', { preHandler: async (request, reply, done) => {} }, async (request, reply) => {}))
521
- // expectError(server.get('/', { preSerialization: async (request, reply, payload, done) => {} }, async (request, reply) => {}))
522
- // expectError(server.get('/', { onSend: async (request, reply, payload, done) => {} }, async (request, reply) => {}))
523
- // expectError(server.get('/', { onResponse: async (request, reply, done) => {} }, async (request, reply) => {}))
524
- // expectError(server.get('/', { onTimeout: async (request, reply, done) => {} }, async (request, reply) => {}))
525
- // expectError(server.get('/', { onError: async (request, reply, error, done) => {} }, async (request, reply) => {}))
526
-
527
- server.addHook('preClose', function (done) {
528
- expectType<FastifyInstance>(this)
529
- expectAssignable<(err?: FastifyError) => void>(done)
530
- expectAssignable<(err?: NodeJS.ErrnoException) => void>(done)
531
- expectType<void>(done(new Error()))
532
- })
533
-
534
- server.addHook('preClose', async function () {
535
- expectType<FastifyInstance>(this)
536
- })
537
-
538
- expectError(server.addHook('onClose', async function (instance, done) {}))
539
- expectError(server.addHook('onError', async function (request, reply, error, done) {}))
540
- expectError(server.addHook('onReady', async function (done) {}))
541
- expectError(server.addHook('onListen', async function (done) {}))
542
- expectError(server.addHook('onRequest', async function (request, reply, done) {}))
543
- expectError(server.addHook('onRequestAbort', async function (request, done) {}))
544
- expectError(server.addHook('onResponse', async function (request, reply, done) {}))
545
- expectError(server.addHook('onSend', async function (request, reply, payload, done) {}))
546
- expectError(server.addHook('onTimeout', async function (request, reply, done) {}))
547
- expectError(server.addHook('preClose', async function (done) {}))
548
- expectError(server.addHook('preHandler', async function (request, reply, done) {}))
549
- expectError(server.addHook('preSerialization', async function (request, reply, payload, done) {}))
550
- expectError(server.addHook('preValidation', async function (request, reply, done) {}))
@@ -1,2 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unused-vars */
2
- import { FastifyListenOptions, FastifyLogFn } from '../../fastify'