MCPcopy Create free account
hub / github.com/cloudconvert/cloudconvert-cli / waitForCompletion

Function waitForCompletion

src/job.ts:152–212  ·  view source on GitHub ↗
(
  jobId: string,
  argv: CliArguments,
  spinner: Spinner,
  logger: Logger,
  downloadFile: typeof downloadExportFile,
  cancellationSignal?: AbortSignal
)

Source from the content-addressed store, hash-verified

150}
151
152async function waitForCompletion(
153 jobId: string,
154 argv: CliArguments,
155 spinner: Spinner,
156 logger: Logger,
157 downloadFile: typeof downloadExportFile,
158 cancellationSignal?: AbortSignal
159): Promise<Job> {
160 const cloudconvert = argv.cloudconvert;
161
162 return await new Promise<Job>((resolve, reject) => {
163 let settled = false;
164 const isSettled = (): boolean => settled;
165 const isCancelled = (): boolean => cancellationSignal?.aborted ?? false;
166
167 const stopWaiting = (): void => {
168 if (settled) {
169 return;
170 }
171
172 settled = true;
173 stopPolling();
174 cancellationSignal?.removeEventListener('abort', stopWaiting);
175 };
176
177 const finishJob = (finishedJob: Job): void => {
178 if (isSettled() || isCancelled()) {
179 return;
180 }
181
182 stopWaiting();
183 void finishCompletedJob(finishedJob, argv, spinner, logger, downloadFile).then(resolve, reject);
184 };
185
186 const failJob = (failedJob?: Job): void => {
187 if (isSettled() || isCancelled()) {
188 return;
189 }
190
191 stopWaiting();
192 closeCloudConvertSocket(cloudconvert);
193 if (failedJob) {
194 printFailedTaskMessages(failedJob.tasks, logger);
195 printCommandTaskOutputs(failedJob.tasks, logger);
196 }
197 spinner.fail('Job failed!');
198 reject(new Error('Job failed!'));
199 };
200
201 const callbacks: JobCompletionCallbacks = {
202 isSettled,
203 isCancelled,
204 finishJob,
205 failJob
206 };
207 const stopPolling = startJobStatusPolling(jobId, cloudconvert, logger, callbacks);
208
209 cancellationSignal?.addEventListener('abort', stopWaiting, { once: true });

Callers 1

runJobFunction · 0.85

Calls 2

startJobStatusPollingFunction · 0.85
subscribeToJobEventsFunction · 0.85

Tested by

no test coverage detected