Skip to content

fix(#5049): Remove duplicated calls to onReady#5051

Merged
Uzlopak merged 8 commits intomainfrom
fix/5049
Dec 13, 2023
Merged

fix(#5049): Remove duplicated calls to onReady#5051
Uzlopak merged 8 commits intomainfrom
fix/5049

Conversation

@metcoder95
Copy link
Member

@metcoder95 metcoder95 commented Sep 20, 2023

This PR closes #5049

It fixes the double run of onReady hooks when calling Fastify#ready more than once.
It introduces two new states booting (used to indicate onReady hooks are running) and ready (used to indicate onReady hooks have finished running).

These additions can be subject to change, but I believe they are a good starting point.

Checklist

@metcoder95 metcoder95 requested a review from mcollina September 20, 2023 08:14
Copy link
Member

@mcollina mcollina left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this implementation is incorrect. While the second call to ready() would not execute the hooks, it will resolve before the first one.

@Uzlopak
Copy link
Contributor

Uzlopak commented Sep 20, 2023

Something like this has to be utilized.
https://github.com/fastify/avvio/blob/master/lib/create-promise.js

@metcoder95
Copy link
Member Author

metcoder95 commented Sep 20, 2023

Yeah, got you. I believe I rushed the implementation a little but wanted to keep a starting point as it was a little bit more complex than I expected.

My initial thought was to keep the promise somewhere, so the same promise could be returned and have deterministic results.

e.g.

function getPromise () {
  let res, rej
  const promise = new Promise((resolve, reject) => { res = resolve; rej = reject })

  return { promise, resolve: res, reject: rej }
}

function ready (cb) {
  const { promise, resolve: resolveReady, reject: rejectReady } = fastify[kState].promise = fastify[kState].promise == null
    ? getPromise()
    : fastify[kState].promise

  // run the hooks after returning the promise
  !fastify[kState].booting && !fastify[kState].ready && process.nextTick(runHooks)

  if (!cb) {
    return promise
  }

	// rest of implementation
}

The previous example resolves as expected:

const app = Fastify()
let counter = 0

app.addHook('onReady', async function () {

})

await Promise.race([
  app.ready().then(() => console.log('1')),
  app.ready().then(() => console.log('2')),
  app.ready().then(() => console.log('3')),
  app.ready().then(() => console.log('4'))
])

await app.ready()
console.log('5')

Results in:

test/hooks.on-ready.test.js 1> 1
test/hooks.on-ready.test.js 1> 2
test/hooks.on-ready.test.js 1> 3
test/hooks.on-ready.test.js 1> 4
test/hooks.on-ready.test.js 1> 5

@metcoder95
Copy link
Member Author

metcoder95 commented Sep 20, 2023

For callbacks, things get more complex, maybe if the app is already booting we keep a record of them and call them sequentially?

The simplest way is just to throw an error that the app is already starting (or even a silent warning). Thoughts?

@Uzlopak
Copy link
Contributor

Uzlopak commented Sep 20, 2023

no, with that create promise from avvio you can handle all cases properly.

@mcollina
Copy link
Member

Oh I know this is was a tricky problem, that's why I opened a bug instead of sending a quick PR! It's also quite an edge case.

For callbacks, things get more complex, maybe if the app is already booting we keep a record of them and call them sequentially?

This sounds very tricky. Maybe using an EventEmitter somewhere that spins events at the change of states? So if it's booting, you can wait for the "ready" event instead.

The simplest way is just to throw an error that the app is already starting (or even a silent warning). Thoughts?

This is worse than our current bug :(.

@metcoder95
Copy link
Member Author

no, with that create promise from avvio you can handle all cases properly.

Can you elaborate @Uzlopak maybe I'm not getting your suggestion right 🤔

Oh I know this is was a tricky problem, that's why I opened a bug instead of sending a quick PR! It's also quite an edge case.

Haha, I realized until I opened the PR 😅

Maybe using an EventEmitter somewhere that spins events at the change of states? So if it's booting, you can wait for the "ready" event instead.

Hmm, that sounds interesting. We can keep it tight to the instance and just subscribe new calls to it. I have a rough idea of a similar thing but with the Promise itself; I'll give it a shot to ;)

This is worse than our current bug :(.

Yeah, don't like it either but it was also an option 😅

@Uzlopak

This comment was marked as outdated.

@metcoder95
Copy link
Member Author

Ah ok okay, I see; it is similar to what I was trying to test out. You gave me an idea though, I'll set back the PR into draft and re-work the approach 👍

@metcoder95 metcoder95 marked this pull request as draft September 21, 2023 07:54
@metcoder95 metcoder95 marked this pull request as ready for review November 12, 2023 16:22
@metcoder95 metcoder95 marked this pull request as draft November 12, 2023 16:36
@metcoder95
Copy link
Member Author

I've refactored it trying to attempt to chain incoming promises down to the first one ever created when initially calling ready. That solves mixed implementations from callbacks and promises, as well as each one independently, but it does not avoids the call to the avvio hook loader.

We can go in this direction if we think that not avoiding the avvio loader twice is a problem.

@metcoder95 metcoder95 marked this pull request as ready for review November 12, 2023 16:38
@metcoder95 metcoder95 requested a review from mcollina November 12, 2023 16:38
@metcoder95
Copy link
Member Author

Do we have an issue with warning?

@metcoder95 metcoder95 requested a review from Eomm November 19, 2023 12:35
@metcoder95
Copy link
Member Author

Tried to enhance sequence handling of the CB and Promises by creating a Promise upfront and using it as a flow control mechanism. Further CB's are attached to the callbacks seeking for ordering.

@Eomm
Copy link
Member

Eomm commented Nov 19, 2023

Do we have an issue with warning?

We released a fix this morning of the process-warning module. Does it brake the test?
I'm with the mobile 📱 and can't check it right now

@metcoder95
Copy link
Member Author

It seems so, I rebased with main and tests are failing due to:
warming.emitted.<set | delete | ..> are not a function.

https://github.com/fastify/fastify/actions/runs/6920346527/job/18824804630?pr=5051#step:5:2881

@Uzlopak Uzlopak added the benchmark Label to run benchmark against PR and main branch label Dec 10, 2023
@github-actions
Copy link

Node: 16
PR: [1] 1721k requests in 30.04s, 323 MB read
MAIN: [1] 1786k requests in 30.04s, 336 MB read


Node: 18
PR: [1] 1447k requests in 30.03s, 272 MB read
MAIN: [1] 1463k requests in 30.04s, 275 MB read


Node: 20
PR: [1] 1515k requests in 30.04s, 285 MB read
MAIN: [1] 1526k requests in 30.04s, 287 MB read

@github-actions github-actions bot removed the benchmark Label to run benchmark against PR and main branch label Dec 10, 2023
Copy link
Contributor

@Uzlopak Uzlopak left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

RSLGTM

Copy link
Contributor

@Uzlopak Uzlopak left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks right

So no RSLGTM but a LGTM

@Uzlopak
Copy link
Contributor

Uzlopak commented Dec 13, 2023

@mcollina
PTAL

Copy link
Member

@mcollina mcollina left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@Uzlopak Uzlopak merged commit 1b588a0 into main Dec 13, 2023
@Uzlopak Uzlopak deleted the fix/5049 branch December 13, 2023 07:02
renovate bot referenced this pull request in tomacheese/telcheck Dec 13, 2023
[![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.24.3` ->
`4.25.0`](https://renovatebot.com/diffs/npm/fastify/4.24.3/4.25.0) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/fastify/4.25.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/fastify/4.25.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/fastify/4.24.3/4.25.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/fastify/4.24.3/4.25.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>fastify/fastify (fastify)</summary>

###
[`v4.25.0`](https://togithub.com/fastify/fastify/releases/tag/v4.25.0)

[Compare
Source](https://togithub.com/fastify/fastify/compare/v4.24.3...v4.25.0)

#### What's Changed

- feat: Improve RouteShorthandOptions\['constraints'] type by
[@&#8203;Fcmam5](https://togithub.com/Fcmam5) in
[https://github.com/fastify/fastify/pull/5097](https://togithub.com/fastify/fastify/pull/5097)
- fix: add [@&#8203;eomm](https://togithub.com/eomm) and
[@&#8203;jsumners](https://togithub.com/jsumners) as lead maintainers by
[@&#8203;mcollina](https://togithub.com/mcollina) in
[https://github.com/fastify/fastify/pull/5115](https://togithub.com/fastify/fastify/pull/5115)
- fix: reply.send supports Uint8Array payload by
[@&#8203;SgtPooki](https://togithub.com/SgtPooki) in
[https://github.com/fastify/fastify/pull/5124](https://togithub.com/fastify/fastify/pull/5124)
- refactor: migrate deprecation warnings to actual deprecation warnings
by [@&#8203;jsumners](https://togithub.com/jsumners) in
[https://github.com/fastify/fastify/pull/5126](https://togithub.com/fastify/fastify/pull/5126)
- docs: added documentation about warnings by
[@&#8203;giuliowaitforitdavide](https://togithub.com/giuliowaitforitdavide)
in
[https://github.com/fastify/fastify/pull/5108](https://togithub.com/fastify/fastify/pull/5108)
- test(logger): restrict temp file permissions by
[@&#8203;Fdawgs](https://togithub.com/Fdawgs) in
[https://github.com/fastify/fastify/pull/5128](https://togithub.com/fastify/fastify/pull/5128)
- refactor(lib/hooks): replace `typeof` undefined check by
[@&#8203;Fdawgs](https://togithub.com/Fdawgs) in
[https://github.com/fastify/fastify/pull/5127](https://togithub.com/fastify/fastify/pull/5127)
- chore: replace mention of fastify `.io` domain with `.dev` by
[@&#8203;Fdawgs](https://togithub.com/Fdawgs) in
[https://github.com/fastify/fastify/pull/5129](https://togithub.com/fastify/fastify/pull/5129)
- docs(security): add prose explaining OpenSSF CII Best Practices badge
results by [@&#8203;ljharb](https://togithub.com/ljharb) in
[https://github.com/fastify/fastify/pull/5111](https://togithub.com/fastify/fastify/pull/5111)
- chore: Bump actions/setup-node from 3 to 4 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/fastify/fastify/pull/5134](https://togithub.com/fastify/fastify/pull/5134)
- fix(types): add handler property to routeOptions by
[@&#8203;MikeJeffers](https://togithub.com/MikeJeffers) in
[https://github.com/fastify/fastify/pull/5136](https://togithub.com/fastify/fastify/pull/5136)
- docs(readme): fix ci badge path by
[@&#8203;Fdawgs](https://togithub.com/Fdawgs) in
[https://github.com/fastify/fastify/pull/5138](https://togithub.com/fastify/fastify/pull/5138)
- docs: Fix small typo in Typescript docs by
[@&#8203;john-ko](https://togithub.com/john-ko) in
[https://github.com/fastify/fastify/pull/5145](https://togithub.com/fastify/fastify/pull/5145)
- feat(plugins): mixing async and callback style now returns a warning
by
[@&#8203;giuliowaitforitdavide](https://togithub.com/giuliowaitforitdavide)
in
[https://github.com/fastify/fastify/pull/5139](https://togithub.com/fastify/fastify/pull/5139)
- docs: mention about multipart support by
[@&#8203;fawazahmed0](https://togithub.com/fawazahmed0) in
[https://github.com/fastify/fastify/pull/5144](https://togithub.com/fastify/fastify/pull/5144)
- docs: add [@&#8203;fastify/vite](https://togithub.com/fastify/vite) to
core plugins list by [@&#8203;galvez](https://togithub.com/galvez) in
[https://github.com/fastify/fastify/pull/5153](https://togithub.com/fastify/fastify/pull/5153)
- docs: add
[@&#8203;scalar/fastify-api-reference](https://togithub.com/scalar/fastify-api-reference)
to community plugins list by
[@&#8203;hanspagel](https://togithub.com/hanspagel) in
[https://github.com/fastify/fastify/pull/5154](https://togithub.com/fastify/fastify/pull/5154)
- docs: Remove routeOptions reference in Reply.md by
[@&#8203;shadahmad7](https://togithub.com/shadahmad7) in
[https://github.com/fastify/fastify/pull/5156](https://togithub.com/fastify/fastify/pull/5156)
- docs(ecosystem): add fastify-uws by
[@&#8203;tinchoz49](https://togithub.com/tinchoz49) in
[https://github.com/fastify/fastify/pull/5160](https://togithub.com/fastify/fastify/pull/5160)
- docs: removed unmaintained fastify-nodemailer from ecosystem by
[@&#8203;giovanni-bertoncelli](https://togithub.com/giovanni-bertoncelli)
in
[https://github.com/fastify/fastify/pull/5161](https://togithub.com/fastify/fastify/pull/5161)
- docs: clarify handling of streams and buffers by
[@&#8203;brettwillis](https://togithub.com/brettwillis) in
[https://github.com/fastify/fastify/pull/5166](https://togithub.com/fastify/fastify/pull/5166)
-
docs([#&#8203;5142](https://togithub.com/fastify/fastify/issues/5142)):
aligned errors and warnings documentation by
[@&#8203;giuliowaitforitdavide](https://togithub.com/giuliowaitforitdavide)
in
[https://github.com/fastify/fastify/pull/5162](https://togithub.com/fastify/fastify/pull/5162)
- docs(reference/hooks): add information about prehandler by
[@&#8203;RjManhas](https://togithub.com/RjManhas) in
[https://github.com/fastify/fastify/pull/5163](https://togithub.com/fastify/fastify/pull/5163)
- fix: type FastifyInstance\['route'] and RouteShorthandMethod by
[@&#8203;MunifTanjim](https://togithub.com/MunifTanjim) in
[https://github.com/fastify/fastify/pull/5155](https://togithub.com/fastify/fastify/pull/5155)
- docs (reference): Fix small typo in Request by
[@&#8203;bngarren](https://togithub.com/bngarren) in
[https://github.com/fastify/fastify/pull/5186](https://togithub.com/fastify/fastify/pull/5186)
- chore: gitpodify by
[@&#8203;ghostdevv](https://togithub.com/ghostdevv) in
[https://github.com/fastify/fastify/pull/5168](https://togithub.com/fastify/fastify/pull/5168)
- docs(ecosystem): Add Apitally by
[@&#8203;itssimon](https://togithub.com/itssimon) in
[https://github.com/fastify/fastify/pull/5175](https://togithub.com/fastify/fastify/pull/5175)
- fix: Update reply.context deprecation warning by
[@&#8203;avaly](https://togithub.com/avaly) in
[https://github.com/fastify/fastify/pull/5179](https://togithub.com/fastify/fastify/pull/5179)
- docs(ecosystem): adds @&#8203;blastorg/fastify/aws-dynamodb-cache to
community plugins list by
[@&#8203;fredrikj31](https://togithub.com/fredrikj31) in
[https://github.com/fastify/fastify/pull/5158](https://togithub.com/fastify/fastify/pull/5158)
- docs: update preHandler hook example by
[@&#8203;tarunrajput](https://togithub.com/tarunrajput) in
[https://github.com/fastify/fastify/pull/5189](https://togithub.com/fastify/fastify/pull/5189)
- types: added http header types to reply by
[@&#8203;skwee357](https://togithub.com/skwee357) in
[https://github.com/fastify/fastify/pull/5046](https://togithub.com/fastify/fastify/pull/5046)
- test: add tests for TOC of errors.md by
[@&#8203;Uzlopak](https://togithub.com/Uzlopak) in
[https://github.com/fastify/fastify/pull/5194](https://togithub.com/fastify/fastify/pull/5194)
- ci: pin node 18 to 18.18.2 by
[@&#8203;Uzlopak](https://togithub.com/Uzlopak) in
[https://github.com/fastify/fastify/pull/5197](https://togithub.com/fastify/fastify/pull/5197)
- docs(ecosystem): add http-wizard by
[@&#8203;flodlc](https://togithub.com/flodlc) in
[https://github.com/fastify/fastify/pull/5132](https://togithub.com/fastify/fastify/pull/5132)
- chore: Bump actions/github-script from 6 to 7 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/fastify/fastify/pull/5183](https://togithub.com/fastify/fastify/pull/5183)
- ci: fix broken ci by skipping tests if node v > 18.19.0 by
[@&#8203;Uzlopak](https://togithub.com/Uzlopak) in
[https://github.com/fastify/fastify/pull/5195](https://togithub.com/fastify/fastify/pull/5195)
- fix: allow async hooks in `RouteShorthandOptions` without breaking
`request` and `reply` types by
[@&#8203;bienzaaron](https://togithub.com/bienzaaron) in
[https://github.com/fastify/fastify/pull/5147](https://togithub.com/fastify/fastify/pull/5147)
- fix([#&#8203;5180](https://togithub.com/fastify/fastify/issues/5180)):
close secondary bindings after primary is closed by
[@&#8203;metcoder95](https://togithub.com/metcoder95) in
[https://github.com/fastify/fastify/pull/5201](https://togithub.com/fastify/fastify/pull/5201)
- chore: update process-warning by
[@&#8203;Eomm](https://togithub.com/Eomm) in
[https://github.com/fastify/fastify/pull/5206](https://togithub.com/fastify/fastify/pull/5206)
- types: nullish error types in callback function's parameter for
`after` and `ready` method by
[@&#8203;nokazn](https://togithub.com/nokazn) in
[https://github.com/fastify/fastify/pull/5191](https://togithub.com/fastify/fastify/pull/5191)
- fix([#&#8203;5049](https://togithub.com/fastify/fastify/issues/5049)):
Remove duplicated calls to onReady by
[@&#8203;metcoder95](https://togithub.com/metcoder95) in
[https://github.com/fastify/fastify/pull/5051](https://togithub.com/fastify/fastify/pull/5051)
- chore: remove unused type assertion by
[@&#8203;UndefinedBehaviour](https://togithub.com/UndefinedBehaviour) in
[https://github.com/fastify/fastify/pull/5184](https://togithub.com/fastify/fastify/pull/5184)

#### New Contributors

- [@&#8203;Fcmam5](https://togithub.com/Fcmam5) made their first
contribution in
[https://github.com/fastify/fastify/pull/5097](https://togithub.com/fastify/fastify/pull/5097)
- [@&#8203;SgtPooki](https://togithub.com/SgtPooki) made their first
contribution in
[https://github.com/fastify/fastify/pull/5124](https://togithub.com/fastify/fastify/pull/5124)
- [@&#8203;MikeJeffers](https://togithub.com/MikeJeffers) made their
first contribution in
[https://github.com/fastify/fastify/pull/5136](https://togithub.com/fastify/fastify/pull/5136)
- [@&#8203;john-ko](https://togithub.com/john-ko) made their first
contribution in
[https://github.com/fastify/fastify/pull/5145](https://togithub.com/fastify/fastify/pull/5145)
- [@&#8203;fawazahmed0](https://togithub.com/fawazahmed0) made their
first contribution in
[https://github.com/fastify/fastify/pull/5144](https://togithub.com/fastify/fastify/pull/5144)
- [@&#8203;hanspagel](https://togithub.com/hanspagel) made their first
contribution in
[https://github.com/fastify/fastify/pull/5154](https://togithub.com/fastify/fastify/pull/5154)
- [@&#8203;shadahmad7](https://togithub.com/shadahmad7) made their first
contribution in
[https://github.com/fastify/fastify/pull/5156](https://togithub.com/fastify/fastify/pull/5156)
-
[@&#8203;giovanni-bertoncelli](https://togithub.com/giovanni-bertoncelli)
made their first contribution in
[https://github.com/fastify/fastify/pull/5161](https://togithub.com/fastify/fastify/pull/5161)
- [@&#8203;RjManhas](https://togithub.com/RjManhas) made their first
contribution in
[https://github.com/fastify/fastify/pull/5163](https://togithub.com/fastify/fastify/pull/5163)
- [@&#8203;MunifTanjim](https://togithub.com/MunifTanjim) made their
first contribution in
[https://github.com/fastify/fastify/pull/5155](https://togithub.com/fastify/fastify/pull/5155)
- [@&#8203;bngarren](https://togithub.com/bngarren) made their first
contribution in
[https://github.com/fastify/fastify/pull/5186](https://togithub.com/fastify/fastify/pull/5186)
- [@&#8203;ghostdevv](https://togithub.com/ghostdevv) made their first
contribution in
[https://github.com/fastify/fastify/pull/5168](https://togithub.com/fastify/fastify/pull/5168)
- [@&#8203;itssimon](https://togithub.com/itssimon) made their first
contribution in
[https://github.com/fastify/fastify/pull/5175](https://togithub.com/fastify/fastify/pull/5175)
- [@&#8203;avaly](https://togithub.com/avaly) made their first
contribution in
[https://github.com/fastify/fastify/pull/5179](https://togithub.com/fastify/fastify/pull/5179)
- [@&#8203;fredrikj31](https://togithub.com/fredrikj31) made their first
contribution in
[https://github.com/fastify/fastify/pull/5158](https://togithub.com/fastify/fastify/pull/5158)
- [@&#8203;tarunrajput](https://togithub.com/tarunrajput) made their
first contribution in
[https://github.com/fastify/fastify/pull/5189](https://togithub.com/fastify/fastify/pull/5189)
- [@&#8203;skwee357](https://togithub.com/skwee357) made their first
contribution in
[https://github.com/fastify/fastify/pull/5046](https://togithub.com/fastify/fastify/pull/5046)
- [@&#8203;flodlc](https://togithub.com/flodlc) made their first
contribution in
[https://github.com/fastify/fastify/pull/5132](https://togithub.com/fastify/fastify/pull/5132)
- [@&#8203;nokazn](https://togithub.com/nokazn) made their first
contribution in
[https://github.com/fastify/fastify/pull/5191](https://togithub.com/fastify/fastify/pull/5191)
- [@&#8203;UndefinedBehaviour](https://togithub.com/UndefinedBehaviour)
made their first contribution in
[https://github.com/fastify/fastify/pull/5184](https://togithub.com/fastify/fastify/pull/5184)

**Full Changelog**:
fastify/fastify@v4.24.3...v4.25.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:eyJjcmVhdGVkSW5WZXIiOiIzNy44Ny4yIiwidXBkYXRlZEluVmVyIjoiMzcuODcuMiIsInRhcmdldEJyYW5jaCI6Im1hc3RlciJ9-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
renovate bot referenced this pull request in redwoodjs/graphql Jan 29, 2024
[![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.24.3` ->
`4.25.2`](https://renovatebot.com/diffs/npm/fastify/4.24.3/4.25.2) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/fastify/4.25.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/fastify/4.25.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/fastify/4.24.3/4.25.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/fastify/4.24.3/4.25.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>fastify/fastify (fastify)</summary>

###
[`v4.25.2`](https://togithub.com/fastify/fastify/releases/tag/v4.25.2)

[Compare
Source](https://togithub.com/fastify/fastify/compare/v4.25.1...v4.25.2)

#### What's Changed

- fix: `npm run test:watch` by
[@&#8203;domdomegg](https://togithub.com/domdomegg) in
[https://github.com/fastify/fastify/pull/5221](https://togithub.com/fastify/fastify/pull/5221)
- fix: always consume stream payloads when responding to 204 with no
body by [@&#8203;mcollina](https://togithub.com/mcollina) in
[https://github.com/fastify/fastify/pull/5231](https://togithub.com/fastify/fastify/pull/5231)
- docs: update setErrorHandler to explain not found behaviour by
[@&#8203;domdomegg](https://togithub.com/domdomegg) in
[https://github.com/fastify/fastify/pull/5218](https://togithub.com/fastify/fastify/pull/5218)

#### New Contributors

- [@&#8203;domdomegg](https://togithub.com/domdomegg) made their first
contribution in
[https://github.com/fastify/fastify/pull/5221](https://togithub.com/fastify/fastify/pull/5221)

**Full Changelog**:
fastify/fastify@v4.25.1...v4.25.2

###
[`v4.25.1`](https://togithub.com/fastify/fastify/releases/tag/v4.25.1)

[Compare
Source](https://togithub.com/fastify/fastify/compare/v4.25.0...v4.25.1)

#### What's Changed

- fix: route constraints by
[@&#8203;climba03003](https://togithub.com/climba03003) in
[https://github.com/fastify/fastify/pull/5207](https://togithub.com/fastify/fastify/pull/5207)
- fix: Better plugin name detection for FSTWRN002 by
[@&#8203;mcollina](https://togithub.com/mcollina) in
[https://github.com/fastify/fastify/pull/5209](https://togithub.com/fastify/fastify/pull/5209)
- chore: at-large project by [@&#8203;Eomm](https://togithub.com/Eomm)
in
[https://github.com/fastify/fastify/pull/5211](https://togithub.com/fastify/fastify/pull/5211)

**Full Changelog**:
fastify/fastify@v4.25.0...v4.25.1

###
[`v4.25.0`](https://togithub.com/fastify/fastify/releases/tag/v4.25.0)

[Compare
Source](https://togithub.com/fastify/fastify/compare/v4.24.3...v4.25.0)

#### What's Changed

- feat: Improve RouteShorthandOptions\['constraints'] type by
[@&#8203;Fcmam5](https://togithub.com/Fcmam5) in
[https://github.com/fastify/fastify/pull/5097](https://togithub.com/fastify/fastify/pull/5097)
- fix: add [@&#8203;eomm](https://togithub.com/eomm) and
[@&#8203;jsumners](https://togithub.com/jsumners) as lead maintainers by
[@&#8203;mcollina](https://togithub.com/mcollina) in
[https://github.com/fastify/fastify/pull/5115](https://togithub.com/fastify/fastify/pull/5115)
- fix: reply.send supports Uint8Array payload by
[@&#8203;SgtPooki](https://togithub.com/SgtPooki) in
[https://github.com/fastify/fastify/pull/5124](https://togithub.com/fastify/fastify/pull/5124)
- refactor: migrate deprecation warnings to actual deprecation warnings
by [@&#8203;jsumners](https://togithub.com/jsumners) in
[https://github.com/fastify/fastify/pull/5126](https://togithub.com/fastify/fastify/pull/5126)
- docs: added documentation about warnings by
[@&#8203;giuliowaitforitdavide](https://togithub.com/giuliowaitforitdavide)
in
[https://github.com/fastify/fastify/pull/5108](https://togithub.com/fastify/fastify/pull/5108)
- test(logger): restrict temp file permissions by
[@&#8203;Fdawgs](https://togithub.com/Fdawgs) in
[https://github.com/fastify/fastify/pull/5128](https://togithub.com/fastify/fastify/pull/5128)
- refactor(lib/hooks): replace `typeof` undefined check by
[@&#8203;Fdawgs](https://togithub.com/Fdawgs) in
[https://github.com/fastify/fastify/pull/5127](https://togithub.com/fastify/fastify/pull/5127)
- chore: replace mention of fastify `.io` domain with `.dev` by
[@&#8203;Fdawgs](https://togithub.com/Fdawgs) in
[https://github.com/fastify/fastify/pull/5129](https://togithub.com/fastify/fastify/pull/5129)
- docs(security): add prose explaining OpenSSF CII Best Practices badge
results by [@&#8203;ljharb](https://togithub.com/ljharb) in
[https://github.com/fastify/fastify/pull/5111](https://togithub.com/fastify/fastify/pull/5111)
- chore: Bump actions/setup-node from 3 to 4 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/fastify/fastify/pull/5134](https://togithub.com/fastify/fastify/pull/5134)
- fix(types): add handler property to routeOptions by
[@&#8203;MikeJeffers](https://togithub.com/MikeJeffers) in
[https://github.com/fastify/fastify/pull/5136](https://togithub.com/fastify/fastify/pull/5136)
- docs(readme): fix ci badge path by
[@&#8203;Fdawgs](https://togithub.com/Fdawgs) in
[https://github.com/fastify/fastify/pull/5138](https://togithub.com/fastify/fastify/pull/5138)
- docs: Fix small typo in Typescript docs by
[@&#8203;john-ko](https://togithub.com/john-ko) in
[https://github.com/fastify/fastify/pull/5145](https://togithub.com/fastify/fastify/pull/5145)
- feat(plugins): mixing async and callback style now returns a warning
by
[@&#8203;giuliowaitforitdavide](https://togithub.com/giuliowaitforitdavide)
in
[https://github.com/fastify/fastify/pull/5139](https://togithub.com/fastify/fastify/pull/5139)
- docs: mention about multipart support by
[@&#8203;fawazahmed0](https://togithub.com/fawazahmed0) in
[https://github.com/fastify/fastify/pull/5144](https://togithub.com/fastify/fastify/pull/5144)
- docs: add [@&#8203;fastify/vite](https://togithub.com/fastify/vite) to
core plugins list by [@&#8203;galvez](https://togithub.com/galvez) in
[https://github.com/fastify/fastify/pull/5153](https://togithub.com/fastify/fastify/pull/5153)
- docs: add
[@&#8203;scalar/fastify-api-reference](https://togithub.com/scalar/fastify-api-reference)
to community plugins list by
[@&#8203;hanspagel](https://togithub.com/hanspagel) in
[https://github.com/fastify/fastify/pull/5154](https://togithub.com/fastify/fastify/pull/5154)
- docs: Remove routeOptions reference in Reply.md by
[@&#8203;shadahmad7](https://togithub.com/shadahmad7) in
[https://github.com/fastify/fastify/pull/5156](https://togithub.com/fastify/fastify/pull/5156)
- docs(ecosystem): add fastify-uws by
[@&#8203;tinchoz49](https://togithub.com/tinchoz49) in
[https://github.com/fastify/fastify/pull/5160](https://togithub.com/fastify/fastify/pull/5160)
- docs: removed unmaintained fastify-nodemailer from ecosystem by
[@&#8203;giovanni-bertoncelli](https://togithub.com/giovanni-bertoncelli)
in
[https://github.com/fastify/fastify/pull/5161](https://togithub.com/fastify/fastify/pull/5161)
- docs: clarify handling of streams and buffers by
[@&#8203;brettwillis](https://togithub.com/brettwillis) in
[https://github.com/fastify/fastify/pull/5166](https://togithub.com/fastify/fastify/pull/5166)
-
docs([#&#8203;5142](https://togithub.com/fastify/fastify/issues/5142)):
aligned errors and warnings documentation by
[@&#8203;giuliowaitforitdavide](https://togithub.com/giuliowaitforitdavide)
in
[https://github.com/fastify/fastify/pull/5162](https://togithub.com/fastify/fastify/pull/5162)
- docs(reference/hooks): add information about prehandler by
[@&#8203;RjManhas](https://togithub.com/RjManhas) in
[https://github.com/fastify/fastify/pull/5163](https://togithub.com/fastify/fastify/pull/5163)
- fix: type FastifyInstance\['route'] and RouteShorthandMethod by
[@&#8203;MunifTanjim](https://togithub.com/MunifTanjim) in
[https://github.com/fastify/fastify/pull/5155](https://togithub.com/fastify/fastify/pull/5155)
- docs (reference): Fix small typo in Request by
[@&#8203;bngarren](https://togithub.com/bngarren) in
[https://github.com/fastify/fastify/pull/5186](https://togithub.com/fastify/fastify/pull/5186)
- chore: gitpodify by
[@&#8203;ghostdevv](https://togithub.com/ghostdevv) in
[https://github.com/fastify/fastify/pull/5168](https://togithub.com/fastify/fastify/pull/5168)
- docs(ecosystem): Add Apitally by
[@&#8203;itssimon](https://togithub.com/itssimon) in
[https://github.com/fastify/fastify/pull/5175](https://togithub.com/fastify/fastify/pull/5175)
- fix: Update reply.context deprecation warning by
[@&#8203;avaly](https://togithub.com/avaly) in
[https://github.com/fastify/fastify/pull/5179](https://togithub.com/fastify/fastify/pull/5179)
- docs(ecosystem): adds @&#8203;blastorg/fastify/aws-dynamodb-cache to
community plugins list by
[@&#8203;fredrikj31](https://togithub.com/fredrikj31) in
[https://github.com/fastify/fastify/pull/5158](https://togithub.com/fastify/fastify/pull/5158)
- docs: update preHandler hook example by
[@&#8203;tarunrajput](https://togithub.com/tarunrajput) in
[https://github.com/fastify/fastify/pull/5189](https://togithub.com/fastify/fastify/pull/5189)
- types: added http header types to reply by
[@&#8203;skwee357](https://togithub.com/skwee357) in
[https://github.com/fastify/fastify/pull/5046](https://togithub.com/fastify/fastify/pull/5046)
- test: add tests for TOC of errors.md by
[@&#8203;Uzlopak](https://togithub.com/Uzlopak) in
[https://github.com/fastify/fastify/pull/5194](https://togithub.com/fastify/fastify/pull/5194)
- ci: pin node 18 to 18.18.2 by
[@&#8203;Uzlopak](https://togithub.com/Uzlopak) in
[https://github.com/fastify/fastify/pull/5197](https://togithub.com/fastify/fastify/pull/5197)
- docs(ecosystem): add http-wizard by
[@&#8203;flodlc](https://togithub.com/flodlc) in
[https://github.com/fastify/fastify/pull/5132](https://togithub.com/fastify/fastify/pull/5132)
- chore: Bump actions/github-script from 6 to 7 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/fastify/fastify/pull/5183](https://togithub.com/fastify/fastify/pull/5183)
- ci: fix broken ci by skipping tests if node v > 18.19.0 by
[@&#8203;Uzlopak](https://togithub.com/Uzlopak) in
[https://github.com/fastify/fastify/pull/5195](https://togithub.com/fastify/fastify/pull/5195)
- fix: allow async hooks in `RouteShorthandOptions` without breaking
`request` and `reply` types by
[@&#8203;bienzaaron](https://togithub.com/bienzaaron) in
[https://github.com/fastify/fastify/pull/5147](https://togithub.com/fastify/fastify/pull/5147)
- fix([#&#8203;5180](https://togithub.com/fastify/fastify/issues/5180)):
close secondary bindings after primary is closed by
[@&#8203;metcoder95](https://togithub.com/metcoder95) in
[https://github.com/fastify/fastify/pull/5201](https://togithub.com/fastify/fastify/pull/5201)
- chore: update process-warning by
[@&#8203;Eomm](https://togithub.com/Eomm) in
[https://github.com/fastify/fastify/pull/5206](https://togithub.com/fastify/fastify/pull/5206)
- types: nullish error types in callback function's parameter for
`after` and `ready` method by
[@&#8203;nokazn](https://togithub.com/nokazn) in
[https://github.com/fastify/fastify/pull/5191](https://togithub.com/fastify/fastify/pull/5191)
- fix([#&#8203;5049](https://togithub.com/fastify/fastify/issues/5049)):
Remove duplicated calls to onReady by
[@&#8203;metcoder95](https://togithub.com/metcoder95) in
[https://github.com/fastify/fastify/pull/5051](https://togithub.com/fastify/fastify/pull/5051)
- chore: remove unused type assertion by
[@&#8203;UndefinedBehaviour](https://togithub.com/UndefinedBehaviour) in
[https://github.com/fastify/fastify/pull/5184](https://togithub.com/fastify/fastify/pull/5184)

#### New Contributors

- [@&#8203;Fcmam5](https://togithub.com/Fcmam5) made their first
contribution in
[https://github.com/fastify/fastify/pull/5097](https://togithub.com/fastify/fastify/pull/5097)
- [@&#8203;SgtPooki](https://togithub.com/SgtPooki) made their first
contribution in
[https://github.com/fastify/fastify/pull/5124](https://togithub.com/fastify/fastify/pull/5124)
- [@&#8203;MikeJeffers](https://togithub.com/MikeJeffers) made their
first contribution in
[https://github.com/fastify/fastify/pull/5136](https://togithub.com/fastify/fastify/pull/5136)
- [@&#8203;john-ko](https://togithub.com/john-ko) made their first
contribution in
[https://github.com/fastify/fastify/pull/5145](https://togithub.com/fastify/fastify/pull/5145)
- [@&#8203;fawazahmed0](https://togithub.com/fawazahmed0) made their
first contribution in
[https://github.com/fastify/fastify/pull/5144](https://togithub.com/fastify/fastify/pull/5144)
- [@&#8203;hanspagel](https://togithub.com/hanspagel) made their first
contribution in
[https://github.com/fastify/fastify/pull/5154](https://togithub.com/fastify/fastify/pull/5154)
- [@&#8203;shadahmad7](https://togithub.com/shadahmad7) made their first
contribution in
[https://github.com/fastify/fastify/pull/5156](https://togithub.com/fastify/fastify/pull/5156)
-
[@&#8203;giovanni-bertoncelli](https://togithub.com/giovanni-bertoncelli)
made their first contribution in
[https://github.com/fastify/fastify/pull/5161](https://togithub.com/fastify/fastify/pull/5161)
- [@&#8203;RjManhas](https://togithub.com/RjManhas) made their first
contribution in
[https://github.com/fastify/fastify/pull/5163](https://togithub.com/fastify/fastify/pull/5163)
- [@&#8203;MunifTanjim](https://togithub.com/MunifTanjim) made their
first contribution in
[https://github.com/fastify/fastify/pull/5155](https://togithub.com/fastify/fastify/pull/5155)
- [@&#8203;bngarren](https://togithub.com/bngarren) made their first
contribution in
[https://github.com/fastify/fastify/pull/5186](https://togithub.com/fastify/fastify/pull/5186)
- [@&#8203;ghostdevv](https://togithub.com/ghostdevv) made their first
contribution in
[https://github.com/fastify/fastify/pull/5168](https://togithub.com/fastify/fastify/pull/5168)
- [@&#8203;itssimon](https://togithub.com/itssimon) made their first
contribution in
[https://github.com/fastify/fastify/pull/5175](https://togithub.com/fastify/fastify/pull/5175)
- [@&#8203;avaly](https://togithub.com/avaly) made their first
contribution in
[https://github.com/fastify/fastify/pull/5179](https://togithub.com/fastify/fastify/pull/5179)
- [@&#8203;fredrikj31](https://togithub.com/fredrikj31) made their first
contribution in
[https://github.com/fastify/fastify/pull/5158](https://togithub.com/fastify/fastify/pull/5158)
- [@&#8203;tarunrajput](https://togithub.com/tarunrajput) made their
first contribution in
[https://github.com/fastify/fastify/pull/5189](https://togithub.com/fastify/fastify/pull/5189)
- [@&#8203;skwee357](https://togithub.com/skwee357) made their first
contribution in
[https://github.com/fastify/fastify/pull/5046](https://togithub.com/fastify/fastify/pull/5046)
- [@&#8203;flodlc](https://togithub.com/flodlc) made their first
contribution in
[https://github.com/fastify/fastify/pull/5132](https://togithub.com/fastify/fastify/pull/5132)
- [@&#8203;nokazn](https://togithub.com/nokazn) made their first
contribution in
[https://github.com/fastify/fastify/pull/5191](https://togithub.com/fastify/fastify/pull/5191)
- [@&#8203;UndefinedBehaviour](https://togithub.com/UndefinedBehaviour)
made their first contribution in
[https://github.com/fastify/fastify/pull/5184](https://togithub.com/fastify/fastify/pull/5184)

**Full Changelog**:
fastify/fastify@v4.24.3...v4.25.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 these
updates 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:eyJjcmVhdGVkSW5WZXIiOiIzNy4xNTMuMiIsInVwZGF0ZWRJblZlciI6IjM3LjE1My4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
jtoar referenced this pull request in redwoodjs/graphql Jan 29, 2024
[![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.24.3` ->
`4.25.2`](https://renovatebot.com/diffs/npm/fastify/4.24.3/4.25.2) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/fastify/4.25.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/fastify/4.25.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/fastify/4.24.3/4.25.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/fastify/4.24.3/4.25.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>fastify/fastify (fastify)</summary>

###
[`v4.25.2`](https://togithub.com/fastify/fastify/releases/tag/v4.25.2)

[Compare
Source](https://togithub.com/fastify/fastify/compare/v4.25.1...v4.25.2)

#### What's Changed

- fix: `npm run test:watch` by
[@&#8203;domdomegg](https://togithub.com/domdomegg) in
[https://github.com/fastify/fastify/pull/5221](https://togithub.com/fastify/fastify/pull/5221)
- fix: always consume stream payloads when responding to 204 with no
body by [@&#8203;mcollina](https://togithub.com/mcollina) in
[https://github.com/fastify/fastify/pull/5231](https://togithub.com/fastify/fastify/pull/5231)
- docs: update setErrorHandler to explain not found behaviour by
[@&#8203;domdomegg](https://togithub.com/domdomegg) in
[https://github.com/fastify/fastify/pull/5218](https://togithub.com/fastify/fastify/pull/5218)

#### New Contributors

- [@&#8203;domdomegg](https://togithub.com/domdomegg) made their first
contribution in
[https://github.com/fastify/fastify/pull/5221](https://togithub.com/fastify/fastify/pull/5221)

**Full Changelog**:
fastify/fastify@v4.25.1...v4.25.2

###
[`v4.25.1`](https://togithub.com/fastify/fastify/releases/tag/v4.25.1)

[Compare
Source](https://togithub.com/fastify/fastify/compare/v4.25.0...v4.25.1)

#### What's Changed

- fix: route constraints by
[@&#8203;climba03003](https://togithub.com/climba03003) in
[https://github.com/fastify/fastify/pull/5207](https://togithub.com/fastify/fastify/pull/5207)
- fix: Better plugin name detection for FSTWRN002 by
[@&#8203;mcollina](https://togithub.com/mcollina) in
[https://github.com/fastify/fastify/pull/5209](https://togithub.com/fastify/fastify/pull/5209)
- chore: at-large project by [@&#8203;Eomm](https://togithub.com/Eomm)
in
[https://github.com/fastify/fastify/pull/5211](https://togithub.com/fastify/fastify/pull/5211)

**Full Changelog**:
fastify/fastify@v4.25.0...v4.25.1

###
[`v4.25.0`](https://togithub.com/fastify/fastify/releases/tag/v4.25.0)

[Compare
Source](https://togithub.com/fastify/fastify/compare/v4.24.3...v4.25.0)

#### What's Changed

- feat: Improve RouteShorthandOptions\['constraints'] type by
[@&#8203;Fcmam5](https://togithub.com/Fcmam5) in
[https://github.com/fastify/fastify/pull/5097](https://togithub.com/fastify/fastify/pull/5097)
- fix: add [@&#8203;eomm](https://togithub.com/eomm) and
[@&#8203;jsumners](https://togithub.com/jsumners) as lead maintainers by
[@&#8203;mcollina](https://togithub.com/mcollina) in
[https://github.com/fastify/fastify/pull/5115](https://togithub.com/fastify/fastify/pull/5115)
- fix: reply.send supports Uint8Array payload by
[@&#8203;SgtPooki](https://togithub.com/SgtPooki) in
[https://github.com/fastify/fastify/pull/5124](https://togithub.com/fastify/fastify/pull/5124)
- refactor: migrate deprecation warnings to actual deprecation warnings
by [@&#8203;jsumners](https://togithub.com/jsumners) in
[https://github.com/fastify/fastify/pull/5126](https://togithub.com/fastify/fastify/pull/5126)
- docs: added documentation about warnings by
[@&#8203;giuliowaitforitdavide](https://togithub.com/giuliowaitforitdavide)
in
[https://github.com/fastify/fastify/pull/5108](https://togithub.com/fastify/fastify/pull/5108)
- test(logger): restrict temp file permissions by
[@&#8203;Fdawgs](https://togithub.com/Fdawgs) in
[https://github.com/fastify/fastify/pull/5128](https://togithub.com/fastify/fastify/pull/5128)
- refactor(lib/hooks): replace `typeof` undefined check by
[@&#8203;Fdawgs](https://togithub.com/Fdawgs) in
[https://github.com/fastify/fastify/pull/5127](https://togithub.com/fastify/fastify/pull/5127)
- chore: replace mention of fastify `.io` domain with `.dev` by
[@&#8203;Fdawgs](https://togithub.com/Fdawgs) in
[https://github.com/fastify/fastify/pull/5129](https://togithub.com/fastify/fastify/pull/5129)
- docs(security): add prose explaining OpenSSF CII Best Practices badge
results by [@&#8203;ljharb](https://togithub.com/ljharb) in
[https://github.com/fastify/fastify/pull/5111](https://togithub.com/fastify/fastify/pull/5111)
- chore: Bump actions/setup-node from 3 to 4 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/fastify/fastify/pull/5134](https://togithub.com/fastify/fastify/pull/5134)
- fix(types): add handler property to routeOptions by
[@&#8203;MikeJeffers](https://togithub.com/MikeJeffers) in
[https://github.com/fastify/fastify/pull/5136](https://togithub.com/fastify/fastify/pull/5136)
- docs(readme): fix ci badge path by
[@&#8203;Fdawgs](https://togithub.com/Fdawgs) in
[https://github.com/fastify/fastify/pull/5138](https://togithub.com/fastify/fastify/pull/5138)
- docs: Fix small typo in Typescript docs by
[@&#8203;john-ko](https://togithub.com/john-ko) in
[https://github.com/fastify/fastify/pull/5145](https://togithub.com/fastify/fastify/pull/5145)
- feat(plugins): mixing async and callback style now returns a warning
by
[@&#8203;giuliowaitforitdavide](https://togithub.com/giuliowaitforitdavide)
in
[https://github.com/fastify/fastify/pull/5139](https://togithub.com/fastify/fastify/pull/5139)
- docs: mention about multipart support by
[@&#8203;fawazahmed0](https://togithub.com/fawazahmed0) in
[https://github.com/fastify/fastify/pull/5144](https://togithub.com/fastify/fastify/pull/5144)
- docs: add [@&#8203;fastify/vite](https://togithub.com/fastify/vite) to
core plugins list by [@&#8203;galvez](https://togithub.com/galvez) in
[https://github.com/fastify/fastify/pull/5153](https://togithub.com/fastify/fastify/pull/5153)
- docs: add
[@&#8203;scalar/fastify-api-reference](https://togithub.com/scalar/fastify-api-reference)
to community plugins list by
[@&#8203;hanspagel](https://togithub.com/hanspagel) in
[https://github.com/fastify/fastify/pull/5154](https://togithub.com/fastify/fastify/pull/5154)
- docs: Remove routeOptions reference in Reply.md by
[@&#8203;shadahmad7](https://togithub.com/shadahmad7) in
[https://github.com/fastify/fastify/pull/5156](https://togithub.com/fastify/fastify/pull/5156)
- docs(ecosystem): add fastify-uws by
[@&#8203;tinchoz49](https://togithub.com/tinchoz49) in
[https://github.com/fastify/fastify/pull/5160](https://togithub.com/fastify/fastify/pull/5160)
- docs: removed unmaintained fastify-nodemailer from ecosystem by
[@&#8203;giovanni-bertoncelli](https://togithub.com/giovanni-bertoncelli)
in
[https://github.com/fastify/fastify/pull/5161](https://togithub.com/fastify/fastify/pull/5161)
- docs: clarify handling of streams and buffers by
[@&#8203;brettwillis](https://togithub.com/brettwillis) in
[https://github.com/fastify/fastify/pull/5166](https://togithub.com/fastify/fastify/pull/5166)
-
docs([#&#8203;5142](https://togithub.com/fastify/fastify/issues/5142)):
aligned errors and warnings documentation by
[@&#8203;giuliowaitforitdavide](https://togithub.com/giuliowaitforitdavide)
in
[https://github.com/fastify/fastify/pull/5162](https://togithub.com/fastify/fastify/pull/5162)
- docs(reference/hooks): add information about prehandler by
[@&#8203;RjManhas](https://togithub.com/RjManhas) in
[https://github.com/fastify/fastify/pull/5163](https://togithub.com/fastify/fastify/pull/5163)
- fix: type FastifyInstance\['route'] and RouteShorthandMethod by
[@&#8203;MunifTanjim](https://togithub.com/MunifTanjim) in
[https://github.com/fastify/fastify/pull/5155](https://togithub.com/fastify/fastify/pull/5155)
- docs (reference): Fix small typo in Request by
[@&#8203;bngarren](https://togithub.com/bngarren) in
[https://github.com/fastify/fastify/pull/5186](https://togithub.com/fastify/fastify/pull/5186)
- chore: gitpodify by
[@&#8203;ghostdevv](https://togithub.com/ghostdevv) in
[https://github.com/fastify/fastify/pull/5168](https://togithub.com/fastify/fastify/pull/5168)
- docs(ecosystem): Add Apitally by
[@&#8203;itssimon](https://togithub.com/itssimon) in
[https://github.com/fastify/fastify/pull/5175](https://togithub.com/fastify/fastify/pull/5175)
- fix: Update reply.context deprecation warning by
[@&#8203;avaly](https://togithub.com/avaly) in
[https://github.com/fastify/fastify/pull/5179](https://togithub.com/fastify/fastify/pull/5179)
- docs(ecosystem): adds @&#8203;blastorg/fastify/aws-dynamodb-cache to
community plugins list by
[@&#8203;fredrikj31](https://togithub.com/fredrikj31) in
[https://github.com/fastify/fastify/pull/5158](https://togithub.com/fastify/fastify/pull/5158)
- docs: update preHandler hook example by
[@&#8203;tarunrajput](https://togithub.com/tarunrajput) in
[https://github.com/fastify/fastify/pull/5189](https://togithub.com/fastify/fastify/pull/5189)
- types: added http header types to reply by
[@&#8203;skwee357](https://togithub.com/skwee357) in
[https://github.com/fastify/fastify/pull/5046](https://togithub.com/fastify/fastify/pull/5046)
- test: add tests for TOC of errors.md by
[@&#8203;Uzlopak](https://togithub.com/Uzlopak) in
[https://github.com/fastify/fastify/pull/5194](https://togithub.com/fastify/fastify/pull/5194)
- ci: pin node 18 to 18.18.2 by
[@&#8203;Uzlopak](https://togithub.com/Uzlopak) in
[https://github.com/fastify/fastify/pull/5197](https://togithub.com/fastify/fastify/pull/5197)
- docs(ecosystem): add http-wizard by
[@&#8203;flodlc](https://togithub.com/flodlc) in
[https://github.com/fastify/fastify/pull/5132](https://togithub.com/fastify/fastify/pull/5132)
- chore: Bump actions/github-script from 6 to 7 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/fastify/fastify/pull/5183](https://togithub.com/fastify/fastify/pull/5183)
- ci: fix broken ci by skipping tests if node v > 18.19.0 by
[@&#8203;Uzlopak](https://togithub.com/Uzlopak) in
[https://github.com/fastify/fastify/pull/5195](https://togithub.com/fastify/fastify/pull/5195)
- fix: allow async hooks in `RouteShorthandOptions` without breaking
`request` and `reply` types by
[@&#8203;bienzaaron](https://togithub.com/bienzaaron) in
[https://github.com/fastify/fastify/pull/5147](https://togithub.com/fastify/fastify/pull/5147)
- fix([#&#8203;5180](https://togithub.com/fastify/fastify/issues/5180)):
close secondary bindings after primary is closed by
[@&#8203;metcoder95](https://togithub.com/metcoder95) in
[https://github.com/fastify/fastify/pull/5201](https://togithub.com/fastify/fastify/pull/5201)
- chore: update process-warning by
[@&#8203;Eomm](https://togithub.com/Eomm) in
[https://github.com/fastify/fastify/pull/5206](https://togithub.com/fastify/fastify/pull/5206)
- types: nullish error types in callback function's parameter for
`after` and `ready` method by
[@&#8203;nokazn](https://togithub.com/nokazn) in
[https://github.com/fastify/fastify/pull/5191](https://togithub.com/fastify/fastify/pull/5191)
- fix([#&#8203;5049](https://togithub.com/fastify/fastify/issues/5049)):
Remove duplicated calls to onReady by
[@&#8203;metcoder95](https://togithub.com/metcoder95) in
[https://github.com/fastify/fastify/pull/5051](https://togithub.com/fastify/fastify/pull/5051)
- chore: remove unused type assertion by
[@&#8203;UndefinedBehaviour](https://togithub.com/UndefinedBehaviour) in
[https://github.com/fastify/fastify/pull/5184](https://togithub.com/fastify/fastify/pull/5184)

#### New Contributors

- [@&#8203;Fcmam5](https://togithub.com/Fcmam5) made their first
contribution in
[https://github.com/fastify/fastify/pull/5097](https://togithub.com/fastify/fastify/pull/5097)
- [@&#8203;SgtPooki](https://togithub.com/SgtPooki) made their first
contribution in
[https://github.com/fastify/fastify/pull/5124](https://togithub.com/fastify/fastify/pull/5124)
- [@&#8203;MikeJeffers](https://togithub.com/MikeJeffers) made their
first contribution in
[https://github.com/fastify/fastify/pull/5136](https://togithub.com/fastify/fastify/pull/5136)
- [@&#8203;john-ko](https://togithub.com/john-ko) made their first
contribution in
[https://github.com/fastify/fastify/pull/5145](https://togithub.com/fastify/fastify/pull/5145)
- [@&#8203;fawazahmed0](https://togithub.com/fawazahmed0) made their
first contribution in
[https://github.com/fastify/fastify/pull/5144](https://togithub.com/fastify/fastify/pull/5144)
- [@&#8203;hanspagel](https://togithub.com/hanspagel) made their first
contribution in
[https://github.com/fastify/fastify/pull/5154](https://togithub.com/fastify/fastify/pull/5154)
- [@&#8203;shadahmad7](https://togithub.com/shadahmad7) made their first
contribution in
[https://github.com/fastify/fastify/pull/5156](https://togithub.com/fastify/fastify/pull/5156)
-
[@&#8203;giovanni-bertoncelli](https://togithub.com/giovanni-bertoncelli)
made their first contribution in
[https://github.com/fastify/fastify/pull/5161](https://togithub.com/fastify/fastify/pull/5161)
- [@&#8203;RjManhas](https://togithub.com/RjManhas) made their first
contribution in
[https://github.com/fastify/fastify/pull/5163](https://togithub.com/fastify/fastify/pull/5163)
- [@&#8203;MunifTanjim](https://togithub.com/MunifTanjim) made their
first contribution in
[https://github.com/fastify/fastify/pull/5155](https://togithub.com/fastify/fastify/pull/5155)
- [@&#8203;bngarren](https://togithub.com/bngarren) made their first
contribution in
[https://github.com/fastify/fastify/pull/5186](https://togithub.com/fastify/fastify/pull/5186)
- [@&#8203;ghostdevv](https://togithub.com/ghostdevv) made their first
contribution in
[https://github.com/fastify/fastify/pull/5168](https://togithub.com/fastify/fastify/pull/5168)
- [@&#8203;itssimon](https://togithub.com/itssimon) made their first
contribution in
[https://github.com/fastify/fastify/pull/5175](https://togithub.com/fastify/fastify/pull/5175)
- [@&#8203;avaly](https://togithub.com/avaly) made their first
contribution in
[https://github.com/fastify/fastify/pull/5179](https://togithub.com/fastify/fastify/pull/5179)
- [@&#8203;fredrikj31](https://togithub.com/fredrikj31) made their first
contribution in
[https://github.com/fastify/fastify/pull/5158](https://togithub.com/fastify/fastify/pull/5158)
- [@&#8203;tarunrajput](https://togithub.com/tarunrajput) made their
first contribution in
[https://github.com/fastify/fastify/pull/5189](https://togithub.com/fastify/fastify/pull/5189)
- [@&#8203;skwee357](https://togithub.com/skwee357) made their first
contribution in
[https://github.com/fastify/fastify/pull/5046](https://togithub.com/fastify/fastify/pull/5046)
- [@&#8203;flodlc](https://togithub.com/flodlc) made their first
contribution in
[https://github.com/fastify/fastify/pull/5132](https://togithub.com/fastify/fastify/pull/5132)
- [@&#8203;nokazn](https://togithub.com/nokazn) made their first
contribution in
[https://github.com/fastify/fastify/pull/5191](https://togithub.com/fastify/fastify/pull/5191)
- [@&#8203;UndefinedBehaviour](https://togithub.com/UndefinedBehaviour)
made their first contribution in
[https://github.com/fastify/fastify/pull/5184](https://togithub.com/fastify/fastify/pull/5184)

**Full Changelog**:
fastify/fastify@v4.24.3...v4.25.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 these
updates 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:eyJjcmVhdGVkSW5WZXIiOiIzNy4xNTMuMiIsInVwZGF0ZWRJblZlciI6IjM3LjE1My4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
@github-actions
Copy link

This pull request has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Dec 14, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

onReady might be executed twice

4 participants