Skip to content

Commit 4823151

Browse files
Merge branch 'main' into 50649
2 parents b43f701 + 9def0a9 commit 4823151

File tree

862 files changed

+8012
-7754
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

862 files changed

+8012
-7754
lines changed

.github/workflows/scorecard.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ jobs:
3333

3434
steps:
3535
- name: Harden Runner
36-
uses: step-security/harden-runner@1b05615854632b887b69ae1be8cbefe72d3ae423 # v2.6.0
36+
uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1
3737
with:
3838
egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs
3939

@@ -73,6 +73,6 @@ jobs:
7373

7474
# Upload the results to GitHub's code scanning dashboard.
7575
- name: Upload to code-scanning
76-
uses: github/codeql-action/upload-sarif@74483a38d39275f33fcff5f35b679b5ca4a26a99 # v2.22.5
76+
uses: github/codeql-action/upload-sarif@407ffafae6a767df3e0230c3df91b6443ae8df75 # v2.22.8
7777
with:
7878
sarif_file: results.sarif

benchmark/util/format.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ const inputs = {
1818
};
1919

2020
const bench = common.createBenchmark(main, {
21-
n: [1e5],
21+
n: [1e6],
2222
type: Object.keys(inputs),
2323
});
2424

benchmark/util/inspect-array.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ const common = require('../common');
44
const util = require('util');
55

66
const bench = common.createBenchmark(main, {
7-
n: [5e2],
7+
n: [5e3],
88
len: [1e2, 1e5],
99
type: [
1010
'denseArray',

benchmark/util/normalize-encoding.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ const inputs = [
2121

2222
const bench = common.createBenchmark(main, {
2323
input: inputs.concat(Object.keys(groupedInputs)),
24-
n: [1e5],
24+
n: [1e6],
2525
}, {
2626
flags: '--expose-internals',
2727
});

benchmark/util/text-decoder.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ const bench = common.createBenchmark(main, {
66
encoding: ['utf-8', 'latin1', 'iso-8859-3'],
77
ignoreBOM: [0, 1],
88
fatal: [0, 1],
9-
len: [256, 1024 * 16, 1024 * 512],
10-
n: [1e2],
9+
len: [256, 1024 * 16, 1024 * 128],
10+
n: [1e3],
1111
type: ['SharedArrayBuffer', 'ArrayBuffer', 'Buffer'],
1212
});
1313

benchmark/util/type-check.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ const bench = common.createBenchmark(main, {
2929
type: Object.keys(args),
3030
version: ['native', 'js'],
3131
argument: ['true', 'false-primitive', 'false-object'],
32-
n: [1e5],
32+
n: [1e6],
3333
}, {
3434
flags: ['--expose-internals', '--no-warnings'],
3535
});

deps/undici/src/lib/api/api-request.js

+1
Original file line numberDiff line numberDiff line change
@@ -177,3 +177,4 @@ function request (opts, callback) {
177177
}
178178

179179
module.exports = request
180+
module.exports.RequestHandler = RequestHandler

deps/undici/src/lib/api/readable.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ module.exports = class BodyReadable extends Readable {
180180
this
181181
.on('close', function () {
182182
signalListenerCleanup()
183-
if (signal?.aborted) {
183+
if (signal && signal.aborted) {
184184
reject(signal.reason || Object.assign(new Error('The operation was aborted'), { name: 'AbortError' }))
185185
} else {
186186
resolve(null)

deps/undici/src/lib/cache/symbols.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
'use strict'
22

33
module.exports = {
4-
kConstruct: Symbol('constructable')
4+
kConstruct: require('../core/symbols').kConstruct
55
}

deps/undici/src/lib/core/symbols.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -58,5 +58,6 @@ module.exports = {
5858
kHTTP1BuildRequest: Symbol('http1 build request'),
5959
kHTTP2CopyHeaders: Symbol('http2 copy headers'),
6060
kHTTPConnVersion: Symbol('http connection version'),
61-
kRetryHandlerDefaultRetry: Symbol('retry agent default retry')
61+
kRetryHandlerDefaultRetry: Symbol('retry agent default retry'),
62+
kConstruct: Symbol('constructable')
6263
}

deps/undici/src/lib/fetch/dataURL.js

+5-8
Original file line numberDiff line numberDiff line change
@@ -119,17 +119,14 @@ function dataURLProcessor (dataURL) {
119119
* @param {boolean} excludeFragment
120120
*/
121121
function URLSerializer (url, excludeFragment = false) {
122-
const href = url.href
123-
124122
if (!excludeFragment) {
125-
return href
123+
return url.href
126124
}
127125

128-
const hash = href.lastIndexOf('#')
129-
if (hash === -1) {
130-
return href
131-
}
132-
return href.slice(0, hash)
126+
const href = url.href
127+
const hashLength = url.hash.length
128+
129+
return hashLength === 0 ? href : href.substring(0, href.length - hashLength)
133130
}
134131

135132
// https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points

deps/undici/src/lib/fetch/headers.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
'use strict'
44

5-
const { kHeadersList } = require('../core/symbols')
5+
const { kHeadersList, kConstruct } = require('../core/symbols')
66
const { kGuard } = require('./symbols')
77
const { kEnumerableProperty } = require('../core/util')
88
const {
@@ -240,6 +240,9 @@ class HeadersList {
240240
// https://fetch.spec.whatwg.org/#headers-class
241241
class Headers {
242242
constructor (init = undefined) {
243+
if (init === kConstruct) {
244+
return
245+
}
243246
this[kHeadersList] = new HeadersList()
244247

245248
// The new Headers(init) constructor steps are:

deps/undici/src/lib/fetch/index.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,7 @@ function finalizeAndReportTiming (response, initiatorType = 'other') {
286286
}
287287

288288
// 8. If response’s timing allow passed flag is not set, then:
289-
if (!timingInfo.timingAllowPassed) {
289+
if (!response.timingAllowPassed) {
290290
// 1. Set timingInfo to a the result of creating an opaque timing info for timingInfo.
291291
timingInfo = createOpaqueTimingInfo({
292292
startTime: timingInfo.startTime

deps/undici/src/lib/fetch/request.js

+6-7
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,12 @@ const { kHeaders, kSignal, kState, kGuard, kRealm } = require('./symbols')
2828
const { webidl } = require('./webidl')
2929
const { getGlobalOrigin } = require('./global')
3030
const { URLSerializer } = require('./dataURL')
31-
const { kHeadersList } = require('../core/symbols')
31+
const { kHeadersList, kConstruct } = require('../core/symbols')
3232
const assert = require('assert')
3333
const { getMaxListeners, setMaxListeners, getEventListeners, defaultMaxListeners } = require('events')
3434

3535
let TransformStream = globalThis.TransformStream
3636

37-
const kInit = Symbol('init')
3837
const kAbortController = Symbol('abortController')
3938

4039
const requestFinalizer = new FinalizationRegistry(({ signal, abort }) => {
@@ -45,7 +44,7 @@ const requestFinalizer = new FinalizationRegistry(({ signal, abort }) => {
4544
class Request {
4645
// https://fetch.spec.whatwg.org/#dom-request
4746
constructor (input, init = {}) {
48-
if (input === kInit) {
47+
if (input === kConstruct) {
4948
return
5049
}
5150

@@ -302,7 +301,7 @@ class Request {
302301
}
303302

304303
// 23. If init["integrity"] exists, then set request’s integrity metadata to it.
305-
if (init.integrity !== undefined && init.integrity != null) {
304+
if (init.integrity != null) {
306305
request.integrity = String(init.integrity)
307306
}
308307

@@ -398,7 +397,7 @@ class Request {
398397
// 30. Set this’s headers to a new Headers object with this’s relevant
399398
// Realm, whose header list is request’s header list and guard is
400399
// "request".
401-
this[kHeaders] = new Headers()
400+
this[kHeaders] = new Headers(kConstruct)
402401
this[kHeaders][kHeadersList] = request.headersList
403402
this[kHeaders][kGuard] = 'request'
404403
this[kHeaders][kRealm] = this[kRealm]
@@ -725,10 +724,10 @@ class Request {
725724

726725
// 3. Let clonedRequestObject be the result of creating a Request object,
727726
// given clonedRequest, this’s headers’s guard, and this’s relevant Realm.
728-
const clonedRequestObject = new Request(kInit)
727+
const clonedRequestObject = new Request(kConstruct)
729728
clonedRequestObject[kState] = clonedRequest
730729
clonedRequestObject[kRealm] = this[kRealm]
731-
clonedRequestObject[kHeaders] = new Headers()
730+
clonedRequestObject[kHeaders] = new Headers(kConstruct)
732731
clonedRequestObject[kHeaders][kHeadersList] = clonedRequest.headersList
733732
clonedRequestObject[kHeaders][kGuard] = this[kHeaders][kGuard]
734733
clonedRequestObject[kHeaders][kRealm] = this[kHeaders][kRealm]

deps/undici/src/lib/fetch/response.js

+3-7
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ const { webidl } = require('./webidl')
2323
const { FormData } = require('./formdata')
2424
const { getGlobalOrigin } = require('./global')
2525
const { URLSerializer } = require('./dataURL')
26-
const { kHeadersList } = require('../core/symbols')
26+
const { kHeadersList, kConstruct } = require('../core/symbols')
2727
const assert = require('assert')
2828
const { types } = require('util')
2929

@@ -144,7 +144,7 @@ class Response {
144144
// 2. Set this’s headers to a new Headers object with this’s relevant
145145
// Realm, whose header list is this’s response’s header list and guard
146146
// is "response".
147-
this[kHeaders] = new Headers()
147+
this[kHeaders] = new Headers(kConstruct)
148148
this[kHeaders][kGuard] = 'response'
149149
this[kHeaders][kHeadersList] = this[kState].headersList
150150
this[kHeaders][kRealm] = this[kRealm]
@@ -514,11 +514,7 @@ webidl.converters.XMLHttpRequestBodyInit = function (V) {
514514
return webidl.converters.Blob(V, { strict: false })
515515
}
516516

517-
if (
518-
types.isAnyArrayBuffer(V) ||
519-
types.isTypedArray(V) ||
520-
types.isDataView(V)
521-
) {
517+
if (types.isArrayBuffer(V) || types.isTypedArray(V) || types.isDataView(V)) {
522518
return webidl.converters.BufferSource(V)
523519
}
524520

deps/undici/src/lib/handler/RetryHandler.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const assert = require('node:assert')
1+
const assert = require('assert')
22

33
const { kRetryHandlerDefaultRetry } = require('../core/symbols')
44
const { RequestRetryError } = require('../core/errors')
@@ -95,7 +95,7 @@ class RetryHandler {
9595
}
9696

9797
onBodySent (chunk) {
98-
return this.handler.onBodySent(chunk)
98+
if (this.handler.onBodySent) return this.handler.onBodySent(chunk)
9999
}
100100

101101
static [kRetryHandlerDefaultRetry] (err, { state, opts }, cb) {

deps/undici/src/lib/proxy-agent.js

+6-4
Original file line numberDiff line numberDiff line change
@@ -65,18 +65,20 @@ class ProxyAgent extends DispatcherBase {
6565
this[kProxyTls] = opts.proxyTls
6666
this[kProxyHeaders] = opts.headers || {}
6767

68+
const resolvedUrl = new URL(opts.uri)
69+
const { origin, port, host, username, password } = resolvedUrl
70+
6871
if (opts.auth && opts.token) {
6972
throw new InvalidArgumentError('opts.auth cannot be used in combination with opts.token')
7073
} else if (opts.auth) {
7174
/* @deprecated in favour of opts.token */
7275
this[kProxyHeaders]['proxy-authorization'] = `Basic ${opts.auth}`
7376
} else if (opts.token) {
7477
this[kProxyHeaders]['proxy-authorization'] = opts.token
78+
} else if (username && password) {
79+
this[kProxyHeaders]['proxy-authorization'] = `Basic ${Buffer.from(`${decodeURIComponent(username)}:${decodeURIComponent(password)}`).toString('base64')}`
7580
}
7681

77-
const resolvedUrl = new URL(opts.uri)
78-
const { origin, port, host } = resolvedUrl
79-
8082
const connect = buildConnector({ ...opts.proxyTls })
8183
this[kConnectEndpoint] = buildConnector({ ...opts.requestTls })
8284
this[kClient] = clientFactory(resolvedUrl, { connect })
@@ -100,7 +102,7 @@ class ProxyAgent extends DispatcherBase {
100102
})
101103
if (statusCode !== 200) {
102104
socket.on('error', () => {}).destroy()
103-
callback(new RequestAbortedError('Proxy response !== 200 when HTTP Tunneling'))
105+
callback(new RequestAbortedError(`Proxy response (${statusCode}) !== 200 when HTTP Tunneling`))
104106
}
105107
if (opts.protocol !== 'https:') {
106108
callback(null, socket)

0 commit comments

Comments
 (0)