import picocolors from 'picocolors'; type Formatter = (result: string) => string; export function traceSync(prefix: string, fn: () => T, timeFormatter: Formatter = picocolors.blue): T { const start = Bun.nanoseconds(); const result = fn(); const end = Bun.nanoseconds(); console.log(`${timeFormatter(`[${((end - start) / 1e6).toFixed(3)}ms]`)} ${prefix}`); return result; } // traceSync.skip = (_prefix: string, fn: () => T): T => fn(); export const traceAsync = async (prefix: string, fn: () => Promise, timeFormatter: Formatter = picocolors.blue): Promise => { const start = Bun.nanoseconds(); const result = await fn(); const end = Bun.nanoseconds(); console.log(`${timeFormatter(`[${((end - start) / 1e6).toFixed(3)}ms]`)} ${prefix}`); return result; };