@@ -112,42 +112,41 @@ function ensureTimestampInSeconds(timestamp: number): number {
112112// Note: Because of this, we currently have a circular type dependency (which we opted out of in package.json).
113113// This is not avoidable as we need `spanToJSON` in `spanUtils.ts`, which in turn is needed by `span.ts` for backwards compatibility.
114114// And `spanToJSON` needs the Span class from `span.ts` to check here.
115- export function spanToJSON ( span : Span ) : Partial < SpanJSON > {
115+ export function spanToJSON ( span : Span ) : SpanJSON {
116116 if ( spanIsSentrySpan ( span ) ) {
117117 return span . getSpanJSON ( ) ;
118118 }
119119
120- try {
121- const { spanId : span_id , traceId : trace_id } = span . spanContext ( ) ;
122-
123- // Handle a span from @opentelemetry /sdk-base-trace's `Span` class
124- if ( spanIsOpenTelemetrySdkTraceBaseSpan ( span ) ) {
125- const { attributes, startTime, name, endTime, parentSpanId, status } = span ;
126-
127- return dropUndefinedKeys ( {
128- span_id,
129- trace_id,
130- data : attributes ,
131- description : name ,
132- parent_span_id : parentSpanId ,
133- start_timestamp : spanTimeInputToSeconds ( startTime ) ,
134- // This is [0,0] by default in OTEL, in which case we want to interpret this as no end time
135- timestamp : spanTimeInputToSeconds ( endTime ) || undefined ,
136- status : getStatusMessage ( status ) ,
137- op : attributes [ SEMANTIC_ATTRIBUTE_SENTRY_OP ] ,
138- origin : attributes [ SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN ] as SpanOrigin | undefined ,
139- _metrics_summary : getMetricSummaryJsonForSpan ( span ) ,
140- } ) ;
141- }
120+ const { spanId : span_id , traceId : trace_id } = span . spanContext ( ) ;
142121
143- // Finally, at least we have `spanContext()`....
144- return {
122+ // Handle a span from @opentelemetry /sdk-base-trace's `Span` class
123+ if ( spanIsOpenTelemetrySdkTraceBaseSpan ( span ) ) {
124+ const { attributes, startTime, name, endTime, parentSpanId, status } = span ;
125+
126+ return dropUndefinedKeys ( {
145127 span_id,
146128 trace_id,
147- } ;
148- } catch {
149- return { } ;
129+ data : attributes ,
130+ description : name ,
131+ parent_span_id : parentSpanId ,
132+ start_timestamp : spanTimeInputToSeconds ( startTime ) ,
133+ // This is [0,0] by default in OTEL, in which case we want to interpret this as no end time
134+ timestamp : spanTimeInputToSeconds ( endTime ) || undefined ,
135+ status : getStatusMessage ( status ) ,
136+ op : attributes [ SEMANTIC_ATTRIBUTE_SENTRY_OP ] ,
137+ origin : attributes [ SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN ] as SpanOrigin | undefined ,
138+ _metrics_summary : getMetricSummaryJsonForSpan ( span ) ,
139+ } ) ;
150140 }
141+
142+ // Finally, at least we have `spanContext()`....
143+ // This should not actually happen in reality, but we need to handle it for type safety.
144+ return {
145+ span_id,
146+ trace_id,
147+ start_timestamp : timestampInSeconds ( ) ,
148+ data : { } ,
149+ } ;
151150}
152151
153152function spanIsOpenTelemetrySdkTraceBaseSpan ( span : Span ) : span is OpenTelemetrySdkTraceBaseSpan {
0 commit comments