@fastify/otel
Version:
Official Fastify OpenTelemetry Instrumentation
55 lines (46 loc) • 1.73 kB
TypeScript
// types.d.ts
import type { InstrumentationConfig } from '@opentelemetry/instrumentation'
import type { Context, Span, TextMapGetter, TextMapSetter, Tracer } from '@opentelemetry/api'
import type { HTTPMethods } from 'fastify'
export type FastifyOtelHookName =
| 'onRequest'
| 'preParsing'
| 'preValidation'
| 'preHandler'
| 'preSerialization'
| 'onSend'
| 'onResponse'
| 'onError'
export interface FastifyOtelRouteConfig {
instrumentHooks?: boolean | FastifyOtelHookName[]
}
export interface FastifyOtelOptions {}
export interface FastifyOtelInstrumentationOpts extends InstrumentationConfig {
registerOnInitialization?: boolean
ignorePaths?: string | ((routeOpts: { url: string, method: HTTPMethods }) => boolean);
requestHook?: (span: import('@opentelemetry/api').Span, request: import('fastify').FastifyRequest) => void
lifecycleHook?: (span: import('@opentelemetry/api').Span, info: FastifyOtelLifecycleHookInfo) => void
recordExceptions?: boolean
instrumentHooks?: boolean | FastifyOtelHookName[]
}
export interface FastifyOtelLifecycleHookInfo {
hookName: string
request: import('fastify').FastifyRequest
handler?: string
}
interface FastifyOtelRequestInfo {
tracer: Tracer,
inject: (carrier: {}, setter?: TextMapSetter) => void;
extract: (carrier: {}, getter?: TextMapGetter) => Context
}
export interface FastifyEnabledOtelRequestContext extends FastifyOtelRequestInfo {
enabled: true,
span: Span,
context: Context,
}
export interface FastifyDisabledOtelRequestContext extends FastifyOtelRequestInfo {
enabled: false,
span: null,
context: null,
}
export type FastifyOtelRequestContext = FastifyEnabledOtelRequestContext | FastifyDisabledOtelRequestContext