Compare commits

...

16 Commits

Author SHA1 Message Date
Chuan-kai Lin
8475d6a7fa build: refresh js files 2025-09-26 15:22:26 -07:00
Chuan-kai Lin
f338c0a332 Overlay: use overlay-base CodeQL version 2025-09-26 15:21:28 -07:00
Chuan-kai Lin
1b32ed334b Add getCodeQLVersionFromOverlayBaseDatabase() 2025-09-26 15:15:08 -07:00
Chuan-kai Lin
ef45800e5c Add getMostRecentActionsCacheEntry() 2025-09-26 15:15:07 -07:00
Chuan-kai Lin
c35d1b3eb4 Extract getCacheWorkflowKeyPrefix() 2025-09-26 15:15:07 -07:00
Chuan-kai Lin
eb5531f129 Add overlay-base database cache key tests 2025-09-26 15:15:07 -07:00
Chuan-kai Lin
c4d96bef6a build: refresh js files 2025-09-26 15:13:52 -07:00
Chuan-kai Lin
c3d80a1a64 Compute preliminary overlay database mode 2025-09-26 15:13:51 -07:00
Chuan-kai Lin
57444ccc63 Add getPreliminaryOverlayDatabaseMode() 2025-09-26 15:13:51 -07:00
Chuan-kai Lin
25b6845641 Move support code into loadUserConfig() 2025-09-26 15:13:51 -07:00
Chuan-kai Lin
c079287f80 Call amendInputConfigFile() early
This commit extracts into amendInputConfigFile() the code that processes
configInput, and moves the call from initConfig() into init-action.ts.
2025-09-26 15:13:51 -07:00
Chuan-kai Lin
fcd4657460 Compute InitConfigInputs early 2025-09-26 15:13:50 -07:00
Chuan-kai Lin
9ebca4c820 Move codeql out of InitConfigInputs 2025-09-26 15:13:50 -07:00
Chuan-kai Lin
046ce56f57 Overlay: choose database mode without CodeQL CLI
This commit makes getOverlayDatabaseMode() accept undefined as arguments
for codeql and languages.
2025-09-26 15:13:50 -07:00
Chuan-kai Lin
f6247bb37b Overlay: check features without CodeQL CLI
This commit changes isOverlayAnalysisFeatureEnabled() so that it uses
the overlay-language-aliases.json file to resolve language aliases
instead of relying on the CodeQL CLI.
2025-09-26 15:13:50 -07:00
Chuan-kai Lin
6e69a927f6 Remove Feature.OverlayAnalysis minimumVersion
getOverlayDatabaseMode() already performs the same version check, so we
can remove minimumVersion from Feature.OverlayAnalysis. Doing so allows
the action to perform feature checks without CodeQL CLI.
2025-09-26 15:13:50 -07:00
19 changed files with 4349 additions and 3617 deletions

View File

@@ -24984,11 +24984,11 @@ var require_valid = __commonJS({
"node_modules/semver/functions/valid.js"(exports2, module2) {
"use strict";
var parse = require_parse2();
var valid3 = (version, options) => {
var valid4 = (version, options) => {
const v = parse(version, options);
return v ? v.version : null;
};
module2.exports = valid3;
module2.exports = valid4;
}
});
@@ -25195,8 +25195,8 @@ var require_lt = __commonJS({
"node_modules/semver/functions/lt.js"(exports2, module2) {
"use strict";
var compare = require_compare();
var lt = (a, b, loose) => compare(a, b, loose) < 0;
module2.exports = lt;
var lt2 = (a, b, loose) => compare(a, b, loose) < 0;
module2.exports = lt2;
}
});
@@ -25248,7 +25248,7 @@ var require_cmp = __commonJS({
var neq = require_neq();
var gt = require_gt();
var gte5 = require_gte();
var lt = require_lt();
var lt2 = require_lt();
var lte = require_lte();
var cmp = (a, op, b, loose) => {
switch (op) {
@@ -25279,7 +25279,7 @@ var require_cmp = __commonJS({
case ">=":
return gte5(a, b, loose);
case "<":
return lt(a, b, loose);
return lt2(a, b, loose);
case "<=":
return lte(a, b, loose);
default:
@@ -26033,7 +26033,7 @@ var require_outside = __commonJS({
var Range2 = require_range();
var satisfies2 = require_satisfies();
var gt = require_gt();
var lt = require_lt();
var lt2 = require_lt();
var lte = require_lte();
var gte5 = require_gte();
var outside = (version, range, hilo, options) => {
@@ -26044,12 +26044,12 @@ var require_outside = __commonJS({
case ">":
gtfn = gt;
ltefn = lte;
ltfn = lt;
ltfn = lt2;
comp = ">";
ecomp = ">=";
break;
case "<":
gtfn = lt;
gtfn = lt2;
ltefn = gte5;
ltfn = gt;
comp = "<";
@@ -26229,12 +26229,12 @@ var require_subset = __commonJS({
}
}
const eqSet = /* @__PURE__ */ new Set();
let gt, lt;
let gt, lt2;
for (const c of sub) {
if (c.operator === ">" || c.operator === ">=") {
gt = higherGT(gt, c, options);
} else if (c.operator === "<" || c.operator === "<=") {
lt = lowerLT(lt, c, options);
lt2 = lowerLT(lt2, c, options);
} else {
eqSet.add(c.semver);
}
@@ -26243,11 +26243,11 @@ var require_subset = __commonJS({
return null;
}
let gtltComp;
if (gt && lt) {
gtltComp = compare(gt.semver, lt.semver, options);
if (gt && lt2) {
gtltComp = compare(gt.semver, lt2.semver, options);
if (gtltComp > 0) {
return null;
} else if (gtltComp === 0 && (gt.operator !== ">=" || lt.operator !== "<=")) {
} else if (gtltComp === 0 && (gt.operator !== ">=" || lt2.operator !== "<=")) {
return null;
}
}
@@ -26255,7 +26255,7 @@ var require_subset = __commonJS({
if (gt && !satisfies2(eq, String(gt), options)) {
return null;
}
if (lt && !satisfies2(eq, String(lt), options)) {
if (lt2 && !satisfies2(eq, String(lt2), options)) {
return null;
}
for (const c of dom) {
@@ -26267,9 +26267,9 @@ var require_subset = __commonJS({
}
let higher, lower;
let hasDomLT, hasDomGT;
let needDomLTPre = lt && !options.includePrerelease && lt.semver.prerelease.length ? lt.semver : false;
let needDomLTPre = lt2 && !options.includePrerelease && lt2.semver.prerelease.length ? lt2.semver : false;
let needDomGTPre = gt && !options.includePrerelease && gt.semver.prerelease.length ? gt.semver : false;
if (needDomLTPre && needDomLTPre.prerelease.length === 1 && lt.operator === "<" && needDomLTPre.prerelease[0] === 0) {
if (needDomLTPre && needDomLTPre.prerelease.length === 1 && lt2.operator === "<" && needDomLTPre.prerelease[0] === 0) {
needDomLTPre = false;
}
for (const c of dom) {
@@ -26290,29 +26290,29 @@ var require_subset = __commonJS({
return false;
}
}
if (lt) {
if (lt2) {
if (needDomLTPre) {
if (c.semver.prerelease && c.semver.prerelease.length && c.semver.major === needDomLTPre.major && c.semver.minor === needDomLTPre.minor && c.semver.patch === needDomLTPre.patch) {
needDomLTPre = false;
}
}
if (c.operator === "<" || c.operator === "<=") {
lower = lowerLT(lt, c, options);
if (lower === c && lower !== lt) {
lower = lowerLT(lt2, c, options);
if (lower === c && lower !== lt2) {
return false;
}
} else if (lt.operator === "<=" && !satisfies2(lt.semver, String(c), options)) {
} else if (lt2.operator === "<=" && !satisfies2(lt2.semver, String(c), options)) {
return false;
}
}
if (!c.operator && (lt || gt) && gtltComp !== 0) {
if (!c.operator && (lt2 || gt) && gtltComp !== 0) {
return false;
}
}
if (gt && hasDomLT && !lt && gtltComp !== 0) {
if (gt && hasDomLT && !lt2 && gtltComp !== 0) {
return false;
}
if (lt && hasDomGT && !gt && gtltComp !== 0) {
if (lt2 && hasDomGT && !gt && gtltComp !== 0) {
return false;
}
if (needDomGTPre || needDomLTPre) {
@@ -26347,7 +26347,7 @@ var require_semver2 = __commonJS({
var SemVer = require_semver();
var identifiers = require_identifiers();
var parse = require_parse2();
var valid3 = require_valid();
var valid4 = require_valid();
var clean3 = require_clean();
var inc = require_inc();
var diff = require_diff();
@@ -26362,7 +26362,7 @@ var require_semver2 = __commonJS({
var sort = require_sort();
var rsort = require_rsort();
var gt = require_gt();
var lt = require_lt();
var lt2 = require_lt();
var eq = require_eq();
var neq = require_neq();
var gte5 = require_gte();
@@ -26385,7 +26385,7 @@ var require_semver2 = __commonJS({
var subset = require_subset();
module2.exports = {
parse,
valid: valid3,
valid: valid4,
clean: clean3,
inc,
diff,
@@ -26400,7 +26400,7 @@ var require_semver2 = __commonJS({
sort,
rsort,
gt,
lt,
lt: lt2,
eq,
neq,
gte: gte5,
@@ -29974,8 +29974,8 @@ var require_semver3 = __commonJS({
return null;
}
}
exports2.valid = valid3;
function valid3(version, options) {
exports2.valid = valid4;
function valid4(version, options) {
var v = parse(version, options);
return v ? v.version : null;
}
@@ -30295,8 +30295,8 @@ var require_semver3 = __commonJS({
function gt(a, b, loose) {
return compare(a, b, loose) > 0;
}
exports2.lt = lt;
function lt(a, b, loose) {
exports2.lt = lt2;
function lt2(a, b, loose) {
return compare(a, b, loose) < 0;
}
exports2.eq = eq;
@@ -30341,7 +30341,7 @@ var require_semver3 = __commonJS({
case ">=":
return gte5(a, b, loose);
case "<":
return lt(a, b, loose);
return lt2(a, b, loose);
case "<=":
return lte(a, b, loose);
default:
@@ -30878,12 +30878,12 @@ var require_semver3 = __commonJS({
case ">":
gtfn = gt;
ltefn = lte;
ltfn = lt;
ltfn = lt2;
comp = ">";
ecomp = ">=";
break;
case "<":
gtfn = lt;
gtfn = lt2;
ltefn = gte5;
ltfn = gt;
comp = "<";
@@ -31085,7 +31085,7 @@ var require_cacheUtils = __commonJS({
var crypto = __importStar4(require("crypto"));
var fs7 = __importStar4(require("fs"));
var path6 = __importStar4(require("path"));
var semver8 = __importStar4(require_semver3());
var semver9 = __importStar4(require_semver3());
var util = __importStar4(require("util"));
var constants_1 = require_constants7();
var versionSalt = "1.0";
@@ -31182,7 +31182,7 @@ var require_cacheUtils = __commonJS({
function getCompressionMethod() {
return __awaiter4(this, void 0, void 0, function* () {
const versionOutput = yield getVersion("zstd", ["--quiet"]);
const version = semver8.clean(versionOutput);
const version = semver9.clean(versionOutput);
core14.debug(`zstd version: ${version}`);
if (versionOutput === "") {
return constants_1.CompressionMethod.Gzip;
@@ -73493,7 +73493,7 @@ var require_manifest = __commonJS({
};
Object.defineProperty(exports2, "__esModule", { value: true });
exports2._readLinuxVersionFile = exports2._getOsVersion = exports2._findMatch = void 0;
var semver8 = __importStar4(require_semver2());
var semver9 = __importStar4(require_semver2());
var core_1 = require_core();
var os = require("os");
var cp = require("child_process");
@@ -73507,7 +73507,7 @@ var require_manifest = __commonJS({
for (const candidate of candidates) {
const version = candidate.version;
(0, core_1.debug)(`check ${version} satisfies ${versionSpec}`);
if (semver8.satisfies(version, versionSpec) && (!stable || candidate.stable === stable)) {
if (semver9.satisfies(version, versionSpec) && (!stable || candidate.stable === stable)) {
file = candidate.files.find((item) => {
(0, core_1.debug)(`${item.arch}===${archFilter} && ${item.platform}===${platFilter}`);
let chk = item.arch === archFilter && item.platform === platFilter;
@@ -73516,7 +73516,7 @@ var require_manifest = __commonJS({
if (osVersion === item.platform_version) {
chk = true;
} else {
chk = semver8.satisfies(osVersion, item.platform_version);
chk = semver9.satisfies(osVersion, item.platform_version);
}
}
return chk;
@@ -73746,7 +73746,7 @@ var require_tool_cache = __commonJS({
var os = __importStar4(require("os"));
var path6 = __importStar4(require("path"));
var httpm = __importStar4(require_lib());
var semver8 = __importStar4(require_semver2());
var semver9 = __importStar4(require_semver2());
var stream = __importStar4(require("stream"));
var util = __importStar4(require("util"));
var assert_1 = require("assert");
@@ -74020,7 +74020,7 @@ var require_tool_cache = __commonJS({
}
function cacheDir(sourceDir, tool, version, arch) {
return __awaiter4(this, void 0, void 0, function* () {
version = semver8.clean(version) || version;
version = semver9.clean(version) || version;
arch = arch || os.arch();
core14.debug(`Caching tool ${tool} ${version} ${arch}`);
core14.debug(`source dir: ${sourceDir}`);
@@ -74039,7 +74039,7 @@ var require_tool_cache = __commonJS({
exports2.cacheDir = cacheDir;
function cacheFile(sourceFile, targetFile, tool, version, arch) {
return __awaiter4(this, void 0, void 0, function* () {
version = semver8.clean(version) || version;
version = semver9.clean(version) || version;
arch = arch || os.arch();
core14.debug(`Caching tool ${tool} ${version} ${arch}`);
core14.debug(`source file: ${sourceFile}`);
@@ -74070,7 +74070,7 @@ var require_tool_cache = __commonJS({
}
let toolPath = "";
if (versionSpec) {
versionSpec = semver8.clean(versionSpec) || "";
versionSpec = semver9.clean(versionSpec) || "";
const cachePath = path6.join(_getCacheDirectory(), toolName, versionSpec, arch);
core14.debug(`checking cache: ${cachePath}`);
if (fs7.existsSync(cachePath) && fs7.existsSync(`${cachePath}.complete`)) {
@@ -74154,7 +74154,7 @@ var require_tool_cache = __commonJS({
}
function _createToolPath(tool, version, arch) {
return __awaiter4(this, void 0, void 0, function* () {
const folderPath = path6.join(_getCacheDirectory(), tool, semver8.clean(version) || version, arch || "");
const folderPath = path6.join(_getCacheDirectory(), tool, semver9.clean(version) || version, arch || "");
core14.debug(`destination ${folderPath}`);
const markerPath = `${folderPath}.complete`;
yield io6.rmRF(folderPath);
@@ -74164,31 +74164,31 @@ var require_tool_cache = __commonJS({
});
}
function _completeToolPath(tool, version, arch) {
const folderPath = path6.join(_getCacheDirectory(), tool, semver8.clean(version) || version, arch || "");
const folderPath = path6.join(_getCacheDirectory(), tool, semver9.clean(version) || version, arch || "");
const markerPath = `${folderPath}.complete`;
fs7.writeFileSync(markerPath, "");
core14.debug("finished caching tool");
}
function isExplicitVersion(versionSpec) {
const c = semver8.clean(versionSpec) || "";
const c = semver9.clean(versionSpec) || "";
core14.debug(`isExplicit: ${c}`);
const valid3 = semver8.valid(c) != null;
core14.debug(`explicit? ${valid3}`);
return valid3;
const valid4 = semver9.valid(c) != null;
core14.debug(`explicit? ${valid4}`);
return valid4;
}
exports2.isExplicitVersion = isExplicitVersion;
function evaluateVersions(versions, versionSpec) {
let version = "";
core14.debug(`evaluating ${versions.length} versions`);
versions = versions.sort((a, b) => {
if (semver8.gt(a, b)) {
if (semver9.gt(a, b)) {
return 1;
}
return -1;
});
for (let i = versions.length - 1; i >= 0; i--) {
const potential = versions[i];
const satisfied = semver8.satisfies(potential, versionSpec);
const satisfied = semver9.satisfies(potential, versionSpec);
if (satisfied) {
version = potential;
break;
@@ -81746,7 +81746,7 @@ var require_stream_writable = __commonJS({
pna.nextTick(cb, er);
}
function validChunk(stream, state, chunk, cb) {
var valid3 = true;
var valid4 = true;
var er = false;
if (chunk === null) {
er = new TypeError("May not write null values to stream");
@@ -81756,9 +81756,9 @@ var require_stream_writable = __commonJS({
if (er) {
stream.emit("error", er);
pna.nextTick(cb, er);
valid3 = false;
valid4 = false;
}
return valid3;
return valid4;
}
Writable.prototype.write = function(chunk, encoding, cb) {
var state = this._writableState;
@@ -117550,10 +117550,191 @@ var PACK_IDENTIFIER_PATTERN = (function() {
// src/feature-flags.ts
var semver4 = __toESM(require_semver2());
// src/overlay-database-utils.ts
var fs2 = __toESM(require("fs"));
var path2 = __toESM(require("path"));
var actionsCache = __toESM(require_cache3());
// src/tools-features.ts
var semver3 = __toESM(require_semver2());
function isSupportedToolsFeature(versionInfo, feature) {
return !!versionInfo.features && versionInfo.features[feature];
}
var SafeArtifactUploadVersion = "2.20.3";
function isSafeArtifactUpload(codeQlVersion) {
return !codeQlVersion ? true : semver3.gte(codeQlVersion, SafeArtifactUploadVersion);
}
// src/feature-flags.ts
var featureConfig = {
["cleanup_trap_caches" /* CleanupTrapCaches */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_CLEANUP_TRAP_CACHES",
minimumVersion: void 0
},
["cpp_dependency_installation_enabled" /* CppDependencyInstallation */]: {
defaultValue: false,
envVar: "CODEQL_EXTRACTOR_CPP_AUTOINSTALL_DEPENDENCIES",
legacyApi: true,
minimumVersion: "2.15.0"
},
["diff_informed_queries" /* DiffInformedQueries */]: {
defaultValue: true,
envVar: "CODEQL_ACTION_DIFF_INFORMED_QUERIES",
minimumVersion: "2.21.0"
},
["disable_csharp_buildless" /* DisableCsharpBuildless */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_DISABLE_CSHARP_BUILDLESS",
minimumVersion: void 0
},
["disable_java_buildless_enabled" /* DisableJavaBuildlessEnabled */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_DISABLE_JAVA_BUILDLESS",
legacyApi: true,
minimumVersion: void 0
},
["disable_kotlin_analysis_enabled" /* DisableKotlinAnalysisEnabled */]: {
defaultValue: false,
envVar: "CODEQL_DISABLE_KOTLIN_ANALYSIS",
legacyApi: true,
minimumVersion: void 0
},
["export_diagnostics_enabled" /* ExportDiagnosticsEnabled */]: {
defaultValue: true,
envVar: "CODEQL_ACTION_EXPORT_DIAGNOSTICS",
legacyApi: true,
minimumVersion: void 0
},
["resolve_supported_languages_using_cli" /* ResolveSupportedLanguagesUsingCli */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_RESOLVE_SUPPORTED_LANGUAGES_USING_CLI",
minimumVersion: void 0,
toolsFeature: "builtinExtractorsSpecifyDefaultQueries" /* BuiltinExtractorsSpecifyDefaultQueries */
},
["overlay_analysis" /* OverlayAnalysis */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS",
minimumVersion: void 0
},
["overlay_analysis_actions" /* OverlayAnalysisActions */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_ACTIONS",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_actions" /* OverlayAnalysisCodeScanningActions */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_ACTIONS",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_cpp" /* OverlayAnalysisCodeScanningCpp */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_CPP",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_csharp" /* OverlayAnalysisCodeScanningCsharp */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_CSHARP",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_go" /* OverlayAnalysisCodeScanningGo */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_GO",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_java" /* OverlayAnalysisCodeScanningJava */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_JAVA",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_javascript" /* OverlayAnalysisCodeScanningJavascript */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_JAVASCRIPT",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_python" /* OverlayAnalysisCodeScanningPython */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_PYTHON",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_ruby" /* OverlayAnalysisCodeScanningRuby */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_RUBY",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_rust" /* OverlayAnalysisCodeScanningRust */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_RUST",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_swift" /* OverlayAnalysisCodeScanningSwift */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_SWIFT",
minimumVersion: void 0
},
["overlay_analysis_cpp" /* OverlayAnalysisCpp */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CPP",
minimumVersion: void 0
},
["overlay_analysis_csharp" /* OverlayAnalysisCsharp */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CSHARP",
minimumVersion: void 0
},
["overlay_analysis_go" /* OverlayAnalysisGo */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_GO",
minimumVersion: void 0
},
["overlay_analysis_java" /* OverlayAnalysisJava */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_JAVA",
minimumVersion: void 0
},
["overlay_analysis_javascript" /* OverlayAnalysisJavascript */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_JAVASCRIPT",
minimumVersion: void 0
},
["overlay_analysis_python" /* OverlayAnalysisPython */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_PYTHON",
minimumVersion: void 0
},
["overlay_analysis_ruby" /* OverlayAnalysisRuby */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_RUBY",
minimumVersion: void 0
},
["overlay_analysis_rust" /* OverlayAnalysisRust */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_RUST",
minimumVersion: void 0
},
["overlay_analysis_swift" /* OverlayAnalysisSwift */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SWIFT",
minimumVersion: void 0
},
["python_default_is_to_not_extract_stdlib" /* PythonDefaultIsToNotExtractStdlib */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_DISABLE_PYTHON_STANDARD_LIBRARY_EXTRACTION",
minimumVersion: void 0,
toolsFeature: "pythonDefaultIsToNotExtractStdlib" /* PythonDefaultIsToNotExtractStdlib */
},
["use_repository_properties" /* UseRepositoryProperties */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES",
minimumVersion: void 0
},
["qa_telemetry_enabled" /* QaTelemetryEnabled */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_QA_TELEMETRY",
legacyApi: true,
minimumVersion: void 0
},
["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS",
minimumVersion: "2.23.0"
}
};
// src/git-utils.ts
var core7 = __toESM(require_core());
@@ -117718,6 +117899,12 @@ async function isAnalyzingDefaultBranch() {
return currentRef === defaultBranch;
}
// src/overlay-database-utils.ts
var fs2 = __toESM(require("fs"));
var path2 = __toESM(require("path"));
var actionsCache = __toESM(require_cache3());
var semver5 = __toESM(require_semver2());
// src/logging.ts
var core8 = __toESM(require_core());
function getActionsLogger() {
@@ -117733,7 +117920,6 @@ function withGroup(groupName, f) {
}
// src/overlay-database-utils.ts
var CODEQL_OVERLAY_MINIMUM_VERSION = "2.22.4";
var OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_MB = 15e3;
var OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_BYTES = OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_MB * 1e6;
async function writeBaseDatabaseOidsFile(config, sourceRoot) {
@@ -117793,192 +117979,6 @@ function computeChangedFiles(baseFileOids, overlayFileOids) {
return changes;
}
// src/tools-features.ts
var semver3 = __toESM(require_semver2());
function isSupportedToolsFeature(versionInfo, feature) {
return !!versionInfo.features && versionInfo.features[feature];
}
var SafeArtifactUploadVersion = "2.20.3";
function isSafeArtifactUpload(codeQlVersion) {
return !codeQlVersion ? true : semver3.gte(codeQlVersion, SafeArtifactUploadVersion);
}
// src/feature-flags.ts
var featureConfig = {
["cleanup_trap_caches" /* CleanupTrapCaches */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_CLEANUP_TRAP_CACHES",
minimumVersion: void 0
},
["cpp_dependency_installation_enabled" /* CppDependencyInstallation */]: {
defaultValue: false,
envVar: "CODEQL_EXTRACTOR_CPP_AUTOINSTALL_DEPENDENCIES",
legacyApi: true,
minimumVersion: "2.15.0"
},
["diff_informed_queries" /* DiffInformedQueries */]: {
defaultValue: true,
envVar: "CODEQL_ACTION_DIFF_INFORMED_QUERIES",
minimumVersion: "2.21.0"
},
["disable_csharp_buildless" /* DisableCsharpBuildless */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_DISABLE_CSHARP_BUILDLESS",
minimumVersion: void 0
},
["disable_java_buildless_enabled" /* DisableJavaBuildlessEnabled */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_DISABLE_JAVA_BUILDLESS",
legacyApi: true,
minimumVersion: void 0
},
["disable_kotlin_analysis_enabled" /* DisableKotlinAnalysisEnabled */]: {
defaultValue: false,
envVar: "CODEQL_DISABLE_KOTLIN_ANALYSIS",
legacyApi: true,
minimumVersion: void 0
},
["export_diagnostics_enabled" /* ExportDiagnosticsEnabled */]: {
defaultValue: true,
envVar: "CODEQL_ACTION_EXPORT_DIAGNOSTICS",
legacyApi: true,
minimumVersion: void 0
},
["resolve_supported_languages_using_cli" /* ResolveSupportedLanguagesUsingCli */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_RESOLVE_SUPPORTED_LANGUAGES_USING_CLI",
minimumVersion: void 0,
toolsFeature: "builtinExtractorsSpecifyDefaultQueries" /* BuiltinExtractorsSpecifyDefaultQueries */
},
["overlay_analysis" /* OverlayAnalysis */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS",
minimumVersion: CODEQL_OVERLAY_MINIMUM_VERSION
},
["overlay_analysis_actions" /* OverlayAnalysisActions */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_ACTIONS",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_actions" /* OverlayAnalysisCodeScanningActions */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_ACTIONS",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_cpp" /* OverlayAnalysisCodeScanningCpp */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_CPP",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_csharp" /* OverlayAnalysisCodeScanningCsharp */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_CSHARP",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_go" /* OverlayAnalysisCodeScanningGo */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_GO",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_java" /* OverlayAnalysisCodeScanningJava */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_JAVA",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_javascript" /* OverlayAnalysisCodeScanningJavascript */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_JAVASCRIPT",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_python" /* OverlayAnalysisCodeScanningPython */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_PYTHON",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_ruby" /* OverlayAnalysisCodeScanningRuby */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_RUBY",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_rust" /* OverlayAnalysisCodeScanningRust */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_RUST",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_swift" /* OverlayAnalysisCodeScanningSwift */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_SWIFT",
minimumVersion: void 0
},
["overlay_analysis_cpp" /* OverlayAnalysisCpp */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CPP",
minimumVersion: void 0
},
["overlay_analysis_csharp" /* OverlayAnalysisCsharp */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CSHARP",
minimumVersion: void 0
},
["overlay_analysis_go" /* OverlayAnalysisGo */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_GO",
minimumVersion: void 0
},
["overlay_analysis_java" /* OverlayAnalysisJava */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_JAVA",
minimumVersion: void 0
},
["overlay_analysis_javascript" /* OverlayAnalysisJavascript */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_JAVASCRIPT",
minimumVersion: void 0
},
["overlay_analysis_python" /* OverlayAnalysisPython */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_PYTHON",
minimumVersion: void 0
},
["overlay_analysis_ruby" /* OverlayAnalysisRuby */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_RUBY",
minimumVersion: void 0
},
["overlay_analysis_rust" /* OverlayAnalysisRust */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_RUST",
minimumVersion: void 0
},
["overlay_analysis_swift" /* OverlayAnalysisSwift */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SWIFT",
minimumVersion: void 0
},
["python_default_is_to_not_extract_stdlib" /* PythonDefaultIsToNotExtractStdlib */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_DISABLE_PYTHON_STANDARD_LIBRARY_EXTRACTION",
minimumVersion: void 0,
toolsFeature: "pythonDefaultIsToNotExtractStdlib" /* PythonDefaultIsToNotExtractStdlib */
},
["use_repository_properties" /* UseRepositoryProperties */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES",
minimumVersion: void 0
},
["qa_telemetry_enabled" /* QaTelemetryEnabled */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_QA_TELEMETRY",
legacyApi: true,
minimumVersion: void 0
},
["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS",
minimumVersion: "2.23.0"
}
};
// src/trap-caching.ts
var actionsCache2 = __toESM(require_cache3());
@@ -118053,20 +118053,20 @@ function appendExtraQueryExclusions(extraQueryExclusions, cliConfig) {
// src/setup-codeql.ts
var toolcache3 = __toESM(require_tool_cache());
var import_fast_deep_equal = __toESM(require_fast_deep_equal());
var semver7 = __toESM(require_semver2());
var semver8 = __toESM(require_semver2());
// src/tar.ts
var import_toolrunner = __toESM(require_toolrunner());
var io4 = __toESM(require_io());
var toolcache = __toESM(require_tool_cache());
var semver5 = __toESM(require_semver2());
var semver6 = __toESM(require_semver2());
// src/tools-download.ts
var core9 = __toESM(require_core());
var import_http_client = __toESM(require_lib());
var toolcache2 = __toESM(require_tool_cache());
var import_follow_redirects = __toESM(require_follow_redirects());
var semver6 = __toESM(require_semver2());
var semver7 = __toESM(require_semver2());
var STREAMING_HIGH_WATERMARK_BYTES = 4 * 1024 * 1024;
// src/tracer-config.ts

1168
lib/analyze-action.js generated

File diff suppressed because it is too large Load Diff

594
lib/autobuild-action.js generated
View File

@@ -24984,11 +24984,11 @@ var require_valid = __commonJS({
"node_modules/semver/functions/valid.js"(exports2, module2) {
"use strict";
var parse = require_parse2();
var valid3 = (version, options) => {
var valid4 = (version, options) => {
const v = parse(version, options);
return v ? v.version : null;
};
module2.exports = valid3;
module2.exports = valid4;
}
});
@@ -25195,8 +25195,8 @@ var require_lt = __commonJS({
"node_modules/semver/functions/lt.js"(exports2, module2) {
"use strict";
var compare = require_compare();
var lt = (a, b, loose) => compare(a, b, loose) < 0;
module2.exports = lt;
var lt2 = (a, b, loose) => compare(a, b, loose) < 0;
module2.exports = lt2;
}
});
@@ -25248,7 +25248,7 @@ var require_cmp = __commonJS({
var neq = require_neq();
var gt = require_gt();
var gte5 = require_gte();
var lt = require_lt();
var lt2 = require_lt();
var lte = require_lte();
var cmp = (a, op, b, loose) => {
switch (op) {
@@ -25279,7 +25279,7 @@ var require_cmp = __commonJS({
case ">=":
return gte5(a, b, loose);
case "<":
return lt(a, b, loose);
return lt2(a, b, loose);
case "<=":
return lte(a, b, loose);
default:
@@ -26033,7 +26033,7 @@ var require_outside = __commonJS({
var Range2 = require_range();
var satisfies2 = require_satisfies();
var gt = require_gt();
var lt = require_lt();
var lt2 = require_lt();
var lte = require_lte();
var gte5 = require_gte();
var outside = (version, range, hilo, options) => {
@@ -26044,12 +26044,12 @@ var require_outside = __commonJS({
case ">":
gtfn = gt;
ltefn = lte;
ltfn = lt;
ltfn = lt2;
comp = ">";
ecomp = ">=";
break;
case "<":
gtfn = lt;
gtfn = lt2;
ltefn = gte5;
ltfn = gt;
comp = "<";
@@ -26229,12 +26229,12 @@ var require_subset = __commonJS({
}
}
const eqSet = /* @__PURE__ */ new Set();
let gt, lt;
let gt, lt2;
for (const c of sub) {
if (c.operator === ">" || c.operator === ">=") {
gt = higherGT(gt, c, options);
} else if (c.operator === "<" || c.operator === "<=") {
lt = lowerLT(lt, c, options);
lt2 = lowerLT(lt2, c, options);
} else {
eqSet.add(c.semver);
}
@@ -26243,11 +26243,11 @@ var require_subset = __commonJS({
return null;
}
let gtltComp;
if (gt && lt) {
gtltComp = compare(gt.semver, lt.semver, options);
if (gt && lt2) {
gtltComp = compare(gt.semver, lt2.semver, options);
if (gtltComp > 0) {
return null;
} else if (gtltComp === 0 && (gt.operator !== ">=" || lt.operator !== "<=")) {
} else if (gtltComp === 0 && (gt.operator !== ">=" || lt2.operator !== "<=")) {
return null;
}
}
@@ -26255,7 +26255,7 @@ var require_subset = __commonJS({
if (gt && !satisfies2(eq, String(gt), options)) {
return null;
}
if (lt && !satisfies2(eq, String(lt), options)) {
if (lt2 && !satisfies2(eq, String(lt2), options)) {
return null;
}
for (const c of dom) {
@@ -26267,9 +26267,9 @@ var require_subset = __commonJS({
}
let higher, lower;
let hasDomLT, hasDomGT;
let needDomLTPre = lt && !options.includePrerelease && lt.semver.prerelease.length ? lt.semver : false;
let needDomLTPre = lt2 && !options.includePrerelease && lt2.semver.prerelease.length ? lt2.semver : false;
let needDomGTPre = gt && !options.includePrerelease && gt.semver.prerelease.length ? gt.semver : false;
if (needDomLTPre && needDomLTPre.prerelease.length === 1 && lt.operator === "<" && needDomLTPre.prerelease[0] === 0) {
if (needDomLTPre && needDomLTPre.prerelease.length === 1 && lt2.operator === "<" && needDomLTPre.prerelease[0] === 0) {
needDomLTPre = false;
}
for (const c of dom) {
@@ -26290,29 +26290,29 @@ var require_subset = __commonJS({
return false;
}
}
if (lt) {
if (lt2) {
if (needDomLTPre) {
if (c.semver.prerelease && c.semver.prerelease.length && c.semver.major === needDomLTPre.major && c.semver.minor === needDomLTPre.minor && c.semver.patch === needDomLTPre.patch) {
needDomLTPre = false;
}
}
if (c.operator === "<" || c.operator === "<=") {
lower = lowerLT(lt, c, options);
if (lower === c && lower !== lt) {
lower = lowerLT(lt2, c, options);
if (lower === c && lower !== lt2) {
return false;
}
} else if (lt.operator === "<=" && !satisfies2(lt.semver, String(c), options)) {
} else if (lt2.operator === "<=" && !satisfies2(lt2.semver, String(c), options)) {
return false;
}
}
if (!c.operator && (lt || gt) && gtltComp !== 0) {
if (!c.operator && (lt2 || gt) && gtltComp !== 0) {
return false;
}
}
if (gt && hasDomLT && !lt && gtltComp !== 0) {
if (gt && hasDomLT && !lt2 && gtltComp !== 0) {
return false;
}
if (lt && hasDomGT && !gt && gtltComp !== 0) {
if (lt2 && hasDomGT && !gt && gtltComp !== 0) {
return false;
}
if (needDomGTPre || needDomLTPre) {
@@ -26347,7 +26347,7 @@ var require_semver2 = __commonJS({
var SemVer = require_semver();
var identifiers = require_identifiers();
var parse = require_parse2();
var valid3 = require_valid();
var valid4 = require_valid();
var clean3 = require_clean();
var inc = require_inc();
var diff = require_diff();
@@ -26362,7 +26362,7 @@ var require_semver2 = __commonJS({
var sort = require_sort();
var rsort = require_rsort();
var gt = require_gt();
var lt = require_lt();
var lt2 = require_lt();
var eq = require_eq();
var neq = require_neq();
var gte5 = require_gte();
@@ -26385,7 +26385,7 @@ var require_semver2 = __commonJS({
var subset = require_subset();
module2.exports = {
parse,
valid: valid3,
valid: valid4,
clean: clean3,
inc,
diff,
@@ -26400,7 +26400,7 @@ var require_semver2 = __commonJS({
sort,
rsort,
gt,
lt,
lt: lt2,
eq,
neq,
gte: gte5,
@@ -29974,8 +29974,8 @@ var require_semver3 = __commonJS({
return null;
}
}
exports2.valid = valid3;
function valid3(version, options) {
exports2.valid = valid4;
function valid4(version, options) {
var v = parse(version, options);
return v ? v.version : null;
}
@@ -30295,8 +30295,8 @@ var require_semver3 = __commonJS({
function gt(a, b, loose) {
return compare(a, b, loose) > 0;
}
exports2.lt = lt;
function lt(a, b, loose) {
exports2.lt = lt2;
function lt2(a, b, loose) {
return compare(a, b, loose) < 0;
}
exports2.eq = eq;
@@ -30341,7 +30341,7 @@ var require_semver3 = __commonJS({
case ">=":
return gte5(a, b, loose);
case "<":
return lt(a, b, loose);
return lt2(a, b, loose);
case "<=":
return lte(a, b, loose);
default:
@@ -30878,12 +30878,12 @@ var require_semver3 = __commonJS({
case ">":
gtfn = gt;
ltefn = lte;
ltfn = lt;
ltfn = lt2;
comp = ">";
ecomp = ">=";
break;
case "<":
gtfn = lt;
gtfn = lt2;
ltefn = gte5;
ltfn = gt;
comp = "<";
@@ -31085,7 +31085,7 @@ var require_cacheUtils = __commonJS({
var crypto = __importStar4(require("crypto"));
var fs7 = __importStar4(require("fs"));
var path7 = __importStar4(require("path"));
var semver8 = __importStar4(require_semver3());
var semver9 = __importStar4(require_semver3());
var util = __importStar4(require("util"));
var constants_1 = require_constants7();
var versionSalt = "1.0";
@@ -31182,7 +31182,7 @@ var require_cacheUtils = __commonJS({
function getCompressionMethod() {
return __awaiter4(this, void 0, void 0, function* () {
const versionOutput = yield getVersion("zstd", ["--quiet"]);
const version = semver8.clean(versionOutput);
const version = semver9.clean(versionOutput);
core14.debug(`zstd version: ${version}`);
if (versionOutput === "") {
return constants_1.CompressionMethod.Gzip;
@@ -73493,7 +73493,7 @@ var require_manifest = __commonJS({
};
Object.defineProperty(exports2, "__esModule", { value: true });
exports2._readLinuxVersionFile = exports2._getOsVersion = exports2._findMatch = void 0;
var semver8 = __importStar4(require_semver2());
var semver9 = __importStar4(require_semver2());
var core_1 = require_core();
var os2 = require("os");
var cp = require("child_process");
@@ -73507,7 +73507,7 @@ var require_manifest = __commonJS({
for (const candidate of candidates) {
const version = candidate.version;
(0, core_1.debug)(`check ${version} satisfies ${versionSpec}`);
if (semver8.satisfies(version, versionSpec) && (!stable || candidate.stable === stable)) {
if (semver9.satisfies(version, versionSpec) && (!stable || candidate.stable === stable)) {
file = candidate.files.find((item) => {
(0, core_1.debug)(`${item.arch}===${archFilter} && ${item.platform}===${platFilter}`);
let chk = item.arch === archFilter && item.platform === platFilter;
@@ -73516,7 +73516,7 @@ var require_manifest = __commonJS({
if (osVersion === item.platform_version) {
chk = true;
} else {
chk = semver8.satisfies(osVersion, item.platform_version);
chk = semver9.satisfies(osVersion, item.platform_version);
}
}
return chk;
@@ -73746,7 +73746,7 @@ var require_tool_cache = __commonJS({
var os2 = __importStar4(require("os"));
var path7 = __importStar4(require("path"));
var httpm = __importStar4(require_lib());
var semver8 = __importStar4(require_semver2());
var semver9 = __importStar4(require_semver2());
var stream = __importStar4(require("stream"));
var util = __importStar4(require("util"));
var assert_1 = require("assert");
@@ -74020,7 +74020,7 @@ var require_tool_cache = __commonJS({
}
function cacheDir(sourceDir, tool, version, arch) {
return __awaiter4(this, void 0, void 0, function* () {
version = semver8.clean(version) || version;
version = semver9.clean(version) || version;
arch = arch || os2.arch();
core14.debug(`Caching tool ${tool} ${version} ${arch}`);
core14.debug(`source dir: ${sourceDir}`);
@@ -74039,7 +74039,7 @@ var require_tool_cache = __commonJS({
exports2.cacheDir = cacheDir;
function cacheFile(sourceFile, targetFile, tool, version, arch) {
return __awaiter4(this, void 0, void 0, function* () {
version = semver8.clean(version) || version;
version = semver9.clean(version) || version;
arch = arch || os2.arch();
core14.debug(`Caching tool ${tool} ${version} ${arch}`);
core14.debug(`source file: ${sourceFile}`);
@@ -74070,7 +74070,7 @@ var require_tool_cache = __commonJS({
}
let toolPath = "";
if (versionSpec) {
versionSpec = semver8.clean(versionSpec) || "";
versionSpec = semver9.clean(versionSpec) || "";
const cachePath = path7.join(_getCacheDirectory(), toolName, versionSpec, arch);
core14.debug(`checking cache: ${cachePath}`);
if (fs7.existsSync(cachePath) && fs7.existsSync(`${cachePath}.complete`)) {
@@ -74154,7 +74154,7 @@ var require_tool_cache = __commonJS({
}
function _createToolPath(tool, version, arch) {
return __awaiter4(this, void 0, void 0, function* () {
const folderPath = path7.join(_getCacheDirectory(), tool, semver8.clean(version) || version, arch || "");
const folderPath = path7.join(_getCacheDirectory(), tool, semver9.clean(version) || version, arch || "");
core14.debug(`destination ${folderPath}`);
const markerPath = `${folderPath}.complete`;
yield io5.rmRF(folderPath);
@@ -74164,31 +74164,31 @@ var require_tool_cache = __commonJS({
});
}
function _completeToolPath(tool, version, arch) {
const folderPath = path7.join(_getCacheDirectory(), tool, semver8.clean(version) || version, arch || "");
const folderPath = path7.join(_getCacheDirectory(), tool, semver9.clean(version) || version, arch || "");
const markerPath = `${folderPath}.complete`;
fs7.writeFileSync(markerPath, "");
core14.debug("finished caching tool");
}
function isExplicitVersion(versionSpec) {
const c = semver8.clean(versionSpec) || "";
const c = semver9.clean(versionSpec) || "";
core14.debug(`isExplicit: ${c}`);
const valid3 = semver8.valid(c) != null;
core14.debug(`explicit? ${valid3}`);
return valid3;
const valid4 = semver9.valid(c) != null;
core14.debug(`explicit? ${valid4}`);
return valid4;
}
exports2.isExplicitVersion = isExplicitVersion;
function evaluateVersions(versions, versionSpec) {
let version = "";
core14.debug(`evaluating ${versions.length} versions`);
versions = versions.sort((a, b) => {
if (semver8.gt(a, b)) {
if (semver9.gt(a, b)) {
return 1;
}
return -1;
});
for (let i = versions.length - 1; i >= 0; i--) {
const potential = versions[i];
const satisfied = semver8.satisfies(potential, versionSpec);
const satisfied = semver9.satisfies(potential, versionSpec);
if (satisfied) {
version = potential;
break;
@@ -78290,249 +78290,14 @@ var PACK_IDENTIFIER_PATTERN = (function() {
})();
// src/feature-flags.ts
var fs3 = __toESM(require("fs"));
var path3 = __toESM(require("path"));
var fs2 = __toESM(require("fs"));
var path2 = __toESM(require("path"));
var semver4 = __toESM(require_semver2());
// src/defaults.json
var bundleVersion = "codeql-bundle-v2.23.1";
var cliVersion = "2.23.1";
// src/overlay-database-utils.ts
var fs2 = __toESM(require("fs"));
var path2 = __toESM(require("path"));
var actionsCache = __toESM(require_cache3());
// src/git-utils.ts
var core7 = __toESM(require_core());
var toolrunner2 = __toESM(require_toolrunner());
var io3 = __toESM(require_io());
var runGitCommand = async function(workingDirectory, args, customErrorMessage) {
let stdout = "";
let stderr = "";
core7.debug(`Running git command: git ${args.join(" ")}`);
try {
await new toolrunner2.ToolRunner(await io3.which("git", true), args, {
silent: true,
listeners: {
stdout: (data) => {
stdout += data.toString();
},
stderr: (data) => {
stderr += data.toString();
}
},
cwd: workingDirectory
}).exec();
return stdout;
} catch (error2) {
let reason = stderr;
if (stderr.includes("not a git repository")) {
reason = "The checkout path provided to the action does not appear to be a git repository.";
}
core7.info(`git call failed. ${customErrorMessage} Error: ${reason}`);
throw error2;
}
};
var getCommitOid = async function(checkoutPath, ref = "HEAD") {
try {
const stdout = await runGitCommand(
checkoutPath,
["rev-parse", ref],
"Continuing with commit SHA from user input or environment."
);
return stdout.trim();
} catch {
return getOptionalInput("sha") || getRequiredEnvParam("GITHUB_SHA");
}
};
var decodeGitFilePath = function(filePath) {
if (filePath.startsWith('"') && filePath.endsWith('"')) {
filePath = filePath.substring(1, filePath.length - 1);
return filePath.replace(
/\\([abfnrtv\\"]|[0-7]{1,3})/g,
(_match, seq2) => {
switch (seq2[0]) {
case "a":
return "\x07";
case "b":
return "\b";
case "f":
return "\f";
case "n":
return "\n";
case "r":
return "\r";
case "t":
return " ";
case "v":
return "\v";
case "\\":
return "\\";
case '"':
return '"';
default:
return String.fromCharCode(parseInt(seq2, 8));
}
}
);
}
return filePath;
};
var getFileOidsUnderPath = async function(basePath) {
const stdout = await runGitCommand(
basePath,
["ls-files", "--recurse-submodules", "--format=%(objectname)_%(path)"],
"Cannot list Git OIDs of tracked files."
);
const fileOidMap = {};
const regex = /^([0-9a-f]{40})_(.+)$/;
for (const line of stdout.split("\n")) {
if (line) {
const match = line.match(regex);
if (match) {
const oid = match[1];
const path7 = decodeGitFilePath(match[2]);
fileOidMap[path7] = oid;
} else {
throw new Error(`Unexpected "git ls-files" output: ${line}`);
}
}
}
return fileOidMap;
};
function getRefFromEnv() {
let refEnv;
try {
refEnv = getRequiredEnvParam("GITHUB_REF");
} catch (e) {
const maybeRef = process.env["CODE_SCANNING_REF"];
if (maybeRef === void 0 || maybeRef.length === 0) {
throw e;
}
refEnv = maybeRef;
}
return refEnv;
}
async function getRef() {
const refInput = getOptionalInput("ref");
const shaInput = getOptionalInput("sha");
const checkoutPath = getOptionalInput("checkout_path") || getOptionalInput("source-root") || getRequiredEnvParam("GITHUB_WORKSPACE");
const hasRefInput = !!refInput;
const hasShaInput = !!shaInput;
if ((hasRefInput || hasShaInput) && !(hasRefInput && hasShaInput)) {
throw new ConfigurationError(
"Both 'ref' and 'sha' are required if one of them is provided."
);
}
const ref = refInput || getRefFromEnv();
const sha = shaInput || getRequiredEnvParam("GITHUB_SHA");
if (refInput) {
return refInput;
}
const pull_ref_regex = /refs\/pull\/(\d+)\/merge/;
if (!pull_ref_regex.test(ref)) {
return ref;
}
const head = await getCommitOid(checkoutPath, "HEAD");
const hasChangedRef = sha !== head && await getCommitOid(
checkoutPath,
ref.replace(/^refs\/pull\//, "refs/remotes/pull/")
) !== head;
if (hasChangedRef) {
const newRef = ref.replace(pull_ref_regex, "refs/pull/$1/head");
core7.debug(
`No longer on merge commit, rewriting ref from ${ref} to ${newRef}.`
);
return newRef;
} else {
return ref;
}
}
function removeRefsHeadsPrefix(ref) {
return ref.startsWith("refs/heads/") ? ref.slice("refs/heads/".length) : ref;
}
async function isAnalyzingDefaultBranch() {
if (process.env.CODE_SCANNING_IS_ANALYZING_DEFAULT_BRANCH === "true") {
return true;
}
let currentRef = await getRef();
currentRef = removeRefsHeadsPrefix(currentRef);
const event = getWorkflowEvent();
let defaultBranch = event?.repository?.default_branch;
if (getWorkflowEventName() === "schedule") {
defaultBranch = removeRefsHeadsPrefix(getRefFromEnv());
}
return currentRef === defaultBranch;
}
// src/logging.ts
var core8 = __toESM(require_core());
function getActionsLogger() {
return core8;
}
// src/overlay-database-utils.ts
var CODEQL_OVERLAY_MINIMUM_VERSION = "2.22.4";
var OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_MB = 15e3;
var OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_BYTES = OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_MB * 1e6;
async function writeBaseDatabaseOidsFile(config, sourceRoot) {
const gitFileOids = await getFileOidsUnderPath(sourceRoot);
const gitFileOidsJson = JSON.stringify(gitFileOids);
const baseDatabaseOidsFilePath = getBaseDatabaseOidsFilePath(config);
await fs2.promises.writeFile(baseDatabaseOidsFilePath, gitFileOidsJson);
}
async function readBaseDatabaseOidsFile(config, logger) {
const baseDatabaseOidsFilePath = getBaseDatabaseOidsFilePath(config);
try {
const contents = await fs2.promises.readFile(
baseDatabaseOidsFilePath,
"utf-8"
);
return JSON.parse(contents);
} catch (e) {
logger.error(
`Failed to read overlay-base file OIDs from ${baseDatabaseOidsFilePath}: ${e.message || e}`
);
throw e;
}
}
function getBaseDatabaseOidsFilePath(config) {
return path2.join(config.dbLocation, "base-database-oids.json");
}
async function writeOverlayChangesFile(config, sourceRoot, logger) {
const baseFileOids = await readBaseDatabaseOidsFile(config, logger);
const overlayFileOids = await getFileOidsUnderPath(sourceRoot);
const changedFiles = computeChangedFiles(baseFileOids, overlayFileOids);
logger.info(
`Found ${changedFiles.length} changed file(s) under ${sourceRoot}.`
);
const changedFilesJson = JSON.stringify({ changes: changedFiles });
const overlayChangesFile = path2.join(
getTemporaryDirectory(),
"overlay-changes.json"
);
logger.debug(
`Writing overlay changed files to ${overlayChangesFile}: ${changedFilesJson}`
);
await fs2.promises.writeFile(overlayChangesFile, changedFilesJson);
return overlayChangesFile;
}
function computeChangedFiles(baseFileOids, overlayFileOids) {
const changes = [];
for (const [file, oid] of Object.entries(overlayFileOids)) {
if (!(file in baseFileOids) || baseFileOids[file] !== oid) {
changes.push(file);
}
}
for (const file of Object.keys(baseFileOids)) {
if (!(file in overlayFileOids)) {
changes.push(file);
}
}
return changes;
}
// src/tools-features.ts
var semver3 = __toESM(require_semver2());
function isSupportedToolsFeature(versionInfo, feature) {
@@ -78591,7 +78356,7 @@ var featureConfig = {
["overlay_analysis" /* OverlayAnalysis */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS",
minimumVersion: CODEQL_OVERLAY_MINIMUM_VERSION
minimumVersion: void 0
},
["overlay_analysis_actions" /* OverlayAnalysisActions */]: {
defaultValue: false,
@@ -78723,7 +78488,7 @@ var Features = class {
this.gitHubFeatureFlags = new GitHubFeatureFlags(
gitHubVersion,
repositoryNwo,
path3.join(tempDir, FEATURE_FLAGS_FILE_NAME),
path2.join(tempDir, FEATURE_FLAGS_FILE_NAME),
logger
);
}
@@ -78902,12 +78667,12 @@ var GitHubFeatureFlags = class {
}
async readLocalFlags() {
try {
if (fs3.existsSync(this.featureFlagsFile)) {
if (fs2.existsSync(this.featureFlagsFile)) {
this.logger.debug(
`Loading feature flags from ${this.featureFlagsFile}`
);
return JSON.parse(
fs3.readFileSync(this.featureFlagsFile, "utf8")
fs2.readFileSync(this.featureFlagsFile, "utf8")
);
}
} catch (e) {
@@ -78920,7 +78685,7 @@ var GitHubFeatureFlags = class {
async writeLocalFlags(flags) {
try {
this.logger.debug(`Writing feature flags to ${this.featureFlagsFile}`);
fs3.writeFileSync(this.featureFlagsFile, JSON.stringify(flags));
fs2.writeFileSync(this.featureFlagsFile, JSON.stringify(flags));
} catch (e) {
this.logger.warning(
`Error writing cached feature flags file ${this.featureFlagsFile}: ${e}.`
@@ -78981,6 +78746,241 @@ var GitHubFeatureFlags = class {
}
};
// src/git-utils.ts
var core7 = __toESM(require_core());
var toolrunner2 = __toESM(require_toolrunner());
var io3 = __toESM(require_io());
var runGitCommand = async function(workingDirectory, args, customErrorMessage) {
let stdout = "";
let stderr = "";
core7.debug(`Running git command: git ${args.join(" ")}`);
try {
await new toolrunner2.ToolRunner(await io3.which("git", true), args, {
silent: true,
listeners: {
stdout: (data) => {
stdout += data.toString();
},
stderr: (data) => {
stderr += data.toString();
}
},
cwd: workingDirectory
}).exec();
return stdout;
} catch (error2) {
let reason = stderr;
if (stderr.includes("not a git repository")) {
reason = "The checkout path provided to the action does not appear to be a git repository.";
}
core7.info(`git call failed. ${customErrorMessage} Error: ${reason}`);
throw error2;
}
};
var getCommitOid = async function(checkoutPath, ref = "HEAD") {
try {
const stdout = await runGitCommand(
checkoutPath,
["rev-parse", ref],
"Continuing with commit SHA from user input or environment."
);
return stdout.trim();
} catch {
return getOptionalInput("sha") || getRequiredEnvParam("GITHUB_SHA");
}
};
var decodeGitFilePath = function(filePath) {
if (filePath.startsWith('"') && filePath.endsWith('"')) {
filePath = filePath.substring(1, filePath.length - 1);
return filePath.replace(
/\\([abfnrtv\\"]|[0-7]{1,3})/g,
(_match, seq2) => {
switch (seq2[0]) {
case "a":
return "\x07";
case "b":
return "\b";
case "f":
return "\f";
case "n":
return "\n";
case "r":
return "\r";
case "t":
return " ";
case "v":
return "\v";
case "\\":
return "\\";
case '"':
return '"';
default:
return String.fromCharCode(parseInt(seq2, 8));
}
}
);
}
return filePath;
};
var getFileOidsUnderPath = async function(basePath) {
const stdout = await runGitCommand(
basePath,
["ls-files", "--recurse-submodules", "--format=%(objectname)_%(path)"],
"Cannot list Git OIDs of tracked files."
);
const fileOidMap = {};
const regex = /^([0-9a-f]{40})_(.+)$/;
for (const line of stdout.split("\n")) {
if (line) {
const match = line.match(regex);
if (match) {
const oid = match[1];
const path7 = decodeGitFilePath(match[2]);
fileOidMap[path7] = oid;
} else {
throw new Error(`Unexpected "git ls-files" output: ${line}`);
}
}
}
return fileOidMap;
};
function getRefFromEnv() {
let refEnv;
try {
refEnv = getRequiredEnvParam("GITHUB_REF");
} catch (e) {
const maybeRef = process.env["CODE_SCANNING_REF"];
if (maybeRef === void 0 || maybeRef.length === 0) {
throw e;
}
refEnv = maybeRef;
}
return refEnv;
}
async function getRef() {
const refInput = getOptionalInput("ref");
const shaInput = getOptionalInput("sha");
const checkoutPath = getOptionalInput("checkout_path") || getOptionalInput("source-root") || getRequiredEnvParam("GITHUB_WORKSPACE");
const hasRefInput = !!refInput;
const hasShaInput = !!shaInput;
if ((hasRefInput || hasShaInput) && !(hasRefInput && hasShaInput)) {
throw new ConfigurationError(
"Both 'ref' and 'sha' are required if one of them is provided."
);
}
const ref = refInput || getRefFromEnv();
const sha = shaInput || getRequiredEnvParam("GITHUB_SHA");
if (refInput) {
return refInput;
}
const pull_ref_regex = /refs\/pull\/(\d+)\/merge/;
if (!pull_ref_regex.test(ref)) {
return ref;
}
const head = await getCommitOid(checkoutPath, "HEAD");
const hasChangedRef = sha !== head && await getCommitOid(
checkoutPath,
ref.replace(/^refs\/pull\//, "refs/remotes/pull/")
) !== head;
if (hasChangedRef) {
const newRef = ref.replace(pull_ref_regex, "refs/pull/$1/head");
core7.debug(
`No longer on merge commit, rewriting ref from ${ref} to ${newRef}.`
);
return newRef;
} else {
return ref;
}
}
function removeRefsHeadsPrefix(ref) {
return ref.startsWith("refs/heads/") ? ref.slice("refs/heads/".length) : ref;
}
async function isAnalyzingDefaultBranch() {
if (process.env.CODE_SCANNING_IS_ANALYZING_DEFAULT_BRANCH === "true") {
return true;
}
let currentRef = await getRef();
currentRef = removeRefsHeadsPrefix(currentRef);
const event = getWorkflowEvent();
let defaultBranch = event?.repository?.default_branch;
if (getWorkflowEventName() === "schedule") {
defaultBranch = removeRefsHeadsPrefix(getRefFromEnv());
}
return currentRef === defaultBranch;
}
// src/overlay-database-utils.ts
var fs3 = __toESM(require("fs"));
var path3 = __toESM(require("path"));
var actionsCache = __toESM(require_cache3());
var semver5 = __toESM(require_semver2());
// src/logging.ts
var core8 = __toESM(require_core());
function getActionsLogger() {
return core8;
}
// src/overlay-database-utils.ts
var OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_MB = 15e3;
var OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_BYTES = OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_MB * 1e6;
async function writeBaseDatabaseOidsFile(config, sourceRoot) {
const gitFileOids = await getFileOidsUnderPath(sourceRoot);
const gitFileOidsJson = JSON.stringify(gitFileOids);
const baseDatabaseOidsFilePath = getBaseDatabaseOidsFilePath(config);
await fs3.promises.writeFile(baseDatabaseOidsFilePath, gitFileOidsJson);
}
async function readBaseDatabaseOidsFile(config, logger) {
const baseDatabaseOidsFilePath = getBaseDatabaseOidsFilePath(config);
try {
const contents = await fs3.promises.readFile(
baseDatabaseOidsFilePath,
"utf-8"
);
return JSON.parse(contents);
} catch (e) {
logger.error(
`Failed to read overlay-base file OIDs from ${baseDatabaseOidsFilePath}: ${e.message || e}`
);
throw e;
}
}
function getBaseDatabaseOidsFilePath(config) {
return path3.join(config.dbLocation, "base-database-oids.json");
}
async function writeOverlayChangesFile(config, sourceRoot, logger) {
const baseFileOids = await readBaseDatabaseOidsFile(config, logger);
const overlayFileOids = await getFileOidsUnderPath(sourceRoot);
const changedFiles = computeChangedFiles(baseFileOids, overlayFileOids);
logger.info(
`Found ${changedFiles.length} changed file(s) under ${sourceRoot}.`
);
const changedFilesJson = JSON.stringify({ changes: changedFiles });
const overlayChangesFile = path3.join(
getTemporaryDirectory(),
"overlay-changes.json"
);
logger.debug(
`Writing overlay changed files to ${overlayChangesFile}: ${changedFilesJson}`
);
await fs3.promises.writeFile(overlayChangesFile, changedFilesJson);
return overlayChangesFile;
}
function computeChangedFiles(baseFileOids, overlayFileOids) {
const changes = [];
for (const [file, oid] of Object.entries(overlayFileOids)) {
if (!(file in baseFileOids) || baseFileOids[file] !== oid) {
changes.push(file);
}
}
for (const file of Object.keys(baseFileOids)) {
if (!(file in overlayFileOids)) {
changes.push(file);
}
}
return changes;
}
// src/trap-caching.ts
var actionsCache2 = __toESM(require_cache3());
@@ -79055,20 +79055,20 @@ function appendExtraQueryExclusions(extraQueryExclusions, cliConfig) {
// src/setup-codeql.ts
var toolcache3 = __toESM(require_tool_cache());
var import_fast_deep_equal = __toESM(require_fast_deep_equal());
var semver7 = __toESM(require_semver2());
var semver8 = __toESM(require_semver2());
// src/tar.ts
var import_toolrunner = __toESM(require_toolrunner());
var io4 = __toESM(require_io());
var toolcache = __toESM(require_tool_cache());
var semver5 = __toESM(require_semver2());
var semver6 = __toESM(require_semver2());
// src/tools-download.ts
var core9 = __toESM(require_core());
var import_http_client = __toESM(require_lib());
var toolcache2 = __toESM(require_tool_cache());
var import_follow_redirects = __toESM(require_follow_redirects());
var semver6 = __toESM(require_semver2());
var semver7 = __toESM(require_semver2());
var STREAMING_HIGH_WATERMARK_BYTES = 4 * 1024 * 1024;
// src/tracer-config.ts

1122
lib/init-action-post.js generated

File diff suppressed because it is too large Load Diff

1654
lib/init-action.js generated

File diff suppressed because it is too large Load Diff

View File

@@ -24984,11 +24984,11 @@ var require_valid = __commonJS({
"node_modules/semver/functions/valid.js"(exports2, module2) {
"use strict";
var parse = require_parse2();
var valid3 = (version, options) => {
var valid4 = (version, options) => {
const v = parse(version, options);
return v ? v.version : null;
};
module2.exports = valid3;
module2.exports = valid4;
}
});
@@ -25195,8 +25195,8 @@ var require_lt = __commonJS({
"node_modules/semver/functions/lt.js"(exports2, module2) {
"use strict";
var compare = require_compare();
var lt = (a, b, loose) => compare(a, b, loose) < 0;
module2.exports = lt;
var lt2 = (a, b, loose) => compare(a, b, loose) < 0;
module2.exports = lt2;
}
});
@@ -25248,7 +25248,7 @@ var require_cmp = __commonJS({
var neq = require_neq();
var gt = require_gt();
var gte5 = require_gte();
var lt = require_lt();
var lt2 = require_lt();
var lte = require_lte();
var cmp = (a, op, b, loose) => {
switch (op) {
@@ -25279,7 +25279,7 @@ var require_cmp = __commonJS({
case ">=":
return gte5(a, b, loose);
case "<":
return lt(a, b, loose);
return lt2(a, b, loose);
case "<=":
return lte(a, b, loose);
default:
@@ -26033,7 +26033,7 @@ var require_outside = __commonJS({
var Range2 = require_range();
var satisfies2 = require_satisfies();
var gt = require_gt();
var lt = require_lt();
var lt2 = require_lt();
var lte = require_lte();
var gte5 = require_gte();
var outside = (version, range, hilo, options) => {
@@ -26044,12 +26044,12 @@ var require_outside = __commonJS({
case ">":
gtfn = gt;
ltefn = lte;
ltfn = lt;
ltfn = lt2;
comp = ">";
ecomp = ">=";
break;
case "<":
gtfn = lt;
gtfn = lt2;
ltefn = gte5;
ltfn = gt;
comp = "<";
@@ -26229,12 +26229,12 @@ var require_subset = __commonJS({
}
}
const eqSet = /* @__PURE__ */ new Set();
let gt, lt;
let gt, lt2;
for (const c of sub) {
if (c.operator === ">" || c.operator === ">=") {
gt = higherGT(gt, c, options);
} else if (c.operator === "<" || c.operator === "<=") {
lt = lowerLT(lt, c, options);
lt2 = lowerLT(lt2, c, options);
} else {
eqSet.add(c.semver);
}
@@ -26243,11 +26243,11 @@ var require_subset = __commonJS({
return null;
}
let gtltComp;
if (gt && lt) {
gtltComp = compare(gt.semver, lt.semver, options);
if (gt && lt2) {
gtltComp = compare(gt.semver, lt2.semver, options);
if (gtltComp > 0) {
return null;
} else if (gtltComp === 0 && (gt.operator !== ">=" || lt.operator !== "<=")) {
} else if (gtltComp === 0 && (gt.operator !== ">=" || lt2.operator !== "<=")) {
return null;
}
}
@@ -26255,7 +26255,7 @@ var require_subset = __commonJS({
if (gt && !satisfies2(eq, String(gt), options)) {
return null;
}
if (lt && !satisfies2(eq, String(lt), options)) {
if (lt2 && !satisfies2(eq, String(lt2), options)) {
return null;
}
for (const c of dom) {
@@ -26267,9 +26267,9 @@ var require_subset = __commonJS({
}
let higher, lower;
let hasDomLT, hasDomGT;
let needDomLTPre = lt && !options.includePrerelease && lt.semver.prerelease.length ? lt.semver : false;
let needDomLTPre = lt2 && !options.includePrerelease && lt2.semver.prerelease.length ? lt2.semver : false;
let needDomGTPre = gt && !options.includePrerelease && gt.semver.prerelease.length ? gt.semver : false;
if (needDomLTPre && needDomLTPre.prerelease.length === 1 && lt.operator === "<" && needDomLTPre.prerelease[0] === 0) {
if (needDomLTPre && needDomLTPre.prerelease.length === 1 && lt2.operator === "<" && needDomLTPre.prerelease[0] === 0) {
needDomLTPre = false;
}
for (const c of dom) {
@@ -26290,29 +26290,29 @@ var require_subset = __commonJS({
return false;
}
}
if (lt) {
if (lt2) {
if (needDomLTPre) {
if (c.semver.prerelease && c.semver.prerelease.length && c.semver.major === needDomLTPre.major && c.semver.minor === needDomLTPre.minor && c.semver.patch === needDomLTPre.patch) {
needDomLTPre = false;
}
}
if (c.operator === "<" || c.operator === "<=") {
lower = lowerLT(lt, c, options);
if (lower === c && lower !== lt) {
lower = lowerLT(lt2, c, options);
if (lower === c && lower !== lt2) {
return false;
}
} else if (lt.operator === "<=" && !satisfies2(lt.semver, String(c), options)) {
} else if (lt2.operator === "<=" && !satisfies2(lt2.semver, String(c), options)) {
return false;
}
}
if (!c.operator && (lt || gt) && gtltComp !== 0) {
if (!c.operator && (lt2 || gt) && gtltComp !== 0) {
return false;
}
}
if (gt && hasDomLT && !lt && gtltComp !== 0) {
if (gt && hasDomLT && !lt2 && gtltComp !== 0) {
return false;
}
if (lt && hasDomGT && !gt && gtltComp !== 0) {
if (lt2 && hasDomGT && !gt && gtltComp !== 0) {
return false;
}
if (needDomGTPre || needDomLTPre) {
@@ -26347,7 +26347,7 @@ var require_semver2 = __commonJS({
var SemVer = require_semver();
var identifiers = require_identifiers();
var parse = require_parse2();
var valid3 = require_valid();
var valid4 = require_valid();
var clean3 = require_clean();
var inc = require_inc();
var diff = require_diff();
@@ -26362,7 +26362,7 @@ var require_semver2 = __commonJS({
var sort = require_sort();
var rsort = require_rsort();
var gt = require_gt();
var lt = require_lt();
var lt2 = require_lt();
var eq = require_eq();
var neq = require_neq();
var gte5 = require_gte();
@@ -26385,7 +26385,7 @@ var require_semver2 = __commonJS({
var subset = require_subset();
module2.exports = {
parse,
valid: valid3,
valid: valid4,
clean: clean3,
inc,
diff,
@@ -26400,7 +26400,7 @@ var require_semver2 = __commonJS({
sort,
rsort,
gt,
lt,
lt: lt2,
eq,
neq,
gte: gte5,
@@ -29974,8 +29974,8 @@ var require_semver3 = __commonJS({
return null;
}
}
exports2.valid = valid3;
function valid3(version, options) {
exports2.valid = valid4;
function valid4(version, options) {
var v = parse(version, options);
return v ? v.version : null;
}
@@ -30295,8 +30295,8 @@ var require_semver3 = __commonJS({
function gt(a, b, loose) {
return compare(a, b, loose) > 0;
}
exports2.lt = lt;
function lt(a, b, loose) {
exports2.lt = lt2;
function lt2(a, b, loose) {
return compare(a, b, loose) < 0;
}
exports2.eq = eq;
@@ -30341,7 +30341,7 @@ var require_semver3 = __commonJS({
case ">=":
return gte5(a, b, loose);
case "<":
return lt(a, b, loose);
return lt2(a, b, loose);
case "<=":
return lte(a, b, loose);
default:
@@ -30878,12 +30878,12 @@ var require_semver3 = __commonJS({
case ">":
gtfn = gt;
ltefn = lte;
ltfn = lt;
ltfn = lt2;
comp = ">";
ecomp = ">=";
break;
case "<":
gtfn = lt;
gtfn = lt2;
ltefn = gte5;
ltfn = gt;
comp = "<";
@@ -31085,7 +31085,7 @@ var require_cacheUtils = __commonJS({
var crypto = __importStar4(require("crypto"));
var fs5 = __importStar4(require("fs"));
var path5 = __importStar4(require("path"));
var semver8 = __importStar4(require_semver3());
var semver9 = __importStar4(require_semver3());
var util = __importStar4(require("util"));
var constants_1 = require_constants7();
var versionSalt = "1.0";
@@ -31182,7 +31182,7 @@ var require_cacheUtils = __commonJS({
function getCompressionMethod() {
return __awaiter4(this, void 0, void 0, function* () {
const versionOutput = yield getVersion("zstd", ["--quiet"]);
const version = semver8.clean(versionOutput);
const version = semver9.clean(versionOutput);
core13.debug(`zstd version: ${version}`);
if (versionOutput === "") {
return constants_1.CompressionMethod.Gzip;
@@ -73493,7 +73493,7 @@ var require_manifest = __commonJS({
};
Object.defineProperty(exports2, "__esModule", { value: true });
exports2._readLinuxVersionFile = exports2._getOsVersion = exports2._findMatch = void 0;
var semver8 = __importStar4(require_semver2());
var semver9 = __importStar4(require_semver2());
var core_1 = require_core();
var os2 = require("os");
var cp = require("child_process");
@@ -73507,7 +73507,7 @@ var require_manifest = __commonJS({
for (const candidate of candidates) {
const version = candidate.version;
(0, core_1.debug)(`check ${version} satisfies ${versionSpec}`);
if (semver8.satisfies(version, versionSpec) && (!stable || candidate.stable === stable)) {
if (semver9.satisfies(version, versionSpec) && (!stable || candidate.stable === stable)) {
file = candidate.files.find((item) => {
(0, core_1.debug)(`${item.arch}===${archFilter} && ${item.platform}===${platFilter}`);
let chk = item.arch === archFilter && item.platform === platFilter;
@@ -73516,7 +73516,7 @@ var require_manifest = __commonJS({
if (osVersion === item.platform_version) {
chk = true;
} else {
chk = semver8.satisfies(osVersion, item.platform_version);
chk = semver9.satisfies(osVersion, item.platform_version);
}
}
return chk;
@@ -73746,7 +73746,7 @@ var require_tool_cache = __commonJS({
var os2 = __importStar4(require("os"));
var path5 = __importStar4(require("path"));
var httpm = __importStar4(require_lib());
var semver8 = __importStar4(require_semver2());
var semver9 = __importStar4(require_semver2());
var stream = __importStar4(require("stream"));
var util = __importStar4(require("util"));
var assert_1 = require("assert");
@@ -74020,7 +74020,7 @@ var require_tool_cache = __commonJS({
}
function cacheDir(sourceDir, tool, version, arch) {
return __awaiter4(this, void 0, void 0, function* () {
version = semver8.clean(version) || version;
version = semver9.clean(version) || version;
arch = arch || os2.arch();
core13.debug(`Caching tool ${tool} ${version} ${arch}`);
core13.debug(`source dir: ${sourceDir}`);
@@ -74039,7 +74039,7 @@ var require_tool_cache = __commonJS({
exports2.cacheDir = cacheDir;
function cacheFile(sourceFile, targetFile, tool, version, arch) {
return __awaiter4(this, void 0, void 0, function* () {
version = semver8.clean(version) || version;
version = semver9.clean(version) || version;
arch = arch || os2.arch();
core13.debug(`Caching tool ${tool} ${version} ${arch}`);
core13.debug(`source file: ${sourceFile}`);
@@ -74070,7 +74070,7 @@ var require_tool_cache = __commonJS({
}
let toolPath = "";
if (versionSpec) {
versionSpec = semver8.clean(versionSpec) || "";
versionSpec = semver9.clean(versionSpec) || "";
const cachePath = path5.join(_getCacheDirectory(), toolName, versionSpec, arch);
core13.debug(`checking cache: ${cachePath}`);
if (fs5.existsSync(cachePath) && fs5.existsSync(`${cachePath}.complete`)) {
@@ -74154,7 +74154,7 @@ var require_tool_cache = __commonJS({
}
function _createToolPath(tool, version, arch) {
return __awaiter4(this, void 0, void 0, function* () {
const folderPath = path5.join(_getCacheDirectory(), tool, semver8.clean(version) || version, arch || "");
const folderPath = path5.join(_getCacheDirectory(), tool, semver9.clean(version) || version, arch || "");
core13.debug(`destination ${folderPath}`);
const markerPath = `${folderPath}.complete`;
yield io5.rmRF(folderPath);
@@ -74164,31 +74164,31 @@ var require_tool_cache = __commonJS({
});
}
function _completeToolPath(tool, version, arch) {
const folderPath = path5.join(_getCacheDirectory(), tool, semver8.clean(version) || version, arch || "");
const folderPath = path5.join(_getCacheDirectory(), tool, semver9.clean(version) || version, arch || "");
const markerPath = `${folderPath}.complete`;
fs5.writeFileSync(markerPath, "");
core13.debug("finished caching tool");
}
function isExplicitVersion(versionSpec) {
const c = semver8.clean(versionSpec) || "";
const c = semver9.clean(versionSpec) || "";
core13.debug(`isExplicit: ${c}`);
const valid3 = semver8.valid(c) != null;
core13.debug(`explicit? ${valid3}`);
return valid3;
const valid4 = semver9.valid(c) != null;
core13.debug(`explicit? ${valid4}`);
return valid4;
}
exports2.isExplicitVersion = isExplicitVersion;
function evaluateVersions(versions, versionSpec) {
let version = "";
core13.debug(`evaluating ${versions.length} versions`);
versions = versions.sort((a, b) => {
if (semver8.gt(a, b)) {
if (semver9.gt(a, b)) {
return 1;
}
return -1;
});
for (let i = versions.length - 1; i >= 0; i--) {
const potential = versions[i];
const satisfied = semver8.satisfies(potential, versionSpec);
const satisfied = semver9.satisfies(potential, versionSpec);
if (satisfied) {
version = potential;
break;
@@ -78291,10 +78291,187 @@ var PACK_IDENTIFIER_PATTERN = (function() {
// src/feature-flags.ts
var semver4 = __toESM(require_semver2());
// src/overlay-database-utils.ts
var fs2 = __toESM(require("fs"));
var path2 = __toESM(require("path"));
var actionsCache = __toESM(require_cache3());
// src/tools-features.ts
var semver3 = __toESM(require_semver2());
function isSupportedToolsFeature(versionInfo, feature) {
return !!versionInfo.features && versionInfo.features[feature];
}
// src/feature-flags.ts
var featureConfig = {
["cleanup_trap_caches" /* CleanupTrapCaches */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_CLEANUP_TRAP_CACHES",
minimumVersion: void 0
},
["cpp_dependency_installation_enabled" /* CppDependencyInstallation */]: {
defaultValue: false,
envVar: "CODEQL_EXTRACTOR_CPP_AUTOINSTALL_DEPENDENCIES",
legacyApi: true,
minimumVersion: "2.15.0"
},
["diff_informed_queries" /* DiffInformedQueries */]: {
defaultValue: true,
envVar: "CODEQL_ACTION_DIFF_INFORMED_QUERIES",
minimumVersion: "2.21.0"
},
["disable_csharp_buildless" /* DisableCsharpBuildless */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_DISABLE_CSHARP_BUILDLESS",
minimumVersion: void 0
},
["disable_java_buildless_enabled" /* DisableJavaBuildlessEnabled */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_DISABLE_JAVA_BUILDLESS",
legacyApi: true,
minimumVersion: void 0
},
["disable_kotlin_analysis_enabled" /* DisableKotlinAnalysisEnabled */]: {
defaultValue: false,
envVar: "CODEQL_DISABLE_KOTLIN_ANALYSIS",
legacyApi: true,
minimumVersion: void 0
},
["export_diagnostics_enabled" /* ExportDiagnosticsEnabled */]: {
defaultValue: true,
envVar: "CODEQL_ACTION_EXPORT_DIAGNOSTICS",
legacyApi: true,
minimumVersion: void 0
},
["resolve_supported_languages_using_cli" /* ResolveSupportedLanguagesUsingCli */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_RESOLVE_SUPPORTED_LANGUAGES_USING_CLI",
minimumVersion: void 0,
toolsFeature: "builtinExtractorsSpecifyDefaultQueries" /* BuiltinExtractorsSpecifyDefaultQueries */
},
["overlay_analysis" /* OverlayAnalysis */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS",
minimumVersion: void 0
},
["overlay_analysis_actions" /* OverlayAnalysisActions */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_ACTIONS",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_actions" /* OverlayAnalysisCodeScanningActions */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_ACTIONS",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_cpp" /* OverlayAnalysisCodeScanningCpp */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_CPP",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_csharp" /* OverlayAnalysisCodeScanningCsharp */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_CSHARP",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_go" /* OverlayAnalysisCodeScanningGo */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_GO",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_java" /* OverlayAnalysisCodeScanningJava */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_JAVA",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_javascript" /* OverlayAnalysisCodeScanningJavascript */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_JAVASCRIPT",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_python" /* OverlayAnalysisCodeScanningPython */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_PYTHON",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_ruby" /* OverlayAnalysisCodeScanningRuby */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_RUBY",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_rust" /* OverlayAnalysisCodeScanningRust */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_RUST",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_swift" /* OverlayAnalysisCodeScanningSwift */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_SWIFT",
minimumVersion: void 0
},
["overlay_analysis_cpp" /* OverlayAnalysisCpp */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CPP",
minimumVersion: void 0
},
["overlay_analysis_csharp" /* OverlayAnalysisCsharp */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CSHARP",
minimumVersion: void 0
},
["overlay_analysis_go" /* OverlayAnalysisGo */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_GO",
minimumVersion: void 0
},
["overlay_analysis_java" /* OverlayAnalysisJava */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_JAVA",
minimumVersion: void 0
},
["overlay_analysis_javascript" /* OverlayAnalysisJavascript */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_JAVASCRIPT",
minimumVersion: void 0
},
["overlay_analysis_python" /* OverlayAnalysisPython */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_PYTHON",
minimumVersion: void 0
},
["overlay_analysis_ruby" /* OverlayAnalysisRuby */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_RUBY",
minimumVersion: void 0
},
["overlay_analysis_rust" /* OverlayAnalysisRust */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_RUST",
minimumVersion: void 0
},
["overlay_analysis_swift" /* OverlayAnalysisSwift */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SWIFT",
minimumVersion: void 0
},
["python_default_is_to_not_extract_stdlib" /* PythonDefaultIsToNotExtractStdlib */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_DISABLE_PYTHON_STANDARD_LIBRARY_EXTRACTION",
minimumVersion: void 0,
toolsFeature: "pythonDefaultIsToNotExtractStdlib" /* PythonDefaultIsToNotExtractStdlib */
},
["use_repository_properties" /* UseRepositoryProperties */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES",
minimumVersion: void 0
},
["qa_telemetry_enabled" /* QaTelemetryEnabled */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_QA_TELEMETRY",
legacyApi: true,
minimumVersion: void 0
},
["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS",
minimumVersion: "2.23.0"
}
};
// src/git-utils.ts
var core7 = __toESM(require_core());
@@ -78459,6 +78636,12 @@ async function isAnalyzingDefaultBranch() {
return currentRef === defaultBranch;
}
// src/overlay-database-utils.ts
var fs2 = __toESM(require("fs"));
var path2 = __toESM(require("path"));
var actionsCache = __toESM(require_cache3());
var semver5 = __toESM(require_semver2());
// src/logging.ts
var core8 = __toESM(require_core());
function getActionsLogger() {
@@ -78466,7 +78649,6 @@ function getActionsLogger() {
}
// src/overlay-database-utils.ts
var CODEQL_OVERLAY_MINIMUM_VERSION = "2.22.4";
var OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_MB = 15e3;
var OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_BYTES = OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_MB * 1e6;
async function writeBaseDatabaseOidsFile(config, sourceRoot) {
@@ -78526,188 +78708,6 @@ function computeChangedFiles(baseFileOids, overlayFileOids) {
return changes;
}
// src/tools-features.ts
var semver3 = __toESM(require_semver2());
function isSupportedToolsFeature(versionInfo, feature) {
return !!versionInfo.features && versionInfo.features[feature];
}
// src/feature-flags.ts
var featureConfig = {
["cleanup_trap_caches" /* CleanupTrapCaches */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_CLEANUP_TRAP_CACHES",
minimumVersion: void 0
},
["cpp_dependency_installation_enabled" /* CppDependencyInstallation */]: {
defaultValue: false,
envVar: "CODEQL_EXTRACTOR_CPP_AUTOINSTALL_DEPENDENCIES",
legacyApi: true,
minimumVersion: "2.15.0"
},
["diff_informed_queries" /* DiffInformedQueries */]: {
defaultValue: true,
envVar: "CODEQL_ACTION_DIFF_INFORMED_QUERIES",
minimumVersion: "2.21.0"
},
["disable_csharp_buildless" /* DisableCsharpBuildless */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_DISABLE_CSHARP_BUILDLESS",
minimumVersion: void 0
},
["disable_java_buildless_enabled" /* DisableJavaBuildlessEnabled */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_DISABLE_JAVA_BUILDLESS",
legacyApi: true,
minimumVersion: void 0
},
["disable_kotlin_analysis_enabled" /* DisableKotlinAnalysisEnabled */]: {
defaultValue: false,
envVar: "CODEQL_DISABLE_KOTLIN_ANALYSIS",
legacyApi: true,
minimumVersion: void 0
},
["export_diagnostics_enabled" /* ExportDiagnosticsEnabled */]: {
defaultValue: true,
envVar: "CODEQL_ACTION_EXPORT_DIAGNOSTICS",
legacyApi: true,
minimumVersion: void 0
},
["resolve_supported_languages_using_cli" /* ResolveSupportedLanguagesUsingCli */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_RESOLVE_SUPPORTED_LANGUAGES_USING_CLI",
minimumVersion: void 0,
toolsFeature: "builtinExtractorsSpecifyDefaultQueries" /* BuiltinExtractorsSpecifyDefaultQueries */
},
["overlay_analysis" /* OverlayAnalysis */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS",
minimumVersion: CODEQL_OVERLAY_MINIMUM_VERSION
},
["overlay_analysis_actions" /* OverlayAnalysisActions */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_ACTIONS",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_actions" /* OverlayAnalysisCodeScanningActions */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_ACTIONS",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_cpp" /* OverlayAnalysisCodeScanningCpp */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_CPP",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_csharp" /* OverlayAnalysisCodeScanningCsharp */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_CSHARP",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_go" /* OverlayAnalysisCodeScanningGo */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_GO",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_java" /* OverlayAnalysisCodeScanningJava */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_JAVA",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_javascript" /* OverlayAnalysisCodeScanningJavascript */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_JAVASCRIPT",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_python" /* OverlayAnalysisCodeScanningPython */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_PYTHON",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_ruby" /* OverlayAnalysisCodeScanningRuby */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_RUBY",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_rust" /* OverlayAnalysisCodeScanningRust */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_RUST",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_swift" /* OverlayAnalysisCodeScanningSwift */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_SWIFT",
minimumVersion: void 0
},
["overlay_analysis_cpp" /* OverlayAnalysisCpp */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CPP",
minimumVersion: void 0
},
["overlay_analysis_csharp" /* OverlayAnalysisCsharp */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CSHARP",
minimumVersion: void 0
},
["overlay_analysis_go" /* OverlayAnalysisGo */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_GO",
minimumVersion: void 0
},
["overlay_analysis_java" /* OverlayAnalysisJava */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_JAVA",
minimumVersion: void 0
},
["overlay_analysis_javascript" /* OverlayAnalysisJavascript */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_JAVASCRIPT",
minimumVersion: void 0
},
["overlay_analysis_python" /* OverlayAnalysisPython */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_PYTHON",
minimumVersion: void 0
},
["overlay_analysis_ruby" /* OverlayAnalysisRuby */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_RUBY",
minimumVersion: void 0
},
["overlay_analysis_rust" /* OverlayAnalysisRust */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_RUST",
minimumVersion: void 0
},
["overlay_analysis_swift" /* OverlayAnalysisSwift */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SWIFT",
minimumVersion: void 0
},
["python_default_is_to_not_extract_stdlib" /* PythonDefaultIsToNotExtractStdlib */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_DISABLE_PYTHON_STANDARD_LIBRARY_EXTRACTION",
minimumVersion: void 0,
toolsFeature: "pythonDefaultIsToNotExtractStdlib" /* PythonDefaultIsToNotExtractStdlib */
},
["use_repository_properties" /* UseRepositoryProperties */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES",
minimumVersion: void 0
},
["qa_telemetry_enabled" /* QaTelemetryEnabled */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_QA_TELEMETRY",
legacyApi: true,
minimumVersion: void 0
},
["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS",
minimumVersion: "2.23.0"
}
};
// src/trap-caching.ts
var actionsCache2 = __toESM(require_cache3());
@@ -78788,20 +78788,20 @@ var toolrunner3 = __toESM(require_toolrunner());
// src/setup-codeql.ts
var toolcache3 = __toESM(require_tool_cache());
var import_fast_deep_equal = __toESM(require_fast_deep_equal());
var semver7 = __toESM(require_semver2());
var semver8 = __toESM(require_semver2());
// src/tar.ts
var import_toolrunner = __toESM(require_toolrunner());
var io4 = __toESM(require_io());
var toolcache = __toESM(require_tool_cache());
var semver5 = __toESM(require_semver2());
var semver6 = __toESM(require_semver2());
// src/tools-download.ts
var core9 = __toESM(require_core());
var import_http_client = __toESM(require_lib());
var toolcache2 = __toESM(require_tool_cache());
var import_follow_redirects = __toESM(require_follow_redirects());
var semver6 = __toESM(require_semver2());
var semver7 = __toESM(require_semver2());
var STREAMING_HIGH_WATERMARK_BYTES = 4 * 1024 * 1024;
// src/tracer-config.ts

View File

@@ -24984,11 +24984,11 @@ var require_valid = __commonJS({
"node_modules/semver/functions/valid.js"(exports2, module2) {
"use strict";
var parse = require_parse2();
var valid3 = (version, options) => {
var valid4 = (version, options) => {
const v = parse(version, options);
return v ? v.version : null;
};
module2.exports = valid3;
module2.exports = valid4;
}
});
@@ -25195,8 +25195,8 @@ var require_lt = __commonJS({
"node_modules/semver/functions/lt.js"(exports2, module2) {
"use strict";
var compare = require_compare();
var lt = (a, b, loose) => compare(a, b, loose) < 0;
module2.exports = lt;
var lt2 = (a, b, loose) => compare(a, b, loose) < 0;
module2.exports = lt2;
}
});
@@ -25248,7 +25248,7 @@ var require_cmp = __commonJS({
var neq = require_neq();
var gt = require_gt();
var gte5 = require_gte();
var lt = require_lt();
var lt2 = require_lt();
var lte = require_lte();
var cmp = (a, op, b, loose) => {
switch (op) {
@@ -25279,7 +25279,7 @@ var require_cmp = __commonJS({
case ">=":
return gte5(a, b, loose);
case "<":
return lt(a, b, loose);
return lt2(a, b, loose);
case "<=":
return lte(a, b, loose);
default:
@@ -26033,7 +26033,7 @@ var require_outside = __commonJS({
var Range2 = require_range();
var satisfies2 = require_satisfies();
var gt = require_gt();
var lt = require_lt();
var lt2 = require_lt();
var lte = require_lte();
var gte5 = require_gte();
var outside = (version, range, hilo, options) => {
@@ -26044,12 +26044,12 @@ var require_outside = __commonJS({
case ">":
gtfn = gt;
ltefn = lte;
ltfn = lt;
ltfn = lt2;
comp = ">";
ecomp = ">=";
break;
case "<":
gtfn = lt;
gtfn = lt2;
ltefn = gte5;
ltfn = gt;
comp = "<";
@@ -26229,12 +26229,12 @@ var require_subset = __commonJS({
}
}
const eqSet = /* @__PURE__ */ new Set();
let gt, lt;
let gt, lt2;
for (const c of sub) {
if (c.operator === ">" || c.operator === ">=") {
gt = higherGT(gt, c, options);
} else if (c.operator === "<" || c.operator === "<=") {
lt = lowerLT(lt, c, options);
lt2 = lowerLT(lt2, c, options);
} else {
eqSet.add(c.semver);
}
@@ -26243,11 +26243,11 @@ var require_subset = __commonJS({
return null;
}
let gtltComp;
if (gt && lt) {
gtltComp = compare(gt.semver, lt.semver, options);
if (gt && lt2) {
gtltComp = compare(gt.semver, lt2.semver, options);
if (gtltComp > 0) {
return null;
} else if (gtltComp === 0 && (gt.operator !== ">=" || lt.operator !== "<=")) {
} else if (gtltComp === 0 && (gt.operator !== ">=" || lt2.operator !== "<=")) {
return null;
}
}
@@ -26255,7 +26255,7 @@ var require_subset = __commonJS({
if (gt && !satisfies2(eq, String(gt), options)) {
return null;
}
if (lt && !satisfies2(eq, String(lt), options)) {
if (lt2 && !satisfies2(eq, String(lt2), options)) {
return null;
}
for (const c of dom) {
@@ -26267,9 +26267,9 @@ var require_subset = __commonJS({
}
let higher, lower;
let hasDomLT, hasDomGT;
let needDomLTPre = lt && !options.includePrerelease && lt.semver.prerelease.length ? lt.semver : false;
let needDomLTPre = lt2 && !options.includePrerelease && lt2.semver.prerelease.length ? lt2.semver : false;
let needDomGTPre = gt && !options.includePrerelease && gt.semver.prerelease.length ? gt.semver : false;
if (needDomLTPre && needDomLTPre.prerelease.length === 1 && lt.operator === "<" && needDomLTPre.prerelease[0] === 0) {
if (needDomLTPre && needDomLTPre.prerelease.length === 1 && lt2.operator === "<" && needDomLTPre.prerelease[0] === 0) {
needDomLTPre = false;
}
for (const c of dom) {
@@ -26290,29 +26290,29 @@ var require_subset = __commonJS({
return false;
}
}
if (lt) {
if (lt2) {
if (needDomLTPre) {
if (c.semver.prerelease && c.semver.prerelease.length && c.semver.major === needDomLTPre.major && c.semver.minor === needDomLTPre.minor && c.semver.patch === needDomLTPre.patch) {
needDomLTPre = false;
}
}
if (c.operator === "<" || c.operator === "<=") {
lower = lowerLT(lt, c, options);
if (lower === c && lower !== lt) {
lower = lowerLT(lt2, c, options);
if (lower === c && lower !== lt2) {
return false;
}
} else if (lt.operator === "<=" && !satisfies2(lt.semver, String(c), options)) {
} else if (lt2.operator === "<=" && !satisfies2(lt2.semver, String(c), options)) {
return false;
}
}
if (!c.operator && (lt || gt) && gtltComp !== 0) {
if (!c.operator && (lt2 || gt) && gtltComp !== 0) {
return false;
}
}
if (gt && hasDomLT && !lt && gtltComp !== 0) {
if (gt && hasDomLT && !lt2 && gtltComp !== 0) {
return false;
}
if (lt && hasDomGT && !gt && gtltComp !== 0) {
if (lt2 && hasDomGT && !gt && gtltComp !== 0) {
return false;
}
if (needDomGTPre || needDomLTPre) {
@@ -26347,7 +26347,7 @@ var require_semver2 = __commonJS({
var SemVer = require_semver();
var identifiers = require_identifiers();
var parse = require_parse2();
var valid3 = require_valid();
var valid4 = require_valid();
var clean3 = require_clean();
var inc = require_inc();
var diff = require_diff();
@@ -26362,7 +26362,7 @@ var require_semver2 = __commonJS({
var sort = require_sort();
var rsort = require_rsort();
var gt = require_gt();
var lt = require_lt();
var lt2 = require_lt();
var eq = require_eq();
var neq = require_neq();
var gte5 = require_gte();
@@ -26385,7 +26385,7 @@ var require_semver2 = __commonJS({
var subset = require_subset();
module2.exports = {
parse,
valid: valid3,
valid: valid4,
clean: clean3,
inc,
diff,
@@ -26400,7 +26400,7 @@ var require_semver2 = __commonJS({
sort,
rsort,
gt,
lt,
lt: lt2,
eq,
neq,
gte: gte5,
@@ -29974,8 +29974,8 @@ var require_semver3 = __commonJS({
return null;
}
}
exports2.valid = valid3;
function valid3(version, options) {
exports2.valid = valid4;
function valid4(version, options) {
var v = parse(version, options);
return v ? v.version : null;
}
@@ -30295,8 +30295,8 @@ var require_semver3 = __commonJS({
function gt(a, b, loose) {
return compare(a, b, loose) > 0;
}
exports2.lt = lt;
function lt(a, b, loose) {
exports2.lt = lt2;
function lt2(a, b, loose) {
return compare(a, b, loose) < 0;
}
exports2.eq = eq;
@@ -30341,7 +30341,7 @@ var require_semver3 = __commonJS({
case ">=":
return gte5(a, b, loose);
case "<":
return lt(a, b, loose);
return lt2(a, b, loose);
case "<=":
return lte(a, b, loose);
default:
@@ -30878,12 +30878,12 @@ var require_semver3 = __commonJS({
case ">":
gtfn = gt;
ltefn = lte;
ltfn = lt;
ltfn = lt2;
comp = ">";
ecomp = ">=";
break;
case "<":
gtfn = lt;
gtfn = lt2;
ltefn = gte5;
ltfn = gt;
comp = "<";
@@ -31085,7 +31085,7 @@ var require_cacheUtils = __commonJS({
var crypto = __importStar4(require("crypto"));
var fs2 = __importStar4(require("fs"));
var path2 = __importStar4(require("path"));
var semver8 = __importStar4(require_semver3());
var semver9 = __importStar4(require_semver3());
var util = __importStar4(require("util"));
var constants_1 = require_constants7();
var versionSalt = "1.0";
@@ -31182,7 +31182,7 @@ var require_cacheUtils = __commonJS({
function getCompressionMethod() {
return __awaiter4(this, void 0, void 0, function* () {
const versionOutput = yield getVersion("zstd", ["--quiet"]);
const version = semver8.clean(versionOutput);
const version = semver9.clean(versionOutput);
core14.debug(`zstd version: ${version}`);
if (versionOutput === "") {
return constants_1.CompressionMethod.Gzip;
@@ -80406,7 +80406,7 @@ var require_stream_writable = __commonJS({
pna.nextTick(cb, er);
}
function validChunk(stream, state, chunk, cb) {
var valid3 = true;
var valid4 = true;
var er = false;
if (chunk === null) {
er = new TypeError("May not write null values to stream");
@@ -80416,9 +80416,9 @@ var require_stream_writable = __commonJS({
if (er) {
stream.emit("error", er);
pna.nextTick(cb, er);
valid3 = false;
valid4 = false;
}
return valid3;
return valid4;
}
Writable.prototype.write = function(chunk, encoding, cb) {
var state = this._writableState;
@@ -111969,7 +111969,7 @@ var require_manifest = __commonJS({
};
Object.defineProperty(exports2, "__esModule", { value: true });
exports2._readLinuxVersionFile = exports2._getOsVersion = exports2._findMatch = void 0;
var semver8 = __importStar4(require_semver2());
var semver9 = __importStar4(require_semver2());
var core_1 = require_core();
var os = require("os");
var cp = require("child_process");
@@ -111983,7 +111983,7 @@ var require_manifest = __commonJS({
for (const candidate of candidates) {
const version = candidate.version;
(0, core_1.debug)(`check ${version} satisfies ${versionSpec}`);
if (semver8.satisfies(version, versionSpec) && (!stable || candidate.stable === stable)) {
if (semver9.satisfies(version, versionSpec) && (!stable || candidate.stable === stable)) {
file = candidate.files.find((item) => {
(0, core_1.debug)(`${item.arch}===${archFilter} && ${item.platform}===${platFilter}`);
let chk = item.arch === archFilter && item.platform === platFilter;
@@ -111992,7 +111992,7 @@ var require_manifest = __commonJS({
if (osVersion === item.platform_version) {
chk = true;
} else {
chk = semver8.satisfies(osVersion, item.platform_version);
chk = semver9.satisfies(osVersion, item.platform_version);
}
}
return chk;
@@ -112222,7 +112222,7 @@ var require_tool_cache = __commonJS({
var os = __importStar4(require("os"));
var path2 = __importStar4(require("path"));
var httpm = __importStar4(require_lib());
var semver8 = __importStar4(require_semver2());
var semver9 = __importStar4(require_semver2());
var stream = __importStar4(require("stream"));
var util = __importStar4(require("util"));
var assert_1 = require("assert");
@@ -112496,7 +112496,7 @@ var require_tool_cache = __commonJS({
}
function cacheDir(sourceDir, tool, version, arch) {
return __awaiter4(this, void 0, void 0, function* () {
version = semver8.clean(version) || version;
version = semver9.clean(version) || version;
arch = arch || os.arch();
core14.debug(`Caching tool ${tool} ${version} ${arch}`);
core14.debug(`source dir: ${sourceDir}`);
@@ -112515,7 +112515,7 @@ var require_tool_cache = __commonJS({
exports2.cacheDir = cacheDir;
function cacheFile(sourceFile, targetFile, tool, version, arch) {
return __awaiter4(this, void 0, void 0, function* () {
version = semver8.clean(version) || version;
version = semver9.clean(version) || version;
arch = arch || os.arch();
core14.debug(`Caching tool ${tool} ${version} ${arch}`);
core14.debug(`source file: ${sourceFile}`);
@@ -112546,7 +112546,7 @@ var require_tool_cache = __commonJS({
}
let toolPath = "";
if (versionSpec) {
versionSpec = semver8.clean(versionSpec) || "";
versionSpec = semver9.clean(versionSpec) || "";
const cachePath = path2.join(_getCacheDirectory(), toolName, versionSpec, arch);
core14.debug(`checking cache: ${cachePath}`);
if (fs2.existsSync(cachePath) && fs2.existsSync(`${cachePath}.complete`)) {
@@ -112630,7 +112630,7 @@ var require_tool_cache = __commonJS({
}
function _createToolPath(tool, version, arch) {
return __awaiter4(this, void 0, void 0, function* () {
const folderPath = path2.join(_getCacheDirectory(), tool, semver8.clean(version) || version, arch || "");
const folderPath = path2.join(_getCacheDirectory(), tool, semver9.clean(version) || version, arch || "");
core14.debug(`destination ${folderPath}`);
const markerPath = `${folderPath}.complete`;
yield io6.rmRF(folderPath);
@@ -112640,31 +112640,31 @@ var require_tool_cache = __commonJS({
});
}
function _completeToolPath(tool, version, arch) {
const folderPath = path2.join(_getCacheDirectory(), tool, semver8.clean(version) || version, arch || "");
const folderPath = path2.join(_getCacheDirectory(), tool, semver9.clean(version) || version, arch || "");
const markerPath = `${folderPath}.complete`;
fs2.writeFileSync(markerPath, "");
core14.debug("finished caching tool");
}
function isExplicitVersion(versionSpec) {
const c = semver8.clean(versionSpec) || "";
const c = semver9.clean(versionSpec) || "";
core14.debug(`isExplicit: ${c}`);
const valid3 = semver8.valid(c) != null;
core14.debug(`explicit? ${valid3}`);
return valid3;
const valid4 = semver9.valid(c) != null;
core14.debug(`explicit? ${valid4}`);
return valid4;
}
exports2.isExplicitVersion = isExplicitVersion;
function evaluateVersions(versions, versionSpec) {
let version = "";
core14.debug(`evaluating ${versions.length} versions`);
versions = versions.sort((a, b) => {
if (semver8.gt(a, b)) {
if (semver9.gt(a, b)) {
return 1;
}
return -1;
});
for (let i = versions.length - 1; i >= 0; i--) {
const potential = versions[i];
const satisfied = semver8.satisfies(potential, versionSpec);
const satisfied = semver9.satisfies(potential, versionSpec);
if (satisfied) {
version = potential;
break;
@@ -117190,25 +117190,6 @@ var PACK_IDENTIFIER_PATTERN = (function() {
// src/feature-flags.ts
var semver4 = __toESM(require_semver2());
// src/overlay-database-utils.ts
var actionsCache = __toESM(require_cache3());
// src/git-utils.ts
var core7 = __toESM(require_core());
var toolrunner2 = __toESM(require_toolrunner());
var io3 = __toESM(require_io());
// src/logging.ts
var core8 = __toESM(require_core());
function getActionsLogger() {
return core8;
}
// src/overlay-database-utils.ts
var CODEQL_OVERLAY_MINIMUM_VERSION = "2.22.4";
var OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_MB = 15e3;
var OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_BYTES = OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_MB * 1e6;
// src/tools-features.ts
var semver3 = __toESM(require_semver2());
@@ -117262,7 +117243,7 @@ var featureConfig = {
["overlay_analysis" /* OverlayAnalysis */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS",
minimumVersion: CODEQL_OVERLAY_MINIMUM_VERSION
minimumVersion: void 0
},
["overlay_analysis_actions" /* OverlayAnalysisActions */]: {
defaultValue: false,
@@ -117388,6 +117369,25 @@ var featureConfig = {
}
};
// src/git-utils.ts
var core7 = __toESM(require_core());
var toolrunner2 = __toESM(require_toolrunner());
var io3 = __toESM(require_io());
// src/overlay-database-utils.ts
var actionsCache = __toESM(require_cache3());
var semver5 = __toESM(require_semver2());
// src/logging.ts
var core8 = __toESM(require_core());
function getActionsLogger() {
return core8;
}
// src/overlay-database-utils.ts
var OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_MB = 15e3;
var OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_BYTES = OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_MB * 1e6;
// src/trap-caching.ts
var actionsCache2 = __toESM(require_cache3());
@@ -117593,20 +117593,20 @@ var cliErrorsConfig = {
// src/setup-codeql.ts
var toolcache3 = __toESM(require_tool_cache());
var import_fast_deep_equal = __toESM(require_fast_deep_equal());
var semver7 = __toESM(require_semver2());
var semver8 = __toESM(require_semver2());
// src/tar.ts
var import_toolrunner = __toESM(require_toolrunner());
var io4 = __toESM(require_io());
var toolcache = __toESM(require_tool_cache());
var semver5 = __toESM(require_semver2());
var semver6 = __toESM(require_semver2());
// src/tools-download.ts
var core9 = __toESM(require_core());
var import_http_client = __toESM(require_lib());
var toolcache2 = __toESM(require_tool_cache());
var import_follow_redirects = __toESM(require_follow_redirects());
var semver6 = __toESM(require_semver2());
var semver7 = __toESM(require_semver2());
var STREAMING_HIGH_WATERMARK_BYTES = 4 * 1024 * 1024;
// src/dependency-caching.ts

572
lib/upload-lib.js generated
View File

@@ -20239,16 +20239,16 @@ var require_attribute = __commonJS({
var result = new ValidatorResult(instance, schema2, options, ctx);
var self2 = this;
schema2.allOf.forEach(function(v, i) {
var valid3 = self2.validateSchema(instance, v, options, ctx);
if (!valid3.valid) {
var valid4 = self2.validateSchema(instance, v, options, ctx);
if (!valid4.valid) {
var id = v.$id || v.id;
var msg = id || v.title && JSON.stringify(v.title) || v["$ref"] && "<" + v["$ref"] + ">" || "[subschema " + i + "]";
result.addError({
name: "allOf",
argument: { id: msg, length: valid3.errors.length, valid: valid3 },
message: "does not match allOf schema " + msg + " with " + valid3.errors.length + " error[s]:"
argument: { id: msg, length: valid4.errors.length, valid: valid4 },
message: "does not match allOf schema " + msg + " with " + valid4.errors.length + " error[s]:"
});
result.importErrors(valid3);
result.importErrors(valid4);
}
});
return result;
@@ -20537,8 +20537,8 @@ var require_attribute = __commonJS({
if (typeof schema2.exclusiveMinimum === "boolean") return;
if (!this.types.number(instance)) return;
var result = new ValidatorResult(instance, schema2, options, ctx);
var valid3 = instance > schema2.exclusiveMinimum;
if (!valid3) {
var valid4 = instance > schema2.exclusiveMinimum;
if (!valid4) {
result.addError({
name: "exclusiveMinimum",
argument: schema2.exclusiveMinimum,
@@ -20551,8 +20551,8 @@ var require_attribute = __commonJS({
if (typeof schema2.exclusiveMaximum === "boolean") return;
if (!this.types.number(instance)) return;
var result = new ValidatorResult(instance, schema2, options, ctx);
var valid3 = instance < schema2.exclusiveMaximum;
if (!valid3) {
var valid4 = instance < schema2.exclusiveMaximum;
if (!valid4) {
result.addError({
name: "exclusiveMaximum",
argument: schema2.exclusiveMaximum,
@@ -32130,11 +32130,11 @@ var require_valid = __commonJS({
"node_modules/semver/functions/valid.js"(exports2, module2) {
"use strict";
var parse = require_parse4();
var valid3 = (version, options) => {
var valid4 = (version, options) => {
const v = parse(version, options);
return v ? v.version : null;
};
module2.exports = valid3;
module2.exports = valid4;
}
});
@@ -32341,8 +32341,8 @@ var require_lt = __commonJS({
"node_modules/semver/functions/lt.js"(exports2, module2) {
"use strict";
var compare2 = require_compare();
var lt = (a, b, loose) => compare2(a, b, loose) < 0;
module2.exports = lt;
var lt2 = (a, b, loose) => compare2(a, b, loose) < 0;
module2.exports = lt2;
}
});
@@ -32394,7 +32394,7 @@ var require_cmp = __commonJS({
var neq = require_neq();
var gt = require_gt();
var gte5 = require_gte();
var lt = require_lt();
var lt2 = require_lt();
var lte = require_lte();
var cmp = (a, op, b, loose) => {
switch (op) {
@@ -32425,7 +32425,7 @@ var require_cmp = __commonJS({
case ">=":
return gte5(a, b, loose);
case "<":
return lt(a, b, loose);
return lt2(a, b, loose);
case "<=":
return lte(a, b, loose);
default:
@@ -33179,7 +33179,7 @@ var require_outside = __commonJS({
var Range2 = require_range();
var satisfies2 = require_satisfies();
var gt = require_gt();
var lt = require_lt();
var lt2 = require_lt();
var lte = require_lte();
var gte5 = require_gte();
var outside = (version, range, hilo, options) => {
@@ -33190,12 +33190,12 @@ var require_outside = __commonJS({
case ">":
gtfn = gt;
ltefn = lte;
ltfn = lt;
ltfn = lt2;
comp = ">";
ecomp = ">=";
break;
case "<":
gtfn = lt;
gtfn = lt2;
ltefn = gte5;
ltfn = gt;
comp = "<";
@@ -33375,12 +33375,12 @@ var require_subset = __commonJS({
}
}
const eqSet = /* @__PURE__ */ new Set();
let gt, lt;
let gt, lt2;
for (const c of sub) {
if (c.operator === ">" || c.operator === ">=") {
gt = higherGT(gt, c, options);
} else if (c.operator === "<" || c.operator === "<=") {
lt = lowerLT(lt, c, options);
lt2 = lowerLT(lt2, c, options);
} else {
eqSet.add(c.semver);
}
@@ -33389,11 +33389,11 @@ var require_subset = __commonJS({
return null;
}
let gtltComp;
if (gt && lt) {
gtltComp = compare2(gt.semver, lt.semver, options);
if (gt && lt2) {
gtltComp = compare2(gt.semver, lt2.semver, options);
if (gtltComp > 0) {
return null;
} else if (gtltComp === 0 && (gt.operator !== ">=" || lt.operator !== "<=")) {
} else if (gtltComp === 0 && (gt.operator !== ">=" || lt2.operator !== "<=")) {
return null;
}
}
@@ -33401,7 +33401,7 @@ var require_subset = __commonJS({
if (gt && !satisfies2(eq, String(gt), options)) {
return null;
}
if (lt && !satisfies2(eq, String(lt), options)) {
if (lt2 && !satisfies2(eq, String(lt2), options)) {
return null;
}
for (const c of dom) {
@@ -33413,9 +33413,9 @@ var require_subset = __commonJS({
}
let higher, lower;
let hasDomLT, hasDomGT;
let needDomLTPre = lt && !options.includePrerelease && lt.semver.prerelease.length ? lt.semver : false;
let needDomLTPre = lt2 && !options.includePrerelease && lt2.semver.prerelease.length ? lt2.semver : false;
let needDomGTPre = gt && !options.includePrerelease && gt.semver.prerelease.length ? gt.semver : false;
if (needDomLTPre && needDomLTPre.prerelease.length === 1 && lt.operator === "<" && needDomLTPre.prerelease[0] === 0) {
if (needDomLTPre && needDomLTPre.prerelease.length === 1 && lt2.operator === "<" && needDomLTPre.prerelease[0] === 0) {
needDomLTPre = false;
}
for (const c of dom) {
@@ -33436,29 +33436,29 @@ var require_subset = __commonJS({
return false;
}
}
if (lt) {
if (lt2) {
if (needDomLTPre) {
if (c.semver.prerelease && c.semver.prerelease.length && c.semver.major === needDomLTPre.major && c.semver.minor === needDomLTPre.minor && c.semver.patch === needDomLTPre.patch) {
needDomLTPre = false;
}
}
if (c.operator === "<" || c.operator === "<=") {
lower = lowerLT(lt, c, options);
if (lower === c && lower !== lt) {
lower = lowerLT(lt2, c, options);
if (lower === c && lower !== lt2) {
return false;
}
} else if (lt.operator === "<=" && !satisfies2(lt.semver, String(c), options)) {
} else if (lt2.operator === "<=" && !satisfies2(lt2.semver, String(c), options)) {
return false;
}
}
if (!c.operator && (lt || gt) && gtltComp !== 0) {
if (!c.operator && (lt2 || gt) && gtltComp !== 0) {
return false;
}
}
if (gt && hasDomLT && !lt && gtltComp !== 0) {
if (gt && hasDomLT && !lt2 && gtltComp !== 0) {
return false;
}
if (lt && hasDomGT && !gt && gtltComp !== 0) {
if (lt2 && hasDomGT && !gt && gtltComp !== 0) {
return false;
}
if (needDomGTPre || needDomLTPre) {
@@ -33493,7 +33493,7 @@ var require_semver2 = __commonJS({
var SemVer = require_semver();
var identifiers = require_identifiers();
var parse = require_parse4();
var valid3 = require_valid();
var valid4 = require_valid();
var clean3 = require_clean();
var inc = require_inc();
var diff = require_diff();
@@ -33508,7 +33508,7 @@ var require_semver2 = __commonJS({
var sort = require_sort();
var rsort = require_rsort();
var gt = require_gt();
var lt = require_lt();
var lt2 = require_lt();
var eq = require_eq();
var neq = require_neq();
var gte5 = require_gte();
@@ -33531,7 +33531,7 @@ var require_semver2 = __commonJS({
var subset = require_subset();
module2.exports = {
parse,
valid: valid3,
valid: valid4,
clean: clean3,
inc,
diff,
@@ -33546,7 +33546,7 @@ var require_semver2 = __commonJS({
sort,
rsort,
gt,
lt,
lt: lt2,
eq,
neq,
gte: gte5,
@@ -37120,8 +37120,8 @@ var require_semver3 = __commonJS({
return null;
}
}
exports2.valid = valid3;
function valid3(version, options) {
exports2.valid = valid4;
function valid4(version, options) {
var v = parse(version, options);
return v ? v.version : null;
}
@@ -37441,8 +37441,8 @@ var require_semver3 = __commonJS({
function gt(a, b, loose) {
return compare2(a, b, loose) > 0;
}
exports2.lt = lt;
function lt(a, b, loose) {
exports2.lt = lt2;
function lt2(a, b, loose) {
return compare2(a, b, loose) < 0;
}
exports2.eq = eq;
@@ -37487,7 +37487,7 @@ var require_semver3 = __commonJS({
case ">=":
return gte5(a, b, loose);
case "<":
return lt(a, b, loose);
return lt2(a, b, loose);
case "<=":
return lte(a, b, loose);
default:
@@ -38024,12 +38024,12 @@ var require_semver3 = __commonJS({
case ">":
gtfn = gt;
ltefn = lte;
ltfn = lt;
ltfn = lt2;
comp = ">";
ecomp = ">=";
break;
case "<":
gtfn = lt;
gtfn = lt2;
ltefn = gte5;
ltfn = gt;
comp = "<";
@@ -38231,7 +38231,7 @@ var require_cacheUtils = __commonJS({
var crypto = __importStar4(require("crypto"));
var fs14 = __importStar4(require("fs"));
var path15 = __importStar4(require("path"));
var semver8 = __importStar4(require_semver3());
var semver9 = __importStar4(require_semver3());
var util = __importStar4(require("util"));
var constants_1 = require_constants10();
var versionSalt = "1.0";
@@ -38328,7 +38328,7 @@ var require_cacheUtils = __commonJS({
function getCompressionMethod() {
return __awaiter4(this, void 0, void 0, function* () {
const versionOutput = yield getVersion("zstd", ["--quiet"]);
const version = semver8.clean(versionOutput);
const version = semver9.clean(versionOutput);
core12.debug(`zstd version: ${version}`);
if (versionOutput === "") {
return constants_1.CompressionMethod.Gzip;
@@ -80639,7 +80639,7 @@ var require_manifest = __commonJS({
};
Object.defineProperty(exports2, "__esModule", { value: true });
exports2._readLinuxVersionFile = exports2._getOsVersion = exports2._findMatch = void 0;
var semver8 = __importStar4(require_semver2());
var semver9 = __importStar4(require_semver2());
var core_1 = require_core();
var os2 = require("os");
var cp = require("child_process");
@@ -80653,7 +80653,7 @@ var require_manifest = __commonJS({
for (const candidate of candidates) {
const version = candidate.version;
(0, core_1.debug)(`check ${version} satisfies ${versionSpec}`);
if (semver8.satisfies(version, versionSpec) && (!stable || candidate.stable === stable)) {
if (semver9.satisfies(version, versionSpec) && (!stable || candidate.stable === stable)) {
file = candidate.files.find((item) => {
(0, core_1.debug)(`${item.arch}===${archFilter} && ${item.platform}===${platFilter}`);
let chk = item.arch === archFilter && item.platform === platFilter;
@@ -80662,7 +80662,7 @@ var require_manifest = __commonJS({
if (osVersion === item.platform_version) {
chk = true;
} else {
chk = semver8.satisfies(osVersion, item.platform_version);
chk = semver9.satisfies(osVersion, item.platform_version);
}
}
return chk;
@@ -80892,7 +80892,7 @@ var require_tool_cache = __commonJS({
var os2 = __importStar4(require("os"));
var path15 = __importStar4(require("path"));
var httpm = __importStar4(require_lib());
var semver8 = __importStar4(require_semver2());
var semver9 = __importStar4(require_semver2());
var stream2 = __importStar4(require("stream"));
var util = __importStar4(require("util"));
var assert_1 = require("assert");
@@ -81166,7 +81166,7 @@ var require_tool_cache = __commonJS({
}
function cacheDir(sourceDir, tool, version, arch2) {
return __awaiter4(this, void 0, void 0, function* () {
version = semver8.clean(version) || version;
version = semver9.clean(version) || version;
arch2 = arch2 || os2.arch();
core12.debug(`Caching tool ${tool} ${version} ${arch2}`);
core12.debug(`source dir: ${sourceDir}`);
@@ -81185,7 +81185,7 @@ var require_tool_cache = __commonJS({
exports2.cacheDir = cacheDir;
function cacheFile(sourceFile, targetFile, tool, version, arch2) {
return __awaiter4(this, void 0, void 0, function* () {
version = semver8.clean(version) || version;
version = semver9.clean(version) || version;
arch2 = arch2 || os2.arch();
core12.debug(`Caching tool ${tool} ${version} ${arch2}`);
core12.debug(`source file: ${sourceFile}`);
@@ -81216,7 +81216,7 @@ var require_tool_cache = __commonJS({
}
let toolPath = "";
if (versionSpec) {
versionSpec = semver8.clean(versionSpec) || "";
versionSpec = semver9.clean(versionSpec) || "";
const cachePath = path15.join(_getCacheDirectory(), toolName, versionSpec, arch2);
core12.debug(`checking cache: ${cachePath}`);
if (fs14.existsSync(cachePath) && fs14.existsSync(`${cachePath}.complete`)) {
@@ -81300,7 +81300,7 @@ var require_tool_cache = __commonJS({
}
function _createToolPath(tool, version, arch2) {
return __awaiter4(this, void 0, void 0, function* () {
const folderPath = path15.join(_getCacheDirectory(), tool, semver8.clean(version) || version, arch2 || "");
const folderPath = path15.join(_getCacheDirectory(), tool, semver9.clean(version) || version, arch2 || "");
core12.debug(`destination ${folderPath}`);
const markerPath = `${folderPath}.complete`;
yield io6.rmRF(folderPath);
@@ -81310,31 +81310,31 @@ var require_tool_cache = __commonJS({
});
}
function _completeToolPath(tool, version, arch2) {
const folderPath = path15.join(_getCacheDirectory(), tool, semver8.clean(version) || version, arch2 || "");
const folderPath = path15.join(_getCacheDirectory(), tool, semver9.clean(version) || version, arch2 || "");
const markerPath = `${folderPath}.complete`;
fs14.writeFileSync(markerPath, "");
core12.debug("finished caching tool");
}
function isExplicitVersion(versionSpec) {
const c = semver8.clean(versionSpec) || "";
const c = semver9.clean(versionSpec) || "";
core12.debug(`isExplicit: ${c}`);
const valid3 = semver8.valid(c) != null;
core12.debug(`explicit? ${valid3}`);
return valid3;
const valid4 = semver9.valid(c) != null;
core12.debug(`explicit? ${valid4}`);
return valid4;
}
exports2.isExplicitVersion = isExplicitVersion;
function evaluateVersions(versions, versionSpec) {
let version = "";
core12.debug(`evaluating ${versions.length} versions`);
versions = versions.sort((a, b) => {
if (semver8.gt(a, b)) {
if (semver9.gt(a, b)) {
return 1;
}
return -1;
});
for (let i = versions.length - 1; i >= 0; i--) {
const potential = versions[i];
const satisfied = semver8.satisfies(potential, versionSpec);
const satisfied = semver9.satisfies(potential, versionSpec);
if (satisfied) {
version = potential;
break;
@@ -88942,8 +88942,8 @@ var PACK_IDENTIFIER_PATTERN = (function() {
})();
// src/diff-informed-analysis-utils.ts
var fs6 = __toESM(require("fs"));
var path8 = __toESM(require("path"));
var fs5 = __toESM(require("fs"));
var path7 = __toESM(require("path"));
// src/feature-flags.ts
var semver4 = __toESM(require_semver2());
@@ -88952,10 +88952,206 @@ var semver4 = __toESM(require_semver2());
var bundleVersion = "codeql-bundle-v2.23.1";
var cliVersion = "2.23.1";
// src/overlay-database-utils.ts
var fs5 = __toESM(require("fs"));
var path7 = __toESM(require("path"));
var actionsCache = __toESM(require_cache3());
// src/tools-features.ts
var semver3 = __toESM(require_semver2());
function isSupportedToolsFeature(versionInfo, feature) {
return !!versionInfo.features && versionInfo.features[feature];
}
// src/feature-flags.ts
var CODEQL_VERSION_ZSTD_BUNDLE = "2.19.0";
var featureConfig = {
["cleanup_trap_caches" /* CleanupTrapCaches */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_CLEANUP_TRAP_CACHES",
minimumVersion: void 0
},
["cpp_dependency_installation_enabled" /* CppDependencyInstallation */]: {
defaultValue: false,
envVar: "CODEQL_EXTRACTOR_CPP_AUTOINSTALL_DEPENDENCIES",
legacyApi: true,
minimumVersion: "2.15.0"
},
["diff_informed_queries" /* DiffInformedQueries */]: {
defaultValue: true,
envVar: "CODEQL_ACTION_DIFF_INFORMED_QUERIES",
minimumVersion: "2.21.0"
},
["disable_csharp_buildless" /* DisableCsharpBuildless */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_DISABLE_CSHARP_BUILDLESS",
minimumVersion: void 0
},
["disable_java_buildless_enabled" /* DisableJavaBuildlessEnabled */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_DISABLE_JAVA_BUILDLESS",
legacyApi: true,
minimumVersion: void 0
},
["disable_kotlin_analysis_enabled" /* DisableKotlinAnalysisEnabled */]: {
defaultValue: false,
envVar: "CODEQL_DISABLE_KOTLIN_ANALYSIS",
legacyApi: true,
minimumVersion: void 0
},
["export_diagnostics_enabled" /* ExportDiagnosticsEnabled */]: {
defaultValue: true,
envVar: "CODEQL_ACTION_EXPORT_DIAGNOSTICS",
legacyApi: true,
minimumVersion: void 0
},
["resolve_supported_languages_using_cli" /* ResolveSupportedLanguagesUsingCli */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_RESOLVE_SUPPORTED_LANGUAGES_USING_CLI",
minimumVersion: void 0,
toolsFeature: "builtinExtractorsSpecifyDefaultQueries" /* BuiltinExtractorsSpecifyDefaultQueries */
},
["overlay_analysis" /* OverlayAnalysis */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS",
minimumVersion: void 0
},
["overlay_analysis_actions" /* OverlayAnalysisActions */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_ACTIONS",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_actions" /* OverlayAnalysisCodeScanningActions */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_ACTIONS",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_cpp" /* OverlayAnalysisCodeScanningCpp */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_CPP",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_csharp" /* OverlayAnalysisCodeScanningCsharp */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_CSHARP",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_go" /* OverlayAnalysisCodeScanningGo */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_GO",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_java" /* OverlayAnalysisCodeScanningJava */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_JAVA",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_javascript" /* OverlayAnalysisCodeScanningJavascript */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_JAVASCRIPT",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_python" /* OverlayAnalysisCodeScanningPython */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_PYTHON",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_ruby" /* OverlayAnalysisCodeScanningRuby */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_RUBY",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_rust" /* OverlayAnalysisCodeScanningRust */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_RUST",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_swift" /* OverlayAnalysisCodeScanningSwift */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_SWIFT",
minimumVersion: void 0
},
["overlay_analysis_cpp" /* OverlayAnalysisCpp */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CPP",
minimumVersion: void 0
},
["overlay_analysis_csharp" /* OverlayAnalysisCsharp */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CSHARP",
minimumVersion: void 0
},
["overlay_analysis_go" /* OverlayAnalysisGo */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_GO",
minimumVersion: void 0
},
["overlay_analysis_java" /* OverlayAnalysisJava */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_JAVA",
minimumVersion: void 0
},
["overlay_analysis_javascript" /* OverlayAnalysisJavascript */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_JAVASCRIPT",
minimumVersion: void 0
},
["overlay_analysis_python" /* OverlayAnalysisPython */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_PYTHON",
minimumVersion: void 0
},
["overlay_analysis_ruby" /* OverlayAnalysisRuby */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_RUBY",
minimumVersion: void 0
},
["overlay_analysis_rust" /* OverlayAnalysisRust */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_RUST",
minimumVersion: void 0
},
["overlay_analysis_swift" /* OverlayAnalysisSwift */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SWIFT",
minimumVersion: void 0
},
["python_default_is_to_not_extract_stdlib" /* PythonDefaultIsToNotExtractStdlib */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_DISABLE_PYTHON_STANDARD_LIBRARY_EXTRACTION",
minimumVersion: void 0,
toolsFeature: "pythonDefaultIsToNotExtractStdlib" /* PythonDefaultIsToNotExtractStdlib */
},
["use_repository_properties" /* UseRepositoryProperties */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES",
minimumVersion: void 0
},
["qa_telemetry_enabled" /* QaTelemetryEnabled */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_QA_TELEMETRY",
legacyApi: true,
minimumVersion: void 0
},
["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS",
minimumVersion: "2.23.0"
}
};
// src/diff-informed-analysis-utils.ts
function getDiffRangesJsonFilePath() {
return path7.join(getTemporaryDirectory(), "pr-diff-range.json");
}
function readDiffRangesJsonFile(logger) {
const jsonFilePath = getDiffRangesJsonFilePath();
if (!fs5.existsSync(jsonFilePath)) {
logger.debug(`Diff ranges JSON file does not exist at ${jsonFilePath}`);
return void 0;
}
const jsonContents = fs5.readFileSync(jsonFilePath, "utf8");
logger.debug(
`Read pr-diff-range JSON file from ${jsonFilePath}:
${jsonContents}`
);
return JSON.parse(jsonContents);
}
// src/git-utils.ts
var core7 = __toESM(require_core());
@@ -89154,6 +89350,12 @@ async function isAnalyzingDefaultBranch() {
return currentRef === defaultBranch;
}
// src/overlay-database-utils.ts
var fs6 = __toESM(require("fs"));
var path8 = __toESM(require("path"));
var actionsCache = __toESM(require_cache3());
var semver5 = __toESM(require_semver2());
// src/logging.ts
var core8 = __toESM(require_core());
function formatDuration(durationMs) {
@@ -89169,19 +89371,18 @@ function formatDuration(durationMs) {
}
// src/overlay-database-utils.ts
var CODEQL_OVERLAY_MINIMUM_VERSION = "2.22.4";
var OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_MB = 15e3;
var OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_BYTES = OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_MB * 1e6;
async function writeBaseDatabaseOidsFile(config, sourceRoot) {
const gitFileOids = await getFileOidsUnderPath(sourceRoot);
const gitFileOidsJson = JSON.stringify(gitFileOids);
const baseDatabaseOidsFilePath = getBaseDatabaseOidsFilePath(config);
await fs5.promises.writeFile(baseDatabaseOidsFilePath, gitFileOidsJson);
await fs6.promises.writeFile(baseDatabaseOidsFilePath, gitFileOidsJson);
}
async function readBaseDatabaseOidsFile(config, logger) {
const baseDatabaseOidsFilePath = getBaseDatabaseOidsFilePath(config);
try {
const contents = await fs5.promises.readFile(
const contents = await fs6.promises.readFile(
baseDatabaseOidsFilePath,
"utf-8"
);
@@ -89194,7 +89395,7 @@ async function readBaseDatabaseOidsFile(config, logger) {
}
}
function getBaseDatabaseOidsFilePath(config) {
return path7.join(config.dbLocation, "base-database-oids.json");
return path8.join(config.dbLocation, "base-database-oids.json");
}
async function writeOverlayChangesFile(config, sourceRoot, logger) {
const baseFileOids = await readBaseDatabaseOidsFile(config, logger);
@@ -89204,14 +89405,14 @@ async function writeOverlayChangesFile(config, sourceRoot, logger) {
`Found ${changedFiles.length} changed file(s) under ${sourceRoot}.`
);
const changedFilesJson = JSON.stringify({ changes: changedFiles });
const overlayChangesFile = path7.join(
const overlayChangesFile = path8.join(
getTemporaryDirectory(),
"overlay-changes.json"
);
logger.debug(
`Writing overlay changed files to ${overlayChangesFile}: ${changedFilesJson}`
);
await fs5.promises.writeFile(overlayChangesFile, changedFilesJson);
await fs6.promises.writeFile(overlayChangesFile, changedFilesJson);
return overlayChangesFile;
}
function computeChangedFiles(baseFileOids, overlayFileOids) {
@@ -89229,207 +89430,6 @@ function computeChangedFiles(baseFileOids, overlayFileOids) {
return changes;
}
// src/tools-features.ts
var semver3 = __toESM(require_semver2());
function isSupportedToolsFeature(versionInfo, feature) {
return !!versionInfo.features && versionInfo.features[feature];
}
// src/feature-flags.ts
var CODEQL_VERSION_ZSTD_BUNDLE = "2.19.0";
var featureConfig = {
["cleanup_trap_caches" /* CleanupTrapCaches */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_CLEANUP_TRAP_CACHES",
minimumVersion: void 0
},
["cpp_dependency_installation_enabled" /* CppDependencyInstallation */]: {
defaultValue: false,
envVar: "CODEQL_EXTRACTOR_CPP_AUTOINSTALL_DEPENDENCIES",
legacyApi: true,
minimumVersion: "2.15.0"
},
["diff_informed_queries" /* DiffInformedQueries */]: {
defaultValue: true,
envVar: "CODEQL_ACTION_DIFF_INFORMED_QUERIES",
minimumVersion: "2.21.0"
},
["disable_csharp_buildless" /* DisableCsharpBuildless */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_DISABLE_CSHARP_BUILDLESS",
minimumVersion: void 0
},
["disable_java_buildless_enabled" /* DisableJavaBuildlessEnabled */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_DISABLE_JAVA_BUILDLESS",
legacyApi: true,
minimumVersion: void 0
},
["disable_kotlin_analysis_enabled" /* DisableKotlinAnalysisEnabled */]: {
defaultValue: false,
envVar: "CODEQL_DISABLE_KOTLIN_ANALYSIS",
legacyApi: true,
minimumVersion: void 0
},
["export_diagnostics_enabled" /* ExportDiagnosticsEnabled */]: {
defaultValue: true,
envVar: "CODEQL_ACTION_EXPORT_DIAGNOSTICS",
legacyApi: true,
minimumVersion: void 0
},
["resolve_supported_languages_using_cli" /* ResolveSupportedLanguagesUsingCli */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_RESOLVE_SUPPORTED_LANGUAGES_USING_CLI",
minimumVersion: void 0,
toolsFeature: "builtinExtractorsSpecifyDefaultQueries" /* BuiltinExtractorsSpecifyDefaultQueries */
},
["overlay_analysis" /* OverlayAnalysis */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS",
minimumVersion: CODEQL_OVERLAY_MINIMUM_VERSION
},
["overlay_analysis_actions" /* OverlayAnalysisActions */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_ACTIONS",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_actions" /* OverlayAnalysisCodeScanningActions */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_ACTIONS",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_cpp" /* OverlayAnalysisCodeScanningCpp */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_CPP",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_csharp" /* OverlayAnalysisCodeScanningCsharp */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_CSHARP",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_go" /* OverlayAnalysisCodeScanningGo */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_GO",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_java" /* OverlayAnalysisCodeScanningJava */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_JAVA",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_javascript" /* OverlayAnalysisCodeScanningJavascript */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_JAVASCRIPT",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_python" /* OverlayAnalysisCodeScanningPython */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_PYTHON",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_ruby" /* OverlayAnalysisCodeScanningRuby */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_RUBY",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_rust" /* OverlayAnalysisCodeScanningRust */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_RUST",
minimumVersion: void 0
},
["overlay_analysis_code_scanning_swift" /* OverlayAnalysisCodeScanningSwift */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CODE_SCANNING_SWIFT",
minimumVersion: void 0
},
["overlay_analysis_cpp" /* OverlayAnalysisCpp */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CPP",
minimumVersion: void 0
},
["overlay_analysis_csharp" /* OverlayAnalysisCsharp */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_CSHARP",
minimumVersion: void 0
},
["overlay_analysis_go" /* OverlayAnalysisGo */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_GO",
minimumVersion: void 0
},
["overlay_analysis_java" /* OverlayAnalysisJava */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_JAVA",
minimumVersion: void 0
},
["overlay_analysis_javascript" /* OverlayAnalysisJavascript */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_JAVASCRIPT",
minimumVersion: void 0
},
["overlay_analysis_python" /* OverlayAnalysisPython */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_PYTHON",
minimumVersion: void 0
},
["overlay_analysis_ruby" /* OverlayAnalysisRuby */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_RUBY",
minimumVersion: void 0
},
["overlay_analysis_rust" /* OverlayAnalysisRust */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_RUST",
minimumVersion: void 0
},
["overlay_analysis_swift" /* OverlayAnalysisSwift */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SWIFT",
minimumVersion: void 0
},
["python_default_is_to_not_extract_stdlib" /* PythonDefaultIsToNotExtractStdlib */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_DISABLE_PYTHON_STANDARD_LIBRARY_EXTRACTION",
minimumVersion: void 0,
toolsFeature: "pythonDefaultIsToNotExtractStdlib" /* PythonDefaultIsToNotExtractStdlib */
},
["use_repository_properties" /* UseRepositoryProperties */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES",
minimumVersion: void 0
},
["qa_telemetry_enabled" /* QaTelemetryEnabled */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_QA_TELEMETRY",
legacyApi: true,
minimumVersion: void 0
},
["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS",
minimumVersion: "2.23.0"
}
};
// src/diff-informed-analysis-utils.ts
function getDiffRangesJsonFilePath() {
return path8.join(getTemporaryDirectory(), "pr-diff-range.json");
}
function readDiffRangesJsonFile(logger) {
const jsonFilePath = getDiffRangesJsonFilePath();
if (!fs6.existsSync(jsonFilePath)) {
logger.debug(`Diff ranges JSON file does not exist at ${jsonFilePath}`);
return void 0;
}
const jsonContents = fs6.readFileSync(jsonFilePath, "utf8");
logger.debug(
`Read pr-diff-range JSON file from ${jsonFilePath}:
${jsonContents}`
);
return JSON.parse(jsonContents);
}
// src/trap-caching.ts
var actionsCache2 = __toESM(require_cache3());
@@ -89506,7 +89506,7 @@ var fs10 = __toESM(require("fs"));
var path11 = __toESM(require("path"));
var toolcache3 = __toESM(require_tool_cache());
var import_fast_deep_equal = __toESM(require_fast_deep_equal());
var semver7 = __toESM(require_semver2());
var semver8 = __toESM(require_semver2());
// node_modules/uuid/dist-node/stringify.js
var byteToHex = [];
@@ -89569,7 +89569,7 @@ var stream = __toESM(require("stream"));
var import_toolrunner = __toESM(require_toolrunner());
var io4 = __toESM(require_io());
var toolcache = __toESM(require_tool_cache());
var semver5 = __toESM(require_semver2());
var semver6 = __toESM(require_semver2());
var MIN_REQUIRED_BSD_TAR_VERSION = "3.4.3";
var MIN_REQUIRED_GNU_TAR_VERSION = "1.31";
async function getTarVersion() {
@@ -89611,9 +89611,9 @@ async function isZstdAvailable(logger) {
case "gnu":
return {
available: foundZstdBinary && // GNU tar only uses major and minor version numbers
semver5.gte(
semver5.coerce(version),
semver5.coerce(MIN_REQUIRED_GNU_TAR_VERSION)
semver6.gte(
semver6.coerce(version),
semver6.coerce(MIN_REQUIRED_GNU_TAR_VERSION)
),
foundZstdBinary,
version: tarVersion
@@ -89622,7 +89622,7 @@ async function isZstdAvailable(logger) {
return {
available: foundZstdBinary && // Do a loose comparison since these version numbers don't contain
// a patch version number.
semver5.gte(version, MIN_REQUIRED_BSD_TAR_VERSION),
semver6.gte(version, MIN_REQUIRED_BSD_TAR_VERSION),
foundZstdBinary,
version: tarVersion
};
@@ -89729,7 +89729,7 @@ var core9 = __toESM(require_core());
var import_http_client = __toESM(require_lib());
var toolcache2 = __toESM(require_tool_cache());
var import_follow_redirects = __toESM(require_follow_redirects());
var semver6 = __toESM(require_semver2());
var semver7 = __toESM(require_semver2());
var STREAMING_HIGH_WATERMARK_BYTES = 4 * 1024 * 1024;
var TOOLCACHE_TOOL_NAME = "CodeQL";
function makeDownloadFirstToolsDownloadDurations(downloadDurationMs, extractionDurationMs) {
@@ -89859,7 +89859,7 @@ function getToolcacheDirectory(version) {
return path10.join(
getRequiredEnvParam("RUNNER_TOOL_CACHE"),
TOOLCACHE_TOOL_NAME,
semver6.clean(version) || version,
semver7.clean(version) || version,
os.arch() || ""
);
}
@@ -89983,13 +89983,13 @@ function tryGetTagNameFromUrl(url2, logger) {
return match[1];
}
function convertToSemVer(version, logger) {
if (!semver7.valid(version)) {
if (!semver8.valid(version)) {
logger.debug(
`Bundle version ${version} is not in SemVer format. Will treat it as pre-release 0.0.0-${version}.`
);
version = `0.0.0-${version}`;
}
const s = semver7.clean(version);
const s = semver8.clean(version);
if (!s) {
throw new Error(`Bundle version ${version} is not in SemVer format.`);
}
@@ -90063,7 +90063,7 @@ async function getCodeQLSource(toolsInput, defaultCliVersion, apiDetails, varian
url2 = toolsInput;
if (tagName) {
const bundleVersion3 = tryGetBundleVersionFromTagName(tagName, logger);
if (bundleVersion3 && semver7.valid(bundleVersion3)) {
if (bundleVersion3 && semver8.valid(bundleVersion3)) {
cliVersion2 = convertToSemVer(bundleVersion3, logger);
}
}
@@ -90333,7 +90333,7 @@ async function setupCodeQLBundle(toolsInput, apiDetails, tempDir, variant, defau
async function useZstdBundle(cliVersion2, tarSupportsZstd) {
return (
// In testing, gzip performs better than zstd on Windows.
process.platform !== "win32" && tarSupportsZstd && semver7.gte(cliVersion2, CODEQL_VERSION_ZSTD_BUNDLE)
process.platform !== "win32" && tarSupportsZstd && semver8.gte(cliVersion2, CODEQL_VERSION_ZSTD_BUNDLE)
);
}
function getTempExtractionDir(tempDir) {

View File

@@ -24984,11 +24984,11 @@ var require_valid = __commonJS({
"node_modules/semver/functions/valid.js"(exports2, module2) {
"use strict";
var parse = require_parse2();
var valid3 = (version, options) => {
var valid4 = (version, options) => {
const v = parse(version, options);
return v ? v.version : null;
};
module2.exports = valid3;
module2.exports = valid4;
}
});
@@ -25195,8 +25195,8 @@ var require_lt = __commonJS({
"node_modules/semver/functions/lt.js"(exports2, module2) {
"use strict";
var compare = require_compare();
var lt = (a, b, loose) => compare(a, b, loose) < 0;
module2.exports = lt;
var lt2 = (a, b, loose) => compare(a, b, loose) < 0;
module2.exports = lt2;
}
});
@@ -25248,7 +25248,7 @@ var require_cmp = __commonJS({
var neq = require_neq();
var gt = require_gt();
var gte5 = require_gte();
var lt = require_lt();
var lt2 = require_lt();
var lte = require_lte();
var cmp = (a, op, b, loose) => {
switch (op) {
@@ -25279,7 +25279,7 @@ var require_cmp = __commonJS({
case ">=":
return gte5(a, b, loose);
case "<":
return lt(a, b, loose);
return lt2(a, b, loose);
case "<=":
return lte(a, b, loose);
default:
@@ -26033,7 +26033,7 @@ var require_outside = __commonJS({
var Range2 = require_range();
var satisfies2 = require_satisfies();
var gt = require_gt();
var lt = require_lt();
var lt2 = require_lt();
var lte = require_lte();
var gte5 = require_gte();
var outside = (version, range, hilo, options) => {
@@ -26044,12 +26044,12 @@ var require_outside = __commonJS({
case ">":
gtfn = gt;
ltefn = lte;
ltfn = lt;
ltfn = lt2;
comp = ">";
ecomp = ">=";
break;
case "<":
gtfn = lt;
gtfn = lt2;
ltefn = gte5;
ltfn = gt;
comp = "<";
@@ -26229,12 +26229,12 @@ var require_subset = __commonJS({
}
}
const eqSet = /* @__PURE__ */ new Set();
let gt, lt;
let gt, lt2;
for (const c of sub) {
if (c.operator === ">" || c.operator === ">=") {
gt = higherGT(gt, c, options);
} else if (c.operator === "<" || c.operator === "<=") {
lt = lowerLT(lt, c, options);
lt2 = lowerLT(lt2, c, options);
} else {
eqSet.add(c.semver);
}
@@ -26243,11 +26243,11 @@ var require_subset = __commonJS({
return null;
}
let gtltComp;
if (gt && lt) {
gtltComp = compare(gt.semver, lt.semver, options);
if (gt && lt2) {
gtltComp = compare(gt.semver, lt2.semver, options);
if (gtltComp > 0) {
return null;
} else if (gtltComp === 0 && (gt.operator !== ">=" || lt.operator !== "<=")) {
} else if (gtltComp === 0 && (gt.operator !== ">=" || lt2.operator !== "<=")) {
return null;
}
}
@@ -26255,7 +26255,7 @@ var require_subset = __commonJS({
if (gt && !satisfies2(eq, String(gt), options)) {
return null;
}
if (lt && !satisfies2(eq, String(lt), options)) {
if (lt2 && !satisfies2(eq, String(lt2), options)) {
return null;
}
for (const c of dom) {
@@ -26267,9 +26267,9 @@ var require_subset = __commonJS({
}
let higher, lower;
let hasDomLT, hasDomGT;
let needDomLTPre = lt && !options.includePrerelease && lt.semver.prerelease.length ? lt.semver : false;
let needDomLTPre = lt2 && !options.includePrerelease && lt2.semver.prerelease.length ? lt2.semver : false;
let needDomGTPre = gt && !options.includePrerelease && gt.semver.prerelease.length ? gt.semver : false;
if (needDomLTPre && needDomLTPre.prerelease.length === 1 && lt.operator === "<" && needDomLTPre.prerelease[0] === 0) {
if (needDomLTPre && needDomLTPre.prerelease.length === 1 && lt2.operator === "<" && needDomLTPre.prerelease[0] === 0) {
needDomLTPre = false;
}
for (const c of dom) {
@@ -26290,29 +26290,29 @@ var require_subset = __commonJS({
return false;
}
}
if (lt) {
if (lt2) {
if (needDomLTPre) {
if (c.semver.prerelease && c.semver.prerelease.length && c.semver.major === needDomLTPre.major && c.semver.minor === needDomLTPre.minor && c.semver.patch === needDomLTPre.patch) {
needDomLTPre = false;
}
}
if (c.operator === "<" || c.operator === "<=") {
lower = lowerLT(lt, c, options);
if (lower === c && lower !== lt) {
lower = lowerLT(lt2, c, options);
if (lower === c && lower !== lt2) {
return false;
}
} else if (lt.operator === "<=" && !satisfies2(lt.semver, String(c), options)) {
} else if (lt2.operator === "<=" && !satisfies2(lt2.semver, String(c), options)) {
return false;
}
}
if (!c.operator && (lt || gt) && gtltComp !== 0) {
if (!c.operator && (lt2 || gt) && gtltComp !== 0) {
return false;
}
}
if (gt && hasDomLT && !lt && gtltComp !== 0) {
if (gt && hasDomLT && !lt2 && gtltComp !== 0) {
return false;
}
if (lt && hasDomGT && !gt && gtltComp !== 0) {
if (lt2 && hasDomGT && !gt && gtltComp !== 0) {
return false;
}
if (needDomGTPre || needDomLTPre) {
@@ -26347,7 +26347,7 @@ var require_semver2 = __commonJS({
var SemVer = require_semver();
var identifiers = require_identifiers();
var parse = require_parse2();
var valid3 = require_valid();
var valid4 = require_valid();
var clean3 = require_clean();
var inc = require_inc();
var diff = require_diff();
@@ -26362,7 +26362,7 @@ var require_semver2 = __commonJS({
var sort = require_sort();
var rsort = require_rsort();
var gt = require_gt();
var lt = require_lt();
var lt2 = require_lt();
var eq = require_eq();
var neq = require_neq();
var gte5 = require_gte();
@@ -26385,7 +26385,7 @@ var require_semver2 = __commonJS({
var subset = require_subset();
module2.exports = {
parse,
valid: valid3,
valid: valid4,
clean: clean3,
inc,
diff,
@@ -26400,7 +26400,7 @@ var require_semver2 = __commonJS({
sort,
rsort,
gt,
lt,
lt: lt2,
eq,
neq,
gte: gte5,
@@ -74490,7 +74490,7 @@ var require_stream_writable = __commonJS({
pna.nextTick(cb, er);
}
function validChunk(stream, state, chunk, cb) {
var valid3 = true;
var valid4 = true;
var er = false;
if (chunk === null) {
er = new TypeError("May not write null values to stream");
@@ -74500,9 +74500,9 @@ var require_stream_writable = __commonJS({
if (er) {
stream.emit("error", er);
pna.nextTick(cb, er);
valid3 = false;
valid4 = false;
}
return valid3;
return valid4;
}
Writable.prototype.write = function(chunk, encoding, cb) {
var state = this._writableState;
@@ -107798,8 +107798,8 @@ var require_semver3 = __commonJS({
return null;
}
}
exports2.valid = valid3;
function valid3(version, options) {
exports2.valid = valid4;
function valid4(version, options) {
var v = parse(version, options);
return v ? v.version : null;
}
@@ -108119,8 +108119,8 @@ var require_semver3 = __commonJS({
function gt(a, b, loose) {
return compare(a, b, loose) > 0;
}
exports2.lt = lt;
function lt(a, b, loose) {
exports2.lt = lt2;
function lt2(a, b, loose) {
return compare(a, b, loose) < 0;
}
exports2.eq = eq;
@@ -108165,7 +108165,7 @@ var require_semver3 = __commonJS({
case ">=":
return gte5(a, b, loose);
case "<":
return lt(a, b, loose);
return lt2(a, b, loose);
case "<=":
return lte(a, b, loose);
default:
@@ -108702,12 +108702,12 @@ var require_semver3 = __commonJS({
case ">":
gtfn = gt;
ltefn = lte;
ltfn = lt;
ltfn = lt2;
comp = ">";
ecomp = ">=";
break;
case "<":
gtfn = lt;
gtfn = lt2;
ltefn = gte5;
ltfn = gt;
comp = "<";
@@ -108909,7 +108909,7 @@ var require_cacheUtils = __commonJS({
var crypto = __importStar4(require("crypto"));
var fs2 = __importStar4(require("fs"));
var path2 = __importStar4(require("path"));
var semver8 = __importStar4(require_semver3());
var semver9 = __importStar4(require_semver3());
var util = __importStar4(require("util"));
var constants_1 = require_constants10();
var versionSalt = "1.0";
@@ -109006,7 +109006,7 @@ var require_cacheUtils = __commonJS({
function getCompressionMethod() {
return __awaiter4(this, void 0, void 0, function* () {
const versionOutput = yield getVersion("zstd", ["--quiet"]);
const version = semver8.clean(versionOutput);
const version = semver9.clean(versionOutput);
core14.debug(`zstd version: ${version}`);
if (versionOutput === "") {
return constants_1.CompressionMethod.Gzip;
@@ -111969,7 +111969,7 @@ var require_manifest = __commonJS({
};
Object.defineProperty(exports2, "__esModule", { value: true });
exports2._readLinuxVersionFile = exports2._getOsVersion = exports2._findMatch = void 0;
var semver8 = __importStar4(require_semver2());
var semver9 = __importStar4(require_semver2());
var core_1 = require_core();
var os = require("os");
var cp = require("child_process");
@@ -111983,7 +111983,7 @@ var require_manifest = __commonJS({
for (const candidate of candidates) {
const version = candidate.version;
(0, core_1.debug)(`check ${version} satisfies ${versionSpec}`);
if (semver8.satisfies(version, versionSpec) && (!stable || candidate.stable === stable)) {
if (semver9.satisfies(version, versionSpec) && (!stable || candidate.stable === stable)) {
file = candidate.files.find((item) => {
(0, core_1.debug)(`${item.arch}===${archFilter} && ${item.platform}===${platFilter}`);
let chk = item.arch === archFilter && item.platform === platFilter;
@@ -111992,7 +111992,7 @@ var require_manifest = __commonJS({
if (osVersion === item.platform_version) {
chk = true;
} else {
chk = semver8.satisfies(osVersion, item.platform_version);
chk = semver9.satisfies(osVersion, item.platform_version);
}
}
return chk;
@@ -112222,7 +112222,7 @@ var require_tool_cache = __commonJS({
var os = __importStar4(require("os"));
var path2 = __importStar4(require("path"));
var httpm = __importStar4(require_lib());
var semver8 = __importStar4(require_semver2());
var semver9 = __importStar4(require_semver2());
var stream = __importStar4(require("stream"));
var util = __importStar4(require("util"));
var assert_1 = require("assert");
@@ -112496,7 +112496,7 @@ var require_tool_cache = __commonJS({
}
function cacheDir(sourceDir, tool, version, arch) {
return __awaiter4(this, void 0, void 0, function* () {
version = semver8.clean(version) || version;
version = semver9.clean(version) || version;
arch = arch || os.arch();
core14.debug(`Caching tool ${tool} ${version} ${arch}`);
core14.debug(`source dir: ${sourceDir}`);
@@ -112515,7 +112515,7 @@ var require_tool_cache = __commonJS({
exports2.cacheDir = cacheDir;
function cacheFile(sourceFile, targetFile, tool, version, arch) {
return __awaiter4(this, void 0, void 0, function* () {
version = semver8.clean(version) || version;
version = semver9.clean(version) || version;
arch = arch || os.arch();
core14.debug(`Caching tool ${tool} ${version} ${arch}`);
core14.debug(`source file: ${sourceFile}`);
@@ -112546,7 +112546,7 @@ var require_tool_cache = __commonJS({
}
let toolPath = "";
if (versionSpec) {
versionSpec = semver8.clean(versionSpec) || "";
versionSpec = semver9.clean(versionSpec) || "";
const cachePath = path2.join(_getCacheDirectory(), toolName, versionSpec, arch);
core14.debug(`checking cache: ${cachePath}`);
if (fs2.existsSync(cachePath) && fs2.existsSync(`${cachePath}.complete`)) {
@@ -112630,7 +112630,7 @@ var require_tool_cache = __commonJS({
}
function _createToolPath(tool, version, arch) {
return __awaiter4(this, void 0, void 0, function* () {
const folderPath = path2.join(_getCacheDirectory(), tool, semver8.clean(version) || version, arch || "");
const folderPath = path2.join(_getCacheDirectory(), tool, semver9.clean(version) || version, arch || "");
core14.debug(`destination ${folderPath}`);
const markerPath = `${folderPath}.complete`;
yield io6.rmRF(folderPath);
@@ -112640,31 +112640,31 @@ var require_tool_cache = __commonJS({
});
}
function _completeToolPath(tool, version, arch) {
const folderPath = path2.join(_getCacheDirectory(), tool, semver8.clean(version) || version, arch || "");
const folderPath = path2.join(_getCacheDirectory(), tool, semver9.clean(version) || version, arch || "");
const markerPath = `${folderPath}.complete`;
fs2.writeFileSync(markerPath, "");
core14.debug("finished caching tool");
}
function isExplicitVersion(versionSpec) {
const c = semver8.clean(versionSpec) || "";
const c = semver9.clean(versionSpec) || "";
core14.debug(`isExplicit: ${c}`);
const valid3 = semver8.valid(c) != null;
core14.debug(`explicit? ${valid3}`);
return valid3;
const valid4 = semver9.valid(c) != null;
core14.debug(`explicit? ${valid4}`);
return valid4;
}
exports2.isExplicitVersion = isExplicitVersion;
function evaluateVersions(versions, versionSpec) {
let version = "";
core14.debug(`evaluating ${versions.length} versions`);
versions = versions.sort((a, b) => {
if (semver8.gt(a, b)) {
if (semver9.gt(a, b)) {
return 1;
}
return -1;
});
for (let i = versions.length - 1; i >= 0; i--) {
const potential = versions[i];
const satisfied = semver8.satisfies(potential, versionSpec);
const satisfied = semver9.satisfies(potential, versionSpec);
if (satisfied) {
version = potential;
break;
@@ -117341,33 +117341,6 @@ var PACK_IDENTIFIER_PATTERN = (function() {
// src/feature-flags.ts
var semver4 = __toESM(require_semver2());
// src/overlay-database-utils.ts
var actionsCache = __toESM(require_cache3());
// src/git-utils.ts
var core7 = __toESM(require_core());
var toolrunner2 = __toESM(require_toolrunner());
var io3 = __toESM(require_io());
// src/logging.ts
var core8 = __toESM(require_core());
function getActionsLogger() {
return core8;
}
function withGroup(groupName, f) {
core8.startGroup(groupName);
try {
return f();
} finally {
core8.endGroup();
}
}
// src/overlay-database-utils.ts
var CODEQL_OVERLAY_MINIMUM_VERSION = "2.22.4";
var OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_MB = 15e3;
var OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_BYTES = OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_MB * 1e6;
// src/tools-features.ts
var semver3 = __toESM(require_semver2());
var SafeArtifactUploadVersion = "2.20.3";
@@ -117425,7 +117398,7 @@ var featureConfig = {
["overlay_analysis" /* OverlayAnalysis */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS",
minimumVersion: CODEQL_OVERLAY_MINIMUM_VERSION
minimumVersion: void 0
},
["overlay_analysis_actions" /* OverlayAnalysisActions */]: {
defaultValue: false,
@@ -117551,6 +117524,33 @@ var featureConfig = {
}
};
// src/git-utils.ts
var core7 = __toESM(require_core());
var toolrunner2 = __toESM(require_toolrunner());
var io3 = __toESM(require_io());
// src/overlay-database-utils.ts
var actionsCache = __toESM(require_cache3());
var semver5 = __toESM(require_semver2());
// src/logging.ts
var core8 = __toESM(require_core());
function getActionsLogger() {
return core8;
}
function withGroup(groupName, f) {
core8.startGroup(groupName);
try {
return f();
} finally {
core8.endGroup();
}
}
// src/overlay-database-utils.ts
var OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_MB = 15e3;
var OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_BYTES = OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_MB * 1e6;
// src/trap-caching.ts
var actionsCache2 = __toESM(require_cache3());
@@ -117583,20 +117583,20 @@ var OVERLAY_ANALYSIS_CODE_SCANNING_FEATURES = {
// src/setup-codeql.ts
var toolcache3 = __toESM(require_tool_cache());
var import_fast_deep_equal = __toESM(require_fast_deep_equal());
var semver7 = __toESM(require_semver2());
var semver8 = __toESM(require_semver2());
// src/tar.ts
var import_toolrunner = __toESM(require_toolrunner());
var io4 = __toESM(require_io());
var toolcache = __toESM(require_tool_cache());
var semver5 = __toESM(require_semver2());
var semver6 = __toESM(require_semver2());
// src/tools-download.ts
var core9 = __toESM(require_core());
var import_http_client = __toESM(require_lib());
var toolcache2 = __toESM(require_tool_cache());
var import_follow_redirects = __toESM(require_follow_redirects());
var semver6 = __toESM(require_semver2());
var semver7 = __toESM(require_semver2());
var STREAMING_HIGH_WATERMARK_BYTES = 4 * 1024 * 1024;
// src/dependency-caching.ts

File diff suppressed because it is too large Load Diff

View File

@@ -260,6 +260,26 @@ export async function listActionsCaches(
);
}
/**
* List the most recently created Actions cache entry across all refs that
* match the provided key.
*/
export async function getMostRecentActionsCacheEntry(
key: string,
): Promise<ActionsCacheItem | undefined> {
const repositoryNwo = getRepositoryNwo();
const cacheItems = await getApiClient().rest.actions.getActionsCacheList({
owner: repositoryNwo.owner,
repo: repositoryNwo.repo,
key,
sort: "created_at",
direction: "desc",
per_page: 1,
});
return cacheItems.data.actions_caches[0];
}
/** Delete an Actions cache item by its ID. */
export async function deleteActionsCache(id: number) {
const repositoryNwo = getRepositoryNwo();

View File

@@ -65,16 +65,6 @@ function createTestInitConfigInputs(
debugDatabaseName: "",
repository: { owner: "github", repo: "example" },
tempDir: "",
codeql: createStubCodeQL({
async betterResolveLanguages() {
return {
extractors: {
html: [{ extractor_root: "" }],
javascript: [{ extractor_root: "" }],
},
};
},
}),
workspacePath: "",
sourceRoot: "",
githubVersion,
@@ -99,6 +89,20 @@ function createConfigFile(inputFileContents: string, tmpDir: string): string {
return configFilePath;
}
// Returns a default CodeQL stub for tests
function createDefaultTestCodeQL() {
return createStubCodeQL({
async betterResolveLanguages() {
return {
extractors: {
html: [{ extractor_root: "" }],
javascript: [{ extractor_root: "" }],
},
};
},
});
}
type GetContentsResponse = { content?: string } | object[];
function mockGetContents(
@@ -153,19 +157,19 @@ test("load empty config", async (t) => {
languagesInput: languages,
repository: { owner: "github", repo: "example" },
tempDir,
codeql,
logger,
}),
codeql,
);
const expectedConfig = await configUtils.initActionState(
createTestInitConfigInputs({
languagesInput: languages,
tempDir,
codeql,
logger,
}),
{},
codeql,
);
t.deepEqual(config, expectedConfig);
@@ -193,9 +197,9 @@ test("load code quality config", async (t) => {
languagesInput: languages,
repository: { owner: "github", repo: "example" },
tempDir,
codeql,
logger,
}),
codeql,
);
// And the config we expect it to result in
@@ -277,10 +281,10 @@ test("initActionState doesn't throw if there are queries configured in the repos
languagesInput: languages,
repository: { owner: "github", repo: "example" },
tempDir,
codeql,
repositoryProperties,
logger,
}),
codeql,
);
t.deepEqual(config, expectedConfig);
@@ -313,10 +317,10 @@ test("loading a saved config produces the same config", async (t) => {
createTestInitConfigInputs({
languagesInput: "javascript,python",
tempDir,
codeql,
workspacePath: tempDir,
logger,
}),
codeql,
);
await configUtils.saveConfig(config1, logger);
@@ -364,10 +368,10 @@ test("loading config with version mismatch throws", async (t) => {
createTestInitConfigInputs({
languagesInput: "javascript,python",
tempDir,
codeql,
workspacePath: tempDir,
logger,
}),
codeql,
);
// initConfig does not save the config, so we do it here.
await configUtils.saveConfig(config, logger);
@@ -394,6 +398,7 @@ test("load input outside of workspace", async (t) => {
tempDir,
workspacePath: tempDir,
}),
createDefaultTestCodeQL(),
);
throw new Error("initConfig did not throw error");
} catch (err) {
@@ -421,6 +426,7 @@ test("load non-local input with invalid repo syntax", async (t) => {
tempDir,
workspacePath: tempDir,
}),
createDefaultTestCodeQL(),
);
throw new Error("initConfig did not throw error");
} catch (err) {
@@ -450,6 +456,7 @@ test("load non-existent input", async (t) => {
tempDir,
workspacePath: tempDir,
}),
createDefaultTestCodeQL(),
);
throw new Error("initConfig did not throw error");
} catch (err) {
@@ -534,9 +541,9 @@ test("load non-empty input", async (t) => {
debugArtifactName: "my-artifact",
debugDatabaseName: "my-db",
tempDir,
codeql,
workspacePath: tempDir,
}),
codeql,
);
// Should exactly equal the object we constructed earlier
@@ -582,16 +589,15 @@ test("Using config input and file together, config input should be used.", async
// Only JS, python packs will be ignored
const languagesInput = "javascript";
const config = await configUtils.initConfig(
createTestInitConfigInputs({
languagesInput,
configFile: configFilePath,
configInput,
tempDir,
codeql,
workspacePath: tempDir,
}),
);
const inputs = createTestInitConfigInputs({
languagesInput,
configFile: configFilePath,
configInput,
tempDir,
workspacePath: tempDir,
});
configUtils.amendInputConfigFile(inputs, inputs.logger);
const config = await configUtils.initConfig(inputs, codeql);
t.deepEqual(config.originalUserInput, yaml.load(configInput));
});
@@ -637,9 +643,9 @@ test("API client used when reading remote config", async (t) => {
languagesInput,
configFile,
tempDir,
codeql,
workspacePath: tempDir,
}),
codeql,
);
t.assert(spyGetContents.called);
});
@@ -658,6 +664,7 @@ test("Remote config handles the case where a directory is provided", async (t) =
tempDir,
workspacePath: tempDir,
}),
createDefaultTestCodeQL(),
);
throw new Error("initConfig did not throw error");
} catch (err) {
@@ -686,6 +693,7 @@ test("Invalid format of remote config handled correctly", async (t) => {
tempDir,
workspacePath: tempDir,
}),
createDefaultTestCodeQL(),
);
throw new Error("initConfig did not throw error");
} catch (err) {
@@ -712,9 +720,9 @@ test("No detected languages", async (t) => {
await configUtils.initConfig(
createTestInitConfigInputs({
tempDir,
codeql,
workspacePath: tempDir,
}),
codeql,
);
throw new Error("initConfig did not throw error");
} catch (err) {
@@ -737,6 +745,7 @@ test("Unknown languages", async (t) => {
tempDir,
workspacePath: tempDir,
}),
createDefaultTestCodeQL(),
);
throw new Error("initConfig did not throw error");
} catch (err) {
@@ -987,7 +996,7 @@ interface OverlayDatabaseModeTestSetup {
isDefaultBranch: boolean;
repositoryOwner: string;
buildMode: BuildMode | undefined;
languages: Language[];
languages: string[];
codeqlVersion: string;
gitRoot: string | undefined;
codeScanningConfig: configUtils.UserConfig;
@@ -1014,6 +1023,8 @@ const getOverlayDatabaseModeMacro = test.macro({
expected: {
overlayDatabaseMode: OverlayDatabaseMode;
useOverlayDatabaseCaching: boolean;
preliminaryOverlayDatabaseMode?: OverlayDatabaseMode;
preliminaryUseOverlayDatabaseCaching?: boolean;
},
) => {
return await withTmpDir(async (tempDir) => {
@@ -1075,13 +1086,51 @@ const getOverlayDatabaseModeMacro = test.macro({
repository,
features,
setup.languages,
setup.languages.join(","),
tempDir, // sourceRoot
setup.buildMode,
setup.codeScanningConfig,
logger,
);
t.deepEqual(result, expected);
const expectedResult = {
overlayDatabaseMode: expected.overlayDatabaseMode,
useOverlayDatabaseCaching: expected.useOverlayDatabaseCaching,
};
t.deepEqual(result, expectedResult);
let configFile: string | undefined;
if (Object.keys(setup.codeScanningConfig).length > 0) {
configFile = createConfigFile(
yaml.dump(setup.codeScanningConfig),
tempDir,
);
}
// Test getPreliminaryOverlayDatabaseMode as well
const preliminaryResult =
await configUtils.getPreliminaryOverlayDatabaseMode(
createTestInitConfigInputs({
languagesInput: setup.languages.join(","),
configFile,
features,
tempDir,
workspacePath: tempDir,
sourceRoot: tempDir,
repository,
logger,
}),
);
const expectedPreliminaryResult = {
overlayDatabaseMode:
expected.preliminaryOverlayDatabaseMode ??
expected.overlayDatabaseMode,
useOverlayDatabaseCaching:
expected.preliminaryUseOverlayDatabaseCaching ??
expected.useOverlayDatabaseCaching,
};
t.deepEqual(preliminaryResult, expectedPreliminaryResult);
} finally {
// Restore the original environment
process.env = originalEnv;
@@ -1336,6 +1385,20 @@ test(
},
);
test(
getOverlayDatabaseModeMacro,
"Overlay analysis on PR when feature enabled via language alias",
{
languages: ["javascript-typescript"],
features: [Feature.OverlayAnalysis, Feature.OverlayAnalysisJavascript],
isPullRequest: true,
},
{
overlayDatabaseMode: OverlayDatabaseMode.Overlay,
useOverlayDatabaseCaching: true,
},
);
test(
getOverlayDatabaseModeMacro,
"Overlay analysis on PR when feature enabled with custom analysis",
@@ -1492,6 +1555,20 @@ test(
},
);
test(
getOverlayDatabaseModeMacro,
"No overlay analysis on PR when the language is unknown",
{
languages: ["cobol"],
features: [Feature.OverlayAnalysis],
isPullRequest: true,
},
{
overlayDatabaseMode: OverlayDatabaseMode.None,
useOverlayDatabaseCaching: false,
},
);
test(
getOverlayDatabaseModeMacro,
"Overlay PR analysis by env for dsp-testing",
@@ -1559,6 +1636,8 @@ test(
{
overlayDatabaseMode: OverlayDatabaseMode.None,
useOverlayDatabaseCaching: false,
preliminaryOverlayDatabaseMode: OverlayDatabaseMode.Overlay,
preliminaryUseOverlayDatabaseCaching: false,
},
);
@@ -1573,6 +1652,8 @@ test(
{
overlayDatabaseMode: OverlayDatabaseMode.None,
useOverlayDatabaseCaching: false,
preliminaryOverlayDatabaseMode: OverlayDatabaseMode.Overlay,
preliminaryUseOverlayDatabaseCaching: false,
},
);
@@ -1586,6 +1667,8 @@ test(
{
overlayDatabaseMode: OverlayDatabaseMode.None,
useOverlayDatabaseCaching: false,
preliminaryOverlayDatabaseMode: OverlayDatabaseMode.Overlay,
preliminaryUseOverlayDatabaseCaching: false,
},
);

View File

@@ -33,6 +33,7 @@ import {
CODEQL_OVERLAY_MINIMUM_VERSION,
OverlayDatabaseMode,
} from "./overlay-database-utils";
import * as overlayLanguageAliases from "./overlay-language-aliases.json";
import { RepositoryNwo } from "./repository";
import { downloadTrapCaches } from "./trap-caching";
import {
@@ -331,6 +332,36 @@ export async function getLanguages(
return languages;
}
/**
* Get the (unverified) languages for overlay analysis.
*
* This is a simplified version of `getLanguages` that only resolves language
* aliases but does not check if the languages are actually supported by the
* CodeQL CLI. It is intended to be used for overlay analysis preparations
* before the CodeQL CLI is available.
*/
async function getUnverifiedLanguagesForOverlay(
languagesInput: string | undefined,
repository: RepositoryNwo,
sourceRoot: string,
logger: Logger,
): Promise<string[]> {
// Obtain languages without filtering them.
const { rawLanguages } = await getRawLanguages(
languagesInput,
repository,
sourceRoot,
logger,
);
const languageAliases = overlayLanguageAliases as Record<string, string>;
const languagesSet: string[] = [];
for (const language of rawLanguages) {
languagesSet.push(languageAliases[language] || language);
}
return languagesSet;
}
export function getRawLanguagesNoAutodetect(
languagesInput: string | undefined,
): string[] {
@@ -389,7 +420,6 @@ export interface InitConfigInputs {
debugDatabaseName: string;
repository: RepositoryNwo;
tempDir: string;
codeql: CodeQL;
workspacePath: string;
sourceRoot: string;
githubVersion: GitHubVersion;
@@ -419,7 +449,6 @@ export async function initActionState(
debugDatabaseName,
repository,
tempDir,
codeql,
sourceRoot,
githubVersion,
features,
@@ -427,6 +456,7 @@ export async function initActionState(
logger,
}: InitConfigInputs,
userConfig: UserConfig,
codeql: CodeQL,
): Promise<Config> {
const analysisKinds = await parseAnalysisKinds(analysisKindsInput);
@@ -539,12 +569,48 @@ async function downloadCacheWithTime(
return { trapCaches, trapCacheDownloadTime };
}
/**
* Amends the input config file if configInput is provided.
* If configInput is set, it takes precedence over configFile.
*
* This function should be called only once on any specific `InitConfigInputs`
* object. Otherwise it could emit a false warning.
*/
export function amendInputConfigFile(
inputs: InitConfigInputs,
logger: Logger,
): void {
// if configInput is set, it takes precedence over configFile
if (inputs.configInput) {
if (inputs.configFile) {
logger.warning(
`Both a config file and config input were provided. Ignoring config file.`,
);
}
inputs.configFile = userConfigFromActionPath(inputs.tempDir);
fs.writeFileSync(inputs.configFile, inputs.configInput);
logger.debug(`Using config from action input: ${inputs.configFile}`);
}
}
/**
* Load user configuration from a file or return an empty configuration
* if no config file is specified.
*/
async function loadUserConfig(
configFile: string,
configFile: string | undefined,
workspacePath: string,
apiDetails: api.GitHubApiCombinedDetails,
tempDir: string,
logger: Logger,
): Promise<UserConfig> {
if (!configFile) {
logger.debug("No configuration file was provided");
return {};
}
logger.debug(`Using configuration file: ${configFile}`);
if (isLocal(configFile)) {
if (configFile !== userConfigFromActionPath(tempDir)) {
// If the config file is not generated by the Action, it should be relative to the workspace.
@@ -589,32 +655,38 @@ const OVERLAY_ANALYSIS_CODE_SCANNING_FEATURES: Record<Language, Feature> = {
};
async function isOverlayAnalysisFeatureEnabled(
repository: RepositoryNwo,
features: FeatureEnablement,
codeql: CodeQL,
languages: Language[],
codeScanningConfig: UserConfig,
languagesInput: string | undefined,
repository: RepositoryNwo,
sourceRoot: string,
features: FeatureEnablement,
logger: Logger,
): Promise<boolean> {
// TODO: Remove the repository owner check once support for overlay analysis
// stabilizes, and no more backward-incompatible changes are expected.
if (!["github", "dsp-testing"].includes(repository.owner)) {
return false;
}
if (!(await features.getValue(Feature.OverlayAnalysis, codeql))) {
if (!(await features.getValue(Feature.OverlayAnalysis))) {
return false;
}
const languages = await getUnverifiedLanguagesForOverlay(
languagesInput,
repository,
sourceRoot,
logger,
);
let enableForCodeScanningOnly = false;
for (const language of languages) {
const feature = OVERLAY_ANALYSIS_FEATURES[language];
if (feature && (await features.getValue(feature, codeql))) {
if (feature && (await features.getValue(feature))) {
continue;
}
const codeScanningFeature =
OVERLAY_ANALYSIS_CODE_SCANNING_FEATURES[language];
if (
codeScanningFeature &&
(await features.getValue(codeScanningFeature, codeql))
) {
if (codeScanningFeature && (await features.getValue(codeScanningFeature))) {
enableForCodeScanningOnly = true;
continue;
}
@@ -652,14 +724,18 @@ async function isOverlayAnalysisFeatureEnabled(
* For `Overlay` and `OverlayBase`, the function performs further checks and
* reverts to `None` if any check should fail.
*
* If `codeql` or `languages` is undefined, the function will skip checks that
* depend on them.
*
* @returns An object containing the overlay database mode and whether the
* action should perform overlay-base database caching.
*/
export async function getOverlayDatabaseMode(
codeql: CodeQL,
codeql: CodeQL | undefined,
repository: RepositoryNwo,
features: FeatureEnablement,
languages: Language[],
languages: Language[] | undefined,
languagesInput: string | undefined,
sourceRoot: string,
buildMode: BuildMode | undefined,
codeScanningConfig: UserConfig,
@@ -686,11 +762,12 @@ export async function getOverlayDatabaseMode(
);
} else if (
await isOverlayAnalysisFeatureEnabled(
repository,
features,
codeql,
languages,
codeScanningConfig,
languagesInput,
repository,
sourceRoot,
features,
logger,
)
) {
if (isAnalyzingPullRequest()) {
@@ -720,6 +797,8 @@ export async function getOverlayDatabaseMode(
}
if (
codeql !== undefined &&
languages !== undefined &&
buildMode !== BuildMode.None &&
(
await Promise.all(
@@ -734,7 +813,10 @@ export async function getOverlayDatabaseMode(
);
return nonOverlayAnalysis;
}
if (!(await codeQlVersionAtLeast(codeql, CODEQL_OVERLAY_MINIMUM_VERSION))) {
if (
codeql !== undefined &&
!(await codeQlVersionAtLeast(codeql, CODEQL_OVERLAY_MINIMUM_VERSION))
) {
logger.warning(
`Cannot build an ${overlayDatabaseMode} database because ` +
`the CodeQL CLI is older than ${CODEQL_OVERLAY_MINIMUM_VERSION}. ` +
@@ -757,6 +839,62 @@ export async function getOverlayDatabaseMode(
};
}
/**
* Get preliminary overlay database mode using only the information available
* in InitConfigInputs, without depending on CodeQL.
*
* This is a simplified version of getOverlayDatabaseMode that can be called
* before the CodeQL CLI is available.
*
* @param inputs The initialization configuration inputs.
* @returns An object containing the overlay database mode and whether the
* action should perform overlay-base database caching.
*/
export async function getPreliminaryOverlayDatabaseMode(
inputs: InitConfigInputs,
): Promise<{
overlayDatabaseMode: OverlayDatabaseMode;
useOverlayDatabaseCaching: boolean;
}> {
const userConfig = await loadUserConfig(
inputs.configFile,
inputs.workspacePath,
inputs.apiDetails,
inputs.tempDir,
inputs.logger,
);
const languages = await getUnverifiedLanguagesForOverlay(
inputs.languagesInput,
inputs.repository,
inputs.sourceRoot,
inputs.logger,
);
const augmentationProperties = await calculateAugmentation(
inputs.packsInput,
inputs.queriesInput,
inputs.repositoryProperties,
languages,
);
const computedConfig = generateCodeScanningConfig(
inputs.logger,
userConfig,
augmentationProperties,
);
return getOverlayDatabaseMode(
undefined, // codeql
inputs.repository,
inputs.features,
undefined, // languages
inputs.languagesInput,
inputs.sourceRoot,
undefined, // buildMode
computedConfig,
inputs.logger,
);
}
function dbLocationOrDefault(
dbLocation: string | undefined,
tempDir: string,
@@ -787,35 +925,20 @@ function hasQueryCustomisation(userConfig: UserConfig): boolean {
* This will parse the config from the user input if present, or generate
* a default config. The parsed config is then stored to a known location.
*/
export async function initConfig(inputs: InitConfigInputs): Promise<Config> {
export async function initConfig(
inputs: InitConfigInputs,
codeql: CodeQL,
): Promise<Config> {
const { logger, tempDir } = inputs;
// if configInput is set, it takes precedence over configFile
if (inputs.configInput) {
if (inputs.configFile) {
logger.warning(
`Both a config file and config input were provided. Ignoring config file.`,
);
}
inputs.configFile = userConfigFromActionPath(tempDir);
fs.writeFileSync(inputs.configFile, inputs.configInput);
logger.debug(`Using config from action input: ${inputs.configFile}`);
}
let userConfig: UserConfig = {};
if (!inputs.configFile) {
logger.debug("No configuration file was provided");
} else {
logger.debug(`Using configuration file: ${inputs.configFile}`);
userConfig = await loadUserConfig(
inputs.configFile,
inputs.workspacePath,
inputs.apiDetails,
tempDir,
);
}
const config = await initActionState(inputs, userConfig);
const userConfig = await loadUserConfig(
inputs.configFile,
inputs.workspacePath,
inputs.apiDetails,
tempDir,
logger,
);
const config = await initActionState(inputs, userConfig, codeql);
// If Code Quality analysis is the only enabled analysis kind, then we will initialise
// the database for Code Quality. That entails disabling the default queries and only
@@ -842,10 +965,11 @@ export async function initConfig(inputs: InitConfigInputs): Promise<Config> {
// rest of the config has been populated.
const { overlayDatabaseMode, useOverlayDatabaseCaching } =
await getOverlayDatabaseMode(
inputs.codeql,
codeql,
inputs.repository,
inputs.features,
config.languages,
inputs.languagesInput,
inputs.sourceRoot,
config.buildMode,
config.computedConfig,
@@ -860,11 +984,7 @@ export async function initConfig(inputs: InitConfigInputs): Promise<Config> {
if (
overlayDatabaseMode === OverlayDatabaseMode.Overlay ||
(await shouldPerformDiffInformedAnalysis(
inputs.codeql,
inputs.features,
logger,
))
(await shouldPerformDiffInformedAnalysis(codeql, inputs.features, logger))
) {
config.extraQueryExclusions.push({
exclude: { tags: "exclude-from-incremental" },

View File

@@ -7,7 +7,6 @@ import { getApiClient } from "./api-client";
import type { CodeQL } from "./codeql";
import * as defaults from "./defaults.json";
import { Logger } from "./logging";
import { CODEQL_OVERLAY_MINIMUM_VERSION } from "./overlay-database-utils";
import { RepositoryNwo } from "./repository";
import { ToolsFeature } from "./tools-features";
import * as util from "./util";
@@ -157,7 +156,7 @@ export const featureConfig: Record<
[Feature.OverlayAnalysis]: {
defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS",
minimumVersion: CODEQL_OVERLAY_MINIMUM_VERSION,
minimumVersion: undefined,
},
[Feature.OverlayAnalysisActions]: {
defaultValue: false,

View File

@@ -42,9 +42,10 @@ import {
runDatabaseInitCluster,
} from "./init";
import { KnownLanguage } from "./languages";
import { getActionsLogger, Logger } from "./logging";
import { getActionsLogger, Logger, withGroupAsync } from "./logging";
import {
downloadOverlayBaseDatabaseFromCache,
getCodeQLVersionFromOverlayBaseDatabase,
OverlayBaseDatabaseDownloadStats,
OverlayDatabaseMode,
} from "./overlay-database-utils";
@@ -233,9 +234,83 @@ async function run() {
if (statusReportBase !== undefined) {
await sendStatusReport(statusReportBase);
}
const inputs: configUtils.InitConfigInputs = {
analysisKindsInput: getRequiredInput("analysis-kinds"),
languagesInput: getOptionalInput("languages"),
queriesInput: getOptionalInput("queries"),
qualityQueriesInput: getOptionalInput("quality-queries"),
packsInput: getOptionalInput("packs"),
buildModeInput: getOptionalInput("build-mode"),
configFile,
dbLocation: getOptionalInput("db-location"),
configInput: getOptionalInput("config"),
trapCachingEnabled: getTrapCachingEnabled(),
dependencyCachingEnabled: getDependencyCachingEnabled(),
// Debug mode is enabled if:
// - The `init` Action is passed `debug: true`.
// - Actions step debugging is enabled (e.g. by [enabling debug logging for a rerun](https://docs.github.com/en/actions/managing-workflow-runs/re-running-workflows-and-jobs#re-running-all-the-jobs-in-a-workflow),
// or by setting the `ACTIONS_STEP_DEBUG` secret to `true`).
debugMode: getOptionalInput("debug") === "true" || core.isDebug(),
debugArtifactName:
getOptionalInput("debug-artifact-name") || DEFAULT_DEBUG_ARTIFACT_NAME,
debugDatabaseName:
getOptionalInput("debug-database-name") || DEFAULT_DEBUG_DATABASE_NAME,
repository: repositoryNwo,
tempDir: getTemporaryDirectory(),
workspacePath: getRequiredEnvParam("GITHUB_WORKSPACE"),
sourceRoot,
githubVersion: gitHubVersion,
apiDetails,
features,
repositoryProperties,
logger,
};
configUtils.amendInputConfigFile(inputs, logger);
const codeQLDefaultVersionInfo = await features.getDefaultCliVersion(
gitHubVersion.type,
);
await withGroupAsync(
"Compute CodeQL version to use for overlay analysis",
async () => {
if (getOptionalInput("tools")) {
logger.info(
"Nothing to do here because the workflow specified a tools input.",
);
return;
}
const { overlayDatabaseMode, useOverlayDatabaseCaching } =
await configUtils.getPreliminaryOverlayDatabaseMode(inputs);
if (overlayDatabaseMode !== OverlayDatabaseMode.Overlay) {
logger.info(
"Nothing to do here because we are not performing overlay analysis",
);
return;
}
if (!useOverlayDatabaseCaching) {
logger.info(
`Nothing to do here because we are not using overlay database caching`,
);
return;
}
const codeQlVersionForOverlay =
await getCodeQLVersionFromOverlayBaseDatabase(logger);
if (codeQlVersionForOverlay === undefined) {
return;
}
logger.info(
`Using CodeQL version ${codeQlVersionForOverlay} for overlay analysis.`,
);
codeQLDefaultVersionInfo.cliVersion = codeQlVersionForOverlay;
codeQLDefaultVersionInfo.tagName = `codeql-bundle-v${codeQlVersionForOverlay}`;
},
);
toolsFeatureFlagsValid = codeQLDefaultVersionInfo.toolsFeatureFlagsValid;
const initCodeQLResult = await initCodeQL(
getOptionalInput("tools"),
@@ -288,47 +363,14 @@ async function run() {
}
// Warn that `quality-queries` is deprecated if there is an argument for it.
const qualityQueriesInput = getOptionalInput("quality-queries");
if (qualityQueriesInput !== undefined) {
if (inputs.qualityQueriesInput !== undefined) {
logger.warning(
"The `quality-queries` input is deprecated and will be removed in a future version of the CodeQL Action. " +
"Use the `analysis-kinds` input to configure different analysis kinds instead.",
);
}
config = await initConfig({
analysisKindsInput: getRequiredInput("analysis-kinds"),
languagesInput: getOptionalInput("languages"),
queriesInput: getOptionalInput("queries"),
qualityQueriesInput,
packsInput: getOptionalInput("packs"),
buildModeInput: getOptionalInput("build-mode"),
configFile,
dbLocation: getOptionalInput("db-location"),
configInput: getOptionalInput("config"),
trapCachingEnabled: getTrapCachingEnabled(),
dependencyCachingEnabled: getDependencyCachingEnabled(),
// Debug mode is enabled if:
// - The `init` Action is passed `debug: true`.
// - Actions step debugging is enabled (e.g. by [enabling debug logging for a rerun](https://docs.github.com/en/actions/managing-workflow-runs/re-running-workflows-and-jobs#re-running-all-the-jobs-in-a-workflow),
// or by setting the `ACTIONS_STEP_DEBUG` secret to `true`).
debugMode: getOptionalInput("debug") === "true" || core.isDebug(),
debugArtifactName:
getOptionalInput("debug-artifact-name") || DEFAULT_DEBUG_ARTIFACT_NAME,
debugDatabaseName:
getOptionalInput("debug-database-name") || DEFAULT_DEBUG_DATABASE_NAME,
repository: repositoryNwo,
tempDir: getTemporaryDirectory(),
codeql,
workspacePath: getRequiredEnvParam("GITHUB_WORKSPACE"),
sourceRoot,
githubVersion: gitHubVersion,
apiDetails,
features,
repositoryProperties,
logger,
});
config = await initConfig(inputs, codeql);
await checkInstallPython311(config.languages, codeql);
} catch (unwrappedError) {

View File

@@ -60,9 +60,10 @@ export async function initCodeQL(
export async function initConfig(
inputs: configUtils.InitConfigInputs,
codeql: CodeQL,
): Promise<configUtils.Config> {
return await withGroupAsync("Load language configuration", async () => {
return await configUtils.initConfig(inputs);
return await configUtils.initConfig(inputs, codeql);
});
}

View File

@@ -11,6 +11,10 @@ import * as gitUtils from "./git-utils";
import { getRunnerLogger } from "./logging";
import {
downloadOverlayBaseDatabaseFromCache,
getCacheRestoreKeyPrefix,
getCacheSaveKey,
getCacheWorkflowKeyPrefix,
getCodeQLVersionFromOverlayBaseDatabase,
OverlayDatabaseMode,
writeBaseDatabaseOidsFile,
writeOverlayChangesFile,
@@ -261,3 +265,197 @@ test(
},
false,
);
test("overlay-base database cache keys remain stable", async (t) => {
const config = createTestConfig({ languages: ["python", "javascript"] });
const codeQlVersion = "2.23.0";
const commitOid = "abc123def456";
sinon.stub(apiClient, "getAutomationID").resolves("test-automation-id/");
sinon.stub(gitUtils, "getCommitOid").resolves(commitOid);
const saveKey = await getCacheSaveKey(config, codeQlVersion, "checkout-path");
const expectedSaveKey =
"codeql-overlay-base-database-1-c5666c509a2d9895-javascript_python-2.23.0-abc123def456";
t.is(
saveKey,
expectedSaveKey,
"Cache save key changed unexpectedly. " +
"This may indicate breaking changes in the cache key generation logic.",
);
const restoreKeyPrefix = await getCacheRestoreKeyPrefix(
config,
codeQlVersion,
);
const expectedRestoreKeyPrefix =
"codeql-overlay-base-database-1-c5666c509a2d9895-javascript_python-2.23.0-";
t.is(
restoreKeyPrefix,
expectedRestoreKeyPrefix,
"Cache restore key prefix changed unexpectedly. " +
"This may indicate breaking changes in the cache key generation logic.",
);
const workflowKeyPrefix = await getCacheWorkflowKeyPrefix();
const expectedWorkflowKeyPrefix =
"codeql-overlay-base-database-1-c5666c509a2d9895-";
t.is(
workflowKeyPrefix,
expectedWorkflowKeyPrefix,
"Cache workflow key prefix changed unexpectedly. " +
"This may indicate breaking changes in the cache key generation logic.",
);
t.true(
saveKey.startsWith(restoreKeyPrefix),
`Expected save key "${saveKey}" to start with restore key prefix "${restoreKeyPrefix}"`,
);
t.true(
restoreKeyPrefix.startsWith(workflowKeyPrefix),
`Expected restore key prefix "${restoreKeyPrefix}" to start with workflow key prefix "${workflowKeyPrefix}"`,
);
});
/**
* Helper function to generate a cache save key for testing.
* Sets up the necessary sinon stubs and returns the generated cache key.
*/
async function generateTestCacheKey(codeQlVersion: string): Promise<string> {
const config = createTestConfig({ languages: ["python", "javascript"] });
const commitOid = "abc123def456";
sinon.stub(apiClient, "getAutomationID").resolves("test-automation-id/");
sinon.stub(gitUtils, "getCommitOid").resolves(commitOid);
return await getCacheSaveKey(config, codeQlVersion, "checkout-path");
}
/**
* Helper function to stub getMostRecentActionsCacheEntry with a given key and creation date.
* Returns the stubbed function for cleanup if needed.
*/
function stubMostRecentActionsCacheEntry(key?: string, createdAt?: Date) {
const cacheItem =
key !== undefined || createdAt !== undefined
? {
key,
created_at: createdAt?.toISOString(),
}
: undefined;
return sinon
.stub(apiClient, "getMostRecentActionsCacheEntry")
.resolves(cacheItem);
}
test("getCodeQLVersionFromOverlayBaseDatabase returns version when cache entry is valid", async (t) => {
const logger = getRunnerLogger(true);
const cacheKey = await generateTestCacheKey("2.23.0");
stubMostRecentActionsCacheEntry(cacheKey, new Date());
const result = await getCodeQLVersionFromOverlayBaseDatabase(logger);
t.is(result, "2.23.0", "Should return the extracted CodeQL version");
});
test("getCodeQLVersionFromOverlayBaseDatabase returns undefined when no cache entries found", async (t) => {
const logger = getRunnerLogger(true);
sinon.stub(apiClient, "getAutomationID").resolves("test-automation-id/");
stubMostRecentActionsCacheEntry();
const result = await getCodeQLVersionFromOverlayBaseDatabase(logger);
t.is(
result,
undefined,
"Should return undefined when no cache entries found",
);
});
test("getCodeQLVersionFromOverlayBaseDatabase returns undefined when cache entry is too old", async (t) => {
const logger = getRunnerLogger(true);
const cacheKey = await generateTestCacheKey("2.23.0");
const oldDate = new Date();
oldDate.setDate(oldDate.getDate() - 15); // 15 days ago (older than 14 day limit)
stubMostRecentActionsCacheEntry(cacheKey, oldDate);
const result = await getCodeQLVersionFromOverlayBaseDatabase(logger);
t.is(
result,
undefined,
"Should return undefined when cache entry is too old",
);
});
test("getCodeQLVersionFromOverlayBaseDatabase returns undefined when cache key format is invalid", async (t) => {
const logger = getRunnerLogger(true);
sinon.stub(apiClient, "getAutomationID").resolves("test-automation-id/");
stubMostRecentActionsCacheEntry("invalid-key-format", new Date());
const result = await getCodeQLVersionFromOverlayBaseDatabase(logger);
t.is(
result,
undefined,
"Should return undefined when cache key format is invalid",
);
});
test("getCodeQLVersionFromOverlayBaseDatabase returns undefined when CodeQL version is invalid semver", async (t) => {
const logger = getRunnerLogger(true);
const invalidCacheKey = await generateTestCacheKey("invalid.version");
stubMostRecentActionsCacheEntry(invalidCacheKey, new Date());
const result = await getCodeQLVersionFromOverlayBaseDatabase(logger);
t.is(
result,
undefined,
"Should return undefined when CodeQL version is invalid semver",
);
});
test("getCodeQLVersionFromOverlayBaseDatabase returns undefined when CodeQL version is too old", async (t) => {
const logger = getRunnerLogger(true);
const cacheKey = await generateTestCacheKey("2.20.0"); // Older than minimum required version (2.22.4)
stubMostRecentActionsCacheEntry(cacheKey, new Date());
const result = await getCodeQLVersionFromOverlayBaseDatabase(logger);
t.is(
result,
undefined,
"Should return undefined when CodeQL version is older than minimum required version",
);
});
test("getCodeQLVersionFromOverlayBaseDatabase returns undefined when cache entry has no key", async (t) => {
const logger = getRunnerLogger(true);
sinon.stub(apiClient, "getAutomationID").resolves("test-automation-id/");
stubMostRecentActionsCacheEntry(undefined, new Date());
const result = await getCodeQLVersionFromOverlayBaseDatabase(logger);
t.is(
result,
undefined,
"Should return undefined when cache entry has no key",
);
});
test("getCodeQLVersionFromOverlayBaseDatabase returns undefined when cache entry has no created_at", async (t) => {
const logger = getRunnerLogger(true);
const cacheKey = await generateTestCacheKey("2.23.0");
stubMostRecentActionsCacheEntry(cacheKey, undefined);
const result = await getCodeQLVersionFromOverlayBaseDatabase(logger);
t.is(
result,
undefined,
"Should return undefined when cache entry has no created_at",
);
});

View File

@@ -3,9 +3,10 @@ import * as fs from "fs";
import * as path from "path";
import * as actionsCache from "@actions/cache";
import * as semver from "semver";
import { getRequiredInput, getTemporaryDirectory } from "./actions-util";
import { getAutomationID } from "./api-client";
import { getAutomationID, getMostRecentActionsCacheEntry } from "./api-client";
import { type CodeQL } from "./codeql";
import { type Config } from "./config-utils";
import { getCommitOid, getFileOidsUnderPath } from "./git-utils";
@@ -441,6 +442,64 @@ export async function downloadOverlayBaseDatabaseFromCache(
};
}
const IGNORE_DATABASES_OLDER_THAN_N_DAYS = 14;
export async function getCodeQLVersionFromOverlayBaseDatabase(
logger: Logger,
): Promise<string | undefined> {
const keyPrefix = await getCacheWorkflowKeyPrefix();
const cacheItem = await getMostRecentActionsCacheEntry(keyPrefix);
if (cacheItem?.created_at === undefined || cacheItem.key === undefined) {
logger.info("No overlay-base database cache entries found");
return undefined;
}
const cutoffTime = new Date();
cutoffTime.setDate(cutoffTime.getDate() - IGNORE_DATABASES_OLDER_THAN_N_DAYS);
const cacheCreationTime = new Date(cacheItem.created_at);
if (cacheCreationTime < cutoffTime) {
logger.info(
`Not considering overlay-base database cache entry ${cacheItem.key} ` +
`because it is too old (created at ${cacheItem.created_at})`,
);
return undefined;
}
const keyParts = cacheItem.key.split("-");
if (keyParts.length < 9) {
logger.info(
`Overlay-base database cache entry ${cacheItem.key} has invalid key format`,
);
return undefined;
}
const codeQlVersion = keyParts[keyParts.length - 2];
if (!semver.valid(codeQlVersion)) {
logger.info(
`Overlay-base database cache entry ${cacheItem.key} has invalid ` +
`CodeQL version ${codeQlVersion}`,
);
return undefined;
}
if (semver.lt(codeQlVersion, CODEQL_OVERLAY_MINIMUM_VERSION)) {
logger.info(
`Overlay-base database cache entry ${cacheItem.key} has ` +
`CodeQL version ${codeQlVersion}, which is older than the ` +
`minimum required version ${CODEQL_OVERLAY_MINIMUM_VERSION}`,
);
return undefined;
}
logger.info(
`Found overlay-base database cache entry ${cacheItem.key} ` +
`created at ${cacheItem.created_at} with CodeQL version ${codeQlVersion}`,
);
return codeQlVersion;
}
/**
* Computes the cache key for saving the overlay-base database to the GitHub
* Actions cache.
@@ -448,7 +507,7 @@ export async function downloadOverlayBaseDatabaseFromCache(
* The key consists of the restore key prefix (which does not include the
* commit SHA) and the commit SHA of the current checkout.
*/
async function getCacheSaveKey(
export async function getCacheSaveKey(
config: Config,
codeQlVersion: string,
checkoutPath: string,
@@ -475,31 +534,42 @@ async function getCacheSaveKey(
* not include the commit SHA. This allows us to restore the most recent
* compatible overlay-base database.
*/
async function getCacheRestoreKeyPrefix(
export async function getCacheRestoreKeyPrefix(
config: Config,
codeQlVersion: string,
): Promise<string> {
const languages = [...config.languages].sort().join("_");
const cacheKeyComponents = {
automationID: await getAutomationID(),
// Add more components here as needed in the future
};
const componentsHash = createCacheKeyHash(cacheKeyComponents);
const workflowPrefix = await getCacheWorkflowKeyPrefix();
// For a cached overlay-base database to be considered compatible for overlay
// analysis, all components in the cache restore key must match:
//
// CACHE_PREFIX: distinguishes overlay-base databases from other cache objects
// CACHE_VERSION: cache format version
// componentsHash: hash of additional components (see above for details)
// workflowPrefix contains components that depend only on the workflow:
// CACHE_PREFIX: distinguishes overlay-base databases from other cache objects
// CACHE_VERSION: cache format version
// componentsHash: hash of additional components (see above for details)
// languages: the languages included in the overlay-base database
// codeQlVersion: CodeQL bundle version
//
// Technically we can also include languages and codeQlVersion in the
// componentsHash, but including them explicitly in the cache key makes it
// easier to debug and understand the cache key structure.
return `${CACHE_PREFIX}-${CACHE_VERSION}-${componentsHash}-${languages}-${codeQlVersion}-`;
return `${workflowPrefix}${languages}-${codeQlVersion}-`;
}
/**
* Computes the cache key prefix that depends only on the workflow.
*
* @returns A promise that resolves to the common cache key prefix in the format
* `${CACHE_PREFIX}-${CACHE_VERSION}-${componentsHash}-`
*/
export async function getCacheWorkflowKeyPrefix(): Promise<string> {
const cacheKeyComponents = {
automationID: await getAutomationID(),
// Add more components here as needed in the future
};
const componentsHash = createCacheKeyHash(cacheKeyComponents);
return `${CACHE_PREFIX}-${CACHE_VERSION}-${componentsHash}-`;
}
/**

View File

@@ -0,0 +1,11 @@
{
"c": "cpp",
"c++": "cpp",
"c-c++": "cpp",
"c-cpp": "cpp",
"c#": "csharp",
"java-kotlin": "java",
"kotlin": "java",
"javascript-typescript": "javascript",
"typescript": "javascript"
}