diff --git a/lib/analyze-action-post.js b/lib/analyze-action-post.js index 07c128229..7d0600848 100644 --- a/lib/analyze-action-post.js +++ b/lib/analyze-action-post.js @@ -26472,7 +26472,8 @@ var require_package = __commonJS({ ava: "npm run transpile && ava --serial --verbose", test: "npm run ava -- src/", "test-debug": "npm run test -- --timeout=20m", - transpile: "tsc --build --verbose" + transpile: "npm run generate:schemas && tsc --build --verbose", + "generate:schemas": "node json-schemas.mjs" }, ava: { typescript: { @@ -26538,6 +26539,7 @@ var require_package = __commonJS({ "eslint-plugin-import": "2.29.1", "eslint-plugin-no-async-foreach": "^0.1.1", glob: "^11.0.3", + "json-schema-to-typescript": "^15.0.4", nock: "^14.0.10", sinon: "^21.0.0", typescript: "^5.9.3" diff --git a/lib/analyze-action.js b/lib/analyze-action.js index 97f9f4c38..f345a31c8 100644 --- a/lib/analyze-action.js +++ b/lib/analyze-action.js @@ -32321,7 +32321,8 @@ var require_package = __commonJS({ ava: "npm run transpile && ava --serial --verbose", test: "npm run ava -- src/", "test-debug": "npm run test -- --timeout=20m", - transpile: "tsc --build --verbose" + transpile: "npm run generate:schemas && tsc --build --verbose", + "generate:schemas": "node json-schemas.mjs" }, ava: { typescript: { @@ -32387,6 +32388,7 @@ var require_package = __commonJS({ "eslint-plugin-import": "2.29.1", "eslint-plugin-no-async-foreach": "^0.1.1", glob: "^11.0.3", + "json-schema-to-typescript": "^15.0.4", nock: "^14.0.10", sinon: "^21.0.0", typescript: "^5.9.3" diff --git a/lib/autobuild-action.js b/lib/autobuild-action.js index f16cfbfe1..7d0da2ba8 100644 --- a/lib/autobuild-action.js +++ b/lib/autobuild-action.js @@ -26472,7 +26472,8 @@ var require_package = __commonJS({ ava: "npm run transpile && ava --serial --verbose", test: "npm run ava -- src/", "test-debug": "npm run test -- --timeout=20m", - transpile: "tsc --build --verbose" + transpile: "npm run generate:schemas && tsc --build --verbose", + "generate:schemas": "node json-schemas.mjs" }, ava: { typescript: { @@ -26538,6 +26539,7 @@ var require_package = __commonJS({ "eslint-plugin-import": "2.29.1", "eslint-plugin-no-async-foreach": "^0.1.1", glob: "^11.0.3", + "json-schema-to-typescript": "^15.0.4", nock: "^14.0.10", sinon: "^21.0.0", typescript: "^5.9.3" diff --git a/lib/init-action-post.js b/lib/init-action-post.js index 9c59ab324..c9753201f 100644 --- a/lib/init-action-post.js +++ b/lib/init-action-post.js @@ -32321,7 +32321,8 @@ var require_package = __commonJS({ ava: "npm run transpile && ava --serial --verbose", test: "npm run ava -- src/", "test-debug": "npm run test -- --timeout=20m", - transpile: "tsc --build --verbose" + transpile: "npm run generate:schemas && tsc --build --verbose", + "generate:schemas": "node json-schemas.mjs" }, ava: { typescript: { @@ -32387,6 +32388,7 @@ var require_package = __commonJS({ "eslint-plugin-import": "2.29.1", "eslint-plugin-no-async-foreach": "^0.1.1", glob: "^11.0.3", + "json-schema-to-typescript": "^15.0.4", nock: "^14.0.10", sinon: "^21.0.0", typescript: "^5.9.3" diff --git a/lib/init-action.js b/lib/init-action.js index 479b166ee..54f89a9a8 100644 --- a/lib/init-action.js +++ b/lib/init-action.js @@ -32321,7 +32321,8 @@ var require_package = __commonJS({ ava: "npm run transpile && ava --serial --verbose", test: "npm run ava -- src/", "test-debug": "npm run test -- --timeout=20m", - transpile: "tsc --build --verbose" + transpile: "npm run generate:schemas && tsc --build --verbose", + "generate:schemas": "node json-schemas.mjs" }, ava: { typescript: { @@ -32387,6 +32388,7 @@ var require_package = __commonJS({ "eslint-plugin-import": "2.29.1", "eslint-plugin-no-async-foreach": "^0.1.1", glob: "^11.0.3", + "json-schema-to-typescript": "^15.0.4", nock: "^14.0.10", sinon: "^21.0.0", typescript: "^5.9.3" @@ -35283,12 +35285,12 @@ var require_lib2 = __commonJS({ } }); -// src/db-config-schema.json +// schemas/db-config-schema.json var require_db_config_schema = __commonJS({ - "src/db-config-schema.json"(exports2, module2) { + "schemas/db-config-schema.json"(exports2, module2) { module2.exports = { $schema: "https://json-schema.org/draft/2020-12/schema", - title: "CodeQL Database Configuration", + title: "UserConfig", description: "Format of the config file supplied by the user for CodeQL analysis", type: "object", properties: { diff --git a/lib/resolve-environment-action.js b/lib/resolve-environment-action.js index 78e744c09..57e3ac8af 100644 --- a/lib/resolve-environment-action.js +++ b/lib/resolve-environment-action.js @@ -26472,7 +26472,8 @@ var require_package = __commonJS({ ava: "npm run transpile && ava --serial --verbose", test: "npm run ava -- src/", "test-debug": "npm run test -- --timeout=20m", - transpile: "tsc --build --verbose" + transpile: "npm run generate:schemas && tsc --build --verbose", + "generate:schemas": "node json-schemas.mjs" }, ava: { typescript: { @@ -26538,6 +26539,7 @@ var require_package = __commonJS({ "eslint-plugin-import": "2.29.1", "eslint-plugin-no-async-foreach": "^0.1.1", glob: "^11.0.3", + "json-schema-to-typescript": "^15.0.4", nock: "^14.0.10", sinon: "^21.0.0", typescript: "^5.9.3" diff --git a/lib/setup-codeql-action.js b/lib/setup-codeql-action.js index d3f6f960f..ca184875e 100644 --- a/lib/setup-codeql-action.js +++ b/lib/setup-codeql-action.js @@ -32321,7 +32321,8 @@ var require_package = __commonJS({ ava: "npm run transpile && ava --serial --verbose", test: "npm run ava -- src/", "test-debug": "npm run test -- --timeout=20m", - transpile: "tsc --build --verbose" + transpile: "npm run generate:schemas && tsc --build --verbose", + "generate:schemas": "node json-schemas.mjs" }, ava: { typescript: { @@ -32387,6 +32388,7 @@ var require_package = __commonJS({ "eslint-plugin-import": "2.29.1", "eslint-plugin-no-async-foreach": "^0.1.1", glob: "^11.0.3", + "json-schema-to-typescript": "^15.0.4", nock: "^14.0.10", sinon: "^21.0.0", typescript: "^5.9.3" diff --git a/lib/start-proxy-action-post.js b/lib/start-proxy-action-post.js index ef190f968..8126b5cf4 100644 --- a/lib/start-proxy-action-post.js +++ b/lib/start-proxy-action-post.js @@ -26472,7 +26472,8 @@ var require_package = __commonJS({ ava: "npm run transpile && ava --serial --verbose", test: "npm run ava -- src/", "test-debug": "npm run test -- --timeout=20m", - transpile: "tsc --build --verbose" + transpile: "npm run generate:schemas && tsc --build --verbose", + "generate:schemas": "node json-schemas.mjs" }, ava: { typescript: { @@ -26538,6 +26539,7 @@ var require_package = __commonJS({ "eslint-plugin-import": "2.29.1", "eslint-plugin-no-async-foreach": "^0.1.1", glob: "^11.0.3", + "json-schema-to-typescript": "^15.0.4", nock: "^14.0.10", sinon: "^21.0.0", typescript: "^5.9.3" diff --git a/lib/start-proxy-action.js b/lib/start-proxy-action.js index 6e54c4752..43cd2abd2 100644 --- a/lib/start-proxy-action.js +++ b/lib/start-proxy-action.js @@ -45008,7 +45008,8 @@ var require_package = __commonJS({ ava: "npm run transpile && ava --serial --verbose", test: "npm run ava -- src/", "test-debug": "npm run test -- --timeout=20m", - transpile: "tsc --build --verbose" + transpile: "npm run generate:schemas && tsc --build --verbose", + "generate:schemas": "node json-schemas.mjs" }, ava: { typescript: { @@ -45074,6 +45075,7 @@ var require_package = __commonJS({ "eslint-plugin-import": "2.29.1", "eslint-plugin-no-async-foreach": "^0.1.1", glob: "^11.0.3", + "json-schema-to-typescript": "^15.0.4", nock: "^14.0.10", sinon: "^21.0.0", typescript: "^5.9.3" diff --git a/lib/upload-lib.js b/lib/upload-lib.js index c14e2f503..40d4679ac 100644 --- a/lib/upload-lib.js +++ b/lib/upload-lib.js @@ -33618,7 +33618,8 @@ var require_package = __commonJS({ ava: "npm run transpile && ava --serial --verbose", test: "npm run ava -- src/", "test-debug": "npm run test -- --timeout=20m", - transpile: "tsc --build --verbose" + transpile: "npm run generate:schemas && tsc --build --verbose", + "generate:schemas": "node json-schemas.mjs" }, ava: { typescript: { @@ -33684,6 +33685,7 @@ var require_package = __commonJS({ "eslint-plugin-import": "2.29.1", "eslint-plugin-no-async-foreach": "^0.1.1", glob: "^11.0.3", + "json-schema-to-typescript": "^15.0.4", nock: "^14.0.10", sinon: "^21.0.0", typescript: "^5.9.3" diff --git a/lib/upload-sarif-action-post.js b/lib/upload-sarif-action-post.js index 53cd97492..7c522135b 100644 --- a/lib/upload-sarif-action-post.js +++ b/lib/upload-sarif-action-post.js @@ -26472,7 +26472,8 @@ var require_package = __commonJS({ ava: "npm run transpile && ava --serial --verbose", test: "npm run ava -- src/", "test-debug": "npm run test -- --timeout=20m", - transpile: "tsc --build --verbose" + transpile: "npm run generate:schemas && tsc --build --verbose", + "generate:schemas": "node json-schemas.mjs" }, ava: { typescript: { @@ -26538,6 +26539,7 @@ var require_package = __commonJS({ "eslint-plugin-import": "2.29.1", "eslint-plugin-no-async-foreach": "^0.1.1", glob: "^11.0.3", + "json-schema-to-typescript": "^15.0.4", nock: "^14.0.10", sinon: "^21.0.0", typescript: "^5.9.3" diff --git a/lib/upload-sarif-action.js b/lib/upload-sarif-action.js index c1c7025e8..a5233cc58 100644 --- a/lib/upload-sarif-action.js +++ b/lib/upload-sarif-action.js @@ -32321,7 +32321,8 @@ var require_package = __commonJS({ ava: "npm run transpile && ava --serial --verbose", test: "npm run ava -- src/", "test-debug": "npm run test -- --timeout=20m", - transpile: "tsc --build --verbose" + transpile: "npm run generate:schemas && tsc --build --verbose", + "generate:schemas": "node json-schemas.mjs" }, ava: { typescript: { @@ -32387,6 +32388,7 @@ var require_package = __commonJS({ "eslint-plugin-import": "2.29.1", "eslint-plugin-no-async-foreach": "^0.1.1", glob: "^11.0.3", + "json-schema-to-typescript": "^15.0.4", nock: "^14.0.10", sinon: "^21.0.0", typescript: "^5.9.3" diff --git a/src/config/db-config.ts b/src/config/db-config.ts index 16cda3abf..b95b042a4 100644 --- a/src/config/db-config.ts +++ b/src/config/db-config.ts @@ -4,6 +4,7 @@ import * as yaml from "js-yaml"; import * as jsonschema from "jsonschema"; import * as semver from "semver"; +import type { UserConfig as DbConfig, QuerySpec } from "../db-config-schema"; import * as errorMessages from "../error-messages"; import { RepositoryProperties, @@ -13,6 +14,8 @@ import { Language } from "../languages"; import { Logger } from "../logging"; import { cloneObject, ConfigurationError, prettyPrintPack } from "../util"; +export type { QuerySpec } from "../db-config-schema"; + export interface ExcludeQueryFilter { exclude: Record; } @@ -23,30 +26,14 @@ export interface IncludeQueryFilter { export type QueryFilter = ExcludeQueryFilter | IncludeQueryFilter; -export interface QuerySpec { - name?: string; - uses: string; -} - /** * Format of the config file supplied by the user. */ -export interface UserConfig { - name?: string; - "disable-default-queries"?: boolean; - queries?: QuerySpec[]; - "paths-ignore"?: string[]; - paths?: string[]; - - // If this is a multi-language analysis, then the packages must be split by - // language. If this is a single language analysis, then no split by - // language is necessary. - packs?: Record | string[]; - +export type UserConfig = DbConfig & { // Set of query filters to include and exclude extra queries based on // codeql query suite `include` and `exclude` properties "query-filters"?: QueryFilter[]; -} +}; /** * Represents additional configuration data from a source other than @@ -496,7 +483,7 @@ export function parseUserConfig( try { const schema = // eslint-disable-next-line @typescript-eslint/no-require-imports - require("../../src/db-config-schema.json") as jsonschema.Schema; + require("../../schemas/db-config-schema.json") as jsonschema.Schema; const doc = yaml.load(contents); diff --git a/src/db-config-schema.d.ts b/src/db-config-schema.d.ts new file mode 100644 index 000000000..efc1d1e0b --- /dev/null +++ b/src/db-config-schema.d.ts @@ -0,0 +1,53 @@ +/* This file was automatically generated by `npm run generate:schemas`. Do not edit by hand. */ + +/** + * Format of the config file supplied by the user for CodeQL analysis + */ +export interface UserConfig { + /** + * Name of the configuration + */ + name?: string; + /** + * Whether to disable default queries + */ + "disable-default-queries"?: boolean; + /** + * List of additional queries to run + */ + queries?: QuerySpec[]; + /** + * Paths to ignore during analysis + */ + "paths-ignore"?: string[]; + /** + * Paths to include in analysis + */ + paths?: string[]; + /** + * Query packs to include. Can be a simple array for single-language analysis or an object with language-specific arrays for multi-language analysis + */ + packs?: + | string[] + | { + [k: string]: string[]; + }; + /** + * Set of query filters to include and exclude extra queries based on CodeQL query suite include and exclude properties + */ + "query-filters"?: unknown[]; + [k: string]: unknown; +} +/** + * Detailed query specification object + */ +export interface QuerySpec { + /** + * Optional name for the query + */ + name?: string; + /** + * The query or query suite to use + */ + uses: string; +}