From 0cf81f9415ab48b3e3b7a8e2b02e479921396832 Mon Sep 17 00:00:00 2001 From: Onur Temizkan Date: Mon, 8 Nov 2021 10:54:26 +0000 Subject: [PATCH 1/3] fix(vue): Merge default and manual hooks while creating mixins. --- packages/vue/src/sdk.ts | 6 ++++-- packages/vue/src/tracing.ts | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/vue/src/sdk.ts b/packages/vue/src/sdk.ts index 27032e497d9b..d34225742804 100644 --- a/packages/vue/src/sdk.ts +++ b/packages/vue/src/sdk.ts @@ -3,13 +3,15 @@ import { getGlobalObject, logger } from '@sentry/utils'; import { attachErrorHandler } from './errorhandler'; import { createTracingMixins } from './tracing'; -import { Options, TracingOptions, Vue } from './types'; +import { Operation, Options, TracingOptions, Vue } from './types'; + +export const DEFAULT_HOOKS: Operation[] = ['activate', 'mount', 'update']; 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..bace7e9fb8a4 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 './sdk'; import { Hook, Operation, TracingOptions, ViewModel, Vue } from './types'; type Mixins = Parameters[0]; @@ -47,8 +48,7 @@ function finishRootSpan(vm: VueSentry, timestamp: number, timeout: number): void } export const createTracingMixins = (options: TracingOptions): Mixins => { - const { hooks } = options; - + const hooks = new Set((options.hooks || []).concat(DEFAULT_HOOKS)); const mixins: Mixins = {}; for (const operation of hooks) { From 32a4e466af4ba7768191879adce7a896773e021f Mon Sep 17 00:00:00 2001 From: Onur Temizkan Date: Mon, 8 Nov 2021 11:31:01 +0000 Subject: [PATCH 2/3] Move `DEFAULT_HOOKS` to constants.ts --- packages/vue/src/constants.ts | 3 +++ packages/vue/src/sdk.ts | 5 ++--- packages/vue/src/tracing.ts | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) create mode 100644 packages/vue/src/constants.ts 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 d34225742804..ee2e05b13e7e 100644 --- a/packages/vue/src/sdk.ts +++ b/packages/vue/src/sdk.ts @@ -1,11 +1,10 @@ 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 { Operation, Options, TracingOptions, Vue } from './types'; - -export const DEFAULT_HOOKS: Operation[] = ['activate', 'mount', 'update']; +import { Options, TracingOptions, Vue } from './types'; const DEFAULT_CONFIG: Options = { Vue: getGlobalObject<{ Vue: Vue }>().Vue, diff --git a/packages/vue/src/tracing.ts b/packages/vue/src/tracing.ts index bace7e9fb8a4..df1d646fd1a1 100644 --- a/packages/vue/src/tracing.ts +++ b/packages/vue/src/tracing.ts @@ -3,7 +3,7 @@ import { Span, Transaction } from '@sentry/types'; import { logger, timestampInSeconds } from '@sentry/utils'; import { formatComponentName } from './components'; -import { DEFAULT_HOOKS } from './sdk'; +import { DEFAULT_HOOKS } from './constants'; import { Hook, Operation, TracingOptions, ViewModel, Vue } from './types'; type Mixins = Parameters[0]; From b976c317bf88a5064fde3950ee5362c7f0ae0017 Mon Sep 17 00:00:00 2001 From: Onur Temizkan Date: Mon, 8 Nov 2021 18:32:32 +0000 Subject: [PATCH 3/3] Remove duplicates in old school way. --- packages/vue/src/tracing.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/vue/src/tracing.ts b/packages/vue/src/tracing.ts index df1d646fd1a1..192556fbd5bf 100644 --- a/packages/vue/src/tracing.ts +++ b/packages/vue/src/tracing.ts @@ -48,7 +48,11 @@ function finishRootSpan(vm: VueSentry, timestamp: number, timeout: number): void } export const createTracingMixins = (options: TracingOptions): Mixins => { - const hooks = new Set((options.hooks || []).concat(DEFAULT_HOOKS)); + const hooks = (options.hooks || []) + .concat(DEFAULT_HOOKS) + // Removing potential duplicates + .filter((value, index, self) => self.indexOf(value) === index); + const mixins: Mixins = {}; for (const operation of hooks) {