Update httpclient version and other dependencies (#607)
* test * fixed license issues * fix audit issue * fix license
This commit is contained in:
parent
9704b39bf2
commit
80ae3c2885
BIN
.licenses/npm/@actions/cache.dep.yml
generated
BIN
.licenses/npm/@actions/cache.dep.yml
generated
Binary file not shown.
BIN
.licenses/npm/@actions/http-client.dep.yml
generated
BIN
.licenses/npm/@actions/http-client.dep.yml
generated
Binary file not shown.
BIN
.licenses/npm/@types/node.dep.yml
generated
BIN
.licenses/npm/@types/node.dep.yml
generated
Binary file not shown.
Binary file not shown.
BIN
.licenses/npm/undici.dep.yml
generated
BIN
.licenses/npm/undici.dep.yml
generated
Binary file not shown.
983
dist/cleanup/index.js
vendored
983
dist/cleanup/index.js
vendored
@ -319,7 +319,8 @@ function createHttpClient() {
|
|||||||
return new http_client_1.HttpClient('actions/cache', [bearerCredentialHandler], getRequestOptions());
|
return new http_client_1.HttpClient('actions/cache', [bearerCredentialHandler], getRequestOptions());
|
||||||
}
|
}
|
||||||
function getCacheVersion(paths, compressionMethod, enableCrossOsArchive = false) {
|
function getCacheVersion(paths, compressionMethod, enableCrossOsArchive = false) {
|
||||||
const components = paths;
|
// don't pass changes upstream
|
||||||
|
const components = paths.slice();
|
||||||
// Add compression method to cache version to restore
|
// Add compression method to cache version to restore
|
||||||
// compressed cache as per compression method
|
// compressed cache as per compression method
|
||||||
if (compressionMethod) {
|
if (compressionMethod) {
|
||||||
@ -608,26 +609,21 @@ function resolvePaths(patterns) {
|
|||||||
implicitDescendants: false
|
implicitDescendants: false
|
||||||
});
|
});
|
||||||
try {
|
try {
|
||||||
for (var _e = true, _f = __asyncValues(globber.globGenerator()), _g; _g = yield _f.next(), _a = _g.done, !_a;) {
|
for (var _e = true, _f = __asyncValues(globber.globGenerator()), _g; _g = yield _f.next(), _a = _g.done, !_a; _e = true) {
|
||||||
_c = _g.value;
|
_c = _g.value;
|
||||||
_e = false;
|
_e = false;
|
||||||
try {
|
const file = _c;
|
||||||
const file = _c;
|
const relativeFile = path
|
||||||
const relativeFile = path
|
.relative(workspace, file)
|
||||||
.relative(workspace, file)
|
.replace(new RegExp(`\\${path.sep}`, 'g'), '/');
|
||||||
.replace(new RegExp(`\\${path.sep}`, 'g'), '/');
|
core.debug(`Matched: ${relativeFile}`);
|
||||||
core.debug(`Matched: ${relativeFile}`);
|
// Paths are made relative so the tar entries are all relative to the root of the workspace.
|
||||||
// Paths are made relative so the tar entries are all relative to the root of the workspace.
|
if (relativeFile === '') {
|
||||||
if (relativeFile === '') {
|
// path.relative returns empty string if workspace and file are equal
|
||||||
// path.relative returns empty string if workspace and file are equal
|
paths.push('.');
|
||||||
paths.push('.');
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
paths.push(`${relativeFile}`);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
finally {
|
else {
|
||||||
_e = true;
|
paths.push(`${relativeFile}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -711,7 +707,10 @@ function assertDefined(name, value) {
|
|||||||
exports.assertDefined = assertDefined;
|
exports.assertDefined = assertDefined;
|
||||||
function isGhes() {
|
function isGhes() {
|
||||||
const ghUrl = new URL(process.env['GITHUB_SERVER_URL'] || 'https://github.com');
|
const ghUrl = new URL(process.env['GITHUB_SERVER_URL'] || 'https://github.com');
|
||||||
return ghUrl.hostname.toUpperCase() !== 'GITHUB.COM';
|
const hostname = ghUrl.hostname.trimEnd().toUpperCase();
|
||||||
|
const isGitHubHost = hostname === 'GITHUB.COM';
|
||||||
|
const isGheHost = hostname.endsWith('.GHE.COM') || hostname.endsWith('.GHE.LOCALHOST');
|
||||||
|
return !isGitHubHost && !isGheHost;
|
||||||
}
|
}
|
||||||
exports.isGhes = isGhes;
|
exports.isGhes = isGhes;
|
||||||
//# sourceMappingURL=cacheUtils.js.map
|
//# sourceMappingURL=cacheUtils.js.map
|
||||||
@ -729,7 +728,7 @@ var CacheFilename;
|
|||||||
(function (CacheFilename) {
|
(function (CacheFilename) {
|
||||||
CacheFilename["Gzip"] = "cache.tgz";
|
CacheFilename["Gzip"] = "cache.tgz";
|
||||||
CacheFilename["Zstd"] = "cache.tzst";
|
CacheFilename["Zstd"] = "cache.tzst";
|
||||||
})(CacheFilename = exports.CacheFilename || (exports.CacheFilename = {}));
|
})(CacheFilename || (exports.CacheFilename = CacheFilename = {}));
|
||||||
var CompressionMethod;
|
var CompressionMethod;
|
||||||
(function (CompressionMethod) {
|
(function (CompressionMethod) {
|
||||||
CompressionMethod["Gzip"] = "gzip";
|
CompressionMethod["Gzip"] = "gzip";
|
||||||
@ -737,12 +736,12 @@ var CompressionMethod;
|
|||||||
// This enum is for earlier version of zstd that does not have --long support
|
// This enum is for earlier version of zstd that does not have --long support
|
||||||
CompressionMethod["ZstdWithoutLong"] = "zstd-without-long";
|
CompressionMethod["ZstdWithoutLong"] = "zstd-without-long";
|
||||||
CompressionMethod["Zstd"] = "zstd";
|
CompressionMethod["Zstd"] = "zstd";
|
||||||
})(CompressionMethod = exports.CompressionMethod || (exports.CompressionMethod = {}));
|
})(CompressionMethod || (exports.CompressionMethod = CompressionMethod = {}));
|
||||||
var ArchiveToolType;
|
var ArchiveToolType;
|
||||||
(function (ArchiveToolType) {
|
(function (ArchiveToolType) {
|
||||||
ArchiveToolType["GNU"] = "gnu";
|
ArchiveToolType["GNU"] = "gnu";
|
||||||
ArchiveToolType["BSD"] = "bsd";
|
ArchiveToolType["BSD"] = "bsd";
|
||||||
})(ArchiveToolType = exports.ArchiveToolType || (exports.ArchiveToolType = {}));
|
})(ArchiveToolType || (exports.ArchiveToolType = ArchiveToolType = {}));
|
||||||
// The default number of retry attempts.
|
// The default number of retry attempts.
|
||||||
exports.DefaultRetryAttempts = 2;
|
exports.DefaultRetryAttempts = 2;
|
||||||
// The default delay in milliseconds between retry attempts.
|
// The default delay in milliseconds between retry attempts.
|
||||||
@ -8551,7 +8550,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.
|
||||||
@ -8583,16 +8582,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
|
||||||
@ -57728,35 +57723,43 @@ const coerce = (version, options) => {
|
|||||||
|
|
||||||
let match = null
|
let match = null
|
||||||
if (!options.rtl) {
|
if (!options.rtl) {
|
||||||
match = version.match(re[t.COERCE])
|
match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE])
|
||||||
} else {
|
} else {
|
||||||
// Find the right-most coercible string that does not share
|
// Find the right-most coercible string that does not share
|
||||||
// a terminus with a more left-ward coercible string.
|
// a terminus with a more left-ward coercible string.
|
||||||
// Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'
|
// Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'
|
||||||
|
// With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.4'
|
||||||
//
|
//
|
||||||
// Walk through the string checking with a /g regexp
|
// Walk through the string checking with a /g regexp
|
||||||
// Manually set the index so as to pick up overlapping matches.
|
// Manually set the index so as to pick up overlapping matches.
|
||||||
// Stop when we get a match that ends at the string end, since no
|
// Stop when we get a match that ends at the string end, since no
|
||||||
// coercible string can be more right-ward without the same terminus.
|
// coercible string can be more right-ward without the same terminus.
|
||||||
|
const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]
|
||||||
let next
|
let next
|
||||||
while ((next = re[t.COERCERTL].exec(version)) &&
|
while ((next = coerceRtlRegex.exec(version)) &&
|
||||||
(!match || match.index + match[0].length !== version.length)
|
(!match || match.index + match[0].length !== version.length)
|
||||||
) {
|
) {
|
||||||
if (!match ||
|
if (!match ||
|
||||||
next.index + next[0].length !== match.index + match[0].length) {
|
next.index + next[0].length !== match.index + match[0].length) {
|
||||||
match = next
|
match = next
|
||||||
}
|
}
|
||||||
re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length
|
coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length
|
||||||
}
|
}
|
||||||
// leave it in a clean state
|
// leave it in a clean state
|
||||||
re[t.COERCERTL].lastIndex = -1
|
coerceRtlRegex.lastIndex = -1
|
||||||
}
|
}
|
||||||
|
|
||||||
if (match === null) {
|
if (match === null) {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
return parse(`${match[2]}.${match[3] || '0'}.${match[4] || '0'}`, options)
|
const major = match[2]
|
||||||
|
const minor = match[3] || '0'
|
||||||
|
const patch = match[4] || '0'
|
||||||
|
const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ''
|
||||||
|
const build = options.includePrerelease && match[6] ? `+${match[6]}` : ''
|
||||||
|
|
||||||
|
return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options)
|
||||||
}
|
}
|
||||||
module.exports = coerce
|
module.exports = coerce
|
||||||
|
|
||||||
@ -58448,12 +58451,17 @@ createToken('XRANGELOOSE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`)
|
|||||||
|
|
||||||
// Coercion.
|
// Coercion.
|
||||||
// Extract anything that could conceivably be a part of a valid semver
|
// Extract anything that could conceivably be a part of a valid semver
|
||||||
createToken('COERCE', `${'(^|[^\\d])' +
|
createToken('COERCEPLAIN', `${'(^|[^\\d])' +
|
||||||
'(\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +
|
'(\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +
|
||||||
`(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +
|
`(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +
|
||||||
`(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +
|
`(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)
|
||||||
|
createToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\d])`)
|
||||||
|
createToken('COERCEFULL', src[t.COERCEPLAIN] +
|
||||||
|
`(?:${src[t.PRERELEASE]})?` +
|
||||||
|
`(?:${src[t.BUILD]})?` +
|
||||||
`(?:$|[^\\d])`)
|
`(?:$|[^\\d])`)
|
||||||
createToken('COERCERTL', src[t.COERCE], true)
|
createToken('COERCERTL', src[t.COERCE], true)
|
||||||
|
createToken('COERCERTLFULL', src[t.COERCEFULL], true)
|
||||||
|
|
||||||
// Tilde ranges.
|
// Tilde ranges.
|
||||||
// Meaning is "reasonably at or greater than"
|
// Meaning is "reasonably at or greater than"
|
||||||
@ -60624,6 +60632,7 @@ const MockAgent = __nccwpck_require__(6771)
|
|||||||
const MockPool = __nccwpck_require__(6193)
|
const MockPool = __nccwpck_require__(6193)
|
||||||
const mockErrors = __nccwpck_require__(888)
|
const mockErrors = __nccwpck_require__(888)
|
||||||
const ProxyAgent = __nccwpck_require__(7858)
|
const ProxyAgent = __nccwpck_require__(7858)
|
||||||
|
const RetryHandler = __nccwpck_require__(2286)
|
||||||
const { getGlobalDispatcher, setGlobalDispatcher } = __nccwpck_require__(1892)
|
const { getGlobalDispatcher, setGlobalDispatcher } = __nccwpck_require__(1892)
|
||||||
const DecoratorHandler = __nccwpck_require__(6930)
|
const DecoratorHandler = __nccwpck_require__(6930)
|
||||||
const RedirectHandler = __nccwpck_require__(2860)
|
const RedirectHandler = __nccwpck_require__(2860)
|
||||||
@ -60645,6 +60654,7 @@ module.exports.Pool = Pool
|
|||||||
module.exports.BalancedPool = BalancedPool
|
module.exports.BalancedPool = BalancedPool
|
||||||
module.exports.Agent = Agent
|
module.exports.Agent = Agent
|
||||||
module.exports.ProxyAgent = ProxyAgent
|
module.exports.ProxyAgent = ProxyAgent
|
||||||
|
module.exports.RetryHandler = RetryHandler
|
||||||
|
|
||||||
module.exports.DecoratorHandler = DecoratorHandler
|
module.exports.DecoratorHandler = DecoratorHandler
|
||||||
module.exports.RedirectHandler = RedirectHandler
|
module.exports.RedirectHandler = RedirectHandler
|
||||||
@ -61545,6 +61555,7 @@ function request (opts, callback) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
module.exports = request
|
module.exports = request
|
||||||
|
module.exports.RequestHandler = RequestHandler
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
@ -61927,6 +61938,8 @@ const kBody = Symbol('kBody')
|
|||||||
const kAbort = Symbol('abort')
|
const kAbort = Symbol('abort')
|
||||||
const kContentType = Symbol('kContentType')
|
const kContentType = Symbol('kContentType')
|
||||||
|
|
||||||
|
const noop = () => {}
|
||||||
|
|
||||||
module.exports = class BodyReadable extends Readable {
|
module.exports = class BodyReadable extends Readable {
|
||||||
constructor ({
|
constructor ({
|
||||||
resume,
|
resume,
|
||||||
@ -62060,37 +62073,50 @@ module.exports = class BodyReadable extends Readable {
|
|||||||
return this[kBody]
|
return this[kBody]
|
||||||
}
|
}
|
||||||
|
|
||||||
async dump (opts) {
|
dump (opts) {
|
||||||
let limit = opts && Number.isFinite(opts.limit) ? opts.limit : 262144
|
let limit = opts && Number.isFinite(opts.limit) ? opts.limit : 262144
|
||||||
const signal = opts && opts.signal
|
const signal = opts && opts.signal
|
||||||
const abortFn = () => {
|
|
||||||
this.destroy()
|
|
||||||
}
|
|
||||||
let signalListenerCleanup
|
|
||||||
if (signal) {
|
if (signal) {
|
||||||
if (typeof signal !== 'object' || !('aborted' in signal)) {
|
try {
|
||||||
throw new InvalidArgumentError('signal must be an AbortSignal')
|
if (typeof signal !== 'object' || !('aborted' in signal)) {
|
||||||
}
|
throw new InvalidArgumentError('signal must be an AbortSignal')
|
||||||
util.throwIfAborted(signal)
|
|
||||||
signalListenerCleanup = util.addAbortListener(signal, abortFn)
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
for await (const chunk of this) {
|
|
||||||
util.throwIfAborted(signal)
|
|
||||||
limit -= Buffer.byteLength(chunk)
|
|
||||||
if (limit < 0) {
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
}
|
util.throwIfAborted(signal)
|
||||||
} catch {
|
} catch (err) {
|
||||||
util.throwIfAborted(signal)
|
return Promise.reject(err)
|
||||||
} finally {
|
|
||||||
if (typeof signalListenerCleanup === 'function') {
|
|
||||||
signalListenerCleanup()
|
|
||||||
} else if (signalListenerCleanup) {
|
|
||||||
signalListenerCleanup[Symbol.dispose]()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this.closed) {
|
||||||
|
return Promise.resolve(null)
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
const signalListenerCleanup = signal
|
||||||
|
? util.addAbortListener(signal, () => {
|
||||||
|
this.destroy()
|
||||||
|
})
|
||||||
|
: noop
|
||||||
|
|
||||||
|
this
|
||||||
|
.on('close', function () {
|
||||||
|
signalListenerCleanup()
|
||||||
|
if (signal && signal.aborted) {
|
||||||
|
reject(signal.reason || Object.assign(new Error('The operation was aborted'), { name: 'AbortError' }))
|
||||||
|
} else {
|
||||||
|
resolve(null)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.on('error', noop)
|
||||||
|
.on('data', function (chunk) {
|
||||||
|
limit -= chunk.length
|
||||||
|
if (limit <= 0) {
|
||||||
|
this.destroy()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.resume()
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -63470,13 +63496,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)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -64462,11 +64488,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
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64513,13 +64537,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
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64560,11 +64579,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
|
||||||
|
|
||||||
@ -64728,7 +64743,7 @@ async function connect (client) {
|
|||||||
const idx = hostname.indexOf(']')
|
const idx = hostname.indexOf(']')
|
||||||
|
|
||||||
assert(idx !== -1)
|
assert(idx !== -1)
|
||||||
const ip = hostname.substr(1, idx - 1)
|
const ip = hostname.substring(1, idx)
|
||||||
|
|
||||||
assert(net.isIP(ip))
|
assert(net.isIP(ip))
|
||||||
hostname = ip
|
hostname = ip
|
||||||
@ -65227,6 +65242,7 @@ function writeH2 (client, session, request) {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @type {import('node:http2').ClientHttp2Stream} */
|
||||||
let stream
|
let stream
|
||||||
const h2State = client[kHTTP2SessionState]
|
const h2State = client[kHTTP2SessionState]
|
||||||
|
|
||||||
@ -65322,14 +65338,10 @@ function writeH2 (client, session, request) {
|
|||||||
const shouldEndStream = method === 'GET' || method === 'HEAD'
|
const shouldEndStream = method === 'GET' || method === 'HEAD'
|
||||||
if (expectContinue) {
|
if (expectContinue) {
|
||||||
headers[HTTP2_HEADER_EXPECT] = '100-continue'
|
headers[HTTP2_HEADER_EXPECT] = '100-continue'
|
||||||
/**
|
|
||||||
* @type {import('node:http2').ClientHttp2Stream}
|
|
||||||
*/
|
|
||||||
stream = session.request(headers, { endStream: shouldEndStream, signal })
|
stream = session.request(headers, { endStream: shouldEndStream, signal })
|
||||||
|
|
||||||
stream.once('continue', writeBodyH2)
|
stream.once('continue', writeBodyH2)
|
||||||
} else {
|
} else {
|
||||||
/** @type {import('node:http2').ClientHttp2Stream} */
|
|
||||||
stream = session.request(headers, {
|
stream = session.request(headers, {
|
||||||
endStream: shouldEndStream,
|
endStream: shouldEndStream,
|
||||||
signal
|
signal
|
||||||
@ -65341,7 +65353,9 @@ function writeH2 (client, session, request) {
|
|||||||
++h2State.openStreams
|
++h2State.openStreams
|
||||||
|
|
||||||
stream.once('response', headers => {
|
stream.once('response', headers => {
|
||||||
if (request.onHeaders(Number(headers[HTTP2_HEADER_STATUS]), headers, stream.resume.bind(stream), '') === false) {
|
const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers
|
||||||
|
|
||||||
|
if (request.onHeaders(Number(statusCode), realHeaders, stream.resume.bind(stream), '') === false) {
|
||||||
stream.pause()
|
stream.pause()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -65351,13 +65365,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) {
|
||||||
@ -65517,7 +65535,11 @@ function writeStream ({ h2stream, body, client, request, socket, contentLength,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
const onAbort = function () {
|
const onAbort = function () {
|
||||||
onFinished(new RequestAbortedError())
|
if (finished) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const err = new RequestAbortedError()
|
||||||
|
queueMicrotask(() => onFinished(err))
|
||||||
}
|
}
|
||||||
const onFinished = function (err) {
|
const onFinished = function (err) {
|
||||||
if (finished) {
|
if (finished) {
|
||||||
@ -67122,6 +67144,19 @@ class ResponseExceededMaxSizeError extends UndiciError {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class RequestRetryError extends UndiciError {
|
||||||
|
constructor (message, code, { headers, data }) {
|
||||||
|
super(message)
|
||||||
|
Error.captureStackTrace(this, RequestRetryError)
|
||||||
|
this.name = 'RequestRetryError'
|
||||||
|
this.message = message || 'Request retry error'
|
||||||
|
this.code = 'UND_ERR_REQ_RETRY'
|
||||||
|
this.statusCode = code
|
||||||
|
this.data = data
|
||||||
|
this.headers = headers
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
HTTPParserError,
|
HTTPParserError,
|
||||||
UndiciError,
|
UndiciError,
|
||||||
@ -67141,7 +67176,8 @@ module.exports = {
|
|||||||
NotSupportedError,
|
NotSupportedError,
|
||||||
ResponseContentLengthMismatchError,
|
ResponseContentLengthMismatchError,
|
||||||
BalancedPoolMissingUpstreamError,
|
BalancedPoolMissingUpstreamError,
|
||||||
ResponseExceededMaxSizeError
|
ResponseExceededMaxSizeError,
|
||||||
|
RequestRetryError
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -67383,9 +67419,9 @@ class Request {
|
|||||||
onBodySent (chunk) {
|
onBodySent (chunk) {
|
||||||
if (this[kHandler].onBodySent) {
|
if (this[kHandler].onBodySent) {
|
||||||
try {
|
try {
|
||||||
this[kHandler].onBodySent(chunk)
|
return this[kHandler].onBodySent(chunk)
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
this.onError(err)
|
this.abort(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -67397,9 +67433,9 @@ class Request {
|
|||||||
|
|
||||||
if (this[kHandler].onRequestSent) {
|
if (this[kHandler].onRequestSent) {
|
||||||
try {
|
try {
|
||||||
this[kHandler].onRequestSent()
|
return this[kHandler].onRequestSent()
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
this.onError(err)
|
this.abort(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -67424,14 +67460,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) {
|
||||||
@ -67450,7 +67495,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) {
|
||||||
@ -67464,6 +67515,7 @@ class Request {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
this.aborted = true
|
this.aborted = true
|
||||||
|
|
||||||
return this[kHandler].onError(error)
|
return this[kHandler].onError(error)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -67700,7 +67752,9 @@ module.exports = {
|
|||||||
kHTTP2BuildRequest: Symbol('http2 build request'),
|
kHTTP2BuildRequest: Symbol('http2 build request'),
|
||||||
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'),
|
||||||
|
kConstruct: Symbol('constructable')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -67837,13 +67891,13 @@ function getHostname (host) {
|
|||||||
const idx = host.indexOf(']')
|
const idx = host.indexOf(']')
|
||||||
|
|
||||||
assert(idx !== -1)
|
assert(idx !== -1)
|
||||||
return host.substr(1, idx - 1)
|
return host.substring(1, idx)
|
||||||
}
|
}
|
||||||
|
|
||||||
const idx = host.indexOf(':')
|
const idx = host.indexOf(':')
|
||||||
if (idx === -1) return host
|
if (idx === -1) return host
|
||||||
|
|
||||||
return host.substr(0, idx)
|
return host.substring(0, idx)
|
||||||
}
|
}
|
||||||
|
|
||||||
// IP addresses are not valid server names per RFC6066
|
// IP addresses are not valid server names per RFC6066
|
||||||
@ -67940,7 +67994,7 @@ function parseHeaders (headers, obj = {}) {
|
|||||||
|
|
||||||
if (!val) {
|
if (!val) {
|
||||||
if (Array.isArray(headers[i + 1])) {
|
if (Array.isArray(headers[i + 1])) {
|
||||||
obj[key] = headers[i + 1]
|
obj[key] = headers[i + 1].map(x => x.toString('utf8'))
|
||||||
} else {
|
} else {
|
||||||
obj[key] = headers[i + 1].toString('utf8')
|
obj[key] = headers[i + 1].toString('utf8')
|
||||||
}
|
}
|
||||||
@ -68143,16 +68197,7 @@ function throwIfAborted (signal) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let events
|
|
||||||
function addAbortListener (signal, listener) {
|
function addAbortListener (signal, listener) {
|
||||||
if (typeof Symbol.dispose === 'symbol') {
|
|
||||||
if (!events) {
|
|
||||||
events = __nccwpck_require__(2361)
|
|
||||||
}
|
|
||||||
if (typeof events.addAbortListener === 'function' && 'aborted' in signal) {
|
|
||||||
return events.addAbortListener(signal, listener)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ('addEventListener' in signal) {
|
if ('addEventListener' in signal) {
|
||||||
signal.addEventListener('abort', listener, { once: true })
|
signal.addEventListener('abort', listener, { once: true })
|
||||||
return () => signal.removeEventListener('abort', listener)
|
return () => signal.removeEventListener('abort', listener)
|
||||||
@ -68176,6 +68221,21 @@ function toUSVString (val) {
|
|||||||
return `${val}`
|
return `${val}`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Parsed accordingly to RFC 9110
|
||||||
|
// https://www.rfc-editor.org/rfc/rfc9110#field.content-range
|
||||||
|
function parseRangeHeader (range) {
|
||||||
|
if (range == null || range === '') return { start: 0, end: null, size: null }
|
||||||
|
|
||||||
|
const m = range ? range.match(/^bytes (\d+)-(\d+)\/(\d+)?$/) : null
|
||||||
|
return m
|
||||||
|
? {
|
||||||
|
start: parseInt(m[1]),
|
||||||
|
end: m[2] ? parseInt(m[2]) : null,
|
||||||
|
size: m[3] ? parseInt(m[3]) : null
|
||||||
|
}
|
||||||
|
: null
|
||||||
|
}
|
||||||
|
|
||||||
const kEnumerableProperty = Object.create(null)
|
const kEnumerableProperty = Object.create(null)
|
||||||
kEnumerableProperty.enumerable = true
|
kEnumerableProperty.enumerable = true
|
||||||
|
|
||||||
@ -68209,9 +68269,11 @@ module.exports = {
|
|||||||
buildURL,
|
buildURL,
|
||||||
throwIfAborted,
|
throwIfAborted,
|
||||||
addAbortListener,
|
addAbortListener,
|
||||||
|
parseRangeHeader,
|
||||||
nodeMajor,
|
nodeMajor,
|
||||||
nodeMinor,
|
nodeMinor,
|
||||||
nodeHasAutoSelectFamily: nodeMajor > 18 || (nodeMajor === 18 && nodeMinor >= 13)
|
nodeHasAutoSelectFamily: nodeMajor > 18 || (nodeMajor === 18 && nodeMinor >= 13),
|
||||||
|
safeHTTPMethods: ['GET', 'HEAD', 'OPTIONS', 'TRACE']
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -69340,17 +69402,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
|
||||||
@ -70534,7 +70593,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 {
|
||||||
@ -70548,6 +70607,13 @@ const assert = __nccwpck_require__(9491)
|
|||||||
const kHeadersMap = Symbol('headers map')
|
const kHeadersMap = Symbol('headers map')
|
||||||
const kHeadersSortedMap = Symbol('headers map sorted')
|
const kHeadersSortedMap = Symbol('headers map sorted')
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {number} code
|
||||||
|
*/
|
||||||
|
function isHTTPWhiteSpaceCharCode (code) {
|
||||||
|
return code === 0x00a || code === 0x00d || code === 0x009 || code === 0x020
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see https://fetch.spec.whatwg.org/#concept-header-value-normalize
|
* @see https://fetch.spec.whatwg.org/#concept-header-value-normalize
|
||||||
* @param {string} potentialValue
|
* @param {string} potentialValue
|
||||||
@ -70556,12 +70622,12 @@ function headerValueNormalize (potentialValue) {
|
|||||||
// To normalize a byte sequence potentialValue, remove
|
// To normalize a byte sequence potentialValue, remove
|
||||||
// any leading and trailing HTTP whitespace bytes from
|
// any leading and trailing HTTP whitespace bytes from
|
||||||
// potentialValue.
|
// potentialValue.
|
||||||
|
let i = 0; let j = potentialValue.length
|
||||||
|
|
||||||
// Trimming the end with `.replace()` and a RegExp is typically subject to
|
while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(j - 1))) --j
|
||||||
// ReDoS. This is safer and faster.
|
while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(i))) ++i
|
||||||
let i = potentialValue.length
|
|
||||||
while (/[\r\n\t ]/.test(potentialValue.charAt(--i)));
|
return i === 0 && j === potentialValue.length ? potentialValue : potentialValue.substring(i, j)
|
||||||
return potentialValue.slice(0, i + 1).replace(/^[\r\n\t ]+/, '')
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function fill (headers, object) {
|
function fill (headers, object) {
|
||||||
@ -70570,7 +70636,8 @@ function fill (headers, object) {
|
|||||||
// 1. If object is a sequence, then for each header in object:
|
// 1. If object is a sequence, then for each header in object:
|
||||||
// Note: webidl conversion to array has already been done.
|
// Note: webidl conversion to array has already been done.
|
||||||
if (Array.isArray(object)) {
|
if (Array.isArray(object)) {
|
||||||
for (const header of object) {
|
for (let i = 0; i < object.length; ++i) {
|
||||||
|
const header = object[i]
|
||||||
// 1. If header does not contain exactly two items, then throw a TypeError.
|
// 1. If header does not contain exactly two items, then throw a TypeError.
|
||||||
if (header.length !== 2) {
|
if (header.length !== 2) {
|
||||||
throw webidl.errors.exception({
|
throw webidl.errors.exception({
|
||||||
@ -70580,15 +70647,16 @@ function fill (headers, object) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 2. Append (header’s first item, header’s second item) to headers.
|
// 2. Append (header’s first item, header’s second item) to headers.
|
||||||
headers.append(header[0], header[1])
|
appendHeader(headers, header[0], header[1])
|
||||||
}
|
}
|
||||||
} else if (typeof object === 'object' && object !== null) {
|
} else if (typeof object === 'object' && object !== null) {
|
||||||
// Note: null should throw
|
// Note: null should throw
|
||||||
|
|
||||||
// 2. Otherwise, object is a record, then for each key → value in object,
|
// 2. Otherwise, object is a record, then for each key → value in object,
|
||||||
// append (key, value) to headers
|
// append (key, value) to headers
|
||||||
for (const [key, value] of Object.entries(object)) {
|
const keys = Object.keys(object)
|
||||||
headers.append(key, value)
|
for (let i = 0; i < keys.length; ++i) {
|
||||||
|
appendHeader(headers, keys[i], object[keys[i]])
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
throw webidl.errors.conversionFailed({
|
throw webidl.errors.conversionFailed({
|
||||||
@ -70599,6 +70667,50 @@ function fill (headers, object) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see https://fetch.spec.whatwg.org/#concept-headers-append
|
||||||
|
*/
|
||||||
|
function appendHeader (headers, name, value) {
|
||||||
|
// 1. Normalize value.
|
||||||
|
value = headerValueNormalize(value)
|
||||||
|
|
||||||
|
// 2. If name is not a header name or value is not a
|
||||||
|
// header value, then throw a TypeError.
|
||||||
|
if (!isValidHeaderName(name)) {
|
||||||
|
throw webidl.errors.invalidArgument({
|
||||||
|
prefix: 'Headers.append',
|
||||||
|
value: name,
|
||||||
|
type: 'header name'
|
||||||
|
})
|
||||||
|
} else if (!isValidHeaderValue(value)) {
|
||||||
|
throw webidl.errors.invalidArgument({
|
||||||
|
prefix: 'Headers.append',
|
||||||
|
value,
|
||||||
|
type: 'header value'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3. If headers’s guard is "immutable", then throw a TypeError.
|
||||||
|
// 4. Otherwise, if headers’s guard is "request" and name is a
|
||||||
|
// forbidden header name, return.
|
||||||
|
// Note: undici does not implement forbidden header names
|
||||||
|
if (headers[kGuard] === 'immutable') {
|
||||||
|
throw new TypeError('immutable')
|
||||||
|
} else if (headers[kGuard] === 'request-no-cors') {
|
||||||
|
// 5. Otherwise, if headers’s guard is "request-no-cors":
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
// 6. Otherwise, if headers’s guard is "response" and name is a
|
||||||
|
// forbidden response-header name, return.
|
||||||
|
|
||||||
|
// 7. Append (name, value) to headers’s header list.
|
||||||
|
return headers[kHeadersList].append(name, value)
|
||||||
|
|
||||||
|
// 8. If headers’s guard is "request-no-cors", then remove
|
||||||
|
// privileged no-CORS request headers from headers
|
||||||
|
}
|
||||||
|
|
||||||
class HeadersList {
|
class HeadersList {
|
||||||
/** @type {[string, string][]|null} */
|
/** @type {[string, string][]|null} */
|
||||||
cookies = null
|
cookies = null
|
||||||
@ -70607,7 +70719,7 @@ class HeadersList {
|
|||||||
if (init instanceof HeadersList) {
|
if (init instanceof HeadersList) {
|
||||||
this[kHeadersMap] = new Map(init[kHeadersMap])
|
this[kHeadersMap] = new Map(init[kHeadersMap])
|
||||||
this[kHeadersSortedMap] = init[kHeadersSortedMap]
|
this[kHeadersSortedMap] = init[kHeadersSortedMap]
|
||||||
this.cookies = init.cookies
|
this.cookies = init.cookies === null ? null : [...init.cookies]
|
||||||
} else {
|
} else {
|
||||||
this[kHeadersMap] = new Map(init)
|
this[kHeadersMap] = new Map(init)
|
||||||
this[kHeadersSortedMap] = null
|
this[kHeadersSortedMap] = null
|
||||||
@ -70669,7 +70781,7 @@ class HeadersList {
|
|||||||
// the first such header to value and remove the
|
// the first such header to value and remove the
|
||||||
// others.
|
// others.
|
||||||
// 2. Otherwise, append header (name, value) to list.
|
// 2. Otherwise, append header (name, value) to list.
|
||||||
return this[kHeadersMap].set(lowercaseName, { name, value })
|
this[kHeadersMap].set(lowercaseName, { name, value })
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://fetch.spec.whatwg.org/#concept-header-list-delete
|
// https://fetch.spec.whatwg.org/#concept-header-list-delete
|
||||||
@ -70682,20 +70794,18 @@ class HeadersList {
|
|||||||
this.cookies = null
|
this.cookies = null
|
||||||
}
|
}
|
||||||
|
|
||||||
return this[kHeadersMap].delete(name)
|
this[kHeadersMap].delete(name)
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://fetch.spec.whatwg.org/#concept-header-list-get
|
// https://fetch.spec.whatwg.org/#concept-header-list-get
|
||||||
get (name) {
|
get (name) {
|
||||||
// 1. If list does not contain name, then return null.
|
const value = this[kHeadersMap].get(name.toLowerCase())
|
||||||
if (!this.contains(name)) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
|
|
||||||
|
// 1. If list does not contain name, then return null.
|
||||||
// 2. Return the values of all headers in list whose name
|
// 2. Return the values of all headers in list whose name
|
||||||
// is a byte-case-insensitive match for name,
|
// is a byte-case-insensitive match for name,
|
||||||
// separated from each other by 0x2C 0x20, in order.
|
// separated from each other by 0x2C 0x20, in order.
|
||||||
return this[kHeadersMap].get(name.toLowerCase())?.value ?? null
|
return value === undefined ? null : value.value
|
||||||
}
|
}
|
||||||
|
|
||||||
* [Symbol.iterator] () {
|
* [Symbol.iterator] () {
|
||||||
@ -70721,6 +70831,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:
|
||||||
@ -70744,43 +70857,7 @@ class Headers {
|
|||||||
name = webidl.converters.ByteString(name)
|
name = webidl.converters.ByteString(name)
|
||||||
value = webidl.converters.ByteString(value)
|
value = webidl.converters.ByteString(value)
|
||||||
|
|
||||||
// 1. Normalize value.
|
return appendHeader(this, name, value)
|
||||||
value = headerValueNormalize(value)
|
|
||||||
|
|
||||||
// 2. If name is not a header name or value is not a
|
|
||||||
// header value, then throw a TypeError.
|
|
||||||
if (!isValidHeaderName(name)) {
|
|
||||||
throw webidl.errors.invalidArgument({
|
|
||||||
prefix: 'Headers.append',
|
|
||||||
value: name,
|
|
||||||
type: 'header name'
|
|
||||||
})
|
|
||||||
} else if (!isValidHeaderValue(value)) {
|
|
||||||
throw webidl.errors.invalidArgument({
|
|
||||||
prefix: 'Headers.append',
|
|
||||||
value,
|
|
||||||
type: 'header value'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 3. If headers’s guard is "immutable", then throw a TypeError.
|
|
||||||
// 4. Otherwise, if headers’s guard is "request" and name is a
|
|
||||||
// forbidden header name, return.
|
|
||||||
// Note: undici does not implement forbidden header names
|
|
||||||
if (this[kGuard] === 'immutable') {
|
|
||||||
throw new TypeError('immutable')
|
|
||||||
} else if (this[kGuard] === 'request-no-cors') {
|
|
||||||
// 5. Otherwise, if headers’s guard is "request-no-cors":
|
|
||||||
// TODO
|
|
||||||
}
|
|
||||||
|
|
||||||
// 6. Otherwise, if headers’s guard is "response" and name is a
|
|
||||||
// forbidden response-header name, return.
|
|
||||||
|
|
||||||
// 7. Append (name, value) to headers’s header list.
|
|
||||||
// 8. If headers’s guard is "request-no-cors", then remove
|
|
||||||
// privileged no-CORS request headers from headers
|
|
||||||
return this[kHeadersList].append(name, value)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://fetch.spec.whatwg.org/#dom-headers-delete
|
// https://fetch.spec.whatwg.org/#dom-headers-delete
|
||||||
@ -70825,7 +70902,7 @@ class Headers {
|
|||||||
// 7. Delete name from this’s header list.
|
// 7. Delete name from this’s header list.
|
||||||
// 8. If this’s guard is "request-no-cors", then remove
|
// 8. If this’s guard is "request-no-cors", then remove
|
||||||
// privileged no-CORS request headers from this.
|
// privileged no-CORS request headers from this.
|
||||||
return this[kHeadersList].delete(name)
|
this[kHeadersList].delete(name)
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://fetch.spec.whatwg.org/#dom-headers-get
|
// https://fetch.spec.whatwg.org/#dom-headers-get
|
||||||
@ -70918,7 +70995,7 @@ class Headers {
|
|||||||
// 7. Set (name, value) in this’s header list.
|
// 7. Set (name, value) in this’s header list.
|
||||||
// 8. If this’s guard is "request-no-cors", then remove
|
// 8. If this’s guard is "request-no-cors", then remove
|
||||||
// privileged no-CORS request headers from this
|
// privileged no-CORS request headers from this
|
||||||
return this[kHeadersList].set(name, value)
|
this[kHeadersList].set(name, value)
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://fetch.spec.whatwg.org/#dom-headers-getsetcookie
|
// https://fetch.spec.whatwg.org/#dom-headers-getsetcookie
|
||||||
@ -70954,7 +71031,8 @@ class Headers {
|
|||||||
const cookies = this[kHeadersList].cookies
|
const cookies = this[kHeadersList].cookies
|
||||||
|
|
||||||
// 3. For each name of names:
|
// 3. For each name of names:
|
||||||
for (const [name, value] of names) {
|
for (let i = 0; i < names.length; ++i) {
|
||||||
|
const [name, value] = names[i]
|
||||||
// 1. If name is `set-cookie`, then:
|
// 1. If name is `set-cookie`, then:
|
||||||
if (name === 'set-cookie') {
|
if (name === 'set-cookie') {
|
||||||
// 1. Let values be a list of all values of headers in list whose name
|
// 1. Let values be a list of all values of headers in list whose name
|
||||||
@ -70962,8 +71040,8 @@ class Headers {
|
|||||||
|
|
||||||
// 2. For each value of values:
|
// 2. For each value of values:
|
||||||
// 1. Append (name, value) to headers.
|
// 1. Append (name, value) to headers.
|
||||||
for (const value of cookies) {
|
for (let j = 0; j < cookies.length; ++j) {
|
||||||
headers.push([name, value])
|
headers.push([name, cookies[j]])
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// 2. Otherwise:
|
// 2. Otherwise:
|
||||||
@ -70987,6 +71065,12 @@ class Headers {
|
|||||||
keys () {
|
keys () {
|
||||||
webidl.brandCheck(this, Headers)
|
webidl.brandCheck(this, Headers)
|
||||||
|
|
||||||
|
if (this[kGuard] === 'immutable') {
|
||||||
|
const value = this[kHeadersSortedMap]
|
||||||
|
return makeIterator(() => value, 'Headers',
|
||||||
|
'key')
|
||||||
|
}
|
||||||
|
|
||||||
return makeIterator(
|
return makeIterator(
|
||||||
() => [...this[kHeadersSortedMap].values()],
|
() => [...this[kHeadersSortedMap].values()],
|
||||||
'Headers',
|
'Headers',
|
||||||
@ -70997,6 +71081,12 @@ class Headers {
|
|||||||
values () {
|
values () {
|
||||||
webidl.brandCheck(this, Headers)
|
webidl.brandCheck(this, Headers)
|
||||||
|
|
||||||
|
if (this[kGuard] === 'immutable') {
|
||||||
|
const value = this[kHeadersSortedMap]
|
||||||
|
return makeIterator(() => value, 'Headers',
|
||||||
|
'value')
|
||||||
|
}
|
||||||
|
|
||||||
return makeIterator(
|
return makeIterator(
|
||||||
() => [...this[kHeadersSortedMap].values()],
|
() => [...this[kHeadersSortedMap].values()],
|
||||||
'Headers',
|
'Headers',
|
||||||
@ -71007,6 +71097,12 @@ class Headers {
|
|||||||
entries () {
|
entries () {
|
||||||
webidl.brandCheck(this, Headers)
|
webidl.brandCheck(this, Headers)
|
||||||
|
|
||||||
|
if (this[kGuard] === 'immutable') {
|
||||||
|
const value = this[kHeadersSortedMap]
|
||||||
|
return makeIterator(() => value, 'Headers',
|
||||||
|
'key+value')
|
||||||
|
}
|
||||||
|
|
||||||
return makeIterator(
|
return makeIterator(
|
||||||
() => [...this[kHeadersSortedMap].values()],
|
() => [...this[kHeadersSortedMap].values()],
|
||||||
'Headers',
|
'Headers',
|
||||||
@ -71378,7 +71474,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
|
||||||
@ -72295,6 +72391,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')
|
||||||
@ -73049,7 +73148,7 @@ async function httpNetworkFetch (
|
|||||||
path: url.pathname + url.search,
|
path: url.pathname + url.search,
|
||||||
origin: url.origin,
|
origin: url.origin,
|
||||||
method: request.method,
|
method: request.method,
|
||||||
body: fetchParams.controller.dispatcher.isMockActive ? request.body && request.body.source : body,
|
body: fetchParams.controller.dispatcher.isMockActive ? request.body && (request.body.source || request.body.stream) : body,
|
||||||
headers: request.headersList.entries,
|
headers: request.headersList.entries,
|
||||||
maxRedirections: 0,
|
maxRedirections: 0,
|
||||||
upgrade: request.mode === 'websocket' ? 'websocket' : undefined
|
upgrade: request.mode === 'websocket' ? 'websocket' : undefined
|
||||||
@ -73094,7 +73193,7 @@ async function httpNetworkFetch (
|
|||||||
location = val
|
location = val
|
||||||
}
|
}
|
||||||
|
|
||||||
headers.append(key, val)
|
headers[kHeadersList].append(key, val)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
const keys = Object.keys(headersList)
|
const keys = Object.keys(headersList)
|
||||||
@ -73108,7 +73207,7 @@ async function httpNetworkFetch (
|
|||||||
location = val
|
location = val
|
||||||
}
|
}
|
||||||
|
|
||||||
headers.append(key, val)
|
headers[kHeadersList].append(key, val)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -73212,7 +73311,7 @@ async function httpNetworkFetch (
|
|||||||
const key = headersList[n + 0].toString('latin1')
|
const key = headersList[n + 0].toString('latin1')
|
||||||
const val = headersList[n + 1].toString('latin1')
|
const val = headersList[n + 1].toString('latin1')
|
||||||
|
|
||||||
headers.append(key, val)
|
headers[kHeadersList].append(key, val)
|
||||||
}
|
}
|
||||||
|
|
||||||
resolve({
|
resolve({
|
||||||
@ -73255,7 +73354,8 @@ const {
|
|||||||
isValidHTTPToken,
|
isValidHTTPToken,
|
||||||
sameOrigin,
|
sameOrigin,
|
||||||
normalizeMethod,
|
normalizeMethod,
|
||||||
makePolicyContainer
|
makePolicyContainer,
|
||||||
|
normalizeMethodRecord
|
||||||
} = __nccwpck_require__(2538)
|
} = __nccwpck_require__(2538)
|
||||||
const {
|
const {
|
||||||
forbiddenMethodsSet,
|
forbiddenMethodsSet,
|
||||||
@ -73272,13 +73372,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 }) => {
|
||||||
@ -73289,7 +73388,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
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -73428,8 +73527,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'
|
||||||
@ -73544,7 +73645,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)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -73560,16 +73661,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 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 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
|
||||||
@ -73640,7 +73741,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]
|
||||||
@ -73660,25 +73761,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)
|
||||||
@ -73967,10 +74068,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]
|
||||||
@ -74220,7 +74321,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)
|
||||||
|
|
||||||
@ -74341,7 +74442,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]
|
||||||
@ -74711,11 +74812,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)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -74901,52 +74998,57 @@ function isValidReasonPhrase (statusText) {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
function isTokenChar (c) {
|
/**
|
||||||
return !(
|
* @see https://tools.ietf.org/html/rfc7230#section-3.2.6
|
||||||
c >= 0x7f ||
|
* @param {number} c
|
||||||
c <= 0x20 ||
|
*/
|
||||||
c === '(' ||
|
function isTokenCharCode (c) {
|
||||||
c === ')' ||
|
switch (c) {
|
||||||
c === '<' ||
|
case 0x22:
|
||||||
c === '>' ||
|
case 0x28:
|
||||||
c === '@' ||
|
case 0x29:
|
||||||
c === ',' ||
|
case 0x2c:
|
||||||
c === ';' ||
|
case 0x2f:
|
||||||
c === ':' ||
|
case 0x3a:
|
||||||
c === '\\' ||
|
case 0x3b:
|
||||||
c === '"' ||
|
case 0x3c:
|
||||||
c === '/' ||
|
case 0x3d:
|
||||||
c === '[' ||
|
case 0x3e:
|
||||||
c === ']' ||
|
case 0x3f:
|
||||||
c === '?' ||
|
case 0x40:
|
||||||
c === '=' ||
|
case 0x5b:
|
||||||
c === '{' ||
|
case 0x5c:
|
||||||
c === '}'
|
case 0x5d:
|
||||||
)
|
case 0x7b:
|
||||||
|
case 0x7d:
|
||||||
|
// DQUOTE and "(),/:;<=>?@[\]{}"
|
||||||
|
return false
|
||||||
|
default:
|
||||||
|
// VCHAR %x21-7E
|
||||||
|
return c >= 0x21 && c <= 0x7e
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// See RFC 7230, Section 3.2.6.
|
/**
|
||||||
// https://github.com/chromium/chromium/blob/d7da0240cae77824d1eda25745c4022757499131/third_party/blink/renderer/platform/network/http_parsers.cc#L321
|
* @param {string} characters
|
||||||
|
*/
|
||||||
function isValidHTTPToken (characters) {
|
function isValidHTTPToken (characters) {
|
||||||
if (!characters || typeof characters !== 'string') {
|
if (characters.length === 0) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
for (let i = 0; i < characters.length; ++i) {
|
for (let i = 0; i < characters.length; ++i) {
|
||||||
const c = characters.charCodeAt(i)
|
if (!isTokenCharCode(characters.charCodeAt(i))) {
|
||||||
if (c > 0x7f || !isTokenChar(c)) {
|
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://fetch.spec.whatwg.org/#header-name
|
/**
|
||||||
// https://github.com/chromium/chromium/blob/b3d37e6f94f87d59e44662d6078f6a12de845d17/net/http/http_util.cc#L342
|
* @see https://fetch.spec.whatwg.org/#header-name
|
||||||
|
* @param {string} potentialValue
|
||||||
|
*/
|
||||||
function isValidHeaderName (potentialValue) {
|
function isValidHeaderName (potentialValue) {
|
||||||
if (potentialValue.length === 0) {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
return isValidHTTPToken(potentialValue)
|
return isValidHTTPToken(potentialValue)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -75491,11 +75593,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
|
||||||
@ -75840,7 +75961,8 @@ module.exports = {
|
|||||||
urlIsLocal,
|
urlIsLocal,
|
||||||
urlHasHttpsScheme,
|
urlHasHttpsScheme,
|
||||||
urlIsHttpHttpsScheme,
|
urlIsHttpHttpsScheme,
|
||||||
readAllBytes
|
readAllBytes,
|
||||||
|
normalizeMethodRecord
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -76279,12 +76401,10 @@ webidl.converters.ByteString = function (V) {
|
|||||||
// 2. If the value of any element of x is greater than
|
// 2. If the value of any element of x is greater than
|
||||||
// 255, then throw a TypeError.
|
// 255, then throw a TypeError.
|
||||||
for (let index = 0; index < x.length; index++) {
|
for (let index = 0; index < x.length; index++) {
|
||||||
const charCode = x.charCodeAt(index)
|
if (x.charCodeAt(index) > 255) {
|
||||||
|
|
||||||
if (charCode > 255) {
|
|
||||||
throw new TypeError(
|
throw new TypeError(
|
||||||
'Cannot convert argument to a ByteString because the character at ' +
|
'Cannot convert argument to a ByteString because the character at ' +
|
||||||
`index ${index} has a value of ${charCode} which is greater than 255.`
|
`index ${index} has a value of ${x.charCodeAt(index)} which is greater than 255.`
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -77961,6 +78081,349 @@ function cleanRequestHeaders (headers, removeContent, unknownOrigin) {
|
|||||||
module.exports = RedirectHandler
|
module.exports = RedirectHandler
|
||||||
|
|
||||||
|
|
||||||
|
/***/ }),
|
||||||
|
|
||||||
|
/***/ 2286:
|
||||||
|
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
|
||||||
|
|
||||||
|
const assert = __nccwpck_require__(9491)
|
||||||
|
|
||||||
|
const { kRetryHandlerDefaultRetry } = __nccwpck_require__(2785)
|
||||||
|
const { RequestRetryError } = __nccwpck_require__(8045)
|
||||||
|
const { isDisturbed, parseHeaders, parseRangeHeader } = __nccwpck_require__(3983)
|
||||||
|
|
||||||
|
function calculateRetryAfterHeader (retryAfter) {
|
||||||
|
const current = Date.now()
|
||||||
|
const diff = new Date(retryAfter).getTime() - current
|
||||||
|
|
||||||
|
return diff
|
||||||
|
}
|
||||||
|
|
||||||
|
class RetryHandler {
|
||||||
|
constructor (opts, handlers) {
|
||||||
|
const { retryOptions, ...dispatchOpts } = opts
|
||||||
|
const {
|
||||||
|
// Retry scoped
|
||||||
|
retry: retryFn,
|
||||||
|
maxRetries,
|
||||||
|
maxTimeout,
|
||||||
|
minTimeout,
|
||||||
|
timeoutFactor,
|
||||||
|
// Response scoped
|
||||||
|
methods,
|
||||||
|
errorCodes,
|
||||||
|
retryAfter,
|
||||||
|
statusCodes
|
||||||
|
} = retryOptions ?? {}
|
||||||
|
|
||||||
|
this.dispatch = handlers.dispatch
|
||||||
|
this.handler = handlers.handler
|
||||||
|
this.opts = dispatchOpts
|
||||||
|
this.abort = null
|
||||||
|
this.aborted = false
|
||||||
|
this.retryOpts = {
|
||||||
|
retry: retryFn ?? RetryHandler[kRetryHandlerDefaultRetry],
|
||||||
|
retryAfter: retryAfter ?? true,
|
||||||
|
maxTimeout: maxTimeout ?? 30 * 1000, // 30s,
|
||||||
|
timeout: minTimeout ?? 500, // .5s
|
||||||
|
timeoutFactor: timeoutFactor ?? 2,
|
||||||
|
maxRetries: maxRetries ?? 5,
|
||||||
|
// What errors we should retry
|
||||||
|
methods: methods ?? ['GET', 'HEAD', 'OPTIONS', 'PUT', 'DELETE', 'TRACE'],
|
||||||
|
// Indicates which errors to retry
|
||||||
|
statusCodes: statusCodes ?? [500, 502, 503, 504, 429],
|
||||||
|
// List of errors to retry
|
||||||
|
errorCodes: errorCodes ?? [
|
||||||
|
'ECONNRESET',
|
||||||
|
'ECONNREFUSED',
|
||||||
|
'ENOTFOUND',
|
||||||
|
'ENETDOWN',
|
||||||
|
'ENETUNREACH',
|
||||||
|
'EHOSTDOWN',
|
||||||
|
'EHOSTUNREACH',
|
||||||
|
'EPIPE'
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
this.retryCount = 0
|
||||||
|
this.start = 0
|
||||||
|
this.end = null
|
||||||
|
this.etag = null
|
||||||
|
this.resume = null
|
||||||
|
|
||||||
|
// Handle possible onConnect duplication
|
||||||
|
this.handler.onConnect(reason => {
|
||||||
|
this.aborted = true
|
||||||
|
if (this.abort) {
|
||||||
|
this.abort(reason)
|
||||||
|
} else {
|
||||||
|
this.reason = reason
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
onRequestSent () {
|
||||||
|
if (this.handler.onRequestSent) {
|
||||||
|
this.handler.onRequestSent()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onUpgrade (statusCode, headers, socket) {
|
||||||
|
if (this.handler.onUpgrade) {
|
||||||
|
this.handler.onUpgrade(statusCode, headers, socket)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onConnect (abort) {
|
||||||
|
if (this.aborted) {
|
||||||
|
abort(this.reason)
|
||||||
|
} else {
|
||||||
|
this.abort = abort
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onBodySent (chunk) {
|
||||||
|
if (this.handler.onBodySent) return this.handler.onBodySent(chunk)
|
||||||
|
}
|
||||||
|
|
||||||
|
static [kRetryHandlerDefaultRetry] (err, { state, opts }, cb) {
|
||||||
|
const { statusCode, code, headers } = err
|
||||||
|
const { method, retryOptions } = opts
|
||||||
|
const {
|
||||||
|
maxRetries,
|
||||||
|
timeout,
|
||||||
|
maxTimeout,
|
||||||
|
timeoutFactor,
|
||||||
|
statusCodes,
|
||||||
|
errorCodes,
|
||||||
|
methods
|
||||||
|
} = retryOptions
|
||||||
|
let { counter, currentTimeout } = state
|
||||||
|
|
||||||
|
currentTimeout =
|
||||||
|
currentTimeout != null && currentTimeout > 0 ? currentTimeout : timeout
|
||||||
|
|
||||||
|
// Any code that is not a Undici's originated and allowed to retry
|
||||||
|
if (
|
||||||
|
code &&
|
||||||
|
code !== 'UND_ERR_REQ_RETRY' &&
|
||||||
|
code !== 'UND_ERR_SOCKET' &&
|
||||||
|
!errorCodes.includes(code)
|
||||||
|
) {
|
||||||
|
cb(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// If a set of method are provided and the current method is not in the list
|
||||||
|
if (Array.isArray(methods) && !methods.includes(method)) {
|
||||||
|
cb(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// If a set of status code are provided and the current status code is not in the list
|
||||||
|
if (
|
||||||
|
statusCode != null &&
|
||||||
|
Array.isArray(statusCodes) &&
|
||||||
|
!statusCodes.includes(statusCode)
|
||||||
|
) {
|
||||||
|
cb(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// If we reached the max number of retries
|
||||||
|
if (counter > maxRetries) {
|
||||||
|
cb(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
let retryAfterHeader = headers != null && headers['retry-after']
|
||||||
|
if (retryAfterHeader) {
|
||||||
|
retryAfterHeader = Number(retryAfterHeader)
|
||||||
|
retryAfterHeader = isNaN(retryAfterHeader)
|
||||||
|
? calculateRetryAfterHeader(retryAfterHeader)
|
||||||
|
: retryAfterHeader * 1e3 // Retry-After is in seconds
|
||||||
|
}
|
||||||
|
|
||||||
|
const retryTimeout =
|
||||||
|
retryAfterHeader > 0
|
||||||
|
? Math.min(retryAfterHeader, maxTimeout)
|
||||||
|
: Math.min(currentTimeout * timeoutFactor ** counter, maxTimeout)
|
||||||
|
|
||||||
|
state.currentTimeout = retryTimeout
|
||||||
|
|
||||||
|
setTimeout(() => cb(null), retryTimeout)
|
||||||
|
}
|
||||||
|
|
||||||
|
onHeaders (statusCode, rawHeaders, resume, statusMessage) {
|
||||||
|
const headers = parseHeaders(rawHeaders)
|
||||||
|
|
||||||
|
this.retryCount += 1
|
||||||
|
|
||||||
|
if (statusCode >= 300) {
|
||||||
|
this.abort(
|
||||||
|
new RequestRetryError('Request failed', statusCode, {
|
||||||
|
headers,
|
||||||
|
count: this.retryCount
|
||||||
|
})
|
||||||
|
)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// Checkpoint for resume from where we left it
|
||||||
|
if (this.resume != null) {
|
||||||
|
this.resume = null
|
||||||
|
|
||||||
|
if (statusCode !== 206) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
const contentRange = parseRangeHeader(headers['content-range'])
|
||||||
|
// If no content range
|
||||||
|
if (!contentRange) {
|
||||||
|
this.abort(
|
||||||
|
new RequestRetryError('Content-Range mismatch', statusCode, {
|
||||||
|
headers,
|
||||||
|
count: this.retryCount
|
||||||
|
})
|
||||||
|
)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// Let's start with a weak etag check
|
||||||
|
if (this.etag != null && this.etag !== headers.etag) {
|
||||||
|
this.abort(
|
||||||
|
new RequestRetryError('ETag mismatch', statusCode, {
|
||||||
|
headers,
|
||||||
|
count: this.retryCount
|
||||||
|
})
|
||||||
|
)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
const { start, size, end = size } = contentRange
|
||||||
|
|
||||||
|
assert(this.start === start, 'content-range mismatch')
|
||||||
|
assert(this.end == null || this.end === end, 'content-range mismatch')
|
||||||
|
|
||||||
|
this.resume = resume
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.end == null) {
|
||||||
|
if (statusCode === 206) {
|
||||||
|
// First time we receive 206
|
||||||
|
const range = parseRangeHeader(headers['content-range'])
|
||||||
|
|
||||||
|
if (range == null) {
|
||||||
|
return this.handler.onHeaders(
|
||||||
|
statusCode,
|
||||||
|
rawHeaders,
|
||||||
|
resume,
|
||||||
|
statusMessage
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
const { start, size, end = size } = range
|
||||||
|
|
||||||
|
assert(
|
||||||
|
start != null && Number.isFinite(start) && this.start !== start,
|
||||||
|
'content-range mismatch'
|
||||||
|
)
|
||||||
|
assert(Number.isFinite(start))
|
||||||
|
assert(
|
||||||
|
end != null && Number.isFinite(end) && this.end !== end,
|
||||||
|
'invalid content-length'
|
||||||
|
)
|
||||||
|
|
||||||
|
this.start = start
|
||||||
|
this.end = end
|
||||||
|
}
|
||||||
|
|
||||||
|
// We make our best to checkpoint the body for further range headers
|
||||||
|
if (this.end == null) {
|
||||||
|
const contentLength = headers['content-length']
|
||||||
|
this.end = contentLength != null ? Number(contentLength) : null
|
||||||
|
}
|
||||||
|
|
||||||
|
assert(Number.isFinite(this.start))
|
||||||
|
assert(
|
||||||
|
this.end == null || Number.isFinite(this.end),
|
||||||
|
'invalid content-length'
|
||||||
|
)
|
||||||
|
|
||||||
|
this.resume = resume
|
||||||
|
this.etag = headers.etag != null ? headers.etag : null
|
||||||
|
|
||||||
|
return this.handler.onHeaders(
|
||||||
|
statusCode,
|
||||||
|
rawHeaders,
|
||||||
|
resume,
|
||||||
|
statusMessage
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
const err = new RequestRetryError('Request failed', statusCode, {
|
||||||
|
headers,
|
||||||
|
count: this.retryCount
|
||||||
|
})
|
||||||
|
|
||||||
|
this.abort(err)
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
onData (chunk) {
|
||||||
|
this.start += chunk.length
|
||||||
|
|
||||||
|
return this.handler.onData(chunk)
|
||||||
|
}
|
||||||
|
|
||||||
|
onComplete (rawTrailers) {
|
||||||
|
this.retryCount = 0
|
||||||
|
return this.handler.onComplete(rawTrailers)
|
||||||
|
}
|
||||||
|
|
||||||
|
onError (err) {
|
||||||
|
if (this.aborted || isDisturbed(this.opts.body)) {
|
||||||
|
return this.handler.onError(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
this.retryOpts.retry(
|
||||||
|
err,
|
||||||
|
{
|
||||||
|
state: { counter: this.retryCount++, currentTimeout: this.retryAfter },
|
||||||
|
opts: { retryOptions: this.retryOpts, ...this.opts }
|
||||||
|
},
|
||||||
|
onRetry.bind(this)
|
||||||
|
)
|
||||||
|
|
||||||
|
function onRetry (err) {
|
||||||
|
if (err != null || this.aborted || isDisturbed(this.opts.body)) {
|
||||||
|
return this.handler.onError(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.start !== 0) {
|
||||||
|
this.opts = {
|
||||||
|
...this.opts,
|
||||||
|
headers: {
|
||||||
|
...this.opts.headers,
|
||||||
|
range: `bytes=${this.start}-${this.end ?? ''}`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
this.dispatch(this.opts, this)
|
||||||
|
} catch (err) {
|
||||||
|
this.handler.onError(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = RetryHandler
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
|
|
||||||
/***/ 8861:
|
/***/ 8861:
|
||||||
@ -79883,6 +80346,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) {
|
||||||
@ -79890,11 +80356,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 })
|
||||||
@ -79918,7 +80383,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)
|
||||||
|
|||||||
983
dist/setup/index.js
vendored
983
dist/setup/index.js
vendored
@ -319,7 +319,8 @@ function createHttpClient() {
|
|||||||
return new http_client_1.HttpClient('actions/cache', [bearerCredentialHandler], getRequestOptions());
|
return new http_client_1.HttpClient('actions/cache', [bearerCredentialHandler], getRequestOptions());
|
||||||
}
|
}
|
||||||
function getCacheVersion(paths, compressionMethod, enableCrossOsArchive = false) {
|
function getCacheVersion(paths, compressionMethod, enableCrossOsArchive = false) {
|
||||||
const components = paths;
|
// don't pass changes upstream
|
||||||
|
const components = paths.slice();
|
||||||
// Add compression method to cache version to restore
|
// Add compression method to cache version to restore
|
||||||
// compressed cache as per compression method
|
// compressed cache as per compression method
|
||||||
if (compressionMethod) {
|
if (compressionMethod) {
|
||||||
@ -608,26 +609,21 @@ function resolvePaths(patterns) {
|
|||||||
implicitDescendants: false
|
implicitDescendants: false
|
||||||
});
|
});
|
||||||
try {
|
try {
|
||||||
for (var _e = true, _f = __asyncValues(globber.globGenerator()), _g; _g = yield _f.next(), _a = _g.done, !_a;) {
|
for (var _e = true, _f = __asyncValues(globber.globGenerator()), _g; _g = yield _f.next(), _a = _g.done, !_a; _e = true) {
|
||||||
_c = _g.value;
|
_c = _g.value;
|
||||||
_e = false;
|
_e = false;
|
||||||
try {
|
const file = _c;
|
||||||
const file = _c;
|
const relativeFile = path
|
||||||
const relativeFile = path
|
.relative(workspace, file)
|
||||||
.relative(workspace, file)
|
.replace(new RegExp(`\\${path.sep}`, 'g'), '/');
|
||||||
.replace(new RegExp(`\\${path.sep}`, 'g'), '/');
|
core.debug(`Matched: ${relativeFile}`);
|
||||||
core.debug(`Matched: ${relativeFile}`);
|
// Paths are made relative so the tar entries are all relative to the root of the workspace.
|
||||||
// Paths are made relative so the tar entries are all relative to the root of the workspace.
|
if (relativeFile === '') {
|
||||||
if (relativeFile === '') {
|
// path.relative returns empty string if workspace and file are equal
|
||||||
// path.relative returns empty string if workspace and file are equal
|
paths.push('.');
|
||||||
paths.push('.');
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
paths.push(`${relativeFile}`);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
finally {
|
else {
|
||||||
_e = true;
|
paths.push(`${relativeFile}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -711,7 +707,10 @@ function assertDefined(name, value) {
|
|||||||
exports.assertDefined = assertDefined;
|
exports.assertDefined = assertDefined;
|
||||||
function isGhes() {
|
function isGhes() {
|
||||||
const ghUrl = new URL(process.env['GITHUB_SERVER_URL'] || 'https://github.com');
|
const ghUrl = new URL(process.env['GITHUB_SERVER_URL'] || 'https://github.com');
|
||||||
return ghUrl.hostname.toUpperCase() !== 'GITHUB.COM';
|
const hostname = ghUrl.hostname.trimEnd().toUpperCase();
|
||||||
|
const isGitHubHost = hostname === 'GITHUB.COM';
|
||||||
|
const isGheHost = hostname.endsWith('.GHE.COM') || hostname.endsWith('.GHE.LOCALHOST');
|
||||||
|
return !isGitHubHost && !isGheHost;
|
||||||
}
|
}
|
||||||
exports.isGhes = isGhes;
|
exports.isGhes = isGhes;
|
||||||
//# sourceMappingURL=cacheUtils.js.map
|
//# sourceMappingURL=cacheUtils.js.map
|
||||||
@ -729,7 +728,7 @@ var CacheFilename;
|
|||||||
(function (CacheFilename) {
|
(function (CacheFilename) {
|
||||||
CacheFilename["Gzip"] = "cache.tgz";
|
CacheFilename["Gzip"] = "cache.tgz";
|
||||||
CacheFilename["Zstd"] = "cache.tzst";
|
CacheFilename["Zstd"] = "cache.tzst";
|
||||||
})(CacheFilename = exports.CacheFilename || (exports.CacheFilename = {}));
|
})(CacheFilename || (exports.CacheFilename = CacheFilename = {}));
|
||||||
var CompressionMethod;
|
var CompressionMethod;
|
||||||
(function (CompressionMethod) {
|
(function (CompressionMethod) {
|
||||||
CompressionMethod["Gzip"] = "gzip";
|
CompressionMethod["Gzip"] = "gzip";
|
||||||
@ -737,12 +736,12 @@ var CompressionMethod;
|
|||||||
// This enum is for earlier version of zstd that does not have --long support
|
// This enum is for earlier version of zstd that does not have --long support
|
||||||
CompressionMethod["ZstdWithoutLong"] = "zstd-without-long";
|
CompressionMethod["ZstdWithoutLong"] = "zstd-without-long";
|
||||||
CompressionMethod["Zstd"] = "zstd";
|
CompressionMethod["Zstd"] = "zstd";
|
||||||
})(CompressionMethod = exports.CompressionMethod || (exports.CompressionMethod = {}));
|
})(CompressionMethod || (exports.CompressionMethod = CompressionMethod = {}));
|
||||||
var ArchiveToolType;
|
var ArchiveToolType;
|
||||||
(function (ArchiveToolType) {
|
(function (ArchiveToolType) {
|
||||||
ArchiveToolType["GNU"] = "gnu";
|
ArchiveToolType["GNU"] = "gnu";
|
||||||
ArchiveToolType["BSD"] = "bsd";
|
ArchiveToolType["BSD"] = "bsd";
|
||||||
})(ArchiveToolType = exports.ArchiveToolType || (exports.ArchiveToolType = {}));
|
})(ArchiveToolType || (exports.ArchiveToolType = ArchiveToolType = {}));
|
||||||
// The default number of retry attempts.
|
// The default number of retry attempts.
|
||||||
exports.DefaultRetryAttempts = 2;
|
exports.DefaultRetryAttempts = 2;
|
||||||
// The default delay in milliseconds between retry attempts.
|
// The default delay in milliseconds between retry attempts.
|
||||||
@ -8551,7 +8550,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.
|
||||||
@ -8583,16 +8582,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
|
||||||
@ -82582,35 +82577,43 @@ const coerce = (version, options) => {
|
|||||||
|
|
||||||
let match = null
|
let match = null
|
||||||
if (!options.rtl) {
|
if (!options.rtl) {
|
||||||
match = version.match(re[t.COERCE])
|
match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE])
|
||||||
} else {
|
} else {
|
||||||
// Find the right-most coercible string that does not share
|
// Find the right-most coercible string that does not share
|
||||||
// a terminus with a more left-ward coercible string.
|
// a terminus with a more left-ward coercible string.
|
||||||
// Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'
|
// Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'
|
||||||
|
// With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.4'
|
||||||
//
|
//
|
||||||
// Walk through the string checking with a /g regexp
|
// Walk through the string checking with a /g regexp
|
||||||
// Manually set the index so as to pick up overlapping matches.
|
// Manually set the index so as to pick up overlapping matches.
|
||||||
// Stop when we get a match that ends at the string end, since no
|
// Stop when we get a match that ends at the string end, since no
|
||||||
// coercible string can be more right-ward without the same terminus.
|
// coercible string can be more right-ward without the same terminus.
|
||||||
|
const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]
|
||||||
let next
|
let next
|
||||||
while ((next = re[t.COERCERTL].exec(version)) &&
|
while ((next = coerceRtlRegex.exec(version)) &&
|
||||||
(!match || match.index + match[0].length !== version.length)
|
(!match || match.index + match[0].length !== version.length)
|
||||||
) {
|
) {
|
||||||
if (!match ||
|
if (!match ||
|
||||||
next.index + next[0].length !== match.index + match[0].length) {
|
next.index + next[0].length !== match.index + match[0].length) {
|
||||||
match = next
|
match = next
|
||||||
}
|
}
|
||||||
re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length
|
coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length
|
||||||
}
|
}
|
||||||
// leave it in a clean state
|
// leave it in a clean state
|
||||||
re[t.COERCERTL].lastIndex = -1
|
coerceRtlRegex.lastIndex = -1
|
||||||
}
|
}
|
||||||
|
|
||||||
if (match === null) {
|
if (match === null) {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
return parse(`${match[2]}.${match[3] || '0'}.${match[4] || '0'}`, options)
|
const major = match[2]
|
||||||
|
const minor = match[3] || '0'
|
||||||
|
const patch = match[4] || '0'
|
||||||
|
const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ''
|
||||||
|
const build = options.includePrerelease && match[6] ? `+${match[6]}` : ''
|
||||||
|
|
||||||
|
return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options)
|
||||||
}
|
}
|
||||||
module.exports = coerce
|
module.exports = coerce
|
||||||
|
|
||||||
@ -83302,12 +83305,17 @@ createToken('XRANGELOOSE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`)
|
|||||||
|
|
||||||
// Coercion.
|
// Coercion.
|
||||||
// Extract anything that could conceivably be a part of a valid semver
|
// Extract anything that could conceivably be a part of a valid semver
|
||||||
createToken('COERCE', `${'(^|[^\\d])' +
|
createToken('COERCEPLAIN', `${'(^|[^\\d])' +
|
||||||
'(\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +
|
'(\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +
|
||||||
`(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +
|
`(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +
|
||||||
`(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +
|
`(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)
|
||||||
|
createToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\d])`)
|
||||||
|
createToken('COERCEFULL', src[t.COERCEPLAIN] +
|
||||||
|
`(?:${src[t.PRERELEASE]})?` +
|
||||||
|
`(?:${src[t.BUILD]})?` +
|
||||||
`(?:$|[^\\d])`)
|
`(?:$|[^\\d])`)
|
||||||
createToken('COERCERTL', src[t.COERCE], true)
|
createToken('COERCERTL', src[t.COERCE], true)
|
||||||
|
createToken('COERCERTLFULL', src[t.COERCEFULL], true)
|
||||||
|
|
||||||
// Tilde ranges.
|
// Tilde ranges.
|
||||||
// Meaning is "reasonably at or greater than"
|
// Meaning is "reasonably at or greater than"
|
||||||
@ -85478,6 +85486,7 @@ const MockAgent = __nccwpck_require__(66771)
|
|||||||
const MockPool = __nccwpck_require__(26193)
|
const MockPool = __nccwpck_require__(26193)
|
||||||
const mockErrors = __nccwpck_require__(50888)
|
const mockErrors = __nccwpck_require__(50888)
|
||||||
const ProxyAgent = __nccwpck_require__(97858)
|
const ProxyAgent = __nccwpck_require__(97858)
|
||||||
|
const RetryHandler = __nccwpck_require__(82286)
|
||||||
const { getGlobalDispatcher, setGlobalDispatcher } = __nccwpck_require__(21892)
|
const { getGlobalDispatcher, setGlobalDispatcher } = __nccwpck_require__(21892)
|
||||||
const DecoratorHandler = __nccwpck_require__(46930)
|
const DecoratorHandler = __nccwpck_require__(46930)
|
||||||
const RedirectHandler = __nccwpck_require__(72860)
|
const RedirectHandler = __nccwpck_require__(72860)
|
||||||
@ -85499,6 +85508,7 @@ module.exports.Pool = Pool
|
|||||||
module.exports.BalancedPool = BalancedPool
|
module.exports.BalancedPool = BalancedPool
|
||||||
module.exports.Agent = Agent
|
module.exports.Agent = Agent
|
||||||
module.exports.ProxyAgent = ProxyAgent
|
module.exports.ProxyAgent = ProxyAgent
|
||||||
|
module.exports.RetryHandler = RetryHandler
|
||||||
|
|
||||||
module.exports.DecoratorHandler = DecoratorHandler
|
module.exports.DecoratorHandler = DecoratorHandler
|
||||||
module.exports.RedirectHandler = RedirectHandler
|
module.exports.RedirectHandler = RedirectHandler
|
||||||
@ -86399,6 +86409,7 @@ function request (opts, callback) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
module.exports = request
|
module.exports = request
|
||||||
|
module.exports.RequestHandler = RequestHandler
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
@ -86781,6 +86792,8 @@ const kBody = Symbol('kBody')
|
|||||||
const kAbort = Symbol('abort')
|
const kAbort = Symbol('abort')
|
||||||
const kContentType = Symbol('kContentType')
|
const kContentType = Symbol('kContentType')
|
||||||
|
|
||||||
|
const noop = () => {}
|
||||||
|
|
||||||
module.exports = class BodyReadable extends Readable {
|
module.exports = class BodyReadable extends Readable {
|
||||||
constructor ({
|
constructor ({
|
||||||
resume,
|
resume,
|
||||||
@ -86914,37 +86927,50 @@ module.exports = class BodyReadable extends Readable {
|
|||||||
return this[kBody]
|
return this[kBody]
|
||||||
}
|
}
|
||||||
|
|
||||||
async dump (opts) {
|
dump (opts) {
|
||||||
let limit = opts && Number.isFinite(opts.limit) ? opts.limit : 262144
|
let limit = opts && Number.isFinite(opts.limit) ? opts.limit : 262144
|
||||||
const signal = opts && opts.signal
|
const signal = opts && opts.signal
|
||||||
const abortFn = () => {
|
|
||||||
this.destroy()
|
|
||||||
}
|
|
||||||
let signalListenerCleanup
|
|
||||||
if (signal) {
|
if (signal) {
|
||||||
if (typeof signal !== 'object' || !('aborted' in signal)) {
|
try {
|
||||||
throw new InvalidArgumentError('signal must be an AbortSignal')
|
if (typeof signal !== 'object' || !('aborted' in signal)) {
|
||||||
}
|
throw new InvalidArgumentError('signal must be an AbortSignal')
|
||||||
util.throwIfAborted(signal)
|
|
||||||
signalListenerCleanup = util.addAbortListener(signal, abortFn)
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
for await (const chunk of this) {
|
|
||||||
util.throwIfAborted(signal)
|
|
||||||
limit -= Buffer.byteLength(chunk)
|
|
||||||
if (limit < 0) {
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
}
|
util.throwIfAborted(signal)
|
||||||
} catch {
|
} catch (err) {
|
||||||
util.throwIfAborted(signal)
|
return Promise.reject(err)
|
||||||
} finally {
|
|
||||||
if (typeof signalListenerCleanup === 'function') {
|
|
||||||
signalListenerCleanup()
|
|
||||||
} else if (signalListenerCleanup) {
|
|
||||||
signalListenerCleanup[Symbol.dispose]()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this.closed) {
|
||||||
|
return Promise.resolve(null)
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
const signalListenerCleanup = signal
|
||||||
|
? util.addAbortListener(signal, () => {
|
||||||
|
this.destroy()
|
||||||
|
})
|
||||||
|
: noop
|
||||||
|
|
||||||
|
this
|
||||||
|
.on('close', function () {
|
||||||
|
signalListenerCleanup()
|
||||||
|
if (signal && signal.aborted) {
|
||||||
|
reject(signal.reason || Object.assign(new Error('The operation was aborted'), { name: 'AbortError' }))
|
||||||
|
} else {
|
||||||
|
resolve(null)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.on('error', noop)
|
||||||
|
.on('data', function (chunk) {
|
||||||
|
limit -= chunk.length
|
||||||
|
if (limit <= 0) {
|
||||||
|
this.destroy()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.resume()
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -88324,13 +88350,13 @@ module.exports = {
|
|||||||
/***/ }),
|
/***/ }),
|
||||||
|
|
||||||
/***/ 29174:
|
/***/ 29174:
|
||||||
/***/ ((module) => {
|
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
kConstruct: Symbol('constructable')
|
kConstruct: (__nccwpck_require__(72785).kConstruct)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -89316,11 +89342,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
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -89367,13 +89391,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
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -89414,11 +89433,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
|
||||||
|
|
||||||
@ -89582,7 +89597,7 @@ async function connect (client) {
|
|||||||
const idx = hostname.indexOf(']')
|
const idx = hostname.indexOf(']')
|
||||||
|
|
||||||
assert(idx !== -1)
|
assert(idx !== -1)
|
||||||
const ip = hostname.substr(1, idx - 1)
|
const ip = hostname.substring(1, idx)
|
||||||
|
|
||||||
assert(net.isIP(ip))
|
assert(net.isIP(ip))
|
||||||
hostname = ip
|
hostname = ip
|
||||||
@ -90081,6 +90096,7 @@ function writeH2 (client, session, request) {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @type {import('node:http2').ClientHttp2Stream} */
|
||||||
let stream
|
let stream
|
||||||
const h2State = client[kHTTP2SessionState]
|
const h2State = client[kHTTP2SessionState]
|
||||||
|
|
||||||
@ -90176,14 +90192,10 @@ function writeH2 (client, session, request) {
|
|||||||
const shouldEndStream = method === 'GET' || method === 'HEAD'
|
const shouldEndStream = method === 'GET' || method === 'HEAD'
|
||||||
if (expectContinue) {
|
if (expectContinue) {
|
||||||
headers[HTTP2_HEADER_EXPECT] = '100-continue'
|
headers[HTTP2_HEADER_EXPECT] = '100-continue'
|
||||||
/**
|
|
||||||
* @type {import('node:http2').ClientHttp2Stream}
|
|
||||||
*/
|
|
||||||
stream = session.request(headers, { endStream: shouldEndStream, signal })
|
stream = session.request(headers, { endStream: shouldEndStream, signal })
|
||||||
|
|
||||||
stream.once('continue', writeBodyH2)
|
stream.once('continue', writeBodyH2)
|
||||||
} else {
|
} else {
|
||||||
/** @type {import('node:http2').ClientHttp2Stream} */
|
|
||||||
stream = session.request(headers, {
|
stream = session.request(headers, {
|
||||||
endStream: shouldEndStream,
|
endStream: shouldEndStream,
|
||||||
signal
|
signal
|
||||||
@ -90195,7 +90207,9 @@ function writeH2 (client, session, request) {
|
|||||||
++h2State.openStreams
|
++h2State.openStreams
|
||||||
|
|
||||||
stream.once('response', headers => {
|
stream.once('response', headers => {
|
||||||
if (request.onHeaders(Number(headers[HTTP2_HEADER_STATUS]), headers, stream.resume.bind(stream), '') === false) {
|
const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers
|
||||||
|
|
||||||
|
if (request.onHeaders(Number(statusCode), realHeaders, stream.resume.bind(stream), '') === false) {
|
||||||
stream.pause()
|
stream.pause()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -90205,13 +90219,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) {
|
||||||
@ -90371,7 +90389,11 @@ function writeStream ({ h2stream, body, client, request, socket, contentLength,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
const onAbort = function () {
|
const onAbort = function () {
|
||||||
onFinished(new RequestAbortedError())
|
if (finished) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const err = new RequestAbortedError()
|
||||||
|
queueMicrotask(() => onFinished(err))
|
||||||
}
|
}
|
||||||
const onFinished = function (err) {
|
const onFinished = function (err) {
|
||||||
if (finished) {
|
if (finished) {
|
||||||
@ -91976,6 +91998,19 @@ class ResponseExceededMaxSizeError extends UndiciError {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class RequestRetryError extends UndiciError {
|
||||||
|
constructor (message, code, { headers, data }) {
|
||||||
|
super(message)
|
||||||
|
Error.captureStackTrace(this, RequestRetryError)
|
||||||
|
this.name = 'RequestRetryError'
|
||||||
|
this.message = message || 'Request retry error'
|
||||||
|
this.code = 'UND_ERR_REQ_RETRY'
|
||||||
|
this.statusCode = code
|
||||||
|
this.data = data
|
||||||
|
this.headers = headers
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
HTTPParserError,
|
HTTPParserError,
|
||||||
UndiciError,
|
UndiciError,
|
||||||
@ -91995,7 +92030,8 @@ module.exports = {
|
|||||||
NotSupportedError,
|
NotSupportedError,
|
||||||
ResponseContentLengthMismatchError,
|
ResponseContentLengthMismatchError,
|
||||||
BalancedPoolMissingUpstreamError,
|
BalancedPoolMissingUpstreamError,
|
||||||
ResponseExceededMaxSizeError
|
ResponseExceededMaxSizeError,
|
||||||
|
RequestRetryError
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -92237,9 +92273,9 @@ class Request {
|
|||||||
onBodySent (chunk) {
|
onBodySent (chunk) {
|
||||||
if (this[kHandler].onBodySent) {
|
if (this[kHandler].onBodySent) {
|
||||||
try {
|
try {
|
||||||
this[kHandler].onBodySent(chunk)
|
return this[kHandler].onBodySent(chunk)
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
this.onError(err)
|
this.abort(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -92251,9 +92287,9 @@ class Request {
|
|||||||
|
|
||||||
if (this[kHandler].onRequestSent) {
|
if (this[kHandler].onRequestSent) {
|
||||||
try {
|
try {
|
||||||
this[kHandler].onRequestSent()
|
return this[kHandler].onRequestSent()
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
this.onError(err)
|
this.abort(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -92278,14 +92314,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) {
|
||||||
@ -92304,7 +92349,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) {
|
||||||
@ -92318,6 +92369,7 @@ class Request {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
this.aborted = true
|
this.aborted = true
|
||||||
|
|
||||||
return this[kHandler].onError(error)
|
return this[kHandler].onError(error)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -92554,7 +92606,9 @@ module.exports = {
|
|||||||
kHTTP2BuildRequest: Symbol('http2 build request'),
|
kHTTP2BuildRequest: Symbol('http2 build request'),
|
||||||
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'),
|
||||||
|
kConstruct: Symbol('constructable')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -92691,13 +92745,13 @@ function getHostname (host) {
|
|||||||
const idx = host.indexOf(']')
|
const idx = host.indexOf(']')
|
||||||
|
|
||||||
assert(idx !== -1)
|
assert(idx !== -1)
|
||||||
return host.substr(1, idx - 1)
|
return host.substring(1, idx)
|
||||||
}
|
}
|
||||||
|
|
||||||
const idx = host.indexOf(':')
|
const idx = host.indexOf(':')
|
||||||
if (idx === -1) return host
|
if (idx === -1) return host
|
||||||
|
|
||||||
return host.substr(0, idx)
|
return host.substring(0, idx)
|
||||||
}
|
}
|
||||||
|
|
||||||
// IP addresses are not valid server names per RFC6066
|
// IP addresses are not valid server names per RFC6066
|
||||||
@ -92794,7 +92848,7 @@ function parseHeaders (headers, obj = {}) {
|
|||||||
|
|
||||||
if (!val) {
|
if (!val) {
|
||||||
if (Array.isArray(headers[i + 1])) {
|
if (Array.isArray(headers[i + 1])) {
|
||||||
obj[key] = headers[i + 1]
|
obj[key] = headers[i + 1].map(x => x.toString('utf8'))
|
||||||
} else {
|
} else {
|
||||||
obj[key] = headers[i + 1].toString('utf8')
|
obj[key] = headers[i + 1].toString('utf8')
|
||||||
}
|
}
|
||||||
@ -92997,16 +93051,7 @@ function throwIfAborted (signal) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let events
|
|
||||||
function addAbortListener (signal, listener) {
|
function addAbortListener (signal, listener) {
|
||||||
if (typeof Symbol.dispose === 'symbol') {
|
|
||||||
if (!events) {
|
|
||||||
events = __nccwpck_require__(82361)
|
|
||||||
}
|
|
||||||
if (typeof events.addAbortListener === 'function' && 'aborted' in signal) {
|
|
||||||
return events.addAbortListener(signal, listener)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ('addEventListener' in signal) {
|
if ('addEventListener' in signal) {
|
||||||
signal.addEventListener('abort', listener, { once: true })
|
signal.addEventListener('abort', listener, { once: true })
|
||||||
return () => signal.removeEventListener('abort', listener)
|
return () => signal.removeEventListener('abort', listener)
|
||||||
@ -93030,6 +93075,21 @@ function toUSVString (val) {
|
|||||||
return `${val}`
|
return `${val}`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Parsed accordingly to RFC 9110
|
||||||
|
// https://www.rfc-editor.org/rfc/rfc9110#field.content-range
|
||||||
|
function parseRangeHeader (range) {
|
||||||
|
if (range == null || range === '') return { start: 0, end: null, size: null }
|
||||||
|
|
||||||
|
const m = range ? range.match(/^bytes (\d+)-(\d+)\/(\d+)?$/) : null
|
||||||
|
return m
|
||||||
|
? {
|
||||||
|
start: parseInt(m[1]),
|
||||||
|
end: m[2] ? parseInt(m[2]) : null,
|
||||||
|
size: m[3] ? parseInt(m[3]) : null
|
||||||
|
}
|
||||||
|
: null
|
||||||
|
}
|
||||||
|
|
||||||
const kEnumerableProperty = Object.create(null)
|
const kEnumerableProperty = Object.create(null)
|
||||||
kEnumerableProperty.enumerable = true
|
kEnumerableProperty.enumerable = true
|
||||||
|
|
||||||
@ -93063,9 +93123,11 @@ module.exports = {
|
|||||||
buildURL,
|
buildURL,
|
||||||
throwIfAborted,
|
throwIfAborted,
|
||||||
addAbortListener,
|
addAbortListener,
|
||||||
|
parseRangeHeader,
|
||||||
nodeMajor,
|
nodeMajor,
|
||||||
nodeMinor,
|
nodeMinor,
|
||||||
nodeHasAutoSelectFamily: nodeMajor > 18 || (nodeMajor === 18 && nodeMinor >= 13)
|
nodeHasAutoSelectFamily: nodeMajor > 18 || (nodeMajor === 18 && nodeMinor >= 13),
|
||||||
|
safeHTTPMethods: ['GET', 'HEAD', 'OPTIONS', 'TRACE']
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -94194,17 +94256,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
|
||||||
@ -95388,7 +95447,7 @@ module.exports = {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
const { kHeadersList } = __nccwpck_require__(72785)
|
const { kHeadersList, kConstruct } = __nccwpck_require__(72785)
|
||||||
const { kGuard } = __nccwpck_require__(15861)
|
const { kGuard } = __nccwpck_require__(15861)
|
||||||
const { kEnumerableProperty } = __nccwpck_require__(83983)
|
const { kEnumerableProperty } = __nccwpck_require__(83983)
|
||||||
const {
|
const {
|
||||||
@ -95402,6 +95461,13 @@ const assert = __nccwpck_require__(39491)
|
|||||||
const kHeadersMap = Symbol('headers map')
|
const kHeadersMap = Symbol('headers map')
|
||||||
const kHeadersSortedMap = Symbol('headers map sorted')
|
const kHeadersSortedMap = Symbol('headers map sorted')
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {number} code
|
||||||
|
*/
|
||||||
|
function isHTTPWhiteSpaceCharCode (code) {
|
||||||
|
return code === 0x00a || code === 0x00d || code === 0x009 || code === 0x020
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see https://fetch.spec.whatwg.org/#concept-header-value-normalize
|
* @see https://fetch.spec.whatwg.org/#concept-header-value-normalize
|
||||||
* @param {string} potentialValue
|
* @param {string} potentialValue
|
||||||
@ -95410,12 +95476,12 @@ function headerValueNormalize (potentialValue) {
|
|||||||
// To normalize a byte sequence potentialValue, remove
|
// To normalize a byte sequence potentialValue, remove
|
||||||
// any leading and trailing HTTP whitespace bytes from
|
// any leading and trailing HTTP whitespace bytes from
|
||||||
// potentialValue.
|
// potentialValue.
|
||||||
|
let i = 0; let j = potentialValue.length
|
||||||
|
|
||||||
// Trimming the end with `.replace()` and a RegExp is typically subject to
|
while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(j - 1))) --j
|
||||||
// ReDoS. This is safer and faster.
|
while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(i))) ++i
|
||||||
let i = potentialValue.length
|
|
||||||
while (/[\r\n\t ]/.test(potentialValue.charAt(--i)));
|
return i === 0 && j === potentialValue.length ? potentialValue : potentialValue.substring(i, j)
|
||||||
return potentialValue.slice(0, i + 1).replace(/^[\r\n\t ]+/, '')
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function fill (headers, object) {
|
function fill (headers, object) {
|
||||||
@ -95424,7 +95490,8 @@ function fill (headers, object) {
|
|||||||
// 1. If object is a sequence, then for each header in object:
|
// 1. If object is a sequence, then for each header in object:
|
||||||
// Note: webidl conversion to array has already been done.
|
// Note: webidl conversion to array has already been done.
|
||||||
if (Array.isArray(object)) {
|
if (Array.isArray(object)) {
|
||||||
for (const header of object) {
|
for (let i = 0; i < object.length; ++i) {
|
||||||
|
const header = object[i]
|
||||||
// 1. If header does not contain exactly two items, then throw a TypeError.
|
// 1. If header does not contain exactly two items, then throw a TypeError.
|
||||||
if (header.length !== 2) {
|
if (header.length !== 2) {
|
||||||
throw webidl.errors.exception({
|
throw webidl.errors.exception({
|
||||||
@ -95434,15 +95501,16 @@ function fill (headers, object) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 2. Append (header’s first item, header’s second item) to headers.
|
// 2. Append (header’s first item, header’s second item) to headers.
|
||||||
headers.append(header[0], header[1])
|
appendHeader(headers, header[0], header[1])
|
||||||
}
|
}
|
||||||
} else if (typeof object === 'object' && object !== null) {
|
} else if (typeof object === 'object' && object !== null) {
|
||||||
// Note: null should throw
|
// Note: null should throw
|
||||||
|
|
||||||
// 2. Otherwise, object is a record, then for each key → value in object,
|
// 2. Otherwise, object is a record, then for each key → value in object,
|
||||||
// append (key, value) to headers
|
// append (key, value) to headers
|
||||||
for (const [key, value] of Object.entries(object)) {
|
const keys = Object.keys(object)
|
||||||
headers.append(key, value)
|
for (let i = 0; i < keys.length; ++i) {
|
||||||
|
appendHeader(headers, keys[i], object[keys[i]])
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
throw webidl.errors.conversionFailed({
|
throw webidl.errors.conversionFailed({
|
||||||
@ -95453,6 +95521,50 @@ function fill (headers, object) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see https://fetch.spec.whatwg.org/#concept-headers-append
|
||||||
|
*/
|
||||||
|
function appendHeader (headers, name, value) {
|
||||||
|
// 1. Normalize value.
|
||||||
|
value = headerValueNormalize(value)
|
||||||
|
|
||||||
|
// 2. If name is not a header name or value is not a
|
||||||
|
// header value, then throw a TypeError.
|
||||||
|
if (!isValidHeaderName(name)) {
|
||||||
|
throw webidl.errors.invalidArgument({
|
||||||
|
prefix: 'Headers.append',
|
||||||
|
value: name,
|
||||||
|
type: 'header name'
|
||||||
|
})
|
||||||
|
} else if (!isValidHeaderValue(value)) {
|
||||||
|
throw webidl.errors.invalidArgument({
|
||||||
|
prefix: 'Headers.append',
|
||||||
|
value,
|
||||||
|
type: 'header value'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3. If headers’s guard is "immutable", then throw a TypeError.
|
||||||
|
// 4. Otherwise, if headers’s guard is "request" and name is a
|
||||||
|
// forbidden header name, return.
|
||||||
|
// Note: undici does not implement forbidden header names
|
||||||
|
if (headers[kGuard] === 'immutable') {
|
||||||
|
throw new TypeError('immutable')
|
||||||
|
} else if (headers[kGuard] === 'request-no-cors') {
|
||||||
|
// 5. Otherwise, if headers’s guard is "request-no-cors":
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
// 6. Otherwise, if headers’s guard is "response" and name is a
|
||||||
|
// forbidden response-header name, return.
|
||||||
|
|
||||||
|
// 7. Append (name, value) to headers’s header list.
|
||||||
|
return headers[kHeadersList].append(name, value)
|
||||||
|
|
||||||
|
// 8. If headers’s guard is "request-no-cors", then remove
|
||||||
|
// privileged no-CORS request headers from headers
|
||||||
|
}
|
||||||
|
|
||||||
class HeadersList {
|
class HeadersList {
|
||||||
/** @type {[string, string][]|null} */
|
/** @type {[string, string][]|null} */
|
||||||
cookies = null
|
cookies = null
|
||||||
@ -95461,7 +95573,7 @@ class HeadersList {
|
|||||||
if (init instanceof HeadersList) {
|
if (init instanceof HeadersList) {
|
||||||
this[kHeadersMap] = new Map(init[kHeadersMap])
|
this[kHeadersMap] = new Map(init[kHeadersMap])
|
||||||
this[kHeadersSortedMap] = init[kHeadersSortedMap]
|
this[kHeadersSortedMap] = init[kHeadersSortedMap]
|
||||||
this.cookies = init.cookies
|
this.cookies = init.cookies === null ? null : [...init.cookies]
|
||||||
} else {
|
} else {
|
||||||
this[kHeadersMap] = new Map(init)
|
this[kHeadersMap] = new Map(init)
|
||||||
this[kHeadersSortedMap] = null
|
this[kHeadersSortedMap] = null
|
||||||
@ -95523,7 +95635,7 @@ class HeadersList {
|
|||||||
// the first such header to value and remove the
|
// the first such header to value and remove the
|
||||||
// others.
|
// others.
|
||||||
// 2. Otherwise, append header (name, value) to list.
|
// 2. Otherwise, append header (name, value) to list.
|
||||||
return this[kHeadersMap].set(lowercaseName, { name, value })
|
this[kHeadersMap].set(lowercaseName, { name, value })
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://fetch.spec.whatwg.org/#concept-header-list-delete
|
// https://fetch.spec.whatwg.org/#concept-header-list-delete
|
||||||
@ -95536,20 +95648,18 @@ class HeadersList {
|
|||||||
this.cookies = null
|
this.cookies = null
|
||||||
}
|
}
|
||||||
|
|
||||||
return this[kHeadersMap].delete(name)
|
this[kHeadersMap].delete(name)
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://fetch.spec.whatwg.org/#concept-header-list-get
|
// https://fetch.spec.whatwg.org/#concept-header-list-get
|
||||||
get (name) {
|
get (name) {
|
||||||
// 1. If list does not contain name, then return null.
|
const value = this[kHeadersMap].get(name.toLowerCase())
|
||||||
if (!this.contains(name)) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
|
|
||||||
|
// 1. If list does not contain name, then return null.
|
||||||
// 2. Return the values of all headers in list whose name
|
// 2. Return the values of all headers in list whose name
|
||||||
// is a byte-case-insensitive match for name,
|
// is a byte-case-insensitive match for name,
|
||||||
// separated from each other by 0x2C 0x20, in order.
|
// separated from each other by 0x2C 0x20, in order.
|
||||||
return this[kHeadersMap].get(name.toLowerCase())?.value ?? null
|
return value === undefined ? null : value.value
|
||||||
}
|
}
|
||||||
|
|
||||||
* [Symbol.iterator] () {
|
* [Symbol.iterator] () {
|
||||||
@ -95575,6 +95685,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:
|
||||||
@ -95598,43 +95711,7 @@ class Headers {
|
|||||||
name = webidl.converters.ByteString(name)
|
name = webidl.converters.ByteString(name)
|
||||||
value = webidl.converters.ByteString(value)
|
value = webidl.converters.ByteString(value)
|
||||||
|
|
||||||
// 1. Normalize value.
|
return appendHeader(this, name, value)
|
||||||
value = headerValueNormalize(value)
|
|
||||||
|
|
||||||
// 2. If name is not a header name or value is not a
|
|
||||||
// header value, then throw a TypeError.
|
|
||||||
if (!isValidHeaderName(name)) {
|
|
||||||
throw webidl.errors.invalidArgument({
|
|
||||||
prefix: 'Headers.append',
|
|
||||||
value: name,
|
|
||||||
type: 'header name'
|
|
||||||
})
|
|
||||||
} else if (!isValidHeaderValue(value)) {
|
|
||||||
throw webidl.errors.invalidArgument({
|
|
||||||
prefix: 'Headers.append',
|
|
||||||
value,
|
|
||||||
type: 'header value'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 3. If headers’s guard is "immutable", then throw a TypeError.
|
|
||||||
// 4. Otherwise, if headers’s guard is "request" and name is a
|
|
||||||
// forbidden header name, return.
|
|
||||||
// Note: undici does not implement forbidden header names
|
|
||||||
if (this[kGuard] === 'immutable') {
|
|
||||||
throw new TypeError('immutable')
|
|
||||||
} else if (this[kGuard] === 'request-no-cors') {
|
|
||||||
// 5. Otherwise, if headers’s guard is "request-no-cors":
|
|
||||||
// TODO
|
|
||||||
}
|
|
||||||
|
|
||||||
// 6. Otherwise, if headers’s guard is "response" and name is a
|
|
||||||
// forbidden response-header name, return.
|
|
||||||
|
|
||||||
// 7. Append (name, value) to headers’s header list.
|
|
||||||
// 8. If headers’s guard is "request-no-cors", then remove
|
|
||||||
// privileged no-CORS request headers from headers
|
|
||||||
return this[kHeadersList].append(name, value)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://fetch.spec.whatwg.org/#dom-headers-delete
|
// https://fetch.spec.whatwg.org/#dom-headers-delete
|
||||||
@ -95679,7 +95756,7 @@ class Headers {
|
|||||||
// 7. Delete name from this’s header list.
|
// 7. Delete name from this’s header list.
|
||||||
// 8. If this’s guard is "request-no-cors", then remove
|
// 8. If this’s guard is "request-no-cors", then remove
|
||||||
// privileged no-CORS request headers from this.
|
// privileged no-CORS request headers from this.
|
||||||
return this[kHeadersList].delete(name)
|
this[kHeadersList].delete(name)
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://fetch.spec.whatwg.org/#dom-headers-get
|
// https://fetch.spec.whatwg.org/#dom-headers-get
|
||||||
@ -95772,7 +95849,7 @@ class Headers {
|
|||||||
// 7. Set (name, value) in this’s header list.
|
// 7. Set (name, value) in this’s header list.
|
||||||
// 8. If this’s guard is "request-no-cors", then remove
|
// 8. If this’s guard is "request-no-cors", then remove
|
||||||
// privileged no-CORS request headers from this
|
// privileged no-CORS request headers from this
|
||||||
return this[kHeadersList].set(name, value)
|
this[kHeadersList].set(name, value)
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://fetch.spec.whatwg.org/#dom-headers-getsetcookie
|
// https://fetch.spec.whatwg.org/#dom-headers-getsetcookie
|
||||||
@ -95808,7 +95885,8 @@ class Headers {
|
|||||||
const cookies = this[kHeadersList].cookies
|
const cookies = this[kHeadersList].cookies
|
||||||
|
|
||||||
// 3. For each name of names:
|
// 3. For each name of names:
|
||||||
for (const [name, value] of names) {
|
for (let i = 0; i < names.length; ++i) {
|
||||||
|
const [name, value] = names[i]
|
||||||
// 1. If name is `set-cookie`, then:
|
// 1. If name is `set-cookie`, then:
|
||||||
if (name === 'set-cookie') {
|
if (name === 'set-cookie') {
|
||||||
// 1. Let values be a list of all values of headers in list whose name
|
// 1. Let values be a list of all values of headers in list whose name
|
||||||
@ -95816,8 +95894,8 @@ class Headers {
|
|||||||
|
|
||||||
// 2. For each value of values:
|
// 2. For each value of values:
|
||||||
// 1. Append (name, value) to headers.
|
// 1. Append (name, value) to headers.
|
||||||
for (const value of cookies) {
|
for (let j = 0; j < cookies.length; ++j) {
|
||||||
headers.push([name, value])
|
headers.push([name, cookies[j]])
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// 2. Otherwise:
|
// 2. Otherwise:
|
||||||
@ -95841,6 +95919,12 @@ class Headers {
|
|||||||
keys () {
|
keys () {
|
||||||
webidl.brandCheck(this, Headers)
|
webidl.brandCheck(this, Headers)
|
||||||
|
|
||||||
|
if (this[kGuard] === 'immutable') {
|
||||||
|
const value = this[kHeadersSortedMap]
|
||||||
|
return makeIterator(() => value, 'Headers',
|
||||||
|
'key')
|
||||||
|
}
|
||||||
|
|
||||||
return makeIterator(
|
return makeIterator(
|
||||||
() => [...this[kHeadersSortedMap].values()],
|
() => [...this[kHeadersSortedMap].values()],
|
||||||
'Headers',
|
'Headers',
|
||||||
@ -95851,6 +95935,12 @@ class Headers {
|
|||||||
values () {
|
values () {
|
||||||
webidl.brandCheck(this, Headers)
|
webidl.brandCheck(this, Headers)
|
||||||
|
|
||||||
|
if (this[kGuard] === 'immutable') {
|
||||||
|
const value = this[kHeadersSortedMap]
|
||||||
|
return makeIterator(() => value, 'Headers',
|
||||||
|
'value')
|
||||||
|
}
|
||||||
|
|
||||||
return makeIterator(
|
return makeIterator(
|
||||||
() => [...this[kHeadersSortedMap].values()],
|
() => [...this[kHeadersSortedMap].values()],
|
||||||
'Headers',
|
'Headers',
|
||||||
@ -95861,6 +95951,12 @@ class Headers {
|
|||||||
entries () {
|
entries () {
|
||||||
webidl.brandCheck(this, Headers)
|
webidl.brandCheck(this, Headers)
|
||||||
|
|
||||||
|
if (this[kGuard] === 'immutable') {
|
||||||
|
const value = this[kHeadersSortedMap]
|
||||||
|
return makeIterator(() => value, 'Headers',
|
||||||
|
'key+value')
|
||||||
|
}
|
||||||
|
|
||||||
return makeIterator(
|
return makeIterator(
|
||||||
() => [...this[kHeadersSortedMap].values()],
|
() => [...this[kHeadersSortedMap].values()],
|
||||||
'Headers',
|
'Headers',
|
||||||
@ -96232,7 +96328,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
|
||||||
@ -97149,6 +97245,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')
|
||||||
@ -97903,7 +98002,7 @@ async function httpNetworkFetch (
|
|||||||
path: url.pathname + url.search,
|
path: url.pathname + url.search,
|
||||||
origin: url.origin,
|
origin: url.origin,
|
||||||
method: request.method,
|
method: request.method,
|
||||||
body: fetchParams.controller.dispatcher.isMockActive ? request.body && request.body.source : body,
|
body: fetchParams.controller.dispatcher.isMockActive ? request.body && (request.body.source || request.body.stream) : body,
|
||||||
headers: request.headersList.entries,
|
headers: request.headersList.entries,
|
||||||
maxRedirections: 0,
|
maxRedirections: 0,
|
||||||
upgrade: request.mode === 'websocket' ? 'websocket' : undefined
|
upgrade: request.mode === 'websocket' ? 'websocket' : undefined
|
||||||
@ -97948,7 +98047,7 @@ async function httpNetworkFetch (
|
|||||||
location = val
|
location = val
|
||||||
}
|
}
|
||||||
|
|
||||||
headers.append(key, val)
|
headers[kHeadersList].append(key, val)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
const keys = Object.keys(headersList)
|
const keys = Object.keys(headersList)
|
||||||
@ -97962,7 +98061,7 @@ async function httpNetworkFetch (
|
|||||||
location = val
|
location = val
|
||||||
}
|
}
|
||||||
|
|
||||||
headers.append(key, val)
|
headers[kHeadersList].append(key, val)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -98066,7 +98165,7 @@ async function httpNetworkFetch (
|
|||||||
const key = headersList[n + 0].toString('latin1')
|
const key = headersList[n + 0].toString('latin1')
|
||||||
const val = headersList[n + 1].toString('latin1')
|
const val = headersList[n + 1].toString('latin1')
|
||||||
|
|
||||||
headers.append(key, val)
|
headers[kHeadersList].append(key, val)
|
||||||
}
|
}
|
||||||
|
|
||||||
resolve({
|
resolve({
|
||||||
@ -98109,7 +98208,8 @@ const {
|
|||||||
isValidHTTPToken,
|
isValidHTTPToken,
|
||||||
sameOrigin,
|
sameOrigin,
|
||||||
normalizeMethod,
|
normalizeMethod,
|
||||||
makePolicyContainer
|
makePolicyContainer,
|
||||||
|
normalizeMethodRecord
|
||||||
} = __nccwpck_require__(52538)
|
} = __nccwpck_require__(52538)
|
||||||
const {
|
const {
|
||||||
forbiddenMethodsSet,
|
forbiddenMethodsSet,
|
||||||
@ -98126,13 +98226,12 @@ const { kHeaders, kSignal, kState, kGuard, kRealm } = __nccwpck_require__(15861)
|
|||||||
const { webidl } = __nccwpck_require__(21744)
|
const { webidl } = __nccwpck_require__(21744)
|
||||||
const { getGlobalOrigin } = __nccwpck_require__(71246)
|
const { getGlobalOrigin } = __nccwpck_require__(71246)
|
||||||
const { URLSerializer } = __nccwpck_require__(685)
|
const { URLSerializer } = __nccwpck_require__(685)
|
||||||
const { kHeadersList } = __nccwpck_require__(72785)
|
const { kHeadersList, kConstruct } = __nccwpck_require__(72785)
|
||||||
const assert = __nccwpck_require__(39491)
|
const assert = __nccwpck_require__(39491)
|
||||||
const { getMaxListeners, setMaxListeners, getEventListeners, defaultMaxListeners } = __nccwpck_require__(82361)
|
const { getMaxListeners, setMaxListeners, getEventListeners, defaultMaxListeners } = __nccwpck_require__(82361)
|
||||||
|
|
||||||
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 }) => {
|
||||||
@ -98143,7 +98242,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
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -98282,8 +98381,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'
|
||||||
@ -98398,7 +98499,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)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -98414,16 +98515,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 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 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
|
||||||
@ -98494,7 +98595,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]
|
||||||
@ -98514,25 +98615,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)
|
||||||
@ -98821,10 +98922,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]
|
||||||
@ -99074,7 +99175,7 @@ const { webidl } = __nccwpck_require__(21744)
|
|||||||
const { FormData } = __nccwpck_require__(72015)
|
const { FormData } = __nccwpck_require__(72015)
|
||||||
const { getGlobalOrigin } = __nccwpck_require__(71246)
|
const { getGlobalOrigin } = __nccwpck_require__(71246)
|
||||||
const { URLSerializer } = __nccwpck_require__(685)
|
const { URLSerializer } = __nccwpck_require__(685)
|
||||||
const { kHeadersList } = __nccwpck_require__(72785)
|
const { kHeadersList, kConstruct } = __nccwpck_require__(72785)
|
||||||
const assert = __nccwpck_require__(39491)
|
const assert = __nccwpck_require__(39491)
|
||||||
const { types } = __nccwpck_require__(73837)
|
const { types } = __nccwpck_require__(73837)
|
||||||
|
|
||||||
@ -99195,7 +99296,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]
|
||||||
@ -99565,11 +99666,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)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -99755,52 +99852,57 @@ function isValidReasonPhrase (statusText) {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
function isTokenChar (c) {
|
/**
|
||||||
return !(
|
* @see https://tools.ietf.org/html/rfc7230#section-3.2.6
|
||||||
c >= 0x7f ||
|
* @param {number} c
|
||||||
c <= 0x20 ||
|
*/
|
||||||
c === '(' ||
|
function isTokenCharCode (c) {
|
||||||
c === ')' ||
|
switch (c) {
|
||||||
c === '<' ||
|
case 0x22:
|
||||||
c === '>' ||
|
case 0x28:
|
||||||
c === '@' ||
|
case 0x29:
|
||||||
c === ',' ||
|
case 0x2c:
|
||||||
c === ';' ||
|
case 0x2f:
|
||||||
c === ':' ||
|
case 0x3a:
|
||||||
c === '\\' ||
|
case 0x3b:
|
||||||
c === '"' ||
|
case 0x3c:
|
||||||
c === '/' ||
|
case 0x3d:
|
||||||
c === '[' ||
|
case 0x3e:
|
||||||
c === ']' ||
|
case 0x3f:
|
||||||
c === '?' ||
|
case 0x40:
|
||||||
c === '=' ||
|
case 0x5b:
|
||||||
c === '{' ||
|
case 0x5c:
|
||||||
c === '}'
|
case 0x5d:
|
||||||
)
|
case 0x7b:
|
||||||
|
case 0x7d:
|
||||||
|
// DQUOTE and "(),/:;<=>?@[\]{}"
|
||||||
|
return false
|
||||||
|
default:
|
||||||
|
// VCHAR %x21-7E
|
||||||
|
return c >= 0x21 && c <= 0x7e
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// See RFC 7230, Section 3.2.6.
|
/**
|
||||||
// https://github.com/chromium/chromium/blob/d7da0240cae77824d1eda25745c4022757499131/third_party/blink/renderer/platform/network/http_parsers.cc#L321
|
* @param {string} characters
|
||||||
|
*/
|
||||||
function isValidHTTPToken (characters) {
|
function isValidHTTPToken (characters) {
|
||||||
if (!characters || typeof characters !== 'string') {
|
if (characters.length === 0) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
for (let i = 0; i < characters.length; ++i) {
|
for (let i = 0; i < characters.length; ++i) {
|
||||||
const c = characters.charCodeAt(i)
|
if (!isTokenCharCode(characters.charCodeAt(i))) {
|
||||||
if (c > 0x7f || !isTokenChar(c)) {
|
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://fetch.spec.whatwg.org/#header-name
|
/**
|
||||||
// https://github.com/chromium/chromium/blob/b3d37e6f94f87d59e44662d6078f6a12de845d17/net/http/http_util.cc#L342
|
* @see https://fetch.spec.whatwg.org/#header-name
|
||||||
|
* @param {string} potentialValue
|
||||||
|
*/
|
||||||
function isValidHeaderName (potentialValue) {
|
function isValidHeaderName (potentialValue) {
|
||||||
if (potentialValue.length === 0) {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
return isValidHTTPToken(potentialValue)
|
return isValidHTTPToken(potentialValue)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -100345,11 +100447,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
|
||||||
@ -100694,7 +100815,8 @@ module.exports = {
|
|||||||
urlIsLocal,
|
urlIsLocal,
|
||||||
urlHasHttpsScheme,
|
urlHasHttpsScheme,
|
||||||
urlIsHttpHttpsScheme,
|
urlIsHttpHttpsScheme,
|
||||||
readAllBytes
|
readAllBytes,
|
||||||
|
normalizeMethodRecord
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -101133,12 +101255,10 @@ webidl.converters.ByteString = function (V) {
|
|||||||
// 2. If the value of any element of x is greater than
|
// 2. If the value of any element of x is greater than
|
||||||
// 255, then throw a TypeError.
|
// 255, then throw a TypeError.
|
||||||
for (let index = 0; index < x.length; index++) {
|
for (let index = 0; index < x.length; index++) {
|
||||||
const charCode = x.charCodeAt(index)
|
if (x.charCodeAt(index) > 255) {
|
||||||
|
|
||||||
if (charCode > 255) {
|
|
||||||
throw new TypeError(
|
throw new TypeError(
|
||||||
'Cannot convert argument to a ByteString because the character at ' +
|
'Cannot convert argument to a ByteString because the character at ' +
|
||||||
`index ${index} has a value of ${charCode} which is greater than 255.`
|
`index ${index} has a value of ${x.charCodeAt(index)} which is greater than 255.`
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -102815,6 +102935,349 @@ function cleanRequestHeaders (headers, removeContent, unknownOrigin) {
|
|||||||
module.exports = RedirectHandler
|
module.exports = RedirectHandler
|
||||||
|
|
||||||
|
|
||||||
|
/***/ }),
|
||||||
|
|
||||||
|
/***/ 82286:
|
||||||
|
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
|
||||||
|
|
||||||
|
const assert = __nccwpck_require__(39491)
|
||||||
|
|
||||||
|
const { kRetryHandlerDefaultRetry } = __nccwpck_require__(72785)
|
||||||
|
const { RequestRetryError } = __nccwpck_require__(48045)
|
||||||
|
const { isDisturbed, parseHeaders, parseRangeHeader } = __nccwpck_require__(83983)
|
||||||
|
|
||||||
|
function calculateRetryAfterHeader (retryAfter) {
|
||||||
|
const current = Date.now()
|
||||||
|
const diff = new Date(retryAfter).getTime() - current
|
||||||
|
|
||||||
|
return diff
|
||||||
|
}
|
||||||
|
|
||||||
|
class RetryHandler {
|
||||||
|
constructor (opts, handlers) {
|
||||||
|
const { retryOptions, ...dispatchOpts } = opts
|
||||||
|
const {
|
||||||
|
// Retry scoped
|
||||||
|
retry: retryFn,
|
||||||
|
maxRetries,
|
||||||
|
maxTimeout,
|
||||||
|
minTimeout,
|
||||||
|
timeoutFactor,
|
||||||
|
// Response scoped
|
||||||
|
methods,
|
||||||
|
errorCodes,
|
||||||
|
retryAfter,
|
||||||
|
statusCodes
|
||||||
|
} = retryOptions ?? {}
|
||||||
|
|
||||||
|
this.dispatch = handlers.dispatch
|
||||||
|
this.handler = handlers.handler
|
||||||
|
this.opts = dispatchOpts
|
||||||
|
this.abort = null
|
||||||
|
this.aborted = false
|
||||||
|
this.retryOpts = {
|
||||||
|
retry: retryFn ?? RetryHandler[kRetryHandlerDefaultRetry],
|
||||||
|
retryAfter: retryAfter ?? true,
|
||||||
|
maxTimeout: maxTimeout ?? 30 * 1000, // 30s,
|
||||||
|
timeout: minTimeout ?? 500, // .5s
|
||||||
|
timeoutFactor: timeoutFactor ?? 2,
|
||||||
|
maxRetries: maxRetries ?? 5,
|
||||||
|
// What errors we should retry
|
||||||
|
methods: methods ?? ['GET', 'HEAD', 'OPTIONS', 'PUT', 'DELETE', 'TRACE'],
|
||||||
|
// Indicates which errors to retry
|
||||||
|
statusCodes: statusCodes ?? [500, 502, 503, 504, 429],
|
||||||
|
// List of errors to retry
|
||||||
|
errorCodes: errorCodes ?? [
|
||||||
|
'ECONNRESET',
|
||||||
|
'ECONNREFUSED',
|
||||||
|
'ENOTFOUND',
|
||||||
|
'ENETDOWN',
|
||||||
|
'ENETUNREACH',
|
||||||
|
'EHOSTDOWN',
|
||||||
|
'EHOSTUNREACH',
|
||||||
|
'EPIPE'
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
this.retryCount = 0
|
||||||
|
this.start = 0
|
||||||
|
this.end = null
|
||||||
|
this.etag = null
|
||||||
|
this.resume = null
|
||||||
|
|
||||||
|
// Handle possible onConnect duplication
|
||||||
|
this.handler.onConnect(reason => {
|
||||||
|
this.aborted = true
|
||||||
|
if (this.abort) {
|
||||||
|
this.abort(reason)
|
||||||
|
} else {
|
||||||
|
this.reason = reason
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
onRequestSent () {
|
||||||
|
if (this.handler.onRequestSent) {
|
||||||
|
this.handler.onRequestSent()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onUpgrade (statusCode, headers, socket) {
|
||||||
|
if (this.handler.onUpgrade) {
|
||||||
|
this.handler.onUpgrade(statusCode, headers, socket)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onConnect (abort) {
|
||||||
|
if (this.aborted) {
|
||||||
|
abort(this.reason)
|
||||||
|
} else {
|
||||||
|
this.abort = abort
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onBodySent (chunk) {
|
||||||
|
if (this.handler.onBodySent) return this.handler.onBodySent(chunk)
|
||||||
|
}
|
||||||
|
|
||||||
|
static [kRetryHandlerDefaultRetry] (err, { state, opts }, cb) {
|
||||||
|
const { statusCode, code, headers } = err
|
||||||
|
const { method, retryOptions } = opts
|
||||||
|
const {
|
||||||
|
maxRetries,
|
||||||
|
timeout,
|
||||||
|
maxTimeout,
|
||||||
|
timeoutFactor,
|
||||||
|
statusCodes,
|
||||||
|
errorCodes,
|
||||||
|
methods
|
||||||
|
} = retryOptions
|
||||||
|
let { counter, currentTimeout } = state
|
||||||
|
|
||||||
|
currentTimeout =
|
||||||
|
currentTimeout != null && currentTimeout > 0 ? currentTimeout : timeout
|
||||||
|
|
||||||
|
// Any code that is not a Undici's originated and allowed to retry
|
||||||
|
if (
|
||||||
|
code &&
|
||||||
|
code !== 'UND_ERR_REQ_RETRY' &&
|
||||||
|
code !== 'UND_ERR_SOCKET' &&
|
||||||
|
!errorCodes.includes(code)
|
||||||
|
) {
|
||||||
|
cb(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// If a set of method are provided and the current method is not in the list
|
||||||
|
if (Array.isArray(methods) && !methods.includes(method)) {
|
||||||
|
cb(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// If a set of status code are provided and the current status code is not in the list
|
||||||
|
if (
|
||||||
|
statusCode != null &&
|
||||||
|
Array.isArray(statusCodes) &&
|
||||||
|
!statusCodes.includes(statusCode)
|
||||||
|
) {
|
||||||
|
cb(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// If we reached the max number of retries
|
||||||
|
if (counter > maxRetries) {
|
||||||
|
cb(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
let retryAfterHeader = headers != null && headers['retry-after']
|
||||||
|
if (retryAfterHeader) {
|
||||||
|
retryAfterHeader = Number(retryAfterHeader)
|
||||||
|
retryAfterHeader = isNaN(retryAfterHeader)
|
||||||
|
? calculateRetryAfterHeader(retryAfterHeader)
|
||||||
|
: retryAfterHeader * 1e3 // Retry-After is in seconds
|
||||||
|
}
|
||||||
|
|
||||||
|
const retryTimeout =
|
||||||
|
retryAfterHeader > 0
|
||||||
|
? Math.min(retryAfterHeader, maxTimeout)
|
||||||
|
: Math.min(currentTimeout * timeoutFactor ** counter, maxTimeout)
|
||||||
|
|
||||||
|
state.currentTimeout = retryTimeout
|
||||||
|
|
||||||
|
setTimeout(() => cb(null), retryTimeout)
|
||||||
|
}
|
||||||
|
|
||||||
|
onHeaders (statusCode, rawHeaders, resume, statusMessage) {
|
||||||
|
const headers = parseHeaders(rawHeaders)
|
||||||
|
|
||||||
|
this.retryCount += 1
|
||||||
|
|
||||||
|
if (statusCode >= 300) {
|
||||||
|
this.abort(
|
||||||
|
new RequestRetryError('Request failed', statusCode, {
|
||||||
|
headers,
|
||||||
|
count: this.retryCount
|
||||||
|
})
|
||||||
|
)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// Checkpoint for resume from where we left it
|
||||||
|
if (this.resume != null) {
|
||||||
|
this.resume = null
|
||||||
|
|
||||||
|
if (statusCode !== 206) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
const contentRange = parseRangeHeader(headers['content-range'])
|
||||||
|
// If no content range
|
||||||
|
if (!contentRange) {
|
||||||
|
this.abort(
|
||||||
|
new RequestRetryError('Content-Range mismatch', statusCode, {
|
||||||
|
headers,
|
||||||
|
count: this.retryCount
|
||||||
|
})
|
||||||
|
)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// Let's start with a weak etag check
|
||||||
|
if (this.etag != null && this.etag !== headers.etag) {
|
||||||
|
this.abort(
|
||||||
|
new RequestRetryError('ETag mismatch', statusCode, {
|
||||||
|
headers,
|
||||||
|
count: this.retryCount
|
||||||
|
})
|
||||||
|
)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
const { start, size, end = size } = contentRange
|
||||||
|
|
||||||
|
assert(this.start === start, 'content-range mismatch')
|
||||||
|
assert(this.end == null || this.end === end, 'content-range mismatch')
|
||||||
|
|
||||||
|
this.resume = resume
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.end == null) {
|
||||||
|
if (statusCode === 206) {
|
||||||
|
// First time we receive 206
|
||||||
|
const range = parseRangeHeader(headers['content-range'])
|
||||||
|
|
||||||
|
if (range == null) {
|
||||||
|
return this.handler.onHeaders(
|
||||||
|
statusCode,
|
||||||
|
rawHeaders,
|
||||||
|
resume,
|
||||||
|
statusMessage
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
const { start, size, end = size } = range
|
||||||
|
|
||||||
|
assert(
|
||||||
|
start != null && Number.isFinite(start) && this.start !== start,
|
||||||
|
'content-range mismatch'
|
||||||
|
)
|
||||||
|
assert(Number.isFinite(start))
|
||||||
|
assert(
|
||||||
|
end != null && Number.isFinite(end) && this.end !== end,
|
||||||
|
'invalid content-length'
|
||||||
|
)
|
||||||
|
|
||||||
|
this.start = start
|
||||||
|
this.end = end
|
||||||
|
}
|
||||||
|
|
||||||
|
// We make our best to checkpoint the body for further range headers
|
||||||
|
if (this.end == null) {
|
||||||
|
const contentLength = headers['content-length']
|
||||||
|
this.end = contentLength != null ? Number(contentLength) : null
|
||||||
|
}
|
||||||
|
|
||||||
|
assert(Number.isFinite(this.start))
|
||||||
|
assert(
|
||||||
|
this.end == null || Number.isFinite(this.end),
|
||||||
|
'invalid content-length'
|
||||||
|
)
|
||||||
|
|
||||||
|
this.resume = resume
|
||||||
|
this.etag = headers.etag != null ? headers.etag : null
|
||||||
|
|
||||||
|
return this.handler.onHeaders(
|
||||||
|
statusCode,
|
||||||
|
rawHeaders,
|
||||||
|
resume,
|
||||||
|
statusMessage
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
const err = new RequestRetryError('Request failed', statusCode, {
|
||||||
|
headers,
|
||||||
|
count: this.retryCount
|
||||||
|
})
|
||||||
|
|
||||||
|
this.abort(err)
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
onData (chunk) {
|
||||||
|
this.start += chunk.length
|
||||||
|
|
||||||
|
return this.handler.onData(chunk)
|
||||||
|
}
|
||||||
|
|
||||||
|
onComplete (rawTrailers) {
|
||||||
|
this.retryCount = 0
|
||||||
|
return this.handler.onComplete(rawTrailers)
|
||||||
|
}
|
||||||
|
|
||||||
|
onError (err) {
|
||||||
|
if (this.aborted || isDisturbed(this.opts.body)) {
|
||||||
|
return this.handler.onError(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
this.retryOpts.retry(
|
||||||
|
err,
|
||||||
|
{
|
||||||
|
state: { counter: this.retryCount++, currentTimeout: this.retryAfter },
|
||||||
|
opts: { retryOptions: this.retryOpts, ...this.opts }
|
||||||
|
},
|
||||||
|
onRetry.bind(this)
|
||||||
|
)
|
||||||
|
|
||||||
|
function onRetry (err) {
|
||||||
|
if (err != null || this.aborted || isDisturbed(this.opts.body)) {
|
||||||
|
return this.handler.onError(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.start !== 0) {
|
||||||
|
this.opts = {
|
||||||
|
...this.opts,
|
||||||
|
headers: {
|
||||||
|
...this.opts.headers,
|
||||||
|
range: `bytes=${this.start}-${this.end ?? ''}`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
this.dispatch(this.opts, this)
|
||||||
|
} catch (err) {
|
||||||
|
this.handler.onError(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = RetryHandler
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
|
|
||||||
/***/ 38861:
|
/***/ 38861:
|
||||||
@ -104737,6 +105200,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) {
|
||||||
@ -104744,11 +105210,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 })
|
||||||
@ -104772,7 +105237,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)
|
||||||
|
|||||||
138
package-lock.json
generated
138
package-lock.json
generated
@ -9,32 +9,32 @@
|
|||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/cache": "^3.0.4",
|
"@actions/cache": "^3.2.4",
|
||||||
"@actions/core": "^1.10.0",
|
"@actions/core": "^1.10.0",
|
||||||
"@actions/exec": "^1.0.4",
|
"@actions/exec": "^1.0.4",
|
||||||
"@actions/glob": "^0.4.0",
|
"@actions/glob": "^0.4.0",
|
||||||
"@actions/http-client": "^2.2.0",
|
"@actions/http-client": "^2.2.1",
|
||||||
"@actions/io": "^1.0.2",
|
"@actions/io": "^1.0.2",
|
||||||
"@actions/tool-cache": "^2.0.1",
|
"@actions/tool-cache": "^2.0.1",
|
||||||
"semver": "^7.3.4",
|
"semver": "^7.6.0",
|
||||||
"xmlbuilder2": "^2.4.0"
|
"xmlbuilder2": "^2.4.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/jest": "^29.5.9",
|
"@types/jest": "^29.5.12",
|
||||||
"@types/node": "^20.9.3",
|
"@types/node": "^20.11.24",
|
||||||
"@types/semver": "^7.3.4",
|
"@types/semver": "^7.5.8",
|
||||||
"@typescript-eslint/eslint-plugin": "^5.54.0",
|
"@typescript-eslint/eslint-plugin": "^5.54.0",
|
||||||
"@typescript-eslint/parser": "^5.54.0",
|
"@typescript-eslint/parser": "^5.54.0",
|
||||||
"@vercel/ncc": "^0.38.1",
|
"@vercel/ncc": "^0.38.1",
|
||||||
"eslint": "^8.35.0",
|
"eslint": "^8.57.0",
|
||||||
"eslint-config-prettier": "^8.6.0",
|
"eslint-config-prettier": "^8.6.0",
|
||||||
"eslint-plugin-jest": "^27.2.1",
|
"eslint-plugin-jest": "^27.9.0",
|
||||||
"eslint-plugin-node": "^11.1.0",
|
"eslint-plugin-node": "^11.1.0",
|
||||||
"jest": "^29.7.0",
|
"jest": "^29.7.0",
|
||||||
"jest-circus": "^29.7.0",
|
"jest-circus": "^29.7.0",
|
||||||
"prettier": "^2.8.4",
|
"prettier": "^2.8.4",
|
||||||
"ts-jest": "^29.1.1",
|
"ts-jest": "^29.1.2",
|
||||||
"typescript": "^5.3.2"
|
"typescript": "^5.3.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@aashutoshrathi/word-wrap": {
|
"node_modules/@aashutoshrathi/word-wrap": {
|
||||||
@ -47,9 +47,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@actions/cache": {
|
"node_modules/@actions/cache": {
|
||||||
"version": "3.2.2",
|
"version": "3.2.4",
|
||||||
"resolved": "https://registry.npmjs.org/@actions/cache/-/cache-3.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/@actions/cache/-/cache-3.2.4.tgz",
|
||||||
"integrity": "sha512-6D0Jq5JrLZRQ3VApeQwQkkV20ZZXjXsHNYXd9VjNUdi9E0h93wESpxfMJ2JWLCUCgHNLcfY0v3GjNM+2FdRMlg==",
|
"integrity": "sha512-RuHnwfcDagtX+37s0ZWy7clbOfnZ7AlDJQ7k/9rzt2W4Gnwde3fa/qjSjVuz4vLcLIpc7fUob27CMrqiWZytYA==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/core": "^1.10.0",
|
"@actions/core": "^1.10.0",
|
||||||
"@actions/exec": "^1.0.1",
|
"@actions/exec": "^1.0.1",
|
||||||
@ -59,7 +59,7 @@
|
|||||||
"@azure/abort-controller": "^1.1.0",
|
"@azure/abort-controller": "^1.1.0",
|
||||||
"@azure/ms-rest-js": "^2.6.0",
|
"@azure/ms-rest-js": "^2.6.0",
|
||||||
"@azure/storage-blob": "^12.13.0",
|
"@azure/storage-blob": "^12.13.0",
|
||||||
"semver": "^6.1.0",
|
"semver": "^6.3.1",
|
||||||
"uuid": "^3.3.3"
|
"uuid": "^3.3.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -115,9 +115,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@actions/http-client": {
|
"node_modules/@actions/http-client": {
|
||||||
"version": "2.2.0",
|
"version": "2.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.1.tgz",
|
||||||
"integrity": "sha512-q+epW0trjVUUHboliPb4UF9g2msf+w61b32tAkFEwL/IwP0DQWgbCMM0Hbe3e3WXSKz5VcUXbzJQgy8Hkra/Lg==",
|
"integrity": "sha512-KhC/cZsq7f8I4LfZSJKgCvEwfkE8o1538VoBeoGzokVLLnbFDEAdFD3UhoMklxo2un9NJVBdANOresx7vTHlHw==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"tunnel": "^0.0.6",
|
"tunnel": "^0.0.6",
|
||||||
"undici": "^5.25.4"
|
"undici": "^5.25.4"
|
||||||
@ -1011,9 +1011,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@eslint/eslintrc": {
|
"node_modules/@eslint/eslintrc": {
|
||||||
"version": "2.1.3",
|
"version": "2.1.4",
|
||||||
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
|
||||||
"integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==",
|
"integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ajv": "^6.12.4",
|
"ajv": "^6.12.4",
|
||||||
@ -1034,9 +1034,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@eslint/js": {
|
"node_modules/@eslint/js": {
|
||||||
"version": "8.54.0",
|
"version": "8.57.0",
|
||||||
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.54.0.tgz",
|
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz",
|
||||||
"integrity": "sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ==",
|
"integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||||
@ -1051,13 +1051,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@humanwhocodes/config-array": {
|
"node_modules/@humanwhocodes/config-array": {
|
||||||
"version": "0.11.13",
|
"version": "0.11.14",
|
||||||
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz",
|
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
|
||||||
"integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==",
|
"integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@humanwhocodes/object-schema": "^2.0.1",
|
"@humanwhocodes/object-schema": "^2.0.2",
|
||||||
"debug": "^4.1.1",
|
"debug": "^4.3.1",
|
||||||
"minimatch": "^3.0.5"
|
"minimatch": "^3.0.5"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@ -1078,9 +1078,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@humanwhocodes/object-schema": {
|
"node_modules/@humanwhocodes/object-schema": {
|
||||||
"version": "2.0.1",
|
"version": "2.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz",
|
||||||
"integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==",
|
"integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@istanbuljs/load-nyc-config": {
|
"node_modules/@istanbuljs/load-nyc-config": {
|
||||||
@ -1703,9 +1703,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@types/jest": {
|
"node_modules/@types/jest": {
|
||||||
"version": "29.5.9",
|
"version": "29.5.12",
|
||||||
"resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.9.tgz",
|
"resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz",
|
||||||
"integrity": "sha512-zJeWhqBwVoPm83sP8h1/SVntwWTu5lZbKQGCvBjxQOyEWnKnsaomt2y7SlV4KfwlrHAHHAn00Sh4IAWaIsGOgQ==",
|
"integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"expect": "^29.0.0",
|
"expect": "^29.0.0",
|
||||||
@ -1719,9 +1719,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@types/node": {
|
"node_modules/@types/node": {
|
||||||
"version": "20.9.3",
|
"version": "20.11.24",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.9.3.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.24.tgz",
|
||||||
"integrity": "sha512-nk5wXLAXGBKfrhLB0cyHGbSqopS+nz0BUgZkUQqSHSSgdee0kssp1IAqlQOu333bW+gMNs2QREx7iynm19Abxw==",
|
"integrity": "sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"undici-types": "~5.26.4"
|
"undici-types": "~5.26.4"
|
||||||
}
|
}
|
||||||
@ -1749,9 +1749,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@types/semver": {
|
"node_modules/@types/semver": {
|
||||||
"version": "7.5.6",
|
"version": "7.5.8",
|
||||||
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz",
|
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz",
|
||||||
"integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==",
|
"integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@types/stack-utils": {
|
"node_modules/@types/stack-utils": {
|
||||||
@ -1998,9 +1998,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/acorn": {
|
"node_modules/acorn": {
|
||||||
"version": "8.11.2",
|
"version": "8.11.3",
|
||||||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz",
|
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
|
||||||
"integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==",
|
"integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
"acorn": "bin/acorn"
|
"acorn": "bin/acorn"
|
||||||
@ -2659,16 +2659,16 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/eslint": {
|
"node_modules/eslint": {
|
||||||
"version": "8.54.0",
|
"version": "8.57.0",
|
||||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.54.0.tgz",
|
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz",
|
||||||
"integrity": "sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA==",
|
"integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@eslint-community/eslint-utils": "^4.2.0",
|
"@eslint-community/eslint-utils": "^4.2.0",
|
||||||
"@eslint-community/regexpp": "^4.6.1",
|
"@eslint-community/regexpp": "^4.6.1",
|
||||||
"@eslint/eslintrc": "^2.1.3",
|
"@eslint/eslintrc": "^2.1.4",
|
||||||
"@eslint/js": "8.54.0",
|
"@eslint/js": "8.57.0",
|
||||||
"@humanwhocodes/config-array": "^0.11.13",
|
"@humanwhocodes/config-array": "^0.11.14",
|
||||||
"@humanwhocodes/module-importer": "^1.0.1",
|
"@humanwhocodes/module-importer": "^1.0.1",
|
||||||
"@nodelib/fs.walk": "^1.2.8",
|
"@nodelib/fs.walk": "^1.2.8",
|
||||||
"@ungap/structured-clone": "^1.2.0",
|
"@ungap/structured-clone": "^1.2.0",
|
||||||
@ -2745,9 +2745,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/eslint-plugin-jest": {
|
"node_modules/eslint-plugin-jest": {
|
||||||
"version": "27.6.0",
|
"version": "27.9.0",
|
||||||
"resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.9.0.tgz",
|
||||||
"integrity": "sha512-MTlusnnDMChbElsszJvrwD1dN3x6nZl//s4JD23BxB6MgR66TZlL064su24xEIS3VACfAoHV1vgyMgPw8nkdng==",
|
"integrity": "sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/utils": "^5.10.0"
|
"@typescript-eslint/utils": "^5.10.0"
|
||||||
@ -2756,7 +2756,7 @@
|
|||||||
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
|
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@typescript-eslint/eslint-plugin": "^5.0.0 || ^6.0.0",
|
"@typescript-eslint/eslint-plugin": "^5.0.0 || ^6.0.0 || ^7.0.0",
|
||||||
"eslint": "^7.0.0 || ^8.0.0",
|
"eslint": "^7.0.0 || ^8.0.0",
|
||||||
"jest": "*"
|
"jest": "*"
|
||||||
},
|
},
|
||||||
@ -3263,9 +3263,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/globals": {
|
"node_modules/globals": {
|
||||||
"version": "13.23.0",
|
"version": "13.24.0",
|
||||||
"resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz",
|
"resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
|
||||||
"integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==",
|
"integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"type-fest": "^0.20.2"
|
"type-fest": "^0.20.2"
|
||||||
@ -4958,9 +4958,9 @@
|
|||||||
"integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA=="
|
"integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA=="
|
||||||
},
|
},
|
||||||
"node_modules/semver": {
|
"node_modules/semver": {
|
||||||
"version": "7.5.4",
|
"version": "7.6.0",
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
|
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
|
||||||
"integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
|
"integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"lru-cache": "^6.0.0"
|
"lru-cache": "^6.0.0"
|
||||||
},
|
},
|
||||||
@ -5215,9 +5215,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/ts-jest": {
|
"node_modules/ts-jest": {
|
||||||
"version": "29.1.1",
|
"version": "29.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.2.tgz",
|
||||||
"integrity": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==",
|
"integrity": "sha512-br6GJoH/WUX4pu7FbZXuWGKGNDuU7b8Uj77g/Sp7puZV6EXzuByl6JrECvm0MzVzSTkSHWTihsXt+5XYER5b+g==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"bs-logger": "0.x",
|
"bs-logger": "0.x",
|
||||||
@ -5233,7 +5233,7 @@
|
|||||||
"ts-jest": "cli.js"
|
"ts-jest": "cli.js"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
|
"node": "^16.10.0 || ^18.0.0 || >=20.0.0"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@babel/core": ">=7.0.0-beta.0 <8",
|
"@babel/core": ">=7.0.0-beta.0 <8",
|
||||||
@ -5325,9 +5325,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/typescript": {
|
"node_modules/typescript": {
|
||||||
"version": "5.3.2",
|
"version": "5.3.3",
|
||||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.2.tgz",
|
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz",
|
||||||
"integrity": "sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==",
|
"integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
"tsc": "bin/tsc",
|
"tsc": "bin/tsc",
|
||||||
@ -5338,9 +5338,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/undici": {
|
"node_modules/undici": {
|
||||||
"version": "5.27.2",
|
"version": "5.28.3",
|
||||||
"resolved": "https://registry.npmjs.org/undici/-/undici-5.27.2.tgz",
|
"resolved": "https://registry.npmjs.org/undici/-/undici-5.28.3.tgz",
|
||||||
"integrity": "sha512-iS857PdOEy/y3wlM3yRp+6SNQQ6xU0mmZcwRSriqk+et/cwWAtwmIGf6WkoDN2EK/AMdCO/dfXzIwi+rFMrjjQ==",
|
"integrity": "sha512-3ItfzbrhDlINjaP0duwnNsKpDQk3acHI3gVJ1z4fmwMK31k5G9OVIAMLSIaP6w4FaGkaAkN6zaQO9LUvZ1t7VA==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@fastify/busboy": "^2.0.0"
|
"@fastify/busboy": "^2.0.0"
|
||||||
},
|
},
|
||||||
|
|||||||
20
package.json
20
package.json
@ -26,32 +26,32 @@
|
|||||||
"author": "GitHub",
|
"author": "GitHub",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/cache": "^3.0.4",
|
"@actions/cache": "^3.2.4",
|
||||||
"@actions/core": "^1.10.0",
|
"@actions/core": "^1.10.0",
|
||||||
"@actions/exec": "^1.0.4",
|
"@actions/exec": "^1.0.4",
|
||||||
"@actions/glob": "^0.4.0",
|
"@actions/glob": "^0.4.0",
|
||||||
"@actions/http-client": "^2.2.0",
|
"@actions/http-client": "^2.2.1",
|
||||||
"@actions/io": "^1.0.2",
|
"@actions/io": "^1.0.2",
|
||||||
"@actions/tool-cache": "^2.0.1",
|
"@actions/tool-cache": "^2.0.1",
|
||||||
"semver": "^7.3.4",
|
"semver": "^7.6.0",
|
||||||
"xmlbuilder2": "^2.4.0"
|
"xmlbuilder2": "^2.4.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/jest": "^29.5.9",
|
"@types/jest": "^29.5.12",
|
||||||
"@types/node": "^20.9.3",
|
"@types/node": "^20.11.24",
|
||||||
"@types/semver": "^7.3.4",
|
"@types/semver": "^7.5.8",
|
||||||
"@typescript-eslint/eslint-plugin": "^5.54.0",
|
"@typescript-eslint/eslint-plugin": "^5.54.0",
|
||||||
"@typescript-eslint/parser": "^5.54.0",
|
"@typescript-eslint/parser": "^5.54.0",
|
||||||
"@vercel/ncc": "^0.38.1",
|
"@vercel/ncc": "^0.38.1",
|
||||||
"eslint": "^8.35.0",
|
"eslint": "^8.57.0",
|
||||||
"eslint-config-prettier": "^8.6.0",
|
"eslint-config-prettier": "^8.6.0",
|
||||||
"eslint-plugin-jest": "^27.2.1",
|
"eslint-plugin-jest": "^27.9.0",
|
||||||
"eslint-plugin-node": "^11.1.0",
|
"eslint-plugin-node": "^11.1.0",
|
||||||
"jest": "^29.7.0",
|
"jest": "^29.7.0",
|
||||||
"jest-circus": "^29.7.0",
|
"jest-circus": "^29.7.0",
|
||||||
"prettier": "^2.8.4",
|
"prettier": "^2.8.4",
|
||||||
"ts-jest": "^29.1.1",
|
"ts-jest": "^29.1.2",
|
||||||
"typescript": "^5.3.2"
|
"typescript": "^5.3.3"
|
||||||
},
|
},
|
||||||
"bugs": {
|
"bugs": {
|
||||||
"url": "https://github.com/actions/setup-java/issues"
|
"url": "https://github.com/actions/setup-java/issues"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user