react-router 6.0.0 → 6.0.1

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/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../packages/react-router/index.tsx"],"sourcesContent":["import * as React from \"react\";\nimport type {\n History,\n InitialEntry,\n Location,\n MemoryHistory,\n Path,\n To\n} from \"history\";\nimport {\n Action as NavigationType,\n createMemoryHistory,\n parsePath\n} from \"history\";\n\nexport type { Location, Path, To, NavigationType };\n\nfunction invariant(cond: any, message: string): asserts cond {\n if (!cond) throw new Error(message);\n}\n\nfunction warning(cond: any, message: string): void {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging React Router!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nconst alreadyWarned: Record<string, boolean> = {};\nfunction warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// CONTEXT\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level <Router> API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport type Navigator = Omit<\n History,\n \"action\" | \"location\" | \"back\" | \"forward\" | \"listen\" | \"block\"\n>;\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n}\n\nconst NavigationContext = React.createContext<NavigationContextObject>(null!);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nconst LocationContext = React.createContext<LocationContextObject>(null!);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\ninterface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n}\n\nconst RouteContext = React.createContext<RouteContextObject>({\n outlet: null,\n matches: []\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// COMPONENTS\n///////////////////////////////////////////////////////////////////////////////\n\nexport interface MemoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n}\n\n/**\n * A <Router> that stores all entries in memory.\n *\n * @see https://reactrouter.com/api/MemoryRouter\n */\nexport function MemoryRouter({\n basename,\n children,\n initialEntries,\n initialIndex\n}: MemoryRouterProps): React.ReactElement {\n let historyRef = React.useRef<MemoryHistory>();\n if (historyRef.current == null) {\n historyRef.current = createMemoryHistory({ initialEntries, initialIndex });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n <Router\n basename={basename}\n children={children}\n location={state.location}\n navigationType={state.action}\n navigator={history}\n />\n );\n}\n\nexport interface NavigateProps {\n to: To;\n replace?: boolean;\n state?: any;\n}\n\n/**\n * Changes the current location.\n *\n * Note: This API is mostly useful in React.Component subclasses that are not\n * able to use hooks. In functional components, we recommend you use the\n * `useNavigate` hook instead.\n *\n * @see https://reactrouter.com/api/Navigate\n */\nexport function Navigate({ to, replace, state }: NavigateProps): null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of\n // the router loaded. We can help them understand how to avoid that.\n `<Navigate> may be used only in the context of a <Router> component.`\n );\n\n warning(\n !React.useContext(NavigationContext).static,\n `<Navigate> must not be used on the initial render in a <StaticRouter>. ` +\n `This is a no-op, but you should modify your code so the <Navigate> is ` +\n `only ever rendered in response to some user interaction or state change.`\n );\n\n let navigate = useNavigate();\n React.useEffect(() => {\n navigate(to, { replace, state });\n });\n\n return null;\n}\n\nexport interface OutletProps {}\n\n/**\n * Renders the child route's element, if there is one.\n *\n * @see https://reactrouter.com/api/Outlet\n */\nexport function Outlet(_props: OutletProps): React.ReactElement | null {\n return useOutlet();\n}\n\nexport interface RouteProps {\n caseSensitive?: boolean;\n children?: React.ReactNode;\n element?: React.ReactElement | null;\n index?: boolean;\n path?: string;\n}\n\nexport interface PathRouteProps {\n caseSensitive?: boolean;\n children?: React.ReactNode;\n element?: React.ReactElement | null;\n index?: false;\n path: string;\n}\n\nexport interface LayoutRouteProps {\n children?: React.ReactNode;\n element?: React.ReactElement | null;\n}\n\nexport interface IndexRouteProps {\n element?: React.ReactElement | null;\n index: true;\n}\n\n/**\n * Declares an element that should be rendered at a certain URL path.\n *\n * @see https://reactrouter.com/api/Route\n */\nexport function Route(\n _props: PathRouteProps | LayoutRouteProps | IndexRouteProps\n): React.ReactElement | null {\n invariant(\n false,\n `A <Route> is only ever to be used as the child of <Routes> element, ` +\n `never rendered directly. Please wrap your <Route> in a <Routes>.`\n );\n}\n\nexport interface RouterProps {\n basename?: string;\n children?: React.ReactNode;\n location: Partial<Location> | string;\n navigationType?: NavigationType;\n navigator: Navigator;\n static?: boolean;\n}\n\n/**\n * Provides location context for the rest of the app.\n *\n * Note: You usually won't render a <Router> directly. Instead, you'll render a\n * router that is more specific to your environment such as a <BrowserRouter>\n * in web browsers or a <StaticRouter> for server rendering.\n *\n * @see https://reactrouter.com/api/Router\n */\nexport function Router({\n basename: basenameProp = \"/\",\n children = null,\n location: locationProp,\n navigationType = NavigationType.Pop,\n navigator,\n static: staticProp = false\n}: RouterProps): React.ReactElement | null {\n invariant(\n !useInRouterContext(),\n `You cannot render a <Router> inside another <Router>.` +\n ` You should never have more than one in your app.`\n );\n\n let basename = normalizePathname(basenameProp);\n let navigationContext = React.useMemo(\n () => ({ basename, navigator, static: staticProp }),\n [basename, navigator, staticProp]\n );\n\n if (typeof locationProp === \"string\") {\n locationProp = parsePath(locationProp);\n }\n\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n state = null,\n key = \"default\"\n } = locationProp;\n\n let location = React.useMemo(() => {\n let trailingPathname = stripBasename(pathname, basename);\n\n if (trailingPathname == null) {\n return null;\n }\n\n return {\n pathname: trailingPathname,\n search,\n hash,\n state,\n key\n };\n }, [basename, pathname, search, hash, state, key]);\n\n warning(\n location != null,\n `<Router basename=\"${basename}\"> is not able to match the URL ` +\n `\"${pathname}${search}${hash}\" because it does not start with the ` +\n `basename, so the <Router> won't render anything.`\n );\n\n if (location == null) {\n return null;\n }\n\n return (\n <NavigationContext.Provider value={navigationContext}>\n <LocationContext.Provider\n children={children}\n value={{ location, navigationType }}\n />\n </NavigationContext.Provider>\n );\n}\n\nexport interface RoutesProps {\n children?: React.ReactNode;\n location?: Partial<Location> | string;\n}\n\n/**\n * A container for a nested tree of <Route> elements that renders the branch\n * that best matches the current location.\n *\n * @see https://reactrouter.com/api/Routes\n */\nexport function Routes({\n children,\n location\n}: RoutesProps): React.ReactElement | null {\n return useRoutes(createRoutesFromChildren(children), location);\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// HOOKS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/api/useHref\n */\nexport function useHref(to: To): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a <Router> component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to);\n\n let joinedPathname = pathname;\n if (basename !== \"/\") {\n let toPathname = getToPathname(to);\n let endsWithSlash = toPathname != null && toPathname.endsWith(\"/\");\n joinedPathname =\n pathname === \"/\"\n ? basename + (endsWithSlash ? \"/\" : \"\")\n : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a <Router>.\n *\n * @see https://reactrouter.com/api/useInRouterContext\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/api/useLocation\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a <Router> component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/api/useNavigationType\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns true if the URL for the given \"to\" value matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * <NavLink>.\n *\n * @see https://reactrouter.com/api/useMatch\n */\nexport function useMatch<ParamKey extends string = string>(\n pattern: PathPattern | string\n): PathMatch<ParamKey> | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a <Router> component.`\n );\n\n return matchPath(pattern, useLocation().pathname);\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n}\n\n/**\n * Returns an imperative method for changing the location. Used by <Link>s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/api/useNavigate\n */\nexport function useNavigate(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a <Router> component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n matches.map(match => match.pathnameBase)\n );\n\n let activeRef = React.useRef(false);\n React.useEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: { replace?: boolean; state?: any } = {}) => {\n warning(\n activeRef.current,\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`\n );\n\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname\n );\n\n if (basename !== \"/\") {\n path.pathname = joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state\n );\n },\n [basename, navigator, routePathnamesJson, locationPathname]\n );\n\n return navigate;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by <Outlet> to render child routes.\n *\n * @see https://reactrouter.com/api/useOutlet\n */\nexport function useOutlet(): React.ReactElement | null {\n return React.useContext(RouteContext).outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/api/useParams\n */\nexport function useParams<Key extends string = string>(): Readonly<\n Params<Key>\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/api/useResolvedPath\n */\nexport function useResolvedPath(to: To): Path {\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n matches.map(match => match.pathnameBase)\n );\n\n return React.useMemo(\n () => resolveTo(to, JSON.parse(routePathnamesJson), locationPathname),\n [to, routePathnamesJson, locationPathname]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an <Outlet> to render their child route's\n * element.\n *\n * @see https://reactrouter.com/api/useRoutes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial<Location> | string\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a <Router> component.`\n );\n\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different <Routes> under a <Route>\n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // <Routes>\n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // <Route path=\"blog\" element={<Blog />} />\n // <Route path=\"blog/feed\" element={<BlogFeed />} />\n // </Routes>\n //\n // function Blog() {\n // return (\n // <Routes>\n // <Route path=\"post/:id\" element={<Post />} />\n // </Routes>\n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant <Routes> (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under <Route path=\"${parentPath}\">) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent <Route path=\"${parentPath}\"> to <Route ` +\n `path=\"${parentPath}/*\">.`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`<Routes location>\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n let remainingPathname =\n parentPathnameBase === \"/\"\n ? pathname\n : pathname.slice(parentPathnameBase.length) || \"/\";\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" does not have an element. ` +\n `This means it will render an <Outlet /> with a null value by default resulting in an \"empty\" page.`\n );\n }\n\n return _renderMatches(\n matches &&\n matches.map(match =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([parentPathnameBase, match.pathname]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([parentPathnameBase, match.pathnameBase])\n })\n ),\n parentMatches\n );\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// UTILS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Creates a route config from a React \"children\" object, which is usually\n * either a `<Route>` element or an array of them. Used internally by\n * `<Routes>` to create a route config from its children.\n *\n * @see https://reactrouter.com/api/createRoutesFromChildren\n */\nexport function createRoutesFromChildren(\n children: React.ReactNode\n): RouteObject[] {\n let routes: RouteObject[] = [];\n\n React.Children.forEach(children, element => {\n if (!React.isValidElement(element)) {\n // Ignore non-elements. This allows people to more easily inline\n // conditionals in their route config.\n return;\n }\n\n if (element.type === React.Fragment) {\n // Transparently support React.Fragment and its children.\n routes.push.apply(\n routes,\n createRoutesFromChildren(element.props.children)\n );\n return;\n }\n\n let route: RouteObject = {\n caseSensitive: element.props.caseSensitive,\n element: element.props.element,\n index: element.props.index,\n path: element.props.path\n };\n\n if (element.props.children) {\n route.children = createRoutesFromChildren(element.props.children);\n }\n\n routes.push(route);\n });\n\n return routes;\n}\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params<Key extends string = string> = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport interface RouteObject {\n caseSensitive?: boolean;\n children?: RouteObject[];\n element?: React.ReactNode;\n index?: boolean;\n path?: string;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/api/generatePath\n */\nexport function generatePath(path: string, params: Params = {}): string {\n return path\n .replace(/:(\\w+)/g, (_, key) => {\n invariant(params[key] != null, `Missing \":${key}\" param`);\n return params[key]!;\n })\n .replace(/\\/*\\*$/, _ =>\n params[\"*\"] == null ? \"\" : params[\"*\"].replace(/^\\/*/, \"/\")\n );\n}\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface RouteMatch<ParamKey extends string = string> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params<ParamKey>;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObject;\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/api/matchRoutes\n */\nexport function matchRoutes(\n routes: RouteObject[],\n locationArg: Partial<Location> | string,\n basename = \"/\"\n): RouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n matches = matchRouteBranch(branches[i], routes, pathname);\n }\n\n return matches;\n}\n\ninterface RouteMeta {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n}\n\ninterface RouteBranch {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes(\n routes: RouteObject[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n routes.forEach((route, index) => {\n let meta: RouteMeta = {\n relativePath: route.path || \"\",\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({ path, score: computeScore(path, route.index), routesMeta });\n });\n\n return branches;\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map(meta => meta.childrenIndex),\n b.routesMeta.map(meta => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:\\w+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter(s => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<ParamKey extends string = string>(\n branch: RouteBranch,\n // TODO: attach original route object inside routesMeta so we don't need this arg\n routesArg: RouteObject[],\n pathname: string\n): RouteMatch<ParamKey>[] | null {\n let routes = routesArg;\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: RouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n if (!match) return null;\n\n Object.assign(matchedParams, match.params);\n\n let route = routes[meta.childrenIndex];\n\n matches.push({\n params: matchedParams,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: joinPaths([matchedPathname, match.pathnameBase]),\n route\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n\n routes = route.children!;\n }\n\n return matches;\n}\n\n/**\n * Renders the result of `matchRoutes()` into a React element.\n */\nexport function renderMatches(\n matches: RouteMatch[] | null\n): React.ReactElement | null {\n return _renderMatches(matches);\n}\n\nfunction _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = []\n): React.ReactElement | null {\n if (matches == null) return null;\n\n return matches.reduceRight((outlet, match, index) => {\n return (\n <RouteContext.Provider\n children={\n match.route.element !== undefined ? match.route.element : <Outlet />\n }\n value={{\n outlet,\n matches: parentMatches.concat(matches.slice(0, index + 1))\n }}\n />\n );\n }, null as React.ReactElement | null);\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: string;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch<ParamKey extends string = string> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params<ParamKey>;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable<T> = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/api/matchPath\n */\nexport function matchPath<ParamKey extends string = string>(\n pattern: PathPattern | string,\n pathname: string\n): PathMatch<ParamKey> | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, paramNames] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = paramNames.reduce<Mutable<Params>>(\n (memo, paramName, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n memo[paramName] = safelyDecodeURIComponent(\n captureGroups[index] || \"\",\n paramName\n );\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern\n };\n}\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, string[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let paramNames: string[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^$?{}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(/:(\\w+)/g, (_: string, paramName: string) => {\n paramNames.push(paramName);\n return \"([^\\\\/]+)\";\n });\n\n if (path.endsWith(\"*\")) {\n paramNames.push(\"*\");\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else {\n regexpSource += end\n ? \"\\\\/*$\" // When matching to the end, ignore trailing slashes\n : // Otherwise, at least match a word boundary. This restricts parent\n // routes to matching only their own words and nothing more, e.g. parent\n // route \"/home\" should not match \"/home2\".\n \"(?:\\\\b|$)\";\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, paramNames];\n}\n\nfunction safelyDecodeURIComponent(value: string, paramName: string) {\n try {\n return decodeURIComponent(value);\n } catch (error) {\n warning(\n false,\n `The value for the URL param \"${paramName}\" will not be decoded because` +\n ` the string \"${value}\" is a malformed URL segment. This is probably` +\n ` due to a bad percent encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/api/resolvePath\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\"\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash)\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach(segment => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string\n): Path {\n let to = typeof toArg === \"string\" ? parsePath(toArg) : toArg;\n let toPathname = toArg === \"\" || to.pathname === \"\" ? \"/\" : to.pathname;\n\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `<Link to>` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n let from: string;\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n if (toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n // Each leading .. segment means \"go up one route\" instead of \"go up one\n // URL segment\". This is a key difference from how <a href> works and a\n // major reason we call this a \"to\" value instead of a \"href\".\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n // If there are more \"..\" segments than parent routes, resolve relative to\n // the root / URL.\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original to value had one.\n if (\n toPathname &&\n toPathname !== \"/\" &&\n toPathname.endsWith(\"/\") &&\n !path.pathname.endsWith(\"/\")\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\nfunction getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\nfunction stripBasename(pathname: string, basename: string): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n let nextChar = pathname.charAt(basename.length);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(basename.length) || \"/\";\n}\n\nconst joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\nconst normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\nconst normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\nconst normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\n///////////////////////////////////////////////////////////////////////////////\n// DANGER! PLEASE READ ME!\n// We provide these exports as an escape hatch in the event that you need any\n// routing data that we don't provide an explicit API for. With that said, we\n// want to cover your use case if we can, so if you feel the need to use these\n// we want to hear from you. Let us know what you're building and we'll do our\n// best to make sure we can support you!\n//\n// We consider these exports an implementation detail and do not guarantee\n// against any breaking changes, regardless of the semver release. Use with\n// extreme caution and only if you understand the consequences. Godspeed.\n///////////////////////////////////////////////////////////////////////////////\n\n/** @internal */\nexport {\n NavigationContext as UNSAFE_NavigationContext,\n LocationContext as UNSAFE_LocationContext,\n RouteContext as UNSAFE_RouteContext\n};\n"],"names":["invariant","cond","message","Error","warning","console","warn","e","alreadyWarned","warningOnce","key","NavigationContext","React","displayName","LocationContext","RouteContext","outlet","matches","MemoryRouter","basename","children","initialEntries","initialIndex","historyRef","current","createMemoryHistory","history","state","setState","action","location","listen","React.createElement","Navigate","to","replace","useInRouterContext","static","navigate","useNavigate","Outlet","_props","useOutlet","Route","Router","basenameProp","locationProp","navigationType","NavigationType","Pop","navigator","staticProp","normalizePathname","navigationContext","parsePath","pathname","search","hash","trailingPathname","stripBasename","Routes","useRoutes","createRoutesFromChildren","useHref","useResolvedPath","joinedPathname","toPathname","getToPathname","endsWithSlash","endsWith","joinPaths","createHref","useLocation","useNavigationType","useMatch","pattern","matchPath","locationPathname","routePathnamesJson","JSON","stringify","map","match","pathnameBase","activeRef","options","go","path","resolveTo","parse","push","useParams","routeMatch","length","params","routes","locationArg","parentMatches","parentParams","parentPathname","parentPathnameBase","parentRoute","route","parentPath","locationFromContext","parsedLocationArg","startsWith","remainingPathname","slice","matchRoutes","element","undefined","_renderMatches","Object","assign","forEach","type","apply","props","caseSensitive","index","generatePath","_","branches","flattenRoutes","rankRouteBranches","i","matchRouteBranch","parentsMeta","meta","relativePath","childrenIndex","routesMeta","concat","score","computeScore","sort","a","b","compareIndexes","paramRe","dynamicSegmentValue","indexRouteValue","emptySegmentValue","staticSegmentValue","splatPenalty","isSplat","s","segments","split","initialScore","some","filter","reduce","segment","test","siblings","every","n","branch","routesArg","matchedParams","matchedPathname","end","renderMatches","reduceRight","matcher","paramNames","compilePath","captureGroups","memo","paramName","splatValue","safelyDecodeURIComponent","regexpSource","RegExp","value","decodeURIComponent","error","resolvePath","fromPathname","resolvePathname","normalizeSearch","normalizeHash","relativeSegments","pop","join","toArg","routePathnames","from","routePathnameIndex","toSegments","shift","toLowerCase","nextChar","charAt","paths"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../packages/react-router/index.tsx"],"sourcesContent":["import * as React from \"react\";\nimport type {\n History,\n InitialEntry,\n Location,\n MemoryHistory,\n Path,\n To\n} from \"history\";\nimport {\n Action as NavigationType,\n createMemoryHistory,\n parsePath\n} from \"history\";\n\nexport type { Location, Path, To, NavigationType };\n\nfunction invariant(cond: any, message: string): asserts cond {\n if (!cond) throw new Error(message);\n}\n\nfunction warning(cond: any, message: string): void {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging React Router!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nconst alreadyWarned: Record<string, boolean> = {};\nfunction warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// CONTEXT\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level <Router> API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport type Navigator = Omit<\n History,\n \"action\" | \"location\" | \"back\" | \"forward\" | \"listen\" | \"block\"\n>;\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n}\n\nconst NavigationContext = React.createContext<NavigationContextObject>(null!);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nconst LocationContext = React.createContext<LocationContextObject>(null!);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\ninterface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n}\n\nconst RouteContext = React.createContext<RouteContextObject>({\n outlet: null,\n matches: []\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// COMPONENTS\n///////////////////////////////////////////////////////////////////////////////\n\nexport interface MemoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n}\n\n/**\n * A <Router> that stores all entries in memory.\n *\n * @see https://reactrouter.com/docs/en/v6/api#memoryrouter\n */\nexport function MemoryRouter({\n basename,\n children,\n initialEntries,\n initialIndex\n}: MemoryRouterProps): React.ReactElement {\n let historyRef = React.useRef<MemoryHistory>();\n if (historyRef.current == null) {\n historyRef.current = createMemoryHistory({ initialEntries, initialIndex });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n <Router\n basename={basename}\n children={children}\n location={state.location}\n navigationType={state.action}\n navigator={history}\n />\n );\n}\n\nexport interface NavigateProps {\n to: To;\n replace?: boolean;\n state?: any;\n}\n\n/**\n * Changes the current location.\n *\n * Note: This API is mostly useful in React.Component subclasses that are not\n * able to use hooks. In functional components, we recommend you use the\n * `useNavigate` hook instead.\n *\n * @see https://reactrouter.com/docs/en/v6/api#navigate\n */\nexport function Navigate({ to, replace, state }: NavigateProps): null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of\n // the router loaded. We can help them understand how to avoid that.\n `<Navigate> may be used only in the context of a <Router> component.`\n );\n\n warning(\n !React.useContext(NavigationContext).static,\n `<Navigate> must not be used on the initial render in a <StaticRouter>. ` +\n `This is a no-op, but you should modify your code so the <Navigate> is ` +\n `only ever rendered in response to some user interaction or state change.`\n );\n\n let navigate = useNavigate();\n React.useEffect(() => {\n navigate(to, { replace, state });\n });\n\n return null;\n}\n\nexport interface OutletProps {}\n\n/**\n * Renders the child route's element, if there is one.\n *\n * @see https://reactrouter.com/docs/en/v6/api#outlet\n */\nexport function Outlet(_props: OutletProps): React.ReactElement | null {\n return useOutlet();\n}\n\nexport interface RouteProps {\n caseSensitive?: boolean;\n children?: React.ReactNode;\n element?: React.ReactElement | null;\n index?: boolean;\n path?: string;\n}\n\nexport interface PathRouteProps {\n caseSensitive?: boolean;\n children?: React.ReactNode;\n element?: React.ReactElement | null;\n index?: false;\n path: string;\n}\n\nexport interface LayoutRouteProps {\n children?: React.ReactNode;\n element?: React.ReactElement | null;\n}\n\nexport interface IndexRouteProps {\n element?: React.ReactElement | null;\n index: true;\n}\n\n/**\n * Declares an element that should be rendered at a certain URL path.\n *\n * @see https://reactrouter.com/docs/en/v6/api#route\n */\nexport function Route(\n _props: PathRouteProps | LayoutRouteProps | IndexRouteProps\n): React.ReactElement | null {\n invariant(\n false,\n `A <Route> is only ever to be used as the child of <Routes> element, ` +\n `never rendered directly. Please wrap your <Route> in a <Routes>.`\n );\n}\n\nexport interface RouterProps {\n basename?: string;\n children?: React.ReactNode;\n location: Partial<Location> | string;\n navigationType?: NavigationType;\n navigator: Navigator;\n static?: boolean;\n}\n\n/**\n * Provides location context for the rest of the app.\n *\n * Note: You usually won't render a <Router> directly. Instead, you'll render a\n * router that is more specific to your environment such as a <BrowserRouter>\n * in web browsers or a <StaticRouter> for server rendering.\n *\n * @see https://reactrouter.com/docs/en/v6/api#router\n */\nexport function Router({\n basename: basenameProp = \"/\",\n children = null,\n location: locationProp,\n navigationType = NavigationType.Pop,\n navigator,\n static: staticProp = false\n}: RouterProps): React.ReactElement | null {\n invariant(\n !useInRouterContext(),\n `You cannot render a <Router> inside another <Router>.` +\n ` You should never have more than one in your app.`\n );\n\n let basename = normalizePathname(basenameProp);\n let navigationContext = React.useMemo(\n () => ({ basename, navigator, static: staticProp }),\n [basename, navigator, staticProp]\n );\n\n if (typeof locationProp === \"string\") {\n locationProp = parsePath(locationProp);\n }\n\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n state = null,\n key = \"default\"\n } = locationProp;\n\n let location = React.useMemo(() => {\n let trailingPathname = stripBasename(pathname, basename);\n\n if (trailingPathname == null) {\n return null;\n }\n\n return {\n pathname: trailingPathname,\n search,\n hash,\n state,\n key\n };\n }, [basename, pathname, search, hash, state, key]);\n\n warning(\n location != null,\n `<Router basename=\"${basename}\"> is not able to match the URL ` +\n `\"${pathname}${search}${hash}\" because it does not start with the ` +\n `basename, so the <Router> won't render anything.`\n );\n\n if (location == null) {\n return null;\n }\n\n return (\n <NavigationContext.Provider value={navigationContext}>\n <LocationContext.Provider\n children={children}\n value={{ location, navigationType }}\n />\n </NavigationContext.Provider>\n );\n}\n\nexport interface RoutesProps {\n children?: React.ReactNode;\n location?: Partial<Location> | string;\n}\n\n/**\n * A container for a nested tree of <Route> elements that renders the branch\n * that best matches the current location.\n *\n * @see https://reactrouter.com/docs/en/v6/api#routes\n */\nexport function Routes({\n children,\n location\n}: RoutesProps): React.ReactElement | null {\n return useRoutes(createRoutesFromChildren(children), location);\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// HOOKS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usehref\n */\nexport function useHref(to: To): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a <Router> component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to);\n\n let joinedPathname = pathname;\n if (basename !== \"/\") {\n let toPathname = getToPathname(to);\n let endsWithSlash = toPathname != null && toPathname.endsWith(\"/\");\n joinedPathname =\n pathname === \"/\"\n ? basename + (endsWithSlash ? \"/\" : \"\")\n : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a <Router>.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useinroutercontext\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/docs/en/v6/api#uselocation\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a <Router> component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usenavigationtype\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns true if the URL for the given \"to\" value matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * <NavLink>.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usematch\n */\nexport function useMatch<ParamKey extends string = string>(\n pattern: PathPattern | string\n): PathMatch<ParamKey> | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a <Router> component.`\n );\n\n return matchPath(pattern, useLocation().pathname);\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n}\n\n/**\n * Returns an imperative method for changing the location. Used by <Link>s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usenavigate\n */\nexport function useNavigate(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a <Router> component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n matches.map(match => match.pathnameBase)\n );\n\n let activeRef = React.useRef(false);\n React.useEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: { replace?: boolean; state?: any } = {}) => {\n warning(\n activeRef.current,\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`\n );\n\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname\n );\n\n if (basename !== \"/\") {\n path.pathname = joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state\n );\n },\n [basename, navigator, routePathnamesJson, locationPathname]\n );\n\n return navigate;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by <Outlet> to render child routes.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useoutlet\n */\nexport function useOutlet(): React.ReactElement | null {\n return React.useContext(RouteContext).outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useparams\n */\nexport function useParams<Key extends string = string>(): Readonly<\n Params<Key>\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useresolvedpath\n */\nexport function useResolvedPath(to: To): Path {\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n matches.map(match => match.pathnameBase)\n );\n\n return React.useMemo(\n () => resolveTo(to, JSON.parse(routePathnamesJson), locationPathname),\n [to, routePathnamesJson, locationPathname]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an <Outlet> to render their child route's\n * element.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useroutes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial<Location> | string\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a <Router> component.`\n );\n\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different <Routes> under a <Route>\n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // <Routes>\n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // <Route path=\"blog\" element={<Blog />} />\n // <Route path=\"blog/feed\" element={<BlogFeed />} />\n // </Routes>\n //\n // function Blog() {\n // return (\n // <Routes>\n // <Route path=\"post/:id\" element={<Post />} />\n // </Routes>\n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant <Routes> (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under <Route path=\"${parentPath}\">) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent <Route path=\"${parentPath}\"> to <Route ` +\n `path=\"${parentPath}/*\">.`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`<Routes location>\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n let remainingPathname =\n parentPathnameBase === \"/\"\n ? pathname\n : pathname.slice(parentPathnameBase.length) || \"/\";\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" does not have an element. ` +\n `This means it will render an <Outlet /> with a null value by default resulting in an \"empty\" page.`\n );\n }\n\n return _renderMatches(\n matches &&\n matches.map(match =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([parentPathnameBase, match.pathname]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([parentPathnameBase, match.pathnameBase])\n })\n ),\n parentMatches\n );\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// UTILS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Creates a route config from a React \"children\" object, which is usually\n * either a `<Route>` element or an array of them. Used internally by\n * `<Routes>` to create a route config from its children.\n *\n * @see https://reactrouter.com/docs/en/v6/api#createroutesfromchildren\n */\nexport function createRoutesFromChildren(\n children: React.ReactNode\n): RouteObject[] {\n let routes: RouteObject[] = [];\n\n React.Children.forEach(children, element => {\n if (!React.isValidElement(element)) {\n // Ignore non-elements. This allows people to more easily inline\n // conditionals in their route config.\n return;\n }\n\n if (element.type === React.Fragment) {\n // Transparently support React.Fragment and its children.\n routes.push.apply(\n routes,\n createRoutesFromChildren(element.props.children)\n );\n return;\n }\n\n invariant(\n element.type === Route,\n `[${\n typeof element.type === \"string\" ? element.type : element.type.name\n }] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`\n );\n\n let route: RouteObject = {\n caseSensitive: element.props.caseSensitive,\n element: element.props.element,\n index: element.props.index,\n path: element.props.path\n };\n\n if (element.props.children) {\n route.children = createRoutesFromChildren(element.props.children);\n }\n\n routes.push(route);\n });\n\n return routes;\n}\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params<Key extends string = string> = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport interface RouteObject {\n caseSensitive?: boolean;\n children?: RouteObject[];\n element?: React.ReactNode;\n index?: boolean;\n path?: string;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/docs/en/v6/api#generatepath\n */\nexport function generatePath(path: string, params: Params = {}): string {\n return path\n .replace(/:(\\w+)/g, (_, key) => {\n invariant(params[key] != null, `Missing \":${key}\" param`);\n return params[key]!;\n })\n .replace(/\\/*\\*$/, _ =>\n params[\"*\"] == null ? \"\" : params[\"*\"].replace(/^\\/*/, \"/\")\n );\n}\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface RouteMatch<ParamKey extends string = string> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params<ParamKey>;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObject;\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/docs/en/v6/api#matchroutes\n */\nexport function matchRoutes(\n routes: RouteObject[],\n locationArg: Partial<Location> | string,\n basename = \"/\"\n): RouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n matches = matchRouteBranch(branches[i], routes, pathname);\n }\n\n return matches;\n}\n\ninterface RouteMeta {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n}\n\ninterface RouteBranch {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes(\n routes: RouteObject[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n routes.forEach((route, index) => {\n let meta: RouteMeta = {\n relativePath: route.path || \"\",\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({ path, score: computeScore(path, route.index), routesMeta });\n });\n\n return branches;\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map(meta => meta.childrenIndex),\n b.routesMeta.map(meta => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:\\w+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter(s => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<ParamKey extends string = string>(\n branch: RouteBranch,\n // TODO: attach original route object inside routesMeta so we don't need this arg\n routesArg: RouteObject[],\n pathname: string\n): RouteMatch<ParamKey>[] | null {\n let routes = routesArg;\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: RouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n if (!match) return null;\n\n Object.assign(matchedParams, match.params);\n\n let route = routes[meta.childrenIndex];\n\n matches.push({\n params: matchedParams,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: joinPaths([matchedPathname, match.pathnameBase]),\n route\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n\n routes = route.children!;\n }\n\n return matches;\n}\n\n/**\n * Renders the result of `matchRoutes()` into a React element.\n */\nexport function renderMatches(\n matches: RouteMatch[] | null\n): React.ReactElement | null {\n return _renderMatches(matches);\n}\n\nfunction _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = []\n): React.ReactElement | null {\n if (matches == null) return null;\n\n return matches.reduceRight((outlet, match, index) => {\n return (\n <RouteContext.Provider\n children={\n match.route.element !== undefined ? match.route.element : <Outlet />\n }\n value={{\n outlet,\n matches: parentMatches.concat(matches.slice(0, index + 1))\n }}\n />\n );\n }, null as React.ReactElement | null);\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: string;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch<ParamKey extends string = string> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params<ParamKey>;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable<T> = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/docs/en/v6/api#matchpath\n */\nexport function matchPath<ParamKey extends string = string>(\n pattern: PathPattern | string,\n pathname: string\n): PathMatch<ParamKey> | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, paramNames] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = paramNames.reduce<Mutable<Params>>(\n (memo, paramName, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n memo[paramName] = safelyDecodeURIComponent(\n captureGroups[index] || \"\",\n paramName\n );\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern\n };\n}\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, string[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let paramNames: string[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^$?{}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(/:(\\w+)/g, (_: string, paramName: string) => {\n paramNames.push(paramName);\n return \"([^\\\\/]+)\";\n });\n\n if (path.endsWith(\"*\")) {\n paramNames.push(\"*\");\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else {\n regexpSource += end\n ? \"\\\\/*$\" // When matching to the end, ignore trailing slashes\n : // Otherwise, at least match a word boundary. This restricts parent\n // routes to matching only their own words and nothing more, e.g. parent\n // route \"/home\" should not match \"/home2\".\n \"(?:\\\\b|$)\";\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, paramNames];\n}\n\nfunction safelyDecodeURIComponent(value: string, paramName: string) {\n try {\n return decodeURIComponent(value);\n } catch (error) {\n warning(\n false,\n `The value for the URL param \"${paramName}\" will not be decoded because` +\n ` the string \"${value}\" is a malformed URL segment. This is probably` +\n ` due to a bad percent encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/docs/en/v6/api#resolvepath\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\"\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash)\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach(segment => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string\n): Path {\n let to = typeof toArg === \"string\" ? parsePath(toArg) : toArg;\n let toPathname = toArg === \"\" || to.pathname === \"\" ? \"/\" : to.pathname;\n\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `<Link to>` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n let from: string;\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n if (toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n // Each leading .. segment means \"go up one route\" instead of \"go up one\n // URL segment\". This is a key difference from how <a href> works and a\n // major reason we call this a \"to\" value instead of a \"href\".\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n // If there are more \"..\" segments than parent routes, resolve relative to\n // the root / URL.\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original to value had one.\n if (\n toPathname &&\n toPathname !== \"/\" &&\n toPathname.endsWith(\"/\") &&\n !path.pathname.endsWith(\"/\")\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\nfunction getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\nfunction stripBasename(pathname: string, basename: string): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n let nextChar = pathname.charAt(basename.length);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(basename.length) || \"/\";\n}\n\nconst joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\nconst normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\nconst normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\nconst normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\n///////////////////////////////////////////////////////////////////////////////\n// DANGER! PLEASE READ ME!\n// We provide these exports as an escape hatch in the event that you need any\n// routing data that we don't provide an explicit API for. With that said, we\n// want to cover your use case if we can, so if you feel the need to use these\n// we want to hear from you. Let us know what you're building and we'll do our\n// best to make sure we can support you!\n//\n// We consider these exports an implementation detail and do not guarantee\n// against any breaking changes, regardless of the semver release. Use with\n// extreme caution and only if you understand the consequences. Godspeed.\n///////////////////////////////////////////////////////////////////////////////\n\n/** @internal */\nexport {\n NavigationContext as UNSAFE_NavigationContext,\n LocationContext as UNSAFE_LocationContext,\n RouteContext as UNSAFE_RouteContext\n};\n"],"names":["invariant","cond","message","Error","warning","console","warn","e","alreadyWarned","warningOnce","key","NavigationContext","React","displayName","LocationContext","RouteContext","outlet","matches","MemoryRouter","basename","children","initialEntries","initialIndex","historyRef","current","createMemoryHistory","history","state","setState","action","location","listen","React.createElement","Navigate","to","replace","useInRouterContext","static","navigate","useNavigate","Outlet","_props","useOutlet","Route","Router","basenameProp","locationProp","navigationType","NavigationType","Pop","navigator","staticProp","normalizePathname","navigationContext","parsePath","pathname","search","hash","trailingPathname","stripBasename","Routes","useRoutes","createRoutesFromChildren","useHref","useResolvedPath","joinedPathname","toPathname","getToPathname","endsWithSlash","endsWith","joinPaths","createHref","useLocation","useNavigationType","useMatch","pattern","matchPath","locationPathname","routePathnamesJson","JSON","stringify","map","match","pathnameBase","activeRef","options","go","path","resolveTo","parse","push","useParams","routeMatch","length","params","routes","locationArg","parentMatches","parentParams","parentPathname","parentPathnameBase","parentRoute","route","parentPath","locationFromContext","parsedLocationArg","startsWith","remainingPathname","slice","matchRoutes","element","undefined","_renderMatches","Object","assign","forEach","type","apply","props","name","caseSensitive","index","generatePath","_","branches","flattenRoutes","rankRouteBranches","i","matchRouteBranch","parentsMeta","meta","relativePath","childrenIndex","routesMeta","concat","score","computeScore","sort","a","b","compareIndexes","paramRe","dynamicSegmentValue","indexRouteValue","emptySegmentValue","staticSegmentValue","splatPenalty","isSplat","s","segments","split","initialScore","some","filter","reduce","segment","test","siblings","every","n","branch","routesArg","matchedParams","matchedPathname","end","renderMatches","reduceRight","matcher","paramNames","compilePath","captureGroups","memo","paramName","splatValue","safelyDecodeURIComponent","regexpSource","RegExp","value","decodeURIComponent","error","resolvePath","fromPathname","resolvePathname","normalizeSearch","normalizeHash","relativeSegments","pop","join","toArg","routePathnames","from","routePathnameIndex","toSegments","shift","toLowerCase","nextChar","charAt","paths"],"mappings":"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"}
package/main.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * React Router v6.0.0
2
+ * React Router v6.0.1
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-router",
3
- "version": "6.0.0",
3
+ "version": "6.0.1",
4
4
  "author": "Remix Software <hello@remix.run>",
5
5
  "description": "Declarative routing for React",
6
6
  "repository": {
@@ -17,7 +17,7 @@
17
17
  "react": ">=16.8"
18
18
  },
19
19
  "dependencies": {
20
- "history": "^5.0.3"
20
+ "history": "^5.1.0"
21
21
  },
22
22
  "sideEffects": false,
23
23
  "keywords": [
@@ -1,5 +1,5 @@
1
1
  /**
2
- * React Router v6.0.0
2
+ * React Router v6.0.1
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -80,7 +80,7 @@ const RouteContext = /*#__PURE__*/createContext({
80
80
  /**
81
81
  * A <Router> that stores all entries in memory.
82
82
  *
83
- * @see https://reactrouter.com/api/MemoryRouter
83
+ * @see https://reactrouter.com/docs/en/v6/api#memoryrouter
84
84
  */
85
85
  function MemoryRouter({
86
86
  basename,
@@ -119,7 +119,7 @@ function MemoryRouter({
119
119
  * able to use hooks. In functional components, we recommend you use the
120
120
  * `useNavigate` hook instead.
121
121
  *
122
- * @see https://reactrouter.com/api/Navigate
122
+ * @see https://reactrouter.com/docs/en/v6/api#navigate
123
123
  */
124
124
  function Navigate({
125
125
  to,
@@ -143,7 +143,7 @@ function Navigate({
143
143
  /**
144
144
  * Renders the child route's element, if there is one.
145
145
  *
146
- * @see https://reactrouter.com/api/Outlet
146
+ * @see https://reactrouter.com/docs/en/v6/api#outlet
147
147
  */
148
148
  function Outlet(_props) {
149
149
  return useOutlet();
@@ -152,7 +152,7 @@ function Outlet(_props) {
152
152
  /**
153
153
  * Declares an element that should be rendered at a certain URL path.
154
154
  *
155
- * @see https://reactrouter.com/api/Route
155
+ * @see https://reactrouter.com/docs/en/v6/api#route
156
156
  */
157
157
  function Route(_props) {
158
158
  invariant(false, `A <Route> is only ever to be used as the child of <Routes> element, ` + `never rendered directly. Please wrap your <Route> in a <Routes>.`) ;
@@ -165,7 +165,7 @@ function Route(_props) {
165
165
  * router that is more specific to your environment such as a <BrowserRouter>
166
166
  * in web browsers or a <StaticRouter> for server rendering.
167
167
  *
168
- * @see https://reactrouter.com/api/Router
168
+ * @see https://reactrouter.com/docs/en/v6/api#router
169
169
  */
170
170
  function Router({
171
171
  basename: basenameProp = "/",
@@ -230,7 +230,7 @@ function Router({
230
230
  * A container for a nested tree of <Route> elements that renders the branch
231
231
  * that best matches the current location.
232
232
  *
233
- * @see https://reactrouter.com/api/Routes
233
+ * @see https://reactrouter.com/docs/en/v6/api#routes
234
234
  */
235
235
  function Routes({
236
236
  children,
@@ -245,7 +245,7 @@ function Routes({
245
245
  * Returns the full href for the given "to" value. This is useful for building
246
246
  * custom links that are also accessible and preserve right-click behavior.
247
247
  *
248
- * @see https://reactrouter.com/api/useHref
248
+ * @see https://reactrouter.com/docs/en/v6/api#usehref
249
249
  */
250
250
 
251
251
  function useHref(to) {
@@ -278,7 +278,7 @@ function useHref(to) {
278
278
  /**
279
279
  * Returns true if this component is a descendant of a <Router>.
280
280
  *
281
- * @see https://reactrouter.com/api/useInRouterContext
281
+ * @see https://reactrouter.com/docs/en/v6/api#useinroutercontext
282
282
  */
283
283
 
284
284
  function useInRouterContext() {
@@ -292,7 +292,7 @@ function useInRouterContext() {
292
292
  * "routing" in your app, and we'd like to know what your use case is. We may
293
293
  * be able to provide something higher-level to better suit your needs.
294
294
  *
295
- * @see https://reactrouter.com/api/useLocation
295
+ * @see https://reactrouter.com/docs/en/v6/api#uselocation
296
296
  */
297
297
 
298
298
  function useLocation() {
@@ -305,7 +305,7 @@ function useLocation() {
305
305
  * Returns the current navigation action which describes how the router came to
306
306
  * the current location, either by a pop, push, or replace on the history stack.
307
307
  *
308
- * @see https://reactrouter.com/api/useNavigationType
308
+ * @see https://reactrouter.com/docs/en/v6/api#usenavigationtype
309
309
  */
310
310
 
311
311
  function useNavigationType() {
@@ -316,7 +316,7 @@ function useNavigationType() {
316
316
  * This is useful for components that need to know "active" state, e.g.
317
317
  * <NavLink>.
318
318
  *
319
- * @see https://reactrouter.com/api/useMatch
319
+ * @see https://reactrouter.com/docs/en/v6/api#usematch
320
320
  */
321
321
 
322
322
  function useMatch(pattern) {
@@ -333,7 +333,7 @@ function useMatch(pattern) {
333
333
  * Returns an imperative method for changing the location. Used by <Link>s, but
334
334
  * may also be used by other elements to change the location.
335
335
  *
336
- * @see https://reactrouter.com/api/useNavigate
336
+ * @see https://reactrouter.com/docs/en/v6/api#usenavigate
337
337
  */
338
338
  function useNavigate() {
339
339
  !useInRouterContext() ? invariant(false, // TODO: This error is probably because they somehow have 2 versions of the
@@ -377,7 +377,7 @@ function useNavigate() {
377
377
  * Returns the element for the child route at this level of the route
378
378
  * hierarchy. Used internally by <Outlet> to render child routes.
379
379
  *
380
- * @see https://reactrouter.com/api/useOutlet
380
+ * @see https://reactrouter.com/docs/en/v6/api#useoutlet
381
381
  */
382
382
 
383
383
  function useOutlet() {
@@ -387,7 +387,7 @@ function useOutlet() {
387
387
  * Returns an object of key/value pairs of the dynamic params from the current
388
388
  * URL that were matched by the route path.
389
389
  *
390
- * @see https://reactrouter.com/api/useParams
390
+ * @see https://reactrouter.com/docs/en/v6/api#useparams
391
391
  */
392
392
 
393
393
  function useParams() {
@@ -400,7 +400,7 @@ function useParams() {
400
400
  /**
401
401
  * Resolves the pathname of the given `to` value against the current location.
402
402
  *
403
- * @see https://reactrouter.com/api/useResolvedPath
403
+ * @see https://reactrouter.com/docs/en/v6/api#useresolvedpath
404
404
  */
405
405
 
406
406
  function useResolvedPath(to) {
@@ -419,7 +419,7 @@ function useResolvedPath(to) {
419
419
  * elements in the tree must render an <Outlet> to render their child route's
420
420
  * element.
421
421
  *
422
- * @see https://reactrouter.com/api/useRoutes
422
+ * @see https://reactrouter.com/docs/en/v6/api#useroutes
423
423
  */
424
424
 
425
425
  function useRoutes(routes, locationArg) {
@@ -496,7 +496,7 @@ function useRoutes(routes, locationArg) {
496
496
  * either a `<Route>` element or an array of them. Used internally by
497
497
  * `<Routes>` to create a route config from its children.
498
498
  *
499
- * @see https://reactrouter.com/api/createRoutesFromChildren
499
+ * @see https://reactrouter.com/docs/en/v6/api#createroutesfromchildren
500
500
  */
501
501
 
502
502
  function createRoutesFromChildren(children) {
@@ -514,6 +514,7 @@ function createRoutesFromChildren(children) {
514
514
  return;
515
515
  }
516
516
 
517
+ !(element.type === Route) ? invariant(false, `[${typeof element.type === "string" ? element.type : element.type.name}] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`) : void 0;
517
518
  let route = {
518
519
  caseSensitive: element.props.caseSensitive,
519
520
  element: element.props.element,
@@ -536,7 +537,7 @@ function createRoutesFromChildren(children) {
536
537
  /**
537
538
  * Returns a path with params interpolated.
538
539
  *
539
- * @see https://reactrouter.com/api/generatePath
540
+ * @see https://reactrouter.com/docs/en/v6/api#generatepath
540
541
  */
541
542
  function generatePath(path, params = {}) {
542
543
  return path.replace(/:(\w+)/g, (_, key) => {
@@ -551,7 +552,7 @@ function generatePath(path, params = {}) {
551
552
  /**
552
553
  * Matches the given routes to a location and returns the match data.
553
554
  *
554
- * @see https://reactrouter.com/api/matchRoutes
555
+ * @see https://reactrouter.com/docs/en/v6/api#matchroutes
555
556
  */
556
557
  function matchRoutes(routes, locationArg, basename = "/") {
557
558
  let location = typeof locationArg === "string" ? parsePath(locationArg) : locationArg;
@@ -718,7 +719,7 @@ function _renderMatches(matches, parentMatches = []) {
718
719
  * Performs pattern matching on a URL pathname and returns information about
719
720
  * the match.
720
721
  *
721
- * @see https://reactrouter.com/api/matchPath
722
+ * @see https://reactrouter.com/docs/en/v6/api#matchpath
722
723
  */
723
724
  function matchPath(pattern, pathname) {
724
725
  if (typeof pattern === "string") {
@@ -792,7 +793,7 @@ function safelyDecodeURIComponent(value, paramName) {
792
793
  /**
793
794
  * Returns a resolved path object relative to the given pathname.
794
795
  *
795
- * @see https://reactrouter.com/api/resolvePath
796
+ * @see https://reactrouter.com/docs/en/v6/api#resolvepath
796
797
  */
797
798
 
798
799