@@ -7,7 +7,7 @@ import { DEFAULT_IDLE_TIMEOUT, IdleTransaction } from '../idletransaction';
77import { SpanStatus } from '../spanstatus' ;
88import { extractTraceparentData , secToMs } from '../utils' ;
99import { registerBackgroundTabDetection } from './backgroundtab' ;
10- import { DEFAULT_METRICS_INSTR_OPTIONS , MetricsInstrumentation , MetricsInstrumentationOptions } from './metrics' ;
10+ import { MetricsInstrumentation } from './metrics' ;
1111import {
1212 defaultRequestInstrumentationOptions ,
1313 instrumentOutgoingRequests ,
@@ -67,7 +67,7 @@ export interface BrowserTracingOptions extends RequestInstrumentationOptions {
6767 *
6868 * Default: undefined
6969 */
70- _metricOptions ?: Partial < MetricsInstrumentationOptions > ;
70+ _metricOptions ?: Partial < { _reportAllChanges : boolean } > ;
7171
7272 /**
7373 * beforeNavigate is called before a pageload/navigation transaction is created and allows users to modify transaction
@@ -129,18 +129,19 @@ export class BrowserTracing implements Integration {
129129
130130 private readonly _emitOptionsWarning : boolean = false ;
131131
132+ /** Store configured idle timeout so that it can be added as a tag to transactions */
133+ private _configuredIdleTimeout : BrowserTracingOptions [ 'idleTimeout' ] | undefined = undefined ;
134+
132135 public constructor ( _options ?: Partial < BrowserTracingOptions > ) {
133136 let tracingOrigins = defaultRequestInstrumentationOptions . tracingOrigins ;
134137 // NOTE: Logger doesn't work in constructors, as it's initialized after integrations instances
135- if (
136- _options &&
137- _options . tracingOrigins &&
138- Array . isArray ( _options . tracingOrigins ) &&
139- _options . tracingOrigins . length !== 0
140- ) {
141- tracingOrigins = _options . tracingOrigins ;
142- } else {
143- this . _emitOptionsWarning = true ;
138+ if ( _options ) {
139+ this . _configuredIdleTimeout = _options . idleTimeout ;
140+ if ( _options . tracingOrigins && Array . isArray ( _options . tracingOrigins ) && _options . tracingOrigins . length !== 0 ) {
141+ tracingOrigins = _options . tracingOrigins ;
142+ } else {
143+ this . _emitOptionsWarning = true ;
144+ }
144145 }
145146
146147 this . options = {
@@ -149,7 +150,8 @@ export class BrowserTracing implements Integration {
149150 tracingOrigins,
150151 } ;
151152
152- this . _metrics = new MetricsInstrumentation ( { ...DEFAULT_METRICS_INSTR_OPTIONS , ...this . options . _metricOptions } ) ;
153+ const { _metricOptions } = this . options ;
154+ this . _metrics = new MetricsInstrumentation ( _metricOptions && _metricOptions . _reportAllChanges ) ;
153155 }
154156
155157 /**
@@ -236,6 +238,8 @@ export class BrowserTracing implements Integration {
236238 adjustTransactionDuration ( secToMs ( maxTransactionDuration ) , transaction , endTimestamp ) ;
237239 } ) ;
238240
241+ idleTransaction . setTag ( 'idleTimeout' , this . _configuredIdleTimeout ) ;
242+
239243 return idleTransaction as Transaction ;
240244 }
241245}
0 commit comments