Skip to content
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(fetch): send headers in the case that they were sent #1784

Merged
merged 2 commits into from Nov 29, 2022

Conversation

KhafraDev
Copy link
Member

This fixes an outstanding issue in fetch where header names were treated as case insensitive, always being sent to the server as lowercase. It's been on my radar for a while, but I could never find a decent approach to fixing it. Hopefully this solution doesn't sacrifice a ton of performance as it simply replaces the lowercase_key ⇔ value HeadersList structure with a lowercase_key ⇔ { key, value } one.

@KhafraDev KhafraDev changed the title fix(fetch): treat headers as case sensitive fix(fetch): treat header names as case sensitive Nov 25, 2022
@codecov-commenter
Copy link

codecov-commenter commented Nov 25, 2022

Codecov Report

Base: 90.24% // Head: 90.27% // Increases project coverage by +0.02% 🎉

Coverage data is based on head (0eea0c9) compared to base (f38fbdc).
Patch coverage: 100.00% of modified lines in pull request are covered.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1784      +/-   ##
==========================================
+ Coverage   90.24%   90.27%   +0.02%     
==========================================
  Files          58       58              
  Lines        5179     5183       +4     
==========================================
+ Hits         4674     4679       +5     
+ Misses        505      504       -1     
Impacted Files Coverage Δ
lib/fetch/symbols.js 100.00% <ø> (ø)
lib/fetch/headers.js 98.46% <100.00%> (+0.04%) ⬆️
lib/fetch/index.js 83.51% <100.00%> (ø)
lib/fetch/file.js 90.80% <0.00%> (+1.14%) ⬆️

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

☔ View full report at Codecov.
📢 Do you have feedback about the report comment? Let us know in this issue.

@mcollina
Copy link
Member

This is not an issue. Headers are case insensitive by the HTTP specs. Lowercasing all of them makes processing faster.

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'm -1 with this change

@ronag
Copy link
Member

ronag commented Nov 25, 2022

Unless the fetch spec says otherwise, I agree with @mcollina. What does Chrome or Deno do?

@mcollina
Copy link
Member

RFC2516, 4.2:

HTTP header fields, which include general-header (section 4.5),
request-header (section 5.3), response-header (section 6.2), and
entity-header (section 7.1) fields, follow the same generic format as
that given in Section 3.1 of RFC 822 [9]. Each header field consists
of a name followed by a colon (":") and the field value. Field names
are case-insensitive.
...

@silverwind
Copy link
Contributor

silverwind commented Nov 25, 2022

Woudn't it be faster if .toLowerCase is not performed at all?

Generally, I'd lean towards what other implementations do, either let headers through with unmodified case (favoring the sender performance) or lowercase (favoring the receiver performance).

@KhafraDev
Copy link
Member Author

KhafraDev commented Nov 25, 2022

@mcollina there's a WPT for this that all browsers pass, and deno fails - https://wpt.fyi/results/fetch/api/basic/request-headers-case.any.html?label=master&label=experimental&product=chrome&product=edge&product=firefox&product=safari&product=deno&aligned&view=subtest

This also works correctly when using undici.request.


Woudn't it be faster if .toLowerCase is not performed at all?

No, since multiple headers can be sent with different casings, we need to lowercase it so that we can do quick lookups. Otherwise we'd have an implementation that was very slow.

Moving the HeadersList structure to an array is a change that I would never do because a map destroys an array in every performance comparison I tried. It's the sole reason that undici's Headers implementation is magnitudes faster than Deno's.

@mcollina
Copy link
Member

I can't find a link to that test source. Can you add it?


My -1 remain.

lowercasing all headers is one of the reasons undici.request is faster than node http.request.

This change will slow us down further and our performance is already subpar.

Finally, there is absolutely no reason to do this as the current behavior is in line with the HTTP spec, and ultimately the servers needs to understand HTTP, not the fetch() WPT.

@KhafraDev
Copy link
Member Author

KhafraDev commented Nov 26, 2022

The test exists at https://github.com/web-platform-tests/wpt/blob/master/fetch/api/basic/request-headers-case.any.js and I added it in this PR (the wpt.fyi site doesn't correctly link to the github repo unfortunately).

Regarding undici.request, it doesn't lowercase headers automatically, here's a small repro using node's http server & undici.request:

import { once } from 'events'
import { createServer } from 'http'
import { request } from './index.js'

const server = createServer((req, res) => {
  console.log(req.rawHeaders)
  res.end()
}).listen(0)

await once(server, 'listening')

await request(`http://localhost:${server.address().port}`, {
  headers: {
    'ABC-def': 'value'
  }
}).finally(() => server.close())

Where it outputs

[
  'host',
  'localhost:51291',
  'connection',
  'keep-alive',
  'ABC-def',
  'value'
]

@KhafraDev
Copy link
Member Author

KhafraDev commented Nov 26, 2022

Field names are case-insensitive

For this, the RFC doesn't say that headers should lowercase - just that ABC is the same as abc (which is still the behavior in this PR). The only difference is that we don't send the lowercased header to the server anymore, but the first one the user sent. To explain it more, if someone did headers.append('A', 'b') and headers.append('a', 'b'), the server will receive A: 'b, b'.

edit: The title of this PR was/is misleading because I can't figure out a good way of wording it. Sorry if it caused any confusion.

@KhafraDev KhafraDev changed the title fix(fetch): treat header names as case sensitive fix(fetch): send headers in the case that they were sent Nov 26, 2022
@mcollina
Copy link
Member

This kind of processing of Headers is one of the bottlenecks of OutgoingMessage. Let's not repeat the same mistakes.
Given this is cosmetic, let's not do this.

@ronag
Copy link
Member

ronag commented Nov 27, 2022

I'm +- 0. When it comes to fetch I personally care more about spec than perf.

@KhafraDev
Copy link
Member Author

This kind of processing of Headers is one of the bottlenecks of OutgoingMessage.

Would you be willing to explain this further? Undici doesn't send lowercase headers to the server, but sends them in the case that they are set (other than fetch currently). This PR matches that behavior, where we send headers as we receive them. See the undici.request example above.

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, I do not have much time to object to this change and explain why it's not a great idea.

@ronag ronag merged commit 232905f into nodejs:main Nov 29, 2022
@KhafraDev KhafraDev deleted the headerslist-fix-casing branch November 29, 2022 14:37
louis-bompart pushed a commit to coveo/cli that referenced this pull request Dec 14, 2022
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence | Type |
Update |
|---|---|---|---|---|---|---|---|
| [@coveo/platform-client](https://togithub.com/coveo/platform-client) |
[`37.12.0` ->
`37.13.0`](https://renovatebot.com/diffs/npm/@coveo%2fplatform-client/37.12.0/37.13.0)
|
[![age](https://badges.renovateapi.com/packages/npm/@coveo%2fplatform-client/37.13.0/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/npm/@coveo%2fplatform-client/37.13.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/npm/@coveo%2fplatform-client/37.13.0/compatibility-slim/37.12.0)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/npm/@coveo%2fplatform-client/37.13.0/confidence-slim/37.12.0)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | minor |
| [@coveo/platform-client](https://togithub.com/coveo/platform-client) |
[`37.12.0` ->
`37.13.0`](https://renovatebot.com/diffs/npm/@coveo%2fplatform-client/37.12.0/37.13.0)
|
[![age](https://badges.renovateapi.com/packages/npm/@coveo%2fplatform-client/37.13.0/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/npm/@coveo%2fplatform-client/37.13.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/npm/@coveo%2fplatform-client/37.13.0/compatibility-slim/37.12.0)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/npm/@coveo%2fplatform-client/37.13.0/confidence-slim/37.12.0)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | minor |
|
[@coveo/semantic-monorepo-tools](https://togithub.com/coveo/semantic-monorepo-tools)
| [`1.5.8` ->
`1.5.10`](https://renovatebot.com/diffs/npm/@coveo%2fsemantic-monorepo-tools/1.5.8/1.5.10)
|
[![age](https://badges.renovateapi.com/packages/npm/@coveo%2fsemantic-monorepo-tools/1.5.10/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/npm/@coveo%2fsemantic-monorepo-tools/1.5.10/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/npm/@coveo%2fsemantic-monorepo-tools/1.5.10/compatibility-slim/1.5.8)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/npm/@coveo%2fsemantic-monorepo-tools/1.5.10/confidence-slim/1.5.8)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | patch |
| [@mui/material](https://mui.com/material-ui/getting-started/overview/)
([source](https://togithub.com/mui/material-ui)) | [`5.10.17` ->
`5.11.0`](https://renovatebot.com/diffs/npm/@mui%2fmaterial/5.10.17/5.11.0)
|
[![age](https://badges.renovateapi.com/packages/npm/@mui%2fmaterial/5.11.0/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/npm/@mui%2fmaterial/5.11.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/npm/@mui%2fmaterial/5.11.0/compatibility-slim/5.10.17)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/npm/@mui%2fmaterial/5.11.0/confidence-slim/5.10.17)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | minor |
| [@npmcli/arborist](https://togithub.com/npm/cli) | [`6.1.4` ->
`6.1.5`](https://renovatebot.com/diffs/npm/@npmcli%2farborist/6.1.4/6.1.5)
|
[![age](https://badges.renovateapi.com/packages/npm/@npmcli%2farborist/6.1.5/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/npm/@npmcli%2farborist/6.1.5/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/npm/@npmcli%2farborist/6.1.5/compatibility-slim/6.1.4)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/npm/@npmcli%2farborist/6.1.5/confidence-slim/6.1.4)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | patch |
|
[@types/node](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node)
([source](https://togithub.com/DefinitelyTyped/DefinitelyTyped)) |
[`18.11.11` ->
`18.11.14`](https://renovatebot.com/diffs/npm/@types%2fnode/18.11.11/18.11.14)
|
[![age](https://badges.renovateapi.com/packages/npm/@types%2fnode/18.11.14/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/npm/@types%2fnode/18.11.14/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/npm/@types%2fnode/18.11.14/compatibility-slim/18.11.11)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/npm/@types%2fnode/18.11.14/confidence-slim/18.11.11)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | patch |
|
[@typescript-eslint/eslint-plugin](https://togithub.com/typescript-eslint/typescript-eslint)
| [`5.45.1` ->
`5.46.1`](https://renovatebot.com/diffs/npm/@typescript-eslint%2feslint-plugin/5.45.1/5.46.1)
|
[![age](https://badges.renovateapi.com/packages/npm/@typescript-eslint%2feslint-plugin/5.46.1/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/npm/@typescript-eslint%2feslint-plugin/5.46.1/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/npm/@typescript-eslint%2feslint-plugin/5.46.1/compatibility-slim/5.45.1)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/npm/@typescript-eslint%2feslint-plugin/5.46.1/confidence-slim/5.45.1)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | minor |
|
[@typescript-eslint/parser](https://togithub.com/typescript-eslint/typescript-eslint)
| [`5.45.1` ->
`5.46.1`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fparser/5.45.1/5.46.1)
|
[![age](https://badges.renovateapi.com/packages/npm/@typescript-eslint%2fparser/5.46.1/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/npm/@typescript-eslint%2fparser/5.46.1/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/npm/@typescript-eslint%2fparser/5.46.1/compatibility-slim/5.45.1)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/npm/@typescript-eslint%2fparser/5.46.1/confidence-slim/5.45.1)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | minor |
| [actions/checkout](https://togithub.com/actions/checkout) | `93ea575`
-> `755da8c` |
[![age](https://badges.renovateapi.com/packages/github-tags/actions%2fcheckout//age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/github-tags/actions%2fcheckout//adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/github-tags/actions%2fcheckout//compatibility-slim/v3)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/github-tags/actions%2fcheckout//confidence-slim/v3)](https://docs.renovatebot.com/merge-confidence/)
| action | digest |
| [actions/setup-python](https://togithub.com/actions/setup-python) |
`13ae5bb` -> `2c3dd9e` |
[![age](https://badges.renovateapi.com/packages/github-tags/actions%2fsetup-python//age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/github-tags/actions%2fsetup-python//adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/github-tags/actions%2fsetup-python//compatibility-slim/v4)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/github-tags/actions%2fsetup-python//confidence-slim/v4)](https://docs.renovatebot.com/merge-confidence/)
| action | digest |
| [aws-sdk](https://togithub.com/aws/aws-sdk-js) | [`2.1269.0` ->
`2.1274.0`](https://renovatebot.com/diffs/npm/aws-sdk/2.1269.0/2.1274.0)
|
[![age](https://badges.renovateapi.com/packages/npm/aws-sdk/2.1274.0/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/npm/aws-sdk/2.1274.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/npm/aws-sdk/2.1274.0/compatibility-slim/2.1269.0)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/npm/aws-sdk/2.1274.0/confidence-slim/2.1269.0)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | minor |
|
[devtools-protocol](https://togithub.com/ChromeDevTools/devtools-protocol)
| [`0.0.1079624` ->
`0.0.1082281`](https://renovatebot.com/diffs/npm/devtools-protocol/0.0.1079624/0.0.1082281)
|
[![age](https://badges.renovateapi.com/packages/npm/devtools-protocol/0.0.1082281/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/npm/devtools-protocol/0.0.1082281/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/npm/devtools-protocol/0.0.1082281/compatibility-slim/0.0.1079624)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/npm/devtools-protocol/0.0.1082281/confidence-slim/0.0.1079624)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | patch |
| [github/codeql-action](https://togithub.com/github/codeql-action) |
`b2a92eb` -> `a669cc5` |
[![age](https://badges.renovateapi.com/packages/github-tags/github%2fcodeql-action//age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/github-tags/github%2fcodeql-action//adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/github-tags/github%2fcodeql-action//compatibility-slim/v2)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/github-tags/github%2fcodeql-action//confidence-slim/v2)](https://docs.renovatebot.com/merge-confidence/)
| action | digest |
| [pacote](https://togithub.com/npm/pacote) | [`15.0.6` ->
`15.0.7`](https://renovatebot.com/diffs/npm/pacote/15.0.6/15.0.7) |
[![age](https://badges.renovateapi.com/packages/npm/pacote/15.0.7/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/npm/pacote/15.0.7/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/npm/pacote/15.0.7/compatibility-slim/15.0.6)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/npm/pacote/15.0.7/confidence-slim/15.0.6)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | patch |
| [prettier](https://prettier.io)
([source](https://togithub.com/prettier/prettier)) | [`2.8.0` ->
`2.8.1`](https://renovatebot.com/diffs/npm/prettier/2.8.0/2.8.1) |
[![age](https://badges.renovateapi.com/packages/npm/prettier/2.8.1/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/npm/prettier/2.8.1/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/npm/prettier/2.8.1/compatibility-slim/2.8.0)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/npm/prettier/2.8.1/confidence-slim/2.8.0)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | patch |
| [puppeteer](https://togithub.com/puppeteer/puppeteer/tree/main#readme)
([source](https://togithub.com/puppeteer/puppeteer)) | [`19.3.0` ->
`19.4.0`](https://renovatebot.com/diffs/npm/puppeteer/19.3.0/19.4.0) |
[![age](https://badges.renovateapi.com/packages/npm/puppeteer/19.4.0/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/npm/puppeteer/19.4.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/npm/puppeteer/19.4.0/compatibility-slim/19.3.0)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/npm/puppeteer/19.4.0/confidence-slim/19.3.0)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | minor |
| [react-router-dom](https://togithub.com/remix-run/react-router) |
[`6.4.4` ->
`6.4.5`](https://renovatebot.com/diffs/npm/react-router-dom/6.4.4/6.4.5)
|
[![age](https://badges.renovateapi.com/packages/npm/react-router-dom/6.4.5/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/npm/react-router-dom/6.4.5/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/npm/react-router-dom/6.4.5/compatibility-slim/6.4.4)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/npm/react-router-dom/6.4.5/confidence-slim/6.4.4)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | patch |
| [supertest](https://togithub.com/visionmedia/supertest) | [`6.3.2` ->
`6.3.3`](https://renovatebot.com/diffs/npm/supertest/6.3.2/6.3.3) |
[![age](https://badges.renovateapi.com/packages/npm/supertest/6.3.3/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/npm/supertest/6.3.3/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/npm/supertest/6.3.3/compatibility-slim/6.3.2)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/npm/supertest/6.3.3/confidence-slim/6.3.2)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | patch |
| [typescript](https://www.typescriptlang.org/)
([source](https://togithub.com/Microsoft/TypeScript)) | [`4.9.3` ->
`4.9.4`](https://renovatebot.com/diffs/npm/typescript/4.9.3/4.9.4) |
[![age](https://badges.renovateapi.com/packages/npm/typescript/4.9.4/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/npm/typescript/4.9.4/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/npm/typescript/4.9.4/compatibility-slim/4.9.3)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/npm/typescript/4.9.4/confidence-slim/4.9.3)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | patch |
| [typescript](https://www.typescriptlang.org/)
([source](https://togithub.com/Microsoft/TypeScript)) | [`4.9.3` ->
`4.9.4`](https://renovatebot.com/diffs/npm/typescript/4.9.3/4.9.4) |
[![age](https://badges.renovateapi.com/packages/npm/typescript/4.9.4/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/npm/typescript/4.9.4/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/npm/typescript/4.9.4/compatibility-slim/4.9.3)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/npm/typescript/4.9.4/confidence-slim/4.9.3)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | patch |
| [undici](https://undici.nodejs.org)
([source](https://togithub.com/nodejs/undici)) | [`5.13.0` ->
`5.14.0`](https://renovatebot.com/diffs/npm/undici/5.13.0/5.14.0) |
[![age](https://badges.renovateapi.com/packages/npm/undici/5.14.0/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/npm/undici/5.14.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/npm/undici/5.14.0/compatibility-slim/5.13.0)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/npm/undici/5.14.0/confidence-slim/5.13.0)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | minor |

---

### Release Notes

<details>
<summary>coveo/platform-client</summary>

###
[`v37.13.0`](https://togithub.com/coveo/platform-client/releases/tag/v37.13.0)

[Compare
Source](https://togithub.com/coveo/platform-client/compare/v37.12.0...v37.13.0)

##### Features

- **maestro:** support empty crawling module log requests
([#&#8203;588](https://togithub.com/coveo/platform-client/issues/588))
([67b8a93](https://togithub.com/coveo/platform-client/commit/67b8a93ab6152439de33bdcdcec6e4cb041c0295))

</details>

<details>
<summary>coveo/semantic-monorepo-tools</summary>

###
[`v1.5.10`](https://togithub.com/coveo/semantic-monorepo-tools/blob/HEAD/CHANGELOG.md#&#8203;1510-2022-12-12)

[Compare
Source](https://togithub.com/coveo/semantic-monorepo-tools/compare/v1.5.9...v1.5.10)

###
[`v1.5.9`](https://togithub.com/coveo/semantic-monorepo-tools/blob/HEAD/CHANGELOG.md#&#8203;159-2022-12-12)

[Compare
Source](https://togithub.com/coveo/semantic-monorepo-tools/compare/v1.5.8...v1.5.9)

</details>

<details>
<summary>mui/material-ui</summary>

###
[`v5.11.0`](https://togithub.com/mui/material-ui/blob/HEAD/CHANGELOG.md#&#8203;5110)

[Compare
Source](https://togithub.com/mui/material-ui/compare/v5.10.17...v5.11.0)

<!-- generated comparing v5.10.17..master -->

*Dec 13, 2022*

A big thanks to the 19 contributors who made this release possible. Here
are some highlights ✨:

- 🔥 [@&#8203;mnajdova](https://togithub.com/mnajdova) enabled
configuration of the `sx` prop in the `theme`
([#&#8203;35150](https://togithub.com/mui/material-ui/issues/35150))
- Many other 🐛 bug fixes, 📚 documentation, and ⚙️ infrastructure
improvements.

##### `@mui/material@5.11.0`

- \[Alert] Update icon color in all variants
([#&#8203;35414](https://togithub.com/mui/material-ui/issues/35414))
[@&#8203;danilo-leal](https://togithub.com/danilo-leal)
- \[Select] Fix `MenuProps.PopoverClasses` being overriden
([#&#8203;35394](https://togithub.com/mui/material-ui/issues/35394))
[@&#8203;vitorfrs-dev](https://togithub.com/vitorfrs-dev)
- \[SwipeableDrawer] Fixed typescript warning "prop open undefined"
([#&#8203;34710](https://togithub.com/mui/material-ui/issues/34710))
[@&#8203;kraftware](https://togithub.com/kraftware)

##### `@mui/icons-material@5.11.0`

- \[icons] Restore the PhoneInTalk icons
([#&#8203;35409](https://togithub.com/mui/material-ui/issues/35409))
[@&#8203;michaldudak](https://togithub.com/michaldudak)

##### `@mui/system@5.11.0`

##### BREAKING CHANGES

- \[system] Enable configuring the `sx` prop in the `theme`
([#&#8203;35150](https://togithub.com/mui/material-ui/issues/35150))
[@&#8203;mnajdova](https://togithub.com/mnajdova)

    The breaking change is regarding an experimental API:

    ```diff
-import { styled, experimental_sx } from '@&#8203;mui/material/styles';
    +import { styled } from '@&#8203;mui/material/styles';

    -const Component = styled('div)(experimental_sx({ p: 1 }});
+const Component = styled('div)(({ theme }) => theme.unstable_sx({ p: 1
}});
    ```

##### `@mui/joy@5.0.0-alpha.58`

- \[Joy] Miscellaneous fixes
([#&#8203;35447](https://togithub.com/mui/material-ui/issues/35447))
[@&#8203;siriwatknp](https://togithub.com/siriwatknp)

##### `@mui/base@5.0.0-alpha.110`

- \[PopperUnstyled] Update PopperTooltip to have correct width when
closing with transition
([#&#8203;34714](https://togithub.com/mui/material-ui/issues/34714))
[@&#8203;EduardoSCosta](https://togithub.com/EduardoSCosta)

##### `@mui/material-next@6.0.0-alpha.66`

- \[Material You] Add ripple on the button
([#&#8203;35299](https://togithub.com/mui/material-ui/issues/35299))
[@&#8203;mnajdova](https://togithub.com/mnajdova)

##### Docs

- \[docs] Simplify state management in Text Field demo page
([#&#8203;35051](https://togithub.com/mui/material-ui/issues/35051))
[@&#8203;PratikDev](https://togithub.com/PratikDev)
- \[docs] Improve `Responsive App bar with Drawer` demo
([#&#8203;35418](https://togithub.com/mui/material-ui/issues/35418))
[@&#8203;ZeeshanTamboli](https://togithub.com/ZeeshanTamboli)
- \[docs] Improve line-height readability
([#&#8203;35387](https://togithub.com/mui/material-ui/issues/35387))
[@&#8203;oliviertassinari](https://togithub.com/oliviertassinari)
- \[docs] Improve a bit the Composition docs
([#&#8203;35329](https://togithub.com/mui/material-ui/issues/35329))
[@&#8203;oliviertassinari](https://togithub.com/oliviertassinari)
- \[docs] Refactor `ToggleButtonSizes` demo
([#&#8203;35375](https://togithub.com/mui/material-ui/issues/35375))
[@&#8203;Armanio](https://togithub.com/Armanio)
- \[docs] Standardize the usage of callouts in the MUI Core docs
([#&#8203;35361](https://togithub.com/mui/material-ui/issues/35361))
[@&#8203;samuelsycamore](https://togithub.com/samuelsycamore)
- \[docs] Format feedback to add a link to the commented section
([#&#8203;35381](https://togithub.com/mui/material-ui/issues/35381))
[@&#8203;alexfauquette](https://togithub.com/alexfauquette)
- \[docs] Direct users from Material UI to MUI Base for duplicated
components
([#&#8203;35293](https://togithub.com/mui/material-ui/issues/35293))
[@&#8203;samuelsycamore](https://togithub.com/samuelsycamore)
- \[docs] Fix typo in FormControl API docs
([#&#8203;35449](https://togithub.com/mui/material-ui/issues/35449))
[@&#8203;Spanishiwa](https://togithub.com/Spanishiwa)
- \[docs] Update callouts design
([#&#8203;35390](https://togithub.com/mui/material-ui/issues/35390))
[@&#8203;danilo-leal](https://togithub.com/danilo-leal)
- \[website] New wave of open roles
([#&#8203;35240](https://togithub.com/mui/material-ui/issues/35240))
[@&#8203;mnajdova](https://togithub.com/mnajdova)
- \[website] Developer survey 2022
([#&#8203;35407](https://togithub.com/mui/material-ui/issues/35407))
[@&#8203;joserodolfofreitas](https://togithub.com/joserodolfofreitas)

##### Core

- \[core] Fix [@&#8203;mui/material](https://togithub.com/mui/material)
package building
([#&#8203;35324](https://togithub.com/mui/material-ui/issues/35324))
[@&#8203;timbset](https://togithub.com/timbset)
- \[core] Fix leaking theme color override
([#&#8203;35444](https://togithub.com/mui/material-ui/issues/35444))
[@&#8203;oliviertassinari](https://togithub.com/oliviertassinari)
- \[typescript] Add null to return type of OverridableComponent
([#&#8203;35311](https://togithub.com/mui/material-ui/issues/35311))
[@&#8203;tsollbach](https://togithub.com/tsollbach)
- \[website] Migrate X page to use CSS theme variables
([#&#8203;34922](https://togithub.com/mui/material-ui/issues/34922))
[@&#8203;jesrodri](https://togithub.com/jesrodri)
- \[website] Migrate `/core` page to use CSS variables
([#&#8203;35366](https://togithub.com/mui/material-ui/issues/35366))
[@&#8203;siriwatknp](https://togithub.com/siriwatknp)

All contributors of this release in alphabetical order:
[@&#8203;alexfauquette](https://togithub.com/alexfauquette),
[@&#8203;Armanio](https://togithub.com/Armanio),
[@&#8203;danilo-leal](https://togithub.com/danilo-leal),
[@&#8203;EduardoSCosta](https://togithub.com/EduardoSCosta),
[@&#8203;flaviendelangle](https://togithub.com/flaviendelangle),
[@&#8203;jesrodri](https://togithub.com/jesrodri),
[@&#8203;joserodolfofreitas](https://togithub.com/joserodolfofreitas),
[@&#8203;kraftware](https://togithub.com/kraftware),
[@&#8203;michaldudak](https://togithub.com/michaldudak),
[@&#8203;mnajdova](https://togithub.com/mnajdova),
[@&#8203;oliviertassinari](https://togithub.com/oliviertassinari),
[@&#8203;PratikDev](https://togithub.com/PratikDev),
[@&#8203;samuelsycamore](https://togithub.com/samuelsycamore),
[@&#8203;siriwatknp](https://togithub.com/siriwatknp),
[@&#8203;Spanishiwa](https://togithub.com/Spanishiwa),
[@&#8203;timbset](https://togithub.com/timbset),
[@&#8203;tsollbach](https://togithub.com/tsollbach),
[@&#8203;vitorfrs-dev](https://togithub.com/vitorfrs-dev),
[@&#8203;ZeeshanTamboli](https://togithub.com/ZeeshanTamboli)

</details>

<details>
<summary>npm/cli</summary>

###
[`v6.1.5`](https://togithub.com/npm/cli/blob/HEAD/workspaces/arborist/CHANGELOG.md#&#8203;615-httpsgithubcomnpmclicomparearborist-v614arborist-v615-2022-12-07)

[Compare
Source](https://togithub.com/npm/cli/compare/baf598d94cd6fa0747445009f5d4f66a981ebd03...1ceed7b6a762214904ff4a4a08e364153fd1e1dc)

##### Bug Fixes

-
[`83fb125`](https://togithub.com/npm/cli/commit/83fb125446a9fb217eedf53ca98c203d7d48527b)
[#&#8203;5923](https://togithub.com/npm/cli/pull/5923) audit package
mismatch in special case ([@&#8203;fritzy](https://togithub.com/fritzy))

##### Dependencies

-
[`372d158`](https://togithub.com/npm/cli/commit/372d158d2637120600a95abee64355ed1cb6f990)
[#&#8203;5935](https://togithub.com/npm/cli/pull/5935) `minimatch@5.1.1`
([#&#8203;5935](https://togithub.com/npm/cli/issues/5935))
-
[`0a3fe00`](https://togithub.com/npm/cli/commit/0a3fe000e2723ae6fdb8b1d3154fd3835057c992)
[#&#8203;5933](https://togithub.com/npm/cli/pull/5933) `minipass@4.0.0`
-
[`cf0a174`](https://togithub.com/npm/cli/commit/cf0a17407abc577c27420a1c8a4a0c08c7cefce9)
`ssri@10.0.1`
-
[`3da9a1a`](https://togithub.com/npm/cli/commit/3da9a1a4ebcf1779035b5f9ae985c087f617efe3)
`pacote@15.0.7`
-
[`fee9b66`](https://togithub.com/npm/cli/commit/fee9b6686892a1c7f976c36ddd5d89b70c416817)
`npm-registry-fetch@14.0.3`
-
[`e940917`](https://togithub.com/npm/cli/commit/e940917befcdaf44ee7e24d31b540f4de8507734)
`cacache@17.0.3`
-
[`875bd56`](https://togithub.com/npm/cli/commit/875bd56c33ca5eef80c2a50a11808445f2a39a2a)
`npm-package-arg@10.1.0`

</details>

<details>
<summary>typescript-eslint/typescript-eslint
(@&#8203;typescript-eslint/eslint-plugin)</summary>

###
[`v5.46.1`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#&#8203;5461-httpsgithubcomtypescript-eslinttypescript-eslintcomparev5460v5461-2022-12-12)

[Compare
Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v5.46.0...v5.46.1)

**Note:** Version bump only for package
[@&#8203;typescript-eslint/eslint-plugin](https://togithub.com/typescript-eslint/eslint-plugin)

###
[`v5.46.0`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#&#8203;5460-httpsgithubcomtypescript-eslinttypescript-eslintcomparev5451v5460-2022-12-08)

[Compare
Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v5.45.1...v5.46.0)

##### Bug Fixes

- **eslint-plugin:** \[ban-types] update message to suggest `object`
instead of `Record<string, unknown>`
([#&#8203;6079](https://togithub.com/typescript-eslint/typescript-eslint/issues/6079))
([d91a5fc](https://togithub.com/typescript-eslint/typescript-eslint/commit/d91a5fc41be5bc2a0625574e9c9496f61fb7471d))

##### Features

- **eslint-plugin:** \[prefer-nullish-coalescing] logic and test for
strict null checks
([#&#8203;6174](https://togithub.com/typescript-eslint/typescript-eslint/issues/6174))
([8a91cbd](https://togithub.com/typescript-eslint/typescript-eslint/commit/8a91cbd9fbe5bc4cf750cd949d2b8d48ff4c311d))

####
[5.45.1](https://togithub.com/typescript-eslint/typescript-eslint/compare/v5.45.0...v5.45.1)
(2022-12-05)

##### Bug Fixes

- **eslint-plugin:** \[keyword-spacing] unexpected space before/after in
`import type`
([#&#8203;6095](https://togithub.com/typescript-eslint/typescript-eslint/issues/6095))
([98caa92](https://togithub.com/typescript-eslint/typescript-eslint/commit/98caa92ca89bdf0ca6ba6e4ff1f13c60221579e8))
- **eslint-plugin:** \[no-shadow] add call and method signatures to
`ignoreFunctionTypeParameterNameValueShadow`
([#&#8203;6129](https://togithub.com/typescript-eslint/typescript-eslint/issues/6129))
([9d58b6b](https://togithub.com/typescript-eslint/typescript-eslint/commit/9d58b6be246507d20af67c84a5e9bb592d97cff5))
- **eslint-plugin:** \[prefer-optional-chain] collect MetaProperty type
([#&#8203;6083](https://togithub.com/typescript-eslint/typescript-eslint/issues/6083))
([d7114d3](https://togithub.com/typescript-eslint/typescript-eslint/commit/d7114d3ab09d1b93627d3b3dbb9862e37ee29c97))
- **eslint-plugin:** \[sort-type-constituents,
sort-type-union-intersection-members] handle some required parentheses
cases in the fixer
([#&#8203;6118](https://togithub.com/typescript-eslint/typescript-eslint/issues/6118))
([5d49d5d](https://togithub.com/typescript-eslint/typescript-eslint/commit/5d49d5dbee4425fc8bc01c5e748d161f3619477b))

</details>

<details>
<summary>typescript-eslint/typescript-eslint
(@&#8203;typescript-eslint/parser)</summary>

###
[`v5.46.1`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#&#8203;5461-httpsgithubcomtypescript-eslinttypescript-eslintcomparev5460v5461-2022-12-12)

[Compare
Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v5.46.0...v5.46.1)

**Note:** Version bump only for package
[@&#8203;typescript-eslint/parser](https://togithub.com/typescript-eslint/parser)

###
[`v5.46.0`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#&#8203;5460-httpsgithubcomtypescript-eslinttypescript-eslintcomparev5451v5460-2022-12-08)

[Compare
Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v5.45.1...v5.46.0)

**Note:** Version bump only for package
[@&#8203;typescript-eslint/parser](https://togithub.com/typescript-eslint/parser)

####
[5.45.1](https://togithub.com/typescript-eslint/typescript-eslint/compare/v5.45.0...v5.45.1)
(2022-12-05)

##### Bug Fixes

- **parser:** remove the jsx option requirement for automatic jsx pragma
resolution
([#&#8203;6134](https://togithub.com/typescript-eslint/typescript-eslint/issues/6134))
([e777f5e](https://togithub.com/typescript-eslint/typescript-eslint/commit/e777f5e225b9ddfb6bb1eaa74cbc5171a17ac017))

</details>

<details>
<summary>aws/aws-sdk-js</summary>

###
[`v2.1274.0`](https://togithub.com/aws/aws-sdk-js/blob/HEAD/CHANGELOG.md#&#8203;212740)

[Compare
Source](https://togithub.com/aws/aws-sdk-js/compare/v2.1273.0...v2.1274.0)

- feature: CloudTrail: Merging mainline branch for service model into
mainline release branch. There are no new APIs.
- feature: RDS: This deployment adds ClientPasswordAuthType field to the
Auth structure of the DBProxy.

###
[`v2.1273.0`](https://togithub.com/aws/aws-sdk-js/blob/HEAD/CHANGELOG.md#&#8203;212730)

[Compare
Source](https://togithub.com/aws/aws-sdk-js/compare/v2.1272.0...v2.1273.0)

- feature: CustomerProfiles: This release allows custom strings in
PartyType and Gender through 2 new attributes in the CreateProfile and
UpdateProfile APIs: PartyTypeString and GenderString.
- feature: EC2: This release updates DescribeFpgaImages to show
supported instance types of AFIs in its response.
- feature: KinesisVideo: This release adds support for public preview of
Kinesis Video Stream at Edge enabling customers to provide configuration
for the Kinesis Video Stream EdgeAgent running on an on-premise IoT
device. Customers can now locally record from cameras and stream videos
to the cloud on configured schedule.
- feature: MigrationHubRefactorSpaces: This release adds support for
Lambda alias service endpoints. Lambda alias ARNs can now be passed into
CreateService.
- feature: RDS: Update the RDS API model to support copying option
groups during the CopyDBSnapshot operation
- feature: Rekognition: Adds support for "aliases" and "categories",
inclusion and exclusion filters for labels and label categories, and
aggregating labels by video segment timestamps for Stored Video Label
Detection APIs.
- feature: SageMakerMetrics: This release introduces support SageMaker
Metrics APIs.

###
[`v2.1272.0`](https://togithub.com/aws/aws-sdk-js/blob/HEAD/CHANGELOG.md#&#8203;212720)

[Compare
Source](https://togithub.com/aws/aws-sdk-js/compare/v2.1271.0...v2.1272.0)

- feature: IoTFleetWise: Deprecated assignedValue property for actuators
and attributes. Added a message to invalid nodes and invalid decoder
manifest exceptions.
- feature: MediaLive: Link devices now support buffer size (latency)
configuration. A higher latency value means a longer delay in
transmitting from the device to MediaLive, but improved resiliency. A
lower latency value means a shorter delay, but less resiliency.
- feature: MediaPackageVod: This release provides the approximate number
of assets in a packaging group.

###
[`v2.1271.0`](https://togithub.com/aws/aws-sdk-js/blob/HEAD/CHANGELOG.md#&#8203;212710)

[Compare
Source](https://togithub.com/aws/aws-sdk-js/compare/v2.1270.0...v2.1271.0)

- feature: AutoScaling: Adds support for metric math for target tracking
scaling policies, saving you the cost and effort of publishing a custom
metric to CloudWatch. Also adds support for VPC Lattice by adding the
Attach/Detach/DescribeTrafficSources APIs and a new health check type to
the CreateAutoScalingGroup API.
- feature: IoTTwinMaker: This release adds the following new features:
1) New APIs for managing a continuous sync of assets and asset models
from AWS IoT SiteWise. 2) Support user friendly names for component
types (ComponentTypeName) and properties (DisplayName).
- feature: MigrationHubStrategy: This release adds known application
filtering, server selection for assessments, support for potential
recommendations, and indications for configuration and assessment
status. For more information, see the AWS Migration Hub documentation at
https://docs.aws.amazon.com/migrationhub/index.html

###
[`v2.1270.0`](https://togithub.com/aws/aws-sdk-js/blob/HEAD/CHANGELOG.md#&#8203;212700)

[Compare
Source](https://togithub.com/aws/aws-sdk-js/compare/v2.1269.0...v2.1270.0)

- feature: CloudFront: Introducing UpdateDistributionWithStagingConfig
that can be used to promote the staging configuration to the production.
- feature: CostExplorer: This release adds the LinkedAccountName field
to the GetAnomalies API response under RootCause
- feature: EKS: Adds support for EKS add-ons configurationValues fields
and DescribeAddonConfiguration function

</details>

<details>
<summary>ChromeDevTools/devtools-protocol</summary>

###
[`v0.0.1082281`](https://togithub.com/ChromeDevTools/devtools-protocol/compare/v0.0.1081726...v0.0.1082281)

[Compare
Source](https://togithub.com/ChromeDevTools/devtools-protocol/compare/v0.0.1081726...v0.0.1082281)

###
[`v0.0.1081726`](https://togithub.com/ChromeDevTools/devtools-protocol/compare/v0.0.1081314...v0.0.1081726)

[Compare
Source](https://togithub.com/ChromeDevTools/devtools-protocol/compare/v0.0.1081314...v0.0.1081726)

###
[`v0.0.1081314`](https://togithub.com/ChromeDevTools/devtools-protocol/compare/v0.0.1079624...v0.0.1081314)

[Compare
Source](https://togithub.com/ChromeDevTools/devtools-protocol/compare/v0.0.1079624...v0.0.1081314)

</details>

<details>
<summary>npm/pacote</summary>

###
[`v15.0.7`](https://togithub.com/npm/pacote/blob/HEAD/CHANGELOG.md#&#8203;1507-httpsgithubcomnpmpacotecomparev1506v1507-2022-12-07)

[Compare
Source](https://togithub.com/npm/pacote/compare/v15.0.6...v15.0.7)

##### Dependencies

-
[`a734d61`](https://togithub.com/npm/pacote/commit/a734d61379c3b5690ad2e10d382dc5486b93266b)
[#&#8203;250](https://togithub.com/npm/pacote/pull/250) bump minipass
from 3.3.6 to 4.0.0

</details>

<details>
<summary>prettier/prettier</summary>

###
[`v2.8.1`](https://togithub.com/prettier/prettier/blob/HEAD/CHANGELOG.md#&#8203;281)

[Compare
Source](https://togithub.com/prettier/prettier/compare/2.8.0...2.8.1)

[diff](https://togithub.com/prettier/prettier/compare/2.8.0...2.8.1)

##### Fix SCSS map in arguments
([#&#8203;9184](https://togithub.com/prettier/prettier/pull/9184) by
[@&#8203;agamkrbit](https://togithub.com/agamkrbit))

<!-- prettier-ignore -->

```scss
// Input
$display-breakpoints: map-deep-merge(
  (
    "print-only": "only print",
    "screen-only": "only screen",
    "xs-only": "only screen and (max-width: #{map-get($grid-breakpoints, "sm")-1})",
  ),
  $display-breakpoints
);

// Prettier 2.8.0
$display-breakpoints: map-deep-merge(
  (
    "print-only": "only print",
    "screen-only": "only screen",
    "xs-only": "only screen and (max-width: #{map-get($grid-breakpoints, " sm
      ")-1})",
  ),
  $display-breakpoints
);

// Prettier 2.8.1
$display-breakpoints: map-deep-merge(
  (
    "print-only": "only print",
    "screen-only": "only screen",
    "xs-only": "only screen and (max-width: #{map-get($grid-breakpoints, "sm")-1})",
  ),
  $display-breakpoints
);
```

##### Support auto accessors syntax
([#&#8203;13919](https://togithub.com/prettier/prettier/pull/13919) by
[@&#8203;sosukesuzuki](https://togithub.com/sosukesuzuki))

Support for [Auto Accessors
Syntax](https://devblogs.microsoft.com/typescript/announcing-typescript-4-9/#auto-accessors-in-classes)
landed in TypeScript 4.9.

(Doesn't work well with `babel-ts` parser)

<!-- prettier-ignore -->

```tsx
class Foo {
  accessor foo: number = 3;
}
```

</details>

<details>
<summary>puppeteer/puppeteer</summary>

###
[`v19.4.0`](https://togithub.com/puppeteer/puppeteer/releases/tag/puppeteer-core-v19.4.0):
puppeteer-core: v19.4.0

[Compare
Source](https://togithub.com/puppeteer/puppeteer/compare/puppeteer-v19.3.0...puppeteer-v19.4.0)

##### Features

- ability to send headers via ws connection to browser in node.js
environment
([#&#8203;9314](https://togithub.com/puppeteer/puppeteer/issues/9314))
([937fffa](https://togithub.com/puppeteer/puppeteer/commit/937fffaedc340ea12d5f6636d3ba6598cb22e397)),
closes
[#&#8203;7218](https://togithub.com/puppeteer/puppeteer/issues/7218)
- **chromium:** roll to Chromium 109.0.5412.0 (r1069273)
([#&#8203;9364](https://togithub.com/puppeteer/puppeteer/issues/9364))
([1875da6](https://togithub.com/puppeteer/puppeteer/commit/1875da61916df1fbcf98047858c01075bd9af189)),
closes
[#&#8203;9233](https://togithub.com/puppeteer/puppeteer/issues/9233)
- **puppeteer-core:** keydown supports commands
([#&#8203;9357](https://togithub.com/puppeteer/puppeteer/issues/9357))
([b7ebc5d](https://togithub.com/puppeteer/puppeteer/commit/b7ebc5d9bb9b9940ffdf470e51d007f709587d40))

##### Bug Fixes

- **puppeteer-core:** avoid type instantiation errors
([#&#8203;9370](https://togithub.com/puppeteer/puppeteer/issues/9370))
([17f31a9](https://togithub.com/puppeteer/puppeteer/commit/17f31a9ee408ca5a08fe6dbceb8915e710156bd3)),
closes
[#&#8203;9369](https://togithub.com/puppeteer/puppeteer/issues/9369)

</details>

<details>
<summary>remix-run/react-router</summary>

###
[`v6.4.5`](https://togithub.com/remix-run/react-router/blob/HEAD/packages/react-router-dom/CHANGELOG.md#&#8203;645)

[Compare
Source](https://togithub.com/remix-run/react-router/compare/react-router-dom@6.4.4...react-router-dom@6.4.5)

##### Patch Changes

-   Updated dependencies:
    -   `@remix-run/router@1.0.5`
    -   `react-router@6.4.5`

</details>

<details>
<summary>visionmedia/supertest</summary>

### [`v6.3.3`](https://togithub.com/ladjs/supertest/releases/tag/v6.3.3)

[Compare
Source](https://togithub.com/visionmedia/supertest/compare/v6.3.2...v6.3.3)

- chore: bump deps
[`2910f73`](https://togithub.com/visionmedia/supertest/commit/2910f73)

</details>

<details>
<summary>Microsoft/TypeScript</summary>

###
[`v4.9.4`](https://togithub.com/microsoft/TypeScript/releases/tag/v4.9.4):
TypeScript 4.9.4

[Compare
Source](https://togithub.com/Microsoft/TypeScript/compare/v4.9.3...v4.9.4)

For release notes, check out the [release
announcement](https://devblogs.microsoft.com/typescript/announcing-typescript-4-9).

For the complete list of fixed issues, check out the

- [fixed issues query for Typescript
v4.9.4](https://togithub.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=is%3Aissue+milestone%3A%22TypeScript+4.9.4%22+is%3Aclosed+).

Downloads are available on:

-   [npm](https://www.npmjs.com/package/typescript)
- [NuGet
package](https://www.nuget.org/packages/Microsoft.TypeScript.MSBuild)

#### Changes:

-
[`e286821`](https://togithub.com/Microsoft/TypeScript/commit/e2868216f637e875a74c675845625eb15dcfe9a2)
Bump version to 4.9.4 and LKG.
-
[`eb5419f`](https://togithub.com/Microsoft/TypeScript/commit/eb5419fc8d980859b98553586dfb5f40d811a745)
Cherry-pick
[#&#8203;51704](https://togithub.com/Microsoft/TypeScript/issues/51704)
to release 4.9
([#&#8203;51712](https://togithub.com/Microsoft/TypeScript/issues/51712))
-
[`b4d382b`](https://togithub.com/Microsoft/TypeScript/commit/b4d382b9b12460adf2da4cc0d1429cf19f8dc8be)
Cherry-pick changes for narrowing to tagged literal types.
-
[`e7a02f4`](https://togithub.com/Microsoft/TypeScript/commit/e7a02f43fce47e1a39259ada5460bcc33c8e98b5)
Port of
[#&#8203;51626](https://togithub.com/Microsoft/TypeScript/issues/51626)
and
[#&#8203;51689](https://togithub.com/Microsoft/TypeScript/issues/51689)
to release-4.9
([#&#8203;51627](https://togithub.com/Microsoft/TypeScript/issues/51627))
-
[`1727912`](https://togithub.com/Microsoft/TypeScript/commit/1727912f0437a7f367d90040fc4b0b4f3efd017a)
Cherry-pick fix around `visitEachChild` to release-4.9.
([#&#8203;51544](https://togithub.com/Microsoft/TypeScript/issues/51544))

This list of changes was [auto
generated](https://typescript.visualstudio.com/cf7ac146-d525-443c-b23c-0d58337efebc/\_release?releaseId=117&\_a=release-summary).

</details>

<details>
<summary>nodejs/undici</summary>

### [`v5.14.0`](https://togithub.com/nodejs/undici/releases/tag/v5.14.0)

[Compare
Source](https://togithub.com/nodejs/undici/compare/v5.13.0...v5.14.0)

#### What's Changed

- fetch: implement
[whatwg/fetch#1544
by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in
[nodejs/undici#1780
- fix(fetch): set content-length header for FormData body by
[@&#8203;KhafraDev](https://togithub.com/KhafraDev) in
[nodejs/undici#1785
- fix(fetch): parse multipart/form-data non-ASCII field names by
[@&#8203;repsac-by](https://togithub.com/repsac-by) in
[nodejs/undici#1786
- fix(fetch): connection is cancelled when redirecting by
[@&#8203;KhafraDev](https://togithub.com/KhafraDev) in
[nodejs/undici#1787
- build(deps-dev): bump sinon from 14.0.2 to 15.0.0 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[nodejs/undici#1788
- wpt: update `response-static-error.any.js` by
[@&#8203;KhafraDev](https://togithub.com/KhafraDev) in
[nodejs/undici#1789
- fix: connect option types by
[@&#8203;Kaciras](https://togithub.com/Kaciras) in
[nodejs/undici#1790
- fix(fetch): send headers in the case that they were sent by
[@&#8203;KhafraDev](https://togithub.com/KhafraDev) in
[nodejs/undici#1784
- fetch: prefer global over lazy loading by
[@&#8203;KhafraDev](https://togithub.com/KhafraDev) in
[nodejs/undici#1793
- perf: reduce number of native calls from fetch.body by
[@&#8203;anonrig](https://togithub.com/anonrig) in
[nodejs/undici#1792
- perf: improve isomorphic decode performance by
[@&#8203;anonrig](https://togithub.com/anonrig) in
[nodejs/undici#1791
- More correct filereader event firing by
[@&#8203;KhafraDev](https://togithub.com/KhafraDev) in
[nodejs/undici#1796
- build(deps-dev): bump tsd from 0.24.1 to 0.25.0 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[nodejs/undici#1797
- feat(fetch): add in native File class support by
[@&#8203;KhafraDev](https://togithub.com/KhafraDev) in
[nodejs/undici#1779
- perf: Keep weak reference to session for re-use by
[@&#8203;ronag](https://togithub.com/ronag) in
[nodejs/undici#1802

#### New Contributors

- [@&#8203;Kaciras](https://togithub.com/Kaciras) made their first
contribution in
[nodejs/undici#1790

**Full Changelog**:
nodejs/undici@v5.13.0...v5.14.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 2am" (UTC), Automerge - At any
time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config help](https://togithub.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- 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://app.renovatebot.com/dashboard#github/coveo/cli).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNC41MS4wIiwidXBkYXRlZEluVmVyIjoiMzQuNTQuMiJ9-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
anonrig pushed a commit to anonrig/undici that referenced this pull request Apr 4, 2023
* fix(fetch): treat headers as case sensitive

* fix: mark test as flaky
crysmags pushed a commit to crysmags/undici that referenced this pull request Feb 27, 2024
* fix(fetch): treat headers as case sensitive

* fix: mark test as flaky
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants