fastify 5.0.0 → 5.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/.borp.yaml +3 -0
  2. package/.vscode/settings.json +22 -0
  3. package/docs/Guides/Ecosystem.md +1 -8
  4. package/docs/Guides/Migration-Guide-V5.md +128 -4
  5. package/docs/Guides/Testing.md +51 -50
  6. package/docs/Guides/Write-Plugin.md +1 -1
  7. package/docs/Reference/ContentTypeParser.md +4 -4
  8. package/docs/Reference/Errors.md +1 -1
  9. package/docs/Reference/Reply.md +1 -5
  10. package/docs/Reference/Request.md +2 -1
  11. package/docs/Reference/Routes.md +9 -6
  12. package/docs/Reference/Server.md +1 -1
  13. package/fastify.d.ts +10 -1
  14. package/fastify.js +8 -6
  15. package/lib/contentTypeParser.js +9 -7
  16. package/lib/context.js +1 -2
  17. package/lib/fourOhFour.js +1 -1
  18. package/lib/{logger.js → logger-factory.js} +70 -122
  19. package/lib/logger-pino.js +68 -0
  20. package/lib/pluginOverride.js +1 -1
  21. package/lib/pluginUtils.js +2 -2
  22. package/lib/reply.js +4 -5
  23. package/lib/request.js +15 -9
  24. package/lib/route.js +23 -22
  25. package/lib/validation.js +2 -2
  26. package/package.json +12 -13
  27. package/test/404s.test.js +675 -629
  28. package/test/500s.test.js +72 -63
  29. package/test/allowUnsafeRegex.test.js +30 -26
  30. package/test/als.test.js +48 -45
  31. package/test/async-await.test.js +148 -134
  32. package/test/async-dispose.test.js +4 -4
  33. package/test/async_hooks.test.js +30 -28
  34. package/test/{bodyLimit.test.js → body-limit.test.js} +61 -58
  35. package/test/buffer.test.js +9 -10
  36. package/test/build/error-serializer.test.js +3 -4
  37. package/test/build/version.test.js +2 -3
  38. package/test/bundler/esbuild/bundler-test.js +10 -9
  39. package/test/bundler/webpack/bundler-test.js +10 -9
  40. package/test/case-insensitive.test.js +31 -28
  41. package/test/chainable.test.js +4 -5
  42. package/test/check.test.js +8 -9
  43. package/test/childLoggerFactory.test.js +56 -19
  44. package/test/client-timeout.test.js +5 -5
  45. package/test/close-pipelining.test.js +6 -7
  46. package/test/conditional-pino.test.js +47 -0
  47. package/test/connectionTimeout.test.js +10 -11
  48. package/test/constrained-routes.test.js +243 -236
  49. package/test/content-parser.test.js +17 -0
  50. package/test/custom-http-server.test.js +16 -20
  51. package/test/diagnostics-channel/404.test.js +15 -15
  52. package/test/diagnostics-channel/async-delay-request.test.js +25 -25
  53. package/test/diagnostics-channel/async-request.test.js +24 -24
  54. package/test/diagnostics-channel/error-before-handler.test.js +4 -5
  55. package/test/diagnostics-channel/error-request.test.js +19 -19
  56. package/test/diagnostics-channel/error-status.test.js +8 -8
  57. package/test/diagnostics-channel/init.test.js +6 -7
  58. package/test/diagnostics-channel/sync-delay-request.test.js +16 -16
  59. package/test/diagnostics-channel/sync-request-reply.test.js +16 -16
  60. package/test/diagnostics-channel/sync-request.test.js +19 -19
  61. package/test/esm/errorCodes.test.mjs +5 -5
  62. package/test/esm/esm.test.mjs +3 -3
  63. package/test/esm/named-exports.mjs +3 -3
  64. package/test/esm/other.mjs +2 -2
  65. package/test/hooks.test.js +6 -6
  66. package/test/http-methods/copy.test.js +22 -24
  67. package/test/http-methods/custom-http-methods.test.js +24 -21
  68. package/test/http-methods/get.test.js +97 -84
  69. package/test/http-methods/head.test.js +63 -54
  70. package/test/http-methods/lock.test.js +21 -20
  71. package/test/http-methods/mkcalendar.test.js +31 -27
  72. package/test/http-methods/mkcol.test.js +10 -10
  73. package/test/http-methods/move.test.js +11 -11
  74. package/test/http-methods/propfind.test.js +32 -27
  75. package/test/http-methods/proppatch.test.js +21 -19
  76. package/test/http-methods/report.test.js +32 -27
  77. package/test/http-methods/search.test.js +52 -47
  78. package/test/http-methods/trace.test.js +3 -4
  79. package/test/http-methods/unlock.test.js +10 -10
  80. package/test/http2/closing.test.js +50 -58
  81. package/test/http2/constraint.test.js +47 -50
  82. package/test/http2/head.test.js +18 -19
  83. package/test/http2/missing-http2-module.test.js +4 -5
  84. package/test/http2/plain.test.js +31 -31
  85. package/test/http2/secure-with-fallback.test.js +61 -61
  86. package/test/http2/secure.test.js +28 -31
  87. package/test/http2/unknown-http-method.test.js +13 -14
  88. package/test/https/custom-https-server.test.js +6 -7
  89. package/test/https/https.test.js +78 -78
  90. package/test/imports.test.js +5 -6
  91. package/test/internals/all.test.js +8 -11
  92. package/test/internals/contentTypeParser.test.js +5 -6
  93. package/test/internals/context.test.js +9 -11
  94. package/test/internals/decorator.test.js +20 -21
  95. package/test/internals/errors.test.js +427 -427
  96. package/test/internals/handleRequest.test.js +53 -42
  97. package/test/internals/hookRunner.test.js +99 -100
  98. package/test/internals/hooks.test.js +31 -35
  99. package/test/internals/initialConfig.test.js +92 -80
  100. package/test/internals/logger.test.js +28 -28
  101. package/test/internals/plugin.test.js +17 -18
  102. package/test/internals/reply-serialize.test.js +106 -106
  103. package/test/internals/reply.test.js +620 -585
  104. package/test/internals/reqIdGenFactory.test.js +31 -31
  105. package/test/internals/request-validate.test.js +218 -221
  106. package/test/internals/request.test.js +225 -107
  107. package/test/internals/server.test.js +15 -12
  108. package/test/internals/validation.test.js +35 -36
  109. package/test/{keepAliveTimeout.test.js → keep-alive-timeout.test.js} +9 -10
  110. package/test/noop-set.test.js +5 -5
  111. package/test/request-error.test.js +122 -0
  112. package/test/request-header-host.test.js +197 -0
  113. package/test/route.1.test.js +79 -72
  114. package/test/route.2.test.js +17 -16
  115. package/test/route.3.test.js +30 -26
  116. package/test/route.4.test.js +21 -25
  117. package/test/route.5.test.js +45 -64
  118. package/test/route.6.test.js +70 -89
  119. package/test/route.7.test.js +61 -65
  120. package/test/route.8.test.js +62 -0
  121. package/test/same-shape.test.js +5 -5
  122. package/test/serialize-response.test.js +9 -10
  123. package/test/server.test.js +67 -70
  124. package/test/test-reporter.mjs +68 -0
  125. package/test/types/fastify.test-d.ts +12 -0
  126. package/test/types/hooks.test-d.ts +2 -1
  127. package/test/types/instance.test-d.ts +10 -12
  128. package/test/types/plugin.test-d.ts +15 -7
  129. package/test/types/register.test-d.ts +20 -4
  130. package/test/types/route.test-d.ts +33 -3
  131. package/test/versioned-routes.test.js +126 -113
  132. package/test/web-api.test.js +48 -37
  133. package/test/wrapThenable.test.js +10 -9
  134. package/types/hooks.d.ts +1 -0
  135. package/types/register.d.ts +12 -3
  136. package/types/request.d.ts +2 -2
  137. package/types/utils.d.ts +10 -2
  138. package/test/types/import.js +0 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fastify",
3
- "version": "5.0.0",
3
+ "version": "5.1.0",
4
4
  "description": "Fast and low overhead web framework, for Node.js",
5
5
  "main": "fastify.js",
6
6
  "type": "commonjs",
@@ -10,24 +10,23 @@
10
10
  "benchmark": "concurrently -k -s first \"node ./examples/benchmark/simple.js\" \"autocannon -c 100 -d 30 -p 10 localhost:3000/\"",
11
11
  "benchmark:parser": "concurrently -k -s first \"node ./examples/benchmark/parser.js\" \"autocannon -c 100 -d 30 -p 10 -i ./examples/benchmark/body.json -H \"content-type:application/jsoff\" -m POST localhost:3000/\"",
12
12
  "build:validation": "node build/build-error-serializer.js && node build/build-validation.js",
13
- "coverage": "npm run unit -- --coverage-report=html",
14
- "coverage:ci": "tap --coverage-report=html --coverage-report=lcov --allow-incomplete-coverage",
15
- "coverage:ci-check-coverage": "tap replay",
13
+ "coverage": "c8 --reporter html borp --reporter=./test/test-reporter.mjs --coverage --check-coverage --lines 100 ",
14
+ "coverage:ci": "c8 --reporter lcov --reporter html borp --reporter=./test/test-reporter.mjs",
15
+ "coverage:ci-check-coverage": "borp --reporter=./test/test-reporter.mjs --coverage --check-coverage --lines 100",
16
16
  "lint": "npm run lint:eslint",
17
17
  "lint:fix": "eslint --fix",
18
18
  "lint:markdown": "markdownlint-cli2",
19
19
  "lint:eslint": "eslint",
20
- "prepublishOnly": "cross-env PREPUBLISH=true tap --allow-incomplete-coverage test/build/**.test.js && npm run test:validator:integrity",
20
+ "prepublishOnly": "cross-env PREPUBLISH=true borp --reporter=./test/test-reporter.mjs && npm run test:validator:integrity",
21
21
  "test": "npm run lint && npm run unit && npm run test:typescript",
22
- "test:ci": "npm run unit -- --coverage-report=lcovonly && npm run test:typescript",
22
+ "test:ci": "npm run unit && npm run test:typescript",
23
23
  "test:report": "npm run lint && npm run unit:report && npm run test:typescript",
24
24
  "test:validator:integrity": "npm run build:validation && git diff --quiet --ignore-all-space --ignore-blank-lines --ignore-cr-at-eol lib/error-serializer.js && git diff --quiet --ignore-all-space --ignore-blank-lines --ignore-cr-at-eol lib/configValidator.js",
25
- "test:typescript": "tsc test/types/import.ts --noEmit && tsd",
25
+ "test:typescript": "tsc test/types/import.ts --target es2022 --moduleResolution node16 --module node16 --noEmit && tsd",
26
26
  "test:watch": "npm run unit -- --watch --coverage-report=none --reporter=terse",
27
- "unit": "tap",
28
- "unit:junit": "tap-mocha-reporter xunit < out.tap > test/junit-testresults.xml",
29
- "unit:report": "tap --coverage-report=html --coverage-report=cobertura | tee out.tap",
30
- "citgm": "tap --jobs=1 --timeout=120"
27
+ "unit": "borp --reporter=./test/test-reporter.mjs --coverage --check-coverage",
28
+ "unit:report": "c8 --reporter html borp --reporter=./test/test-reporter.mjs",
29
+ "citgm": "borp --reporter=./test/test-reporter.mjs --coverage --check-coverage --concurrency=1"
31
30
  },
32
31
  "repository": {
33
32
  "type": "git",
@@ -163,6 +162,7 @@
163
162
  "ajv-i18n": "^4.2.0",
164
163
  "ajv-merge-patch": "^5.0.1",
165
164
  "autocannon": "^7.15.0",
165
+ "borp": "^0.18.0",
166
166
  "branch-comparer": "^1.1.0",
167
167
  "concurrently": "^8.2.2",
168
168
  "cross-env": "^7.0.3",
@@ -179,12 +179,11 @@
179
179
  "neostandard": "^0.11.3",
180
180
  "node-forge": "^1.3.1",
181
181
  "proxyquire": "^2.1.3",
182
- "send": "^0.18.0",
183
182
  "simple-get": "^4.0.1",
184
183
  "split2": "^4.2.0",
185
184
  "tap": "^21.0.0",
186
185
  "tsd": "^0.31.0",
187
- "typescript": "^5.4.5",
186
+ "typescript": "~5.4.5",
188
187
  "undici": "^6.13.0",
189
188
  "vary": "^1.1.2",
190
189
  "yup": "^1.4.0"