-
Notifications
You must be signed in to change notification settings - Fork 608
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
Conversation
Codecov ReportBase: 90.24% // Head: 90.27% // Increases project coverage by
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
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. |
This is not an issue. Headers are case insensitive by the HTTP specs. Lowercasing all of them makes processing faster. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm -1 with this change
Unless the fetch spec says otherwise, I agree with @mcollina. What does Chrome or Deno do? |
RFC2516, 4.2:
|
Woudn't it be faster if 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). |
@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
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. |
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. |
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'
] |
For this, the RFC doesn't say that headers should lowercase - just that 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. |
f57cfa2
to
0eea0c9
Compare
This kind of processing of Headers is one of the bottlenecks of OutgoingMessage. Let's not repeat the same mistakes. |
I'm +- 0. When it comes to fetch I personally care more about spec than perf. |
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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm, I do not have much time to object to this change and explain why it's not a great idea.
[](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) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](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) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](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) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](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) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](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) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](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) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](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) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](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) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor | | [actions/checkout](https://togithub.com/actions/checkout) | `93ea575` -> `755da8c` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | action | digest | | [actions/setup-python](https://togithub.com/actions/setup-python) | `13ae5bb` -> `2c3dd9e` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](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) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](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) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [github/codeql-action](https://togithub.com/github/codeql-action) | `b2a92eb` -> `a669cc5` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](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) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](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) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](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) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](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) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](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) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](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) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](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) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](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) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](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 ([#​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#​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#​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#​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 ✨: - 🔥 [@​mnajdova](https://togithub.com/mnajdova) enabled configuration of the `sx` prop in the `theme` ([#​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 ([#​35414](https://togithub.com/mui/material-ui/issues/35414)) [@​danilo-leal](https://togithub.com/danilo-leal) - \[Select] Fix `MenuProps.PopoverClasses` being overriden ([#​35394](https://togithub.com/mui/material-ui/issues/35394)) [@​vitorfrs-dev](https://togithub.com/vitorfrs-dev) - \[SwipeableDrawer] Fixed typescript warning "prop open undefined" ([#​34710](https://togithub.com/mui/material-ui/issues/34710)) [@​kraftware](https://togithub.com/kraftware) ##### `@mui/icons-material@5.11.0` - \[icons] Restore the PhoneInTalk icons ([#​35409](https://togithub.com/mui/material-ui/issues/35409)) [@​michaldudak](https://togithub.com/michaldudak) ##### `@mui/system@5.11.0` ##### BREAKING CHANGES - \[system] Enable configuring the `sx` prop in the `theme` ([#​35150](https://togithub.com/mui/material-ui/issues/35150)) [@​mnajdova](https://togithub.com/mnajdova) The breaking change is regarding an experimental API: ```diff -import { styled, experimental_sx } from '@​mui/material/styles'; +import { styled } from '@​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 ([#​35447](https://togithub.com/mui/material-ui/issues/35447)) [@​siriwatknp](https://togithub.com/siriwatknp) ##### `@mui/base@5.0.0-alpha.110` - \[PopperUnstyled] Update PopperTooltip to have correct width when closing with transition ([#​34714](https://togithub.com/mui/material-ui/issues/34714)) [@​EduardoSCosta](https://togithub.com/EduardoSCosta) ##### `@mui/material-next@6.0.0-alpha.66` - \[Material You] Add ripple on the button ([#​35299](https://togithub.com/mui/material-ui/issues/35299)) [@​mnajdova](https://togithub.com/mnajdova) ##### Docs - \[docs] Simplify state management in Text Field demo page ([#​35051](https://togithub.com/mui/material-ui/issues/35051)) [@​PratikDev](https://togithub.com/PratikDev) - \[docs] Improve `Responsive App bar with Drawer` demo ([#​35418](https://togithub.com/mui/material-ui/issues/35418)) [@​ZeeshanTamboli](https://togithub.com/ZeeshanTamboli) - \[docs] Improve line-height readability ([#​35387](https://togithub.com/mui/material-ui/issues/35387)) [@​oliviertassinari](https://togithub.com/oliviertassinari) - \[docs] Improve a bit the Composition docs ([#​35329](https://togithub.com/mui/material-ui/issues/35329)) [@​oliviertassinari](https://togithub.com/oliviertassinari) - \[docs] Refactor `ToggleButtonSizes` demo ([#​35375](https://togithub.com/mui/material-ui/issues/35375)) [@​Armanio](https://togithub.com/Armanio) - \[docs] Standardize the usage of callouts in the MUI Core docs ([#​35361](https://togithub.com/mui/material-ui/issues/35361)) [@​samuelsycamore](https://togithub.com/samuelsycamore) - \[docs] Format feedback to add a link to the commented section ([#​35381](https://togithub.com/mui/material-ui/issues/35381)) [@​alexfauquette](https://togithub.com/alexfauquette) - \[docs] Direct users from Material UI to MUI Base for duplicated components ([#​35293](https://togithub.com/mui/material-ui/issues/35293)) [@​samuelsycamore](https://togithub.com/samuelsycamore) - \[docs] Fix typo in FormControl API docs ([#​35449](https://togithub.com/mui/material-ui/issues/35449)) [@​Spanishiwa](https://togithub.com/Spanishiwa) - \[docs] Update callouts design ([#​35390](https://togithub.com/mui/material-ui/issues/35390)) [@​danilo-leal](https://togithub.com/danilo-leal) - \[website] New wave of open roles ([#​35240](https://togithub.com/mui/material-ui/issues/35240)) [@​mnajdova](https://togithub.com/mnajdova) - \[website] Developer survey 2022 ([#​35407](https://togithub.com/mui/material-ui/issues/35407)) [@​joserodolfofreitas](https://togithub.com/joserodolfofreitas) ##### Core - \[core] Fix [@​mui/material](https://togithub.com/mui/material) package building ([#​35324](https://togithub.com/mui/material-ui/issues/35324)) [@​timbset](https://togithub.com/timbset) - \[core] Fix leaking theme color override ([#​35444](https://togithub.com/mui/material-ui/issues/35444)) [@​oliviertassinari](https://togithub.com/oliviertassinari) - \[typescript] Add null to return type of OverridableComponent ([#​35311](https://togithub.com/mui/material-ui/issues/35311)) [@​tsollbach](https://togithub.com/tsollbach) - \[website] Migrate X page to use CSS theme variables ([#​34922](https://togithub.com/mui/material-ui/issues/34922)) [@​jesrodri](https://togithub.com/jesrodri) - \[website] Migrate `/core` page to use CSS variables ([#​35366](https://togithub.com/mui/material-ui/issues/35366)) [@​siriwatknp](https://togithub.com/siriwatknp) All contributors of this release in alphabetical order: [@​alexfauquette](https://togithub.com/alexfauquette), [@​Armanio](https://togithub.com/Armanio), [@​danilo-leal](https://togithub.com/danilo-leal), [@​EduardoSCosta](https://togithub.com/EduardoSCosta), [@​flaviendelangle](https://togithub.com/flaviendelangle), [@​jesrodri](https://togithub.com/jesrodri), [@​joserodolfofreitas](https://togithub.com/joserodolfofreitas), [@​kraftware](https://togithub.com/kraftware), [@​michaldudak](https://togithub.com/michaldudak), [@​mnajdova](https://togithub.com/mnajdova), [@​oliviertassinari](https://togithub.com/oliviertassinari), [@​PratikDev](https://togithub.com/PratikDev), [@​samuelsycamore](https://togithub.com/samuelsycamore), [@​siriwatknp](https://togithub.com/siriwatknp), [@​Spanishiwa](https://togithub.com/Spanishiwa), [@​timbset](https://togithub.com/timbset), [@​tsollbach](https://togithub.com/tsollbach), [@​vitorfrs-dev](https://togithub.com/vitorfrs-dev), [@​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#​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) [#​5923](https://togithub.com/npm/cli/pull/5923) audit package mismatch in special case ([@​fritzy](https://togithub.com/fritzy)) ##### Dependencies - [`372d158`](https://togithub.com/npm/cli/commit/372d158d2637120600a95abee64355ed1cb6f990) [#​5935](https://togithub.com/npm/cli/pull/5935) `minimatch@5.1.1` ([#​5935](https://togithub.com/npm/cli/issues/5935)) - [`0a3fe00`](https://togithub.com/npm/cli/commit/0a3fe000e2723ae6fdb8b1d3154fd3835057c992) [#​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 (@​typescript-eslint/eslint-plugin)</summary> ### [`v5.46.1`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#​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 [@​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#​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>` ([#​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 ([#​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` ([#​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` ([#​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 ([#​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 ([#​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 (@​typescript-eslint/parser)</summary> ### [`v5.46.1`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#​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 [@​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#​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 [@​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 ([#​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#​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#​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#​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#​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#​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#​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) [#​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#​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 ([#​9184](https://togithub.com/prettier/prettier/pull/9184) by [@​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 ([#​13919](https://togithub.com/prettier/prettier/pull/13919) by [@​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 ([#​9314](https://togithub.com/puppeteer/puppeteer/issues/9314)) ([937fffa](https://togithub.com/puppeteer/puppeteer/commit/937fffaedc340ea12d5f6636d3ba6598cb22e397)), closes [#​7218](https://togithub.com/puppeteer/puppeteer/issues/7218) - **chromium:** roll to Chromium 109.0.5412.0 (r1069273) ([#​9364](https://togithub.com/puppeteer/puppeteer/issues/9364)) ([1875da6](https://togithub.com/puppeteer/puppeteer/commit/1875da61916df1fbcf98047858c01075bd9af189)), closes [#​9233](https://togithub.com/puppeteer/puppeteer/issues/9233) - **puppeteer-core:** keydown supports commands ([#​9357](https://togithub.com/puppeteer/puppeteer/issues/9357)) ([b7ebc5d](https://togithub.com/puppeteer/puppeteer/commit/b7ebc5d9bb9b9940ffdf470e51d007f709587d40)) ##### Bug Fixes - **puppeteer-core:** avoid type instantiation errors ([#​9370](https://togithub.com/puppeteer/puppeteer/issues/9370)) ([17f31a9](https://togithub.com/puppeteer/puppeteer/commit/17f31a9ee408ca5a08fe6dbceb8915e710156bd3)), closes [#​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#​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 [#​51704](https://togithub.com/Microsoft/TypeScript/issues/51704) to release 4.9 ([#​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 [#​51626](https://togithub.com/Microsoft/TypeScript/issues/51626) and [#​51689](https://togithub.com/Microsoft/TypeScript/issues/51689) to release-4.9 ([#​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. ([#​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 [https://github.com/whatwg/fetch/pull/1544](https://togithub.com/whatwg/fetch/pull/1544) by [@​KhafraDev](https://togithub.com/KhafraDev) in [https://github.com/nodejs/undici/pull/1780](https://togithub.com/nodejs/undici/pull/1780) - fix(fetch): set content-length header for FormData body by [@​KhafraDev](https://togithub.com/KhafraDev) in [https://github.com/nodejs/undici/pull/1785](https://togithub.com/nodejs/undici/pull/1785) - fix(fetch): parse multipart/form-data non-ASCII field names by [@​repsac-by](https://togithub.com/repsac-by) in [https://github.com/nodejs/undici/pull/1786](https://togithub.com/nodejs/undici/pull/1786) - fix(fetch): connection is cancelled when redirecting by [@​KhafraDev](https://togithub.com/KhafraDev) in [https://github.com/nodejs/undici/pull/1787](https://togithub.com/nodejs/undici/pull/1787) - build(deps-dev): bump sinon from 14.0.2 to 15.0.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/nodejs/undici/pull/1788](https://togithub.com/nodejs/undici/pull/1788) - wpt: update `response-static-error.any.js` by [@​KhafraDev](https://togithub.com/KhafraDev) in [https://github.com/nodejs/undici/pull/1789](https://togithub.com/nodejs/undici/pull/1789) - fix: connect option types by [@​Kaciras](https://togithub.com/Kaciras) in [https://github.com/nodejs/undici/pull/1790](https://togithub.com/nodejs/undici/pull/1790) - fix(fetch): send headers in the case that they were sent by [@​KhafraDev](https://togithub.com/KhafraDev) in [https://github.com/nodejs/undici/pull/1784](https://togithub.com/nodejs/undici/pull/1784) - fetch: prefer global over lazy loading by [@​KhafraDev](https://togithub.com/KhafraDev) in [https://github.com/nodejs/undici/pull/1793](https://togithub.com/nodejs/undici/pull/1793) - perf: reduce number of native calls from fetch.body by [@​anonrig](https://togithub.com/anonrig) in [https://github.com/nodejs/undici/pull/1792](https://togithub.com/nodejs/undici/pull/1792) - perf: improve isomorphic decode performance by [@​anonrig](https://togithub.com/anonrig) in [https://github.com/nodejs/undici/pull/1791](https://togithub.com/nodejs/undici/pull/1791) - More correct filereader event firing by [@​KhafraDev](https://togithub.com/KhafraDev) in [https://github.com/nodejs/undici/pull/1796](https://togithub.com/nodejs/undici/pull/1796) - build(deps-dev): bump tsd from 0.24.1 to 0.25.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/nodejs/undici/pull/1797](https://togithub.com/nodejs/undici/pull/1797) - feat(fetch): add in native File class support by [@​KhafraDev](https://togithub.com/KhafraDev) in [https://github.com/nodejs/undici/pull/1779](https://togithub.com/nodejs/undici/pull/1779) - perf: Keep weak reference to session for re-use by [@​ronag](https://togithub.com/ronag) in [https://github.com/nodejs/undici/pull/1802](https://togithub.com/nodejs/undici/pull/1802) #### New Contributors - [@​Kaciras](https://togithub.com/Kaciras) made their first contribution in [https://github.com/nodejs/undici/pull/1790](https://togithub.com/nodejs/undici/pull/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>
* fix(fetch): treat headers as case sensitive * fix: mark test as flaky
* fix(fetch): treat headers as case sensitive * fix: mark test as flaky
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 alowercase_key ⇔ { key, value }
one.