-
Notifications
You must be signed in to change notification settings - Fork 12
/
fastify-opentelemetry.d.ts
47 lines (39 loc) · 1.43 KB
/
fastify-opentelemetry.d.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import { FastifyPluginAsync, FastifyReply, FastifyRequest } from 'fastify'
import { Context, Span, Attributes, TextMapGetter, TextMapSetter, Tracer, SpanOptions } from '@opentelemetry/api'
/**
* Object exposed as part of the "openTelemetry" object on the fastify request.
*/
type ReqInstance = {
activeSpan: Span | undefined,
context: Context,
tracer: Tracer,
inject: <Carrier> (carrier: Carrier, setter?: TextMapSetter) => void,
extract: <Carrier> (carrier: Carrier, getter?: TextMapGetter) => Context,
}
declare module 'fastify' {
interface FastifyRequest {
openTelemetry: () => ReqInstance
}
}
/**
* Options for the OpenTelemetry plugin.
*/
declare namespace fastifyOpenTelemetry {
export type OpenTelemetryReqInstance = ReqInstance
export type OpenTelemetryPluginOptions = {
exposeApi?: boolean,
formatSpanName?: (request: FastifyRequest) => string,
formatSpanAttributes?: {
request?: (request: FastifyRequest) => Attributes,
reply?: (reply: FastifyReply) => Attributes,
error?: (error: Error) => Attributes,
},
spanOptions?: SpanOptions | ((request: FastifyRequest) => SpanOptions)
wrapRoutes?: boolean | string[],
ignoreRoutes?: string[] | ((path: string, method: string) => boolean),
propagateToReply?: boolean,
}
export const fastifyOpenTelemetry: FastifyPluginAsync<OpenTelemetryPluginOptions>
export { fastifyOpenTelemetry as default }
}
export = fastifyOpenTelemetry