From 58be1809c46cbe517a18d86d0af52179dcc5cbf6 Mon Sep 17 00:00:00 2001 From: Elizabeth Hunt Date: Sun, 29 Jun 2025 17:31:30 -0700 Subject: Move to nodejs and also lots of significant refactoring that should've been broken up but idgaf --- u/trace/util.ts | 72 ++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 43 insertions(+), 29 deletions(-) (limited to 'u/trace/util.ts') diff --git a/u/trace/util.ts b/u/trace/util.ts index db1db63..ec67571 100644 --- a/u/trace/util.ts +++ b/u/trace/util.ts @@ -1,45 +1,59 @@ import { - ANSI, + IEither, + IMetric, + isEither, + ITraceable, + ITraceWith, + LogLevel, + ResultMetric, type Callable, - type IMetric, type ITraceableMapper, - type ITraceableTuple, - type MetricsTraceSupplier, } from '@emprespresso/pengueno'; export class TraceUtil { - static withTrace( - trace: string, - ansi?: Array, - ): ITraceableMapper>, Trace> { - if (ansi) { - return (t) => [t.get(), `${ansi.join('')}${trace}${ANSI.RESET}`]; - } - return (t) => [t.get(), trace]; + static promiseify( + mapper: ITraceableMapper, + ): ITraceableMapper, Promise, Trace> { + return (traceablePromise) => + traceablePromise.flatMapAsync(async (t) => t.move(await t.get()).map(mapper)).get(); } - static withMetricTrace( - metric: IMetric, - ): ITraceableMapper>, Trace> { - return (t) => [t.get(), metric as Trace]; + static traceResultingEither( + metric?: ResultMetric, + warnOnFailure = false, + ): ITraceableMapper, ITraceable, Trace>, Trace> { + return (t) => { + if (metric) + t.trace.trace( + t.get().fold( + (_err) => (warnOnFailure ? metric.warn : metric.failure), + (_ok) => metric.success, + ), + ); + return t.traceScope((_t) => + _t.get().fold( + (_err) => (warnOnFailure ? LogLevel.WARN : LogLevel.ERROR), + (_ok) => LogLevel.INFO, + ), + ); + }; } - static withFunctionTrace( - f: F, - ): ITraceableMapper>, Trace> { - return TraceUtil.withTrace(`fn.${f.name}`); + static withTrace>( + trace: _Trace, + ): ITraceableMapper, Trace> { + return (t) => t.traceScope(() => trace); } - static withClassTrace( - c: C, - ): ITraceableMapper>, Trace> { - return TraceUtil.withTrace(`class.${c.constructor.name}`); + static withMetricTrace(metric: IMetric): ITraceableMapper, Trace> { + return TraceUtil.withTrace(metric); } - static promiseify( - mapper: ITraceableMapper, - ): ITraceableMapper, Promise, Trace> { - return (traceablePromise) => - traceablePromise.flatMapAsync(async (t) => t.move(await t.get()).map(mapper)).get(); + static withFunctionTrace(f: F): ITraceableMapper, Trace> { + return TraceUtil.withTrace(`fn.${f.name}`); + } + + static withClassTrace(c: C): ITraceableMapper, Trace> { + return TraceUtil.withTrace(`class.${c.constructor.name}`); } } -- cgit v1.2.3-70-g09d2