diff --git a/packages/vue/src/constants.ts b/packages/vue/src/constants.ts new file mode 100644 index 000000000000..13c9d7af9c83 --- /dev/null +++ b/packages/vue/src/constants.ts @@ -0,0 +1,3 @@ +import { Operation } from './types'; + +export const DEFAULT_HOOKS: Operation[] = ['activate', 'mount', 'update']; diff --git a/packages/vue/src/sdk.ts b/packages/vue/src/sdk.ts index 27032e497d9b..ee2e05b13e7e 100644 --- a/packages/vue/src/sdk.ts +++ b/packages/vue/src/sdk.ts @@ -1,6 +1,7 @@ import { init as browserInit, SDK_VERSION } from '@sentry/browser'; import { getGlobalObject, logger } from '@sentry/utils'; +import { DEFAULT_HOOKS } from './constants'; import { attachErrorHandler } from './errorhandler'; import { createTracingMixins } from './tracing'; import { Options, TracingOptions, Vue } from './types'; @@ -9,7 +10,7 @@ const DEFAULT_CONFIG: Options = { Vue: getGlobalObject<{ Vue: Vue }>().Vue, attachProps: true, logErrors: false, - hooks: ['activate', 'mount', 'update'], + hooks: DEFAULT_HOOKS, timeout: 2000, trackComponents: false, _metadata: { diff --git a/packages/vue/src/tracing.ts b/packages/vue/src/tracing.ts index 9df55ddbc997..192556fbd5bf 100644 --- a/packages/vue/src/tracing.ts +++ b/packages/vue/src/tracing.ts @@ -3,6 +3,7 @@ import { Span, Transaction } from '@sentry/types'; import { logger, timestampInSeconds } from '@sentry/utils'; import { formatComponentName } from './components'; +import { DEFAULT_HOOKS } from './constants'; import { Hook, Operation, TracingOptions, ViewModel, Vue } from './types'; type Mixins = Parameters[0]; @@ -47,7 +48,10 @@ function finishRootSpan(vm: VueSentry, timestamp: number, timeout: number): void } export const createTracingMixins = (options: TracingOptions): Mixins => { - const { hooks } = options; + const hooks = (options.hooks || []) + .concat(DEFAULT_HOOKS) + // Removing potential duplicates + .filter((value, index, self) => self.indexOf(value) === index); const mixins: Mixins = {};