From d51c9d74857aca3c2f172609297266968bc7f809 Mon Sep 17 00:00:00 2001 From: Elizabeth Alexander Hunt Date: Mon, 12 May 2025 09:40:12 -0700 Subject: The big refactor TM --- u/trace/util.ts | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 u/trace/util.ts (limited to 'u/trace/util.ts') diff --git a/u/trace/util.ts b/u/trace/util.ts new file mode 100644 index 0000000..302c8e4 --- /dev/null +++ b/u/trace/util.ts @@ -0,0 +1,58 @@ +import type { + Callable, + IMetric, + ITraceableMapper, + ITraceableTuple, + MetricsTraceSupplier, +} from "@emprespresso/pengueno"; + +export class TraceUtil { + static withTrace( + trace: string, + ): ITraceableMapper< + T, + ITraceableTuple>, + Trace + > { + return (t) => [t.get(), `[${trace}]`]; + } + + static withMetricTrace( + metric: IMetric, + ): ITraceableMapper< + T, + ITraceableTuple>, + Trace + > { + return (t) => [t.get(), metric as Trace]; + } + + static withFunctionTrace( + f: F, + ): ITraceableMapper< + T, + ITraceableTuple>, + Trace + > { + return TraceUtil.withTrace(f.name); + } + + static withClassTrace( + c: C, + ): ITraceableMapper< + T, + ITraceableTuple>, + Trace + > { + return TraceUtil.withTrace(c.constructor.name); + } + + static promiseify( + mapper: ITraceableMapper, + ): ITraceableMapper, Promise, Trace> { + return (traceablePromise) => + traceablePromise.flatMapAsync(async (t) => + t.move(await t.get()).map(mapper) + ).get(); + } +} -- cgit v1.2.3-70-g09d2