diff --git a/lib/entry-points.js b/lib/entry-points.js index 3d3dc758f..89234fdf3 100644 --- a/lib/entry-points.js +++ b/lib/entry-points.js @@ -169373,10 +169373,6 @@ var semver = __toESM(require_semver2()); var maximumVersion = "3.23"; var minimumVersion = "3.18"; -// src/errors/index.ts -var ConfigurationError = class extends Error { -}; - // src/json/index.ts function parseString(data) { return JSON.parse(data); @@ -169559,6 +169555,29 @@ function checkSchema(schema, obj, options = {}, path30 = "") { return result; } +// src/errors/index.ts +var ConfigurationError = class extends Error { +}; +var HTTPError = class extends Error { + status; + constructor(message, status) { + super(message); + this.status = status; + } +}; +function asHTTPError(arg) { + if (!isObject2(arg) || !isString(arg.message)) { + return void 0; + } + if (Number.isInteger(arg.status)) { + return new HTTPError(arg.message, arg.status); + } + if (Number.isInteger(arg.httpStatusCode)) { + return new HTTPError(arg.message, arg.httpStatusCode); + } + return void 0; +} + // src/util.ts var BASE_DATABASE_OIDS_FILE_NAME = "base-database-oids.json"; var BROKEN_VERSIONS = ["0.0.0-20211207"]; @@ -169827,25 +169846,6 @@ function initializeEnvironment(version, env = getEnv()) { env.export("CODEQL_ACTION_FEATURE_WILL_UPLOAD" /* FEATURE_WILL_UPLOAD */, "true"); env.export("CODEQL_ACTION_VERSION" /* VERSION */, version); } -var HTTPError = class extends Error { - status; - constructor(message, status) { - super(message); - this.status = status; - } -}; -function asHTTPError(arg) { - if (!isObject2(arg) || !isString(arg.message)) { - return void 0; - } - if (Number.isInteger(arg.status)) { - return new HTTPError(arg.message, arg.status); - } - if (Number.isInteger(arg.httpStatusCode)) { - return new HTTPError(arg.message, arg.httpStatusCode); - } - return void 0; -} async function codeQlVersionAtLeast(codeql, requiredVersion) { return semver.gte((await codeql.getVersion()).version, requiredVersion); } diff --git a/src/errors/index.ts b/src/errors/index.ts index 26bb63a9c..a8887c8ea 100644 --- a/src/errors/index.ts +++ b/src/errors/index.ts @@ -1,5 +1,35 @@ +import * as json from "../json"; + /** * An Error class that indicates an error that occurred due to * a misconfiguration of the action or the CodeQL CLI. */ export class ConfigurationError extends Error {} + +/** Minimal representation of errors resulting from HTTP requests. */ +export class HTTPError extends Error { + public status: number; + + constructor(message: string, status: number) { + super(message); + this.status = status; + } +} + +/** + * Tries to convert {@link arg} to a {@link HTTPError}, but returns `undefined` if + * {@link arg} is not like a {@link HTTPError}. + */ +export function asHTTPError(arg: any): HTTPError | undefined { + if (!json.isObject(arg) || !json.isString(arg.message)) { + return undefined; + } + if (Number.isInteger(arg.status)) { + return new HTTPError(arg.message, arg.status as number); + } + // See https://github.com/actions/toolkit/blob/acb230b99a46ed33a3f04a758cd68b47b9a82908/packages/tool-cache/src/tool-cache.ts#L19 + if (Number.isInteger(arg.httpStatusCode)) { + return new HTTPError(arg.message, arg.httpStatusCode as number); + } + return undefined; +} diff --git a/src/tools-download.test.ts b/src/tools-download.test.ts index 407e2ea48..fd11c1801 100644 --- a/src/tools-download.test.ts +++ b/src/tools-download.test.ts @@ -10,6 +10,7 @@ import { https } from "follow-redirects"; import nock from "nock"; import * as sinon from "sinon"; +import * as errors from "./errors"; import { getRunnerLogger } from "./logging"; import * as tar from "./tar"; import { setupTests } from "./testing-utils"; @@ -164,7 +165,7 @@ test.serial( test.serial( "downloadAndExtract handles an unknown status as a non-HTTP error", async (t) => { - const asHTTPError = sinon.spy(util, "asHTTPError"); + const asHTTPError = sinon.spy(errors, "asHTTPError"); await util.withTmpDir(async (tmpDir) => { sinon.stub(process, "platform").value("linux"); const archivePath = path.join(tmpDir, "codeql-bundle.tar.zst"); diff --git a/src/util.ts b/src/util.ts index f12059ced..bff332ba3 100644 --- a/src/util.ts +++ b/src/util.ts @@ -24,12 +24,11 @@ import { type Env, } from "./environment"; import { ConfigurationError } from "./errors"; -import * as json from "./json"; import { Language } from "./languages"; import { Logger } from "./logging"; // Re-export for backwards compatibility to avoid updating a lot of imports elsewhere. -export { ConfigurationError } from "./errors"; +export { ConfigurationError, HTTPError, asHTTPError } from "./errors"; export { getRequiredEnvParam, getOptionalEnvVar, @@ -566,29 +565,6 @@ export function initializeEnvironment(version: string, env: Env = getEnv()) { env.export(EnvVar.VERSION, version); } -export class HTTPError extends Error { - public status: number; - - constructor(message: string, status: number) { - super(message); - this.status = status; - } -} - -export function asHTTPError(arg: any): HTTPError | undefined { - if (!json.isObject(arg) || !json.isString(arg.message)) { - return undefined; - } - if (Number.isInteger(arg.status)) { - return new HTTPError(arg.message, arg.status as number); - } - // See https://github.com/actions/toolkit/blob/acb230b99a46ed33a3f04a758cd68b47b9a82908/packages/tool-cache/src/tool-cache.ts#L19 - if (Number.isInteger(arg.httpStatusCode)) { - return new HTTPError(arg.message, arg.httpStatusCode as number); - } - return undefined; -} - export async function codeQlVersionAtLeast( codeql: CodeQL, requiredVersion: string,