@sentry/react 10.2.0 → 10.4.0
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.
- package/build/cjs/reactrouterv6-compat-utils.js +143 -0
- package/build/cjs/reactrouterv6-compat-utils.js.map +1 -1
- package/build/esm/package.json +1 -1
- package/build/esm/reactrouterv6-compat-utils.js +144 -2
- package/build/esm/reactrouterv6-compat-utils.js.map +1 -1
- package/build/types/reactrouterv6-compat-utils.d.ts +17 -0
- package/build/types/reactrouterv6-compat-utils.d.ts.map +1 -1
- package/build/types/types.d.ts +2 -0
- package/build/types/types.d.ts.map +1 -1
- package/build/types-ts3.8/reactrouterv6-compat-utils.d.ts +17 -0
- package/build/types-ts3.8/types.d.ts +2 -0
- package/package.json +3 -3
|
@@ -17,12 +17,137 @@ let _useNavigationType;
|
|
|
17
17
|
let _createRoutesFromChildren;
|
|
18
18
|
let _matchRoutes;
|
|
19
19
|
let _stripBasename = false;
|
|
20
|
+
let _enableAsyncRouteHandlers = false;
|
|
20
21
|
|
|
21
22
|
const CLIENTS_WITH_INSTRUMENT_NAVIGATION = new WeakSet();
|
|
22
23
|
|
|
23
24
|
// Keeping as a global variable for cross-usage in multiple functions
|
|
24
25
|
const allRoutes = new Set();
|
|
25
26
|
|
|
27
|
+
/**
|
|
28
|
+
* Adds resolved routes as children to the parent route.
|
|
29
|
+
* Prevents duplicate routes by checking if they already exist.
|
|
30
|
+
*/
|
|
31
|
+
function addResolvedRoutesToParent(resolvedRoutes, parentRoute) {
|
|
32
|
+
const existingChildren = parentRoute.children || [];
|
|
33
|
+
|
|
34
|
+
const newRoutes = resolvedRoutes.filter(
|
|
35
|
+
newRoute =>
|
|
36
|
+
!existingChildren.some(
|
|
37
|
+
existing =>
|
|
38
|
+
existing === newRoute ||
|
|
39
|
+
(newRoute.path && existing.path === newRoute.path) ||
|
|
40
|
+
(newRoute.id && existing.id === newRoute.id),
|
|
41
|
+
),
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
if (newRoutes.length > 0) {
|
|
45
|
+
parentRoute.children = [...existingChildren, ...newRoutes];
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Handles the result of an async handler function call.
|
|
51
|
+
*/
|
|
52
|
+
function handleAsyncHandlerResult(result, route, handlerKey) {
|
|
53
|
+
if (
|
|
54
|
+
result &&
|
|
55
|
+
typeof result === 'object' &&
|
|
56
|
+
'then' in result &&
|
|
57
|
+
typeof (result ).then === 'function'
|
|
58
|
+
) {
|
|
59
|
+
(result )
|
|
60
|
+
.then((resolvedRoutes) => {
|
|
61
|
+
if (Array.isArray(resolvedRoutes)) {
|
|
62
|
+
processResolvedRoutes(resolvedRoutes, route);
|
|
63
|
+
}
|
|
64
|
+
})
|
|
65
|
+
.catch((e) => {
|
|
66
|
+
debugBuild.DEBUG_BUILD && core.debug.warn(`Error resolving async handler '${handlerKey}' for route`, route, e);
|
|
67
|
+
});
|
|
68
|
+
} else if (Array.isArray(result)) {
|
|
69
|
+
processResolvedRoutes(result, route);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Processes resolved routes by adding them to allRoutes and checking for nested async handlers.
|
|
75
|
+
*/
|
|
76
|
+
function processResolvedRoutes(resolvedRoutes, parentRoute) {
|
|
77
|
+
resolvedRoutes.forEach(child => {
|
|
78
|
+
allRoutes.add(child);
|
|
79
|
+
// Only check for async handlers if the feature is enabled
|
|
80
|
+
if (_enableAsyncRouteHandlers) {
|
|
81
|
+
checkRouteForAsyncHandler(child);
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
if (parentRoute) {
|
|
86
|
+
// If a parent route is provided, add the resolved routes as children to the parent route
|
|
87
|
+
addResolvedRoutesToParent(resolvedRoutes, parentRoute);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// After processing lazy routes, check if we need to update an active pageload transaction
|
|
91
|
+
const activeRootSpan = getActiveRootSpan();
|
|
92
|
+
if (activeRootSpan && core.spanToJSON(activeRootSpan).op === 'pageload') {
|
|
93
|
+
const location = browser.WINDOW.location;
|
|
94
|
+
if (location) {
|
|
95
|
+
// Re-run the pageload transaction update with the newly loaded routes
|
|
96
|
+
updatePageloadTransaction(
|
|
97
|
+
activeRootSpan,
|
|
98
|
+
{ pathname: location.pathname },
|
|
99
|
+
Array.from(allRoutes),
|
|
100
|
+
undefined,
|
|
101
|
+
undefined,
|
|
102
|
+
Array.from(allRoutes),
|
|
103
|
+
);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Creates a proxy wrapper for an async handler function.
|
|
110
|
+
*/
|
|
111
|
+
function createAsyncHandlerProxy(
|
|
112
|
+
originalFunction,
|
|
113
|
+
route,
|
|
114
|
+
handlerKey,
|
|
115
|
+
) {
|
|
116
|
+
const proxy = new Proxy(originalFunction, {
|
|
117
|
+
apply(target, thisArg, argArray) {
|
|
118
|
+
const result = target.apply(thisArg, argArray);
|
|
119
|
+
handleAsyncHandlerResult(result, route, handlerKey);
|
|
120
|
+
return result;
|
|
121
|
+
},
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
core.addNonEnumerableProperty(proxy, '__sentry_proxied__', true);
|
|
125
|
+
|
|
126
|
+
return proxy;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Recursively checks a route for async handlers and sets up Proxies to add discovered child routes to allRoutes when called.
|
|
131
|
+
*/
|
|
132
|
+
function checkRouteForAsyncHandler(route) {
|
|
133
|
+
// Set up proxies for any functions in the route's handle
|
|
134
|
+
if (route.handle && typeof route.handle === 'object') {
|
|
135
|
+
for (const key of Object.keys(route.handle)) {
|
|
136
|
+
const maybeFn = route.handle[key];
|
|
137
|
+
if (typeof maybeFn === 'function' && !(maybeFn ).__sentry_proxied__) {
|
|
138
|
+
route.handle[key] = createAsyncHandlerProxy(maybeFn, route, key);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
// Recursively check child routes
|
|
144
|
+
if (Array.isArray(route.children)) {
|
|
145
|
+
for (const child of route.children) {
|
|
146
|
+
checkRouteForAsyncHandler(child);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
26
151
|
/**
|
|
27
152
|
* Creates a wrapCreateBrowserRouter function that can be used with all React Router v6 compatible versions.
|
|
28
153
|
*/
|
|
@@ -44,6 +169,13 @@ function createV6CompatibleWrapCreateBrowserRouter
|
|
|
44
169
|
return function (routes, opts) {
|
|
45
170
|
addRoutesToAllRoutes(routes);
|
|
46
171
|
|
|
172
|
+
// Check for async handlers that might contain sub-route declarations (only if enabled)
|
|
173
|
+
if (_enableAsyncRouteHandlers) {
|
|
174
|
+
for (const route of routes) {
|
|
175
|
+
checkRouteForAsyncHandler(route);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
47
179
|
const router = createRouterFunction(routes, opts);
|
|
48
180
|
const basename = opts?.basename;
|
|
49
181
|
|
|
@@ -120,6 +252,13 @@ function createV6CompatibleWrapCreateMemoryRouter
|
|
|
120
252
|
) {
|
|
121
253
|
addRoutesToAllRoutes(routes);
|
|
122
254
|
|
|
255
|
+
// Check for async handlers that might contain sub-route declarations (only if enabled)
|
|
256
|
+
if (_enableAsyncRouteHandlers) {
|
|
257
|
+
for (const route of routes) {
|
|
258
|
+
checkRouteForAsyncHandler(route);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
|
|
123
262
|
const router = createRouterFunction(routes, opts);
|
|
124
263
|
const basename = opts?.basename;
|
|
125
264
|
|
|
@@ -186,6 +325,7 @@ function createReactRouterV6CompatibleTracingIntegration(
|
|
|
186
325
|
createRoutesFromChildren,
|
|
187
326
|
matchRoutes,
|
|
188
327
|
stripBasename,
|
|
328
|
+
enableAsyncRouteHandlers = false,
|
|
189
329
|
instrumentPageLoad = true,
|
|
190
330
|
instrumentNavigation = true,
|
|
191
331
|
} = options;
|
|
@@ -201,6 +341,7 @@ function createReactRouterV6CompatibleTracingIntegration(
|
|
|
201
341
|
_matchRoutes = matchRoutes;
|
|
202
342
|
_createRoutesFromChildren = createRoutesFromChildren;
|
|
203
343
|
_stripBasename = stripBasename || false;
|
|
344
|
+
_enableAsyncRouteHandlers = enableAsyncRouteHandlers;
|
|
204
345
|
},
|
|
205
346
|
afterAllSetup(client) {
|
|
206
347
|
integration.afterAllSetup(client);
|
|
@@ -490,6 +631,7 @@ function getNormalizedName(
|
|
|
490
631
|
}
|
|
491
632
|
|
|
492
633
|
let pathBuilder = '';
|
|
634
|
+
|
|
493
635
|
if (branches) {
|
|
494
636
|
for (const branch of branches) {
|
|
495
637
|
const route = branch.route;
|
|
@@ -651,6 +793,7 @@ function getNumberOfUrlSegments(url) {
|
|
|
651
793
|
return url.split(/\\?\//).filter(s => s.length > 0 && s !== ',').length;
|
|
652
794
|
}
|
|
653
795
|
|
|
796
|
+
exports.checkRouteForAsyncHandler = checkRouteForAsyncHandler;
|
|
654
797
|
exports.createReactRouterV6CompatibleTracingIntegration = createReactRouterV6CompatibleTracingIntegration;
|
|
655
798
|
exports.createV6CompatibleWithSentryReactRouterRouting = createV6CompatibleWithSentryReactRouterRouting;
|
|
656
799
|
exports.createV6CompatibleWrapCreateBrowserRouter = createV6CompatibleWrapCreateBrowserRouter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reactrouterv6-compat-utils.js","sources":["../../src/reactrouterv6-compat-utils.tsx"],"sourcesContent":["/* eslint-disable max-lines */\n// Inspired from Donnie McNeal's solution:\n// https://gist.github.com/wontondon/e8c4bdf2888875e4c755712e99279536\n\nimport {\n browserTracingIntegration,\n startBrowserTracingNavigationSpan,\n startBrowserTracingPageLoadSpan,\n WINDOW,\n} from '@sentry/browser';\nimport type { Client, Integration, Span, TransactionSource } from '@sentry/core';\nimport {\n debug,\n getActiveSpan,\n getClient,\n getCurrentScope,\n getRootSpan,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n spanToJSON,\n} from '@sentry/core';\nimport * as React from 'react';\nimport { DEBUG_BUILD } from './debug-build';\nimport { hoistNonReactStatics } from './hoist-non-react-statics';\nimport type {\n Action,\n AgnosticDataRouteMatch,\n CreateRouterFunction,\n CreateRoutesFromChildren,\n Location,\n MatchRoutes,\n RouteMatch,\n RouteObject,\n Router,\n RouterState,\n UseEffect,\n UseLocation,\n UseNavigationType,\n UseRoutes,\n} from './types';\n\nlet _useEffect: UseEffect;\nlet _useLocation: UseLocation;\nlet _useNavigationType: UseNavigationType;\nlet _createRoutesFromChildren: CreateRoutesFromChildren;\nlet _matchRoutes: MatchRoutes;\nlet _stripBasename: boolean = false;\n\nconst CLIENTS_WITH_INSTRUMENT_NAVIGATION = new WeakSet<Client>();\n\nexport interface ReactRouterOptions {\n useEffect: UseEffect;\n useLocation: UseLocation;\n useNavigationType: UseNavigationType;\n createRoutesFromChildren: CreateRoutesFromChildren;\n matchRoutes: MatchRoutes;\n stripBasename?: boolean;\n}\n\ntype V6CompatibleVersion = '6' | '7';\n\n// Keeping as a global variable for cross-usage in multiple functions\nconst allRoutes = new Set<RouteObject>();\n\n/**\n * Creates a wrapCreateBrowserRouter function that can be used with all React Router v6 compatible versions.\n */\nexport function createV6CompatibleWrapCreateBrowserRouter<\n TState extends RouterState = RouterState,\n TRouter extends Router<TState> = Router<TState>,\n>(\n createRouterFunction: CreateRouterFunction<TState, TRouter>,\n version: V6CompatibleVersion,\n): CreateRouterFunction<TState, TRouter> {\n if (!_useEffect || !_useLocation || !_useNavigationType || !_matchRoutes) {\n DEBUG_BUILD &&\n debug.warn(\n `reactRouterV${version}Instrumentation was unable to wrap the \\`createRouter\\` function because of one or more missing parameters.`,\n );\n\n return createRouterFunction;\n }\n\n return function (routes: RouteObject[], opts?: Record<string, unknown> & { basename?: string }): TRouter {\n addRoutesToAllRoutes(routes);\n\n const router = createRouterFunction(routes, opts);\n const basename = opts?.basename;\n\n const activeRootSpan = getActiveRootSpan();\n\n // The initial load ends when `createBrowserRouter` is called.\n // This is the earliest convenient time to update the transaction name.\n // Callbacks to `router.subscribe` are not called for the initial load.\n if (router.state.historyAction === 'POP' && activeRootSpan) {\n updatePageloadTransaction(\n activeRootSpan,\n router.state.location,\n routes,\n undefined,\n basename,\n Array.from(allRoutes),\n );\n }\n\n router.subscribe((state: RouterState) => {\n if (state.historyAction === 'PUSH' || state.historyAction === 'POP') {\n // Wait for the next render if loading an unsettled route\n if (state.navigation.state !== 'idle') {\n requestAnimationFrame(() => {\n handleNavigation({\n location: state.location,\n routes,\n navigationType: state.historyAction,\n version,\n basename,\n allRoutes: Array.from(allRoutes),\n });\n });\n } else {\n handleNavigation({\n location: state.location,\n routes,\n navigationType: state.historyAction,\n version,\n basename,\n allRoutes: Array.from(allRoutes),\n });\n }\n }\n });\n\n return router;\n };\n}\n\n/**\n * Creates a wrapCreateMemoryRouter function that can be used with all React Router v6 compatible versions.\n */\nexport function createV6CompatibleWrapCreateMemoryRouter<\n TState extends RouterState = RouterState,\n TRouter extends Router<TState> = Router<TState>,\n>(\n createRouterFunction: CreateRouterFunction<TState, TRouter>,\n version: V6CompatibleVersion,\n): CreateRouterFunction<TState, TRouter> {\n if (!_useEffect || !_useLocation || !_useNavigationType || !_matchRoutes) {\n DEBUG_BUILD &&\n debug.warn(\n `reactRouterV${version}Instrumentation was unable to wrap the \\`createMemoryRouter\\` function because of one or more missing parameters.`,\n );\n\n return createRouterFunction;\n }\n\n return function (\n routes: RouteObject[],\n opts?: Record<string, unknown> & {\n basename?: string;\n initialEntries?: (string | { pathname: string })[];\n initialIndex?: number;\n },\n ): TRouter {\n addRoutesToAllRoutes(routes);\n\n const router = createRouterFunction(routes, opts);\n const basename = opts?.basename;\n\n const activeRootSpan = getActiveRootSpan();\n let initialEntry = undefined;\n\n const initialEntries = opts?.initialEntries;\n const initialIndex = opts?.initialIndex;\n\n const hasOnlyOneInitialEntry = initialEntries && initialEntries.length === 1;\n const hasIndexedEntry = initialIndex !== undefined && initialEntries && initialEntries[initialIndex];\n\n initialEntry = hasOnlyOneInitialEntry\n ? initialEntries[0]\n : hasIndexedEntry\n ? initialEntries[initialIndex]\n : undefined;\n\n const location = initialEntry\n ? typeof initialEntry === 'string'\n ? { pathname: initialEntry }\n : initialEntry\n : router.state.location;\n\n if (router.state.historyAction === 'POP' && activeRootSpan) {\n updatePageloadTransaction(activeRootSpan, location, routes, undefined, basename, Array.from(allRoutes));\n }\n\n router.subscribe((state: RouterState) => {\n const location = state.location;\n if (state.historyAction === 'PUSH' || state.historyAction === 'POP') {\n handleNavigation({\n location,\n routes,\n navigationType: state.historyAction,\n version,\n basename,\n allRoutes: Array.from(allRoutes),\n });\n }\n });\n\n return router;\n };\n}\n\n/**\n * Creates a browser tracing integration that can be used with all React Router v6 compatible versions.\n */\nexport function createReactRouterV6CompatibleTracingIntegration(\n options: Parameters<typeof browserTracingIntegration>[0] & ReactRouterOptions,\n version: V6CompatibleVersion,\n): Integration {\n const integration = browserTracingIntegration({\n ...options,\n instrumentPageLoad: false,\n instrumentNavigation: false,\n });\n\n const {\n useEffect,\n useLocation,\n useNavigationType,\n createRoutesFromChildren,\n matchRoutes,\n stripBasename,\n instrumentPageLoad = true,\n instrumentNavigation = true,\n } = options;\n\n return {\n ...integration,\n setup(client) {\n integration.setup(client);\n\n _useEffect = useEffect;\n _useLocation = useLocation;\n _useNavigationType = useNavigationType;\n _matchRoutes = matchRoutes;\n _createRoutesFromChildren = createRoutesFromChildren;\n _stripBasename = stripBasename || false;\n },\n afterAllSetup(client) {\n integration.afterAllSetup(client);\n\n const initPathName = WINDOW.location?.pathname;\n if (instrumentPageLoad && initPathName) {\n startBrowserTracingPageLoadSpan(client, {\n name: initPathName,\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'url',\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'pageload',\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: `auto.pageload.react.reactrouter_v${version}`,\n },\n });\n }\n\n if (instrumentNavigation) {\n CLIENTS_WITH_INSTRUMENT_NAVIGATION.add(client);\n }\n },\n };\n}\n\nexport function createV6CompatibleWrapUseRoutes(origUseRoutes: UseRoutes, version: V6CompatibleVersion): UseRoutes {\n if (!_useEffect || !_useLocation || !_useNavigationType || !_matchRoutes) {\n DEBUG_BUILD &&\n debug.warn(\n 'reactRouterV6Instrumentation was unable to wrap `useRoutes` because of one or more missing parameters.',\n );\n\n return origUseRoutes;\n }\n\n const SentryRoutes: React.FC<{\n children?: React.ReactNode;\n routes: RouteObject[];\n locationArg?: Partial<Location> | string;\n }> = (props: { children?: React.ReactNode; routes: RouteObject[]; locationArg?: Partial<Location> | string }) => {\n const isMountRenderPass = React.useRef(true);\n const { routes, locationArg } = props;\n\n const Routes = origUseRoutes(routes, locationArg);\n\n const location = _useLocation();\n const navigationType = _useNavigationType();\n\n // A value with stable identity to either pick `locationArg` if available or `location` if not\n const stableLocationParam =\n typeof locationArg === 'string' || locationArg?.pathname ? (locationArg as { pathname: string }) : location;\n\n _useEffect(() => {\n const normalizedLocation =\n typeof stableLocationParam === 'string' ? { pathname: stableLocationParam } : stableLocationParam;\n\n if (isMountRenderPass.current) {\n addRoutesToAllRoutes(routes);\n\n updatePageloadTransaction(\n getActiveRootSpan(),\n normalizedLocation,\n routes,\n undefined,\n undefined,\n Array.from(allRoutes),\n );\n isMountRenderPass.current = false;\n } else {\n handleNavigation({\n location: normalizedLocation,\n routes,\n navigationType,\n version,\n allRoutes: Array.from(allRoutes),\n });\n }\n }, [navigationType, stableLocationParam]);\n\n return Routes;\n };\n\n // eslint-disable-next-line react/display-name\n return (routes: RouteObject[], locationArg?: Partial<Location> | string): React.ReactElement | null => {\n return <SentryRoutes routes={routes} locationArg={locationArg} />;\n };\n}\n\nexport function handleNavigation(opts: {\n location: Location;\n routes: RouteObject[];\n navigationType: Action;\n version: V6CompatibleVersion;\n matches?: AgnosticDataRouteMatch;\n basename?: string;\n allRoutes?: RouteObject[];\n}): void {\n const { location, routes, navigationType, version, matches, basename, allRoutes } = opts;\n const branches = Array.isArray(matches) ? matches : _matchRoutes(routes, location, basename);\n\n const client = getClient();\n if (!client || !CLIENTS_WITH_INSTRUMENT_NAVIGATION.has(client)) {\n return;\n }\n\n if ((navigationType === 'PUSH' || navigationType === 'POP') && branches) {\n let name,\n source: TransactionSource = 'url';\n const isInDescendantRoute = locationIsInsideDescendantRoute(location, allRoutes || routes);\n\n if (isInDescendantRoute) {\n name = prefixWithSlash(rebuildRoutePathFromAllRoutes(allRoutes || routes, location));\n source = 'route';\n }\n\n if (!isInDescendantRoute || !name) {\n [name, source] = getNormalizedName(routes, location, branches, basename);\n }\n\n const activeSpan = getActiveSpan();\n const isAlreadyInNavigationSpan = activeSpan && spanToJSON(activeSpan).op === 'navigation';\n\n // Cross usage can result in multiple navigation spans being created without this check\n if (isAlreadyInNavigationSpan) {\n activeSpan?.updateName(name);\n activeSpan?.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, source);\n } else {\n startBrowserTracingNavigationSpan(client, {\n name,\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: source,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'navigation',\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: `auto.navigation.react.reactrouter_v${version}`,\n },\n });\n }\n }\n}\n\n/**\n * Strip the basename from a pathname if exists.\n *\n * Vendored and modified from `react-router`\n * https://github.com/remix-run/react-router/blob/462bb712156a3f739d6139a0f14810b76b002df6/packages/router/utils.ts#L1038\n */\nfunction stripBasenameFromPathname(pathname: string, basename: string): string {\n if (!basename || basename === '/') {\n return pathname;\n }\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return pathname;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n const startIndex = basename.endsWith('/') ? basename.length - 1 : basename.length;\n const nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== '/') {\n // pathname does not start with basename/\n return pathname;\n }\n\n return pathname.slice(startIndex) || '/';\n}\n\nfunction sendIndexPath(pathBuilder: string, pathname: string, basename: string): [string, TransactionSource] {\n const reconstructedPath = pathBuilder || _stripBasename ? stripBasenameFromPathname(pathname, basename) : pathname;\n\n const formattedPath =\n // If the path ends with a slash, remove it\n reconstructedPath[reconstructedPath.length - 1] === '/'\n ? reconstructedPath.slice(0, -1)\n : // If the path ends with a wildcard, remove it\n reconstructedPath.slice(-2) === '/*'\n ? reconstructedPath.slice(0, -1)\n : reconstructedPath;\n\n return [formattedPath, 'route'];\n}\n\nfunction pathEndsWithWildcard(path: string): boolean {\n return path.endsWith('*');\n}\n\nfunction pathIsWildcardAndHasChildren(path: string, branch: RouteMatch<string>): boolean {\n return (pathEndsWithWildcard(path) && !!branch.route.children?.length) || false;\n}\n\nfunction routeIsDescendant(route: RouteObject): boolean {\n return !!(!route.children && route.element && route.path?.endsWith('/*'));\n}\n\nfunction 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\nfunction addRoutesToAllRoutes(routes: RouteObject[]): void {\n routes.forEach(route => {\n const extractedChildRoutes = getChildRoutesRecursively(route);\n\n extractedChildRoutes.forEach(r => {\n allRoutes.add(r);\n });\n });\n}\n\nfunction getChildRoutesRecursively(route: RouteObject, allRoutes: Set<RouteObject> = new Set()): Set<RouteObject> {\n if (!allRoutes.has(route)) {\n allRoutes.add(route);\n\n if (route.children && !route.index) {\n route.children.forEach(child => {\n const childRoutes = getChildRoutesRecursively(child, allRoutes);\n\n childRoutes.forEach(r => {\n allRoutes.add(r);\n });\n });\n }\n }\n\n return allRoutes;\n}\n\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\nfunction prefixWithSlash(path: string): string {\n return path[0] === '/' ? path : `/${path}`;\n}\n\nfunction 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\nfunction 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 let pathBuilder = '';\n if (branches) {\n for (const branch of branches) {\n const route = branch.route;\n if (route) {\n // Early return if index route\n if (route.index) {\n return sendIndexPath(pathBuilder, branch.pathname, basename);\n }\n const path = route.path;\n\n // If path is not a wildcard and has no child routes, append the path\n if (path && !pathIsWildcardAndHasChildren(path, branch)) {\n const newPath = path[0] === '/' || pathBuilder[pathBuilder.length - 1] === '/' ? path : `/${path}`;\n pathBuilder = trimSlash(pathBuilder) + prefixWithSlash(newPath);\n\n // If the path matches the current location, return the path\n if (trimSlash(location.pathname) === trimSlash(basename + branch.pathname)) {\n if (\n // If the route defined on the element is something like\n // <Route path=\"/stores/:storeId/products/:productId\" element={<div>Product</div>} />\n // We should check against the branch.pathname for the number of / separators\n getNumberOfUrlSegments(pathBuilder) !== getNumberOfUrlSegments(branch.pathname) &&\n // We should not count wildcard operators in the url segments calculation\n !pathEndsWithWildcard(pathBuilder)\n ) {\n return [(_stripBasename ? '' : basename) + newPath, 'route'];\n }\n\n // if the last character of the pathbuilder is a wildcard and there are children, remove the wildcard\n if (pathIsWildcardAndHasChildren(pathBuilder, branch)) {\n pathBuilder = pathBuilder.slice(0, -1);\n }\n\n return [(_stripBasename ? '' : basename) + pathBuilder, 'route'];\n }\n }\n }\n }\n }\n\n const fallbackTransactionName = _stripBasename\n ? stripBasenameFromPathname(location.pathname, basename)\n : location.pathname || '/';\n\n return [fallbackTransactionName, 'url'];\n}\n\nfunction updatePageloadTransaction(\n activeRootSpan: Span | undefined,\n location: Location,\n routes: RouteObject[],\n matches?: AgnosticDataRouteMatch,\n basename?: string,\n allRoutes?: RouteObject[],\n): void {\n const branches = Array.isArray(matches)\n ? matches\n : (_matchRoutes(allRoutes || routes, location, basename) as unknown as RouteMatch[]);\n\n if (branches) {\n let name,\n source: TransactionSource = 'url';\n\n const isInDescendantRoute = locationIsInsideDescendantRoute(location, allRoutes || routes);\n\n if (isInDescendantRoute) {\n name = prefixWithSlash(rebuildRoutePathFromAllRoutes(allRoutes || routes, location));\n source = 'route';\n }\n\n if (!isInDescendantRoute || !name) {\n [name, source] = getNormalizedName(routes, location, branches, basename);\n }\n\n getCurrentScope().setTransactionName(name || '/');\n\n if (activeRootSpan) {\n activeRootSpan.updateName(name);\n activeRootSpan.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, source);\n }\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function createV6CompatibleWithSentryReactRouterRouting<P extends Record<string, any>, R extends React.FC<P>>(\n Routes: R,\n version: V6CompatibleVersion,\n): R {\n if (!_useEffect || !_useLocation || !_useNavigationType || !_createRoutesFromChildren || !_matchRoutes) {\n DEBUG_BUILD &&\n debug.warn(`reactRouterV6Instrumentation was unable to wrap Routes because of one or more missing parameters.\n useEffect: ${_useEffect}. useLocation: ${_useLocation}. useNavigationType: ${_useNavigationType}.\n createRoutesFromChildren: ${_createRoutesFromChildren}. matchRoutes: ${_matchRoutes}.`);\n\n return Routes;\n }\n\n const SentryRoutes: React.FC<P> = (props: P) => {\n const isMountRenderPass = React.useRef(true);\n\n const location = _useLocation();\n const navigationType = _useNavigationType();\n\n _useEffect(\n () => {\n const routes = _createRoutesFromChildren(props.children) as RouteObject[];\n\n if (isMountRenderPass.current) {\n addRoutesToAllRoutes(routes);\n\n updatePageloadTransaction(getActiveRootSpan(), location, routes, undefined, undefined, Array.from(allRoutes));\n isMountRenderPass.current = false;\n } else {\n handleNavigation({\n location,\n routes,\n navigationType,\n version,\n allRoutes: Array.from(allRoutes),\n });\n }\n },\n // `props.children` is purposely not included in the dependency array, because we do not want to re-run this effect\n // when the children change. We only want to start transactions when the location or navigation type change.\n [location, navigationType],\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 return <Routes {...props} />;\n };\n\n hoistNonReactStatics(SentryRoutes, Routes);\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 return SentryRoutes;\n}\n\nfunction 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).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\n/**\n * Returns number of URL segments of a passed string 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"],"names":["DEBUG_BUILD","debug","browserTracingIntegration","WINDOW","startBrowserTracingPageLoadSpan","SEMANTIC_ATTRIBUTE_SENTRY_SOURCE","SEMANTIC_ATTRIBUTE_SENTRY_OP","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","getClient","getActiveSpan","spanToJSON","startBrowserTracingNavigationSpan","getCurrentScope","hoistNonReactStatics","getRootSpan"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"reactrouterv6-compat-utils.js","sources":["../../src/reactrouterv6-compat-utils.tsx"],"sourcesContent":["/* eslint-disable max-lines */\n// Inspired from Donnie McNeal's solution:\n// https://gist.github.com/wontondon/e8c4bdf2888875e4c755712e99279536\n\nimport {\n browserTracingIntegration,\n startBrowserTracingNavigationSpan,\n startBrowserTracingPageLoadSpan,\n WINDOW,\n} from '@sentry/browser';\nimport type { Client, Integration, Span, TransactionSource } from '@sentry/core';\nimport {\n addNonEnumerableProperty,\n debug,\n getActiveSpan,\n getClient,\n getCurrentScope,\n getRootSpan,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n spanToJSON,\n} from '@sentry/core';\nimport * as React from 'react';\nimport { DEBUG_BUILD } from './debug-build';\nimport { hoistNonReactStatics } from './hoist-non-react-statics';\nimport type {\n Action,\n AgnosticDataRouteMatch,\n CreateRouterFunction,\n CreateRoutesFromChildren,\n Location,\n MatchRoutes,\n RouteMatch,\n RouteObject,\n Router,\n RouterState,\n UseEffect,\n UseLocation,\n UseNavigationType,\n UseRoutes,\n} from './types';\n\nlet _useEffect: UseEffect;\nlet _useLocation: UseLocation;\nlet _useNavigationType: UseNavigationType;\nlet _createRoutesFromChildren: CreateRoutesFromChildren;\nlet _matchRoutes: MatchRoutes;\nlet _stripBasename: boolean = false;\nlet _enableAsyncRouteHandlers: boolean = false;\n\nconst CLIENTS_WITH_INSTRUMENT_NAVIGATION = new WeakSet<Client>();\n\nexport interface ReactRouterOptions {\n useEffect: UseEffect;\n useLocation: UseLocation;\n useNavigationType: UseNavigationType;\n createRoutesFromChildren: CreateRoutesFromChildren;\n matchRoutes: MatchRoutes;\n /**\n * Whether to strip the basename from the pathname when creating transactions.\n *\n * This is useful for applications that use a basename in their routing setup.\n * @default false\n */\n stripBasename?: boolean;\n /**\n * Enables support for async route handlers.\n *\n * This allows Sentry to track and instrument routes dynamically resolved from async handlers.\n * @default false\n */\n enableAsyncRouteHandlers?: boolean;\n}\n\ntype V6CompatibleVersion = '6' | '7';\n\n// Keeping as a global variable for cross-usage in multiple functions\nconst allRoutes = new Set<RouteObject>();\n\n/**\n * Adds resolved routes as children to the parent route.\n * Prevents duplicate routes by checking if they already exist.\n */\nfunction addResolvedRoutesToParent(resolvedRoutes: RouteObject[], parentRoute: RouteObject): void {\n const existingChildren = parentRoute.children || [];\n\n const newRoutes = resolvedRoutes.filter(\n newRoute =>\n !existingChildren.some(\n existing =>\n existing === newRoute ||\n (newRoute.path && existing.path === newRoute.path) ||\n (newRoute.id && existing.id === newRoute.id),\n ),\n );\n\n if (newRoutes.length > 0) {\n parentRoute.children = [...existingChildren, ...newRoutes];\n }\n}\n\n/**\n * Handles the result of an async handler function call.\n */\nfunction handleAsyncHandlerResult(result: unknown, route: RouteObject, handlerKey: string): void {\n if (\n result &&\n typeof result === 'object' &&\n 'then' in result &&\n typeof (result as Promise<unknown>).then === 'function'\n ) {\n (result as Promise<unknown>)\n .then((resolvedRoutes: unknown) => {\n if (Array.isArray(resolvedRoutes)) {\n processResolvedRoutes(resolvedRoutes, route);\n }\n })\n .catch((e: unknown) => {\n DEBUG_BUILD && debug.warn(`Error resolving async handler '${handlerKey}' for route`, route, e);\n });\n } else if (Array.isArray(result)) {\n processResolvedRoutes(result, route);\n }\n}\n\n/**\n * Processes resolved routes by adding them to allRoutes and checking for nested async handlers.\n */\nfunction processResolvedRoutes(resolvedRoutes: RouteObject[], parentRoute?: RouteObject): void {\n resolvedRoutes.forEach(child => {\n allRoutes.add(child);\n // Only check for async handlers if the feature is enabled\n if (_enableAsyncRouteHandlers) {\n checkRouteForAsyncHandler(child);\n }\n });\n\n if (parentRoute) {\n // If a parent route is provided, add the resolved routes as children to the parent route\n addResolvedRoutesToParent(resolvedRoutes, parentRoute);\n }\n\n // After processing lazy routes, check if we need to update an active pageload transaction\n const activeRootSpan = getActiveRootSpan();\n if (activeRootSpan && spanToJSON(activeRootSpan).op === 'pageload') {\n const location = WINDOW.location;\n if (location) {\n // Re-run the pageload transaction update with the newly loaded routes\n updatePageloadTransaction(\n activeRootSpan,\n { pathname: location.pathname },\n Array.from(allRoutes),\n undefined,\n undefined,\n Array.from(allRoutes),\n );\n }\n }\n}\n\n/**\n * Creates a proxy wrapper for an async handler function.\n */\nfunction createAsyncHandlerProxy(\n originalFunction: (...args: unknown[]) => unknown,\n route: RouteObject,\n handlerKey: string,\n): (...args: unknown[]) => unknown {\n const proxy = new Proxy(originalFunction, {\n apply(target: (...args: unknown[]) => unknown, thisArg, argArray) {\n const result = target.apply(thisArg, argArray);\n handleAsyncHandlerResult(result, route, handlerKey);\n return result;\n },\n });\n\n addNonEnumerableProperty(proxy, '__sentry_proxied__', true);\n\n return proxy;\n}\n\n/**\n * Recursively checks a route for async handlers and sets up Proxies to add discovered child routes to allRoutes when called.\n */\nexport function checkRouteForAsyncHandler(route: RouteObject): void {\n // Set up proxies for any functions in the route's handle\n if (route.handle && typeof route.handle === 'object') {\n for (const key of Object.keys(route.handle)) {\n const maybeFn = route.handle[key];\n if (typeof maybeFn === 'function' && !(maybeFn as { __sentry_proxied__?: boolean }).__sentry_proxied__) {\n route.handle[key] = createAsyncHandlerProxy(maybeFn, route, key);\n }\n }\n }\n\n // Recursively check child routes\n if (Array.isArray(route.children)) {\n for (const child of route.children) {\n checkRouteForAsyncHandler(child);\n }\n }\n}\n\n/**\n * Creates a wrapCreateBrowserRouter function that can be used with all React Router v6 compatible versions.\n */\nexport function createV6CompatibleWrapCreateBrowserRouter<\n TState extends RouterState = RouterState,\n TRouter extends Router<TState> = Router<TState>,\n>(\n createRouterFunction: CreateRouterFunction<TState, TRouter>,\n version: V6CompatibleVersion,\n): CreateRouterFunction<TState, TRouter> {\n if (!_useEffect || !_useLocation || !_useNavigationType || !_matchRoutes) {\n DEBUG_BUILD &&\n debug.warn(\n `reactRouterV${version}Instrumentation was unable to wrap the \\`createRouter\\` function because of one or more missing parameters.`,\n );\n\n return createRouterFunction;\n }\n\n return function (routes: RouteObject[], opts?: Record<string, unknown> & { basename?: string }): TRouter {\n addRoutesToAllRoutes(routes);\n\n // Check for async handlers that might contain sub-route declarations (only if enabled)\n if (_enableAsyncRouteHandlers) {\n for (const route of routes) {\n checkRouteForAsyncHandler(route);\n }\n }\n\n const router = createRouterFunction(routes, opts);\n const basename = opts?.basename;\n\n const activeRootSpan = getActiveRootSpan();\n\n // The initial load ends when `createBrowserRouter` is called.\n // This is the earliest convenient time to update the transaction name.\n // Callbacks to `router.subscribe` are not called for the initial load.\n if (router.state.historyAction === 'POP' && activeRootSpan) {\n updatePageloadTransaction(\n activeRootSpan,\n router.state.location,\n routes,\n undefined,\n basename,\n Array.from(allRoutes),\n );\n }\n\n router.subscribe((state: RouterState) => {\n if (state.historyAction === 'PUSH' || state.historyAction === 'POP') {\n // Wait for the next render if loading an unsettled route\n if (state.navigation.state !== 'idle') {\n requestAnimationFrame(() => {\n handleNavigation({\n location: state.location,\n routes,\n navigationType: state.historyAction,\n version,\n basename,\n allRoutes: Array.from(allRoutes),\n });\n });\n } else {\n handleNavigation({\n location: state.location,\n routes,\n navigationType: state.historyAction,\n version,\n basename,\n allRoutes: Array.from(allRoutes),\n });\n }\n }\n });\n\n return router;\n };\n}\n\n/**\n * Creates a wrapCreateMemoryRouter function that can be used with all React Router v6 compatible versions.\n */\nexport function createV6CompatibleWrapCreateMemoryRouter<\n TState extends RouterState = RouterState,\n TRouter extends Router<TState> = Router<TState>,\n>(\n createRouterFunction: CreateRouterFunction<TState, TRouter>,\n version: V6CompatibleVersion,\n): CreateRouterFunction<TState, TRouter> {\n if (!_useEffect || !_useLocation || !_useNavigationType || !_matchRoutes) {\n DEBUG_BUILD &&\n debug.warn(\n `reactRouterV${version}Instrumentation was unable to wrap the \\`createMemoryRouter\\` function because of one or more missing parameters.`,\n );\n\n return createRouterFunction;\n }\n\n return function (\n routes: RouteObject[],\n opts?: Record<string, unknown> & {\n basename?: string;\n initialEntries?: (string | { pathname: string })[];\n initialIndex?: number;\n },\n ): TRouter {\n addRoutesToAllRoutes(routes);\n\n // Check for async handlers that might contain sub-route declarations (only if enabled)\n if (_enableAsyncRouteHandlers) {\n for (const route of routes) {\n checkRouteForAsyncHandler(route);\n }\n }\n\n const router = createRouterFunction(routes, opts);\n const basename = opts?.basename;\n\n const activeRootSpan = getActiveRootSpan();\n let initialEntry = undefined;\n\n const initialEntries = opts?.initialEntries;\n const initialIndex = opts?.initialIndex;\n\n const hasOnlyOneInitialEntry = initialEntries && initialEntries.length === 1;\n const hasIndexedEntry = initialIndex !== undefined && initialEntries && initialEntries[initialIndex];\n\n initialEntry = hasOnlyOneInitialEntry\n ? initialEntries[0]\n : hasIndexedEntry\n ? initialEntries[initialIndex]\n : undefined;\n\n const location = initialEntry\n ? typeof initialEntry === 'string'\n ? { pathname: initialEntry }\n : initialEntry\n : router.state.location;\n\n if (router.state.historyAction === 'POP' && activeRootSpan) {\n updatePageloadTransaction(activeRootSpan, location, routes, undefined, basename, Array.from(allRoutes));\n }\n\n router.subscribe((state: RouterState) => {\n const location = state.location;\n if (state.historyAction === 'PUSH' || state.historyAction === 'POP') {\n handleNavigation({\n location,\n routes,\n navigationType: state.historyAction,\n version,\n basename,\n allRoutes: Array.from(allRoutes),\n });\n }\n });\n\n return router;\n };\n}\n\n/**\n * Creates a browser tracing integration that can be used with all React Router v6 compatible versions.\n */\nexport function createReactRouterV6CompatibleTracingIntegration(\n options: Parameters<typeof browserTracingIntegration>[0] & ReactRouterOptions,\n version: V6CompatibleVersion,\n): Integration {\n const integration = browserTracingIntegration({\n ...options,\n instrumentPageLoad: false,\n instrumentNavigation: false,\n });\n\n const {\n useEffect,\n useLocation,\n useNavigationType,\n createRoutesFromChildren,\n matchRoutes,\n stripBasename,\n enableAsyncRouteHandlers = false,\n instrumentPageLoad = true,\n instrumentNavigation = true,\n } = options;\n\n return {\n ...integration,\n setup(client) {\n integration.setup(client);\n\n _useEffect = useEffect;\n _useLocation = useLocation;\n _useNavigationType = useNavigationType;\n _matchRoutes = matchRoutes;\n _createRoutesFromChildren = createRoutesFromChildren;\n _stripBasename = stripBasename || false;\n _enableAsyncRouteHandlers = enableAsyncRouteHandlers;\n },\n afterAllSetup(client) {\n integration.afterAllSetup(client);\n\n const initPathName = WINDOW.location?.pathname;\n if (instrumentPageLoad && initPathName) {\n startBrowserTracingPageLoadSpan(client, {\n name: initPathName,\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'url',\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'pageload',\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: `auto.pageload.react.reactrouter_v${version}`,\n },\n });\n }\n\n if (instrumentNavigation) {\n CLIENTS_WITH_INSTRUMENT_NAVIGATION.add(client);\n }\n },\n };\n}\n\nexport function createV6CompatibleWrapUseRoutes(origUseRoutes: UseRoutes, version: V6CompatibleVersion): UseRoutes {\n if (!_useEffect || !_useLocation || !_useNavigationType || !_matchRoutes) {\n DEBUG_BUILD &&\n debug.warn(\n 'reactRouterV6Instrumentation was unable to wrap `useRoutes` because of one or more missing parameters.',\n );\n\n return origUseRoutes;\n }\n\n const SentryRoutes: React.FC<{\n children?: React.ReactNode;\n routes: RouteObject[];\n locationArg?: Partial<Location> | string;\n }> = (props: { children?: React.ReactNode; routes: RouteObject[]; locationArg?: Partial<Location> | string }) => {\n const isMountRenderPass = React.useRef(true);\n const { routes, locationArg } = props;\n\n const Routes = origUseRoutes(routes, locationArg);\n\n const location = _useLocation();\n const navigationType = _useNavigationType();\n\n // A value with stable identity to either pick `locationArg` if available or `location` if not\n const stableLocationParam =\n typeof locationArg === 'string' || locationArg?.pathname ? (locationArg as { pathname: string }) : location;\n\n _useEffect(() => {\n const normalizedLocation =\n typeof stableLocationParam === 'string' ? { pathname: stableLocationParam } : stableLocationParam;\n\n if (isMountRenderPass.current) {\n addRoutesToAllRoutes(routes);\n\n updatePageloadTransaction(\n getActiveRootSpan(),\n normalizedLocation,\n routes,\n undefined,\n undefined,\n Array.from(allRoutes),\n );\n isMountRenderPass.current = false;\n } else {\n handleNavigation({\n location: normalizedLocation,\n routes,\n navigationType,\n version,\n allRoutes: Array.from(allRoutes),\n });\n }\n }, [navigationType, stableLocationParam]);\n\n return Routes;\n };\n\n // eslint-disable-next-line react/display-name\n return (routes: RouteObject[], locationArg?: Partial<Location> | string): React.ReactElement | null => {\n return <SentryRoutes routes={routes} locationArg={locationArg} />;\n };\n}\n\nexport function handleNavigation(opts: {\n location: Location;\n routes: RouteObject[];\n navigationType: Action;\n version: V6CompatibleVersion;\n matches?: AgnosticDataRouteMatch;\n basename?: string;\n allRoutes?: RouteObject[];\n}): void {\n const { location, routes, navigationType, version, matches, basename, allRoutes } = opts;\n const branches = Array.isArray(matches) ? matches : _matchRoutes(routes, location, basename);\n\n const client = getClient();\n if (!client || !CLIENTS_WITH_INSTRUMENT_NAVIGATION.has(client)) {\n return;\n }\n\n if ((navigationType === 'PUSH' || navigationType === 'POP') && branches) {\n let name,\n source: TransactionSource = 'url';\n const isInDescendantRoute = locationIsInsideDescendantRoute(location, allRoutes || routes);\n\n if (isInDescendantRoute) {\n name = prefixWithSlash(rebuildRoutePathFromAllRoutes(allRoutes || routes, location));\n source = 'route';\n }\n\n if (!isInDescendantRoute || !name) {\n [name, source] = getNormalizedName(routes, location, branches, basename);\n }\n\n const activeSpan = getActiveSpan();\n const isAlreadyInNavigationSpan = activeSpan && spanToJSON(activeSpan).op === 'navigation';\n\n // Cross usage can result in multiple navigation spans being created without this check\n if (isAlreadyInNavigationSpan) {\n activeSpan?.updateName(name);\n activeSpan?.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, source);\n } else {\n startBrowserTracingNavigationSpan(client, {\n name,\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: source,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'navigation',\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: `auto.navigation.react.reactrouter_v${version}`,\n },\n });\n }\n }\n}\n\n/**\n * Strip the basename from a pathname if exists.\n *\n * Vendored and modified from `react-router`\n * https://github.com/remix-run/react-router/blob/462bb712156a3f739d6139a0f14810b76b002df6/packages/router/utils.ts#L1038\n */\nfunction stripBasenameFromPathname(pathname: string, basename: string): string {\n if (!basename || basename === '/') {\n return pathname;\n }\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return pathname;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n const startIndex = basename.endsWith('/') ? basename.length - 1 : basename.length;\n const nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== '/') {\n // pathname does not start with basename/\n return pathname;\n }\n\n return pathname.slice(startIndex) || '/';\n}\n\nfunction sendIndexPath(pathBuilder: string, pathname: string, basename: string): [string, TransactionSource] {\n const reconstructedPath = pathBuilder || _stripBasename ? stripBasenameFromPathname(pathname, basename) : pathname;\n\n const formattedPath =\n // If the path ends with a slash, remove it\n reconstructedPath[reconstructedPath.length - 1] === '/'\n ? reconstructedPath.slice(0, -1)\n : // If the path ends with a wildcard, remove it\n reconstructedPath.slice(-2) === '/*'\n ? reconstructedPath.slice(0, -1)\n : reconstructedPath;\n\n return [formattedPath, 'route'];\n}\n\nfunction pathEndsWithWildcard(path: string): boolean {\n return path.endsWith('*');\n}\n\nfunction pathIsWildcardAndHasChildren(path: string, branch: RouteMatch<string>): boolean {\n return (pathEndsWithWildcard(path) && !!branch.route.children?.length) || false;\n}\n\nfunction routeIsDescendant(route: RouteObject): boolean {\n return !!(!route.children && route.element && route.path?.endsWith('/*'));\n}\n\nfunction 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\nfunction addRoutesToAllRoutes(routes: RouteObject[]): void {\n routes.forEach(route => {\n const extractedChildRoutes = getChildRoutesRecursively(route);\n\n extractedChildRoutes.forEach(r => {\n allRoutes.add(r);\n });\n });\n}\n\nfunction getChildRoutesRecursively(route: RouteObject, allRoutes: Set<RouteObject> = new Set()): Set<RouteObject> {\n if (!allRoutes.has(route)) {\n allRoutes.add(route);\n\n if (route.children && !route.index) {\n route.children.forEach(child => {\n const childRoutes = getChildRoutesRecursively(child, allRoutes);\n\n childRoutes.forEach(r => {\n allRoutes.add(r);\n });\n });\n }\n }\n\n return allRoutes;\n}\n\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\nfunction prefixWithSlash(path: string): string {\n return path[0] === '/' ? path : `/${path}`;\n}\n\nfunction 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\nfunction 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 let pathBuilder = '';\n\n if (branches) {\n for (const branch of branches) {\n const route = branch.route;\n if (route) {\n // Early return if index route\n if (route.index) {\n return sendIndexPath(pathBuilder, branch.pathname, basename);\n }\n const path = route.path;\n\n // If path is not a wildcard and has no child routes, append the path\n if (path && !pathIsWildcardAndHasChildren(path, branch)) {\n const newPath = path[0] === '/' || pathBuilder[pathBuilder.length - 1] === '/' ? path : `/${path}`;\n pathBuilder = trimSlash(pathBuilder) + prefixWithSlash(newPath);\n\n // If the path matches the current location, return the path\n if (trimSlash(location.pathname) === trimSlash(basename + branch.pathname)) {\n if (\n // If the route defined on the element is something like\n // <Route path=\"/stores/:storeId/products/:productId\" element={<div>Product</div>} />\n // We should check against the branch.pathname for the number of / separators\n getNumberOfUrlSegments(pathBuilder) !== getNumberOfUrlSegments(branch.pathname) &&\n // We should not count wildcard operators in the url segments calculation\n !pathEndsWithWildcard(pathBuilder)\n ) {\n return [(_stripBasename ? '' : basename) + newPath, 'route'];\n }\n\n // if the last character of the pathbuilder is a wildcard and there are children, remove the wildcard\n if (pathIsWildcardAndHasChildren(pathBuilder, branch)) {\n pathBuilder = pathBuilder.slice(0, -1);\n }\n\n return [(_stripBasename ? '' : basename) + pathBuilder, 'route'];\n }\n }\n }\n }\n }\n\n const fallbackTransactionName = _stripBasename\n ? stripBasenameFromPathname(location.pathname, basename)\n : location.pathname || '/';\n\n return [fallbackTransactionName, 'url'];\n}\n\nfunction updatePageloadTransaction(\n activeRootSpan: Span | undefined,\n location: Location,\n routes: RouteObject[],\n matches?: AgnosticDataRouteMatch,\n basename?: string,\n allRoutes?: RouteObject[],\n): void {\n const branches = Array.isArray(matches)\n ? matches\n : (_matchRoutes(allRoutes || routes, location, basename) as unknown as RouteMatch[]);\n\n if (branches) {\n let name,\n source: TransactionSource = 'url';\n\n const isInDescendantRoute = locationIsInsideDescendantRoute(location, allRoutes || routes);\n\n if (isInDescendantRoute) {\n name = prefixWithSlash(rebuildRoutePathFromAllRoutes(allRoutes || routes, location));\n source = 'route';\n }\n\n if (!isInDescendantRoute || !name) {\n [name, source] = getNormalizedName(routes, location, branches, basename);\n }\n\n getCurrentScope().setTransactionName(name || '/');\n\n if (activeRootSpan) {\n activeRootSpan.updateName(name);\n activeRootSpan.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, source);\n }\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function createV6CompatibleWithSentryReactRouterRouting<P extends Record<string, any>, R extends React.FC<P>>(\n Routes: R,\n version: V6CompatibleVersion,\n): R {\n if (!_useEffect || !_useLocation || !_useNavigationType || !_createRoutesFromChildren || !_matchRoutes) {\n DEBUG_BUILD &&\n debug.warn(`reactRouterV6Instrumentation was unable to wrap Routes because of one or more missing parameters.\n useEffect: ${_useEffect}. useLocation: ${_useLocation}. useNavigationType: ${_useNavigationType}.\n createRoutesFromChildren: ${_createRoutesFromChildren}. matchRoutes: ${_matchRoutes}.`);\n\n return Routes;\n }\n\n const SentryRoutes: React.FC<P> = (props: P) => {\n const isMountRenderPass = React.useRef(true);\n\n const location = _useLocation();\n const navigationType = _useNavigationType();\n\n _useEffect(\n () => {\n const routes = _createRoutesFromChildren(props.children) as RouteObject[];\n\n if (isMountRenderPass.current) {\n addRoutesToAllRoutes(routes);\n\n updatePageloadTransaction(getActiveRootSpan(), location, routes, undefined, undefined, Array.from(allRoutes));\n isMountRenderPass.current = false;\n } else {\n handleNavigation({\n location,\n routes,\n navigationType,\n version,\n allRoutes: Array.from(allRoutes),\n });\n }\n },\n // `props.children` is purposely not included in the dependency array, because we do not want to re-run this effect\n // when the children change. We only want to start transactions when the location or navigation type change.\n [location, navigationType],\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 return <Routes {...props} />;\n };\n\n hoistNonReactStatics(SentryRoutes, Routes);\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 return SentryRoutes;\n}\n\nfunction 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).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\n/**\n * Returns number of URL segments of a passed string 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"],"names":["DEBUG_BUILD","debug","spanToJSON","WINDOW","addNonEnumerableProperty","browserTracingIntegration","startBrowserTracingPageLoadSpan","SEMANTIC_ATTRIBUTE_SENTRY_SOURCE","SEMANTIC_ATTRIBUTE_SENTRY_OP","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","getClient","getActiveSpan","startBrowserTracingNavigationSpan","getCurrentScope","hoistNonReactStatics","getRootSpan"],"mappings":"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"}
|
package/build/esm/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"type":"module","version":"10.
|
|
1
|
+
{"type":"module","version":"10.4.0","sideEffects":false}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { browserTracingIntegration, WINDOW, startBrowserTracingPageLoadSpan, startBrowserTracingNavigationSpan } from '@sentry/browser';
|
|
2
|
-
import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, debug, getActiveSpan, getRootSpan, spanToJSON, getCurrentScope, getClient } from '@sentry/core';
|
|
2
|
+
import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, debug, getActiveSpan, getRootSpan, spanToJSON, getCurrentScope, getClient, addNonEnumerableProperty } from '@sentry/core';
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { DEBUG_BUILD } from './debug-build.js';
|
|
5
5
|
import { hoistNonReactStatics } from './hoist-non-react-statics.js';
|
|
@@ -15,12 +15,137 @@ let _useNavigationType;
|
|
|
15
15
|
let _createRoutesFromChildren;
|
|
16
16
|
let _matchRoutes;
|
|
17
17
|
let _stripBasename = false;
|
|
18
|
+
let _enableAsyncRouteHandlers = false;
|
|
18
19
|
|
|
19
20
|
const CLIENTS_WITH_INSTRUMENT_NAVIGATION = new WeakSet();
|
|
20
21
|
|
|
21
22
|
// Keeping as a global variable for cross-usage in multiple functions
|
|
22
23
|
const allRoutes = new Set();
|
|
23
24
|
|
|
25
|
+
/**
|
|
26
|
+
* Adds resolved routes as children to the parent route.
|
|
27
|
+
* Prevents duplicate routes by checking if they already exist.
|
|
28
|
+
*/
|
|
29
|
+
function addResolvedRoutesToParent(resolvedRoutes, parentRoute) {
|
|
30
|
+
const existingChildren = parentRoute.children || [];
|
|
31
|
+
|
|
32
|
+
const newRoutes = resolvedRoutes.filter(
|
|
33
|
+
newRoute =>
|
|
34
|
+
!existingChildren.some(
|
|
35
|
+
existing =>
|
|
36
|
+
existing === newRoute ||
|
|
37
|
+
(newRoute.path && existing.path === newRoute.path) ||
|
|
38
|
+
(newRoute.id && existing.id === newRoute.id),
|
|
39
|
+
),
|
|
40
|
+
);
|
|
41
|
+
|
|
42
|
+
if (newRoutes.length > 0) {
|
|
43
|
+
parentRoute.children = [...existingChildren, ...newRoutes];
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Handles the result of an async handler function call.
|
|
49
|
+
*/
|
|
50
|
+
function handleAsyncHandlerResult(result, route, handlerKey) {
|
|
51
|
+
if (
|
|
52
|
+
result &&
|
|
53
|
+
typeof result === 'object' &&
|
|
54
|
+
'then' in result &&
|
|
55
|
+
typeof (result ).then === 'function'
|
|
56
|
+
) {
|
|
57
|
+
(result )
|
|
58
|
+
.then((resolvedRoutes) => {
|
|
59
|
+
if (Array.isArray(resolvedRoutes)) {
|
|
60
|
+
processResolvedRoutes(resolvedRoutes, route);
|
|
61
|
+
}
|
|
62
|
+
})
|
|
63
|
+
.catch((e) => {
|
|
64
|
+
DEBUG_BUILD && debug.warn(`Error resolving async handler '${handlerKey}' for route`, route, e);
|
|
65
|
+
});
|
|
66
|
+
} else if (Array.isArray(result)) {
|
|
67
|
+
processResolvedRoutes(result, route);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Processes resolved routes by adding them to allRoutes and checking for nested async handlers.
|
|
73
|
+
*/
|
|
74
|
+
function processResolvedRoutes(resolvedRoutes, parentRoute) {
|
|
75
|
+
resolvedRoutes.forEach(child => {
|
|
76
|
+
allRoutes.add(child);
|
|
77
|
+
// Only check for async handlers if the feature is enabled
|
|
78
|
+
if (_enableAsyncRouteHandlers) {
|
|
79
|
+
checkRouteForAsyncHandler(child);
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
if (parentRoute) {
|
|
84
|
+
// If a parent route is provided, add the resolved routes as children to the parent route
|
|
85
|
+
addResolvedRoutesToParent(resolvedRoutes, parentRoute);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// After processing lazy routes, check if we need to update an active pageload transaction
|
|
89
|
+
const activeRootSpan = getActiveRootSpan();
|
|
90
|
+
if (activeRootSpan && spanToJSON(activeRootSpan).op === 'pageload') {
|
|
91
|
+
const location = WINDOW.location;
|
|
92
|
+
if (location) {
|
|
93
|
+
// Re-run the pageload transaction update with the newly loaded routes
|
|
94
|
+
updatePageloadTransaction(
|
|
95
|
+
activeRootSpan,
|
|
96
|
+
{ pathname: location.pathname },
|
|
97
|
+
Array.from(allRoutes),
|
|
98
|
+
undefined,
|
|
99
|
+
undefined,
|
|
100
|
+
Array.from(allRoutes),
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Creates a proxy wrapper for an async handler function.
|
|
108
|
+
*/
|
|
109
|
+
function createAsyncHandlerProxy(
|
|
110
|
+
originalFunction,
|
|
111
|
+
route,
|
|
112
|
+
handlerKey,
|
|
113
|
+
) {
|
|
114
|
+
const proxy = new Proxy(originalFunction, {
|
|
115
|
+
apply(target, thisArg, argArray) {
|
|
116
|
+
const result = target.apply(thisArg, argArray);
|
|
117
|
+
handleAsyncHandlerResult(result, route, handlerKey);
|
|
118
|
+
return result;
|
|
119
|
+
},
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
addNonEnumerableProperty(proxy, '__sentry_proxied__', true);
|
|
123
|
+
|
|
124
|
+
return proxy;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Recursively checks a route for async handlers and sets up Proxies to add discovered child routes to allRoutes when called.
|
|
129
|
+
*/
|
|
130
|
+
function checkRouteForAsyncHandler(route) {
|
|
131
|
+
// Set up proxies for any functions in the route's handle
|
|
132
|
+
if (route.handle && typeof route.handle === 'object') {
|
|
133
|
+
for (const key of Object.keys(route.handle)) {
|
|
134
|
+
const maybeFn = route.handle[key];
|
|
135
|
+
if (typeof maybeFn === 'function' && !(maybeFn ).__sentry_proxied__) {
|
|
136
|
+
route.handle[key] = createAsyncHandlerProxy(maybeFn, route, key);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// Recursively check child routes
|
|
142
|
+
if (Array.isArray(route.children)) {
|
|
143
|
+
for (const child of route.children) {
|
|
144
|
+
checkRouteForAsyncHandler(child);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
24
149
|
/**
|
|
25
150
|
* Creates a wrapCreateBrowserRouter function that can be used with all React Router v6 compatible versions.
|
|
26
151
|
*/
|
|
@@ -42,6 +167,13 @@ function createV6CompatibleWrapCreateBrowserRouter
|
|
|
42
167
|
return function (routes, opts) {
|
|
43
168
|
addRoutesToAllRoutes(routes);
|
|
44
169
|
|
|
170
|
+
// Check for async handlers that might contain sub-route declarations (only if enabled)
|
|
171
|
+
if (_enableAsyncRouteHandlers) {
|
|
172
|
+
for (const route of routes) {
|
|
173
|
+
checkRouteForAsyncHandler(route);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
|
|
45
177
|
const router = createRouterFunction(routes, opts);
|
|
46
178
|
const basename = opts?.basename;
|
|
47
179
|
|
|
@@ -118,6 +250,13 @@ function createV6CompatibleWrapCreateMemoryRouter
|
|
|
118
250
|
) {
|
|
119
251
|
addRoutesToAllRoutes(routes);
|
|
120
252
|
|
|
253
|
+
// Check for async handlers that might contain sub-route declarations (only if enabled)
|
|
254
|
+
if (_enableAsyncRouteHandlers) {
|
|
255
|
+
for (const route of routes) {
|
|
256
|
+
checkRouteForAsyncHandler(route);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
|
|
121
260
|
const router = createRouterFunction(routes, opts);
|
|
122
261
|
const basename = opts?.basename;
|
|
123
262
|
|
|
@@ -184,6 +323,7 @@ function createReactRouterV6CompatibleTracingIntegration(
|
|
|
184
323
|
createRoutesFromChildren,
|
|
185
324
|
matchRoutes,
|
|
186
325
|
stripBasename,
|
|
326
|
+
enableAsyncRouteHandlers = false,
|
|
187
327
|
instrumentPageLoad = true,
|
|
188
328
|
instrumentNavigation = true,
|
|
189
329
|
} = options;
|
|
@@ -199,6 +339,7 @@ function createReactRouterV6CompatibleTracingIntegration(
|
|
|
199
339
|
_matchRoutes = matchRoutes;
|
|
200
340
|
_createRoutesFromChildren = createRoutesFromChildren;
|
|
201
341
|
_stripBasename = stripBasename || false;
|
|
342
|
+
_enableAsyncRouteHandlers = enableAsyncRouteHandlers;
|
|
202
343
|
},
|
|
203
344
|
afterAllSetup(client) {
|
|
204
345
|
integration.afterAllSetup(client);
|
|
@@ -488,6 +629,7 @@ function getNormalizedName(
|
|
|
488
629
|
}
|
|
489
630
|
|
|
490
631
|
let pathBuilder = '';
|
|
632
|
+
|
|
491
633
|
if (branches) {
|
|
492
634
|
for (const branch of branches) {
|
|
493
635
|
const route = branch.route;
|
|
@@ -649,5 +791,5 @@ function getNumberOfUrlSegments(url) {
|
|
|
649
791
|
return url.split(/\\?\//).filter(s => s.length > 0 && s !== ',').length;
|
|
650
792
|
}
|
|
651
793
|
|
|
652
|
-
export { createReactRouterV6CompatibleTracingIntegration, createV6CompatibleWithSentryReactRouterRouting, createV6CompatibleWrapCreateBrowserRouter, createV6CompatibleWrapCreateMemoryRouter, createV6CompatibleWrapUseRoutes, getNumberOfUrlSegments, handleNavigation };
|
|
794
|
+
export { checkRouteForAsyncHandler, createReactRouterV6CompatibleTracingIntegration, createV6CompatibleWithSentryReactRouterRouting, createV6CompatibleWrapCreateBrowserRouter, createV6CompatibleWrapCreateMemoryRouter, createV6CompatibleWrapUseRoutes, getNumberOfUrlSegments, handleNavigation };
|
|
653
795
|
//# sourceMappingURL=reactrouterv6-compat-utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reactrouterv6-compat-utils.js","sources":["../../src/reactrouterv6-compat-utils.tsx"],"sourcesContent":["/* eslint-disable max-lines */\n// Inspired from Donnie McNeal's solution:\n// https://gist.github.com/wontondon/e8c4bdf2888875e4c755712e99279536\n\nimport {\n browserTracingIntegration,\n startBrowserTracingNavigationSpan,\n startBrowserTracingPageLoadSpan,\n WINDOW,\n} from '@sentry/browser';\nimport type { Client, Integration, Span, TransactionSource } from '@sentry/core';\nimport {\n debug,\n getActiveSpan,\n getClient,\n getCurrentScope,\n getRootSpan,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n spanToJSON,\n} from '@sentry/core';\nimport * as React from 'react';\nimport { DEBUG_BUILD } from './debug-build';\nimport { hoistNonReactStatics } from './hoist-non-react-statics';\nimport type {\n Action,\n AgnosticDataRouteMatch,\n CreateRouterFunction,\n CreateRoutesFromChildren,\n Location,\n MatchRoutes,\n RouteMatch,\n RouteObject,\n Router,\n RouterState,\n UseEffect,\n UseLocation,\n UseNavigationType,\n UseRoutes,\n} from './types';\n\nlet _useEffect: UseEffect;\nlet _useLocation: UseLocation;\nlet _useNavigationType: UseNavigationType;\nlet _createRoutesFromChildren: CreateRoutesFromChildren;\nlet _matchRoutes: MatchRoutes;\nlet _stripBasename: boolean = false;\n\nconst CLIENTS_WITH_INSTRUMENT_NAVIGATION = new WeakSet<Client>();\n\nexport interface ReactRouterOptions {\n useEffect: UseEffect;\n useLocation: UseLocation;\n useNavigationType: UseNavigationType;\n createRoutesFromChildren: CreateRoutesFromChildren;\n matchRoutes: MatchRoutes;\n stripBasename?: boolean;\n}\n\ntype V6CompatibleVersion = '6' | '7';\n\n// Keeping as a global variable for cross-usage in multiple functions\nconst allRoutes = new Set<RouteObject>();\n\n/**\n * Creates a wrapCreateBrowserRouter function that can be used with all React Router v6 compatible versions.\n */\nexport function createV6CompatibleWrapCreateBrowserRouter<\n TState extends RouterState = RouterState,\n TRouter extends Router<TState> = Router<TState>,\n>(\n createRouterFunction: CreateRouterFunction<TState, TRouter>,\n version: V6CompatibleVersion,\n): CreateRouterFunction<TState, TRouter> {\n if (!_useEffect || !_useLocation || !_useNavigationType || !_matchRoutes) {\n DEBUG_BUILD &&\n debug.warn(\n `reactRouterV${version}Instrumentation was unable to wrap the \\`createRouter\\` function because of one or more missing parameters.`,\n );\n\n return createRouterFunction;\n }\n\n return function (routes: RouteObject[], opts?: Record<string, unknown> & { basename?: string }): TRouter {\n addRoutesToAllRoutes(routes);\n\n const router = createRouterFunction(routes, opts);\n const basename = opts?.basename;\n\n const activeRootSpan = getActiveRootSpan();\n\n // The initial load ends when `createBrowserRouter` is called.\n // This is the earliest convenient time to update the transaction name.\n // Callbacks to `router.subscribe` are not called for the initial load.\n if (router.state.historyAction === 'POP' && activeRootSpan) {\n updatePageloadTransaction(\n activeRootSpan,\n router.state.location,\n routes,\n undefined,\n basename,\n Array.from(allRoutes),\n );\n }\n\n router.subscribe((state: RouterState) => {\n if (state.historyAction === 'PUSH' || state.historyAction === 'POP') {\n // Wait for the next render if loading an unsettled route\n if (state.navigation.state !== 'idle') {\n requestAnimationFrame(() => {\n handleNavigation({\n location: state.location,\n routes,\n navigationType: state.historyAction,\n version,\n basename,\n allRoutes: Array.from(allRoutes),\n });\n });\n } else {\n handleNavigation({\n location: state.location,\n routes,\n navigationType: state.historyAction,\n version,\n basename,\n allRoutes: Array.from(allRoutes),\n });\n }\n }\n });\n\n return router;\n };\n}\n\n/**\n * Creates a wrapCreateMemoryRouter function that can be used with all React Router v6 compatible versions.\n */\nexport function createV6CompatibleWrapCreateMemoryRouter<\n TState extends RouterState = RouterState,\n TRouter extends Router<TState> = Router<TState>,\n>(\n createRouterFunction: CreateRouterFunction<TState, TRouter>,\n version: V6CompatibleVersion,\n): CreateRouterFunction<TState, TRouter> {\n if (!_useEffect || !_useLocation || !_useNavigationType || !_matchRoutes) {\n DEBUG_BUILD &&\n debug.warn(\n `reactRouterV${version}Instrumentation was unable to wrap the \\`createMemoryRouter\\` function because of one or more missing parameters.`,\n );\n\n return createRouterFunction;\n }\n\n return function (\n routes: RouteObject[],\n opts?: Record<string, unknown> & {\n basename?: string;\n initialEntries?: (string | { pathname: string })[];\n initialIndex?: number;\n },\n ): TRouter {\n addRoutesToAllRoutes(routes);\n\n const router = createRouterFunction(routes, opts);\n const basename = opts?.basename;\n\n const activeRootSpan = getActiveRootSpan();\n let initialEntry = undefined;\n\n const initialEntries = opts?.initialEntries;\n const initialIndex = opts?.initialIndex;\n\n const hasOnlyOneInitialEntry = initialEntries && initialEntries.length === 1;\n const hasIndexedEntry = initialIndex !== undefined && initialEntries && initialEntries[initialIndex];\n\n initialEntry = hasOnlyOneInitialEntry\n ? initialEntries[0]\n : hasIndexedEntry\n ? initialEntries[initialIndex]\n : undefined;\n\n const location = initialEntry\n ? typeof initialEntry === 'string'\n ? { pathname: initialEntry }\n : initialEntry\n : router.state.location;\n\n if (router.state.historyAction === 'POP' && activeRootSpan) {\n updatePageloadTransaction(activeRootSpan, location, routes, undefined, basename, Array.from(allRoutes));\n }\n\n router.subscribe((state: RouterState) => {\n const location = state.location;\n if (state.historyAction === 'PUSH' || state.historyAction === 'POP') {\n handleNavigation({\n location,\n routes,\n navigationType: state.historyAction,\n version,\n basename,\n allRoutes: Array.from(allRoutes),\n });\n }\n });\n\n return router;\n };\n}\n\n/**\n * Creates a browser tracing integration that can be used with all React Router v6 compatible versions.\n */\nexport function createReactRouterV6CompatibleTracingIntegration(\n options: Parameters<typeof browserTracingIntegration>[0] & ReactRouterOptions,\n version: V6CompatibleVersion,\n): Integration {\n const integration = browserTracingIntegration({\n ...options,\n instrumentPageLoad: false,\n instrumentNavigation: false,\n });\n\n const {\n useEffect,\n useLocation,\n useNavigationType,\n createRoutesFromChildren,\n matchRoutes,\n stripBasename,\n instrumentPageLoad = true,\n instrumentNavigation = true,\n } = options;\n\n return {\n ...integration,\n setup(client) {\n integration.setup(client);\n\n _useEffect = useEffect;\n _useLocation = useLocation;\n _useNavigationType = useNavigationType;\n _matchRoutes = matchRoutes;\n _createRoutesFromChildren = createRoutesFromChildren;\n _stripBasename = stripBasename || false;\n },\n afterAllSetup(client) {\n integration.afterAllSetup(client);\n\n const initPathName = WINDOW.location?.pathname;\n if (instrumentPageLoad && initPathName) {\n startBrowserTracingPageLoadSpan(client, {\n name: initPathName,\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'url',\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'pageload',\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: `auto.pageload.react.reactrouter_v${version}`,\n },\n });\n }\n\n if (instrumentNavigation) {\n CLIENTS_WITH_INSTRUMENT_NAVIGATION.add(client);\n }\n },\n };\n}\n\nexport function createV6CompatibleWrapUseRoutes(origUseRoutes: UseRoutes, version: V6CompatibleVersion): UseRoutes {\n if (!_useEffect || !_useLocation || !_useNavigationType || !_matchRoutes) {\n DEBUG_BUILD &&\n debug.warn(\n 'reactRouterV6Instrumentation was unable to wrap `useRoutes` because of one or more missing parameters.',\n );\n\n return origUseRoutes;\n }\n\n const SentryRoutes: React.FC<{\n children?: React.ReactNode;\n routes: RouteObject[];\n locationArg?: Partial<Location> | string;\n }> = (props: { children?: React.ReactNode; routes: RouteObject[]; locationArg?: Partial<Location> | string }) => {\n const isMountRenderPass = React.useRef(true);\n const { routes, locationArg } = props;\n\n const Routes = origUseRoutes(routes, locationArg);\n\n const location = _useLocation();\n const navigationType = _useNavigationType();\n\n // A value with stable identity to either pick `locationArg` if available or `location` if not\n const stableLocationParam =\n typeof locationArg === 'string' || locationArg?.pathname ? (locationArg as { pathname: string }) : location;\n\n _useEffect(() => {\n const normalizedLocation =\n typeof stableLocationParam === 'string' ? { pathname: stableLocationParam } : stableLocationParam;\n\n if (isMountRenderPass.current) {\n addRoutesToAllRoutes(routes);\n\n updatePageloadTransaction(\n getActiveRootSpan(),\n normalizedLocation,\n routes,\n undefined,\n undefined,\n Array.from(allRoutes),\n );\n isMountRenderPass.current = false;\n } else {\n handleNavigation({\n location: normalizedLocation,\n routes,\n navigationType,\n version,\n allRoutes: Array.from(allRoutes),\n });\n }\n }, [navigationType, stableLocationParam]);\n\n return Routes;\n };\n\n // eslint-disable-next-line react/display-name\n return (routes: RouteObject[], locationArg?: Partial<Location> | string): React.ReactElement | null => {\n return <SentryRoutes routes={routes} locationArg={locationArg} />;\n };\n}\n\nexport function handleNavigation(opts: {\n location: Location;\n routes: RouteObject[];\n navigationType: Action;\n version: V6CompatibleVersion;\n matches?: AgnosticDataRouteMatch;\n basename?: string;\n allRoutes?: RouteObject[];\n}): void {\n const { location, routes, navigationType, version, matches, basename, allRoutes } = opts;\n const branches = Array.isArray(matches) ? matches : _matchRoutes(routes, location, basename);\n\n const client = getClient();\n if (!client || !CLIENTS_WITH_INSTRUMENT_NAVIGATION.has(client)) {\n return;\n }\n\n if ((navigationType === 'PUSH' || navigationType === 'POP') && branches) {\n let name,\n source: TransactionSource = 'url';\n const isInDescendantRoute = locationIsInsideDescendantRoute(location, allRoutes || routes);\n\n if (isInDescendantRoute) {\n name = prefixWithSlash(rebuildRoutePathFromAllRoutes(allRoutes || routes, location));\n source = 'route';\n }\n\n if (!isInDescendantRoute || !name) {\n [name, source] = getNormalizedName(routes, location, branches, basename);\n }\n\n const activeSpan = getActiveSpan();\n const isAlreadyInNavigationSpan = activeSpan && spanToJSON(activeSpan).op === 'navigation';\n\n // Cross usage can result in multiple navigation spans being created without this check\n if (isAlreadyInNavigationSpan) {\n activeSpan?.updateName(name);\n activeSpan?.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, source);\n } else {\n startBrowserTracingNavigationSpan(client, {\n name,\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: source,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'navigation',\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: `auto.navigation.react.reactrouter_v${version}`,\n },\n });\n }\n }\n}\n\n/**\n * Strip the basename from a pathname if exists.\n *\n * Vendored and modified from `react-router`\n * https://github.com/remix-run/react-router/blob/462bb712156a3f739d6139a0f14810b76b002df6/packages/router/utils.ts#L1038\n */\nfunction stripBasenameFromPathname(pathname: string, basename: string): string {\n if (!basename || basename === '/') {\n return pathname;\n }\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return pathname;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n const startIndex = basename.endsWith('/') ? basename.length - 1 : basename.length;\n const nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== '/') {\n // pathname does not start with basename/\n return pathname;\n }\n\n return pathname.slice(startIndex) || '/';\n}\n\nfunction sendIndexPath(pathBuilder: string, pathname: string, basename: string): [string, TransactionSource] {\n const reconstructedPath = pathBuilder || _stripBasename ? stripBasenameFromPathname(pathname, basename) : pathname;\n\n const formattedPath =\n // If the path ends with a slash, remove it\n reconstructedPath[reconstructedPath.length - 1] === '/'\n ? reconstructedPath.slice(0, -1)\n : // If the path ends with a wildcard, remove it\n reconstructedPath.slice(-2) === '/*'\n ? reconstructedPath.slice(0, -1)\n : reconstructedPath;\n\n return [formattedPath, 'route'];\n}\n\nfunction pathEndsWithWildcard(path: string): boolean {\n return path.endsWith('*');\n}\n\nfunction pathIsWildcardAndHasChildren(path: string, branch: RouteMatch<string>): boolean {\n return (pathEndsWithWildcard(path) && !!branch.route.children?.length) || false;\n}\n\nfunction routeIsDescendant(route: RouteObject): boolean {\n return !!(!route.children && route.element && route.path?.endsWith('/*'));\n}\n\nfunction 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\nfunction addRoutesToAllRoutes(routes: RouteObject[]): void {\n routes.forEach(route => {\n const extractedChildRoutes = getChildRoutesRecursively(route);\n\n extractedChildRoutes.forEach(r => {\n allRoutes.add(r);\n });\n });\n}\n\nfunction getChildRoutesRecursively(route: RouteObject, allRoutes: Set<RouteObject> = new Set()): Set<RouteObject> {\n if (!allRoutes.has(route)) {\n allRoutes.add(route);\n\n if (route.children && !route.index) {\n route.children.forEach(child => {\n const childRoutes = getChildRoutesRecursively(child, allRoutes);\n\n childRoutes.forEach(r => {\n allRoutes.add(r);\n });\n });\n }\n }\n\n return allRoutes;\n}\n\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\nfunction prefixWithSlash(path: string): string {\n return path[0] === '/' ? path : `/${path}`;\n}\n\nfunction 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\nfunction 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 let pathBuilder = '';\n if (branches) {\n for (const branch of branches) {\n const route = branch.route;\n if (route) {\n // Early return if index route\n if (route.index) {\n return sendIndexPath(pathBuilder, branch.pathname, basename);\n }\n const path = route.path;\n\n // If path is not a wildcard and has no child routes, append the path\n if (path && !pathIsWildcardAndHasChildren(path, branch)) {\n const newPath = path[0] === '/' || pathBuilder[pathBuilder.length - 1] === '/' ? path : `/${path}`;\n pathBuilder = trimSlash(pathBuilder) + prefixWithSlash(newPath);\n\n // If the path matches the current location, return the path\n if (trimSlash(location.pathname) === trimSlash(basename + branch.pathname)) {\n if (\n // If the route defined on the element is something like\n // <Route path=\"/stores/:storeId/products/:productId\" element={<div>Product</div>} />\n // We should check against the branch.pathname for the number of / separators\n getNumberOfUrlSegments(pathBuilder) !== getNumberOfUrlSegments(branch.pathname) &&\n // We should not count wildcard operators in the url segments calculation\n !pathEndsWithWildcard(pathBuilder)\n ) {\n return [(_stripBasename ? '' : basename) + newPath, 'route'];\n }\n\n // if the last character of the pathbuilder is a wildcard and there are children, remove the wildcard\n if (pathIsWildcardAndHasChildren(pathBuilder, branch)) {\n pathBuilder = pathBuilder.slice(0, -1);\n }\n\n return [(_stripBasename ? '' : basename) + pathBuilder, 'route'];\n }\n }\n }\n }\n }\n\n const fallbackTransactionName = _stripBasename\n ? stripBasenameFromPathname(location.pathname, basename)\n : location.pathname || '/';\n\n return [fallbackTransactionName, 'url'];\n}\n\nfunction updatePageloadTransaction(\n activeRootSpan: Span | undefined,\n location: Location,\n routes: RouteObject[],\n matches?: AgnosticDataRouteMatch,\n basename?: string,\n allRoutes?: RouteObject[],\n): void {\n const branches = Array.isArray(matches)\n ? matches\n : (_matchRoutes(allRoutes || routes, location, basename) as unknown as RouteMatch[]);\n\n if (branches) {\n let name,\n source: TransactionSource = 'url';\n\n const isInDescendantRoute = locationIsInsideDescendantRoute(location, allRoutes || routes);\n\n if (isInDescendantRoute) {\n name = prefixWithSlash(rebuildRoutePathFromAllRoutes(allRoutes || routes, location));\n source = 'route';\n }\n\n if (!isInDescendantRoute || !name) {\n [name, source] = getNormalizedName(routes, location, branches, basename);\n }\n\n getCurrentScope().setTransactionName(name || '/');\n\n if (activeRootSpan) {\n activeRootSpan.updateName(name);\n activeRootSpan.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, source);\n }\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function createV6CompatibleWithSentryReactRouterRouting<P extends Record<string, any>, R extends React.FC<P>>(\n Routes: R,\n version: V6CompatibleVersion,\n): R {\n if (!_useEffect || !_useLocation || !_useNavigationType || !_createRoutesFromChildren || !_matchRoutes) {\n DEBUG_BUILD &&\n debug.warn(`reactRouterV6Instrumentation was unable to wrap Routes because of one or more missing parameters.\n useEffect: ${_useEffect}. useLocation: ${_useLocation}. useNavigationType: ${_useNavigationType}.\n createRoutesFromChildren: ${_createRoutesFromChildren}. matchRoutes: ${_matchRoutes}.`);\n\n return Routes;\n }\n\n const SentryRoutes: React.FC<P> = (props: P) => {\n const isMountRenderPass = React.useRef(true);\n\n const location = _useLocation();\n const navigationType = _useNavigationType();\n\n _useEffect(\n () => {\n const routes = _createRoutesFromChildren(props.children) as RouteObject[];\n\n if (isMountRenderPass.current) {\n addRoutesToAllRoutes(routes);\n\n updatePageloadTransaction(getActiveRootSpan(), location, routes, undefined, undefined, Array.from(allRoutes));\n isMountRenderPass.current = false;\n } else {\n handleNavigation({\n location,\n routes,\n navigationType,\n version,\n allRoutes: Array.from(allRoutes),\n });\n }\n },\n // `props.children` is purposely not included in the dependency array, because we do not want to re-run this effect\n // when the children change. We only want to start transactions when the location or navigation type change.\n [location, navigationType],\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 return <Routes {...props} />;\n };\n\n hoistNonReactStatics(SentryRoutes, Routes);\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 return SentryRoutes;\n}\n\nfunction 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).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\n/**\n * Returns number of URL segments of a passed string 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"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"reactrouterv6-compat-utils.js","sources":["../../src/reactrouterv6-compat-utils.tsx"],"sourcesContent":["/* eslint-disable max-lines */\n// Inspired from Donnie McNeal's solution:\n// https://gist.github.com/wontondon/e8c4bdf2888875e4c755712e99279536\n\nimport {\n browserTracingIntegration,\n startBrowserTracingNavigationSpan,\n startBrowserTracingPageLoadSpan,\n WINDOW,\n} from '@sentry/browser';\nimport type { Client, Integration, Span, TransactionSource } from '@sentry/core';\nimport {\n addNonEnumerableProperty,\n debug,\n getActiveSpan,\n getClient,\n getCurrentScope,\n getRootSpan,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n spanToJSON,\n} from '@sentry/core';\nimport * as React from 'react';\nimport { DEBUG_BUILD } from './debug-build';\nimport { hoistNonReactStatics } from './hoist-non-react-statics';\nimport type {\n Action,\n AgnosticDataRouteMatch,\n CreateRouterFunction,\n CreateRoutesFromChildren,\n Location,\n MatchRoutes,\n RouteMatch,\n RouteObject,\n Router,\n RouterState,\n UseEffect,\n UseLocation,\n UseNavigationType,\n UseRoutes,\n} from './types';\n\nlet _useEffect: UseEffect;\nlet _useLocation: UseLocation;\nlet _useNavigationType: UseNavigationType;\nlet _createRoutesFromChildren: CreateRoutesFromChildren;\nlet _matchRoutes: MatchRoutes;\nlet _stripBasename: boolean = false;\nlet _enableAsyncRouteHandlers: boolean = false;\n\nconst CLIENTS_WITH_INSTRUMENT_NAVIGATION = new WeakSet<Client>();\n\nexport interface ReactRouterOptions {\n useEffect: UseEffect;\n useLocation: UseLocation;\n useNavigationType: UseNavigationType;\n createRoutesFromChildren: CreateRoutesFromChildren;\n matchRoutes: MatchRoutes;\n /**\n * Whether to strip the basename from the pathname when creating transactions.\n *\n * This is useful for applications that use a basename in their routing setup.\n * @default false\n */\n stripBasename?: boolean;\n /**\n * Enables support for async route handlers.\n *\n * This allows Sentry to track and instrument routes dynamically resolved from async handlers.\n * @default false\n */\n enableAsyncRouteHandlers?: boolean;\n}\n\ntype V6CompatibleVersion = '6' | '7';\n\n// Keeping as a global variable for cross-usage in multiple functions\nconst allRoutes = new Set<RouteObject>();\n\n/**\n * Adds resolved routes as children to the parent route.\n * Prevents duplicate routes by checking if they already exist.\n */\nfunction addResolvedRoutesToParent(resolvedRoutes: RouteObject[], parentRoute: RouteObject): void {\n const existingChildren = parentRoute.children || [];\n\n const newRoutes = resolvedRoutes.filter(\n newRoute =>\n !existingChildren.some(\n existing =>\n existing === newRoute ||\n (newRoute.path && existing.path === newRoute.path) ||\n (newRoute.id && existing.id === newRoute.id),\n ),\n );\n\n if (newRoutes.length > 0) {\n parentRoute.children = [...existingChildren, ...newRoutes];\n }\n}\n\n/**\n * Handles the result of an async handler function call.\n */\nfunction handleAsyncHandlerResult(result: unknown, route: RouteObject, handlerKey: string): void {\n if (\n result &&\n typeof result === 'object' &&\n 'then' in result &&\n typeof (result as Promise<unknown>).then === 'function'\n ) {\n (result as Promise<unknown>)\n .then((resolvedRoutes: unknown) => {\n if (Array.isArray(resolvedRoutes)) {\n processResolvedRoutes(resolvedRoutes, route);\n }\n })\n .catch((e: unknown) => {\n DEBUG_BUILD && debug.warn(`Error resolving async handler '${handlerKey}' for route`, route, e);\n });\n } else if (Array.isArray(result)) {\n processResolvedRoutes(result, route);\n }\n}\n\n/**\n * Processes resolved routes by adding them to allRoutes and checking for nested async handlers.\n */\nfunction processResolvedRoutes(resolvedRoutes: RouteObject[], parentRoute?: RouteObject): void {\n resolvedRoutes.forEach(child => {\n allRoutes.add(child);\n // Only check for async handlers if the feature is enabled\n if (_enableAsyncRouteHandlers) {\n checkRouteForAsyncHandler(child);\n }\n });\n\n if (parentRoute) {\n // If a parent route is provided, add the resolved routes as children to the parent route\n addResolvedRoutesToParent(resolvedRoutes, parentRoute);\n }\n\n // After processing lazy routes, check if we need to update an active pageload transaction\n const activeRootSpan = getActiveRootSpan();\n if (activeRootSpan && spanToJSON(activeRootSpan).op === 'pageload') {\n const location = WINDOW.location;\n if (location) {\n // Re-run the pageload transaction update with the newly loaded routes\n updatePageloadTransaction(\n activeRootSpan,\n { pathname: location.pathname },\n Array.from(allRoutes),\n undefined,\n undefined,\n Array.from(allRoutes),\n );\n }\n }\n}\n\n/**\n * Creates a proxy wrapper for an async handler function.\n */\nfunction createAsyncHandlerProxy(\n originalFunction: (...args: unknown[]) => unknown,\n route: RouteObject,\n handlerKey: string,\n): (...args: unknown[]) => unknown {\n const proxy = new Proxy(originalFunction, {\n apply(target: (...args: unknown[]) => unknown, thisArg, argArray) {\n const result = target.apply(thisArg, argArray);\n handleAsyncHandlerResult(result, route, handlerKey);\n return result;\n },\n });\n\n addNonEnumerableProperty(proxy, '__sentry_proxied__', true);\n\n return proxy;\n}\n\n/**\n * Recursively checks a route for async handlers and sets up Proxies to add discovered child routes to allRoutes when called.\n */\nexport function checkRouteForAsyncHandler(route: RouteObject): void {\n // Set up proxies for any functions in the route's handle\n if (route.handle && typeof route.handle === 'object') {\n for (const key of Object.keys(route.handle)) {\n const maybeFn = route.handle[key];\n if (typeof maybeFn === 'function' && !(maybeFn as { __sentry_proxied__?: boolean }).__sentry_proxied__) {\n route.handle[key] = createAsyncHandlerProxy(maybeFn, route, key);\n }\n }\n }\n\n // Recursively check child routes\n if (Array.isArray(route.children)) {\n for (const child of route.children) {\n checkRouteForAsyncHandler(child);\n }\n }\n}\n\n/**\n * Creates a wrapCreateBrowserRouter function that can be used with all React Router v6 compatible versions.\n */\nexport function createV6CompatibleWrapCreateBrowserRouter<\n TState extends RouterState = RouterState,\n TRouter extends Router<TState> = Router<TState>,\n>(\n createRouterFunction: CreateRouterFunction<TState, TRouter>,\n version: V6CompatibleVersion,\n): CreateRouterFunction<TState, TRouter> {\n if (!_useEffect || !_useLocation || !_useNavigationType || !_matchRoutes) {\n DEBUG_BUILD &&\n debug.warn(\n `reactRouterV${version}Instrumentation was unable to wrap the \\`createRouter\\` function because of one or more missing parameters.`,\n );\n\n return createRouterFunction;\n }\n\n return function (routes: RouteObject[], opts?: Record<string, unknown> & { basename?: string }): TRouter {\n addRoutesToAllRoutes(routes);\n\n // Check for async handlers that might contain sub-route declarations (only if enabled)\n if (_enableAsyncRouteHandlers) {\n for (const route of routes) {\n checkRouteForAsyncHandler(route);\n }\n }\n\n const router = createRouterFunction(routes, opts);\n const basename = opts?.basename;\n\n const activeRootSpan = getActiveRootSpan();\n\n // The initial load ends when `createBrowserRouter` is called.\n // This is the earliest convenient time to update the transaction name.\n // Callbacks to `router.subscribe` are not called for the initial load.\n if (router.state.historyAction === 'POP' && activeRootSpan) {\n updatePageloadTransaction(\n activeRootSpan,\n router.state.location,\n routes,\n undefined,\n basename,\n Array.from(allRoutes),\n );\n }\n\n router.subscribe((state: RouterState) => {\n if (state.historyAction === 'PUSH' || state.historyAction === 'POP') {\n // Wait for the next render if loading an unsettled route\n if (state.navigation.state !== 'idle') {\n requestAnimationFrame(() => {\n handleNavigation({\n location: state.location,\n routes,\n navigationType: state.historyAction,\n version,\n basename,\n allRoutes: Array.from(allRoutes),\n });\n });\n } else {\n handleNavigation({\n location: state.location,\n routes,\n navigationType: state.historyAction,\n version,\n basename,\n allRoutes: Array.from(allRoutes),\n });\n }\n }\n });\n\n return router;\n };\n}\n\n/**\n * Creates a wrapCreateMemoryRouter function that can be used with all React Router v6 compatible versions.\n */\nexport function createV6CompatibleWrapCreateMemoryRouter<\n TState extends RouterState = RouterState,\n TRouter extends Router<TState> = Router<TState>,\n>(\n createRouterFunction: CreateRouterFunction<TState, TRouter>,\n version: V6CompatibleVersion,\n): CreateRouterFunction<TState, TRouter> {\n if (!_useEffect || !_useLocation || !_useNavigationType || !_matchRoutes) {\n DEBUG_BUILD &&\n debug.warn(\n `reactRouterV${version}Instrumentation was unable to wrap the \\`createMemoryRouter\\` function because of one or more missing parameters.`,\n );\n\n return createRouterFunction;\n }\n\n return function (\n routes: RouteObject[],\n opts?: Record<string, unknown> & {\n basename?: string;\n initialEntries?: (string | { pathname: string })[];\n initialIndex?: number;\n },\n ): TRouter {\n addRoutesToAllRoutes(routes);\n\n // Check for async handlers that might contain sub-route declarations (only if enabled)\n if (_enableAsyncRouteHandlers) {\n for (const route of routes) {\n checkRouteForAsyncHandler(route);\n }\n }\n\n const router = createRouterFunction(routes, opts);\n const basename = opts?.basename;\n\n const activeRootSpan = getActiveRootSpan();\n let initialEntry = undefined;\n\n const initialEntries = opts?.initialEntries;\n const initialIndex = opts?.initialIndex;\n\n const hasOnlyOneInitialEntry = initialEntries && initialEntries.length === 1;\n const hasIndexedEntry = initialIndex !== undefined && initialEntries && initialEntries[initialIndex];\n\n initialEntry = hasOnlyOneInitialEntry\n ? initialEntries[0]\n : hasIndexedEntry\n ? initialEntries[initialIndex]\n : undefined;\n\n const location = initialEntry\n ? typeof initialEntry === 'string'\n ? { pathname: initialEntry }\n : initialEntry\n : router.state.location;\n\n if (router.state.historyAction === 'POP' && activeRootSpan) {\n updatePageloadTransaction(activeRootSpan, location, routes, undefined, basename, Array.from(allRoutes));\n }\n\n router.subscribe((state: RouterState) => {\n const location = state.location;\n if (state.historyAction === 'PUSH' || state.historyAction === 'POP') {\n handleNavigation({\n location,\n routes,\n navigationType: state.historyAction,\n version,\n basename,\n allRoutes: Array.from(allRoutes),\n });\n }\n });\n\n return router;\n };\n}\n\n/**\n * Creates a browser tracing integration that can be used with all React Router v6 compatible versions.\n */\nexport function createReactRouterV6CompatibleTracingIntegration(\n options: Parameters<typeof browserTracingIntegration>[0] & ReactRouterOptions,\n version: V6CompatibleVersion,\n): Integration {\n const integration = browserTracingIntegration({\n ...options,\n instrumentPageLoad: false,\n instrumentNavigation: false,\n });\n\n const {\n useEffect,\n useLocation,\n useNavigationType,\n createRoutesFromChildren,\n matchRoutes,\n stripBasename,\n enableAsyncRouteHandlers = false,\n instrumentPageLoad = true,\n instrumentNavigation = true,\n } = options;\n\n return {\n ...integration,\n setup(client) {\n integration.setup(client);\n\n _useEffect = useEffect;\n _useLocation = useLocation;\n _useNavigationType = useNavigationType;\n _matchRoutes = matchRoutes;\n _createRoutesFromChildren = createRoutesFromChildren;\n _stripBasename = stripBasename || false;\n _enableAsyncRouteHandlers = enableAsyncRouteHandlers;\n },\n afterAllSetup(client) {\n integration.afterAllSetup(client);\n\n const initPathName = WINDOW.location?.pathname;\n if (instrumentPageLoad && initPathName) {\n startBrowserTracingPageLoadSpan(client, {\n name: initPathName,\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'url',\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'pageload',\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: `auto.pageload.react.reactrouter_v${version}`,\n },\n });\n }\n\n if (instrumentNavigation) {\n CLIENTS_WITH_INSTRUMENT_NAVIGATION.add(client);\n }\n },\n };\n}\n\nexport function createV6CompatibleWrapUseRoutes(origUseRoutes: UseRoutes, version: V6CompatibleVersion): UseRoutes {\n if (!_useEffect || !_useLocation || !_useNavigationType || !_matchRoutes) {\n DEBUG_BUILD &&\n debug.warn(\n 'reactRouterV6Instrumentation was unable to wrap `useRoutes` because of one or more missing parameters.',\n );\n\n return origUseRoutes;\n }\n\n const SentryRoutes: React.FC<{\n children?: React.ReactNode;\n routes: RouteObject[];\n locationArg?: Partial<Location> | string;\n }> = (props: { children?: React.ReactNode; routes: RouteObject[]; locationArg?: Partial<Location> | string }) => {\n const isMountRenderPass = React.useRef(true);\n const { routes, locationArg } = props;\n\n const Routes = origUseRoutes(routes, locationArg);\n\n const location = _useLocation();\n const navigationType = _useNavigationType();\n\n // A value with stable identity to either pick `locationArg` if available or `location` if not\n const stableLocationParam =\n typeof locationArg === 'string' || locationArg?.pathname ? (locationArg as { pathname: string }) : location;\n\n _useEffect(() => {\n const normalizedLocation =\n typeof stableLocationParam === 'string' ? { pathname: stableLocationParam } : stableLocationParam;\n\n if (isMountRenderPass.current) {\n addRoutesToAllRoutes(routes);\n\n updatePageloadTransaction(\n getActiveRootSpan(),\n normalizedLocation,\n routes,\n undefined,\n undefined,\n Array.from(allRoutes),\n );\n isMountRenderPass.current = false;\n } else {\n handleNavigation({\n location: normalizedLocation,\n routes,\n navigationType,\n version,\n allRoutes: Array.from(allRoutes),\n });\n }\n }, [navigationType, stableLocationParam]);\n\n return Routes;\n };\n\n // eslint-disable-next-line react/display-name\n return (routes: RouteObject[], locationArg?: Partial<Location> | string): React.ReactElement | null => {\n return <SentryRoutes routes={routes} locationArg={locationArg} />;\n };\n}\n\nexport function handleNavigation(opts: {\n location: Location;\n routes: RouteObject[];\n navigationType: Action;\n version: V6CompatibleVersion;\n matches?: AgnosticDataRouteMatch;\n basename?: string;\n allRoutes?: RouteObject[];\n}): void {\n const { location, routes, navigationType, version, matches, basename, allRoutes } = opts;\n const branches = Array.isArray(matches) ? matches : _matchRoutes(routes, location, basename);\n\n const client = getClient();\n if (!client || !CLIENTS_WITH_INSTRUMENT_NAVIGATION.has(client)) {\n return;\n }\n\n if ((navigationType === 'PUSH' || navigationType === 'POP') && branches) {\n let name,\n source: TransactionSource = 'url';\n const isInDescendantRoute = locationIsInsideDescendantRoute(location, allRoutes || routes);\n\n if (isInDescendantRoute) {\n name = prefixWithSlash(rebuildRoutePathFromAllRoutes(allRoutes || routes, location));\n source = 'route';\n }\n\n if (!isInDescendantRoute || !name) {\n [name, source] = getNormalizedName(routes, location, branches, basename);\n }\n\n const activeSpan = getActiveSpan();\n const isAlreadyInNavigationSpan = activeSpan && spanToJSON(activeSpan).op === 'navigation';\n\n // Cross usage can result in multiple navigation spans being created without this check\n if (isAlreadyInNavigationSpan) {\n activeSpan?.updateName(name);\n activeSpan?.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, source);\n } else {\n startBrowserTracingNavigationSpan(client, {\n name,\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: source,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'navigation',\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: `auto.navigation.react.reactrouter_v${version}`,\n },\n });\n }\n }\n}\n\n/**\n * Strip the basename from a pathname if exists.\n *\n * Vendored and modified from `react-router`\n * https://github.com/remix-run/react-router/blob/462bb712156a3f739d6139a0f14810b76b002df6/packages/router/utils.ts#L1038\n */\nfunction stripBasenameFromPathname(pathname: string, basename: string): string {\n if (!basename || basename === '/') {\n return pathname;\n }\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return pathname;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n const startIndex = basename.endsWith('/') ? basename.length - 1 : basename.length;\n const nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== '/') {\n // pathname does not start with basename/\n return pathname;\n }\n\n return pathname.slice(startIndex) || '/';\n}\n\nfunction sendIndexPath(pathBuilder: string, pathname: string, basename: string): [string, TransactionSource] {\n const reconstructedPath = pathBuilder || _stripBasename ? stripBasenameFromPathname(pathname, basename) : pathname;\n\n const formattedPath =\n // If the path ends with a slash, remove it\n reconstructedPath[reconstructedPath.length - 1] === '/'\n ? reconstructedPath.slice(0, -1)\n : // If the path ends with a wildcard, remove it\n reconstructedPath.slice(-2) === '/*'\n ? reconstructedPath.slice(0, -1)\n : reconstructedPath;\n\n return [formattedPath, 'route'];\n}\n\nfunction pathEndsWithWildcard(path: string): boolean {\n return path.endsWith('*');\n}\n\nfunction pathIsWildcardAndHasChildren(path: string, branch: RouteMatch<string>): boolean {\n return (pathEndsWithWildcard(path) && !!branch.route.children?.length) || false;\n}\n\nfunction routeIsDescendant(route: RouteObject): boolean {\n return !!(!route.children && route.element && route.path?.endsWith('/*'));\n}\n\nfunction 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\nfunction addRoutesToAllRoutes(routes: RouteObject[]): void {\n routes.forEach(route => {\n const extractedChildRoutes = getChildRoutesRecursively(route);\n\n extractedChildRoutes.forEach(r => {\n allRoutes.add(r);\n });\n });\n}\n\nfunction getChildRoutesRecursively(route: RouteObject, allRoutes: Set<RouteObject> = new Set()): Set<RouteObject> {\n if (!allRoutes.has(route)) {\n allRoutes.add(route);\n\n if (route.children && !route.index) {\n route.children.forEach(child => {\n const childRoutes = getChildRoutesRecursively(child, allRoutes);\n\n childRoutes.forEach(r => {\n allRoutes.add(r);\n });\n });\n }\n }\n\n return allRoutes;\n}\n\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\nfunction prefixWithSlash(path: string): string {\n return path[0] === '/' ? path : `/${path}`;\n}\n\nfunction 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\nfunction 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 let pathBuilder = '';\n\n if (branches) {\n for (const branch of branches) {\n const route = branch.route;\n if (route) {\n // Early return if index route\n if (route.index) {\n return sendIndexPath(pathBuilder, branch.pathname, basename);\n }\n const path = route.path;\n\n // If path is not a wildcard and has no child routes, append the path\n if (path && !pathIsWildcardAndHasChildren(path, branch)) {\n const newPath = path[0] === '/' || pathBuilder[pathBuilder.length - 1] === '/' ? path : `/${path}`;\n pathBuilder = trimSlash(pathBuilder) + prefixWithSlash(newPath);\n\n // If the path matches the current location, return the path\n if (trimSlash(location.pathname) === trimSlash(basename + branch.pathname)) {\n if (\n // If the route defined on the element is something like\n // <Route path=\"/stores/:storeId/products/:productId\" element={<div>Product</div>} />\n // We should check against the branch.pathname for the number of / separators\n getNumberOfUrlSegments(pathBuilder) !== getNumberOfUrlSegments(branch.pathname) &&\n // We should not count wildcard operators in the url segments calculation\n !pathEndsWithWildcard(pathBuilder)\n ) {\n return [(_stripBasename ? '' : basename) + newPath, 'route'];\n }\n\n // if the last character of the pathbuilder is a wildcard and there are children, remove the wildcard\n if (pathIsWildcardAndHasChildren(pathBuilder, branch)) {\n pathBuilder = pathBuilder.slice(0, -1);\n }\n\n return [(_stripBasename ? '' : basename) + pathBuilder, 'route'];\n }\n }\n }\n }\n }\n\n const fallbackTransactionName = _stripBasename\n ? stripBasenameFromPathname(location.pathname, basename)\n : location.pathname || '/';\n\n return [fallbackTransactionName, 'url'];\n}\n\nfunction updatePageloadTransaction(\n activeRootSpan: Span | undefined,\n location: Location,\n routes: RouteObject[],\n matches?: AgnosticDataRouteMatch,\n basename?: string,\n allRoutes?: RouteObject[],\n): void {\n const branches = Array.isArray(matches)\n ? matches\n : (_matchRoutes(allRoutes || routes, location, basename) as unknown as RouteMatch[]);\n\n if (branches) {\n let name,\n source: TransactionSource = 'url';\n\n const isInDescendantRoute = locationIsInsideDescendantRoute(location, allRoutes || routes);\n\n if (isInDescendantRoute) {\n name = prefixWithSlash(rebuildRoutePathFromAllRoutes(allRoutes || routes, location));\n source = 'route';\n }\n\n if (!isInDescendantRoute || !name) {\n [name, source] = getNormalizedName(routes, location, branches, basename);\n }\n\n getCurrentScope().setTransactionName(name || '/');\n\n if (activeRootSpan) {\n activeRootSpan.updateName(name);\n activeRootSpan.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, source);\n }\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function createV6CompatibleWithSentryReactRouterRouting<P extends Record<string, any>, R extends React.FC<P>>(\n Routes: R,\n version: V6CompatibleVersion,\n): R {\n if (!_useEffect || !_useLocation || !_useNavigationType || !_createRoutesFromChildren || !_matchRoutes) {\n DEBUG_BUILD &&\n debug.warn(`reactRouterV6Instrumentation was unable to wrap Routes because of one or more missing parameters.\n useEffect: ${_useEffect}. useLocation: ${_useLocation}. useNavigationType: ${_useNavigationType}.\n createRoutesFromChildren: ${_createRoutesFromChildren}. matchRoutes: ${_matchRoutes}.`);\n\n return Routes;\n }\n\n const SentryRoutes: React.FC<P> = (props: P) => {\n const isMountRenderPass = React.useRef(true);\n\n const location = _useLocation();\n const navigationType = _useNavigationType();\n\n _useEffect(\n () => {\n const routes = _createRoutesFromChildren(props.children) as RouteObject[];\n\n if (isMountRenderPass.current) {\n addRoutesToAllRoutes(routes);\n\n updatePageloadTransaction(getActiveRootSpan(), location, routes, undefined, undefined, Array.from(allRoutes));\n isMountRenderPass.current = false;\n } else {\n handleNavigation({\n location,\n routes,\n navigationType,\n version,\n allRoutes: Array.from(allRoutes),\n });\n }\n },\n // `props.children` is purposely not included in the dependency array, because we do not want to re-run this effect\n // when the children change. We only want to start transactions when the location or navigation type change.\n [location, navigationType],\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 return <Routes {...props} />;\n };\n\n hoistNonReactStatics(SentryRoutes, Routes);\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 return SentryRoutes;\n}\n\nfunction 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).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\n/**\n * Returns number of URL segments of a passed string 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"],"names":[],"mappings":"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"}
|
|
@@ -8,9 +8,26 @@ export interface ReactRouterOptions {
|
|
|
8
8
|
useNavigationType: UseNavigationType;
|
|
9
9
|
createRoutesFromChildren: CreateRoutesFromChildren;
|
|
10
10
|
matchRoutes: MatchRoutes;
|
|
11
|
+
/**
|
|
12
|
+
* Whether to strip the basename from the pathname when creating transactions.
|
|
13
|
+
*
|
|
14
|
+
* This is useful for applications that use a basename in their routing setup.
|
|
15
|
+
* @default false
|
|
16
|
+
*/
|
|
11
17
|
stripBasename?: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Enables support for async route handlers.
|
|
20
|
+
*
|
|
21
|
+
* This allows Sentry to track and instrument routes dynamically resolved from async handlers.
|
|
22
|
+
* @default false
|
|
23
|
+
*/
|
|
24
|
+
enableAsyncRouteHandlers?: boolean;
|
|
12
25
|
}
|
|
13
26
|
type V6CompatibleVersion = '6' | '7';
|
|
27
|
+
/**
|
|
28
|
+
* Recursively checks a route for async handlers and sets up Proxies to add discovered child routes to allRoutes when called.
|
|
29
|
+
*/
|
|
30
|
+
export declare function checkRouteForAsyncHandler(route: RouteObject): void;
|
|
14
31
|
/**
|
|
15
32
|
* Creates a wrapCreateBrowserRouter function that can be used with all React Router v6 compatible versions.
|
|
16
33
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reactrouterv6-compat-utils.d.ts","sourceRoot":"","sources":["../../src/reactrouterv6-compat-utils.tsx"],"names":[],"mappings":"AAIA,OAAO,EACL,yBAAyB,EAI1B,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAU,WAAW,EAA2B,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"reactrouterv6-compat-utils.d.ts","sourceRoot":"","sources":["../../src/reactrouterv6-compat-utils.tsx"],"names":[],"mappings":"AAIA,OAAO,EACL,yBAAyB,EAI1B,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAU,WAAW,EAA2B,MAAM,cAAc,CAAC;AAajF,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EACV,MAAM,EACN,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACxB,QAAQ,EACR,WAAW,EAEX,WAAW,EACX,MAAM,EACN,WAAW,EACX,SAAS,EACT,WAAW,EACX,iBAAiB,EACjB,SAAS,EACV,MAAM,SAAS,CAAC;AAYjB,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,WAAW,CAAC;IACzB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,wBAAwB,EAAE,wBAAwB,CAAC;IACnD,WAAW,EAAE,WAAW,CAAC;IACzB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;OAKG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC;AAED,KAAK,mBAAmB,GAAG,GAAG,GAAG,GAAG,CAAC;AA2GrC;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAiBlE;AAED;;GAEG;AACH,wBAAgB,yCAAyC,CACvD,MAAM,SAAS,WAAW,GAAG,WAAW,EACxC,OAAO,SAAS,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAE/C,oBAAoB,EAAE,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,OAAO,EAAE,mBAAmB,GAC3B,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,CAoEvC;AAED;;GAEG;AACH,wBAAgB,wCAAwC,CACtD,MAAM,SAAS,WAAW,GAAG,WAAW,EACxC,OAAO,SAAS,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAE/C,oBAAoB,EAAE,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,OAAO,EAAE,mBAAmB,GAC3B,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,CAuEvC;AAED;;GAEG;AACH,wBAAgB,+CAA+C,CAC7D,OAAO,EAAE,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAC,CAAC,CAAC,GAAG,kBAAkB,EAC7E,OAAO,EAAE,mBAAmB,GAC3B,WAAW,CAoDb;AAED,wBAAgB,+BAA+B,CAAC,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,mBAAmB,GAAG,SAAS,CA6DjH;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IACrC,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,mBAAmB,CAAC;IAC7B,OAAO,CAAC,EAAE,sBAAsB,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC;CAC3B,GAAG,IAAI,CAyCP;AAuPD,wBAAgB,8CAA8C,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,SAAS,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EACjH,MAAM,EAAE,CAAC,EACT,OAAO,EAAE,mBAAmB,GAC3B,CAAC,CAkDH;AAgBD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG1D"}
|
package/build/types/types.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ export type Location = {
|
|
|
7
7
|
export interface NonIndexRouteObject {
|
|
8
8
|
caseSensitive?: boolean;
|
|
9
9
|
children?: RouteObject[];
|
|
10
|
+
handle?: Record<string, any>;
|
|
10
11
|
element?: React.ReactNode | null;
|
|
11
12
|
errorElement?: React.ReactNode | null;
|
|
12
13
|
index?: any;
|
|
@@ -15,6 +16,7 @@ export interface NonIndexRouteObject {
|
|
|
15
16
|
export interface IndexRouteObject {
|
|
16
17
|
caseSensitive?: boolean;
|
|
17
18
|
children?: undefined;
|
|
19
|
+
handle?: Record<string, any>;
|
|
18
20
|
element?: React.ReactNode | null;
|
|
19
21
|
errorElement?: React.ReactNode | null;
|
|
20
22
|
index: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,KAAK,CAAC;AAEhD,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAGxB,MAAM,WAAW,mBAAmB;IAClC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;IACjC,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;IACtC,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;IACjC,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;IACtC,KAAK,EAAE,GAAG,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAKD,MAAM,MAAM,WAAW,GAAG,CAAC,gBAAgB,GAAG,mBAAmB,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEzF,MAAM,MAAM,MAAM,CAAC,GAAG,SAAS,MAAM,GAAG,MAAM,IAAI;IAChD,QAAQ,EAAE,GAAG,IAAI,GAAG,GAAG,MAAM,GAAG,SAAS;CAC1C,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,KAAK,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;AAGvH,MAAM,WAAW,UAAU,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM;IAC1D;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IACzB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,KAAK,EAAE,WAAW,CAAC;CACpB;AAED,MAAM,MAAM,SAAS,GAAG,CAAC,EAAE,EAAE,MAAM,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;AAClE,MAAM,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC;AACzC,MAAM,MAAM,iBAAiB,GAAG,MAAM,MAAM,CAAC;AAK7C,MAAM,MAAM,qBAAqB,GAAG,GAAG,CAAC;AACxC,MAAM,MAAM,eAAe,GAAG,GAAG,CAAC;AAClC,MAAM,MAAM,wBAAwB,GAAG,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,qBAAqB,CAAC;AAC3F,MAAM,MAAM,WAAW,GAAG,CACxB,MAAM,EAAE,qBAAqB,EAC7B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,CAAC,EAAE,MAAM,KACd,eAAe,EAAE,GAAG,IAAI,CAAC;AAG9B,MAAM,MAAM,wBAAwB,GAAG,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC;AAE9D,UAAU,gBAAgB;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,KAAK,kBAAkB,GAAG,gBAAgB,CAAC;AAC3C,KAAK,kBAAkB,GAAG,gBAAgB,CAAC;AAE3C,MAAM,WAAW,cAAc;IAC7B,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;CAC/E;AACD,MAAM,WAAW,cAAc;IAC7B,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;CAC/E;AACD,OAAO,MAAM,uBAAuB,GAAG;IACrC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,gBAAgB,CAAC,EAAE,wBAAwB,CAAC;IAC5C,MAAM,CAAC,EAAE,GAAG,CAAC;CACd,CAAC;AAEF,MAAM,CAAC,OAAO,MAAM,wBAAwB,GAAG,uBAAuB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAE7F,MAAM,CAAC,OAAO,MAAM,2BAA2B,GAAG,uBAAuB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEhG,MAAM,CAAC,OAAO,MAAM,4BAA4B,GAAG,wBAAwB,GAAG;IAC5E,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,MAAM,CAAC,OAAO,MAAM,+BAA+B,GAAG,2BAA2B,GAAG;IAClF,QAAQ,CAAC,EAAE,uBAAuB,EAAE,CAAC;IACrC,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,MAAM,WAAW,kBAAkB,CACjC,QAAQ,SAAS,MAAM,GAAG,MAAM,EAChC,eAAe,SAAS,mBAAmB,GAAG,mBAAmB;IAEjE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,eAAe,CAAC;CACxB;AAED,MAAM,MAAM,sBAAsB,GAAG,kBAAkB,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;AAEzF,UAAU,eAAe;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACrC,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,+BAA+B;IAC9C,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC;CACjE;AAED,MAAM,WAAW,IAAI;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB,CAAC,MAAM,SAAS,WAAW,GAAG,WAAW;IACxE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AACD,MAAM,WAAW,yBAAyB;IACxC,IAAI,MAAM,CAAC;CACZ;AAED,OAAO,MAAM,mBAAmB,GAAG;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF,MAAM,CAAC,OAAO,MAAM,uBAAuB,GAAG,4BAA4B,GAAG,+BAA+B,CAAC;AAC7G,MAAM,CAAC,OAAO,MAAM,EAAE,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAChD,MAAM,CAAC,OAAO,MAAM,cAAc,GAAG,GAAG,CAAC;AACzC,MAAM,CAAC,OAAO,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;AAC7E,MAAM,CAAC,OAAO,MAAM,WAAW,GAAG,mCAAmC,GAAG,qBAAqB,CAAC;AAC9F,MAAM,CAAC,OAAO,MAAM,qBAAqB,GAAG,mBAAmB,GAAG,yBAAyB,CAAC;AAC5F,MAAM,CAAC,OAAO,MAAM,mBAAmB,GAAG,wBAAwB,GAAG,2BAA2B,CAAC;AAEjG,OAAO,MAAM,yBAAyB,GAAG;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;AAEF,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,cAAc,CAAC;CAChC;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,eAAe,CAAC;IACzB,UAAU,EAAE,eAAe,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,gBAAgB,CAAC,CAAC;AAElE,MAAM,MAAM,SAAS,GAAG,GAAG,CAAC;AAC5B,MAAM,MAAM,OAAO,GAAG,GAAG,CAAC;AAE1B,KAAK,aAAa,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;AAEhD,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,MAAM,GAAG,aAAa,GAAG,GAAG,CAAC;IAC5C,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,UAAU,CAAC;CACxB;AACD,MAAM,WAAW,MAAM,CAAC,MAAM,SAAS,WAAW,GAAG,WAAW;IAC9D,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,EAAE,gBAAgB,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC;CACrD;AAED,MAAM,MAAM,oBAAoB,CAC9B,MAAM,SAAS,WAAW,GAAG,WAAW,EACxC,OAAO,SAAS,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAC7C,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,9 +8,26 @@ export interface ReactRouterOptions {
|
|
|
8
8
|
useNavigationType: UseNavigationType;
|
|
9
9
|
createRoutesFromChildren: CreateRoutesFromChildren;
|
|
10
10
|
matchRoutes: MatchRoutes;
|
|
11
|
+
/**
|
|
12
|
+
* Whether to strip the basename from the pathname when creating transactions.
|
|
13
|
+
*
|
|
14
|
+
* This is useful for applications that use a basename in their routing setup.
|
|
15
|
+
* @default false
|
|
16
|
+
*/
|
|
11
17
|
stripBasename?: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Enables support for async route handlers.
|
|
20
|
+
*
|
|
21
|
+
* This allows Sentry to track and instrument routes dynamically resolved from async handlers.
|
|
22
|
+
* @default false
|
|
23
|
+
*/
|
|
24
|
+
enableAsyncRouteHandlers?: boolean;
|
|
12
25
|
}
|
|
13
26
|
type V6CompatibleVersion = '6' | '7';
|
|
27
|
+
/**
|
|
28
|
+
* Recursively checks a route for async handlers and sets up Proxies to add discovered child routes to allRoutes when called.
|
|
29
|
+
*/
|
|
30
|
+
export declare function checkRouteForAsyncHandler(route: RouteObject): void;
|
|
14
31
|
/**
|
|
15
32
|
* Creates a wrapCreateBrowserRouter function that can be used with all React Router v6 compatible versions.
|
|
16
33
|
*/
|
|
@@ -7,6 +7,7 @@ export type Location = {
|
|
|
7
7
|
export interface NonIndexRouteObject {
|
|
8
8
|
caseSensitive?: boolean;
|
|
9
9
|
children?: RouteObject[];
|
|
10
|
+
handle?: Record<string, any>;
|
|
10
11
|
element?: React.ReactNode | null;
|
|
11
12
|
errorElement?: React.ReactNode | null;
|
|
12
13
|
index?: any;
|
|
@@ -15,6 +16,7 @@ export interface NonIndexRouteObject {
|
|
|
15
16
|
export interface IndexRouteObject {
|
|
16
17
|
caseSensitive?: boolean;
|
|
17
18
|
children?: undefined;
|
|
19
|
+
handle?: Record<string, any>;
|
|
18
20
|
element?: React.ReactNode | null;
|
|
19
21
|
errorElement?: React.ReactNode | null;
|
|
20
22
|
index: any;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sentry/react",
|
|
3
|
-
"version": "10.
|
|
3
|
+
"version": "10.4.0",
|
|
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",
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
"access": "public"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@sentry/browser": "10.
|
|
43
|
-
"@sentry/core": "10.
|
|
42
|
+
"@sentry/browser": "10.4.0",
|
|
43
|
+
"@sentry/core": "10.4.0",
|
|
44
44
|
"hoist-non-react-statics": "^3.3.2"
|
|
45
45
|
},
|
|
46
46
|
"peerDependencies": {
|