trace-runner.ts 1.0 KB

123456789101112131415161718192021222324252627282930313233
  1. import path from 'path';
  2. const traceSync = <T>(prefix: string, fn: () => T): T => {
  3. const start = performance.now();
  4. const result = fn();
  5. const end = performance.now();
  6. console.log(`${prefix}: ${(end - start).toFixed(3)}ms`);
  7. return result;
  8. };
  9. export { traceSync };
  10. const traceAsync = async <T>(prefix: string, fn: () => Promise<T>): Promise<T> => {
  11. const start = performance.now();
  12. const result = await fn();
  13. const end = performance.now();
  14. console.log(`${prefix}: ${(end - start).toFixed(3)}ms`);
  15. return result;
  16. };
  17. export { traceAsync };
  18. const task = <T>(__filename: string, fn: () => Promise<T>, customname: string | null = null) => {
  19. const taskName = customname ?? path.basename(__filename, path.extname(__filename));
  20. return async () => {
  21. console.log(`🏃 [${taskName}] Start executing`);
  22. const start = performance.now();
  23. await fn();
  24. const end = performance.now();
  25. console.log(`✅ [${taskName}] Executed successfully: ${(end - start).toFixed(3)}ms`);
  26. return { start, end, taskName } as const;
  27. };
  28. };
  29. export { task };