fastify 4.27.0 → 5.0.0-alpha.2
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.
- package/.markdownlint-cli2.yaml +1 -1
- package/.tap/processinfo/09002e93-10ad-430c-bc86-c0576928b0ed.json +241 -0
- package/.tap/processinfo/ee66c5ab-635d-48b5-8be6-3dc3ceea5bfc.json +268 -0
- package/.tap/test-results/test/404s.test.js.tap +623 -0
- package/.tap/test-results/test/500s.test.js.tap +64 -0
- package/.tap/test-results/test/allowUnsafeRegex.test.js.tap +36 -0
- package/.tap/test-results/test/als.test.js.tap +15 -0
- package/.tap/test-results/test/async-await.test.js.tap +184 -0
- package/.tap/test-results/test/async-dispose.test.js.tap +8 -0
- package/.tap/test-results/test/async_hooks.test.js.tap +10 -0
- package/.tap/test-results/test/bodyLimit.test.js.tap +48 -0
- package/.tap/test-results/test/buffer.test.js.tap +20 -0
- package/.tap/test-results/test/build/error-serializer.test.js.tap +12 -0
- package/.tap/test-results/test/build/version.test.js.tap +7 -0
- package/.tap/test-results/test/case-insensitive.test.js.tap +36 -0
- package/.tap/test-results/test/chainable.test.js.tap +17 -0
- package/.tap/test-results/test/check.test.js.tap +10 -0
- package/.tap/test-results/test/childLoggerFactory.test.js.tap +23 -0
- package/.tap/test-results/test/client-timeout.test.js.tap +7 -0
- package/.tap/test-results/test/close-pipelining.test.js.tap +15 -0
- package/.tap/test-results/test/close.test.js.tap +172 -0
- package/.tap/test-results/test/connectionTimeout.test.js.tap +12 -0
- package/.tap/test-results/test/constrained-routes.test.js.tap +173 -0
- package/.tap/test-results/test/content-length.test.js.tap +46 -0
- package/.tap/test-results/test/content-parser.test.js.tap +266 -0
- package/.tap/test-results/test/content-type.test.js.tap +14 -0
- package/.tap/test-results/test/context-config.test.js.tap +41 -0
- package/.tap/test-results/test/copy.test.js.tap +14 -0
- package/.tap/test-results/test/custom-http-server.test.js.tap +30 -0
- package/.tap/test-results/test/custom-parser-async.test.js.tap +21 -0
- package/.tap/test-results/test/custom-parser.0.test.js.tap +199 -0
- package/.tap/test-results/test/custom-parser.1.test.js.tap +90 -0
- package/.tap/test-results/test/custom-parser.2.test.js.tap +22 -0
- package/.tap/test-results/test/custom-parser.3.test.js.tap +53 -0
- package/.tap/test-results/test/custom-parser.4.test.js.tap +45 -0
- package/.tap/test-results/test/custom-parser.5.test.js.tap +41 -0
- package/.tap/test-results/test/custom-querystring-parser.test.js.tap +46 -0
- package/.tap/test-results/test/decorator.test.js.tap +465 -0
- package/.tap/test-results/test/delete.test.js.tap +110 -0
- package/.tap/test-results/test/diagnostics-channel/404.test.js.tap +15 -0
- package/.tap/test-results/test/diagnostics-channel/async-delay-request.test.js.tap +25 -0
- package/.tap/test-results/test/diagnostics-channel/async-request.test.js.tap +24 -0
- package/.tap/test-results/test/diagnostics-channel/error-before-handler.test.js.tap +9 -0
- package/.tap/test-results/test/diagnostics-channel/error-request.test.js.tap +20 -0
- package/.tap/test-results/test/diagnostics-channel/error-status.test.js.tap +10 -0
- package/.tap/test-results/test/diagnostics-channel/init.test.js.tap +14 -0
- package/.tap/test-results/test/diagnostics-channel/sync-delay-request.test.js.tap +16 -0
- package/.tap/test-results/test/diagnostics-channel/sync-request-reply.test.js.tap +16 -0
- package/.tap/test-results/test/diagnostics-channel/sync-request.test.js.tap +19 -0
- package/.tap/test-results/test/encapsulated-child-logger-factory.test.js.tap +18 -0
- package/.tap/test-results/test/encapsulated-error-handler.test.js.tap +243 -0
- package/.tap/test-results/test/esm/errorCodes.test.mjs.tap +9 -0
- package/.tap/test-results/test/esm/esm.test.mjs.tap +8 -0
- package/.tap/test-results/test/esm/index.test.js.tap +8 -0
- package/.tap/test-results/test/fastify-instance.test.js.tap +114 -0
- package/.tap/test-results/test/findRoute.test.js.tap +37 -0
- package/.tap/test-results/test/fluent-schema.test.js.tap +36 -0
- package/.tap/test-results/test/genReqId.test.js.tap +106 -0
- package/.tap/test-results/test/get.test.js.tap +151 -0
- package/.tap/test-results/test/handler-context.test.js.tap +19 -0
- package/.tap/test-results/test/has-route.test.js.tap +30 -0
- package/.tap/test-results/test/head.test.js.tap +130 -0
- package/.tap/test-results/test/header-overflow.test.js.tap +16 -0
- package/.tap/test-results/test/hooks-async.test.js.tap +286 -0
- package/.tap/test-results/test/hooks.on-listen.test.js.tap +311 -0
- package/.tap/test-results/test/hooks.on-ready.test.js.tap +151 -0
- package/.tap/test-results/test/hooks.test.js.tap +966 -0
- package/.tap/test-results/test/http2/closing.test.js.tap +35 -0
- package/.tap/test-results/test/http2/constraint.test.js.tap +32 -0
- package/.tap/test-results/test/http2/head.test.js.tap +9 -0
- package/.tap/test-results/test/http2/missing-http2-module.test.js.tap +8 -0
- package/.tap/test-results/test/http2/plain.test.js.tap +22 -0
- package/.tap/test-results/test/http2/secure-with-fallback.test.js.tap +40 -0
- package/.tap/test-results/test/http2/secure.test.js.tap +27 -0
- package/.tap/test-results/test/http2/unknown-http-method.test.js.tap +9 -0
- package/.tap/test-results/test/https/custom-https-server.test.js.tap +10 -0
- package/.tap/test-results/test/https/https.test.js.tap +45 -0
- package/.tap/test-results/test/imports.test.js.tap +14 -0
- package/.tap/test-results/test/inject.test.js.tap +165 -0
- package/.tap/test-results/test/internals/all.test.js.tap +42 -0
- package/.tap/test-results/test/internals/contentTypeParser.test.js.tap +14 -0
- package/.tap/test-results/test/internals/context.test.js.tap +14 -0
- package/.tap/test-results/test/internals/decorator.test.js.tap +51 -0
- package/.tap/test-results/test/internals/errors.test.js.tap +1212 -0
- package/.tap/test-results/test/internals/handleRequest.test.js.tap +69 -0
- package/.tap/test-results/test/internals/hookRunner.test.js.tap +143 -0
- package/.tap/test-results/test/internals/hooks.test.js.tap +45 -0
- package/.tap/test-results/test/internals/initialConfig.test.js.tap +125 -0
- package/.tap/test-results/test/internals/logger.test.js.tap +71 -0
- package/.tap/test-results/test/internals/plugin.test.js.tap +48 -0
- package/.tap/test-results/test/internals/reply-serialize.test.js.tap +166 -0
- package/.tap/test-results/test/internals/reply.test.js.tap +688 -0
- package/.tap/test-results/test/internals/reqIdGenFactory.test.js.tap +74 -0
- package/.tap/test-results/test/internals/request-validate.test.js.tap +384 -0
- package/.tap/test-results/test/internals/request.test.js.tap +163 -0
- package/.tap/test-results/test/internals/server.test.js.tap +30 -0
- package/.tap/test-results/test/internals/validation.test.js.tap +121 -0
- package/.tap/test-results/test/keepAliveTimeout.test.js.tap +12 -0
- package/.tap/test-results/test/listen.1.test.js.tap +31 -0
- package/.tap/test-results/test/listen.2.test.js.tap +46 -0
- package/.tap/test-results/test/listen.3.test.js.tap +25 -0
- package/.tap/test-results/test/listen.4.test.js.tap +51 -0
- package/.tap/test-results/test/lock.test.js.tap +29 -0
- package/.tap/test-results/test/logger/instantiation.test.js.tap +92 -0
- package/.tap/test-results/test/logger/logging.test.js.tap +117 -0
- package/.tap/test-results/test/logger/options.test.js.tap +165 -0
- package/.tap/test-results/test/logger/request.test.js.tap +82 -0
- package/.tap/test-results/test/logger/response.test.js.tap +38 -0
- package/.tap/test-results/test/maxRequestsPerSocket.test.js.tap +44 -0
- package/.tap/test-results/test/method-missing.test.js.tap +8 -0
- package/.tap/test-results/test/middleware.test.js.tap +17 -0
- package/.tap/test-results/test/mkcalendar.test.js.tap +43 -0
- package/.tap/test-results/test/mkcol.test.js.tap +14 -0
- package/.tap/test-results/test/move.test.js.tap +15 -0
- package/.tap/test-results/test/noop-set.test.js.tap +8 -0
- package/.tap/test-results/test/nullable-validation.test.js.tap +36 -0
- package/.tap/test-results/test/options.error-handler.test.js.tap +186 -0
- package/.tap/test-results/test/options.test.js.tap +174 -0
- package/.tap/test-results/test/output-validation.test.js.tap +66 -0
- package/.tap/test-results/test/patch.error-handler.test.js.tap +206 -0
- package/.tap/test-results/test/patch.test.js.tap +182 -0
- package/.tap/test-results/test/plugin.1.test.js.tap +78 -0
- package/.tap/test-results/test/plugin.2.test.js.tap +102 -0
- package/.tap/test-results/test/plugin.3.test.js.tap +58 -0
- package/.tap/test-results/test/plugin.4.test.js.tap +164 -0
- package/.tap/test-results/test/post-empty-body.test.js.tap +8 -0
- package/.tap/test-results/test/pretty-print.test.js.tap +82 -0
- package/.tap/test-results/test/promises.test.js.tap +46 -0
- package/.tap/test-results/test/propfind.test.js.tap +43 -0
- package/.tap/test-results/test/proppatch.test.js.tap +29 -0
- package/.tap/test-results/test/proto-poisoning.test.js.tap +47 -0
- package/.tap/test-results/test/put.error-handler.test.js.tap +206 -0
- package/.tap/test-results/test/put.test.js.tap +182 -0
- package/.tap/test-results/test/register.test.js.tap +61 -0
- package/.tap/test-results/test/reply-code.test.js.tap +40 -0
- package/.tap/test-results/test/reply-earlyHints.test.js.tap +22 -0
- package/.tap/test-results/test/reply-error.test.js.tap +643 -0
- package/.tap/test-results/test/reply-trailers.test.js.tap +176 -0
- package/.tap/test-results/test/report.test.js.tap +43 -0
- package/.tap/test-results/test/request-error.test.js.tap +98 -0
- package/.tap/test-results/test/request-id.test.js.tap +38 -0
- package/.tap/test-results/test/request.deprecated.test.js.tap +13 -0
- package/.tap/test-results/test/requestTimeout.test.js.tap +21 -0
- package/.tap/test-results/test/route-hooks.test.js.tap +498 -0
- package/.tap/test-results/test/route-prefix.test.js.tap +195 -0
- package/.tap/test-results/test/route-shorthand.test.js.tap +190 -0
- package/.tap/test-results/test/route.1.test.js.tap +93 -0
- package/.tap/test-results/test/route.2.test.js.tap +28 -0
- package/.tap/test-results/test/route.3.test.js.tap +39 -0
- package/.tap/test-results/test/route.4.test.js.tap +32 -0
- package/.tap/test-results/test/route.5.test.js.tap +54 -0
- package/.tap/test-results/test/route.6.test.js.tap +81 -0
- package/.tap/test-results/test/route.7.test.js.tap +93 -0
- package/.tap/test-results/test/route.8.test.js.tap +38 -0
- package/.tap/test-results/test/router-options.test.js.tap +104 -0
- package/.tap/test-results/test/same-shape.test.js.tap +22 -0
- package/.tap/test-results/test/schema-examples.test.js.tap +85 -0
- package/.tap/test-results/test/schema-feature.test.js.tap +445 -0
- package/.tap/test-results/test/schema-serialization.test.js.tap +194 -0
- package/.tap/test-results/test/schema-special-usage.test.js.tap +186 -0
- package/.tap/test-results/test/schema-validation.test.js.tap +199 -0
- package/.tap/test-results/test/search.test.js.tap +77 -0
- package/.tap/test-results/test/serialize-response.test.js.tap +26 -0
- package/.tap/test-results/test/server.test.js.tap +65 -0
- package/.tap/test-results/test/set-error-handler.test.js.tap +7 -0
- package/.tap/test-results/test/skip-reply-send.test.js.tap +272 -0
- package/.tap/test-results/test/stream.1.test.js.tap +36 -0
- package/.tap/test-results/test/stream.2.test.js.tap +20 -0
- package/.tap/test-results/test/stream.3.test.js.tap +34 -0
- package/.tap/test-results/test/stream.4.test.js.tap +40 -0
- package/.tap/test-results/test/stream.5.test.js.tap +37 -0
- package/.tap/test-results/test/sync-routes.test.js.tap +19 -0
- package/.tap/test-results/test/throw.test.js.tap +116 -0
- package/.tap/test-results/test/trace.test.js.tap +7 -0
- package/.tap/test-results/test/trust-proxy.test.js.tap +109 -0
- package/.tap/test-results/test/type-provider.test.js.tap +12 -0
- package/.tap/test-results/test/unlock.test.js.tap +14 -0
- package/.tap/test-results/test/upgrade.test.js.tap +8 -0
- package/.tap/test-results/test/url-rewriting.test.js.tap +39 -0
- package/.tap/test-results/test/useSemicolonDelimiter.test.js.tap +33 -0
- package/.tap/test-results/test/validation-error-handling.test.js.tap +180 -0
- package/.tap/test-results/test/versioned-routes.test.js.tap +151 -0
- package/.tap/test-results/test/web-api.test.js.tap +51 -0
- package/.tap/test-results/test/wrapThenable.test.js.tap +11 -0
- package/.taprc +4 -8
- package/README.md +3 -6
- package/build/build-error-serializer.js +4 -1
- package/build/build-validation.js +5 -4
- package/docs/Guides/Database.md +1 -1
- package/docs/Guides/Delay-Accepting-Requests.md +3 -3
- package/docs/Guides/Ecosystem.md +2 -0
- package/docs/Guides/Migration-Guide-V5.md +20 -0
- package/docs/Guides/Write-Type-Provider.md +4 -2
- package/docs/Reference/ContentTypeParser.md +30 -1
- package/docs/Reference/Decorators.md +42 -16
- package/docs/Reference/Errors.md +10 -2
- package/docs/Reference/Hooks.md +48 -14
- package/docs/Reference/Logging.md +5 -5
- package/docs/Reference/Reply.md +29 -24
- package/docs/Reference/Request.md +5 -1
- package/docs/Reference/Routes.md +24 -28
- package/docs/Reference/Server.md +14 -53
- package/docs/Reference/Type-Providers.md +21 -26
- package/docs/Reference/TypeScript.md +46 -29
- package/docs/Reference/Warnings.md +2 -8
- package/eslint.config.js +27 -0
- package/examples/typescript-server.ts +14 -14
- package/fastify.d.ts +15 -14
- package/fastify.js +41 -15
- package/lib/configValidator.js +94 -76
- package/lib/contentTypeParser.js +54 -88
- package/lib/decorate.js +3 -7
- package/lib/error-serializer.js +77 -19
- package/lib/errors.js +31 -6
- package/lib/handleRequest.js +70 -39
- package/lib/httpMethods.js +34 -18
- package/lib/logger.js +24 -6
- package/lib/pluginUtils.js +5 -5
- package/lib/reply.js +16 -13
- package/lib/request.js +37 -19
- package/lib/route.js +7 -31
- package/lib/server.js +62 -123
- package/lib/warnings.js +28 -27
- package/lib/wrapThenable.js +46 -22
- package/package.json +38 -58
- package/test/404s.test.js +8 -12
- package/test/async-await.test.js +46 -2
- package/test/build/error-serializer.test.js +4 -2
- package/test/check.test.js +225 -0
- package/test/close-pipelining.test.js +2 -34
- package/test/close.test.js +1 -41
- package/test/content-parser.test.js +69 -117
- package/test/custom-parser.1.test.js +40 -1
- package/test/decorator-namespace.test._js_ +31 -0
- package/test/decorator.test.js +92 -43
- package/test/delete.test.js +21 -1
- package/test/diagnostics-channel/404.test.js +57 -0
- package/test/diagnostics-channel/async-delay-request.test.js +74 -0
- package/test/diagnostics-channel/async-request.test.js +72 -0
- package/test/diagnostics-channel/error-before-handler.test.js +36 -0
- package/test/diagnostics-channel/error-request.test.js +61 -0
- package/test/diagnostics-channel/error-status.test.js +39 -0
- package/test/{diagnostics-channel.test.js → diagnostics-channel/init.test.js} +6 -16
- package/test/diagnostics-channel/sync-delay-request.test.js +58 -0
- package/test/diagnostics-channel/sync-request-reply.test.js +58 -0
- package/test/diagnostics-channel/sync-request.test.js +61 -0
- package/test/encapsulated-error-handler.test.js +201 -14
- package/test/esm/index.test.js +2 -12
- package/test/findRoute.test.js +16 -0
- package/test/genReqId.test.js +9 -0
- package/test/get.test.js +28 -0
- package/test/has-route.test.js +18 -2
- package/test/helper.js +1 -5
- package/test/hooks.test.js +0 -4
- package/test/http2/constraint.test.js +22 -1
- package/test/http2/plain.test.js +21 -6
- package/test/http2/secure.test.js +12 -1
- package/test/https/https.test.js +57 -0
- package/test/inject.test.js +1 -2
- package/test/internals/decorator.test.js +0 -2
- package/test/internals/errors.test.js +57 -17
- package/test/internals/handleRequest.test.js +5 -1
- package/test/internals/initialConfig.test.js +5 -5
- package/test/internals/logger.test.js +31 -2
- package/test/internals/reply.test.js +38 -80
- package/test/internals/request.test.js +13 -11
- package/test/listen.1.test.js +5 -15
- package/test/listen.5.test.js +88 -0
- package/test/logger/instantiation.test.js +8 -8
- package/test/logger/logging.test.js +4 -4
- package/test/logger/options.test.js +102 -21
- package/test/logger/response.test.js +6 -6
- package/test/maxRequestsPerSocket.test.js +2 -5
- package/test/method-missing.test.js +24 -0
- package/test/plugin.1.test.js +2 -4
- package/test/plugin.2.test.js +0 -2
- package/test/plugin.3.test.js +0 -2
- package/test/plugin.4.test.js +92 -56
- package/test/register.test.js +2 -4
- package/test/reply-earlyHints.test.js +98 -0
- package/test/reply-error.test.js +0 -2
- package/test/route-hooks.test.js +0 -1
- package/test/route-shorthand.test.js +60 -0
- package/test/schema-special-usage.test.js +1 -1
- package/test/server.test.js +17 -2
- package/test/stream.2.test.js +1 -1
- package/test/stream.4.test.js +0 -42
- package/test/stream.5.test.js +2 -2
- package/test/trust-proxy.test.js +33 -27
- package/test/types/errors.test-d.ts +0 -2
- package/test/types/fastify.test-d.ts +14 -12
- package/test/types/hooks.test-d.ts +1 -0
- package/test/types/import.ts +1 -0
- package/test/types/instance.test-d.ts +10 -51
- package/test/types/logger.test-d.ts +43 -6
- package/test/types/plugin.test-d.ts +5 -2
- package/test/types/register.test-d.ts +2 -2
- package/test/types/reply.test-d.ts +13 -12
- package/test/types/request.test-d.ts +19 -8
- package/test/types/route.test-d.ts +30 -2
- package/test/types/schema.test-d.ts +2 -2
- package/test/types/serverFactory.test-d.ts +1 -1
- package/test/types/type-provider.test-d.ts +60 -13
- package/test/types/using.test-d.ts +4 -1
- package/test/url-rewriting.test.js +3 -2
- package/test/useSemicolonDelimiter.test.js +3 -6
- package/test/versioned-routes.test.js +1 -1
- package/test/web-api.test.js +0 -6
- package/types/content-type-parser.d.ts +3 -3
- package/types/context.d.ts +0 -1
- package/types/errors.d.ts +1 -0
- package/types/hooks.d.ts +6 -6
- package/types/instance.d.ts +28 -41
- package/types/logger.d.ts +3 -3
- package/types/plugin.d.ts +3 -3
- package/types/reply.d.ts +13 -14
- package/types/request.d.ts +5 -3
- package/types/route.d.ts +29 -29
- package/types/schema.d.ts +3 -3
- package/types/serverFactory.d.ts +2 -2
- package/types/type-provider.d.ts +22 -12
- package/types/utils.d.ts +18 -18
- package/.c8rc.json +0 -8
- package/.eslintrc +0 -4
- package/test/default-route.test.js +0 -88
- package/test/listen.deprecated.test.js +0 -229
- package/test/unsupported-httpversion.test.js +0 -31
- package/types/.eslintrc.json +0 -48
|
@@ -4,7 +4,8 @@ import fastify, {
|
|
|
4
4
|
FastifyRequest,
|
|
5
5
|
FastifyReply,
|
|
6
6
|
FastifyInstance,
|
|
7
|
-
FastifyError
|
|
7
|
+
FastifyError,
|
|
8
|
+
SafePromiseLike
|
|
8
9
|
} from '../../fastify'
|
|
9
10
|
import { expectAssignable, expectError, expectType } from 'tsd'
|
|
10
11
|
import { IncomingHttpHeaders } from 'http'
|
|
@@ -23,7 +24,10 @@ expectAssignable(server.get('/', (req) => expectType<unknown>(req.body)))
|
|
|
23
24
|
// Remapping
|
|
24
25
|
// -------------------------------------------------------------------
|
|
25
26
|
|
|
26
|
-
interface NumberProvider extends FastifyTypeProvider {
|
|
27
|
+
interface NumberProvider extends FastifyTypeProvider {
|
|
28
|
+
validator: number
|
|
29
|
+
serializer: number
|
|
30
|
+
} // remap all schemas to numbers
|
|
27
31
|
|
|
28
32
|
expectAssignable(server.withTypeProvider<NumberProvider>().get(
|
|
29
33
|
'/',
|
|
@@ -47,7 +51,7 @@ expectAssignable(server.withTypeProvider<NumberProvider>().get(
|
|
|
47
51
|
// Override
|
|
48
52
|
// -------------------------------------------------------------------
|
|
49
53
|
|
|
50
|
-
interface OverriddenProvider extends FastifyTypeProvider {
|
|
54
|
+
interface OverriddenProvider extends FastifyTypeProvider { validator: 'inferenced' }
|
|
51
55
|
|
|
52
56
|
expectAssignable(server.withTypeProvider<OverriddenProvider>().get<{ Body: 'override' }>(
|
|
53
57
|
'/',
|
|
@@ -69,7 +73,10 @@ expectAssignable(server.withTypeProvider<OverriddenProvider>().get<{ Body: 'over
|
|
|
69
73
|
// TypeBox
|
|
70
74
|
// -------------------------------------------------------------------
|
|
71
75
|
|
|
72
|
-
interface TypeBoxProvider extends FastifyTypeProvider {
|
|
76
|
+
interface TypeBoxProvider extends FastifyTypeProvider {
|
|
77
|
+
validator: this['schema'] extends TSchema ? Static<this['schema']> : unknown
|
|
78
|
+
serializer: this['schema'] extends TSchema ? Static<this['schema']> : unknown
|
|
79
|
+
}
|
|
73
80
|
|
|
74
81
|
expectAssignable(server.withTypeProvider<TypeBoxProvider>().get(
|
|
75
82
|
'/',
|
|
@@ -103,7 +110,10 @@ expectAssignable<FastifyInstance>(server.withTypeProvider<TypeBoxProvider>())
|
|
|
103
110
|
// JsonSchemaToTs
|
|
104
111
|
// -------------------------------------------------------------------
|
|
105
112
|
|
|
106
|
-
interface JsonSchemaToTsProvider extends FastifyTypeProvider {
|
|
113
|
+
interface JsonSchemaToTsProvider extends FastifyTypeProvider {
|
|
114
|
+
validator: this['schema'] extends JSONSchema ? FromSchema<this['schema']> : unknown
|
|
115
|
+
serializer: this['schema'] extends JSONSchema ? FromSchema<this['schema']> : unknown
|
|
116
|
+
}
|
|
107
117
|
|
|
108
118
|
// explicitly setting schema `as const`
|
|
109
119
|
|
|
@@ -907,7 +917,7 @@ expectError(server.withTypeProvider<JsonSchemaToTsProvider>().get(
|
|
|
907
917
|
// Reply Type Override
|
|
908
918
|
// -------------------------------------------------------------------
|
|
909
919
|
|
|
910
|
-
expectAssignable(server.withTypeProvider<JsonSchemaToTsProvider>().get<{Reply: boolean}>(
|
|
920
|
+
expectAssignable(server.withTypeProvider<JsonSchemaToTsProvider>().get<{ Reply: boolean }>(
|
|
911
921
|
'/',
|
|
912
922
|
{
|
|
913
923
|
schema: {
|
|
@@ -927,7 +937,7 @@ expectAssignable(server.withTypeProvider<JsonSchemaToTsProvider>().get<{Reply: b
|
|
|
927
937
|
// Reply Type Override (Different Content-types)
|
|
928
938
|
// -------------------------------------------------------------------
|
|
929
939
|
|
|
930
|
-
expectAssignable(server.withTypeProvider<JsonSchemaToTsProvider>().get<{Reply: boolean}>(
|
|
940
|
+
expectAssignable(server.withTypeProvider<JsonSchemaToTsProvider>().get<{ Reply: boolean }>(
|
|
931
941
|
'/',
|
|
932
942
|
{
|
|
933
943
|
schema: {
|
|
@@ -955,7 +965,7 @@ expectAssignable(server.withTypeProvider<JsonSchemaToTsProvider>().get<{Reply: b
|
|
|
955
965
|
// Reply Type Return Override
|
|
956
966
|
// -------------------------------------------------------------------
|
|
957
967
|
|
|
958
|
-
expectAssignable(server.withTypeProvider<JsonSchemaToTsProvider>().get<{Reply: boolean}>(
|
|
968
|
+
expectAssignable(server.withTypeProvider<JsonSchemaToTsProvider>().get<{ Reply: boolean }>(
|
|
959
969
|
'/',
|
|
960
970
|
{
|
|
961
971
|
schema: {
|
|
@@ -975,7 +985,7 @@ expectAssignable(server.withTypeProvider<JsonSchemaToTsProvider>().get<{Reply: b
|
|
|
975
985
|
// Reply Type Return Override (Different Content-types)
|
|
976
986
|
// -------------------------------------------------------------------
|
|
977
987
|
|
|
978
|
-
expectAssignable(server.withTypeProvider<JsonSchemaToTsProvider>().get<{Reply: boolean}>(
|
|
988
|
+
expectAssignable(server.withTypeProvider<JsonSchemaToTsProvider>().get<{ Reply: boolean }>(
|
|
979
989
|
'/',
|
|
980
990
|
{
|
|
981
991
|
schema: {
|
|
@@ -1003,7 +1013,7 @@ expectAssignable(server.withTypeProvider<JsonSchemaToTsProvider>().get<{Reply: b
|
|
|
1003
1013
|
// FastifyPlugin: Auxiliary
|
|
1004
1014
|
// -------------------------------------------------------------------
|
|
1005
1015
|
|
|
1006
|
-
interface AuxiliaryPluginProvider extends FastifyTypeProvider {
|
|
1016
|
+
interface AuxiliaryPluginProvider extends FastifyTypeProvider { validator: 'plugin-auxiliary' }
|
|
1007
1017
|
|
|
1008
1018
|
// Auxiliary plugins may have varying server types per application. Recommendation would be to explicitly remap instance provider context within plugin if required.
|
|
1009
1019
|
function plugin<T extends FastifyInstance> (instance: T) {
|
|
@@ -1032,7 +1042,7 @@ expectAssignable(server.withTypeProvider<AuxiliaryPluginProvider>().register(plu
|
|
|
1032
1042
|
// Handlers: Inline
|
|
1033
1043
|
// -------------------------------------------------------------------
|
|
1034
1044
|
|
|
1035
|
-
interface InlineHandlerProvider extends FastifyTypeProvider {
|
|
1045
|
+
interface InlineHandlerProvider extends FastifyTypeProvider { validator: 'handler-inline' }
|
|
1036
1046
|
|
|
1037
1047
|
// Inline handlers should infer for the request parameters (non-shared)
|
|
1038
1048
|
expectAssignable(server.withTypeProvider<InlineHandlerProvider>().get(
|
|
@@ -1052,7 +1062,7 @@ expectAssignable(server.withTypeProvider<InlineHandlerProvider>().get(
|
|
|
1052
1062
|
// Handlers: Auxiliary
|
|
1053
1063
|
// -------------------------------------------------------------------
|
|
1054
1064
|
|
|
1055
|
-
interface AuxiliaryHandlerProvider extends FastifyTypeProvider {
|
|
1065
|
+
interface AuxiliaryHandlerProvider extends FastifyTypeProvider { validator: 'handler-auxiliary' }
|
|
1056
1066
|
|
|
1057
1067
|
// Auxiliary handlers are likely shared for multiple routes and thus should infer as unknown due to potential varying parameters
|
|
1058
1068
|
function auxiliaryHandler (request: FastifyRequest, reply: FastifyReply, done: HookHandlerDoneFunction): void {
|
|
@@ -1063,9 +1073,46 @@ expectAssignable(server.withTypeProvider<AuxiliaryHandlerProvider>().get(
|
|
|
1063
1073
|
'/',
|
|
1064
1074
|
{
|
|
1065
1075
|
onRequest: auxiliaryHandler,
|
|
1066
|
-
schema: { body:
|
|
1076
|
+
schema: { body: 'handler-auxiliary' }
|
|
1067
1077
|
},
|
|
1068
1078
|
(req) => {
|
|
1069
1079
|
expectType<'handler-auxiliary'>(req.body)
|
|
1070
1080
|
}
|
|
1071
1081
|
))
|
|
1082
|
+
|
|
1083
|
+
// -------------------------------------------------------------------
|
|
1084
|
+
// SafePromiseLike
|
|
1085
|
+
// -------------------------------------------------------------------
|
|
1086
|
+
const safePromiseLike = {
|
|
1087
|
+
then: new Promise<string>(resolve => resolve('')).then,
|
|
1088
|
+
__linterBrands: 'SafePromiseLike' as const
|
|
1089
|
+
}
|
|
1090
|
+
expectAssignable<SafePromiseLike<string>>(safePromiseLike)
|
|
1091
|
+
expectAssignable<PromiseLike<string>>(safePromiseLike)
|
|
1092
|
+
expectError<Promise<string>>(safePromiseLike)
|
|
1093
|
+
|
|
1094
|
+
// -------------------------------------------------------------------
|
|
1095
|
+
// Separate Providers
|
|
1096
|
+
// -------------------------------------------------------------------
|
|
1097
|
+
|
|
1098
|
+
interface SeparateProvider extends FastifyTypeProvider {
|
|
1099
|
+
validator: string
|
|
1100
|
+
serializer: Date
|
|
1101
|
+
}
|
|
1102
|
+
|
|
1103
|
+
expectAssignable(server.withTypeProvider<SeparateProvider>().get(
|
|
1104
|
+
'/',
|
|
1105
|
+
{
|
|
1106
|
+
schema: {
|
|
1107
|
+
body: null,
|
|
1108
|
+
response: {
|
|
1109
|
+
200: { type: 'string' }
|
|
1110
|
+
}
|
|
1111
|
+
}
|
|
1112
|
+
},
|
|
1113
|
+
(req, res) => {
|
|
1114
|
+
expectType<string>(req.body)
|
|
1115
|
+
|
|
1116
|
+
res.send(new Date())
|
|
1117
|
+
}
|
|
1118
|
+
))
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { expectAssignable
|
|
1
|
+
import { expectAssignable } from 'tsd'
|
|
2
2
|
import fastify, { FastifyInstance } from '../../fastify'
|
|
3
3
|
|
|
4
4
|
async function hasSymbolDisposeWithUsing () {
|
|
@@ -12,3 +12,6 @@ async function hasSymbolDispose () {
|
|
|
12
12
|
expectAssignable<FastifyInstance>(app)
|
|
13
13
|
expectAssignable<FastifyInstance[typeof Symbol.asyncDispose]>(app.close)
|
|
14
14
|
}
|
|
15
|
+
|
|
16
|
+
hasSymbolDisposeWithUsing()
|
|
17
|
+
hasSymbolDispose()
|
|
@@ -119,8 +119,8 @@ test('Should rewrite url but keep originalUrl unchanged', t => {
|
|
|
119
119
|
method: 'GET',
|
|
120
120
|
url: '/',
|
|
121
121
|
handler: (req, reply) => {
|
|
122
|
+
reply.send({ hello: 'world', hostname: req.hostname, port: req.port })
|
|
122
123
|
t.equal(req.originalUrl, '/this-would-404-without-url-rewrite')
|
|
123
|
-
reply.send({ hello: 'world' })
|
|
124
124
|
}
|
|
125
125
|
})
|
|
126
126
|
|
|
@@ -132,7 +132,8 @@ test('Should rewrite url but keep originalUrl unchanged', t => {
|
|
|
132
132
|
url: 'http://localhost:' + fastify.server.address().port + '/this-would-404-without-url-rewrite'
|
|
133
133
|
}, (err, response, body) => {
|
|
134
134
|
t.error(err)
|
|
135
|
-
|
|
135
|
+
const parsedBody = JSON.parse(body)
|
|
136
|
+
t.same(parsedBody, { hello: 'world', hostname: 'localhost', port: fastify.server.address().port })
|
|
136
137
|
t.equal(response.statusCode, 200)
|
|
137
138
|
})
|
|
138
139
|
})
|
|
@@ -5,30 +5,27 @@ const test = t.test
|
|
|
5
5
|
const Fastify = require('..')
|
|
6
6
|
const sget = require('simple-get').concat
|
|
7
7
|
|
|
8
|
-
test('use semicolon delimiter default
|
|
8
|
+
test('use semicolon delimiter default false', t => {
|
|
9
9
|
t.plan(4)
|
|
10
10
|
|
|
11
11
|
const fastify = Fastify({})
|
|
12
12
|
|
|
13
13
|
t.teardown(fastify.close.bind(fastify))
|
|
14
14
|
|
|
15
|
-
fastify.get('/1234', (req, reply) => {
|
|
15
|
+
fastify.get('/1234;foo=bar', (req, reply) => {
|
|
16
16
|
reply.send(req.query)
|
|
17
17
|
})
|
|
18
18
|
|
|
19
19
|
fastify.listen({ port: 0 }, err => {
|
|
20
20
|
t.error(err)
|
|
21
21
|
|
|
22
|
-
console.log('http://localhost:' + fastify.server.address().port + '/1234;foo=bar')
|
|
23
22
|
sget({
|
|
24
23
|
method: 'GET',
|
|
25
24
|
url: 'http://localhost:' + fastify.server.address().port + '/1234;foo=bar'
|
|
26
25
|
}, (err, response, body) => {
|
|
27
26
|
t.error(err)
|
|
28
27
|
t.equal(response.statusCode, 200)
|
|
29
|
-
t.same(JSON.parse(body), {
|
|
30
|
-
foo: 'bar'
|
|
31
|
-
})
|
|
28
|
+
t.same(JSON.parse(body), {})
|
|
32
29
|
})
|
|
33
30
|
})
|
|
34
31
|
})
|
|
@@ -454,7 +454,7 @@ test('test log stream', t => {
|
|
|
454
454
|
t.teardown(() => { fastify.close() })
|
|
455
455
|
|
|
456
456
|
http.get({
|
|
457
|
-
|
|
457
|
+
host: fastify.server.address().hostname,
|
|
458
458
|
port: fastify.server.address().port,
|
|
459
459
|
path: '/',
|
|
460
460
|
method: 'GET',
|
package/test/web-api.test.js
CHANGED
|
@@ -4,15 +4,9 @@ const t = require('tap')
|
|
|
4
4
|
const test = t.test
|
|
5
5
|
const Fastify = require('../fastify')
|
|
6
6
|
const fs = require('node:fs')
|
|
7
|
-
const semver = require('semver')
|
|
8
7
|
const { Readable } = require('node:stream')
|
|
9
8
|
const { fetch: undiciFetch } = require('undici')
|
|
10
9
|
|
|
11
|
-
if (semver.lt(process.versions.node, '18.0.0')) {
|
|
12
|
-
t.skip('Response or ReadableStream not available, skipping test')
|
|
13
|
-
process.exit(0)
|
|
14
|
-
}
|
|
15
|
-
|
|
16
10
|
test('should response with a ReadableStream', async (t) => {
|
|
17
11
|
t.plan(2)
|
|
18
12
|
|
|
@@ -15,7 +15,7 @@ export type FastifyBodyParser<
|
|
|
15
15
|
RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,
|
|
16
16
|
RouteGeneric extends RouteGenericInterface = RouteGenericInterface,
|
|
17
17
|
SchemaCompiler extends FastifySchema = FastifySchema,
|
|
18
|
-
TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault
|
|
18
|
+
TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault
|
|
19
19
|
> = ((request: FastifyRequest<RouteGeneric, RawServer, RawRequest, SchemaCompiler, TypeProvider>, rawBody: RawBody, done: ContentTypeParserDoneFunction) => void)
|
|
20
20
|
| ((request: FastifyRequest<RouteGeneric, RawServer, RawRequest, SchemaCompiler, TypeProvider>, rawBody: RawBody) => Promise<any>)
|
|
21
21
|
|
|
@@ -27,7 +27,7 @@ export type FastifyContentTypeParser<
|
|
|
27
27
|
RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,
|
|
28
28
|
RouteGeneric extends RouteGenericInterface = RouteGenericInterface,
|
|
29
29
|
SchemaCompiler extends FastifySchema = FastifySchema,
|
|
30
|
-
TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault
|
|
30
|
+
TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault
|
|
31
31
|
> = ((request: FastifyRequest<RouteGeneric, RawServer, RawRequest, SchemaCompiler, TypeProvider>, payload: RawRequest) => Promise<any>)
|
|
32
32
|
| ((request: FastifyRequest<RouteGeneric, RawServer, RawRequest, SchemaCompiler, TypeProvider>, payload: RawRequest, done: ContentTypeParserDoneFunction) => void)
|
|
33
33
|
|
|
@@ -39,7 +39,7 @@ export interface AddContentTypeParser<
|
|
|
39
39
|
RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,
|
|
40
40
|
RouteGeneric extends RouteGenericInterface = RouteGenericInterface,
|
|
41
41
|
SchemaCompiler extends FastifySchema = FastifySchema,
|
|
42
|
-
TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault
|
|
42
|
+
TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault
|
|
43
43
|
> {
|
|
44
44
|
(
|
|
45
45
|
contentType: string | string[] | RegExp,
|
package/types/context.d.ts
CHANGED
package/types/errors.d.ts
CHANGED
|
@@ -24,6 +24,7 @@ export type FastifyErrorCodes = Record<
|
|
|
24
24
|
'FST_ERR_DEC_DEPENDENCY_INVALID_TYPE' |
|
|
25
25
|
'FST_ERR_DEC_MISSING_DEPENDENCY' |
|
|
26
26
|
'FST_ERR_DEC_AFTER_START' |
|
|
27
|
+
'FST_ERR_DEC_REFERENCE_TYPE' |
|
|
27
28
|
'FST_ERR_HOOK_INVALID_TYPE' |
|
|
28
29
|
'FST_ERR_HOOK_INVALID_HANDLER' |
|
|
29
30
|
'FST_ERR_HOOK_INVALID_ASYNC_HANDLER' |
|
package/types/hooks.d.ts
CHANGED
|
@@ -724,7 +724,7 @@ export interface onReadyHookHandler<
|
|
|
724
724
|
RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,
|
|
725
725
|
RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,
|
|
726
726
|
Logger extends FastifyBaseLogger = FastifyBaseLogger,
|
|
727
|
-
TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault
|
|
727
|
+
TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault
|
|
728
728
|
> {
|
|
729
729
|
(
|
|
730
730
|
this: FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>,
|
|
@@ -737,7 +737,7 @@ export interface onReadyAsyncHookHandler<
|
|
|
737
737
|
RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,
|
|
738
738
|
RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,
|
|
739
739
|
Logger extends FastifyBaseLogger = FastifyBaseLogger,
|
|
740
|
-
TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault
|
|
740
|
+
TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault
|
|
741
741
|
> {
|
|
742
742
|
(
|
|
743
743
|
this: FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>,
|
|
@@ -752,7 +752,7 @@ export interface onListenHookHandler<
|
|
|
752
752
|
RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,
|
|
753
753
|
RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,
|
|
754
754
|
Logger extends FastifyBaseLogger = FastifyBaseLogger,
|
|
755
|
-
TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault
|
|
755
|
+
TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault
|
|
756
756
|
> {
|
|
757
757
|
(
|
|
758
758
|
this: FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>,
|
|
@@ -765,7 +765,7 @@ export interface onListenAsyncHookHandler<
|
|
|
765
765
|
RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,
|
|
766
766
|
RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,
|
|
767
767
|
Logger extends FastifyBaseLogger = FastifyBaseLogger,
|
|
768
|
-
TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault
|
|
768
|
+
TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault
|
|
769
769
|
> {
|
|
770
770
|
(
|
|
771
771
|
this: FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>,
|
|
@@ -779,7 +779,7 @@ export interface onCloseHookHandler<
|
|
|
779
779
|
RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,
|
|
780
780
|
RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,
|
|
781
781
|
Logger extends FastifyBaseLogger = FastifyBaseLogger,
|
|
782
|
-
TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault
|
|
782
|
+
TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault
|
|
783
783
|
> {
|
|
784
784
|
(
|
|
785
785
|
instance: FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>,
|
|
@@ -807,7 +807,7 @@ export interface preCloseHookHandler<
|
|
|
807
807
|
RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,
|
|
808
808
|
RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,
|
|
809
809
|
Logger extends FastifyBaseLogger = FastifyBaseLogger,
|
|
810
|
-
TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault
|
|
810
|
+
TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault
|
|
811
811
|
> {
|
|
812
812
|
(
|
|
813
813
|
this: FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>,
|
package/types/instance.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ import { FastifyBaseLogger, FastifyChildLoggerFactory } from './logger'
|
|
|
9
9
|
import { FastifyRegister } from './register'
|
|
10
10
|
import { FastifyReply } from './reply'
|
|
11
11
|
import { FastifyRequest } from './request'
|
|
12
|
-
import {
|
|
12
|
+
import { RouteGenericInterface, RouteHandlerMethod, RouteOptions, RouteShorthandMethod } from './route'
|
|
13
13
|
import {
|
|
14
14
|
FastifySchema,
|
|
15
15
|
FastifySchemaCompiler,
|
|
@@ -19,7 +19,8 @@ import {
|
|
|
19
19
|
} from './schema'
|
|
20
20
|
import {
|
|
21
21
|
FastifyTypeProvider,
|
|
22
|
-
FastifyTypeProviderDefault
|
|
22
|
+
FastifyTypeProviderDefault,
|
|
23
|
+
SafePromiseLike
|
|
23
24
|
} from './type-provider'
|
|
24
25
|
import { ContextConfigDefault, HTTPMethods, RawReplyDefaultExpression, RawRequestDefaultExpression, RawServerBase, RawServerDefault } from './utils'
|
|
25
26
|
|
|
@@ -30,7 +31,7 @@ export interface PrintRoutesOptions {
|
|
|
30
31
|
includeHooks?: boolean
|
|
31
32
|
}
|
|
32
33
|
|
|
33
|
-
type AsyncFunction = (...args: any) => Promise<any
|
|
34
|
+
type AsyncFunction = (...args: any) => Promise<any>
|
|
34
35
|
|
|
35
36
|
export interface FastifyListenOptions {
|
|
36
37
|
/**
|
|
@@ -96,7 +97,7 @@ type GetterSetter<This, T> = T | {
|
|
|
96
97
|
type DecorationMethod<This, Return = This> = {
|
|
97
98
|
<
|
|
98
99
|
// Need to disable "no-use-before-define" to maintain backwards compatibility, as else decorate<Foo> would suddenly mean something new
|
|
99
|
-
|
|
100
|
+
|
|
100
101
|
T extends (P extends keyof This ? This[P] : unknown),
|
|
101
102
|
P extends string | symbol = string | symbol
|
|
102
103
|
>(property: P,
|
|
@@ -109,9 +110,7 @@ type DecorationMethod<This, Return = This> = {
|
|
|
109
110
|
|
|
110
111
|
(property: string | symbol): Return;
|
|
111
112
|
|
|
112
|
-
(property: string | symbol, value: null): Return;
|
|
113
|
-
|
|
114
|
-
(property: string | symbol, value: null|undefined, dependencies: string[]): Return;
|
|
113
|
+
(property: string | symbol, value: null | undefined, dependencies: string[]): Return;
|
|
115
114
|
}
|
|
116
115
|
|
|
117
116
|
/**
|
|
@@ -122,7 +121,7 @@ export interface FastifyInstance<
|
|
|
122
121
|
RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,
|
|
123
122
|
RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>,
|
|
124
123
|
Logger extends FastifyBaseLogger = FastifyBaseLogger,
|
|
125
|
-
TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault
|
|
124
|
+
TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault
|
|
126
125
|
> {
|
|
127
126
|
server: RawServer;
|
|
128
127
|
pluginName: string;
|
|
@@ -137,14 +136,14 @@ export interface FastifyInstance<
|
|
|
137
136
|
getSchema(schemaId: string): unknown;
|
|
138
137
|
getSchemas(): Record<string, unknown>;
|
|
139
138
|
|
|
140
|
-
after(): FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider> &
|
|
139
|
+
after(): FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider> & SafePromiseLike<undefined>;
|
|
141
140
|
after(afterListener: (err: Error | null) => void): FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>;
|
|
142
141
|
|
|
143
142
|
close(): Promise<undefined>;
|
|
144
143
|
close(closeListener: () => void): undefined;
|
|
145
144
|
|
|
146
145
|
/** Alias for {@linkcode FastifyInstance.close()} */
|
|
147
|
-
|
|
146
|
+
|
|
148
147
|
// @ts-ignore - type only available for @types/node >=17 or typescript >= 5.2
|
|
149
148
|
[Symbol.asyncDispose](): Promise<undefined>;
|
|
150
149
|
|
|
@@ -169,61 +168,49 @@ export interface FastifyInstance<
|
|
|
169
168
|
listen(opts?: FastifyListenOptions): Promise<string>;
|
|
170
169
|
listen(callback: (err: Error | null, address: string) => void): void;
|
|
171
170
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
* @see https://github.com/fastify/fastify/pull/3712
|
|
175
|
-
*/
|
|
176
|
-
listen(port: number | string, address: string, backlog: number, callback: (err: Error|null, address: string) => void): void;
|
|
177
|
-
/**
|
|
178
|
-
* @deprecated Variadic listen method is deprecated. Please use `.listen(optionsObject, callback)` instead. The variadic signature will be removed in `fastify@5`
|
|
179
|
-
* @see https://github.com/fastify/fastify/pull/3712
|
|
180
|
-
*/
|
|
181
|
-
listen(port: number | string, address: string, callback: (err: Error|null, address: string) => void): void;
|
|
182
|
-
/**
|
|
183
|
-
* @deprecated Variadic listen method is deprecated. Please use `.listen(optionsObject, callback)` instead. The variadic signature will be removed in `fastify@5`
|
|
184
|
-
* @see https://github.com/fastify/fastify/pull/3712
|
|
185
|
-
*/
|
|
186
|
-
listen(port: number | string, callback: (err: Error|null, address: string) => void): void;
|
|
187
|
-
/**
|
|
188
|
-
* @deprecated Variadic listen method is deprecated. Please use `.listen(optionsObject)` instead. The variadic signature will be removed in `fastify@5`
|
|
189
|
-
* @see https://github.com/fastify/fastify/pull/3712
|
|
190
|
-
*/
|
|
191
|
-
listen(port: number | string, address?: string, backlog?: number): Promise<string>;
|
|
192
|
-
|
|
193
|
-
ready(): FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider> & PromiseLike<undefined>;
|
|
194
|
-
ready(readyListener: (err: Error | null) => void): FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>;
|
|
171
|
+
ready(): FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider> & SafePromiseLike<undefined>;
|
|
172
|
+
ready(readyListener: (err: Error | null) => void | Promise<void>): FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>;
|
|
195
173
|
|
|
196
|
-
register: FastifyRegister<FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider> &
|
|
174
|
+
register: FastifyRegister<FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider> & SafePromiseLike<undefined>>;
|
|
197
175
|
|
|
198
176
|
routing(req: RawRequest, res: RawReply): void;
|
|
199
|
-
getDefaultRoute(): DefaultRoute<RawRequest, RawReply>;
|
|
200
|
-
setDefaultRoute(defaultRoute: DefaultRoute<RawRequest, RawReply>): void;
|
|
201
177
|
|
|
202
178
|
route<
|
|
203
179
|
RouteGeneric extends RouteGenericInterface = RouteGenericInterface,
|
|
204
180
|
ContextConfig = ContextConfigDefault,
|
|
205
|
-
const SchemaCompiler extends FastifySchema = FastifySchema
|
|
181
|
+
const SchemaCompiler extends FastifySchema = FastifySchema
|
|
206
182
|
>(opts: RouteOptions<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger>): FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>;
|
|
207
183
|
|
|
184
|
+
delete: RouteShorthandMethod<RawServer, RawRequest, RawReply, TypeProvider, Logger>;
|
|
208
185
|
get: RouteShorthandMethod<RawServer, RawRequest, RawReply, TypeProvider, Logger>;
|
|
209
186
|
head: RouteShorthandMethod<RawServer, RawRequest, RawReply, TypeProvider, Logger>;
|
|
187
|
+
patch: RouteShorthandMethod<RawServer, RawRequest, RawReply, TypeProvider, Logger>;
|
|
210
188
|
post: RouteShorthandMethod<RawServer, RawRequest, RawReply, TypeProvider, Logger>;
|
|
211
189
|
put: RouteShorthandMethod<RawServer, RawRequest, RawReply, TypeProvider, Logger>;
|
|
212
|
-
delete: RouteShorthandMethod<RawServer, RawRequest, RawReply, TypeProvider, Logger>;
|
|
213
190
|
options: RouteShorthandMethod<RawServer, RawRequest, RawReply, TypeProvider, Logger>;
|
|
214
|
-
|
|
191
|
+
propfind: RouteShorthandMethod<RawServer, RawRequest, RawReply, TypeProvider, Logger>;
|
|
192
|
+
proppatch: RouteShorthandMethod<RawServer, RawRequest, RawReply, TypeProvider, Logger>;
|
|
193
|
+
mkcalendar: RouteShorthandMethod<RawServer, RawRequest, RawReply, TypeProvider, Logger>;
|
|
194
|
+
mkcol: RouteShorthandMethod<RawServer, RawRequest, RawReply, TypeProvider, Logger>;
|
|
195
|
+
copy: RouteShorthandMethod<RawServer, RawRequest, RawReply, TypeProvider, Logger>;
|
|
196
|
+
move: RouteShorthandMethod<RawServer, RawRequest, RawReply, TypeProvider, Logger>;
|
|
197
|
+
lock: RouteShorthandMethod<RawServer, RawRequest, RawReply, TypeProvider, Logger>;
|
|
198
|
+
unlock: RouteShorthandMethod<RawServer, RawRequest, RawReply, TypeProvider, Logger>;
|
|
199
|
+
trace: RouteShorthandMethod<RawServer, RawRequest, RawReply, TypeProvider, Logger>;
|
|
200
|
+
report: RouteShorthandMethod<RawServer, RawRequest, RawReply, TypeProvider, Logger>;
|
|
201
|
+
search: RouteShorthandMethod<RawServer, RawRequest, RawReply, TypeProvider, Logger>;
|
|
215
202
|
all: RouteShorthandMethod<RawServer, RawRequest, RawReply, TypeProvider, Logger>;
|
|
216
203
|
|
|
217
204
|
hasRoute<
|
|
218
205
|
RouteGeneric extends RouteGenericInterface = RouteGenericInterface,
|
|
219
206
|
ContextConfig = ContextConfigDefault,
|
|
220
|
-
SchemaCompiler extends FastifySchema = FastifySchema
|
|
207
|
+
SchemaCompiler extends FastifySchema = FastifySchema
|
|
221
208
|
>(opts: Pick<RouteOptions<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider>, 'method' | 'url' | 'constraints'>): boolean;
|
|
222
209
|
|
|
223
210
|
findRoute<
|
|
224
211
|
RouteGeneric extends RouteGenericInterface = RouteGenericInterface,
|
|
225
212
|
ContextConfig = ContextConfigDefault,
|
|
226
|
-
SchemaCompiler extends FastifySchema = FastifySchema
|
|
213
|
+
SchemaCompiler extends FastifySchema = FastifySchema
|
|
227
214
|
>(opts: Pick<RouteOptions<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider>, 'method' | 'url' | 'constraints'>): Omit<FindMyWayFindResult<RawServer>, 'store'>;
|
|
228
215
|
|
|
229
216
|
// addHook: overloads
|
package/types/logger.d.ts
CHANGED
|
@@ -43,7 +43,7 @@ export type PinoLoggerOptions = pino.LoggerOptions
|
|
|
43
43
|
export type ResSerializerReply<
|
|
44
44
|
RawServer extends RawServerBase,
|
|
45
45
|
RawReply extends FastifyReply<RawServer>
|
|
46
|
-
> = Partial<RawReply> & Pick<RawReply, 'statusCode'
|
|
46
|
+
> = Partial<RawReply> & Pick<RawReply, 'statusCode'>
|
|
47
47
|
|
|
48
48
|
/**
|
|
49
49
|
* Fastify Custom Logger options.
|
|
@@ -51,14 +51,14 @@ export type ResSerializerReply<
|
|
|
51
51
|
export interface FastifyLoggerOptions<
|
|
52
52
|
RawServer extends RawServerBase = RawServerDefault,
|
|
53
53
|
RawRequest extends FastifyRequest<RouteGenericInterface, RawServer, RawRequestDefaultExpression<RawServer>, FastifySchema, FastifyTypeProvider> = FastifyRequest<RouteGenericInterface, RawServer, RawRequestDefaultExpression<RawServer>, FastifySchema, FastifyTypeProviderDefault>,
|
|
54
|
-
RawReply extends FastifyReply<RawServer, RawRequestDefaultExpression<RawServer>, RawReplyDefaultExpression<RawServer>, RouteGenericInterface, ContextConfigDefault, FastifySchema, FastifyTypeProvider> = FastifyReply<RawServer, RawRequestDefaultExpression<RawServer>, RawReplyDefaultExpression<RawServer>, RouteGenericInterface, ContextConfigDefault, FastifySchema, FastifyTypeProviderDefault
|
|
54
|
+
RawReply extends FastifyReply<RawServer, RawRequestDefaultExpression<RawServer>, RawReplyDefaultExpression<RawServer>, RouteGenericInterface, ContextConfigDefault, FastifySchema, FastifyTypeProvider> = FastifyReply<RawServer, RawRequestDefaultExpression<RawServer>, RawReplyDefaultExpression<RawServer>, RouteGenericInterface, ContextConfigDefault, FastifySchema, FastifyTypeProviderDefault>
|
|
55
55
|
> {
|
|
56
56
|
serializers?: {
|
|
57
57
|
req?: (req: RawRequest) => {
|
|
58
58
|
method?: string;
|
|
59
59
|
url?: string;
|
|
60
60
|
version?: string;
|
|
61
|
-
|
|
61
|
+
host?: string;
|
|
62
62
|
remoteAddress?: string;
|
|
63
63
|
remotePort?: number;
|
|
64
64
|
[key: string]: unknown;
|
package/types/plugin.d.ts
CHANGED
|
@@ -14,7 +14,7 @@ export type FastifyPluginCallback<
|
|
|
14
14
|
Options extends FastifyPluginOptions = Record<never, never>,
|
|
15
15
|
Server extends RawServerBase = RawServerDefault,
|
|
16
16
|
TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,
|
|
17
|
-
Logger extends FastifyBaseLogger = FastifyBaseLogger
|
|
17
|
+
Logger extends FastifyBaseLogger = FastifyBaseLogger
|
|
18
18
|
> = (
|
|
19
19
|
instance: FastifyInstance<Server, RawRequestDefaultExpression<Server>, RawReplyDefaultExpression<Server>, Logger, TypeProvider>,
|
|
20
20
|
opts: Options,
|
|
@@ -30,11 +30,11 @@ export type FastifyPluginAsync<
|
|
|
30
30
|
Options extends FastifyPluginOptions = Record<never, never>,
|
|
31
31
|
Server extends RawServerBase = RawServerDefault,
|
|
32
32
|
TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,
|
|
33
|
-
Logger extends FastifyBaseLogger = FastifyBaseLogger
|
|
33
|
+
Logger extends FastifyBaseLogger = FastifyBaseLogger
|
|
34
34
|
> = (
|
|
35
35
|
instance: FastifyInstance<Server, RawRequestDefaultExpression<Server>, RawReplyDefaultExpression<Server>, Logger, TypeProvider>,
|
|
36
36
|
opts: Options
|
|
37
|
-
) => Promise<void
|
|
37
|
+
) => Promise<void>
|
|
38
38
|
|
|
39
39
|
/**
|
|
40
40
|
* Generic plugin type.
|
package/types/reply.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { FastifyBaseLogger } from './logger'
|
|
|
5
5
|
import { FastifyRequest } from './request'
|
|
6
6
|
import { RouteGenericInterface } from './route'
|
|
7
7
|
import { FastifySchema } from './schema'
|
|
8
|
-
import { FastifyReplyType, FastifyTypeProvider, FastifyTypeProviderDefault, ResolveFastifyReplyType
|
|
8
|
+
import { CallSerializerTypeProvider, FastifyReplyType, FastifyTypeProvider, FastifyTypeProviderDefault, ResolveFastifyReplyType } from './type-provider'
|
|
9
9
|
import { CodeToReplyKey, ContextConfigDefault, HttpKeys, RawReplyDefaultExpression, RawRequestDefaultExpression, RawServerBase, RawServerDefault, ReplyDefault, ReplyKeysToCodes, HttpHeader } from './utils'
|
|
10
10
|
|
|
11
11
|
export interface ReplyGenericInterface {
|
|
@@ -18,13 +18,13 @@ type ReplyTypeConstrainer<RouteGenericReply, Code extends ReplyKeysToCodes<keyof
|
|
|
18
18
|
RouteGenericReply extends HttpCodesReplyType & Record<Exclude<keyof RouteGenericReply, keyof HttpCodesReplyType>, never> ?
|
|
19
19
|
Code extends keyof RouteGenericReply ? RouteGenericReply[Code] :
|
|
20
20
|
CodeToReplyKey<Code> extends keyof RouteGenericReply ? RouteGenericReply[CodeToReplyKey<Code>] : unknown :
|
|
21
|
-
RouteGenericReply
|
|
21
|
+
RouteGenericReply
|
|
22
22
|
|
|
23
23
|
export type ResolveReplyTypeWithRouteGeneric<RouteGenericReply, Code extends ReplyKeysToCodes<keyof RouteGenericReply>,
|
|
24
24
|
SchemaCompiler extends FastifySchema = FastifySchema,
|
|
25
25
|
TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault> =
|
|
26
26
|
Code extends keyof SchemaCompiler['response'] ?
|
|
27
|
-
|
|
27
|
+
CallSerializerTypeProvider<TypeProvider, SchemaCompiler['response'][Code]> :
|
|
28
28
|
ResolveFastifyReplyType<TypeProvider, SchemaCompiler, { Reply: ReplyTypeConstrainer<RouteGenericReply, Code> }>
|
|
29
29
|
/**
|
|
30
30
|
* FastifyReply is an instance of the standard http or http2 reply types.
|
|
@@ -57,24 +57,23 @@ export interface FastifyReply<
|
|
|
57
57
|
getHeaders(): Record<HttpHeader, number | string | string[] | undefined>;
|
|
58
58
|
removeHeader(key: HttpHeader): FastifyReply<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider>;
|
|
59
59
|
hasHeader(key: HttpHeader): boolean;
|
|
60
|
-
|
|
60
|
+
/**
|
|
61
|
+
* @deprecated The `reply.redirect()` method has a new signature: `reply.reply.redirect(url: string, code?: number)`. It will be enforced in `fastify@v5`'.
|
|
62
|
+
*/
|
|
61
63
|
redirect(statusCode: number, url: string): FastifyReply<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider>;
|
|
62
|
-
redirect(url: string): FastifyReply<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider>;
|
|
64
|
+
redirect(url: string, statusCode?: number): FastifyReply<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider>;
|
|
65
|
+
writeEarlyHints(hints: Record<string, string | string[]>, callback?: () => void): void;
|
|
63
66
|
hijack(): FastifyReply<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider>;
|
|
64
67
|
callNotFound(): void;
|
|
65
|
-
/**
|
|
66
|
-
* @deprecated Use the Reply#elapsedTime property instead
|
|
67
|
-
*/
|
|
68
|
-
getResponseTime(): number;
|
|
69
68
|
type(contentType: string): FastifyReply<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider>;
|
|
70
69
|
serializer(fn: (payload: any) => string): FastifyReply<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider>;
|
|
71
70
|
serialize(payload: any): string | ArrayBuffer | Buffer;
|
|
72
71
|
// Serialization Methods
|
|
73
|
-
getSerializationFunction(httpStatus: string, contentType?: string): ((payload: {[key: string]: unknown}) => string) | undefined;
|
|
74
|
-
getSerializationFunction(schema: {[key: string]: unknown}): ((payload: {[key: string]: unknown}) => string) | undefined;
|
|
75
|
-
compileSerializationSchema(schema: {[key: string]: unknown}, httpStatus?: string, contentType?: string): (payload: {[key: string]: unknown}) => string;
|
|
76
|
-
serializeInput(input: {[key: string]: unknown}, schema: {[key: string]: unknown}, httpStatus?: string, contentType?: string): string;
|
|
77
|
-
serializeInput(input: {[key: string]: unknown}, httpStatus: string, contentType?: string): unknown;
|
|
72
|
+
getSerializationFunction(httpStatus: string, contentType?: string): ((payload: { [key: string]: unknown }) => string) | undefined;
|
|
73
|
+
getSerializationFunction(schema: { [key: string]: unknown }): ((payload: { [key: string]: unknown }) => string) | undefined;
|
|
74
|
+
compileSerializationSchema(schema: { [key: string]: unknown }, httpStatus?: string, contentType?: string): (payload: { [key: string]: unknown }) => string;
|
|
75
|
+
serializeInput(input: { [key: string]: unknown }, schema: { [key: string]: unknown }, httpStatus?: string, contentType?: string): string;
|
|
76
|
+
serializeInput(input: { [key: string]: unknown }, httpStatus: string, contentType?: string): unknown;
|
|
78
77
|
then(fulfilled: () => void, rejected: (err: Error) => void): void;
|
|
79
78
|
trailer: (
|
|
80
79
|
key: string,
|
package/types/request.d.ts
CHANGED
|
@@ -75,6 +75,8 @@ export interface FastifyRequest<RouteGeneric extends RouteGenericInterface = Rou
|
|
|
75
75
|
readonly req: RawRequest & RouteGeneric['Headers']; // this enables the developer to extend the existing http(s|2) headers list
|
|
76
76
|
readonly ip: string;
|
|
77
77
|
readonly ips?: string[];
|
|
78
|
+
readonly host: string;
|
|
79
|
+
readonly port: number;
|
|
78
80
|
readonly hostname: string;
|
|
79
81
|
readonly url: string;
|
|
80
82
|
readonly originalUrl: string;
|
|
@@ -87,9 +89,9 @@ export interface FastifyRequest<RouteGeneric extends RouteGenericInterface = Rou
|
|
|
87
89
|
readonly socket: RawRequest['socket'];
|
|
88
90
|
|
|
89
91
|
getValidationFunction(httpPart: HTTPRequestPart): ValidationFunction
|
|
90
|
-
getValidationFunction(schema: {[key: string]: any}): ValidationFunction
|
|
91
|
-
compileValidationSchema(schema: {[key: string]: any}, httpPart?: HTTPRequestPart): ValidationFunction
|
|
92
|
-
validateInput(input: any, schema: {[key: string]: any}, httpPart?: HTTPRequestPart): boolean
|
|
92
|
+
getValidationFunction(schema: { [key: string]: any }): ValidationFunction
|
|
93
|
+
compileValidationSchema(schema: { [key: string]: any }, httpPart?: HTTPRequestPart): ValidationFunction
|
|
94
|
+
validateInput(input: any, schema: { [key: string]: any }, httpPart?: HTTPRequestPart): boolean
|
|
93
95
|
validateInput(input: any, httpPart?: HTTPRequestPart): boolean
|
|
94
96
|
|
|
95
97
|
// Prefer `socket` over deprecated `connection` property in node 13.0.0 or higher
|