import api, { Span } from '@opentelemetry/api' export const tracer = api.trace.getTracer('next', process.env.__NEXT_VERSION) export function traceFn ReturnType>( span: Span, fn: T ): ReturnType { return tracer.withSpan(span, () => { try { return fn() } finally { span.end() } }) } export function traceAsyncFn ReturnType>( span: Span, fn: T ): Promise> { return tracer.withSpan(span, async () => { try { return await fn() } finally { span.end() } }) }