@sentry/react 11.0.0-beta.0 → 11.0.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/build/cjs/react-router.js +21 -0
  2. package/build/cjs/react-router.js.map +1 -0
  3. package/build/cjs/reactrouter-compat-utils/instrumentation.js +141 -136
  4. package/build/cjs/reactrouter-compat-utils/instrumentation.js.map +1 -1
  5. package/build/cjs/reactrouter-compat-utils/utils.js +28 -32
  6. package/build/cjs/reactrouter-compat-utils/utils.js.map +1 -1
  7. package/build/cjs/reactrouter.js.map +1 -1
  8. package/build/esm/package.json +1 -1
  9. package/build/esm/react-router.js +16 -0
  10. package/build/esm/react-router.js.map +1 -0
  11. package/build/esm/reactrouter-compat-utils/instrumentation.js +143 -138
  12. package/build/esm/reactrouter-compat-utils/instrumentation.js.map +1 -1
  13. package/build/esm/reactrouter-compat-utils/utils.js +29 -32
  14. package/build/esm/reactrouter-compat-utils/utils.js.map +1 -1
  15. package/build/esm/reactrouter.js.map +1 -1
  16. package/build/types/react-router.d.ts +26 -0
  17. package/build/types/react-router.d.ts.map +1 -0
  18. package/build/types/reactrouter-compat-utils/index.d.ts +1 -1
  19. package/build/types/reactrouter-compat-utils/index.d.ts.map +1 -1
  20. package/build/types/reactrouter-compat-utils/instrumentation.d.ts +9 -5
  21. package/build/types/reactrouter-compat-utils/instrumentation.d.ts.map +1 -1
  22. package/build/types/reactrouter-compat-utils/utils.d.ts +5 -10
  23. package/build/types/reactrouter-compat-utils/utils.d.ts.map +1 -1
  24. package/build/types/reactrouter.d.ts +16 -0
  25. package/build/types/reactrouter.d.ts.map +1 -1
  26. package/build/types/types.d.ts +16 -0
  27. package/build/types/types.d.ts.map +1 -1
  28. package/package.json +33 -5
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../src/reactrouter-compat-utils/utils.ts"],"sourcesContent":["import type { Span, TransactionSource } from '@sentry/core';\nimport { debug, getActiveSpan, getRootSpan, spanToJSON } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { Location, MatchRoutes, RouteMatch, RouteObject } from '../types';\nimport { matchRouteManifest, stripBasenameFromPathname } from './route-manifest';\nimport { SENTRY_OP } from '@sentry/conventions/attributes';\n\n// Global variables that these utilities depend on\nlet _matchRoutes: MatchRoutes;\nlet _stripBasename: boolean = false;\n\n// Navigation context stack for nested/concurrent patchRoutesOnNavigation calls.\n// Required because window.location hasn't updated yet when handlers are invoked.\ninterface NavigationContext {\n token: object;\n targetPath: string | undefined;\n span: Span | undefined;\n}\n\nconst _navigationContextStack: NavigationContext[] = [];\nconst MAX_CONTEXT_STACK_SIZE = 10;\n\n/**\n * Pushes a navigation context and returns a unique token for cleanup.\n * The token uses object identity for uniqueness (no counter needed).\n */\nexport function setNavigationContext(targetPath: string | undefined, span: Span | undefined): object {\n const token = {};\n // Prevent unbounded stack growth - oldest (likely stale) contexts are evicted first\n if (_navigationContextStack.length >= MAX_CONTEXT_STACK_SIZE) {\n DEBUG_BUILD && debug.warn('[React Router] Navigation context stack overflow - removing oldest context');\n _navigationContextStack.shift();\n }\n _navigationContextStack.push({ token, targetPath, span });\n return token;\n}\n\n/**\n * Clears the navigation context if it's on top of the stack (LIFO).\n * If our context is not on top (out-of-order completion), we leave it -\n * it will be cleaned up by overflow protection when the stack fills up.\n */\nexport function clearNavigationContext(token: object): void {\n const top = _navigationContextStack[_navigationContextStack.length - 1];\n if (top?.token === token) {\n _navigationContextStack.pop();\n }\n}\n\n/** Gets the current (most recent) navigation context if inside a patchRoutesOnNavigation call. */\nexport function getNavigationContext(): NavigationContext | null {\n const length = _navigationContextStack.length;\n // The `?? null` converts undefined (from array access) to null to match return type\n return length > 0 ? (_navigationContextStack[length - 1] ?? null) : null;\n}\n\n/**\n * Initialize function to set dependencies that the router utilities need.\n * Must be called before using any of the exported utility functions.\n */\nexport function initializeRouterUtils(matchRoutes: MatchRoutes, stripBasename: boolean = false): void {\n _matchRoutes = matchRoutes;\n _stripBasename = stripBasename;\n}\n\n// Helper functions\nfunction pickPath(match: RouteMatch): string {\n return trimWildcard(match.route.path || '');\n}\n\nfunction pickSplat(match: RouteMatch): string {\n return match.params['*'] || '';\n}\n\nfunction trimWildcard(path: string): string {\n return path[path.length - 1] === '*' ? path.slice(0, -1) : path;\n}\n\nfunction trimSlash(path: string): string {\n return path[path.length - 1] === '/' ? path.slice(0, -1) : path;\n}\n\n/**\n * Checks if a path ends with a wildcard character (*).\n */\nexport function pathEndsWithWildcard(path: string): boolean {\n return path.endsWith('*');\n}\n\n/** Checks if transaction name has wildcard (/* or ends with *). */\nexport function transactionNameHasWildcard(name: string): boolean {\n return name.includes('/*') || name.endsWith('*');\n}\n\n/**\n * Checks if a path is a wildcard and has child routes.\n */\nexport function pathIsWildcardAndHasChildren(path: string, branch: RouteMatch<string>): boolean {\n return (pathEndsWithWildcard(path) && !!branch.route.children?.length) || false;\n}\n\n/** Check if route is in descendant route (<Routes> within <Routes>) */\nexport function routeIsDescendant(route: RouteObject): boolean {\n return !!(!route.children && route.element && route.path?.endsWith('/*'));\n}\n\nfunction sendIndexPath(pathBuilder: string, pathname: string, basename: string): [string, TransactionSource] {\n const reconstructedPath =\n pathBuilder && pathBuilder.length > 0\n ? pathBuilder\n : _stripBasename\n ? stripBasenameFromPathname(pathname, basename)\n : pathname;\n\n let formattedPath =\n // If the path ends with a wildcard suffix, remove both the slash and the asterisk\n reconstructedPath.slice(-2) === '/*' ? reconstructedPath.slice(0, -2) : reconstructedPath;\n\n // If the path ends with a slash, remove it (but keep single '/')\n if (formattedPath.length > 1 && formattedPath[formattedPath.length - 1] === '/') {\n formattedPath = formattedPath.slice(0, -1);\n }\n\n return [formattedPath, 'route'];\n}\n\n/**\n * Returns the number of URL segments in the given URL string.\n * Splits at '/' or '\\/' to handle regex URLs correctly.\n *\n * @param url - The URL string to segment.\n * @returns The number of segments in the URL.\n */\nexport function getNumberOfUrlSegments(url: string): number {\n // split at '/' or at '\\/' to split regex urls correctly\n return url.split(/\\\\?\\//).filter(s => s.length > 0 && s !== ',').length;\n}\n\n// Exported utility functions\n\n/**\n * Ensures a path string starts with a forward slash.\n */\nexport function prefixWithSlash(path: string): string {\n return path[0] === '/' ? path : `/${path}`;\n}\n\n/**\n * Rebuilds the route path from all available routes by matching against the current location.\n */\nexport function rebuildRoutePathFromAllRoutes(allRoutes: RouteObject[], location: Location): string {\n const matchedRoutes = _matchRoutes(allRoutes, location) as RouteMatch[];\n\n if (!matchedRoutes || matchedRoutes.length === 0) {\n return '';\n }\n\n for (const match of matchedRoutes) {\n if (match.route.path && match.route.path !== '*') {\n const path = pickPath(match);\n const strippedPath = stripBasenameFromPathname(location.pathname, prefixWithSlash(match.pathnameBase));\n\n if (location.pathname === strippedPath) {\n return trimSlash(strippedPath);\n }\n\n return trimSlash(\n trimSlash(path || '') +\n prefixWithSlash(\n rebuildRoutePathFromAllRoutes(\n allRoutes.filter(route => route !== match.route),\n {\n pathname: strippedPath,\n },\n ),\n ),\n );\n }\n }\n\n return '';\n}\n\n/**\n * Recovers the parent prefix for descendant `<Routes>` names.\n *\n * `allRoutes` flattens every mounted `<Routes>` into one set, so an orphaned descendant subtree can\n * outscore the `.../*` route that anchors the location and drop its prefix (e.g. `/:id/:sub` instead of `/child/:id`).\n * Matching only the descendant-parent routes recovers the true anchor.\n */\nfunction reconstructNameFromDescendantParent(\n location: Location,\n allRoutes: RouteObject[],\n currentName: string | undefined,\n): string | undefined {\n const descendantParents = allRoutes.filter(routeIsDescendant);\n if (!descendantParents.length) {\n return undefined;\n }\n\n const matchedParents = _matchRoutes(descendantParents, location) as RouteMatch[] | null;\n const parentMatch = matchedParents?.[matchedParents.length - 1];\n if (!parentMatch || !pickSplat(parentMatch)) {\n return undefined;\n }\n\n const parentTemplate = trimSlash(trimWildcard(parentMatch.route.path || ''));\n\n if (!parentTemplate) {\n return undefined;\n }\n\n const expectedPrefix = prefixWithSlash(parentTemplate);\n\n // Child `<Routes>` resolve against the matched parent, but flattened route matching can already retain\n // a dynamic leading parameter. Adding the parent again would duplicate it (e.g. `/:id/:id`)\n const firstElement = parentTemplate.split('/')[0];\n const hasDynamicLead = firstElement?.startsWith(':') && currentName?.split('/').includes(firstElement);\n\n // Rebuild only when matching the descendant subtree discarded its parent route template\n if (currentName === expectedPrefix || currentName?.startsWith(`${expectedPrefix}/`) || hasDynamicLead) {\n return undefined;\n }\n\n const remainingPathname =\n stripBasenameFromPathname(location.pathname, prefixWithSlash(parentMatch.pathnameBase)) || '/';\n const remainingName = rebuildRoutePathFromAllRoutes(\n allRoutes.filter(route => route !== parentMatch.route),\n { pathname: remainingPathname },\n );\n\n return remainingName ? prefixWithSlash(`${parentTemplate}${prefixWithSlash(remainingName)}`) : undefined;\n}\n\n/**\n * Checks if the current location is inside a descendant route (route with splat parameter).\n */\nexport function locationIsInsideDescendantRoute(location: Location, routes: RouteObject[]): boolean {\n const matchedRoutes = _matchRoutes(routes, location) as RouteMatch[];\n\n if (matchedRoutes) {\n for (const match of matchedRoutes) {\n if (routeIsDescendant(match.route) && pickSplat(match)) {\n return true;\n }\n }\n }\n\n return false;\n}\n\n/**\n * Returns a fallback transaction name from location pathname.\n */\nfunction getFallbackTransactionName(location: Location, basename: string): string {\n return _stripBasename ? stripBasenameFromPathname(location.pathname, basename) : location.pathname || '';\n}\n\n/**\n * Gets a normalized route name and transaction source from the current routes and location.\n */\nexport function getNormalizedName(\n routes: RouteObject[],\n location: Location,\n branches: RouteMatch[],\n basename: string = '',\n): [string, TransactionSource] {\n if (!routes || routes.length === 0) {\n return [_stripBasename ? stripBasenameFromPathname(location.pathname, basename) : location.pathname, 'url'];\n }\n\n if (!branches) {\n return [getFallbackTransactionName(location, basename), 'url'];\n }\n\n let pathBuilder = '';\n\n for (const branch of branches) {\n const route = branch.route;\n if (!route) {\n continue;\n }\n\n // Early return for index routes\n if (route.index) {\n return sendIndexPath(pathBuilder, branch.pathname, basename);\n }\n\n const path = route.path;\n if (!path || pathIsWildcardAndHasChildren(path, branch)) {\n continue;\n }\n\n // Build the route path\n const newPath = path[0] === '/' || pathBuilder[pathBuilder.length - 1] === '/' ? path : `/${path}`;\n pathBuilder = trimSlash(pathBuilder) + prefixWithSlash(newPath);\n\n // Check if this path matches the current location\n if (trimSlash(location.pathname) !== trimSlash(basename + branch.pathname)) {\n continue;\n }\n\n // Check if this is a parameterized route like /stores/:storeId/products/:productId\n if (\n getNumberOfUrlSegments(pathBuilder) !== getNumberOfUrlSegments(branch.pathname) &&\n !pathEndsWithWildcard(pathBuilder)\n ) {\n return [(_stripBasename ? '' : basename) + newPath, 'route'];\n }\n\n // Handle wildcard routes with children - strip trailing wildcard\n if (pathIsWildcardAndHasChildren(pathBuilder, branch)) {\n pathBuilder = pathBuilder.slice(0, -1);\n }\n\n return [(_stripBasename ? '' : basename) + pathBuilder, 'route'];\n }\n\n // Fallback when no matching route found\n return [getFallbackTransactionName(location, basename), 'url'];\n}\n\n/**\n * Shared helper function to resolve route name and source\n */\nexport function resolveRouteNameAndSource(\n location: Location,\n routes: RouteObject[],\n allRoutes: RouteObject[],\n branches: RouteMatch[],\n basename: string = '',\n lazyRouteManifest?: string[],\n enableAsyncRouteHandlers?: boolean,\n): [string, TransactionSource] {\n // When lazy route manifest is provided, use it as the primary source for transaction names\n if (enableAsyncRouteHandlers && lazyRouteManifest && lazyRouteManifest.length > 0) {\n const manifestMatch = matchRouteManifest(location.pathname, lazyRouteManifest, basename);\n if (manifestMatch) {\n return [(_stripBasename ? '' : basename) + manifestMatch, 'route'];\n }\n }\n\n // Fall back to React Router route matching\n let name: string | undefined;\n let source: TransactionSource = 'url';\n\n const isInDescendantRoute = locationIsInsideDescendantRoute(location, allRoutes);\n\n if (isInDescendantRoute) {\n name = prefixWithSlash(rebuildRoutePathFromAllRoutes(allRoutes, location));\n source = 'route';\n }\n\n if (!isInDescendantRoute || !name) {\n [name, source] = getNormalizedName(routes, location, branches, basename);\n }\n\n // Guard against orphaned descendant subtrees stealing the transaction name: if the location is\n // anchored by a descendant-parent route (`.../*`) whose prefix was dropped, reconstruct with it.\n const anchoredName = reconstructNameFromDescendantParent(location, allRoutes, name);\n if (anchoredName) {\n return [anchoredName, 'route'];\n }\n\n return [name || location.pathname, source];\n}\n\n/**\n * Gets the active root span if it's a pageload or navigation span.\n */\nexport function getActiveRootSpan(): Span | undefined {\n const span = getActiveSpan();\n const rootSpan = span ? getRootSpan(span) : undefined;\n\n if (!rootSpan) {\n return undefined;\n }\n\n const op = spanToJSON(rootSpan).attributes[SENTRY_OP];\n\n // Only use this root span if it is a pageload or navigation span\n return op === 'navigation' || op === 'pageload' ? rootSpan : undefined;\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sources":["../../../src/reactrouter-compat-utils/utils.ts"],"sourcesContent":["import type { Span, TransactionSource } from '@sentry/core';\nimport { debug, getActiveSpan, getRootSpan, spanToJSON } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { Location, MatchRoutes, ReactRouterConfig, RouteMatch, RouteObject } from '../types';\nimport { matchRouteManifest, stripBasenameFromPathname } from './route-manifest';\nimport { SENTRY_OP } from '@sentry/conventions/attributes';\n\n// Navigation context stack for nested/concurrent patchRoutesOnNavigation calls.\n// Required because window.location hasn't updated yet when handlers are invoked.\ninterface NavigationContext {\n token: object;\n targetPath: string | undefined;\n span: Span | undefined;\n}\n\nconst _navigationContextStack: NavigationContext[] = [];\nconst MAX_CONTEXT_STACK_SIZE = 10;\n\n/**\n * Pushes a navigation context and returns a unique token for cleanup.\n * The token uses object identity for uniqueness (no counter needed).\n */\nexport function setNavigationContext(targetPath: string | undefined, span: Span | undefined): object {\n const token = {};\n // Prevent unbounded stack growth - oldest (likely stale) contexts are evicted first\n if (_navigationContextStack.length >= MAX_CONTEXT_STACK_SIZE) {\n DEBUG_BUILD && debug.warn('[React Router] Navigation context stack overflow - removing oldest context');\n _navigationContextStack.shift();\n }\n _navigationContextStack.push({ token, targetPath, span });\n return token;\n}\n\n/**\n * Clears the navigation context if it's on top of the stack (LIFO).\n * If our context is not on top (out-of-order completion), we leave it -\n * it will be cleaned up by overflow protection when the stack fills up.\n */\nexport function clearNavigationContext(token: object): void {\n const top = _navigationContextStack[_navigationContextStack.length - 1];\n if (top?.token === token) {\n _navigationContextStack.pop();\n }\n}\n\n/** Gets the current (most recent) navigation context if inside a patchRoutesOnNavigation call. */\nexport function getNavigationContext(): NavigationContext | null {\n const length = _navigationContextStack.length;\n // The `?? null` converts undefined (from array access) to null to match return type\n return length > 0 ? (_navigationContextStack[length - 1] ?? null) : null;\n}\n\n// Helper functions\nfunction pickPath(match: RouteMatch): string {\n return trimWildcard(match.route.path || '');\n}\n\nfunction pickSplat(match: RouteMatch): string {\n return match.params['*'] || '';\n}\n\nfunction trimWildcard(path: string): string {\n return path[path.length - 1] === '*' ? path.slice(0, -1) : path;\n}\n\nfunction trimSlash(path: string): string {\n return path[path.length - 1] === '/' ? path.slice(0, -1) : path;\n}\n\n/**\n * Checks if a path ends with a wildcard character (*).\n */\nexport function pathEndsWithWildcard(path: string): boolean {\n return path.endsWith('*');\n}\n\n/** Checks if transaction name has wildcard (/* or ends with *). */\nexport function transactionNameHasWildcard(name: string): boolean {\n return name.includes('/*') || name.endsWith('*');\n}\n\n/**\n * Checks if a path is a wildcard and has child routes.\n */\nexport function pathIsWildcardAndHasChildren(path: string, branch: RouteMatch<string>): boolean {\n return (pathEndsWithWildcard(path) && !!branch.route.children?.length) || false;\n}\n\n/** Check if route is in descendant route (<Routes> within <Routes>) */\nexport function routeIsDescendant(route: RouteObject): boolean {\n return !!(!route.children && route.element && route.path?.endsWith('/*'));\n}\n\nfunction sendIndexPath(\n pathBuilder: string,\n pathname: string,\n basename: string,\n stripBasename: boolean,\n): [string, TransactionSource] {\n const reconstructedPath =\n pathBuilder && pathBuilder.length > 0\n ? pathBuilder\n : stripBasename\n ? stripBasenameFromPathname(pathname, basename)\n : pathname;\n\n let formattedPath =\n // If the path ends with a wildcard suffix, remove both the slash and the asterisk\n reconstructedPath.slice(-2) === '/*' ? reconstructedPath.slice(0, -2) : reconstructedPath;\n\n // If the path ends with a slash, remove it (but keep single '/')\n if (formattedPath.length > 1 && formattedPath[formattedPath.length - 1] === '/') {\n formattedPath = formattedPath.slice(0, -1);\n }\n\n return [formattedPath, 'route'];\n}\n\n/**\n * Returns the number of URL segments in the given URL string.\n * Splits at '/' or '\\/' to handle regex URLs correctly.\n *\n * @param url - The URL string to segment.\n * @returns The number of segments in the URL.\n */\nexport function getNumberOfUrlSegments(url: string): number {\n // split at '/' or at '\\/' to split regex urls correctly\n return url.split(/\\\\?\\//).filter(s => s.length > 0 && s !== ',').length;\n}\n\n// Exported utility functions\n\n/**\n * Ensures a path string starts with a forward slash.\n */\nexport function prefixWithSlash(path: string): string {\n return path[0] === '/' ? path : `/${path}`;\n}\n\n/**\n * Rebuilds the route path from all available routes by matching against the current location.\n */\nexport function rebuildRoutePathFromAllRoutes(\n allRoutes: RouteObject[],\n location: Location,\n matchRoutes: MatchRoutes,\n): string {\n const matchedRoutes = matchRoutes(allRoutes, location) as RouteMatch[];\n\n if (!matchedRoutes || matchedRoutes.length === 0) {\n return '';\n }\n\n for (const match of matchedRoutes) {\n if (match.route.path && match.route.path !== '*') {\n const path = pickPath(match);\n const strippedPath = stripBasenameFromPathname(location.pathname, prefixWithSlash(match.pathnameBase));\n\n if (location.pathname === strippedPath) {\n return trimSlash(strippedPath);\n }\n\n return trimSlash(\n trimSlash(path || '') +\n prefixWithSlash(\n rebuildRoutePathFromAllRoutes(\n allRoutes.filter(route => route !== match.route),\n {\n pathname: strippedPath,\n },\n matchRoutes,\n ),\n ),\n );\n }\n }\n\n return '';\n}\n\n/**\n * Recovers the parent prefix for descendant `<Routes>` names.\n *\n * `allRoutes` flattens every mounted `<Routes>` into one set, so an orphaned descendant subtree can\n * outscore the `.../*` route that anchors the location and drop its prefix (e.g. `/:id/:sub` instead of `/child/:id`).\n * Matching only the descendant-parent routes recovers the true anchor.\n */\nfunction reconstructNameFromDescendantParent(\n location: Location,\n allRoutes: RouteObject[],\n currentName: string | undefined,\n matchRoutes: MatchRoutes,\n): string | undefined {\n const descendantParents = allRoutes.filter(routeIsDescendant);\n if (!descendantParents.length) {\n return undefined;\n }\n\n const matchedParents = matchRoutes(descendantParents, location) as RouteMatch[] | null;\n const parentMatch = matchedParents?.[matchedParents.length - 1];\n if (!parentMatch || !pickSplat(parentMatch)) {\n return undefined;\n }\n\n const parentTemplate = trimSlash(trimWildcard(parentMatch.route.path || ''));\n\n if (!parentTemplate) {\n return undefined;\n }\n\n const expectedPrefix = prefixWithSlash(parentTemplate);\n\n // Child `<Routes>` resolve against the matched parent, but flattened route matching can already retain\n // a dynamic leading parameter. Adding the parent again would duplicate it (e.g. `/:id/:id`)\n const firstElement = parentTemplate.split('/')[0];\n const hasDynamicLead = firstElement?.startsWith(':') && currentName?.split('/').includes(firstElement);\n\n // Rebuild only when matching the descendant subtree discarded its parent route template\n if (currentName === expectedPrefix || currentName?.startsWith(`${expectedPrefix}/`) || hasDynamicLead) {\n return undefined;\n }\n\n const remainingPathname =\n stripBasenameFromPathname(location.pathname, prefixWithSlash(parentMatch.pathnameBase)) || '/';\n const remainingName = rebuildRoutePathFromAllRoutes(\n allRoutes.filter(route => route !== parentMatch.route),\n { pathname: remainingPathname },\n matchRoutes,\n );\n\n return remainingName ? prefixWithSlash(`${parentTemplate}${prefixWithSlash(remainingName)}`) : undefined;\n}\n\n/**\n * Checks if the current location is inside a descendant route (route with splat parameter).\n */\nexport function locationIsInsideDescendantRoute(\n location: Location,\n routes: RouteObject[],\n matchRoutes: MatchRoutes,\n): boolean {\n const matchedRoutes = matchRoutes(routes, location) as RouteMatch[];\n\n if (matchedRoutes) {\n for (const match of matchedRoutes) {\n if (routeIsDescendant(match.route) && pickSplat(match)) {\n return true;\n }\n }\n }\n\n return false;\n}\n\n/**\n * Returns a fallback transaction name from location pathname.\n */\nfunction getFallbackTransactionName(location: Location, basename: string, stripBasename: boolean): string {\n return stripBasename ? stripBasenameFromPathname(location.pathname, basename) : location.pathname || '';\n}\n\n/**\n * Gets a normalized route name and transaction source from the current routes and location.\n */\nexport function getNormalizedName(\n routes: RouteObject[],\n location: Location,\n branches: RouteMatch[],\n basename: string = '',\n stripBasename: boolean = false,\n): [string, TransactionSource] {\n if (!routes || routes.length === 0) {\n return [stripBasename ? stripBasenameFromPathname(location.pathname, basename) : location.pathname, 'url'];\n }\n\n if (!branches) {\n return [getFallbackTransactionName(location, basename, stripBasename), 'url'];\n }\n\n let pathBuilder = '';\n\n for (const branch of branches) {\n const route = branch.route;\n if (!route) {\n continue;\n }\n\n // Early return for index routes\n if (route.index) {\n return sendIndexPath(pathBuilder, branch.pathname, basename, stripBasename);\n }\n\n const path = route.path;\n if (!path || pathIsWildcardAndHasChildren(path, branch)) {\n continue;\n }\n\n // Build the route path\n const newPath = path[0] === '/' || pathBuilder[pathBuilder.length - 1] === '/' ? path : `/${path}`;\n pathBuilder = trimSlash(pathBuilder) + prefixWithSlash(newPath);\n\n // Check if this path matches the current location\n if (trimSlash(location.pathname) !== trimSlash(basename + branch.pathname)) {\n continue;\n }\n\n // Check if this is a parameterized route like /stores/:storeId/products/:productId\n if (\n getNumberOfUrlSegments(pathBuilder) !== getNumberOfUrlSegments(branch.pathname) &&\n !pathEndsWithWildcard(pathBuilder)\n ) {\n return [(stripBasename ? '' : basename) + newPath, 'route'];\n }\n\n // Handle wildcard routes with children - strip trailing wildcard\n if (pathIsWildcardAndHasChildren(pathBuilder, branch)) {\n pathBuilder = pathBuilder.slice(0, -1);\n }\n\n return [(stripBasename ? '' : basename) + pathBuilder, 'route'];\n }\n\n // Fallback when no matching route found\n return [getFallbackTransactionName(location, basename, stripBasename), 'url'];\n}\n\n/**\n * Shared helper function to resolve route name and source\n */\nexport function resolveRouteNameAndSource(\n location: Location,\n routes: RouteObject[],\n allRoutes: RouteObject[],\n branches: RouteMatch[],\n config: ReactRouterConfig,\n): [string, TransactionSource] {\n const { matchRoutes, stripBasename, basename, lazyRouteManifest, enableAsyncRouteHandlers } = config;\n\n // When lazy route manifest is provided, use it as the primary source for transaction names\n if (enableAsyncRouteHandlers && lazyRouteManifest && lazyRouteManifest.length > 0) {\n const manifestMatch = matchRouteManifest(location.pathname, lazyRouteManifest, basename);\n if (manifestMatch) {\n return [(stripBasename ? '' : basename) + manifestMatch, 'route'];\n }\n }\n\n // Fall back to React Router route matching\n let name: string | undefined;\n let source: TransactionSource = 'url';\n\n const isInDescendantRoute = locationIsInsideDescendantRoute(location, allRoutes, matchRoutes);\n\n if (isInDescendantRoute) {\n name = prefixWithSlash(rebuildRoutePathFromAllRoutes(allRoutes, location, matchRoutes));\n source = 'route';\n }\n\n if (!isInDescendantRoute || !name) {\n [name, source] = getNormalizedName(routes, location, branches, basename, stripBasename);\n }\n\n // Guard against orphaned descendant subtrees stealing the transaction name: if the location is\n // anchored by a descendant-parent route (`.../*`) whose prefix was dropped, reconstruct with it.\n const anchoredName = reconstructNameFromDescendantParent(location, allRoutes, name, matchRoutes);\n if (anchoredName) {\n return [anchoredName, 'route'];\n }\n\n return [name || location.pathname, source];\n}\n\n/**\n * Gets the active root span if it's a pageload or navigation span.\n */\nexport function getActiveRootSpan(): Span | undefined {\n const span = getActiveSpan();\n const rootSpan = span ? getRootSpan(span) : undefined;\n\n if (!rootSpan) {\n return undefined;\n }\n\n const op = spanToJSON(rootSpan).attributes[SENTRY_OP];\n\n // Only use this root span if it is a pageload or navigation span\n return op === 'navigation' || op === 'pageload' ? rootSpan : undefined;\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"reactrouter.js","sources":["../../src/reactrouter.tsx"],"sourcesContent":["import {\n browserTracingIntegration,\n startBrowserTracingNavigationSpan,\n startBrowserTracingPageLoadSpan,\n WINDOW,\n} from '@sentry/browser';\nimport type { Client, Integration, Span, TransactionSource } from '@sentry/core';\nimport {\n getActiveSpan,\n getCurrentScope,\n getRootSpan,\n hasSpanStreamingEnabled,\n NAVIGATION_SPAN_NAME_FALLBACK,\n PAGELOAD_SPAN_NAME_FALLBACK,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n spanToJSON,\n} from '@sentry/core';\nimport type { ReactElement } from 'react';\nimport * as React from 'react';\nimport { hoistNonReactStatics } from './hoist-non-react-statics';\nimport type { Action, Location } from './types';\nimport { SENTRY_OP, SENTRY_SEGMENT_NAME_SOURCE, URL_TEMPLATE } from '@sentry/conventions/attributes';\nimport { NAVIGATION, PAGELOAD } from '@sentry/conventions/op';\n\n// We need to disable eslint no-explicit-any because any is required for the\n// react-router typings.\ntype Match = { path: string; url: string; params: Record<string, any>; isExact: boolean }; // eslint-disable-line @typescript-eslint/no-explicit-any\n\nexport type RouterHistory = {\n location?: Location;\n listen?(cb: (location: Location, action: Action) => void): void;\n} & Record<string, any>; // eslint-disable-line @typescript-eslint/no-explicit-any\n\nexport type RouteConfig = {\n [propName: string]: unknown;\n path?: string | string[];\n exact?: boolean;\n component?: ReactElement;\n routes?: RouteConfig[];\n};\n\nexport type MatchPath = (pathname: string, props: string | string[] | any, parent?: Match | null) => Match | null; // eslint-disable-line @typescript-eslint/no-explicit-any\n\ninterface ReactRouterOptions {\n history: RouterHistory;\n routes?: RouteConfig[];\n matchPath?: MatchPath;\n}\n\n/**\n * A browser tracing integration that uses React Router v4 to instrument navigations.\n * Expects `history` (and optionally `routes` and `matchPath`) to be passed as options.\n */\nexport function reactRouterV4BrowserTracingIntegration(\n options: Parameters<typeof browserTracingIntegration>[0] & ReactRouterOptions,\n): Integration {\n const integration = browserTracingIntegration({\n ...options,\n instrumentPageLoad: false,\n instrumentNavigation: false,\n });\n\n const { history, routes, matchPath, instrumentPageLoad = true, instrumentNavigation = true } = options;\n\n return {\n ...integration,\n afterAllSetup(client) {\n integration.afterAllSetup(client);\n\n instrumentReactRouter(\n client,\n instrumentPageLoad,\n instrumentNavigation,\n history,\n 'reactrouter_v4',\n routes,\n matchPath,\n );\n },\n };\n}\n\n/**\n * A browser tracing integration that uses React Router v5 to instrument navigations.\n * Expects `history` (and optionally `routes` and `matchPath`) to be passed as options.\n */\nexport function reactRouterV5BrowserTracingIntegration(\n options: Parameters<typeof browserTracingIntegration>[0] & ReactRouterOptions,\n): Integration {\n const integration = browserTracingIntegration({\n ...options,\n instrumentPageLoad: false,\n instrumentNavigation: false,\n });\n\n const { history, routes, matchPath, instrumentPageLoad = true, instrumentNavigation = true } = options;\n\n return {\n ...integration,\n afterAllSetup(client) {\n integration.afterAllSetup(client);\n\n instrumentReactRouter(\n client,\n instrumentPageLoad,\n instrumentNavigation,\n history,\n 'reactrouter_v5',\n routes,\n matchPath,\n );\n },\n };\n}\n\nfunction instrumentReactRouter(\n client: Client,\n instrumentPageLoad: boolean,\n instrumentNavigation: boolean,\n history: RouterHistory,\n instrumentationName: string,\n allRoutes: RouteConfig[] = [],\n matchPath?: MatchPath,\n): void {\n function getInitPathName(): string | undefined {\n if (history.location) {\n return history.location.pathname;\n }\n\n if (WINDOW.location) {\n return WINDOW.location.pathname;\n }\n\n return undefined;\n }\n\n /**\n * Normalizes a transaction name. Returns the new name as well as the\n * source of the transaction.\n *\n * @param pathname The initial pathname we normalize\n */\n function normalizeTransactionName(pathname: string): [string, TransactionSource] {\n if (allRoutes.length === 0 || !matchPath) {\n return [pathname, 'url'];\n }\n\n const branches = matchRoutes(allRoutes, pathname, matchPath);\n for (const branch of branches) {\n if (branch.match.isExact) {\n return [branch.match.path, 'route'];\n }\n }\n\n return [pathname, 'url'];\n }\n\n if (instrumentPageLoad) {\n const initPathName = getInitPathName();\n if (initPathName) {\n const [name, source] = normalizeTransactionName(initPathName);\n startBrowserTracingPageLoadSpan(client, {\n // With span streaming, span names have to be low cardinality, so we can't fall back to the URL.\n name: source === 'route' || !hasSpanStreamingEnabled(client) ? name : PAGELOAD_SPAN_NAME_FALLBACK,\n attributes: {\n [SENTRY_OP]: PAGELOAD,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: `auto.pageload.react.${instrumentationName}`,\n [SENTRY_SEGMENT_NAME_SOURCE]: source,\n ...(source === 'route' && { [URL_TEMPLATE]: name }),\n },\n });\n }\n }\n\n if (instrumentNavigation && history.listen) {\n history.listen((location, action) => {\n if (action && (action === 'PUSH' || action === 'POP')) {\n const [name, source] = normalizeTransactionName(location.pathname);\n startBrowserTracingNavigationSpan(client, {\n // With span streaming, span names have to be low cardinality, so we can't fall back to the URL.\n name: source === 'route' || !hasSpanStreamingEnabled(client) ? name : NAVIGATION_SPAN_NAME_FALLBACK,\n attributes: {\n [SENTRY_OP]: NAVIGATION,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: `auto.navigation.react.${instrumentationName}`,\n [SENTRY_SEGMENT_NAME_SOURCE]: source,\n ...(source === 'route' && { [URL_TEMPLATE]: name }),\n },\n });\n }\n });\n }\n}\n\n/**\n * Matches a set of routes to a pathname\n * Based on implementation from\n */\nfunction matchRoutes(\n routes: RouteConfig[],\n pathname: string,\n matchPath: MatchPath,\n branch: Array<{ route: RouteConfig; match: Match }> = [],\n): Array<{ route: RouteConfig; match: Match }> {\n routes.some(route => {\n const match = route.path\n ? matchPath(pathname, route)\n : branch.length\n ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n branch[branch.length - 1]!.match // use parent match\n : computeRootMatch(pathname); // use default \"root\" match\n\n if (match) {\n branch.push({ route, match });\n\n if (route.routes) {\n matchRoutes(route.routes, pathname, matchPath, branch);\n }\n }\n\n return !!match;\n });\n\n return branch;\n}\n\nfunction computeRootMatch(pathname: string): Match {\n return { path: '/', url: '/', params: {}, isExact: pathname === '/' };\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access */\nexport function withSentryRouting<P extends Record<string, any>, R extends React.ComponentType<P>>(Route: R): R {\n const componentDisplayName = Route.displayName || Route.name;\n\n const WrappedRoute: React.FC<P> = (props: P) => {\n if (props?.computedMatch?.isExact) {\n const route = props.computedMatch.path;\n const activeRootSpan = getActiveRootSpan();\n\n getCurrentScope().setTransactionName(route);\n\n if (activeRootSpan) {\n activeRootSpan.updateName(route);\n activeRootSpan.setAttributes({\n [SENTRY_SEGMENT_NAME_SOURCE]: 'route',\n [URL_TEMPLATE]: route,\n });\n }\n }\n\n // @ts-expect-error Setting more specific React Component typing for `R` generic above\n // will break advanced type inference done by react router params:\n // https://github.com/DefinitelyTyped/DefinitelyTyped/blob/13dc4235c069e25fe7ee16e11f529d909f9f3ff8/types/react-router/index.d.ts#L154-L164\n return <Route {...props} />;\n };\n\n WrappedRoute.displayName = `sentryRoute(${componentDisplayName})`;\n hoistNonReactStatics(WrappedRoute, Route);\n // @ts-expect-error Setting more specific React Component typing for `R` generic above\n // will break advanced type inference done by react router params:\n // https://github.com/DefinitelyTyped/DefinitelyTyped/blob/13dc4235c069e25fe7ee16e11f529d909f9f3ff8/types/react-router/index.d.ts#L154-L164\n return WrappedRoute;\n}\n/* eslint-enable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access */\n\nfunction getActiveRootSpan(): Span | undefined {\n const span = getActiveSpan();\n const rootSpan = span && getRootSpan(span);\n\n if (!rootSpan) {\n return undefined;\n }\n\n const op = spanToJSON(rootSpan).attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP];\n\n // Only use this root span if it is a pageload or navigation span\n return op === 'navigation' || op === 'pageload' ? rootSpan : undefined;\n}\n"],"names":[],"mappings":";;;;;;;AAsDO,SAAS,uCACd,OAAA,EACa;AACb,EAAA,MAAM,cAAc,yBAAA,CAA0B;AAAA,IAC5C,GAAG,OAAA;AAAA,IACH,kBAAA,EAAoB,KAAA;AAAA,IACpB,oBAAA,EAAsB;AAAA,GACvB,CAAA;AAED,EAAA,MAAM,EAAE,SAAS,MAAA,EAAQ,SAAA,EAAW,qBAAqB,IAAA,EAAM,oBAAA,GAAuB,MAAK,GAAI,OAAA;AAE/F,EAAA,OAAO;AAAA,IACL,GAAG,WAAA;AAAA,IACH,cAAc,MAAA,EAAQ;AACpB,MAAA,WAAA,CAAY,cAAc,MAAM,CAAA;AAEhC,MAAA,qBAAA;AAAA,QACE,MAAA;AAAA,QACA,kBAAA;AAAA,QACA,oBAAA;AAAA,QACA,OAAA;AAAA,QACA,gBAAA;AAAA,QACA,MAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF;AAAA,GACF;AACF;AAMO,SAAS,uCACd,OAAA,EACa;AACb,EAAA,MAAM,cAAc,yBAAA,CAA0B;AAAA,IAC5C,GAAG,OAAA;AAAA,IACH,kBAAA,EAAoB,KAAA;AAAA,IACpB,oBAAA,EAAsB;AAAA,GACvB,CAAA;AAED,EAAA,MAAM,EAAE,SAAS,MAAA,EAAQ,SAAA,EAAW,qBAAqB,IAAA,EAAM,oBAAA,GAAuB,MAAK,GAAI,OAAA;AAE/F,EAAA,OAAO;AAAA,IACL,GAAG,WAAA;AAAA,IACH,cAAc,MAAA,EAAQ;AACpB,MAAA,WAAA,CAAY,cAAc,MAAM,CAAA;AAEhC,MAAA,qBAAA;AAAA,QACE,MAAA;AAAA,QACA,kBAAA;AAAA,QACA,oBAAA;AAAA,QACA,OAAA;AAAA,QACA,gBAAA;AAAA,QACA,MAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF;AAAA,GACF;AACF;AAEA,SAAS,qBAAA,CACP,QACA,kBAAA,EACA,oBAAA,EACA,SACA,mBAAA,EACA,SAAA,GAA2B,EAAC,EAC5B,SAAA,EACM;AACN,EAAA,SAAS,eAAA,GAAsC;AAC7C,IAAA,IAAI,QAAQ,QAAA,EAAU;AACpB,MAAA,OAAO,QAAQ,QAAA,CAAS,QAAA;AAAA,IAC1B;AAEA,IAAA,IAAI,OAAO,QAAA,EAAU;AACnB,MAAA,OAAO,OAAO,QAAA,CAAS,QAAA;AAAA,IACzB;AAEA,IAAA,OAAO,MAAA;AAAA,EACT;AAQA,EAAA,SAAS,yBAAyB,QAAA,EAA+C;AAC/E,IAAA,IAAI,SAAA,CAAU,MAAA,KAAW,CAAA,IAAK,CAAC,SAAA,EAAW;AACxC,MAAA,OAAO,CAAC,UAAU,KAAK,CAAA;AAAA,IACzB;AAEA,IAAA,MAAM,QAAA,GAAW,WAAA,CAAY,SAAA,EAAW,QAAA,EAAU,SAAS,CAAA;AAC3D,IAAA,KAAA,MAAW,UAAU,QAAA,EAAU;AAC7B,MAAA,IAAI,MAAA,CAAO,MAAM,OAAA,EAAS;AACxB,QAAA,OAAO,CAAC,MAAA,CAAO,KAAA,CAAM,IAAA,EAAM,OAAO,CAAA;AAAA,MACpC;AAAA,IACF;AAEA,IAAA,OAAO,CAAC,UAAU,KAAK,CAAA;AAAA,EACzB;AAEA,EAAA,IAAI,kBAAA,EAAoB;AACtB,IAAA,MAAM,eAAe,eAAA,EAAgB;AACrC,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,MAAM,CAAC,IAAA,EAAM,MAAM,CAAA,GAAI,yBAAyB,YAAY,CAAA;AAC5D,MAAA,+BAAA,CAAgC,MAAA,EAAQ;AAAA;AAAA,QAEtC,MAAM,MAAA,KAAW,OAAA,IAAW,CAAC,uBAAA,CAAwB,MAAM,IAAI,IAAA,GAAO,2BAAA;AAAA,QACtE,UAAA,EAAY;AAAA,UACV,CAAC,SAAS,GAAG,QAAA;AAAA,UACb,CAAC,gCAAgC,GAAG,CAAA,oBAAA,EAAuB,mBAAmB,CAAA,CAAA;AAAA,UAC9E,CAAC,0BAA0B,GAAG,MAAA;AAAA,UAC9B,GAAI,MAAA,KAAW,OAAA,IAAW,EAAE,CAAC,YAAY,GAAG,IAAA;AAAK;AACnD,OACD,CAAA;AAAA,IACH;AAAA,EACF;AAEA,EAAA,IAAI,oBAAA,IAAwB,QAAQ,MAAA,EAAQ;AAC1C,IAAA,OAAA,CAAQ,MAAA,CAAO,CAAC,QAAA,EAAU,MAAA,KAAW;AACnC,MAAA,IAAI,MAAA,KAAW,MAAA,KAAW,MAAA,IAAU,MAAA,KAAW,KAAA,CAAA,EAAQ;AACrD,QAAA,MAAM,CAAC,IAAA,EAAM,MAAM,CAAA,GAAI,wBAAA,CAAyB,SAAS,QAAQ,CAAA;AACjE,QAAA,iCAAA,CAAkC,MAAA,EAAQ;AAAA;AAAA,UAExC,MAAM,MAAA,KAAW,OAAA,IAAW,CAAC,uBAAA,CAAwB,MAAM,IAAI,IAAA,GAAO,6BAAA;AAAA,UACtE,UAAA,EAAY;AAAA,YACV,CAAC,SAAS,GAAG,UAAA;AAAA,YACb,CAAC,gCAAgC,GAAG,CAAA,sBAAA,EAAyB,mBAAmB,CAAA,CAAA;AAAA,YAChF,CAAC,0BAA0B,GAAG,MAAA;AAAA,YAC9B,GAAI,MAAA,KAAW,OAAA,IAAW,EAAE,CAAC,YAAY,GAAG,IAAA;AAAK;AACnD,SACD,CAAA;AAAA,MACH;AAAA,IACF,CAAC,CAAA;AAAA,EACH;AACF;AAMA,SAAS,YACP,MAAA,EACA,QAAA,EACA,SAAA,EACA,MAAA,GAAsD,EAAC,EACV;AAC7C,EAAA,MAAA,CAAO,KAAK,CAAA,KAAA,KAAS;AACnB,IAAA,MAAM,QAAQ,KAAA,CAAM,IAAA,GAChB,UAAU,QAAA,EAAU,KAAK,IACzB,MAAA,CAAO,MAAA;AAAA;AAAA,MAEL,MAAA,CAAO,MAAA,CAAO,MAAA,GAAS,CAAC,CAAA,CAAG;AAAA,QAC3B,iBAAiB,QAAQ,CAAA;AAE/B,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,MAAA,CAAO,IAAA,CAAK,EAAE,KAAA,EAAO,KAAA,EAAO,CAAA;AAE5B,MAAA,IAAI,MAAM,MAAA,EAAQ;AAChB,QAAA,WAAA,CAAY,KAAA,CAAM,MAAA,EAAQ,QAAA,EAAU,SAAA,EAAW,MAAM,CAAA;AAAA,MACvD;AAAA,IACF;AAEA,IAAA,OAAO,CAAC,CAAC,KAAA;AAAA,EACX,CAAC,CAAA;AAED,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,iBAAiB,QAAA,EAAyB;AACjD,EAAA,OAAO,EAAE,IAAA,EAAM,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,QAAQ,EAAC,EAAG,OAAA,EAAS,QAAA,KAAa,GAAA,EAAI;AACtE;AAGO,SAAS,kBAAmF,KAAA,EAAa;AAC9G,EAAA,MAAM,oBAAA,GAAuB,KAAA,CAAM,WAAA,IAAe,KAAA,CAAM,IAAA;AAExD,EAAA,MAAM,YAAA,GAA4B,CAAC,KAAA,KAAa;AAC9C,IAAA,IAAI,KAAA,EAAO,eAAe,OAAA,EAAS;AACjC,MAAA,MAAM,KAAA,GAAQ,MAAM,aAAA,CAAc,IAAA;AAClC,MAAA,MAAM,iBAAiB,iBAAA,EAAkB;AAEzC,MAAA,eAAA,EAAgB,CAAE,mBAAmB,KAAK,CAAA;AAE1C,MAAA,IAAI,cAAA,EAAgB;AAClB,QAAA,cAAA,CAAe,WAAW,KAAK,CAAA;AAC/B,QAAA,cAAA,CAAe,aAAA,CAAc;AAAA,UAC3B,CAAC,0BAA0B,GAAG,OAAA;AAAA,UAC9B,CAAC,YAAY,GAAG;AAAA,SACjB,CAAA;AAAA,MACH;AAAA,IACF;AAKA,IAAA,uBAAO,KAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAO,GAAG,KAAA,EAAO,CAAA;AAAA,EAC3B,CAAA;AAEA,EAAA,YAAA,CAAa,WAAA,GAAc,eAAe,oBAAoB,CAAA,CAAA,CAAA;AAC9D,EAAA,oBAAA,CAAqB,cAAc,KAAK,CAAA;AAIxC,EAAA,OAAO,YAAA;AACT;AAGA,SAAS,iBAAA,GAAsC;AAC7C,EAAA,MAAM,OAAO,aAAA,EAAc;AAC3B,EAAA,MAAM,QAAA,GAAW,IAAA,IAAQ,WAAA,CAAY,IAAI,CAAA;AAEzC,EAAA,IAAI,CAAC,QAAA,EAAU;AACb,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,MAAM,EAAA,GAAK,UAAA,CAAW,QAAQ,CAAA,CAAE,WAAW,4BAA4B,CAAA;AAGvE,EAAA,OAAO,EAAA,KAAO,YAAA,IAAgB,EAAA,KAAO,UAAA,GAAa,QAAA,GAAW,MAAA;AAC/D;;;;"}
1
+ {"version":3,"file":"reactrouter.js","sources":["../../src/reactrouter.tsx"],"sourcesContent":["import {\n browserTracingIntegration,\n startBrowserTracingNavigationSpan,\n startBrowserTracingPageLoadSpan,\n WINDOW,\n} from '@sentry/browser';\nimport type { Client, Integration, Span, TransactionSource } from '@sentry/core';\nimport {\n getActiveSpan,\n getCurrentScope,\n getRootSpan,\n hasSpanStreamingEnabled,\n NAVIGATION_SPAN_NAME_FALLBACK,\n PAGELOAD_SPAN_NAME_FALLBACK,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n spanToJSON,\n} from '@sentry/core';\nimport type { ReactElement } from 'react';\nimport * as React from 'react';\nimport { hoistNonReactStatics } from './hoist-non-react-statics';\nimport type { Action, Location } from './types';\nimport { SENTRY_OP, SENTRY_SEGMENT_NAME_SOURCE, URL_TEMPLATE } from '@sentry/conventions/attributes';\nimport { NAVIGATION, PAGELOAD } from '@sentry/conventions/op';\n\n// We need to disable eslint no-explicit-any because any is required for the\n// react-router typings.\ntype Match = { path: string; url: string; params: Record<string, any>; isExact: boolean }; // eslint-disable-line @typescript-eslint/no-explicit-any\n\nexport type RouterHistory = {\n location?: Location;\n listen?(cb: (location: Location, action: Action) => void): void;\n} & Record<string, any>; // eslint-disable-line @typescript-eslint/no-explicit-any\n\nexport type RouteConfig = {\n [propName: string]: unknown;\n path?: string | string[];\n exact?: boolean;\n component?: ReactElement;\n routes?: RouteConfig[];\n};\n\nexport type MatchPath = (pathname: string, props: string | string[] | any, parent?: Match | null) => Match | null; // eslint-disable-line @typescript-eslint/no-explicit-any\n\ninterface ReactRouterOptions {\n history: RouterHistory;\n routes?: RouteConfig[];\n matchPath?: MatchPath;\n}\n\n/**\n * A browser tracing integration that uses React Router v4 to instrument navigations.\n * Expects `history` (and optionally `routes` and `matchPath`) to be passed as options.\n */\nexport function reactRouterV4BrowserTracingIntegration(\n options: Parameters<typeof browserTracingIntegration>[0] & ReactRouterOptions,\n): Integration {\n const integration = browserTracingIntegration({\n ...options,\n instrumentPageLoad: false,\n instrumentNavigation: false,\n });\n\n const { history, routes, matchPath, instrumentPageLoad = true, instrumentNavigation = true } = options;\n\n return {\n ...integration,\n afterAllSetup(client) {\n integration.afterAllSetup(client);\n\n instrumentReactRouter(\n client,\n instrumentPageLoad,\n instrumentNavigation,\n history,\n 'reactrouter_v4',\n routes,\n matchPath,\n );\n },\n };\n}\n\n/**\n * A browser tracing integration that uses React Router v5 to instrument navigations.\n * Expects `history` (and optionally `routes` and `matchPath`) to be passed as options.\n */\nexport function reactRouterV5BrowserTracingIntegration(\n options: Parameters<typeof browserTracingIntegration>[0] & ReactRouterOptions,\n): Integration {\n const integration = browserTracingIntegration({\n ...options,\n instrumentPageLoad: false,\n instrumentNavigation: false,\n });\n\n const { history, routes, matchPath, instrumentPageLoad = true, instrumentNavigation = true } = options;\n\n return {\n ...integration,\n afterAllSetup(client) {\n integration.afterAllSetup(client);\n\n instrumentReactRouter(\n client,\n instrumentPageLoad,\n instrumentNavigation,\n history,\n 'reactrouter_v5',\n routes,\n matchPath,\n );\n },\n };\n}\n\nfunction instrumentReactRouter(\n client: Client,\n instrumentPageLoad: boolean,\n instrumentNavigation: boolean,\n history: RouterHistory,\n instrumentationName: string,\n allRoutes: RouteConfig[] = [],\n matchPath?: MatchPath,\n): void {\n function getInitPathName(): string | undefined {\n if (history.location) {\n return history.location.pathname;\n }\n\n if (WINDOW.location) {\n return WINDOW.location.pathname;\n }\n\n return undefined;\n }\n\n /**\n * Normalizes a transaction name. Returns the new name as well as the\n * source of the transaction.\n *\n * @param pathname The initial pathname we normalize\n */\n function normalizeTransactionName(pathname: string): [string, TransactionSource] {\n if (allRoutes.length === 0 || !matchPath) {\n return [pathname, 'url'];\n }\n\n const branches = matchRoutes(allRoutes, pathname, matchPath);\n for (const branch of branches) {\n if (branch.match.isExact) {\n return [branch.match.path, 'route'];\n }\n }\n\n return [pathname, 'url'];\n }\n\n if (instrumentPageLoad) {\n const initPathName = getInitPathName();\n if (initPathName) {\n const [name, source] = normalizeTransactionName(initPathName);\n startBrowserTracingPageLoadSpan(client, {\n // With span streaming, span names have to be low cardinality, so we can't fall back to the URL.\n name: source === 'route' || !hasSpanStreamingEnabled(client) ? name : PAGELOAD_SPAN_NAME_FALLBACK,\n attributes: {\n [SENTRY_OP]: PAGELOAD,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: `auto.pageload.react.${instrumentationName}`,\n [SENTRY_SEGMENT_NAME_SOURCE]: source,\n ...(source === 'route' && { [URL_TEMPLATE]: name }),\n },\n });\n }\n }\n\n if (instrumentNavigation && history.listen) {\n history.listen((location, action) => {\n if (action && (action === 'PUSH' || action === 'POP')) {\n const [name, source] = normalizeTransactionName(location.pathname);\n startBrowserTracingNavigationSpan(client, {\n // With span streaming, span names have to be low cardinality, so we can't fall back to the URL.\n name: source === 'route' || !hasSpanStreamingEnabled(client) ? name : NAVIGATION_SPAN_NAME_FALLBACK,\n attributes: {\n [SENTRY_OP]: NAVIGATION,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: `auto.navigation.react.${instrumentationName}`,\n [SENTRY_SEGMENT_NAME_SOURCE]: source,\n ...(source === 'route' && { [URL_TEMPLATE]: name }),\n },\n });\n }\n });\n }\n}\n\n/**\n * Matches a set of routes to a pathname\n * Based on implementation from\n */\nfunction matchRoutes(\n routes: RouteConfig[],\n pathname: string,\n matchPath: MatchPath,\n branch: Array<{ route: RouteConfig; match: Match }> = [],\n): Array<{ route: RouteConfig; match: Match }> {\n routes.some(route => {\n const match = route.path\n ? matchPath(pathname, route)\n : branch.length\n ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n branch[branch.length - 1]!.match // use parent match\n : computeRootMatch(pathname); // use default \"root\" match\n\n if (match) {\n branch.push({ route, match });\n\n if (route.routes) {\n matchRoutes(route.routes, pathname, matchPath, branch);\n }\n }\n\n return !!match;\n });\n\n return branch;\n}\n\nfunction computeRootMatch(pathname: string): Match {\n return { path: '/', url: '/', params: {}, isExact: pathname === '/' };\n}\n\n/**\n * A higher-order component that adds Sentry routing instrumentation to a React Router v4 or v5 `Route` component.\n * When the wrapped `Route` matches, the active pageload/navigation span is renamed to the parameterized route path.\n *\n * The wrapped `Route` must be rendered inside a `Switch`, since the match is read from the `computedMatch` prop\n * that only `Switch` passes down. For React Router v6 and later, use `wrapReactRouterRouting` instead.\n *\n * @example\n * ```jsx\n * const SentryRoute = Sentry.withSentryRouting(Route);\n *\n * <Switch>\n * <SentryRoute path=\"/users/:id\" component={User} />\n * </Switch>\n * ```\n */\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access */\nexport function withSentryRouting<P extends Record<string, any>, R extends React.ComponentType<P>>(Route: R): R {\n const componentDisplayName = Route.displayName || Route.name;\n\n const WrappedRoute: React.FC<P> = (props: P) => {\n if (props?.computedMatch?.isExact) {\n const route = props.computedMatch.path;\n const activeRootSpan = getActiveRootSpan();\n\n getCurrentScope().setTransactionName(route);\n\n if (activeRootSpan) {\n activeRootSpan.updateName(route);\n activeRootSpan.setAttributes({\n [SENTRY_SEGMENT_NAME_SOURCE]: 'route',\n [URL_TEMPLATE]: route,\n });\n }\n }\n\n // @ts-expect-error Setting more specific React Component typing for `R` generic above\n // will break advanced type inference done by react router params:\n // https://github.com/DefinitelyTyped/DefinitelyTyped/blob/13dc4235c069e25fe7ee16e11f529d909f9f3ff8/types/react-router/index.d.ts#L154-L164\n return <Route {...props} />;\n };\n\n WrappedRoute.displayName = `sentryRoute(${componentDisplayName})`;\n hoistNonReactStatics(WrappedRoute, Route);\n // @ts-expect-error Setting more specific React Component typing for `R` generic above\n // will break advanced type inference done by react router params:\n // https://github.com/DefinitelyTyped/DefinitelyTyped/blob/13dc4235c069e25fe7ee16e11f529d909f9f3ff8/types/react-router/index.d.ts#L154-L164\n return WrappedRoute;\n}\n/* eslint-enable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access */\n\nfunction getActiveRootSpan(): Span | undefined {\n const span = getActiveSpan();\n const rootSpan = span && getRootSpan(span);\n\n if (!rootSpan) {\n return undefined;\n }\n\n const op = spanToJSON(rootSpan).attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP];\n\n // Only use this root span if it is a pageload or navigation span\n return op === 'navigation' || op === 'pageload' ? rootSpan : undefined;\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { browserTracingIntegration } from '@sentry/browser';
2
+ import type { Integration } from '@sentry/core';
3
+ import type { ReactRouterOptions } from './reactrouter-compat-utils';
4
+ export { wrapReactRouterRouting, wrapCreateBrowserRouter, wrapCreateMemoryRouter, wrapUseRoutes, } from './reactrouter.compat';
5
+ type BrowserTracingOptions = Parameters<typeof browserTracingIntegration>[0];
6
+ /**
7
+ * A browser tracing integration for React Router v6, v7 and v8.
8
+ *
9
+ * Unlike {@link reactRouterBrowserTracingIntegration} exported from `@sentry/react`, this variant pulls the
10
+ * required router hooks (`useLocation`, `useNavigationType`, `createRoutesFromChildren` and `matchRoutes`)
11
+ * directly from `react-router`, so you don't have to pass them in:
12
+ *
13
+ * ```ts
14
+ * import { reactRouterBrowserTracingIntegration } from '@sentry/react/react-router';
15
+ *
16
+ * Sentry.init({ integrations: [reactRouterBrowserTracingIntegration()] });
17
+ * ```
18
+ *
19
+ * Any of the hooks can still be overridden via `options` (e.g. to supply the `react-router-dom` versions in v6).
20
+ *
21
+ * This requires `react-router` to be resolvable (it is declared as an optional peer dependency). If you are on
22
+ * React Router v6 with only `react-router-dom` installed, either add `react-router` as a dependency or import
23
+ * `reactRouterBrowserTracingIntegration` from `@sentry/react` and pass the hooks explicitly.
24
+ */
25
+ export declare function reactRouterBrowserTracingIntegration(options?: BrowserTracingOptions & Partial<ReactRouterOptions>): Integration;
26
+ //# sourceMappingURL=react-router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react-router.d.ts","sourceRoot":"","sources":["../../src/react-router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAMrE,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,aAAa,GACd,MAAM,sBAAsB,CAAC;AAE9B,KAAK,qBAAqB,GAAG,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC;AAE7E;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,oCAAoC,CAClD,OAAO,GAAE,qBAAqB,GAAG,OAAO,CAAC,kBAAkB,CAAM,GAChE,WAAW,CAQb"}
@@ -1,5 +1,5 @@
1
1
  export type { ReactRouterOptions } from './instrumentation';
2
2
  export { createReactRouterV6CompatibleTracingIntegration, createV6CompatibleWithSentryReactRouterRouting, createV6CompatibleWrapCreateBrowserRouter, createV6CompatibleWrapCreateMemoryRouter, createV6CompatibleWrapUseRoutes, handleNavigation, addResolvedRoutesToParent, processResolvedRoutes, updateNavigationSpan, } from './instrumentation';
3
- export { resolveRouteNameAndSource, getNormalizedName, initializeRouterUtils, locationIsInsideDescendantRoute, prefixWithSlash, rebuildRoutePathFromAllRoutes, pathEndsWithWildcard, pathIsWildcardAndHasChildren, getNumberOfUrlSegments, transactionNameHasWildcard, getActiveRootSpan, setNavigationContext, clearNavigationContext, getNavigationContext, } from './utils';
3
+ export { resolveRouteNameAndSource, getNormalizedName, locationIsInsideDescendantRoute, prefixWithSlash, rebuildRoutePathFromAllRoutes, pathEndsWithWildcard, pathIsWildcardAndHasChildren, getNumberOfUrlSegments, transactionNameHasWildcard, getActiveRootSpan, setNavigationContext, clearNavigationContext, getNavigationContext, } from './utils';
4
4
  export { createAsyncHandlerProxy, handleAsyncHandlerResult, checkRouteForAsyncHandler } from './lazy-routes';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/reactrouter-compat-utils/index.ts"],"names":[],"mappings":"AAGA,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EACL,+CAA+C,EAC/C,8CAA8C,EAC9C,yCAAyC,EACzC,wCAAwC,EACxC,+BAA+B,EAC/B,gBAAgB,EAChB,yBAAyB,EACzB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,yBAAyB,EACzB,iBAAiB,EACjB,qBAAqB,EACrB,+BAA+B,EAC/B,eAAe,EACf,6BAA6B,EAC7B,oBAAoB,EACpB,4BAA4B,EAC5B,sBAAsB,EACtB,0BAA0B,EAC1B,iBAAiB,EAEjB,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/reactrouter-compat-utils/index.ts"],"names":[],"mappings":"AAGA,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EACL,+CAA+C,EAC/C,8CAA8C,EAC9C,yCAAyC,EACzC,wCAAwC,EACxC,+BAA+B,EAC/B,gBAAgB,EAChB,yBAAyB,EACzB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,yBAAyB,EACzB,iBAAiB,EACjB,+BAA+B,EAC/B,eAAe,EACf,6BAA6B,EAC7B,oBAAoB,EACpB,4BAA4B,EAC5B,sBAAsB,EACtB,0BAA0B,EAC1B,iBAAiB,EAEjB,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { browserTracingIntegration } from '@sentry/browser';
2
2
  import type { Integration, Span } from '@sentry/core';
3
3
  import * as React from 'react';
4
- import type { Action, AgnosticDataRouteMatch, CreateRouterFunction, CreateRoutesFromChildren, Location, MatchRoutes, RouteObject, Router, RouterState, UseEffect, UseLocation, UseNavigationType, UseRoutes } from '../types';
4
+ import type { Action, AgnosticDataRouteMatch, CreateRouterFunction, CreateRoutesFromChildren, Location, MatchRoutes, ReactRouterConfig, RouteObject, Router, RouterState, UseEffect, UseLocation, UseNavigationType, UseRoutes } from '../types';
5
5
  export declare const allRoutes: Set<RouteObject>;
6
6
  /**
7
7
  * Computes location key for duplicate detection. Normalizes undefined/null to empty strings.
@@ -27,7 +27,11 @@ export declare function shouldSkipNavigation(trackedNav: {
27
27
  shouldUpdate: boolean;
28
28
  };
29
29
  export interface ReactRouterOptions {
30
- useEffect: UseEffect;
30
+ /**
31
+ * @deprecated This is no longer used - the instrumentation relies on React's own effect hook. It is kept
32
+ * as an optional field for backwards compatibility and can safely be omitted.
33
+ */
34
+ useEffect?: UseEffect;
31
35
  useLocation: UseLocation;
32
36
  useNavigationType: UseNavigationType;
33
37
  createRoutesFromChildren: CreateRoutesFromChildren;
@@ -84,11 +88,11 @@ export declare function addResolvedRoutesToParent(resolvedRoutes: RouteObject[],
84
88
  * When capturedSpan is provided, updates that specific span instead of the current active span.
85
89
  * This prevents race conditions where a lazy handler resolves after the user has navigated away.
86
90
  */
87
- export declare function processResolvedRoutes(resolvedRoutes: RouteObject[], parentRoute?: RouteObject, currentLocation?: Location | null, capturedSpan?: Span): void;
91
+ export declare function processResolvedRoutes(resolvedRoutes: RouteObject[], config: ReactRouterConfig, parentRoute?: RouteObject, currentLocation?: Location | null, capturedSpan?: Span): void;
88
92
  /**
89
93
  * Updates a navigation span with the correct route name after lazy routes have been loaded.
90
94
  */
91
- export declare function updateNavigationSpan(activeRootSpan: Span, location: Location, allRoutes: RouteObject[], forceUpdate: boolean | undefined, matchRoutes: MatchRoutes): void;
95
+ export declare function updateNavigationSpan(activeRootSpan: Span, location: Location, allRoutes: RouteObject[], forceUpdate: boolean | undefined, config: ReactRouterConfig): void;
92
96
  /**
93
97
  * Creates a wrapCreateBrowserRouter function that can be used with all React Router v6 compatible versions.
94
98
  */
@@ -107,8 +111,8 @@ export declare function handleNavigation(opts: {
107
111
  routes: RouteObject[];
108
112
  navigationType: Action;
109
113
  version: V6CompatibleVersion;
114
+ config: ReactRouterConfig;
110
115
  matches?: AgnosticDataRouteMatch;
111
- basename?: string;
112
116
  allRoutes?: RouteObject[];
113
117
  }): void;
114
118
  export declare function addRoutesToAllRoutes(routes: RouteObject[]): RouteObject[];
@@ -1 +1 @@
1
- {"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../../src/reactrouter-compat-utils/instrumentation.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../../src/reactrouter-compat-utils/instrumentation.tsx"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { Span, TransactionSource } from '@sentry/core';
2
- import type { Location, MatchRoutes, RouteMatch, RouteObject } from '../types';
2
+ import type { Location, MatchRoutes, ReactRouterConfig, RouteMatch, RouteObject } from '../types';
3
3
  interface NavigationContext {
4
4
  token: object;
5
5
  targetPath: string | undefined;
@@ -18,11 +18,6 @@ export declare function setNavigationContext(targetPath: string | undefined, spa
18
18
  export declare function clearNavigationContext(token: object): void;
19
19
  /** Gets the current (most recent) navigation context if inside a patchRoutesOnNavigation call. */
20
20
  export declare function getNavigationContext(): NavigationContext | null;
21
- /**
22
- * Initialize function to set dependencies that the router utilities need.
23
- * Must be called before using any of the exported utility functions.
24
- */
25
- export declare function initializeRouterUtils(matchRoutes: MatchRoutes, stripBasename?: boolean): void;
26
21
  /**
27
22
  * Checks if a path ends with a wildcard character (*).
28
23
  */
@@ -50,19 +45,19 @@ export declare function prefixWithSlash(path: string): string;
50
45
  /**
51
46
  * Rebuilds the route path from all available routes by matching against the current location.
52
47
  */
53
- export declare function rebuildRoutePathFromAllRoutes(allRoutes: RouteObject[], location: Location): string;
48
+ export declare function rebuildRoutePathFromAllRoutes(allRoutes: RouteObject[], location: Location, matchRoutes: MatchRoutes): string;
54
49
  /**
55
50
  * Checks if the current location is inside a descendant route (route with splat parameter).
56
51
  */
57
- export declare function locationIsInsideDescendantRoute(location: Location, routes: RouteObject[]): boolean;
52
+ export declare function locationIsInsideDescendantRoute(location: Location, routes: RouteObject[], matchRoutes: MatchRoutes): boolean;
58
53
  /**
59
54
  * Gets a normalized route name and transaction source from the current routes and location.
60
55
  */
61
- export declare function getNormalizedName(routes: RouteObject[], location: Location, branches: RouteMatch[], basename?: string): [string, TransactionSource];
56
+ export declare function getNormalizedName(routes: RouteObject[], location: Location, branches: RouteMatch[], basename?: string, stripBasename?: boolean): [string, TransactionSource];
62
57
  /**
63
58
  * Shared helper function to resolve route name and source
64
59
  */
65
- export declare function resolveRouteNameAndSource(location: Location, routes: RouteObject[], allRoutes: RouteObject[], branches: RouteMatch[], basename?: string, lazyRouteManifest?: string[], enableAsyncRouteHandlers?: boolean): [string, TransactionSource];
60
+ export declare function resolveRouteNameAndSource(location: Location, routes: RouteObject[], allRoutes: RouteObject[], branches: RouteMatch[], config: ReactRouterConfig): [string, TransactionSource];
66
61
  /**
67
62
  * Gets the active root span if it's a pageload or navigation span.
68
63
  */
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/reactrouter-compat-utils/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAG5D,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAU/E,UAAU,iBAAiB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,IAAI,EAAE,IAAI,GAAG,SAAS,CAAC;CACxB;AAKD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,SAAS,GAAG,MAAM,CASnG;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAK1D;AAED,kGAAkG;AAClG,wBAAgB,oBAAoB,IAAI,iBAAiB,GAAG,IAAI,CAI/D;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,WAAW,EAAE,aAAa,GAAE,OAAe,GAAG,IAAI,CAGpG;AAmBD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,mEAAmE;AACnE,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhE;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,OAAO,CAE9F;AAED,uEAAuE;AACvE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAE7D;AAsBD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG1D;AAID;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,WAAW,EAAE,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,CA+BlG;AAqDD;;GAEG;AACH,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAYlG;AASD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,EAAE,EACrB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,UAAU,EAAE,EACtB,QAAQ,GAAE,MAAW,GACpB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAsD7B;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,WAAW,EAAE,EACrB,SAAS,EAAE,WAAW,EAAE,EACxB,QAAQ,EAAE,UAAU,EAAE,EACtB,QAAQ,GAAE,MAAW,EACrB,iBAAiB,CAAC,EAAE,MAAM,EAAE,EAC5B,wBAAwB,CAAC,EAAE,OAAO,GACjC,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAgC7B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,GAAG,SAAS,CAYpD"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/reactrouter-compat-utils/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAG5D,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAMlG,UAAU,iBAAiB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,IAAI,EAAE,IAAI,GAAG,SAAS,CAAC;CACxB;AAKD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,SAAS,GAAG,MAAM,CASnG;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAK1D;AAED,kGAAkG;AAClG,wBAAgB,oBAAoB,IAAI,iBAAiB,GAAG,IAAI,CAI/D;AAmBD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,mEAAmE;AACnE,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhE;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,OAAO,CAE9F;AAED,uEAAuE;AACvE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAE7D;AA2BD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG1D;AAID;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,WAAW,EAAE,EACxB,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,GACvB,MAAM,CAgCR;AAuDD;;GAEG;AACH,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,WAAW,EAAE,EACrB,WAAW,EAAE,WAAW,GACvB,OAAO,CAYT;AASD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,EAAE,EACrB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,UAAU,EAAE,EACtB,QAAQ,GAAE,MAAW,EACrB,aAAa,GAAE,OAAe,GAC7B,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAsD7B;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,WAAW,EAAE,EACrB,SAAS,EAAE,WAAW,EAAE,EACxB,QAAQ,EAAE,UAAU,EAAE,EACtB,MAAM,EAAE,iBAAiB,GACxB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAkC7B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,GAAG,SAAS,CAYpD"}
@@ -36,6 +36,22 @@ export declare function reactRouterV4BrowserTracingIntegration(options: Paramete
36
36
  * Expects `history` (and optionally `routes` and `matchPath`) to be passed as options.
37
37
  */
38
38
  export declare function reactRouterV5BrowserTracingIntegration(options: Parameters<typeof browserTracingIntegration>[0] & ReactRouterOptions): Integration;
39
+ /**
40
+ * A higher-order component that adds Sentry routing instrumentation to a React Router v4 or v5 `Route` component.
41
+ * When the wrapped `Route` matches, the active pageload/navigation span is renamed to the parameterized route path.
42
+ *
43
+ * The wrapped `Route` must be rendered inside a `Switch`, since the match is read from the `computedMatch` prop
44
+ * that only `Switch` passes down. For React Router v6 and later, use `wrapReactRouterRouting` instead.
45
+ *
46
+ * @example
47
+ * ```jsx
48
+ * const SentryRoute = Sentry.withSentryRouting(Route);
49
+ *
50
+ * <Switch>
51
+ * <SentryRoute path="/users/:id" component={User} />
52
+ * </Switch>
53
+ * ```
54
+ */
39
55
  export declare function withSentryRouting<P extends Record<string, any>, R extends React.ComponentType<P>>(Route: R): R;
40
56
  export {};
41
57
  //# sourceMappingURL=reactrouter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reactrouter.d.ts","sourceRoot":"","sources":["../../src/reactrouter.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EAI1B,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAU,WAAW,EAA2B,MAAM,cAAc,CAAC;AAYjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAMhD,KAAK,KAAK,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAE1F,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;CACjE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAExB,MAAM,MAAM,WAAW,GAAG;IACxB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,GAAG,EAAE,MAAM,CAAC,EAAE,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,IAAI,CAAC;AAElH,UAAU,kBAAkB;IAC1B,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,sCAAsC,CACpD,OAAO,EAAE,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAC,CAAC,CAAC,GAAG,kBAAkB,GAC5E,WAAW,CAyBb;AAED;;;GAGG;AACH,wBAAgB,sCAAsC,CACpD,OAAO,EAAE,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAC,CAAC,CAAC,GAAG,kBAAkB,GAC5E,WAAW,CAyBb;AAqHD,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,SAAS,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CA+B9G"}
1
+ {"version":3,"file":"reactrouter.d.ts","sourceRoot":"","sources":["../../src/reactrouter.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EAI1B,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAU,WAAW,EAA2B,MAAM,cAAc,CAAC;AAYjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAMhD,KAAK,KAAK,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAE1F,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;CACjE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAExB,MAAM,MAAM,WAAW,GAAG;IACxB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,GAAG,EAAE,MAAM,CAAC,EAAE,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,IAAI,CAAC;AAElH,UAAU,kBAAkB;IAC1B,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,sCAAsC,CACpD,OAAO,EAAE,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAC,CAAC,CAAC,GAAG,kBAAkB,GAC5E,WAAW,CAyBb;AAED;;;GAGG;AACH,wBAAgB,sCAAsC,CACpD,OAAO,EAAE,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAC,CAAC,CAAC,GAAG,kBAAkB,GAC5E,WAAW,CAyBb;AAoHD;;;;;;;;;;;;;;;GAeG;AAEH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,SAAS,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CA+B9G"}
@@ -52,6 +52,22 @@ export type RouteObjectArrayAlias = any;
52
52
  export type RouteMatchAlias = any;
53
53
  export type CreateRoutesFromChildren = (children: ReactElement[]) => RouteObjectArrayAlias;
54
54
  export type MatchRoutes = (routes: RouteObjectArrayAlias, location: Location, basename?: string) => RouteMatchAlias[] | null;
55
+ /**
56
+ * The resolved React Router instrumentation config for a given client, captured during `Sentry.init()`.
57
+ * Stored per-client and threaded through the instrumentation so nothing depends on module-scope state.
58
+ */
59
+ export interface ReactRouterConfig {
60
+ useLocation: UseLocation;
61
+ useNavigationType: UseNavigationType;
62
+ createRoutesFromChildren: CreateRoutesFromChildren;
63
+ matchRoutes: MatchRoutes;
64
+ stripBasename: boolean;
65
+ enableAsyncRouteHandlers: boolean;
66
+ instrumentNavigation: boolean;
67
+ lazyRouteTimeout: number;
68
+ lazyRouteManifest?: string[];
69
+ basename: string;
70
+ }
55
71
  export type ShouldRevalidateFunction = (args: any) => boolean;
56
72
  interface DataFunctionArgs {
57
73
  request: Request;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sentry/react",
3
- "version": "11.0.0-beta.0",
3
+ "version": "11.0.0-beta.2",
4
4
  "description": "Official Sentry SDK for React.js",
5
5
  "repository": "git://github.com/getsentry/sentry-javascript.git",
6
6
  "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/react",
@@ -30,18 +30,45 @@
30
30
  "types": "./build/types/index.d.ts",
31
31
  "default": "./build/cjs/index.js"
32
32
  }
33
+ },
34
+ "./react-router": {
35
+ "react-native": {
36
+ "types": "./build/types/react-router.d.ts",
37
+ "default": "./build/esm/react-router.js"
38
+ },
39
+ "import": {
40
+ "types": "./build/types/react-router.d.ts",
41
+ "default": "./build/esm/react-router.js"
42
+ },
43
+ "require": {
44
+ "types": "./build/types/react-router.d.ts",
45
+ "default": "./build/cjs/react-router.js"
46
+ }
47
+ }
48
+ },
49
+ "typesVersions": {
50
+ "*": {
51
+ "react-router": [
52
+ "build/types/react-router.d.ts"
53
+ ]
33
54
  }
34
55
  },
35
56
  "publishConfig": {
36
57
  "access": "public"
37
58
  },
38
59
  "dependencies": {
39
- "@sentry/browser": "11.0.0-beta.0",
40
- "@sentry/core": "11.0.0-beta.0",
60
+ "@sentry/browser": "11.0.0-beta.2",
61
+ "@sentry/core": "11.0.0-beta.2",
41
62
  "@sentry/conventions": "^0.20.0"
42
63
  },
43
64
  "peerDependencies": {
44
- "react": "17.x || 18.x || 19.x"
65
+ "react": "17.x || 18.x || 19.x",
66
+ "react-router": "6.x || 7.x || 8.x"
67
+ },
68
+ "peerDependenciesMeta": {
69
+ "react-router": {
70
+ "optional": true
71
+ }
45
72
  },
46
73
  "devDependencies": {
47
74
  "@testing-library/react": "^15.0.5",
@@ -56,6 +83,7 @@
56
83
  "history-5": "npm:history@4.9.0",
57
84
  "react": "^18.3.1",
58
85
  "react-dom": "^18.3.1",
86
+ "react-router": "^7.18.3",
59
87
  "react-router-3": "npm:react-router@3.2.0",
60
88
  "react-router-4": "npm:react-router@4.1.0",
61
89
  "react-router-5": "npm:react-router@5.3.4",
@@ -71,7 +99,7 @@
71
99
  "build:dev:watch": "yarn build:watch",
72
100
  "build:transpile:watch": "rollup -c rollup.npm.config.mjs --watch",
73
101
  "build:tarball": "npm pack",
74
- "circularDepCheck": "madge --circular src/index.ts",
102
+ "circularDepCheck": "madge --circular src/index.ts && madge --circular src/react-router.ts",
75
103
  "clean": "rimraf build coverage sentry-react-*.tgz",
76
104
  "lint:fix": "oxlint . --fix --type-aware",
77
105
  "lint": "oxlint . --type-aware",