mirror of
https://github.com/actions/setup-node.git
synced 2026-06-27 16:17:45 +00:00
Compare commits
12 Commits
0952db2336
...
1432569335
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1432569335 | ||
|
|
6cf1d17ac0 | ||
|
|
92309f6248 | ||
|
|
f785ab5716 | ||
|
|
1a4442cacd | ||
|
|
5209434f1a | ||
|
|
6e9e44895f | ||
|
|
e52912ef25 | ||
|
|
ac16ae42d7 | ||
|
|
5a8d9111e3 | ||
|
|
9e956a555c | ||
|
|
7da2a7eb0c |
6
.github/workflows/e2e-cache.yml
vendored
6
.github/workflows/e2e-cache.yml
vendored
@ -98,8 +98,8 @@ jobs:
|
||||
run: __tests__/verify-node.sh "${{ matrix.node-version }}"
|
||||
shell: bash
|
||||
|
||||
node-yarn2-depencies-caching:
|
||||
name: Test yarn 2 (Node ${{ matrix.node-version}}, ${{ matrix.os }})
|
||||
node-yarn3-depencies-caching:
|
||||
name: Test yarn 3 (Node ${{ matrix.node-version}}, ${{ matrix.os }})
|
||||
runs-on: ${{ matrix.os }}
|
||||
env:
|
||||
YARN_ENABLE_IMMUTABLE_INSTALLS: false
|
||||
@ -111,7 +111,7 @@ jobs:
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Update yarn
|
||||
run: yarn set version berry
|
||||
run: yarn set version 3.6.4
|
||||
- name: Yarn version
|
||||
run: yarn --version
|
||||
- name: Generate simple .yarnrc.yml
|
||||
|
||||
BIN
.licenses/npm/@types/node-fetch.dep.yml
generated
BIN
.licenses/npm/@types/node-fetch.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.
BIN
.licenses/npm/undici-types.dep.yml
generated
Normal file
BIN
.licenses/npm/undici-types.dep.yml
generated
Normal file
Binary file not shown.
BIN
.licenses/npm/undici.dep.yml
generated
BIN
.licenses/npm/undici.dep.yml
generated
Binary file not shown.
@ -357,6 +357,41 @@ describe('setup-node', () => {
|
||||
expect(cnSpy).toHaveBeenCalledWith(`::error::${errMsg}${osm.EOL}`);
|
||||
});
|
||||
|
||||
it('reports when download failed but version exists', async () => {
|
||||
os.platform = 'linux';
|
||||
os.arch = 'x64';
|
||||
|
||||
// a version which is not in the manifest but is in node dist
|
||||
const versionSpec = '11.15.0';
|
||||
|
||||
inputs['node-version'] = versionSpec;
|
||||
inputs['always-auth'] = false;
|
||||
inputs['token'] = 'faketoken';
|
||||
|
||||
// ... but not in the local cache
|
||||
findSpy.mockImplementation(() => '');
|
||||
|
||||
dlSpy.mockImplementationOnce(async () => {
|
||||
throw new tc.HTTPError(404);
|
||||
});
|
||||
|
||||
await main.run();
|
||||
|
||||
expect(getManifestSpy).toHaveBeenCalled();
|
||||
expect(logSpy).toHaveBeenCalledWith(
|
||||
`Attempting to download ${versionSpec}...`
|
||||
);
|
||||
expect(logSpy).toHaveBeenCalledWith(
|
||||
'Not found in manifest. Falling back to download directly from Node'
|
||||
);
|
||||
expect(dlSpy).toHaveBeenCalled();
|
||||
expect(warningSpy).toHaveBeenCalledWith(
|
||||
`Node version ${versionSpec} for platform ${os.platform} and architecture ${os.arch} was found but failed to download. ` +
|
||||
'This usually happens when downloadable binaries are not fully updated at https://nodejs.org/. ' +
|
||||
'To resolve this issue you may either fall back to the older version or try again later.'
|
||||
);
|
||||
});
|
||||
|
||||
it('acquires specified architecture of node', async () => {
|
||||
for (const {arch, version, osSpec} of [
|
||||
{arch: 'x86', version: '12.16.2', osSpec: 'win32'},
|
||||
|
||||
113
dist/cache-save/index.js
vendored
113
dist/cache-save/index.js
vendored
@ -55567,6 +55567,10 @@ class StreamHandler extends AsyncResource {
|
||||
{ callback, body: res, contentType, statusCode, statusMessage, headers }
|
||||
)
|
||||
} else {
|
||||
if (factory === null) {
|
||||
return
|
||||
}
|
||||
|
||||
res = this.runInAsyncScope(factory, null, {
|
||||
statusCode,
|
||||
headers,
|
||||
@ -55615,7 +55619,7 @@ class StreamHandler extends AsyncResource {
|
||||
onData (chunk) {
|
||||
const { res } = this
|
||||
|
||||
return res.write(chunk)
|
||||
return res ? res.write(chunk) : true
|
||||
}
|
||||
|
||||
onComplete (trailers) {
|
||||
@ -55623,6 +55627,10 @@ class StreamHandler extends AsyncResource {
|
||||
|
||||
removeSignal(this)
|
||||
|
||||
if (!res) {
|
||||
return
|
||||
}
|
||||
|
||||
this.trailers = util.parseHeaders(trailers)
|
||||
|
||||
res.end()
|
||||
@ -56079,7 +56087,7 @@ function consumeEnd (consume) {
|
||||
pos += buf.byteLength
|
||||
}
|
||||
|
||||
resolve(dst)
|
||||
resolve(dst.buffer)
|
||||
} else if (type === 'blob') {
|
||||
if (!Blob) {
|
||||
Blob = (__nccwpck_require__(4300).Blob)
|
||||
@ -57451,6 +57459,7 @@ module.exports = {
|
||||
|
||||
const assert = __nccwpck_require__(9491)
|
||||
const net = __nccwpck_require__(1808)
|
||||
const http = __nccwpck_require__(3685)
|
||||
const { pipeline } = __nccwpck_require__(2781)
|
||||
const util = __nccwpck_require__(3983)
|
||||
const timers = __nccwpck_require__(9459)
|
||||
@ -57538,6 +57547,7 @@ const {
|
||||
HTTP2_HEADER_AUTHORITY,
|
||||
HTTP2_HEADER_METHOD,
|
||||
HTTP2_HEADER_PATH,
|
||||
HTTP2_HEADER_SCHEME,
|
||||
HTTP2_HEADER_CONTENT_LENGTH,
|
||||
HTTP2_HEADER_EXPECT,
|
||||
HTTP2_HEADER_STATUS
|
||||
@ -57714,7 +57724,7 @@ class Client extends DispatcherBase {
|
||||
this[kConnector] = connect
|
||||
this[kSocket] = null
|
||||
this[kPipelining] = pipelining != null ? pipelining : 1
|
||||
this[kMaxHeadersSize] = maxHeaderSize || 16384
|
||||
this[kMaxHeadersSize] = maxHeaderSize || http.maxHeaderSize
|
||||
this[kKeepAliveDefaultTimeout] = keepAliveTimeout == null ? 4e3 : keepAliveTimeout
|
||||
this[kKeepAliveMaxTimeout] = keepAliveMaxTimeout == null ? 600e3 : keepAliveMaxTimeout
|
||||
this[kKeepAliveTimeoutThreshold] = keepAliveTimeoutThreshold == null ? 1e3 : keepAliveTimeoutThreshold
|
||||
@ -58513,7 +58523,9 @@ function onParserTimeout (parser) {
|
||||
|
||||
function onSocketReadable () {
|
||||
const { [kParser]: parser } = this
|
||||
parser.readMore()
|
||||
if (parser) {
|
||||
parser.readMore()
|
||||
}
|
||||
}
|
||||
|
||||
function onSocketError (err) {
|
||||
@ -59134,7 +59146,7 @@ function writeH2 (client, session, request) {
|
||||
const h2State = client[kHTTP2SessionState]
|
||||
|
||||
headers[HTTP2_HEADER_AUTHORITY] = host || client[kHost]
|
||||
headers[HTTP2_HEADER_PATH] = path
|
||||
headers[HTTP2_HEADER_METHOD] = method
|
||||
|
||||
if (method === 'CONNECT') {
|
||||
session.ref()
|
||||
@ -59161,10 +59173,14 @@ function writeH2 (client, session, request) {
|
||||
})
|
||||
|
||||
return true
|
||||
} else {
|
||||
headers[HTTP2_HEADER_METHOD] = method
|
||||
}
|
||||
|
||||
// https://tools.ietf.org/html/rfc7540#section-8.3
|
||||
// :path and :scheme headers must be omited when sending CONNECT
|
||||
|
||||
headers[HTTP2_HEADER_PATH] = path
|
||||
headers[HTTP2_HEADER_SCHEME] = 'https'
|
||||
|
||||
// https://tools.ietf.org/html/rfc7231#section-4.3.1
|
||||
// https://tools.ietf.org/html/rfc7231#section-4.3.2
|
||||
// https://tools.ietf.org/html/rfc7231#section-4.3.5
|
||||
@ -59301,6 +59317,7 @@ function writeH2 (client, session, request) {
|
||||
stream.cork()
|
||||
stream.write(body)
|
||||
stream.uncork()
|
||||
stream.end()
|
||||
request.onBodySent(body)
|
||||
request.onRequestSent()
|
||||
} else if (util.isBlobLike(body)) {
|
||||
@ -59535,13 +59552,17 @@ async function writeIterable ({ h2stream, body, client, request, socket, content
|
||||
throw socket[kError]
|
||||
}
|
||||
|
||||
if (!h2stream.write(chunk)) {
|
||||
const res = h2stream.write(chunk)
|
||||
request.onBodySent(chunk)
|
||||
if (!res) {
|
||||
await waitForDrain()
|
||||
}
|
||||
}
|
||||
} catch (err) {
|
||||
h2stream.destroy(err)
|
||||
} finally {
|
||||
request.onRequestSent()
|
||||
h2stream.end()
|
||||
h2stream
|
||||
.off('close', onDrain)
|
||||
.off('drain', onDrain)
|
||||
@ -59754,11 +59775,13 @@ class CompatFinalizer {
|
||||
}
|
||||
|
||||
register (dispatcher, key) {
|
||||
dispatcher.on('disconnect', () => {
|
||||
if (dispatcher[kConnected] === 0 && dispatcher[kSize] === 0) {
|
||||
this.finalizer(key)
|
||||
}
|
||||
})
|
||||
if (dispatcher.on) {
|
||||
dispatcher.on('disconnect', () => {
|
||||
if (dispatcher[kConnected] === 0 && dispatcher[kSize] === 0) {
|
||||
this.finalizer(key)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -61424,7 +61447,8 @@ function processHeader (request, key, val, skipAppend = false) {
|
||||
key.toLowerCase() === 'content-type'
|
||||
) {
|
||||
request.contentType = val
|
||||
request.headers += processHeaderValue(key, val)
|
||||
if (skipAppend) request.headers[key] = processHeaderValue(key, val, skipAppend)
|
||||
else request.headers += processHeaderValue(key, val)
|
||||
} else if (
|
||||
key.length === 17 &&
|
||||
key.toLowerCase() === 'transfer-encoding'
|
||||
@ -65035,7 +65059,7 @@ class Fetch extends EE {
|
||||
}
|
||||
|
||||
// https://fetch.spec.whatwg.org/#fetch-method
|
||||
async function fetch (input, init = {}) {
|
||||
function fetch (input, init = {}) {
|
||||
webidl.argumentLengthCheck(arguments, 1, { header: 'globalThis.fetch' })
|
||||
|
||||
// 1. Let p be a new promise.
|
||||
@ -65118,7 +65142,7 @@ async function fetch (input, init = {}) {
|
||||
const processResponse = (response) => {
|
||||
// 1. If locallyAborted is true, terminate these substeps.
|
||||
if (locallyAborted) {
|
||||
return
|
||||
return Promise.resolve()
|
||||
}
|
||||
|
||||
// 2. If response’s aborted flag is set, then:
|
||||
@ -65131,7 +65155,7 @@ async function fetch (input, init = {}) {
|
||||
// deserializedError.
|
||||
|
||||
abortFetch(p, request, responseObject, controller.serializedAbortReason)
|
||||
return
|
||||
return Promise.resolve()
|
||||
}
|
||||
|
||||
// 3. If response is a network error, then reject p with a TypeError
|
||||
@ -65140,7 +65164,7 @@ async function fetch (input, init = {}) {
|
||||
p.reject(
|
||||
Object.assign(new TypeError('fetch failed'), { cause: response.error })
|
||||
)
|
||||
return
|
||||
return Promise.resolve()
|
||||
}
|
||||
|
||||
// 4. Set responseObject to the result of creating a Response object,
|
||||
@ -65690,13 +65714,13 @@ async function mainFetch (fetchParams, recursive = false) {
|
||||
|
||||
// https://fetch.spec.whatwg.org/#concept-scheme-fetch
|
||||
// given a fetch params fetchParams
|
||||
async function schemeFetch (fetchParams) {
|
||||
function schemeFetch (fetchParams) {
|
||||
// Note: since the connection is destroyed on redirect, which sets fetchParams to a
|
||||
// cancelled state, we do not want this condition to trigger *unless* there have been
|
||||
// no redirects. See https://github.com/nodejs/undici/issues/1776
|
||||
// 1. If fetchParams is canceled, then return the appropriate network error for fetchParams.
|
||||
if (isCancelled(fetchParams) && fetchParams.request.redirectCount === 0) {
|
||||
return makeAppropriateNetworkError(fetchParams)
|
||||
return Promise.resolve(makeAppropriateNetworkError(fetchParams))
|
||||
}
|
||||
|
||||
// 2. Let request be fetchParams’s request.
|
||||
@ -65712,7 +65736,7 @@ async function schemeFetch (fetchParams) {
|
||||
// and body is the empty byte sequence as a body.
|
||||
|
||||
// Otherwise, return a network error.
|
||||
return makeNetworkError('about scheme is not supported')
|
||||
return Promise.resolve(makeNetworkError('about scheme is not supported'))
|
||||
}
|
||||
case 'blob:': {
|
||||
if (!resolveObjectURL) {
|
||||
@ -65725,7 +65749,7 @@ async function schemeFetch (fetchParams) {
|
||||
// https://github.com/web-platform-tests/wpt/blob/7b0ebaccc62b566a1965396e5be7bb2bc06f841f/FileAPI/url/resources/fetch-tests.js#L52-L56
|
||||
// Buffer.resolveObjectURL does not ignore URL queries.
|
||||
if (blobURLEntry.search.length !== 0) {
|
||||
return makeNetworkError('NetworkError when attempting to fetch resource.')
|
||||
return Promise.resolve(makeNetworkError('NetworkError when attempting to fetch resource.'))
|
||||
}
|
||||
|
||||
const blobURLEntryObject = resolveObjectURL(blobURLEntry.toString())
|
||||
@ -65733,7 +65757,7 @@ async function schemeFetch (fetchParams) {
|
||||
// 2. If request’s method is not `GET`, blobURLEntry is null, or blobURLEntry’s
|
||||
// object is not a Blob object, then return a network error.
|
||||
if (request.method !== 'GET' || !isBlobLike(blobURLEntryObject)) {
|
||||
return makeNetworkError('invalid method')
|
||||
return Promise.resolve(makeNetworkError('invalid method'))
|
||||
}
|
||||
|
||||
// 3. Let bodyWithType be the result of safely extracting blobURLEntry’s object.
|
||||
@ -65760,7 +65784,7 @@ async function schemeFetch (fetchParams) {
|
||||
|
||||
response.body = body
|
||||
|
||||
return response
|
||||
return Promise.resolve(response)
|
||||
}
|
||||
case 'data:': {
|
||||
// 1. Let dataURLStruct be the result of running the
|
||||
@ -65771,7 +65795,7 @@ async function schemeFetch (fetchParams) {
|
||||
// 2. If dataURLStruct is failure, then return a
|
||||
// network error.
|
||||
if (dataURLStruct === 'failure') {
|
||||
return makeNetworkError('failed to fetch the data URL')
|
||||
return Promise.resolve(makeNetworkError('failed to fetch the data URL'))
|
||||
}
|
||||
|
||||
// 3. Let mimeType be dataURLStruct’s MIME type, serialized.
|
||||
@ -65780,28 +65804,28 @@ async function schemeFetch (fetchParams) {
|
||||
// 4. Return a response whose status message is `OK`,
|
||||
// header list is « (`Content-Type`, mimeType) »,
|
||||
// and body is dataURLStruct’s body as a body.
|
||||
return makeResponse({
|
||||
return Promise.resolve(makeResponse({
|
||||
statusText: 'OK',
|
||||
headersList: [
|
||||
['content-type', { name: 'Content-Type', value: mimeType }]
|
||||
],
|
||||
body: safelyExtractBody(dataURLStruct.body)[0]
|
||||
})
|
||||
}))
|
||||
}
|
||||
case 'file:': {
|
||||
// For now, unfortunate as it is, file URLs are left as an exercise for the reader.
|
||||
// When in doubt, return a network error.
|
||||
return makeNetworkError('not implemented... yet...')
|
||||
return Promise.resolve(makeNetworkError('not implemented... yet...'))
|
||||
}
|
||||
case 'http:':
|
||||
case 'https:': {
|
||||
// Return the result of running HTTP fetch given fetchParams.
|
||||
|
||||
return await httpFetch(fetchParams)
|
||||
return httpFetch(fetchParams)
|
||||
.catch((err) => makeNetworkError(err))
|
||||
}
|
||||
default: {
|
||||
return makeNetworkError('unknown scheme')
|
||||
return Promise.resolve(makeNetworkError('unknown scheme'))
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -65820,7 +65844,7 @@ function finalizeResponse (fetchParams, response) {
|
||||
}
|
||||
|
||||
// https://fetch.spec.whatwg.org/#fetch-finale
|
||||
async function fetchFinale (fetchParams, response) {
|
||||
function fetchFinale (fetchParams, response) {
|
||||
// 1. If response is a network error, then:
|
||||
if (response.type === 'error') {
|
||||
// 1. Set response’s URL list to « fetchParams’s request’s URL list[0] ».
|
||||
@ -65904,8 +65928,9 @@ async function fetchFinale (fetchParams, response) {
|
||||
} else {
|
||||
// 4. Otherwise, fully read response’s body given processBody, processBodyError,
|
||||
// and fetchParams’s task destination.
|
||||
await fullyReadBody(response.body, processBody, processBodyError)
|
||||
return fullyReadBody(response.body, processBody, processBodyError)
|
||||
}
|
||||
return Promise.resolve()
|
||||
}
|
||||
}
|
||||
|
||||
@ -66013,7 +66038,7 @@ async function httpFetch (fetchParams) {
|
||||
}
|
||||
|
||||
// https://fetch.spec.whatwg.org/#http-redirect-fetch
|
||||
async function httpRedirectFetch (fetchParams, response) {
|
||||
function httpRedirectFetch (fetchParams, response) {
|
||||
// 1. Let request be fetchParams’s request.
|
||||
const request = fetchParams.request
|
||||
|
||||
@ -66039,18 +66064,18 @@ async function httpRedirectFetch (fetchParams, response) {
|
||||
}
|
||||
} catch (err) {
|
||||
// 5. If locationURL is failure, then return a network error.
|
||||
return makeNetworkError(err)
|
||||
return Promise.resolve(makeNetworkError(err))
|
||||
}
|
||||
|
||||
// 6. If locationURL’s scheme is not an HTTP(S) scheme, then return a network
|
||||
// error.
|
||||
if (!urlIsHttpHttpsScheme(locationURL)) {
|
||||
return makeNetworkError('URL scheme must be a HTTP(S) scheme')
|
||||
return Promise.resolve(makeNetworkError('URL scheme must be a HTTP(S) scheme'))
|
||||
}
|
||||
|
||||
// 7. If request’s redirect count is 20, then return a network error.
|
||||
if (request.redirectCount === 20) {
|
||||
return makeNetworkError('redirect count exceeded')
|
||||
return Promise.resolve(makeNetworkError('redirect count exceeded'))
|
||||
}
|
||||
|
||||
// 8. Increase request’s redirect count by 1.
|
||||
@ -66064,7 +66089,7 @@ async function httpRedirectFetch (fetchParams, response) {
|
||||
(locationURL.username || locationURL.password) &&
|
||||
!sameOrigin(request, locationURL)
|
||||
) {
|
||||
return makeNetworkError('cross origin not allowed for request mode "cors"')
|
||||
return Promise.resolve(makeNetworkError('cross origin not allowed for request mode "cors"'))
|
||||
}
|
||||
|
||||
// 10. If request’s response tainting is "cors" and locationURL includes
|
||||
@ -66073,9 +66098,9 @@ async function httpRedirectFetch (fetchParams, response) {
|
||||
request.responseTainting === 'cors' &&
|
||||
(locationURL.username || locationURL.password)
|
||||
) {
|
||||
return makeNetworkError(
|
||||
return Promise.resolve(makeNetworkError(
|
||||
'URL cannot contain credentials for request mode "cors"'
|
||||
)
|
||||
))
|
||||
}
|
||||
|
||||
// 11. If actualResponse’s status is not 303, request’s body is non-null,
|
||||
@ -66085,7 +66110,7 @@ async function httpRedirectFetch (fetchParams, response) {
|
||||
request.body != null &&
|
||||
request.body.source == null
|
||||
) {
|
||||
return makeNetworkError()
|
||||
return Promise.resolve(makeNetworkError())
|
||||
}
|
||||
|
||||
// 12. If one of the following is true
|
||||
@ -66114,6 +66139,10 @@ async function httpRedirectFetch (fetchParams, response) {
|
||||
if (!sameOrigin(requestCurrentURL(request), locationURL)) {
|
||||
// https://fetch.spec.whatwg.org/#cors-non-wildcard-request-header-name
|
||||
request.headersList.delete('authorization')
|
||||
|
||||
// "Cookie" and "Host" are forbidden request-headers, which undici doesn't implement.
|
||||
request.headersList.delete('cookie')
|
||||
request.headersList.delete('host')
|
||||
}
|
||||
|
||||
// 14. If request’s body is non-null, then set request’s body to the first return
|
||||
@ -66258,7 +66287,7 @@ async function httpNetworkOrCacheFetch (
|
||||
// user agents should append `User-Agent`/default `User-Agent` value to
|
||||
// httpRequest’s header list.
|
||||
if (!httpRequest.headersList.contains('user-agent')) {
|
||||
httpRequest.headersList.append('user-agent', 'undici')
|
||||
httpRequest.headersList.append('user-agent', typeof esbuildDetection === 'undefined' ? 'undici' : 'node')
|
||||
}
|
||||
|
||||
// 15. If httpRequest’s cache mode is "default" and httpRequest’s header
|
||||
@ -66320,6 +66349,8 @@ async function httpNetworkOrCacheFetch (
|
||||
}
|
||||
}
|
||||
|
||||
httpRequest.headersList.delete('host')
|
||||
|
||||
// 20. If includeCredentials is true, then:
|
||||
if (includeCredentials) {
|
||||
// 1. If the user agent is not configured to block cookies for httpRequest
|
||||
|
||||
203
dist/setup/index.js
vendored
203
dist/setup/index.js
vendored
@ -64350,6 +64350,10 @@ class StreamHandler extends AsyncResource {
|
||||
{ callback, body: res, contentType, statusCode, statusMessage, headers }
|
||||
)
|
||||
} else {
|
||||
if (factory === null) {
|
||||
return
|
||||
}
|
||||
|
||||
res = this.runInAsyncScope(factory, null, {
|
||||
statusCode,
|
||||
headers,
|
||||
@ -64398,7 +64402,7 @@ class StreamHandler extends AsyncResource {
|
||||
onData (chunk) {
|
||||
const { res } = this
|
||||
|
||||
return res.write(chunk)
|
||||
return res ? res.write(chunk) : true
|
||||
}
|
||||
|
||||
onComplete (trailers) {
|
||||
@ -64406,6 +64410,10 @@ class StreamHandler extends AsyncResource {
|
||||
|
||||
removeSignal(this)
|
||||
|
||||
if (!res) {
|
||||
return
|
||||
}
|
||||
|
||||
this.trailers = util.parseHeaders(trailers)
|
||||
|
||||
res.end()
|
||||
@ -64862,7 +64870,7 @@ function consumeEnd (consume) {
|
||||
pos += buf.byteLength
|
||||
}
|
||||
|
||||
resolve(dst)
|
||||
resolve(dst.buffer)
|
||||
} else if (type === 'blob') {
|
||||
if (!Blob) {
|
||||
Blob = (__nccwpck_require__(4300).Blob)
|
||||
@ -66234,6 +66242,7 @@ module.exports = {
|
||||
|
||||
const assert = __nccwpck_require__(9491)
|
||||
const net = __nccwpck_require__(1808)
|
||||
const http = __nccwpck_require__(3685)
|
||||
const { pipeline } = __nccwpck_require__(2781)
|
||||
const util = __nccwpck_require__(3983)
|
||||
const timers = __nccwpck_require__(9459)
|
||||
@ -66321,6 +66330,7 @@ const {
|
||||
HTTP2_HEADER_AUTHORITY,
|
||||
HTTP2_HEADER_METHOD,
|
||||
HTTP2_HEADER_PATH,
|
||||
HTTP2_HEADER_SCHEME,
|
||||
HTTP2_HEADER_CONTENT_LENGTH,
|
||||
HTTP2_HEADER_EXPECT,
|
||||
HTTP2_HEADER_STATUS
|
||||
@ -66497,7 +66507,7 @@ class Client extends DispatcherBase {
|
||||
this[kConnector] = connect
|
||||
this[kSocket] = null
|
||||
this[kPipelining] = pipelining != null ? pipelining : 1
|
||||
this[kMaxHeadersSize] = maxHeaderSize || 16384
|
||||
this[kMaxHeadersSize] = maxHeaderSize || http.maxHeaderSize
|
||||
this[kKeepAliveDefaultTimeout] = keepAliveTimeout == null ? 4e3 : keepAliveTimeout
|
||||
this[kKeepAliveMaxTimeout] = keepAliveMaxTimeout == null ? 600e3 : keepAliveMaxTimeout
|
||||
this[kKeepAliveTimeoutThreshold] = keepAliveTimeoutThreshold == null ? 1e3 : keepAliveTimeoutThreshold
|
||||
@ -67296,7 +67306,9 @@ function onParserTimeout (parser) {
|
||||
|
||||
function onSocketReadable () {
|
||||
const { [kParser]: parser } = this
|
||||
parser.readMore()
|
||||
if (parser) {
|
||||
parser.readMore()
|
||||
}
|
||||
}
|
||||
|
||||
function onSocketError (err) {
|
||||
@ -67917,7 +67929,7 @@ function writeH2 (client, session, request) {
|
||||
const h2State = client[kHTTP2SessionState]
|
||||
|
||||
headers[HTTP2_HEADER_AUTHORITY] = host || client[kHost]
|
||||
headers[HTTP2_HEADER_PATH] = path
|
||||
headers[HTTP2_HEADER_METHOD] = method
|
||||
|
||||
if (method === 'CONNECT') {
|
||||
session.ref()
|
||||
@ -67944,10 +67956,14 @@ function writeH2 (client, session, request) {
|
||||
})
|
||||
|
||||
return true
|
||||
} else {
|
||||
headers[HTTP2_HEADER_METHOD] = method
|
||||
}
|
||||
|
||||
// https://tools.ietf.org/html/rfc7540#section-8.3
|
||||
// :path and :scheme headers must be omited when sending CONNECT
|
||||
|
||||
headers[HTTP2_HEADER_PATH] = path
|
||||
headers[HTTP2_HEADER_SCHEME] = 'https'
|
||||
|
||||
// https://tools.ietf.org/html/rfc7231#section-4.3.1
|
||||
// https://tools.ietf.org/html/rfc7231#section-4.3.2
|
||||
// https://tools.ietf.org/html/rfc7231#section-4.3.5
|
||||
@ -68084,6 +68100,7 @@ function writeH2 (client, session, request) {
|
||||
stream.cork()
|
||||
stream.write(body)
|
||||
stream.uncork()
|
||||
stream.end()
|
||||
request.onBodySent(body)
|
||||
request.onRequestSent()
|
||||
} else if (util.isBlobLike(body)) {
|
||||
@ -68318,13 +68335,17 @@ async function writeIterable ({ h2stream, body, client, request, socket, content
|
||||
throw socket[kError]
|
||||
}
|
||||
|
||||
if (!h2stream.write(chunk)) {
|
||||
const res = h2stream.write(chunk)
|
||||
request.onBodySent(chunk)
|
||||
if (!res) {
|
||||
await waitForDrain()
|
||||
}
|
||||
}
|
||||
} catch (err) {
|
||||
h2stream.destroy(err)
|
||||
} finally {
|
||||
request.onRequestSent()
|
||||
h2stream.end()
|
||||
h2stream
|
||||
.off('close', onDrain)
|
||||
.off('drain', onDrain)
|
||||
@ -68537,11 +68558,13 @@ class CompatFinalizer {
|
||||
}
|
||||
|
||||
register (dispatcher, key) {
|
||||
dispatcher.on('disconnect', () => {
|
||||
if (dispatcher[kConnected] === 0 && dispatcher[kSize] === 0) {
|
||||
this.finalizer(key)
|
||||
}
|
||||
})
|
||||
if (dispatcher.on) {
|
||||
dispatcher.on('disconnect', () => {
|
||||
if (dispatcher[kConnected] === 0 && dispatcher[kSize] === 0) {
|
||||
this.finalizer(key)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -70207,7 +70230,8 @@ function processHeader (request, key, val, skipAppend = false) {
|
||||
key.toLowerCase() === 'content-type'
|
||||
) {
|
||||
request.contentType = val
|
||||
request.headers += processHeaderValue(key, val)
|
||||
if (skipAppend) request.headers[key] = processHeaderValue(key, val, skipAppend)
|
||||
else request.headers += processHeaderValue(key, val)
|
||||
} else if (
|
||||
key.length === 17 &&
|
||||
key.toLowerCase() === 'transfer-encoding'
|
||||
@ -73818,7 +73842,7 @@ class Fetch extends EE {
|
||||
}
|
||||
|
||||
// https://fetch.spec.whatwg.org/#fetch-method
|
||||
async function fetch (input, init = {}) {
|
||||
function fetch (input, init = {}) {
|
||||
webidl.argumentLengthCheck(arguments, 1, { header: 'globalThis.fetch' })
|
||||
|
||||
// 1. Let p be a new promise.
|
||||
@ -73901,7 +73925,7 @@ async function fetch (input, init = {}) {
|
||||
const processResponse = (response) => {
|
||||
// 1. If locallyAborted is true, terminate these substeps.
|
||||
if (locallyAborted) {
|
||||
return
|
||||
return Promise.resolve()
|
||||
}
|
||||
|
||||
// 2. If response’s aborted flag is set, then:
|
||||
@ -73914,7 +73938,7 @@ async function fetch (input, init = {}) {
|
||||
// deserializedError.
|
||||
|
||||
abortFetch(p, request, responseObject, controller.serializedAbortReason)
|
||||
return
|
||||
return Promise.resolve()
|
||||
}
|
||||
|
||||
// 3. If response is a network error, then reject p with a TypeError
|
||||
@ -73923,7 +73947,7 @@ async function fetch (input, init = {}) {
|
||||
p.reject(
|
||||
Object.assign(new TypeError('fetch failed'), { cause: response.error })
|
||||
)
|
||||
return
|
||||
return Promise.resolve()
|
||||
}
|
||||
|
||||
// 4. Set responseObject to the result of creating a Response object,
|
||||
@ -74473,13 +74497,13 @@ async function mainFetch (fetchParams, recursive = false) {
|
||||
|
||||
// https://fetch.spec.whatwg.org/#concept-scheme-fetch
|
||||
// given a fetch params fetchParams
|
||||
async function schemeFetch (fetchParams) {
|
||||
function schemeFetch (fetchParams) {
|
||||
// Note: since the connection is destroyed on redirect, which sets fetchParams to a
|
||||
// cancelled state, we do not want this condition to trigger *unless* there have been
|
||||
// no redirects. See https://github.com/nodejs/undici/issues/1776
|
||||
// 1. If fetchParams is canceled, then return the appropriate network error for fetchParams.
|
||||
if (isCancelled(fetchParams) && fetchParams.request.redirectCount === 0) {
|
||||
return makeAppropriateNetworkError(fetchParams)
|
||||
return Promise.resolve(makeAppropriateNetworkError(fetchParams))
|
||||
}
|
||||
|
||||
// 2. Let request be fetchParams’s request.
|
||||
@ -74495,7 +74519,7 @@ async function schemeFetch (fetchParams) {
|
||||
// and body is the empty byte sequence as a body.
|
||||
|
||||
// Otherwise, return a network error.
|
||||
return makeNetworkError('about scheme is not supported')
|
||||
return Promise.resolve(makeNetworkError('about scheme is not supported'))
|
||||
}
|
||||
case 'blob:': {
|
||||
if (!resolveObjectURL) {
|
||||
@ -74508,7 +74532,7 @@ async function schemeFetch (fetchParams) {
|
||||
// https://github.com/web-platform-tests/wpt/blob/7b0ebaccc62b566a1965396e5be7bb2bc06f841f/FileAPI/url/resources/fetch-tests.js#L52-L56
|
||||
// Buffer.resolveObjectURL does not ignore URL queries.
|
||||
if (blobURLEntry.search.length !== 0) {
|
||||
return makeNetworkError('NetworkError when attempting to fetch resource.')
|
||||
return Promise.resolve(makeNetworkError('NetworkError when attempting to fetch resource.'))
|
||||
}
|
||||
|
||||
const blobURLEntryObject = resolveObjectURL(blobURLEntry.toString())
|
||||
@ -74516,7 +74540,7 @@ async function schemeFetch (fetchParams) {
|
||||
// 2. If request’s method is not `GET`, blobURLEntry is null, or blobURLEntry’s
|
||||
// object is not a Blob object, then return a network error.
|
||||
if (request.method !== 'GET' || !isBlobLike(blobURLEntryObject)) {
|
||||
return makeNetworkError('invalid method')
|
||||
return Promise.resolve(makeNetworkError('invalid method'))
|
||||
}
|
||||
|
||||
// 3. Let bodyWithType be the result of safely extracting blobURLEntry’s object.
|
||||
@ -74543,7 +74567,7 @@ async function schemeFetch (fetchParams) {
|
||||
|
||||
response.body = body
|
||||
|
||||
return response
|
||||
return Promise.resolve(response)
|
||||
}
|
||||
case 'data:': {
|
||||
// 1. Let dataURLStruct be the result of running the
|
||||
@ -74554,7 +74578,7 @@ async function schemeFetch (fetchParams) {
|
||||
// 2. If dataURLStruct is failure, then return a
|
||||
// network error.
|
||||
if (dataURLStruct === 'failure') {
|
||||
return makeNetworkError('failed to fetch the data URL')
|
||||
return Promise.resolve(makeNetworkError('failed to fetch the data URL'))
|
||||
}
|
||||
|
||||
// 3. Let mimeType be dataURLStruct’s MIME type, serialized.
|
||||
@ -74563,28 +74587,28 @@ async function schemeFetch (fetchParams) {
|
||||
// 4. Return a response whose status message is `OK`,
|
||||
// header list is « (`Content-Type`, mimeType) »,
|
||||
// and body is dataURLStruct’s body as a body.
|
||||
return makeResponse({
|
||||
return Promise.resolve(makeResponse({
|
||||
statusText: 'OK',
|
||||
headersList: [
|
||||
['content-type', { name: 'Content-Type', value: mimeType }]
|
||||
],
|
||||
body: safelyExtractBody(dataURLStruct.body)[0]
|
||||
})
|
||||
}))
|
||||
}
|
||||
case 'file:': {
|
||||
// For now, unfortunate as it is, file URLs are left as an exercise for the reader.
|
||||
// When in doubt, return a network error.
|
||||
return makeNetworkError('not implemented... yet...')
|
||||
return Promise.resolve(makeNetworkError('not implemented... yet...'))
|
||||
}
|
||||
case 'http:':
|
||||
case 'https:': {
|
||||
// Return the result of running HTTP fetch given fetchParams.
|
||||
|
||||
return await httpFetch(fetchParams)
|
||||
return httpFetch(fetchParams)
|
||||
.catch((err) => makeNetworkError(err))
|
||||
}
|
||||
default: {
|
||||
return makeNetworkError('unknown scheme')
|
||||
return Promise.resolve(makeNetworkError('unknown scheme'))
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -74603,7 +74627,7 @@ function finalizeResponse (fetchParams, response) {
|
||||
}
|
||||
|
||||
// https://fetch.spec.whatwg.org/#fetch-finale
|
||||
async function fetchFinale (fetchParams, response) {
|
||||
function fetchFinale (fetchParams, response) {
|
||||
// 1. If response is a network error, then:
|
||||
if (response.type === 'error') {
|
||||
// 1. Set response’s URL list to « fetchParams’s request’s URL list[0] ».
|
||||
@ -74687,8 +74711,9 @@ async function fetchFinale (fetchParams, response) {
|
||||
} else {
|
||||
// 4. Otherwise, fully read response’s body given processBody, processBodyError,
|
||||
// and fetchParams’s task destination.
|
||||
await fullyReadBody(response.body, processBody, processBodyError)
|
||||
return fullyReadBody(response.body, processBody, processBodyError)
|
||||
}
|
||||
return Promise.resolve()
|
||||
}
|
||||
}
|
||||
|
||||
@ -74796,7 +74821,7 @@ async function httpFetch (fetchParams) {
|
||||
}
|
||||
|
||||
// https://fetch.spec.whatwg.org/#http-redirect-fetch
|
||||
async function httpRedirectFetch (fetchParams, response) {
|
||||
function httpRedirectFetch (fetchParams, response) {
|
||||
// 1. Let request be fetchParams’s request.
|
||||
const request = fetchParams.request
|
||||
|
||||
@ -74822,18 +74847,18 @@ async function httpRedirectFetch (fetchParams, response) {
|
||||
}
|
||||
} catch (err) {
|
||||
// 5. If locationURL is failure, then return a network error.
|
||||
return makeNetworkError(err)
|
||||
return Promise.resolve(makeNetworkError(err))
|
||||
}
|
||||
|
||||
// 6. If locationURL’s scheme is not an HTTP(S) scheme, then return a network
|
||||
// error.
|
||||
if (!urlIsHttpHttpsScheme(locationURL)) {
|
||||
return makeNetworkError('URL scheme must be a HTTP(S) scheme')
|
||||
return Promise.resolve(makeNetworkError('URL scheme must be a HTTP(S) scheme'))
|
||||
}
|
||||
|
||||
// 7. If request’s redirect count is 20, then return a network error.
|
||||
if (request.redirectCount === 20) {
|
||||
return makeNetworkError('redirect count exceeded')
|
||||
return Promise.resolve(makeNetworkError('redirect count exceeded'))
|
||||
}
|
||||
|
||||
// 8. Increase request’s redirect count by 1.
|
||||
@ -74847,7 +74872,7 @@ async function httpRedirectFetch (fetchParams, response) {
|
||||
(locationURL.username || locationURL.password) &&
|
||||
!sameOrigin(request, locationURL)
|
||||
) {
|
||||
return makeNetworkError('cross origin not allowed for request mode "cors"')
|
||||
return Promise.resolve(makeNetworkError('cross origin not allowed for request mode "cors"'))
|
||||
}
|
||||
|
||||
// 10. If request’s response tainting is "cors" and locationURL includes
|
||||
@ -74856,9 +74881,9 @@ async function httpRedirectFetch (fetchParams, response) {
|
||||
request.responseTainting === 'cors' &&
|
||||
(locationURL.username || locationURL.password)
|
||||
) {
|
||||
return makeNetworkError(
|
||||
return Promise.resolve(makeNetworkError(
|
||||
'URL cannot contain credentials for request mode "cors"'
|
||||
)
|
||||
))
|
||||
}
|
||||
|
||||
// 11. If actualResponse’s status is not 303, request’s body is non-null,
|
||||
@ -74868,7 +74893,7 @@ async function httpRedirectFetch (fetchParams, response) {
|
||||
request.body != null &&
|
||||
request.body.source == null
|
||||
) {
|
||||
return makeNetworkError()
|
||||
return Promise.resolve(makeNetworkError())
|
||||
}
|
||||
|
||||
// 12. If one of the following is true
|
||||
@ -74897,6 +74922,10 @@ async function httpRedirectFetch (fetchParams, response) {
|
||||
if (!sameOrigin(requestCurrentURL(request), locationURL)) {
|
||||
// https://fetch.spec.whatwg.org/#cors-non-wildcard-request-header-name
|
||||
request.headersList.delete('authorization')
|
||||
|
||||
// "Cookie" and "Host" are forbidden request-headers, which undici doesn't implement.
|
||||
request.headersList.delete('cookie')
|
||||
request.headersList.delete('host')
|
||||
}
|
||||
|
||||
// 14. If request’s body is non-null, then set request’s body to the first return
|
||||
@ -75041,7 +75070,7 @@ async function httpNetworkOrCacheFetch (
|
||||
// user agents should append `User-Agent`/default `User-Agent` value to
|
||||
// httpRequest’s header list.
|
||||
if (!httpRequest.headersList.contains('user-agent')) {
|
||||
httpRequest.headersList.append('user-agent', 'undici')
|
||||
httpRequest.headersList.append('user-agent', typeof esbuildDetection === 'undefined' ? 'undici' : 'node')
|
||||
}
|
||||
|
||||
// 15. If httpRequest’s cache mode is "default" and httpRequest’s header
|
||||
@ -75103,6 +75132,8 @@ async function httpNetworkOrCacheFetch (
|
||||
}
|
||||
}
|
||||
|
||||
httpRequest.headersList.delete('host')
|
||||
|
||||
// 20. If includeCredentials is true, then:
|
||||
if (includeCredentials) {
|
||||
// 1. If the user agent is not configured to block cookies for httpRequest
|
||||
@ -93378,45 +93409,38 @@ class OfficialBuilds extends base_distribution_1.default {
|
||||
let toolPath = this.findVersionInHostedToolCacheDirectory();
|
||||
if (toolPath) {
|
||||
core.info(`Found in cache @ ${toolPath}`);
|
||||
this.addToolPath(toolPath);
|
||||
return;
|
||||
}
|
||||
else {
|
||||
let downloadPath = '';
|
||||
try {
|
||||
core.info(`Attempting to download ${this.nodeInfo.versionSpec}...`);
|
||||
const versionInfo = yield this.getInfoFromManifest(this.nodeInfo.versionSpec, this.nodeInfo.stable, osArch, manifest);
|
||||
if (versionInfo) {
|
||||
core.info(`Acquiring ${versionInfo.resolvedVersion} - ${versionInfo.arch} from ${versionInfo.downloadUrl}`);
|
||||
downloadPath = yield tc.downloadTool(versionInfo.downloadUrl, undefined, this.nodeInfo.auth);
|
||||
if (downloadPath) {
|
||||
toolPath = yield this.extractArchive(downloadPath, versionInfo);
|
||||
}
|
||||
}
|
||||
else {
|
||||
core.info('Not found in manifest. Falling back to download directly from Node');
|
||||
let downloadPath = '';
|
||||
try {
|
||||
core.info(`Attempting to download ${this.nodeInfo.versionSpec}...`);
|
||||
const versionInfo = yield this.getInfoFromManifest(this.nodeInfo.versionSpec, this.nodeInfo.stable, osArch, manifest);
|
||||
if (versionInfo) {
|
||||
core.info(`Acquiring ${versionInfo.resolvedVersion} - ${versionInfo.arch} from ${versionInfo.downloadUrl}`);
|
||||
downloadPath = yield tc.downloadTool(versionInfo.downloadUrl, undefined, this.nodeInfo.auth);
|
||||
if (downloadPath) {
|
||||
toolPath = yield this.extractArchive(downloadPath, versionInfo);
|
||||
}
|
||||
}
|
||||
catch (err) {
|
||||
// Rate limit?
|
||||
if (err instanceof tc.HTTPError &&
|
||||
(err.httpStatusCode === 403 || err.httpStatusCode === 429)) {
|
||||
core.info(`Received HTTP status code ${err.httpStatusCode}. This usually indicates the rate limit has been exceeded`);
|
||||
}
|
||||
else {
|
||||
core.info(err.message);
|
||||
}
|
||||
core.debug((_a = err.stack) !== null && _a !== void 0 ? _a : 'No stack trace');
|
||||
core.info('Falling back to download directly from Node');
|
||||
else {
|
||||
core.info('Not found in manifest. Falling back to download directly from Node');
|
||||
}
|
||||
if (!toolPath) {
|
||||
const nodeJsVersions = yield this.getNodeJsVersions();
|
||||
const versions = this.filterVersions(nodeJsVersions);
|
||||
const evaluatedVersion = this.evaluateVersions(versions);
|
||||
if (!evaluatedVersion) {
|
||||
throw new Error(`Unable to find Node version '${this.nodeInfo.versionSpec}' for platform ${this.osPlat} and architecture ${this.nodeInfo.arch}.`);
|
||||
}
|
||||
const toolName = this.getNodejsDistInfo(evaluatedVersion);
|
||||
toolPath = yield this.downloadNodejs(toolName);
|
||||
}
|
||||
catch (err) {
|
||||
// Rate limit?
|
||||
if (err instanceof tc.HTTPError &&
|
||||
(err.httpStatusCode === 403 || err.httpStatusCode === 429)) {
|
||||
core.info(`Received HTTP status code ${err.httpStatusCode}. This usually indicates the rate limit has been exceeded`);
|
||||
}
|
||||
else {
|
||||
core.info(err.message);
|
||||
}
|
||||
core.debug((_a = err.stack) !== null && _a !== void 0 ? _a : 'empty stack');
|
||||
core.info('Falling back to download directly from Node');
|
||||
}
|
||||
if (!toolPath) {
|
||||
toolPath = yield this.downloadDirectlyFromNode();
|
||||
}
|
||||
if (this.osPlat != 'win32') {
|
||||
toolPath = path_1.default.join(toolPath, 'bin');
|
||||
@ -93424,6 +93448,35 @@ class OfficialBuilds extends base_distribution_1.default {
|
||||
core.addPath(toolPath);
|
||||
});
|
||||
}
|
||||
addToolPath(toolPath) {
|
||||
if (this.osPlat != 'win32') {
|
||||
toolPath = path_1.default.join(toolPath, 'bin');
|
||||
}
|
||||
core.addPath(toolPath);
|
||||
}
|
||||
downloadDirectlyFromNode() {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
const nodeJsVersions = yield this.getNodeJsVersions();
|
||||
const versions = this.filterVersions(nodeJsVersions);
|
||||
const evaluatedVersion = this.evaluateVersions(versions);
|
||||
if (!evaluatedVersion) {
|
||||
throw new Error(`Unable to find Node version '${this.nodeInfo.versionSpec}' for platform ${this.osPlat} and architecture ${this.nodeInfo.arch}.`);
|
||||
}
|
||||
const toolName = this.getNodejsDistInfo(evaluatedVersion);
|
||||
try {
|
||||
const toolPath = yield this.downloadNodejs(toolName);
|
||||
return toolPath;
|
||||
}
|
||||
catch (error) {
|
||||
if (error instanceof tc.HTTPError && error.httpStatusCode === 404) {
|
||||
core.warning(`Node version ${this.nodeInfo.versionSpec} for platform ${this.osPlat} and architecture ${this.nodeInfo.arch} was found but failed to download. ` +
|
||||
'This usually happens when downloadable binaries are not fully updated at https://nodejs.org/. ' +
|
||||
'To resolve this issue you may either fall back to the older version or try again later.');
|
||||
}
|
||||
throw error;
|
||||
}
|
||||
});
|
||||
}
|
||||
evaluateVersions(versions) {
|
||||
let version = '';
|
||||
if (this.isLatestSyntax(this.nodeInfo.versionSpec)) {
|
||||
|
||||
255
package-lock.json
generated
255
package-lock.json
generated
@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "setup-node",
|
||||
"version": "3.4.1",
|
||||
"version": "4.0.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "setup-node",
|
||||
"version": "3.4.1",
|
||||
"version": "4.0.0",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@actions/cache": "^3.0.4",
|
||||
@ -453,18 +453,18 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/compat-data": {
|
||||
"version": "7.22.20",
|
||||
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.20.tgz",
|
||||
"integrity": "sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==",
|
||||
"version": "7.23.2",
|
||||
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.2.tgz",
|
||||
"integrity": "sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/core": {
|
||||
"version": "7.23.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.0.tgz",
|
||||
"integrity": "sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ==",
|
||||
"version": "7.23.2",
|
||||
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz",
|
||||
"integrity": "sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@ampproject/remapping": "^2.2.0",
|
||||
@ -472,10 +472,10 @@
|
||||
"@babel/generator": "^7.23.0",
|
||||
"@babel/helper-compilation-targets": "^7.22.15",
|
||||
"@babel/helper-module-transforms": "^7.23.0",
|
||||
"@babel/helpers": "^7.23.0",
|
||||
"@babel/helpers": "^7.23.2",
|
||||
"@babel/parser": "^7.23.0",
|
||||
"@babel/template": "^7.22.15",
|
||||
"@babel/traverse": "^7.23.0",
|
||||
"@babel/traverse": "^7.23.2",
|
||||
"@babel/types": "^7.23.0",
|
||||
"convert-source-map": "^2.0.0",
|
||||
"debug": "^4.1.0",
|
||||
@ -666,13 +666,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helpers": {
|
||||
"version": "7.23.1",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.1.tgz",
|
||||
"integrity": "sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA==",
|
||||
"version": "7.23.2",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz",
|
||||
"integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/template": "^7.22.15",
|
||||
"@babel/traverse": "^7.23.0",
|
||||
"@babel/traverse": "^7.23.2",
|
||||
"@babel/types": "^7.23.0"
|
||||
},
|
||||
"engines": {
|
||||
@ -968,9 +968,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/traverse": {
|
||||
"version": "7.23.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.0.tgz",
|
||||
"integrity": "sha512-t/QaEvyIoIkwzpiZ7aoSKK8kObQYeF7T2v+dazAYCb8SXtp58zEVkWW7zAnju8FNKNdr4ScAOEDmMItbyOmEYw==",
|
||||
"version": "7.23.2",
|
||||
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz",
|
||||
"integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/code-frame": "^7.22.13",
|
||||
@ -1065,9 +1065,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@eslint/js": {
|
||||
"version": "8.51.0",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.51.0.tgz",
|
||||
"integrity": "sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==",
|
||||
"version": "8.52.0",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.52.0.tgz",
|
||||
"integrity": "sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
@ -1082,12 +1082,12 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@humanwhocodes/config-array": {
|
||||
"version": "0.11.11",
|
||||
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz",
|
||||
"integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==",
|
||||
"version": "0.11.13",
|
||||
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz",
|
||||
"integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@humanwhocodes/object-schema": "^1.2.1",
|
||||
"@humanwhocodes/object-schema": "^2.0.1",
|
||||
"debug": "^4.1.1",
|
||||
"minimatch": "^3.0.5"
|
||||
},
|
||||
@ -1109,9 +1109,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@humanwhocodes/object-schema": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
|
||||
"integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz",
|
||||
"integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@istanbuljs/load-nyc-config": {
|
||||
@ -1539,9 +1539,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@jridgewell/trace-mapping": {
|
||||
"version": "0.3.19",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz",
|
||||
"integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==",
|
||||
"version": "0.3.20",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz",
|
||||
"integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@jridgewell/resolve-uri": "^3.1.0",
|
||||
@ -1717,9 +1717,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@types/babel__core": {
|
||||
"version": "7.20.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.2.tgz",
|
||||
"integrity": "sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==",
|
||||
"version": "7.20.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.3.tgz",
|
||||
"integrity": "sha512-54fjTSeSHwfan8AyHWrKbfBWiEUrNTZsUwPTDSNaaP1QDQIZbeNUg3a59E9D+375MzUw/x1vx2/0F5LBz+AeYA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.20.7",
|
||||
@ -1730,18 +1730,18 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@types/babel__generator": {
|
||||
"version": "7.6.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.5.tgz",
|
||||
"integrity": "sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==",
|
||||
"version": "7.6.6",
|
||||
"resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.6.tgz",
|
||||
"integrity": "sha512-66BXMKb/sUWbMdBNdMvajU7i/44RkrA3z/Yt1c7R5xejt8qh84iU54yUWCtm0QwGJlDcf/gg4zd/x4mpLAlb/w==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/types": "^7.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/babel__template": {
|
||||
"version": "7.4.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.2.tgz",
|
||||
"integrity": "sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==",
|
||||
"version": "7.4.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.3.tgz",
|
||||
"integrity": "sha512-ciwyCLeuRfxboZ4isgdNZi/tkt06m8Tw6uGbBSBgWrnnZGNXiEyM27xc/PjXGQLqlZ6ylbgHMnm7ccF9tCkOeQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.1.0",
|
||||
@ -1749,51 +1749,51 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@types/babel__traverse": {
|
||||
"version": "7.20.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.2.tgz",
|
||||
"integrity": "sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw==",
|
||||
"version": "7.20.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.3.tgz",
|
||||
"integrity": "sha512-Lsh766rGEFbaxMIDH7Qa+Yha8cMVI3qAK6CHt3OR0YfxOIn5Z54iHiyDRycHrBqeIiqGa20Kpsv1cavfBKkRSw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/types": "^7.20.7"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/graceful-fs": {
|
||||
"version": "4.1.7",
|
||||
"resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.7.tgz",
|
||||
"integrity": "sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw==",
|
||||
"version": "4.1.8",
|
||||
"resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.8.tgz",
|
||||
"integrity": "sha512-NhRH7YzWq8WiNKVavKPBmtLYZHxNY19Hh+az28O/phfp68CF45pMFud+ZzJ8ewnxnC5smIdF3dqFeiSUQ5I+pw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/istanbul-lib-coverage": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz",
|
||||
"integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==",
|
||||
"version": "2.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz",
|
||||
"integrity": "sha512-zONci81DZYCZjiLe0r6equvZut0b+dBRPBN5kBDjsONnutYNtJMoWQ9uR2RkL1gLG9NMTzvf+29e5RFfPbeKhQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@types/istanbul-lib-report": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz",
|
||||
"integrity": "sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ==",
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.2.tgz",
|
||||
"integrity": "sha512-8toY6FgdltSdONav1XtUHl4LN1yTmLza+EuDazb/fEmRNCwjyqNVIQWs2IfC74IqjHkREs/nQ2FWq5kZU9IC0w==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@types/istanbul-lib-coverage": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/istanbul-reports": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.2.tgz",
|
||||
"integrity": "sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A==",
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.3.tgz",
|
||||
"integrity": "sha512-1nESsePMBlf0RPRffLZi5ujYh7IH1BWL4y9pr+Bn3cJBdxz+RTP8bUFljLz9HvzhhOSWKdyBZ4DIivdL6rvgZg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@types/istanbul-lib-report": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/jest": {
|
||||
"version": "29.5.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.5.tgz",
|
||||
"integrity": "sha512-ebylz2hnsWR9mYvmBFbXJXr+33UPc4+ZdxyDXh5w0FlPBTfCVN3wPL+kuOiQt3xvrK419v7XWeAs+AeOksafXg==",
|
||||
"version": "29.5.6",
|
||||
"resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.6.tgz",
|
||||
"integrity": "sha512-/t9NnzkOpXb4Nfvg17ieHE6EeSjDS2SGSpNYfoLbUAeL/EOueU/RSdOWFpfQTXBEM7BguYW1XQ0EbM+6RlIh6w==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"expect": "^29.0.0",
|
||||
@ -1801,20 +1801,23 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@types/json-schema": {
|
||||
"version": "7.0.13",
|
||||
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz",
|
||||
"integrity": "sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==",
|
||||
"version": "7.0.14",
|
||||
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz",
|
||||
"integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "20.8.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.3.tgz",
|
||||
"integrity": "sha512-jxiZQFpb+NlH5kjW49vXxvxTjeeqlbsnTAdBTKpzEdPs9itay7MscYXz3Fo9VYFEsfQ6LJFitHad3faerLAjCw=="
|
||||
"version": "20.8.7",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.7.tgz",
|
||||
"integrity": "sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ==",
|
||||
"dependencies": {
|
||||
"undici-types": "~5.25.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/node-fetch": {
|
||||
"version": "2.6.6",
|
||||
"resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.6.tgz",
|
||||
"integrity": "sha512-95X8guJYhfqiuVVhRFxVQcf4hW/2bCuoPwDasMf/531STFoNoWTT7YDnWdXHEZKqAGUigmpG31r2FE70LwnzJw==",
|
||||
"version": "2.6.7",
|
||||
"resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.7.tgz",
|
||||
"integrity": "sha512-lX17GZVpJ/fuCjguZ5b3TjEbSENxmEk1B2z02yoXSK9WMEWRivhdSY73wWMn6bpcCDAOh6qAdktpKHIlkDk2lg==",
|
||||
"dependencies": {
|
||||
"@types/node": "*",
|
||||
"form-data": "^4.0.0"
|
||||
@ -1834,15 +1837,15 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@types/semver": {
|
||||
"version": "7.5.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.3.tgz",
|
||||
"integrity": "sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==",
|
||||
"version": "7.5.4",
|
||||
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.4.tgz",
|
||||
"integrity": "sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@types/stack-utils": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz",
|
||||
"integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==",
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.2.tgz",
|
||||
"integrity": "sha512-g7CK9nHdwjK2n0ymT2CW698FuWJRIx+RP6embAzZ2Qi8/ilIrA1Imt2LVSeHUzKvpoi7BhmmQcXz95eS0f2JXw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@types/tunnel": {
|
||||
@ -1854,18 +1857,18 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@types/yargs": {
|
||||
"version": "17.0.28",
|
||||
"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.28.tgz",
|
||||
"integrity": "sha512-N3e3fkS86hNhtk6BEnc0rj3zcehaxx8QWhCROJkqpl5Zaoi7nAic3jH8q94jVD3zu5LGk+PUB6KAiDmimYOEQw==",
|
||||
"version": "17.0.29",
|
||||
"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.29.tgz",
|
||||
"integrity": "sha512-nacjqA3ee9zRF/++a3FUY1suHTFKZeHba2n8WeDw9cCVdmzmHpIxyzOJBcpHvvEmS8E9KqWlSnWHUkOrkhWcvA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@types/yargs-parser": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/yargs-parser": {
|
||||
"version": "21.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.1.tgz",
|
||||
"integrity": "sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ==",
|
||||
"version": "21.0.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.2.tgz",
|
||||
"integrity": "sha512-5qcvofLPbfjmBfKaLfj/+f+Sbd6pN4zl7w7VSVI5uz7m9QZTuB2aZAa2uo1wHFBNN2x6g/SoTkXmd8mQnQF2Cw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@typescript-eslint/eslint-plugin": {
|
||||
@ -2056,10 +2059,16 @@
|
||||
"url": "https://opencollective.com/typescript-eslint"
|
||||
}
|
||||
},
|
||||
"node_modules/@ungap/structured-clone": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
|
||||
"integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@vercel/ncc": {
|
||||
"version": "0.38.0",
|
||||
"resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.38.0.tgz",
|
||||
"integrity": "sha512-B4YKZMm/EqMptKSFyAq4q2SlgJe+VCmEH6Y8gf/E1pTlWbsUJpuH1ymik2Ex3aYO5mCWwV1kaSYHSQOT8+4vHA==",
|
||||
"version": "0.38.1",
|
||||
"resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.38.1.tgz",
|
||||
"integrity": "sha512-IBBb+iI2NLu4VQn3Vwldyi2QwaXt5+hTyh58ggAMoCGE6DJmPvwL3KPBWcJl1m9LYPChBLE980Jw+CS4Wokqxw==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"ncc": "dist/ncc/cli.js"
|
||||
@ -2422,9 +2431,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/caniuse-lite": {
|
||||
"version": "1.0.30001546",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001546.tgz",
|
||||
"integrity": "sha512-zvtSJwuQFpewSyRrI3AsftF6rM0X80mZkChIt1spBGEvRglCrjTniXvinc8JKRoqTwXAgvqTImaN9igfSMtUBw==",
|
||||
"version": "1.0.30001553",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001553.tgz",
|
||||
"integrity": "sha512-N0ttd6TrFfuqKNi+pMgWJTb9qrdJu4JSpgPFLe/lrD19ugC6fZgF0pUewRowDwzdDnb9V41mFcdlYgl/PyKf4A==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
@ -2694,9 +2703,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/electron-to-chromium": {
|
||||
"version": "1.4.544",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.544.tgz",
|
||||
"integrity": "sha512-54z7squS1FyFRSUqq/knOFSptjjogLZXbKcYk3B0qkE1KZzvqASwRZnY2KzZQJqIYLVD38XZeoiMRflYSwyO4w==",
|
||||
"version": "1.4.563",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.563.tgz",
|
||||
"integrity": "sha512-dg5gj5qOgfZNkPNeyKBZQAQitIQ/xwfIDmEQJHCbXaD9ebTZxwJXUsDYcBlAvZGZLi+/354l35J1wkmP6CqYaw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/emittery": {
|
||||
@ -2748,18 +2757,19 @@
|
||||
}
|
||||
},
|
||||
"node_modules/eslint": {
|
||||
"version": "8.51.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.51.0.tgz",
|
||||
"integrity": "sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==",
|
||||
"version": "8.52.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.52.0.tgz",
|
||||
"integrity": "sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@eslint-community/eslint-utils": "^4.2.0",
|
||||
"@eslint-community/regexpp": "^4.6.1",
|
||||
"@eslint/eslintrc": "^2.1.2",
|
||||
"@eslint/js": "8.51.0",
|
||||
"@humanwhocodes/config-array": "^0.11.11",
|
||||
"@eslint/js": "8.52.0",
|
||||
"@humanwhocodes/config-array": "^0.11.13",
|
||||
"@humanwhocodes/module-importer": "^1.0.1",
|
||||
"@nodelib/fs.walk": "^1.2.8",
|
||||
"@ungap/structured-clone": "^1.2.0",
|
||||
"ajv": "^6.12.4",
|
||||
"chalk": "^4.0.0",
|
||||
"cross-spawn": "^7.0.2",
|
||||
@ -2833,9 +2843,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/eslint-plugin-jest": {
|
||||
"version": "27.4.2",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.4.2.tgz",
|
||||
"integrity": "sha512-3Nfvv3wbq2+PZlRTf2oaAWXWwbdBejFRBR2O8tAO67o+P8zno+QGbcDYaAXODlreXVg+9gvWhKKmG2rgfb8GEg==",
|
||||
"version": "27.4.3",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.4.3.tgz",
|
||||
"integrity": "sha512-7S6SmmsHsgIm06BAGCAxL+ABd9/IB3MWkz2pudj6Qqor2y1qQpWPfuFU4SG9pWj4xDjF0e+D7Llh5useuSzAZw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@typescript-eslint/utils": "^5.10.0"
|
||||
@ -3271,6 +3281,15 @@
|
||||
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/function-bind": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
|
||||
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
|
||||
"dev": true,
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/gensync": {
|
||||
"version": "1.0.0-beta.2",
|
||||
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
|
||||
@ -3389,15 +3408,6 @@
|
||||
"integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/has": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz",
|
||||
"integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">= 0.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/has-flag": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
|
||||
@ -3407,6 +3417,18 @@
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/hasown": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
|
||||
"integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"function-bind": "^1.1.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/html-escaper": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
|
||||
@ -3498,12 +3520,12 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/is-core-module": {
|
||||
"version": "2.13.0",
|
||||
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz",
|
||||
"integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==",
|
||||
"version": "2.13.1",
|
||||
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
|
||||
"integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"has": "^1.0.3"
|
||||
"hasown": "^2.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
@ -4914,9 +4936,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/resolve": {
|
||||
"version": "1.22.6",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz",
|
||||
"integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==",
|
||||
"version": "1.22.8",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
|
||||
"integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"is-core-module": "^2.13.0",
|
||||
@ -5409,9 +5431,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/undici": {
|
||||
"version": "5.25.4",
|
||||
"resolved": "https://registry.npmjs.org/undici/-/undici-5.25.4.tgz",
|
||||
"integrity": "sha512-450yJxT29qKMf3aoudzFpIciqpx6Pji3hEWaXqXmanbXF58LTAGCKxcJjxMXWu3iG+Mudgo3ZUfDB6YDFd/dAw==",
|
||||
"version": "5.26.5",
|
||||
"resolved": "https://registry.npmjs.org/undici/-/undici-5.26.5.tgz",
|
||||
"integrity": "sha512-cSb4bPFd5qgR7qr2jYAi0hlX9n5YKK2ONKkLFkxl+v/9BvC0sOpZjBHDBSXc5lWAf5ty9oZdRXytBIHzgUcerw==",
|
||||
"dependencies": {
|
||||
"@fastify/busboy": "^2.0.0"
|
||||
},
|
||||
@ -5419,6 +5441,11 @@
|
||||
"node": ">=14.0"
|
||||
}
|
||||
},
|
||||
"node_modules/undici-types": {
|
||||
"version": "5.25.3",
|
||||
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz",
|
||||
"integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA=="
|
||||
},
|
||||
"node_modules/universal-user-agent": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz",
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "setup-node",
|
||||
"version": "3.4.1",
|
||||
"version": "4.0.0",
|
||||
"private": true,
|
||||
"description": "setup node action",
|
||||
"main": "lib/setup-node.js",
|
||||
|
||||
@ -18,6 +18,7 @@ export default class OfficialBuilds extends BaseDistribution {
|
||||
let manifest: tc.IToolRelease[] | undefined;
|
||||
let nodeJsVersions: INodeVersion[] | undefined;
|
||||
const osArch = this.translateArchToDistUrl(this.nodeInfo.arch);
|
||||
|
||||
if (this.isLtsAlias(this.nodeInfo.versionSpec)) {
|
||||
core.info('Attempt to resolve LTS alias from manifest...');
|
||||
|
||||
@ -61,63 +62,57 @@ export default class OfficialBuilds extends BaseDistribution {
|
||||
|
||||
if (toolPath) {
|
||||
core.info(`Found in cache @ ${toolPath}`);
|
||||
} else {
|
||||
let downloadPath = '';
|
||||
try {
|
||||
core.info(`Attempting to download ${this.nodeInfo.versionSpec}...`);
|
||||
this.addToolPath(toolPath);
|
||||
return;
|
||||
}
|
||||
|
||||
const versionInfo = await this.getInfoFromManifest(
|
||||
this.nodeInfo.versionSpec,
|
||||
this.nodeInfo.stable,
|
||||
osArch,
|
||||
manifest
|
||||
let downloadPath = '';
|
||||
try {
|
||||
core.info(`Attempting to download ${this.nodeInfo.versionSpec}...`);
|
||||
|
||||
const versionInfo = await this.getInfoFromManifest(
|
||||
this.nodeInfo.versionSpec,
|
||||
this.nodeInfo.stable,
|
||||
osArch,
|
||||
manifest
|
||||
);
|
||||
|
||||
if (versionInfo) {
|
||||
core.info(
|
||||
`Acquiring ${versionInfo.resolvedVersion} - ${versionInfo.arch} from ${versionInfo.downloadUrl}`
|
||||
);
|
||||
downloadPath = await tc.downloadTool(
|
||||
versionInfo.downloadUrl,
|
||||
undefined,
|
||||
this.nodeInfo.auth
|
||||
);
|
||||
if (versionInfo) {
|
||||
core.info(
|
||||
`Acquiring ${versionInfo.resolvedVersion} - ${versionInfo.arch} from ${versionInfo.downloadUrl}`
|
||||
);
|
||||
downloadPath = await tc.downloadTool(
|
||||
versionInfo.downloadUrl,
|
||||
undefined,
|
||||
this.nodeInfo.auth
|
||||
);
|
||||
|
||||
if (downloadPath) {
|
||||
toolPath = await this.extractArchive(downloadPath, versionInfo);
|
||||
}
|
||||
} else {
|
||||
core.info(
|
||||
'Not found in manifest. Falling back to download directly from Node'
|
||||
);
|
||||
if (downloadPath) {
|
||||
toolPath = await this.extractArchive(downloadPath, versionInfo);
|
||||
}
|
||||
} catch (err) {
|
||||
// Rate limit?
|
||||
if (
|
||||
err instanceof tc.HTTPError &&
|
||||
(err.httpStatusCode === 403 || err.httpStatusCode === 429)
|
||||
) {
|
||||
core.info(
|
||||
`Received HTTP status code ${err.httpStatusCode}. This usually indicates the rate limit has been exceeded`
|
||||
);
|
||||
} else {
|
||||
core.info((err as Error).message);
|
||||
}
|
||||
core.debug((err as Error).stack ?? 'No stack trace');
|
||||
core.info('Falling back to download directly from Node');
|
||||
} else {
|
||||
core.info(
|
||||
'Not found in manifest. Falling back to download directly from Node'
|
||||
);
|
||||
}
|
||||
} catch (err) {
|
||||
// Rate limit?
|
||||
if (
|
||||
err instanceof tc.HTTPError &&
|
||||
(err.httpStatusCode === 403 || err.httpStatusCode === 429)
|
||||
) {
|
||||
core.info(
|
||||
`Received HTTP status code ${err.httpStatusCode}. This usually indicates the rate limit has been exceeded`
|
||||
);
|
||||
} else {
|
||||
core.info((err as Error).message);
|
||||
}
|
||||
core.debug((err as Error).stack ?? 'empty stack');
|
||||
core.info('Falling back to download directly from Node');
|
||||
}
|
||||
|
||||
if (!toolPath) {
|
||||
const nodeJsVersions = await this.getNodeJsVersions();
|
||||
const versions = this.filterVersions(nodeJsVersions);
|
||||
const evaluatedVersion = this.evaluateVersions(versions);
|
||||
if (!evaluatedVersion) {
|
||||
throw new Error(
|
||||
`Unable to find Node version '${this.nodeInfo.versionSpec}' for platform ${this.osPlat} and architecture ${this.nodeInfo.arch}.`
|
||||
);
|
||||
}
|
||||
const toolName = this.getNodejsDistInfo(evaluatedVersion);
|
||||
toolPath = await this.downloadNodejs(toolName);
|
||||
}
|
||||
if (!toolPath) {
|
||||
toolPath = await this.downloadDirectlyFromNode();
|
||||
}
|
||||
|
||||
if (this.osPlat != 'win32') {
|
||||
@ -127,6 +122,43 @@ export default class OfficialBuilds extends BaseDistribution {
|
||||
core.addPath(toolPath);
|
||||
}
|
||||
|
||||
protected addToolPath(toolPath: string) {
|
||||
if (this.osPlat != 'win32') {
|
||||
toolPath = path.join(toolPath, 'bin');
|
||||
}
|
||||
|
||||
core.addPath(toolPath);
|
||||
}
|
||||
|
||||
protected async downloadDirectlyFromNode() {
|
||||
const nodeJsVersions = await this.getNodeJsVersions();
|
||||
const versions = this.filterVersions(nodeJsVersions);
|
||||
const evaluatedVersion = this.evaluateVersions(versions);
|
||||
|
||||
if (!evaluatedVersion) {
|
||||
throw new Error(
|
||||
`Unable to find Node version '${this.nodeInfo.versionSpec}' for platform ${this.osPlat} and architecture ${this.nodeInfo.arch}.`
|
||||
);
|
||||
}
|
||||
|
||||
const toolName = this.getNodejsDistInfo(evaluatedVersion);
|
||||
|
||||
try {
|
||||
const toolPath = await this.downloadNodejs(toolName);
|
||||
return toolPath;
|
||||
} catch (error) {
|
||||
if (error instanceof tc.HTTPError && error.httpStatusCode === 404) {
|
||||
core.warning(
|
||||
`Node version ${this.nodeInfo.versionSpec} for platform ${this.osPlat} and architecture ${this.nodeInfo.arch} was found but failed to download. ` +
|
||||
'This usually happens when downloadable binaries are not fully updated at https://nodejs.org/. ' +
|
||||
'To resolve this issue you may either fall back to the older version or try again later.'
|
||||
);
|
||||
}
|
||||
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
protected evaluateVersions(versions: string[]): string {
|
||||
let version = '';
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user