File: //home/cafsindia/snap.cafsinfotech.in/node_modules/@sentry/vue/cjs/router.js.map
{"version":3,"file":"router.js","sources":["../../src/router.ts"],"sourcesContent":["import { captureException, WINDOW } from '@sentry/browser';\nimport type { Transaction, TransactionContext, TransactionSource } from '@sentry/types';\nimport { addExceptionMechanism } from '@sentry/utils';\n\nimport { getActiveTransaction } from './tracing';\n\ninterface VueRouterInstrumationOptions {\n /**\n * What to use for route labels.\n * By default, we use route.name (if set) and else the path.\n *\n * Default: 'name'\n */\n routeLabel: 'name' | 'path';\n}\n\nexport type VueRouterInstrumentation = <T extends Transaction>(\n startTransaction: (context: TransactionContext) => T | undefined,\n startTransactionOnPageLoad?: boolean,\n startTransactionOnLocationChange?: boolean,\n) => void;\n\n// The following type is an intersection of the Route type from VueRouter v2, v3, and v4.\n// This is not great, but kinda necessary to make it work with all versions at the same time.\nexport type Route = {\n /** Unparameterized URL */\n path: string;\n /**\n * Query params (keys map to null when there is no value associated, e.g. \"?foo\" and to an array when there are\n * multiple query params that have the same key, e.g. \"?foo&foo=bar\")\n */\n query: Record<string, string | null | (string | null)[]>;\n /** Route name (VueRouter provides a way to give routes individual names) */\n name?: string | symbol | null | undefined;\n /** Evaluated parameters */\n params: Record<string, string | string[]>;\n /** All the matched route objects as defined in VueRouter constructor */\n matched: { path: string }[];\n};\n\ninterface VueRouter {\n onError: (fn: (err: Error) => void) => void;\n beforeEach: (fn: (to: Route, from: Route, next?: () => void) => void) => void;\n}\n\n/**\n * Creates routing instrumentation for Vue Router v2, v3 and v4\n *\n * You can optionally pass in an options object with the available option:\n * * `routeLabel`: Set this to `route` to opt-out of using `route.name` for transaction names.\n *\n * @param router The Vue Router instance that is used\n */\nexport function vueRouterInstrumentation(\n router: VueRouter,\n options: Partial<VueRouterInstrumationOptions> = {},\n): VueRouterInstrumentation {\n return (\n startTransaction: (context: TransactionContext) => Transaction | undefined,\n startTransactionOnPageLoad: boolean = true,\n startTransactionOnLocationChange: boolean = true,\n ) => {\n const tags = {\n 'routing.instrumentation': 'vue-router',\n };\n\n // We have to start the pageload transaction as early as possible (before the router's `beforeEach` hook\n // is called) to not miss child spans of the pageload.\n // We check that window & window.location exists in order to not run this code in SSR environments.\n if (startTransactionOnPageLoad && WINDOW && WINDOW.location) {\n startTransaction({\n name: WINDOW.location.pathname,\n op: 'pageload',\n origin: 'auto.pageload.vue',\n tags,\n metadata: {\n source: 'url',\n },\n });\n }\n\n router.onError(error =>\n captureException(error, scope => {\n scope.addEventProcessor(event => {\n addExceptionMechanism(event, { handled: false });\n return event;\n });\n\n return scope;\n }),\n );\n\n router.beforeEach((to, from, next) => {\n // According to docs we could use `from === VueRouter.START_LOCATION` but I couldnt get it working for Vue 2\n // https://router.vuejs.org/api/#router-start-location\n // https://next.router.vuejs.org/api/#start-location\n\n // from.name:\n // - Vue 2: null\n // - Vue 3: undefined\n // hence only '==' instead of '===', because `undefined == null` evaluates to `true`\n const isPageLoadNavigation = from.name == null && from.matched.length === 0;\n\n const data = {\n params: to.params,\n query: to.query,\n };\n\n // Determine a name for the routing transaction and where that name came from\n let transactionName: string = to.path;\n let transactionSource: TransactionSource = 'url';\n if (to.name && options.routeLabel !== 'path') {\n transactionName = to.name.toString();\n transactionSource = 'custom';\n } else if (to.matched[0] && to.matched[0].path) {\n transactionName = to.matched[0].path;\n transactionSource = 'route';\n }\n\n if (startTransactionOnPageLoad && isPageLoadNavigation) {\n const pageloadTransaction = getActiveTransaction();\n if (pageloadTransaction) {\n if (pageloadTransaction.metadata.source !== 'custom') {\n pageloadTransaction.setName(transactionName, transactionSource);\n }\n pageloadTransaction.setData('params', data.params);\n pageloadTransaction.setData('query', data.query);\n }\n }\n\n if (startTransactionOnLocationChange && !isPageLoadNavigation) {\n startTransaction({\n name: transactionName,\n op: 'navigation',\n origin: 'auto.navigation.vue',\n tags,\n data,\n metadata: {\n source: transactionSource,\n },\n });\n }\n\n // Vue Router 4 no longer exposes the `next` function, so we need to\n // check if it's available before calling it.\n // `next` needs to be called in Vue Router 3 so that the hook is resolved.\n if (next) {\n next();\n }\n });\n };\n}\n"],"names":["WINDOW","captureException","addExceptionMechanism","getActiveTransaction"],"mappings":"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"}