one
Version:
One is a React framework for web, iOS, and Android apps.
1 lines • 12.2 kB
Source Map (JSON)
{"version":3,"file":"useViteRoutes.js","names":[],"sources":["esm/router/useViteRoutes.js"],"sourcesContent":["import { hasWebHistory, isNative } from \"../constants\";\nimport { handleSkewError, isChunkLoadError } from \"../utils/dynamicImport\";\nimport { diagnoseRouteLoadFailure } from \"./diagnoseRouteLoadFailure\";\nimport { hmrImport } from \"./hmrImport\";\nlet lastVersion = 0;\nlet context;\nfunction useViteRoutes(routes, routerRoot, options, version) {\n if (version && version > lastVersion) {\n context = null;\n lastVersion = version;\n for (const key of Object.keys(preloadedModules)) {\n delete preloadedModules[key];\n }\n }\n if (!context) {\n loadRoutes(routes, routerRoot, options);\n }\n return context;\n}\nconst preloadedModules = {};\nfunction registerPreloadedRoute(key, module) {\n preloadedModules[key] = module;\n}\nfunction getPreloadedModule(key) {\n return preloadedModules[key];\n}\nfunction getPreloadedModuleKeys() {\n return Object.keys(preloadedModules);\n}\nfunction matchDynamicRoute(routePattern, actualPath) {\n const routeSegments = routePattern.split(\"/\");\n const pathSegments = actualPath.split(\"/\");\n const hasCatchAll = routeSegments.some((s) => s.startsWith(\"[...\"));\n if (hasCatchAll) {\n const catchAllIdx = routeSegments.findIndex((s) => s.startsWith(\"[...\"));\n for (let i = 0; i < catchAllIdx; i++) {\n if (!routeSegments[i]) continue;\n if (routeSegments[i].startsWith(\"[\")) continue;\n if (routeSegments[i] !== pathSegments[i]) return false;\n }\n return pathSegments.length >= catchAllIdx;\n }\n if (routeSegments.length !== pathSegments.length) return false;\n for (let i = 0; i < routeSegments.length; i++) {\n const routeSeg = routeSegments[i];\n const pathSeg = pathSegments[i];\n if (routeSeg.startsWith(\"[\") && routeSeg.endsWith(\"]\")) {\n continue;\n }\n if (routeSeg !== pathSeg) return false;\n }\n return true;\n}\nasync function preloadRouteModules(href) {\n const globbed = globalThis[\"__importMetaGlobbed\"];\n if (!globbed) return;\n const normalizedHref = href === \"/\" ? \"\" : href.replace(/^\\//, \"\").replace(/\\/$/, \"\");\n const promises = [];\n for (const key of Object.keys(globbed)) {\n let routePath = key.replace(/^\\/[^/]+\\//, \"\");\n routePath = routePath.replace(/\\([^)]+\\)\\//g, \"\");\n routePath = routePath.replace(/\\/_layout\\.tsx$/, \"\").replace(/\\/index(\\+[a-z]+)?\\.tsx$/, \"\").replace(/(\\+[a-z]+)?\\.tsx$/, \"\");\n routePath = routePath.replace(/^\\//, \"\");\n const isStaticMatch = routePath === normalizedHref || // exact match\n routePath.startsWith(normalizedHref + \"/\") || // child route\n normalizedHref.startsWith(routePath + \"/\") || // parent layout\n routePath === \"\" || // root layout\n normalizedHref !== \"\" && routePath === normalizedHref.split(\"/\")[0];\n const isDynamicMatch = routePath.includes(\"[\") && matchDynamicRoute(routePath, normalizedHref);\n if ((isStaticMatch || isDynamicMatch) && typeof globbed[key] === \"function\") {\n promises.push(\n globbed[key]().then((mod) => {\n preloadedModules[key] = mod;\n })\n );\n }\n }\n await Promise.all(promises);\n}\nfunction loadRoutes(paths, routerRoot, options) {\n if (context) return context;\n globalThis[\"__importMetaGlobbed\"] = paths;\n context = globbedRoutesToRouteContext(paths, routerRoot, options);\n return context;\n}\nfunction globbedRoutesToRouteContext(paths, routerRoot, options) {\n const routesSync = {};\n const routePaths = {};\n const promises = {};\n const loadedRoutes = {};\n const clears = {};\n Object.keys(paths).forEach((path) => {\n if (!paths[path]) {\n console.error(`Error: Missing route at path ${path}`);\n return;\n }\n const loadRouteFunction = paths[path];\n const pathWithoutRelative = path.replace(`/${routerRoot}/`, \"./\");\n const originalPath = pathWithoutRelative.slice(1).replace(/\\.[jt]sx?$/, \"\");\n if (options?.routeModes?.[originalPath] === \"spa\") {\n console.info(`Spa mode: ${originalPath}`);\n loadedRoutes[pathWithoutRelative] = () => {\n return null;\n };\n } else {\n routesSync[pathWithoutRelative] = loadRouteFunction;\n routePaths[pathWithoutRelative] = path;\n }\n });\n const moduleKeys = Object.keys(routesSync);\n let hmrVersion = 0;\n if (typeof window !== \"undefined\") {\n ;\n window.__oneRouteCache = {\n clear: () => {\n hmrVersion++;\n Object.keys(loadedRoutes).forEach((key) => {\n delete loadedRoutes[key];\n });\n Object.keys(promises).forEach((key) => {\n delete promises[key];\n });\n Object.keys(preloadedModules).forEach((key) => {\n delete preloadedModules[key];\n });\n },\n clearFile: (file) => {\n const normalizedFile = file.replace(/\\\\/g, \"/\").replace(/^\\//, \"\");\n const routeId = moduleKeys.find(\n (key) => routePaths[key].replace(/\\\\/g, \"/\").replace(/^\\//, \"\") === normalizedFile\n );\n if (!routeId) return false;\n hmrVersion++;\n delete loadedRoutes[routeId];\n delete promises[routeId];\n delete preloadedModules[routePaths[routeId]];\n return true;\n },\n getVersion: () => hmrVersion\n };\n }\n function resolve(id) {\n clearTimeout(clears[id]);\n if (loadedRoutes[id]) {\n return loadedRoutes[id];\n }\n const preloadKey = id.replace(\"./\", `/${routerRoot}/`);\n const preloaded = getPreloadedModule(preloadKey);\n if (preloaded) {\n loadedRoutes[id] = preloaded;\n return preloaded;\n }\n if (typeof routesSync[id] !== \"function\") {\n return routesSync[id];\n }\n if (!promises[id]) {\n let importPromise;\n if (process.env.NODE_ENV === \"development\" && hmrVersion > 0 && routePaths[id]) {\n importPromise = isNative ? routesSync[id]().then(() => hmrImport(routePaths[id])) : hmrImport(routePaths[id]);\n } else {\n importPromise = routesSync[id]();\n }\n promises[id] = importPromise.then((val) => {\n loadedRoutes[id] = val;\n delete promises[id];\n if (process.env.NODE_ENV === \"development\") {\n clears[id] = setTimeout(() => {\n delete loadedRoutes[id];\n }, 500);\n }\n return val;\n }).catch((err) => {\n console.error(`Error loading route`, id, err, new Error().stack);\n const reloading = isChunkLoadError(err) && handleSkewError();\n if (process.env.NODE_ENV === \"development\") {\n ;\n globalThis.__oneReportRouteLoadError?.({\n id,\n message: err instanceof Error ? err.message : String(err),\n stack: err instanceof Error ? err.stack : void 0\n });\n if (hasWebHistory && routePaths[id] && !reloading) {\n diagnoseRouteLoadFailure(id, routePaths[id]).then((message) => {\n if (message) console.error(message);\n }).catch(() => {\n });\n }\n }\n loadedRoutes[id] = {\n default: () => null\n };\n delete promises[id];\n });\n if (process.env.NODE_ENV === \"development\") {\n promises[id].stack = new Error().stack;\n }\n }\n throw promises[id];\n }\n resolve.keys = () => moduleKeys;\n resolve.id = \"\";\n resolve.resolve = (id) => id;\n return resolve;\n}\nexport {\n getPreloadedModule,\n getPreloadedModuleKeys,\n globbedRoutesToRouteContext,\n loadRoutes,\n preloadRouteModules,\n registerPreloadedRoute,\n useViteRoutes\n};\n//# sourceMappingURL=useViteRoutes.js.map\n"],"mappings":"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"}