diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 4d7fdf1c..b669a2c3 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -30,10 +30,10 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Initialize CodeQL - uses: github/codeql-action/init@4e828ff8d448a8a6e532957b1811f387a63867e8 # v3.29.4 + uses: github/codeql-action/init@51f77329afa6477de8c49fc9c7046c15b9a4e79d # v3.29.5 with: config-file: .github/codeql/codeql-configuration.yml languages: ${{ matrix.language }} - name: Perform CodeQL analysis - uses: github/codeql-action/analyze@4e828ff8d448a8a6e532957b1811f387a63867e8 # v3.29.4 + uses: github/codeql-action/analyze@51f77329afa6477de8c49fc9c7046c15b9a4e79d # v3.29.5 diff --git a/dist/index.cjs b/dist/index.cjs index ad468307..e75d1660 100644 --- a/dist/index.cjs +++ b/dist/index.cjs @@ -62857,7 +62857,7 @@ var require_package = __commonJS({ "../../node_modules/@actions/cache/package.json"(exports2, module2) { module2.exports = { name: "@actions/cache", - version: "4.0.3", + version: "4.0.5", preview: true, description: "Actions cache lib", keywords: [ @@ -62897,17 +62897,18 @@ var require_package = __commonJS({ "@actions/core": "^1.11.1", "@actions/exec": "^1.0.1", "@actions/glob": "^0.1.0", + "@protobuf-ts/runtime-rpc": "^2.11.1", "@actions/http-client": "^2.1.1", "@actions/io": "^1.0.1", "@azure/abort-controller": "^1.1.0", "@azure/ms-rest-js": "^2.6.0", "@azure/storage-blob": "^12.13.0", - "@protobuf-ts/plugin": "^2.9.4", semver: "^6.3.1" }, devDependencies: { "@types/node": "^22.13.9", "@types/semver": "^6.0.0", + "@protobuf-ts/plugin": "^2.9.4", typescript: "^5.2.2" } }; @@ -68620,6 +68621,7 @@ var require_cache4 = __commonJS({ var config_1 = require_config(); var tar_1 = require_tar(); var constants_1 = require_constants6(); + var http_client_1 = require_lib(); var ValidationError = class _ValidationError extends Error { constructor(message) { super(message); @@ -68651,7 +68653,14 @@ var require_cache4 = __commonJS({ } } function isFeatureAvailable2() { - return !!process.env["ACTIONS_CACHE_URL"]; + const cacheServiceVersion = (0, config_1.getCacheServiceVersion)(); + switch (cacheServiceVersion) { + case "v2": + return !!process.env["ACTIONS_RESULTS_URL"]; + case "v1": + default: + return !!process.env["ACTIONS_CACHE_URL"]; + } } exports2.isFeatureAvailable = isFeatureAvailable2; function restoreCache3(paths, primaryKey, restoreKeys, options, enableCrossOsArchive = false) { @@ -68711,7 +68720,11 @@ var require_cache4 = __commonJS({ if (typedError.name === ValidationError.name) { throw error2; } else { - core8.warning(`Failed to restore: ${error2.message}`); + if (typedError instanceof http_client_1.HttpClientError && typeof typedError.statusCode === "number" && typedError.statusCode >= 500) { + core8.error(`Failed to restore: ${error2.message}`); + } else { + core8.warning(`Failed to restore: ${error2.message}`); + } } } finally { try { @@ -68750,7 +68763,12 @@ var require_cache4 = __commonJS({ core8.debug(`Cache not found for version ${request.version} of keys: ${keys.join(", ")}`); return void 0; } - core8.info(`Cache hit for: ${request.key}`); + const isRestoreKeyMatch = request.key !== response.matchedKey; + if (isRestoreKeyMatch) { + core8.info(`Cache hit for restore-key: ${response.matchedKey}`); + } else { + core8.info(`Cache hit for: ${response.matchedKey}`); + } if (options === null || options === void 0 ? void 0 : options.lookupOnly) { core8.info("Lookup only - skipping download"); return response.matchedKey; @@ -68772,7 +68790,11 @@ var require_cache4 = __commonJS({ if (typedError.name === ValidationError.name) { throw error2; } else { - core8.warning(`Failed to restore: ${error2.message}`); + if (typedError instanceof http_client_1.HttpClientError && typeof typedError.statusCode === "number" && typedError.statusCode >= 500) { + core8.error(`Failed to restore: ${error2.message}`); + } else { + core8.warning(`Failed to restore: ${error2.message}`); + } } } finally { try { @@ -68849,7 +68871,11 @@ var require_cache4 = __commonJS({ } else if (typedError.name === ReserveCacheError.name) { core8.info(`Failed to save: ${typedError.message}`); } else { - core8.warning(`Failed to save: ${typedError.message}`); + if (typedError instanceof http_client_1.HttpClientError && typeof typedError.statusCode === "number" && typedError.statusCode >= 500) { + core8.error(`Failed to save: ${typedError.message}`); + } else { + core8.warning(`Failed to save: ${typedError.message}`); + } } } finally { try { @@ -68924,7 +68950,11 @@ var require_cache4 = __commonJS({ } else if (typedError.name === ReserveCacheError.name) { core8.info(`Failed to save: ${typedError.message}`); } else { - core8.warning(`Failed to save: ${typedError.message}`); + if (typedError instanceof http_client_1.HttpClientError && typeof typedError.statusCode === "number" && typedError.statusCode >= 500) { + core8.error(`Failed to save: ${typedError.message}`); + } else { + core8.warning(`Failed to save: ${typedError.message}`); + } } } finally { try { @@ -92479,7 +92509,7 @@ ${indent}`) + "'"; } function blockString({ comment, type, value }, ctx, onComment, onChompKeep) { const { blockQuote, commentString, lineWidth } = ctx.options; - if (!blockQuote || /\n[\t ]+$/.test(value) || /^\s*$/.test(value)) { + if (!blockQuote || /\n[\t ]+$/.test(value)) { return quotedString(value, ctx); } const indent = ctx.indent || (ctx.forceBlockIndent || containsDocumentMarker(value) ? " " : ""); @@ -109035,7 +109065,6 @@ var require_util11 = __commonJS({ var { IncomingMessage } = require("node:http"); var stream = require("node:stream"); var net = require("node:net"); - var { Blob: Blob2 } = require("node:buffer"); var { stringify: stringify2 } = require("node:querystring"); var { EventEmitter: EE } = require("node:events"); var timers = require_timers2(); @@ -109084,7 +109113,7 @@ var require_util11 = __commonJS({ function isBlobLike(object) { if (object === null) { return false; - } else if (object instanceof Blob2) { + } else if (object instanceof Blob) { return true; } else if (typeof object !== "object") { return false; @@ -112167,7 +112196,7 @@ var require_webidl2 = __commonJS({ webidl.is.ReadableStream = webidl.util.MakeTypeAssertion(ReadableStream); webidl.is.Blob = webidl.util.MakeTypeAssertion(Blob); webidl.is.URLSearchParams = webidl.util.MakeTypeAssertion(URLSearchParams); - webidl.is.File = webidl.util.MakeTypeAssertion(globalThis.File ?? require("node:buffer").File); + webidl.is.File = webidl.util.MakeTypeAssertion(File); webidl.is.URL = webidl.util.MakeTypeAssertion(URL); webidl.is.AbortSignal = webidl.util.MakeTypeAssertion(AbortSignal); webidl.is.MessagePort = webidl.util.MakeTypeAssertion(MessagePort); @@ -113208,9 +113237,7 @@ var require_formdata2 = __commonJS({ var { iteratorMixin } = require_util12(); var { kEnumerableProperty } = require_util11(); var { webidl } = require_webidl2(); - var { File: NativeFile } = require("node:buffer"); var nodeUtil = require("node:util"); - var File2 = globalThis.File ?? NativeFile; var FormData2 = class _FormData { #state = []; constructor(form) { @@ -113348,14 +113375,14 @@ var require_formdata2 = __commonJS({ if (typeof value === "string") { } else { if (!webidl.is.File(value)) { - value = new File2([value], "blob", { type: value.type }); + value = new File([value], "blob", { type: value.type }); } if (filename !== void 0) { const options = { type: value.type, lastModified: value.lastModified }; - value = new File2([value], filename, options); + value = new File([value], filename, options); } } return { name, value }; @@ -113375,8 +113402,6 @@ var require_formdata_parser = __commonJS({ var { makeEntry } = require_formdata2(); var { webidl } = require_webidl2(); var assert = require("node:assert"); - var { File: NodeFile } = require("node:buffer"); - var File2 = globalThis.File ?? NodeFile; var formDataNameBuffer = Buffer.from('form-data; name="'); var filenameBuffer = Buffer.from("filename"); var dd = Buffer.from("--"); @@ -113460,7 +113485,7 @@ var require_formdata_parser = __commonJS({ if (!isAsciiString(contentType)) { contentType = ""; } - value = new File2([body], filename, { type: contentType }); + value = new File([body], filename, { type: contentType }); } else { value = utf8DecodeBytes(Buffer.from(body)); } @@ -113668,7 +113693,6 @@ var require_body2 = __commonJS({ } = require_util12(); var { FormData: FormData2, setFormDataState } = require_formdata2(); var { webidl } = require_webidl2(); - var { Blob: Blob2 } = require("node:buffer"); var assert = require("node:assert"); var { isErrored, isDisturbed } = require("node:stream"); var { isArrayBuffer } = require("node:util/types"); @@ -113858,7 +113882,7 @@ Content-Type: ${value.type || "application/octet-stream"}\r } else if (mimeType) { mimeType = serializeAMimeType(mimeType); } - return new Blob2([bytes], { type: mimeType }); + return new Blob([bytes], { type: mimeType }); }, instance, getInternalState); }, arrayBuffer() { @@ -116782,7 +116806,7 @@ var require_agent2 = __commonJS({ var require_proxy_agent2 = __commonJS({ "../../node_modules/cheerio/node_modules/undici/lib/dispatcher/proxy-agent.js"(exports2, module2) { "use strict"; - var { kProxy, kClose, kDestroy, kDispatch, kConnector } = require_symbols6(); + var { kProxy, kClose, kDestroy, kDispatch } = require_symbols6(); var { URL: URL2 } = require("node:url"); var Agent = require_agent2(); var Pool = require_pool2(); @@ -116805,53 +116829,55 @@ var require_proxy_agent2 = __commonJS({ } var noop = () => { }; - var ProxyClient = class extends DispatcherBase { - #client = null; - constructor(origin, opts) { - if (typeof origin === "string") { - origin = new URL2(origin); + function defaultAgentFactory(origin, opts) { + if (opts.connections === 1) { + return new Client2(origin, opts); + } + return new Pool(origin, opts); + } + var Http1ProxyWrapper = class extends DispatcherBase { + #client; + constructor(proxyUrl, { headers = {}, connect, factory }) { + super(); + if (!proxyUrl) { + throw new InvalidArgumentError("Proxy URL is mandatory"); } - if (origin.protocol !== "http:" && origin.protocol !== "https:") { - throw new InvalidArgumentError("ProxyClient only supports http and https protocols"); + this[kProxyHeaders] = headers; + if (factory) { + this.#client = factory(proxyUrl, { connect }); + } else { + this.#client = new Client2(proxyUrl, { connect }); } - super(); - this.#client = new Client2(origin, opts); - } - async [kClose]() { - await this.#client.close(); } - async [kDestroy]() { - await this.#client.destroy(); - } - async [kDispatch](opts, handler) { - const { method, origin } = opts; - if (method === "CONNECT") { - this.#client[kConnector]( - { - origin, - port: opts.port || defaultProtocolPort(opts.protocol), - path: opts.host, - signal: opts.signal, - headers: { - ...this[kProxyHeaders], - host: opts.host - }, - servername: this[kProxyTls]?.servername || opts.servername - }, - (err, socket) => { - if (err) { - handler.callback(err); - } else { - handler.callback(null, { socket, statusCode: 200 }); - } + [kDispatch](opts, handler) { + const onHeaders = handler.onHeaders; + handler.onHeaders = function(statusCode, data2, resume) { + if (statusCode === 407) { + if (typeof handler.onError === "function") { + handler.onError(new InvalidArgumentError("Proxy Authentication Required (407)")); } - ); - return; - } - if (typeof origin === "string") { - opts.origin = new URL2(origin); + return; + } + if (onHeaders) onHeaders.call(this, statusCode, data2, resume); + }; + const { + origin, + path: path6 = "/", + headers = {} + } = opts; + opts.path = origin + path6; + if (!("host" in headers) && !("Host" in headers)) { + const { host } = new URL2(origin); + headers.host = host; } - return this.#client.dispatch(opts, handler); + opts.headers = { ...this[kProxyHeaders], ...headers }; + return this.#client[kDispatch](opts, handler); + } + async [kClose]() { + return this.#client.close(); + } + async [kDestroy](err) { + return this.#client.destroy(err); } }; var ProxyAgent = class extends DispatcherBase { @@ -116871,6 +116897,7 @@ var require_proxy_agent2 = __commonJS({ this[kRequestTls] = opts.requestTls; this[kProxyTls] = opts.proxyTls; this[kProxyHeaders] = opts.headers || {}; + this[kTunnelProxy] = proxyTunnel; if (opts.auth && opts.token) { throw new InvalidArgumentError("opts.auth cannot be used in combination with opts.token"); } else if (opts.auth) { @@ -116880,18 +116907,24 @@ var require_proxy_agent2 = __commonJS({ } else if (username && password) { this[kProxyHeaders]["proxy-authorization"] = `Basic ${Buffer.from(`${decodeURIComponent(username)}:${decodeURIComponent(password)}`).toString("base64")}`; } - const factory = !proxyTunnel && protocol === "http:" ? (origin2, options) => { - if (origin2.protocol === "http:") { - return new ProxyClient(origin2, options); - } - return new Client2(origin2, options); - } : void 0; const connect = buildConnector({ ...opts.proxyTls }); this[kConnectEndpoint] = buildConnector({ ...opts.requestTls }); - this[kClient] = clientFactory(url, { connect, factory }); - this[kTunnelProxy] = proxyTunnel; + const agentFactory = opts.factory || defaultAgentFactory; + const factory = (origin2, options) => { + const { protocol: protocol2 } = new URL2(origin2); + if (!this[kTunnelProxy] && protocol2 === "http:" && this[kProxy].protocol === "http:") { + return new Http1ProxyWrapper(this[kProxy].uri, { + headers: this[kProxyHeaders], + connect, + factory: agentFactory + }); + } + return agentFactory(origin2, options); + }; + this[kClient] = clientFactory(url, { connect }); this[kAgent] = new Agent({ ...opts, + factory, connect: async (opts2, callback) => { let requestedPath = opts2.host; if (!opts2.port) { @@ -116942,9 +116975,6 @@ var require_proxy_agent2 = __commonJS({ const { host } = new URL2(opts.origin); headers.host = host; } - if (!this.#shouldConnect(new URL2(opts.origin))) { - opts.path = opts.origin + opts.path; - } return this[kAgent].dispatch( { ...opts, @@ -116974,18 +117004,6 @@ var require_proxy_agent2 = __commonJS({ await this[kAgent].destroy(); await this[kClient].destroy(); } - #shouldConnect(uri) { - if (typeof uri === "string") { - uri = new URL2(uri); - } - if (this[kTunnelProxy]) { - return true; - } - if (uri.protocol !== "http:" || this[kProxy].protocol !== "http:") { - return true; - } - return false; - } }; function buildHeaders(headers) { if (Array.isArray(headers)) { @@ -117646,7 +117664,7 @@ var require_readable2 = __commonJS({ } } /** - * @param {string} event + * @param {string|symbol} event * @param {(...args: any[]) => void} listener * @returns {this} */ @@ -117658,7 +117676,7 @@ var require_readable2 = __commonJS({ return super.on(event, listener); } /** - * @param {string} event + * @param {string|symbol} event * @param {(...args: any[]) => void} listener * @returns {this} */ @@ -117690,10 +117708,12 @@ var require_readable2 = __commonJS({ * @returns {boolean} */ push(chunk) { - this[kBytesRead] += chunk ? chunk.length : 0; - if (this[kConsume] && chunk !== null) { - consumePush(this[kConsume], chunk); - return this[kReading] ? super.push(chunk) : true; + if (chunk) { + this[kBytesRead] += chunk.length; + if (this[kConsume]) { + consumePush(this[kConsume], chunk); + return this[kReading] ? super.push(chunk) : true; + } } return super.push(chunk); } @@ -117844,9 +117864,7 @@ var require_readable2 = __commonJS({ if (isUnusable(stream)) { const rState = stream._readableState; if (rState.destroyed && rState.closeEmitted === false) { - stream.on("error", (err) => { - reject(err); - }).on("close", () => { + stream.on("error", reject).on("close", () => { reject(new TypeError("unusable")); }); } else { @@ -119700,7 +119718,8 @@ var require_mock_agent2 = __commonJS({ kMockAgentAddCallHistoryLog, kMockAgentMockCallHistoryInstance, kMockAgentAcceptsNonStandardSearchParameters, - kMockCallHistoryAddLog + kMockCallHistoryAddLog, + kIgnoreTrailingSlash } = require_mock_symbols2(); var MockClient = require_mock_client2(); var MockPool = require_mock_pool2(); @@ -119717,6 +119736,7 @@ var require_mock_agent2 = __commonJS({ this[kIsMockActive] = true; this[kMockAgentIsCallHistoryEnabled] = mockOptions?.enableCallHistory ?? false; this[kMockAgentAcceptsNonStandardSearchParameters] = mockOptions?.acceptNonStandardSearchParameters ?? false; + this[kIgnoreTrailingSlash] = mockOptions?.ignoreTrailingSlash ?? false; if (opts?.agent && typeof opts.agent.dispatch !== "function") { throw new InvalidArgumentError("Argument opts.agent must implement Agent"); } @@ -119729,10 +119749,11 @@ var require_mock_agent2 = __commonJS({ } } get(origin) { - let dispatcher = this[kMockAgentGet](origin); + const originKey = this[kIgnoreTrailingSlash] ? origin.replace(/\/$/, "") : origin; + let dispatcher = this[kMockAgentGet](originKey); if (!dispatcher) { - dispatcher = this[kFactory](origin); - this[kMockAgentSet](origin, dispatcher); + dispatcher = this[kFactory](originKey); + this[kMockAgentSet](originKey, dispatcher); } return dispatcher; } @@ -119858,6 +119879,664 @@ ${pendingInterceptorsFormatter.format(pending)}`.trim() } }); +// ../../node_modules/cheerio/node_modules/undici/lib/mock/snapshot-recorder.js +var require_snapshot_recorder = __commonJS({ + "../../node_modules/cheerio/node_modules/undici/lib/mock/snapshot-recorder.js"(exports2, module2) { + "use strict"; + var { writeFile: writeFile3, readFile: readFile2, mkdir } = require("node:fs/promises"); + var { dirname: dirname2, resolve } = require("node:path"); + var { InvalidArgumentError, UndiciError } = require_errors4(); + function formatRequestKey(opts, cachedSets, matchOptions = {}) { + const url = new URL(opts.path, opts.origin); + const normalized = opts._normalizedHeaders || normalizeHeaders(opts.headers); + if (!opts._normalizedHeaders) { + opts._normalizedHeaders = normalized; + } + return { + method: opts.method || "GET", + url: matchOptions.matchQuery !== false ? url.toString() : `${url.origin}${url.pathname}`, + headers: filterHeadersForMatching(normalized, cachedSets, matchOptions), + body: matchOptions.matchBody !== false && opts.body ? String(opts.body) : void 0 + }; + } + function filterHeadersForMatching(headers, cachedSets, matchOptions = {}) { + if (!headers || typeof headers !== "object") return {}; + const { + matchHeaders = null, + caseSensitive = false + } = matchOptions; + const filtered = {}; + const { ignoreSet, excludeSet, matchSet } = cachedSets; + for (const [key, value] of Object.entries(headers)) { + const headerKey = caseSensitive ? key : key.toLowerCase(); + if (excludeSet.has(headerKey)) continue; + if (ignoreSet.has(headerKey)) continue; + if (matchHeaders && Array.isArray(matchHeaders)) { + if (!matchSet.has(headerKey)) continue; + } + filtered[headerKey] = value; + } + return filtered; + } + function filterHeadersForStorage(headers, matchOptions = {}) { + if (!headers || typeof headers !== "object") return {}; + const { + excludeHeaders = [], + caseSensitive = false + } = matchOptions; + const filtered = {}; + const excludeSet = new Set(excludeHeaders.map((h) => caseSensitive ? h : h.toLowerCase())); + for (const [key, value] of Object.entries(headers)) { + const headerKey = caseSensitive ? key : key.toLowerCase(); + if (excludeSet.has(headerKey)) continue; + filtered[headerKey] = value; + } + return filtered; + } + function createHeaderSetsCache(matchOptions = {}) { + const { ignoreHeaders = [], excludeHeaders = [], matchHeaders = null, caseSensitive = false } = matchOptions; + return { + ignoreSet: new Set(ignoreHeaders.map((h) => caseSensitive ? h : h.toLowerCase())), + excludeSet: new Set(excludeHeaders.map((h) => caseSensitive ? h : h.toLowerCase())), + matchSet: matchHeaders && Array.isArray(matchHeaders) ? new Set(matchHeaders.map((h) => caseSensitive ? h : h.toLowerCase())) : null + }; + } + function normalizeHeaders(headers) { + if (!headers) return {}; + const normalized = {}; + if (Array.isArray(headers)) { + for (let i = 0; i < headers.length; i += 2) { + const key = headers[i]; + const value = headers[i + 1]; + if (key && value !== void 0) { + const keyStr = Buffer.isBuffer(key) ? key.toString() : String(key); + const valueStr = Buffer.isBuffer(value) ? value.toString() : String(value); + normalized[keyStr.toLowerCase()] = valueStr; + } + } + return normalized; + } + if (headers && typeof headers === "object") { + for (const [key, value] of Object.entries(headers)) { + if (key && typeof key === "string") { + normalized[key.toLowerCase()] = Array.isArray(value) ? value.join(", ") : String(value); + } + } + } + return normalized; + } + function createRequestHash(request) { + const parts = [ + request.method, + request.url, + JSON.stringify(request.headers, Object.keys(request.headers).sort()), + request.body || "" + ]; + return Buffer.from(parts.join("|")).toString("base64url"); + } + function isUrlExcluded(url, excludePatterns = []) { + if (!excludePatterns.length) return false; + for (const pattern of excludePatterns) { + if (typeof pattern === "string") { + if (url.toLowerCase().includes(pattern.toLowerCase())) { + return true; + } + } else if (pattern instanceof RegExp) { + if (pattern.test(url)) { + return true; + } + } + } + return false; + } + var SnapshotRecorder = class { + constructor(options = {}) { + this.snapshots = /* @__PURE__ */ new Map(); + this.snapshotPath = options.snapshotPath; + this.mode = options.mode || "record"; + this.loaded = false; + this.maxSnapshots = options.maxSnapshots || Infinity; + this.autoFlush = options.autoFlush || false; + this.flushInterval = options.flushInterval || 3e4; + this._flushTimer = null; + this._flushTimeout = null; + this.matchOptions = { + matchHeaders: options.matchHeaders || null, + // null means match all headers + ignoreHeaders: options.ignoreHeaders || [], + excludeHeaders: options.excludeHeaders || [], + matchBody: options.matchBody !== false, + // default: true + matchQuery: options.matchQuery !== false, + // default: true + caseSensitive: options.caseSensitive || false + }; + this._headerSetsCache = createHeaderSetsCache(this.matchOptions); + this.shouldRecord = options.shouldRecord || null; + this.shouldPlayback = options.shouldPlayback || null; + this.excludeUrls = options.excludeUrls || []; + if (this.autoFlush && this.snapshotPath) { + this._startAutoFlush(); + } + } + /** + * Records a request-response interaction + */ + async record(requestOpts, response) { + if (this.shouldRecord && typeof this.shouldRecord === "function") { + if (!this.shouldRecord(requestOpts)) { + return; + } + } + const url = new URL(requestOpts.path, requestOpts.origin).toString(); + if (isUrlExcluded(url, this.excludeUrls)) { + return; + } + const request = formatRequestKey(requestOpts, this._headerSetsCache, this.matchOptions); + const hash = createRequestHash(request); + const normalizedHeaders = normalizeHeaders(response.headers); + const responseData = { + statusCode: response.statusCode, + headers: filterHeadersForStorage(normalizedHeaders, this.matchOptions), + body: Buffer.isBuffer(response.body) ? response.body.toString("base64") : Buffer.from(String(response.body || "")).toString("base64"), + trailers: response.trailers + }; + if (this.snapshots.size >= this.maxSnapshots && !this.snapshots.has(hash)) { + const oldestKey = this.snapshots.keys().next().value; + this.snapshots.delete(oldestKey); + } + const existingSnapshot = this.snapshots.get(hash); + if (existingSnapshot && existingSnapshot.responses) { + existingSnapshot.responses.push(responseData); + existingSnapshot.timestamp = (/* @__PURE__ */ new Date()).toISOString(); + } else { + this.snapshots.set(hash, { + request, + responses: [responseData], + // Always store as array for consistency + callCount: 0, + timestamp: (/* @__PURE__ */ new Date()).toISOString() + }); + } + if (this.autoFlush && this.snapshotPath) { + this._scheduleFlush(); + } + } + /** + * Finds a matching snapshot for the given request + * Returns the appropriate response based on call count for sequential responses + */ + findSnapshot(requestOpts) { + if (this.shouldPlayback && typeof this.shouldPlayback === "function") { + if (!this.shouldPlayback(requestOpts)) { + return void 0; + } + } + const url = new URL(requestOpts.path, requestOpts.origin).toString(); + if (isUrlExcluded(url, this.excludeUrls)) { + return void 0; + } + const request = formatRequestKey(requestOpts, this._headerSetsCache, this.matchOptions); + const hash = createRequestHash(request); + const snapshot = this.snapshots.get(hash); + if (!snapshot) return void 0; + if (snapshot.responses && Array.isArray(snapshot.responses)) { + const currentCallCount = snapshot.callCount || 0; + const responseIndex = Math.min(currentCallCount, snapshot.responses.length - 1); + snapshot.callCount = currentCallCount + 1; + return { + ...snapshot, + response: snapshot.responses[responseIndex] + }; + } + if (snapshot.response && !snapshot.responses) { + snapshot.responses = [snapshot.response]; + snapshot.callCount = 1; + delete snapshot.response; + return { + ...snapshot, + response: snapshot.responses[0] + }; + } + return snapshot; + } + /** + * Loads snapshots from file + */ + async loadSnapshots(filePath) { + const path6 = filePath || this.snapshotPath; + if (!path6) { + throw new InvalidArgumentError("Snapshot path is required"); + } + try { + const data2 = await readFile2(resolve(path6), "utf8"); + const parsed = JSON.parse(data2); + if (Array.isArray(parsed)) { + this.snapshots.clear(); + for (const { hash, snapshot } of parsed) { + this.snapshots.set(hash, snapshot); + } + } else { + this.snapshots = new Map(Object.entries(parsed)); + } + this.loaded = true; + } catch (error2) { + if (error2.code === "ENOENT") { + this.snapshots.clear(); + this.loaded = true; + } else { + throw new UndiciError(`Failed to load snapshots from ${path6}`, { cause: error2 }); + } + } + } + /** + * Saves snapshots to file + */ + async saveSnapshots(filePath) { + const path6 = filePath || this.snapshotPath; + if (!path6) { + throw new InvalidArgumentError("Snapshot path is required"); + } + const resolvedPath = resolve(path6); + await mkdir(dirname2(resolvedPath), { recursive: true }); + const data2 = Array.from(this.snapshots.entries()).map(([hash, snapshot]) => ({ + hash, + snapshot + })); + await writeFile3(resolvedPath, JSON.stringify(data2, null, 2), "utf8", { flush: true }); + } + /** + * Clears all recorded snapshots + */ + clear() { + this.snapshots.clear(); + } + /** + * Gets all recorded snapshots + */ + getSnapshots() { + return Array.from(this.snapshots.values()); + } + /** + * Gets snapshot count + */ + size() { + return this.snapshots.size; + } + /** + * Resets call counts for all snapshots (useful for test cleanup) + */ + resetCallCounts() { + for (const snapshot of this.snapshots.values()) { + snapshot.callCount = 0; + } + } + /** + * Deletes a specific snapshot by request options + */ + deleteSnapshot(requestOpts) { + const request = formatRequestKey(requestOpts, this._headerSetsCache, this.matchOptions); + const hash = createRequestHash(request); + return this.snapshots.delete(hash); + } + /** + * Gets information about a specific snapshot + */ + getSnapshotInfo(requestOpts) { + const request = formatRequestKey(requestOpts, this._headerSetsCache, this.matchOptions); + const hash = createRequestHash(request); + const snapshot = this.snapshots.get(hash); + if (!snapshot) return null; + return { + hash, + request: snapshot.request, + responseCount: snapshot.responses ? snapshot.responses.length : snapshot.response ? 1 : 0, + callCount: snapshot.callCount || 0, + timestamp: snapshot.timestamp + }; + } + /** + * Replaces all snapshots with new data (full replacement) + */ + replaceSnapshots(snapshotData) { + this.snapshots.clear(); + if (Array.isArray(snapshotData)) { + for (const { hash, snapshot } of snapshotData) { + this.snapshots.set(hash, snapshot); + } + } else if (snapshotData && typeof snapshotData === "object") { + this.snapshots = new Map(Object.entries(snapshotData)); + } + } + /** + * Starts the auto-flush timer + */ + _startAutoFlush() { + if (!this._flushTimer) { + this._flushTimer = setInterval(() => { + this.saveSnapshots().catch(() => { + }); + }, this.flushInterval); + } + } + /** + * Stops the auto-flush timer + */ + _stopAutoFlush() { + if (this._flushTimer) { + clearInterval(this._flushTimer); + this._flushTimer = null; + } + } + /** + * Schedules a flush (debounced to avoid excessive writes) + */ + _scheduleFlush() { + if (this._flushTimeout) { + clearTimeout(this._flushTimeout); + } + this._flushTimeout = setTimeout(() => { + this.saveSnapshots().catch(() => { + }); + this._flushTimeout = null; + }, 1e3); + } + /** + * Cleanup method to stop timers + */ + destroy() { + this._stopAutoFlush(); + if (this._flushTimeout) { + clearTimeout(this._flushTimeout); + this._flushTimeout = null; + } + } + /** + * Async close method that saves all recordings and performs cleanup + */ + async close() { + if (this.snapshotPath && this.snapshots.size > 0) { + await this.saveSnapshots(); + } + this.destroy(); + } + }; + module2.exports = { SnapshotRecorder, formatRequestKey, createRequestHash, filterHeadersForMatching, filterHeadersForStorage, isUrlExcluded, createHeaderSetsCache }; + } +}); + +// ../../node_modules/cheerio/node_modules/undici/lib/mock/snapshot-agent.js +var require_snapshot_agent = __commonJS({ + "../../node_modules/cheerio/node_modules/undici/lib/mock/snapshot-agent.js"(exports2, module2) { + "use strict"; + var Agent = require_agent2(); + var MockAgent = require_mock_agent2(); + var { SnapshotRecorder } = require_snapshot_recorder(); + var WrapHandler = require_wrap_handler(); + var { InvalidArgumentError, UndiciError } = require_errors4(); + var kSnapshotRecorder = Symbol("kSnapshotRecorder"); + var kSnapshotMode = Symbol("kSnapshotMode"); + var kSnapshotPath = Symbol("kSnapshotPath"); + var kSnapshotLoaded = Symbol("kSnapshotLoaded"); + var kRealAgent = Symbol("kRealAgent"); + var warningEmitted = false; + var SnapshotAgent = class extends MockAgent { + constructor(opts = {}) { + if (!warningEmitted) { + process.emitWarning( + "SnapshotAgent is experimental and subject to change", + "ExperimentalWarning" + ); + warningEmitted = true; + } + const mockOptions = { ...opts }; + delete mockOptions.mode; + delete mockOptions.snapshotPath; + super(mockOptions); + const validModes = ["record", "playback", "update"]; + const mode = opts.mode || "record"; + if (!validModes.includes(mode)) { + throw new InvalidArgumentError(`Invalid snapshot mode: ${mode}. Must be one of: ${validModes.join(", ")}`); + } + if ((mode === "playback" || mode === "update") && !opts.snapshotPath) { + throw new InvalidArgumentError(`snapshotPath is required when mode is '${mode}'`); + } + this[kSnapshotMode] = mode; + this[kSnapshotPath] = opts.snapshotPath; + this[kSnapshotRecorder] = new SnapshotRecorder({ + snapshotPath: this[kSnapshotPath], + mode: this[kSnapshotMode], + maxSnapshots: opts.maxSnapshots, + autoFlush: opts.autoFlush, + flushInterval: opts.flushInterval, + matchHeaders: opts.matchHeaders, + ignoreHeaders: opts.ignoreHeaders, + excludeHeaders: opts.excludeHeaders, + matchBody: opts.matchBody, + matchQuery: opts.matchQuery, + caseSensitive: opts.caseSensitive, + shouldRecord: opts.shouldRecord, + shouldPlayback: opts.shouldPlayback, + excludeUrls: opts.excludeUrls + }); + this[kSnapshotLoaded] = false; + if (this[kSnapshotMode] === "record" || this[kSnapshotMode] === "update") { + this[kRealAgent] = new Agent(opts); + } + if ((this[kSnapshotMode] === "playback" || this[kSnapshotMode] === "update") && this[kSnapshotPath]) { + this.loadSnapshots().catch(() => { + }); + } + } + dispatch(opts, handler) { + handler = WrapHandler.wrap(handler); + const mode = this[kSnapshotMode]; + if (mode === "playback" || mode === "update") { + if (!this[kSnapshotLoaded]) { + return this._asyncDispatch(opts, handler); + } + const snapshot = this[kSnapshotRecorder].findSnapshot(opts); + if (snapshot) { + return this._replaySnapshot(snapshot, handler); + } else if (mode === "update") { + return this._recordAndReplay(opts, handler); + } else { + const error2 = new UndiciError(`No snapshot found for ${opts.method || "GET"} ${opts.path}`); + if (handler.onError) { + handler.onError(error2); + return; + } + throw error2; + } + } else if (mode === "record") { + return this._recordAndReplay(opts, handler); + } else { + throw new InvalidArgumentError(`Invalid snapshot mode: ${mode}. Must be 'record', 'playback', or 'update'`); + } + } + /** + * Async version of dispatch for when we need to load snapshots first + */ + async _asyncDispatch(opts, handler) { + await this.loadSnapshots(); + return this.dispatch(opts, handler); + } + /** + * Records a real request and replays the response + */ + _recordAndReplay(opts, handler) { + const responseData = { + statusCode: null, + headers: {}, + trailers: {}, + body: [] + }; + const self2 = this; + const recordingHandler = { + onRequestStart(controller, context3) { + return handler.onRequestStart(controller, { ...context3, history: this.history }); + }, + onRequestUpgrade(controller, statusCode, headers, socket) { + return handler.onRequestUpgrade(controller, statusCode, headers, socket); + }, + onResponseStart(controller, statusCode, headers, statusMessage) { + responseData.statusCode = statusCode; + responseData.headers = headers; + return handler.onResponseStart(controller, statusCode, headers, statusMessage); + }, + onResponseData(controller, chunk) { + responseData.body.push(chunk); + return handler.onResponseData(controller, chunk); + }, + onResponseEnd(controller, trailers) { + responseData.trailers = trailers; + const responseBody = Buffer.concat(responseData.body); + self2[kSnapshotRecorder].record(opts, { + statusCode: responseData.statusCode, + headers: responseData.headers, + body: responseBody, + trailers: responseData.trailers + }).then(() => { + handler.onResponseEnd(controller, trailers); + }).catch((error2) => { + handler.onResponseError(controller, error2); + }); + } + }; + const agent = this[kRealAgent]; + return agent.dispatch(opts, recordingHandler); + } + /** + * Replays a recorded response + */ + _replaySnapshot(snapshot, handler) { + return new Promise((resolve) => { + setImmediate(() => { + try { + const { response } = snapshot; + const controller = { + pause() { + }, + resume() { + }, + abort(reason) { + this.aborted = true; + this.reason = reason; + }, + aborted: false, + paused: false + }; + handler.onRequestStart(controller); + handler.onResponseStart(controller, response.statusCode, response.headers); + const body = Buffer.from(response.body, "base64"); + handler.onResponseData(controller, body); + handler.onResponseEnd(controller, response.trailers); + resolve(); + } catch (error2) { + handler.onError?.(error2); + } + }); + }); + } + /** + * Loads snapshots from file + */ + async loadSnapshots(filePath) { + await this[kSnapshotRecorder].loadSnapshots(filePath || this[kSnapshotPath]); + this[kSnapshotLoaded] = true; + if (this[kSnapshotMode] === "playback") { + this._setupMockInterceptors(); + } + } + /** + * Saves snapshots to file + */ + async saveSnapshots(filePath) { + return this[kSnapshotRecorder].saveSnapshots(filePath || this[kSnapshotPath]); + } + /** + * Sets up MockAgent interceptors based on recorded snapshots. + * + * This method creates MockAgent interceptors for each recorded snapshot, + * allowing the SnapshotAgent to fall back to MockAgent's standard intercept + * mechanism in playback mode. Each interceptor is configured to persist + * (remain active for multiple requests) and responds with the recorded + * response data. + * + * Called automatically when loading snapshots in playback mode. + * + * @private + */ + _setupMockInterceptors() { + for (const snapshot of this[kSnapshotRecorder].getSnapshots()) { + const { request, responses, response } = snapshot; + const url = new URL(request.url); + const mockPool = this.get(url.origin); + const responseData = responses ? responses[0] : response; + if (!responseData) continue; + mockPool.intercept({ + path: url.pathname + url.search, + method: request.method, + headers: request.headers, + body: request.body + }).reply(responseData.statusCode, responseData.body, { + headers: responseData.headers, + trailers: responseData.trailers + }).persist(); + } + } + /** + * Gets the snapshot recorder + */ + getRecorder() { + return this[kSnapshotRecorder]; + } + /** + * Gets the current mode + */ + getMode() { + return this[kSnapshotMode]; + } + /** + * Clears all snapshots + */ + clearSnapshots() { + this[kSnapshotRecorder].clear(); + } + /** + * Resets call counts for all snapshots (useful for test cleanup) + */ + resetCallCounts() { + this[kSnapshotRecorder].resetCallCounts(); + } + /** + * Deletes a specific snapshot by request options + */ + deleteSnapshot(requestOpts) { + return this[kSnapshotRecorder].deleteSnapshot(requestOpts); + } + /** + * Gets information about a specific snapshot + */ + getSnapshotInfo(requestOpts) { + return this[kSnapshotRecorder].getSnapshotInfo(requestOpts); + } + /** + * Replaces all snapshots with new data (full replacement) + */ + replaceSnapshots(snapshotData) { + this[kSnapshotRecorder].replaceSnapshots(snapshotData); + } + async close() { + await this[kSnapshotRecorder].close(); + await this[kRealAgent]?.close(); + await super.close(); + } + }; + module2.exports = SnapshotAgent; + } +}); + // ../../node_modules/cheerio/node_modules/undici/lib/global.js var require_global4 = __commonJS({ "../../node_modules/cheerio/node_modules/undici/lib/global.js"(exports2, module2) { @@ -120040,6 +120719,12 @@ var require_redirect_handler = __commonJS({ } const { origin, pathname, search } = util.parseURL(new URL(this.location, this.opts.origin && new URL(this.opts.path, this.opts.origin))); const path6 = search ? `${pathname}${search}` : pathname; + const redirectUrlString = `${origin}${path6}`; + for (const historyUrl of this.history) { + if (historyUrl.toString() === redirectUrlString) { + throw new InvalidArgumentError(`Redirect loop detected. Cannot redirect to ${origin}. This typically happens when using a Client or Pool with cross-origin redirects. Use an Agent for cross-origin redirects.`); + } + } this.opts.headers = cleanRequestHeaders(this.opts.headers, statusCode === 303, this.opts.origin !== origin); this.opts.path = path6; this.opts.origin = origin; @@ -120272,7 +120957,7 @@ var require_dump = __commonJS({ if (this.#dumped) { return; } - err = this.#controller.reason ?? err; + err = this.#controller?.reason ?? err; super.onResponseError(controller, err); } onResponseData(controller, chunk) { @@ -128735,6 +129420,7 @@ var require_undici2 = __commonJS({ var { MockCallHistory, MockCallHistoryLog } = require_mock_call_history(); var MockAgent = require_mock_agent2(); var MockPool = require_mock_pool2(); + var SnapshotAgent = require_snapshot_agent(); var mockErrors = require_mock_errors2(); var RetryHandler = require_retry_handler(); var { getGlobalDispatcher, setGlobalDispatcher } = require_global4(); @@ -128862,6 +129548,7 @@ var require_undici2 = __commonJS({ module2.exports.MockCallHistoryLog = MockCallHistoryLog; module2.exports.MockPool = MockPool; module2.exports.MockAgent = MockAgent; + module2.exports.SnapshotAgent = SnapshotAgent; module2.exports.mockErrors = mockErrors; var { EventSource } = require_eventsource(); module2.exports.EventSource = EventSource; diff --git a/dist/post/index.cjs b/dist/post/index.cjs index 0ffe3268..d0541f33 100644 --- a/dist/post/index.cjs +++ b/dist/post/index.cjs @@ -62857,7 +62857,7 @@ var require_package = __commonJS({ "../../node_modules/@actions/cache/package.json"(exports2, module2) { module2.exports = { name: "@actions/cache", - version: "4.0.3", + version: "4.0.5", preview: true, description: "Actions cache lib", keywords: [ @@ -62897,17 +62897,18 @@ var require_package = __commonJS({ "@actions/core": "^1.11.1", "@actions/exec": "^1.0.1", "@actions/glob": "^0.1.0", + "@protobuf-ts/runtime-rpc": "^2.11.1", "@actions/http-client": "^2.1.1", "@actions/io": "^1.0.1", "@azure/abort-controller": "^1.1.0", "@azure/ms-rest-js": "^2.6.0", "@azure/storage-blob": "^12.13.0", - "@protobuf-ts/plugin": "^2.9.4", semver: "^6.3.1" }, devDependencies: { "@types/node": "^22.13.9", "@types/semver": "^6.0.0", + "@protobuf-ts/plugin": "^2.9.4", typescript: "^5.2.2" } }; @@ -68620,6 +68621,7 @@ var require_cache4 = __commonJS({ var config_1 = require_config(); var tar_1 = require_tar(); var constants_1 = require_constants6(); + var http_client_1 = require_lib(); var ValidationError = class _ValidationError extends Error { constructor(message) { super(message); @@ -68651,7 +68653,14 @@ var require_cache4 = __commonJS({ } } function isFeatureAvailable2() { - return !!process.env["ACTIONS_CACHE_URL"]; + const cacheServiceVersion = (0, config_1.getCacheServiceVersion)(); + switch (cacheServiceVersion) { + case "v2": + return !!process.env["ACTIONS_RESULTS_URL"]; + case "v1": + default: + return !!process.env["ACTIONS_CACHE_URL"]; + } } exports2.isFeatureAvailable = isFeatureAvailable2; function restoreCache2(paths, primaryKey, restoreKeys, options, enableCrossOsArchive = false) { @@ -68711,7 +68720,11 @@ var require_cache4 = __commonJS({ if (typedError.name === ValidationError.name) { throw error2; } else { - core5.warning(`Failed to restore: ${error2.message}`); + if (typedError instanceof http_client_1.HttpClientError && typeof typedError.statusCode === "number" && typedError.statusCode >= 500) { + core5.error(`Failed to restore: ${error2.message}`); + } else { + core5.warning(`Failed to restore: ${error2.message}`); + } } } finally { try { @@ -68750,7 +68763,12 @@ var require_cache4 = __commonJS({ core5.debug(`Cache not found for version ${request.version} of keys: ${keys.join(", ")}`); return void 0; } - core5.info(`Cache hit for: ${request.key}`); + const isRestoreKeyMatch = request.key !== response.matchedKey; + if (isRestoreKeyMatch) { + core5.info(`Cache hit for restore-key: ${response.matchedKey}`); + } else { + core5.info(`Cache hit for: ${response.matchedKey}`); + } if (options === null || options === void 0 ? void 0 : options.lookupOnly) { core5.info("Lookup only - skipping download"); return response.matchedKey; @@ -68772,7 +68790,11 @@ var require_cache4 = __commonJS({ if (typedError.name === ValidationError.name) { throw error2; } else { - core5.warning(`Failed to restore: ${error2.message}`); + if (typedError instanceof http_client_1.HttpClientError && typeof typedError.statusCode === "number" && typedError.statusCode >= 500) { + core5.error(`Failed to restore: ${error2.message}`); + } else { + core5.warning(`Failed to restore: ${error2.message}`); + } } } finally { try { @@ -68849,7 +68871,11 @@ var require_cache4 = __commonJS({ } else if (typedError.name === ReserveCacheError.name) { core5.info(`Failed to save: ${typedError.message}`); } else { - core5.warning(`Failed to save: ${typedError.message}`); + if (typedError instanceof http_client_1.HttpClientError && typeof typedError.statusCode === "number" && typedError.statusCode >= 500) { + core5.error(`Failed to save: ${typedError.message}`); + } else { + core5.warning(`Failed to save: ${typedError.message}`); + } } } finally { try { @@ -68924,7 +68950,11 @@ var require_cache4 = __commonJS({ } else if (typedError.name === ReserveCacheError.name) { core5.info(`Failed to save: ${typedError.message}`); } else { - core5.warning(`Failed to save: ${typedError.message}`); + if (typedError instanceof http_client_1.HttpClientError && typeof typedError.statusCode === "number" && typedError.statusCode >= 500) { + core5.error(`Failed to save: ${typedError.message}`); + } else { + core5.warning(`Failed to save: ${typedError.message}`); + } } } finally { try { @@ -92479,7 +92509,7 @@ ${indent}`) + "'"; } function blockString({ comment, type, value }, ctx, onComment, onChompKeep) { const { blockQuote, commentString, lineWidth } = ctx.options; - if (!blockQuote || /\n[\t ]+$/.test(value) || /^\s*$/.test(value)) { + if (!blockQuote || /\n[\t ]+$/.test(value)) { return quotedString(value, ctx); } const indent = ctx.indent || (ctx.forceBlockIndent || containsDocumentMarker(value) ? " " : ""); diff --git a/package.json b/package.json index a1c14479..fffac290 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "setup-ocaml", - "version": "3.4.1", + "version": "3.4.2", "private": true, "type": "module", "workspaces": [ @@ -14,7 +14,7 @@ "typecheck": "turbo run typecheck --continue --parallel" }, "devDependencies": { - "@biomejs/biome": "2.1.2", + "@biomejs/biome": "2.1.4", "turbo": "2.5.5" }, "packageManager": "yarn@4.9.2" diff --git a/packages/analysis/package.json b/packages/analysis/package.json index 54346c99..b045ebce 100644 --- a/packages/analysis/package.json +++ b/packages/analysis/package.json @@ -19,8 +19,8 @@ "devDependencies": { "@tsconfig/node24": "24.0.1", "@tsconfig/strictest": "2.0.5", - "@types/node": "24.1.0", + "@types/node": "24.2.0", "esbuild": "0.25.8", - "typescript": "5.8.3" + "typescript": "5.9.2" } } diff --git a/packages/lint-doc/package.json b/packages/lint-doc/package.json index 4df933ec..6162b63d 100644 --- a/packages/lint-doc/package.json +++ b/packages/lint-doc/package.json @@ -14,8 +14,8 @@ "devDependencies": { "@tsconfig/node24": "24.0.1", "@tsconfig/strictest": "2.0.5", - "@types/node": "24.1.0", + "@types/node": "24.2.0", "esbuild": "0.25.8", - "typescript": "5.8.3" + "typescript": "5.9.2" } } diff --git a/packages/lint-fmt/package.json b/packages/lint-fmt/package.json index 64001f0b..441ddece 100644 --- a/packages/lint-fmt/package.json +++ b/packages/lint-fmt/package.json @@ -14,8 +14,8 @@ "devDependencies": { "@tsconfig/node24": "24.0.1", "@tsconfig/strictest": "2.0.5", - "@types/node": "24.1.0", + "@types/node": "24.2.0", "esbuild": "0.25.8", - "typescript": "5.8.3" + "typescript": "5.9.2" } } diff --git a/packages/lint-opam/package.json b/packages/lint-opam/package.json index 2ea80fff..ed9fe941 100644 --- a/packages/lint-opam/package.json +++ b/packages/lint-opam/package.json @@ -14,8 +14,8 @@ "devDependencies": { "@tsconfig/node24": "24.0.1", "@tsconfig/strictest": "2.0.5", - "@types/node": "24.1.0", + "@types/node": "24.2.0", "esbuild": "0.25.8", - "typescript": "5.8.3" + "typescript": "5.9.2" } } diff --git a/packages/setup-ocaml/package.json b/packages/setup-ocaml/package.json index 9a1bb43e..46d94aea 100644 --- a/packages/setup-ocaml/package.json +++ b/packages/setup-ocaml/package.json @@ -9,7 +9,7 @@ "typecheck": "tsc" }, "dependencies": { - "@actions/cache": "4.0.3", + "@actions/cache": "4.0.5", "@actions/core": "1.11.1", "@actions/exec": "1.1.1", "@actions/github": "6.0.1", @@ -22,14 +22,14 @@ "exponential-backoff": "3.1.2", "semver": "7.7.2", "systeminformation": "5.27.7", - "yaml": "2.8.0" + "yaml": "2.8.1" }, "devDependencies": { "@tsconfig/node24": "24.0.1", "@tsconfig/strictest": "2.0.5", - "@types/node": "24.1.0", + "@types/node": "24.2.0", "@types/semver": "7.7.0", "esbuild": "0.25.8", - "typescript": "5.8.3" + "typescript": "5.9.2" } } diff --git a/yarn.lock b/yarn.lock index f80f2085..10cfaba5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,9 +5,9 @@ __metadata: version: 8 cacheKey: 10c0 -"@actions/cache@npm:4.0.3": - version: 4.0.3 - resolution: "@actions/cache@npm:4.0.3" +"@actions/cache@npm:4.0.5": + version: 4.0.5 + resolution: "@actions/cache@npm:4.0.5" dependencies: "@actions/core": "npm:^1.11.1" "@actions/exec": "npm:^1.0.1" @@ -17,9 +17,9 @@ __metadata: "@azure/abort-controller": "npm:^1.1.0" "@azure/ms-rest-js": "npm:^2.6.0" "@azure/storage-blob": "npm:^12.13.0" - "@protobuf-ts/plugin": "npm:^2.9.4" + "@protobuf-ts/runtime-rpc": "npm:^2.11.1" semver: "npm:^6.3.1" - checksum: 10c0/5558ffe4b02ffab1e62d96579736d04664e340cfe5ab70909f8e5c898d5530bd4b81015de3f280cd038bc6d69bc20c1c0c82a1f42b9c4a0cd2f6ad99f4b2aaab + checksum: 10c0/98e6528e61a8d9b11fac55686af06b36bcfa4f30f731908f68f08ed8a3ec0f253937998c79baf3a8922d430d972b69d690cbe32c8a536d99acaee4140e2337f2 languageName: node linkType: hard @@ -277,8 +277,8 @@ __metadata: linkType: hard "@azure/storage-common@npm:^12.0.0-beta.2": - version: 12.0.0 - resolution: "@azure/storage-common@npm:12.0.0" + version: 12.0.1 + resolution: "@azure/storage-common@npm:12.0.1" dependencies: "@azure/abort-controller": "npm:^2.1.2" "@azure/core-auth": "npm:^1.9.0" @@ -289,22 +289,22 @@ __metadata: "@azure/logger": "npm:^1.1.4" events: "npm:^3.3.0" tslib: "npm:^2.8.1" - checksum: 10c0/79cd046142b71ceb85e2961855a8229c5476ac05136b65a5c79717384b3c53253b0ced5a71bc7eb87a7320a8cffb3b2b440105dc56baf1fe4fceecd174f7f86e + checksum: 10c0/4f08134b8bdcda45d69107eb3897877b1689db445cd92d6c00f1dcb9490287b00cacd316fda5009f8a78d939643fe5422a9e33a809d72a2d38d8bc2c24f6d8ec languageName: node linkType: hard -"@biomejs/biome@npm:2.1.2": - version: 2.1.2 - resolution: "@biomejs/biome@npm:2.1.2" - dependencies: - "@biomejs/cli-darwin-arm64": "npm:2.1.2" - "@biomejs/cli-darwin-x64": "npm:2.1.2" - "@biomejs/cli-linux-arm64": "npm:2.1.2" - "@biomejs/cli-linux-arm64-musl": "npm:2.1.2" - "@biomejs/cli-linux-x64": "npm:2.1.2" - "@biomejs/cli-linux-x64-musl": "npm:2.1.2" - "@biomejs/cli-win32-arm64": "npm:2.1.2" - "@biomejs/cli-win32-x64": "npm:2.1.2" +"@biomejs/biome@npm:2.1.4": + version: 2.1.4 + resolution: "@biomejs/biome@npm:2.1.4" + dependencies: + "@biomejs/cli-darwin-arm64": "npm:2.1.4" + "@biomejs/cli-darwin-x64": "npm:2.1.4" + "@biomejs/cli-linux-arm64": "npm:2.1.4" + "@biomejs/cli-linux-arm64-musl": "npm:2.1.4" + "@biomejs/cli-linux-x64": "npm:2.1.4" + "@biomejs/cli-linux-x64-musl": "npm:2.1.4" + "@biomejs/cli-win32-arm64": "npm:2.1.4" + "@biomejs/cli-win32-x64": "npm:2.1.4" dependenciesMeta: "@biomejs/cli-darwin-arm64": optional: true @@ -324,84 +324,66 @@ __metadata: optional: true bin: biome: bin/biome - checksum: 10c0/4863a5d64ff7e47c1f535aca3c0d59769fd1e59868b178798bf1f10de94f41188f235accddb852778743b16239dd890a520266dd2f93ecbcd147ad339caa8e23 + checksum: 10c0/4e25e80cf2f1ec23a84426fab415f1cf994b09a5f1481a1ea5c4a3d247e70a8d064357c3c4e91a00b7003a5cd254872a370d1df538c42d67d8d8a61b15f2df14 languageName: node linkType: hard -"@biomejs/cli-darwin-arm64@npm:2.1.2": - version: 2.1.2 - resolution: "@biomejs/cli-darwin-arm64@npm:2.1.2" +"@biomejs/cli-darwin-arm64@npm:2.1.4": + version: 2.1.4 + resolution: "@biomejs/cli-darwin-arm64@npm:2.1.4" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@biomejs/cli-darwin-x64@npm:2.1.2": - version: 2.1.2 - resolution: "@biomejs/cli-darwin-x64@npm:2.1.2" +"@biomejs/cli-darwin-x64@npm:2.1.4": + version: 2.1.4 + resolution: "@biomejs/cli-darwin-x64@npm:2.1.4" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@biomejs/cli-linux-arm64-musl@npm:2.1.2": - version: 2.1.2 - resolution: "@biomejs/cli-linux-arm64-musl@npm:2.1.2" +"@biomejs/cli-linux-arm64-musl@npm:2.1.4": + version: 2.1.4 + resolution: "@biomejs/cli-linux-arm64-musl@npm:2.1.4" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@biomejs/cli-linux-arm64@npm:2.1.2": - version: 2.1.2 - resolution: "@biomejs/cli-linux-arm64@npm:2.1.2" +"@biomejs/cli-linux-arm64@npm:2.1.4": + version: 2.1.4 + resolution: "@biomejs/cli-linux-arm64@npm:2.1.4" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@biomejs/cli-linux-x64-musl@npm:2.1.2": - version: 2.1.2 - resolution: "@biomejs/cli-linux-x64-musl@npm:2.1.2" +"@biomejs/cli-linux-x64-musl@npm:2.1.4": + version: 2.1.4 + resolution: "@biomejs/cli-linux-x64-musl@npm:2.1.4" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@biomejs/cli-linux-x64@npm:2.1.2": - version: 2.1.2 - resolution: "@biomejs/cli-linux-x64@npm:2.1.2" +"@biomejs/cli-linux-x64@npm:2.1.4": + version: 2.1.4 + resolution: "@biomejs/cli-linux-x64@npm:2.1.4" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@biomejs/cli-win32-arm64@npm:2.1.2": - version: 2.1.2 - resolution: "@biomejs/cli-win32-arm64@npm:2.1.2" +"@biomejs/cli-win32-arm64@npm:2.1.4": + version: 2.1.4 + resolution: "@biomejs/cli-win32-arm64@npm:2.1.4" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@biomejs/cli-win32-x64@npm:2.1.2": - version: 2.1.2 - resolution: "@biomejs/cli-win32-x64@npm:2.1.2" +"@biomejs/cli-win32-x64@npm:2.1.4": + version: 2.1.4 + resolution: "@biomejs/cli-win32-x64@npm:2.1.4" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@bufbuild/protobuf@npm:2.6.2, @bufbuild/protobuf@npm:^2.4.0": - version: 2.6.2 - resolution: "@bufbuild/protobuf@npm:2.6.2" - checksum: 10c0/e191fa17ae253eeb65671a2e0b8efb205772937a21906724bb4d362681a2105e81a5c1b0bf9170cbb500d1db62e8becd16bc125a0516880e3abbc16ae8336e21 - languageName: node - linkType: hard - -"@bufbuild/protoplugin@npm:^2.4.0": - version: 2.6.2 - resolution: "@bufbuild/protoplugin@npm:2.6.2" - dependencies: - "@bufbuild/protobuf": "npm:2.6.2" - "@typescript/vfs": "npm:^1.5.2" - typescript: "npm:5.4.5" - checksum: 10c0/9e7e011d8b53cad4c4d65a99db50422a79710eb804de84fca451cf85b0d8f7b30bcff6bd04ec32422a4a787c4d5d927a08cea6f71c8ceb2649d21c43640f4695 - languageName: node - linkType: hard - "@esbuild/aix-ppc64@npm:0.25.8": version: 0.25.8 resolution: "@esbuild/aix-ppc64@npm:0.25.8" @@ -615,11 +597,11 @@ __metadata: "@github/dependency-submission-toolkit": "npm:2.0.5" "@tsconfig/node24": "npm:24.0.1" "@tsconfig/strictest": "npm:2.0.5" - "@types/node": "npm:24.1.0" + "@types/node": "npm:24.2.0" esbuild: "npm:0.25.8" packageurl-js: "npm:2.0.1" strip-ansi: "npm:7.1.0" - typescript: "npm:5.8.3" + typescript: "npm:5.9.2" languageName: unknown linkType: soft @@ -631,9 +613,9 @@ __metadata: "@actions/exec": "npm:1.1.1" "@tsconfig/node24": "npm:24.0.1" "@tsconfig/strictest": "npm:2.0.5" - "@types/node": "npm:24.1.0" + "@types/node": "npm:24.2.0" esbuild: "npm:0.25.8" - typescript: "npm:5.8.3" + typescript: "npm:5.9.2" languageName: unknown linkType: soft @@ -645,9 +627,9 @@ __metadata: "@actions/exec": "npm:1.1.1" "@tsconfig/node24": "npm:24.0.1" "@tsconfig/strictest": "npm:2.0.5" - "@types/node": "npm:24.1.0" + "@types/node": "npm:24.2.0" esbuild: "npm:0.25.8" - typescript: "npm:5.8.3" + typescript: "npm:5.9.2" languageName: unknown linkType: soft @@ -659,9 +641,9 @@ __metadata: "@actions/exec": "npm:1.1.1" "@tsconfig/node24": "npm:24.0.1" "@tsconfig/strictest": "npm:2.0.5" - "@types/node": "npm:24.1.0" + "@types/node": "npm:24.2.0" esbuild: "npm:0.25.8" - typescript: "npm:5.8.3" + typescript: "npm:5.9.2" languageName: unknown linkType: soft @@ -669,7 +651,7 @@ __metadata: version: 0.0.0-use.local resolution: "@ocaml/setup-ocaml@workspace:packages/setup-ocaml" dependencies: - "@actions/cache": "npm:4.0.3" + "@actions/cache": "npm:4.0.5" "@actions/core": "npm:1.11.1" "@actions/exec": "npm:1.1.1" "@actions/github": "npm:6.0.1" @@ -680,15 +662,15 @@ __metadata: "@octokit/plugin-retry": "npm:8.0.1" "@tsconfig/node24": "npm:24.0.1" "@tsconfig/strictest": "npm:2.0.5" - "@types/node": "npm:24.1.0" + "@types/node": "npm:24.2.0" "@types/semver": "npm:7.7.0" cheerio: "npm:1.1.2" esbuild: "npm:0.25.8" exponential-backoff: "npm:3.1.2" semver: "npm:7.7.2" systeminformation: "npm:5.27.7" - typescript: "npm:5.8.3" - yaml: "npm:2.8.0" + typescript: "npm:5.9.2" + yaml: "npm:2.8.1" languageName: unknown linkType: soft @@ -866,32 +848,6 @@ __metadata: languageName: node linkType: hard -"@protobuf-ts/plugin@npm:^2.9.4": - version: 2.11.1 - resolution: "@protobuf-ts/plugin@npm:2.11.1" - dependencies: - "@bufbuild/protobuf": "npm:^2.4.0" - "@bufbuild/protoplugin": "npm:^2.4.0" - "@protobuf-ts/protoc": "npm:^2.11.1" - "@protobuf-ts/runtime": "npm:^2.11.1" - "@protobuf-ts/runtime-rpc": "npm:^2.11.1" - typescript: "npm:^3.9" - bin: - protoc-gen-dump: bin/protoc-gen-dump - protoc-gen-ts: bin/protoc-gen-ts - checksum: 10c0/32e1c89b7f02fefa6d14b477c0ce12319b4d96d33744ad7faadf5cd5ee415c7ac376b9ca74cd12b9fbb98b210ef8cb0d88bf95e0709e85994c12589e6af72013 - languageName: node - linkType: hard - -"@protobuf-ts/protoc@npm:^2.11.1": - version: 2.11.1 - resolution: "@protobuf-ts/protoc@npm:2.11.1" - bin: - protoc: protoc.js - checksum: 10c0/6a3cbcaeede068c94b48273271426192f438328e13019aafebb88e1153efac38b3ad358603751d7ac8b1d2cbef5ff515eaf960796dcce9daafbe2013255bdb0e - languageName: node - linkType: hard - "@protobuf-ts/runtime-rpc@npm:^2.11.1": version: 2.11.1 resolution: "@protobuf-ts/runtime-rpc@npm:2.11.1" @@ -922,12 +878,12 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:24.1.0": - version: 24.1.0 - resolution: "@types/node@npm:24.1.0" +"@types/node@npm:24.2.0": + version: 24.2.0 + resolution: "@types/node@npm:24.2.0" dependencies: - undici-types: "npm:~7.8.0" - checksum: 10c0/6c4686bc144f6ce7bffd4cadc3e1196e2217c1da4c639c637213719c8a3ee58b6c596b994befcbffeacd9d9eb0c3bff6529d2bc27da5d1cb9d58b1da0056f9f4 + undici-types: "npm:~7.10.0" + checksum: 10c0/0b55af4d7b37fea47bbeffffaff908462fa19ea9b1a18f92d9ed6d8415d97971b254f8cb3f629cd238916e94711fdb6ac939aa750cb353dfd6df6c0339435740 languageName: node linkType: hard @@ -938,17 +894,6 @@ __metadata: languageName: node linkType: hard -"@typescript/vfs@npm:^1.5.2": - version: 1.6.1 - resolution: "@typescript/vfs@npm:1.6.1" - dependencies: - debug: "npm:^4.1.1" - peerDependencies: - typescript: "*" - checksum: 10c0/3878686aff4bf26813dad9242aa8e01c5c9734f4d37f31035f93e9c8b850f15ec6a4480f04cf3a3a1cbf78a4e796ae1be5d6c54f7f7c91556eafee913a8d0da4 - languageName: node - linkType: hard - "@typespec/ts-http-runtime@npm:^0.3.0": version: 0.3.0 resolution: "@typespec/ts-http-runtime@npm:0.3.0" @@ -1107,7 +1052,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.1.1, debug@npm:^4.3.4": +"debug@npm:4, debug@npm:^4.3.4": version: 4.4.1 resolution: "debug@npm:4.4.1" dependencies: @@ -1640,7 +1585,7 @@ __metadata: version: 0.0.0-use.local resolution: "setup-ocaml@workspace:." dependencies: - "@biomejs/biome": "npm:2.1.2" + "@biomejs/biome": "npm:2.1.4" turbo: "npm:2.5.5" languageName: unknown linkType: soft @@ -1770,70 +1715,30 @@ __metadata: languageName: node linkType: hard -"typescript@npm:5.4.5": - version: 5.4.5 - resolution: "typescript@npm:5.4.5" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 10c0/2954022ada340fd3d6a9e2b8e534f65d57c92d5f3989a263754a78aba549f7e6529acc1921913560a4b816c46dce7df4a4d29f9f11a3dc0d4213bb76d043251e - languageName: node - linkType: hard - -"typescript@npm:5.8.3": - version: 5.8.3 - resolution: "typescript@npm:5.8.3" +"typescript@npm:5.9.2": + version: 5.9.2 + resolution: "typescript@npm:5.9.2" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10c0/5f8bb01196e542e64d44db3d16ee0e4063ce4f3e3966df6005f2588e86d91c03e1fb131c2581baf0fb65ee79669eea6e161cd448178986587e9f6844446dbb48 + checksum: 10c0/cd635d50f02d6cf98ed42de2f76289701c1ec587a363369255f01ed15aaf22be0813226bff3c53e99d971f9b540e0b3cc7583dbe05faded49b1b0bed2f638a18 languageName: node linkType: hard -"typescript@npm:^3.9": - version: 3.9.10 - resolution: "typescript@npm:3.9.10" +"typescript@patch:typescript@npm%3A5.9.2#optional!builtin": + version: 5.9.2 + resolution: "typescript@patch:typescript@npm%3A5.9.2#optional!builtin::version=5.9.2&hash=5786d5" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10c0/863cc06070fa18a0f9c6a83265fb4922a8b51bf6f2c6760fb0b73865305ce617ea4bc6477381f9f4b7c3a8cb4a455b054f5469e6e41307733fe6a2bd9aae82f8 + checksum: 10c0/34d2a8e23eb8e0d1875072064d5e1d9c102e0bdce56a10a25c0b917b8aa9001a9cf5c225df12497e99da107dc379360bc138163c66b55b95f5b105b50578067e languageName: node linkType: hard -"typescript@patch:typescript@npm%3A5.4.5#optional!builtin": - version: 5.4.5 - resolution: "typescript@patch:typescript@npm%3A5.4.5#optional!builtin::version=5.4.5&hash=5adc0c" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 10c0/db2ad2a16ca829f50427eeb1da155e7a45e598eec7b086d8b4e8ba44e5a235f758e606d681c66992230d3fc3b8995865e5fd0b22a2c95486d0b3200f83072ec9 - languageName: node - linkType: hard - -"typescript@patch:typescript@npm%3A5.8.3#optional!builtin": - version: 5.8.3 - resolution: "typescript@patch:typescript@npm%3A5.8.3#optional!builtin::version=5.8.3&hash=5786d5" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 10c0/39117e346ff8ebd87ae1510b3a77d5d92dae5a89bde588c747d25da5c146603a99c8ee588c7ef80faaf123d89ed46f6dbd918d534d641083177d5fac38b8a1cb - languageName: node - linkType: hard - -"typescript@patch:typescript@npm%3A^3.9#optional!builtin": - version: 3.9.10 - resolution: "typescript@patch:typescript@npm%3A3.9.10#optional!builtin::version=3.9.10&hash=3bd3d3" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 10c0/9041fb3886e7d6a560f985227b8c941d17a750f2edccb5f9b3a15a2480574654d9be803ad4a14aabcc2f2553c4d272a25fd698a7c42692f03f66b009fb46883c - languageName: node - linkType: hard - -"undici-types@npm:~7.8.0": - version: 7.8.0 - resolution: "undici-types@npm:7.8.0" - checksum: 10c0/9d9d246d1dc32f318d46116efe3cfca5a72d4f16828febc1918d94e58f6ffcf39c158aa28bf5b4fc52f410446bc7858f35151367bd7a49f21746cab6497b709b +"undici-types@npm:~7.10.0": + version: 7.10.0 + resolution: "undici-types@npm:7.10.0" + checksum: 10c0/8b00ce50e235fe3cc601307f148b5e8fb427092ee3b23e8118ec0a5d7f68eca8cee468c8fc9f15cbb2cf2a3797945ebceb1cbd9732306a1d00e0a9b6afa0f635 languageName: node linkType: hard @@ -1847,9 +1752,9 @@ __metadata: linkType: hard "undici@npm:^7.12.0": - version: 7.12.0 - resolution: "undici@npm:7.12.0" - checksum: 10c0/27aada7bd8d2588f146a2ba554f2f6b7593f9c2d14bf3797bbc7b74825d9bee38eb3ab61e2d0ee01bb827a9ac8017eb2991cb4f06d9ed9971c8a142d8306fbab + version: 7.13.0 + resolution: "undici@npm:7.13.0" + checksum: 10c0/8865d40b141f073215a6763aad5d1b2f4bd4e252600e93e68055d6c5d23a8a0e5782669236b2ecfa4d415d1d969d9c4623ff1c0386d32fa60088a19ffa58c611 languageName: node linkType: hard @@ -1926,11 +1831,11 @@ __metadata: languageName: node linkType: hard -"yaml@npm:2.8.0": - version: 2.8.0 - resolution: "yaml@npm:2.8.0" +"yaml@npm:2.8.1": + version: 2.8.1 + resolution: "yaml@npm:2.8.1" bin: yaml: bin.mjs - checksum: 10c0/f6f7310cf7264a8107e72c1376f4de37389945d2fb4656f8060eca83f01d2d703f9d1b925dd8f39852a57034fafefde6225409ddd9f22aebfda16c6141b71858 + checksum: 10c0/7c587be00d9303d2ae1566e03bc5bc7fe978ba0d9bf39cc418c3139d37929dfcb93a230d9749f2cb578b6aa5d9ebebc322415e4b653cb83acd8bc0bc321707f3 languageName: node linkType: hard