summaryrefslogtreecommitdiff
path: root/utils/trace.ts
diff options
context:
space:
mode:
Diffstat (limited to 'utils/trace.ts')
-rw-r--r--utils/trace.ts21
1 files changed, 12 insertions, 9 deletions
diff --git a/utils/trace.ts b/utils/trace.ts
index 737aa60..eb4ac2f 100644
--- a/utils/trace.ts
+++ b/utils/trace.ts
@@ -78,7 +78,7 @@ export class TraceableImpl<
}
public flatMapAsync<U>(mapper: ITraceableMapper<T, L, Promise<ITraceable<U, L>>>): ITraceable<Promise<U>, L> {
- return new TraceableImpl(mapper(this).then((i) => )
+ return new TraceableImpl(mapper(this).then(({ item }) => item), this.logger);
}
public peek(peek: ITraceableMapper<T, L, void>) {
@@ -94,13 +94,15 @@ export class TraceableImpl<
static promiseify<T, L extends ITraceableLogger<L>, U>(
mapper: ITraceableMapper<T, L, U>,
): ITraceableMapper<Promise<T>, L, Promise<U>> {
- return (traceablePromise) => traceablePromise.map(
- async ({ item: promise }) => {
- const t = await promise;
- return traceablePromise.map(() => t).map(mapper).item;
- });
-// return (traceable) =>
-// traceable.item.then((item) => mapper(new TraceableImpl(item, traceable.logger)));
+ return (traceablePromise) =>
+ traceablePromise.flatMapAsync(async (t) => {
+ const item = await t.item;
+ return t.map(() => item).map(mapper);
+ }).item;
+ }
+
+ static withClassTrace<C extends Object, T, L extends ITraceableLogger<L>>(c: C): ITraceableMapper<T, L, ITraceableTuple<T>> {
+ return (t) => [t.item, () => c.constructor.name];
}
static from<T>(t: T) {
@@ -108,4 +110,5 @@ export class TraceableImpl<
}
}
-export interface Traceable<T> extends ITraceable<T, TraceableLogger>
+export interface Traceable<T, L extends ITraceableLogger<L> = TraceableLogger> extends ITraceable<T, L> {
+}