UNPKG

auron

Version:

Interact with your ATProto labeler from your terminal

29 lines (23 loc) 658 B
import ora, { Ora } from "ora"; let globalSpinner: Ora | null = null; export const getGlobalSpinner = () => globalSpinner; export const withLoader = async <T>( message: string, fn: (updateMessage: (newMessage: string) => void, spinner?: Ora) => Promise<T> ): Promise<T> => { const spinner = ora(message).start(); globalSpinner = spinner; const updateMessage = (newMessage: string) => { spinner.text = newMessage; }; try { const result = await fn(updateMessage, spinner); spinner.succeed(); globalSpinner = null; return result; } catch (error) { spinner.fail(); globalSpinner = null; throw error; } };