// logger.ts import ora from "ora"; export async function step Promise>( name: string, fn: T, ...args: any[] ): Promise { console.time(name); const spinner = ora({ text: `${name}…`, spinner: "dots" }).start(); const consoleLog = console.log; console.log = (text) => { spinner.text += "\n" + text; }; try { const result = await fn(...args); spinner.succeed(`${name} finished`); console.timeEnd(name); return result; } catch (err) { spinner.fail(`${name} failed`); console.timeEnd(name); throw err; } finally { console.log = consoleLog; } }