-
Notifications
You must be signed in to change notification settings - Fork 30k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This commit is the result of reverting the v5.28.3 security update and then cleanly cherry-picking all 6.x updates from `main` until 6.6.2, which also includes the security fix. Backport-PR-URL: #51768 PR-URL: #51667 Reviewed-By: Marco Ippolito <[email protected]>
- Loading branch information
1 parent
f130a33
commit 4ebb944
Showing
84 changed files
with
9,874 additions
and
4,912 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
# Debug | ||
|
||
Undici (and subsenquently `fetch` and `websocket`) exposes a debug statement that can be enabled by setting `NODE_DEBUG` within the environment. | ||
|
||
The flags availabile are: | ||
|
||
## `undici` | ||
|
||
This flag enables debug statements for the core undici library. | ||
|
||
```sh | ||
NODE_DEBUG=undici node script.js | ||
|
||
UNDICI 16241: connecting to nodejs.org using https:h1 | ||
UNDICI 16241: connecting to nodejs.org using https:h1 | ||
UNDICI 16241: connected to nodejs.org using https:h1 | ||
UNDICI 16241: sending request to GET https://nodejs.org// | ||
UNDICI 16241: received response to GET https://nodejs.org// - HTTP 307 | ||
UNDICI 16241: connecting to nodejs.org using https:h1 | ||
UNDICI 16241: trailers received from GET https://nodejs.org// | ||
UNDICI 16241: connected to nodejs.org using https:h1 | ||
UNDICI 16241: sending request to GET https://nodejs.org//en | ||
UNDICI 16241: received response to GET https://nodejs.org//en - HTTP 200 | ||
UNDICI 16241: trailers received from GET https://nodejs.org//en | ||
``` | ||
|
||
## `fetch` | ||
|
||
This flag enables debug statements for the `fetch` API. | ||
|
||
> **Note**: statements are pretty similar to the ones in the `undici` flag, but scoped to `fetch` | ||
```sh | ||
NODE_DEBUG=fetch node script.js | ||
|
||
FETCH 16241: connecting to nodejs.org using https:h1 | ||
FETCH 16241: connecting to nodejs.org using https:h1 | ||
FETCH 16241: connected to nodejs.org using https:h1 | ||
FETCH 16241: sending request to GET https://nodejs.org// | ||
FETCH 16241: received response to GET https://nodejs.org// - HTTP 307 | ||
FETCH 16241: connecting to nodejs.org using https:h1 | ||
FETCH 16241: trailers received from GET https://nodejs.org// | ||
FETCH 16241: connected to nodejs.org using https:h1 | ||
FETCH 16241: sending request to GET https://nodejs.org//en | ||
FETCH 16241: received response to GET https://nodejs.org//en - HTTP 200 | ||
FETCH 16241: trailers received from GET https://nodejs.org//en | ||
``` | ||
|
||
## `websocket` | ||
|
||
This flag enables debug statements for the `Websocket` API. | ||
|
||
> **Note**: statements can overlap with `UNDICI` ones if `undici` or `fetch` flag has been enabled as well. | ||
```sh | ||
NODE_DEBUG=websocket node script.js | ||
|
||
WEBSOCKET 18309: connecting to echo.websocket.org using https:h1 | ||
WEBSOCKET 18309: connected to echo.websocket.org using https:h1 | ||
WEBSOCKET 18309: sending request to GET https://echo.websocket.org// | ||
WEBSOCKET 18309: connection opened <ip_address> | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
# EventSource | ||
|
||
Undici exposes a WHATWG spec-compliant implementation of [EventSource](https://developer.mozilla.org/en-US/docs/Web/API/EventSource) | ||
for [Server-Sent Events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events). | ||
|
||
## Instantiating EventSource | ||
|
||
Undici exports a EventSource class. You can instantiate the EventSource as | ||
follows: | ||
|
||
```mjs | ||
import { EventSource } from 'undici' | ||
|
||
const evenSource = new EventSource('http://localhost:3000') | ||
evenSource.onmessage = (event) => { | ||
console.log(event.data) | ||
} | ||
``` | ||
|
||
More information about the EventSource API can be found on | ||
[MDN](https://developer.mozilla.org/en-US/docs/Web/API/EventSource). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
# Class: RedirectHandler | ||
|
||
A class that handles redirection logic for HTTP requests. | ||
|
||
## `new RedirectHandler(dispatch, maxRedirections, opts, handler, redirectionLimitReached)` | ||
|
||
Arguments: | ||
|
||
- **dispatch** `function` - The dispatch function to be called after every retry. | ||
- **maxRedirections** `number` - Maximum number of redirections allowed. | ||
- **opts** `object` - Options for handling redirection. | ||
- **handler** `object` - An object containing handlers for different stages of the request lifecycle. | ||
- **redirectionLimitReached** `boolean` (default: `false`) - A flag that the implementer can provide to enable or disable the feature. If set to `false`, it indicates that the caller doesn't want to use the feature and prefers the old behavior. | ||
|
||
Returns: `RedirectHandler` | ||
|
||
### Parameters | ||
|
||
- **dispatch** `(options: Dispatch.DispatchOptions, handlers: Dispatch.DispatchHandlers) => Promise<Dispatch.DispatchResponse>` (required) - Dispatch function to be called after every redirection. | ||
- **maxRedirections** `number` (required) - Maximum number of redirections allowed. | ||
- **opts** `object` (required) - Options for handling redirection. | ||
- **handler** `object` (required) - Handlers for different stages of the request lifecycle. | ||
- **redirectionLimitReached** `boolean` (default: `false`) - A flag that the implementer can provide to enable or disable the feature. If set to `false`, it indicates that the caller doesn't want to use the feature and prefers the old behavior. | ||
|
||
### Properties | ||
|
||
- **location** `string` - The current redirection location. | ||
- **abort** `function` - The abort function. | ||
- **opts** `object` - The options for handling redirection. | ||
- **maxRedirections** `number` - Maximum number of redirections allowed. | ||
- **handler** `object` - Handlers for different stages of the request lifecycle. | ||
- **history** `Array` - An array representing the history of URLs during redirection. | ||
- **redirectionLimitReached** `boolean` - Indicates whether the redirection limit has been reached. | ||
|
||
### Methods | ||
|
||
#### `onConnect(abort)` | ||
|
||
Called when the connection is established. | ||
|
||
Parameters: | ||
|
||
- **abort** `function` - The abort function. | ||
|
||
#### `onUpgrade(statusCode, headers, socket)` | ||
|
||
Called when an upgrade is requested. | ||
|
||
Parameters: | ||
|
||
- **statusCode** `number` - The HTTP status code. | ||
- **headers** `object` - The headers received in the response. | ||
- **socket** `object` - The socket object. | ||
|
||
#### `onError(error)` | ||
|
||
Called when an error occurs. | ||
|
||
Parameters: | ||
|
||
- **error** `Error` - The error that occurred. | ||
|
||
#### `onHeaders(statusCode, headers, resume, statusText)` | ||
|
||
Called when headers are received. | ||
|
||
Parameters: | ||
|
||
- **statusCode** `number` - The HTTP status code. | ||
- **headers** `object` - The headers received in the response. | ||
- **resume** `function` - The resume function. | ||
- **statusText** `string` - The status text. | ||
|
||
#### `onData(chunk)` | ||
|
||
Called when data is received. | ||
|
||
Parameters: | ||
|
||
- **chunk** `Buffer` - The data chunk received. | ||
|
||
#### `onComplete(trailers)` | ||
|
||
Called when the request is complete. | ||
|
||
Parameters: | ||
|
||
- **trailers** `object` - The trailers received. | ||
|
||
#### `onBodySent(chunk)` | ||
|
||
Called when the request body is sent. | ||
|
||
Parameters: | ||
|
||
- **chunk** `Buffer` - The chunk of the request body sent. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
# Util | ||
|
||
Utility API for third-party implementations of the dispatcher API. | ||
|
||
## `parseHeaders(headers, [obj])` | ||
|
||
Receives a header object and returns the parsed value. | ||
|
||
Arguments: | ||
|
||
- **headers** `Record<string, string | string[]> | (Buffer | string | (Buffer | string)[])[]` (required) - Header object. | ||
|
||
- **obj** `Record<string, string | string[]>` (optional) - Object to specify a proxy object. The parsed value is assigned to this object. But, if **headers** is an object, it is not used. | ||
|
||
Returns: `Record<string, string | string[]>` If **headers** is an object, it is **headers**. Otherwise, if **obj** is specified, it is equivalent to **obj**. | ||
|
||
## `headerNameToString(value)` | ||
|
||
Retrieves a header name and returns its lowercase value. | ||
|
||
Arguments: | ||
|
||
- **value** `string | Buffer` (required) - Header name. | ||
|
||
Returns: `string` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.