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
package/types/route.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { FastifyError } from '@fastify/error'
|
|
2
2
|
import { ConstraintStrategy } from 'find-my-way'
|
|
3
|
-
import {
|
|
3
|
+
import { FastifyContextConfig } from './context'
|
|
4
4
|
import { onErrorMetaHookHandler, onRequestAbortMetaHookHandler, onRequestMetaHookHandler, onResponseMetaHookHandler, onSendMetaHookHandler, onTimeoutMetaHookHandler, preHandlerMetaHookHandler, preParsingMetaHookHandler, preSerializationMetaHookHandler, preValidationMetaHookHandler } from './hooks'
|
|
5
5
|
import { FastifyInstance } from './instance'
|
|
6
6
|
import { FastifyBaseLogger, FastifyChildLoggerFactory, LogLevel } from './logger'
|
|
@@ -48,44 +48,44 @@ export interface RouteShorthandOptions<
|
|
|
48
48
|
attachValidation?: boolean;
|
|
49
49
|
exposeHeadRoute?: boolean;
|
|
50
50
|
|
|
51
|
-
validatorCompiler?: FastifySchemaCompiler<SchemaCompiler
|
|
52
|
-
serializerCompiler?: FastifySerializerCompiler<SchemaCompiler
|
|
51
|
+
validatorCompiler?: FastifySchemaCompiler<NoInfer<SchemaCompiler>>;
|
|
52
|
+
serializerCompiler?: FastifySerializerCompiler<NoInfer<SchemaCompiler>>;
|
|
53
53
|
bodyLimit?: number;
|
|
54
54
|
logLevel?: LogLevel;
|
|
55
|
-
config?:
|
|
55
|
+
config?: FastifyContextConfig & ContextConfig;
|
|
56
56
|
version?: string;
|
|
57
57
|
constraints?: RouteConstraint,
|
|
58
|
-
prefixTrailingSlash?: 'slash'|'no-slash'|'both';
|
|
58
|
+
prefixTrailingSlash?: 'slash' | 'no-slash' | 'both';
|
|
59
59
|
errorHandler?: (
|
|
60
60
|
this: FastifyInstance<RawServer, RawRequest, RawReply, Logger, TypeProvider>,
|
|
61
61
|
error: FastifyError,
|
|
62
|
-
request: FastifyRequest<RouteGeneric, RawServer, RawRequest, SchemaCompiler
|
|
63
|
-
reply: FastifyReply<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler
|
|
62
|
+
request: FastifyRequest<RouteGeneric, RawServer, RawRequest, NoInfer<SchemaCompiler>, TypeProvider, ContextConfig, Logger>,
|
|
63
|
+
reply: FastifyReply<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInfer<SchemaCompiler>, TypeProvider>
|
|
64
64
|
) => void;
|
|
65
65
|
childLoggerFactory?: FastifyChildLoggerFactory<RawServer, RawRequest, RawReply, Logger, TypeProvider>;
|
|
66
66
|
schemaErrorFormatter?: SchemaErrorFormatter;
|
|
67
67
|
|
|
68
68
|
// hooks
|
|
69
|
-
onRequest?: onRequestMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler
|
|
70
|
-
| onRequestMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler
|
|
71
|
-
preParsing?: preParsingMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler
|
|
72
|
-
| preParsingMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler
|
|
73
|
-
preValidation?: preValidationMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler
|
|
74
|
-
| preValidationMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler
|
|
75
|
-
preHandler?: preHandlerMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler
|
|
76
|
-
| preHandlerMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler
|
|
77
|
-
preSerialization?: preSerializationMetaHookHandler<unknown, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler
|
|
78
|
-
| preSerializationMetaHookHandler<unknown, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler
|
|
79
|
-
onSend?: onSendMetaHookHandler<unknown, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler
|
|
80
|
-
| onSendMetaHookHandler<unknown, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler
|
|
81
|
-
onResponse?: onResponseMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler
|
|
82
|
-
| onResponseMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler
|
|
83
|
-
onTimeout?: onTimeoutMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler
|
|
84
|
-
| onTimeoutMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler
|
|
85
|
-
onError?: onErrorMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, FastifyError, SchemaCompiler
|
|
86
|
-
| onErrorMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, FastifyError, SchemaCompiler
|
|
87
|
-
onRequestAbort?: onRequestAbortMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler
|
|
88
|
-
| onRequestAbortMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler
|
|
69
|
+
onRequest?: onRequestMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInfer<SchemaCompiler>, TypeProvider, Logger>
|
|
70
|
+
| onRequestMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInfer<SchemaCompiler>, TypeProvider, Logger>[];
|
|
71
|
+
preParsing?: preParsingMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInfer<SchemaCompiler>, TypeProvider, Logger>
|
|
72
|
+
| preParsingMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInfer<SchemaCompiler>, TypeProvider, Logger>[];
|
|
73
|
+
preValidation?: preValidationMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInfer<SchemaCompiler>, TypeProvider, Logger>
|
|
74
|
+
| preValidationMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInfer<SchemaCompiler>, TypeProvider, Logger>[];
|
|
75
|
+
preHandler?: preHandlerMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInfer<SchemaCompiler>, TypeProvider, Logger>
|
|
76
|
+
| preHandlerMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInfer<SchemaCompiler>, TypeProvider, Logger>[];
|
|
77
|
+
preSerialization?: preSerializationMetaHookHandler<unknown, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInfer<SchemaCompiler>, TypeProvider, Logger>
|
|
78
|
+
| preSerializationMetaHookHandler<unknown, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInfer<SchemaCompiler>, TypeProvider, Logger>[];
|
|
79
|
+
onSend?: onSendMetaHookHandler<unknown, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInfer<SchemaCompiler>, TypeProvider, Logger>
|
|
80
|
+
| onSendMetaHookHandler<unknown, RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInfer<SchemaCompiler>, TypeProvider, Logger>[];
|
|
81
|
+
onResponse?: onResponseMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInfer<SchemaCompiler>, TypeProvider, Logger>
|
|
82
|
+
| onResponseMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInfer<SchemaCompiler>, TypeProvider, Logger>[];
|
|
83
|
+
onTimeout?: onTimeoutMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInfer<SchemaCompiler>, TypeProvider, Logger>
|
|
84
|
+
| onTimeoutMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInfer<SchemaCompiler>, TypeProvider, Logger>[];
|
|
85
|
+
onError?: onErrorMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, FastifyError, NoInfer<SchemaCompiler>, TypeProvider, Logger>
|
|
86
|
+
| onErrorMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, FastifyError, NoInfer<SchemaCompiler>, TypeProvider, Logger>[];
|
|
87
|
+
onRequestAbort?: onRequestAbortMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInfer<SchemaCompiler>, TypeProvider, Logger>
|
|
88
|
+
| onRequestAbortMetaHookHandler<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInfer<SchemaCompiler>, TypeProvider, Logger>[];
|
|
89
89
|
}
|
|
90
90
|
/**
|
|
91
91
|
* Route handler method declaration.
|
|
@@ -119,7 +119,7 @@ export interface RouteShorthandOptionsWithHandler<
|
|
|
119
119
|
TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,
|
|
120
120
|
Logger extends FastifyBaseLogger = FastifyBaseLogger
|
|
121
121
|
> extends RouteShorthandOptions<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler, TypeProvider, Logger> {
|
|
122
|
-
handler: RouteHandlerMethod<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, SchemaCompiler
|
|
122
|
+
handler: RouteHandlerMethod<RawServer, RawRequest, RawReply, RouteGeneric, ContextConfig, NoInfer<SchemaCompiler>, TypeProvider, Logger>;
|
|
123
123
|
}
|
|
124
124
|
|
|
125
125
|
/**
|
|
@@ -183,4 +183,4 @@ export type RouteHandler<
|
|
|
183
183
|
export type DefaultRoute<Request, Reply> = (
|
|
184
184
|
req: Request,
|
|
185
185
|
res: Reply,
|
|
186
|
-
) => void
|
|
186
|
+
) => void
|
package/types/schema.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ValidatorFactory } from '@fastify/ajv-compiler'
|
|
2
2
|
import { SerializerFactory } from '@fastify/fast-json-stringify-compiler'
|
|
3
|
-
import { FastifyInstance } from '../fastify'
|
|
3
|
+
import { FastifyInstance, SafePromiseLike } from '../fastify'
|
|
4
4
|
/**
|
|
5
5
|
* Schemas in Fastify follow the JSON-Schema standard. For this reason
|
|
6
6
|
* we have opted to not ship strict schema based types. Instead we provide
|
|
@@ -33,7 +33,7 @@ export interface FastifySchemaValidationError {
|
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
export interface FastifyValidationResult {
|
|
36
|
-
(data: any): boolean |
|
|
36
|
+
(data: any): boolean | SafePromiseLike<any> | { error?: Error, value?: any }
|
|
37
37
|
errors?: FastifySchemaValidationError[] | null;
|
|
38
38
|
}
|
|
39
39
|
|
|
@@ -44,7 +44,7 @@ export type FastifySchemaCompiler<T> = (routeSchema: FastifyRouteSchemaDef<T>) =
|
|
|
44
44
|
|
|
45
45
|
export type FastifySerializerCompiler<T> = (routeSchema: FastifyRouteSchemaDef<T>) => (data: any) => string
|
|
46
46
|
|
|
47
|
-
export interface FastifySchemaControllerOptions{
|
|
47
|
+
export interface FastifySchemaControllerOptions {
|
|
48
48
|
bucket?: (parentSchemas?: unknown) => {
|
|
49
49
|
add(schema: unknown): FastifyInstance;
|
|
50
50
|
getSchema(schemaId: string): unknown;
|
package/types/serverFactory.d.ts
CHANGED
|
@@ -9,8 +9,8 @@ export type FastifyServerFactoryHandler<
|
|
|
9
9
|
RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>
|
|
10
10
|
> =
|
|
11
11
|
RawServer extends http.Server | https.Server ?
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
(request: http.IncomingMessage & RawRequest, response: http.ServerResponse & RawReply) => void :
|
|
13
|
+
(request: http2.Http2ServerRequest & RawRequest, response: http2.Http2ServerResponse & RawReply) => void
|
|
14
14
|
|
|
15
15
|
export interface FastifyServerFactory<
|
|
16
16
|
RawServer extends RawServerBase = RawServerDefault
|
package/types/type-provider.d.ts
CHANGED
|
@@ -7,14 +7,15 @@ import { RecordKeysToLowercase } from './utils'
|
|
|
7
7
|
// -----------------------------------------------------------------------------------------------
|
|
8
8
|
|
|
9
9
|
export interface FastifyTypeProvider {
|
|
10
|
-
readonly
|
|
11
|
-
readonly
|
|
10
|
+
readonly schema: unknown,
|
|
11
|
+
readonly validator: unknown,
|
|
12
|
+
readonly serializer: unknown,
|
|
12
13
|
}
|
|
13
14
|
|
|
14
|
-
// eslint-disable-next-line @typescript-eslint/no-empty-interface
|
|
15
15
|
export interface FastifyTypeProviderDefault extends FastifyTypeProvider {}
|
|
16
16
|
|
|
17
|
-
export type
|
|
17
|
+
export type CallValidatorTypeProvider<F extends FastifyTypeProvider, S> = (F & { schema: S })['validator']
|
|
18
|
+
export type CallSerializerTypeProvider<F extends FastifyTypeProvider, S> = (F & { schema: S })['serializer']
|
|
18
19
|
|
|
19
20
|
// -----------------------------------------------------------------------------------------------
|
|
20
21
|
// FastifyRequestType
|
|
@@ -32,13 +33,13 @@ type KeysOf<T> = T extends any ? keyof T : never
|
|
|
32
33
|
|
|
33
34
|
// Resolves Request types either from generic argument or Type Provider.
|
|
34
35
|
type ResolveRequestParams<TypeProvider extends FastifyTypeProvider, SchemaCompiler extends FastifySchema, RouteGeneric extends RouteGenericInterface> =
|
|
35
|
-
UndefinedToUnknown<KeysOf<RouteGeneric['Params']> extends never ?
|
|
36
|
+
UndefinedToUnknown<KeysOf<RouteGeneric['Params']> extends never ? CallValidatorTypeProvider<TypeProvider, SchemaCompiler['params']> : RouteGeneric['Params']>
|
|
36
37
|
type ResolveRequestQuerystring<TypeProvider extends FastifyTypeProvider, SchemaCompiler extends FastifySchema, RouteGeneric extends RouteGenericInterface> =
|
|
37
|
-
UndefinedToUnknown<KeysOf<RouteGeneric['Querystring']> extends never ?
|
|
38
|
+
UndefinedToUnknown<KeysOf<RouteGeneric['Querystring']> extends never ? CallValidatorTypeProvider<TypeProvider, SchemaCompiler['querystring']> : RouteGeneric['Querystring']>
|
|
38
39
|
type ResolveRequestHeaders<TypeProvider extends FastifyTypeProvider, SchemaCompiler extends FastifySchema, RouteGeneric extends RouteGenericInterface> =
|
|
39
|
-
UndefinedToUnknown<KeysOf<RouteGeneric['Headers']> extends never ?
|
|
40
|
+
UndefinedToUnknown<KeysOf<RouteGeneric['Headers']> extends never ? CallValidatorTypeProvider<TypeProvider, SchemaCompiler['headers']> : RouteGeneric['Headers']>
|
|
40
41
|
type ResolveRequestBody<TypeProvider extends FastifyTypeProvider, SchemaCompiler extends FastifySchema, RouteGeneric extends RouteGenericInterface> =
|
|
41
|
-
UndefinedToUnknown<KeysOf<RouteGeneric['Body']> extends never ?
|
|
42
|
+
UndefinedToUnknown<KeysOf<RouteGeneric['Body']> extends never ? CallValidatorTypeProvider<TypeProvider, SchemaCompiler['body']> : RouteGeneric['Body']>
|
|
42
43
|
|
|
43
44
|
// The target request type. This type is inferenced on fastify 'requests' via generic argument assignment
|
|
44
45
|
export interface FastifyRequestType<Params = unknown, Querystring = unknown, Headers = unknown, Body = unknown> {
|
|
@@ -63,8 +64,8 @@ export interface ResolveFastifyRequestType<TypeProvider extends FastifyTypeProvi
|
|
|
63
64
|
// Resolves the Reply type by taking a union of response status codes and content-types
|
|
64
65
|
type ResolveReplyFromSchemaCompiler<TypeProvider extends FastifyTypeProvider, SchemaCompiler extends FastifySchema> = {
|
|
65
66
|
[K1 in keyof SchemaCompiler['response']]: SchemaCompiler['response'][K1] extends { content: { [keyof: string]: { schema: unknown } } } ? ({
|
|
66
|
-
[K2 in keyof SchemaCompiler['response'][K1]['content']]:
|
|
67
|
-
} extends infer Result ? Result[keyof Result] : unknown) :
|
|
67
|
+
[K2 in keyof SchemaCompiler['response'][K1]['content']]: CallSerializerTypeProvider<TypeProvider, SchemaCompiler['response'][K1]['content'][K2]['schema']>
|
|
68
|
+
} extends infer Result ? Result[keyof Result] : unknown) : CallSerializerTypeProvider<TypeProvider, SchemaCompiler['response'][K1]>
|
|
68
69
|
} extends infer Result ? Result[keyof Result] : unknown;
|
|
69
70
|
|
|
70
71
|
// The target reply type. This type is inferenced on fastify 'replies' via generic argument assignment
|
|
@@ -83,13 +84,22 @@ export type ResolveFastifyReplyType<TypeProvider extends FastifyTypeProvider, Sc
|
|
|
83
84
|
export type ResolveFastifyReplyReturnType<
|
|
84
85
|
TypeProvider extends FastifyTypeProvider,
|
|
85
86
|
SchemaCompiler extends FastifySchema,
|
|
86
|
-
RouteGeneric extends RouteGenericInterface
|
|
87
|
+
RouteGeneric extends RouteGenericInterface
|
|
87
88
|
> = ResolveFastifyReplyType<
|
|
88
89
|
TypeProvider,
|
|
89
90
|
SchemaCompiler,
|
|
90
91
|
RouteGeneric
|
|
91
92
|
> extends infer Return ?
|
|
92
|
-
|
|
93
|
+
(Return | void | Promise<Return | void>)
|
|
93
94
|
// review: support both async and sync return types
|
|
94
95
|
// (Promise<Return> | Return | Promise<void> | void)
|
|
95
96
|
: unknown
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* This branded type is needed to indicate APIs that return Promise-likes which can
|
|
100
|
+
* safely "float" (not have rejections handled by calling code).
|
|
101
|
+
*
|
|
102
|
+
* Please refer to the following Github issue for more info:
|
|
103
|
+
* https://github.com/fastify/fastify/issues/5498
|
|
104
|
+
*/
|
|
105
|
+
export type SafePromiseLike<T> = PromiseLike<T> & { __linterBrands: 'SafePromiseLike' }
|
package/types/utils.d.ts
CHANGED
|
@@ -24,7 +24,7 @@ export type RawServerDefault = http.Server
|
|
|
24
24
|
* The default request type based on the server type. Utilizes generic constraining.
|
|
25
25
|
*/
|
|
26
26
|
export type RawRequestDefaultExpression<
|
|
27
|
-
RawServer extends RawServerBase = RawServerDefault
|
|
27
|
+
RawServer extends RawServerBase = RawServerDefault
|
|
28
28
|
> = RawServer extends http.Server | https.Server ? http.IncomingMessage
|
|
29
29
|
: RawServer extends http2.Http2Server | http2.Http2SecureServer ? http2.Http2ServerRequest
|
|
30
30
|
: never
|
|
@@ -50,41 +50,41 @@ export type ReplyDefault = unknown
|
|
|
50
50
|
* Helpers for determining the type of the response payload based on the code
|
|
51
51
|
*/
|
|
52
52
|
|
|
53
|
-
type StringAsNumber<T extends string> = T extends `${infer N extends number}` ? N : never
|
|
54
|
-
type CodeClasses = 1 | 2 | 3 | 4 | 5
|
|
55
|
-
type Digit = 0 |1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
|
|
56
|
-
type HttpCodes = StringAsNumber<`${CodeClasses}${Digit}${Digit}
|
|
57
|
-
type HttpKeys = HttpCodes | `${Digit}xx
|
|
53
|
+
type StringAsNumber<T extends string> = T extends `${infer N extends number}` ? N : never
|
|
54
|
+
type CodeClasses = 1 | 2 | 3 | 4 | 5
|
|
55
|
+
type Digit = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
|
|
56
|
+
type HttpCodes = StringAsNumber<`${CodeClasses}${Digit}${Digit}`>
|
|
57
|
+
type HttpKeys = HttpCodes | `${Digit}xx`
|
|
58
58
|
export type StatusCodeReply = {
|
|
59
|
-
|
|
59
|
+
|
|
60
60
|
[Key in HttpKeys]?: unknown;
|
|
61
|
-
}
|
|
61
|
+
}
|
|
62
62
|
|
|
63
63
|
// weird TS quirk: https://stackoverflow.com/questions/58977876/generic-conditional-type-resolves-to-never-when-the-generic-type-is-set-to-never
|
|
64
64
|
export type ReplyKeysToCodes<Key> = [Key] extends [never] ? number :
|
|
65
65
|
Key extends HttpCodes ? Key :
|
|
66
66
|
Key extends `${infer X extends CodeClasses}xx` ?
|
|
67
|
-
StringAsNumber<`${X}${Digit}${Digit}`> : number
|
|
67
|
+
StringAsNumber<`${X}${Digit}${Digit}`> : number
|
|
68
68
|
|
|
69
69
|
export type CodeToReplyKey<Code extends number> = `${Code}` extends `${infer FirstDigit extends CodeClasses}${number}`
|
|
70
70
|
? `${FirstDigit}xx`
|
|
71
|
-
: never
|
|
71
|
+
: never
|
|
72
72
|
|
|
73
73
|
export type RecordKeysToLowercase<Input> = Input extends Record<string, unknown>
|
|
74
74
|
? {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
: Input
|
|
75
|
+
[Key in keyof Input as Key extends string
|
|
76
|
+
? Lowercase<Key>
|
|
77
|
+
: Key
|
|
78
|
+
]: Input[Key];
|
|
79
|
+
}
|
|
80
|
+
: Input
|
|
81
81
|
|
|
82
82
|
type OmitIndexSignature<T> = {
|
|
83
83
|
[K in keyof T as string extends K ? never : number extends K ? never : K]: T[K];
|
|
84
|
-
}
|
|
84
|
+
}
|
|
85
85
|
|
|
86
86
|
/**
|
|
87
87
|
* HTTP header strings
|
|
88
88
|
* Use this type only for input values, not for output values.
|
|
89
89
|
*/
|
|
90
|
-
export type HttpHeader = keyof OmitIndexSignature<http.OutgoingHttpHeaders> | (string & Record<never, never>)
|
|
90
|
+
export type HttpHeader = keyof OmitIndexSignature<http.OutgoingHttpHeaders> | (string & Record<never, never>)
|
package/.c8rc.json
DELETED
package/.eslintrc
DELETED
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const t = require('tap')
|
|
4
|
-
const test = t.test
|
|
5
|
-
const Fastify = require('..')
|
|
6
|
-
const { FSTDEP014 } = require('../lib/warnings')
|
|
7
|
-
|
|
8
|
-
// Silence the standard warning logs. We will test the messages explicitly.
|
|
9
|
-
process.removeAllListeners('warning')
|
|
10
|
-
|
|
11
|
-
test('setDefaultRoute should emit a deprecation warning', t => {
|
|
12
|
-
t.plan(2)
|
|
13
|
-
|
|
14
|
-
const fastify = Fastify()
|
|
15
|
-
const defaultRoute = (req, res) => {
|
|
16
|
-
res.end('hello from defaultRoute')
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
process.on('warning', onWarning)
|
|
20
|
-
function onWarning (warning) {
|
|
21
|
-
t.equal(warning.name, 'DeprecationWarning')
|
|
22
|
-
t.equal(warning.code, FSTDEP014.code)
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
t.teardown(() => {
|
|
26
|
-
process.removeListener('warning', onWarning)
|
|
27
|
-
FSTDEP014.emitted = false
|
|
28
|
-
})
|
|
29
|
-
|
|
30
|
-
fastify.setDefaultRoute(defaultRoute)
|
|
31
|
-
})
|
|
32
|
-
|
|
33
|
-
test('getDefaultRoute should emit a deprecation warning', t => {
|
|
34
|
-
t.plan(2)
|
|
35
|
-
|
|
36
|
-
const fastify = Fastify()
|
|
37
|
-
|
|
38
|
-
process.on('warning', onWarning)
|
|
39
|
-
function onWarning (warning) {
|
|
40
|
-
t.equal(warning.name, 'DeprecationWarning')
|
|
41
|
-
t.equal(warning.code, FSTDEP014.code)
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
t.teardown(() => {
|
|
45
|
-
process.removeListener('warning', onWarning)
|
|
46
|
-
FSTDEP014.emitted = false
|
|
47
|
-
})
|
|
48
|
-
|
|
49
|
-
fastify.getDefaultRoute()
|
|
50
|
-
})
|
|
51
|
-
|
|
52
|
-
test('should fail if defaultRoute is not a function', t => {
|
|
53
|
-
t.plan(1)
|
|
54
|
-
|
|
55
|
-
const fastify = Fastify()
|
|
56
|
-
const defaultRoute = {}
|
|
57
|
-
|
|
58
|
-
fastify.get('/', () => {})
|
|
59
|
-
|
|
60
|
-
try {
|
|
61
|
-
fastify.setDefaultRoute(defaultRoute)
|
|
62
|
-
} catch (error) {
|
|
63
|
-
t.equal(error.code, 'FST_ERR_DEFAULT_ROUTE_INVALID_TYPE')
|
|
64
|
-
}
|
|
65
|
-
})
|
|
66
|
-
|
|
67
|
-
test('correctly sets, returns, and calls defaultRoute', t => {
|
|
68
|
-
t.plan(3)
|
|
69
|
-
|
|
70
|
-
const fastify = Fastify()
|
|
71
|
-
const defaultRoute = (req, res) => {
|
|
72
|
-
res.end('hello from defaultRoute')
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
fastify.setDefaultRoute(defaultRoute)
|
|
76
|
-
const returnedDefaultRoute = fastify.getDefaultRoute()
|
|
77
|
-
t.equal(returnedDefaultRoute, defaultRoute)
|
|
78
|
-
|
|
79
|
-
fastify.get('/', () => {})
|
|
80
|
-
|
|
81
|
-
fastify.inject({
|
|
82
|
-
method: 'GET',
|
|
83
|
-
url: '/random'
|
|
84
|
-
}, (err, res) => {
|
|
85
|
-
t.error(err)
|
|
86
|
-
t.equal(res.body, 'hello from defaultRoute')
|
|
87
|
-
})
|
|
88
|
-
})
|
|
@@ -1,229 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
// Tests for deprecated `.listen` signature. This file should be
|
|
4
|
-
// removed when the deprecation is complete.
|
|
5
|
-
|
|
6
|
-
const { test, before } = require('tap')
|
|
7
|
-
const Fastify = require('..')
|
|
8
|
-
const helper = require('./helper')
|
|
9
|
-
|
|
10
|
-
let localhost
|
|
11
|
-
let localhostForURL
|
|
12
|
-
|
|
13
|
-
process.removeAllListeners('warning')
|
|
14
|
-
|
|
15
|
-
before(async () => {
|
|
16
|
-
[localhost, localhostForURL] = await helper.getLoopbackHost()
|
|
17
|
-
})
|
|
18
|
-
|
|
19
|
-
test('listen accepts a port and a callback', t => {
|
|
20
|
-
t.plan(2)
|
|
21
|
-
const fastify = Fastify()
|
|
22
|
-
t.teardown(fastify.close.bind(fastify))
|
|
23
|
-
fastify.listen(0, (err) => {
|
|
24
|
-
t.equal(fastify.server.address().address, localhost)
|
|
25
|
-
t.error(err)
|
|
26
|
-
})
|
|
27
|
-
})
|
|
28
|
-
|
|
29
|
-
test('listen accepts a port and a callback with (err, address)', t => {
|
|
30
|
-
t.plan(2)
|
|
31
|
-
const fastify = Fastify()
|
|
32
|
-
t.teardown(fastify.close.bind(fastify))
|
|
33
|
-
fastify.listen(0, (err, address) => {
|
|
34
|
-
t.equal(address, `http://${localhostForURL}:${fastify.server.address().port}`)
|
|
35
|
-
t.error(err)
|
|
36
|
-
})
|
|
37
|
-
})
|
|
38
|
-
|
|
39
|
-
test('listen accepts a port, address, and callback', t => {
|
|
40
|
-
t.plan(1)
|
|
41
|
-
const fastify = Fastify()
|
|
42
|
-
t.teardown(fastify.close.bind(fastify))
|
|
43
|
-
fastify.listen(0, localhost, (err) => {
|
|
44
|
-
t.error(err)
|
|
45
|
-
})
|
|
46
|
-
})
|
|
47
|
-
|
|
48
|
-
test('listen accepts options, backlog and a callback', t => {
|
|
49
|
-
t.plan(1)
|
|
50
|
-
const fastify = Fastify()
|
|
51
|
-
t.teardown(fastify.close.bind(fastify))
|
|
52
|
-
fastify.listen({
|
|
53
|
-
port: 0,
|
|
54
|
-
host: 'localhost'
|
|
55
|
-
}, 511, (err) => {
|
|
56
|
-
t.error(err)
|
|
57
|
-
})
|
|
58
|
-
})
|
|
59
|
-
|
|
60
|
-
test('listen accepts options (no port), backlog and a callback', t => {
|
|
61
|
-
t.plan(1)
|
|
62
|
-
const fastify = Fastify()
|
|
63
|
-
t.teardown(fastify.close.bind(fastify))
|
|
64
|
-
fastify.listen({
|
|
65
|
-
host: 'localhost'
|
|
66
|
-
}, 511, (err) => {
|
|
67
|
-
t.error(err)
|
|
68
|
-
})
|
|
69
|
-
})
|
|
70
|
-
|
|
71
|
-
test('listen accepts options (no host), backlog and a callback', t => {
|
|
72
|
-
t.plan(1)
|
|
73
|
-
const fastify = Fastify()
|
|
74
|
-
t.teardown(fastify.close.bind(fastify))
|
|
75
|
-
fastify.listen({
|
|
76
|
-
port: 0
|
|
77
|
-
}, 511, (err) => {
|
|
78
|
-
t.error(err)
|
|
79
|
-
})
|
|
80
|
-
})
|
|
81
|
-
|
|
82
|
-
test('listen accepts options (no port, no host), backlog and a callback', t => {
|
|
83
|
-
t.plan(1)
|
|
84
|
-
const fastify = Fastify()
|
|
85
|
-
t.teardown(fastify.close.bind(fastify))
|
|
86
|
-
fastify.listen({
|
|
87
|
-
ipv6Only: false
|
|
88
|
-
}, 511, (err) => {
|
|
89
|
-
t.error(err)
|
|
90
|
-
})
|
|
91
|
-
})
|
|
92
|
-
|
|
93
|
-
test('listen accepts a port, address and a callback with (err, address)', t => {
|
|
94
|
-
t.plan(2)
|
|
95
|
-
const fastify = Fastify()
|
|
96
|
-
t.teardown(fastify.close.bind(fastify))
|
|
97
|
-
fastify.listen(0, localhost, (err, address) => {
|
|
98
|
-
t.equal(address, `http://${localhostForURL}:${fastify.server.address().port}`)
|
|
99
|
-
t.error(err)
|
|
100
|
-
})
|
|
101
|
-
})
|
|
102
|
-
|
|
103
|
-
test('listen accepts a port, address, backlog and callback', t => {
|
|
104
|
-
t.plan(1)
|
|
105
|
-
const fastify = Fastify()
|
|
106
|
-
t.teardown(fastify.close.bind(fastify))
|
|
107
|
-
fastify.listen(0, localhost, 511, (err) => {
|
|
108
|
-
t.error(err)
|
|
109
|
-
})
|
|
110
|
-
})
|
|
111
|
-
|
|
112
|
-
test('listen accepts a port, address, backlog and callback with (err, address)', t => {
|
|
113
|
-
t.plan(2)
|
|
114
|
-
const fastify = Fastify()
|
|
115
|
-
t.teardown(fastify.close.bind(fastify))
|
|
116
|
-
fastify.listen(0, localhost, 511, (err, address) => {
|
|
117
|
-
t.equal(address, `http://${localhostForURL}:${fastify.server.address().port}`)
|
|
118
|
-
t.error(err)
|
|
119
|
-
})
|
|
120
|
-
})
|
|
121
|
-
|
|
122
|
-
test('listen without callback (port zero)', t => {
|
|
123
|
-
t.plan(1)
|
|
124
|
-
const fastify = Fastify()
|
|
125
|
-
t.teardown(fastify.close.bind(fastify))
|
|
126
|
-
fastify.listen(0)
|
|
127
|
-
.then(() => {
|
|
128
|
-
t.equal(fastify.server.address().address, localhost)
|
|
129
|
-
})
|
|
130
|
-
})
|
|
131
|
-
|
|
132
|
-
test('listen without callback (port not given)', t => {
|
|
133
|
-
t.plan(1)
|
|
134
|
-
const fastify = Fastify()
|
|
135
|
-
t.teardown(fastify.close.bind(fastify))
|
|
136
|
-
fastify.listen()
|
|
137
|
-
.then(() => {
|
|
138
|
-
t.equal(fastify.server.address().address, localhost)
|
|
139
|
-
})
|
|
140
|
-
})
|
|
141
|
-
|
|
142
|
-
test('listen null without callback with (address)', t => {
|
|
143
|
-
t.plan(1)
|
|
144
|
-
const fastify = Fastify()
|
|
145
|
-
t.teardown(fastify.close.bind(fastify))
|
|
146
|
-
fastify.listen(null)
|
|
147
|
-
.then(address => {
|
|
148
|
-
t.equal(address, `http://${localhostForURL}:${fastify.server.address().port}`)
|
|
149
|
-
})
|
|
150
|
-
})
|
|
151
|
-
|
|
152
|
-
test('listen without port without callback with (address)', t => {
|
|
153
|
-
t.plan(1)
|
|
154
|
-
const fastify = Fastify()
|
|
155
|
-
t.teardown(fastify.close.bind(fastify))
|
|
156
|
-
fastify.listen()
|
|
157
|
-
.then(address => {
|
|
158
|
-
t.equal(address, `http://${localhostForURL}:${fastify.server.address().port}`)
|
|
159
|
-
})
|
|
160
|
-
})
|
|
161
|
-
|
|
162
|
-
test('listen with undefined without callback with (address)', t => {
|
|
163
|
-
t.plan(1)
|
|
164
|
-
const fastify = Fastify()
|
|
165
|
-
t.teardown(fastify.close.bind(fastify))
|
|
166
|
-
fastify.listen(undefined)
|
|
167
|
-
.then(address => {
|
|
168
|
-
t.equal(address, `http://${localhostForURL}:${fastify.server.address().port}`)
|
|
169
|
-
})
|
|
170
|
-
})
|
|
171
|
-
|
|
172
|
-
test('listen when firstArg is string(pipe) and without backlog', async t => {
|
|
173
|
-
t.plan(1)
|
|
174
|
-
const fastify = Fastify()
|
|
175
|
-
t.teardown(fastify.close.bind(fastify))
|
|
176
|
-
const address = await fastify.listen('\\\\.\\pipe\\testPipe')
|
|
177
|
-
t.equal(address, '\\\\.\\pipe\\testPipe')
|
|
178
|
-
})
|
|
179
|
-
|
|
180
|
-
test('listen when firstArg is string(pipe) and with backlog', async t => {
|
|
181
|
-
t.plan(1)
|
|
182
|
-
const fastify = Fastify()
|
|
183
|
-
t.teardown(fastify.close.bind(fastify))
|
|
184
|
-
const address = await fastify.listen('\\\\.\\pipe\\testPipe2', 511)
|
|
185
|
-
t.equal(address, '\\\\.\\pipe\\testPipe2')
|
|
186
|
-
})
|
|
187
|
-
|
|
188
|
-
test('listen when firstArg is { path: string(pipe) } and with backlog and callback', t => {
|
|
189
|
-
t.plan(2)
|
|
190
|
-
const fastify = Fastify()
|
|
191
|
-
t.teardown(fastify.close.bind(fastify))
|
|
192
|
-
fastify.listen({ path: '\\\\.\\pipe\\testPipe3' }, 511, (err, address) => {
|
|
193
|
-
t.error(err)
|
|
194
|
-
t.equal(address, '\\\\.\\pipe\\testPipe3')
|
|
195
|
-
})
|
|
196
|
-
})
|
|
197
|
-
|
|
198
|
-
test('listen accepts a port as string, and callback', t => {
|
|
199
|
-
t.plan(2)
|
|
200
|
-
const fastify = Fastify()
|
|
201
|
-
t.teardown(fastify.close.bind(fastify))
|
|
202
|
-
const port = 3000
|
|
203
|
-
fastify.listen(port.toString(), localhost, (err) => {
|
|
204
|
-
t.equal(fastify.server.address().port, port)
|
|
205
|
-
t.error(err)
|
|
206
|
-
})
|
|
207
|
-
})
|
|
208
|
-
|
|
209
|
-
test('listen accepts a port as string, address and callback', t => {
|
|
210
|
-
t.plan(3)
|
|
211
|
-
const fastify = Fastify()
|
|
212
|
-
t.teardown(fastify.close.bind(fastify))
|
|
213
|
-
const port = 3000
|
|
214
|
-
fastify.listen(port.toString(), localhost, (err) => {
|
|
215
|
-
t.equal(fastify.server.address().port, port)
|
|
216
|
-
t.equal(fastify.server.address().address, localhost)
|
|
217
|
-
t.error(err)
|
|
218
|
-
})
|
|
219
|
-
})
|
|
220
|
-
|
|
221
|
-
test('listen with invalid port string without callback with (address)', t => {
|
|
222
|
-
t.plan(1)
|
|
223
|
-
const fastify = Fastify()
|
|
224
|
-
t.teardown(fastify.close.bind(fastify))
|
|
225
|
-
fastify.listen('-1')
|
|
226
|
-
.then(address => {
|
|
227
|
-
t.equal(address, `http://${localhostForURL}:${fastify.server.address().port}`)
|
|
228
|
-
})
|
|
229
|
-
})
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const net = require('node:net')
|
|
4
|
-
const t = require('tap')
|
|
5
|
-
const Fastify = require('../fastify')
|
|
6
|
-
|
|
7
|
-
t.test('Will return 505 HTTP error if HTTP version (2.0 when server is 1.1) is not supported', t => {
|
|
8
|
-
const fastify = Fastify()
|
|
9
|
-
|
|
10
|
-
t.teardown(fastify.close.bind(fastify))
|
|
11
|
-
|
|
12
|
-
fastify.get('/', (req, reply) => {
|
|
13
|
-
reply.send({ hello: 'world' })
|
|
14
|
-
})
|
|
15
|
-
|
|
16
|
-
fastify.listen({ port: 0 }, err => {
|
|
17
|
-
t.error(err)
|
|
18
|
-
|
|
19
|
-
const port = fastify.server.address().port
|
|
20
|
-
const client = net.createConnection({ port }, () => {
|
|
21
|
-
client.write('GET / HTTP/2.0\r\nHost: example.com\r\n\r\n')
|
|
22
|
-
|
|
23
|
-
client.once('data', data => {
|
|
24
|
-
t.match(data.toString(), /505 HTTP Version Not Supported/i)
|
|
25
|
-
client.end(() => {
|
|
26
|
-
t.end()
|
|
27
|
-
})
|
|
28
|
-
})
|
|
29
|
-
})
|
|
30
|
-
})
|
|
31
|
-
})
|