13 lines
411 B
TypeScript
13 lines
411 B
TypeScript
import type { ITracer, SpanOpts } from "./tracer.interface";
|
|
|
|
export function withSpan<Args extends unknown[], R>(
|
|
tracer: ITracer,
|
|
opts: SpanOpts | ((args: Args) => SpanOpts),
|
|
fn: (...args: Args) => Promise<R>,
|
|
): (...args: Args) => Promise<R> {
|
|
return (...args) => {
|
|
const resolved = typeof opts === "function" ? opts(args) : opts;
|
|
return tracer.startSpan(resolved, () => fn(...args));
|
|
};
|
|
}
|