Files
rea/src/artifacts/ArtifactOperationFailure.ts
T
morluto d7ca93cc2c fix(artifacts): name the ASAR header admission budget (#6172)
Keep the 16 MiB ASAR header/index ceiling fixed and report that budget,
the lack of a runtime override, and that source selection does not bypass
header admission.

Refs #5910

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: morluto <morluto@users.noreply.github.com>
2026-10-22 06:33:09 +08:00

54 lines
1.8 KiB
TypeScript

import type { AnalysisError } from "../domain/analysisErrorBase.js";
import {
AnalysisInputError,
AnalysisCancelledError,
AnalysisUnsupportedTargetError,
} from "../domain/analysisErrorCore.js";
import { ArtifactOperationError } from "../domain/artifactOperationError.js";
import { BinaryTargetError } from "../domain/configurationErrors.js";
import { ArtifactReaderFailure } from "./ArtifactReader.js";
import {
artifactFileCancellationCause,
bindArtifactFileCleanup,
} from "./ArtifactFileOperation.js";
/** Translate one artifact boundary failure while retaining cleanup evidence. */
export const translateArtifactFailure = (
operation: ArtifactOperationError["operation"],
cause: unknown,
): AnalysisError => {
if (cause instanceof ArtifactReaderFailure) {
const error = new ArtifactOperationError(
operation,
cause.reason,
cause.details,
cause.message,
{
cause:
cause.reason === "cancelled"
? artifactFileCancellationCause(cause)
: cause,
...(cause.cleanup === undefined ? {} : { cleanup: cause.cleanup }),
...(cause.partialObservation === undefined
? {}
: { partialObservation: cause.partialObservation }),
...(cause.admission === undefined
? {}
: { admission: cause.admission }),
},
);
bindArtifactFileCleanup(cause, error);
return error;
}
// Caller-selection, target and unsupported-target failures are already typed;
// keep their correction details instead of reducing them to an I/O failure.
if (
cause instanceof AnalysisInputError ||
cause instanceof AnalysisCancelledError ||
cause instanceof AnalysisUnsupportedTargetError ||
cause instanceof BinaryTargetError
)
return cause;
return new ArtifactOperationError(operation, "io");
};