fastify 5.11.3 → 6.0.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/SPONSORS.md +1 -0
- package/build/build-validation.js +20 -34
- package/docs/Guides/Getting-Started.md +2 -2
- package/docs/Guides/Serverless.md +34 -2
- package/docs/Reference/Errors.md +5 -3
- package/docs/Reference/Hooks.md +0 -4
- package/docs/Reference/LTS.md +6 -5
- package/docs/Reference/Server.md +8 -88
- package/docs/Reference/TypeScript.md +3 -49
- package/docs/Reference/Warnings.md +4 -11
- package/fastify.d.ts +10 -24
- package/fastify.js +17 -34
- package/lib/config-validator.js +368 -475
- package/lib/errors.js +9 -3
- package/lib/log-controller.js +2 -4
- package/lib/logger-factory.js +1 -1
- package/lib/route.js +4 -9
- package/lib/server.js +2 -3
- package/lib/warnings.js +2 -46
- package/package.json +2 -3
- package/test/404s.test.js +0 -49
- package/test/allow-unsafe-regex.test.js +12 -4
- package/test/case-insensitive.test.js +12 -4
- package/test/custom-querystring-parser.test.js +0 -16
- package/test/hooks.test.js +6 -1
- package/test/http-methods/custom-http-methods.test.js +12 -17
- package/test/http-methods/trace.test.js +1 -1
- package/test/https/custom-https-server.test.js +1 -1
- package/test/internals/errors.test.js +15 -5
- package/test/internals/initial-config.test.js +56 -38
- package/test/internals/logger.test.js +17 -4
- package/test/internals/reply.test.js +1 -1
- package/test/internals/request.test.js +8 -24
- package/test/logger/logging.test.js +2 -121
- package/test/logger/request.test.js +1 -36
- package/test/plugin.4.test.js +5 -4
- package/test/route-prefix.test.js +46 -18
- package/test/route.1.test.js +2 -2
- package/test/router-options.test.js +25 -523
- package/test/set-error-handler.test.js +7 -9
- package/test/types/errors.tst.ts +2 -1
- package/test/types/fastify.tst.ts +44 -48
- package/test/types/instance.tst.ts +4 -5
- package/test/types/logger.tst.ts +3 -7
- package/test/use-semicolon-delimiter.test.js +0 -60
- package/types/context.d.ts +0 -20
- package/types/errors.d.ts +2 -1
- package/types/instance.d.ts +0 -4
- package/types/logger.d.ts +1 -16
- package/types/plugin.d.ts +0 -9
- package/types/request.d.ts +0 -4
- package/lib/promise.js +0 -23
- package/test/internals/promise.test.js +0 -63
package/fastify.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
const VERSION = '
|
|
3
|
+
const VERSION = '6.0.0-alpha.0'
|
|
4
4
|
|
|
5
5
|
const Avvio = require('avvio')
|
|
6
6
|
const http = require('node:http')
|
|
@@ -57,7 +57,6 @@ const {
|
|
|
57
57
|
AVVIO_ERRORS_MAP,
|
|
58
58
|
...errorCodes
|
|
59
59
|
} = require('./lib/errors')
|
|
60
|
-
const PonyPromise = require('./lib/promise')
|
|
61
60
|
|
|
62
61
|
const { defaultInitOptions } = getSecuredInitialConfig
|
|
63
62
|
|
|
@@ -70,17 +69,17 @@ const {
|
|
|
70
69
|
FST_ERR_SCHEMA_CONTROLLER_BUCKET_OPT_NOT_FN,
|
|
71
70
|
FST_ERR_AJV_CUSTOM_OPTIONS_OPT_NOT_OBJ,
|
|
72
71
|
FST_ERR_AJV_CUSTOM_OPTIONS_OPT_NOT_ARR,
|
|
73
|
-
|
|
72
|
+
FST_ERR_INSTANCE_ALREADY_STARTED,
|
|
74
73
|
FST_ERR_REOPENED_CLOSE_SERVER,
|
|
75
74
|
FST_ERR_ROUTE_REWRITE_NOT_STR,
|
|
76
75
|
FST_ERR_SCHEMA_ERROR_FORMATTER_NOT_FN,
|
|
77
76
|
FST_ERR_ERROR_HANDLER_NOT_FN,
|
|
78
77
|
FST_ERR_ERROR_HANDLER_ALREADY_SET,
|
|
79
|
-
FST_ERR_ROUTE_METHOD_INVALID
|
|
78
|
+
FST_ERR_ROUTE_METHOD_INVALID,
|
|
79
|
+
FST_ERR_ROUTE_METHOD_ALREADY_SUPPORTED
|
|
80
80
|
} = errorCodes
|
|
81
81
|
|
|
82
82
|
const { buildErrorHandler } = require('./lib/error-handler.js')
|
|
83
|
-
const { FSTWRN004, FSTDEP023, FSTDEP024, FSTDEP025 } = require('./lib/warnings.js')
|
|
84
83
|
|
|
85
84
|
const initChannel = diagnostics.channel('fastify.initialization')
|
|
86
85
|
|
|
@@ -466,7 +465,7 @@ function fastify (serverOptions) {
|
|
|
466
465
|
return fastify
|
|
467
466
|
|
|
468
467
|
function throwIfAlreadyStarted (msg) {
|
|
469
|
-
if (fastify[kState].started) throw new
|
|
468
|
+
if (fastify[kState].started) throw new FST_ERR_INSTANCE_ALREADY_STARTED(msg)
|
|
470
469
|
}
|
|
471
470
|
|
|
472
471
|
// HTTP injection handling
|
|
@@ -528,7 +527,7 @@ function fastify (serverOptions) {
|
|
|
528
527
|
// It will work as a barrier for all the .ready() calls (ensuring single hook execution)
|
|
529
528
|
// as well as a flow control mechanism to chain cbs and further
|
|
530
529
|
// promises
|
|
531
|
-
this[kState].readyResolver =
|
|
530
|
+
this[kState].readyResolver = Promise.withResolvers()
|
|
532
531
|
|
|
533
532
|
if (!cb) {
|
|
534
533
|
return this[kState].readyResolver.promise
|
|
@@ -771,10 +770,8 @@ function fastify (serverOptions) {
|
|
|
771
770
|
throw new FST_ERR_ERROR_HANDLER_NOT_FN()
|
|
772
771
|
}
|
|
773
772
|
|
|
774
|
-
if (!options.allowErrorHandlerOverride
|
|
773
|
+
if (this[kErrorHandlerAlreadySet] && !options.allowErrorHandlerOverride) {
|
|
775
774
|
throw new FST_ERR_ERROR_HANDLER_ALREADY_SET()
|
|
776
|
-
} else if (this[kErrorHandlerAlreadySet]) {
|
|
777
|
-
FSTWRN004()
|
|
778
775
|
}
|
|
779
776
|
|
|
780
777
|
this[kErrorHandlerAlreadySet] = true
|
|
@@ -832,7 +829,7 @@ function fastify (serverOptions) {
|
|
|
832
829
|
this[kSupportedHTTPMethods].bodywith.has(method)
|
|
833
830
|
|
|
834
831
|
if (alreadyExists && !overrideExisting) {
|
|
835
|
-
|
|
832
|
+
throw new FST_ERR_ROUTE_METHOD_ALREADY_SUPPORTED(method)
|
|
836
833
|
}
|
|
837
834
|
|
|
838
835
|
if (hasBody === true) {
|
|
@@ -864,13 +861,10 @@ function processOptions (options, defaultRoute, onBadUrl, onMaxParamLength) {
|
|
|
864
861
|
}
|
|
865
862
|
|
|
866
863
|
if (
|
|
867
|
-
|
|
868
|
-
(
|
|
869
|
-
options.routerOptions?.querystringParser &&
|
|
864
|
+
options.routerOptions?.querystringParser &&
|
|
870
865
|
typeof options.routerOptions.querystringParser !== 'function'
|
|
871
|
-
)
|
|
872
866
|
) {
|
|
873
|
-
throw new FST_ERR_QSP_NOT_FN(typeof
|
|
867
|
+
throw new FST_ERR_QSP_NOT_FN(typeof options.routerOptions.querystringParser)
|
|
874
868
|
}
|
|
875
869
|
|
|
876
870
|
if (options.schemaController && options.schemaController.bucket && typeof options.schemaController.bucket !== 'function') {
|
|
@@ -881,13 +875,7 @@ function processOptions (options, defaultRoute, onBadUrl, onMaxParamLength) {
|
|
|
881
875
|
|
|
882
876
|
const requestIdHeader = typeof options.requestIdHeader === 'string' && options.requestIdHeader.length !== 0 ? options.requestIdHeader.toLowerCase() : (options.requestIdHeader === true && 'request-id')
|
|
883
877
|
const genReqId = reqIdGenFactory(requestIdHeader, options.genReqId)
|
|
884
|
-
if (options.requestIdLogLabel !== undefined) {
|
|
885
|
-
FSTDEP024()
|
|
886
|
-
}
|
|
887
878
|
options.bodyLimit = options.bodyLimit || defaultInitOptions.bodyLimit
|
|
888
|
-
if (options.disableRequestLogging !== undefined) {
|
|
889
|
-
FSTDEP023()
|
|
890
|
-
}
|
|
891
879
|
|
|
892
880
|
const ajvOptions = Object.assign({
|
|
893
881
|
customOptions: {},
|
|
@@ -918,6 +906,13 @@ function processOptions (options, defaultRoute, onBadUrl, onMaxParamLength) {
|
|
|
918
906
|
options.clientErrorHandler = options.clientErrorHandler || defaultClientErrorHandler
|
|
919
907
|
options.allowErrorHandlerOverride = options.allowErrorHandlerOverride ?? defaultInitOptions.allowErrorHandlerOverride
|
|
920
908
|
|
|
909
|
+
options.routerOptions = buildRouterOptions(options, {
|
|
910
|
+
buildPrettyMeta: defaultBuildPrettyMeta,
|
|
911
|
+
defaultRoute,
|
|
912
|
+
onBadUrl,
|
|
913
|
+
onMaxParamLength
|
|
914
|
+
})
|
|
915
|
+
|
|
921
916
|
const initialConfig = getSecuredInitialConfig(options)
|
|
922
917
|
|
|
923
918
|
// exposeHeadRoutes have its default set from the validator
|
|
@@ -926,18 +921,6 @@ function processOptions (options, defaultRoute, onBadUrl, onMaxParamLength) {
|
|
|
926
921
|
// we need to set this before calling createServer
|
|
927
922
|
options.http2SessionTimeout = initialConfig.http2SessionTimeout
|
|
928
923
|
|
|
929
|
-
options.routerOptions = buildRouterOptions(options, {
|
|
930
|
-
defaultRoute,
|
|
931
|
-
onBadUrl,
|
|
932
|
-
onMaxParamLength,
|
|
933
|
-
ignoreTrailingSlash: defaultInitOptions.ignoreTrailingSlash,
|
|
934
|
-
ignoreDuplicateSlashes: defaultInitOptions.ignoreDuplicateSlashes,
|
|
935
|
-
maxParamLength: defaultInitOptions.maxParamLength,
|
|
936
|
-
allowUnsafeRegex: defaultInitOptions.allowUnsafeRegex,
|
|
937
|
-
buildPrettyMeta: defaultBuildPrettyMeta,
|
|
938
|
-
useSemicolonDelimiter: defaultInitOptions.useSemicolonDelimiter
|
|
939
|
-
})
|
|
940
|
-
|
|
941
924
|
return {
|
|
942
925
|
options,
|
|
943
926
|
genReqId,
|