@tanstack/router-core 0.0.1-beta.36 → 0.0.1-beta.39
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/index.js +2 -1
- package/build/cjs/index.js.map +1 -1
- package/build/cjs/path.js +5 -7
- package/build/cjs/path.js.map +1 -1
- package/build/cjs/route.js +112 -95
- package/build/cjs/route.js.map +1 -1
- package/build/cjs/routeConfig.js +2 -2
- package/build/cjs/routeConfig.js.map +1 -1
- package/build/cjs/routeMatch.js +107 -65
- package/build/cjs/routeMatch.js.map +1 -1
- package/build/cjs/router.js +320 -351
- package/build/cjs/router.js.map +1 -1
- package/build/cjs/searchParams.js +4 -3
- package/build/cjs/searchParams.js.map +1 -1
- package/build/cjs/sharedClone.js +122 -0
- package/build/cjs/sharedClone.js.map +1 -0
- package/build/cjs/utils.js +1 -59
- package/build/cjs/utils.js.map +1 -1
- package/build/esm/index.js +654 -592
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +1 -1
- package/build/stats-react.json +183 -158
- package/build/types/index.d.ts +54 -68
- package/build/umd/index.development.js +1000 -595
- package/build/umd/index.development.js.map +1 -1
- package/build/umd/index.production.js +1 -1
- package/build/umd/index.production.js.map +1 -1
- package/package.json +2 -1
- package/src/index.ts +1 -0
- package/src/link.ts +20 -12
- package/src/route.ts +160 -139
- package/src/routeMatch.ts +144 -99
- package/src/router.ts +402 -491
- package/src/sharedClone.ts +118 -0
- package/src/utils.ts +0 -65
- package/build/cjs/_virtual/_rollupPluginBabelHelpers.js +0 -31
- package/build/cjs/_virtual/_rollupPluginBabelHelpers.js.map +0 -1
package/build/cjs/router.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sources":["../../src/router.ts"],"sourcesContent":["import {\n BrowserHistory,\n createBrowserHistory,\n createMemoryHistory,\n HashHistory,\n History,\n MemoryHistory,\n} from 'history'\nimport invariant from 'tiny-invariant'\nimport { GetFrameworkGeneric } from './frameworks'\n\nimport {\n LinkInfo,\n LinkOptions,\n NavigateOptionsAbsolute,\n ToOptions,\n ValidFromPath,\n} from './link'\nimport {\n cleanPath,\n interpolatePath,\n joinPaths,\n matchPathname,\n resolvePath,\n trimPath,\n} from './path'\nimport { AnyRoute, createRoute, Route } from './route'\nimport {\n AnyLoaderData,\n AnyPathParams,\n AnyRouteConfig,\n AnySearchSchema,\n LoaderContext,\n RouteConfig,\n SearchFilter,\n} from './routeConfig'\nimport {\n AllRouteInfo,\n AnyAllRouteInfo,\n AnyRouteInfo,\n RouteInfo,\n RoutesById,\n} from './routeInfo'\nimport { createRouteMatch, RouteMatch } from './routeMatch'\nimport { defaultParseSearch, defaultStringifySearch } from './searchParams'\nimport {\n functionalUpdate,\n last,\n pick,\n PickAsRequired,\n PickRequired,\n replaceEqualDeep,\n Timeout,\n Updater,\n} from './utils'\n\nexport interface RegisterRouter {\n // router: Router\n}\n\nexport type RegisteredRouter = RegisterRouter extends {\n router: Router<infer TRouteConfig, infer TAllRouteInfo, infer TRouterContext>\n}\n ? Router<TRouteConfig, TAllRouteInfo, TRouterContext>\n : Router\n\nexport type RegisteredAllRouteInfo = RegisterRouter extends {\n router: Router<infer TRouteConfig, infer TAllRouteInfo, infer TRouterContext>\n}\n ? TAllRouteInfo\n : AnyAllRouteInfo\n\nexport interface LocationState {}\n\nexport interface Location<\n TSearchObj extends AnySearchSchema = {},\n TState extends LocationState = LocationState,\n> {\n href: string\n pathname: string\n search: TSearchObj\n searchStr: string\n state: TState\n hash: string\n key?: string\n}\n\nexport interface FromLocation {\n pathname: string\n search?: unknown\n key?: string\n hash?: string\n}\n\nexport type SearchSerializer = (searchObj: Record<string, any>) => string\nexport type SearchParser = (searchStr: string) => Record<string, any>\nexport type FilterRoutesFn = <TRoute extends Route<any, RouteInfo>>(\n routeConfigs: TRoute[],\n) => TRoute[]\n\nexport interface RouterOptions<\n TRouteConfig extends AnyRouteConfig,\n TRouterContext,\n> {\n history?: BrowserHistory | MemoryHistory | HashHistory\n stringifySearch?: SearchSerializer\n parseSearch?: SearchParser\n filterRoutes?: FilterRoutesFn\n defaultPreload?: false | 'intent'\n defaultPreloadMaxAge?: number\n defaultPreloadGcMaxAge?: number\n defaultPreloadDelay?: number\n defaultComponent?: GetFrameworkGeneric<'Component'>\n defaultErrorComponent?: GetFrameworkGeneric<'ErrorComponent'>\n defaultPendingComponent?: GetFrameworkGeneric<'Component'>\n defaultLoaderMaxAge?: number\n defaultLoaderGcMaxAge?: number\n caseSensitive?: boolean\n routeConfig?: TRouteConfig\n basepath?: string\n useServerData?: boolean\n createRouter?: (router: Router<any, any, any>) => void\n createRoute?: (opts: {\n route: AnyRoute\n router: Router<any, any, any>\n }) => void\n context?: TRouterContext\n loadComponent?: (\n component: GetFrameworkGeneric<'Component'>,\n ) => Promise<GetFrameworkGeneric<'Component'>>\n // renderComponent?: (\n // component: GetFrameworkGeneric<'Component'>,\n // ) => GetFrameworkGeneric<'Element'>\n}\n\nexport interface Action<\n TPayload = unknown,\n TResponse = unknown,\n // TError = unknown,\n> {\n submit: (\n submission?: TPayload,\n actionOpts?: { invalidate?: boolean; multi?: boolean },\n ) => Promise<TResponse>\n current?: ActionState<TPayload, TResponse>\n latest?: ActionState<TPayload, TResponse>\n submissions: ActionState<TPayload, TResponse>[]\n}\n\nexport interface ActionState<\n TPayload = unknown,\n TResponse = unknown,\n // TError = unknown,\n> {\n submittedAt: number\n status: 'idle' | 'pending' | 'success' | 'error'\n submission: TPayload\n isMulti: boolean\n data?: TResponse\n error?: unknown\n}\n\nexport interface Loader<\n TFullSearchSchema extends AnySearchSchema = {},\n TAllParams extends AnyPathParams = {},\n TRouteLoaderData = AnyLoaderData,\n> {\n fetch: keyof PickRequired<TFullSearchSchema> extends never\n ? keyof TAllParams extends never\n ? (loaderContext: { signal?: AbortSignal }) => Promise<TRouteLoaderData>\n : (loaderContext: {\n params: TAllParams\n search?: TFullSearchSchema\n signal?: AbortSignal\n }) => Promise<TRouteLoaderData>\n : keyof TAllParams extends never\n ? (loaderContext: {\n search: TFullSearchSchema\n params: TAllParams\n signal?: AbortSignal\n }) => Promise<TRouteLoaderData>\n : (loaderContext: {\n search: TFullSearchSchema\n signal?: AbortSignal\n }) => Promise<TRouteLoaderData>\n current?: LoaderState<TFullSearchSchema, TAllParams>\n latest?: LoaderState<TFullSearchSchema, TAllParams>\n pending: LoaderState<TFullSearchSchema, TAllParams>[]\n}\n\nexport interface LoaderState<\n TFullSearchSchema extends AnySearchSchema = {},\n TAllParams extends AnyPathParams = {},\n> {\n loadedAt: number\n loaderContext: LoaderContext<TFullSearchSchema, TAllParams>\n}\n\nexport interface RouterState<\n TSearchObj extends AnySearchSchema = {},\n TState extends LocationState = LocationState,\n> {\n status: 'idle' | 'loading'\n latestLocation: Location<TSearchObj, TState>\n currentMatches: RouteMatch[]\n currentLocation: Location<TSearchObj, TState>\n pendingMatches?: RouteMatch[]\n pendingLocation?: Location<TSearchObj, TState>\n lastUpdated: number\n actions: Record<string, Action>\n loaders: Record<string, Loader>\n isFetching: boolean\n isPreloading: boolean\n}\n\ntype Listener = (router: Router<any, any, any>) => void\n\nexport type ListenerFn = () => void\n\nexport interface BuildNextOptions {\n to?: string | number | null\n params?: true | Updater<unknown>\n search?: true | Updater<unknown>\n hash?: true | Updater<string>\n state?: LocationState\n key?: string\n from?: string\n fromCurrent?: boolean\n __preSearchFilters?: SearchFilter<any>[]\n __postSearchFilters?: SearchFilter<any>[]\n}\n\nexport type MatchCacheEntry = {\n gc: number\n match: RouteMatch\n}\n\nexport interface MatchLocation {\n to?: string | number | null\n fuzzy?: boolean\n caseSensitive?: boolean\n from?: string\n fromCurrent?: boolean\n}\n\nexport interface MatchRouteOptions {\n pending?: boolean\n caseSensitive?: boolean\n fuzzy?: boolean\n}\n\ntype LinkCurrentTargetElement = {\n preloadTimeout?: null | ReturnType<typeof setTimeout>\n}\n\nexport interface DehydratedRouterState\n extends Pick<\n RouterState,\n 'status' | 'latestLocation' | 'currentLocation' | 'lastUpdated'\n > {\n currentMatches: DehydratedRouteMatch[]\n}\n\nexport interface DehydratedRouter<TRouterContext = unknown> {\n // location: Router['__location']\n state: DehydratedRouterState\n context: TRouterContext\n}\n\ninterface DehydratedRouteMatch\n extends Pick<\n RouteMatch<any, any>,\n | 'matchId'\n | 'status'\n | 'routeLoaderData'\n | 'loaderData'\n | 'isInvalid'\n | 'invalidAt'\n > {}\n\nexport interface RouterContext {}\n\nexport interface Router<\n TRouteConfig extends AnyRouteConfig = RouteConfig,\n TAllRouteInfo extends AnyAllRouteInfo = AllRouteInfo<TRouteConfig>,\n TRouterContext = unknown,\n> {\n types: {\n // Super secret internal stuff\n RouteConfig: TRouteConfig\n AllRouteInfo: TAllRouteInfo\n }\n\n // Public API\n history: BrowserHistory | MemoryHistory | HashHistory\n options: PickAsRequired<\n RouterOptions<TRouteConfig, TRouterContext>,\n 'stringifySearch' | 'parseSearch' | 'context'\n >\n // Computed in this.update()\n basepath: string\n // Internal:\n listeners: Listener[]\n // __location: Location<TAllRouteInfo['fullSearchSchema']>\n navigateTimeout?: Timeout\n nextAction?: 'push' | 'replace'\n state: RouterState<TAllRouteInfo['fullSearchSchema']>\n routeTree: Route<TAllRouteInfo, RouteInfo>\n routesById: RoutesById<TAllRouteInfo>\n navigationPromise?: Promise<void>\n startedLoadingAt: number\n resolveNavigation: () => void\n subscribe: (listener: Listener) => () => void\n reset: () => void\n notify: () => void\n mount: () => () => void\n onFocus: () => void\n update: <\n TRouteConfig extends RouteConfig = RouteConfig,\n TAllRouteInfo extends AnyAllRouteInfo = AllRouteInfo<TRouteConfig>,\n TRouterContext = unknown,\n >(\n opts?: RouterOptions<TRouteConfig, TRouterContext>,\n ) => Router<TRouteConfig, TAllRouteInfo, TRouterContext>\n\n buildNext: (opts: BuildNextOptions) => Location\n cancelMatches: () => void\n load: (next?: Location) => Promise<void>\n matchCache: Record<string, MatchCacheEntry>\n cleanMatchCache: () => void\n getRoute: <TId extends keyof TAllRouteInfo['routeInfoById']>(\n id: TId,\n ) => Route<TAllRouteInfo, TAllRouteInfo['routeInfoById'][TId]>\n loadRoute: (navigateOpts: BuildNextOptions) => Promise<RouteMatch[]>\n preloadRoute: (\n navigateOpts: BuildNextOptions,\n loaderOpts: { maxAge?: number; gcMaxAge?: number },\n ) => Promise<RouteMatch[]>\n matchRoutes: (\n pathname: string,\n opts?: { strictParseParams?: boolean },\n ) => RouteMatch[]\n loadMatches: (\n resolvedMatches: RouteMatch[],\n loaderOpts?:\n | { preload: true; maxAge: number; gcMaxAge: number }\n | { preload?: false; maxAge?: never; gcMaxAge?: never },\n ) => Promise<void>\n loadMatchData: (\n routeMatch: RouteMatch<any, any>,\n ) => Promise<Record<string, unknown>>\n invalidateRoute: (opts: MatchLocation) => void\n reload: () => Promise<void>\n resolvePath: (from: string, path: string) => string\n navigate: <\n TFrom extends ValidFromPath<TAllRouteInfo> = '/',\n TTo extends string = '.',\n >(\n opts: NavigateOptionsAbsolute<TAllRouteInfo, TFrom, TTo>,\n ) => Promise<void>\n matchRoute: <\n TFrom extends ValidFromPath<TAllRouteInfo> = '/',\n TTo extends string = '.',\n >(\n matchLocation: ToOptions<TAllRouteInfo, TFrom, TTo>,\n opts?: MatchRouteOptions,\n ) => boolean\n buildLink: <\n TFrom extends ValidFromPath<TAllRouteInfo> = '/',\n TTo extends string = '.',\n >(\n opts: LinkOptions<TAllRouteInfo, TFrom, TTo>,\n ) => LinkInfo\n dehydrate: () => DehydratedRouter<TRouterContext>\n hydrate: (dehydratedRouter: DehydratedRouter<TRouterContext>) => void\n __: {\n buildRouteTree: (\n routeConfig: RouteConfig,\n ) => Route<TAllRouteInfo, AnyRouteInfo>\n parseLocation: (\n location: History['location'],\n previousLocation?: Location,\n ) => Location\n buildLocation: (dest: BuildNextOptions) => Location\n commitLocation: (next: Location, replace?: boolean) => Promise<void>\n navigate: (\n location: BuildNextOptions & { replace?: boolean },\n ) => Promise<void>\n }\n}\n\n// Detect if we're in the DOM\nconst isServer =\n typeof window === 'undefined' || !window.document?.createElement\n\n// This is the default history object if none is defined\nconst createDefaultHistory = () =>\n isServer ? createMemoryHistory() : createBrowserHistory()\n\nfunction getInitialRouterState(): RouterState {\n return {\n status: 'idle',\n latestLocation: null!,\n currentLocation: null!,\n currentMatches: [],\n actions: {},\n loaders: {},\n lastUpdated: Date.now(),\n isFetching: false,\n isPreloading: false,\n }\n}\n\nexport function createRouter<\n TRouteConfig extends AnyRouteConfig = RouteConfig,\n TAllRouteInfo extends AnyAllRouteInfo = AllRouteInfo<TRouteConfig>,\n TRouterContext = unknown,\n>(\n userOptions?: RouterOptions<TRouteConfig, TRouterContext>,\n): Router<TRouteConfig, TAllRouteInfo, TRouterContext> {\n const history = userOptions?.history || createDefaultHistory()\n\n const originalOptions = {\n defaultLoaderGcMaxAge: 5 * 60 * 1000,\n defaultLoaderMaxAge: 0,\n defaultPreloadMaxAge: 2000,\n defaultPreloadDelay: 50,\n context: undefined!,\n ...userOptions,\n stringifySearch: userOptions?.stringifySearch ?? defaultStringifySearch,\n parseSearch: userOptions?.parseSearch ?? defaultParseSearch,\n }\n\n let router: Router<TRouteConfig, TAllRouteInfo, TRouterContext> = {\n types: undefined!,\n\n // public api\n history,\n options: originalOptions,\n listeners: [],\n // Resolved after construction\n basepath: '',\n routeTree: undefined!,\n routesById: {} as any,\n //\n resolveNavigation: () => {},\n matchCache: {},\n state: getInitialRouterState(),\n reset: () => {\n router.state = getInitialRouterState()\n router.notify()\n },\n startedLoadingAt: Date.now(),\n subscribe: (listener: Listener): (() => void) => {\n router.listeners.push(listener as Listener)\n return () => {\n router.listeners = router.listeners.filter((x) => x !== listener)\n }\n },\n getRoute: (id) => {\n return router.routesById[id]\n },\n notify: (): void => {\n const isFetching =\n router.state.status === 'loading' ||\n router.state.currentMatches.some((d) => d.isFetching)\n\n const isPreloading = Object.values(router.matchCache).some(\n (d) =>\n d.match.isFetching &&\n !router.state.currentMatches.find(\n (dd) => dd.matchId === d.match.matchId,\n ),\n )\n\n if (\n router.state.isFetching !== isFetching ||\n router.state.isPreloading !== isPreloading\n ) {\n router.state = {\n ...router.state,\n isFetching,\n isPreloading,\n }\n }\n\n cascadeLoaderData(router.state.currentMatches)\n router.listeners.forEach((listener) => listener(router))\n },\n\n dehydrate: () => {\n return {\n state: {\n ...pick(router.state, [\n 'latestLocation',\n 'currentLocation',\n 'status',\n 'lastUpdated',\n ]),\n currentMatches: router.state.currentMatches.map((match) =>\n pick(match, [\n 'matchId',\n 'status',\n 'routeLoaderData',\n 'loaderData',\n 'isInvalid',\n 'invalidAt',\n ]),\n ),\n },\n context: router.options.context as TRouterContext,\n }\n },\n\n hydrate: (dehydratedState) => {\n // Update the location\n router.state.latestLocation = dehydratedState.state.latestLocation\n router.state.currentLocation = dehydratedState.state.currentLocation\n\n // Update the context\n router.options.context = dehydratedState.context\n\n // Match the routes\n const currentMatches = router.matchRoutes(\n router.state.latestLocation.pathname,\n {\n strictParseParams: true,\n },\n )\n\n currentMatches.forEach((match, index) => {\n const dehydratedMatch = dehydratedState.state.currentMatches[index]\n invariant(\n dehydratedMatch,\n 'Oh no! Dehydrated route matches did not match the active state of the router 😬',\n )\n Object.assign(match, dehydratedMatch)\n })\n\n currentMatches.forEach((match) => match.__.validate())\n\n router.state = {\n ...router.state,\n ...dehydratedState,\n currentMatches,\n }\n },\n\n mount: () => {\n if (!router.state.currentMatches.length) {\n router.load()\n }\n\n const unsub = router.history.listen((event) => {\n router.load(\n router.__.parseLocation(event.location, router.state.latestLocation),\n )\n })\n\n // addEventListener does not exist in React Native, but window does\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!isServer && window.addEventListener) {\n // Listen to visibillitychange and focus\n window.addEventListener('visibilitychange', router.onFocus, false)\n window.addEventListener('focus', router.onFocus, false)\n }\n\n return () => {\n unsub()\n if (!isServer && window.removeEventListener) {\n // Be sure to unsubscribe if a new handler is set\n window.removeEventListener('visibilitychange', router.onFocus)\n window.removeEventListener('focus', router.onFocus)\n }\n }\n },\n\n onFocus: () => {\n router.load()\n },\n\n update: (opts) => {\n const newHistory = opts?.history !== router.history\n if (!router.state.latestLocation || newHistory) {\n if (opts?.history) {\n router.history = opts.history\n }\n router.state.latestLocation = router.__.parseLocation(\n router.history.location,\n )\n router.state.currentLocation = router.state.latestLocation\n }\n\n Object.assign(router.options, opts)\n\n const { basepath, routeConfig } = router.options\n\n router.basepath = `/${trimPath(basepath ?? '') ?? ''}`\n\n if (routeConfig) {\n router.routesById = {} as any\n router.routeTree = router.__.buildRouteTree(routeConfig)\n }\n\n return router as any\n },\n\n cancelMatches: () => {\n ;[\n ...router.state.currentMatches,\n ...(router.state.pendingMatches ?? []),\n ].forEach((match) => {\n match.cancel()\n })\n },\n\n load: async (next?: Location) => {\n const id = Math.random()\n router.startedLoadingAt = id\n\n if (next) {\n // Ingest the new location\n router.state.latestLocation = next\n }\n\n // Cancel any pending matches\n router.cancelMatches()\n\n // Match the routes\n const matches = router.matchRoutes(router.state.latestLocation.pathname, {\n strictParseParams: true,\n })\n\n if (typeof document !== 'undefined') {\n router.state = {\n ...router.state,\n status: 'loading',\n pendingMatches: matches,\n pendingLocation: router.state.latestLocation,\n }\n } else {\n router.state = {\n ...router.state,\n status: 'loading',\n currentMatches: matches,\n currentLocation: router.state.latestLocation,\n }\n }\n\n router.notify()\n\n // Load the matches\n try {\n await router.loadMatches(matches)\n } catch (err: any) {\n console.log(err)\n invariant(\n false,\n 'Matches failed to load due to error above ☝️. Navigation cancelled!',\n )\n }\n\n if (router.startedLoadingAt !== id) {\n // Ignore side-effects of match loading\n return router.navigationPromise\n }\n\n const previousMatches = router.state.currentMatches\n\n const exiting: RouteMatch[] = [],\n staying: RouteMatch[] = []\n\n previousMatches.forEach((d) => {\n if (matches.find((dd) => dd.matchId === d.matchId)) {\n staying.push(d)\n } else {\n exiting.push(d)\n }\n })\n\n const entering = matches.filter((d) => {\n return !previousMatches.find((dd) => dd.matchId === d.matchId)\n })\n\n const now = Date.now()\n\n exiting.forEach((d) => {\n d.__.onExit?.({\n params: d.params,\n search: d.routeSearch,\n })\n\n // Clear idle error states when match leaves\n if (d.status === 'error' && !d.isFetching) {\n d.status = 'idle'\n d.error = undefined\n }\n\n const gc = Math.max(\n d.options.loaderGcMaxAge ?? router.options.defaultLoaderGcMaxAge ?? 0,\n d.options.loaderMaxAge ?? router.options.defaultLoaderMaxAge ?? 0,\n )\n\n if (gc > 0) {\n router.matchCache[d.matchId] = {\n gc: gc == Infinity ? Number.MAX_SAFE_INTEGER : now + gc,\n match: d,\n }\n }\n })\n\n staying.forEach((d) => {\n d.options.onTransition?.({\n params: d.params,\n search: d.routeSearch,\n })\n })\n\n entering.forEach((d) => {\n d.__.onExit = d.options.onLoaded?.({\n params: d.params,\n search: d.search,\n })\n delete router.matchCache[d.matchId]\n })\n\n if (router.startedLoadingAt !== id) {\n // Ignore side-effects of match loading\n return\n }\n\n matches.forEach((match) => {\n // Clear actions\n if (match.action) {\n match.action.current = undefined\n match.action.submissions = []\n }\n })\n\n router.state = {\n ...router.state,\n status: 'idle',\n currentLocation: router.state.latestLocation,\n currentMatches: matches,\n pendingLocation: undefined,\n pendingMatches: undefined,\n }\n\n router.notify()\n router.resolveNavigation()\n },\n\n cleanMatchCache: () => {\n const now = Date.now()\n\n Object.keys(router.matchCache).forEach((matchId) => {\n const entry = router.matchCache[matchId]!\n\n // Don't remove loading matches\n if (entry.match.status === 'loading') {\n return\n }\n\n // Do not remove successful matches that are still valid\n if (entry.gc > 0 && entry.gc > now) {\n return\n }\n\n // Everything else gets removed\n delete router.matchCache[matchId]\n })\n },\n\n loadRoute: async (navigateOpts = router.state.latestLocation) => {\n const next = router.buildNext(navigateOpts)\n const matches = router.matchRoutes(next.pathname, {\n strictParseParams: true,\n })\n await router.loadMatches(matches)\n return matches\n },\n\n preloadRoute: async (\n navigateOpts = router.state.latestLocation,\n loaderOpts,\n ) => {\n const next = router.buildNext(navigateOpts)\n const matches = router.matchRoutes(next.pathname, {\n strictParseParams: true,\n })\n\n await router.loadMatches(matches, {\n preload: true,\n maxAge:\n loaderOpts.maxAge ??\n router.options.defaultPreloadMaxAge ??\n router.options.defaultLoaderMaxAge ??\n 0,\n gcMaxAge:\n loaderOpts.gcMaxAge ??\n router.options.defaultPreloadGcMaxAge ??\n router.options.defaultLoaderGcMaxAge ??\n 0,\n })\n return matches\n },\n\n matchRoutes: (pathname, opts) => {\n router.cleanMatchCache()\n\n const matches: RouteMatch[] = []\n\n if (!router.routeTree) {\n return matches\n }\n\n const existingMatches = [\n ...router.state.currentMatches,\n ...(router.state.pendingMatches ?? []),\n ]\n\n const recurse = async (routes: Route<any, any>[]): Promise<void> => {\n const parentMatch = last(matches)\n let params = parentMatch?.params ?? {}\n\n const filteredRoutes = router.options.filterRoutes?.(routes) ?? routes\n\n let foundRoutes: Route[] = []\n\n const findMatchInRoutes = (parentRoutes: Route[], routes: Route[]) => {\n routes.some((route) => {\n if (!route.routePath && route.childRoutes?.length) {\n return findMatchInRoutes(\n [...foundRoutes, route],\n route.childRoutes,\n )\n }\n\n const fuzzy = !!(\n route.routePath !== '/' || route.childRoutes?.length\n )\n\n const matchParams = matchPathname(router.basepath, pathname, {\n to: route.fullPath,\n fuzzy,\n caseSensitive:\n route.options.caseSensitive ?? router.options.caseSensitive,\n })\n\n // console.log(\n // router.basepath,\n // route.fullPath,\n // fuzzy,\n // pathname,\n // matchParams,\n // )\n\n if (matchParams) {\n let parsedParams\n\n try {\n parsedParams =\n route.options.parseParams?.(matchParams!) ?? matchParams\n } catch (err) {\n if (opts?.strictParseParams) {\n throw err\n }\n }\n\n params = {\n ...params,\n ...parsedParams,\n }\n }\n\n if (!!matchParams) {\n foundRoutes = [...parentRoutes, route]\n }\n\n return !!foundRoutes.length\n })\n\n return !!foundRoutes.length\n }\n\n findMatchInRoutes([], filteredRoutes)\n\n if (!foundRoutes.length) {\n return\n }\n\n foundRoutes.forEach((foundRoute) => {\n const interpolatedPath = interpolatePath(foundRoute.routePath, params)\n const matchId = interpolatePath(foundRoute.routeId, params, true)\n\n const match =\n existingMatches.find((d) => d.matchId === matchId) ||\n router.matchCache[matchId]?.match ||\n createRouteMatch(router, foundRoute, {\n parentMatch,\n matchId,\n params,\n pathname: joinPaths([router.basepath, interpolatedPath]),\n })\n\n matches.push(match)\n })\n\n const foundRoute = last(foundRoutes)!\n\n if (foundRoute.childRoutes?.length) {\n recurse(foundRoute.childRoutes)\n }\n }\n\n recurse([router.routeTree])\n\n cascadeLoaderData(matches)\n\n return matches\n },\n\n loadMatches: async (resolvedMatches, loaderOpts) => {\n resolvedMatches.forEach(async (match) => {\n // Validate the match (loads search params etc)\n match.__.validate()\n })\n\n // Check each match middleware to see if the route can be accessed\n await Promise.all(\n resolvedMatches.map(async (match) => {\n try {\n await match.options.beforeLoad?.({\n router: router as any,\n match,\n })\n } catch (err) {\n if (!loaderOpts?.preload) {\n match.options.onLoadError?.(err)\n }\n\n throw err\n }\n }),\n )\n\n const matchPromises = resolvedMatches.map(async (match) => {\n const search = match.search as { __data?: any }\n\n if (search.__data?.matchId && search.__data.matchId !== match.matchId) {\n return\n }\n\n match.load(loaderOpts)\n\n if (match.status !== 'success' && match.__.loadPromise) {\n // Wait for the first sign of activity from the match\n await match.__.loadPromise\n }\n })\n\n router.notify()\n\n await Promise.all(matchPromises)\n },\n\n loadMatchData: async (routeMatch) => {\n if (isServer || !router.options.useServerData) {\n return (\n (await routeMatch.options.loader?.({\n // parentLoaderPromise: routeMatch.parentMatch?.__.dataPromise,\n params: routeMatch.params,\n search: routeMatch.routeSearch,\n signal: routeMatch.__.abortController.signal,\n })) ?? {}\n )\n } else {\n const next = router.buildNext({\n to: '.',\n search: (d: any) => ({\n ...(d ?? {}),\n __data: {\n matchId: routeMatch.matchId,\n },\n }),\n })\n\n // Refresh:\n // '/dashboard'\n // '/dashboard/invoices/'\n // '/dashboard/invoices/123'\n\n // New:\n // '/dashboard/invoices/456'\n\n // TODO: batch requests when possible\n\n const res = await fetch(next.href, {\n method: 'GET',\n // signal: routeMatch.__.abortController.signal,\n })\n\n if (res.ok) {\n return res.json()\n }\n\n throw new Error('Failed to fetch match data')\n }\n },\n\n invalidateRoute: (opts: MatchLocation) => {\n const next = router.buildNext(opts)\n const unloadedMatchIds = router\n .matchRoutes(next.pathname)\n .map((d) => d.matchId)\n ;[\n ...router.state.currentMatches,\n ...(router.state.pendingMatches ?? []),\n ].forEach((match) => {\n if (unloadedMatchIds.includes(match.matchId)) {\n match.invalidate()\n }\n })\n },\n\n reload: () =>\n router.__.navigate({\n fromCurrent: true,\n replace: true,\n search: true,\n }),\n\n resolvePath: (from: string, path: string) => {\n return resolvePath(router.basepath!, from, cleanPath(path))\n },\n\n matchRoute: (location, opts) => {\n // const location = router.buildNext(opts)\n\n location = {\n ...location,\n to: location.to\n ? router.resolvePath(location.from ?? '', location.to)\n : undefined,\n }\n\n const next = router.buildNext(location)\n\n if (opts?.pending) {\n if (!router.state.pendingLocation) {\n return false\n }\n\n return !!matchPathname(\n router.basepath,\n router.state.pendingLocation.pathname,\n {\n ...opts,\n to: next.pathname,\n },\n )\n }\n\n return !!matchPathname(\n router.basepath,\n router.state.currentLocation.pathname,\n {\n ...opts,\n to: next.pathname,\n },\n )\n },\n\n navigate: async ({ from, to = '.', search, hash, replace, params }) => {\n // If this link simply reloads the current route,\n // make sure it has a new key so it will trigger a data refresh\n\n // If this `to` is a valid external URL, return\n // null for LinkUtils\n const toString = String(to)\n const fromString = String(from)\n\n let isExternal\n\n try {\n new URL(`${toString}`)\n isExternal = true\n } catch (e) {}\n\n invariant(\n !isExternal,\n 'Attempting to navigate to external url with router.navigate!',\n )\n\n return router.__.navigate({\n from: fromString,\n to: toString,\n search,\n hash,\n replace,\n params,\n })\n },\n\n buildLink: ({\n from,\n to = '.',\n search,\n params,\n hash,\n target,\n replace,\n activeOptions,\n preload,\n preloadMaxAge: userPreloadMaxAge,\n preloadGcMaxAge: userPreloadGcMaxAge,\n preloadDelay: userPreloadDelay,\n disabled,\n }) => {\n // If this link simply reloads the current route,\n // make sure it has a new key so it will trigger a data refresh\n\n // If this `to` is a valid external URL, return\n // null for LinkUtils\n\n try {\n new URL(`${to}`)\n return {\n type: 'external',\n href: to,\n }\n } catch (e) {}\n\n const nextOpts = {\n from,\n to,\n search,\n params,\n hash,\n replace,\n }\n\n const next = router.buildNext(nextOpts)\n\n preload = preload ?? router.options.defaultPreload\n const preloadDelay =\n userPreloadDelay ?? router.options.defaultPreloadDelay ?? 0\n\n // Compare path/hash for matches\n const pathIsEqual =\n router.state.currentLocation.pathname === next.pathname\n const currentPathSplit = router.state.currentLocation.pathname.split('/')\n const nextPathSplit = next.pathname.split('/')\n const pathIsFuzzyEqual = nextPathSplit.every(\n (d, i) => d === currentPathSplit[i],\n )\n const hashIsEqual = router.state.currentLocation.hash === next.hash\n // Combine the matches based on user options\n const pathTest = activeOptions?.exact ? pathIsEqual : pathIsFuzzyEqual\n const hashTest = activeOptions?.includeHash ? hashIsEqual : true\n\n // The final \"active\" test\n const isActive = pathTest && hashTest\n\n // The click handler\n const handleClick = (e: MouseEvent) => {\n if (\n !disabled &&\n !isCtrlEvent(e) &&\n !e.defaultPrevented &&\n (!target || target === '_self') &&\n e.button === 0\n ) {\n e.preventDefault()\n if (pathIsEqual && !search && !hash) {\n router.invalidateRoute(nextOpts)\n }\n\n // All is well? Navigate!)\n router.__.navigate(nextOpts)\n }\n }\n\n // The click handler\n const handleFocus = (e: MouseEvent) => {\n if (preload) {\n router\n .preloadRoute(nextOpts, {\n maxAge: userPreloadMaxAge,\n gcMaxAge: userPreloadGcMaxAge,\n })\n .catch((err) => {\n console.log(err)\n console.warn('Error preloading route! ☝️')\n })\n }\n }\n\n const handleEnter = (e: MouseEvent) => {\n const target = (e.target || {}) as LinkCurrentTargetElement\n\n if (preload) {\n if (target.preloadTimeout) {\n return\n }\n\n target.preloadTimeout = setTimeout(() => {\n target.preloadTimeout = null\n router\n .preloadRoute(nextOpts, {\n maxAge: userPreloadMaxAge,\n gcMaxAge: userPreloadGcMaxAge,\n })\n .catch((err) => {\n console.log(err)\n console.warn('Error preloading route! ☝️')\n })\n }, preloadDelay)\n }\n }\n\n const handleLeave = (e: MouseEvent) => {\n const target = (e.target || {}) as LinkCurrentTargetElement\n\n if (target.preloadTimeout) {\n clearTimeout(target.preloadTimeout)\n target.preloadTimeout = null\n }\n }\n\n return {\n type: 'internal',\n next,\n handleFocus,\n handleClick,\n handleEnter,\n handleLeave,\n isActive,\n disabled,\n }\n },\n buildNext: (opts: BuildNextOptions) => {\n const next = router.__.buildLocation(opts)\n\n const matches = router.matchRoutes(next.pathname)\n\n const __preSearchFilters = matches\n .map((match) => match.options.preSearchFilters ?? [])\n .flat()\n .filter(Boolean)\n\n const __postSearchFilters = matches\n .map((match) => match.options.postSearchFilters ?? [])\n .flat()\n .filter(Boolean)\n\n return router.__.buildLocation({\n ...opts,\n __preSearchFilters,\n __postSearchFilters,\n })\n },\n\n __: {\n buildRouteTree: (rootRouteConfig: RouteConfig) => {\n const recurseRoutes = (\n routeConfigs: RouteConfig[],\n parent?: Route<TAllRouteInfo, any, any>,\n ): Route<TAllRouteInfo, any, any>[] => {\n return routeConfigs.map((routeConfig) => {\n const routeOptions = routeConfig.options\n const route = createRoute(routeConfig, routeOptions, parent, router)\n const existingRoute = (router.routesById as any)[route.routeId]\n\n if (existingRoute) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `Duplicate routes found with id: ${String(route.routeId)}`,\n router.routesById,\n route,\n )\n }\n throw new Error()\n }\n\n ;(router.routesById as any)[route.routeId] = route\n\n const children = routeConfig.children as RouteConfig[]\n\n route.childRoutes = children?.length\n ? recurseRoutes(children, route)\n : undefined\n\n return route\n })\n }\n\n const routes = recurseRoutes([rootRouteConfig])\n\n return routes[0]!\n },\n\n parseLocation: (\n location: History['location'],\n previousLocation?: Location,\n ): Location => {\n const parsedSearch = router.options.parseSearch(location.search)\n\n return {\n pathname: location.pathname,\n searchStr: location.search,\n search: replaceEqualDeep(previousLocation?.search, parsedSearch),\n hash: location.hash.split('#').reverse()[0] ?? '',\n href: `${location.pathname}${location.search}${location.hash}`,\n state: location.state as LocationState,\n key: location.key,\n }\n },\n\n navigate: (location: BuildNextOptions & { replace?: boolean }) => {\n const next = router.buildNext(location)\n return router.__.commitLocation(next, location.replace)\n },\n\n buildLocation: (dest: BuildNextOptions = {}): Location => {\n const fromPathname = dest.fromCurrent\n ? router.state.latestLocation.pathname\n : dest.from ?? router.state.latestLocation.pathname\n\n let pathname = resolvePath(\n router.basepath ?? '/',\n fromPathname,\n `${dest.to ?? '.'}`,\n )\n\n const fromMatches = router.matchRoutes(\n router.state.latestLocation.pathname,\n {\n strictParseParams: true,\n },\n )\n\n const toMatches = router.matchRoutes(pathname)\n\n const prevParams = { ...last(fromMatches)?.params }\n\n let nextParams =\n (dest.params ?? true) === true\n ? prevParams\n : functionalUpdate(dest.params!, prevParams)\n\n if (nextParams) {\n toMatches\n .map((d) => d.options.stringifyParams)\n .filter(Boolean)\n .forEach((fn) => {\n Object.assign({}, nextParams!, fn!(nextParams!))\n })\n }\n\n pathname = interpolatePath(pathname, nextParams ?? {})\n\n // Pre filters first\n const preFilteredSearch = dest.__preSearchFilters?.length\n ? dest.__preSearchFilters.reduce(\n (prev, next) => next(prev),\n router.state.latestLocation.search,\n )\n : router.state.latestLocation.search\n\n // Then the link/navigate function\n const destSearch =\n dest.search === true\n ? preFilteredSearch // Preserve resolvedFrom true\n : dest.search\n ? functionalUpdate(dest.search, preFilteredSearch) ?? {} // Updater\n : dest.__preSearchFilters?.length\n ? preFilteredSearch // Preserve resolvedFrom filters\n : {}\n\n // Then post filters\n const postFilteredSearch = dest.__postSearchFilters?.length\n ? dest.__postSearchFilters.reduce(\n (prev, next) => next(prev),\n destSearch,\n )\n : destSearch\n\n const search = replaceEqualDeep(\n router.state.latestLocation.search,\n postFilteredSearch,\n )\n\n const searchStr = router.options.stringifySearch(search)\n let hash =\n dest.hash === true\n ? router.state.latestLocation.hash\n : functionalUpdate(dest.hash!, router.state.latestLocation.hash)\n hash = hash ? `#${hash}` : ''\n\n return {\n pathname,\n search,\n searchStr,\n state: router.state.latestLocation.state,\n hash,\n href: `${pathname}${searchStr}${hash}`,\n key: dest.key,\n }\n },\n\n commitLocation: (next: Location, replace?: boolean): Promise<void> => {\n const id = '' + Date.now() + Math.random()\n\n if (router.navigateTimeout) clearTimeout(router.navigateTimeout)\n\n let nextAction: 'push' | 'replace' = 'replace'\n\n if (!replace) {\n nextAction = 'push'\n }\n\n const isSameUrl =\n router.__.parseLocation(history.location).href === next.href\n\n if (isSameUrl && !next.key) {\n nextAction = 'replace'\n }\n\n if (nextAction === 'replace') {\n history.replace(\n {\n pathname: next.pathname,\n hash: next.hash,\n search: next.searchStr,\n },\n {\n id,\n ...next.state,\n },\n )\n } else {\n history.push(\n {\n pathname: next.pathname,\n hash: next.hash,\n search: next.searchStr,\n },\n {\n id,\n },\n )\n }\n\n router.navigationPromise = new Promise((resolve) => {\n const previousNavigationResolve = router.resolveNavigation\n\n router.resolveNavigation = () => {\n previousNavigationResolve()\n resolve()\n delete router.navigationPromise\n }\n })\n\n return router.navigationPromise\n },\n },\n }\n\n router.update(userOptions)\n\n // Allow frameworks to hook into the router creation\n router.options.createRouter?.(router)\n\n return router\n}\n\nfunction isCtrlEvent(e: MouseEvent) {\n return !!(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey)\n}\n\nfunction cascadeLoaderData(matches: RouteMatch<any, any>[]) {\n matches.forEach((match, index) => {\n const parent = matches[index - 1]\n\n if (parent) {\n match.loaderData = replaceEqualDeep(match.loaderData, {\n ...parent.loaderData,\n ...match.routeLoaderData,\n })\n }\n })\n}\n"],"names":["isServer","window","document","createElement","createDefaultHistory","createMemoryHistory","createBrowserHistory","getInitialRouterState","status","latestLocation","currentLocation","currentMatches","actions","loaders","lastUpdated","Date","now","isFetching","isPreloading","createRouter","userOptions","history","originalOptions","_extends","defaultLoaderGcMaxAge","defaultLoaderMaxAge","defaultPreloadMaxAge","defaultPreloadDelay","context","undefined","stringifySearch","defaultStringifySearch","parseSearch","defaultParseSearch","router","types","options","listeners","basepath","routeTree","routesById","resolveNavigation","matchCache","state","reset","notify","startedLoadingAt","subscribe","listener","push","filter","x","getRoute","id","some","d","Object","values","match","find","dd","matchId","cascadeLoaderData","forEach","dehydrate","pick","map","hydrate","dehydratedState","matchRoutes","pathname","strictParseParams","index","dehydratedMatch","invariant","assign","__","validate","mount","length","load","unsub","listen","event","parseLocation","location","addEventListener","onFocus","removeEventListener","update","opts","newHistory","routeConfig","trimPath","buildRouteTree","cancelMatches","pendingMatches","cancel","next","Math","random","matches","pendingLocation","loadMatches","err","console","log","navigationPromise","previousMatches","exiting","staying","entering","onExit","params","search","routeSearch","error","gc","max","loaderGcMaxAge","loaderMaxAge","Infinity","Number","MAX_SAFE_INTEGER","onTransition","onLoaded","action","current","submissions","cleanMatchCache","keys","entry","loadRoute","navigateOpts","buildNext","preloadRoute","loaderOpts","preload","maxAge","gcMaxAge","defaultPreloadGcMaxAge","existingMatches","recurse","routes","parentMatch","last","filteredRoutes","filterRoutes","foundRoutes","findMatchInRoutes","parentRoutes","route","routePath","childRoutes","fuzzy","matchParams","matchPathname","to","fullPath","caseSensitive","parsedParams","parseParams","foundRoute","interpolatedPath","interpolatePath","routeId","createRouteMatch","joinPaths","resolvedMatches","Promise","all","beforeLoad","onLoadError","matchPromises","__data","loadPromise","loadMatchData","routeMatch","useServerData","loader","signal","abortController","res","fetch","href","method","ok","json","Error","invalidateRoute","unloadedMatchIds","includes","invalidate","reload","navigate","fromCurrent","replace","resolvePath","from","path","cleanPath","matchRoute","pending","hash","toString","String","fromString","isExternal","URL","e","buildLink","target","activeOptions","preloadMaxAge","userPreloadMaxAge","preloadGcMaxAge","userPreloadGcMaxAge","preloadDelay","userPreloadDelay","disabled","type","nextOpts","defaultPreload","pathIsEqual","currentPathSplit","split","nextPathSplit","pathIsFuzzyEqual","every","i","hashIsEqual","pathTest","exact","hashTest","includeHash","isActive","handleClick","isCtrlEvent","defaultPrevented","button","preventDefault","handleFocus","catch","warn","handleEnter","preloadTimeout","setTimeout","handleLeave","clearTimeout","buildLocation","__preSearchFilters","preSearchFilters","flat","Boolean","__postSearchFilters","postSearchFilters","rootRouteConfig","recurseRoutes","routeConfigs","parent","routeOptions","createRoute","existingRoute","process","env","NODE_ENV","children","previousLocation","parsedSearch","searchStr","replaceEqualDeep","reverse","key","commitLocation","dest","fromPathname","fromMatches","toMatches","prevParams","nextParams","functionalUpdate","stringifyParams","fn","preFilteredSearch","reduce","prev","destSearch","postFilteredSearch","navigateTimeout","nextAction","isSameUrl","resolve","previousNavigationResolve","metaKey","altKey","ctrlKey","shiftKey","loaderData","routeLoaderData"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"router.js","sources":["../../src/router.ts"],"sourcesContent":["import {\n BrowserHistory,\n createBrowserHistory,\n createMemoryHistory,\n HashHistory,\n History,\n MemoryHistory,\n} from 'history'\nimport invariant from 'tiny-invariant'\nimport { GetFrameworkGeneric } from './frameworks'\n\nimport {\n LinkInfo,\n LinkOptions,\n NavigateOptions,\n ToOptions,\n ValidFromPath,\n ResolveRelativePath,\n} from './link'\nimport {\n cleanPath,\n interpolatePath,\n joinPaths,\n matchPathname,\n resolvePath,\n trimPath,\n} from './path'\nimport { AnyRoute, createRoute, Route } from './route'\nimport {\n AnyLoaderData,\n AnyPathParams,\n AnyRouteConfig,\n AnySearchSchema,\n LoaderContext,\n RouteConfig,\n SearchFilter,\n} from './routeConfig'\nimport {\n AllRouteInfo,\n AnyAllRouteInfo,\n AnyRouteInfo,\n RouteInfo,\n RoutesById,\n} from './routeInfo'\nimport { createRouteMatch, RouteMatch, RouteMatchStore } from './routeMatch'\nimport { defaultParseSearch, defaultStringifySearch } from './searchParams'\nimport { createStore, batch, SetStoreFunction } from '@solidjs/reactivity'\nimport {\n functionalUpdate,\n last,\n NoInfer,\n pick,\n PickAsRequired,\n PickRequired,\n Timeout,\n Updater,\n} from './utils'\nimport { sharedClone } from './sharedClone'\n\nexport interface RegisterRouter {\n // router: Router\n}\n\nexport type RegisteredRouter = RegisterRouter extends {\n router: Router<infer TRouteConfig, infer TAllRouteInfo, infer TRouterContext>\n}\n ? Router<TRouteConfig, TAllRouteInfo, TRouterContext>\n : Router\n\nexport type RegisteredAllRouteInfo = RegisterRouter extends {\n router: Router<infer TRouteConfig, infer TAllRouteInfo, infer TRouterContext>\n}\n ? TAllRouteInfo\n : AnyAllRouteInfo\n\nexport interface LocationState {}\n\nexport interface Location<\n TSearchObj extends AnySearchSchema = {},\n TState extends LocationState = LocationState,\n> {\n href: string\n pathname: string\n search: TSearchObj\n searchStr: string\n state: TState\n hash: string\n key?: string\n}\n\nexport interface FromLocation {\n pathname: string\n search?: unknown\n key?: string\n hash?: string\n}\n\nexport type SearchSerializer = (searchObj: Record<string, any>) => string\nexport type SearchParser = (searchStr: string) => Record<string, any>\nexport type FilterRoutesFn = <TRoute extends Route<any, RouteInfo>>(\n routeConfigs: TRoute[],\n) => TRoute[]\n\nexport interface RouterOptions<\n TRouteConfig extends AnyRouteConfig,\n TRouterContext,\n> {\n history?: BrowserHistory | MemoryHistory | HashHistory\n stringifySearch?: SearchSerializer\n parseSearch?: SearchParser\n filterRoutes?: FilterRoutesFn\n defaultPreload?: false | 'intent'\n defaultPreloadMaxAge?: number\n defaultPreloadGcMaxAge?: number\n defaultPreloadDelay?: number\n defaultComponent?: GetFrameworkGeneric<'Component'>\n defaultErrorComponent?: GetFrameworkGeneric<'ErrorComponent'>\n defaultPendingComponent?: GetFrameworkGeneric<'Component'>\n defaultLoaderMaxAge?: number\n defaultLoaderGcMaxAge?: number\n caseSensitive?: boolean\n routeConfig?: TRouteConfig\n basepath?: string\n useServerData?: boolean\n createRouter?: (router: Router<any, any, any>) => void\n createRoute?: (opts: {\n route: AnyRoute\n router: Router<any, any, any>\n }) => void\n context?: TRouterContext\n loadComponent?: (\n component: GetFrameworkGeneric<'Component'>,\n ) => Promise<GetFrameworkGeneric<'Component'>>\n}\n\nexport interface Action<\n TPayload = unknown,\n TResponse = unknown,\n // TError = unknown,\n> {\n submit: (\n submission?: TPayload,\n actionOpts?: { invalidate?: boolean; multi?: boolean },\n ) => Promise<TResponse>\n current?: ActionState<TPayload, TResponse>\n latest?: ActionState<TPayload, TResponse>\n submissions: ActionState<TPayload, TResponse>[]\n}\n\nexport interface ActionState<\n TPayload = unknown,\n TResponse = unknown,\n // TError = unknown,\n> {\n submittedAt: number\n status: 'idle' | 'pending' | 'success' | 'error'\n submission: TPayload\n isMulti: boolean\n data?: TResponse\n error?: unknown\n}\n\nexport interface Loader<\n TFullSearchSchema extends AnySearchSchema = {},\n TAllParams extends AnyPathParams = {},\n TRouteLoaderData = AnyLoaderData,\n> {\n fetch: keyof PickRequired<TFullSearchSchema> extends never\n ? keyof TAllParams extends never\n ? (loaderContext: { signal?: AbortSignal }) => Promise<TRouteLoaderData>\n : (loaderContext: {\n params: TAllParams\n search?: TFullSearchSchema\n signal?: AbortSignal\n }) => Promise<TRouteLoaderData>\n : keyof TAllParams extends never\n ? (loaderContext: {\n search: TFullSearchSchema\n params: TAllParams\n signal?: AbortSignal\n }) => Promise<TRouteLoaderData>\n : (loaderContext: {\n search: TFullSearchSchema\n signal?: AbortSignal\n }) => Promise<TRouteLoaderData>\n current?: LoaderState<TFullSearchSchema, TAllParams>\n latest?: LoaderState<TFullSearchSchema, TAllParams>\n pending: LoaderState<TFullSearchSchema, TAllParams>[]\n}\n\nexport interface LoaderState<\n TFullSearchSchema extends AnySearchSchema = {},\n TAllParams extends AnyPathParams = {},\n> {\n loadedAt: number\n loaderContext: LoaderContext<TFullSearchSchema, TAllParams>\n}\n\nexport interface RouterStore<\n TSearchObj extends AnySearchSchema = {},\n TState extends LocationState = LocationState,\n> {\n status: 'idle' | 'loading'\n latestLocation: Location<TSearchObj, TState>\n currentMatches: RouteMatch[]\n currentLocation: Location<TSearchObj, TState>\n pendingMatches?: RouteMatch[]\n pendingLocation?: Location<TSearchObj, TState>\n lastUpdated: number\n actions: Record<string, Action>\n loaders: Record<string, Loader>\n isFetching: boolean\n isPreloading: boolean\n matchCache: Record<string, MatchCacheEntry>\n}\n\ntype Listener = (router: Router<any, any, any>) => void\n\nexport type ListenerFn = () => void\n\nexport interface BuildNextOptions {\n to?: string | number | null\n params?: true | Updater<unknown>\n search?: true | Updater<unknown>\n hash?: true | Updater<string>\n state?: LocationState\n key?: string\n from?: string\n fromCurrent?: boolean\n __preSearchFilters?: SearchFilter<any>[]\n __postSearchFilters?: SearchFilter<any>[]\n}\n\nexport type MatchCacheEntry = {\n gc: number\n match: RouteMatch\n}\n\nexport interface MatchLocation {\n to?: string | number | null\n fuzzy?: boolean\n caseSensitive?: boolean\n from?: string\n fromCurrent?: boolean\n}\n\nexport interface MatchRouteOptions {\n pending?: boolean\n caseSensitive?: boolean\n fuzzy?: boolean\n}\n\ntype LinkCurrentTargetElement = {\n preloadTimeout?: null | ReturnType<typeof setTimeout>\n}\n\nexport interface DehydratedRouterState\n extends Pick<\n RouterStore,\n 'status' | 'latestLocation' | 'currentLocation' | 'lastUpdated'\n > {\n currentMatches: DehydratedRouteMatch[]\n}\n\nexport interface DehydratedRouter<TRouterContext = unknown> {\n // location: Router['__location']\n store: DehydratedRouterState\n context: TRouterContext\n}\n\nexport type MatchCache = Record<string, MatchCacheEntry>\n\ninterface DehydratedRouteMatch {\n matchId: string\n store: Pick<\n RouteMatchStore<any, any>,\n 'status' | 'routeLoaderData' | 'isInvalid' | 'invalidAt'\n >\n}\n\nexport interface RouterContext {}\n\nexport interface Router<\n TRouteConfig extends AnyRouteConfig = RouteConfig,\n TAllRouteInfo extends AnyAllRouteInfo = AllRouteInfo<TRouteConfig>,\n TRouterContext = unknown,\n> {\n types: {\n // Super secret internal stuff\n RouteConfig: TRouteConfig\n AllRouteInfo: TAllRouteInfo\n }\n\n // Public API\n history: BrowserHistory | MemoryHistory | HashHistory\n options: PickAsRequired<\n RouterOptions<TRouteConfig, TRouterContext>,\n 'stringifySearch' | 'parseSearch' | 'context'\n >\n store: RouterStore<TAllRouteInfo['fullSearchSchema']>\n setStore: SetStoreFunction<RouterStore<TAllRouteInfo['fullSearchSchema']>>\n basepath: string\n // __location: Location<TAllRouteInfo['fullSearchSchema']>\n routeTree: Route<TAllRouteInfo, RouteInfo>\n routesById: RoutesById<TAllRouteInfo>\n reset: () => void\n mount: () => () => void\n update: <\n TRouteConfig extends RouteConfig = RouteConfig,\n TAllRouteInfo extends AnyAllRouteInfo = AllRouteInfo<TRouteConfig>,\n TRouterContext = unknown,\n >(\n opts?: RouterOptions<TRouteConfig, TRouterContext>,\n ) => Router<TRouteConfig, TAllRouteInfo, TRouterContext>\n\n buildNext: (opts: BuildNextOptions) => Location\n cancelMatches: () => void\n load: (next?: Location) => Promise<void>\n cleanMatchCache: () => void\n getRoute: <TId extends keyof TAllRouteInfo['routeInfoById']>(\n id: TId,\n ) => Route<TAllRouteInfo, TAllRouteInfo['routeInfoById'][TId]>\n loadRoute: (navigateOpts: BuildNextOptions) => Promise<RouteMatch[]>\n preloadRoute: (\n navigateOpts: BuildNextOptions,\n loaderOpts: { maxAge?: number; gcMaxAge?: number },\n ) => Promise<RouteMatch[]>\n matchRoutes: (\n pathname: string,\n opts?: { strictParseParams?: boolean },\n ) => RouteMatch[]\n loadMatches: (\n resolvedMatches: RouteMatch[],\n loaderOpts?:\n | { preload: true; maxAge: number; gcMaxAge: number }\n | { preload?: false; maxAge?: never; gcMaxAge?: never },\n ) => Promise<void>\n loadMatchData: (\n routeMatch: RouteMatch<any, any>,\n ) => Promise<Record<string, unknown>>\n invalidateRoute: (opts: MatchLocation) => void\n reload: () => Promise<void>\n resolvePath: (from: string, path: string) => string\n navigate: <\n TFrom extends ValidFromPath<TAllRouteInfo> = '/',\n TTo extends string = '.',\n >(\n opts: NavigateOptions<TAllRouteInfo, TFrom, TTo>,\n ) => Promise<void>\n matchRoute: <\n TFrom extends ValidFromPath<TAllRouteInfo> = '/',\n TTo extends string = '.',\n >(\n matchLocation: ToOptions<TAllRouteInfo, TFrom, TTo>,\n opts?: MatchRouteOptions,\n ) =>\n | false\n | TAllRouteInfo['routeInfoById'][ResolveRelativePath<\n TFrom,\n NoInfer<TTo>\n >]['allParams']\n buildLink: <\n TFrom extends ValidFromPath<TAllRouteInfo> = '/',\n TTo extends string = '.',\n >(\n opts: LinkOptions<TAllRouteInfo, TFrom, TTo>,\n ) => LinkInfo\n dehydrate: () => DehydratedRouter<TRouterContext>\n hydrate: (dehydratedRouter: DehydratedRouter<TRouterContext>) => void\n}\n\n// Detect if we're in the DOM\nconst isServer =\n typeof window === 'undefined' || !window.document?.createElement\n\n// This is the default history object if none is defined\nconst createDefaultHistory = () =>\n isServer ? createMemoryHistory() : createBrowserHistory()\n\nfunction getInitialRouterState(): RouterStore {\n return {\n status: 'idle',\n latestLocation: null!,\n currentLocation: null!,\n currentMatches: [],\n actions: {},\n loaders: {},\n lastUpdated: Date.now(),\n matchCache: {},\n get isFetching() {\n return (\n this.status === 'loading' ||\n this.currentMatches.some((d) => d.store.isFetching)\n )\n },\n get isPreloading() {\n return Object.values(this.matchCache).some(\n (d) =>\n d.match.store.isFetching &&\n !this.currentMatches.find((dd) => dd.matchId === d.match.matchId),\n )\n },\n }\n}\n\nexport function createRouter<\n TRouteConfig extends AnyRouteConfig = RouteConfig,\n TAllRouteInfo extends AnyAllRouteInfo = AllRouteInfo<TRouteConfig>,\n TRouterContext = unknown,\n>(\n userOptions?: RouterOptions<TRouteConfig, TRouterContext>,\n): Router<TRouteConfig, TAllRouteInfo, TRouterContext> {\n const originalOptions = {\n defaultLoaderGcMaxAge: 5 * 60 * 1000,\n defaultLoaderMaxAge: 0,\n defaultPreloadMaxAge: 2000,\n defaultPreloadDelay: 50,\n context: undefined!,\n ...userOptions,\n stringifySearch: userOptions?.stringifySearch ?? defaultStringifySearch,\n parseSearch: userOptions?.parseSearch ?? defaultParseSearch,\n }\n\n const [store, setStore] = createStore<RouterStore>(getInitialRouterState())\n\n let navigateTimeout: undefined | Timeout\n let nextAction: undefined | 'push' | 'replace'\n let navigationPromise: undefined | Promise<void>\n\n let startedLoadingAt = Date.now()\n let resolveNavigation = () => {}\n\n function onFocus() {\n router.load()\n }\n\n function buildRouteTree(rootRouteConfig: RouteConfig) {\n const recurseRoutes = (\n routeConfigs: RouteConfig[],\n parent?: Route<TAllRouteInfo, any, any>,\n ): Route<TAllRouteInfo, any, any>[] => {\n return routeConfigs.map((routeConfig, i) => {\n const routeOptions = routeConfig.options\n const route = createRoute(routeConfig, routeOptions, i, parent, router)\n const existingRoute = (router.routesById as any)[route.routeId]\n\n if (existingRoute) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `Duplicate routes found with id: ${String(route.routeId)}`,\n router.routesById,\n route,\n )\n }\n throw new Error()\n }\n\n ;(router.routesById as any)[route.routeId] = route\n\n const children = routeConfig.children as RouteConfig[]\n\n route.childRoutes = children?.length\n ? recurseRoutes(children, route)\n : undefined\n\n return route\n })\n }\n\n const routes = recurseRoutes([rootRouteConfig])\n\n return routes[0]!\n }\n\n function parseLocation(\n location: History['location'],\n previousLocation?: Location,\n ): Location {\n const parsedSearch = router.options.parseSearch(location.search)\n\n return {\n pathname: location.pathname,\n searchStr: location.search,\n search: sharedClone(previousLocation?.search, parsedSearch),\n hash: location.hash.split('#').reverse()[0] ?? '',\n href: `${location.pathname}${location.search}${location.hash}`,\n state: location.state as LocationState,\n key: location.key,\n }\n }\n\n function navigate(location: BuildNextOptions & { replace?: boolean }) {\n const next = router.buildNext(location)\n return commitLocation(next, location.replace)\n }\n\n function buildLocation(dest: BuildNextOptions = {}): Location {\n const fromPathname = dest.fromCurrent\n ? store.latestLocation.pathname\n : dest.from ?? store.latestLocation.pathname\n\n let pathname = resolvePath(\n router.basepath ?? '/',\n fromPathname,\n `${dest.to ?? '.'}`,\n )\n\n const fromMatches = router.matchRoutes(store.latestLocation.pathname, {\n strictParseParams: true,\n })\n\n const toMatches = router.matchRoutes(pathname)\n\n const prevParams = { ...last(fromMatches)?.params }\n\n let nextParams =\n (dest.params ?? true) === true\n ? prevParams\n : functionalUpdate(dest.params!, prevParams)\n\n if (nextParams) {\n toMatches\n .map((d) => d.options.stringifyParams)\n .filter(Boolean)\n .forEach((fn) => {\n Object.assign({}, nextParams!, fn!(nextParams!))\n })\n }\n\n pathname = interpolatePath(pathname, nextParams ?? {})\n\n // Pre filters first\n const preFilteredSearch = dest.__preSearchFilters?.length\n ? dest.__preSearchFilters.reduce(\n (prev, next) => next(prev),\n store.latestLocation.search,\n )\n : store.latestLocation.search\n\n // Then the link/navigate function\n const destSearch =\n dest.search === true\n ? preFilteredSearch // Preserve resolvedFrom true\n : dest.search\n ? functionalUpdate(dest.search, preFilteredSearch) ?? {} // Updater\n : dest.__preSearchFilters?.length\n ? preFilteredSearch // Preserve resolvedFrom filters\n : {}\n\n // Then post filters\n const postFilteredSearch = dest.__postSearchFilters?.length\n ? dest.__postSearchFilters.reduce((prev, next) => next(prev), destSearch)\n : destSearch\n\n const search = sharedClone(store.latestLocation.search, postFilteredSearch)\n\n const searchStr = router.options.stringifySearch(search)\n let hash =\n dest.hash === true\n ? store.latestLocation.hash\n : functionalUpdate(dest.hash!, store.latestLocation.hash)\n hash = hash ? `#${hash}` : ''\n\n return {\n pathname,\n search,\n searchStr,\n state: store.latestLocation.state,\n hash,\n href: `${pathname}${searchStr}${hash}`,\n key: dest.key,\n }\n }\n\n function commitLocation(next: Location, replace?: boolean): Promise<void> {\n const id = '' + Date.now() + Math.random()\n\n if (navigateTimeout) clearTimeout(navigateTimeout)\n\n let nextAction: 'push' | 'replace' = 'replace'\n\n if (!replace) {\n nextAction = 'push'\n }\n\n const isSameUrl = parseLocation(router.history.location).href === next.href\n\n if (isSameUrl && !next.key) {\n nextAction = 'replace'\n }\n\n router.history[nextAction](\n {\n pathname: next.pathname,\n hash: next.hash,\n search: next.searchStr,\n },\n {\n id,\n ...next.state,\n },\n )\n\n return (navigationPromise = new Promise((resolve) => {\n const previousNavigationResolve = resolveNavigation\n\n resolveNavigation = () => {\n previousNavigationResolve()\n resolve()\n }\n }))\n }\n\n const router: Router<TRouteConfig, TAllRouteInfo, TRouterContext> = {\n types: undefined!,\n\n // public api\n history: userOptions?.history || createDefaultHistory(),\n store,\n setStore,\n options: originalOptions,\n basepath: '',\n routeTree: undefined!,\n routesById: {} as any,\n\n reset: () => {\n setStore((s) => Object.assign(s, getInitialRouterState()))\n },\n\n getRoute: (id) => {\n return router.routesById[id]\n },\n\n dehydrate: () => {\n return {\n store: {\n ...pick(store, [\n 'latestLocation',\n 'currentLocation',\n 'status',\n 'lastUpdated',\n ]),\n currentMatches: store.currentMatches.map((match) => ({\n matchId: match.matchId,\n store: pick(match.store, [\n 'status',\n 'routeLoaderData',\n 'isInvalid',\n 'invalidAt',\n ]),\n })),\n },\n context: router.options.context as TRouterContext,\n }\n },\n\n hydrate: (dehydratedRouter) => {\n setStore((s) => {\n // Update the context TODO: make this part of state?\n router.options.context = dehydratedRouter.context\n\n // Match the routes\n const currentMatches = router.matchRoutes(\n dehydratedRouter.store.latestLocation.pathname,\n {\n strictParseParams: true,\n },\n )\n\n currentMatches.forEach((match, index) => {\n const dehydratedMatch = dehydratedRouter.store.currentMatches[index]\n invariant(\n dehydratedMatch && dehydratedMatch.matchId === match.matchId,\n 'Oh no! There was a hydration mismatch when attempting to restore the state of the router! 😬',\n )\n Object.assign(match, dehydratedMatch)\n })\n\n currentMatches.forEach((match) => match.__.validate())\n\n Object.assign(s, { ...dehydratedRouter.store, currentMatches })\n })\n },\n\n mount: () => {\n // Mount only does anything on the client\n if (!isServer) {\n // If the router matches are empty, load the matches\n if (!store.currentMatches.length) {\n router.load()\n }\n\n const unsub = router.history.listen((event) => {\n router.load(parseLocation(event.location, store.latestLocation))\n })\n\n // addEventListener does not exist in React Native, but window does\n // In the future, we might need to invert control here for more adapters\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (window.addEventListener) {\n // Listen to visibilitychange and focus\n window.addEventListener('visibilitychange', onFocus, false)\n window.addEventListener('focus', onFocus, false)\n }\n\n return () => {\n unsub()\n if (window.removeEventListener) {\n // Be sure to unsubscribe if a new handler is set\n window.removeEventListener('visibilitychange', onFocus)\n window.removeEventListener('focus', onFocus)\n }\n }\n }\n\n return () => {}\n },\n\n update: (opts) => {\n const newHistory = opts?.history !== router.history\n if (!store.latestLocation || newHistory) {\n if (opts?.history) {\n router.history = opts.history\n }\n setStore((s) => {\n s.latestLocation = parseLocation(router.history.location)\n s.currentLocation = s.latestLocation\n })\n }\n\n Object.assign(router.options, opts)\n\n const { basepath, routeConfig } = router.options\n\n router.basepath = `/${trimPath(basepath ?? '') ?? ''}`\n\n if (routeConfig) {\n router.routesById = {} as any\n router.routeTree = buildRouteTree(routeConfig)\n }\n\n return router as any\n },\n\n cancelMatches: () => {\n ;[...store.currentMatches, ...(store.pendingMatches || [])].forEach(\n (match) => {\n match.cancel()\n },\n )\n },\n\n load: async (next?: Location) => {\n let now = Date.now()\n const startedAt = now\n startedLoadingAt = startedAt\n\n // Cancel any pending matches\n router.cancelMatches()\n\n let matches!: RouteMatch<any, any>[]\n\n batch(() => {\n if (next) {\n // Ingest the new location\n setStore((s) => {\n s.latestLocation = next\n })\n }\n\n // Match the routes\n matches = router.matchRoutes(store.latestLocation.pathname, {\n strictParseParams: true,\n })\n\n console.log('set loading', matches)\n setStore((s) => {\n s.status = 'loading'\n s.pendingMatches = matches\n s.pendingLocation = store.latestLocation\n })\n })\n\n // Load the matches\n try {\n await router.loadMatches(matches)\n } catch (err: any) {\n console.log(err)\n invariant(\n false,\n 'Matches failed to load due to error above ☝️. Navigation cancelled!',\n )\n }\n\n if (startedLoadingAt !== startedAt) {\n // Ignore side-effects of outdated side-effects\n return navigationPromise\n }\n\n const previousMatches = store.currentMatches\n\n const exiting: RouteMatch[] = [],\n staying: RouteMatch[] = []\n\n previousMatches.forEach((d) => {\n if (matches.find((dd) => dd.matchId === d.matchId)) {\n staying.push(d)\n } else {\n exiting.push(d)\n }\n })\n\n const entering = matches.filter((d) => {\n return !previousMatches.find((dd) => dd.matchId === d.matchId)\n })\n\n now = Date.now()\n\n exiting.forEach((d) => {\n d.__.onExit?.({\n params: d.params,\n search: d.store.routeSearch,\n })\n\n // Clear idle error states when match leaves\n if (d.store.status === 'error' && !d.store.isFetching) {\n d.store.status = 'idle'\n d.store.error = undefined\n }\n\n const gc = Math.max(\n d.options.loaderGcMaxAge ?? router.options.defaultLoaderGcMaxAge ?? 0,\n d.options.loaderMaxAge ?? router.options.defaultLoaderMaxAge ?? 0,\n )\n\n if (gc > 0) {\n store.matchCache[d.matchId] = {\n gc: gc == Infinity ? Number.MAX_SAFE_INTEGER : now + gc,\n match: d,\n }\n }\n })\n\n staying.forEach((d) => {\n d.options.onTransition?.({\n params: d.params,\n search: d.store.routeSearch,\n })\n })\n\n entering.forEach((d) => {\n d.__.onExit = d.options.onLoaded?.({\n params: d.params,\n search: d.store.search,\n })\n delete store.matchCache[d.matchId]\n })\n\n if (startedLoadingAt !== startedAt) {\n // Ignore side-effects of match loading\n return\n }\n\n matches.forEach((match) => {\n // Clear actions\n if (match.action) {\n // TODO: Check reactivity here\n match.action.current = undefined\n match.action.submissions = []\n }\n })\n\n setStore((s) => {\n console.log('set', matches)\n Object.assign(s, {\n status: 'idle',\n currentLocation: store.latestLocation,\n currentMatches: matches,\n pendingLocation: undefined,\n pendingMatches: undefined,\n })\n })\n\n resolveNavigation()\n },\n\n cleanMatchCache: () => {\n const now = Date.now()\n\n setStore((s) => {\n Object.keys(s.matchCache).forEach((matchId) => {\n const entry = s.matchCache[matchId]!\n\n // Don't remove loading matches\n if (entry.match.store.status === 'loading') {\n return\n }\n\n // Do not remove successful matches that are still valid\n if (entry.gc > 0 && entry.gc > now) {\n return\n }\n\n // Everything else gets removed\n delete s.matchCache[matchId]\n })\n })\n },\n\n loadRoute: async (navigateOpts = store.latestLocation) => {\n const next = router.buildNext(navigateOpts)\n const matches = router.matchRoutes(next.pathname, {\n strictParseParams: true,\n })\n await router.loadMatches(matches)\n return matches\n },\n\n preloadRoute: async (navigateOpts = store.latestLocation, loaderOpts) => {\n const next = router.buildNext(navigateOpts)\n const matches = router.matchRoutes(next.pathname, {\n strictParseParams: true,\n })\n\n await router.loadMatches(matches, {\n preload: true,\n maxAge:\n loaderOpts.maxAge ??\n router.options.defaultPreloadMaxAge ??\n router.options.defaultLoaderMaxAge ??\n 0,\n gcMaxAge:\n loaderOpts.gcMaxAge ??\n router.options.defaultPreloadGcMaxAge ??\n router.options.defaultLoaderGcMaxAge ??\n 0,\n })\n return matches\n },\n\n matchRoutes: (pathname, opts) => {\n router.cleanMatchCache()\n\n const matches: RouteMatch[] = []\n\n if (!router.routeTree) {\n return matches\n }\n\n const existingMatches = [\n ...store.currentMatches,\n ...(store.pendingMatches ?? []),\n ]\n\n const recurse = async (routes: Route<any, any>[]): Promise<void> => {\n const parentMatch = last(matches)\n let params = parentMatch?.params ?? {}\n\n const filteredRoutes = router.options.filterRoutes?.(routes) ?? routes\n\n let foundRoutes: Route[] = []\n\n const findMatchInRoutes = (parentRoutes: Route[], routes: Route[]) => {\n routes.some((route) => {\n if (!route.routePath && route.childRoutes?.length) {\n return findMatchInRoutes(\n [...foundRoutes, route],\n route.childRoutes,\n )\n }\n\n const fuzzy = !!(\n route.routePath !== '/' || route.childRoutes?.length\n )\n\n const matchParams = matchPathname(router.basepath, pathname, {\n to: route.fullPath,\n fuzzy,\n caseSensitive:\n route.options.caseSensitive ?? router.options.caseSensitive,\n })\n\n if (matchParams) {\n let parsedParams\n\n try {\n parsedParams =\n route.options.parseParams?.(matchParams!) ?? matchParams\n } catch (err) {\n if (opts?.strictParseParams) {\n throw err\n }\n }\n\n params = {\n ...params,\n ...parsedParams,\n }\n }\n\n if (!!matchParams) {\n foundRoutes = [...parentRoutes, route]\n }\n\n return !!foundRoutes.length\n })\n\n return !!foundRoutes.length\n }\n\n findMatchInRoutes([], filteredRoutes)\n\n if (!foundRoutes.length) {\n return\n }\n\n foundRoutes.forEach((foundRoute) => {\n const interpolatedPath = interpolatePath(foundRoute.routePath, params)\n const matchId = interpolatePath(foundRoute.routeId, params, true)\n\n const match =\n existingMatches.find((d) => d.matchId === matchId) ||\n store.matchCache[matchId]?.match ||\n createRouteMatch(router, foundRoute, {\n parentMatch,\n matchId,\n params,\n pathname: joinPaths([router.basepath, interpolatedPath]),\n })\n\n matches.push(match)\n })\n\n const foundRoute = last(foundRoutes)!\n\n if (foundRoute.childRoutes?.length) {\n recurse(foundRoute.childRoutes)\n }\n }\n\n recurse([router.routeTree])\n\n linkMatches(matches)\n\n return matches\n },\n\n loadMatches: async (resolvedMatches, loaderOpts) => {\n resolvedMatches.forEach(async (match) => {\n // Validate the match (loads search params etc)\n match.__.validate()\n })\n\n // Check each match middleware to see if the route can be accessed\n await Promise.all(\n resolvedMatches.map(async (match) => {\n try {\n await match.options.beforeLoad?.({\n router: router as any,\n match,\n })\n } catch (err) {\n if (!loaderOpts?.preload) {\n match.options.onLoadError?.(err)\n }\n\n throw err\n }\n }),\n )\n\n const matchPromises = resolvedMatches.map(async (match) => {\n const search = match.store.search as { __data?: any }\n\n if (search.__data?.matchId && search.__data.matchId !== match.matchId) {\n return\n }\n\n match.load(loaderOpts)\n\n if (match.store.status !== 'success' && match.__.loadPromise) {\n // Wait for the first sign of activity from the match\n await match.__.loadPromise\n }\n })\n\n await Promise.all(matchPromises)\n },\n\n loadMatchData: async (routeMatch) => {\n if (isServer || !router.options.useServerData) {\n return (\n (await routeMatch.options.loader?.({\n // parentLoaderPromise: routeMatch.parentMatch?.__.dataPromise,\n params: routeMatch.params,\n search: routeMatch.store.routeSearch,\n signal: routeMatch.__.abortController.signal,\n })) || {}\n )\n } else {\n const next = router.buildNext({\n to: '.',\n search: (d: any) => ({\n ...(d ?? {}),\n __data: {\n matchId: routeMatch.matchId,\n },\n }),\n })\n\n // Refresh:\n // '/dashboard'\n // '/dashboard/invoices/'\n // '/dashboard/invoices/123'\n\n // New:\n // '/dashboard/invoices/456'\n\n // TODO: batch requests when possible\n\n const res = await fetch(next.href, {\n method: 'GET',\n // signal: routeMatch.__.abortController.signal,\n })\n\n if (res.ok) {\n return res.json()\n }\n\n throw new Error('Failed to fetch match data')\n }\n },\n\n invalidateRoute: (opts: MatchLocation) => {\n const next = router.buildNext(opts)\n const unloadedMatchIds = router\n .matchRoutes(next.pathname)\n .map((d) => d.matchId)\n ;[...store.currentMatches, ...(store.pendingMatches ?? [])].forEach(\n (match) => {\n if (unloadedMatchIds.includes(match.matchId)) {\n match.invalidate()\n }\n },\n )\n },\n\n reload: () =>\n navigate({\n fromCurrent: true,\n replace: true,\n search: true,\n }),\n\n resolvePath: (from: string, path: string) => {\n return resolvePath(router.basepath!, from, cleanPath(path))\n },\n\n matchRoute: (location, opts) => {\n // const location = router.buildNext(opts)\n\n location = {\n ...location,\n to: location.to\n ? router.resolvePath(location.from ?? '', location.to)\n : undefined,\n }\n\n const next = router.buildNext(location)\n\n if (opts?.pending) {\n if (!store.pendingLocation) {\n return false\n }\n\n return !!matchPathname(\n router.basepath,\n store.pendingLocation.pathname,\n {\n ...opts,\n to: next.pathname,\n },\n )\n }\n\n return matchPathname(router.basepath, store.currentLocation.pathname, {\n ...opts,\n to: next.pathname,\n }) as any\n },\n\n navigate: async ({ from, to = '.', search, hash, replace, params }) => {\n // If this link simply reloads the current route,\n // make sure it has a new key so it will trigger a data refresh\n\n // If this `to` is a valid external URL, return\n // null for LinkUtils\n const toString = String(to)\n const fromString = String(from)\n\n let isExternal\n\n try {\n new URL(`${toString}`)\n isExternal = true\n } catch (e) {}\n\n invariant(\n !isExternal,\n 'Attempting to navigate to external url with router.navigate!',\n )\n\n return navigate({\n from: fromString,\n to: toString,\n search,\n hash,\n replace,\n params,\n })\n },\n\n buildLink: ({\n from,\n to = '.',\n search,\n params,\n hash,\n target,\n replace,\n activeOptions,\n preload,\n preloadMaxAge: userPreloadMaxAge,\n preloadGcMaxAge: userPreloadGcMaxAge,\n preloadDelay: userPreloadDelay,\n disabled,\n }) => {\n // If this link simply reloads the current route,\n // make sure it has a new key so it will trigger a data refresh\n\n // If this `to` is a valid external URL, return\n // null for LinkUtils\n\n try {\n new URL(`${to}`)\n return {\n type: 'external',\n href: to,\n }\n } catch (e) {}\n\n const nextOpts = {\n from,\n to,\n search,\n params,\n hash,\n replace,\n }\n\n const next = router.buildNext(nextOpts)\n\n preload = preload ?? router.options.defaultPreload\n const preloadDelay =\n userPreloadDelay ?? router.options.defaultPreloadDelay ?? 0\n\n // Compare path/hash for matches\n const pathIsEqual = store.currentLocation.pathname === next.pathname\n const currentPathSplit = store.currentLocation.pathname.split('/')\n const nextPathSplit = next.pathname.split('/')\n const pathIsFuzzyEqual = nextPathSplit.every(\n (d, i) => d === currentPathSplit[i],\n )\n const hashIsEqual = store.currentLocation.hash === next.hash\n // Combine the matches based on user options\n const pathTest = activeOptions?.exact ? pathIsEqual : pathIsFuzzyEqual\n const hashTest = activeOptions?.includeHash ? hashIsEqual : true\n\n // The final \"active\" test\n const isActive = pathTest && hashTest\n\n // The click handler\n const handleClick = (e: MouseEvent) => {\n if (\n !disabled &&\n !isCtrlEvent(e) &&\n !e.defaultPrevented &&\n (!target || target === '_self') &&\n e.button === 0\n ) {\n e.preventDefault()\n if (pathIsEqual && !search && !hash) {\n router.invalidateRoute(nextOpts)\n }\n\n // All is well? Navigate!\n navigate(nextOpts)\n }\n }\n\n // The click handler\n const handleFocus = (e: MouseEvent) => {\n if (preload) {\n router\n .preloadRoute(nextOpts, {\n maxAge: userPreloadMaxAge,\n gcMaxAge: userPreloadGcMaxAge,\n })\n .catch((err) => {\n console.log(err)\n console.warn('Error preloading route! ☝️')\n })\n }\n }\n\n const handleEnter = (e: MouseEvent) => {\n const target = (e.target || {}) as LinkCurrentTargetElement\n\n if (preload) {\n if (target.preloadTimeout) {\n return\n }\n\n target.preloadTimeout = setTimeout(() => {\n target.preloadTimeout = null\n router\n .preloadRoute(nextOpts, {\n maxAge: userPreloadMaxAge,\n gcMaxAge: userPreloadGcMaxAge,\n })\n .catch((err) => {\n console.log(err)\n console.warn('Error preloading route! ☝️')\n })\n }, preloadDelay)\n }\n }\n\n const handleLeave = (e: MouseEvent) => {\n const target = (e.target || {}) as LinkCurrentTargetElement\n\n if (target.preloadTimeout) {\n clearTimeout(target.preloadTimeout)\n target.preloadTimeout = null\n }\n }\n\n return {\n type: 'internal',\n next,\n handleFocus,\n handleClick,\n handleEnter,\n handleLeave,\n isActive,\n disabled,\n }\n },\n buildNext: (opts: BuildNextOptions) => {\n const next = buildLocation(opts)\n\n const matches = router.matchRoutes(next.pathname)\n\n const __preSearchFilters = matches\n .map((match) => match.options.preSearchFilters ?? [])\n .flat()\n .filter(Boolean)\n\n const __postSearchFilters = matches\n .map((match) => match.options.postSearchFilters ?? [])\n .flat()\n .filter(Boolean)\n\n return buildLocation({\n ...opts,\n __preSearchFilters,\n __postSearchFilters,\n })\n },\n }\n\n router.update(userOptions)\n\n // Allow frameworks to hook into the router creation\n router.options.createRouter?.(router)\n\n return router\n}\n\nfunction isCtrlEvent(e: MouseEvent) {\n return !!(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey)\n}\n\nfunction linkMatches(matches: RouteMatch<any, any>[]) {\n matches.forEach((match, index) => {\n const parent = matches[index - 1]\n\n if (parent) {\n match.__.setParentMatch(parent)\n } else {\n match.__.setParentMatch(undefined)\n }\n })\n}\n"],"names":["isServer","window","document","createElement","createDefaultHistory","createMemoryHistory","createBrowserHistory","getInitialRouterState","status","latestLocation","currentLocation","currentMatches","actions","loaders","lastUpdated","Date","now","matchCache","isFetching","some","d","store","isPreloading","Object","values","match","find","dd","matchId","createRouter","userOptions","originalOptions","defaultLoaderGcMaxAge","defaultLoaderMaxAge","defaultPreloadMaxAge","defaultPreloadDelay","context","undefined","stringifySearch","defaultStringifySearch","parseSearch","defaultParseSearch","setStore","createStore","navigationPromise","startedLoadingAt","resolveNavigation","onFocus","router","load","buildRouteTree","rootRouteConfig","recurseRoutes","routeConfigs","parent","map","routeConfig","i","routeOptions","options","route","createRoute","existingRoute","routesById","routeId","process","env","NODE_ENV","console","warn","String","Error","children","childRoutes","length","routes","parseLocation","location","previousLocation","parsedSearch","search","pathname","searchStr","sharedClone","hash","split","reverse","href","state","key","navigate","next","buildNext","commitLocation","replace","buildLocation","dest","fromPathname","fromCurrent","from","resolvePath","basepath","to","fromMatches","matchRoutes","strictParseParams","toMatches","prevParams","last","params","nextParams","functionalUpdate","stringifyParams","filter","Boolean","forEach","fn","assign","interpolatePath","preFilteredSearch","__preSearchFilters","reduce","prev","destSearch","postFilteredSearch","__postSearchFilters","id","Math","random","nextAction","isSameUrl","history","Promise","resolve","previousNavigationResolve","types","routeTree","reset","s","getRoute","dehydrate","pick","hydrate","dehydratedRouter","index","dehydratedMatch","invariant","__","validate","mount","unsub","listen","event","addEventListener","removeEventListener","update","opts","newHistory","trimPath","cancelMatches","pendingMatches","cancel","startedAt","matches","batch","log","pendingLocation","loadMatches","err","previousMatches","exiting","staying","push","entering","onExit","routeSearch","error","gc","max","loaderGcMaxAge","loaderMaxAge","Infinity","Number","MAX_SAFE_INTEGER","onTransition","onLoaded","action","current","submissions","cleanMatchCache","keys","entry","loadRoute","navigateOpts","preloadRoute","loaderOpts","preload","maxAge","gcMaxAge","defaultPreloadGcMaxAge","existingMatches","recurse","parentMatch","filteredRoutes","filterRoutes","foundRoutes","findMatchInRoutes","parentRoutes","routePath","fuzzy","matchParams","matchPathname","fullPath","caseSensitive","parsedParams","parseParams","foundRoute","interpolatedPath","createRouteMatch","joinPaths","linkMatches","resolvedMatches","all","beforeLoad","onLoadError","matchPromises","__data","loadPromise","loadMatchData","routeMatch","useServerData","loader","signal","abortController","res","fetch","method","ok","json","invalidateRoute","unloadedMatchIds","includes","invalidate","reload","path","cleanPath","matchRoute","pending","toString","fromString","isExternal","URL","e","buildLink","target","activeOptions","preloadMaxAge","userPreloadMaxAge","preloadGcMaxAge","userPreloadGcMaxAge","preloadDelay","userPreloadDelay","disabled","type","nextOpts","defaultPreload","pathIsEqual","currentPathSplit","nextPathSplit","pathIsFuzzyEqual","every","hashIsEqual","pathTest","exact","hashTest","includeHash","isActive","handleClick","isCtrlEvent","defaultPrevented","button","preventDefault","handleFocus","catch","handleEnter","preloadTimeout","setTimeout","handleLeave","clearTimeout","preSearchFilters","flat","postSearchFilters","metaKey","altKey","ctrlKey","shiftKey","setParentMatch"],"mappings":"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"}
|
|
@@ -12,7 +12,6 @@
|
|
|
12
12
|
|
|
13
13
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
14
14
|
|
|
15
|
-
var _rollupPluginBabelHelpers = require('./_virtual/_rollupPluginBabelHelpers.js');
|
|
16
15
|
var qss = require('./qss.js');
|
|
17
16
|
|
|
18
17
|
const defaultParseSearch = parseSearchWith(JSON.parse);
|
|
@@ -40,7 +39,9 @@ function parseSearchWith(parser) {
|
|
|
40
39
|
}
|
|
41
40
|
function stringifySearchWith(stringify) {
|
|
42
41
|
return search => {
|
|
43
|
-
search =
|
|
42
|
+
search = {
|
|
43
|
+
...search
|
|
44
|
+
};
|
|
44
45
|
if (search) {
|
|
45
46
|
Object.keys(search).forEach(key => {
|
|
46
47
|
const val = search[key];
|
|
@@ -56,7 +57,7 @@ function stringifySearchWith(stringify) {
|
|
|
56
57
|
});
|
|
57
58
|
}
|
|
58
59
|
const searchStr = qss.encode(search).toString();
|
|
59
|
-
return searchStr ?
|
|
60
|
+
return searchStr ? `?${searchStr}` : '';
|
|
60
61
|
};
|
|
61
62
|
}
|
|
62
63
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"searchParams.js","sources":["../../src/searchParams.ts"],"sourcesContent":["import { decode, encode } from './qss'\nimport { AnySearchSchema } from './routeConfig'\n\nexport const defaultParseSearch = parseSearchWith(JSON.parse)\nexport const defaultStringifySearch = stringifySearchWith(JSON.stringify)\n\nexport function parseSearchWith(parser: (str: string) => any) {\n return (searchStr: string): AnySearchSchema => {\n if (searchStr.substring(0, 1) === '?') {\n searchStr = searchStr.substring(1)\n }\n\n let query: Record<string, unknown> = decode(searchStr)\n\n // Try to parse any query params that might be json\n for (let key in query) {\n const value = query[key]\n if (typeof value === 'string') {\n try {\n query[key] = parser(value)\n } catch (err) {\n //\n }\n }\n }\n\n return query\n }\n}\n\nexport function stringifySearchWith(stringify: (search: any) => string) {\n return (search: Record<string, any>) => {\n search = { ...search }\n\n if (search) {\n Object.keys(search).forEach((key) => {\n const val = search[key]\n if (typeof val === 'undefined' || val === undefined) {\n delete search[key]\n } else if (val && typeof val === 'object' && val !== null) {\n try {\n search[key] = stringify(val)\n } catch (err) {\n // silent\n }\n }\n })\n }\n\n const searchStr = encode(search as Record<string, string>).toString()\n\n return searchStr ? `?${searchStr}` : ''\n }\n}\n"],"names":["defaultParseSearch","parseSearchWith","JSON","parse","defaultStringifySearch","stringifySearchWith","stringify","parser","searchStr","substring","query","decode","key","value","err","search","
|
|
1
|
+
{"version":3,"file":"searchParams.js","sources":["../../src/searchParams.ts"],"sourcesContent":["import { decode, encode } from './qss'\nimport { AnySearchSchema } from './routeConfig'\n\nexport const defaultParseSearch = parseSearchWith(JSON.parse)\nexport const defaultStringifySearch = stringifySearchWith(JSON.stringify)\n\nexport function parseSearchWith(parser: (str: string) => any) {\n return (searchStr: string): AnySearchSchema => {\n if (searchStr.substring(0, 1) === '?') {\n searchStr = searchStr.substring(1)\n }\n\n let query: Record<string, unknown> = decode(searchStr)\n\n // Try to parse any query params that might be json\n for (let key in query) {\n const value = query[key]\n if (typeof value === 'string') {\n try {\n query[key] = parser(value)\n } catch (err) {\n //\n }\n }\n }\n\n return query\n }\n}\n\nexport function stringifySearchWith(stringify: (search: any) => string) {\n return (search: Record<string, any>) => {\n search = { ...search }\n\n if (search) {\n Object.keys(search).forEach((key) => {\n const val = search[key]\n if (typeof val === 'undefined' || val === undefined) {\n delete search[key]\n } else if (val && typeof val === 'object' && val !== null) {\n try {\n search[key] = stringify(val)\n } catch (err) {\n // silent\n }\n }\n })\n }\n\n const searchStr = encode(search as Record<string, string>).toString()\n\n return searchStr ? `?${searchStr}` : ''\n }\n}\n"],"names":["defaultParseSearch","parseSearchWith","JSON","parse","defaultStringifySearch","stringifySearchWith","stringify","parser","searchStr","substring","query","decode","key","value","err","search","Object","keys","forEach","val","undefined","encode","toString"],"mappings":";;;;;;;;;;;;;;;;AAGO,MAAMA,kBAAkB,GAAGC,eAAe,CAACC,IAAI,CAACC,KAAK,EAAC;AACtD,MAAMC,sBAAsB,GAAGC,mBAAmB,CAACH,IAAI,CAACI,SAAS,EAAC;AAElE,SAASL,eAAe,CAACM,MAA4B,EAAE;AAC5D,EAAA,OAAQC,SAAiB,IAAsB;IAC7C,IAAIA,SAAS,CAACC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,EAAE;AACrCD,MAAAA,SAAS,GAAGA,SAAS,CAACC,SAAS,CAAC,CAAC,CAAC,CAAA;AACpC,KAAA;AAEA,IAAA,IAAIC,KAA8B,GAAGC,UAAM,CAACH,SAAS,CAAC,CAAA;;AAEtD;AACA,IAAA,KAAK,IAAII,GAAG,IAAIF,KAAK,EAAE;AACrB,MAAA,MAAMG,KAAK,GAAGH,KAAK,CAACE,GAAG,CAAC,CAAA;AACxB,MAAA,IAAI,OAAOC,KAAK,KAAK,QAAQ,EAAE;QAC7B,IAAI;AACFH,UAAAA,KAAK,CAACE,GAAG,CAAC,GAAGL,MAAM,CAACM,KAAK,CAAC,CAAA;SAC3B,CAAC,OAAOC,GAAG,EAAE;AACZ;AAAA,SAAA;AAEJ,OAAA;AACF,KAAA;AAEA,IAAA,OAAOJ,KAAK,CAAA;GACb,CAAA;AACH,CAAA;AAEO,SAASL,mBAAmB,CAACC,SAAkC,EAAE;AACtE,EAAA,OAAQS,MAA2B,IAAK;AACtCA,IAAAA,MAAM,GAAG;MAAE,GAAGA,MAAAA;KAAQ,CAAA;AAEtB,IAAA,IAAIA,MAAM,EAAE;MACVC,MAAM,CAACC,IAAI,CAACF,MAAM,CAAC,CAACG,OAAO,CAAEN,GAAG,IAAK;AACnC,QAAA,MAAMO,GAAG,GAAGJ,MAAM,CAACH,GAAG,CAAC,CAAA;QACvB,IAAI,OAAOO,GAAG,KAAK,WAAW,IAAIA,GAAG,KAAKC,SAAS,EAAE;UACnD,OAAOL,MAAM,CAACH,GAAG,CAAC,CAAA;AACpB,SAAC,MAAM,IAAIO,GAAG,IAAI,OAAOA,GAAG,KAAK,QAAQ,IAAIA,GAAG,KAAK,IAAI,EAAE;UACzD,IAAI;AACFJ,YAAAA,MAAM,CAACH,GAAG,CAAC,GAAGN,SAAS,CAACa,GAAG,CAAC,CAAA;WAC7B,CAAC,OAAOL,GAAG,EAAE;AACZ;AAAA,WAAA;AAEJ,SAAA;AACF,OAAC,CAAC,CAAA;AACJ,KAAA;IAEA,MAAMN,SAAS,GAAGa,UAAM,CAACN,MAAM,CAA2B,CAACO,QAAQ,EAAE,CAAA;AAErE,IAAA,OAAOd,SAAS,GAAI,CAAA,CAAA,EAAGA,SAAU,CAAA,CAAC,GAAG,EAAE,CAAA;GACxC,CAAA;AACH;;;;;;;"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* router-core
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) TanStack
|
|
5
|
+
*
|
|
6
|
+
* This source code is licensed under the MIT license found in the
|
|
7
|
+
* LICENSE.md file in the root directory of this source tree.
|
|
8
|
+
*
|
|
9
|
+
* @license MIT
|
|
10
|
+
*/
|
|
11
|
+
'use strict';
|
|
12
|
+
|
|
13
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* This function returns `a` if `b` is deeply equal.
|
|
17
|
+
* If not, it will replace any deeply equal children of `b` with those of `a`.
|
|
18
|
+
* This can be used for structural sharing between JSON values for example.
|
|
19
|
+
*/
|
|
20
|
+
function sharedClone(prev, next, touchAll) {
|
|
21
|
+
const things = new Map();
|
|
22
|
+
function recurse(prev, next) {
|
|
23
|
+
if (prev === next) {
|
|
24
|
+
return prev;
|
|
25
|
+
}
|
|
26
|
+
if (things.has(next)) {
|
|
27
|
+
return things.get(next);
|
|
28
|
+
}
|
|
29
|
+
const prevIsArray = Array.isArray(prev);
|
|
30
|
+
const nextIsArray = Array.isArray(next);
|
|
31
|
+
const prevIsObj = isPlainObject(prev);
|
|
32
|
+
const nextIsObj = isPlainObject(next);
|
|
33
|
+
const isArray = prevIsArray && nextIsArray;
|
|
34
|
+
const isObj = prevIsObj && nextIsObj;
|
|
35
|
+
const isSameStructure = isArray || isObj;
|
|
36
|
+
|
|
37
|
+
// Both are arrays or objects
|
|
38
|
+
if (isSameStructure) {
|
|
39
|
+
const aSize = isArray ? prev.length : Object.keys(prev).length;
|
|
40
|
+
const bItems = isArray ? next : Object.keys(next);
|
|
41
|
+
const bSize = bItems.length;
|
|
42
|
+
const copy = isArray ? [] : {};
|
|
43
|
+
let equalItems = 0;
|
|
44
|
+
for (let i = 0; i < bSize; i++) {
|
|
45
|
+
const key = isArray ? i : bItems[i];
|
|
46
|
+
if (copy[key] === prev[key]) {
|
|
47
|
+
equalItems++;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
if (aSize === bSize && equalItems === aSize) {
|
|
51
|
+
things.set(next, prev);
|
|
52
|
+
return prev;
|
|
53
|
+
}
|
|
54
|
+
things.set(next, copy);
|
|
55
|
+
for (let i = 0; i < bSize; i++) {
|
|
56
|
+
const key = isArray ? i : bItems[i];
|
|
57
|
+
if (typeof bItems[i] === 'function') {
|
|
58
|
+
copy[key] = prev[key];
|
|
59
|
+
} else {
|
|
60
|
+
copy[key] = recurse(prev[key], next[key]);
|
|
61
|
+
}
|
|
62
|
+
if (copy[key] === prev[key]) {
|
|
63
|
+
equalItems++;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return copy;
|
|
67
|
+
}
|
|
68
|
+
if (nextIsArray) {
|
|
69
|
+
const copy = [];
|
|
70
|
+
things.set(next, copy);
|
|
71
|
+
for (let i = 0; i < next.length; i++) {
|
|
72
|
+
copy[i] = recurse(undefined, next[i]);
|
|
73
|
+
}
|
|
74
|
+
return copy;
|
|
75
|
+
}
|
|
76
|
+
if (nextIsObj) {
|
|
77
|
+
const copy = {};
|
|
78
|
+
things.set(next, copy);
|
|
79
|
+
const nextKeys = Object.keys(next);
|
|
80
|
+
for (let i = 0; i < nextKeys.length; i++) {
|
|
81
|
+
const key = nextKeys[i];
|
|
82
|
+
copy[key] = recurse(undefined, next[key]);
|
|
83
|
+
}
|
|
84
|
+
return copy;
|
|
85
|
+
}
|
|
86
|
+
return next;
|
|
87
|
+
}
|
|
88
|
+
return recurse(prev, next);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// Copied from: https://github.com/jonschlinkert/is-plain-object
|
|
92
|
+
function isPlainObject(o) {
|
|
93
|
+
if (!hasObjectPrototype(o)) {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// If has modified constructor
|
|
98
|
+
const ctor = o.constructor;
|
|
99
|
+
if (typeof ctor === 'undefined') {
|
|
100
|
+
return true;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// If has modified prototype
|
|
104
|
+
const prot = ctor.prototype;
|
|
105
|
+
if (!hasObjectPrototype(prot)) {
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// If constructor does not have an Object-specific method
|
|
110
|
+
if (!prot.hasOwnProperty('isPrototypeOf')) {
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// Most likely a plain Object
|
|
115
|
+
return true;
|
|
116
|
+
}
|
|
117
|
+
function hasObjectPrototype(o) {
|
|
118
|
+
return Object.prototype.toString.call(o) === '[object Object]';
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
exports.sharedClone = sharedClone;
|
|
122
|
+
//# sourceMappingURL=sharedClone.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sharedClone.js","sources":["../../src/sharedClone.ts"],"sourcesContent":["/**\n * This function returns `a` if `b` is deeply equal.\n * If not, it will replace any deeply equal children of `b` with those of `a`.\n * This can be used for structural sharing between JSON values for example.\n */\nexport function sharedClone<T>(prev: any, next: T, touchAll?: boolean): T {\n const things = new Map()\n\n function recurse(prev: any, next: any) {\n if (prev === next) {\n return prev\n }\n\n if (things.has(next)) {\n return things.get(next)\n }\n\n const prevIsArray = Array.isArray(prev)\n const nextIsArray = Array.isArray(next)\n const prevIsObj = isPlainObject(prev)\n const nextIsObj = isPlainObject(next)\n\n const isArray = prevIsArray && nextIsArray\n const isObj = prevIsObj && nextIsObj\n\n const isSameStructure = isArray || isObj\n\n // Both are arrays or objects\n if (isSameStructure) {\n const aSize = isArray ? prev.length : Object.keys(prev).length\n const bItems = isArray ? next : Object.keys(next)\n const bSize = bItems.length\n const copy: any = isArray ? [] : {}\n\n let equalItems = 0\n\n for (let i = 0; i < bSize; i++) {\n const key = isArray ? i : bItems[i]\n if (copy[key] === prev[key]) {\n equalItems++\n }\n }\n if (aSize === bSize && equalItems === aSize) {\n things.set(next, prev)\n return prev\n }\n things.set(next, copy)\n for (let i = 0; i < bSize; i++) {\n const key = isArray ? i : bItems[i]\n if (typeof bItems[i] === 'function') {\n copy[key] = prev[key]\n } else {\n copy[key] = recurse(prev[key], next[key])\n }\n if (copy[key] === prev[key]) {\n equalItems++\n }\n }\n\n return copy\n }\n\n if (nextIsArray) {\n const copy: any[] = []\n things.set(next, copy)\n for (let i = 0; i < next.length; i++) {\n copy[i] = recurse(undefined, next[i])\n }\n return copy as T\n }\n\n if (nextIsObj) {\n const copy = {} as any\n things.set(next, copy)\n const nextKeys = Object.keys(next)\n for (let i = 0; i < nextKeys.length; i++) {\n const key = nextKeys[i]!\n copy[key] = recurse(undefined, next[key])\n }\n return copy as T\n }\n\n return next\n }\n\n return recurse(prev, next)\n}\n\n// Copied from: https://github.com/jonschlinkert/is-plain-object\nfunction isPlainObject(o: any) {\n if (!hasObjectPrototype(o)) {\n return false\n }\n\n // If has modified constructor\n const ctor = o.constructor\n if (typeof ctor === 'undefined') {\n return true\n }\n\n // If has modified prototype\n const prot = ctor.prototype\n if (!hasObjectPrototype(prot)) {\n return false\n }\n\n // If constructor does not have an Object-specific method\n if (!prot.hasOwnProperty('isPrototypeOf')) {\n return false\n }\n\n // Most likely a plain Object\n return true\n}\n\nfunction hasObjectPrototype(o: any) {\n return Object.prototype.toString.call(o) === '[object Object]'\n}\n"],"names":["sharedClone","prev","next","touchAll","things","Map","recurse","has","get","prevIsArray","Array","isArray","nextIsArray","prevIsObj","isPlainObject","nextIsObj","isObj","isSameStructure","aSize","length","Object","keys","bItems","bSize","copy","equalItems","i","key","set","undefined","nextKeys","o","hasObjectPrototype","ctor","constructor","prot","prototype","hasOwnProperty","toString","call"],"mappings":"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"}
|