mirror of
https://github.com/android-actions/setup-android.git
synced 2024-11-23 18:12:03 +00:00
Update dependencies and rebuild
This commit is contained in:
parent
0d0e8c3af6
commit
00854ea68c
3 changed files with 1960 additions and 2357 deletions
531
dist/index.js
vendored
531
dist/index.js
vendored
|
@ -2971,7 +2971,7 @@ class HttpClient {
|
||||||
if (this._keepAlive && useProxy) {
|
if (this._keepAlive && useProxy) {
|
||||||
agent = this._proxyAgent;
|
agent = this._proxyAgent;
|
||||||
}
|
}
|
||||||
if (this._keepAlive && !useProxy) {
|
if (!useProxy) {
|
||||||
agent = this._agent;
|
agent = this._agent;
|
||||||
}
|
}
|
||||||
// if agent is already assigned use that agent.
|
// if agent is already assigned use that agent.
|
||||||
|
@ -3003,16 +3003,12 @@ class HttpClient {
|
||||||
agent = tunnelAgent(agentOptions);
|
agent = tunnelAgent(agentOptions);
|
||||||
this._proxyAgent = agent;
|
this._proxyAgent = agent;
|
||||||
}
|
}
|
||||||
// if reusing agent across request and tunneling agent isn't assigned create a new agent
|
// if tunneling agent isn't assigned create a new agent
|
||||||
if (this._keepAlive && !agent) {
|
if (!agent) {
|
||||||
const options = { keepAlive: this._keepAlive, maxSockets };
|
const options = { keepAlive: this._keepAlive, maxSockets };
|
||||||
agent = usingSsl ? new https.Agent(options) : new http.Agent(options);
|
agent = usingSsl ? new https.Agent(options) : new http.Agent(options);
|
||||||
this._agent = agent;
|
this._agent = agent;
|
||||||
}
|
}
|
||||||
// if not using private agent and tunnel agent isn't setup then use global agent
|
|
||||||
if (!agent) {
|
|
||||||
agent = usingSsl ? https.globalAgent : http.globalAgent;
|
|
||||||
}
|
|
||||||
if (usingSsl && this._ignoreSslError) {
|
if (usingSsl && this._ignoreSslError) {
|
||||||
// we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process
|
// we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process
|
||||||
// http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options
|
// http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options
|
||||||
|
@ -7482,6 +7478,7 @@ function request (opts, callback) {
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = request
|
module.exports = request
|
||||||
|
module.exports.RequestHandler = RequestHandler
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
|
@ -8028,7 +8025,7 @@ module.exports = class BodyReadable extends Readable {
|
||||||
this
|
this
|
||||||
.on('close', function () {
|
.on('close', function () {
|
||||||
signalListenerCleanup()
|
signalListenerCleanup()
|
||||||
if (signal?.aborted) {
|
if (signal && signal.aborted) {
|
||||||
reject(signal.reason || Object.assign(new Error('The operation was aborted'), { name: 'AbortError' }))
|
reject(signal.reason || Object.assign(new Error('The operation was aborted'), { name: 'AbortError' }))
|
||||||
} else {
|
} else {
|
||||||
resolve(null)
|
resolve(null)
|
||||||
|
@ -9422,13 +9419,13 @@ module.exports = {
|
||||||
/***/ }),
|
/***/ }),
|
||||||
|
|
||||||
/***/ 9174:
|
/***/ 9174:
|
||||||
/***/ ((module) => {
|
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
kConstruct: Symbol('constructable')
|
kConstruct: (__nccwpck_require__(2785).kConstruct)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -10414,11 +10411,9 @@ class Parser {
|
||||||
socket[kReset] = true
|
socket[kReset] = true
|
||||||
}
|
}
|
||||||
|
|
||||||
let pause
|
const pause = request.onHeaders(statusCode, headers, this.resume, statusText) === false
|
||||||
try {
|
|
||||||
pause = request.onHeaders(statusCode, headers, this.resume, statusText) === false
|
if (request.aborted) {
|
||||||
} catch (err) {
|
|
||||||
util.destroy(socket, err)
|
|
||||||
return -1
|
return -1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10465,13 +10460,8 @@ class Parser {
|
||||||
|
|
||||||
this.bytesRead += buf.length
|
this.bytesRead += buf.length
|
||||||
|
|
||||||
try {
|
if (request.onData(buf) === false) {
|
||||||
if (request.onData(buf) === false) {
|
return constants.ERROR.PAUSED
|
||||||
return constants.ERROR.PAUSED
|
|
||||||
}
|
|
||||||
} catch (err) {
|
|
||||||
util.destroy(socket, err)
|
|
||||||
return -1
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10512,11 +10502,7 @@ class Parser {
|
||||||
return -1
|
return -1
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
request.onComplete(headers)
|
||||||
request.onComplete(headers)
|
|
||||||
} catch (err) {
|
|
||||||
errorRequest(client, request, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
client[kQueue][client[kRunningIdx]++] = null
|
client[kQueue][client[kRunningIdx]++] = null
|
||||||
|
|
||||||
|
@ -11302,13 +11288,17 @@ function writeH2 (client, session, request) {
|
||||||
})
|
})
|
||||||
|
|
||||||
stream.on('data', (chunk) => {
|
stream.on('data', (chunk) => {
|
||||||
if (request.onData(chunk) === false) stream.pause()
|
if (request.onData(chunk) === false) {
|
||||||
|
stream.pause()
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
stream.once('close', () => {
|
stream.once('close', () => {
|
||||||
h2State.openStreams -= 1
|
h2State.openStreams -= 1
|
||||||
// TODO(HTTP/2): unref only if current streams count is 0
|
// TODO(HTTP/2): unref only if current streams count is 0
|
||||||
if (h2State.openStreams === 0) session.unref()
|
if (h2State.openStreams === 0) {
|
||||||
|
session.unref()
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
stream.once('error', function (err) {
|
stream.once('error', function (err) {
|
||||||
|
@ -12876,6 +12866,132 @@ function onConnectTimeout (socket) {
|
||||||
module.exports = buildConnector
|
module.exports = buildConnector
|
||||||
|
|
||||||
|
|
||||||
|
/***/ }),
|
||||||
|
|
||||||
|
/***/ 4462:
|
||||||
|
/***/ ((module) => {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
|
||||||
|
/** @type {Record<string, string | undefined>} */
|
||||||
|
const headerNameLowerCasedRecord = {}
|
||||||
|
|
||||||
|
// https://developer.mozilla.org/docs/Web/HTTP/Headers
|
||||||
|
const wellknownHeaderNames = [
|
||||||
|
'Accept',
|
||||||
|
'Accept-Encoding',
|
||||||
|
'Accept-Language',
|
||||||
|
'Accept-Ranges',
|
||||||
|
'Access-Control-Allow-Credentials',
|
||||||
|
'Access-Control-Allow-Headers',
|
||||||
|
'Access-Control-Allow-Methods',
|
||||||
|
'Access-Control-Allow-Origin',
|
||||||
|
'Access-Control-Expose-Headers',
|
||||||
|
'Access-Control-Max-Age',
|
||||||
|
'Access-Control-Request-Headers',
|
||||||
|
'Access-Control-Request-Method',
|
||||||
|
'Age',
|
||||||
|
'Allow',
|
||||||
|
'Alt-Svc',
|
||||||
|
'Alt-Used',
|
||||||
|
'Authorization',
|
||||||
|
'Cache-Control',
|
||||||
|
'Clear-Site-Data',
|
||||||
|
'Connection',
|
||||||
|
'Content-Disposition',
|
||||||
|
'Content-Encoding',
|
||||||
|
'Content-Language',
|
||||||
|
'Content-Length',
|
||||||
|
'Content-Location',
|
||||||
|
'Content-Range',
|
||||||
|
'Content-Security-Policy',
|
||||||
|
'Content-Security-Policy-Report-Only',
|
||||||
|
'Content-Type',
|
||||||
|
'Cookie',
|
||||||
|
'Cross-Origin-Embedder-Policy',
|
||||||
|
'Cross-Origin-Opener-Policy',
|
||||||
|
'Cross-Origin-Resource-Policy',
|
||||||
|
'Date',
|
||||||
|
'Device-Memory',
|
||||||
|
'Downlink',
|
||||||
|
'ECT',
|
||||||
|
'ETag',
|
||||||
|
'Expect',
|
||||||
|
'Expect-CT',
|
||||||
|
'Expires',
|
||||||
|
'Forwarded',
|
||||||
|
'From',
|
||||||
|
'Host',
|
||||||
|
'If-Match',
|
||||||
|
'If-Modified-Since',
|
||||||
|
'If-None-Match',
|
||||||
|
'If-Range',
|
||||||
|
'If-Unmodified-Since',
|
||||||
|
'Keep-Alive',
|
||||||
|
'Last-Modified',
|
||||||
|
'Link',
|
||||||
|
'Location',
|
||||||
|
'Max-Forwards',
|
||||||
|
'Origin',
|
||||||
|
'Permissions-Policy',
|
||||||
|
'Pragma',
|
||||||
|
'Proxy-Authenticate',
|
||||||
|
'Proxy-Authorization',
|
||||||
|
'RTT',
|
||||||
|
'Range',
|
||||||
|
'Referer',
|
||||||
|
'Referrer-Policy',
|
||||||
|
'Refresh',
|
||||||
|
'Retry-After',
|
||||||
|
'Sec-WebSocket-Accept',
|
||||||
|
'Sec-WebSocket-Extensions',
|
||||||
|
'Sec-WebSocket-Key',
|
||||||
|
'Sec-WebSocket-Protocol',
|
||||||
|
'Sec-WebSocket-Version',
|
||||||
|
'Server',
|
||||||
|
'Server-Timing',
|
||||||
|
'Service-Worker-Allowed',
|
||||||
|
'Service-Worker-Navigation-Preload',
|
||||||
|
'Set-Cookie',
|
||||||
|
'SourceMap',
|
||||||
|
'Strict-Transport-Security',
|
||||||
|
'Supports-Loading-Mode',
|
||||||
|
'TE',
|
||||||
|
'Timing-Allow-Origin',
|
||||||
|
'Trailer',
|
||||||
|
'Transfer-Encoding',
|
||||||
|
'Upgrade',
|
||||||
|
'Upgrade-Insecure-Requests',
|
||||||
|
'User-Agent',
|
||||||
|
'Vary',
|
||||||
|
'Via',
|
||||||
|
'WWW-Authenticate',
|
||||||
|
'X-Content-Type-Options',
|
||||||
|
'X-DNS-Prefetch-Control',
|
||||||
|
'X-Frame-Options',
|
||||||
|
'X-Permitted-Cross-Domain-Policies',
|
||||||
|
'X-Powered-By',
|
||||||
|
'X-Requested-With',
|
||||||
|
'X-XSS-Protection'
|
||||||
|
]
|
||||||
|
|
||||||
|
for (let i = 0; i < wellknownHeaderNames.length; ++i) {
|
||||||
|
const key = wellknownHeaderNames[i]
|
||||||
|
const lowerCasedKey = key.toLowerCase()
|
||||||
|
headerNameLowerCasedRecord[key] = headerNameLowerCasedRecord[lowerCasedKey] =
|
||||||
|
lowerCasedKey
|
||||||
|
}
|
||||||
|
|
||||||
|
// Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`.
|
||||||
|
Object.setPrototypeOf(headerNameLowerCasedRecord, null)
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
wellknownHeaderNames,
|
||||||
|
headerNameLowerCasedRecord
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
|
|
||||||
/***/ 8045:
|
/***/ 8045:
|
||||||
|
@ -13351,7 +13467,11 @@ class Request {
|
||||||
|
|
||||||
onBodySent (chunk) {
|
onBodySent (chunk) {
|
||||||
if (this[kHandler].onBodySent) {
|
if (this[kHandler].onBodySent) {
|
||||||
return this[kHandler].onBodySent(chunk)
|
try {
|
||||||
|
return this[kHandler].onBodySent(chunk)
|
||||||
|
} catch (err) {
|
||||||
|
this.abort(err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13361,7 +13481,11 @@ class Request {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this[kHandler].onRequestSent) {
|
if (this[kHandler].onRequestSent) {
|
||||||
return this[kHandler].onRequestSent()
|
try {
|
||||||
|
return this[kHandler].onRequestSent()
|
||||||
|
} catch (err) {
|
||||||
|
this.abort(err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13385,14 +13509,23 @@ class Request {
|
||||||
channels.headers.publish({ request: this, response: { statusCode, headers, statusText } })
|
channels.headers.publish({ request: this, response: { statusCode, headers, statusText } })
|
||||||
}
|
}
|
||||||
|
|
||||||
return this[kHandler].onHeaders(statusCode, headers, resume, statusText)
|
try {
|
||||||
|
return this[kHandler].onHeaders(statusCode, headers, resume, statusText)
|
||||||
|
} catch (err) {
|
||||||
|
this.abort(err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
onData (chunk) {
|
onData (chunk) {
|
||||||
assert(!this.aborted)
|
assert(!this.aborted)
|
||||||
assert(!this.completed)
|
assert(!this.completed)
|
||||||
|
|
||||||
return this[kHandler].onData(chunk)
|
try {
|
||||||
|
return this[kHandler].onData(chunk)
|
||||||
|
} catch (err) {
|
||||||
|
this.abort(err)
|
||||||
|
return false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
onUpgrade (statusCode, headers, socket) {
|
onUpgrade (statusCode, headers, socket) {
|
||||||
|
@ -13411,7 +13544,13 @@ class Request {
|
||||||
if (channels.trailers.hasSubscribers) {
|
if (channels.trailers.hasSubscribers) {
|
||||||
channels.trailers.publish({ request: this, trailers })
|
channels.trailers.publish({ request: this, trailers })
|
||||||
}
|
}
|
||||||
return this[kHandler].onComplete(trailers)
|
|
||||||
|
try {
|
||||||
|
return this[kHandler].onComplete(trailers)
|
||||||
|
} catch (err) {
|
||||||
|
// TODO (fix): This might be a bad idea?
|
||||||
|
this.onError(err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
onError (error) {
|
onError (error) {
|
||||||
|
@ -13425,6 +13564,7 @@ class Request {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
this.aborted = true
|
this.aborted = true
|
||||||
|
|
||||||
return this[kHandler].onError(error)
|
return this[kHandler].onError(error)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13662,7 +13802,8 @@ module.exports = {
|
||||||
kHTTP1BuildRequest: Symbol('http1 build request'),
|
kHTTP1BuildRequest: Symbol('http1 build request'),
|
||||||
kHTTP2CopyHeaders: Symbol('http2 copy headers'),
|
kHTTP2CopyHeaders: Symbol('http2 copy headers'),
|
||||||
kHTTPConnVersion: Symbol('http connection version'),
|
kHTTPConnVersion: Symbol('http connection version'),
|
||||||
kRetryHandlerDefaultRetry: Symbol('retry agent default retry')
|
kRetryHandlerDefaultRetry: Symbol('retry agent default retry'),
|
||||||
|
kConstruct: Symbol('constructable')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -13683,6 +13824,7 @@ const { InvalidArgumentError } = __nccwpck_require__(8045)
|
||||||
const { Blob } = __nccwpck_require__(4300)
|
const { Blob } = __nccwpck_require__(4300)
|
||||||
const nodeUtil = __nccwpck_require__(3837)
|
const nodeUtil = __nccwpck_require__(3837)
|
||||||
const { stringify } = __nccwpck_require__(3477)
|
const { stringify } = __nccwpck_require__(3477)
|
||||||
|
const { headerNameLowerCasedRecord } = __nccwpck_require__(4462)
|
||||||
|
|
||||||
const [nodeMajor, nodeMinor] = process.versions.node.split('.').map(v => Number(v))
|
const [nodeMajor, nodeMinor] = process.versions.node.split('.').map(v => Number(v))
|
||||||
|
|
||||||
|
@ -13892,6 +14034,15 @@ function parseKeepAliveTimeout (val) {
|
||||||
return m ? parseInt(m[1], 10) * 1000 : null
|
return m ? parseInt(m[1], 10) * 1000 : null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves a header name and returns its lowercase value.
|
||||||
|
* @param {string | Buffer} value Header name
|
||||||
|
* @returns {string}
|
||||||
|
*/
|
||||||
|
function headerNameToString (value) {
|
||||||
|
return headerNameLowerCasedRecord[value] || value.toLowerCase()
|
||||||
|
}
|
||||||
|
|
||||||
function parseHeaders (headers, obj = {}) {
|
function parseHeaders (headers, obj = {}) {
|
||||||
// For H2 support
|
// For H2 support
|
||||||
if (!Array.isArray(headers)) return headers
|
if (!Array.isArray(headers)) return headers
|
||||||
|
@ -14163,6 +14314,7 @@ module.exports = {
|
||||||
isIterable,
|
isIterable,
|
||||||
isAsyncIterable,
|
isAsyncIterable,
|
||||||
isDestroyed,
|
isDestroyed,
|
||||||
|
headerNameToString,
|
||||||
parseRawHeaders,
|
parseRawHeaders,
|
||||||
parseHeaders,
|
parseHeaders,
|
||||||
parseKeepAliveTimeout,
|
parseKeepAliveTimeout,
|
||||||
|
@ -15310,17 +15462,14 @@ function dataURLProcessor (dataURL) {
|
||||||
* @param {boolean} excludeFragment
|
* @param {boolean} excludeFragment
|
||||||
*/
|
*/
|
||||||
function URLSerializer (url, excludeFragment = false) {
|
function URLSerializer (url, excludeFragment = false) {
|
||||||
const href = url.href
|
|
||||||
|
|
||||||
if (!excludeFragment) {
|
if (!excludeFragment) {
|
||||||
return href
|
return url.href
|
||||||
}
|
}
|
||||||
|
|
||||||
const hash = href.lastIndexOf('#')
|
const href = url.href
|
||||||
if (hash === -1) {
|
const hashLength = url.hash.length
|
||||||
return href
|
|
||||||
}
|
return hashLength === 0 ? href : href.substring(0, href.length - hashLength)
|
||||||
return href.slice(0, hash)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points
|
// https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points
|
||||||
|
@ -16504,7 +16653,7 @@ module.exports = {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const { kHeadersList } = __nccwpck_require__(2785)
|
const { kHeadersList, kConstruct } = __nccwpck_require__(2785)
|
||||||
const { kGuard } = __nccwpck_require__(5861)
|
const { kGuard } = __nccwpck_require__(5861)
|
||||||
const { kEnumerableProperty } = __nccwpck_require__(3983)
|
const { kEnumerableProperty } = __nccwpck_require__(3983)
|
||||||
const {
|
const {
|
||||||
|
@ -16742,6 +16891,9 @@ class HeadersList {
|
||||||
// https://fetch.spec.whatwg.org/#headers-class
|
// https://fetch.spec.whatwg.org/#headers-class
|
||||||
class Headers {
|
class Headers {
|
||||||
constructor (init = undefined) {
|
constructor (init = undefined) {
|
||||||
|
if (init === kConstruct) {
|
||||||
|
return
|
||||||
|
}
|
||||||
this[kHeadersList] = new HeadersList()
|
this[kHeadersList] = new HeadersList()
|
||||||
|
|
||||||
// The new Headers(init) constructor steps are:
|
// The new Headers(init) constructor steps are:
|
||||||
|
@ -17382,7 +17534,7 @@ function finalizeAndReportTiming (response, initiatorType = 'other') {
|
||||||
}
|
}
|
||||||
|
|
||||||
// 8. If response’s timing allow passed flag is not set, then:
|
// 8. If response’s timing allow passed flag is not set, then:
|
||||||
if (!timingInfo.timingAllowPassed) {
|
if (!response.timingAllowPassed) {
|
||||||
// 1. Set timingInfo to a the result of creating an opaque timing info for timingInfo.
|
// 1. Set timingInfo to a the result of creating an opaque timing info for timingInfo.
|
||||||
timingInfo = createOpaqueTimingInfo({
|
timingInfo = createOpaqueTimingInfo({
|
||||||
startTime: timingInfo.startTime
|
startTime: timingInfo.startTime
|
||||||
|
@ -18299,6 +18451,9 @@ function httpRedirectFetch (fetchParams, response) {
|
||||||
// https://fetch.spec.whatwg.org/#cors-non-wildcard-request-header-name
|
// https://fetch.spec.whatwg.org/#cors-non-wildcard-request-header-name
|
||||||
request.headersList.delete('authorization')
|
request.headersList.delete('authorization')
|
||||||
|
|
||||||
|
// https://fetch.spec.whatwg.org/#authentication-entries
|
||||||
|
request.headersList.delete('proxy-authorization', true)
|
||||||
|
|
||||||
// "Cookie" and "Host" are forbidden request-headers, which undici doesn't implement.
|
// "Cookie" and "Host" are forbidden request-headers, which undici doesn't implement.
|
||||||
request.headersList.delete('cookie')
|
request.headersList.delete('cookie')
|
||||||
request.headersList.delete('host')
|
request.headersList.delete('host')
|
||||||
|
@ -19259,7 +19414,8 @@ const {
|
||||||
isValidHTTPToken,
|
isValidHTTPToken,
|
||||||
sameOrigin,
|
sameOrigin,
|
||||||
normalizeMethod,
|
normalizeMethod,
|
||||||
makePolicyContainer
|
makePolicyContainer,
|
||||||
|
normalizeMethodRecord
|
||||||
} = __nccwpck_require__(2538)
|
} = __nccwpck_require__(2538)
|
||||||
const {
|
const {
|
||||||
forbiddenMethodsSet,
|
forbiddenMethodsSet,
|
||||||
|
@ -19276,13 +19432,12 @@ const { kHeaders, kSignal, kState, kGuard, kRealm } = __nccwpck_require__(5861)
|
||||||
const { webidl } = __nccwpck_require__(1744)
|
const { webidl } = __nccwpck_require__(1744)
|
||||||
const { getGlobalOrigin } = __nccwpck_require__(1246)
|
const { getGlobalOrigin } = __nccwpck_require__(1246)
|
||||||
const { URLSerializer } = __nccwpck_require__(685)
|
const { URLSerializer } = __nccwpck_require__(685)
|
||||||
const { kHeadersList } = __nccwpck_require__(2785)
|
const { kHeadersList, kConstruct } = __nccwpck_require__(2785)
|
||||||
const assert = __nccwpck_require__(9491)
|
const assert = __nccwpck_require__(9491)
|
||||||
const { getMaxListeners, setMaxListeners, getEventListeners, defaultMaxListeners } = __nccwpck_require__(2361)
|
const { getMaxListeners, setMaxListeners, getEventListeners, defaultMaxListeners } = __nccwpck_require__(2361)
|
||||||
|
|
||||||
let TransformStream = globalThis.TransformStream
|
let TransformStream = globalThis.TransformStream
|
||||||
|
|
||||||
const kInit = Symbol('init')
|
|
||||||
const kAbortController = Symbol('abortController')
|
const kAbortController = Symbol('abortController')
|
||||||
|
|
||||||
const requestFinalizer = new FinalizationRegistry(({ signal, abort }) => {
|
const requestFinalizer = new FinalizationRegistry(({ signal, abort }) => {
|
||||||
|
@ -19293,7 +19448,7 @@ const requestFinalizer = new FinalizationRegistry(({ signal, abort }) => {
|
||||||
class Request {
|
class Request {
|
||||||
// https://fetch.spec.whatwg.org/#dom-request
|
// https://fetch.spec.whatwg.org/#dom-request
|
||||||
constructor (input, init = {}) {
|
constructor (input, init = {}) {
|
||||||
if (input === kInit) {
|
if (input === kConstruct) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19432,8 +19587,10 @@ class Request {
|
||||||
urlList: [...request.urlList]
|
urlList: [...request.urlList]
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const initHasKey = Object.keys(init).length !== 0
|
||||||
|
|
||||||
// 13. If init is not empty, then:
|
// 13. If init is not empty, then:
|
||||||
if (Object.keys(init).length > 0) {
|
if (initHasKey) {
|
||||||
// 1. If request’s mode is "navigate", then set it to "same-origin".
|
// 1. If request’s mode is "navigate", then set it to "same-origin".
|
||||||
if (request.mode === 'navigate') {
|
if (request.mode === 'navigate') {
|
||||||
request.mode = 'same-origin'
|
request.mode = 'same-origin'
|
||||||
|
@ -19548,7 +19705,7 @@ class Request {
|
||||||
}
|
}
|
||||||
|
|
||||||
// 23. If init["integrity"] exists, then set request’s integrity metadata to it.
|
// 23. If init["integrity"] exists, then set request’s integrity metadata to it.
|
||||||
if (init.integrity !== undefined && init.integrity != null) {
|
if (init.integrity != null) {
|
||||||
request.integrity = String(init.integrity)
|
request.integrity = String(init.integrity)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19564,16 +19721,16 @@ class Request {
|
||||||
|
|
||||||
// 2. If method is not a method or method is a forbidden method, then
|
// 2. If method is not a method or method is a forbidden method, then
|
||||||
// throw a TypeError.
|
// throw a TypeError.
|
||||||
if (!isValidHTTPToken(init.method)) {
|
if (!isValidHTTPToken(method)) {
|
||||||
throw new TypeError(`'${init.method}' is not a valid HTTP method.`)
|
throw new TypeError(`'${method}' is not a valid HTTP method.`)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (forbiddenMethodsSet.has(method.toUpperCase())) {
|
if (forbiddenMethodsSet.has(method.toUpperCase())) {
|
||||||
throw new TypeError(`'${init.method}' HTTP method is unsupported.`)
|
throw new TypeError(`'${method}' HTTP method is unsupported.`)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3. Normalize method.
|
// 3. Normalize method.
|
||||||
method = normalizeMethod(init.method)
|
method = normalizeMethodRecord[method] ?? normalizeMethod(method)
|
||||||
|
|
||||||
// 4. Set request’s method to method.
|
// 4. Set request’s method to method.
|
||||||
request.method = method
|
request.method = method
|
||||||
|
@ -19644,7 +19801,7 @@ class Request {
|
||||||
// 30. Set this’s headers to a new Headers object with this’s relevant
|
// 30. Set this’s headers to a new Headers object with this’s relevant
|
||||||
// Realm, whose header list is request’s header list and guard is
|
// Realm, whose header list is request’s header list and guard is
|
||||||
// "request".
|
// "request".
|
||||||
this[kHeaders] = new Headers()
|
this[kHeaders] = new Headers(kConstruct)
|
||||||
this[kHeaders][kHeadersList] = request.headersList
|
this[kHeaders][kHeadersList] = request.headersList
|
||||||
this[kHeaders][kGuard] = 'request'
|
this[kHeaders][kGuard] = 'request'
|
||||||
this[kHeaders][kRealm] = this[kRealm]
|
this[kHeaders][kRealm] = this[kRealm]
|
||||||
|
@ -19664,25 +19821,25 @@ class Request {
|
||||||
}
|
}
|
||||||
|
|
||||||
// 32. If init is not empty, then:
|
// 32. If init is not empty, then:
|
||||||
if (Object.keys(init).length !== 0) {
|
if (initHasKey) {
|
||||||
|
/** @type {HeadersList} */
|
||||||
|
const headersList = this[kHeaders][kHeadersList]
|
||||||
// 1. Let headers be a copy of this’s headers and its associated header
|
// 1. Let headers be a copy of this’s headers and its associated header
|
||||||
// list.
|
// list.
|
||||||
let headers = new Headers(this[kHeaders])
|
|
||||||
|
|
||||||
// 2. If init["headers"] exists, then set headers to init["headers"].
|
// 2. If init["headers"] exists, then set headers to init["headers"].
|
||||||
if (init.headers !== undefined) {
|
const headers = init.headers !== undefined ? init.headers : new HeadersList(headersList)
|
||||||
headers = init.headers
|
|
||||||
}
|
|
||||||
|
|
||||||
// 3. Empty this’s headers’s header list.
|
// 3. Empty this’s headers’s header list.
|
||||||
this[kHeaders][kHeadersList].clear()
|
headersList.clear()
|
||||||
|
|
||||||
// 4. If headers is a Headers object, then for each header in its header
|
// 4. If headers is a Headers object, then for each header in its header
|
||||||
// list, append header’s name/header’s value to this’s headers.
|
// list, append header’s name/header’s value to this’s headers.
|
||||||
if (headers.constructor.name === 'Headers') {
|
if (headers instanceof HeadersList) {
|
||||||
for (const [key, val] of headers) {
|
for (const [key, val] of headers) {
|
||||||
this[kHeaders].append(key, val)
|
headersList.append(key, val)
|
||||||
}
|
}
|
||||||
|
// Note: Copy the `set-cookie` meta-data.
|
||||||
|
headersList.cookies = headers.cookies
|
||||||
} else {
|
} else {
|
||||||
// 5. Otherwise, fill this’s headers with headers.
|
// 5. Otherwise, fill this’s headers with headers.
|
||||||
fillHeaders(this[kHeaders], headers)
|
fillHeaders(this[kHeaders], headers)
|
||||||
|
@ -19971,10 +20128,10 @@ class Request {
|
||||||
|
|
||||||
// 3. Let clonedRequestObject be the result of creating a Request object,
|
// 3. Let clonedRequestObject be the result of creating a Request object,
|
||||||
// given clonedRequest, this’s headers’s guard, and this’s relevant Realm.
|
// given clonedRequest, this’s headers’s guard, and this’s relevant Realm.
|
||||||
const clonedRequestObject = new Request(kInit)
|
const clonedRequestObject = new Request(kConstruct)
|
||||||
clonedRequestObject[kState] = clonedRequest
|
clonedRequestObject[kState] = clonedRequest
|
||||||
clonedRequestObject[kRealm] = this[kRealm]
|
clonedRequestObject[kRealm] = this[kRealm]
|
||||||
clonedRequestObject[kHeaders] = new Headers()
|
clonedRequestObject[kHeaders] = new Headers(kConstruct)
|
||||||
clonedRequestObject[kHeaders][kHeadersList] = clonedRequest.headersList
|
clonedRequestObject[kHeaders][kHeadersList] = clonedRequest.headersList
|
||||||
clonedRequestObject[kHeaders][kGuard] = this[kHeaders][kGuard]
|
clonedRequestObject[kHeaders][kGuard] = this[kHeaders][kGuard]
|
||||||
clonedRequestObject[kHeaders][kRealm] = this[kHeaders][kRealm]
|
clonedRequestObject[kHeaders][kRealm] = this[kHeaders][kRealm]
|
||||||
|
@ -20224,7 +20381,7 @@ const { webidl } = __nccwpck_require__(1744)
|
||||||
const { FormData } = __nccwpck_require__(2015)
|
const { FormData } = __nccwpck_require__(2015)
|
||||||
const { getGlobalOrigin } = __nccwpck_require__(1246)
|
const { getGlobalOrigin } = __nccwpck_require__(1246)
|
||||||
const { URLSerializer } = __nccwpck_require__(685)
|
const { URLSerializer } = __nccwpck_require__(685)
|
||||||
const { kHeadersList } = __nccwpck_require__(2785)
|
const { kHeadersList, kConstruct } = __nccwpck_require__(2785)
|
||||||
const assert = __nccwpck_require__(9491)
|
const assert = __nccwpck_require__(9491)
|
||||||
const { types } = __nccwpck_require__(3837)
|
const { types } = __nccwpck_require__(3837)
|
||||||
|
|
||||||
|
@ -20345,7 +20502,7 @@ class Response {
|
||||||
// 2. Set this’s headers to a new Headers object with this’s relevant
|
// 2. Set this’s headers to a new Headers object with this’s relevant
|
||||||
// Realm, whose header list is this’s response’s header list and guard
|
// Realm, whose header list is this’s response’s header list and guard
|
||||||
// is "response".
|
// is "response".
|
||||||
this[kHeaders] = new Headers()
|
this[kHeaders] = new Headers(kConstruct)
|
||||||
this[kHeaders][kGuard] = 'response'
|
this[kHeaders][kGuard] = 'response'
|
||||||
this[kHeaders][kHeadersList] = this[kState].headersList
|
this[kHeaders][kHeadersList] = this[kState].headersList
|
||||||
this[kHeaders][kRealm] = this[kRealm]
|
this[kHeaders][kRealm] = this[kRealm]
|
||||||
|
@ -20715,11 +20872,7 @@ webidl.converters.XMLHttpRequestBodyInit = function (V) {
|
||||||
return webidl.converters.Blob(V, { strict: false })
|
return webidl.converters.Blob(V, { strict: false })
|
||||||
}
|
}
|
||||||
|
|
||||||
if (
|
if (types.isArrayBuffer(V) || types.isTypedArray(V) || types.isDataView(V)) {
|
||||||
types.isAnyArrayBuffer(V) ||
|
|
||||||
types.isTypedArray(V) ||
|
|
||||||
types.isDataView(V)
|
|
||||||
) {
|
|
||||||
return webidl.converters.BufferSource(V)
|
return webidl.converters.BufferSource(V)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20809,14 +20962,18 @@ const { isBlobLike, toUSVString, ReadableStreamFrom } = __nccwpck_require__(3983
|
||||||
const assert = __nccwpck_require__(9491)
|
const assert = __nccwpck_require__(9491)
|
||||||
const { isUint8Array } = __nccwpck_require__(9830)
|
const { isUint8Array } = __nccwpck_require__(9830)
|
||||||
|
|
||||||
|
let supportedHashes = []
|
||||||
|
|
||||||
// https://nodejs.org/api/crypto.html#determining-if-crypto-support-is-unavailable
|
// https://nodejs.org/api/crypto.html#determining-if-crypto-support-is-unavailable
|
||||||
/** @type {import('crypto')|undefined} */
|
/** @type {import('crypto')|undefined} */
|
||||||
let crypto
|
let crypto
|
||||||
|
|
||||||
try {
|
try {
|
||||||
crypto = __nccwpck_require__(6113)
|
crypto = __nccwpck_require__(6113)
|
||||||
|
const possibleRelevantHashes = ['sha256', 'sha384', 'sha512']
|
||||||
|
supportedHashes = crypto.getHashes().filter((hash) => possibleRelevantHashes.includes(hash))
|
||||||
|
/* c8 ignore next 3 */
|
||||||
} catch {
|
} catch {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function responseURL (response) {
|
function responseURL (response) {
|
||||||
|
@ -21344,66 +21501,56 @@ function bytesMatch (bytes, metadataList) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3. If parsedMetadata is the empty set, return true.
|
// 3. If response is not eligible for integrity validation, return false.
|
||||||
|
// TODO
|
||||||
|
|
||||||
|
// 4. If parsedMetadata is the empty set, return true.
|
||||||
if (parsedMetadata.length === 0) {
|
if (parsedMetadata.length === 0) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
// 4. Let metadata be the result of getting the strongest
|
// 5. Let metadata be the result of getting the strongest
|
||||||
// metadata from parsedMetadata.
|
// metadata from parsedMetadata.
|
||||||
const list = parsedMetadata.sort((c, d) => d.algo.localeCompare(c.algo))
|
const strongest = getStrongestMetadata(parsedMetadata)
|
||||||
// get the strongest algorithm
|
const metadata = filterMetadataListByAlgorithm(parsedMetadata, strongest)
|
||||||
const strongest = list[0].algo
|
|
||||||
// get all entries that use the strongest algorithm; ignore weaker
|
|
||||||
const metadata = list.filter((item) => item.algo === strongest)
|
|
||||||
|
|
||||||
// 5. For each item in metadata:
|
// 6. For each item in metadata:
|
||||||
for (const item of metadata) {
|
for (const item of metadata) {
|
||||||
// 1. Let algorithm be the alg component of item.
|
// 1. Let algorithm be the alg component of item.
|
||||||
const algorithm = item.algo
|
const algorithm = item.algo
|
||||||
|
|
||||||
// 2. Let expectedValue be the val component of item.
|
// 2. Let expectedValue be the val component of item.
|
||||||
let expectedValue = item.hash
|
const expectedValue = item.hash
|
||||||
|
|
||||||
// See https://github.com/web-platform-tests/wpt/commit/e4c5cc7a5e48093220528dfdd1c4012dc3837a0e
|
// See https://github.com/web-platform-tests/wpt/commit/e4c5cc7a5e48093220528dfdd1c4012dc3837a0e
|
||||||
// "be liberal with padding". This is annoying, and it's not even in the spec.
|
// "be liberal with padding". This is annoying, and it's not even in the spec.
|
||||||
|
|
||||||
if (expectedValue.endsWith('==')) {
|
|
||||||
expectedValue = expectedValue.slice(0, -2)
|
|
||||||
}
|
|
||||||
|
|
||||||
// 3. Let actualValue be the result of applying algorithm to bytes.
|
// 3. Let actualValue be the result of applying algorithm to bytes.
|
||||||
let actualValue = crypto.createHash(algorithm).update(bytes).digest('base64')
|
let actualValue = crypto.createHash(algorithm).update(bytes).digest('base64')
|
||||||
|
|
||||||
if (actualValue.endsWith('==')) {
|
if (actualValue[actualValue.length - 1] === '=') {
|
||||||
actualValue = actualValue.slice(0, -2)
|
if (actualValue[actualValue.length - 2] === '=') {
|
||||||
|
actualValue = actualValue.slice(0, -2)
|
||||||
|
} else {
|
||||||
|
actualValue = actualValue.slice(0, -1)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 4. If actualValue is a case-sensitive match for expectedValue,
|
// 4. If actualValue is a case-sensitive match for expectedValue,
|
||||||
// return true.
|
// return true.
|
||||||
if (actualValue === expectedValue) {
|
if (compareBase64Mixed(actualValue, expectedValue)) {
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
let actualBase64URL = crypto.createHash(algorithm).update(bytes).digest('base64url')
|
|
||||||
|
|
||||||
if (actualBase64URL.endsWith('==')) {
|
|
||||||
actualBase64URL = actualBase64URL.slice(0, -2)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (actualBase64URL === expectedValue) {
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 6. Return false.
|
// 7. Return false.
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://w3c.github.io/webappsec-subresource-integrity/#grammardef-hash-with-options
|
// https://w3c.github.io/webappsec-subresource-integrity/#grammardef-hash-with-options
|
||||||
// https://www.w3.org/TR/CSP2/#source-list-syntax
|
// https://www.w3.org/TR/CSP2/#source-list-syntax
|
||||||
// https://www.rfc-editor.org/rfc/rfc5234#appendix-B.1
|
// https://www.rfc-editor.org/rfc/rfc5234#appendix-B.1
|
||||||
const parseHashWithOptions = /((?<algo>sha256|sha384|sha512)-(?<hash>[A-z0-9+/]{1}.*={0,2}))( +[\x21-\x7e]?)?/i
|
const parseHashWithOptions = /(?<algo>sha256|sha384|sha512)-((?<hash>[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\s|$)( +[!-~]*)?)?/i
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see https://w3c.github.io/webappsec-subresource-integrity/#parse-metadata
|
* @see https://w3c.github.io/webappsec-subresource-integrity/#parse-metadata
|
||||||
|
@ -21417,8 +21564,6 @@ function parseMetadata (metadata) {
|
||||||
// 2. Let empty be equal to true.
|
// 2. Let empty be equal to true.
|
||||||
let empty = true
|
let empty = true
|
||||||
|
|
||||||
const supportedHashes = crypto.getHashes()
|
|
||||||
|
|
||||||
// 3. For each token returned by splitting metadata on spaces:
|
// 3. For each token returned by splitting metadata on spaces:
|
||||||
for (const token of metadata.split(' ')) {
|
for (const token of metadata.split(' ')) {
|
||||||
// 1. Set empty to false.
|
// 1. Set empty to false.
|
||||||
|
@ -21428,7 +21573,11 @@ function parseMetadata (metadata) {
|
||||||
const parsedToken = parseHashWithOptions.exec(token)
|
const parsedToken = parseHashWithOptions.exec(token)
|
||||||
|
|
||||||
// 3. If token does not parse, continue to the next token.
|
// 3. If token does not parse, continue to the next token.
|
||||||
if (parsedToken === null || parsedToken.groups === undefined) {
|
if (
|
||||||
|
parsedToken === null ||
|
||||||
|
parsedToken.groups === undefined ||
|
||||||
|
parsedToken.groups.algo === undefined
|
||||||
|
) {
|
||||||
// Note: Chromium blocks the request at this point, but Firefox
|
// Note: Chromium blocks the request at this point, but Firefox
|
||||||
// gives a warning that an invalid integrity was given. The
|
// gives a warning that an invalid integrity was given. The
|
||||||
// correct behavior is to ignore these, and subsequently not
|
// correct behavior is to ignore these, and subsequently not
|
||||||
|
@ -21437,11 +21586,11 @@ function parseMetadata (metadata) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// 4. Let algorithm be the hash-algo component of token.
|
// 4. Let algorithm be the hash-algo component of token.
|
||||||
const algorithm = parsedToken.groups.algo
|
const algorithm = parsedToken.groups.algo.toLowerCase()
|
||||||
|
|
||||||
// 5. If algorithm is a hash function recognized by the user
|
// 5. If algorithm is a hash function recognized by the user
|
||||||
// agent, add the parsed token to result.
|
// agent, add the parsed token to result.
|
||||||
if (supportedHashes.includes(algorithm.toLowerCase())) {
|
if (supportedHashes.includes(algorithm)) {
|
||||||
result.push(parsedToken.groups)
|
result.push(parsedToken.groups)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -21454,6 +21603,82 @@ function parseMetadata (metadata) {
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {{ algo: 'sha256' | 'sha384' | 'sha512' }[]} metadataList
|
||||||
|
*/
|
||||||
|
function getStrongestMetadata (metadataList) {
|
||||||
|
// Let algorithm be the algo component of the first item in metadataList.
|
||||||
|
// Can be sha256
|
||||||
|
let algorithm = metadataList[0].algo
|
||||||
|
// If the algorithm is sha512, then it is the strongest
|
||||||
|
// and we can return immediately
|
||||||
|
if (algorithm[3] === '5') {
|
||||||
|
return algorithm
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let i = 1; i < metadataList.length; ++i) {
|
||||||
|
const metadata = metadataList[i]
|
||||||
|
// If the algorithm is sha512, then it is the strongest
|
||||||
|
// and we can break the loop immediately
|
||||||
|
if (metadata.algo[3] === '5') {
|
||||||
|
algorithm = 'sha512'
|
||||||
|
break
|
||||||
|
// If the algorithm is sha384, then a potential sha256 or sha384 is ignored
|
||||||
|
} else if (algorithm[3] === '3') {
|
||||||
|
continue
|
||||||
|
// algorithm is sha256, check if algorithm is sha384 and if so, set it as
|
||||||
|
// the strongest
|
||||||
|
} else if (metadata.algo[3] === '3') {
|
||||||
|
algorithm = 'sha384'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return algorithm
|
||||||
|
}
|
||||||
|
|
||||||
|
function filterMetadataListByAlgorithm (metadataList, algorithm) {
|
||||||
|
if (metadataList.length === 1) {
|
||||||
|
return metadataList
|
||||||
|
}
|
||||||
|
|
||||||
|
let pos = 0
|
||||||
|
for (let i = 0; i < metadataList.length; ++i) {
|
||||||
|
if (metadataList[i].algo === algorithm) {
|
||||||
|
metadataList[pos++] = metadataList[i]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
metadataList.length = pos
|
||||||
|
|
||||||
|
return metadataList
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Compares two base64 strings, allowing for base64url
|
||||||
|
* in the second string.
|
||||||
|
*
|
||||||
|
* @param {string} actualValue always base64
|
||||||
|
* @param {string} expectedValue base64 or base64url
|
||||||
|
* @returns {boolean}
|
||||||
|
*/
|
||||||
|
function compareBase64Mixed (actualValue, expectedValue) {
|
||||||
|
if (actualValue.length !== expectedValue.length) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
for (let i = 0; i < actualValue.length; ++i) {
|
||||||
|
if (actualValue[i] !== expectedValue[i]) {
|
||||||
|
if (
|
||||||
|
(actualValue[i] === '+' && expectedValue[i] === '-') ||
|
||||||
|
(actualValue[i] === '/' && expectedValue[i] === '_')
|
||||||
|
) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
// https://w3c.github.io/webappsec-upgrade-insecure-requests/#upgrade-request
|
// https://w3c.github.io/webappsec-upgrade-insecure-requests/#upgrade-request
|
||||||
function tryUpgradeRequestToAPotentiallyTrustworthyURL (request) {
|
function tryUpgradeRequestToAPotentiallyTrustworthyURL (request) {
|
||||||
// TODO
|
// TODO
|
||||||
|
@ -21500,11 +21725,30 @@ function isCancelled (fetchParams) {
|
||||||
fetchParams.controller.state === 'terminated'
|
fetchParams.controller.state === 'terminated'
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://fetch.spec.whatwg.org/#concept-method-normalize
|
const normalizeMethodRecord = {
|
||||||
|
delete: 'DELETE',
|
||||||
|
DELETE: 'DELETE',
|
||||||
|
get: 'GET',
|
||||||
|
GET: 'GET',
|
||||||
|
head: 'HEAD',
|
||||||
|
HEAD: 'HEAD',
|
||||||
|
options: 'OPTIONS',
|
||||||
|
OPTIONS: 'OPTIONS',
|
||||||
|
post: 'POST',
|
||||||
|
POST: 'POST',
|
||||||
|
put: 'PUT',
|
||||||
|
PUT: 'PUT'
|
||||||
|
}
|
||||||
|
|
||||||
|
// Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`.
|
||||||
|
Object.setPrototypeOf(normalizeMethodRecord, null)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see https://fetch.spec.whatwg.org/#concept-method-normalize
|
||||||
|
* @param {string} method
|
||||||
|
*/
|
||||||
function normalizeMethod (method) {
|
function normalizeMethod (method) {
|
||||||
return /^(DELETE|GET|HEAD|OPTIONS|POST|PUT)$/i.test(method)
|
return normalizeMethodRecord[method.toLowerCase()] ?? method
|
||||||
? method.toUpperCase()
|
|
||||||
: method
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://infra.spec.whatwg.org/#serialize-a-javascript-value-to-a-json-string
|
// https://infra.spec.whatwg.org/#serialize-a-javascript-value-to-a-json-string
|
||||||
|
@ -21849,7 +22093,9 @@ module.exports = {
|
||||||
urlIsLocal,
|
urlIsLocal,
|
||||||
urlHasHttpsScheme,
|
urlHasHttpsScheme,
|
||||||
urlIsHttpHttpsScheme,
|
urlIsHttpHttpsScheme,
|
||||||
readAllBytes
|
readAllBytes,
|
||||||
|
normalizeMethodRecord,
|
||||||
|
parseMetadata
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -23936,12 +24182,17 @@ function parseLocation (statusCode, headers) {
|
||||||
|
|
||||||
// https://tools.ietf.org/html/rfc7231#section-6.4.4
|
// https://tools.ietf.org/html/rfc7231#section-6.4.4
|
||||||
function shouldRemoveHeader (header, removeContent, unknownOrigin) {
|
function shouldRemoveHeader (header, removeContent, unknownOrigin) {
|
||||||
return (
|
if (header.length === 4) {
|
||||||
(header.length === 4 && header.toString().toLowerCase() === 'host') ||
|
return util.headerNameToString(header) === 'host'
|
||||||
(removeContent && header.toString().toLowerCase().indexOf('content-') === 0) ||
|
}
|
||||||
(unknownOrigin && header.length === 13 && header.toString().toLowerCase() === 'authorization') ||
|
if (removeContent && util.headerNameToString(header).startsWith('content-')) {
|
||||||
(unknownOrigin && header.length === 6 && header.toString().toLowerCase() === 'cookie')
|
return true
|
||||||
)
|
}
|
||||||
|
if (unknownOrigin && (header.length === 13 || header.length === 6 || header.length === 19)) {
|
||||||
|
const name = util.headerNameToString(header)
|
||||||
|
return name === 'authorization' || name === 'cookie' || name === 'proxy-authorization'
|
||||||
|
}
|
||||||
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://tools.ietf.org/html/rfc7231#section-6.4
|
// https://tools.ietf.org/html/rfc7231#section-6.4
|
||||||
|
@ -23973,7 +24224,7 @@ module.exports = RedirectHandler
|
||||||
/***/ 2286:
|
/***/ 2286:
|
||||||
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
|
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
|
||||||
|
|
||||||
const assert = __nccwpck_require__(8061)
|
const assert = __nccwpck_require__(9491)
|
||||||
|
|
||||||
const { kRetryHandlerDefaultRetry } = __nccwpck_require__(2785)
|
const { kRetryHandlerDefaultRetry } = __nccwpck_require__(2785)
|
||||||
const { RequestRetryError } = __nccwpck_require__(8045)
|
const { RequestRetryError } = __nccwpck_require__(8045)
|
||||||
|
@ -24070,7 +24321,7 @@ class RetryHandler {
|
||||||
}
|
}
|
||||||
|
|
||||||
onBodySent (chunk) {
|
onBodySent (chunk) {
|
||||||
return this.handler.onBodySent(chunk)
|
if (this.handler.onBodySent) return this.handler.onBodySent(chunk)
|
||||||
}
|
}
|
||||||
|
|
||||||
static [kRetryHandlerDefaultRetry] (err, { state, opts }, cb) {
|
static [kRetryHandlerDefaultRetry] (err, { state, opts }, cb) {
|
||||||
|
@ -26233,6 +26484,9 @@ class ProxyAgent extends DispatcherBase {
|
||||||
this[kProxyTls] = opts.proxyTls
|
this[kProxyTls] = opts.proxyTls
|
||||||
this[kProxyHeaders] = opts.headers || {}
|
this[kProxyHeaders] = opts.headers || {}
|
||||||
|
|
||||||
|
const resolvedUrl = new URL(opts.uri)
|
||||||
|
const { origin, port, host, username, password } = resolvedUrl
|
||||||
|
|
||||||
if (opts.auth && opts.token) {
|
if (opts.auth && opts.token) {
|
||||||
throw new InvalidArgumentError('opts.auth cannot be used in combination with opts.token')
|
throw new InvalidArgumentError('opts.auth cannot be used in combination with opts.token')
|
||||||
} else if (opts.auth) {
|
} else if (opts.auth) {
|
||||||
|
@ -26240,11 +26494,10 @@ class ProxyAgent extends DispatcherBase {
|
||||||
this[kProxyHeaders]['proxy-authorization'] = `Basic ${opts.auth}`
|
this[kProxyHeaders]['proxy-authorization'] = `Basic ${opts.auth}`
|
||||||
} else if (opts.token) {
|
} else if (opts.token) {
|
||||||
this[kProxyHeaders]['proxy-authorization'] = opts.token
|
this[kProxyHeaders]['proxy-authorization'] = opts.token
|
||||||
|
} else if (username && password) {
|
||||||
|
this[kProxyHeaders]['proxy-authorization'] = `Basic ${Buffer.from(`${decodeURIComponent(username)}:${decodeURIComponent(password)}`).toString('base64')}`
|
||||||
}
|
}
|
||||||
|
|
||||||
const resolvedUrl = new URL(opts.uri)
|
|
||||||
const { origin, port, host } = resolvedUrl
|
|
||||||
|
|
||||||
const connect = buildConnector({ ...opts.proxyTls })
|
const connect = buildConnector({ ...opts.proxyTls })
|
||||||
this[kConnectEndpoint] = buildConnector({ ...opts.requestTls })
|
this[kConnectEndpoint] = buildConnector({ ...opts.requestTls })
|
||||||
this[kClient] = clientFactory(resolvedUrl, { connect })
|
this[kClient] = clientFactory(resolvedUrl, { connect })
|
||||||
|
@ -26268,7 +26521,7 @@ class ProxyAgent extends DispatcherBase {
|
||||||
})
|
})
|
||||||
if (statusCode !== 200) {
|
if (statusCode !== 200) {
|
||||||
socket.on('error', () => {}).destroy()
|
socket.on('error', () => {}).destroy()
|
||||||
callback(new RequestAbortedError('Proxy response !== 200 when HTTP Tunneling'))
|
callback(new RequestAbortedError(`Proxy response (${statusCode}) !== 200 when HTTP Tunneling`))
|
||||||
}
|
}
|
||||||
if (opts.protocol !== 'https:') {
|
if (opts.protocol !== 'https:') {
|
||||||
callback(null, socket)
|
callback(null, socket)
|
||||||
|
@ -28598,8 +28851,8 @@ const COMMANDLINE_TOOLS_MAC_URL = `https://dl.google.com/android/repository/comm
|
||||||
const COMMANDLINE_TOOLS_LIN_URL = `https://dl.google.com/android/repository/commandlinetools-linux-${VERSION_LONG}_latest.zip`;
|
const COMMANDLINE_TOOLS_LIN_URL = `https://dl.google.com/android/repository/commandlinetools-linux-${VERSION_LONG}_latest.zip`;
|
||||||
const ANDROID_HOME_SDK_DIR = path.join(os.homedir(), '.android', 'sdk');
|
const ANDROID_HOME_SDK_DIR = path.join(os.homedir(), '.android', 'sdk');
|
||||||
let ANDROID_SDK_ROOT = process.env['ANDROID_SDK_ROOT'] || ANDROID_HOME_SDK_DIR;
|
let ANDROID_SDK_ROOT = process.env['ANDROID_SDK_ROOT'] || ANDROID_HOME_SDK_DIR;
|
||||||
function callSdkManager(sdkManager, arg, printOutput = true) {
|
function callSdkManager(sdkManager_1, arg_1) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, arguments, void 0, function* (sdkManager, arg, printOutput = true) {
|
||||||
const acceptBuffer = Buffer.from(Array(10).fill('y').join('\n'), 'utf8');
|
const acceptBuffer = Buffer.from(Array(10).fill('y').join('\n'), 'utf8');
|
||||||
yield exec.exec(sdkManager, [arg], {
|
yield exec.exec(sdkManager, [arg], {
|
||||||
input: acceptBuffer,
|
input: acceptBuffer,
|
||||||
|
@ -28816,14 +29069,6 @@ module.exports = require("net");
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
|
|
||||||
/***/ 8061:
|
|
||||||
/***/ ((module) => {
|
|
||||||
|
|
||||||
"use strict";
|
|
||||||
module.exports = require("node:assert");
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 5673:
|
/***/ 5673:
|
||||||
/***/ ((module) => {
|
/***/ ((module) => {
|
||||||
|
|
||||||
|
@ -29044,7 +29289,7 @@ Dicer.prototype._write = function (data, encoding, cb) {
|
||||||
if (this._headerFirst && this._isPreamble) {
|
if (this._headerFirst && this._isPreamble) {
|
||||||
if (!this._part) {
|
if (!this._part) {
|
||||||
this._part = new PartStream(this._partOpts)
|
this._part = new PartStream(this._partOpts)
|
||||||
if (this._events.preamble) { this.emit('preamble', this._part) } else { this._ignore() }
|
if (this.listenerCount('preamble') !== 0) { this.emit('preamble', this._part) } else { this._ignore() }
|
||||||
}
|
}
|
||||||
const r = this._hparser.push(data)
|
const r = this._hparser.push(data)
|
||||||
if (!this._inHeader && r !== undefined && r < data.length) { data = data.slice(r) } else { return cb() }
|
if (!this._inHeader && r !== undefined && r < data.length) { data = data.slice(r) } else { return cb() }
|
||||||
|
@ -29101,7 +29346,7 @@ Dicer.prototype._oninfo = function (isMatch, data, start, end) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (this._dashes === 2) {
|
if (this._dashes === 2) {
|
||||||
if ((start + i) < end && this._events.trailer) { this.emit('trailer', data.slice(start + i, end)) }
|
if ((start + i) < end && this.listenerCount('trailer') !== 0) { this.emit('trailer', data.slice(start + i, end)) }
|
||||||
this.reset()
|
this.reset()
|
||||||
this._finished = true
|
this._finished = true
|
||||||
// no more parts will be added
|
// no more parts will be added
|
||||||
|
@ -29119,7 +29364,13 @@ Dicer.prototype._oninfo = function (isMatch, data, start, end) {
|
||||||
this._part._read = function (n) {
|
this._part._read = function (n) {
|
||||||
self._unpause()
|
self._unpause()
|
||||||
}
|
}
|
||||||
if (this._isPreamble && this._events.preamble) { this.emit('preamble', this._part) } else if (this._isPreamble !== true && this._events.part) { this.emit('part', this._part) } else { this._ignore() }
|
if (this._isPreamble && this.listenerCount('preamble') !== 0) {
|
||||||
|
this.emit('preamble', this._part)
|
||||||
|
} else if (this._isPreamble !== true && this.listenerCount('part') !== 0) {
|
||||||
|
this.emit('part', this._part)
|
||||||
|
} else {
|
||||||
|
this._ignore()
|
||||||
|
}
|
||||||
if (!this._isPreamble) { this._inHeader = true }
|
if (!this._isPreamble) { this._inHeader = true }
|
||||||
}
|
}
|
||||||
if (data && start < end && !this._ignoreData) {
|
if (data && start < end && !this._ignoreData) {
|
||||||
|
@ -29802,7 +30053,7 @@ function Multipart (boy, cfg) {
|
||||||
|
|
||||||
++nfiles
|
++nfiles
|
||||||
|
|
||||||
if (!boy._events.file) {
|
if (boy.listenerCount('file') === 0) {
|
||||||
self.parser._ignore()
|
self.parser._ignore()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -30331,7 +30582,7 @@ const decoders = {
|
||||||
if (textDecoders.has(this.toString())) {
|
if (textDecoders.has(this.toString())) {
|
||||||
try {
|
try {
|
||||||
return textDecoders.get(this).decode(data)
|
return textDecoders.get(this).decode(data)
|
||||||
} catch (e) { }
|
} catch {}
|
||||||
}
|
}
|
||||||
return typeof data === 'string'
|
return typeof data === 'string'
|
||||||
? data
|
? data
|
||||||
|
|
3782
package-lock.json
generated
3782
package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
@ -32,8 +32,8 @@
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/jest": "^29.5.5",
|
"@types/jest": "^29.5.5",
|
||||||
"@types/node": "^20.6.5",
|
"@types/node": "^20.6.5",
|
||||||
"@typescript-eslint/eslint-plugin": "^6.7.2",
|
"@typescript-eslint/eslint-plugin": "^7.5.0",
|
||||||
"@typescript-eslint/parser": "^6.7.2",
|
"@typescript-eslint/parser": "^7.5.0",
|
||||||
"@vercel/ncc": "^0.38.0",
|
"@vercel/ncc": "^0.38.0",
|
||||||
"eslint": "^8.50.0",
|
"eslint": "^8.50.0",
|
||||||
"eslint-plugin-github": "^4.10.2",
|
"eslint-plugin-github": "^4.10.2",
|
||||||
|
|
Loading…
Reference in a new issue