1- import { type SpanProcessor } from '@opentelemetry/sdk-trace-node'
2- import type { Instrumentation } from '@opentelemetry/instrumentation'
1+ import { trace } from '@opentelemetry/api'
2+ import { SugaredTracer } from '@opentelemetry/api/experimental'
3+ import { Resource } from '@opentelemetry/resources'
4+ import { type Instrumentation , registerInstrumentations } from '@opentelemetry/instrumentation'
5+ import { W3CTraceContextPropagator } from '@opentelemetry/core'
6+ import { NodeTracerProvider , SimpleSpanProcessor , type SpanProcessor } from '@opentelemetry/sdk-trace-node'
7+
38import { GET_TRACER , SHUTDOWN_TRACERS } from '../constants.js'
9+ import { NetlifySpanExporter } from '../exporters/netlify.js'
10+ import packageJson from '../../package.json' with { type : 'json' }
11+ import process from 'node:process'
412
513export interface TracerProviderOptions {
614 serviceName : string
@@ -9,20 +17,13 @@ export interface TracerProviderOptions {
917 siteUrl : string
1018 siteId : string
1119 siteName : string
12- instrumentations ?: ( Instrumentation | Promise < Instrumentation > ) [ ]
13- spanProcessors ?: ( SpanProcessor | Promise < SpanProcessor > ) [ ]
20+ instrumentations ?: Instrumentation [ ]
21+ spanProcessors ?: SpanProcessor [ ]
1422}
1523
16- export const createTracerProvider = async ( options : TracerProviderOptions ) => {
17- const { version : nodeVersion } = await import ( 'node:process' )
18-
24+ export const createTracerProvider = ( options : TracerProviderOptions ) => {
1925 // remove the v prefix from the version to match the spec
20- const runtimeVersion = nodeVersion . slice ( 1 )
21-
22- const { W3CTraceContextPropagator } = await import ( '@opentelemetry/core' )
23- const { Resource } = await import ( '@opentelemetry/resources' )
24- const { NodeTracerProvider } = await import ( '@opentelemetry/sdk-trace-node' )
25- const { registerInstrumentations } = await import ( '@opentelemetry/instrumentation' )
26+ const runtimeVersion = process . version . slice ( 1 )
2627
2728 const resource = new Resource ( {
2829 'service.name' : options . serviceName ,
@@ -35,7 +36,7 @@ export const createTracerProvider = async (options: TracerProviderOptions) => {
3536 'netlify.site.name' : options . siteName ,
3637 } )
3738
38- const spanProcessors = await Promise . all ( options . spanProcessors ?? [ await getBaseSpanProcessor ( ) ] )
39+ const spanProcessors = options . spanProcessors ?? [ getBaseSpanProcessor ( ) ]
3940
4041 const nodeTracerProvider = new NodeTracerProvider ( {
4142 resource,
@@ -46,17 +47,13 @@ export const createTracerProvider = async (options: TracerProviderOptions) => {
4647 propagator : new W3CTraceContextPropagator ( ) ,
4748 } )
4849
49- const instrumentations = await Promise . all ( options . instrumentations ?? [ ] )
50+ const instrumentations = options . instrumentations ?? [ ]
5051
5152 registerInstrumentations ( {
5253 instrumentations,
5354 tracerProvider : nodeTracerProvider ,
5455 } )
5556
56- const { trace } = await import ( '@opentelemetry/api' )
57- const { SugaredTracer } = await import ( '@opentelemetry/api/experimental' )
58- const { default : pkg } = await import ( '../../package.json' , { with : { type : 'json' } } )
59-
6057 Object . defineProperty ( globalThis , GET_TRACER , {
6158 enumerable : false ,
6259 configurable : true ,
@@ -66,7 +63,7 @@ export const createTracerProvider = async (options: TracerProviderOptions) => {
6663 return new SugaredTracer ( trace . getTracer ( name , version ) )
6764 }
6865
69- return new SugaredTracer ( trace . getTracer ( pkg . name , pkg . version ) )
66+ return new SugaredTracer ( trace . getTracer ( packageJson . name , packageJson . version ) )
7067 } ,
7168 } )
7269
@@ -80,9 +77,6 @@ export const createTracerProvider = async (options: TracerProviderOptions) => {
8077 } )
8178}
8279
83- export const getBaseSpanProcessor = async ( ) : Promise < SpanProcessor > => {
84- const { SimpleSpanProcessor } = await import ( '@opentelemetry/sdk-trace-node' )
85- const { NetlifySpanExporter } = await import ( '../exporters/netlify.js' )
86-
80+ export const getBaseSpanProcessor = ( ) : SpanProcessor => {
8781 return new SimpleSpanProcessor ( new NetlifySpanExporter ( ) )
8882}
0 commit comments