11import { propagation } from '@opentelemetry/api'
2- import { W3CTraceContextPropagator } from '@opentelemetry/core'
32import { Resource } from '@opentelemetry/resources'
4- import {
5- AlwaysOnSampler ,
6- ParentBasedSampler ,
7- ReadableSpan ,
8- Sampler ,
9- SpanExporter ,
10- TraceIdRatioBasedSampler ,
11- } from '@opentelemetry/sdk-trace-base'
12-
13- import { Initialiser } from './config.js'
14- import { OTLPExporter } from './exporter.js'
3+
4+ import { Initialiser , parseConfig } from './config.js'
155import { WorkerTracerProvider } from './provider.js'
16- import { isHeadSampled , isRootErrorSpan , multiTailSampler } from './sampling.js'
17- import { BatchTraceSpanProcessor } from './spanprocessor.js'
18- import {
19- Trigger ,
20- TraceConfig ,
21- ResolvedTraceConfig ,
22- ExporterConfig ,
23- ParentRatioSamplingConfig ,
24- isSpanProcessorConfig ,
25- } from './types.js'
6+ import { Trigger , TraceConfig , ResolvedTraceConfig } from './types.js'
267import { unwrap } from './wrap.js'
278import { createFetchHandler , instrumentGlobalFetch } from './instrumentation/fetch.js'
289import { instrumentGlobalCache } from './instrumentation/cache.js'
2910import { createQueueHandler } from './instrumentation/queue.js'
3011import { DOClass , instrumentDOClass } from './instrumentation/do.js'
3112import { createScheduledHandler } from './instrumentation/scheduled.js'
13+ //@ts -ignore
3214import * as versions from '../versions.json'
3315
3416type FetchHandler = ExportedHandlerFetchHandler < unknown , unknown >
@@ -70,10 +52,6 @@ const createResource = (config: ResolvedTraceConfig): Resource => {
7052 return resource . merge ( serviceResource )
7153}
7254
73- function isSpanExporter ( exporterConfig : ExporterConfig ) : exporterConfig is SpanExporter {
74- return ! ! ( exporterConfig as SpanExporter ) . export
75- }
76-
7755let initialised = false
7856function init ( config : ResolvedTraceConfig ) : void {
7957 if ( ! initialised ) {
@@ -92,67 +70,6 @@ function init(config: ResolvedTraceConfig): void {
9270 }
9371}
9472
95- function isSampler ( sampler : Sampler | ParentRatioSamplingConfig ) : sampler is Sampler {
96- return ! ! ( sampler as Sampler ) . shouldSample
97- }
98-
99- function createSampler ( conf : ParentRatioSamplingConfig ) : Sampler {
100- const ratioSampler = new TraceIdRatioBasedSampler ( conf . ratio )
101- if ( typeof conf . acceptRemote === 'boolean' && ! conf . acceptRemote ) {
102- return new ParentBasedSampler ( {
103- root : ratioSampler ,
104- remoteParentSampled : ratioSampler ,
105- remoteParentNotSampled : ratioSampler ,
106- } )
107- } else {
108- return new ParentBasedSampler ( { root : ratioSampler } )
109- }
110- }
111-
112- function parseConfig ( supplied : TraceConfig ) : ResolvedTraceConfig {
113- if ( isSpanProcessorConfig ( supplied ) ) {
114- const headSampleConf = supplied . sampling ?. headSampler
115- const headSampler = headSampleConf
116- ? isSampler ( headSampleConf )
117- ? headSampleConf
118- : createSampler ( headSampleConf )
119- : new AlwaysOnSampler ( )
120- const spanProcessors = Array . isArray ( supplied . spanProcessors ) ? supplied . spanProcessors : [ supplied . spanProcessors ]
121- if ( spanProcessors . length === 0 ) {
122- console . log (
123- 'Warning! You must either specify an exporter or your own SpanProcessor(s)/Exporter combination in the open-telemetry configuration.' ,
124- )
125- }
126- return {
127- fetch : {
128- includeTraceContext : supplied . fetch ?. includeTraceContext ?? true ,
129- } ,
130- handlers : {
131- fetch : {
132- acceptTraceContext : supplied . handlers ?. fetch ?. acceptTraceContext ?? true ,
133- } ,
134- } ,
135- postProcessor : supplied . postProcessor || ( ( spans : ReadableSpan [ ] ) => spans ) ,
136- sampling : {
137- headSampler,
138- tailSampler : supplied . sampling ?. tailSampler || multiTailSampler ( [ isHeadSampled , isRootErrorSpan ] ) ,
139- } ,
140- service : supplied . service ,
141- spanProcessors,
142- propagator : supplied . propagator || new W3CTraceContextPropagator ( ) ,
143- instrumentation : {
144- instrumentGlobalCache : supplied . instrumentation ?. instrumentGlobalCache ?? true ,
145- instrumentGlobalFetch : supplied . instrumentation ?. instrumentGlobalFetch ?? true ,
146- } ,
147- }
148- } else {
149- const exporter = isSpanExporter ( supplied . exporter ) ? supplied . exporter : new OTLPExporter ( supplied . exporter )
150- const spanProcessors = [ new BatchTraceSpanProcessor ( exporter ) ]
151- const newConfig = Object . assign ( supplied , { exporter : undefined , spanProcessors } ) as TraceConfig
152- return parseConfig ( newConfig )
153- }
154- }
155-
15673function createInitialiser ( config : ConfigurationOption ) : Initialiser {
15774 if ( typeof config === 'function' ) {
15875 return ( env , trigger ) => {
0 commit comments