summaryrefslogtreecommitdiff
path: root/u/trace/trace.ts
diff options
context:
space:
mode:
Diffstat (limited to 'u/trace/trace.ts')
-rw-r--r--u/trace/trace.ts40
1 files changed, 26 insertions, 14 deletions
diff --git a/u/trace/trace.ts b/u/trace/trace.ts
index 5d5c59b..1d3d2d8 100644
--- a/u/trace/trace.ts
+++ b/u/trace/trace.ts
@@ -1,31 +1,43 @@
-import type { Callable } from "@emprespresso/utils";
import {
+ type Callable,
type ITraceableMapper,
type ITraceableTuple,
+ LoggerImpl,
+ LogTrace,
+ type LogTraceSupplier,
TraceableImpl,
- TraceableLogger,
-} from "./mod.ts";
+} from "@emprespresso/pengueno";
-export class Traceable<T> extends TraceableImpl<T, TraceableLogger> {
+export class LogTraceable<T> extends TraceableImpl<T, LogTraceSupplier> {
static from<T>(t: T) {
- return new Traceable(t, new TraceableLogger());
+ return new LogTraceable(t, LogTrace(LoggerImpl));
}
+}
- static withFunctionTrace<F extends Callable, T>(
+export class TraceUtil {
+ static withFunctionTrace<F extends Callable, T, Trace>(
f: F,
- ): ITraceableMapper<T, TraceableLogger, ITraceableTuple<T>> {
- return (t) => [t.item, f.name];
+ ): ITraceableMapper<
+ T,
+ ITraceableTuple<T, Trace>,
+ Trace
+ > {
+ return (t) => [t.item, `[${f.name}]`];
}
- static withClassTrace<C extends object, T>(
+ static withClassTrace<C extends object, T, Trace>(
c: C,
- ): ITraceableMapper<T, TraceableLogger, ITraceableTuple<T>> {
- return (t) => [t.item, c.constructor.name];
+ ): ITraceableMapper<
+ T,
+ ITraceableTuple<T, Trace>,
+ Trace
+ > {
+ return (t) => [t.item, `[${c.constructor.name}]`];
}
- static promiseify<T, U>(
- mapper: ITraceableMapper<T, TraceableLogger, U>,
- ): ITraceableMapper<Promise<T>, TraceableLogger, Promise<U>> {
+ static promiseify<T, U, Trace>(
+ mapper: ITraceableMapper<T, U, Trace>,
+ ): ITraceableMapper<Promise<T>, Promise<U>, Trace> {
return (traceablePromise) =>
traceablePromise.flatMapAsync(async (t) =>
t.move(await t.item).map(mapper)