Skip to content

Commit c78f7ad

Browse files
authored
feat!: use static imports (#530)
* feat!: use static imports * test: update createTracerProvider references
1 parent 2d6b30a commit c78f7ad

File tree

3 files changed

+24
-32
lines changed

3 files changed

+24
-32
lines changed
Lines changed: 18 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
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+
38
import { 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

513
export 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
}

packages/otel/src/instrumentations/fetch.test.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -95,9 +95,8 @@ describe('patched fetch', () => {
9595
server.listen({ onUnhandledRequest: 'error' })
9696
})
9797

98-
beforeEach(async () => {
99-
await createTracerProvider({
100-
headers: new Headers({ 'x-nf-enable-tracing': 'true' }),
98+
beforeEach(() => {
99+
createTracerProvider({
101100
serviceName: 'test-service',
102101
serviceVersion: '1.0.0',
103102
deploymentEnvironment: 'test',
@@ -118,8 +117,7 @@ describe('patched fetch', () => {
118117
})
119118

120119
it('can GET url', async () => {
121-
await createTracerProvider({
122-
headers: new Headers({ 'x-nf-enable-tracing': 'true' }),
120+
createTracerProvider({
123121
serviceName: 'test-service',
124122
serviceVersion: '1.0.0',
125123
deploymentEnvironment: 'test',

packages/otel/src/main.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ describe('`getTracer` export', () => {
77
test('Returns undefined if tracing has not been previously activated', () => {
88
expect(getTracer()).toBeUndefined()
99
})
10-
test('Returns tracer if tracing has been previously activated', async () => {
11-
await createTracerProvider({
10+
test('Returns tracer if tracing has been previously activated', () => {
11+
createTracerProvider({
1212
serviceName: 'test-service',
1313
serviceVersion: '1.0.0',
1414
deploymentEnvironment: 'test',
@@ -25,7 +25,7 @@ describe('`shutdownTracers` export', () => {
2525
await expect(shutdownTracers()).resolves.toBeUndefined()
2626
})
2727
test('Returns undefined if tracing has been previously activated', async () => {
28-
await createTracerProvider({
28+
createTracerProvider({
2929
serviceName: 'test-service',
3030
serviceVersion: '1.0.0',
3131
deploymentEnvironment: 'test',

0 commit comments

Comments
 (0)