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: infer correct hook handler #4945
Conversation
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
Thanks! I think this should fix quite a lot of problem for folks. |
Changing to Draft, because it still needs some love |
Ok, I thought about it and wanted to inform you about one drawback: Because the method headers of the hook handlers are all different, typescript will throw the error on the wrong place. It is an improvement, because we get an error in typescript when async and callback is mixed. But you get errors like |
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.
Nice 🚀
Haven't played in deep with the Types from fastify, but something like this could be ported to the route
definition?
Regarding the issue of wrong error... I will check if sorting the hooks by descending arity of the handler can help or not . But first i go to the gym... |
much better |
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 👍
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.
On a second look, this is not correct. the done
callback must not be used when the function is async
It throws typings errors, when you define the function async and provide a callback parameter. |
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
Sorry I misunderstood this
* fix: infer correct hook handler * Update test/types/hooks.test-d.ts * simplify * remove duplicate typing tests * remove duplicate test * remove unused import * fix * fix linting
[![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.io/) ([source](https://togithub.com/fastify/fastify)) | [`4.21.0` -> `4.22.0`](https://renovatebot.com/diffs/npm/fastify/4.21.0/4.22.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/fastify/4.22.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/fastify/4.22.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/fastify/4.21.0/4.22.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/fastify/4.21.0/4.22.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>fastify/fastify (fastify)</summary> ### [`v4.22.0`](https://togithub.com/fastify/fastify/releases/tag/v4.22.0) [Compare Source](https://togithub.com/fastify/fastify/compare/v4.21.0...v4.22.0) #### What's Changed - make FastifySchemaValidationError.params wider by [@​cm-ayf](https://togithub.com/cm-ayf) in [fastify/fastify#4476 - docs(ecosystem): add fastify-hashids by [@​andersonjoseph](https://togithub.com/andersonjoseph) in [fastify/fastify#4934 - fix: hasPlugin does not track parent plugins by [@​Eomm](https://togithub.com/Eomm) in [fastify/fastify#4929 - docs: early hints plugin is fastify plugin by [@​Uzlopak](https://togithub.com/Uzlopak) in [fastify/fastify#4947 - chore: add pull request title check by [@​Uzlopak](https://togithub.com/Uzlopak) in [fastify/fastify#4951 - chore: Bump [@​sinclair/typebox](https://togithub.com/sinclair/typebox) from 0.29.6 to 0.30.2 by [@​dependabot](https://togithub.com/dependabot) in [fastify/fastify#4952 - ci: improve pr title check by [@​Uzlopak](https://togithub.com/Uzlopak) in [fastify/fastify#4953 - ci: fix warnings in benchmark workflows by [@​Uzlopak](https://togithub.com/Uzlopak) in [fastify/fastify#4954 - docs: fix removeAdditional comment by [@​G0maa](https://togithub.com/G0maa) in [fastify/fastify#4948 - fix: Try to fix parser benchmark workflow by [@​kibertoad](https://togithub.com/kibertoad) in [fastify/fastify#4956 - fix: infer correct hook handler by [@​Uzlopak](https://togithub.com/Uzlopak) in [fastify/fastify#4945 - fix: do not double send the response if the request is destroyed but not aborted by [@​mcollina](https://togithub.com/mcollina) in [fastify/fastify#4963 - chore: Bump [@​sinclair/typebox](https://togithub.com/sinclair/typebox) from 0.30.4 to 0.31.1 by [@​dependabot](https://togithub.com/dependabot) in [fastify/fastify#4973 - fix: bodyLimit must be applied on fully decoded body by [@​sergburn](https://togithub.com/sergburn) in [fastify/fastify#4969 - chore: updates [@​typescript-eslint/eslint-plugin](https://togithub.com/typescript-eslint/eslint-plugin) and [@​typescript-eslint/parser](https://togithub.com/typescript-eslint/parser) by [@​climba03003](https://togithub.com/climba03003) in [fastify/fastify#4977 - chore: use group dependencies in dependabot by [@​climba03003](https://togithub.com/climba03003) in [fastify/fastify#4979 - chore: fix ci bench by [@​Eomm](https://togithub.com/Eomm) in [fastify/fastify#4983 - fix: require.cache is undefined breaks SEA by [@​climba03003](https://togithub.com/climba03003) in [fastify/fastify#4982 - ci: remove sync next wf by [@​Uzlopak](https://togithub.com/Uzlopak) in [fastify/fastify#4985 - docs: remove mixing ES6 and commomjs in the example by [@​thenicolau](https://togithub.com/thenicolau) in [fastify/fastify#4990 - fix: errorHandler callback should utilize TypeProvider by [@​muan](https://togithub.com/muan) in [fastify/fastify#4989 - types: add onRoute to ApplicationHookLookup by [@​Uzlopak](https://togithub.com/Uzlopak) in [fastify/fastify#4968 - chore: make tests pass on ipv4 only machine by [@​mcollina](https://togithub.com/mcollina) in [fastify/fastify#4997 - fix: Set `FastifyRequest.id` type as a string by [@​samchungy](https://togithub.com/samchungy) in [fastify/fastify#4992 #### New Contributors - [@​G0maa](https://togithub.com/G0maa) made their first contribution in [fastify/fastify#4948 - [@​thenicolau](https://togithub.com/thenicolau) made their first contribution in [fastify/fastify#4990 - [@​muan](https://togithub.com/muan) made their first contribution in [fastify/fastify#4989 - [@​samchungy](https://togithub.com/samchungy) made their first contribution in [fastify/fastify#4992 **Full Changelog**: fastify/fastify@v4.21.0...v4.22.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:eyJjcmVhdGVkSW5WZXIiOiIzNi41Ni4wIiwidXBkYXRlZEluVmVyIjoiMzYuNTYuMCIsInRhcmdldEJyYW5jaCI6Im1hc3RlciJ9--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* make FastifySchemaValidationError.params wider (#4476) * fix: FastifySchemaValidationError.params could be unknown * refactor: use FastifySchemaValidationError instead of ValidationResult * fix: export ValidationResult for backword compatibility * test: add non-assignable test for AjvErrorObject * docs(ecosystem): add fastify-hashids (#4934) * fix: hasPlugin does not track parent plugins (#4929) Co-authored-by: Carlos Fuentes <me@metcoder.dev> * docs: early hints plugin is fastify plugin (#4947) * docs: early hints plugin is fastify plugin * fix * Update docs/Guides/Ecosystem.md Co-authored-by: Frazer Smith <frazer.dev@outlook.com> --------- Co-authored-by: Frazer Smith <frazer.dev@outlook.com> * chore: add pull request title check (#4951) * chore: add pull request title check * Update .github/workflows/pull-request-title.yml Co-authored-by: Frazer Smith <frazer.dev@outlook.com> --------- Co-authored-by: Frazer Smith <frazer.dev@outlook.com> * chore: Bump @sinclair/typebox from 0.29.6 to 0.30.2 (#4952) Bumps [@sinclair/typebox](https://github.com/sinclairzx81/typebox) from 0.29.6 to 0.30.2. - [Commits](sinclairzx81/typebox@0.29.6...0.30.2) --- updated-dependencies: - dependency-name: "@sinclair/typebox" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * ci: prove pr title check (#4953) * improve pr title check * Apply suggestions from code review * fix * fix * Update .github/workflows/pull-request-title.yml Co-authored-by: Luis Orbaiceta <luisorbaiceta@gmail.com> * Apply suggestions from code review --------- Co-authored-by: Luis Orbaiceta <luisorbaiceta@gmail.com> * ci: fix warnings in benchmark workflows (#4954) * improve pr title check * Apply suggestions from code review * fix * fix * ci: fix warnings in benchmark workflow * Update .github/workflows/benchmark.yml * Update .github/workflows/benchmark.yml * docs: fix removeAdditional comment (#4948) * docs(Validator Compiler): fix removeAdditional comment * Update docs/Reference/Validation-and-Serialization.md Co-authored-by: Uzlopak <aras.abbasi@googlemail.com> * fix: typo in comment * Update docs/Reference/Validation-and-Serialization.md Co-authored-by: Frazer Smith <frazer.dev@outlook.com> --------- Co-authored-by: Uzlopak <aras.abbasi@googlemail.com> Co-authored-by: Frazer Smith <frazer.dev@outlook.com> * fix: Try to fix parser benchmark workflow (#4956) * fix: infer correct hook handler (#4945) * fix: infer correct hook handler * Update test/types/hooks.test-d.ts * simplify * remove duplicate typing tests * remove duplicate test * remove unused import * fix * fix linting * fix: remove http version check * test: remove unsupported http version * remove obsolete documentation --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: cm-ayf <cm.ayf2734@gmail.com> Co-authored-by: Anderson <andersonjoseph@mailfence.com> Co-authored-by: Manuel Spigolon <behemoth89@gmail.com> Co-authored-by: Carlos Fuentes <me@metcoder.dev> Co-authored-by: Uzlopak <aras.abbasi@googlemail.com> Co-authored-by: Frazer Smith <frazer.dev@outlook.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Luis Orbaiceta <luisorbaiceta@gmail.com> Co-authored-by: Mohammed Gomaa <midomaxgomaa@gmail.com> Co-authored-by: Igor Savin <iselwin@gmail.com> Co-authored-by: Cem <cembkoztekin@gmail.com>
[![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.io/) ([source](https://togithub.com/fastify/fastify)) | [`4.21.0` -> `4.22.0`](https://renovatebot.com/diffs/npm/fastify/4.21.0/4.22.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/fastify/4.22.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/fastify/4.22.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/fastify/4.21.0/4.22.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/fastify/4.21.0/4.22.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>fastify/fastify (fastify)</summary> ### [`v4.22.0`](https://togithub.com/fastify/fastify/releases/tag/v4.22.0) [Compare Source](https://togithub.com/fastify/fastify/compare/v4.21.0...v4.22.0) ##### What's Changed - make FastifySchemaValidationError.params wider by [@​cm-ayf](https://togithub.com/cm-ayf) in [fastify/fastify#4476 - docs(ecosystem): add fastify-hashids by [@​andersonjoseph](https://togithub.com/andersonjoseph) in [fastify/fastify#4934 - fix: hasPlugin does not track parent plugins by [@​Eomm](https://togithub.com/Eomm) in [fastify/fastify#4929 - docs: early hints plugin is fastify plugin by [@​Uzlopak](https://togithub.com/Uzlopak) in [fastify/fastify#4947 - chore: add pull request title check by [@​Uzlopak](https://togithub.com/Uzlopak) in [fastify/fastify#4951 - chore: Bump [@​sinclair/typebox](https://togithub.com/sinclair/typebox) from 0.29.6 to 0.30.2 by [@​dependabot](https://togithub.com/dependabot) in [fastify/fastify#4952 - ci: improve pr title check by [@​Uzlopak](https://togithub.com/Uzlopak) in [fastify/fastify#4953 - ci: fix warnings in benchmark workflows by [@​Uzlopak](https://togithub.com/Uzlopak) in [fastify/fastify#4954 - docs: fix removeAdditional comment by [@​G0maa](https://togithub.com/G0maa) in [fastify/fastify#4948 - fix: Try to fix parser benchmark workflow by [@​kibertoad](https://togithub.com/kibertoad) in [fastify/fastify#4956 - fix: infer correct hook handler by [@​Uzlopak](https://togithub.com/Uzlopak) in [fastify/fastify#4945 - fix: do not double send the response if the request is destroyed but not aborted by [@​mcollina](https://togithub.com/mcollina) in [fastify/fastify#4963 - chore: Bump [@​sinclair/typebox](https://togithub.com/sinclair/typebox) from 0.30.4 to 0.31.1 by [@​dependabot](https://togithub.com/dependabot) in [fastify/fastify#4973 - fix: bodyLimit must be applied on fully decoded body by [@​sergburn](https://togithub.com/sergburn) in [fastify/fastify#4969 - chore: updates [@​typescript-eslint/eslint-plugin](https://togithub.com/typescript-eslint/eslint-plugin) and [@​typescript-eslint/parser](https://togithub.com/typescript-eslint/parser) by [@​climba03003](https://togithub.com/climba03003) in [fastify/fastify#4977 - chore: use group dependencies in dependabot by [@​climba03003](https://togithub.com/climba03003) in [fastify/fastify#4979 - chore: fix ci bench by [@​Eomm](https://togithub.com/Eomm) in [fastify/fastify#4983 - fix: require.cache is undefined breaks SEA by [@​climba03003](https://togithub.com/climba03003) in [fastify/fastify#4982 - ci: remove sync next wf by [@​Uzlopak](https://togithub.com/Uzlopak) in [fastify/fastify#4985 - docs: remove mixing ES6 and commomjs in the example by [@​thenicolau](https://togithub.com/thenicolau) in [fastify/fastify#4990 - fix: errorHandler callback should utilize TypeProvider by [@​muan](https://togithub.com/muan) in [fastify/fastify#4989 - types: add onRoute to ApplicationHookLookup by [@​Uzlopak](https://togithub.com/Uzlopak) in [fastify/fastify#4968 - chore: make tests pass on ipv4 only machine by [@​mcollina](https://togithub.com/mcollina) in [fastify/fastify#4997 - fix: Set `FastifyRequest.id` type as a string by [@​samchungy](https://togithub.com/samchungy) in [fastify/fastify#4992 ##### New Contributors - [@​G0maa](https://togithub.com/G0maa) made their first contribution in [fastify/fastify#4948 - [@​thenicolau](https://togithub.com/thenicolau) made their first contribution in [fastify/fastify#4990 - [@​muan](https://togithub.com/muan) made their first contribution in [fastify/fastify#4989 - [@​samchungy](https://togithub.com/samchungy) made their first contribution in [fastify/fastify#4992 **Full Changelog**: fastify/fastify@v4.21.0...v4.22.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:eyJjcmVhdGVkSW5WZXIiOiIzNi42OC4xIiwidXBkYXRlZEluVmVyIjoiMzYuNjguMSIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
[![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.io/) ([source](https://togithub.com/fastify/fastify)) | [`4.21.0` -> `4.22.0`](https://renovatebot.com/diffs/npm/fastify/4.21.0/4.22.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/fastify/4.22.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/fastify/4.22.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/fastify/4.21.0/4.22.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/fastify/4.21.0/4.22.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>fastify/fastify (fastify)</summary> ### [`v4.22.0`](https://togithub.com/fastify/fastify/releases/tag/v4.22.0) [Compare Source](https://togithub.com/fastify/fastify/compare/v4.21.0...v4.22.0) ##### What's Changed - make FastifySchemaValidationError.params wider by [@​cm-ayf](https://togithub.com/cm-ayf) in [fastify/fastify#4476 - docs(ecosystem): add fastify-hashids by [@​andersonjoseph](https://togithub.com/andersonjoseph) in [fastify/fastify#4934 - fix: hasPlugin does not track parent plugins by [@​Eomm](https://togithub.com/Eomm) in [fastify/fastify#4929 - docs: early hints plugin is fastify plugin by [@​Uzlopak](https://togithub.com/Uzlopak) in [fastify/fastify#4947 - chore: add pull request title check by [@​Uzlopak](https://togithub.com/Uzlopak) in [fastify/fastify#4951 - chore: Bump [@​sinclair/typebox](https://togithub.com/sinclair/typebox) from 0.29.6 to 0.30.2 by [@​dependabot](https://togithub.com/dependabot) in [fastify/fastify#4952 - ci: improve pr title check by [@​Uzlopak](https://togithub.com/Uzlopak) in [fastify/fastify#4953 - ci: fix warnings in benchmark workflows by [@​Uzlopak](https://togithub.com/Uzlopak) in [fastify/fastify#4954 - docs: fix removeAdditional comment by [@​G0maa](https://togithub.com/G0maa) in [fastify/fastify#4948 - fix: Try to fix parser benchmark workflow by [@​kibertoad](https://togithub.com/kibertoad) in [fastify/fastify#4956 - fix: infer correct hook handler by [@​Uzlopak](https://togithub.com/Uzlopak) in [fastify/fastify#4945 - fix: do not double send the response if the request is destroyed but not aborted by [@​mcollina](https://togithub.com/mcollina) in [fastify/fastify#4963 - chore: Bump [@​sinclair/typebox](https://togithub.com/sinclair/typebox) from 0.30.4 to 0.31.1 by [@​dependabot](https://togithub.com/dependabot) in [fastify/fastify#4973 - fix: bodyLimit must be applied on fully decoded body by [@​sergburn](https://togithub.com/sergburn) in [fastify/fastify#4969 - chore: updates [@​typescript-eslint/eslint-plugin](https://togithub.com/typescript-eslint/eslint-plugin) and [@​typescript-eslint/parser](https://togithub.com/typescript-eslint/parser) by [@​climba03003](https://togithub.com/climba03003) in [fastify/fastify#4977 - chore: use group dependencies in dependabot by [@​climba03003](https://togithub.com/climba03003) in [fastify/fastify#4979 - chore: fix ci bench by [@​Eomm](https://togithub.com/Eomm) in [fastify/fastify#4983 - fix: require.cache is undefined breaks SEA by [@​climba03003](https://togithub.com/climba03003) in [fastify/fastify#4982 - ci: remove sync next wf by [@​Uzlopak](https://togithub.com/Uzlopak) in [fastify/fastify#4985 - docs: remove mixing ES6 and commomjs in the example by [@​thenicolau](https://togithub.com/thenicolau) in [fastify/fastify#4990 - fix: errorHandler callback should utilize TypeProvider by [@​muan](https://togithub.com/muan) in [fastify/fastify#4989 - types: add onRoute to ApplicationHookLookup by [@​Uzlopak](https://togithub.com/Uzlopak) in [fastify/fastify#4968 - chore: make tests pass on ipv4 only machine by [@​mcollina](https://togithub.com/mcollina) in [fastify/fastify#4997 - fix: Set `FastifyRequest.id` type as a string by [@​samchungy](https://togithub.com/samchungy) in [fastify/fastify#4992 ##### New Contributors - [@​G0maa](https://togithub.com/G0maa) made their first contribution in [fastify/fastify#4948 - [@​thenicolau](https://togithub.com/thenicolau) made their first contribution in [fastify/fastify#4990 - [@​muan](https://togithub.com/muan) made their first contribution in [fastify/fastify#4989 - [@​samchungy](https://togithub.com/samchungy) made their first contribution in [fastify/fastify#4992 **Full Changelog**: fastify/fastify@v4.21.0...v4.22.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:eyJjcmVhdGVkSW5WZXIiOiIzNi42OC4xIiwidXBkYXRlZEluVmVyIjoiMzYuNjguMSIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR fixes the issue, that you could define async hook handlers, but they could contain the done callback.
Checklist
npm run test
andnpm run benchmark
and the Code of conduct