From 1d66a0f58e4ebcdf4f42c9d78f82a1ab49a2cf11 Mon Sep 17 00:00:00 2001 From: Elizabeth Hunt Date: Tue, 13 May 2025 18:58:45 -0700 Subject: snapshot! --- u/trace/trace.ts | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 u/trace/trace.ts (limited to 'u/trace/trace.ts') diff --git a/u/trace/trace.ts b/u/trace/trace.ts new file mode 100644 index 0000000..5d5c59b --- /dev/null +++ b/u/trace/trace.ts @@ -0,0 +1,34 @@ +import type { Callable } from "@emprespresso/utils"; +import { + type ITraceableMapper, + type ITraceableTuple, + TraceableImpl, + TraceableLogger, +} from "./mod.ts"; + +export class Traceable extends TraceableImpl { + static from(t: T) { + return new Traceable(t, new TraceableLogger()); + } + + static withFunctionTrace( + f: F, + ): ITraceableMapper> { + return (t) => [t.item, f.name]; + } + + static withClassTrace( + c: C, + ): ITraceableMapper> { + return (t) => [t.item, c.constructor.name]; + } + + static promiseify( + mapper: ITraceableMapper, + ): ITraceableMapper, TraceableLogger, Promise> { + return (traceablePromise) => + traceablePromise.flatMapAsync(async (t) => + t.move(await t.item).map(mapper) + ).item; + } +} -- cgit v1.2.3-70-g09d2