New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(async-hooks): mixing async and callback style in preHandler option now returns an error #5069
Conversation
…n now returns an error
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm
lib/route.js
Outdated
@@ -268,6 +269,10 @@ function buildRouting (options) { | |||
if (typeof func !== 'function') { | |||
throw new FST_ERR_HOOK_INVALID_HANDLER(hook, Object.prototype.toString.call(func)) | |||
} | |||
|
|||
if (func.constructor.name === 'AsyncFunction' && func.length === 3) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
not all hooks have the same parameters:
'onTimeout' - 3
'onRequest' - 3
'preParsing' - 4
'preValidation' - 3
'preSerialization' - 4
'preHandler' - 3
'onSend' - 4
'onResponse' - 3
'onError' - 4
'onRequestAbort - 2
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Following your suggestion and the check done here I came up with a small refactor. Do you think it's worth it or should I revert it?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
it does make sense 👍🏼
but I think we should not rewrite too much the code as the additional functions and datastructure may slowdown the start time
…hanged following already present validation and @Eomm suggestions
Co-authored-by: James Sumners <321201+jsumners@users.noreply.github.com>
I need your help: I don't understand why the pipeline is failing |
Review https://github.com/fastify/fastify/actions/runs/6381041796/job/17316704069?pr=5069 |
lib/validation.js
Outdated
@@ -217,6 +217,26 @@ function validateAsyncHeaders (validatePromise, context, request) { | |||
}) | |||
} | |||
|
|||
function validateAsyncHooks (name, fn) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would keep the old code.
It may seem ugly, but it is fast and with a low memory footprint
cc @Eomm |
We actually should consider exporting the information regarding the available hooks(preSerializer, onReady...), their type(application hook or LifecycleHook) and their argument count, and maybe if they have payload. We had so many times the issue, that we implemented in plugins code which needed this info. |
I'm still PRO to this - will open a issue for that |
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [fastify](https://www.fastify.dev/) ([source](https://togithub.com/fastify/fastify)) | [`4.23.2` -> `4.24.0`](https://renovatebot.com/diffs/npm/fastify/4.23.2/4.24.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/fastify/4.24.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/fastify/4.24.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/fastify/4.23.2/4.24.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/fastify/4.23.2/4.24.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>fastify/fastify (fastify)</summary> ### [`v4.24.0`](https://togithub.com/fastify/fastify/releases/tag/v4.24.0) [Compare Source](https://togithub.com/fastify/fastify/compare/v4.23.2...v4.24.0) #### What's Changed - docs: Add blank line before onclose hook heading by [@​kadoshita](https://togithub.com/kadoshita) in [fastify/fastify#5042 - build(dependabot): ignore tap major updates by [@​Fdawgs](https://togithub.com/Fdawgs) in [fastify/fastify#5047 - chore: Bump actions/checkout from 3 to 4 by [@​dependabot](https://togithub.com/dependabot) in [fastify/fastify#5048 - chore: more perf by [@​Eomm](https://togithub.com/Eomm) in [fastify/fastify#5016 - docs(ecosystem): add fastify-prisma by [@​zrosenbauer](https://togithub.com/zrosenbauer) in [fastify/fastify#5041 - test: fix ci due yup breaking by [@​Eomm](https://togithub.com/Eomm) in [fastify/fastify#5058 - perf: optimize split params by [@​Connormiha](https://togithub.com/Connormiha) in [fastify/fastify#5057 - chore: implicitly infer SchemaCompiler as readonly by [@​DemonHa](https://togithub.com/DemonHa) in [fastify/fastify#5060 - test(logger): splitting existing tests to avoid pipeline failing for timeout by [@​giuliowaitforitdavide](https://togithub.com/giuliowaitforitdavide) in [fastify/fastify#5064 - fix(async-hooks): mixing async and callback style in preHandler option now returns an error by [@​giuliowaitforitdavide](https://togithub.com/giuliowaitforitdavide) in [fastify/fastify#5069 - fix: enhance 100 and 200 or 204 handling by [@​Iamshankhadeep](https://togithub.com/Iamshankhadeep) in [fastify/fastify#5056 - docs: add fastify-cloudflare-turnstile to ecosystem by [@​112RG](https://togithub.com/112RG) in [fastify/fastify#5067 - docs: Fixing a couple typos by [@​Cadienvan](https://togithub.com/Cadienvan) in [fastify/fastify#5079 - feat: Add `Symbol.asyncDispose` to improve DX in short lived servers. by [@​arthurfiorette](https://togithub.com/arthurfiorette) in [fastify/fastify#5082 - docs: Documentation changes requested at [#​5082](https://togithub.com/fastify/fastify/issues/5082) by [@​arthurfiorette](https://togithub.com/arthurfiorette) in [fastify/fastify#5083 - docs: remove thenable promisesaplus spec references by [@​dancastillo](https://togithub.com/dancastillo) in [fastify/fastify#5081 - docs(ecosystem): add fastify-event-bus by [@​Shiva127](https://togithub.com/Shiva127) in [fastify/fastify#5085 - docs: update docs for FastifyPlugin by [@​dancastillo](https://togithub.com/dancastillo) in [fastify/fastify#5070 - docs: Update for .hijack heading by [@​jackbatzner](https://togithub.com/jackbatzner) in [fastify/fastify#5088 - fix(warnings): fixed warning when accessing context property from Request and Reply objects by [@​giuliowaitforitdavide](https://togithub.com/giuliowaitforitdavide) in [fastify/fastify#5084 - fix: HEAD route search by [@​ivan-tymoshenko](https://togithub.com/ivan-tymoshenko) in [fastify/fastify#5078 #### New Contributors - [@​kadoshita](https://togithub.com/kadoshita) made their first contribution in [fastify/fastify#5042 - [@​Connormiha](https://togithub.com/Connormiha) made their first contribution in [fastify/fastify#5057 - [@​DemonHa](https://togithub.com/DemonHa) made their first contribution in [fastify/fastify#5060 - [@​Iamshankhadeep](https://togithub.com/Iamshankhadeep) made their first contribution in [fastify/fastify#5056 - [@​Cadienvan](https://togithub.com/Cadienvan) made their first contribution in [fastify/fastify#5079 - [@​arthurfiorette](https://togithub.com/arthurfiorette) made their first contribution in [fastify/fastify#5082 - [@​jackbatzner](https://togithub.com/jackbatzner) made their first contribution in [fastify/fastify#5088 **Full Changelog**: fastify/fastify@v4.23.2...v4.24.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/tomacheese/telcheck). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy44LjEiLCJ1cGRhdGVkSW5WZXIiOiIzNy44LjEiLCJ0YXJnZXRCcmFuY2giOiJtYXN0ZXIifQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
[![Mend Renovate logo banner](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [fastify](https://www.fastify.dev/) ([source](https://togithub.com/fastify/fastify)) | [`4.23.2` -> `4.24.3`](https://renovatebot.com/diffs/npm/fastify/4.23.2/4.24.3) | [![age](https://developer.mend.io/api/mc/badges/age/npm/fastify/4.24.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/fastify/4.24.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/fastify/4.23.2/4.24.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/fastify/4.23.2/4.24.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>fastify/fastify (fastify)</summary> ### [`v4.24.3`](https://togithub.com/fastify/fastify/releases/tag/v4.24.3) [Compare Source](https://togithub.com/fastify/fastify/compare/v4.24.2...v4.24.3) #### What's Changed - fix: timeout on citgm tests by [@​simone-sanfratello](https://togithub.com/simone-sanfratello) in [fastify/fastify#5101 - chore: add missing `use strict` directives by [@​Fdawgs](https://togithub.com/Fdawgs) in [fastify/fastify#5106 **Full Changelog**: fastify/fastify@v4.24.2...v4.24.3 ### [`v4.24.2`](https://togithub.com/fastify/fastify/releases/tag/v4.24.2) [Compare Source](https://togithub.com/fastify/fastify/compare/v4.24.1...v4.24.2) #### What's Changed - fix: build problems when `Symbol.asyncDispose` type is not available. by [@​arthurfiorette](https://togithub.com/arthurfiorette) in [fastify/fastify#5096 **Full Changelog**: fastify/fastify@v4.24.1...v4.24.2 ### [`v4.24.1`](https://togithub.com/fastify/fastify/releases/tag/v4.24.1) [Compare Source](https://togithub.com/fastify/fastify/compare/v4.24.0...v4.24.1) #### What's Changed - fix: citgm by [@​simone-sanfratello](https://togithub.com/simone-sanfratello) in [fastify/fastify#5075 - fix: HEAD route reseting by [@​ivan-tymoshenko](https://togithub.com/ivan-tymoshenko) in [fastify/fastify#5090 **Full Changelog**: fastify/fastify@v4.24.0...v4.24.1 ### [`v4.24.0`](https://togithub.com/fastify/fastify/releases/tag/v4.24.0) [Compare Source](https://togithub.com/fastify/fastify/compare/v4.23.2...v4.24.0) #### What's Changed - docs: Add blank line before onclose hook heading by [@​kadoshita](https://togithub.com/kadoshita) in [fastify/fastify#5042 - build(dependabot): ignore tap major updates by [@​Fdawgs](https://togithub.com/Fdawgs) in [fastify/fastify#5047 - chore: Bump actions/checkout from 3 to 4 by [@​dependabot](https://togithub.com/dependabot) in [fastify/fastify#5048 - chore: more perf by [@​Eomm](https://togithub.com/Eomm) in [fastify/fastify#5016 - docs(ecosystem): add fastify-prisma by [@​zrosenbauer](https://togithub.com/zrosenbauer) in [fastify/fastify#5041 - test: fix ci due yup breaking by [@​Eomm](https://togithub.com/Eomm) in [fastify/fastify#5058 - perf: optimize split params by [@​Connormiha](https://togithub.com/Connormiha) in [fastify/fastify#5057 - chore: implicitly infer SchemaCompiler as readonly by [@​DemonHa](https://togithub.com/DemonHa) in [fastify/fastify#5060 - test(logger): splitting existing tests to avoid pipeline failing for timeout by [@​giuliowaitforitdavide](https://togithub.com/giuliowaitforitdavide) in [fastify/fastify#5064 - fix(async-hooks): mixing async and callback style in preHandler option now returns an error by [@​giuliowaitforitdavide](https://togithub.com/giuliowaitforitdavide) in [fastify/fastify#5069 - fix: enhance 100 and 200 or 204 handling by [@​Iamshankhadeep](https://togithub.com/Iamshankhadeep) in [fastify/fastify#5056 - docs: add fastify-cloudflare-turnstile to ecosystem by [@​112RG](https://togithub.com/112RG) in [fastify/fastify#5067 - docs: Fixing a couple typos by [@​Cadienvan](https://togithub.com/Cadienvan) in [fastify/fastify#5079 - feat: Add `Symbol.asyncDispose` to improve DX in short lived servers. by [@​arthurfiorette](https://togithub.com/arthurfiorette) in [fastify/fastify#5082 - docs: Documentation changes requested at [#​5082](https://togithub.com/fastify/fastify/issues/5082) by [@​arthurfiorette](https://togithub.com/arthurfiorette) in [fastify/fastify#5083 - docs: remove thenable promisesaplus spec references by [@​dancastillo](https://togithub.com/dancastillo) in [fastify/fastify#5081 - docs(ecosystem): add fastify-event-bus by [@​Shiva127](https://togithub.com/Shiva127) in [fastify/fastify#5085 - docs: update docs for FastifyPlugin by [@​dancastillo](https://togithub.com/dancastillo) in [fastify/fastify#5070 - docs: Update for .hijack heading by [@​jackbatzner](https://togithub.com/jackbatzner) in [fastify/fastify#5088 - fix(warnings): fixed warning when accessing context property from Request and Reply objects by [@​giuliowaitforitdavide](https://togithub.com/giuliowaitforitdavide) in [fastify/fastify#5084 - fix: HEAD route search by [@​ivan-tymoshenko](https://togithub.com/ivan-tymoshenko) in [fastify/fastify#5078 #### New Contributors - [@​kadoshita](https://togithub.com/kadoshita) made their first contribution in [fastify/fastify#5042 - [@​Connormiha](https://togithub.com/Connormiha) made their first contribution in [fastify/fastify#5057 - [@​DemonHa](https://togithub.com/DemonHa) made their first contribution in [fastify/fastify#5060 - [@​Iamshankhadeep](https://togithub.com/Iamshankhadeep) made their first contribution in [fastify/fastify#5056 - [@​Cadienvan](https://togithub.com/Cadienvan) made their first contribution in [fastify/fastify#5079 - [@​arthurfiorette](https://togithub.com/arthurfiorette) made their first contribution in [fastify/fastify#5082 - [@​jackbatzner](https://togithub.com/jackbatzner) made their first contribution in [fastify/fastify#5088 **Full Changelog**: fastify/fastify@v4.23.2...v4.24.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/redwoodjs/redwood). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40Ni4wIiwidXBkYXRlZEluVmVyIjoiMzcuNDYuMCIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
[![Mend Renovate logo banner](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [fastify](https://www.fastify.dev/) ([source](https://togithub.com/fastify/fastify)) | [`4.23.2` -> `4.24.3`](https://renovatebot.com/diffs/npm/fastify/4.23.2/4.24.3) | [![age](https://developer.mend.io/api/mc/badges/age/npm/fastify/4.24.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/fastify/4.24.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/fastify/4.23.2/4.24.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/fastify/4.23.2/4.24.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- <details> <summary>fastify/fastify (fastify)</summary> [`v4.24.3`](https://togithub.com/fastify/fastify/releases/tag/v4.24.3) [Compare Source](https://togithub.com/fastify/fastify/compare/v4.24.2...v4.24.3) - fix: timeout on citgm tests by [@​simone-sanfratello](https://togithub.com/simone-sanfratello) in [fastify/fastify#5101 - chore: add missing `use strict` directives by [@​Fdawgs](https://togithub.com/Fdawgs) in [fastify/fastify#5106 **Full Changelog**: fastify/fastify@v4.24.2...v4.24.3 [`v4.24.2`](https://togithub.com/fastify/fastify/releases/tag/v4.24.2) [Compare Source](https://togithub.com/fastify/fastify/compare/v4.24.1...v4.24.2) - fix: build problems when `Symbol.asyncDispose` type is not available. by [@​arthurfiorette](https://togithub.com/arthurfiorette) in [fastify/fastify#5096 **Full Changelog**: fastify/fastify@v4.24.1...v4.24.2 [`v4.24.1`](https://togithub.com/fastify/fastify/releases/tag/v4.24.1) [Compare Source](https://togithub.com/fastify/fastify/compare/v4.24.0...v4.24.1) - fix: citgm by [@​simone-sanfratello](https://togithub.com/simone-sanfratello) in [fastify/fastify#5075 - fix: HEAD route reseting by [@​ivan-tymoshenko](https://togithub.com/ivan-tymoshenko) in [fastify/fastify#5090 **Full Changelog**: fastify/fastify@v4.24.0...v4.24.1 [`v4.24.0`](https://togithub.com/fastify/fastify/releases/tag/v4.24.0) [Compare Source](https://togithub.com/fastify/fastify/compare/v4.23.2...v4.24.0) - docs: Add blank line before onclose hook heading by [@​kadoshita](https://togithub.com/kadoshita) in [fastify/fastify#5042 - build(dependabot): ignore tap major updates by [@​Fdawgs](https://togithub.com/Fdawgs) in [fastify/fastify#5047 - chore: Bump actions/checkout from 3 to 4 by [@​dependabot](https://togithub.com/dependabot) in [fastify/fastify#5048 - chore: more perf by [@​Eomm](https://togithub.com/Eomm) in [fastify/fastify#5016 - docs(ecosystem): add fastify-prisma by [@​zrosenbauer](https://togithub.com/zrosenbauer) in [fastify/fastify#5041 - test: fix ci due yup breaking by [@​Eomm](https://togithub.com/Eomm) in [fastify/fastify#5058 - perf: optimize split params by [@​Connormiha](https://togithub.com/Connormiha) in [fastify/fastify#5057 - chore: implicitly infer SchemaCompiler as readonly by [@​DemonHa](https://togithub.com/DemonHa) in [fastify/fastify#5060 - test(logger): splitting existing tests to avoid pipeline failing for timeout by [@​giuliowaitforitdavide](https://togithub.com/giuliowaitforitdavide) in [fastify/fastify#5064 - fix(async-hooks): mixing async and callback style in preHandler option now returns an error by [@​giuliowaitforitdavide](https://togithub.com/giuliowaitforitdavide) in [fastify/fastify#5069 - fix: enhance 100 and 200 or 204 handling by [@​Iamshankhadeep](https://togithub.com/Iamshankhadeep) in [fastify/fastify#5056 - docs: add fastify-cloudflare-turnstile to ecosystem by [@​112RG](https://togithub.com/112RG) in [fastify/fastify#5067 - docs: Fixing a couple typos by [@​Cadienvan](https://togithub.com/Cadienvan) in [fastify/fastify#5079 - feat: Add `Symbol.asyncDispose` to improve DX in short lived servers. by [@​arthurfiorette](https://togithub.com/arthurfiorette) in [fastify/fastify#5082 - docs: Documentation changes requested at [#​5082](https://togithub.com/fastify/fastify/issues/5082) by [@​arthurfiorette](https://togithub.com/arthurfiorette) in [fastify/fastify#5083 - docs: remove thenable promisesaplus spec references by [@​dancastillo](https://togithub.com/dancastillo) in [fastify/fastify#5081 - docs(ecosystem): add fastify-event-bus by [@​Shiva127](https://togithub.com/Shiva127) in [fastify/fastify#5085 - docs: update docs for FastifyPlugin by [@​dancastillo](https://togithub.com/dancastillo) in [fastify/fastify#5070 - docs: Update for .hijack heading by [@​jackbatzner](https://togithub.com/jackbatzner) in [fastify/fastify#5088 - fix(warnings): fixed warning when accessing context property from Request and Reply objects by [@​giuliowaitforitdavide](https://togithub.com/giuliowaitforitdavide) in [fastify/fastify#5084 - fix: HEAD route search by [@​ivan-tymoshenko](https://togithub.com/ivan-tymoshenko) in [fastify/fastify#5078 - [@​kadoshita](https://togithub.com/kadoshita) made their first contribution in [fastify/fastify#5042 - [@​Connormiha](https://togithub.com/Connormiha) made their first contribution in [fastify/fastify#5057 - [@​DemonHa](https://togithub.com/DemonHa) made their first contribution in [fastify/fastify#5060 - [@​Iamshankhadeep](https://togithub.com/Iamshankhadeep) made their first contribution in [fastify/fastify#5056 - [@​Cadienvan](https://togithub.com/Cadienvan) made their first contribution in [fastify/fastify#5079 - [@​arthurfiorette](https://togithub.com/arthurfiorette) made their first contribution in [fastify/fastify#5082 - [@​jackbatzner](https://togithub.com/jackbatzner) made their first contribution in [fastify/fastify#5088 **Full Changelog**: fastify/fastify@v4.23.2...v4.24.0 </details> --- 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/redwoodjs/redwood). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40Ni4wIiwidXBkYXRlZEluVmVyIjoiMzcuNDYuMCIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Closes #5068
Checklist
npm run test
andnpm run benchmark
and the Code of conduct