Skip to content

Commit fe6d511

Browse files
authored
fix(tracing): set tracesSampleRate when tracing enabled (#448)
After recent refactorings, the client side config was missing the tracesSampleRate default value if tracing was enabled, resulting in no tracing. Fixes #447
1 parent e4981d0 commit fe6d511

File tree

4 files changed

+53
-22
lines changed

4 files changed

+53
-22
lines changed

lib/core/options.js

Lines changed: 32 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,16 @@ function resolveLazyOptions (options, apiMethods, logger) {
8686
}
8787

8888
/**
89-
* @param {import('../../types/sentry').ResolvedModuleConfiguration} options
89+
* @param {import('../../types/sentry').ModuleConfiguration['tracing']} tracing
90+
* @param {NonNullable<import('../../types/sentry').ModuleConfiguration['config']>} config
9091
*/
91-
function resolveTracingOptions (options) {
92-
if (options.tracing) {
93-
options.tracing = merge({
92+
function resolveTracingOptions (tracing, config) {
93+
if (!tracing) {
94+
return
95+
}
96+
/** @type {NonNullable<import('../../types/sentry').TracingConfiguration>} */
97+
const tracingOptions = merge(
98+
{
9499
tracesSampleRate: 1.0,
95100
vueOptions: {
96101
tracing: true,
@@ -101,10 +106,11 @@ function resolveTracingOptions (options) {
101106
},
102107
},
103108
browserOptions: {},
104-
}, typeof options.tracing === 'boolean' ? {} : options.tracing)
105-
if (!options.config.tracesSampleRate) {
106-
options.config.tracesSampleRate = options.tracing.tracesSampleRate
107-
}
109+
},
110+
typeof tracing === 'boolean' ? {} : tracing,
111+
)
112+
if (tracingOptions && !config.tracesSampleRate) {
113+
config.tracesSampleRate = tracingOptions.tracesSampleRate
108114
}
109115
}
110116

@@ -118,11 +124,11 @@ export async function resolveClientOptions (moduleContainer, moduleOptions, logg
118124
/** @type {import('../../types/sentry').ResolvedModuleConfiguration} */
119125
const options = merge({}, moduleOptions)
120126

121-
options.clientConfig = merge({}, options.config, options.clientConfig)
127+
options.config = merge({}, options.config, options.clientConfig)
122128

123129
const apiMethods = await getApiMethods('@sentry/browser')
124130
resolveLazyOptions(options, apiMethods, logger)
125-
resolveTracingOptions(options)
131+
resolveTracingOptions(options.tracing, options.config)
126132

127133
for (const name of Object.keys(options.clientIntegrations)) {
128134
if (!PLUGGABLE_INTEGRATIONS.includes(name) && !BROWSER_INTEGRATIONS.includes(name)) {
@@ -147,7 +153,7 @@ export async function resolveClientOptions (moduleContainer, moduleOptions, logg
147153
runtimeConfigKey: options.runtimeConfigKey,
148154
config: {
149155
dsn: options.dsn,
150-
...options.clientConfig,
156+
...options.config,
151157
},
152158
lazy: options.lazy,
153159
apiMethods,
@@ -202,17 +208,12 @@ export async function resolveServerOptions (moduleContainer, moduleOptions, logg
202208
...customIntegrations,
203209
],
204210
}
205-
options.config = merge(defaultConfig, options.config, options.serverConfig)
206211

207-
const { publicRuntimeConfig } = moduleContainer.options
208-
const { runtimeConfigKey } = options
209-
if (typeof (publicRuntimeConfig) !== 'function' && runtimeConfigKey && runtimeConfigKey in publicRuntimeConfig) {
210-
merge(options.config, publicRuntimeConfig[runtimeConfigKey].config, publicRuntimeConfig[runtimeConfigKey].serverConfig)
211-
}
212+
options.config = merge(defaultConfig, options.config, options.serverConfig, getRuntimeConfig(moduleContainer, options))
212213

213214
const apiMethods = await getApiMethods('@sentry/node')
214215
resolveLazyOptions(options, apiMethods, logger)
215-
resolveTracingOptions(options)
216+
resolveTracingOptions(options.tracing, options.config)
216217

217218
return {
218219
config: options.config,
@@ -221,3 +222,16 @@ export async function resolveServerOptions (moduleContainer, moduleOptions, logg
221222
logMockCalls: options.logMockCalls, // for mocked only
222223
}
223224
}
225+
226+
/**
227+
* @param {ThisParameterType<import('@nuxt/types').Module>} moduleContainer
228+
* @param {import('../../types/sentry').ResolvedModuleConfiguration} options
229+
* @return {import('../../types/sentry').ModuleConfiguration['config']}
230+
*/
231+
function getRuntimeConfig (moduleContainer, options) {
232+
const { publicRuntimeConfig } = moduleContainer.options
233+
const { runtimeConfigKey } = options
234+
if (typeof (publicRuntimeConfig) !== 'function' && runtimeConfigKey in publicRuntimeConfig) {
235+
return merge(options.config, publicRuntimeConfig[runtimeConfigKey].config, publicRuntimeConfig[runtimeConfigKey].serverConfig)
236+
}
237+
}

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@
6363
"@nuxtjs/eslint-config-typescript": "^11.0.0",
6464
"@nuxtjs/module-test-utils": "^1.6.3",
6565
"@release-it/conventional-changelog": "^5.1.0",
66+
"@sentry/tracing": "^6.19.7",
6667
"@sentry/webpack-plugin": "^1.19.0",
6768
"@types/jest": "^29.0.3",
6869
"@types/lodash.mergewith": "^4.6.7",

types/sentry.d.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Options as WebpackOptions } from 'webpack'
2-
import { BrowserTracingOptions } from '@sentry/tracing/dist/browser/browsertracing'
2+
import { BrowserTracing } from '@sentry/tracing'
33
import { Options as SentryOptions } from '@sentry/types'
44
import { BrowserOptions } from '@sentry/browser'
55
import { SentryCliPluginOptions } from '@sentry/webpack-plugin'
@@ -43,9 +43,9 @@ export interface TracingConfiguration {
4343
tracesSampleRate?: number
4444
vueOptions?: {
4545
tracing?: boolean
46-
tracingOptions?: TracingOptions
46+
tracingOptions?: Partial<TracingOptions>
4747
}
48-
browserOptions?: BrowserTracingOptions
48+
browserOptions?: Partial<BrowserTracing['options']>
4949
}
5050

5151
export interface ModuleConfiguration {

yarn.lock

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3259,6 +3259,17 @@
32593259
lru_map "^0.3.3"
32603260
tslib "^1.9.3"
32613261

3262+
"@sentry/tracing@^6.19.7":
3263+
version "6.19.7"
3264+
resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-6.19.7.tgz#54bb99ed5705931cd33caf71da347af769f02a4c"
3265+
integrity sha512-ol4TupNnv9Zd+bZei7B6Ygnr9N3Gp1PUrNI761QSlHtPC25xXC5ssSD3GMhBgyQrcvpuRcCFHVNNM97tN5cZiA==
3266+
dependencies:
3267+
"@sentry/hub" "6.19.7"
3268+
"@sentry/minimal" "6.19.7"
3269+
"@sentry/types" "6.19.7"
3270+
"@sentry/utils" "6.19.7"
3271+
tslib "^1.9.3"
3272+
32623273
32633274
version "6.19.7"
32643275
resolved "https://registry.yarnpkg.com/@sentry/types/-/types-6.19.7.tgz#c6b337912e588083fc2896eb012526cf7cfec7c7"
@@ -14678,11 +14689,16 @@ tsconfig-paths@^3.14.1:
1467814689
minimist "^1.2.6"
1467914690
strip-bom "^3.0.0"
1468014691

14681-
tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3:
14692+
tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0:
1468214693
version "1.13.0"
1468314694
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043"
1468414695
integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==
1468514696

14697+
tslib@^1.9.3:
14698+
version "1.14.1"
14699+
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
14700+
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
14701+
1468614702
tslib@^2.0.1, tslib@^2.1.0, tslib@^2.4.0:
1468714703
version "2.4.0"
1468814704
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3"

0 commit comments

Comments
 (0)