mirror of
https://github.com/morluto/rea.git
synced 2026-11-14 18:52:48 +00:00
refactor: remove redundant seams and preserve cleanup ownership (#10375)
* refactor: remove redundant seams and preserve cleanup ownership * fix: validate PE resource extents before budget checks
This commit is contained in:
1 parent
4b26f38d6f
commit
cdc4541ef7
369 files changed
+3847
-3662
No files matched your search
@@ -214,8 +214,11 @@ export const reconstructJavaScriptArtifact = async (
|
||||
).length,
|
||||
{ scope },
|
||||
);
|
||||
let outcome;
|
||||
let cleanupFailure: AnalysisError | undefined;
|
||||
let outcome!: Awaited<
|
||||
ReturnType<typeof analyzeAndAdoptJavaScriptArtifactFiles>
|
||||
>;
|
||||
let analysisFailure: { readonly cause: unknown } | undefined;
|
||||
let cleanupAttempt: Awaited<ReturnType<ArtifactResourceScope["release"]>>;
|
||||
try {
|
||||
outcome = await analyzeAndAdoptJavaScriptArtifactFiles(
|
||||
files,
|
||||
@@ -250,18 +253,28 @@ export const reconstructJavaScriptArtifact = async (
|
||||
preloads.paths,
|
||||
preloads.limitations,
|
||||
);
|
||||
} catch (cause: unknown) {
|
||||
analysisFailure = { cause };
|
||||
} finally {
|
||||
try {
|
||||
const cleanup = await scope.release({
|
||||
kind: "javascript-source-analysis",
|
||||
analysis: worker,
|
||||
resource: `JavaScript source analyzer for ${path}`,
|
||||
});
|
||||
if (cleanup.kind === "failed") throw cleanup.cause;
|
||||
} catch (cause: unknown) {
|
||||
if (!(cause instanceof AnalysisError)) throw cause;
|
||||
cleanupFailure = cause;
|
||||
}
|
||||
cleanupAttempt = await scope.release({
|
||||
kind: "javascript-source-analysis",
|
||||
analysis: worker,
|
||||
resource: `JavaScript source analyzer for ${path}`,
|
||||
});
|
||||
}
|
||||
if (analysisFailure !== undefined) {
|
||||
if (cleanupAttempt.kind === "failed")
|
||||
throw scope.cleanupFailure(
|
||||
{ kind: "failed", cause: analysisFailure.cause },
|
||||
[cleanupAttempt],
|
||||
);
|
||||
throw analysisFailure.cause;
|
||||
}
|
||||
let cleanupFailure: AnalysisError | undefined;
|
||||
if (cleanupAttempt.kind === "failed") {
|
||||
if (!(cleanupAttempt.cause instanceof AnalysisError))
|
||||
throw cleanupAttempt.cause;
|
||||
cleanupFailure = cleanupAttempt.cause;
|
||||
}
|
||||
const analysis = outcome.analysis;
|
||||
let interruption = outcome.interruption;
|
||||
|
||||
Reference in new issue
Block a user