MCPcopy
hub / github.com/coder/mux / waitForFileEditOrAbort

Function waitForFileEditOrAbort

src/node/services/tools/file_edit_operation.ts:65–101  ·  view source on GitHub ↗
(
  operationPromise: Promise<ExecuteFileEditReturn<TMetadata>>,
  abortSignal: AbortSignal | undefined,
  canReturnAbortBeforeWrite: () => boolean
)

Source from the content-addressed store, hash-verified

63}
64
65async function waitForFileEditOrAbort<TMetadata>(
66 operationPromise: Promise<ExecuteFileEditReturn<TMetadata>>,
67 abortSignal: AbortSignal | undefined,
68 canReturnAbortBeforeWrite: () => boolean
69): Promise<ExecuteFileEditReturn<TMetadata>> {
70 const abortedResult = getAbortedFileEditResult(abortSignal);
71 if (abortedResult) {
72 return abortedResult;
73 }
74
75 if (!abortSignal) {
76 return operationPromise;
77 }
78
79 return new Promise<ExecuteFileEditReturn<TMetadata>>((resolve, reject) => {
80 const onAbort = () => {
81 if (!canReturnAbortBeforeWrite()) {
82 return;
83 }
84
85 abortSignal.removeEventListener("abort", onAbort);
86 resolve(getAbortedFileEditResult(abortSignal)!);
87 };
88
89 abortSignal.addEventListener("abort", onAbort, { once: true });
90 operationPromise.then(
91 (result) => {
92 abortSignal.removeEventListener("abort", onAbort);
93 resolve(result);
94 },
95 (error: unknown) => {
96 abortSignal.removeEventListener("abort", onAbort);
97 reject(error instanceof Error ? error : new Error(getErrorMessage(error)));
98 }
99 );
100 });
101}
102
103/**
104 * Shared execution pipeline for file edit tools.

Callers 1

executeFileEditOperationFunction · 0.85

Calls 6

getErrorMessageFunction · 0.90
getAbortedFileEditResultFunction · 0.85
rejectFunction · 0.85
removeEventListenerMethod · 0.80
resolveFunction · 0.50
addEventListenerMethod · 0.45

Tested by

no test coverage detected