rsnext/packages/next/build/tracer.ts
Tim Neutkens a9f1975738
Update experimental profiling (#20357)
Adds profiling for terser and css-minimizer. Will move the old profiler to this new system as well.
2020-12-21 16:02:41 +00:00

29 lines
610 B
TypeScript

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