From 5da2098551dbd40676c16f35ab142315ccbd1fba Mon Sep 17 00:00:00 2001 From: Henry Mercer Date: Tue, 18 Nov 2025 15:19:18 +0000 Subject: [PATCH 1/3] Add feature flag for uploading overlay DBs to API --- lib/analyze-action-post.js | 21 +++++++++++++-------- lib/analyze-action.js | 21 +++++++++++++-------- lib/autobuild-action.js | 21 +++++++++++++-------- lib/init-action-post.js | 21 +++++++++++++-------- lib/init-action.js | 21 +++++++++++++-------- lib/resolve-environment-action.js | 21 +++++++++++++-------- lib/setup-codeql-action.js | 21 +++++++++++++-------- lib/start-proxy-action-post.js | 21 +++++++++++++-------- lib/start-proxy-action.js | 21 +++++++++++++-------- lib/upload-lib.js | 21 +++++++++++++-------- lib/upload-sarif-action-post.js | 21 +++++++++++++-------- lib/upload-sarif-action.js | 21 +++++++++++++-------- package-lock.json | 7 ------- src/feature-flags.ts | 22 ++++++++++++++-------- 14 files changed, 170 insertions(+), 111 deletions(-) diff --git a/lib/analyze-action-post.js b/lib/analyze-action-post.js index 7dde941ee0..6b3eb444f1 100644 --- a/lib/analyze-action-post.js +++ b/lib/analyze-action-post.js @@ -120074,6 +120074,11 @@ var featureConfig = { legacyApi: true, minimumVersion: void 0 }, + ["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", + minimumVersion: "2.23.0" + }, ["overlay_analysis" /* OverlayAnalysis */]: { defaultValue: false, envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", @@ -120185,21 +120190,21 @@ var featureConfig = { 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 */]: { + ["upload_overlay_db_to_api" /* UploadOverlayDbToApi */]: { defaultValue: false, - envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", - minimumVersion: "2.23.0" + envVar: "CODEQL_ACTION_UPLOAD_OVERLAY_DB_TO_API", + minimumVersion: void 0 + }, + ["use_repository_properties" /* UseRepositoryProperties */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES", + minimumVersion: void 0 }, ["validate_db_config" /* ValidateDbConfig */]: { defaultValue: false, diff --git a/lib/analyze-action.js b/lib/analyze-action.js index 242a05acac..a2fe4e0b04 100644 --- a/lib/analyze-action.js +++ b/lib/analyze-action.js @@ -88695,6 +88695,11 @@ var featureConfig = { legacyApi: true, minimumVersion: void 0 }, + ["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", + minimumVersion: "2.23.0" + }, ["overlay_analysis" /* OverlayAnalysis */]: { defaultValue: false, envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", @@ -88806,21 +88811,21 @@ var featureConfig = { 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 */]: { + ["upload_overlay_db_to_api" /* UploadOverlayDbToApi */]: { defaultValue: false, - envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", - minimumVersion: "2.23.0" + envVar: "CODEQL_ACTION_UPLOAD_OVERLAY_DB_TO_API", + minimumVersion: void 0 + }, + ["use_repository_properties" /* UseRepositoryProperties */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES", + minimumVersion: void 0 }, ["validate_db_config" /* ValidateDbConfig */]: { defaultValue: false, diff --git a/lib/autobuild-action.js b/lib/autobuild-action.js index 3049d15a26..e4ba8a19f2 100644 --- a/lib/autobuild-action.js +++ b/lib/autobuild-action.js @@ -84014,6 +84014,11 @@ var featureConfig = { legacyApi: true, minimumVersion: void 0 }, + ["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", + minimumVersion: "2.23.0" + }, ["overlay_analysis" /* OverlayAnalysis */]: { defaultValue: false, envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", @@ -84125,21 +84130,21 @@ var featureConfig = { 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 */]: { + ["upload_overlay_db_to_api" /* UploadOverlayDbToApi */]: { defaultValue: false, - envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", - minimumVersion: "2.23.0" + envVar: "CODEQL_ACTION_UPLOAD_OVERLAY_DB_TO_API", + minimumVersion: void 0 + }, + ["use_repository_properties" /* UseRepositoryProperties */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES", + minimumVersion: void 0 }, ["validate_db_config" /* ValidateDbConfig */]: { defaultValue: false, diff --git a/lib/init-action-post.js b/lib/init-action-post.js index 5dd89dcf61..112bb58540 100644 --- a/lib/init-action-post.js +++ b/lib/init-action-post.js @@ -123455,6 +123455,11 @@ var featureConfig = { legacyApi: true, minimumVersion: void 0 }, + ["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", + minimumVersion: "2.23.0" + }, ["overlay_analysis" /* OverlayAnalysis */]: { defaultValue: false, envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", @@ -123566,21 +123571,21 @@ var featureConfig = { 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 */]: { + ["upload_overlay_db_to_api" /* UploadOverlayDbToApi */]: { defaultValue: false, - envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", - minimumVersion: "2.23.0" + envVar: "CODEQL_ACTION_UPLOAD_OVERLAY_DB_TO_API", + minimumVersion: void 0 + }, + ["use_repository_properties" /* UseRepositoryProperties */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES", + minimumVersion: void 0 }, ["validate_db_config" /* ValidateDbConfig */]: { defaultValue: false, diff --git a/lib/init-action.js b/lib/init-action.js index 4d68e5c9a9..e052ffd70a 100644 --- a/lib/init-action.js +++ b/lib/init-action.js @@ -86109,6 +86109,11 @@ var featureConfig = { legacyApi: true, minimumVersion: void 0 }, + ["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", + minimumVersion: "2.23.0" + }, ["overlay_analysis" /* OverlayAnalysis */]: { defaultValue: false, envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", @@ -86220,21 +86225,21 @@ var featureConfig = { 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 */]: { + ["upload_overlay_db_to_api" /* UploadOverlayDbToApi */]: { defaultValue: false, - envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", - minimumVersion: "2.23.0" + envVar: "CODEQL_ACTION_UPLOAD_OVERLAY_DB_TO_API", + minimumVersion: void 0 + }, + ["use_repository_properties" /* UseRepositoryProperties */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES", + minimumVersion: void 0 }, ["validate_db_config" /* ValidateDbConfig */]: { defaultValue: false, diff --git a/lib/resolve-environment-action.js b/lib/resolve-environment-action.js index c3d54f6805..9db9daed49 100644 --- a/lib/resolve-environment-action.js +++ b/lib/resolve-environment-action.js @@ -84005,6 +84005,11 @@ var featureConfig = { legacyApi: true, minimumVersion: void 0 }, + ["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", + minimumVersion: "2.23.0" + }, ["overlay_analysis" /* OverlayAnalysis */]: { defaultValue: false, envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", @@ -84116,21 +84121,21 @@ var featureConfig = { 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 */]: { + ["upload_overlay_db_to_api" /* UploadOverlayDbToApi */]: { defaultValue: false, - envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", - minimumVersion: "2.23.0" + envVar: "CODEQL_ACTION_UPLOAD_OVERLAY_DB_TO_API", + minimumVersion: void 0 + }, + ["use_repository_properties" /* UseRepositoryProperties */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES", + minimumVersion: void 0 }, ["validate_db_config" /* ValidateDbConfig */]: { defaultValue: false, diff --git a/lib/setup-codeql-action.js b/lib/setup-codeql-action.js index 973e9c4318..fefd1fedb5 100644 --- a/lib/setup-codeql-action.js +++ b/lib/setup-codeql-action.js @@ -83917,6 +83917,11 @@ var featureConfig = { legacyApi: true, minimumVersion: void 0 }, + ["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", + minimumVersion: "2.23.0" + }, ["overlay_analysis" /* OverlayAnalysis */]: { defaultValue: false, envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", @@ -84028,21 +84033,21 @@ var featureConfig = { 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 */]: { + ["upload_overlay_db_to_api" /* UploadOverlayDbToApi */]: { defaultValue: false, - envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", - minimumVersion: "2.23.0" + envVar: "CODEQL_ACTION_UPLOAD_OVERLAY_DB_TO_API", + minimumVersion: void 0 + }, + ["use_repository_properties" /* UseRepositoryProperties */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES", + minimumVersion: void 0 }, ["validate_db_config" /* ValidateDbConfig */]: { defaultValue: false, diff --git a/lib/start-proxy-action-post.js b/lib/start-proxy-action-post.js index 7e34a5e95b..066ceed28b 100644 --- a/lib/start-proxy-action-post.js +++ b/lib/start-proxy-action-post.js @@ -119480,6 +119480,11 @@ var featureConfig = { legacyApi: true, minimumVersion: void 0 }, + ["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", + minimumVersion: "2.23.0" + }, ["overlay_analysis" /* OverlayAnalysis */]: { defaultValue: false, envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", @@ -119591,21 +119596,21 @@ var featureConfig = { 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 */]: { + ["upload_overlay_db_to_api" /* UploadOverlayDbToApi */]: { defaultValue: false, - envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", - minimumVersion: "2.23.0" + envVar: "CODEQL_ACTION_UPLOAD_OVERLAY_DB_TO_API", + minimumVersion: void 0 + }, + ["use_repository_properties" /* UseRepositoryProperties */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES", + minimumVersion: void 0 }, ["validate_db_config" /* ValidateDbConfig */]: { defaultValue: false, diff --git a/lib/start-proxy-action.js b/lib/start-proxy-action.js index c0869dd966..65bbb9a5ed 100644 --- a/lib/start-proxy-action.js +++ b/lib/start-proxy-action.js @@ -100033,6 +100033,11 @@ var featureConfig = { legacyApi: true, minimumVersion: void 0 }, + ["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", + minimumVersion: "2.23.0" + }, ["overlay_analysis" /* OverlayAnalysis */]: { defaultValue: false, envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", @@ -100144,21 +100149,21 @@ var featureConfig = { 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 */]: { + ["upload_overlay_db_to_api" /* UploadOverlayDbToApi */]: { defaultValue: false, - envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", - minimumVersion: "2.23.0" + envVar: "CODEQL_ACTION_UPLOAD_OVERLAY_DB_TO_API", + minimumVersion: void 0 + }, + ["use_repository_properties" /* UseRepositoryProperties */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES", + minimumVersion: void 0 }, ["validate_db_config" /* ValidateDbConfig */]: { defaultValue: false, diff --git a/lib/upload-lib.js b/lib/upload-lib.js index ea6e2ca41c..ded95017f3 100644 --- a/lib/upload-lib.js +++ b/lib/upload-lib.js @@ -87071,6 +87071,11 @@ var featureConfig = { legacyApi: true, minimumVersion: void 0 }, + ["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", + minimumVersion: "2.23.0" + }, ["overlay_analysis" /* OverlayAnalysis */]: { defaultValue: false, envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", @@ -87182,21 +87187,21 @@ var featureConfig = { 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 */]: { + ["upload_overlay_db_to_api" /* UploadOverlayDbToApi */]: { defaultValue: false, - envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", - minimumVersion: "2.23.0" + envVar: "CODEQL_ACTION_UPLOAD_OVERLAY_DB_TO_API", + minimumVersion: void 0 + }, + ["use_repository_properties" /* UseRepositoryProperties */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES", + minimumVersion: void 0 }, ["validate_db_config" /* ValidateDbConfig */]: { defaultValue: false, diff --git a/lib/upload-sarif-action-post.js b/lib/upload-sarif-action-post.js index fce0c4f795..abe7dcbd7e 100644 --- a/lib/upload-sarif-action-post.js +++ b/lib/upload-sarif-action-post.js @@ -119646,6 +119646,11 @@ var featureConfig = { legacyApi: true, minimumVersion: void 0 }, + ["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", + minimumVersion: "2.23.0" + }, ["overlay_analysis" /* OverlayAnalysis */]: { defaultValue: false, envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", @@ -119757,21 +119762,21 @@ var featureConfig = { 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 */]: { + ["upload_overlay_db_to_api" /* UploadOverlayDbToApi */]: { defaultValue: false, - envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", - minimumVersion: "2.23.0" + envVar: "CODEQL_ACTION_UPLOAD_OVERLAY_DB_TO_API", + minimumVersion: void 0 + }, + ["use_repository_properties" /* UseRepositoryProperties */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES", + minimumVersion: void 0 }, ["validate_db_config" /* ValidateDbConfig */]: { defaultValue: false, diff --git a/lib/upload-sarif-action.js b/lib/upload-sarif-action.js index 667acaa15e..5b83db2a64 100644 --- a/lib/upload-sarif-action.js +++ b/lib/upload-sarif-action.js @@ -86867,6 +86867,11 @@ var featureConfig = { legacyApi: true, minimumVersion: void 0 }, + ["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", + minimumVersion: "2.23.0" + }, ["overlay_analysis" /* OverlayAnalysis */]: { defaultValue: false, envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", @@ -86978,21 +86983,21 @@ var featureConfig = { 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 */]: { + ["upload_overlay_db_to_api" /* UploadOverlayDbToApi */]: { defaultValue: false, - envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", - minimumVersion: "2.23.0" + envVar: "CODEQL_ACTION_UPLOAD_OVERLAY_DB_TO_API", + minimumVersion: void 0 + }, + ["use_repository_properties" /* UseRepositoryProperties */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES", + minimumVersion: void 0 }, ["validate_db_config" /* ValidateDbConfig */]: { defaultValue: false, diff --git a/package-lock.json b/package-lock.json index 80ef7cb619..e7fd2894d4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1578,7 +1578,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", - "dev": true, "license": "MIT", "engines": { "node": "20 || >=22" @@ -1588,7 +1587,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", - "dev": true, "license": "MIT", "dependencies": { "@isaacs/balanced-match": "^4.0.1" @@ -6171,7 +6169,6 @@ "version": "11.1.0", "resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz", "integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==", - "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "foreground-child": "^3.3.1", @@ -6206,7 +6203,6 @@ "version": "10.1.1", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", - "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/brace-expansion": "^5.0.0" @@ -6875,7 +6871,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz", "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==", - "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" @@ -7118,7 +7113,6 @@ "version": "11.1.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.1.0.tgz", "integrity": "sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==", - "dev": true, "license": "ISC", "engines": { "node": "20 || >=22" @@ -7776,7 +7770,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", - "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^11.0.0", diff --git a/src/feature-flags.ts b/src/feature-flags.ts index 1334969795..10e2e296c3 100644 --- a/src/feature-flags.ts +++ b/src/feature-flags.ts @@ -77,6 +77,7 @@ export enum Feature { OverlayAnalysisSwift = "overlay_analysis_swift", PythonDefaultIsToNotExtractStdlib = "python_default_is_to_not_extract_stdlib", QaTelemetryEnabled = "qa_telemetry_enabled", + UploadOverlayDbToApi = "upload_overlay_db_to_api", UseRepositoryProperties = "use_repository_properties", ValidateDbConfig = "validate_db_config", } @@ -166,6 +167,11 @@ export const featureConfig: Record< legacyApi: true, minimumVersion: undefined, }, + [Feature.JavaMinimizeDependencyJars]: { + defaultValue: false, + envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", + minimumVersion: "2.23.0", + }, [Feature.OverlayAnalysis]: { defaultValue: false, envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", @@ -277,21 +283,21 @@ export const featureConfig: Record< minimumVersion: undefined, toolsFeature: ToolsFeature.PythonDefaultIsToNotExtractStdlib, }, - [Feature.UseRepositoryProperties]: { - defaultValue: false, - envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES", - minimumVersion: undefined, - }, [Feature.QaTelemetryEnabled]: { defaultValue: false, envVar: "CODEQL_ACTION_QA_TELEMETRY", legacyApi: true, minimumVersion: undefined, }, - [Feature.JavaMinimizeDependencyJars]: { + [Feature.UploadOverlayDbToApi]: { defaultValue: false, - envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", - minimumVersion: "2.23.0", + envVar: "CODEQL_ACTION_UPLOAD_OVERLAY_DB_TO_API", + minimumVersion: undefined, + }, + [Feature.UseRepositoryProperties]: { + defaultValue: false, + envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES", + minimumVersion: undefined, }, [Feature.ValidateDbConfig]: { defaultValue: false, From 31042e9879e337440768edf221e69d5e7d21a3b1 Mon Sep 17 00:00:00 2001 From: Henry Mercer Date: Tue, 18 Nov 2025 15:27:34 +0000 Subject: [PATCH 2/3] Rename function calls to make destructive operation clearer --- lib/analyze-action.js | 14 ++++++++++---- src/analyze-action.ts | 20 ++++++++++++++------ src/database-upload.test.ts | 16 ++++++++-------- src/database-upload.ts | 2 +- src/overlay-database-utils.ts | 2 +- 5 files changed, 34 insertions(+), 20 deletions(-) diff --git a/lib/analyze-action.js b/lib/analyze-action.js index a2fe4e0b04..389d3e56e2 100644 --- a/lib/analyze-action.js +++ b/lib/analyze-action.js @@ -88525,7 +88525,7 @@ function checkOverlayBaseDatabase(config, logger, warningPrefix) { } return true; } -async function uploadOverlayBaseDatabaseToCache(codeql, config, logger) { +async function cleanupAndUploadOverlayBaseDatabaseToCache(codeql, config, logger) { const overlayDatabaseMode = config.overlayDatabaseMode; if (overlayDatabaseMode !== "overlay-base" /* OverlayBase */) { logger.debug( @@ -91672,7 +91672,7 @@ async function warnIfGoInstalledAfterInit(config, logger) { // src/database-upload.ts var fs13 = __toESM(require("fs")); -async function uploadDatabases(repositoryNwo, codeql, config, apiDetails, logger) { +async function cleanupAndUploadDatabases(repositoryNwo, codeql, config, apiDetails, logger) { if (getRequiredInput("upload-database") !== "true") { logger.debug("Database upload disabled in workflow. Skipping upload."); return; @@ -94053,8 +94053,14 @@ async function run() { } else { logger.info("Not uploading results"); } - await uploadOverlayBaseDatabaseToCache(codeql, config, logger); - await uploadDatabases(repositoryNwo, codeql, config, apiDetails, logger); + await cleanupAndUploadOverlayBaseDatabaseToCache(codeql, config, logger); + await cleanupAndUploadDatabases( + repositoryNwo, + codeql, + config, + apiDetails, + logger + ); const trapCacheUploadStartTime = import_perf_hooks3.performance.now(); didUploadTrapCaches = await uploadTrapCaches(codeql, config, logger); trapCacheUploadTime = import_perf_hooks3.performance.now() - trapCacheUploadStartTime; diff --git a/src/analyze-action.ts b/src/analyze-action.ts index 3ab1dd1321..a101a0187c 100644 --- a/src/analyze-action.ts +++ b/src/analyze-action.ts @@ -25,7 +25,7 @@ import { isCodeQualityEnabled, isCodeScanningEnabled, } from "./config-utils"; -import { uploadDatabases } from "./database-upload"; +import { cleanupAndUploadDatabases } from "./database-upload"; import { DependencyCacheUploadStatusReport, uploadDependencyCaches, @@ -35,7 +35,7 @@ import { EnvVar } from "./environment"; import { Feature, Features } from "./feature-flags"; import { KnownLanguage } from "./languages"; import { getActionsLogger, Logger } from "./logging"; -import { uploadOverlayBaseDatabaseToCache } from "./overlay-database-utils"; +import { cleanupAndUploadOverlayBaseDatabaseToCache } from "./overlay-database-utils"; import { getRepositoryNwo } from "./repository"; import * as statusReport from "./status-report"; import { @@ -417,12 +417,20 @@ async function run() { } // Possibly upload the overlay-base database to actions cache. - // If databases are to be uploaded, they will first be cleaned up at the overlay level. - await uploadOverlayBaseDatabaseToCache(codeql, config, logger); + // Note: Take care with the ordering of this call since databases may be cleaned up + // at the `overlay` level. + await cleanupAndUploadOverlayBaseDatabaseToCache(codeql, config, logger); // Possibly upload the database bundles for remote queries. - // If databases are to be uploaded, they will first be cleaned up at the clear level. - await uploadDatabases(repositoryNwo, codeql, config, apiDetails, logger); + // Note: Take care with the ordering of this call since databases may be cleaned up + // at the `overlay` or `clear` level. + await cleanupAndUploadDatabases( + repositoryNwo, + codeql, + config, + apiDetails, + logger, + ); // Possibly upload the TRAP caches for later re-use const trapCacheUploadStartTime = performance.now(); diff --git a/src/database-upload.test.ts b/src/database-upload.test.ts index 6c986fb7fa..92f3d75b55 100644 --- a/src/database-upload.test.ts +++ b/src/database-upload.test.ts @@ -10,7 +10,7 @@ import { GitHubApiDetails } from "./api-client"; import * as apiClient from "./api-client"; import { createStubCodeQL } from "./codeql"; import { Config } from "./config-utils"; -import { uploadDatabases } from "./database-upload"; +import { cleanupAndUploadDatabases } from "./database-upload"; import * as gitUtils from "./git-utils"; import { KnownLanguage } from "./languages"; import { RepositoryNwo } from "./repository"; @@ -91,7 +91,7 @@ test("Abort database upload if 'upload-database' input set to false", async (t) sinon.stub(gitUtils, "isAnalyzingDefaultBranch").resolves(true); const loggedMessages = []; - await uploadDatabases( + await cleanupAndUploadDatabases( testRepoName, getCodeQL(), getTestConfig(tmpDir), @@ -121,7 +121,7 @@ test("Abort database upload if 'analysis-kinds: code-scanning' is not enabled", await mockHttpRequests(201); const loggedMessages = []; - await uploadDatabases( + await cleanupAndUploadDatabases( testRepoName, getCodeQL(), { @@ -155,7 +155,7 @@ test("Abort database upload if running against GHES", async (t) => { config.gitHubVersion = { type: GitHubVariant.GHES, version: "3.0" }; const loggedMessages = []; - await uploadDatabases( + await cleanupAndUploadDatabases( testRepoName, getCodeQL(), config, @@ -183,7 +183,7 @@ test("Abort database upload if not analyzing default branch", async (t) => { sinon.stub(gitUtils, "isAnalyzingDefaultBranch").resolves(false); const loggedMessages = []; - await uploadDatabases( + await cleanupAndUploadDatabases( testRepoName, getCodeQL(), getTestConfig(tmpDir), @@ -212,7 +212,7 @@ test("Don't crash if uploading a database fails", async (t) => { await mockHttpRequests(500); const loggedMessages = [] as LoggedMessage[]; - await uploadDatabases( + await cleanupAndUploadDatabases( testRepoName, getCodeQL(), getTestConfig(tmpDir), @@ -243,7 +243,7 @@ test("Successfully uploading a database to github.com", async (t) => { await mockHttpRequests(201); const loggedMessages = [] as LoggedMessage[]; - await uploadDatabases( + await cleanupAndUploadDatabases( testRepoName, getCodeQL(), getTestConfig(tmpDir), @@ -272,7 +272,7 @@ test("Successfully uploading a database to GHEC-DR", async (t) => { const databaseUploadSpy = await mockHttpRequests(201); const loggedMessages = [] as LoggedMessage[]; - await uploadDatabases( + await cleanupAndUploadDatabases( testRepoName, getCodeQL(), getTestConfig(tmpDir), diff --git a/src/database-upload.ts b/src/database-upload.ts index 69175178c9..7a147fbc7e 100644 --- a/src/database-upload.ts +++ b/src/database-upload.ts @@ -11,7 +11,7 @@ import { RepositoryNwo } from "./repository"; import * as util from "./util"; import { bundleDb, parseGitHubUrl } from "./util"; -export async function uploadDatabases( +export async function cleanupAndUploadDatabases( repositoryNwo: RepositoryNwo, codeql: CodeQL, config: Config, diff --git a/src/overlay-database-utils.ts b/src/overlay-database-utils.ts index ebb020ba86..5b0b4643d6 100644 --- a/src/overlay-database-utils.ts +++ b/src/overlay-database-utils.ts @@ -204,7 +204,7 @@ export function checkOverlayBaseDatabase( * @returns A promise that resolves to true if the upload was performed and * successfully completed, or false otherwise */ -export async function uploadOverlayBaseDatabaseToCache( +export async function cleanupAndUploadOverlayBaseDatabaseToCache( codeql: CodeQL, config: Config, logger: Logger, From c649c5993d1fc35396730027271e6afcc384ec39 Mon Sep 17 00:00:00 2001 From: Henry Mercer Date: Tue, 18 Nov 2025 17:38:24 +0000 Subject: [PATCH 3/3] Upload overlay base DB to API behind FF --- lib/analyze-action.js | 8 +++++--- src/analyze-action.ts | 1 + src/codeql.ts | 9 ++++++--- src/database-upload.test.ts | 8 ++++++++ src/database-upload.ts | 13 +++++++++++-- src/overlay-database-utils.ts | 3 ++- src/util.ts | 5 +++++ 7 files changed, 38 insertions(+), 9 deletions(-) diff --git a/lib/analyze-action.js b/lib/analyze-action.js index 389d3e56e2..a0fbdc19ce 100644 --- a/lib/analyze-action.js +++ b/lib/analyze-action.js @@ -88554,7 +88554,7 @@ async function cleanupAndUploadOverlayBaseDatabaseToCache(codeql, config, logger return false; } await withGroupAsync("Cleaning up databases", async () => { - await codeql.databaseCleanupCluster(config, "overlay"); + await codeql.databaseCleanupCluster(config, "overlay" /* Overlay */); }); const dbLocation = config.dbLocation; const databaseSizeBytes = await tryGetFolderBytes(dbLocation, logger); @@ -91672,7 +91672,7 @@ async function warnIfGoInstalledAfterInit(config, logger) { // src/database-upload.ts var fs13 = __toESM(require("fs")); -async function cleanupAndUploadDatabases(repositoryNwo, codeql, config, apiDetails, logger) { +async function cleanupAndUploadDatabases(repositoryNwo, codeql, config, apiDetails, features, logger) { if (getRequiredInput("upload-database") !== "true") { logger.debug("Database upload disabled in workflow. Skipping upload."); return; @@ -91695,8 +91695,9 @@ async function cleanupAndUploadDatabases(repositoryNwo, codeql, config, apiDetai logger.debug("Not analyzing default branch. Skipping upload."); return; } + const cleanupLevel = config.overlayDatabaseMode === "overlay-base" /* OverlayBase */ && await features.getValue("upload_overlay_db_to_api" /* UploadOverlayDbToApi */) ? "overlay" /* Overlay */ : "clear" /* Clear */; await withGroupAsync("Cleaning up databases", async () => { - await codeql.databaseCleanupCluster(config, "clear"); + await codeql.databaseCleanupCluster(config, cleanupLevel); }); const client = getApiClient(); const uploadsUrl = new URL(parseGitHubUrl(apiDetails.url)); @@ -94059,6 +94060,7 @@ async function run() { codeql, config, apiDetails, + features, logger ); const trapCacheUploadStartTime = import_perf_hooks3.performance.now(); diff --git a/src/analyze-action.ts b/src/analyze-action.ts index a101a0187c..abbf239724 100644 --- a/src/analyze-action.ts +++ b/src/analyze-action.ts @@ -429,6 +429,7 @@ async function run() { codeql, config, apiDetails, + features, logger, ); diff --git a/src/codeql.ts b/src/codeql.ts index bc1d00401f..fbb55dbeae 100644 --- a/src/codeql.ts +++ b/src/codeql.ts @@ -35,7 +35,7 @@ import { ToolsDownloadStatusReport } from "./tools-download"; import { ToolsFeature, isSupportedToolsFeature } from "./tools-features"; import { shouldEnableIndirectTracing } from "./tracer-config"; import * as util from "./util"; -import { BuildMode, getErrorMessage } from "./util"; +import { BuildMode, CleanupLevel, getErrorMessage } from "./util"; type Options = Array; @@ -141,7 +141,10 @@ export interface CodeQL { /** * Clean up all the databases within a database cluster. */ - databaseCleanupCluster(config: Config, cleanupLevel: string): Promise; + databaseCleanupCluster( + config: Config, + cleanupLevel: CleanupLevel, + ): Promise; /** * Run 'codeql database bundle'. */ @@ -878,7 +881,7 @@ export async function getCodeQLForCmd( }, async databaseCleanupCluster( config: Config, - cleanupLevel: string, + cleanupLevel: CleanupLevel, ): Promise { const cacheCleanupFlag = (await util.codeQlVersionAtLeast( this, diff --git a/src/database-upload.test.ts b/src/database-upload.test.ts index 92f3d75b55..e07ff1da2e 100644 --- a/src/database-upload.test.ts +++ b/src/database-upload.test.ts @@ -15,6 +15,7 @@ import * as gitUtils from "./git-utils"; import { KnownLanguage } from "./languages"; import { RepositoryNwo } from "./repository"; import { + createFeatures, createTestConfig, getRecordingLogger, LoggedMessage, @@ -96,6 +97,7 @@ test("Abort database upload if 'upload-database' input set to false", async (t) getCodeQL(), getTestConfig(tmpDir), testApiDetails, + createFeatures([]), getRecordingLogger(loggedMessages), ); t.assert( @@ -129,6 +131,7 @@ test("Abort database upload if 'analysis-kinds: code-scanning' is not enabled", analysisKinds: [AnalysisKind.CodeQuality], }, testApiDetails, + createFeatures([]), getRecordingLogger(loggedMessages), ); t.assert( @@ -160,6 +163,7 @@ test("Abort database upload if running against GHES", async (t) => { getCodeQL(), config, testApiDetails, + createFeatures([]), getRecordingLogger(loggedMessages), ); t.assert( @@ -188,6 +192,7 @@ test("Abort database upload if not analyzing default branch", async (t) => { getCodeQL(), getTestConfig(tmpDir), testApiDetails, + createFeatures([]), getRecordingLogger(loggedMessages), ); t.assert( @@ -217,6 +222,7 @@ test("Don't crash if uploading a database fails", async (t) => { getCodeQL(), getTestConfig(tmpDir), testApiDetails, + createFeatures([]), getRecordingLogger(loggedMessages), ); @@ -248,6 +254,7 @@ test("Successfully uploading a database to github.com", async (t) => { getCodeQL(), getTestConfig(tmpDir), testApiDetails, + createFeatures([]), getRecordingLogger(loggedMessages), ); t.assert( @@ -281,6 +288,7 @@ test("Successfully uploading a database to GHEC-DR", async (t) => { url: "https://tenant.ghe.com", apiURL: undefined, }, + createFeatures([]), getRecordingLogger(loggedMessages), ); t.assert( diff --git a/src/database-upload.ts b/src/database-upload.ts index 7a147fbc7e..d99df14c3d 100644 --- a/src/database-upload.ts +++ b/src/database-upload.ts @@ -5,17 +5,20 @@ import { AnalysisKind } from "./analyses"; import { getApiClient, GitHubApiDetails } from "./api-client"; import { type CodeQL } from "./codeql"; import { Config } from "./config-utils"; +import { Feature, FeatureEnablement } from "./feature-flags"; import * as gitUtils from "./git-utils"; import { Logger, withGroupAsync } from "./logging"; +import { OverlayDatabaseMode } from "./overlay-database-utils"; import { RepositoryNwo } from "./repository"; import * as util from "./util"; -import { bundleDb, parseGitHubUrl } from "./util"; +import { bundleDb, CleanupLevel, parseGitHubUrl } from "./util"; export async function cleanupAndUploadDatabases( repositoryNwo: RepositoryNwo, codeql: CodeQL, config: Config, apiDetails: GitHubApiDetails, + features: FeatureEnablement, logger: Logger, ): Promise { if (actionsUtil.getRequiredInput("upload-database") !== "true") { @@ -50,10 +53,16 @@ export async function cleanupAndUploadDatabases( return; } + const cleanupLevel = + config.overlayDatabaseMode === OverlayDatabaseMode.OverlayBase && + (await features.getValue(Feature.UploadOverlayDbToApi)) + ? CleanupLevel.Overlay + : CleanupLevel.Clear; + // Clean up the database, since intermediate results may still be written to the // database if there is high RAM pressure. await withGroupAsync("Cleaning up databases", async () => { - await codeql.databaseCleanupCluster(config, "clear"); + await codeql.databaseCleanupCluster(config, cleanupLevel); }); const client = getApiClient(); diff --git a/src/overlay-database-utils.ts b/src/overlay-database-utils.ts index 5b0b4643d6..89056cce00 100644 --- a/src/overlay-database-utils.ts +++ b/src/overlay-database-utils.ts @@ -16,6 +16,7 @@ import { type Config } from "./config-utils"; import { getCommitOid, getFileOidsUnderPath } from "./git-utils"; import { Logger, withGroupAsync } from "./logging"; import { + CleanupLevel, getErrorMessage, isInTestMode, tryGetFolderBytes, @@ -242,7 +243,7 @@ export async function cleanupAndUploadOverlayBaseDatabaseToCache( // Clean up the database using the overlay cleanup level. await withGroupAsync("Cleaning up databases", async () => { - await codeql.databaseCleanupCluster(config, "overlay"); + await codeql.databaseCleanupCluster(config, CleanupLevel.Overlay); }); const dbLocation = config.dbLocation; diff --git a/src/util.ts b/src/util.ts index f23c3be7de..546f328a9f 100644 --- a/src/util.ts +++ b/src/util.ts @@ -1314,3 +1314,8 @@ export function unsafeEntriesInvariant>( ([_, val]) => val !== undefined, ) as Array<[keyof T, Exclude]>; } + +export enum CleanupLevel { + Clear = "clear", + Overlay = "overlay", +}