@@ -7,7 +7,7 @@ import { DEFAULT_IDLE_TIMEOUT, IdleTransaction } from '../idletransaction';
7
7
import { SpanStatus } from '../spanstatus' ;
8
8
import { extractTraceparentData , secToMs } from '../utils' ;
9
9
import { registerBackgroundTabDetection } from './backgroundtab' ;
10
- import { DEFAULT_METRICS_INSTR_OPTIONS , MetricsInstrumentation , MetricsInstrumentationOptions } from './metrics' ;
10
+ import { MetricsInstrumentation } from './metrics' ;
11
11
import {
12
12
defaultRequestInstrumentationOptions ,
13
13
instrumentOutgoingRequests ,
@@ -67,7 +67,7 @@ export interface BrowserTracingOptions extends RequestInstrumentationOptions {
67
67
*
68
68
* Default: undefined
69
69
*/
70
- _metricOptions ?: Partial < MetricsInstrumentationOptions > ;
70
+ _metricOptions ?: Partial < { _reportAllChanges : boolean } > ;
71
71
72
72
/**
73
73
* 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 {
129
129
130
130
private readonly _emitOptionsWarning : boolean = false ;
131
131
132
+ /** Store configured idle timeout so that it can be added as a tag to transactions */
133
+ private _configuredIdleTimeout : BrowserTracingOptions [ 'idleTimeout' ] | undefined = undefined ;
134
+
132
135
public constructor ( _options ?: Partial < BrowserTracingOptions > ) {
133
136
let tracingOrigins = defaultRequestInstrumentationOptions . tracingOrigins ;
134
137
// 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
+ }
144
145
}
145
146
146
147
this . options = {
@@ -149,7 +150,8 @@ export class BrowserTracing implements Integration {
149
150
tracingOrigins,
150
151
} ;
151
152
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 ) ;
153
155
}
154
156
155
157
/**
@@ -236,6 +238,8 @@ export class BrowserTracing implements Integration {
236
238
adjustTransactionDuration ( secToMs ( maxTransactionDuration ) , transaction , endTimestamp ) ;
237
239
} ) ;
238
240
241
+ idleTransaction . setTag ( 'idleTimeout' , this . _configuredIdleTimeout ) ;
242
+
239
243
return idleTransaction as Transaction ;
240
244
}
241
245
}
0 commit comments