ipsambeatae
Version:
Shared dependencies of Compass, the MongoDB extension for VSCode and MongoSH
18 lines (16 loc) • 420 B
text/typescript
import ora from 'ora';
export async function withProgress<
Fn extends (this: ora.Ora, ...args: any[]) => any
>(text: string, fn: Fn, ...args: Parameters<Fn>): Promise<ReturnType<Fn>> {
const spinner = ora(text).start();
try {
const result = await fn.call(spinner, ...args);
spinner.succeed();
return result;
} catch (e) {
if (spinner.isSpinning) {
spinner.fail();
}
throw e;
}
}