From d9c418425b035f00c950e6a83df9470d7af80413 Mon Sep 17 00:00:00 2001 From: Elizabeth Date: Mon, 2 Jun 2025 18:07:31 -0700 Subject: Use log traceable in metric traceable --- u/trace/itrace.ts | 46 +++++++++++++++++++++++----------------------- u/trace/logger.ts | 4 ++-- u/trace/metrics.ts | 4 ++-- u/trace/trace.ts | 32 ++++++++++++++++---------------- 4 files changed, 43 insertions(+), 43 deletions(-) (limited to 'u/trace') diff --git a/u/trace/itrace.ts b/u/trace/itrace.ts index ed707c5..35164b5 100644 --- a/u/trace/itrace.ts +++ b/u/trace/itrace.ts @@ -9,29 +9,29 @@ export interface ITrace { } export type ITraceableTuple = [T, BaseTraceWith | TraceWith]; -export type ITraceableMapper> = ( +export type ITraceableMapper> = ( w: W, -) => U; +) => _T; export interface ITraceable { readonly trace: ITrace; get: Supplier; - move: (u: U) => ITraceable; - map: (mapper: ITraceableMapper) => ITraceable; - bimap: ( + move: <_T>(u: _T) => ITraceable<_T, Trace>; + map: <_T>(mapper: ITraceableMapper) => ITraceable<_T, Trace>; + bimap: <_T>( mapper: ITraceableMapper< T, - ITraceableTuple | Trace>, + ITraceableTuple<_T, Array | Trace>, Trace >, - ) => ITraceable; + ) => ITraceable<_T, Trace>; peek: (peek: ITraceableMapper) => ITraceable; - flatMap: ( - mapper: ITraceableMapper, Trace>, - ) => ITraceable; - flatMapAsync( - mapper: ITraceableMapper>, Trace>, - ): ITraceable, Trace>; + flatMap: <_T>( + mapper: ITraceableMapper, Trace>, + ) => ITraceable<_T, Trace>; + flatMapAsync<_T>( + mapper: ITraceableMapper>, Trace>, + ): ITraceable, Trace>; } export class TraceableImpl implements ITraceable { @@ -40,20 +40,20 @@ export class TraceableImpl implements ITraceable { public readonly trace: ITrace, ) {} - public map(mapper: ITraceableMapper) { + public map<_T>(mapper: ITraceableMapper) { const result = mapper(this); return new TraceableImpl(result, this.trace); } - public flatMap( - mapper: ITraceableMapper, TraceWith>, - ): ITraceable { + public flatMap<_T>( + mapper: ITraceableMapper, TraceWith>, + ): ITraceable<_T, TraceWith> { return mapper(this); } - public flatMapAsync( - mapper: ITraceableMapper>, TraceWith>, - ): ITraceable, TraceWith> { + public flatMapAsync<_T>( + mapper: ITraceableMapper>, TraceWith>, + ): ITraceable, TraceWith> { return new TraceableImpl( mapper(this).then((t) => t.get()), this.trace, @@ -65,14 +65,14 @@ export class TraceableImpl implements ITraceable { return this; } - public move(t: Tt): ITraceable { + public move<_T>(t: _T): ITraceable<_T, TraceWith> { return this.map(() => t); } - public bimap( + public bimap<_T>( mapper: ITraceableMapper< T, - ITraceableTuple | TraceWith>, + ITraceableTuple<_T, Array | TraceWith>, TraceWith >, ) { diff --git a/u/trace/logger.ts b/u/trace/logger.ts index 5890545..4f29839 100644 --- a/u/trace/logger.ts +++ b/u/trace/logger.ts @@ -95,8 +95,8 @@ export class LogTrace implements ITrace { level: Math.max(logLevelOrder.indexOf(val), acc.level), }; } - const prefix = [acc.line, val].join(" "); - return { ...acc, prefix }; + const line = [acc.line, val].join(" "); + return { ...acc, line }; }, { line: "", level: -1 }, ); diff --git a/u/trace/metrics.ts b/u/trace/metrics.ts index 69322b9..822fc38 100644 --- a/u/trace/metrics.ts +++ b/u/trace/metrics.ts @@ -8,8 +8,8 @@ import { } from "@emprespresso/pengueno"; export enum Unit { - COUNT, - MILLISECONDS, + COUNT = "COUNT", + MILLISECONDS = "MILLISECONDS", } export interface IMetric { diff --git a/u/trace/trace.ts b/u/trace/trace.ts index 03605c2..6cad5b0 100644 --- a/u/trace/trace.ts +++ b/u/trace/trace.ts @@ -1,6 +1,7 @@ import { isMetricsTraceSupplier, type ITrace, + type ITraceable, type ITraceWith, LogTrace, type LogTraceSupplier, @@ -12,16 +13,14 @@ import { export class LogTraceable extends TraceableImpl { public static LogTrace = new LogTrace(); - static from(t: T) { + static of(t: T) { return new LogTraceable(t, LogTraceable.LogTrace); } } const getEmbeddedMetricConsumer = - (logTrace: LogTrace) => (metrics: Array) => - logTrace - .addTrace("") - .trace(JSON.stringify(metrics, null, 2) + ""); + (logTrace: ITrace) => (metrics: Array) => + logTrace.trace(`${JSON.stringify(metrics, null)}`); export class EmbeddedMetricsTraceable extends TraceableImpl< T, MetricsTraceSupplier @@ -30,11 +29,8 @@ export class EmbeddedMetricsTraceable extends TraceableImpl< getEmbeddedMetricConsumer(LogTraceable.LogTrace), ); - static from(t: T) { - return new EmbeddedMetricsTraceable( - t, - EmbeddedMetricsTraceable.MetricsTrace, - ); + static of(t: T, metricsTrace = EmbeddedMetricsTraceable.MetricsTrace) { + return new EmbeddedMetricsTraceable(t, metricsTrace); } } @@ -72,12 +68,16 @@ export class LogMetricTraceable extends TraceableImpl< T, MetricsTraceSupplier | LogTraceSupplier > { - public static LogMetricTrace = new LogMetricTrace( - LogTraceable.LogTrace, - EmbeddedMetricsTraceable.MetricsTrace, - ); + static ofLogTraceable(t: ITraceable) { + const metricsTrace = new MetricsTrace(getEmbeddedMetricConsumer(t.trace)); + return new LogMetricTraceable( + t.get(), + new LogMetricTrace(t.trace, metricsTrace), + ); + } - static from(t: T) { - return new LogMetricTraceable(t, LogMetricTraceable.LogMetricTrace); + static of(t: T) { + const logTrace = LogTraceable.of(t); + return LogMetricTraceable.ofLogTraceable(logTrace); } } -- cgit v1.2.3-70-g09d2