deps: update undici to 5.27.0
PR-URL: https://github.com/nodejs/node/pull/50463 Reviewed-By: Matthew Aitken <maitken033380023@gmail.com> Reviewed-By: Mohammed Keyvanzadeh <mohammadkeyvanzade94@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
parent
a913b8742f
commit
aa4248dc84
8
deps/undici/src/index-fetch.js
vendored
8
deps/undici/src/index-fetch.js
vendored
@ -2,13 +2,11 @@
|
|||||||
|
|
||||||
const fetchImpl = require('./lib/fetch').fetch
|
const fetchImpl = require('./lib/fetch').fetch
|
||||||
|
|
||||||
module.exports.fetch = async function fetch (resource, init = undefined) {
|
module.exports.fetch = function fetch (resource, init = undefined) {
|
||||||
try {
|
return fetchImpl(resource, init).catch((err) => {
|
||||||
return await fetchImpl(resource, init)
|
|
||||||
} catch (err) {
|
|
||||||
Error.captureStackTrace(err, this)
|
Error.captureStackTrace(err, this)
|
||||||
throw err
|
throw err
|
||||||
}
|
})
|
||||||
}
|
}
|
||||||
module.exports.FormData = require('./lib/fetch/formdata').FormData
|
module.exports.FormData = require('./lib/fetch/formdata').FormData
|
||||||
module.exports.Headers = require('./lib/fetch/headers').Headers
|
module.exports.Headers = require('./lib/fetch/headers').Headers
|
||||||
|
8
deps/undici/src/lib/core/request.js
vendored
8
deps/undici/src/lib/core/request.js
vendored
@ -222,6 +222,14 @@ class Request {
|
|||||||
if (channels.bodySent.hasSubscribers) {
|
if (channels.bodySent.hasSubscribers) {
|
||||||
channels.bodySent.publish({ request: this })
|
channels.bodySent.publish({ request: this })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this[kHandler].onRequestSent) {
|
||||||
|
try {
|
||||||
|
this[kHandler].onRequestSent()
|
||||||
|
} catch (err) {
|
||||||
|
this.onError(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
onConnect (abort) {
|
onConnect (abort) {
|
||||||
|
21
deps/undici/src/lib/fetch/body.js
vendored
21
deps/undici/src/lib/fetch/body.js
vendored
@ -26,6 +26,8 @@ let ReadableStream = globalThis.ReadableStream
|
|||||||
|
|
||||||
/** @type {globalThis['File']} */
|
/** @type {globalThis['File']} */
|
||||||
const File = NativeFile ?? UndiciFile
|
const File = NativeFile ?? UndiciFile
|
||||||
|
const textEncoder = new TextEncoder()
|
||||||
|
const textDecoder = new TextDecoder()
|
||||||
|
|
||||||
// https://fetch.spec.whatwg.org/#concept-bodyinit-extract
|
// https://fetch.spec.whatwg.org/#concept-bodyinit-extract
|
||||||
function extractBody (object, keepalive = false) {
|
function extractBody (object, keepalive = false) {
|
||||||
@ -49,7 +51,7 @@ function extractBody (object, keepalive = false) {
|
|||||||
stream = new ReadableStream({
|
stream = new ReadableStream({
|
||||||
async pull (controller) {
|
async pull (controller) {
|
||||||
controller.enqueue(
|
controller.enqueue(
|
||||||
typeof source === 'string' ? new TextEncoder().encode(source) : source
|
typeof source === 'string' ? textEncoder.encode(source) : source
|
||||||
)
|
)
|
||||||
queueMicrotask(() => readableStreamClose(controller))
|
queueMicrotask(() => readableStreamClose(controller))
|
||||||
},
|
},
|
||||||
@ -119,7 +121,6 @@ function extractBody (object, keepalive = false) {
|
|||||||
// - That the content-length is calculated in advance.
|
// - That the content-length is calculated in advance.
|
||||||
// - And that all parts are pre-encoded and ready to be sent.
|
// - And that all parts are pre-encoded and ready to be sent.
|
||||||
|
|
||||||
const enc = new TextEncoder()
|
|
||||||
const blobParts = []
|
const blobParts = []
|
||||||
const rn = new Uint8Array([13, 10]) // '\r\n'
|
const rn = new Uint8Array([13, 10]) // '\r\n'
|
||||||
length = 0
|
length = 0
|
||||||
@ -127,13 +128,13 @@ function extractBody (object, keepalive = false) {
|
|||||||
|
|
||||||
for (const [name, value] of object) {
|
for (const [name, value] of object) {
|
||||||
if (typeof value === 'string') {
|
if (typeof value === 'string') {
|
||||||
const chunk = enc.encode(prefix +
|
const chunk = textEncoder.encode(prefix +
|
||||||
`; name="${escape(normalizeLinefeeds(name))}"` +
|
`; name="${escape(normalizeLinefeeds(name))}"` +
|
||||||
`\r\n\r\n${normalizeLinefeeds(value)}\r\n`)
|
`\r\n\r\n${normalizeLinefeeds(value)}\r\n`)
|
||||||
blobParts.push(chunk)
|
blobParts.push(chunk)
|
||||||
length += chunk.byteLength
|
length += chunk.byteLength
|
||||||
} else {
|
} else {
|
||||||
const chunk = enc.encode(`${prefix}; name="${escape(normalizeLinefeeds(name))}"` +
|
const chunk = textEncoder.encode(`${prefix}; name="${escape(normalizeLinefeeds(name))}"` +
|
||||||
(value.name ? `; filename="${escape(value.name)}"` : '') + '\r\n' +
|
(value.name ? `; filename="${escape(value.name)}"` : '') + '\r\n' +
|
||||||
`Content-Type: ${
|
`Content-Type: ${
|
||||||
value.type || 'application/octet-stream'
|
value.type || 'application/octet-stream'
|
||||||
@ -147,7 +148,7 @@ function extractBody (object, keepalive = false) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const chunk = enc.encode(`--${boundary}--`)
|
const chunk = textEncoder.encode(`--${boundary}--`)
|
||||||
blobParts.push(chunk)
|
blobParts.push(chunk)
|
||||||
length += chunk.byteLength
|
length += chunk.byteLength
|
||||||
if (hasUnknownSizeValue) {
|
if (hasUnknownSizeValue) {
|
||||||
@ -443,14 +444,16 @@ function bodyMixinMethods (instance) {
|
|||||||
let text = ''
|
let text = ''
|
||||||
// application/x-www-form-urlencoded parser will keep the BOM.
|
// application/x-www-form-urlencoded parser will keep the BOM.
|
||||||
// https://url.spec.whatwg.org/#concept-urlencoded-parser
|
// https://url.spec.whatwg.org/#concept-urlencoded-parser
|
||||||
const textDecoder = new TextDecoder('utf-8', { ignoreBOM: true })
|
// Note that streaming decoder is stateful and cannot be reused
|
||||||
|
const streamingDecoder = new TextDecoder('utf-8', { ignoreBOM: true })
|
||||||
|
|
||||||
for await (const chunk of consumeBody(this[kState].body)) {
|
for await (const chunk of consumeBody(this[kState].body)) {
|
||||||
if (!isUint8Array(chunk)) {
|
if (!isUint8Array(chunk)) {
|
||||||
throw new TypeError('Expected Uint8Array chunk')
|
throw new TypeError('Expected Uint8Array chunk')
|
||||||
}
|
}
|
||||||
text += textDecoder.decode(chunk, { stream: true })
|
text += streamingDecoder.decode(chunk, { stream: true })
|
||||||
}
|
}
|
||||||
text += textDecoder.decode()
|
text += streamingDecoder.decode()
|
||||||
entries = new URLSearchParams(text)
|
entries = new URLSearchParams(text)
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
// istanbul ignore next: Unclear when new URLSearchParams can fail on a string.
|
// istanbul ignore next: Unclear when new URLSearchParams can fail on a string.
|
||||||
@ -565,7 +568,7 @@ function utf8DecodeBytes (buffer) {
|
|||||||
|
|
||||||
// 3. Process a queue with an instance of UTF-8’s
|
// 3. Process a queue with an instance of UTF-8’s
|
||||||
// decoder, ioQueue, output, and "replacement".
|
// decoder, ioQueue, output, and "replacement".
|
||||||
const output = new TextDecoder().decode(buffer)
|
const output = textDecoder.decode(buffer)
|
||||||
|
|
||||||
// 4. Return output.
|
// 4. Return output.
|
||||||
return output
|
return output
|
||||||
|
17
deps/undici/src/lib/fetch/constants.js
vendored
17
deps/undici/src/lib/fetch/constants.js
vendored
@ -3,10 +3,12 @@
|
|||||||
const { MessageChannel, receiveMessageOnPort } = require('worker_threads')
|
const { MessageChannel, receiveMessageOnPort } = require('worker_threads')
|
||||||
|
|
||||||
const corsSafeListedMethods = ['GET', 'HEAD', 'POST']
|
const corsSafeListedMethods = ['GET', 'HEAD', 'POST']
|
||||||
|
const corsSafeListedMethodsSet = new Set(corsSafeListedMethods)
|
||||||
|
|
||||||
const nullBodyStatus = [101, 204, 205, 304]
|
const nullBodyStatus = [101, 204, 205, 304]
|
||||||
|
|
||||||
const redirectStatus = [301, 302, 303, 307, 308]
|
const redirectStatus = [301, 302, 303, 307, 308]
|
||||||
|
const redirectStatusSet = new Set(redirectStatus)
|
||||||
|
|
||||||
// https://fetch.spec.whatwg.org/#block-bad-port
|
// https://fetch.spec.whatwg.org/#block-bad-port
|
||||||
const badPorts = [
|
const badPorts = [
|
||||||
@ -18,6 +20,8 @@ const badPorts = [
|
|||||||
'10080'
|
'10080'
|
||||||
]
|
]
|
||||||
|
|
||||||
|
const badPortsSet = new Set(badPorts)
|
||||||
|
|
||||||
// https://w3c.github.io/webappsec-referrer-policy/#referrer-policies
|
// https://w3c.github.io/webappsec-referrer-policy/#referrer-policies
|
||||||
const referrerPolicy = [
|
const referrerPolicy = [
|
||||||
'',
|
'',
|
||||||
@ -30,10 +34,12 @@ const referrerPolicy = [
|
|||||||
'strict-origin-when-cross-origin',
|
'strict-origin-when-cross-origin',
|
||||||
'unsafe-url'
|
'unsafe-url'
|
||||||
]
|
]
|
||||||
|
const referrerPolicySet = new Set(referrerPolicy)
|
||||||
|
|
||||||
const requestRedirect = ['follow', 'manual', 'error']
|
const requestRedirect = ['follow', 'manual', 'error']
|
||||||
|
|
||||||
const safeMethods = ['GET', 'HEAD', 'OPTIONS', 'TRACE']
|
const safeMethods = ['GET', 'HEAD', 'OPTIONS', 'TRACE']
|
||||||
|
const safeMethodsSet = new Set(safeMethods)
|
||||||
|
|
||||||
const requestMode = ['navigate', 'same-origin', 'no-cors', 'cors']
|
const requestMode = ['navigate', 'same-origin', 'no-cors', 'cors']
|
||||||
|
|
||||||
@ -68,6 +74,7 @@ const requestDuplex = [
|
|||||||
|
|
||||||
// http://fetch.spec.whatwg.org/#forbidden-method
|
// http://fetch.spec.whatwg.org/#forbidden-method
|
||||||
const forbiddenMethods = ['CONNECT', 'TRACE', 'TRACK']
|
const forbiddenMethods = ['CONNECT', 'TRACE', 'TRACK']
|
||||||
|
const forbiddenMethodsSet = new Set(forbiddenMethods)
|
||||||
|
|
||||||
const subresource = [
|
const subresource = [
|
||||||
'audio',
|
'audio',
|
||||||
@ -83,6 +90,7 @@ const subresource = [
|
|||||||
'xslt',
|
'xslt',
|
||||||
''
|
''
|
||||||
]
|
]
|
||||||
|
const subresourceSet = new Set(subresource)
|
||||||
|
|
||||||
/** @type {globalThis['DOMException']} */
|
/** @type {globalThis['DOMException']} */
|
||||||
const DOMException = globalThis.DOMException ?? (() => {
|
const DOMException = globalThis.DOMException ?? (() => {
|
||||||
@ -132,5 +140,12 @@ module.exports = {
|
|||||||
nullBodyStatus,
|
nullBodyStatus,
|
||||||
safeMethods,
|
safeMethods,
|
||||||
badPorts,
|
badPorts,
|
||||||
requestDuplex
|
requestDuplex,
|
||||||
|
subresourceSet,
|
||||||
|
badPortsSet,
|
||||||
|
redirectStatusSet,
|
||||||
|
corsSafeListedMethodsSet,
|
||||||
|
safeMethodsSet,
|
||||||
|
forbiddenMethodsSet,
|
||||||
|
referrerPolicySet
|
||||||
}
|
}
|
||||||
|
3
deps/undici/src/lib/fetch/file.js
vendored
3
deps/undici/src/lib/fetch/file.js
vendored
@ -7,6 +7,7 @@ const { isBlobLike } = require('./util')
|
|||||||
const { webidl } = require('./webidl')
|
const { webidl } = require('./webidl')
|
||||||
const { parseMIMEType, serializeAMimeType } = require('./dataURL')
|
const { parseMIMEType, serializeAMimeType } = require('./dataURL')
|
||||||
const { kEnumerableProperty } = require('../core/util')
|
const { kEnumerableProperty } = require('../core/util')
|
||||||
|
const encoder = new TextEncoder()
|
||||||
|
|
||||||
class File extends Blob {
|
class File extends Blob {
|
||||||
constructor (fileBits, fileName, options = {}) {
|
constructor (fileBits, fileName, options = {}) {
|
||||||
@ -280,7 +281,7 @@ function processBlobParts (parts, options) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 3. Append the result of UTF-8 encoding s to bytes.
|
// 3. Append the result of UTF-8 encoding s to bytes.
|
||||||
bytes.push(new TextEncoder().encode(s))
|
bytes.push(encoder.encode(s))
|
||||||
} else if (
|
} else if (
|
||||||
types.isAnyArrayBuffer(element) ||
|
types.isAnyArrayBuffer(element) ||
|
||||||
types.isTypedArray(element)
|
types.isTypedArray(element)
|
||||||
|
70
deps/undici/src/lib/fetch/index.js
vendored
70
deps/undici/src/lib/fetch/index.js
vendored
@ -46,11 +46,11 @@ const { kState, kHeaders, kGuard, kRealm } = require('./symbols')
|
|||||||
const assert = require('assert')
|
const assert = require('assert')
|
||||||
const { safelyExtractBody } = require('./body')
|
const { safelyExtractBody } = require('./body')
|
||||||
const {
|
const {
|
||||||
redirectStatus,
|
redirectStatusSet,
|
||||||
nullBodyStatus,
|
nullBodyStatus,
|
||||||
safeMethods,
|
safeMethodsSet,
|
||||||
requestBodyHeader,
|
requestBodyHeader,
|
||||||
subresource,
|
subresourceSet,
|
||||||
DOMException
|
DOMException
|
||||||
} = require('./constants')
|
} = require('./constants')
|
||||||
const { kHeadersList } = require('../core/symbols')
|
const { kHeadersList } = require('../core/symbols')
|
||||||
@ -62,6 +62,7 @@ const { TransformStream } = require('stream/web')
|
|||||||
const { getGlobalDispatcher } = require('../global')
|
const { getGlobalDispatcher } = require('../global')
|
||||||
const { webidl } = require('./webidl')
|
const { webidl } = require('./webidl')
|
||||||
const { STATUS_CODES } = require('http')
|
const { STATUS_CODES } = require('http')
|
||||||
|
const GET_OR_HEAD = ['GET', 'HEAD']
|
||||||
|
|
||||||
/** @type {import('buffer').resolveObjectURL} */
|
/** @type {import('buffer').resolveObjectURL} */
|
||||||
let resolveObjectURL
|
let resolveObjectURL
|
||||||
@ -121,7 +122,7 @@ class Fetch extends EE {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// https://fetch.spec.whatwg.org/#fetch-method
|
// https://fetch.spec.whatwg.org/#fetch-method
|
||||||
async function fetch (input, init = {}) {
|
function fetch (input, init = {}) {
|
||||||
webidl.argumentLengthCheck(arguments, 1, { header: 'globalThis.fetch' })
|
webidl.argumentLengthCheck(arguments, 1, { header: 'globalThis.fetch' })
|
||||||
|
|
||||||
// 1. Let p be a new promise.
|
// 1. Let p be a new promise.
|
||||||
@ -204,7 +205,7 @@ async function fetch (input, init = {}) {
|
|||||||
const processResponse = (response) => {
|
const processResponse = (response) => {
|
||||||
// 1. If locallyAborted is true, terminate these substeps.
|
// 1. If locallyAborted is true, terminate these substeps.
|
||||||
if (locallyAborted) {
|
if (locallyAborted) {
|
||||||
return
|
return Promise.resolve()
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2. If response’s aborted flag is set, then:
|
// 2. If response’s aborted flag is set, then:
|
||||||
@ -217,7 +218,7 @@ async function fetch (input, init = {}) {
|
|||||||
// deserializedError.
|
// deserializedError.
|
||||||
|
|
||||||
abortFetch(p, request, responseObject, controller.serializedAbortReason)
|
abortFetch(p, request, responseObject, controller.serializedAbortReason)
|
||||||
return
|
return Promise.resolve()
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3. If response is a network error, then reject p with a TypeError
|
// 3. If response is a network error, then reject p with a TypeError
|
||||||
@ -226,7 +227,7 @@ async function fetch (input, init = {}) {
|
|||||||
p.reject(
|
p.reject(
|
||||||
Object.assign(new TypeError('fetch failed'), { cause: response.error })
|
Object.assign(new TypeError('fetch failed'), { cause: response.error })
|
||||||
)
|
)
|
||||||
return
|
return Promise.resolve()
|
||||||
}
|
}
|
||||||
|
|
||||||
// 4. Set responseObject to the result of creating a Response object,
|
// 4. Set responseObject to the result of creating a Response object,
|
||||||
@ -509,7 +510,7 @@ function fetching ({
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 15. If request is a subresource request, then:
|
// 15. If request is a subresource request, then:
|
||||||
if (subresource.includes(request.destination)) {
|
if (subresourceSet.has(request.destination)) {
|
||||||
// TODO
|
// TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -776,13 +777,13 @@ async function mainFetch (fetchParams, recursive = false) {
|
|||||||
|
|
||||||
// https://fetch.spec.whatwg.org/#concept-scheme-fetch
|
// https://fetch.spec.whatwg.org/#concept-scheme-fetch
|
||||||
// given a fetch params fetchParams
|
// given a fetch params fetchParams
|
||||||
async function schemeFetch (fetchParams) {
|
function schemeFetch (fetchParams) {
|
||||||
// Note: since the connection is destroyed on redirect, which sets fetchParams to a
|
// Note: since the connection is destroyed on redirect, which sets fetchParams to a
|
||||||
// cancelled state, we do not want this condition to trigger *unless* there have been
|
// cancelled state, we do not want this condition to trigger *unless* there have been
|
||||||
// no redirects. See https://github.com/nodejs/undici/issues/1776
|
// no redirects. See https://github.com/nodejs/undici/issues/1776
|
||||||
// 1. If fetchParams is canceled, then return the appropriate network error for fetchParams.
|
// 1. If fetchParams is canceled, then return the appropriate network error for fetchParams.
|
||||||
if (isCancelled(fetchParams) && fetchParams.request.redirectCount === 0) {
|
if (isCancelled(fetchParams) && fetchParams.request.redirectCount === 0) {
|
||||||
return makeAppropriateNetworkError(fetchParams)
|
return Promise.resolve(makeAppropriateNetworkError(fetchParams))
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2. Let request be fetchParams’s request.
|
// 2. Let request be fetchParams’s request.
|
||||||
@ -798,7 +799,7 @@ async function schemeFetch (fetchParams) {
|
|||||||
// and body is the empty byte sequence as a body.
|
// and body is the empty byte sequence as a body.
|
||||||
|
|
||||||
// Otherwise, return a network error.
|
// Otherwise, return a network error.
|
||||||
return makeNetworkError('about scheme is not supported')
|
return Promise.resolve(makeNetworkError('about scheme is not supported'))
|
||||||
}
|
}
|
||||||
case 'blob:': {
|
case 'blob:': {
|
||||||
if (!resolveObjectURL) {
|
if (!resolveObjectURL) {
|
||||||
@ -811,7 +812,7 @@ async function schemeFetch (fetchParams) {
|
|||||||
// https://github.com/web-platform-tests/wpt/blob/7b0ebaccc62b566a1965396e5be7bb2bc06f841f/FileAPI/url/resources/fetch-tests.js#L52-L56
|
// https://github.com/web-platform-tests/wpt/blob/7b0ebaccc62b566a1965396e5be7bb2bc06f841f/FileAPI/url/resources/fetch-tests.js#L52-L56
|
||||||
// Buffer.resolveObjectURL does not ignore URL queries.
|
// Buffer.resolveObjectURL does not ignore URL queries.
|
||||||
if (blobURLEntry.search.length !== 0) {
|
if (blobURLEntry.search.length !== 0) {
|
||||||
return makeNetworkError('NetworkError when attempting to fetch resource.')
|
return Promise.resolve(makeNetworkError('NetworkError when attempting to fetch resource.'))
|
||||||
}
|
}
|
||||||
|
|
||||||
const blobURLEntryObject = resolveObjectURL(blobURLEntry.toString())
|
const blobURLEntryObject = resolveObjectURL(blobURLEntry.toString())
|
||||||
@ -819,7 +820,7 @@ async function schemeFetch (fetchParams) {
|
|||||||
// 2. If request’s method is not `GET`, blobURLEntry is null, or blobURLEntry’s
|
// 2. If request’s method is not `GET`, blobURLEntry is null, or blobURLEntry’s
|
||||||
// object is not a Blob object, then return a network error.
|
// object is not a Blob object, then return a network error.
|
||||||
if (request.method !== 'GET' || !isBlobLike(blobURLEntryObject)) {
|
if (request.method !== 'GET' || !isBlobLike(blobURLEntryObject)) {
|
||||||
return makeNetworkError('invalid method')
|
return Promise.resolve(makeNetworkError('invalid method'))
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3. Let bodyWithType be the result of safely extracting blobURLEntry’s object.
|
// 3. Let bodyWithType be the result of safely extracting blobURLEntry’s object.
|
||||||
@ -846,7 +847,7 @@ async function schemeFetch (fetchParams) {
|
|||||||
|
|
||||||
response.body = body
|
response.body = body
|
||||||
|
|
||||||
return response
|
return Promise.resolve(response)
|
||||||
}
|
}
|
||||||
case 'data:': {
|
case 'data:': {
|
||||||
// 1. Let dataURLStruct be the result of running the
|
// 1. Let dataURLStruct be the result of running the
|
||||||
@ -857,7 +858,7 @@ async function schemeFetch (fetchParams) {
|
|||||||
// 2. If dataURLStruct is failure, then return a
|
// 2. If dataURLStruct is failure, then return a
|
||||||
// network error.
|
// network error.
|
||||||
if (dataURLStruct === 'failure') {
|
if (dataURLStruct === 'failure') {
|
||||||
return makeNetworkError('failed to fetch the data URL')
|
return Promise.resolve(makeNetworkError('failed to fetch the data URL'))
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3. Let mimeType be dataURLStruct’s MIME type, serialized.
|
// 3. Let mimeType be dataURLStruct’s MIME type, serialized.
|
||||||
@ -866,28 +867,28 @@ async function schemeFetch (fetchParams) {
|
|||||||
// 4. Return a response whose status message is `OK`,
|
// 4. Return a response whose status message is `OK`,
|
||||||
// header list is « (`Content-Type`, mimeType) »,
|
// header list is « (`Content-Type`, mimeType) »,
|
||||||
// and body is dataURLStruct’s body as a body.
|
// and body is dataURLStruct’s body as a body.
|
||||||
return makeResponse({
|
return Promise.resolve(makeResponse({
|
||||||
statusText: 'OK',
|
statusText: 'OK',
|
||||||
headersList: [
|
headersList: [
|
||||||
['content-type', { name: 'Content-Type', value: mimeType }]
|
['content-type', { name: 'Content-Type', value: mimeType }]
|
||||||
],
|
],
|
||||||
body: safelyExtractBody(dataURLStruct.body)[0]
|
body: safelyExtractBody(dataURLStruct.body)[0]
|
||||||
})
|
}))
|
||||||
}
|
}
|
||||||
case 'file:': {
|
case 'file:': {
|
||||||
// For now, unfortunate as it is, file URLs are left as an exercise for the reader.
|
// For now, unfortunate as it is, file URLs are left as an exercise for the reader.
|
||||||
// When in doubt, return a network error.
|
// When in doubt, return a network error.
|
||||||
return makeNetworkError('not implemented... yet...')
|
return Promise.resolve(makeNetworkError('not implemented... yet...'))
|
||||||
}
|
}
|
||||||
case 'http:':
|
case 'http:':
|
||||||
case 'https:': {
|
case 'https:': {
|
||||||
// Return the result of running HTTP fetch given fetchParams.
|
// Return the result of running HTTP fetch given fetchParams.
|
||||||
|
|
||||||
return await httpFetch(fetchParams)
|
return httpFetch(fetchParams)
|
||||||
.catch((err) => makeNetworkError(err))
|
.catch((err) => makeNetworkError(err))
|
||||||
}
|
}
|
||||||
default: {
|
default: {
|
||||||
return makeNetworkError('unknown scheme')
|
return Promise.resolve(makeNetworkError('unknown scheme'))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -906,7 +907,7 @@ function finalizeResponse (fetchParams, response) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// https://fetch.spec.whatwg.org/#fetch-finale
|
// https://fetch.spec.whatwg.org/#fetch-finale
|
||||||
async function fetchFinale (fetchParams, response) {
|
function fetchFinale (fetchParams, response) {
|
||||||
// 1. If response is a network error, then:
|
// 1. If response is a network error, then:
|
||||||
if (response.type === 'error') {
|
if (response.type === 'error') {
|
||||||
// 1. Set response’s URL list to « fetchParams’s request’s URL list[0] ».
|
// 1. Set response’s URL list to « fetchParams’s request’s URL list[0] ».
|
||||||
@ -990,8 +991,9 @@ async function fetchFinale (fetchParams, response) {
|
|||||||
} else {
|
} else {
|
||||||
// 4. Otherwise, fully read response’s body given processBody, processBodyError,
|
// 4. Otherwise, fully read response’s body given processBody, processBodyError,
|
||||||
// and fetchParams’s task destination.
|
// and fetchParams’s task destination.
|
||||||
await fullyReadBody(response.body, processBody, processBodyError)
|
return fullyReadBody(response.body, processBody, processBodyError)
|
||||||
}
|
}
|
||||||
|
return Promise.resolve()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1062,7 +1064,7 @@ async function httpFetch (fetchParams) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 8. If actualResponse’s status is a redirect status, then:
|
// 8. If actualResponse’s status is a redirect status, then:
|
||||||
if (redirectStatus.includes(actualResponse.status)) {
|
if (redirectStatusSet.has(actualResponse.status)) {
|
||||||
// 1. If actualResponse’s status is not 303, request’s body is not null,
|
// 1. If actualResponse’s status is not 303, request’s body is not null,
|
||||||
// and the connection uses HTTP/2, then user agents may, and are even
|
// and the connection uses HTTP/2, then user agents may, and are even
|
||||||
// encouraged to, transmit an RST_STREAM frame.
|
// encouraged to, transmit an RST_STREAM frame.
|
||||||
@ -1099,7 +1101,7 @@ async function httpFetch (fetchParams) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// https://fetch.spec.whatwg.org/#http-redirect-fetch
|
// https://fetch.spec.whatwg.org/#http-redirect-fetch
|
||||||
async function httpRedirectFetch (fetchParams, response) {
|
function httpRedirectFetch (fetchParams, response) {
|
||||||
// 1. Let request be fetchParams’s request.
|
// 1. Let request be fetchParams’s request.
|
||||||
const request = fetchParams.request
|
const request = fetchParams.request
|
||||||
|
|
||||||
@ -1125,18 +1127,18 @@ async function httpRedirectFetch (fetchParams, response) {
|
|||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
// 5. If locationURL is failure, then return a network error.
|
// 5. If locationURL is failure, then return a network error.
|
||||||
return makeNetworkError(err)
|
return Promise.resolve(makeNetworkError(err))
|
||||||
}
|
}
|
||||||
|
|
||||||
// 6. If locationURL’s scheme is not an HTTP(S) scheme, then return a network
|
// 6. If locationURL’s scheme is not an HTTP(S) scheme, then return a network
|
||||||
// error.
|
// error.
|
||||||
if (!urlIsHttpHttpsScheme(locationURL)) {
|
if (!urlIsHttpHttpsScheme(locationURL)) {
|
||||||
return makeNetworkError('URL scheme must be a HTTP(S) scheme')
|
return Promise.resolve(makeNetworkError('URL scheme must be a HTTP(S) scheme'))
|
||||||
}
|
}
|
||||||
|
|
||||||
// 7. If request’s redirect count is 20, then return a network error.
|
// 7. If request’s redirect count is 20, then return a network error.
|
||||||
if (request.redirectCount === 20) {
|
if (request.redirectCount === 20) {
|
||||||
return makeNetworkError('redirect count exceeded')
|
return Promise.resolve(makeNetworkError('redirect count exceeded'))
|
||||||
}
|
}
|
||||||
|
|
||||||
// 8. Increase request’s redirect count by 1.
|
// 8. Increase request’s redirect count by 1.
|
||||||
@ -1150,7 +1152,7 @@ async function httpRedirectFetch (fetchParams, response) {
|
|||||||
(locationURL.username || locationURL.password) &&
|
(locationURL.username || locationURL.password) &&
|
||||||
!sameOrigin(request, locationURL)
|
!sameOrigin(request, locationURL)
|
||||||
) {
|
) {
|
||||||
return makeNetworkError('cross origin not allowed for request mode "cors"')
|
return Promise.resolve(makeNetworkError('cross origin not allowed for request mode "cors"'))
|
||||||
}
|
}
|
||||||
|
|
||||||
// 10. If request’s response tainting is "cors" and locationURL includes
|
// 10. If request’s response tainting is "cors" and locationURL includes
|
||||||
@ -1159,9 +1161,9 @@ async function httpRedirectFetch (fetchParams, response) {
|
|||||||
request.responseTainting === 'cors' &&
|
request.responseTainting === 'cors' &&
|
||||||
(locationURL.username || locationURL.password)
|
(locationURL.username || locationURL.password)
|
||||||
) {
|
) {
|
||||||
return makeNetworkError(
|
return Promise.resolve(makeNetworkError(
|
||||||
'URL cannot contain credentials for request mode "cors"'
|
'URL cannot contain credentials for request mode "cors"'
|
||||||
)
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
// 11. If actualResponse’s status is not 303, request’s body is non-null,
|
// 11. If actualResponse’s status is not 303, request’s body is non-null,
|
||||||
@ -1171,7 +1173,7 @@ async function httpRedirectFetch (fetchParams, response) {
|
|||||||
request.body != null &&
|
request.body != null &&
|
||||||
request.body.source == null
|
request.body.source == null
|
||||||
) {
|
) {
|
||||||
return makeNetworkError()
|
return Promise.resolve(makeNetworkError())
|
||||||
}
|
}
|
||||||
|
|
||||||
// 12. If one of the following is true
|
// 12. If one of the following is true
|
||||||
@ -1180,7 +1182,7 @@ async function httpRedirectFetch (fetchParams, response) {
|
|||||||
if (
|
if (
|
||||||
([301, 302].includes(actualResponse.status) && request.method === 'POST') ||
|
([301, 302].includes(actualResponse.status) && request.method === 'POST') ||
|
||||||
(actualResponse.status === 303 &&
|
(actualResponse.status === 303 &&
|
||||||
!['GET', 'HEAD'].includes(request.method))
|
!GET_OR_HEAD.includes(request.method))
|
||||||
) {
|
) {
|
||||||
// then:
|
// then:
|
||||||
// 1. Set request’s method to `GET` and request’s body to null.
|
// 1. Set request’s method to `GET` and request’s body to null.
|
||||||
@ -1464,7 +1466,7 @@ async function httpNetworkOrCacheFetch (
|
|||||||
// responses in httpCache, as per the "Invalidation" chapter of HTTP
|
// responses in httpCache, as per the "Invalidation" chapter of HTTP
|
||||||
// Caching, and set storedResponse to null. [HTTP-CACHING]
|
// Caching, and set storedResponse to null. [HTTP-CACHING]
|
||||||
if (
|
if (
|
||||||
!safeMethods.includes(httpRequest.method) &&
|
!safeMethodsSet.has(httpRequest.method) &&
|
||||||
forwardResponse.status >= 200 &&
|
forwardResponse.status >= 200 &&
|
||||||
forwardResponse.status <= 399
|
forwardResponse.status <= 399
|
||||||
) {
|
) {
|
||||||
@ -2024,7 +2026,7 @@ async function httpNetworkFetch (
|
|||||||
|
|
||||||
const willFollow = request.redirect === 'follow' &&
|
const willFollow = request.redirect === 'follow' &&
|
||||||
location &&
|
location &&
|
||||||
redirectStatus.includes(status)
|
redirectStatusSet.has(status)
|
||||||
|
|
||||||
// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding
|
// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding
|
||||||
if (request.method !== 'HEAD' && request.method !== 'CONNECT' && !nullBodyStatus.includes(status) && !willFollow) {
|
if (request.method !== 'HEAD' && request.method !== 'CONNECT' && !nullBodyStatus.includes(status) && !willFollow) {
|
||||||
|
8
deps/undici/src/lib/fetch/request.js
vendored
8
deps/undici/src/lib/fetch/request.js
vendored
@ -13,8 +13,8 @@ const {
|
|||||||
makePolicyContainer
|
makePolicyContainer
|
||||||
} = require('./util')
|
} = require('./util')
|
||||||
const {
|
const {
|
||||||
forbiddenMethods,
|
forbiddenMethodsSet,
|
||||||
corsSafeListedMethods,
|
corsSafeListedMethodsSet,
|
||||||
referrerPolicy,
|
referrerPolicy,
|
||||||
requestRedirect,
|
requestRedirect,
|
||||||
requestMode,
|
requestMode,
|
||||||
@ -319,7 +319,7 @@ class Request {
|
|||||||
throw TypeError(`'${init.method}' is not a valid HTTP method.`)
|
throw TypeError(`'${init.method}' is not a valid HTTP method.`)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (forbiddenMethods.indexOf(method.toUpperCase()) !== -1) {
|
if (forbiddenMethodsSet.has(method.toUpperCase())) {
|
||||||
throw TypeError(`'${init.method}' HTTP method is unsupported.`)
|
throw TypeError(`'${init.method}' HTTP method is unsupported.`)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -404,7 +404,7 @@ class Request {
|
|||||||
if (mode === 'no-cors') {
|
if (mode === 'no-cors') {
|
||||||
// 1. If this’s request’s method is not a CORS-safelisted method,
|
// 1. If this’s request’s method is not a CORS-safelisted method,
|
||||||
// then throw a TypeError.
|
// then throw a TypeError.
|
||||||
if (!corsSafeListedMethods.includes(request.method)) {
|
if (!corsSafeListedMethodsSet.has(request.method)) {
|
||||||
throw new TypeError(
|
throw new TypeError(
|
||||||
`'${request.method} is unsupported in no-cors mode.`
|
`'${request.method} is unsupported in no-cors mode.`
|
||||||
)
|
)
|
||||||
|
7
deps/undici/src/lib/fetch/response.js
vendored
7
deps/undici/src/lib/fetch/response.js
vendored
@ -14,7 +14,7 @@ const {
|
|||||||
isomorphicEncode
|
isomorphicEncode
|
||||||
} = require('./util')
|
} = require('./util')
|
||||||
const {
|
const {
|
||||||
redirectStatus,
|
redirectStatusSet,
|
||||||
nullBodyStatus,
|
nullBodyStatus,
|
||||||
DOMException
|
DOMException
|
||||||
} = require('./constants')
|
} = require('./constants')
|
||||||
@ -28,6 +28,7 @@ const assert = require('assert')
|
|||||||
const { types } = require('util')
|
const { types } = require('util')
|
||||||
|
|
||||||
const ReadableStream = globalThis.ReadableStream || require('stream/web').ReadableStream
|
const ReadableStream = globalThis.ReadableStream || require('stream/web').ReadableStream
|
||||||
|
const textEncoder = new TextEncoder('utf-8')
|
||||||
|
|
||||||
// https://fetch.spec.whatwg.org/#response-class
|
// https://fetch.spec.whatwg.org/#response-class
|
||||||
class Response {
|
class Response {
|
||||||
@ -57,7 +58,7 @@ class Response {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 1. Let bytes the result of running serialize a JavaScript value to JSON bytes on data.
|
// 1. Let bytes the result of running serialize a JavaScript value to JSON bytes on data.
|
||||||
const bytes = new TextEncoder('utf-8').encode(
|
const bytes = textEncoder.encode(
|
||||||
serializeJavascriptValueToJSONString(data)
|
serializeJavascriptValueToJSONString(data)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -102,7 +103,7 @@ class Response {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 3. If status is not a redirect status, then throw a RangeError.
|
// 3. If status is not a redirect status, then throw a RangeError.
|
||||||
if (!redirectStatus.includes(status)) {
|
if (!redirectStatusSet.has(status)) {
|
||||||
throw new RangeError('Invalid status code ' + status)
|
throw new RangeError('Invalid status code ' + status)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
8
deps/undici/src/lib/fetch/util.js
vendored
8
deps/undici/src/lib/fetch/util.js
vendored
@ -1,6 +1,6 @@
|
|||||||
'use strict'
|
'use strict'
|
||||||
|
|
||||||
const { redirectStatus, badPorts, referrerPolicy: referrerPolicyTokens } = require('./constants')
|
const { redirectStatusSet, referrerPolicySet: referrerPolicyTokens, badPortsSet } = require('./constants')
|
||||||
const { getGlobalOrigin } = require('./global')
|
const { getGlobalOrigin } = require('./global')
|
||||||
const { performance } = require('perf_hooks')
|
const { performance } = require('perf_hooks')
|
||||||
const { isBlobLike, toUSVString, ReadableStreamFrom } = require('../core/util')
|
const { isBlobLike, toUSVString, ReadableStreamFrom } = require('../core/util')
|
||||||
@ -29,7 +29,7 @@ function responseURL (response) {
|
|||||||
// https://fetch.spec.whatwg.org/#concept-response-location-url
|
// https://fetch.spec.whatwg.org/#concept-response-location-url
|
||||||
function responseLocationURL (response, requestFragment) {
|
function responseLocationURL (response, requestFragment) {
|
||||||
// 1. If response’s status is not a redirect status, then return null.
|
// 1. If response’s status is not a redirect status, then return null.
|
||||||
if (!redirectStatus.includes(response.status)) {
|
if (!redirectStatusSet.has(response.status)) {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64,7 +64,7 @@ function requestBadPort (request) {
|
|||||||
|
|
||||||
// 2. If url’s scheme is an HTTP(S) scheme and url’s port is a bad port,
|
// 2. If url’s scheme is an HTTP(S) scheme and url’s port is a bad port,
|
||||||
// then return blocked.
|
// then return blocked.
|
||||||
if (urlIsHttpHttpsScheme(url) && badPorts.includes(url.port)) {
|
if (urlIsHttpHttpsScheme(url) && badPortsSet.has(url.port)) {
|
||||||
return 'blocked'
|
return 'blocked'
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -206,7 +206,7 @@ function setRequestReferrerPolicyOnRedirect (request, actualResponse) {
|
|||||||
// The left-most policy is the fallback.
|
// The left-most policy is the fallback.
|
||||||
for (let i = policyHeader.length; i !== 0; i--) {
|
for (let i = policyHeader.length; i !== 0; i--) {
|
||||||
const token = policyHeader[i - 1].trim()
|
const token = policyHeader[i - 1].trim()
|
||||||
if (referrerPolicyTokens.includes(token)) {
|
if (referrerPolicyTokens.has(token)) {
|
||||||
policy = token
|
policy = token
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
120
deps/undici/src/package-lock.json
generated
vendored
120
deps/undici/src/package-lock.json
generated
vendored
@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "undici",
|
"name": "undici",
|
||||||
"version": "5.26.4",
|
"version": "5.27.0",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "undici",
|
"name": "undici",
|
||||||
"version": "5.26.4",
|
"version": "5.27.0",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@fastify/busboy": "^2.0.0"
|
"@fastify/busboy": "^2.0.0"
|
||||||
@ -795,9 +795,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@eslint-community/regexpp": {
|
"node_modules/@eslint-community/regexpp": {
|
||||||
"version": "4.9.1",
|
"version": "4.10.0",
|
||||||
"resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz",
|
"resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz",
|
||||||
"integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==",
|
"integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^12.0.0 || ^14.0.0 || >=16.0.0"
|
"node": "^12.0.0 || ^14.0.0 || >=16.0.0"
|
||||||
@ -1634,10 +1634,22 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@types/node": {
|
"node_modules/@types/node": {
|
||||||
"version": "18.18.6",
|
"version": "18.18.7",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.6.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.7.tgz",
|
||||||
"integrity": "sha512-wf3Vz+jCmOQ2HV1YUJuCWdL64adYxumkrxtc+H1VUQlnQI04+5HtH+qZCOE21lBE7gIrt+CwX2Wv8Acrw5Ak6w==",
|
"integrity": "sha512-bw+lEsxis6eqJYW8Ql6+yTqkE6RuFtsQPSe5JxXbqYRFQEER5aJA9a5UH9igqDWm3X4iLHIKOHlnAXLM4mi7uQ==",
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"undici-types": "~5.26.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@types/node-forge": {
|
||||||
|
"version": "1.3.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.8.tgz",
|
||||||
|
"integrity": "sha512-vGXshY9vim9CJjrpcS5raqSjEfKlJcWy2HNdgUasR66fAnVEYarrf1ULV4nfvpC1nZq/moA9qyqBcu83x+Jlrg==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@types/node": "*"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@types/normalize-package-data": {
|
"node_modules/@types/normalize-package-data": {
|
||||||
"version": "2.4.3",
|
"version": "2.4.3",
|
||||||
@ -1691,9 +1703,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/acorn": {
|
"node_modules/acorn": {
|
||||||
"version": "8.10.0",
|
"version": "8.11.2",
|
||||||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
|
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz",
|
||||||
"integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==",
|
"integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
"acorn": "bin/acorn"
|
"acorn": "bin/acorn"
|
||||||
@ -1712,12 +1724,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/acquerello": {
|
"node_modules/acquerello": {
|
||||||
"version": "1.0.12",
|
"version": "1.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/acquerello/-/acquerello-1.0.12.tgz",
|
"resolved": "https://registry.npmjs.org/acquerello/-/acquerello-1.1.2.tgz",
|
||||||
"integrity": "sha512-6yCYGUNctkYqF7DLmm0D/CxlRmM/OrzyuHOU+mbaO6VRxHmRg4EV0phvyBexRt6jTyDtEQIb09YFiwu5LExXsA==",
|
"integrity": "sha512-V/ynq+ekRAls3iWOQMxA8G9pi40aTL9mheHHxA8x8oowZVjY7bROD99t+TSOKKp3BviACYOsNMlL+b+8jZ7ImQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=14.15.0"
|
"node": ">= 18.18.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/agent-base": {
|
"node_modules/agent-base": {
|
||||||
@ -2658,9 +2670,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/caniuse-lite": {
|
"node_modules/caniuse-lite": {
|
||||||
"version": "1.0.30001551",
|
"version": "1.0.30001557",
|
||||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001551.tgz",
|
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001557.tgz",
|
||||||
"integrity": "sha512-vtBAez47BoGMMzlbYhfXrMV1kvRF2WP/lqiMuDu1Sb4EE4LKEgjopFDSRtZfdVnslNRpOqV/woE+Xgrwj6VQlg==",
|
"integrity": "sha512-91oR7hLNUP3gG6MLU+n96em322a8Xzes8wWdBKhLgUoiJsAF5irZnxSUCbc+qUZXNnPCfUwLOi9ZCZpkvjQajw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@ -3125,17 +3137,17 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/cronometro": {
|
"node_modules/cronometro": {
|
||||||
"version": "1.1.5",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/cronometro/-/cronometro-1.1.5.tgz",
|
"resolved": "https://registry.npmjs.org/cronometro/-/cronometro-1.2.0.tgz",
|
||||||
"integrity": "sha512-uotkltVBg4WLAeCgbSsLhqpEyvYTn1J++bYcsq0i/RPNMHkMp4sN/7Hx+0O3UaCqIWJ4AG1dNrzDSkzt69jwQQ==",
|
"integrity": "sha512-QeNGCuvNFimu4IJhZSL4oNopAmxfjRkSqh4rci4PZuNWKLRhqPC0oemw6gdbfgz0evqxOOS3uwtSt2FMR8dDXw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"acquerello": "^1.0.12",
|
"acquerello": "^1.1.2",
|
||||||
"hdr-histogram-js": "^3.0.0",
|
"hdr-histogram-js": "^3.0.0",
|
||||||
"table": "^6.8.1"
|
"table": "^6.8.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=14.15.0"
|
"node": ">= 18.18.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/cross-spawn": {
|
"node_modules/cross-spawn": {
|
||||||
@ -3782,9 +3794,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/electron-to-chromium": {
|
"node_modules/electron-to-chromium": {
|
||||||
"version": "1.4.563",
|
"version": "1.4.569",
|
||||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.563.tgz",
|
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.569.tgz",
|
||||||
"integrity": "sha512-dg5gj5qOgfZNkPNeyKBZQAQitIQ/xwfIDmEQJHCbXaD9ebTZxwJXUsDYcBlAvZGZLi+/354l35J1wkmP6CqYaw==",
|
"integrity": "sha512-LsrJjZ0IbVy12ApW3gpYpcmHS3iRxH4bkKOW98y1/D+3cvDUWGcbzbsFinfUS8knpcZk/PG/2p/RnkMCYN7PVg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/emittery": {
|
"node_modules/emittery": {
|
||||||
@ -4268,26 +4280,26 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/eslint-plugin-import": {
|
"node_modules/eslint-plugin-import": {
|
||||||
"version": "2.28.1",
|
"version": "2.29.0",
|
||||||
"resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz",
|
"resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.0.tgz",
|
||||||
"integrity": "sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==",
|
"integrity": "sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"array-includes": "^3.1.6",
|
"array-includes": "^3.1.7",
|
||||||
"array.prototype.findlastindex": "^1.2.2",
|
"array.prototype.findlastindex": "^1.2.3",
|
||||||
"array.prototype.flat": "^1.3.1",
|
"array.prototype.flat": "^1.3.2",
|
||||||
"array.prototype.flatmap": "^1.3.1",
|
"array.prototype.flatmap": "^1.3.2",
|
||||||
"debug": "^3.2.7",
|
"debug": "^3.2.7",
|
||||||
"doctrine": "^2.1.0",
|
"doctrine": "^2.1.0",
|
||||||
"eslint-import-resolver-node": "^0.3.7",
|
"eslint-import-resolver-node": "^0.3.9",
|
||||||
"eslint-module-utils": "^2.8.0",
|
"eslint-module-utils": "^2.8.0",
|
||||||
"has": "^1.0.3",
|
"hasown": "^2.0.0",
|
||||||
"is-core-module": "^2.13.0",
|
"is-core-module": "^2.13.1",
|
||||||
"is-glob": "^4.0.3",
|
"is-glob": "^4.0.3",
|
||||||
"minimatch": "^3.1.2",
|
"minimatch": "^3.1.2",
|
||||||
"object.fromentries": "^2.0.6",
|
"object.fromentries": "^2.0.7",
|
||||||
"object.groupby": "^1.0.0",
|
"object.groupby": "^1.0.1",
|
||||||
"object.values": "^1.1.6",
|
"object.values": "^1.1.7",
|
||||||
"semver": "^6.3.1",
|
"semver": "^6.3.1",
|
||||||
"tsconfig-paths": "^3.14.2"
|
"tsconfig-paths": "^3.14.2"
|
||||||
},
|
},
|
||||||
@ -4910,9 +4922,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/figlet": {
|
"node_modules/figlet": {
|
||||||
"version": "1.6.0",
|
"version": "1.7.0",
|
||||||
"resolved": "https://registry.npmjs.org/figlet/-/figlet-1.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/figlet/-/figlet-1.7.0.tgz",
|
||||||
"integrity": "sha512-31EQGhCEITv6+hi2ORRPyn3bulaV9Fl4xOdR169cBzH/n1UqcxsiSB/noo6SJdD7Kfb1Ljit+IgR1USvF/XbdA==",
|
"integrity": "sha512-gO8l3wvqo0V7wEFLXPbkX83b7MVjRrk1oRLfYlZXol8nEpb/ON9pcKLI4qpBv5YtOTfrINtqb7b40iYY2FTWFg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
"figlet": "bin/index.js"
|
"figlet": "bin/index.js"
|
||||||
@ -5624,15 +5636,6 @@
|
|||||||
"node": ">=6"
|
"node": ">=6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/has": {
|
|
||||||
"version": "1.0.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz",
|
|
||||||
"integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==",
|
|
||||||
"dev": true,
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 0.4.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/has-ansi": {
|
"node_modules/has-ansi": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
|
||||||
@ -10764,11 +10767,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/selfsigned": {
|
"node_modules/selfsigned": {
|
||||||
"version": "2.1.1",
|
"version": "2.4.1",
|
||||||
"resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz",
|
||||||
"integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==",
|
"integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@types/node-forge": "^1.3.0",
|
||||||
"node-forge": "^1"
|
"node-forge": "^1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@ -14300,6 +14304,12 @@
|
|||||||
"url": "https://github.com/sponsors/ljharb"
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/undici-types": {
|
||||||
|
"version": "5.26.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
|
||||||
|
"integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"node_modules/unicode-length": {
|
"node_modules/unicode-length": {
|
||||||
"version": "2.1.0",
|
"version": "2.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/unicode-length/-/unicode-length-2.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/unicode-length/-/unicode-length-2.1.0.tgz",
|
||||||
|
4
deps/undici/src/package.json
vendored
4
deps/undici/src/package.json
vendored
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "undici",
|
"name": "undici",
|
||||||
"version": "5.26.4",
|
"version": "5.27.0",
|
||||||
"description": "An HTTP/1.1 client, written from scratch for Node.js",
|
"description": "An HTTP/1.1 client, written from scratch for Node.js",
|
||||||
"homepage": "https://undici.nodejs.org",
|
"homepage": "https://undici.nodejs.org",
|
||||||
"bugs": {
|
"bugs": {
|
||||||
@ -84,7 +84,7 @@
|
|||||||
"test:tdd": "tap test/*.js test/diagnostics-channel/*.js -w",
|
"test:tdd": "tap test/*.js test/diagnostics-channel/*.js -w",
|
||||||
"test:typescript": "node scripts/verifyVersion.js 14 || tsd && tsc --skipLibCheck test/imports/undici-import.ts",
|
"test:typescript": "node scripts/verifyVersion.js 14 || tsd && tsc --skipLibCheck test/imports/undici-import.ts",
|
||||||
"test:websocket": "node scripts/verifyVersion.js 18 || tap test/websocket/*.js",
|
"test:websocket": "node scripts/verifyVersion.js 18 || tap test/websocket/*.js",
|
||||||
"test:wpt": "node scripts/verifyVersion 18 || (node test/wpt/start-fetch.mjs && node test/wpt/start-FileAPI.mjs && node test/wpt/start-mimesniff.mjs && node test/wpt/start-xhr.mjs && node --no-warnings --expose-internals test/wpt/start-websockets.mjs)",
|
"test:wpt": "node scripts/verifyVersion 18 || (node test/wpt/start-fetch.mjs && node test/wpt/start-FileAPI.mjs && node test/wpt/start-mimesniff.mjs && node test/wpt/start-xhr.mjs && node test/wpt/start-websockets.mjs)",
|
||||||
"coverage": "nyc --reporter=text --reporter=html npm run test",
|
"coverage": "nyc --reporter=text --reporter=html npm run test",
|
||||||
"coverage:ci": "nyc --reporter=lcov npm run test",
|
"coverage:ci": "nyc --reporter=lcov npm run test",
|
||||||
"bench": "PORT=3042 concurrently -k -s first npm:bench:server npm:bench:run",
|
"bench": "PORT=3042 concurrently -k -s first npm:bench:server npm:bench:run",
|
||||||
|
6
deps/undici/src/types/index.d.ts
vendored
6
deps/undici/src/types/index.d.ts
vendored
@ -53,5 +53,11 @@ declare namespace Undici {
|
|||||||
var MockAgent: typeof import('./mock-agent').default;
|
var MockAgent: typeof import('./mock-agent').default;
|
||||||
var mockErrors: typeof import('./mock-errors').default;
|
var mockErrors: typeof import('./mock-errors').default;
|
||||||
var fetch: typeof import('./fetch').fetch;
|
var fetch: typeof import('./fetch').fetch;
|
||||||
|
var Headers: typeof import('./fetch').Headers;
|
||||||
|
var Response: typeof import('./fetch').Response;
|
||||||
|
var Request: typeof import('./fetch').Request;
|
||||||
|
var FormData: typeof import('./formdata').FormData;
|
||||||
|
var File: typeof import('./file').File;
|
||||||
|
var FileReader: typeof import('./filereader').FileReader;
|
||||||
var caches: typeof import('./cache').caches;
|
var caches: typeof import('./cache').caches;
|
||||||
}
|
}
|
||||||
|
146
deps/undici/undici.js
vendored
146
deps/undici/undici.js
vendored
@ -762,8 +762,10 @@ var require_constants = __commonJS({
|
|||||||
"use strict";
|
"use strict";
|
||||||
var { MessageChannel, receiveMessageOnPort } = require("worker_threads");
|
var { MessageChannel, receiveMessageOnPort } = require("worker_threads");
|
||||||
var corsSafeListedMethods = ["GET", "HEAD", "POST"];
|
var corsSafeListedMethods = ["GET", "HEAD", "POST"];
|
||||||
|
var corsSafeListedMethodsSet = new Set(corsSafeListedMethods);
|
||||||
var nullBodyStatus = [101, 204, 205, 304];
|
var nullBodyStatus = [101, 204, 205, 304];
|
||||||
var redirectStatus = [301, 302, 303, 307, 308];
|
var redirectStatus = [301, 302, 303, 307, 308];
|
||||||
|
var redirectStatusSet = new Set(redirectStatus);
|
||||||
var badPorts = [
|
var badPorts = [
|
||||||
"1",
|
"1",
|
||||||
"7",
|
"7",
|
||||||
@ -846,6 +848,7 @@ var require_constants = __commonJS({
|
|||||||
"6697",
|
"6697",
|
||||||
"10080"
|
"10080"
|
||||||
];
|
];
|
||||||
|
var badPortsSet = new Set(badPorts);
|
||||||
var referrerPolicy = [
|
var referrerPolicy = [
|
||||||
"",
|
"",
|
||||||
"no-referrer",
|
"no-referrer",
|
||||||
@ -857,8 +860,10 @@ var require_constants = __commonJS({
|
|||||||
"strict-origin-when-cross-origin",
|
"strict-origin-when-cross-origin",
|
||||||
"unsafe-url"
|
"unsafe-url"
|
||||||
];
|
];
|
||||||
|
var referrerPolicySet = new Set(referrerPolicy);
|
||||||
var requestRedirect = ["follow", "manual", "error"];
|
var requestRedirect = ["follow", "manual", "error"];
|
||||||
var safeMethods = ["GET", "HEAD", "OPTIONS", "TRACE"];
|
var safeMethods = ["GET", "HEAD", "OPTIONS", "TRACE"];
|
||||||
|
var safeMethodsSet = new Set(safeMethods);
|
||||||
var requestMode = ["navigate", "same-origin", "no-cors", "cors"];
|
var requestMode = ["navigate", "same-origin", "no-cors", "cors"];
|
||||||
var requestCredentials = ["omit", "same-origin", "include"];
|
var requestCredentials = ["omit", "same-origin", "include"];
|
||||||
var requestCache = [
|
var requestCache = [
|
||||||
@ -884,6 +889,7 @@ var require_constants = __commonJS({
|
|||||||
"half"
|
"half"
|
||||||
];
|
];
|
||||||
var forbiddenMethods = ["CONNECT", "TRACE", "TRACK"];
|
var forbiddenMethods = ["CONNECT", "TRACE", "TRACK"];
|
||||||
|
var forbiddenMethodsSet = new Set(forbiddenMethods);
|
||||||
var subresource = [
|
var subresource = [
|
||||||
"audio",
|
"audio",
|
||||||
"audioworklet",
|
"audioworklet",
|
||||||
@ -898,6 +904,7 @@ var require_constants = __commonJS({
|
|||||||
"xslt",
|
"xslt",
|
||||||
""
|
""
|
||||||
];
|
];
|
||||||
|
var subresourceSet = new Set(subresource);
|
||||||
var DOMException = globalThis.DOMException ?? (() => {
|
var DOMException = globalThis.DOMException ?? (() => {
|
||||||
try {
|
try {
|
||||||
atob("~");
|
atob("~");
|
||||||
@ -936,7 +943,14 @@ var require_constants = __commonJS({
|
|||||||
nullBodyStatus,
|
nullBodyStatus,
|
||||||
safeMethods,
|
safeMethods,
|
||||||
badPorts,
|
badPorts,
|
||||||
requestDuplex
|
requestDuplex,
|
||||||
|
subresourceSet,
|
||||||
|
badPortsSet,
|
||||||
|
redirectStatusSet,
|
||||||
|
corsSafeListedMethodsSet,
|
||||||
|
safeMethodsSet,
|
||||||
|
forbiddenMethodsSet,
|
||||||
|
referrerPolicySet
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -983,7 +997,7 @@ var require_global = __commonJS({
|
|||||||
var require_util2 = __commonJS({
|
var require_util2 = __commonJS({
|
||||||
"lib/fetch/util.js"(exports2, module2) {
|
"lib/fetch/util.js"(exports2, module2) {
|
||||||
"use strict";
|
"use strict";
|
||||||
var { redirectStatus, badPorts, referrerPolicy: referrerPolicyTokens } = require_constants();
|
var { redirectStatusSet, referrerPolicySet: referrerPolicyTokens, badPortsSet } = require_constants();
|
||||||
var { getGlobalOrigin } = require_global();
|
var { getGlobalOrigin } = require_global();
|
||||||
var { performance: performance2 } = require("perf_hooks");
|
var { performance: performance2 } = require("perf_hooks");
|
||||||
var { isBlobLike, toUSVString, ReadableStreamFrom } = require_util();
|
var { isBlobLike, toUSVString, ReadableStreamFrom } = require_util();
|
||||||
@ -1001,7 +1015,7 @@ var require_util2 = __commonJS({
|
|||||||
}
|
}
|
||||||
__name(responseURL, "responseURL");
|
__name(responseURL, "responseURL");
|
||||||
function responseLocationURL(response, requestFragment) {
|
function responseLocationURL(response, requestFragment) {
|
||||||
if (!redirectStatus.includes(response.status)) {
|
if (!redirectStatusSet.has(response.status)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
let location = response.headersList.get("location");
|
let location = response.headersList.get("location");
|
||||||
@ -1020,7 +1034,7 @@ var require_util2 = __commonJS({
|
|||||||
__name(requestCurrentURL, "requestCurrentURL");
|
__name(requestCurrentURL, "requestCurrentURL");
|
||||||
function requestBadPort(request) {
|
function requestBadPort(request) {
|
||||||
const url = requestCurrentURL(request);
|
const url = requestCurrentURL(request);
|
||||||
if (urlIsHttpHttpsScheme(url) && badPorts.includes(url.port)) {
|
if (urlIsHttpHttpsScheme(url) && badPortsSet.has(url.port)) {
|
||||||
return "blocked";
|
return "blocked";
|
||||||
}
|
}
|
||||||
return "allowed";
|
return "allowed";
|
||||||
@ -1083,7 +1097,7 @@ var require_util2 = __commonJS({
|
|||||||
if (policyHeader.length > 0) {
|
if (policyHeader.length > 0) {
|
||||||
for (let i = policyHeader.length; i !== 0; i--) {
|
for (let i = policyHeader.length; i !== 0; i--) {
|
||||||
const token = policyHeader[i - 1].trim();
|
const token = policyHeader[i - 1].trim();
|
||||||
if (referrerPolicyTokens.includes(token)) {
|
if (referrerPolicyTokens.has(token)) {
|
||||||
policy = token;
|
policy = token;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -4037,6 +4051,7 @@ var require_file = __commonJS({
|
|||||||
var { webidl } = require_webidl();
|
var { webidl } = require_webidl();
|
||||||
var { parseMIMEType, serializeAMimeType } = require_dataURL();
|
var { parseMIMEType, serializeAMimeType } = require_dataURL();
|
||||||
var { kEnumerableProperty } = require_util();
|
var { kEnumerableProperty } = require_util();
|
||||||
|
var encoder = new TextEncoder();
|
||||||
var File = class _File extends Blob2 {
|
var File = class _File extends Blob2 {
|
||||||
static {
|
static {
|
||||||
__name(this, "File");
|
__name(this, "File");
|
||||||
@ -4188,7 +4203,7 @@ var require_file = __commonJS({
|
|||||||
if (options.endings === "native") {
|
if (options.endings === "native") {
|
||||||
s = convertLineEndingsNative(s);
|
s = convertLineEndingsNative(s);
|
||||||
}
|
}
|
||||||
bytes.push(new TextEncoder().encode(s));
|
bytes.push(encoder.encode(s));
|
||||||
} else if (types.isAnyArrayBuffer(element) || types.isTypedArray(element)) {
|
} else if (types.isAnyArrayBuffer(element) || types.isTypedArray(element)) {
|
||||||
if (!element.buffer) {
|
if (!element.buffer) {
|
||||||
bytes.push(new Uint8Array(element));
|
bytes.push(new Uint8Array(element));
|
||||||
@ -4407,6 +4422,8 @@ var require_body = __commonJS({
|
|||||||
var { parseMIMEType, serializeAMimeType } = require_dataURL();
|
var { parseMIMEType, serializeAMimeType } = require_dataURL();
|
||||||
var ReadableStream = globalThis.ReadableStream;
|
var ReadableStream = globalThis.ReadableStream;
|
||||||
var File = NativeFile ?? UndiciFile;
|
var File = NativeFile ?? UndiciFile;
|
||||||
|
var textEncoder = new TextEncoder();
|
||||||
|
var textDecoder = new TextDecoder();
|
||||||
function extractBody(object, keepalive = false) {
|
function extractBody(object, keepalive = false) {
|
||||||
if (!ReadableStream) {
|
if (!ReadableStream) {
|
||||||
ReadableStream = require("stream/web").ReadableStream;
|
ReadableStream = require("stream/web").ReadableStream;
|
||||||
@ -4420,7 +4437,7 @@ var require_body = __commonJS({
|
|||||||
stream = new ReadableStream({
|
stream = new ReadableStream({
|
||||||
async pull(controller) {
|
async pull(controller) {
|
||||||
controller.enqueue(
|
controller.enqueue(
|
||||||
typeof source === "string" ? new TextEncoder().encode(source) : source
|
typeof source === "string" ? textEncoder.encode(source) : source
|
||||||
);
|
);
|
||||||
queueMicrotask(() => readableStreamClose(controller));
|
queueMicrotask(() => readableStreamClose(controller));
|
||||||
},
|
},
|
||||||
@ -4450,21 +4467,20 @@ var require_body = __commonJS({
|
|||||||
Content-Disposition: form-data`;
|
Content-Disposition: form-data`;
|
||||||
const escape = /* @__PURE__ */ __name((str) => str.replace(/\n/g, "%0A").replace(/\r/g, "%0D").replace(/"/g, "%22"), "escape");
|
const escape = /* @__PURE__ */ __name((str) => str.replace(/\n/g, "%0A").replace(/\r/g, "%0D").replace(/"/g, "%22"), "escape");
|
||||||
const normalizeLinefeeds = /* @__PURE__ */ __name((value) => value.replace(/\r?\n|\r/g, "\r\n"), "normalizeLinefeeds");
|
const normalizeLinefeeds = /* @__PURE__ */ __name((value) => value.replace(/\r?\n|\r/g, "\r\n"), "normalizeLinefeeds");
|
||||||
const enc = new TextEncoder();
|
|
||||||
const blobParts = [];
|
const blobParts = [];
|
||||||
const rn = new Uint8Array([13, 10]);
|
const rn = new Uint8Array([13, 10]);
|
||||||
length = 0;
|
length = 0;
|
||||||
let hasUnknownSizeValue = false;
|
let hasUnknownSizeValue = false;
|
||||||
for (const [name, value] of object) {
|
for (const [name, value] of object) {
|
||||||
if (typeof value === "string") {
|
if (typeof value === "string") {
|
||||||
const chunk2 = enc.encode(prefix + `; name="${escape(normalizeLinefeeds(name))}"\r
|
const chunk2 = textEncoder.encode(prefix + `; name="${escape(normalizeLinefeeds(name))}"\r
|
||||||
\r
|
\r
|
||||||
${normalizeLinefeeds(value)}\r
|
${normalizeLinefeeds(value)}\r
|
||||||
`);
|
`);
|
||||||
blobParts.push(chunk2);
|
blobParts.push(chunk2);
|
||||||
length += chunk2.byteLength;
|
length += chunk2.byteLength;
|
||||||
} else {
|
} else {
|
||||||
const chunk2 = enc.encode(`${prefix}; name="${escape(normalizeLinefeeds(name))}"` + (value.name ? `; filename="${escape(value.name)}"` : "") + `\r
|
const chunk2 = textEncoder.encode(`${prefix}; name="${escape(normalizeLinefeeds(name))}"` + (value.name ? `; filename="${escape(value.name)}"` : "") + `\r
|
||||||
Content-Type: ${value.type || "application/octet-stream"}\r
|
Content-Type: ${value.type || "application/octet-stream"}\r
|
||||||
\r
|
\r
|
||||||
`);
|
`);
|
||||||
@ -4476,7 +4492,7 @@ Content-Type: ${value.type || "application/octet-stream"}\r
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const chunk = enc.encode(`--${boundary}--`);
|
const chunk = textEncoder.encode(`--${boundary}--`);
|
||||||
blobParts.push(chunk);
|
blobParts.push(chunk);
|
||||||
length += chunk.byteLength;
|
length += chunk.byteLength;
|
||||||
if (hasUnknownSizeValue) {
|
if (hasUnknownSizeValue) {
|
||||||
@ -4671,14 +4687,14 @@ Content-Type: ${value.type || "application/octet-stream"}\r
|
|||||||
let entries;
|
let entries;
|
||||||
try {
|
try {
|
||||||
let text = "";
|
let text = "";
|
||||||
const textDecoder = new TextDecoder("utf-8", { ignoreBOM: true });
|
const streamingDecoder = new TextDecoder("utf-8", { ignoreBOM: true });
|
||||||
for await (const chunk of consumeBody(this[kState].body)) {
|
for await (const chunk of consumeBody(this[kState].body)) {
|
||||||
if (!isUint8Array(chunk)) {
|
if (!isUint8Array(chunk)) {
|
||||||
throw new TypeError("Expected Uint8Array chunk");
|
throw new TypeError("Expected Uint8Array chunk");
|
||||||
}
|
}
|
||||||
text += textDecoder.decode(chunk, { stream: true });
|
text += streamingDecoder.decode(chunk, { stream: true });
|
||||||
}
|
}
|
||||||
text += textDecoder.decode();
|
text += streamingDecoder.decode();
|
||||||
entries = new URLSearchParams(text);
|
entries = new URLSearchParams(text);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
throw Object.assign(new TypeError(), { cause: err });
|
throw Object.assign(new TypeError(), { cause: err });
|
||||||
@ -4739,7 +4755,7 @@ Content-Type: ${value.type || "application/octet-stream"}\r
|
|||||||
if (buffer[0] === 239 && buffer[1] === 187 && buffer[2] === 191) {
|
if (buffer[0] === 239 && buffer[1] === 187 && buffer[2] === 191) {
|
||||||
buffer = buffer.subarray(3);
|
buffer = buffer.subarray(3);
|
||||||
}
|
}
|
||||||
const output = new TextDecoder().decode(buffer);
|
const output = textDecoder.decode(buffer);
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
__name(utf8DecodeBytes, "utf8DecodeBytes");
|
__name(utf8DecodeBytes, "utf8DecodeBytes");
|
||||||
@ -4783,7 +4799,7 @@ var require_response = __commonJS({
|
|||||||
isomorphicEncode
|
isomorphicEncode
|
||||||
} = require_util2();
|
} = require_util2();
|
||||||
var {
|
var {
|
||||||
redirectStatus,
|
redirectStatusSet,
|
||||||
nullBodyStatus,
|
nullBodyStatus,
|
||||||
DOMException
|
DOMException
|
||||||
} = require_constants();
|
} = require_constants();
|
||||||
@ -4796,6 +4812,7 @@ var require_response = __commonJS({
|
|||||||
var assert = require("assert");
|
var assert = require("assert");
|
||||||
var { types } = require("util");
|
var { types } = require("util");
|
||||||
var ReadableStream = globalThis.ReadableStream || require("stream/web").ReadableStream;
|
var ReadableStream = globalThis.ReadableStream || require("stream/web").ReadableStream;
|
||||||
|
var textEncoder = new TextEncoder("utf-8");
|
||||||
var Response = class _Response {
|
var Response = class _Response {
|
||||||
static {
|
static {
|
||||||
__name(this, "Response");
|
__name(this, "Response");
|
||||||
@ -4817,7 +4834,7 @@ var require_response = __commonJS({
|
|||||||
if (init !== null) {
|
if (init !== null) {
|
||||||
init = webidl.converters.ResponseInit(init);
|
init = webidl.converters.ResponseInit(init);
|
||||||
}
|
}
|
||||||
const bytes = new TextEncoder("utf-8").encode(
|
const bytes = textEncoder.encode(
|
||||||
serializeJavascriptValueToJSONString(data)
|
serializeJavascriptValueToJSONString(data)
|
||||||
);
|
);
|
||||||
const body = extractBody(bytes);
|
const body = extractBody(bytes);
|
||||||
@ -4843,7 +4860,7 @@ var require_response = __commonJS({
|
|||||||
cause: err
|
cause: err
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (!redirectStatus.includes(status)) {
|
if (!redirectStatusSet.has(status)) {
|
||||||
throw new RangeError("Invalid status code " + status);
|
throw new RangeError("Invalid status code " + status);
|
||||||
}
|
}
|
||||||
const responseObject = new _Response();
|
const responseObject = new _Response();
|
||||||
@ -5216,8 +5233,8 @@ var require_request = __commonJS({
|
|||||||
makePolicyContainer
|
makePolicyContainer
|
||||||
} = require_util2();
|
} = require_util2();
|
||||||
var {
|
var {
|
||||||
forbiddenMethods,
|
forbiddenMethodsSet,
|
||||||
corsSafeListedMethods,
|
corsSafeListedMethodsSet,
|
||||||
referrerPolicy,
|
referrerPolicy,
|
||||||
requestRedirect,
|
requestRedirect,
|
||||||
requestMode,
|
requestMode,
|
||||||
@ -5410,7 +5427,7 @@ var require_request = __commonJS({
|
|||||||
if (!isValidHTTPToken(init.method)) {
|
if (!isValidHTTPToken(init.method)) {
|
||||||
throw TypeError(`'${init.method}' is not a valid HTTP method.`);
|
throw TypeError(`'${init.method}' is not a valid HTTP method.`);
|
||||||
}
|
}
|
||||||
if (forbiddenMethods.indexOf(method.toUpperCase()) !== -1) {
|
if (forbiddenMethodsSet.has(method.toUpperCase())) {
|
||||||
throw TypeError(`'${init.method}' HTTP method is unsupported.`);
|
throw TypeError(`'${init.method}' HTTP method is unsupported.`);
|
||||||
}
|
}
|
||||||
method = normalizeMethod(init.method);
|
method = normalizeMethod(init.method);
|
||||||
@ -5457,7 +5474,7 @@ var require_request = __commonJS({
|
|||||||
this[kHeaders][kGuard] = "request";
|
this[kHeaders][kGuard] = "request";
|
||||||
this[kHeaders][kRealm] = this[kRealm];
|
this[kHeaders][kRealm] = this[kRealm];
|
||||||
if (mode === "no-cors") {
|
if (mode === "no-cors") {
|
||||||
if (!corsSafeListedMethods.includes(request.method)) {
|
if (!corsSafeListedMethodsSet.has(request.method)) {
|
||||||
throw new TypeError(
|
throw new TypeError(
|
||||||
`'${request.method} is unsupported in no-cors mode.`
|
`'${request.method} is unsupported in no-cors mode.`
|
||||||
);
|
);
|
||||||
@ -6544,6 +6561,13 @@ var require_request2 = __commonJS({
|
|||||||
if (channels.bodySent.hasSubscribers) {
|
if (channels.bodySent.hasSubscribers) {
|
||||||
channels.bodySent.publish({ request: this });
|
channels.bodySent.publish({ request: this });
|
||||||
}
|
}
|
||||||
|
if (this[kHandler].onRequestSent) {
|
||||||
|
try {
|
||||||
|
this[kHandler].onRequestSent();
|
||||||
|
} catch (err) {
|
||||||
|
this.onError(err);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
onConnect(abort) {
|
onConnect(abort) {
|
||||||
assert(!this.aborted);
|
assert(!this.aborted);
|
||||||
@ -9448,11 +9472,11 @@ var require_fetch = __commonJS({
|
|||||||
var assert = require("assert");
|
var assert = require("assert");
|
||||||
var { safelyExtractBody } = require_body();
|
var { safelyExtractBody } = require_body();
|
||||||
var {
|
var {
|
||||||
redirectStatus,
|
redirectStatusSet,
|
||||||
nullBodyStatus,
|
nullBodyStatus,
|
||||||
safeMethods,
|
safeMethodsSet,
|
||||||
requestBodyHeader,
|
requestBodyHeader,
|
||||||
subresource,
|
subresourceSet,
|
||||||
DOMException
|
DOMException
|
||||||
} = require_constants();
|
} = require_constants();
|
||||||
var { kHeadersList } = require_symbols();
|
var { kHeadersList } = require_symbols();
|
||||||
@ -9464,6 +9488,7 @@ var require_fetch = __commonJS({
|
|||||||
var { getGlobalDispatcher } = require_global2();
|
var { getGlobalDispatcher } = require_global2();
|
||||||
var { webidl } = require_webidl();
|
var { webidl } = require_webidl();
|
||||||
var { STATUS_CODES } = require("http");
|
var { STATUS_CODES } = require("http");
|
||||||
|
var GET_OR_HEAD = ["GET", "HEAD"];
|
||||||
var resolveObjectURL;
|
var resolveObjectURL;
|
||||||
var ReadableStream = globalThis.ReadableStream;
|
var ReadableStream = globalThis.ReadableStream;
|
||||||
var Fetch = class extends EE {
|
var Fetch = class extends EE {
|
||||||
@ -9500,7 +9525,7 @@ var require_fetch = __commonJS({
|
|||||||
this.emit("terminated", error);
|
this.emit("terminated", error);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
async function fetch2(input, init = {}) {
|
function fetch2(input, init = {}) {
|
||||||
webidl.argumentLengthCheck(arguments, 1, { header: "globalThis.fetch" });
|
webidl.argumentLengthCheck(arguments, 1, { header: "globalThis.fetch" });
|
||||||
const p = createDeferredPromise();
|
const p = createDeferredPromise();
|
||||||
let requestObject;
|
let requestObject;
|
||||||
@ -9535,17 +9560,17 @@ var require_fetch = __commonJS({
|
|||||||
const handleFetchDone = /* @__PURE__ */ __name((response) => finalizeAndReportTiming(response, "fetch"), "handleFetchDone");
|
const handleFetchDone = /* @__PURE__ */ __name((response) => finalizeAndReportTiming(response, "fetch"), "handleFetchDone");
|
||||||
const processResponse = /* @__PURE__ */ __name((response) => {
|
const processResponse = /* @__PURE__ */ __name((response) => {
|
||||||
if (locallyAborted) {
|
if (locallyAborted) {
|
||||||
return;
|
return Promise.resolve();
|
||||||
}
|
}
|
||||||
if (response.aborted) {
|
if (response.aborted) {
|
||||||
abortFetch(p, request, responseObject, controller.serializedAbortReason);
|
abortFetch(p, request, responseObject, controller.serializedAbortReason);
|
||||||
return;
|
return Promise.resolve();
|
||||||
}
|
}
|
||||||
if (response.type === "error") {
|
if (response.type === "error") {
|
||||||
p.reject(
|
p.reject(
|
||||||
Object.assign(new TypeError("fetch failed"), { cause: response.error })
|
Object.assign(new TypeError("fetch failed"), { cause: response.error })
|
||||||
);
|
);
|
||||||
return;
|
return Promise.resolve();
|
||||||
}
|
}
|
||||||
responseObject = new Response();
|
responseObject = new Response();
|
||||||
responseObject[kState] = response;
|
responseObject[kState] = response;
|
||||||
@ -9689,7 +9714,7 @@ var require_fetch = __commonJS({
|
|||||||
}
|
}
|
||||||
if (request.priority === null) {
|
if (request.priority === null) {
|
||||||
}
|
}
|
||||||
if (subresource.includes(request.destination)) {
|
if (subresourceSet.has(request.destination)) {
|
||||||
}
|
}
|
||||||
mainFetch(fetchParams).catch((err) => {
|
mainFetch(fetchParams).catch((err) => {
|
||||||
fetchParams.controller.terminate(err);
|
fetchParams.controller.terminate(err);
|
||||||
@ -9795,15 +9820,15 @@ var require_fetch = __commonJS({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
__name(mainFetch, "mainFetch");
|
__name(mainFetch, "mainFetch");
|
||||||
async function schemeFetch(fetchParams) {
|
function schemeFetch(fetchParams) {
|
||||||
if (isCancelled(fetchParams) && fetchParams.request.redirectCount === 0) {
|
if (isCancelled(fetchParams) && fetchParams.request.redirectCount === 0) {
|
||||||
return makeAppropriateNetworkError(fetchParams);
|
return Promise.resolve(makeAppropriateNetworkError(fetchParams));
|
||||||
}
|
}
|
||||||
const { request } = fetchParams;
|
const { request } = fetchParams;
|
||||||
const { protocol: scheme } = requestCurrentURL(request);
|
const { protocol: scheme } = requestCurrentURL(request);
|
||||||
switch (scheme) {
|
switch (scheme) {
|
||||||
case "about:": {
|
case "about:": {
|
||||||
return makeNetworkError("about scheme is not supported");
|
return Promise.resolve(makeNetworkError("about scheme is not supported"));
|
||||||
}
|
}
|
||||||
case "blob:": {
|
case "blob:": {
|
||||||
if (!resolveObjectURL) {
|
if (!resolveObjectURL) {
|
||||||
@ -9811,11 +9836,11 @@ var require_fetch = __commonJS({
|
|||||||
}
|
}
|
||||||
const blobURLEntry = requestCurrentURL(request);
|
const blobURLEntry = requestCurrentURL(request);
|
||||||
if (blobURLEntry.search.length !== 0) {
|
if (blobURLEntry.search.length !== 0) {
|
||||||
return makeNetworkError("NetworkError when attempting to fetch resource.");
|
return Promise.resolve(makeNetworkError("NetworkError when attempting to fetch resource."));
|
||||||
}
|
}
|
||||||
const blobURLEntryObject = resolveObjectURL(blobURLEntry.toString());
|
const blobURLEntryObject = resolveObjectURL(blobURLEntry.toString());
|
||||||
if (request.method !== "GET" || !isBlobLike(blobURLEntryObject)) {
|
if (request.method !== "GET" || !isBlobLike(blobURLEntryObject)) {
|
||||||
return makeNetworkError("invalid method");
|
return Promise.resolve(makeNetworkError("invalid method"));
|
||||||
}
|
}
|
||||||
const bodyWithType = safelyExtractBody(blobURLEntryObject);
|
const bodyWithType = safelyExtractBody(blobURLEntryObject);
|
||||||
const body = bodyWithType[0];
|
const body = bodyWithType[0];
|
||||||
@ -9829,32 +9854,32 @@ var require_fetch = __commonJS({
|
|||||||
]
|
]
|
||||||
});
|
});
|
||||||
response.body = body;
|
response.body = body;
|
||||||
return response;
|
return Promise.resolve(response);
|
||||||
}
|
}
|
||||||
case "data:": {
|
case "data:": {
|
||||||
const currentURL = requestCurrentURL(request);
|
const currentURL = requestCurrentURL(request);
|
||||||
const dataURLStruct = dataURLProcessor(currentURL);
|
const dataURLStruct = dataURLProcessor(currentURL);
|
||||||
if (dataURLStruct === "failure") {
|
if (dataURLStruct === "failure") {
|
||||||
return makeNetworkError("failed to fetch the data URL");
|
return Promise.resolve(makeNetworkError("failed to fetch the data URL"));
|
||||||
}
|
}
|
||||||
const mimeType = serializeAMimeType(dataURLStruct.mimeType);
|
const mimeType = serializeAMimeType(dataURLStruct.mimeType);
|
||||||
return makeResponse({
|
return Promise.resolve(makeResponse({
|
||||||
statusText: "OK",
|
statusText: "OK",
|
||||||
headersList: [
|
headersList: [
|
||||||
["content-type", { name: "Content-Type", value: mimeType }]
|
["content-type", { name: "Content-Type", value: mimeType }]
|
||||||
],
|
],
|
||||||
body: safelyExtractBody(dataURLStruct.body)[0]
|
body: safelyExtractBody(dataURLStruct.body)[0]
|
||||||
});
|
}));
|
||||||
}
|
}
|
||||||
case "file:": {
|
case "file:": {
|
||||||
return makeNetworkError("not implemented... yet...");
|
return Promise.resolve(makeNetworkError("not implemented... yet..."));
|
||||||
}
|
}
|
||||||
case "http:":
|
case "http:":
|
||||||
case "https:": {
|
case "https:": {
|
||||||
return await httpFetch(fetchParams).catch((err) => makeNetworkError(err));
|
return httpFetch(fetchParams).catch((err) => makeNetworkError(err));
|
||||||
}
|
}
|
||||||
default: {
|
default: {
|
||||||
return makeNetworkError("unknown scheme");
|
return Promise.resolve(makeNetworkError("unknown scheme"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -9866,7 +9891,7 @@ var require_fetch = __commonJS({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
__name(finalizeResponse, "finalizeResponse");
|
__name(finalizeResponse, "finalizeResponse");
|
||||||
async function fetchFinale(fetchParams, response) {
|
function fetchFinale(fetchParams, response) {
|
||||||
if (response.type === "error") {
|
if (response.type === "error") {
|
||||||
response.urlList = [fetchParams.request.urlList[0]];
|
response.urlList = [fetchParams.request.urlList[0]];
|
||||||
response.timingInfo = createOpaqueTimingInfo({
|
response.timingInfo = createOpaqueTimingInfo({
|
||||||
@ -9910,8 +9935,9 @@ var require_fetch = __commonJS({
|
|||||||
if (response.body == null) {
|
if (response.body == null) {
|
||||||
queueMicrotask(() => processBody(null));
|
queueMicrotask(() => processBody(null));
|
||||||
} else {
|
} else {
|
||||||
await fullyReadBody(response.body, processBody, processBodyError);
|
return fullyReadBody(response.body, processBody, processBodyError);
|
||||||
}
|
}
|
||||||
|
return Promise.resolve();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
__name(fetchFinale, "fetchFinale");
|
__name(fetchFinale, "fetchFinale");
|
||||||
@ -9942,7 +9968,7 @@ var require_fetch = __commonJS({
|
|||||||
) === "blocked") {
|
) === "blocked") {
|
||||||
return makeNetworkError("blocked");
|
return makeNetworkError("blocked");
|
||||||
}
|
}
|
||||||
if (redirectStatus.includes(actualResponse.status)) {
|
if (redirectStatusSet.has(actualResponse.status)) {
|
||||||
if (request.redirect !== "manual") {
|
if (request.redirect !== "manual") {
|
||||||
fetchParams.controller.connection.destroy();
|
fetchParams.controller.connection.destroy();
|
||||||
}
|
}
|
||||||
@ -9960,7 +9986,7 @@ var require_fetch = __commonJS({
|
|||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
__name(httpFetch, "httpFetch");
|
__name(httpFetch, "httpFetch");
|
||||||
async function httpRedirectFetch(fetchParams, response) {
|
function httpRedirectFetch(fetchParams, response) {
|
||||||
const request = fetchParams.request;
|
const request = fetchParams.request;
|
||||||
const actualResponse = response.internalResponse ? response.internalResponse : response;
|
const actualResponse = response.internalResponse ? response.internalResponse : response;
|
||||||
let locationURL;
|
let locationURL;
|
||||||
@ -9973,27 +9999,27 @@ var require_fetch = __commonJS({
|
|||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
return makeNetworkError(err);
|
return Promise.resolve(makeNetworkError(err));
|
||||||
}
|
}
|
||||||
if (!urlIsHttpHttpsScheme(locationURL)) {
|
if (!urlIsHttpHttpsScheme(locationURL)) {
|
||||||
return makeNetworkError("URL scheme must be a HTTP(S) scheme");
|
return Promise.resolve(makeNetworkError("URL scheme must be a HTTP(S) scheme"));
|
||||||
}
|
}
|
||||||
if (request.redirectCount === 20) {
|
if (request.redirectCount === 20) {
|
||||||
return makeNetworkError("redirect count exceeded");
|
return Promise.resolve(makeNetworkError("redirect count exceeded"));
|
||||||
}
|
}
|
||||||
request.redirectCount += 1;
|
request.redirectCount += 1;
|
||||||
if (request.mode === "cors" && (locationURL.username || locationURL.password) && !sameOrigin(request, locationURL)) {
|
if (request.mode === "cors" && (locationURL.username || locationURL.password) && !sameOrigin(request, locationURL)) {
|
||||||
return makeNetworkError('cross origin not allowed for request mode "cors"');
|
return Promise.resolve(makeNetworkError('cross origin not allowed for request mode "cors"'));
|
||||||
}
|
}
|
||||||
if (request.responseTainting === "cors" && (locationURL.username || locationURL.password)) {
|
if (request.responseTainting === "cors" && (locationURL.username || locationURL.password)) {
|
||||||
return makeNetworkError(
|
return Promise.resolve(makeNetworkError(
|
||||||
'URL cannot contain credentials for request mode "cors"'
|
'URL cannot contain credentials for request mode "cors"'
|
||||||
);
|
));
|
||||||
}
|
}
|
||||||
if (actualResponse.status !== 303 && request.body != null && request.body.source == null) {
|
if (actualResponse.status !== 303 && request.body != null && request.body.source == null) {
|
||||||
return makeNetworkError();
|
return Promise.resolve(makeNetworkError());
|
||||||
}
|
}
|
||||||
if ([301, 302].includes(actualResponse.status) && request.method === "POST" || actualResponse.status === 303 && !["GET", "HEAD"].includes(request.method)) {
|
if ([301, 302].includes(actualResponse.status) && request.method === "POST" || actualResponse.status === 303 && !GET_OR_HEAD.includes(request.method)) {
|
||||||
request.method = "GET";
|
request.method = "GET";
|
||||||
request.body = null;
|
request.body = null;
|
||||||
for (const headerName of requestBodyHeader) {
|
for (const headerName of requestBodyHeader) {
|
||||||
@ -10097,7 +10123,7 @@ var require_fetch = __commonJS({
|
|||||||
includeCredentials,
|
includeCredentials,
|
||||||
isNewConnectionFetch
|
isNewConnectionFetch
|
||||||
);
|
);
|
||||||
if (!safeMethods.includes(httpRequest.method) && forwardResponse.status >= 200 && forwardResponse.status <= 399) {
|
if (!safeMethodsSet.has(httpRequest.method) && forwardResponse.status >= 200 && forwardResponse.status <= 399) {
|
||||||
}
|
}
|
||||||
if (revalidatingFlag && forwardResponse.status === 304) {
|
if (revalidatingFlag && forwardResponse.status === 304) {
|
||||||
}
|
}
|
||||||
@ -10363,7 +10389,7 @@ var require_fetch = __commonJS({
|
|||||||
}
|
}
|
||||||
this.body = new Readable({ read: resume });
|
this.body = new Readable({ read: resume });
|
||||||
const decoders = [];
|
const decoders = [];
|
||||||
const willFollow = request.redirect === "follow" && location && redirectStatus.includes(status);
|
const willFollow = request.redirect === "follow" && location && redirectStatusSet.has(status);
|
||||||
if (request.method !== "HEAD" && request.method !== "CONNECT" && !nullBodyStatus.includes(status) && !willFollow) {
|
if (request.method !== "HEAD" && request.method !== "CONNECT" && !nullBodyStatus.includes(status) && !willFollow) {
|
||||||
for (const coding of codings) {
|
for (const coding of codings) {
|
||||||
if (coding === "x-gzip" || coding === "gzip") {
|
if (coding === "x-gzip" || coding === "gzip") {
|
||||||
@ -11723,13 +11749,11 @@ var require_websocket = __commonJS({
|
|||||||
|
|
||||||
// index-fetch.js
|
// index-fetch.js
|
||||||
var fetchImpl = require_fetch().fetch;
|
var fetchImpl = require_fetch().fetch;
|
||||||
module.exports.fetch = /* @__PURE__ */ __name(async function fetch(resource, init = void 0) {
|
module.exports.fetch = /* @__PURE__ */ __name(function fetch(resource, init = void 0) {
|
||||||
try {
|
return fetchImpl(resource, init).catch((err) => {
|
||||||
return await fetchImpl(resource, init);
|
|
||||||
} catch (err) {
|
|
||||||
Error.captureStackTrace(err, this);
|
Error.captureStackTrace(err, this);
|
||||||
throw err;
|
throw err;
|
||||||
}
|
});
|
||||||
}, "fetch");
|
}, "fetch");
|
||||||
module.exports.FormData = require_formdata().FormData;
|
module.exports.FormData = require_formdata().FormData;
|
||||||
module.exports.Headers = require_headers().Headers;
|
module.exports.Headers = require_headers().Headers;
|
||||||
|
@ -28,7 +28,7 @@ This a list of all the dependencies:
|
|||||||
* [openssl 3.0.8][]
|
* [openssl 3.0.8][]
|
||||||
* [postject 1.0.0-alpha.6][]
|
* [postject 1.0.0-alpha.6][]
|
||||||
* [simdutf 3.2.18][]
|
* [simdutf 3.2.18][]
|
||||||
* [undici 5.26.4][]
|
* [undici 5.27.0][]
|
||||||
* [uvwasi 0.0.19][]
|
* [uvwasi 0.0.19][]
|
||||||
* [V8 11.8.172.12][]
|
* [V8 11.8.172.12][]
|
||||||
* [zlib 1.2.13.1-motley-fef5869][]
|
* [zlib 1.2.13.1-motley-fef5869][]
|
||||||
@ -291,7 +291,7 @@ The [postject](https://github.com/nodejs/postject) dependency is used for the
|
|||||||
The [simdutf](https://github.com/simdutf/simdutf) dependency is
|
The [simdutf](https://github.com/simdutf/simdutf) dependency is
|
||||||
a C++ library for fast UTF-8 decoding and encoding.
|
a C++ library for fast UTF-8 decoding and encoding.
|
||||||
|
|
||||||
### undici 5.26.4
|
### undici 5.27.0
|
||||||
|
|
||||||
The [undici](https://github.com/nodejs/undici) dependency is an HTTP/1.1 client,
|
The [undici](https://github.com/nodejs/undici) dependency is an HTTP/1.1 client,
|
||||||
written from scratch for Node.js..
|
written from scratch for Node.js..
|
||||||
@ -345,7 +345,7 @@ performance improvements not currently available in standard zlib.
|
|||||||
[openssl 3.0.8]: #openssl-308
|
[openssl 3.0.8]: #openssl-308
|
||||||
[postject 1.0.0-alpha.6]: #postject-100-alpha6
|
[postject 1.0.0-alpha.6]: #postject-100-alpha6
|
||||||
[simdutf 3.2.18]: #simdutf-3218
|
[simdutf 3.2.18]: #simdutf-3218
|
||||||
[undici 5.26.4]: #undici-5264
|
[undici 5.27.0]: #undici-5270
|
||||||
[update-openssl-action]: ../../../.github/workflows/update-openssl.yml
|
[update-openssl-action]: ../../../.github/workflows/update-openssl.yml
|
||||||
[uvwasi 0.0.19]: #uvwasi-0019
|
[uvwasi 0.0.19]: #uvwasi-0019
|
||||||
[v8 11.8.172.12]: #v8-11817212
|
[v8 11.8.172.12]: #v8-11817212
|
||||||
|
@ -2,5 +2,5 @@
|
|||||||
// Refer to tools/dep_updaters/update-undici.sh
|
// Refer to tools/dep_updaters/update-undici.sh
|
||||||
#ifndef SRC_UNDICI_VERSION_H_
|
#ifndef SRC_UNDICI_VERSION_H_
|
||||||
#define SRC_UNDICI_VERSION_H_
|
#define SRC_UNDICI_VERSION_H_
|
||||||
#define UNDICI_VERSION "5.26.4"
|
#define UNDICI_VERSION "5.27.0"
|
||||||
#endif // SRC_UNDICI_VERSION_H_
|
#endif // SRC_UNDICI_VERSION_H_
|
||||||
|
Loading…
x
Reference in New Issue
Block a user