{"version":3,"file":"static/js/331.57bad352.chunk.js","mappings":"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","sources":["../node_modules/src/version.ts","../node_modules/src/index.ts","../node_modules/@sentry/src/redux.ts","../node_modules/@sentry/src/reactrouterv3.ts"],"sourcesContent":["// TODO: Remove in the next major release and rely only on @sentry/core SDK_VERSION and SdkInfo metadata\nexport const SDK_NAME = 'sentry.javascript.browser';\n","export * from './exports';\n\nimport { Integrations as CoreIntegrations } from '@sentry/core';\nimport { getGlobalObject } from '@sentry/utils';\n\nimport * as BrowserIntegrations from './integrations';\nimport * as Transports from './transports';\n\nlet windowIntegrations = {};\n\n// This block is needed to add compatibility with the integrations packages when used with a CDN\nconst _window = getGlobalObject();\nif (_window.Sentry && _window.Sentry.Integrations) {\n windowIntegrations = _window.Sentry.Integrations;\n}\n\nconst INTEGRATIONS = {\n ...windowIntegrations,\n ...CoreIntegrations,\n ...BrowserIntegrations,\n};\n\nexport { INTEGRATIONS as Integrations, Transports };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { configureScope } from '@sentry/minimal';\nimport { Scope } from '@sentry/types';\n\ninterface Action {\n type: T;\n}\n\ninterface AnyAction extends Action {\n [extraProps: string]: any;\n}\n\ntype Reducer = (state: S | undefined, action: A) => S;\n\ntype Dispatch = (action: T, ...extraArgs: any[]) => T;\n\ntype ExtendState = [Extension] extends [never] ? State : State & Extension;\n\ntype Unsubscribe = () => void;\n\ninterface Store> {\n dispatch: Dispatch;\n getState(): S;\n subscribe(listener: () => void): Unsubscribe;\n replaceReducer(\n nextReducer: Reducer,\n ): Store, NewActions, StateExt, Ext> & Ext;\n}\n\ndeclare const $CombinedState: unique symbol;\n\ntype CombinedState = { readonly [$CombinedState]?: undefined } & S;\n\ntype PreloadedState = Required extends {\n [$CombinedState]: undefined;\n}\n ? S extends CombinedState\n ? { [K in keyof S1]?: S1[K] extends Record ? PreloadedState : S1[K] }\n : never\n : { [K in keyof S]: S[K] extends string | number | boolean | symbol ? S[K] : PreloadedState };\n\ntype StoreEnhancerStoreCreator, StateExt = never> = <\n S = any,\n A extends Action = AnyAction,\n>(\n reducer: Reducer,\n preloadedState?: PreloadedState,\n) => Store, A, StateExt, Ext> & Ext;\n\nexport interface SentryEnhancerOptions {\n /**\n * Transforms the state before attaching it to an event.\n * Use this to remove any private data before sending it to Sentry.\n * Return null to not attach the state.\n */\n stateTransformer(state: S | undefined): (S & any) | null;\n /**\n * Transforms the action before sending it as a breadcrumb.\n * Use this to remove any private data before sending it to Sentry.\n * Return null to not send the breadcrumb.\n */\n actionTransformer(action: AnyAction): AnyAction | null;\n /**\n * Called on every state update, configure the Sentry Scope with the redux state.\n */\n configureScopeWithState?(scope: Scope, state: S): void;\n}\n\nconst ACTION_BREADCRUMB_CATEGORY = 'redux.action';\nconst ACTION_BREADCRUMB_TYPE = 'info';\nconst STATE_CONTEXT_KEY = 'redux.state';\n\nconst defaultOptions: SentryEnhancerOptions = {\n actionTransformer: action => action,\n stateTransformer: state => state || null,\n};\n\n/**\n * Creates an enhancer that would be passed to Redux's createStore to log actions and the latest state to Sentry.\n *\n * @param enhancerOptions Options to pass to the enhancer\n */\nfunction createReduxEnhancer(enhancerOptions?: Partial): any {\n // Note: We return an any type as to not have type conflicts.\n const options = {\n ...defaultOptions,\n ...enhancerOptions,\n };\n\n return (next: StoreEnhancerStoreCreator): StoreEnhancerStoreCreator =>\n (reducer: Reducer, initialState?: PreloadedState) => {\n const sentryReducer: Reducer = (state, action): S => {\n const newState = reducer(state, action);\n\n configureScope(scope => {\n /* Action breadcrumbs */\n const transformedAction = options.actionTransformer(action);\n if (typeof transformedAction !== 'undefined' && transformedAction !== null) {\n scope.addBreadcrumb({\n category: ACTION_BREADCRUMB_CATEGORY,\n data: transformedAction,\n type: ACTION_BREADCRUMB_TYPE,\n });\n }\n\n /* Set latest state to scope */\n const transformedState = options.stateTransformer(newState);\n if (typeof transformedState !== 'undefined' && transformedState !== null) {\n scope.setContext(STATE_CONTEXT_KEY, transformedState);\n } else {\n scope.setContext(STATE_CONTEXT_KEY, null);\n }\n\n /* Allow user to configure scope with latest state */\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const { configureScopeWithState } = options;\n if (typeof configureScopeWithState === 'function') {\n configureScopeWithState(scope, newState);\n }\n });\n\n return newState;\n };\n\n return next(sentryReducer, initialState);\n };\n}\n\nexport { createReduxEnhancer };\n","import { Primitive, Transaction, TransactionContext } from '@sentry/types';\nimport { getGlobalObject } from '@sentry/utils';\n\nimport { Location, ReactRouterInstrumentation } from './types';\n\n// Many of the types below had to be mocked out to prevent typescript issues\n// these types are required for correct functionality.\n\ntype HistoryV3 = {\n location?: Location;\n listen?(cb: (location: Location) => void): void;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n} & Record;\n\nexport type Route = { path?: string; childRoutes?: Route[] };\n\nexport type Match = (\n props: { location: Location; routes: Route[] },\n cb: (error?: Error, _redirectLocation?: Location, renderProps?: { routes?: Route[] }) => void,\n) => void;\n\nconst global = getGlobalObject();\n\n/**\n * Creates routing instrumentation for React Router v3\n * Works for React Router >= 3.2.0 and < 4.0.0\n *\n * @param history object from the `history` library\n * @param routes a list of all routes, should be\n * @param match `Router.match` utility\n */\nexport function reactRouterV3Instrumentation(\n history: HistoryV3,\n routes: Route[],\n match: Match,\n): ReactRouterInstrumentation {\n return (\n startTransaction: (context: TransactionContext) => Transaction | undefined,\n startTransactionOnPageLoad: boolean = true,\n startTransactionOnLocationChange: boolean = true,\n ) => {\n let activeTransaction: Transaction | undefined;\n let prevName: string | undefined;\n\n // Have to use global.location because history.location might not be defined.\n if (startTransactionOnPageLoad && global && global.location) {\n normalizeTransactionName(routes, global.location as unknown as Location, match, (localName: string) => {\n prevName = localName;\n activeTransaction = startTransaction({\n name: prevName,\n op: 'pageload',\n tags: {\n 'routing.instrumentation': 'react-router-v3',\n },\n });\n });\n }\n\n if (startTransactionOnLocationChange && history.listen) {\n history.listen(location => {\n if (location.action === 'PUSH' || location.action === 'POP') {\n if (activeTransaction) {\n activeTransaction.finish();\n }\n const tags: Record = {\n 'routing.instrumentation': 'react-router-v3',\n };\n if (prevName) {\n tags.from = prevName;\n }\n normalizeTransactionName(routes, location, match, (localName: string) => {\n prevName = localName;\n activeTransaction = startTransaction({\n name: prevName,\n op: 'navigation',\n tags,\n });\n });\n }\n });\n }\n };\n}\n\n/**\n * Normalize transaction names using `Router.match`\n */\nfunction normalizeTransactionName(\n appRoutes: Route[],\n location: Location,\n match: Match,\n callback: (pathname: string) => void,\n): void {\n let name = location.pathname;\n match(\n {\n location,\n routes: appRoutes,\n },\n (error, _redirectLocation, renderProps) => {\n if (error || !renderProps) {\n return callback(name);\n }\n\n const routePath = getRouteStringFromRoutes(renderProps.routes || []);\n if (routePath.length === 0 || routePath === '/*') {\n return callback(name);\n }\n\n name = routePath;\n return callback(name);\n },\n );\n}\n\n/**\n * Generate route name from array of routes\n */\nfunction getRouteStringFromRoutes(routes: Route[]): string {\n if (!Array.isArray(routes) || routes.length === 0) {\n return '';\n }\n\n const routesWithPaths: Route[] = routes.filter((route: Route) => !!route.path);\n\n let index = -1;\n for (let x = routesWithPaths.length - 1; x >= 0; x--) {\n const route = routesWithPaths[x];\n if (route.path && route.path.startsWith('/')) {\n index = x;\n break;\n }\n }\n\n return routesWithPaths\n .slice(index)\n .filter(({ path }) => !!path)\n .map(({ path }) => path)\n .join('');\n}\n"],"names":["SDK_NAME","windowIntegrations","_window","getGlobalObject","Sentry","Integrations","INTEGRATIONS","__assign","CoreIntegrations","BrowserIntegrations","ACTION_BREADCRUMB_CATEGORY","ACTION_BREADCRUMB_TYPE","STATE_CONTEXT_KEY","defaultOptions","actionTransformer","action","stateTransformer","state","createReduxEnhancer","enhancerOptions","options","next","reducer","initialState","newState","configureScope","scope","transformedAction","addBreadcrumb","category","data","type","transformedState","setContext","configureScopeWithState","global","reactRouterV3Instrumentation","history","routes","match","startTransaction","startTransactionOnPageLoad","startTransactionOnLocationChange","activeTransaction","prevName","location","normalizeTransactionName","localName","name","op","tags","listen","finish","tags_1","from","appRoutes","callback","pathname","error","_redirectLocation","renderProps","routePath","Array","isArray","length","routesWithPaths","filter","route","path","index","x","startsWith","slice","_a","map","join","getRouteStringFromRoutes"],"sourceRoot":""}