fix(artifacts): preserve owned file failure and cancellation facts

This commit is contained in:
morluto
2026-10-22 18:01:23 +08:00
parent 46cc5ce056
commit 3a42a9e356
9 changed files with 208 additions and 115 deletions
+7 -16
View File
@@ -11,6 +11,7 @@ import { ArtifactResourceScope } from "../artifacts/ArtifactResourceScope.js";
import { ArtifactReaderFailure } from "../artifacts/ArtifactReader.js";
import {
ArtifactFileCleanupFailure,
artifactFilePrimaryFailure,
ArtifactFileCancelled,
bindArtifactFileCleanup,
artifactFileCancellationCause,
@@ -67,7 +68,6 @@ const OUTPUT_BYTES = 64 * 1024 * 1024;
const failureForPrimary = (
cause: unknown,
path: string,
signal?: AbortSignal,
field: "path" | "binary_path" = "path",
maximum = INPUT_BYTES,
): AnalysisError => {
@@ -164,23 +164,15 @@ const failureForPrimary = (
const failureFor = (
cause: unknown,
path: string,
signal?: AbortSignal,
field: "path" | "binary_path" = "path",
maximum = INPUT_BYTES,
): AnalysisError => {
const primary =
cause instanceof ArtifactFileCleanupFailure &&
cause.fileCleanupFailure.outcome.kind === "failed"
? failureForPrimary(
cause.fileCleanupFailure.outcome.cause,
path,
signal,
field,
maximum,
)
: cause instanceof ArtifactFileCleanupFailure && signal?.aborted
? new AnalysisCancelledError(OPERATION, { cause: signal.reason })
: failureForPrimary(cause, path, signal, field, maximum);
const primary = failureForPrimary(
artifactFilePrimaryFailure(cause),
path,
field,
maximum,
);
if (
cause instanceof ArtifactReaderFailure &&
cause.partialObservation !== undefined &&
@@ -511,7 +503,6 @@ export class Il2cppMetadataProvider implements Il2cppMetadataPort {
const failure = failureFor(
cause,
binaryPath,
options?.signal,
"binary_path",
BINARY_BYTES,
);