import path from 'path'; const traceSync = (prefix: string, fn: () => T): T => { const start = performance.now(); const result = fn(); const end = performance.now(); console.log(`${prefix}: ${(end - start).toFixed(3)}ms`); return result; }; export { traceSync }; const traceAsync = async (prefix: string, fn: () => Promise): Promise => { const start = performance.now(); const result = await fn(); const end = performance.now(); console.log(`${prefix}: ${(end - start).toFixed(3)}ms`); return result; }; export { traceAsync }; const task = (__filename: string, fn: () => Promise, customname: string | null = null) => { const taskName = customname ?? path.basename(__filename, path.extname(__filename)); return async () => { console.log(`🏃 [${taskName}] Start executing`); const start = performance.now(); await fn(); const end = performance.now(); console.log(`✅ [${taskName}] Executed successfully: ${(end - start).toFixed(3)}ms`); return { start, end, taskName } as const; }; }; export { task };