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
|
@@ -59,8 +59,6 @@ expectAssignable<FastifyErrorConstructor>(errorCodes.FST_ERR_FORCE_CLOSE_CONNECT
|
|
|
59
59
|
expectAssignable<FastifyErrorConstructor>(errorCodes.FST_ERR_DUPLICATED_ROUTE)
|
|
60
60
|
expectAssignable<FastifyErrorConstructor>(errorCodes.FST_ERR_BAD_URL)
|
|
61
61
|
expectAssignable<FastifyErrorConstructor>(errorCodes.FST_ERR_ASYNC_CONSTRAINT)
|
|
62
|
-
expectAssignable<FastifyErrorConstructor>(errorCodes.FST_ERR_DEFAULT_ROUTE_INVALID_TYPE)
|
|
63
|
-
expectAssignable<FastifyErrorConstructor>(errorCodes.FST_ERR_INVALID_URL)
|
|
64
62
|
expectAssignable<FastifyErrorConstructor>(errorCodes.FST_ERR_ROUTE_OPTIONS_NOT_OBJ)
|
|
65
63
|
expectAssignable<FastifyErrorConstructor>(errorCodes.FST_ERR_ROUTE_DUPLICATED_HANDLER)
|
|
66
64
|
expectAssignable<FastifyErrorConstructor>(errorCodes.FST_ERR_ROUTE_HANDLER_NOT_FN)
|
|
@@ -11,30 +11,32 @@ import fastify, {
|
|
|
11
11
|
RawRequestDefaultExpression,
|
|
12
12
|
RouteGenericInterface,
|
|
13
13
|
FastifyErrorCodes,
|
|
14
|
-
FastifyError
|
|
14
|
+
FastifyError,
|
|
15
|
+
SafePromiseLike
|
|
15
16
|
} from '../../fastify'
|
|
16
17
|
import { ErrorObject as AjvErrorObject } from 'ajv'
|
|
17
18
|
import * as http from 'http'
|
|
18
19
|
import * as https from 'https'
|
|
19
20
|
import * as http2 from 'http2'
|
|
20
21
|
import { expectType, expectError, expectAssignable, expectNotAssignable } from 'tsd'
|
|
21
|
-
import { FastifyLoggerInstance } from '../../types/logger'
|
|
22
22
|
import { Socket } from 'net'
|
|
23
23
|
|
|
24
24
|
// FastifyInstance
|
|
25
25
|
// http server
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
expectType<FastifyInstance<http.Server, http.IncomingMessage, http.ServerResponse> &
|
|
26
|
+
expectError<FastifyInstance<http.Server, http.IncomingMessage, http.ServerResponse> & Promise<FastifyInstance<http.Server, http.IncomingMessage, http.ServerResponse>>>(fastify())
|
|
27
|
+
expectAssignable<FastifyInstance<http.Server, http.IncomingMessage, http.ServerResponse> & PromiseLike<FastifyInstance<http.Server, http.IncomingMessage, http.ServerResponse>>>(fastify())
|
|
28
|
+
expectType<FastifyInstance<http.Server, http.IncomingMessage, http.ServerResponse> & SafePromiseLike<FastifyInstance<http.Server, http.IncomingMessage, http.ServerResponse>>>(fastify())
|
|
29
|
+
expectType<FastifyInstance<http.Server, http.IncomingMessage, http.ServerResponse> & SafePromiseLike<FastifyInstance<http.Server, http.IncomingMessage, http.ServerResponse>>>(fastify({}))
|
|
30
|
+
expectType<FastifyInstance<http.Server, http.IncomingMessage, http.ServerResponse> & SafePromiseLike<FastifyInstance<http.Server, http.IncomingMessage, http.ServerResponse>>>(fastify({ http: {} }))
|
|
29
31
|
// https server
|
|
30
|
-
expectType<FastifyInstance<https.Server, http.IncomingMessage, http.ServerResponse> &
|
|
31
|
-
expectType<FastifyInstance<https.Server, http.IncomingMessage, http.ServerResponse> &
|
|
32
|
+
expectType<FastifyInstance<https.Server, http.IncomingMessage, http.ServerResponse> & SafePromiseLike<FastifyInstance<https.Server, http.IncomingMessage, http.ServerResponse>>>(fastify({ https: {} }))
|
|
33
|
+
expectType<FastifyInstance<https.Server, http.IncomingMessage, http.ServerResponse> & SafePromiseLike<FastifyInstance<https.Server, http.IncomingMessage, http.ServerResponse>>>(fastify({ https: null }))
|
|
32
34
|
// http2 server
|
|
33
|
-
expectType<FastifyInstance<http2.Http2Server, http2.Http2ServerRequest, http2.Http2ServerResponse> &
|
|
34
|
-
expectType<FastifyInstance<http2.Http2SecureServer, http2.Http2ServerRequest, http2.Http2ServerResponse> &
|
|
35
|
+
expectType<FastifyInstance<http2.Http2Server, http2.Http2ServerRequest, http2.Http2ServerResponse> & SafePromiseLike<FastifyInstance<http2.Http2Server, http2.Http2ServerRequest, http2.Http2ServerResponse>>>(fastify({ http2: true, http2SessionTimeout: 1000 }))
|
|
36
|
+
expectType<FastifyInstance<http2.Http2SecureServer, http2.Http2ServerRequest, http2.Http2ServerResponse> & SafePromiseLike<FastifyInstance<http2.Http2SecureServer, http2.Http2ServerRequest, http2.Http2ServerResponse>>>(fastify({ http2: true, https: {}, http2SessionTimeout: 1000 }))
|
|
35
37
|
expectType<LightMyRequestChain>(fastify({ http2: true, https: {} }).inject())
|
|
36
|
-
expectType<FastifyInstance<https.Server, http.IncomingMessage, http.ServerResponse> &
|
|
37
|
-
expectType<FastifyInstance<https.Server, http.IncomingMessage, http.ServerResponse> &
|
|
38
|
+
expectType<FastifyInstance<https.Server, http.IncomingMessage, http.ServerResponse> & SafePromiseLike<FastifyInstance<https.Server, http.IncomingMessage, http.ServerResponse>>>(fastify({ schemaController: {} }))
|
|
39
|
+
expectType<FastifyInstance<https.Server, http.IncomingMessage, http.ServerResponse> & SafePromiseLike<FastifyInstance<https.Server, http.IncomingMessage, http.ServerResponse>>>(
|
|
38
40
|
fastify({
|
|
39
41
|
schemaController: {
|
|
40
42
|
compilersFactory: {}
|
|
@@ -92,7 +94,7 @@ expectAssignable<FastifyInstance<http.Server, http.IncomingMessage, http.ServerR
|
|
|
92
94
|
method: 'GET',
|
|
93
95
|
url: '/',
|
|
94
96
|
version: '1.0.0',
|
|
95
|
-
|
|
97
|
+
host: 'localhost',
|
|
96
98
|
remoteAddress: '127.0.0.1',
|
|
97
99
|
remotePort: 3000
|
|
98
100
|
}
|
|
@@ -14,6 +14,7 @@ import fastify, {
|
|
|
14
14
|
RegisterOptions,
|
|
15
15
|
RouteOptions,
|
|
16
16
|
// preClose hook types should be exported correctly https://github.com/fastify/fastify/pull/5335
|
|
17
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
17
18
|
preCloseAsyncHookHandler,
|
|
18
19
|
preCloseHookHandler
|
|
19
20
|
} from '../../fastify'
|
package/test/types/import.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { expectAssignable,
|
|
1
|
+
import { expectAssignable, expectError, expectNotDeprecated, expectType } from 'tsd'
|
|
2
2
|
import fastify, {
|
|
3
3
|
FastifyBaseLogger,
|
|
4
4
|
FastifyBodyParser,
|
|
@@ -12,7 +12,6 @@ import fastify, {
|
|
|
12
12
|
import { HookHandlerDoneFunction } from '../../types/hooks'
|
|
13
13
|
import { FastifyReply } from '../../types/reply'
|
|
14
14
|
import { FastifyRequest } from '../../types/request'
|
|
15
|
-
import { DefaultRoute } from '../../types/route'
|
|
16
15
|
import { FastifySchemaControllerOptions, FastifySchemaCompiler, FastifySerializerCompiler } from '../../types/schema'
|
|
17
16
|
import { AddressInfo } from 'net'
|
|
18
17
|
import { Bindings, ChildLoggerOptions } from '../../types/logger'
|
|
@@ -194,48 +193,6 @@ function invalidSchemaErrorFormatter (err: Error) {
|
|
|
194
193
|
}
|
|
195
194
|
expectError(server.setSchemaErrorFormatter(invalidSchemaErrorFormatter))
|
|
196
195
|
|
|
197
|
-
// test listen method callback
|
|
198
|
-
expectAssignable<void>(server.listen(3000, '', 0, (err, address) => {
|
|
199
|
-
expectType<Error | null>(err)
|
|
200
|
-
}))
|
|
201
|
-
expectAssignable<void>(server.listen('3000', '', 0, (err, address) => {
|
|
202
|
-
expectType<Error | null>(err)
|
|
203
|
-
}))
|
|
204
|
-
expectAssignable<void>(server.listen(3000, '', (err, address) => {
|
|
205
|
-
expectType<Error | null>(err)
|
|
206
|
-
}))
|
|
207
|
-
expectAssignable<void>(server.listen('3000', '', (err, address) => {
|
|
208
|
-
expectType<Error | null>(err)
|
|
209
|
-
}))
|
|
210
|
-
expectAssignable<void>(server.listen(3000, (err, address) => {
|
|
211
|
-
expectType<Error | null>(err)
|
|
212
|
-
}))
|
|
213
|
-
expectAssignable<void>(server.listen('3000', (err, address) => {
|
|
214
|
-
expectType<Error | null>(err)
|
|
215
|
-
}))
|
|
216
|
-
|
|
217
|
-
// test listen method callback types
|
|
218
|
-
expectAssignable<void>(server.listen('3000', (err, address) => {
|
|
219
|
-
expectAssignable<Error|null>(err)
|
|
220
|
-
expectAssignable<string>(address)
|
|
221
|
-
}))
|
|
222
|
-
|
|
223
|
-
// test listen method promise
|
|
224
|
-
expectAssignable<PromiseLike<string>>(server.listen(3000))
|
|
225
|
-
expectAssignable<PromiseLike<string>>(server.listen('3000'))
|
|
226
|
-
expectAssignable<PromiseLike<string>>(server.listen(3000, '', 0))
|
|
227
|
-
expectAssignable<PromiseLike<string>>(server.listen('3000', '', 0))
|
|
228
|
-
expectAssignable<PromiseLike<string>>(server.listen(3000, ''))
|
|
229
|
-
expectAssignable<PromiseLike<string>>(server.listen('3000', ''))
|
|
230
|
-
|
|
231
|
-
// Test variadic listen signatures Typescript deprecation
|
|
232
|
-
expectDeprecated(server.listen(3000))
|
|
233
|
-
expectDeprecated(server.listen('3000'))
|
|
234
|
-
expectDeprecated(server.listen(3000, '', 0))
|
|
235
|
-
expectDeprecated(server.listen('3000', '', 0))
|
|
236
|
-
expectDeprecated(server.listen(3000, ''))
|
|
237
|
-
expectDeprecated(server.listen('3000', ''))
|
|
238
|
-
|
|
239
196
|
// test listen opts objects
|
|
240
197
|
expectAssignable<PromiseLike<string>>(server.listen())
|
|
241
198
|
expectAssignable<PromiseLike<string>>(server.listen({ port: 3000 }))
|
|
@@ -279,6 +236,12 @@ expectAssignable<FastifyInstance>(server.ready())
|
|
|
279
236
|
expectAssignable<FastifyInstance>(server.ready((err) => {
|
|
280
237
|
expectType<Error | null>(err)
|
|
281
238
|
}))
|
|
239
|
+
expectAssignable<FastifyInstance>(server.ready(async (err) => {
|
|
240
|
+
expectType<Error | null>(err)
|
|
241
|
+
}))
|
|
242
|
+
expectAssignable<Parameters<typeof server.ready>[0]>(async (err) => {
|
|
243
|
+
expectType<Error | null>(err)
|
|
244
|
+
})
|
|
282
245
|
|
|
283
246
|
expectAssignable<void>(server.routing({} as RawRequestDefaultExpression, {} as RawReplyDefaultExpression))
|
|
284
247
|
|
|
@@ -453,7 +416,7 @@ server.decorate('typedTestProperty', {
|
|
|
453
416
|
})
|
|
454
417
|
server.decorate('typedTestProperty')
|
|
455
418
|
server.decorate('typedTestProperty', null, ['foo'])
|
|
456
|
-
server.decorate('typedTestProperty', null)
|
|
419
|
+
expectError(server.decorate('typedTestProperty', null))
|
|
457
420
|
expectError(server.decorate('typedTestProperty', 'foo'))
|
|
458
421
|
expectError(server.decorate('typedTestProperty', {
|
|
459
422
|
getter () {
|
|
@@ -493,7 +456,7 @@ server.decorateRequest('typedTestRequestProperty', {
|
|
|
493
456
|
})
|
|
494
457
|
server.decorateRequest('typedTestRequestProperty')
|
|
495
458
|
server.decorateRequest('typedTestRequestProperty', null, ['foo'])
|
|
496
|
-
server.decorateRequest('typedTestRequestProperty', null)
|
|
459
|
+
expectError(server.decorateRequest('typedTestRequestProperty', null))
|
|
497
460
|
expectError(server.decorateRequest('typedTestRequestProperty', 'foo'))
|
|
498
461
|
expectError(server.decorateRequest('typedTestRequestProperty', {
|
|
499
462
|
getter () {
|
|
@@ -533,7 +496,7 @@ server.decorateReply('typedTestReplyProperty', {
|
|
|
533
496
|
})
|
|
534
497
|
server.decorateReply('typedTestReplyProperty')
|
|
535
498
|
server.decorateReply('typedTestReplyProperty', null, ['foo'])
|
|
536
|
-
server.decorateReply('typedTestReplyProperty', null)
|
|
499
|
+
expectError(server.decorateReply('typedTestReplyProperty', null))
|
|
537
500
|
expectError(server.decorateReply('typedTestReplyProperty', 'foo'))
|
|
538
501
|
expectError(server.decorateReply('typedTestReplyProperty', {
|
|
539
502
|
getter () {
|
|
@@ -570,9 +533,5 @@ const versionConstraintStrategy = {
|
|
|
570
533
|
expectType<void>(server.addConstraintStrategy(versionConstraintStrategy))
|
|
571
534
|
expectType<boolean>(server.hasConstraintStrategy(versionConstraintStrategy.name))
|
|
572
535
|
|
|
573
|
-
expectType<boolean>(server.hasPlugin(''))
|
|
574
|
-
|
|
575
|
-
expectAssignable<DefaultRoute<RawRequestDefaultExpression, RawReplyDefaultExpression>>(server.getDefaultRoute())
|
|
576
|
-
|
|
577
536
|
expectType<FastifySchemaCompiler<any> | undefined>(server.validatorCompiler)
|
|
578
537
|
expectType<FastifySerializerCompiler<any> | undefined>(server.serializerCompiler)
|
|
@@ -5,8 +5,7 @@ import fastify, {
|
|
|
5
5
|
FastifyLoggerInstance,
|
|
6
6
|
FastifyRequest,
|
|
7
7
|
FastifyReply,
|
|
8
|
-
FastifyBaseLogger
|
|
9
|
-
FastifyInstance
|
|
8
|
+
FastifyBaseLogger
|
|
10
9
|
} from '../../fastify'
|
|
11
10
|
import { Server, IncomingMessage, ServerResponse } from 'http'
|
|
12
11
|
import * as fs from 'fs'
|
|
@@ -121,14 +120,52 @@ const serverAutoInferringTypes = fastify({
|
|
|
121
120
|
|
|
122
121
|
expectType<FastifyBaseLogger>(serverAutoInferringTypes.log)
|
|
123
122
|
|
|
124
|
-
const
|
|
125
|
-
|
|
123
|
+
const serverWithLoggerInstance = fastify({
|
|
124
|
+
loggerInstance: P({
|
|
126
125
|
level: 'info',
|
|
127
126
|
redact: ['x-userinfo']
|
|
128
127
|
})
|
|
129
128
|
})
|
|
130
129
|
|
|
131
|
-
expectType<P.Logger>(
|
|
130
|
+
expectType<P.Logger>(serverWithLoggerInstance.log)
|
|
131
|
+
|
|
132
|
+
const serverWithPinoConfig = fastify({
|
|
133
|
+
logger: {
|
|
134
|
+
level: 'info',
|
|
135
|
+
serializers: {
|
|
136
|
+
req (IncomingMessage) {
|
|
137
|
+
expectType<FastifyRequest>(IncomingMessage)
|
|
138
|
+
return {
|
|
139
|
+
method: 'method',
|
|
140
|
+
url: 'url',
|
|
141
|
+
version: 'version',
|
|
142
|
+
host: 'hostname',
|
|
143
|
+
remoteAddress: 'remoteAddress',
|
|
144
|
+
remotePort: 80,
|
|
145
|
+
other: ''
|
|
146
|
+
}
|
|
147
|
+
},
|
|
148
|
+
res (ServerResponse) {
|
|
149
|
+
expectType<ResSerializerReply<Server, FastifyReply>>(ServerResponse)
|
|
150
|
+
expectAssignable<Partial<FastifyReply> & Pick<FastifyReply, 'statusCode'>>(ServerResponse)
|
|
151
|
+
expectNotAssignable<FastifyReply>(ServerResponse)
|
|
152
|
+
return {
|
|
153
|
+
statusCode: 'statusCode'
|
|
154
|
+
}
|
|
155
|
+
},
|
|
156
|
+
err (FastifyError) {
|
|
157
|
+
return {
|
|
158
|
+
other: '',
|
|
159
|
+
type: 'type',
|
|
160
|
+
message: 'msg',
|
|
161
|
+
stack: 'stack'
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
})
|
|
167
|
+
|
|
168
|
+
expectType<FastifyBaseLogger>(serverWithPinoConfig.log)
|
|
132
169
|
|
|
133
170
|
const serverAutoInferredFileOption = fastify({
|
|
134
171
|
logger: {
|
|
@@ -165,7 +202,7 @@ const serverAutoInferredSerializerObjectOption = fastify({
|
|
|
165
202
|
method: 'method',
|
|
166
203
|
url: 'url',
|
|
167
204
|
version: 'version',
|
|
168
|
-
|
|
205
|
+
host: 'hostname',
|
|
169
206
|
remoteAddress: 'remoteAddress',
|
|
170
207
|
remotePort: 80,
|
|
171
208
|
other: ''
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import fastify, { FastifyInstance, FastifyPluginOptions } from '../../fastify'
|
|
1
|
+
import fastify, { FastifyInstance, FastifyPluginOptions, SafePromiseLike } from '../../fastify'
|
|
2
2
|
import * as http from 'http'
|
|
3
3
|
import * as https from 'https'
|
|
4
4
|
import { expectType, expectError, expectAssignable } from 'tsd'
|
|
@@ -42,7 +42,9 @@ expectAssignable<FastifyInstance>(fastify().register(async function (instance, o
|
|
|
42
42
|
expectError(fastify().register(function (instance, opts, done) { }, { logLevel: '' })) // must use a valid logLevel
|
|
43
43
|
|
|
44
44
|
const httpsServer = fastify({ https: {} })
|
|
45
|
-
|
|
45
|
+
expectError<FastifyInstance<https.Server, http.IncomingMessage, http.ServerResponse> & Promise<FastifyInstance<https.Server, http.IncomingMessage, http.ServerResponse>>>(httpsServer)
|
|
46
|
+
expectAssignable<FastifyInstance<https.Server, http.IncomingMessage, http.ServerResponse> & PromiseLike<FastifyInstance<https.Server, http.IncomingMessage, http.ServerResponse>>>(httpsServer)
|
|
47
|
+
expectType<FastifyInstance<https.Server, http.IncomingMessage, http.ServerResponse> & SafePromiseLike<FastifyInstance<https.Server, http.IncomingMessage, http.ServerResponse>>>(httpsServer)
|
|
46
48
|
|
|
47
49
|
// Chainable
|
|
48
50
|
httpsServer
|
|
@@ -61,6 +63,7 @@ expectAssignable<PromiseLike<undefined>>(httpsServer.register(testPluginOptsWith
|
|
|
61
63
|
expectAssignable<PromiseLike<undefined>>(httpsServer.register(testPluginOptsWithType, { prefix: '/test' }))
|
|
62
64
|
expectAssignable<PromiseLike<undefined>>(httpsServer.register(testPluginOptsWithTypeAsync, { prefix: '/test' }))
|
|
63
65
|
|
|
66
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
64
67
|
async function testAsync (): Promise<void> {
|
|
65
68
|
await httpsServer
|
|
66
69
|
.register(testPluginOpts)
|
|
@@ -72,7 +72,7 @@ expectAssignable<ServerWithHttp2>(serverWithHttp2.register(async (instance: Serv
|
|
|
72
72
|
}))
|
|
73
73
|
|
|
74
74
|
// With Type Provider
|
|
75
|
-
type TestTypeProvider = {
|
|
75
|
+
type TestTypeProvider = { schema: 'test', validator: 'test', serializer: 'test' }
|
|
76
76
|
const serverWithTypeProvider = fastify().withTypeProvider<TestTypeProvider>()
|
|
77
77
|
type ServerWithTypeProvider = FastifyInstance<Server, IncomingMessage, ServerResponse, FastifyLoggerInstance, TestTypeProvider>
|
|
78
78
|
const testPluginWithTypeProvider: FastifyPluginCallback<TestOptions, RawServerDefault, TestTypeProvider> = function (instance, opts, done) { }
|
|
@@ -115,7 +115,7 @@ const customLogger = {
|
|
|
115
115
|
silent: () => { }
|
|
116
116
|
}
|
|
117
117
|
const serverWithTypeProviderAndLogger = fastify({
|
|
118
|
-
|
|
118
|
+
loggerInstance: customLogger
|
|
119
119
|
}).withTypeProvider<TestTypeProvider>()
|
|
120
120
|
type ServerWithTypeProviderAndLogger = FastifyInstance<Server, IncomingMessage, ServerResponse, typeof customLogger, TestTypeProvider>
|
|
121
121
|
const testPluginWithTypeProviderAndLogger: FastifyPluginCallback<TestOptions, RawServerDefault, TestTypeProvider, typeof customLogger> = function (instance, opts, done) { }
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Buffer } from 'buffer'
|
|
2
|
-
import { expectAssignable,
|
|
3
|
-
import fastify, { FastifyReplyContext, FastifyReply, FastifyRequest, FastifySchema,
|
|
2
|
+
import { expectAssignable, expectError, expectType } from 'tsd'
|
|
3
|
+
import fastify, { FastifyReplyContext, FastifyReply, FastifyRequest, FastifySchema, FastifyTypeProviderDefault, RawRequestDefaultExpression, RouteHandler, RouteHandlerMethod } from '../../fastify'
|
|
4
4
|
import { FastifyInstance } from '../../types/instance'
|
|
5
5
|
import { FastifyLoggerInstance } from '../../types/logger'
|
|
6
6
|
import { ResolveReplyTypeWithRouteGeneric } from '../../types/reply'
|
|
@@ -22,18 +22,17 @@ const getHandler: RouteHandlerMethod = function (_request, reply) {
|
|
|
22
22
|
expectType<number>(reply.elapsedTime)
|
|
23
23
|
expectType<number>(reply.statusCode)
|
|
24
24
|
expectType<boolean>(reply.sent)
|
|
25
|
+
expectType<(hints: Record<string, string | string[]>, callback?: (() => void) | undefined) => void>(reply.writeEarlyHints)
|
|
25
26
|
expectType<((payload?: unknown) => FastifyReply)>(reply.send)
|
|
26
27
|
expectAssignable<(key: string, value: any) => FastifyReply>(reply.header)
|
|
27
|
-
expectAssignable<(values: {[key: string]: any}) => FastifyReply>(reply.headers)
|
|
28
|
+
expectAssignable<(values: { [key: string]: any }) => FastifyReply>(reply.headers)
|
|
28
29
|
expectAssignable<(key: string) => number | string | string[] | undefined>(reply.getHeader)
|
|
29
30
|
expectAssignable<() => { [key: string]: number | string | string[] | undefined }>(reply.getHeaders)
|
|
30
31
|
expectAssignable<(key: string) => FastifyReply>(reply.removeHeader)
|
|
31
32
|
expectAssignable<(key: string) => boolean>(reply.hasHeader)
|
|
32
|
-
expectType<{(statusCode: number, url: string): FastifyReply;
|
|
33
|
+
expectType<{ (statusCode: number, url: string): FastifyReply;(url: string, statusCode?: number): FastifyReply; }>(reply.redirect)
|
|
33
34
|
expectType<() => FastifyReply>(reply.hijack)
|
|
34
35
|
expectType<() => void>(reply.callNotFound)
|
|
35
|
-
// Test reply.getResponseTime() deprecation
|
|
36
|
-
expectDeprecated(reply.getResponseTime)
|
|
37
36
|
expectType<(contentType: string) => FastifyReply>(reply.type)
|
|
38
37
|
expectType<(fn: (payload: any) => string) => FastifyReply>(reply.serializer)
|
|
39
38
|
expectType<(payload: any) => string | ArrayBuffer | Buffer>(reply.serialize)
|
|
@@ -43,10 +42,10 @@ const getHandler: RouteHandlerMethod = function (_request, reply) {
|
|
|
43
42
|
expectType<(key: string) => FastifyReply>(reply.removeTrailer)
|
|
44
43
|
expectType<FastifyInstance>(reply.server)
|
|
45
44
|
expectAssignable<((httpStatus: string) => DefaultSerializationFunction | undefined)>(reply.getSerializationFunction)
|
|
46
|
-
expectAssignable<((schema: {[key: string]: unknown}) => DefaultSerializationFunction | undefined)>(reply.getSerializationFunction)
|
|
47
|
-
expectAssignable<((schema: {[key: string]: unknown}, httpStatus?: string) => DefaultSerializationFunction)>(reply.compileSerializationSchema)
|
|
48
|
-
expectAssignable<((input: {[key: string]: unknown}, schema: {[key: string]: unknown}, httpStatus?: string) => unknown)>(reply.serializeInput)
|
|
49
|
-
expectAssignable<((input: {[key: string]: unknown}, httpStatus: string) => unknown)>(reply.serializeInput)
|
|
45
|
+
expectAssignable<((schema: { [key: string]: unknown }) => DefaultSerializationFunction | undefined)>(reply.getSerializationFunction)
|
|
46
|
+
expectAssignable<((schema: { [key: string]: unknown }, httpStatus?: string) => DefaultSerializationFunction)>(reply.compileSerializationSchema)
|
|
47
|
+
expectAssignable<((input: { [key: string]: unknown }, schema: { [key: string]: unknown }, httpStatus?: string) => unknown)>(reply.serializeInput)
|
|
48
|
+
expectAssignable<((input: { [key: string]: unknown }, httpStatus: string) => unknown)>(reply.serializeInput)
|
|
50
49
|
}
|
|
51
50
|
|
|
52
51
|
interface ReplyPayload {
|
|
@@ -165,10 +164,12 @@ server.get<InvalidReplyHttpCodes>('get-invalid-http-codes-reply-error', async fu
|
|
|
165
164
|
})
|
|
166
165
|
})
|
|
167
166
|
|
|
167
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
168
168
|
const httpHeaderHandler: RouteHandlerMethod = function (_request, reply) {
|
|
169
169
|
// accept is a header provided by @types/node
|
|
170
170
|
reply.getHeader('accept')
|
|
171
|
-
|
|
171
|
+
/* eslint-disable @typescript-eslint/no-unused-expressions */
|
|
172
|
+
reply.getHeaders().accept
|
|
172
173
|
reply.hasHeader('accept')
|
|
173
174
|
reply.header('accept', 'test')
|
|
174
175
|
reply.headers({ accept: 'test' })
|
|
@@ -177,7 +178,7 @@ const httpHeaderHandler: RouteHandlerMethod = function (_request, reply) {
|
|
|
177
178
|
// x-fastify-test is not a header provided by @types/node
|
|
178
179
|
// and should not result in a typing error
|
|
179
180
|
reply.getHeader('x-fastify-test')
|
|
180
|
-
reply.getHeaders()['x-fastify-test']
|
|
181
|
+
reply.getHeaders()['x-fastify-test']
|
|
181
182
|
reply.hasHeader('x-fastify-test')
|
|
182
183
|
reply.header('x-fastify-test', 'test')
|
|
183
184
|
reply.headers({ 'x-fastify-test': 'test' })
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { expectAssignable, expectType } from 'tsd'
|
|
1
|
+
import { expectAssignable, expectError, expectType } from 'tsd'
|
|
2
2
|
import fastify, {
|
|
3
3
|
ContextConfigDefault,
|
|
4
4
|
FastifyRequestContext,
|
|
@@ -12,7 +12,8 @@ import fastify, {
|
|
|
12
12
|
RequestBodyDefault,
|
|
13
13
|
RequestGenericInterface,
|
|
14
14
|
RouteHandler,
|
|
15
|
-
RouteHandlerMethod
|
|
15
|
+
RouteHandlerMethod,
|
|
16
|
+
SafePromiseLike
|
|
16
17
|
} from '../../fastify'
|
|
17
18
|
import { FastifyInstance } from '../../types/instance'
|
|
18
19
|
import { FastifyLoggerInstance } from '../../types/logger'
|
|
@@ -54,7 +55,7 @@ type CustomRequest = FastifyRequest<{
|
|
|
54
55
|
}>
|
|
55
56
|
|
|
56
57
|
type HTTPRequestPart = 'body' | 'query' | 'querystring' | 'params' | 'headers'
|
|
57
|
-
type ExpectedGetValidationFunction = (input: {[key: string]: unknown}) => boolean
|
|
58
|
+
type ExpectedGetValidationFunction = (input: { [key: string]: unknown }) => boolean
|
|
58
59
|
|
|
59
60
|
interface CustomLoggerInterface extends FastifyLoggerInstance {
|
|
60
61
|
foo: FastifyLogFn; // custom severity logger method
|
|
@@ -69,6 +70,8 @@ const getHandler: RouteHandler = function (request, _reply) {
|
|
|
69
70
|
expectType<Readonly<RequestRouteOptions>>(request.routeOptions)
|
|
70
71
|
expectType<boolean>(request.is404)
|
|
71
72
|
expectType<string>(request.hostname)
|
|
73
|
+
expectType<string>(request.host)
|
|
74
|
+
expectType<number>(request.port)
|
|
72
75
|
expectType<string>(request.ip)
|
|
73
76
|
expectType<string[] | undefined>(request.ips)
|
|
74
77
|
expectType<RawRequestDefaultExpression>(request.raw)
|
|
@@ -94,9 +97,9 @@ const getHandler: RouteHandler = function (request, _reply) {
|
|
|
94
97
|
expectType<Error & { validation: any; validationContext: string } | undefined>(request.validationError)
|
|
95
98
|
expectType<FastifyInstance>(request.server)
|
|
96
99
|
expectAssignable<(httpPart: HTTPRequestPart) => ExpectedGetValidationFunction>(request.getValidationFunction)
|
|
97
|
-
expectAssignable<(schema: {[key: string]: unknown}) => ExpectedGetValidationFunction>(request.getValidationFunction)
|
|
98
|
-
expectAssignable<(input: {[key: string]: unknown}, schema: {[key: string]: unknown}, httpPart?: HTTPRequestPart) => boolean>(request.validateInput)
|
|
99
|
-
expectAssignable<(input: {[key: string]: unknown}, httpPart?: HTTPRequestPart) => boolean>(request.validateInput)
|
|
100
|
+
expectAssignable<(schema: { [key: string]: unknown }) => ExpectedGetValidationFunction>(request.getValidationFunction)
|
|
101
|
+
expectAssignable<(input: { [key: string]: unknown }, schema: { [key: string]: unknown }, httpPart?: HTTPRequestPart) => boolean>(request.validateInput)
|
|
102
|
+
expectAssignable<(input: { [key: string]: unknown }, httpPart?: HTTPRequestPart) => boolean>(request.validateInput)
|
|
100
103
|
}
|
|
101
104
|
|
|
102
105
|
const getHandlerWithCustomLogger: RouteHandlerMethod<RawServerDefault, RawRequestDefaultExpression, RawReplyDefaultExpression, RouteGenericInterface, ContextConfigDefault, FastifySchema, FastifyTypeProviderDefault, CustomLoggerInterface> = function (request, _reply) {
|
|
@@ -153,10 +156,18 @@ const customLogger: CustomLoggerInterface = {
|
|
|
153
156
|
child: () => customLogger
|
|
154
157
|
}
|
|
155
158
|
|
|
156
|
-
const serverWithCustomLogger = fastify({
|
|
157
|
-
|
|
159
|
+
const serverWithCustomLogger = fastify({ loggerInstance: customLogger })
|
|
160
|
+
expectError<
|
|
161
|
+
FastifyInstance<RawServerDefault, RawRequestDefaultExpression, RawReplyDefaultExpression, CustomLoggerInterface>
|
|
162
|
+
& Promise<FastifyInstance<RawServerDefault, RawRequestDefaultExpression, RawReplyDefaultExpression, CustomLoggerInterface>>
|
|
163
|
+
>(serverWithCustomLogger)
|
|
164
|
+
expectAssignable<
|
|
158
165
|
FastifyInstance<RawServerDefault, RawRequestDefaultExpression, RawReplyDefaultExpression, CustomLoggerInterface>
|
|
159
166
|
& PromiseLike<FastifyInstance<RawServerDefault, RawRequestDefaultExpression, RawReplyDefaultExpression, CustomLoggerInterface>>
|
|
160
167
|
>(serverWithCustomLogger)
|
|
168
|
+
expectType<
|
|
169
|
+
FastifyInstance<RawServerDefault, RawRequestDefaultExpression, RawReplyDefaultExpression, CustomLoggerInterface>
|
|
170
|
+
& SafePromiseLike<FastifyInstance<RawServerDefault, RawRequestDefaultExpression, RawReplyDefaultExpression, CustomLoggerInterface>>
|
|
171
|
+
>(serverWithCustomLogger)
|
|
161
172
|
|
|
162
173
|
serverWithCustomLogger.get('/get', getHandlerWithCustomLogger)
|
|
@@ -19,6 +19,14 @@ declare module '../../fastify' {
|
|
|
19
19
|
interface FastifyContextConfig {
|
|
20
20
|
foo: string;
|
|
21
21
|
bar: number;
|
|
22
|
+
includeMessage?: boolean;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
26
|
+
interface FastifyRequest<RouteGeneric, RawServer, RawRequest, SchemaCompiler, TypeProvider, ContextConfig, Logger, RequestType> {
|
|
27
|
+
message: ContextConfig extends { includeMessage: true }
|
|
28
|
+
? string
|
|
29
|
+
: null;
|
|
22
30
|
}
|
|
23
31
|
}
|
|
24
32
|
|
|
@@ -36,9 +44,29 @@ const routeHandlerWithReturnValue: RouteHandlerMethod = function (request, reply
|
|
|
36
44
|
return reply.send()
|
|
37
45
|
}
|
|
38
46
|
|
|
39
|
-
|
|
47
|
+
fastify().get(
|
|
48
|
+
'/',
|
|
49
|
+
{ config: { foo: 'bar', bar: 100, includeMessage: true } },
|
|
50
|
+
(req) => {
|
|
51
|
+
expectType<string>(req.message)
|
|
52
|
+
}
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
fastify().get(
|
|
56
|
+
'/',
|
|
57
|
+
{ config: { foo: 'bar', bar: 100, includeMessage: false } },
|
|
58
|
+
(req) => {
|
|
59
|
+
expectType<null>(req.message)
|
|
60
|
+
}
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
type LowerCaseHTTPMethods = 'delete' | 'get' | 'head' | 'patch' | 'post' | 'put' |
|
|
64
|
+
'options' | 'propfind' | 'proppatch' | 'mkcol' | 'copy' | 'move' | 'lock' |
|
|
65
|
+
'unlock' | 'trace' | 'search' | 'mkcalendar' | 'report'
|
|
40
66
|
|
|
41
|
-
['
|
|
67
|
+
;['DELETE', 'GET', 'HEAD', 'PATCH', 'POST', 'PUT', 'OPTIONS', 'PROPFIND',
|
|
68
|
+
'PROPPATCH', 'MKCOL', 'COPY', 'MOVE', 'LOCK', 'UNLOCK', 'TRACE', 'SEARCH', 'MKCALENDAR', 'REPORT'
|
|
69
|
+
].forEach(method => {
|
|
42
70
|
// route method
|
|
43
71
|
expectType<FastifyInstance>(fastify().route({
|
|
44
72
|
method: method as HTTPMethods,
|
|
@@ -70,7 +70,7 @@ expectAssignable<FastifyInstance>(server.setSerializerCompiler<FastifySchema & {
|
|
|
70
70
|
storeFunction (routeOpts, schemaValidationCode) { }
|
|
71
71
|
})
|
|
72
72
|
|
|
73
|
-
|
|
73
|
+
fastify({
|
|
74
74
|
jsonShorthand: false,
|
|
75
75
|
schemaController: {
|
|
76
76
|
compilersFactory: {
|
|
@@ -86,7 +86,7 @@ expectAssignable<FastifyInstance>(server.setSerializerCompiler<FastifySchema & {
|
|
|
86
86
|
storeFunction (routeOpts, schemaValidationCode) { }
|
|
87
87
|
})
|
|
88
88
|
|
|
89
|
-
|
|
89
|
+
fastify({
|
|
90
90
|
jsonShorthand: false,
|
|
91
91
|
schemaController: {
|
|
92
92
|
compilersFactory: {
|