diff options
Diffstat (limited to 'utils')
-rw-r--r-- | utils/trace.ts | 21 | ||||
-rw-r--r-- | utils/validate_identifier.ts | 4 |
2 files changed, 14 insertions, 11 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> { +} diff --git a/utils/validate_identifier.ts b/utils/validate_identifier.ts index c204497..e2a1dc5 100644 --- a/utils/validate_identifier.ts +++ b/utils/validate_identifier.ts @@ -3,8 +3,8 @@ export const validateIdentifier = (token: string) => { }; export const invalidExecutionEntriesOf = ( - obj: Record<string, string>, -): Array<[string, string]> => { + obj: Record<string, unknown>, +): Array<[string, unknown]> => { return Object.entries(obj).filter((e) => !e.every((x) => typeof x === "string" && validateIdentifier(x)) ); |