Compare commits

..

3 Commits

Author SHA1 Message Date
Robert b37e12b418 Use isInTestMode() instead of NODE_ENV 2026-06-02 10:01:35 +01:00
Robert d40e417f3c Only do initial wait when not running tests 2026-06-01 16:43:42 +01:00
Robert dfc14113e3 Change waitForProcessing to use exponential backoff 2026-05-28 11:15:07 +01:00
12 changed files with 655 additions and 243 deletions
+1 -1
View File
@@ -59,7 +59,7 @@ jobs:
use-all-platform-bundle: 'false' use-all-platform-bundle: 'false'
setup-kotlin: 'true' setup-kotlin: 'true'
- name: Set up Ruby - name: Set up Ruby
uses: ruby/setup-ruby@6aaa311d81eba98ae12eaffbcb63296ace0efcde # v1.307.0 uses: ruby/setup-ruby@c4e5b1316158f92e3d49443a9d58b31d25ac0f8f # v1.306.0
with: with:
ruby-version: 2.6 ruby-version: 2.6
- name: Install Code Scanning integration - name: Install Code Scanning integration
+1 -1
View File
@@ -2,7 +2,7 @@
See the [releases page](https://github.com/github/codeql-action/releases) for the relevant changes to the CodeQL CLI and language packs. See the [releases page](https://github.com/github/codeql-action/releases) for the relevant changes to the CodeQL CLI and language packs.
## 4.36.1 - 02 Jun 2026 ## [UNRELEASED]
No user facing changes. No user facing changes.
+28 -49
View File
@@ -125031,7 +125031,7 @@ var require_tmp = __commonJS({
cb(null, path28.join(parentDir, path28.basename(pathToResolve))); cb(null, path28.join(parentDir, path28.basename(pathToResolve)));
}); });
} else { } else {
fs30.realpath(pathToResolve, cb); fs30.realpath(path28, cb);
} }
}); });
} }
@@ -125063,32 +125063,17 @@ var require_tmp = __commonJS({
].join(""); ].join("");
return path28.join(tmpDir, opts.dir, name); return path28.join(tmpDir, opts.dir, name);
} }
function _assertPath(option, value) {
if (typeof value !== "string") {
throw new Error(`${option} option must be a string, got "${typeof value}".`);
}
if (value.includes("..")) {
throw new Error("Relative value not allowed");
}
return value;
}
function _assertOptionsBase(options) { function _assertOptionsBase(options) {
if (!_isUndefined(options.name)) { if (!_isUndefined(options.name)) {
const name = options.name; const name = options.name;
if (path28.isAbsolute(name)) throw new Error(`name option must not contain an absolute path, found "${name}".`); if (path28.isAbsolute(name)) throw new Error(`name option must not contain an absolute path, found "${name}".`);
const basename2 = path28.basename(name); const basename2 = path28.basename(name);
if (basename2 === ".." || basename2 === "." || basename2 !== name) { if (basename2 === ".." || basename2 === "." || basename2 !== name)
throw new Error(`name option must not contain a path, found "${name}".`); throw new Error(`name option must not contain a path, found "${name}".`);
} }
} if (!_isUndefined(options.template) && !options.template.match(TEMPLATE_PATTERN)) {
if (!_isUndefined(options.template)) {
if (typeof options.template !== "string") {
throw new Error(`template option must be a string, got "${typeof options.template}".`);
}
if (!options.template.match(TEMPLATE_PATTERN)) {
throw new Error(`Invalid template, found "${options.template}".`); throw new Error(`Invalid template, found "${options.template}".`);
} }
}
if (!_isUndefined(options.tries) && isNaN(options.tries) || options.tries < 0) { if (!_isUndefined(options.tries) && isNaN(options.tries) || options.tries < 0) {
throw new Error(`Invalid tries, found "${options.tries}".`); throw new Error(`Invalid tries, found "${options.tries}".`);
} }
@@ -125097,16 +125082,15 @@ var require_tmp = __commonJS({
options.detachDescriptor = !!options.detachDescriptor; options.detachDescriptor = !!options.detachDescriptor;
options.discardDescriptor = !!options.discardDescriptor; options.discardDescriptor = !!options.discardDescriptor;
options.unsafeCleanup = !!options.unsafeCleanup; options.unsafeCleanup = !!options.unsafeCleanup;
options.prefix = _isUndefined(options.prefix) ? "" : _assertPath("prefix", options.prefix); options.prefix = _isUndefined(options.prefix) ? "" : options.prefix;
options.postfix = _isUndefined(options.postfix) ? "" : _assertPath("postfix", options.postfix); options.postfix = _isUndefined(options.postfix) ? "" : options.postfix;
options.template = _isUndefined(options.template) ? void 0 : _assertPath("template", options.template);
} }
function _getRelativePath(option, name, tmpDir, cb) { function _getRelativePath(option, name, tmpDir, cb) {
if (_isUndefined(name)) return cb(null); if (_isUndefined(name)) return cb(null);
_resolvePath(name, tmpDir, function(err, resolvedPath) { _resolvePath(name, tmpDir, function(err, resolvedPath) {
if (err) return cb(err); if (err) return cb(err);
const relativePath = path28.relative(tmpDir, resolvedPath); const relativePath = path28.relative(tmpDir, resolvedPath);
if (relativePath.startsWith("..") || path28.isAbsolute(relativePath)) { if (!resolvedPath.startsWith(tmpDir)) {
return cb(new Error(`${option} option must be relative to "${tmpDir}", found "${relativePath}".`)); return cb(new Error(`${option} option must be relative to "${tmpDir}", found "${relativePath}".`));
} }
cb(null, relativePath); cb(null, relativePath);
@@ -125116,7 +125100,7 @@ var require_tmp = __commonJS({
if (_isUndefined(name)) return; if (_isUndefined(name)) return;
const resolvedPath = _resolvePathSync(name, tmpDir); const resolvedPath = _resolvePathSync(name, tmpDir);
const relativePath = path28.relative(tmpDir, resolvedPath); const relativePath = path28.relative(tmpDir, resolvedPath);
if (relativePath.startsWith("..") || path28.isAbsolute(relativePath)) { if (!resolvedPath.startsWith(tmpDir)) {
throw new Error(`${option} option must be relative to "${tmpDir}", found "${relativePath}".`); throw new Error(`${option} option must be relative to "${tmpDir}", found "${relativePath}".`);
} }
return relativePath; return relativePath;
@@ -147682,7 +147666,7 @@ var safeDump = renamed("safeDump", "dump");
var semver = __toESM(require_semver2()); var semver = __toESM(require_semver2());
// src/api-compatibility.json // src/api-compatibility.json
var maximumVersion = "3.22"; var maximumVersion = "3.21";
var minimumVersion = "3.16"; var minimumVersion = "3.16";
// src/json/index.ts // src/json/index.ts
@@ -151711,7 +151695,6 @@ async function initActionState({
extraQueryExclusions: [], extraQueryExclusions: [],
overlayDatabaseMode: "none" /* None */, overlayDatabaseMode: "none" /* None */,
useOverlayDatabaseCaching: false, useOverlayDatabaseCaching: false,
overlayModeSetExplicitly: false,
repositoryProperties, repositoryProperties,
enableFileCoverageInformation enableFileCoverageInformation
}; };
@@ -151840,7 +151823,6 @@ async function checkOverlayEnablement(codeql, features, languages, sourceRoot, b
return validateOverlayDatabaseMode( return validateOverlayDatabaseMode(
modeEnv, modeEnv,
false, false,
true,
codeql, codeql,
languages, languages,
sourceRoot, sourceRoot,
@@ -151915,7 +151897,6 @@ async function checkOverlayEnablement(codeql, features, languages, sourceRoot, b
return validateOverlayDatabaseMode( return validateOverlayDatabaseMode(
overlayDatabaseMode, overlayDatabaseMode,
true, true,
false,
codeql, codeql,
languages, languages,
sourceRoot, sourceRoot,
@@ -151924,7 +151905,7 @@ async function checkOverlayEnablement(codeql, features, languages, sourceRoot, b
logger logger
); );
} }
async function validateOverlayDatabaseMode(overlayDatabaseMode, useOverlayDatabaseCaching, overlayModeSetExplicitly, codeql, languages, sourceRoot, buildMode, gitVersion, logger) { async function validateOverlayDatabaseMode(overlayDatabaseMode, useOverlayDatabaseCaching, codeql, languages, sourceRoot, buildMode, gitVersion, logger) {
if (buildMode !== "none" /* None */ && (await Promise.all( if (buildMode !== "none" /* None */ && (await Promise.all(
languages.map( languages.map(
async (l) => l !== "go" /* go */ && // Workaround to allow overlay analysis for Go with any build async (l) => l !== "go" /* go */ && // Workaround to allow overlay analysis for Go with any build
@@ -151968,8 +151949,7 @@ async function validateOverlayDatabaseMode(overlayDatabaseMode, useOverlayDataba
} }
return new Success({ return new Success({
overlayDatabaseMode, overlayDatabaseMode,
useOverlayDatabaseCaching, useOverlayDatabaseCaching
overlayModeSetExplicitly
}); });
} }
async function isTrapCachingEnabled(features, overlayDatabaseMode) { async function isTrapCachingEnabled(features, overlayDatabaseMode) {
@@ -152007,7 +151987,7 @@ function hasQueryCustomisation(userConfig) {
return isDefined2(userConfig["disable-default-queries"]) || isDefined2(userConfig.queries) || isDefined2(userConfig["query-filters"]); return isDefined2(userConfig["disable-default-queries"]) || isDefined2(userConfig.queries) || isDefined2(userConfig["query-filters"]);
} }
async function applyIncrementalAnalysisSettings(config, hasDiffRanges, codeql, logger) { async function applyIncrementalAnalysisSettings(config, hasDiffRanges, codeql, logger) {
if (config.overlayDatabaseMode === "overlay" /* Overlay */ && !hasDiffRanges && !config.overlayModeSetExplicitly) { if (config.overlayDatabaseMode === "overlay" /* Overlay */ && !hasDiffRanges) {
logger.info( logger.info(
`Reverting overlay database mode to ${"none" /* None */} because the PR diff ranges could not be computed.` `Reverting overlay database mode to ${"none" /* None */} because the PR diff ranges could not be computed.`
); );
@@ -152115,17 +152095,12 @@ async function initConfig(features, inputs) {
logger logger
); );
if (overlayDatabaseModeResult.isSuccess()) { if (overlayDatabaseModeResult.isSuccess()) {
const { const { overlayDatabaseMode, useOverlayDatabaseCaching } = overlayDatabaseModeResult.value;
overlayDatabaseMode,
useOverlayDatabaseCaching,
overlayModeSetExplicitly
} = overlayDatabaseModeResult.value;
logger.info( logger.info(
`Using overlay database mode: ${overlayDatabaseMode} ${useOverlayDatabaseCaching ? "with" : "without"} caching.` `Using overlay database mode: ${overlayDatabaseMode} ${useOverlayDatabaseCaching ? "with" : "without"} caching.`
); );
config.overlayDatabaseMode = overlayDatabaseMode; config.overlayDatabaseMode = overlayDatabaseMode;
config.useOverlayDatabaseCaching = useOverlayDatabaseCaching; config.useOverlayDatabaseCaching = useOverlayDatabaseCaching;
config.overlayModeSetExplicitly = overlayModeSetExplicitly;
} else { } else {
const overlayDisabledReason = overlayDatabaseModeResult.value; const overlayDisabledReason = overlayDatabaseModeResult.value;
logger.info( logger.info(
@@ -157498,22 +157473,20 @@ function dumpSarifFile(sarifPayload, outputDir, logger, uploadTarget) {
logger.info(`Writing processed SARIF file to ${outputFile}`); logger.info(`Writing processed SARIF file to ${outputFile}`);
fs21.writeFileSync(outputFile, sarifPayload); fs21.writeFileSync(outputFile, sarifPayload);
} }
var STATUS_CHECK_FREQUENCY_MILLISECONDS = 5 * 1e3; var STATUS_CHECK_INITIAL_BACKOFF_MILLISECONDS = 5 * 1e3;
var STATUS_CHECK_TIMEOUT_MILLISECONDS = 2 * 60 * 1e3; var STATUS_CHECK_BACKOFF_MULTIPLIER = 2;
var STATUS_CHECK_MAX_TRIES = 5;
async function waitForProcessing(repositoryNwo, sarifID, logger, options = { async function waitForProcessing(repositoryNwo, sarifID, logger, options = {
isUnsuccessfulExecution: false isUnsuccessfulExecution: false
}) { }) {
logger.startGroup("Waiting for processing to finish"); logger.startGroup("Waiting for processing to finish");
try { try {
const client = getApiClient(); const client = getApiClient();
const statusCheckingStarted = Date.now(); let statusCheckBackoff = STATUS_CHECK_INITIAL_BACKOFF_MILLISECONDS;
while (true) { if (!isInTestMode()) {
if (Date.now() > statusCheckingStarted + STATUS_CHECK_TIMEOUT_MILLISECONDS) { await delay(statusCheckBackoff, { allowProcessExit: false });
logger.warning(
"Timed out waiting for analysis to finish processing. Continuing."
);
break;
} }
for (let statusCheckCount = 1; statusCheckCount <= STATUS_CHECK_MAX_TRIES; statusCheckCount++) {
let response = void 0; let response = void 0;
try { try {
response = await client.request( response = await client.request(
@@ -157551,9 +157524,15 @@ ${response.data.errors}`;
} else { } else {
assertNever(status); assertNever(status);
} }
await delay(STATUS_CHECK_FREQUENCY_MILLISECONDS, { if (statusCheckCount === STATUS_CHECK_MAX_TRIES) {
allowProcessExit: false logger.warning(
}); "Timed out waiting for analysis to finish processing. Continuing."
);
break;
} else {
statusCheckBackoff *= STATUS_CHECK_BACKOFF_MULTIPLIER;
await delay(statusCheckBackoff, { allowProcessExit: false });
}
} }
} finally { } finally {
logger.endGroup(); logger.endGroup();
+555 -70
View File
@@ -61,7 +61,7 @@
"nock": "^14.0.15", "nock": "^14.0.15",
"sinon": "^22.0.0", "sinon": "^22.0.0",
"typescript": "^6.0.3", "typescript": "^6.0.3",
"typescript-eslint": "^8.59.4" "typescript-eslint": "^8.59.3"
} }
}, },
"node_modules/@aashutoshrathi/word-wrap": { "node_modules/@aashutoshrathi/word-wrap": {
@@ -2528,17 +2528,17 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/@typescript-eslint/eslint-plugin": { "node_modules/@typescript-eslint/eslint-plugin": {
"version": "8.59.4", "version": "8.59.3",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.59.4.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.59.3.tgz",
"integrity": "sha512-PegsU+XfyJJNjd4+u/k6f9yTyp0lEXXiPopUNobZcIAUJFGICFLN+sP0Rb3JehVmiij1Ph0dFGYqODoRo/2+6A==", "integrity": "sha512-PwFvSKsXGShKGW6n5bZOhGHEcCZXM8HofLK9fNsEwZXzFRjoY+XT1Vsf1zgyXdwTr0ZYz1/2tkZ0DBTT9jZjhw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@eslint-community/regexpp": "^4.12.2", "@eslint-community/regexpp": "^4.12.2",
"@typescript-eslint/scope-manager": "8.59.4", "@typescript-eslint/scope-manager": "8.59.3",
"@typescript-eslint/type-utils": "8.59.4", "@typescript-eslint/type-utils": "8.59.3",
"@typescript-eslint/utils": "8.59.4", "@typescript-eslint/utils": "8.59.3",
"@typescript-eslint/visitor-keys": "8.59.4", "@typescript-eslint/visitor-keys": "8.59.3",
"ignore": "^7.0.5", "ignore": "^7.0.5",
"natural-compare": "^1.4.0", "natural-compare": "^1.4.0",
"ts-api-utils": "^2.5.0" "ts-api-utils": "^2.5.0"
@@ -2551,7 +2551,7 @@
"url": "https://opencollective.com/typescript-eslint" "url": "https://opencollective.com/typescript-eslint"
}, },
"peerDependencies": { "peerDependencies": {
"@typescript-eslint/parser": "^8.59.4", "@typescript-eslint/parser": "^8.59.3",
"eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
"typescript": ">=4.8.4 <6.1.0" "typescript": ">=4.8.4 <6.1.0"
} }
@@ -2567,16 +2567,16 @@
} }
}, },
"node_modules/@typescript-eslint/parser": { "node_modules/@typescript-eslint/parser": {
"version": "8.59.4", "version": "8.59.3",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.59.4.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.59.3.tgz",
"integrity": "sha512-zORHqO/tuhxY1zWuTvMUqddRxpiFJ72xVfcNoWpqdLjs6lfPbuQBJuW4pk+49/uBMy7Ssr4bzgjiKmmDB1UbZQ==", "integrity": "sha512-HPwA+hVkfcriajbNvTmZv4VRauibay+cWArYUYq7u7W7PmGShMxbPxLvrwDme55a6d5alG3nrYfhyJ/G28XlLg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@typescript-eslint/scope-manager": "8.59.4", "@typescript-eslint/scope-manager": "8.59.3",
"@typescript-eslint/types": "8.59.4", "@typescript-eslint/types": "8.59.3",
"@typescript-eslint/typescript-estree": "8.59.4", "@typescript-eslint/typescript-estree": "8.59.3",
"@typescript-eslint/visitor-keys": "8.59.4", "@typescript-eslint/visitor-keys": "8.59.3",
"debug": "^4.4.3" "debug": "^4.4.3"
}, },
"engines": { "engines": {
@@ -2610,14 +2610,14 @@
} }
}, },
"node_modules/@typescript-eslint/project-service": { "node_modules/@typescript-eslint/project-service": {
"version": "8.59.4", "version": "8.59.3",
"resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.59.4.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.59.3.tgz",
"integrity": "sha512-Ly00Vu4oAacfDeHp2Zg85ioNG6l8HG+tN1D7J+xTHSxu9y0awYKJ2zH1rFBn8ZSfuGK+7FxK3Cgl3uAz0aZZLg==", "integrity": "sha512-ECiUWa/KYRGDFUqTNehaRgzDshnJfkTABJxVemHk4ko22gcr0ukloKjWvyQ64g8YCV/UI47kN1dbmjf/GaQYng==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@typescript-eslint/tsconfig-utils": "^8.59.4", "@typescript-eslint/tsconfig-utils": "^8.59.3",
"@typescript-eslint/types": "^8.59.4", "@typescript-eslint/types": "^8.59.3",
"debug": "^4.4.3" "debug": "^4.4.3"
}, },
"engines": { "engines": {
@@ -2650,14 +2650,14 @@
} }
}, },
"node_modules/@typescript-eslint/scope-manager": { "node_modules/@typescript-eslint/scope-manager": {
"version": "8.59.4", "version": "8.59.3",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.59.4.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.59.3.tgz",
"integrity": "sha512-mUeR/3H1WrTAddJrwut8OoPjfauaztMQmRwV5fQTUyNVJCLiUXXe4lGEyYIL2oFDpP7UtgbGJXCt72wT0z2S3Q==", "integrity": "sha512-t2LvZnoEfzKtnPjgeEu41xw5gxq9mQVfYy4OoZ4Vlt0sk3JwxmhCca/AR7DwOiHrjWgjAj6as4AhRLKSDfvZIA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@typescript-eslint/types": "8.59.4", "@typescript-eslint/types": "8.59.3",
"@typescript-eslint/visitor-keys": "8.59.4" "@typescript-eslint/visitor-keys": "8.59.3"
}, },
"engines": { "engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0" "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -2668,9 +2668,9 @@
} }
}, },
"node_modules/@typescript-eslint/tsconfig-utils": { "node_modules/@typescript-eslint/tsconfig-utils": {
"version": "8.59.4", "version": "8.59.3",
"resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.59.4.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.59.3.tgz",
"integrity": "sha512-DLCpnKgD4alVxTBSKulK+gU1KCqOgUXfDRDXh2mZgzokQKa/70ax93I2uVO3m/LLvIAtWZIFoiifudmIqAxpMA==", "integrity": "sha512-PcIJHjmaREXLgIAIzLnSY9VucEzz8FKXsRgFa1DmdGCK/5tJpW03TKJF01Q6VZd1lLdz2sIKPWaDUZN9dp//dw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
@@ -2685,15 +2685,15 @@
} }
}, },
"node_modules/@typescript-eslint/type-utils": { "node_modules/@typescript-eslint/type-utils": {
"version": "8.59.4", "version": "8.59.3",
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.59.4.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.59.3.tgz",
"integrity": "sha512-uonTuPAAKr9XaBGqJ3LjYTh72zy5DyGesljO9gtmk/eFW0W1fRHjnwVYKB35Lm8d5Q5CluEW3gPHjTvZTmgrfA==", "integrity": "sha512-g71d8QD8UaiHGvrJwyIS1hCX5r63w6Jll+4VEYhEAHXTDIqX1JgxhTAbEHtKntL9kuc4jRo7/GWw5xfCepSccQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@typescript-eslint/types": "8.59.4", "@typescript-eslint/types": "8.59.3",
"@typescript-eslint/typescript-estree": "8.59.4", "@typescript-eslint/typescript-estree": "8.59.3",
"@typescript-eslint/utils": "8.59.4", "@typescript-eslint/utils": "8.59.3",
"debug": "^4.4.3", "debug": "^4.4.3",
"ts-api-utils": "^2.5.0" "ts-api-utils": "^2.5.0"
}, },
@@ -2728,9 +2728,9 @@
} }
}, },
"node_modules/@typescript-eslint/types": { "node_modules/@typescript-eslint/types": {
"version": "8.59.4", "version": "8.59.3",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.59.4.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.59.3.tgz",
"integrity": "sha512-F1o7WJcCq+bc8dwcO/YsSEOudAH8RDtaOhM6wcAQhcUsFhnWQl81JKy48q1hoxAU0qrzM89+31GYh1515Zde3Q==", "integrity": "sha512-ePFoH0g4ludssdRFqqDxQePCxU4WQyRa9+XVwjm7yLn0FKhMeoetC+qBEEI1Eyb1pGSDveTIT09Bvw2WhlGayg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
@@ -2742,16 +2742,16 @@
} }
}, },
"node_modules/@typescript-eslint/typescript-estree": { "node_modules/@typescript-eslint/typescript-estree": {
"version": "8.59.4", "version": "8.59.3",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.59.4.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.59.3.tgz",
"integrity": "sha512-F+RuOmcDXo4+TPdfd/TCLS3m2nw8gE9XXyZLrA3JBfaA5tz9TtdkyD3YJFmPxulyc2cKbEok/CvFE3MgSLWnag==", "integrity": "sha512-CbRjVRAf7Lr9Kr8RopKcbY45p2VfmmHrm0ygOCYFi7oU8q19m0Fs/6iHS7kNOmwpp+ob07ZVcAqlxUod9lYdmg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@typescript-eslint/project-service": "8.59.4", "@typescript-eslint/project-service": "8.59.3",
"@typescript-eslint/tsconfig-utils": "8.59.4", "@typescript-eslint/tsconfig-utils": "8.59.3",
"@typescript-eslint/types": "8.59.4", "@typescript-eslint/types": "8.59.3",
"@typescript-eslint/visitor-keys": "8.59.4", "@typescript-eslint/visitor-keys": "8.59.3",
"debug": "^4.4.3", "debug": "^4.4.3",
"minimatch": "^10.2.2", "minimatch": "^10.2.2",
"semver": "^7.7.3", "semver": "^7.7.3",
@@ -2827,16 +2827,16 @@
} }
}, },
"node_modules/@typescript-eslint/utils": { "node_modules/@typescript-eslint/utils": {
"version": "8.59.4", "version": "8.59.3",
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.59.4.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.59.3.tgz",
"integrity": "sha512-cYXeNAUsG4lJo5dbc1FcKm+JwIWrj1/UpTORsC6tGMjEZ81DYcvIr9/ueikhMa/Y/gDQYGp+YX9/xQrXje5BJw==", "integrity": "sha512-JAvT14goBzRzzzZyqq3P9BLArIxTtQURUtFgQ/V7FO+eU+Gg6ES+5ymOPP1wRxXcxAYeivCk4uS3jCKWI1K8Zg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@eslint-community/eslint-utils": "^4.9.1", "@eslint-community/eslint-utils": "^4.9.1",
"@typescript-eslint/scope-manager": "8.59.4", "@typescript-eslint/scope-manager": "8.59.3",
"@typescript-eslint/types": "8.59.4", "@typescript-eslint/types": "8.59.3",
"@typescript-eslint/typescript-estree": "8.59.4" "@typescript-eslint/typescript-estree": "8.59.3"
}, },
"engines": { "engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0" "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -2851,13 +2851,13 @@
} }
}, },
"node_modules/@typescript-eslint/visitor-keys": { "node_modules/@typescript-eslint/visitor-keys": {
"version": "8.59.4", "version": "8.59.3",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.59.4.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.59.3.tgz",
"integrity": "sha512-U3gxVaDVnuZKhSspW/MzMxE1kq7zOdc072FcSNoqA1I9p8HyKbBFfEHoWckBAMgNMph4MamwS5iTVzFmrnt8TQ==", "integrity": "sha512-f1UQF7ggd42YiwI5wGrRaPsa+P0CINBlrkLPmGfpq/u/I/oVtecoEIfFR9ag/oa1sLOsRNZ6xehf6qMZhQGBDg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@typescript-eslint/types": "8.59.4", "@typescript-eslint/types": "8.59.3",
"eslint-visitor-keys": "^5.0.0" "eslint-visitor-keys": "^5.0.0"
}, },
"engines": { "engines": {
@@ -9047,9 +9047,9 @@
} }
}, },
"node_modules/tmp": { "node_modules/tmp": {
"version": "0.2.7", "version": "0.2.4",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.7.tgz", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.4.tgz",
"integrity": "sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw==", "integrity": "sha512-UdiSoX6ypifLmrfQ/XfiawN6hkjSBpCjhKxxZcWlUUmoXLaCKQU0bx4HF/tdDK2uzRuchf1txGvrWBzYREssoQ==",
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": ">=14.14" "node": ">=14.14"
@@ -9140,13 +9140,14 @@
"license": "0BSD" "license": "0BSD"
}, },
"node_modules/tsx": { "node_modules/tsx": {
"version": "4.22.3", "version": "4.21.0",
"resolved": "https://registry.npmjs.org/tsx/-/tsx-4.22.3.tgz", "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.21.0.tgz",
"integrity": "sha512-mdoNxBC/cSQObGGVQ5Bpn5i+yv7j68gk3Nfm3wFjcJg3Z0Mix9jzAFfP12prmm5eVGmDKtp0yyArrs0Q+8gZHg==", "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"esbuild": "~0.28.0" "esbuild": "~0.27.0",
"get-tsconfig": "^4.7.5"
}, },
"bin": { "bin": {
"tsx": "dist/cli.mjs" "tsx": "dist/cli.mjs"
@@ -9158,6 +9159,490 @@
"fsevents": "~2.3.3" "fsevents": "~2.3.3"
} }
}, },
"node_modules/tsx/node_modules/@esbuild/aix-ppc64": {
"version": "0.27.7",
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.7.tgz",
"integrity": "sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==",
"cpu": [
"ppc64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"aix"
],
"engines": {
"node": ">=18"
}
},
"node_modules/tsx/node_modules/@esbuild/android-arm": {
"version": "0.27.7",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.7.tgz",
"integrity": "sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==",
"cpu": [
"arm"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">=18"
}
},
"node_modules/tsx/node_modules/@esbuild/android-arm64": {
"version": "0.27.7",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.7.tgz",
"integrity": "sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">=18"
}
},
"node_modules/tsx/node_modules/@esbuild/android-x64": {
"version": "0.27.7",
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.7.tgz",
"integrity": "sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">=18"
}
},
"node_modules/tsx/node_modules/@esbuild/darwin-arm64": {
"version": "0.27.7",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.7.tgz",
"integrity": "sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">=18"
}
},
"node_modules/tsx/node_modules/@esbuild/darwin-x64": {
"version": "0.27.7",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.7.tgz",
"integrity": "sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">=18"
}
},
"node_modules/tsx/node_modules/@esbuild/freebsd-arm64": {
"version": "0.27.7",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.7.tgz",
"integrity": "sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"freebsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/tsx/node_modules/@esbuild/freebsd-x64": {
"version": "0.27.7",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.7.tgz",
"integrity": "sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"freebsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/tsx/node_modules/@esbuild/linux-arm": {
"version": "0.27.7",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.7.tgz",
"integrity": "sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==",
"cpu": [
"arm"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/tsx/node_modules/@esbuild/linux-arm64": {
"version": "0.27.7",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.7.tgz",
"integrity": "sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/tsx/node_modules/@esbuild/linux-ia32": {
"version": "0.27.7",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.7.tgz",
"integrity": "sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==",
"cpu": [
"ia32"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/tsx/node_modules/@esbuild/linux-loong64": {
"version": "0.27.7",
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.7.tgz",
"integrity": "sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==",
"cpu": [
"loong64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/tsx/node_modules/@esbuild/linux-mips64el": {
"version": "0.27.7",
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.7.tgz",
"integrity": "sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==",
"cpu": [
"mips64el"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/tsx/node_modules/@esbuild/linux-ppc64": {
"version": "0.27.7",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.7.tgz",
"integrity": "sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==",
"cpu": [
"ppc64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/tsx/node_modules/@esbuild/linux-riscv64": {
"version": "0.27.7",
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.7.tgz",
"integrity": "sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==",
"cpu": [
"riscv64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/tsx/node_modules/@esbuild/linux-s390x": {
"version": "0.27.7",
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.7.tgz",
"integrity": "sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==",
"cpu": [
"s390x"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/tsx/node_modules/@esbuild/linux-x64": {
"version": "0.27.7",
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.7.tgz",
"integrity": "sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/tsx/node_modules/@esbuild/netbsd-arm64": {
"version": "0.27.7",
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.7.tgz",
"integrity": "sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"netbsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/tsx/node_modules/@esbuild/netbsd-x64": {
"version": "0.27.7",
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.7.tgz",
"integrity": "sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"netbsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/tsx/node_modules/@esbuild/openbsd-arm64": {
"version": "0.27.7",
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.7.tgz",
"integrity": "sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"openbsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/tsx/node_modules/@esbuild/openbsd-x64": {
"version": "0.27.7",
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.7.tgz",
"integrity": "sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"openbsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/tsx/node_modules/@esbuild/openharmony-arm64": {
"version": "0.27.7",
"resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.7.tgz",
"integrity": "sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"openharmony"
],
"engines": {
"node": ">=18"
}
},
"node_modules/tsx/node_modules/@esbuild/sunos-x64": {
"version": "0.27.7",
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.7.tgz",
"integrity": "sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"sunos"
],
"engines": {
"node": ">=18"
}
},
"node_modules/tsx/node_modules/@esbuild/win32-arm64": {
"version": "0.27.7",
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.7.tgz",
"integrity": "sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">=18"
}
},
"node_modules/tsx/node_modules/@esbuild/win32-ia32": {
"version": "0.27.7",
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.7.tgz",
"integrity": "sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==",
"cpu": [
"ia32"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">=18"
}
},
"node_modules/tsx/node_modules/@esbuild/win32-x64": {
"version": "0.27.7",
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.7.tgz",
"integrity": "sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">=18"
}
},
"node_modules/tsx/node_modules/esbuild": {
"version": "0.27.7",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.7.tgz",
"integrity": "sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
"bin": {
"esbuild": "bin/esbuild"
},
"engines": {
"node": ">=18"
},
"optionalDependencies": {
"@esbuild/aix-ppc64": "0.27.7",
"@esbuild/android-arm": "0.27.7",
"@esbuild/android-arm64": "0.27.7",
"@esbuild/android-x64": "0.27.7",
"@esbuild/darwin-arm64": "0.27.7",
"@esbuild/darwin-x64": "0.27.7",
"@esbuild/freebsd-arm64": "0.27.7",
"@esbuild/freebsd-x64": "0.27.7",
"@esbuild/linux-arm": "0.27.7",
"@esbuild/linux-arm64": "0.27.7",
"@esbuild/linux-ia32": "0.27.7",
"@esbuild/linux-loong64": "0.27.7",
"@esbuild/linux-mips64el": "0.27.7",
"@esbuild/linux-ppc64": "0.27.7",
"@esbuild/linux-riscv64": "0.27.7",
"@esbuild/linux-s390x": "0.27.7",
"@esbuild/linux-x64": "0.27.7",
"@esbuild/netbsd-arm64": "0.27.7",
"@esbuild/netbsd-x64": "0.27.7",
"@esbuild/openbsd-arm64": "0.27.7",
"@esbuild/openbsd-x64": "0.27.7",
"@esbuild/openharmony-arm64": "0.27.7",
"@esbuild/sunos-x64": "0.27.7",
"@esbuild/win32-arm64": "0.27.7",
"@esbuild/win32-ia32": "0.27.7",
"@esbuild/win32-x64": "0.27.7"
}
},
"node_modules/tunnel": { "node_modules/tunnel": {
"version": "0.0.6", "version": "0.0.6",
"license": "MIT", "license": "MIT",
@@ -9292,16 +9777,16 @@
} }
}, },
"node_modules/typescript-eslint": { "node_modules/typescript-eslint": {
"version": "8.59.4", "version": "8.59.3",
"resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.59.4.tgz", "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.59.3.tgz",
"integrity": "sha512-Rw6+44QNFaXtgHSjPy+Kw8hrJniMYzR85E9yLmOLcfZ91/rz+JXQbDTCmc6ccxMPY6K6PgAq26f0JCBfR7LIPQ==", "integrity": "sha512-KgusgyDgG4LI8Ih/sWaCtZ06tckLAS5CvT5A4D1Q7bYVoAAyzwiZvE4BmwDHkhRVkvhRBepKeASoFzQetha7Fg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@typescript-eslint/eslint-plugin": "8.59.4", "@typescript-eslint/eslint-plugin": "8.59.3",
"@typescript-eslint/parser": "8.59.4", "@typescript-eslint/parser": "8.59.3",
"@typescript-eslint/typescript-estree": "8.59.4", "@typescript-eslint/typescript-estree": "8.59.3",
"@typescript-eslint/utils": "8.59.4" "@typescript-eslint/utils": "8.59.3"
}, },
"engines": { "engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0" "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -9821,7 +10306,7 @@
}, },
"devDependencies": { "devDependencies": {
"@types/node": "^20.19.41", "@types/node": "^20.19.41",
"tsx": "^4.22.3" "tsx": "^4.21.0"
} }
} }
} }
+1 -1
View File
@@ -69,7 +69,7 @@
"nock": "^14.0.15", "nock": "^14.0.15",
"sinon": "^22.0.0", "sinon": "^22.0.0",
"typescript": "^6.0.3", "typescript": "^6.0.3",
"typescript-eslint": "^8.59.4" "typescript-eslint": "^8.59.3"
}, },
"overrides": { "overrides": {
"@actions/tool-cache": { "@actions/tool-cache": {
+1 -1
View File
@@ -5,7 +5,7 @@ versions:
- default - default
steps: steps:
- name: Set up Ruby - name: Set up Ruby
uses: ruby/setup-ruby@6aaa311d81eba98ae12eaffbcb63296ace0efcde # v1.307.0 uses: ruby/setup-ruby@c4e5b1316158f92e3d49443a9d58b31d25ac0f8f # v1.306.0
with: with:
ruby-version: 2.6 ruby-version: 2.6
- name: Install Code Scanning integration - name: Install Code Scanning integration
+1 -1
View File
@@ -11,6 +11,6 @@
}, },
"devDependencies": { "devDependencies": {
"@types/node": "^20.19.41", "@types/node": "^20.19.41",
"tsx": "^4.22.3" "tsx": "^4.21.0"
} }
} }
+1 -1
View File
@@ -1 +1 @@
{"maximumVersion": "3.22", "minimumVersion": "3.16"} {"maximumVersion": "3.21", "minimumVersion": "3.16"}
+3 -47
View File
@@ -1044,7 +1044,6 @@ const checkOverlayEnablementMacro = makeMacro({
| { | {
overlayDatabaseMode: OverlayDatabaseMode; overlayDatabaseMode: OverlayDatabaseMode;
useOverlayDatabaseCaching: boolean; useOverlayDatabaseCaching: boolean;
overlayModeSetExplicitly?: boolean;
} }
| { | {
disabledReason: OverlayDisabledReason; disabledReason: OverlayDisabledReason;
@@ -1125,13 +1124,7 @@ const checkOverlayEnablementMacro = makeMacro({
if ("disabledReason" in expected) { if ("disabledReason" in expected) {
t.deepEqual(result, new Failure(expected.disabledReason)); t.deepEqual(result, new Failure(expected.disabledReason));
} else { } else {
t.deepEqual( t.deepEqual(result, new Success(expected));
result,
new Success({
overlayModeSetExplicitly: false,
...expected,
}),
);
} }
} finally { } finally {
// Restore the original environment // Restore the original environment
@@ -1150,7 +1143,6 @@ checkOverlayEnablementMacro.serial(
{ {
overlayDatabaseMode: OverlayDatabaseMode.Overlay, overlayDatabaseMode: OverlayDatabaseMode.Overlay,
useOverlayDatabaseCaching: false, useOverlayDatabaseCaching: false,
overlayModeSetExplicitly: true,
}, },
); );
@@ -1162,7 +1154,6 @@ checkOverlayEnablementMacro.serial(
{ {
overlayDatabaseMode: OverlayDatabaseMode.OverlayBase, overlayDatabaseMode: OverlayDatabaseMode.OverlayBase,
useOverlayDatabaseCaching: false, useOverlayDatabaseCaching: false,
overlayModeSetExplicitly: true,
}, },
); );
@@ -1821,7 +1812,6 @@ checkOverlayEnablementMacro.serial(
{ {
overlayDatabaseMode: OverlayDatabaseMode.Overlay, overlayDatabaseMode: OverlayDatabaseMode.Overlay,
useOverlayDatabaseCaching: false, useOverlayDatabaseCaching: false,
overlayModeSetExplicitly: true,
}, },
); );
@@ -1834,7 +1824,6 @@ checkOverlayEnablementMacro.serial(
{ {
overlayDatabaseMode: OverlayDatabaseMode.Overlay, overlayDatabaseMode: OverlayDatabaseMode.Overlay,
useOverlayDatabaseCaching: false, useOverlayDatabaseCaching: false,
overlayModeSetExplicitly: true,
}, },
); );
@@ -1931,7 +1920,6 @@ checkOverlayEnablementMacro.serial(
{ {
overlayDatabaseMode: OverlayDatabaseMode.Overlay, overlayDatabaseMode: OverlayDatabaseMode.Overlay,
useOverlayDatabaseCaching: false, useOverlayDatabaseCaching: false,
overlayModeSetExplicitly: true,
}, },
); );
@@ -1977,7 +1965,6 @@ checkOverlayEnablementMacro.serial(
{ {
overlayDatabaseMode: OverlayDatabaseMode.Overlay, overlayDatabaseMode: OverlayDatabaseMode.Overlay,
useOverlayDatabaseCaching: false, useOverlayDatabaseCaching: false,
overlayModeSetExplicitly: true,
}, },
); );
@@ -2195,9 +2182,7 @@ test("applyIncrementalAnalysisSettings: keeps overlay mode and adds exclusions w
]); ]);
}); });
test.serial( test("applyIncrementalAnalysisSettings: disables overlay analysis when diff ranges are unavailable", async (t) => {
"applyIncrementalAnalysisSettings: disables overlay analysis when diff ranges are unavailable",
async (t) => {
const config = createTestConfig({ const config = createTestConfig({
overlayDatabaseMode: OverlayDatabaseMode.Overlay, overlayDatabaseMode: OverlayDatabaseMode.Overlay,
}); });
@@ -2223,36 +2208,7 @@ test.serial(
addDiagnosticsStub.firstCall.args[2], addDiagnosticsStub.firstCall.args[2],
OverlayDisabledReason.DiffInformedAnalysisNotEnabled, OverlayDisabledReason.DiffInformedAnalysisNotEnabled,
); );
}, });
);
test.serial(
"applyIncrementalAnalysisSettings: keeps overlay mode when set explicitly and diff ranges are unavailable",
async (t) => {
const config = createTestConfig({
overlayDatabaseMode: OverlayDatabaseMode.Overlay,
});
config.useOverlayDatabaseCaching = false;
config.overlayModeSetExplicitly = true;
const codeql = createStubCodeQL({});
const logger = getRunnerLogger(true);
const addDiagnosticsStub = sinon
.stub(overlayDiagnostics, "addOverlayDisablementDiagnostics")
.resolves();
await configUtils.applyIncrementalAnalysisSettings(
config,
false,
codeql,
logger,
);
t.is(config.overlayDatabaseMode, OverlayDatabaseMode.Overlay);
t.is(config.useOverlayDatabaseCaching, false);
t.deepEqual(config.extraQueryExclusions, []);
t.true(addDiagnosticsStub.notCalled);
},
);
test("applyIncrementalAnalysisSettings: adds exclusions for diff-informed-only runs", async (t) => { test("applyIncrementalAnalysisSettings: adds exclusions for diff-informed-only runs", async (t) => {
const config = createTestConfig({}); const config = createTestConfig({});
+10 -26
View File
@@ -243,11 +243,6 @@ export interface Config {
*/ */
useOverlayDatabaseCaching: boolean; useOverlayDatabaseCaching: boolean;
/**
* Whether the overlay database mode was set explicitly.
*/
overlayModeSetExplicitly: boolean;
/** /**
* A partial mapping from repository properties that affect us to their values. * A partial mapping from repository properties that affect us to their values.
*/ */
@@ -578,7 +573,6 @@ export async function initActionState(
extraQueryExclusions: [], extraQueryExclusions: [],
overlayDatabaseMode: OverlayDatabaseMode.None, overlayDatabaseMode: OverlayDatabaseMode.None,
useOverlayDatabaseCaching: false, useOverlayDatabaseCaching: false,
overlayModeSetExplicitly: false,
repositoryProperties, repositoryProperties,
enableFileCoverageInformation, enableFileCoverageInformation,
}; };
@@ -778,7 +772,6 @@ async function checkRunnerResources(
interface EnabledOverlayConfig { interface EnabledOverlayConfig {
overlayDatabaseMode: Exclude<OverlayDatabaseMode, OverlayDatabaseMode.None>; overlayDatabaseMode: Exclude<OverlayDatabaseMode, OverlayDatabaseMode.None>;
useOverlayDatabaseCaching: boolean; useOverlayDatabaseCaching: boolean;
overlayModeSetExplicitly: boolean;
} }
/** /**
@@ -833,7 +826,6 @@ export async function checkOverlayEnablement(
return validateOverlayDatabaseMode( return validateOverlayDatabaseMode(
modeEnv, modeEnv,
false, false,
true,
codeql, codeql,
languages, languages,
sourceRoot, sourceRoot,
@@ -925,7 +917,6 @@ export async function checkOverlayEnablement(
return validateOverlayDatabaseMode( return validateOverlayDatabaseMode(
overlayDatabaseMode, overlayDatabaseMode,
true, true,
false,
codeql, codeql,
languages, languages,
sourceRoot, sourceRoot,
@@ -944,7 +935,6 @@ export async function checkOverlayEnablement(
async function validateOverlayDatabaseMode( async function validateOverlayDatabaseMode(
overlayDatabaseMode: Exclude<OverlayDatabaseMode, OverlayDatabaseMode.None>, overlayDatabaseMode: Exclude<OverlayDatabaseMode, OverlayDatabaseMode.None>,
useOverlayDatabaseCaching: boolean, useOverlayDatabaseCaching: boolean,
overlayModeSetExplicitly: boolean,
codeql: CodeQL, codeql: CodeQL,
languages: Language[], languages: Language[],
sourceRoot: string, sourceRoot: string,
@@ -1016,7 +1006,6 @@ async function validateOverlayDatabaseMode(
return new Success({ return new Success({
overlayDatabaseMode, overlayDatabaseMode,
useOverlayDatabaseCaching, useOverlayDatabaseCaching,
overlayModeSetExplicitly,
}); });
} }
@@ -1091,14 +1080,14 @@ function hasQueryCustomisation(userConfig: UserConfig): boolean {
/** /**
* Finalize the incremental-analysis configuration for this run. * Finalize the incremental-analysis configuration for this run.
* *
* Overlay analysis has only been validated in combination with diff-informed analysis, so if * Overlay analysis has only been validated in combination with diff-informed
* `Overlay` mode was selected for a pull request but the diff ranges could not be computed, fall * analysis, so if `Overlay` mode was selected for a pull request but the diff
* back to a full non-overlay analysis. If the overlay mode was set explicitly, this fallback does * ranges could not be computed, fall back to a full non-overlay analysis.
* not apply.
* *
* Query exclusions for incremental-only queries are then applied whenever the diff ranges are * Query exclusions for incremental-only queries are then applied whenever the
* available — which, after the fallback above, is exactly the set of runs where any kind of * diff ranges are available — which, after the fallback above, is exactly the
* incremental analysis (overlay or diff-informed) is in effect. * set of runs where any kind of incremental analysis (overlay or
* diff-informed) is in effect.
*/ */
export async function applyIncrementalAnalysisSettings( export async function applyIncrementalAnalysisSettings(
config: Config, config: Config,
@@ -1108,8 +1097,7 @@ export async function applyIncrementalAnalysisSettings(
): Promise<void> { ): Promise<void> {
if ( if (
config.overlayDatabaseMode === OverlayDatabaseMode.Overlay && config.overlayDatabaseMode === OverlayDatabaseMode.Overlay &&
!hasDiffRanges && !hasDiffRanges
!config.overlayModeSetExplicitly
) { ) {
logger.info( logger.info(
`Reverting overlay database mode to ${OverlayDatabaseMode.None} ` + `Reverting overlay database mode to ${OverlayDatabaseMode.None} ` +
@@ -1263,18 +1251,14 @@ export async function initConfig(
logger, logger,
); );
if (overlayDatabaseModeResult.isSuccess()) { if (overlayDatabaseModeResult.isSuccess()) {
const { const { overlayDatabaseMode, useOverlayDatabaseCaching } =
overlayDatabaseMode, overlayDatabaseModeResult.value;
useOverlayDatabaseCaching,
overlayModeSetExplicitly,
} = overlayDatabaseModeResult.value;
logger.info( logger.info(
`Using overlay database mode: ${overlayDatabaseMode} ` + `Using overlay database mode: ${overlayDatabaseMode} ` +
`${useOverlayDatabaseCaching ? "with" : "without"} caching.`, `${useOverlayDatabaseCaching ? "with" : "without"} caching.`,
); );
config.overlayDatabaseMode = overlayDatabaseMode; config.overlayDatabaseMode = overlayDatabaseMode;
config.useOverlayDatabaseCaching = useOverlayDatabaseCaching; config.useOverlayDatabaseCaching = useOverlayDatabaseCaching;
config.overlayModeSetExplicitly = overlayModeSetExplicitly;
} else { } else {
const overlayDisabledReason = overlayDatabaseModeResult.value; const overlayDisabledReason = overlayDatabaseModeResult.value;
logger.info( logger.info(
-1
View File
@@ -585,7 +585,6 @@ export function createTestConfig(overrides: Partial<Config>): Config {
extraQueryExclusions: [], extraQueryExclusions: [],
overlayDatabaseMode: OverlayDatabaseMode.None, overlayDatabaseMode: OverlayDatabaseMode.None,
useOverlayDatabaseCaching: false, useOverlayDatabaseCaching: false,
overlayModeSetExplicitly: false,
repositoryProperties: {}, repositoryProperties: {},
enableFileCoverageInformation: true, enableFileCoverageInformation: true,
} satisfies Config, } satisfies Config,
+27 -18
View File
@@ -36,6 +36,7 @@ import {
getRequiredEnvParam, getRequiredEnvParam,
GitHubVariant, GitHubVariant,
GitHubVersion, GitHubVersion,
isInTestMode,
satisfiesGHESVersion, satisfiesGHESVersion,
} from "./util"; } from "./util";
@@ -829,8 +830,10 @@ function dumpSarifFile(
fs.writeFileSync(outputFile, sarifPayload); fs.writeFileSync(outputFile, sarifPayload);
} }
const STATUS_CHECK_FREQUENCY_MILLISECONDS = 5 * 1000; // Should lead to status checks after 5s, 15s, 35s, 75s, and 155s.
const STATUS_CHECK_TIMEOUT_MILLISECONDS = 2 * 60 * 1000; const STATUS_CHECK_INITIAL_BACKOFF_MILLISECONDS = 5 * 1000;
const STATUS_CHECK_BACKOFF_MULTIPLIER = 2;
const STATUS_CHECK_MAX_TRIES = 5;
type ProcessingStatus = "pending" | "complete" | "failed"; type ProcessingStatus = "pending" | "complete" | "failed";
@@ -854,20 +857,17 @@ export async function waitForProcessing(
try { try {
const client = api.getApiClient(); const client = api.getApiClient();
const statusCheckingStarted = Date.now(); // Do an initial wait because processing will always take a minimum of 2-3 seconds
while (true) { let statusCheckBackoff = STATUS_CHECK_INITIAL_BACKOFF_MILLISECONDS;
if ( if (!isInTestMode()) {
Date.now() > await util.delay(statusCheckBackoff, { allowProcessExit: false });
statusCheckingStarted + STATUS_CHECK_TIMEOUT_MILLISECONDS
) {
// If the analysis hasn't finished processing in the allotted time, we continue anyway rather than failing.
// It's possible the analysis will eventually finish processing, but it's not worth spending more
// Actions time waiting.
logger.warning(
"Timed out waiting for analysis to finish processing. Continuing.",
);
break;
} }
for (
let statusCheckCount = 1;
statusCheckCount <= STATUS_CHECK_MAX_TRIES;
statusCheckCount++
) {
let response: OctokitResponse<any> | undefined = undefined; let response: OctokitResponse<any> | undefined = undefined;
try { try {
response = await client.request( response = await client.request(
@@ -912,9 +912,18 @@ export async function waitForProcessing(
util.assertNever(status); util.assertNever(status);
} }
await util.delay(STATUS_CHECK_FREQUENCY_MILLISECONDS, { if (statusCheckCount === STATUS_CHECK_MAX_TRIES) {
allowProcessExit: false, // If the analysis hasn't finished processing in the allotted time, we continue anyway rather than failing.
}); // It's possible the analysis will eventually finish processing, but it's not worth spending more
// Actions time waiting.
logger.warning(
"Timed out waiting for analysis to finish processing. Continuing.",
);
break;
} else {
statusCheckBackoff *= STATUS_CHECK_BACKOFF_MULTIPLIER;
await util.delay(statusCheckBackoff, { allowProcessExit: false });
}
} }
} finally { } finally {
logger.endGroup(); logger.endGroup();