diff --git a/js/doTimed.ts b/js/doTimed.ts index 812ddb9..1e5d123 100644 --- a/js/doTimed.ts +++ b/js/doTimed.ts @@ -4,23 +4,44 @@ import { v7 } from 'uuid'; export const InvisibleCodec = baseCodecFrom(InvisibleDictionary); export function doTimed(message: string, callback: () => T): T { - const hiddenId = InvisibleCodec.encode(v7()); - console.time(message + hiddenId); - try { - const output = callback(); - return output; - } finally { - console.timeEnd(message + hiddenId); + if (import.meta.env.DEV) { + const hiddenId = InvisibleCodec.encode(v7()); + console.time(message + hiddenId); + try { + const output = callback(); + return output; + } finally { + console.timeEnd(message + hiddenId); + } + } else { + return callback(); } } -export async function doTimedAsync(message: string, callback: () => T): Promise> { - const hiddenId = InvisibleCodec.encode(v7()); - console.time(message + hiddenId); - try { - const output = await callback(); - return output; - } finally { - console.timeEnd(message + hiddenId); +export function doTimedAsync ? Promise : T>( + message: string, + callback: () => R, + throwError: boolean = false +): R { + if (import.meta.env.DEV) { + return new Promise(async (resolve, reject) => { + const hiddenId = InvisibleCodec.encode(v7()); + console.time(message + hiddenId); + try { + const output = await callback(); + resolve(output); + } catch (err) { + console.error(`Error in timed operation "${message}":`, err); + if (throwError) { + reject(err); + } else { + resolve(undefined as R); + } + } finally { + console.timeEnd(message + hiddenId); + } + }) as R; + } else { + return callback() as R; } }