Skip to content
File

Blob: src/worker/git/pack/indexer/resolve/errors.ts

typescript29 lines
1import type { Logger } from "@/worker/common/logger";
2 
3export class ResolveAbortedError extends Error {
4 readonly stage: string;
5 
6 constructor(stage: string) {
7 super(`resolve: aborted during ${stage}`);
8 this.name = "ResolveAbortedError";
9 this.stage = stage;
10 }
11}
12 
13export function isResolveAbortedError(error: unknown): error is ResolveAbortedError {
14 return (
15 error instanceof ResolveAbortedError ||
16 (error instanceof Error && error.name === "ResolveAbortedError")
17 );
18}
19 
20export function throwIfAborted(
21 signal: AbortSignal | undefined,
22 log: Logger | undefined,
23 stage: string
24): void {
25 if (!signal?.aborted) return;
26 log?.debug("resolve:aborted", { stage });
27 throw new ResolveAbortedError(stage);
28}