one 1.17.9 → 1.17.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (557) hide show
  1. package/dist/cjs/Root.native.js.map +1 -1
  2. package/dist/cjs/__mocks__/@react-navigation/native-stack.native.js.map +1 -1
  3. package/dist/cjs/__mocks__/expo-linking.native.js.map +1 -1
  4. package/dist/cjs/__mocks__/expo-modules-core.native.js.map +1 -1
  5. package/dist/cjs/__mocks__/react-native-screens.native.js.map +1 -1
  6. package/dist/cjs/babel-plugins/environment-guard.native.js.map +1 -1
  7. package/dist/cjs/babel-plugins/inline-one-server-url.native.js.map +1 -1
  8. package/dist/cjs/babel-plugins/one-router-metro.native.js.map +1 -1
  9. package/dist/cjs/babel-plugins/one-router-metro.test.native.js.map +1 -1
  10. package/dist/cjs/babel-plugins/remove-server-code.native.js.map +1 -1
  11. package/dist/cjs/babel-preset/index.cjs +7 -2
  12. package/dist/cjs/babel-preset/index.native.js +7 -2
  13. package/dist/cjs/babel-preset/index.native.js.map +1 -1
  14. package/dist/cjs/babel-preset/index.test.cjs +13 -0
  15. package/dist/cjs/babel-preset/index.test.native.js +13 -0
  16. package/dist/cjs/babel-preset/index.test.native.js.map +1 -1
  17. package/dist/cjs/babel-preset/integration.test.native.js.map +1 -1
  18. package/dist/cjs/cli/build.cjs +14 -11
  19. package/dist/cjs/cli/build.native.js +14 -11
  20. package/dist/cjs/cli/build.native.js.map +1 -1
  21. package/dist/cjs/cli/buildPage.cjs +2 -1
  22. package/dist/cjs/cli/buildPage.native.js +2 -1
  23. package/dist/cjs/cli/buildPage.native.js.map +1 -1
  24. package/dist/cjs/cli/buildPageWorker.native.js.map +1 -1
  25. package/dist/cjs/cli/checkNodeVersion.native.js.map +1 -1
  26. package/dist/cjs/cli/daemon.native.js.map +1 -1
  27. package/dist/cjs/cli/dev.native.js.map +1 -1
  28. package/dist/cjs/cli/generateBundlerConfig.native.js.map +1 -1
  29. package/dist/cjs/cli/generateBundlerConfig.test.native.js.map +1 -1
  30. package/dist/cjs/cli/generateRoutes.native.js.map +1 -1
  31. package/dist/cjs/cli/generateSitemap.native.js.map +1 -1
  32. package/dist/cjs/cli/generateSitemap.test.native.js.map +1 -1
  33. package/dist/cjs/cli/install-error-handlers.native.js.map +1 -1
  34. package/dist/cjs/cli/label-process.native.js.map +1 -1
  35. package/dist/cjs/cli/main.native.js.map +1 -1
  36. package/dist/cjs/cli/patch.native.js.map +1 -1
  37. package/dist/cjs/cli/patch.test.native.js.map +1 -1
  38. package/dist/cjs/cli/prebuild.native.js.map +1 -1
  39. package/dist/cjs/cli/runAndroid.native.js.map +1 -1
  40. package/dist/cjs/cli/runIos.native.js.map +1 -1
  41. package/dist/cjs/cli/securityScan.native.js.map +1 -1
  42. package/dist/cjs/cli/workerPool.native.js.map +1 -1
  43. package/dist/cjs/cli.native.js.map +1 -1
  44. package/dist/cjs/clientLoaderResolver.native.js.map +1 -1
  45. package/dist/cjs/config.native.js.map +1 -1
  46. package/dist/cjs/constants.cjs +17 -5
  47. package/dist/cjs/constants.native.js +13 -1
  48. package/dist/cjs/constants.native.js.map +1 -1
  49. package/dist/cjs/constants.test.cjs +60 -0
  50. package/dist/cjs/constants.test.native.js +63 -0
  51. package/dist/cjs/constants.test.native.js.map +1 -0
  52. package/dist/cjs/createAPIRoute.native.js.map +1 -1
  53. package/dist/cjs/createApp.cjs +3 -2
  54. package/dist/cjs/createHandleRequest.native.js.map +1 -1
  55. package/dist/cjs/createHandleRequest.test.native.js.map +1 -1
  56. package/dist/cjs/createMiddleware.native.js.map +1 -1
  57. package/dist/cjs/daemon/index.native.js.map +1 -1
  58. package/dist/cjs/daemon/ipc.native.js.map +1 -1
  59. package/dist/cjs/daemon/picker.native.js.map +1 -1
  60. package/dist/cjs/daemon/proxy.native.js.map +1 -1
  61. package/dist/cjs/daemon/registry.native.js.map +1 -1
  62. package/dist/cjs/daemon/server.cjs +23 -0
  63. package/dist/cjs/daemon/server.native.js +61 -0
  64. package/dist/cjs/daemon/server.native.js.map +1 -1
  65. package/dist/cjs/daemon/tui.native.js.map +1 -1
  66. package/dist/cjs/daemon/types.native.js.map +1 -1
  67. package/dist/cjs/daemon/utils.native.js.map +1 -1
  68. package/dist/cjs/devtools/registry.native.js.map +1 -1
  69. package/dist/cjs/drawer.native.js.map +1 -1
  70. package/dist/cjs/fallbackViews/Sitemap.native.js.map +1 -1
  71. package/dist/cjs/fallbackViews/Unmatched.native.js.map +1 -1
  72. package/dist/cjs/fork/NavigationContainer.native.js.map +1 -1
  73. package/dist/cjs/fork/SSRNavigationContainer.native.js.map +1 -1
  74. package/dist/cjs/fork/__tests__/getPathFromState.test.native.js.map +1 -1
  75. package/dist/cjs/fork/__tests__/getStateFromPath.test.native.js.map +1 -1
  76. package/dist/cjs/fork/_shared.native.js.map +1 -1
  77. package/dist/cjs/fork/createMemoryHistory.native.js.map +1 -1
  78. package/dist/cjs/fork/createMemoryHistory.test.native.js.map +1 -1
  79. package/dist/cjs/fork/extractPathFromURL.native.js.map +1 -1
  80. package/dist/cjs/fork/extractPathFromURL.test.native.js.map +1 -1
  81. package/dist/cjs/fork/findFocusedRoute.native.js.map +1 -1
  82. package/dist/cjs/fork/getPathFromState-mods.native.js.map +1 -1
  83. package/dist/cjs/fork/getPathFromState.native.js.map +1 -1
  84. package/dist/cjs/fork/getPathFromState.test.native.js.map +1 -1
  85. package/dist/cjs/fork/getStateFromPath-mods.native.js.map +1 -1
  86. package/dist/cjs/fork/getStateFromPath.native.js.map +1 -1
  87. package/dist/cjs/fork/getStateFromPath.test.native.js.map +1 -1
  88. package/dist/cjs/fork/useThenable.native.js.map +1 -1
  89. package/dist/cjs/fork/validatePathConfig.native.js.map +1 -1
  90. package/dist/cjs/getReactNavigationConfig.native.js.map +1 -1
  91. package/dist/cjs/head/Head.native.js.map +1 -1
  92. package/dist/cjs/head/HeadModule.native.js.map +1 -1
  93. package/dist/cjs/head/index.native.js.map +1 -1
  94. package/dist/cjs/head/types.native.js.map +1 -1
  95. package/dist/cjs/head/url.native.js.map +1 -1
  96. package/dist/cjs/headless-server.native.js.map +1 -1
  97. package/dist/cjs/headless.native.js.map +1 -1
  98. package/dist/cjs/hooks.native.js.map +1 -1
  99. package/dist/cjs/hooks.test.native.js.map +1 -1
  100. package/dist/cjs/href.native.js.map +1 -1
  101. package/dist/cjs/image/getImageData.native.js.map +1 -1
  102. package/dist/cjs/image.native.js.map +1 -1
  103. package/dist/cjs/index.cjs +6 -0
  104. package/dist/cjs/index.native.js +7 -1
  105. package/dist/cjs/index.native.js.map +1 -1
  106. package/dist/cjs/interfaces/router.native.js.map +1 -1
  107. package/dist/cjs/layouts/Drawer.native.js.map +1 -1
  108. package/dist/cjs/layouts/NativeTabs.native.js.map +1 -1
  109. package/dist/cjs/layouts/Stack.native.js +1 -1
  110. package/dist/cjs/layouts/Stack.native.js.map +1 -1
  111. package/dist/cjs/layouts/Tabs.native.js.map +1 -1
  112. package/dist/cjs/layouts/stack-utils/StackHeaderBackButton.native.js.map +1 -1
  113. package/dist/cjs/layouts/stack-utils/StackHeaderComponent.native.js.map +1 -1
  114. package/dist/cjs/layouts/stack-utils/StackHeaderLeft.native.js.map +1 -1
  115. package/dist/cjs/layouts/stack-utils/StackHeaderRight.native.js.map +1 -1
  116. package/dist/cjs/layouts/stack-utils/StackHeaderSearchBar.native.js.map +1 -1
  117. package/dist/cjs/layouts/stack-utils/StackHeaderTitle.native.js.map +1 -1
  118. package/dist/cjs/layouts/stack-utils/StackScreen.native.js.map +1 -1
  119. package/dist/cjs/layouts/stack-utils/__tests__/composition.test.native.js.map +1 -1
  120. package/dist/cjs/layouts/stack-utils/index.native.js.map +1 -1
  121. package/dist/cjs/layouts/withLayoutContext.native.js.map +1 -1
  122. package/dist/cjs/lazyWithRetry.cjs +32 -0
  123. package/dist/cjs/lazyWithRetry.native.js +37 -0
  124. package/dist/cjs/lazyWithRetry.native.js.map +1 -0
  125. package/dist/cjs/link/Link.native.js.map +1 -1
  126. package/dist/cjs/link/Redirect.native.js.map +1 -1
  127. package/dist/cjs/link/getLinking.native.js.map +1 -1
  128. package/dist/cjs/link/href.native.js.map +1 -1
  129. package/dist/cjs/link/path.native.js.map +1 -1
  130. package/dist/cjs/link/prefetchIntent.native.js.map +1 -1
  131. package/dist/cjs/link/prefetchIntent.test.native.js.map +1 -1
  132. package/dist/cjs/link/prefetchViewport.native.js.map +1 -1
  133. package/dist/cjs/link/prefetchViewport.test.native.js.map +1 -1
  134. package/dist/cjs/link/useLinkTo.native.js.map +1 -1
  135. package/dist/cjs/link/useLoadedNavigation.native.js.map +1 -1
  136. package/dist/cjs/metro-config/buildOneMetroResolverOverrides.native.js.map +1 -1
  137. package/dist/cjs/metro-config/getViteMetroPluginOptions.integration.test.native.js.map +1 -1
  138. package/dist/cjs/metro-config/getViteMetroPluginOptions.native.js +1 -1
  139. package/dist/cjs/metro-config/getViteMetroPluginOptions.native.js.map +1 -1
  140. package/dist/cjs/metro-config/withOne.native.js.map +1 -1
  141. package/dist/cjs/metro-config/withOne.test.native.js.map +1 -1
  142. package/dist/cjs/native-tabs.native.js.map +1 -1
  143. package/dist/cjs/notFoundState.native.js.map +1 -1
  144. package/dist/cjs/polyfills-mobile.native.js.map +1 -1
  145. package/dist/cjs/polyfills-server.native.js.map +1 -1
  146. package/dist/cjs/router/FlagsContext.native.js.map +1 -1
  147. package/dist/cjs/router/Route.native.js.map +1 -1
  148. package/dist/cjs/router/RouteInfoContext.native.js.map +1 -1
  149. package/dist/cjs/router/RouterStore.native.js.map +1 -1
  150. package/dist/cjs/router/SpaShellContext.native.js.map +1 -1
  151. package/dist/cjs/router/createRoute.native.js.map +1 -1
  152. package/dist/cjs/router/filterRootHTML.native.js.map +1 -1
  153. package/dist/cjs/router/findRouteNode.native.js.map +1 -1
  154. package/dist/cjs/router/getLinkingConfig.native.js.map +1 -1
  155. package/dist/cjs/router/getLinkingConfig.test.native.js.map +1 -1
  156. package/dist/cjs/router/getNormalizedStatePath.native.js.map +1 -1
  157. package/dist/cjs/router/getRouteInfo.native.js.map +1 -1
  158. package/dist/cjs/router/getRoutes.native.js.map +1 -1
  159. package/dist/cjs/router/getRoutes.test.native.js.map +1 -1
  160. package/dist/cjs/router/glob-patterns.native.js.map +1 -1
  161. package/dist/cjs/router/imperative-api.native.js.map +1 -1
  162. package/dist/cjs/router/interceptRoutes.native.js.map +1 -1
  163. package/dist/cjs/router/isIndexPath.native.js.map +1 -1
  164. package/dist/cjs/router/lastAction.native.js.map +1 -1
  165. package/dist/cjs/router/linkingConfig.native.js.map +1 -1
  166. package/dist/cjs/router/matchers.native.js.map +1 -1
  167. package/dist/cjs/router/matchers.test.native.js.map +1 -1
  168. package/dist/cjs/router/params.native.js.map +1 -1
  169. package/dist/cjs/router/router.cjs +22 -7
  170. package/dist/cjs/router/router.native.js.map +1 -1
  171. package/dist/cjs/router/serverLocationContext.native.js.map +1 -1
  172. package/dist/cjs/router/sitemap.native.js.map +1 -1
  173. package/dist/cjs/router/sitemap.test.native.js.map +1 -1
  174. package/dist/cjs/router/sortRoutes.native.js.map +1 -1
  175. package/dist/cjs/router/useInitializeOneRouter.native.js.map +1 -1
  176. package/dist/cjs/router/useNavigation.native.js.map +1 -1
  177. package/dist/cjs/router/useScreens.cjs +17 -2
  178. package/dist/cjs/router/useScreens.native.js +24 -4
  179. package/dist/cjs/router/useScreens.native.js.map +1 -1
  180. package/dist/cjs/router/useViteRoutes.native.js.map +1 -1
  181. package/dist/cjs/router/utils/getNavigateAction.native.js.map +1 -1
  182. package/dist/cjs/router/utils/getNavigateAction.test.native.js.map +1 -1
  183. package/dist/cjs/screensFeatureFlags.native.js.map +1 -1
  184. package/dist/cjs/serve-worker.native.js.map +1 -1
  185. package/dist/cjs/serve.cjs +2 -1
  186. package/dist/cjs/serve.native.js +2 -1
  187. package/dist/cjs/serve.native.js.map +1 -1
  188. package/dist/cjs/server/ServerContextScript.cjs +4 -3
  189. package/dist/cjs/server/ServerContextScript.native.js +6 -4
  190. package/dist/cjs/server/ServerContextScript.native.js.map +1 -1
  191. package/dist/cjs/server/createRoutesManifest.native.js.map +1 -1
  192. package/dist/cjs/server/getServerManifest.native.js.map +1 -1
  193. package/dist/cjs/server/getServerManifest.test.native.js.map +1 -1
  194. package/dist/cjs/server/oneServe.cjs +21 -8
  195. package/dist/cjs/server/oneServe.native.js +21 -8
  196. package/dist/cjs/server/oneServe.native.js.map +1 -1
  197. package/dist/cjs/server/setServerGlobals.native.js.map +1 -1
  198. package/dist/cjs/server/setupBuildOptions.cjs +6 -1
  199. package/dist/cjs/server/setupBuildOptions.native.js +10 -4
  200. package/dist/cjs/server/setupBuildOptions.native.js.map +1 -1
  201. package/dist/cjs/server/setupServerGlobals.native.js.map +1 -1
  202. package/dist/cjs/server/ssrLoaderData.native.js.map +1 -1
  203. package/dist/cjs/server/staticHtmlFetcher.native.js.map +1 -1
  204. package/dist/cjs/server/workerHandler.cjs +2 -2
  205. package/dist/cjs/server/workerHandler.native.js +2 -2
  206. package/dist/cjs/server/workerHandler.native.js.map +1 -1
  207. package/dist/cjs/server-render.native.js.map +1 -1
  208. package/dist/cjs/skewProtection.native.js.map +1 -1
  209. package/dist/cjs/testing-utils.native.js.map +1 -1
  210. package/dist/cjs/typed-routes/generateRouteTypes.native.js.map +1 -1
  211. package/dist/cjs/typed-routes/generateRouteTypes.test.native.js.map +1 -1
  212. package/dist/cjs/typed-routes/getTypedRoutesDeclarationFile.native.js.map +1 -1
  213. package/dist/cjs/typed-routes/getTypedRoutesDeclarationFile.test.native.js.map +1 -1
  214. package/dist/cjs/typed-routes/injectRouteHelpers.native.js.map +1 -1
  215. package/dist/cjs/types.native.js.map +1 -1
  216. package/dist/cjs/ui/Slot.native.js.map +1 -1
  217. package/dist/cjs/ui/TabContext.native.js.map +1 -1
  218. package/dist/cjs/ui/TabList.native.js.map +1 -1
  219. package/dist/cjs/ui/TabRouter.native.js.map +1 -1
  220. package/dist/cjs/ui/TabSlot.native.js.map +1 -1
  221. package/dist/cjs/ui/TabTrigger.native.js.map +1 -1
  222. package/dist/cjs/ui/Tabs.native.js.map +1 -1
  223. package/dist/cjs/ui/common.native.js.map +1 -1
  224. package/dist/cjs/ui/index.native.js.map +1 -1
  225. package/dist/cjs/ui/useComponent.native.js.map +1 -1
  226. package/dist/cjs/useFocusEffect.native.js.map +1 -1
  227. package/dist/cjs/useLoader.cjs +30 -7
  228. package/dist/cjs/useLoader.native.js +30 -7
  229. package/dist/cjs/useLoader.native.js.map +1 -1
  230. package/dist/cjs/useMatches.native.js.map +1 -1
  231. package/dist/cjs/useMatches.test.native.js.map +1 -1
  232. package/dist/cjs/useServerHeadInsertion.native.js.map +1 -1
  233. package/dist/cjs/utils/assertIsReady.native.js.map +1 -1
  234. package/dist/cjs/utils/buildOutputPointer.cjs +81 -0
  235. package/dist/cjs/utils/buildOutputPointer.native.js +92 -0
  236. package/dist/cjs/utils/buildOutputPointer.native.js.map +1 -0
  237. package/dist/cjs/utils/buildOutputPointer.test.cjs +94 -0
  238. package/dist/cjs/utils/buildOutputPointer.test.native.js +97 -0
  239. package/dist/cjs/utils/buildOutputPointer.test.native.js.map +1 -0
  240. package/dist/cjs/utils/children.native.js.map +1 -1
  241. package/dist/cjs/utils/cleanUrl.native.js.map +1 -1
  242. package/dist/cjs/utils/cleanUrl.test.native.js.map +1 -1
  243. package/dist/cjs/utils/dynamicImport.cjs +32 -6
  244. package/dist/cjs/utils/dynamicImport.native.js +35 -2
  245. package/dist/cjs/utils/dynamicImport.native.js.map +1 -1
  246. package/dist/cjs/utils/dynamicImport.test.cjs +87 -0
  247. package/dist/cjs/utils/dynamicImport.test.native.js +108 -0
  248. package/dist/cjs/utils/dynamicImport.test.native.js.map +1 -0
  249. package/dist/cjs/utils/ensureExists.native.js.map +1 -1
  250. package/dist/cjs/utils/evictOldest.native.js.map +1 -1
  251. package/dist/cjs/utils/existsAsync.native.js.map +1 -1
  252. package/dist/cjs/utils/findRootLayout.native.js.map +1 -1
  253. package/dist/cjs/utils/getPageExport.native.js.map +1 -1
  254. package/dist/cjs/utils/getPathnameFromFilePath.native.js.map +1 -1
  255. package/dist/cjs/utils/getPathnameFromFilePath.test.native.js.map +1 -1
  256. package/dist/cjs/utils/getRouterRootFromOneOptions.native.js.map +1 -1
  257. package/dist/cjs/utils/globDir.native.js.map +1 -1
  258. package/dist/cjs/utils/hashString.native.js.map +1 -1
  259. package/dist/cjs/utils/htmlEscape.native.js.map +1 -1
  260. package/dist/cjs/utils/isResponse.native.js.map +1 -1
  261. package/dist/cjs/utils/isRolldown.native.js.map +1 -1
  262. package/dist/cjs/utils/isStatus.native.js.map +1 -1
  263. package/dist/cjs/utils/pLimit.native.js.map +1 -1
  264. package/dist/cjs/utils/posixPathContract.test.cjs +66 -0
  265. package/dist/cjs/utils/posixPathContract.test.native.js +89 -0
  266. package/dist/cjs/utils/posixPathContract.test.native.js.map +1 -0
  267. package/dist/cjs/utils/promiseWithResolvers.native.js.map +1 -1
  268. package/dist/cjs/utils/rand.native.js.map +1 -1
  269. package/dist/cjs/utils/redirect.native.js.map +1 -1
  270. package/dist/cjs/utils/removeParams.native.js.map +1 -1
  271. package/dist/cjs/utils/removeSearch.native.js.map +1 -1
  272. package/dist/cjs/utils/removeUndefined.native.js.map +1 -1
  273. package/dist/cjs/utils/routeFileWatch.native.js.map +1 -1
  274. package/dist/cjs/utils/routeFileWatch.test.native.js.map +1 -1
  275. package/dist/cjs/utils/style.native.js.map +1 -1
  276. package/dist/cjs/utils/toAbsolute.native.js.map +1 -1
  277. package/dist/cjs/utils/toServerOutputPath.cjs +36 -0
  278. package/dist/cjs/utils/toServerOutputPath.native.js +39 -0
  279. package/dist/cjs/utils/toServerOutputPath.native.js.map +1 -0
  280. package/dist/cjs/utils/toServerOutputPath.test.cjs +27 -0
  281. package/dist/cjs/utils/toServerOutputPath.test.native.js +30 -0
  282. package/dist/cjs/utils/toServerOutputPath.test.native.js.map +1 -0
  283. package/dist/cjs/utils/trackLoaderDependencies.native.js.map +1 -1
  284. package/dist/cjs/utils/url.native.js.map +1 -1
  285. package/dist/cjs/utils/useConstant.native.js.map +1 -1
  286. package/dist/cjs/utils/watchFile.native.js.map +1 -1
  287. package/dist/cjs/utils/weakKey.native.js.map +1 -1
  288. package/dist/cjs/utils/weakMemo.native.js.map +1 -1
  289. package/dist/cjs/utils/withStaticProperties.native.js.map +1 -1
  290. package/dist/cjs/utils/workerImport.native.js.map +1 -1
  291. package/dist/cjs/validateParams.native.js.map +1 -1
  292. package/dist/cjs/validateSearch.native.js.map +1 -1
  293. package/dist/cjs/vercel/build/buildVercelOutputDirectory.native.js.map +1 -1
  294. package/dist/cjs/vercel/build/config/vc-build-output-config-base.native.js.map +1 -1
  295. package/dist/cjs/vercel/build/config/vc-config-base.native.js.map +1 -1
  296. package/dist/cjs/vercel/build/config/vc-package-base.native.js.map +1 -1
  297. package/dist/cjs/vercel/build/generate/createApiServerlessFunction.native.js.map +1 -1
  298. package/dist/cjs/vercel/build/generate/createSsrServerlessFunction.native.js.map +1 -1
  299. package/dist/cjs/vercel/build/getPathFromRoute.native.js.map +1 -1
  300. package/dist/cjs/views/EmptyRoute.native.js.map +1 -1
  301. package/dist/cjs/views/ErrorBoundary.native.js.map +1 -1
  302. package/dist/cjs/views/LoadProgressBar.native.js.map +1 -1
  303. package/dist/cjs/views/Navigator.native.js.map +1 -1
  304. package/dist/cjs/views/OneStackRouter.native.js.map +1 -1
  305. package/dist/cjs/views/Protected.native.js.map +1 -1
  306. package/dist/cjs/views/RootErrorBoundary.native.js.map +1 -1
  307. package/dist/cjs/views/Screen.native.js.map +1 -1
  308. package/dist/cjs/views/ScrollBehavior.native.js.map +1 -1
  309. package/dist/cjs/views/SourceInspector.native.js.map +1 -1
  310. package/dist/cjs/views/Try.native.js.map +1 -1
  311. package/dist/cjs/vite/DevHead.native.js.map +1 -1
  312. package/dist/cjs/vite/constants.native.js.map +1 -1
  313. package/dist/cjs/vite/customNodeExternals.native.js.map +1 -1
  314. package/dist/cjs/vite/ensureTsConfig.native.js.map +1 -1
  315. package/dist/cjs/vite/findDepsToOptimize.native.js.map +1 -1
  316. package/dist/cjs/vite/getManifest.native.js.map +1 -1
  317. package/dist/cjs/vite/getManifest.test.cjs +46 -0
  318. package/dist/cjs/vite/getManifest.test.native.js +52 -0
  319. package/dist/cjs/vite/getManifest.test.native.js.map +1 -0
  320. package/dist/cjs/vite/loadConfig.native.js.map +1 -1
  321. package/dist/cjs/vite/makePluginWebOnly.native.js.map +1 -1
  322. package/dist/cjs/vite/one-server-only.test.native.js.map +1 -1
  323. package/dist/cjs/vite/one.cjs +4 -3
  324. package/dist/cjs/vite/one.native.js +4 -3
  325. package/dist/cjs/vite/one.native.js.map +1 -1
  326. package/dist/cjs/vite/plugins/SSRCSSPlugin.native.js.map +1 -1
  327. package/dist/cjs/vite/plugins/clientTreeShakePlugin.native.js.map +1 -1
  328. package/dist/cjs/vite/plugins/clientTreeShakePlugin.test.native.js.map +1 -1
  329. package/dist/cjs/vite/plugins/criticalCSSPlugin.native.js.map +1 -1
  330. package/dist/cjs/vite/plugins/criticalCSSPlugin.test.native.js.map +1 -1
  331. package/dist/cjs/vite/plugins/devtoolsPlugin.native.js.map +1 -1
  332. package/dist/cjs/vite/plugins/environmentGuardPlugin.native.js.map +1 -1
  333. package/dist/cjs/vite/plugins/environmentGuardPlugin.test.native.js.map +1 -1
  334. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.cjs +25 -16
  335. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js +25 -16
  336. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js.map +1 -1
  337. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.test.native.js.map +1 -1
  338. package/dist/cjs/vite/plugins/fixDependenciesPlugin.native.js.map +1 -1
  339. package/dist/cjs/vite/plugins/generateFileSystemRouteTypesPlugin.native.js.map +1 -1
  340. package/dist/cjs/vite/plugins/imageDataPlugin.native.js.map +1 -1
  341. package/dist/cjs/vite/plugins/imageDataPlugin.test.native.js.map +1 -1
  342. package/dist/cjs/vite/plugins/removeReactNativeWebAnimatedPlugin.native.js.map +1 -1
  343. package/dist/cjs/vite/plugins/sourceInspectorPlugin.cjs +1 -1
  344. package/dist/cjs/vite/plugins/sourceInspectorPlugin.native.js +1 -1
  345. package/dist/cjs/vite/plugins/sourceInspectorPlugin.native.js.map +1 -1
  346. package/dist/cjs/vite/plugins/sourceInspectorPlugin.test.native.js.map +1 -1
  347. package/dist/cjs/vite/plugins/useDomPlugin.native.js.map +1 -1
  348. package/dist/cjs/vite/plugins/virtualEntryConstants.native.js.map +1 -1
  349. package/dist/cjs/vite/plugins/virtualEntryPlugin.cjs +2 -1
  350. package/dist/cjs/vite/plugins/virtualEntryPlugin.native.js +2 -1
  351. package/dist/cjs/vite/plugins/virtualEntryPlugin.native.js.map +1 -1
  352. package/dist/cjs/vite/plugins/virtualEntryPlugin.test.native.js.map +1 -1
  353. package/dist/cjs/vite/plugins/warmRoutesPlugin.native.js.map +1 -1
  354. package/dist/cjs/vite/replaceLoader.native.js.map +1 -1
  355. package/dist/cjs/vite/resolveResponse.native.js.map +1 -1
  356. package/dist/cjs/vite/types.native.js.map +1 -1
  357. package/dist/cjs/vite-auto-warm.native.js.map +1 -1
  358. package/dist/cjs/vite.native.js.map +1 -1
  359. package/dist/cjs/zero/getQueryKey.native.js.map +1 -1
  360. package/dist/cjs/zero/isZeroQuery.native.js.map +1 -1
  361. package/dist/cjs/zero/resolveQuery.native.js.map +1 -1
  362. package/dist/cjs/zero/subscribeToQuery.native.js.map +1 -1
  363. package/dist/cjs/zero/types.native.js.map +1 -1
  364. package/dist/cjs/zero/useQuery.native.js.map +1 -1
  365. package/dist/cjs/zero/useQueryZero.native.js.map +1 -1
  366. package/dist/cjs/zero.native.js.map +1 -1
  367. package/dist/esm/babel-preset/index.mjs +7 -2
  368. package/dist/esm/babel-preset/index.mjs.map +1 -1
  369. package/dist/esm/babel-preset/index.native.js +7 -2
  370. package/dist/esm/babel-preset/index.native.js.map +1 -1
  371. package/dist/esm/babel-preset/index.test.mjs +13 -0
  372. package/dist/esm/babel-preset/index.test.mjs.map +1 -1
  373. package/dist/esm/babel-preset/index.test.native.js +13 -0
  374. package/dist/esm/babel-preset/index.test.native.js.map +1 -1
  375. package/dist/esm/cli/build.mjs +15 -12
  376. package/dist/esm/cli/build.mjs.map +1 -1
  377. package/dist/esm/cli/build.native.js +15 -12
  378. package/dist/esm/cli/build.native.js.map +1 -1
  379. package/dist/esm/cli/buildPage.mjs +2 -1
  380. package/dist/esm/cli/buildPage.mjs.map +1 -1
  381. package/dist/esm/cli/buildPage.native.js +2 -1
  382. package/dist/esm/cli/buildPage.native.js.map +1 -1
  383. package/dist/esm/constants.mjs +14 -5
  384. package/dist/esm/constants.mjs.map +1 -1
  385. package/dist/esm/constants.native.js +10 -1
  386. package/dist/esm/constants.native.js.map +1 -1
  387. package/dist/esm/constants.test.mjs +37 -0
  388. package/dist/esm/constants.test.mjs.map +1 -0
  389. package/dist/esm/constants.test.native.js +37 -0
  390. package/dist/esm/constants.test.native.js.map +1 -0
  391. package/dist/esm/createApp.mjs +3 -2
  392. package/dist/esm/createApp.mjs.map +1 -1
  393. package/dist/esm/daemon/server.mjs +23 -0
  394. package/dist/esm/daemon/server.mjs.map +1 -1
  395. package/dist/esm/daemon/server.native.js +61 -0
  396. package/dist/esm/daemon/server.native.js.map +1 -1
  397. package/dist/esm/index.js +3 -1
  398. package/dist/esm/index.js.map +1 -1
  399. package/dist/esm/index.mjs +3 -1
  400. package/dist/esm/index.mjs.map +1 -1
  401. package/dist/esm/index.native.js +3 -1
  402. package/dist/esm/index.native.js.map +1 -1
  403. package/dist/esm/lazyWithRetry.mjs +7 -0
  404. package/dist/esm/lazyWithRetry.mjs.map +1 -0
  405. package/dist/esm/lazyWithRetry.native.js +9 -0
  406. package/dist/esm/lazyWithRetry.native.js.map +1 -0
  407. package/dist/esm/router/router.mjs +22 -7
  408. package/dist/esm/router/router.mjs.map +1 -1
  409. package/dist/esm/router/router.native.js.map +1 -1
  410. package/dist/esm/router/useScreens.mjs +18 -3
  411. package/dist/esm/router/useScreens.mjs.map +1 -1
  412. package/dist/esm/router/useScreens.native.js +25 -5
  413. package/dist/esm/router/useScreens.native.js.map +1 -1
  414. package/dist/esm/serve.mjs +2 -1
  415. package/dist/esm/serve.mjs.map +1 -1
  416. package/dist/esm/serve.native.js +2 -1
  417. package/dist/esm/serve.native.js.map +1 -1
  418. package/dist/esm/server/ServerContextScript.mjs +4 -3
  419. package/dist/esm/server/ServerContextScript.mjs.map +1 -1
  420. package/dist/esm/server/ServerContextScript.native.js +6 -4
  421. package/dist/esm/server/ServerContextScript.native.js.map +1 -1
  422. package/dist/esm/server/oneServe.mjs +23 -10
  423. package/dist/esm/server/oneServe.mjs.map +1 -1
  424. package/dist/esm/server/oneServe.native.js +23 -10
  425. package/dist/esm/server/oneServe.native.js.map +1 -1
  426. package/dist/esm/server/setupBuildOptions.mjs +6 -1
  427. package/dist/esm/server/setupBuildOptions.mjs.map +1 -1
  428. package/dist/esm/server/setupBuildOptions.native.js +10 -4
  429. package/dist/esm/server/setupBuildOptions.native.js.map +1 -1
  430. package/dist/esm/server/workerHandler.mjs +3 -3
  431. package/dist/esm/server/workerHandler.mjs.map +1 -1
  432. package/dist/esm/server/workerHandler.native.js +3 -3
  433. package/dist/esm/server/workerHandler.native.js.map +1 -1
  434. package/dist/esm/useLoader.mjs +30 -7
  435. package/dist/esm/useLoader.mjs.map +1 -1
  436. package/dist/esm/useLoader.native.js +30 -7
  437. package/dist/esm/useLoader.native.js.map +1 -1
  438. package/dist/esm/utils/buildOutputPointer.mjs +43 -0
  439. package/dist/esm/utils/buildOutputPointer.mjs.map +1 -0
  440. package/dist/esm/utils/buildOutputPointer.native.js +51 -0
  441. package/dist/esm/utils/buildOutputPointer.native.js.map +1 -0
  442. package/dist/esm/utils/buildOutputPointer.test.mjs +71 -0
  443. package/dist/esm/utils/buildOutputPointer.test.mjs.map +1 -0
  444. package/dist/esm/utils/buildOutputPointer.test.native.js +71 -0
  445. package/dist/esm/utils/buildOutputPointer.test.native.js.map +1 -0
  446. package/dist/esm/utils/dynamicImport.mjs +29 -6
  447. package/dist/esm/utils/dynamicImport.mjs.map +1 -1
  448. package/dist/esm/utils/dynamicImport.native.js +32 -2
  449. package/dist/esm/utils/dynamicImport.native.js.map +1 -1
  450. package/dist/esm/utils/dynamicImport.test.mjs +88 -0
  451. package/dist/esm/utils/dynamicImport.test.mjs.map +1 -0
  452. package/dist/esm/utils/dynamicImport.test.native.js +106 -0
  453. package/dist/esm/utils/dynamicImport.test.native.js.map +1 -0
  454. package/dist/esm/utils/posixPathContract.test.mjs +67 -0
  455. package/dist/esm/utils/posixPathContract.test.mjs.map +1 -0
  456. package/dist/esm/utils/posixPathContract.test.native.js +87 -0
  457. package/dist/esm/utils/posixPathContract.test.native.js.map +1 -0
  458. package/dist/esm/utils/toServerOutputPath.mjs +11 -0
  459. package/dist/esm/utils/toServerOutputPath.mjs.map +1 -0
  460. package/dist/esm/utils/toServerOutputPath.native.js +11 -0
  461. package/dist/esm/utils/toServerOutputPath.native.js.map +1 -0
  462. package/dist/esm/utils/toServerOutputPath.test.mjs +28 -0
  463. package/dist/esm/utils/toServerOutputPath.test.mjs.map +1 -0
  464. package/dist/esm/utils/toServerOutputPath.test.native.js +28 -0
  465. package/dist/esm/utils/toServerOutputPath.test.native.js.map +1 -0
  466. package/dist/esm/vite/getManifest.test.mjs +47 -0
  467. package/dist/esm/vite/getManifest.test.mjs.map +1 -0
  468. package/dist/esm/vite/getManifest.test.native.js +50 -0
  469. package/dist/esm/vite/getManifest.test.native.js.map +1 -0
  470. package/dist/esm/vite/one.mjs +4 -3
  471. package/dist/esm/vite/one.mjs.map +1 -1
  472. package/dist/esm/vite/one.native.js +4 -3
  473. package/dist/esm/vite/one.native.js.map +1 -1
  474. package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs +26 -17
  475. package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs.map +1 -1
  476. package/dist/esm/vite/plugins/fileSystemRouterPlugin.native.js +26 -17
  477. package/dist/esm/vite/plugins/fileSystemRouterPlugin.native.js.map +1 -1
  478. package/dist/esm/vite/plugins/sourceInspectorPlugin.mjs +1 -1
  479. package/dist/esm/vite/plugins/sourceInspectorPlugin.mjs.map +1 -1
  480. package/dist/esm/vite/plugins/sourceInspectorPlugin.native.js +1 -1
  481. package/dist/esm/vite/plugins/sourceInspectorPlugin.native.js.map +1 -1
  482. package/dist/esm/vite/plugins/virtualEntryPlugin.mjs +2 -1
  483. package/dist/esm/vite/plugins/virtualEntryPlugin.mjs.map +1 -1
  484. package/dist/esm/vite/plugins/virtualEntryPlugin.native.js +2 -1
  485. package/dist/esm/vite/plugins/virtualEntryPlugin.native.js.map +1 -1
  486. package/package.json +23 -9
  487. package/src/babel-preset/index.test.ts +20 -0
  488. package/src/babel-preset/index.ts +21 -4
  489. package/src/cli/build.ts +23 -15
  490. package/src/cli/buildPage.ts +3 -1
  491. package/src/constants.test.ts +55 -0
  492. package/src/constants.ts +32 -4
  493. package/src/createApp.tsx +7 -2
  494. package/src/daemon/server.ts +30 -0
  495. package/src/index.ts +9 -0
  496. package/src/lazyWithRetry.tsx +21 -0
  497. package/src/router/router.ts +32 -7
  498. package/src/router/useScreens.tsx +22 -3
  499. package/src/serve.ts +2 -2
  500. package/src/server/ServerContextScript.tsx +9 -3
  501. package/src/server/oneServe.ts +33 -15
  502. package/src/server/setupBuildOptions.ts +11 -2
  503. package/src/server/workerHandler.ts +9 -5
  504. package/src/useLoader.ts +41 -6
  505. package/src/utils/buildOutputPointer.test.ts +97 -0
  506. package/src/utils/buildOutputPointer.ts +71 -0
  507. package/src/utils/dynamicImport.test.ts +92 -0
  508. package/src/utils/dynamicImport.ts +80 -13
  509. package/src/utils/posixPathContract.test.ts +97 -0
  510. package/src/utils/toServerOutputPath.test.ts +49 -0
  511. package/src/utils/toServerOutputPath.ts +11 -0
  512. package/src/vite/getManifest.test.ts +49 -0
  513. package/src/vite/one.ts +9 -5
  514. package/src/vite/plugins/fileSystemRouterPlugin.tsx +31 -17
  515. package/src/vite/plugins/sourceInspectorPlugin.ts +2 -1
  516. package/src/vite/plugins/virtualEntryPlugin.ts +5 -2
  517. package/types/babel-preset/index.d.ts.map +1 -1
  518. package/types/cli/build.d.ts.map +1 -1
  519. package/types/cli/buildPage.d.ts.map +1 -1
  520. package/types/constants.d.ts +7 -4
  521. package/types/constants.d.ts.map +1 -1
  522. package/types/constants.test.d.ts +2 -0
  523. package/types/constants.test.d.ts.map +1 -0
  524. package/types/createApp.d.ts.map +1 -1
  525. package/types/daemon/server.d.ts.map +1 -1
  526. package/types/index.d.ts +2 -0
  527. package/types/index.d.ts.map +1 -1
  528. package/types/lazyWithRetry.d.ts +6 -0
  529. package/types/lazyWithRetry.d.ts.map +1 -0
  530. package/types/router/router.d.ts.map +1 -1
  531. package/types/router/useScreens.d.ts.map +1 -1
  532. package/types/serve.d.ts.map +1 -1
  533. package/types/server/ServerContextScript.d.ts.map +1 -1
  534. package/types/server/oneServe.d.ts.map +1 -1
  535. package/types/server/setupBuildOptions.d.ts.map +1 -1
  536. package/types/server/workerHandler.d.ts.map +1 -1
  537. package/types/useLoader.d.ts.map +1 -1
  538. package/types/utils/buildOutputPointer.d.ts +4 -0
  539. package/types/utils/buildOutputPointer.d.ts.map +1 -0
  540. package/types/utils/buildOutputPointer.test.d.ts +2 -0
  541. package/types/utils/buildOutputPointer.test.d.ts.map +1 -0
  542. package/types/utils/dynamicImport.d.ts +10 -2
  543. package/types/utils/dynamicImport.d.ts.map +1 -1
  544. package/types/utils/dynamicImport.test.d.ts +2 -0
  545. package/types/utils/dynamicImport.test.d.ts.map +1 -0
  546. package/types/utils/posixPathContract.test.d.ts +2 -0
  547. package/types/utils/posixPathContract.test.d.ts.map +1 -0
  548. package/types/utils/toServerOutputPath.d.ts +2 -0
  549. package/types/utils/toServerOutputPath.d.ts.map +1 -0
  550. package/types/utils/toServerOutputPath.test.d.ts +2 -0
  551. package/types/utils/toServerOutputPath.test.d.ts.map +1 -0
  552. package/types/vite/getManifest.test.d.ts +2 -0
  553. package/types/vite/getManifest.test.d.ts.map +1 -0
  554. package/types/vite/one.d.ts.map +1 -1
  555. package/types/vite/plugins/fileSystemRouterPlugin.d.ts.map +1 -1
  556. package/types/vite/plugins/sourceInspectorPlugin.d.ts.map +1 -1
  557. package/types/vite/plugins/virtualEntryPlugin.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["resolve","configuration","isNativeEnvironment","API_ROUTE_GLOB_PATTERN","ROUTE_GLOB_PATTERN","ROUTE_NATIVE_EXCLUSION_GLOB_PATTERNS","ROUTE_WEB_EXCLUSION_GLOB_PATTERNS","resolvedVirtualEntryId","resolvedVirtualEntryIdNative","virtualEntryId","virtualEntryIdNative","normalizeSetupFile","setupFile","client","server","ios","android","native","sf","getSetupFileImport","environmentName","setupFiles","useStaticImport","root","envMap","ssr","key","importStatement","promiseDeclaration","promiseVarName","resolvedSetupFile","JSON","stringify","createVirtualEntry","options","_options_router_ignoredRouteFiles","_options_router","routeGlobs","router","ignoredRouteFiles","map","pattern","apiRouteGlobs","viteRoot","isDevMode","name","enforce","configResolved","config","command","resolveId","id","load","_options_router2","isNative","environment","isSSR","setupResult","nativewindImport","enableNativewind","setupPromiseArg","linkingArg","linking","p","flags","_options_router1","isNative1","setupResult1","linkingArg1"],"sources":["../../../../src/vite/plugins/virtualEntryPlugin.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["resolve","pathToFileURL","configuration","isNativeEnvironment","API_ROUTE_GLOB_PATTERN","ROUTE_GLOB_PATTERN","ROUTE_NATIVE_EXCLUSION_GLOB_PATTERNS","ROUTE_WEB_EXCLUSION_GLOB_PATTERNS","resolvedVirtualEntryId","resolvedVirtualEntryIdNative","virtualEntryId","virtualEntryIdNative","normalizeSetupFile","setupFile","client","server","ios","android","native","sf","getSetupFileImport","environmentName","setupFiles","useStaticImport","root","envMap","ssr","key","importStatement","promiseDeclaration","promiseVarName","resolvedSetupFile","href","JSON","stringify","createVirtualEntry","options","_options_router_ignoredRouteFiles","_options_router","routeGlobs","router","ignoredRouteFiles","map","pattern","apiRouteGlobs","viteRoot","isDevMode","name","enforce","configResolved","config","command","resolveId","id","load","_options_router2","isNative","environment","isSSR","setupResult","nativewindImport","enableNativewind","setupPromiseArg","linkingArg","linking","p","flags","_options_router1","isNative1","setupResult1","linkingArg1"],"sources":["../../../../src/vite/plugins/virtualEntryPlugin.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "one",
3
- "version": "1.17.9",
3
+ "version": "1.17.10",
4
4
  "license": "BSD-3-Clause",
5
5
  "sideEffects": [
6
6
  "setup.mjs",
@@ -119,6 +119,12 @@
119
119
  "import": "./dist/esm/drawer.mjs",
120
120
  "require": "./dist/cjs/drawer.js"
121
121
  },
122
+ "./native-tabs": {
123
+ "react-native": "./dist/esm/native-tabs.native.js",
124
+ "types": "./types/native-tabs.d.ts",
125
+ "import": "./dist/esm/native-tabs.mjs",
126
+ "require": "./dist/cjs/native-tabs.js"
127
+ },
122
128
  "./headless": {
123
129
  "types": "./types/headless.d.ts",
124
130
  "import": "./dist/esm/headless.mjs",
@@ -180,18 +186,18 @@
180
186
  "@cloudflare/vite-plugin": "^1.33.1",
181
187
  "@swc/core": "^1.14.0",
182
188
  "@ungap/structured-clone": "^1.2.0",
183
- "@vxrn/color-scheme": "1.17.9",
184
- "@vxrn/compiler": "1.17.9",
185
- "@vxrn/resolve": "1.17.9",
186
- "@vxrn/tslib-lite": "1.17.9",
187
- "@vxrn/use-isomorphic-layout-effect": "1.17.9",
188
- "@vxrn/vite-plugin-metro": "1.17.9",
189
+ "@vxrn/color-scheme": "1.17.10",
190
+ "@vxrn/compiler": "1.17.10",
191
+ "@vxrn/resolve": "1.17.10",
192
+ "@vxrn/tslib-lite": "1.17.10",
193
+ "@vxrn/use-isomorphic-layout-effect": "1.17.10",
194
+ "@vxrn/vite-plugin-metro": "1.17.10",
189
195
  "babel-dead-code-elimination": "1.0.10",
190
196
  "babel-plugin-module-resolver": "^5.0.2",
191
197
  "babel-preset-expo": "*",
192
198
  "citty": "^0.1.6",
193
199
  "core-js": "^3.38.1",
194
- "create-vxrn": "1.17.9",
200
+ "create-vxrn": "1.17.10",
195
201
  "escape-string-regexp": "^5.0.0",
196
202
  "expo-linking": "~55.0.7",
197
203
  "expo-modules-core": "~55.0.16",
@@ -211,16 +217,18 @@
211
217
  "tsconfig-paths": "^4",
212
218
  "use-latest-callback": "^0.2.3",
213
219
  "vite": "^8.0.13",
214
- "vxrn": "1.17.9",
220
+ "vxrn": "1.17.10",
215
221
  "ws": "^8.18.0",
216
222
  "xxhashjs": "^0.2.2"
217
223
  },
218
224
  "peerDependencies": {
225
+ "@bottom-tabs/react-navigation": ">=0.9.0",
219
226
  "@react-navigation/drawer": "~7.9.8",
220
227
  "@react-navigation/native": "~7.2.2",
221
228
  "react": "^19.2.0",
222
229
  "react-dom": "^19.2.0",
223
230
  "react-native": "0.83.2",
231
+ "react-native-bottom-tabs": ">=1.0.0",
224
232
  "react-native-gesture-handler": ">=2.0.0",
225
233
  "react-native-reanimated": ">=4.0.0",
226
234
  "react-native-safe-area-context": ">=5.0.0",
@@ -229,12 +237,18 @@
229
237
  "sharp": "^0.34.5"
230
238
  },
231
239
  "peerDependenciesMeta": {
240
+ "@bottom-tabs/react-navigation": {
241
+ "optional": true
242
+ },
232
243
  "@react-navigation/drawer": {
233
244
  "optional": true
234
245
  },
235
246
  "react-native": {
236
247
  "optional": true
237
248
  },
249
+ "react-native-bottom-tabs": {
250
+ "optional": true
251
+ },
238
252
  "react-native-gesture-handler": {
239
253
  "optional": true
240
254
  },
@@ -147,4 +147,24 @@ describe('buildOneBabelPlugins', () => {
147
147
  const oneRouterMetro = plugins[3] as [string, Record<string, unknown>]
148
148
  expect(oneRouterMetro[1].ONE_ROUTER_LINKING_CONFIG).toBe(linking)
149
149
  })
150
+
151
+ // both values are inlined by babel as JS literals — `ONE_ROUTER_APP_ROOT_RELATIVE_TO_ENTRY`
152
+ // becomes the first arg of `require.context()`, `ONE_SETUP_FILE_NATIVE` becomes the literal
153
+ // in `import "..."`. Native separators on Windows produce platform-conditional AST that
154
+ // breaks source-maps, snapshot tests, and rolldown/Vite POSIX module-graph keys.
155
+ it('emits forward-slash-only paths for `require.context` + `import` specifiers', () => {
156
+ const plugins = buildOneBabelPlugins({
157
+ projectRoot,
158
+ relativeRouterRoot: 'app',
159
+ setupFile: 'src/setup-native.ts',
160
+ includeImportMetaEnv: false,
161
+ })
162
+
163
+ const oneRouterMetro = plugins[3] as [string, Record<string, unknown>]
164
+ const appRoot = oneRouterMetro[1].ONE_ROUTER_APP_ROOT_RELATIVE_TO_ENTRY as string
165
+ const setupNative = oneRouterMetro[1].ONE_SETUP_FILE_NATIVE as string
166
+
167
+ expect(appRoot).not.toContain('\\')
168
+ expect(setupNative).not.toContain('\\')
169
+ })
150
170
  })
@@ -8,6 +8,13 @@ import {
8
8
  ROUTE_NATIVE_EXCLUSION_GLOB_PATTERNS,
9
9
  } from '../router/glob-patterns'
10
10
 
11
+ // forward-slash a relative path produced by `path.relative` on every platform.
12
+ // `babel-preset` deliberately avoids `vite.normalizePath` so the preset stays
13
+ // usable in standalone Metro contexts where Vite isn't installed.
14
+ function toPosixRelativePath(relativePath: string): string {
15
+ return path.sep === '\\' ? relativePath.replace(/\\/g, '/') : relativePath
16
+ }
17
+
11
18
  // Babel's `ConfigAPI` shape: cache mutator, env helper, and a cwd accessor.
12
19
  // The public @babel/core typing omits `cwd()` so we describe it locally.
13
20
  type BabelConfigAPI = {
@@ -138,7 +145,13 @@ export function buildOneBabelPlugins({
138
145
  ? setupFile
139
146
  : setupFile.native || setupFile.ios || setupFile.android
140
147
  if (!file) return undefined
141
- return path.relative(path.dirname(metroEntryPath), path.join(projectRoot, file))
148
+ // posix-only — embedded as a JS import specifier in `one-router-metro` (becomes
149
+ // literal `import "..."`); backslashes on Windows produce platform-conditional AST
150
+ // and silently break rolldown/Vite POSIX module-graph keys for source-map / snapshot
151
+ // consumers downstream.
152
+ return toPosixRelativePath(
153
+ path.relative(path.dirname(metroEntryPath), path.join(projectRoot, file))
154
+ )
142
155
  })()
143
156
 
144
157
  return [
@@ -173,9 +186,13 @@ export function buildOneBabelPlugins({
173
186
  [
174
187
  'one/babel-plugin-one-router-metro',
175
188
  {
176
- ONE_ROUTER_APP_ROOT_RELATIVE_TO_ENTRY: path.relative(
177
- path.dirname(metroEntryPath),
178
- path.join(projectRoot, relativeRouterRoot)
189
+ // posix-only — becomes the first arg of `require.context()` in `one-router-metro`;
190
+ // backslashes on Windows drift the babel-emitted AST per platform.
191
+ ONE_ROUTER_APP_ROOT_RELATIVE_TO_ENTRY: toPosixRelativePath(
192
+ path.relative(
193
+ path.dirname(metroEntryPath),
194
+ path.join(projectRoot, relativeRouterRoot)
195
+ )
179
196
  ),
180
197
  ONE_ROUTER_ROOT_FOLDER_NAME: relativeRouterRoot,
181
198
  ONE_ROUTER_REQUIRE_CONTEXT_REGEX_STRING:
package/src/cli/build.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { createRequire } from 'node:module'
2
2
  import { cpus } from 'node:os'
3
- import Path, { join, relative, resolve } from 'node:path'
3
+ import Path, { join, posix, relative, resolve } from 'node:path'
4
4
  import { resolvePath } from '@vxrn/resolve'
5
5
  import FSExtra from 'fs-extra'
6
6
  import MicroMatch from 'micromatch'
@@ -22,6 +22,7 @@ import {
22
22
 
23
23
  import * as constants from '../constants'
24
24
  import { setServerGlobals } from '../server/setServerGlobals'
25
+ import { writeBuildOutputPointer } from '../utils/buildOutputPointer'
25
26
  import { getPathnameFromFilePath } from '../utils/getPathnameFromFilePath'
26
27
  import { getRouterRootFromOneOptions } from '../utils/getRouterRootFromOneOptions'
27
28
  import { isRolldown } from '../utils/isRolldown'
@@ -552,19 +553,17 @@ export async function build(args: {
552
553
  return name
553
554
  },
554
555
  chunkFileNames: (chunkInfo) => {
555
- const dir = Path.dirname(chunkInfo.name)
556
- const name = Path.basename(
557
- chunkInfo.name,
558
- Path.extname(chunkInfo.name)
559
- )
560
- return Path.join(dir, `${name}-[hash].cjs`)
556
+ const chunkName = normalizePath(chunkInfo.name)
557
+ const dir = posix.dirname(chunkName)
558
+ const name = posix.basename(chunkName, posix.extname(chunkName))
559
+ return posix.join(dir, `${name}-[hash].cjs`)
561
560
  },
562
561
  assetFileNames: (assetInfo) => {
563
- const name = assetInfo.name ?? ''
564
- const dir = Path.dirname(name)
565
- const baseName = Path.basename(name, Path.extname(name))
566
- const ext = Path.extname(name)
567
- return Path.join(dir, `${baseName}-[hash]${ext}`)
562
+ const assetName = normalizePath(assetInfo.name ?? '')
563
+ const dir = posix.dirname(assetName)
564
+ const baseName = posix.basename(assetName, posix.extname(assetName))
565
+ const ext = posix.extname(assetName)
566
+ return posix.join(dir, `${baseName}-[hash]${ext}`)
568
567
  },
569
568
  }),
570
569
  },
@@ -611,7 +610,11 @@ export async function build(args: {
611
610
  const outChunks = middlewareBuildInfo.output.filter((x) => x.type === 'chunk')
612
611
  const chunk = outChunks.find((x) => x.facadeModuleId === fullPath)
613
612
  if (!chunk) throw new Error(`internal err finding middleware`)
614
- builtMiddlewares[middleware.file] = join(outDir, 'middlewares', chunk.fileName)
613
+ builtMiddlewares[middleware.file] = posix.join(
614
+ outDir,
615
+ 'middlewares',
616
+ chunk.fileName
617
+ )
615
618
  }
616
619
  }
617
620
 
@@ -1030,7 +1033,8 @@ export async function build(args: {
1030
1033
  })
1031
1034
  }
1032
1035
 
1033
- const serverJsPath = join(`${outDir}/server`, serverFileName)
1036
+ // posix so downstream `.includes('${outDir}/server')` substring checks match on Windows
1037
+ const serverJsPath = posix.join(outDir, 'server', serverFileName)
1034
1038
 
1035
1039
  let exported
1036
1040
  try {
@@ -1289,6 +1293,7 @@ export async function build(args: {
1289
1293
  }
1290
1294
 
1291
1295
  await writeJSON(toAbsolute(`${outDir}/buildInfo.json`), buildInfoForWriting)
1296
+ await writeBuildOutputPointer(outDir)
1292
1297
 
1293
1298
  // emit version.json for skew protection polling
1294
1299
  await FSExtra.writeFile(
@@ -1474,7 +1479,10 @@ export default {
1474
1479
  projectName,
1475
1480
  userWranglerConfig?.config
1476
1481
  )
1477
- wranglerInputConfig.main = relative(join(options.root, outDir), workerSrcPath)
1482
+ // serialized wrangler config is diffed cross-platform; keep forward-slash
1483
+ wranglerInputConfig.main = normalizePath(
1484
+ relative(join(options.root, outDir), workerSrcPath)
1485
+ )
1478
1486
 
1479
1487
  const wranglerInputPath = join(options.root, outDir, '_wrangler.input.jsonc')
1480
1488
  await FSExtra.writeFile(
@@ -1,5 +1,6 @@
1
1
  import { join } from 'node:path'
2
2
  import FSExtra from 'fs-extra'
3
+ import { normalizePath } from 'vite'
3
4
  import * as constants from '../constants'
4
5
  import { LOADER_JS_POSTFIX_UNCACHED } from '../constants'
5
6
  import type { LoaderProps } from '../types'
@@ -64,8 +65,9 @@ export async function buildPage(
64
65
  recordTiming('getRender', performance.now() - t0)
65
66
 
66
67
  const htmlPath = `${path.endsWith('/') ? `${removeTrailingSlash(path)}/index` : path}.html`
68
+ // forward-slash for cross-platform manifest hygiene (matches serverJsPath)
67
69
  const clientJsPath = clientManifestEntry
68
- ? join(clientDir, clientManifestEntry.file)
70
+ ? normalizePath(join(clientDir, clientManifestEntry.file))
69
71
  : ''
70
72
  const htmlOutPath = toAbsolute(join(staticDir, htmlPath))
71
73
  const preloadPath = getPreloadPath(path)
@@ -0,0 +1,55 @@
1
+ import { afterEach, beforeEach, describe, expect, it } from 'vitest'
2
+ import * as constants from './constants'
3
+
4
+ describe('CACHE_KEY pinning', () => {
5
+ let originalKey: string
6
+
7
+ beforeEach(() => {
8
+ originalKey = constants.CACHE_KEY
9
+ })
10
+
11
+ afterEach(() => {
12
+ constants.setCacheKey(originalKey)
13
+ })
14
+
15
+ it('setCacheKey rebinds CACHE_KEY-derived postfixes', () => {
16
+ constants.setCacheKey('9999999')
17
+
18
+ expect(constants.CACHE_KEY).toBe('9999999')
19
+ expect(constants.PRELOAD_JS_POSTFIX).toBe('_9999999_preload.js')
20
+ expect(constants.CSS_PRELOAD_JS_POSTFIX).toBe('_9999999_preload_css.js')
21
+ expect(constants.LOADER_JS_POSTFIX).toBe(
22
+ `_9999999${constants.LOADER_JS_POSTFIX_UNCACHED}`
23
+ )
24
+ })
25
+
26
+ it('setCacheKey is a no-op for empty or identical keys', () => {
27
+ const before = constants.CACHE_KEY
28
+ constants.setCacheKey('')
29
+ expect(constants.CACHE_KEY).toBe(before)
30
+ constants.setCacheKey(before)
31
+ expect(constants.CACHE_KEY).toBe(before)
32
+ })
33
+
34
+ it('PRELOAD_JS_POSTFIX_REGEX matches the literal postfix shape with any digits', () => {
35
+ constants.setCacheKey('12345')
36
+
37
+ expect(constants.PRELOAD_JS_POSTFIX_REGEX.test('/assets/foo_12345_preload.js')).toBe(true)
38
+ // also matches a drifted key — the whole point of the regex fallback
39
+ expect(constants.PRELOAD_JS_POSTFIX_REGEX.test('/assets/foo_98765_preload.js')).toBe(true)
40
+ // does not match unrelated paths
41
+ expect(constants.PRELOAD_JS_POSTFIX_REGEX.test('/assets/foo_preload.js')).toBe(false)
42
+ expect(constants.PRELOAD_JS_POSTFIX_REGEX.test('/assets/foo_12345_preload_css.js')).toBe(
43
+ false
44
+ )
45
+ })
46
+
47
+ it('CSS_PRELOAD_JS_POSTFIX_REGEX matches only the css variant', () => {
48
+ expect(
49
+ constants.CSS_PRELOAD_JS_POSTFIX_REGEX.test('/assets/foo_12345_preload_css.js')
50
+ ).toBe(true)
51
+ expect(constants.CSS_PRELOAD_JS_POSTFIX_REGEX.test('/assets/foo_12345_preload.js')).toBe(
52
+ false
53
+ )
54
+ })
55
+ })
package/src/constants.ts CHANGED
@@ -22,15 +22,43 @@ export const hasWebHistory =
22
22
  typeof window.history !== 'undefined' &&
23
23
  typeof window.location !== 'undefined'
24
24
 
25
- export const CACHE_KEY = `${process.env.ONE_CACHE_KEY ?? Math.round(Math.random() * 100_000_000)}`
25
+ // CACHE_KEY needs to match the value baked into the deployed client bundle.
26
+ // In Cloudflare workers (and similar runtimes) the worker's static import
27
+ // graph evaluates `constants` BEFORE the user's `serve()` call gets a chance
28
+ // to pin the env, so `process.env.ONE_CACHE_KEY` is undefined at this point
29
+ // and we'd otherwise pick a fresh Math.random() per worker instance. That
30
+ // drift breaks the exact-suffix match the request handler uses to detect
31
+ // preload / loader requests.
32
+ //
33
+ // Solution: keep the postfixes as live `let` bindings (ES module live
34
+ // exports re-resolve on every read), and let `setCacheKey` rebind them
35
+ // once buildInfo arrives. Consumers reading via the module namespace
36
+ // (compiled CJS getters / ESM live binding) see the pinned value.
37
+ export let CACHE_KEY = `${process.env.ONE_CACHE_KEY ?? Math.round(Math.random() * 100_000_000)}`
26
38
 
27
39
  export const LOADER_JS_POSTFIX_UNCACHED = `_vxrn_loader.js`
28
40
  export const LOADER_JS_POSTFIX_REGEX_STRING = `_\\d+${LOADER_JS_POSTFIX_UNCACHED}$`
29
41
  export const LOADER_JS_POSTFIX_REGEX = new RegExp(LOADER_JS_POSTFIX_REGEX_STRING)
30
- export const LOADER_JS_POSTFIX = `_${CACHE_KEY}${LOADER_JS_POSTFIX_UNCACHED}`
42
+ export let LOADER_JS_POSTFIX = `_${CACHE_KEY}${LOADER_JS_POSTFIX_UNCACHED}`
31
43
 
32
- export const PRELOAD_JS_POSTFIX = `_${CACHE_KEY}_preload.js`
33
- export const CSS_PRELOAD_JS_POSTFIX = `_${CACHE_KEY}_preload_css.js`
44
+ // regex form is the defensive fallback for the rare case where CACHE_KEY
45
+ // still drifts (e.g. a deployment that bypasses setupBuildInfo). matches any
46
+ // `_<digits>_preload(_css).js` suffix so misses route through the manifest's
47
+ // graceful-empty branch instead of falling to the static 404 handler.
48
+ export let PRELOAD_JS_POSTFIX = `_${CACHE_KEY}_preload.js`
49
+ export let CSS_PRELOAD_JS_POSTFIX = `_${CACHE_KEY}_preload_css.js`
50
+ export const PRELOAD_JS_POSTFIX_REGEX = /_\d+_preload\.js$/
51
+ export const CSS_PRELOAD_JS_POSTFIX_REGEX = /_\d+_preload_css\.js$/
52
+
53
+ // called by setupBuildInfo at serve boot — rebinds all CACHE_KEY-derived
54
+ // postfixes so consumers reading them post-init get the pinned value.
55
+ export function setCacheKey(key: string): void {
56
+ if (!key || key === CACHE_KEY) return
57
+ CACHE_KEY = key
58
+ LOADER_JS_POSTFIX = `_${CACHE_KEY}${LOADER_JS_POSTFIX_UNCACHED}`
59
+ PRELOAD_JS_POSTFIX = `_${CACHE_KEY}_preload.js`
60
+ CSS_PRELOAD_JS_POSTFIX = `_${CACHE_KEY}_preload_css.js`
61
+ }
34
62
 
35
63
  // safari insanely aggressive caching
36
64
  export const VIRTUAL_SSR_CSS_ENTRY = `virtual:ssr-css.css`
package/src/createApp.tsx CHANGED
@@ -259,8 +259,13 @@ export function createApp(options: CreateAppProps) {
259
259
  // initialize client matches from server context for useMatches hook
260
260
  // restore page loaderData into matches (stripped during SSR to avoid double-serialization)
261
261
  if (serverContext.matches) {
262
- const restoredMatches = serverContext.matches.map((m: any) => {
263
- if (!m.loaderData && serverContext.loaderData) {
262
+ const lastIndex = serverContext.matches.length - 1
263
+ const restoredMatches = serverContext.matches.map((m: any, index: number) => {
264
+ if (
265
+ index === lastIndex &&
266
+ m.loaderData === undefined &&
267
+ serverContext.loaderData !== undefined
268
+ ) {
264
269
  return { ...m, loaderData: serverContext.loaderData }
265
270
  }
266
271
  return m
@@ -13,6 +13,21 @@ function debugLog(msg: string) {
13
13
  // cache app names from config files
14
14
  const serverAppNames = new Map<string, string>()
15
15
 
16
+ // Prune stale server app name entries every 10 minutes
17
+ setInterval(() => {
18
+ // serverAppNames may accumulate entries for projects that have stopped,
19
+ // but there's no cleanup signal when a project stops, so we age them out.
20
+ // With 10-minute cleanup, the impact is negligible for normal usage.
21
+ if (serverAppNames.size > 100) {
22
+ const keys = [...serverAppNames.keys()]
23
+ const toDelete = keys.slice(0, keys.length - 100)
24
+ for (const key of toDelete) {
25
+ serverAppNames.delete(key)
26
+ }
27
+ debugLog(`Pruned ${toDelete.length} stale app name entries`)
28
+ }
29
+ }, 600000)
30
+
16
31
  // try to get app name from app.json, app.config.ts, or fallback to dirname
17
32
  async function getAppNameForServer(root: string): Promise<string | null> {
18
33
  // check cache first
@@ -202,6 +217,21 @@ function extractAppNameFromUA(ua: string): string | null {
202
217
  const recentConnections = new Map<number, { serverId: string; timestamp: number }>()
203
218
  const CONNECTION_MEMORY_MS = 5000 // remember connections for 5 seconds
204
219
 
220
+ // Clean stale recentConnections every 10 seconds
221
+ setInterval(() => {
222
+ const now = Date.now()
223
+ let cleaned = 0
224
+ for (const [key, entry] of recentConnections) {
225
+ if (now - entry.timestamp > CONNECTION_MEMORY_MS) {
226
+ recentConnections.delete(key)
227
+ cleaned++
228
+ }
229
+ }
230
+ if (cleaned > 0) {
231
+ debugLog(`Cleaned ${cleaned} stale connection mappings`)
232
+ }
233
+ }, 10000)
234
+
205
235
  // get the best identifier key for this request
206
236
  function getPrimaryIdentifier(headers: http.IncomingHttpHeaders): string | null {
207
237
  const userAgent = headers['user-agent'] || ''
package/src/index.ts CHANGED
@@ -159,6 +159,15 @@ export { isResponse } from './utils/isResponse'
159
159
  export { redirect } from './utils/redirect'
160
160
  export { removeParams } from './utils/removeParams'
161
161
  export { watchFile } from './utils/watchFile'
162
+ // resilient dynamic-import recovery: retry a transient chunk-fetch failure in
163
+ // place (so it never poisons a React.lazy memo), then fall back to one's
164
+ // debounced reload. lazyWithRetry is a drop-in for React.lazy.
165
+ export {
166
+ loadWithRetry,
167
+ isChunkLoadError,
168
+ handleSkewError,
169
+ } from './utils/dynamicImport'
170
+ export { lazyWithRetry } from './lazyWithRetry'
162
171
  export { ErrorBoundary } from './views/ErrorBoundary'
163
172
  export type { ErrorBoundaryProps, ErrorRouteInfo } from './views/Try'
164
173
  export { LoadProgressBar } from './views/LoadProgressBar'
@@ -0,0 +1,21 @@
1
+ import { type ComponentType, lazy as reactLazy, type LazyExoticComponent } from 'react'
2
+ import { loadWithRetry } from './utils/dynamicImport'
3
+
4
+ // a drop-in resilient replacement for React.lazy.
5
+ //
6
+ // React.lazy memoizes the loader's FIRST settled result — including a rejection
7
+ // (lazyInitializer sets payload._status=2 and from then on re-throws _result on
8
+ // every render WITHOUT re-invoking the loader). so a single transient
9
+ // dynamic-import chunk failure (e.g. a dev-server fetch losing a race under
10
+ // load, or a prod deploy skew) permanently poisons the lazy component for the
11
+ // whole session: with a Suspense fallback and no surrounding error boundary it
12
+ // silently renders nothing. wrapping the loader in loadWithRetry retries the
13
+ // fetch in place before React.lazy ever caches a result, and falls back to one's
14
+ // debounced reload when a chunk error is unrecoverable — so the rejection never
15
+ // reaches React.lazy's memo.
16
+ export function lazyWithRetry<T extends ComponentType<any>>(
17
+ loader: () => Promise<{ default: T }>,
18
+ options?: Parameters<typeof loadWithRetry>[1]
19
+ ): LazyExoticComponent<T> {
20
+ return reactLazy(() => loadWithRetry(loader, options))
21
+ }
@@ -707,6 +707,20 @@ export function cleanup() {
707
707
 
708
708
  export const preloadingLoader: Record<string, Promise<any> | undefined> = {}
709
709
 
710
+ // Bounded helper for preload maps: prevents unbounded growth when prefetch links
711
+ // trigger preloads for many dynamic routes that never get visited.
712
+ const PRELOAD_MAP_MAX = 200
713
+
714
+ function setBoundedPreloadRecord(record: Record<string, any>, key: string, value: any) {
715
+ if (!(key in record)) {
716
+ const keys = Object.keys(record)
717
+ if (keys.length >= PRELOAD_MAP_MAX) {
718
+ delete record[keys[0]]
719
+ }
720
+ }
721
+ record[key] = value
722
+ }
723
+
710
724
  // inlined to ensure tree shakes away in prod
711
725
  // dev mode preload - fetches just the loader directly without production preload bundles
712
726
  async function doPreloadDev(href: string): Promise<any> {
@@ -792,7 +806,7 @@ async function doPreload(href: string) {
792
806
  // Store the CSS inject function for later use on navigation
793
807
  const hasCss = !!cssPreloadModule?.injectCSS
794
808
  if (hasCss) {
795
- cssInjectFunctions[href] = cssPreloadModule.injectCSS
809
+ setBoundedCssInject(href, cssPreloadModule.injectCSS)
796
810
  }
797
811
 
798
812
  const hasLoader = !!loader?.loader
@@ -824,6 +838,17 @@ export const preloadedLoaderData: Record<string, any> = {}
824
838
  // Store CSS inject functions for calling on navigation
825
839
  const cssInjectFunctions: Record<string, (() => Promise<void[]>) | undefined> = {}
826
840
 
841
+ // Bounded helper for cssInjectFunctions
842
+ function setBoundedCssInject(key: string, value: (() => Promise<void[]>) | undefined) {
843
+ if (!(key in cssInjectFunctions)) {
844
+ const keys = Object.keys(cssInjectFunctions)
845
+ if (keys.length >= PRELOAD_MAP_MAX) {
846
+ delete cssInjectFunctions[keys[0]]
847
+ }
848
+ }
849
+ cssInjectFunctions[key] = value
850
+ }
851
+
827
852
  // Preload status tracking for devtools
828
853
  export type PreloadStatus = 'pending' | 'loading' | 'loaded' | 'error'
829
854
  export type PreloadEntry = {
@@ -906,20 +931,20 @@ export function preloadRoute(href: string, injectCSS = false): Promise<any> | un
906
931
  // normalize the path to match what useLoader uses for cache keys
907
932
  const normalizedHref = normalizeLoaderPath(href)
908
933
  if (!preloadingLoader[normalizedHref]) {
909
- preloadingLoader[normalizedHref] = doPreloadDev(href).then((data) => {
910
- preloadedLoaderData[normalizedHref] = data
934
+ setBoundedPreloadRecord(preloadingLoader, normalizedHref, doPreloadDev(href).then((data) => {
935
+ setBoundedPreloadRecord(preloadedLoaderData, normalizedHref, data)
911
936
  return data
912
- })
937
+ }))
913
938
  }
914
939
  return preloadingLoader[normalizedHref]
915
940
  }
916
941
 
917
942
  if (!preloadingLoader[href]) {
918
- preloadingLoader[href] = doPreload(href).then((data) => {
943
+ setBoundedPreloadRecord(preloadingLoader, href, doPreload(href).then((data) => {
919
944
  // Store the resolved data for synchronous access
920
- preloadedLoaderData[href] = data
945
+ setBoundedPreloadRecord(preloadedLoaderData, href, data)
921
946
  return data
922
- })
947
+ }))
923
948
  }
924
949
 
925
950
  if (injectCSS) {
@@ -16,7 +16,7 @@ import { Try } from '../views/Try'
16
16
  import { checkSkewAndReload } from '../skewProtection'
17
17
  import { handleSkewError, isChunkLoadError } from '../utils/dynamicImport'
18
18
  import { DevHead } from '../vite/DevHead'
19
- import { useServerContext } from '../vite/one-server-only'
19
+ import { getServerContext, useServerContext } from '../vite/one-server-only'
20
20
  import { filterRootHTML } from './filterRootHTML'
21
21
  import {
22
22
  type DynamicConvention,
@@ -28,6 +28,7 @@ import {
28
28
  import { SpaShellContext } from './SpaShellContext'
29
29
  import { NamedSlot } from '../views/Navigator'
30
30
  import { sortRoutesWithInitial } from './sortRoutes'
31
+ import { getClientMatchesSnapshot } from '../useMatches'
31
32
 
32
33
  // `@react-navigation/core` does not expose the Screen or Group components directly, so we have to
33
34
  // do this hack.
@@ -361,6 +362,17 @@ function fromImport({ ErrorBoundary, ...component }: LoadedRoute) {
361
362
  // Without this store, the process enters a recursive loop.
362
363
  const qualifiedStore = new WeakMap<RouteNode, React.ComponentType<any>>()
363
364
 
365
+ function getRouteMatchesForProps() {
366
+ const serverMatches = getServerContext()?.matches ?? []
367
+
368
+ if (process.env.VITE_ENVIRONMENT === 'ssr') {
369
+ return serverMatches
370
+ }
371
+
372
+ const clientMatches = getClientMatchesSnapshot()
373
+ return clientMatches.length ? clientMatches : serverMatches
374
+ }
375
+
364
376
  /** Wrap the component with various enhancements and add access to child routes. */
365
377
  export function getQualifiedRouteComponent(value: RouteNode) {
366
378
  if (value && qualifiedStore.has(value)) {
@@ -388,6 +400,8 @@ export function getQualifiedRouteComponent(value: RouteNode) {
388
400
  // content after hydration.
389
401
  // eslint-disable-next-line react-hooks/rules-of-hooks
390
402
  const isSpaShell = useContext(SpaShellContext)
403
+ const matches = getRouteMatchesForProps()
404
+
391
405
  if (isSpaShell && props.segment !== '') {
392
406
  const isServerRenderedLayout =
393
407
  value.children?.length &&
@@ -399,6 +413,11 @@ export function getQualifiedRouteComponent(value: RouteNode) {
399
413
 
400
414
  const res = value.loadRoute()
401
415
  const Component = getPageExport(fromImport(res)) as React.ComponentType<any>
416
+ const match =
417
+ matches.find((match) => match.routeId === value.contextKey) ||
418
+ (!value.children?.length ? matches[matches.length - 1] : undefined)
419
+ const loaderDataProps =
420
+ match && 'loaderData' in match ? { loaderData: match.loaderData } : {}
402
421
 
403
422
  if (process.env.NODE_ENV === 'development' && process.env.DEBUG === 'one') {
404
423
  console.groupCollapsed(`Render ${props.key} ${props.segment}`)
@@ -424,7 +443,7 @@ export function getQualifiedRouteComponent(value: RouteNode) {
424
443
  return (
425
444
  <RootLayoutRenderer
426
445
  LayoutComponent={Component}
427
- layoutProps={{ ...props, ...slotProps }}
446
+ layoutProps={{ ...props, ...slotProps, ...loaderDataProps }}
428
447
  forwardedRef={ref}
429
448
  />
430
449
  )
@@ -432,7 +451,7 @@ export function getQualifiedRouteComponent(value: RouteNode) {
432
451
 
433
452
  return (
434
453
  <RouteErrorBoundary routeName={value.route}>
435
- <Component {...props} {...slotProps} ref={ref} />
454
+ <Component {...props} {...slotProps} {...loaderDataProps} ref={ref} />
436
455
  </RouteErrorBoundary>
437
456
  )
438
457
  })