one 1.1.389 → 1.1.390

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 (547) hide show
  1. package/dist/cjs/Root.cjs +7 -11
  2. package/dist/cjs/Root.js +7 -14
  3. package/dist/cjs/Root.js.map +1 -1
  4. package/dist/cjs/Root.native.js +22 -15
  5. package/dist/cjs/Root.native.js.map +2 -2
  6. package/dist/cjs/cli/build.cjs +1 -1
  7. package/dist/cjs/cli/build.js +1 -1
  8. package/dist/cjs/cli/build.js.map +1 -1
  9. package/dist/cjs/cli/build.native.js +1 -1
  10. package/dist/cjs/cli/build.native.js.map +1 -1
  11. package/dist/cjs/constants.cjs +5 -1
  12. package/dist/cjs/constants.js +3 -1
  13. package/dist/cjs/constants.js.map +1 -1
  14. package/dist/cjs/constants.native.js +5 -1
  15. package/dist/cjs/constants.native.js.map +2 -2
  16. package/dist/cjs/createApp.cjs +22 -82
  17. package/dist/cjs/createApp.js +17 -75
  18. package/dist/cjs/createApp.js.map +1 -1
  19. package/dist/cjs/createApp.native.js +0 -1
  20. package/dist/cjs/createApp.native.js.map +2 -2
  21. package/dist/cjs/createHandleRequest.cjs +1 -1
  22. package/dist/cjs/createHandleRequest.js +1 -1
  23. package/dist/cjs/createHandleRequest.js.map +1 -1
  24. package/dist/cjs/createHandleRequest.native.js +1 -1
  25. package/dist/cjs/createHandleRequest.native.js.map +1 -1
  26. package/dist/cjs/fork/getPathFromState.cjs +1 -1
  27. package/dist/cjs/fork/getPathFromState.js +1 -1
  28. package/dist/cjs/fork/getPathFromState.native.js +1 -1
  29. package/dist/cjs/fork/getPathFromState.native.js.map +1 -1
  30. package/dist/cjs/fork/getStateFromPath.cjs +1 -1
  31. package/dist/cjs/fork/getStateFromPath.js +1 -1
  32. package/dist/cjs/fork/getStateFromPath.js.map +1 -1
  33. package/dist/cjs/fork/getStateFromPath.native.js +1 -1
  34. package/dist/cjs/fork/getStateFromPath.native.js.map +1 -1
  35. package/dist/cjs/getReactNavigationConfig.cjs +1 -1
  36. package/dist/cjs/getReactNavigationConfig.js +1 -1
  37. package/dist/cjs/getReactNavigationConfig.native.js +1 -1
  38. package/dist/cjs/hooks.cjs +2 -2
  39. package/dist/cjs/hooks.js +1 -1
  40. package/dist/cjs/hooks.js.map +1 -1
  41. package/dist/cjs/hooks.native.js +1 -1
  42. package/dist/cjs/hooks.native.js.map +1 -1
  43. package/dist/cjs/index.cjs +3 -3
  44. package/dist/cjs/index.js +2 -2
  45. package/dist/cjs/index.js.map +1 -1
  46. package/dist/cjs/index.native.js +2 -2
  47. package/dist/cjs/index.native.js.map +1 -1
  48. package/dist/cjs/layouts/withLayoutContext.cjs +2 -2
  49. package/dist/cjs/layouts/withLayoutContext.js +1 -1
  50. package/dist/cjs/layouts/withLayoutContext.js.map +1 -1
  51. package/dist/cjs/layouts/withLayoutContext.native.js +1 -1
  52. package/dist/cjs/layouts/withLayoutContext.native.js.map +1 -1
  53. package/dist/cjs/link/useLinkTo.cjs +1 -1
  54. package/dist/cjs/link/useLinkTo.js +1 -1
  55. package/dist/cjs/link/useLinkTo.native.js +1 -1
  56. package/dist/cjs/render.cjs +3 -2
  57. package/dist/cjs/render.js +3 -2
  58. package/dist/cjs/render.js.map +1 -1
  59. package/dist/cjs/{Route.js.map → router/Route.js.map} +1 -1
  60. package/dist/cjs/{Route.native.js.map → router/Route.native.js.map} +1 -1
  61. package/dist/cjs/{createRoute.cjs → router/createRoute.cjs} +1 -1
  62. package/dist/cjs/{createRoute.js → router/createRoute.js} +1 -1
  63. package/dist/cjs/{createRoute.js.map → router/createRoute.js.map} +1 -1
  64. package/dist/cjs/{createRoute.native.js → router/createRoute.native.js} +1 -1
  65. package/dist/cjs/{createRoute.native.js.map → router/createRoute.native.js.map} +1 -1
  66. package/dist/cjs/router/filterRootHTML.cjs +62 -0
  67. package/dist/cjs/router/filterRootHTML.js +49 -0
  68. package/dist/cjs/router/filterRootHTML.js.map +6 -0
  69. package/dist/cjs/router/filterRootHTML.native.js +55 -0
  70. package/dist/cjs/router/filterRootHTML.native.js.map +6 -0
  71. package/dist/cjs/{getLinkingConfig.cjs → router/getLinkingConfig.cjs} +2 -2
  72. package/dist/cjs/{getLinkingConfig.js → router/getLinkingConfig.js} +1 -1
  73. package/dist/cjs/router/getLinkingConfig.js.map +6 -0
  74. package/dist/cjs/{getLinkingConfig.native.js → router/getLinkingConfig.native.js} +1 -1
  75. package/dist/cjs/router/getLinkingConfig.native.js.map +6 -0
  76. package/dist/cjs/{getRoutes.cjs → router/getRoutes.cjs} +3 -3
  77. package/dist/cjs/{getRoutes.js → router/getRoutes.js} +2 -2
  78. package/dist/cjs/{getRoutes.js.map → router/getRoutes.js.map} +2 -2
  79. package/dist/cjs/{getRoutes.native.js → router/getRoutes.native.js} +2 -2
  80. package/dist/cjs/{getRoutes.native.js.map → router/getRoutes.native.js.map} +2 -2
  81. package/dist/cjs/{imperative-api.cjs → router/imperative-api.cjs} +1 -1
  82. package/dist/cjs/{imperative-api.js → router/imperative-api.js} +1 -1
  83. package/dist/cjs/{imperative-api.js.map → router/imperative-api.js.map} +1 -1
  84. package/dist/cjs/{imperative-api.native.js → router/imperative-api.native.js} +1 -1
  85. package/dist/cjs/{imperative-api.native.js.map → router/imperative-api.native.js.map} +2 -2
  86. package/dist/cjs/{matchers.js.map → router/matchers.js.map} +1 -1
  87. package/dist/cjs/{matchers.native.js.map → router/matchers.native.js.map} +1 -1
  88. package/dist/cjs/router/router.cjs +6 -6
  89. package/dist/cjs/router/router.js +1 -1
  90. package/dist/cjs/router/router.js.map +1 -1
  91. package/dist/cjs/router/router.native.js +1 -1
  92. package/dist/cjs/router/router.native.js.map +1 -1
  93. package/dist/cjs/{sortRoutes.js.map → router/sortRoutes.js.map} +1 -1
  94. package/dist/cjs/{sortRoutes.native.js.map → router/sortRoutes.native.js.map} +1 -1
  95. package/dist/cjs/{useNavigation.js.map → router/useNavigation.js.map} +1 -1
  96. package/dist/cjs/{useNavigation.native.js.map → router/useNavigation.native.js.map} +1 -1
  97. package/dist/cjs/{useScreens.cjs → router/useScreens.cjs} +57 -6
  98. package/dist/cjs/{useScreens.js → router/useScreens.js} +29 -3
  99. package/dist/cjs/router/useScreens.js.map +6 -0
  100. package/dist/cjs/{useScreens.native.js → router/useScreens.native.js} +10 -3
  101. package/dist/cjs/router/useScreens.native.js.map +6 -0
  102. package/dist/cjs/{useViteRoutes.js.map → router/useViteRoutes.js.map} +1 -1
  103. package/dist/cjs/{useViteRoutes.native.js.map → router/useViteRoutes.native.js.map} +1 -1
  104. package/dist/cjs/server/createRoutesManifest.cjs +1 -1
  105. package/dist/cjs/server/createRoutesManifest.js +1 -1
  106. package/dist/cjs/server/createRoutesManifest.js.map +1 -1
  107. package/dist/cjs/server/createRoutesManifest.native.js +1 -1
  108. package/dist/cjs/server/createRoutesManifest.native.js.map +1 -1
  109. package/dist/cjs/server/getServerManifest.cjs +2 -2
  110. package/dist/cjs/server/getServerManifest.js +1 -1
  111. package/dist/cjs/server/getServerManifest.js.map +1 -1
  112. package/dist/cjs/server/getServerManifest.native.js +1 -1
  113. package/dist/cjs/server/getServerManifest.native.js.map +1 -1
  114. package/dist/cjs/server/oneServe.cjs +1 -1
  115. package/dist/cjs/server/oneServe.js +1 -1
  116. package/dist/cjs/server/oneServe.js.map +1 -1
  117. package/dist/cjs/server/oneServe.native.js +1 -1
  118. package/dist/cjs/server/oneServe.native.js.map +1 -1
  119. package/dist/cjs/typed-routes/generateRouteTypes.cjs +1 -1
  120. package/dist/cjs/typed-routes/generateRouteTypes.js +1 -1
  121. package/dist/cjs/typed-routes/generateRouteTypes.js.map +1 -1
  122. package/dist/cjs/typed-routes/generateRouteTypes.native.js +1 -1
  123. package/dist/cjs/typed-routes/generateRouteTypes.native.js.map +1 -1
  124. package/dist/cjs/typed-routes/getTypedRoutesDeclarationFile.cjs +2 -2
  125. package/dist/cjs/typed-routes/getTypedRoutesDeclarationFile.js +1 -1
  126. package/dist/cjs/typed-routes/getTypedRoutesDeclarationFile.js.map +1 -1
  127. package/dist/cjs/typed-routes/getTypedRoutesDeclarationFile.native.js +1 -1
  128. package/dist/cjs/typed-routes/getTypedRoutesDeclarationFile.native.js.map +1 -1
  129. package/dist/cjs/useLoader.cjs +2 -2
  130. package/dist/cjs/useLoader.js +1 -1
  131. package/dist/cjs/useLoader.js.map +1 -1
  132. package/dist/cjs/useLoader.native.js +1 -1
  133. package/dist/cjs/useLoader.native.js.map +1 -1
  134. package/dist/cjs/{cleanUrl.cjs → utils/cleanUrl.cjs} +3 -3
  135. package/dist/cjs/{cleanUrl.js → utils/cleanUrl.js} +1 -1
  136. package/dist/cjs/{cleanUrl.js.map → utils/cleanUrl.js.map} +2 -2
  137. package/dist/cjs/{cleanUrl.native.js → utils/cleanUrl.native.js} +1 -1
  138. package/dist/cjs/{cleanUrl.native.js.map → utils/cleanUrl.native.js.map} +2 -2
  139. package/dist/cjs/{platform.js.map → utils/platform.js.map} +1 -1
  140. package/dist/cjs/{platform.native.js.map → utils/platform.native.js.map} +1 -1
  141. package/dist/cjs/utils/redirect.cjs +1 -1
  142. package/dist/cjs/utils/redirect.js +1 -1
  143. package/dist/cjs/utils/redirect.native.js +1 -1
  144. package/dist/cjs/utils/redirect.native.js.map +1 -1
  145. package/dist/cjs/utils/serverContext.cjs +54 -0
  146. package/dist/cjs/utils/serverContext.js +51 -0
  147. package/dist/cjs/utils/serverContext.js.map +6 -0
  148. package/dist/cjs/utils/serverContext.native.js +55 -0
  149. package/dist/cjs/utils/serverContext.native.js.map +6 -0
  150. package/dist/cjs/utils/useConstant.cjs +44 -0
  151. package/dist/cjs/utils/useConstant.js +35 -0
  152. package/dist/cjs/utils/useConstant.js.map +6 -0
  153. package/dist/cjs/utils/useConstant.native.js +44 -0
  154. package/dist/cjs/utils/useConstant.native.js.map +6 -0
  155. package/dist/cjs/views/EmptyRoute.cjs +1 -1
  156. package/dist/cjs/views/EmptyRoute.js +1 -1
  157. package/dist/cjs/views/EmptyRoute.native.js +1 -1
  158. package/dist/cjs/views/LoadProgressBar.cjs +1 -1
  159. package/dist/cjs/views/LoadProgressBar.js +1 -1
  160. package/dist/cjs/views/LoadProgressBar.js.map +1 -1
  161. package/dist/cjs/views/LoadProgressBar.native.js +1 -1
  162. package/dist/cjs/views/LoadProgressBar.native.js.map +1 -1
  163. package/dist/cjs/views/Navigator.cjs +2 -2
  164. package/dist/cjs/views/Navigator.js +1 -1
  165. package/dist/cjs/views/Navigator.js.map +1 -1
  166. package/dist/cjs/views/Navigator.native.js +1 -1
  167. package/dist/cjs/views/Navigator.native.js.map +1 -1
  168. package/dist/cjs/views/Screen.cjs +1 -1
  169. package/dist/cjs/views/Screen.js +1 -1
  170. package/dist/cjs/views/Screen.native.js +1 -1
  171. package/dist/cjs/vite/DevHead.cjs +59 -0
  172. package/dist/cjs/vite/DevHead.js +54 -0
  173. package/dist/cjs/vite/DevHead.js.map +6 -0
  174. package/dist/cjs/vite/DevHead.native.js +29 -0
  175. package/dist/cjs/vite/DevHead.native.js.map +6 -0
  176. package/dist/cjs/vite/plugins/SSRCSSPlugin.cjs +6 -8
  177. package/dist/cjs/vite/plugins/SSRCSSPlugin.js +6 -8
  178. package/dist/cjs/vite/plugins/SSRCSSPlugin.js.map +1 -1
  179. package/dist/cjs/vite/plugins/SSRCSSPlugin.native.js +7 -9
  180. package/dist/cjs/vite/plugins/SSRCSSPlugin.native.js.map +2 -2
  181. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.cjs +8 -4
  182. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.js +10 -5
  183. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.js.map +1 -1
  184. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js +11 -6
  185. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js.map +2 -2
  186. package/dist/cjs/zero/useQuery.cjs +3 -2
  187. package/dist/cjs/zero/useQuery.js +2 -2
  188. package/dist/cjs/zero/useQuery.js.map +1 -1
  189. package/dist/cjs/zero/useQuery.native.js +1 -1
  190. package/dist/cjs/zero/useQuery.native.js.map +2 -2
  191. package/dist/esm/Root.js +10 -17
  192. package/dist/esm/Root.js.map +1 -1
  193. package/dist/esm/Root.mjs +8 -12
  194. package/dist/esm/Root.mjs.map +1 -1
  195. package/dist/esm/Root.native.js +25 -18
  196. package/dist/esm/Root.native.js.map +2 -2
  197. package/dist/esm/cli/build.js +1 -1
  198. package/dist/esm/cli/build.mjs +1 -1
  199. package/dist/esm/cli/build.native.js +1 -1
  200. package/dist/esm/constants.js +3 -1
  201. package/dist/esm/constants.js.map +1 -1
  202. package/dist/esm/constants.mjs +4 -2
  203. package/dist/esm/constants.mjs.map +1 -1
  204. package/dist/esm/constants.native.js +3 -1
  205. package/dist/esm/constants.native.js.map +2 -2
  206. package/dist/esm/createApp.js +22 -76
  207. package/dist/esm/createApp.js.map +1 -1
  208. package/dist/esm/createApp.mjs +23 -83
  209. package/dist/esm/createApp.mjs.map +1 -1
  210. package/dist/esm/createApp.native.js +0 -1
  211. package/dist/esm/createApp.native.js.map +2 -2
  212. package/dist/esm/createHandleRequest.js +1 -1
  213. package/dist/esm/createHandleRequest.js.map +1 -1
  214. package/dist/esm/createHandleRequest.mjs +1 -1
  215. package/dist/esm/createHandleRequest.mjs.map +1 -1
  216. package/dist/esm/createHandleRequest.native.js +1 -1
  217. package/dist/esm/createHandleRequest.native.js.map +1 -1
  218. package/dist/esm/fork/getPathFromState.js +1 -1
  219. package/dist/esm/fork/getPathFromState.mjs +1 -1
  220. package/dist/esm/fork/getPathFromState.native.js +1 -1
  221. package/dist/esm/fork/getStateFromPath.js +1 -1
  222. package/dist/esm/fork/getStateFromPath.mjs +1 -1
  223. package/dist/esm/fork/getStateFromPath.native.js +1 -1
  224. package/dist/esm/getReactNavigationConfig.js +1 -1
  225. package/dist/esm/getReactNavigationConfig.mjs +1 -1
  226. package/dist/esm/getReactNavigationConfig.native.js +1 -1
  227. package/dist/esm/hooks.js +2 -2
  228. package/dist/esm/hooks.mjs +2 -2
  229. package/dist/esm/hooks.native.js +2 -2
  230. package/dist/esm/index.js +3 -3
  231. package/dist/esm/index.mjs +3 -3
  232. package/dist/esm/index.native.js +3 -3
  233. package/dist/esm/layouts/withLayoutContext.js +2 -2
  234. package/dist/esm/layouts/withLayoutContext.mjs +2 -2
  235. package/dist/esm/layouts/withLayoutContext.native.js +2 -2
  236. package/dist/esm/link/useLinkTo.js +1 -1
  237. package/dist/esm/link/useLinkTo.mjs +1 -1
  238. package/dist/esm/link/useLinkTo.native.js +1 -1
  239. package/dist/esm/render.js +3 -2
  240. package/dist/esm/render.js.map +1 -1
  241. package/dist/esm/render.mjs +3 -2
  242. package/dist/esm/render.mjs.map +1 -1
  243. package/dist/esm/{Route.js.map → router/Route.js.map} +1 -1
  244. package/dist/esm/router/Route.mjs.map +1 -0
  245. package/dist/esm/{Route.native.js.map → router/Route.native.js.map} +1 -1
  246. package/dist/esm/{createRoute.js → router/createRoute.js} +1 -1
  247. package/dist/esm/{createRoute.js.map → router/createRoute.js.map} +1 -1
  248. package/dist/esm/{createRoute.mjs → router/createRoute.mjs} +1 -1
  249. package/dist/esm/router/createRoute.mjs.map +1 -0
  250. package/dist/esm/{createRoute.native.js → router/createRoute.native.js} +1 -1
  251. package/dist/esm/{createRoute.native.js.map → router/createRoute.native.js.map} +1 -1
  252. package/dist/esm/router/filterRootHTML.js +33 -0
  253. package/dist/esm/router/filterRootHTML.js.map +6 -0
  254. package/dist/esm/router/filterRootHTML.mjs +39 -0
  255. package/dist/esm/router/filterRootHTML.mjs.map +1 -0
  256. package/dist/esm/router/filterRootHTML.native.js +34 -0
  257. package/dist/esm/router/filterRootHTML.native.js.map +6 -0
  258. package/dist/esm/{getLinkingConfig.js → router/getLinkingConfig.js} +7 -2
  259. package/dist/esm/router/getLinkingConfig.js.map +6 -0
  260. package/dist/esm/{getLinkingConfig.mjs → router/getLinkingConfig.mjs} +2 -2
  261. package/dist/esm/router/getLinkingConfig.mjs.map +1 -0
  262. package/dist/esm/{getLinkingConfig.native.js → router/getLinkingConfig.native.js} +2 -2
  263. package/dist/esm/router/getLinkingConfig.native.js.map +6 -0
  264. package/dist/esm/{getRoutes.js → router/getRoutes.js} +3 -3
  265. package/dist/esm/{getRoutes.js.map → router/getRoutes.js.map} +2 -2
  266. package/dist/esm/{getRoutes.mjs → router/getRoutes.mjs} +3 -3
  267. package/dist/esm/router/getRoutes.mjs.map +1 -0
  268. package/dist/esm/{getRoutes.native.js → router/getRoutes.native.js} +3 -3
  269. package/dist/esm/{getRoutes.native.js.map → router/getRoutes.native.js.map} +2 -2
  270. package/dist/esm/{imperative-api.js → router/imperative-api.js} +1 -1
  271. package/dist/esm/{imperative-api.js.map → router/imperative-api.js.map} +1 -1
  272. package/dist/esm/{imperative-api.mjs → router/imperative-api.mjs} +1 -1
  273. package/dist/esm/router/imperative-api.mjs.map +1 -0
  274. package/dist/esm/{imperative-api.native.js → router/imperative-api.native.js} +1 -1
  275. package/dist/esm/{imperative-api.native.js.map → router/imperative-api.native.js.map} +1 -1
  276. package/dist/esm/{matchers.js.map → router/matchers.js.map} +1 -1
  277. package/dist/esm/router/matchers.mjs.map +1 -0
  278. package/dist/esm/{matchers.native.js.map → router/matchers.native.js.map} +1 -1
  279. package/dist/esm/router/router.js +6 -6
  280. package/dist/esm/router/router.mjs +6 -6
  281. package/dist/esm/router/router.native.js +6 -6
  282. package/dist/esm/{sortRoutes.js.map → router/sortRoutes.js.map} +1 -1
  283. package/dist/esm/router/sortRoutes.mjs.map +1 -0
  284. package/dist/esm/{sortRoutes.native.js.map → router/sortRoutes.native.js.map} +1 -1
  285. package/dist/esm/{useNavigation.js.map → router/useNavigation.js.map} +1 -1
  286. package/dist/esm/router/useNavigation.mjs.map +1 -0
  287. package/dist/esm/{useNavigation.native.js.map → router/useNavigation.native.js.map} +1 -1
  288. package/dist/esm/{useScreens.js → router/useScreens.js} +39 -8
  289. package/dist/esm/router/useScreens.js.map +6 -0
  290. package/dist/esm/{useScreens.mjs → router/useScreens.mjs} +59 -8
  291. package/dist/esm/router/useScreens.mjs.map +1 -0
  292. package/dist/esm/{useScreens.native.js → router/useScreens.native.js} +20 -8
  293. package/dist/esm/router/useScreens.native.js.map +6 -0
  294. package/dist/esm/{useViteRoutes.js.map → router/useViteRoutes.js.map} +1 -1
  295. package/dist/esm/router/useViteRoutes.mjs.map +1 -0
  296. package/dist/esm/{useViteRoutes.native.js.map → router/useViteRoutes.native.js.map} +1 -1
  297. package/dist/esm/server/createRoutesManifest.js +1 -1
  298. package/dist/esm/server/createRoutesManifest.mjs +1 -1
  299. package/dist/esm/server/createRoutesManifest.native.js +1 -1
  300. package/dist/esm/server/getServerManifest.js +2 -2
  301. package/dist/esm/server/getServerManifest.mjs +2 -2
  302. package/dist/esm/server/getServerManifest.native.js +2 -2
  303. package/dist/esm/server/oneServe.js +1 -1
  304. package/dist/esm/server/oneServe.mjs +1 -1
  305. package/dist/esm/server/oneServe.native.js +1 -1
  306. package/dist/esm/typed-routes/generateRouteTypes.js +1 -1
  307. package/dist/esm/typed-routes/generateRouteTypes.mjs +1 -1
  308. package/dist/esm/typed-routes/generateRouteTypes.native.js +1 -1
  309. package/dist/esm/typed-routes/getTypedRoutesDeclarationFile.js +2 -2
  310. package/dist/esm/typed-routes/getTypedRoutesDeclarationFile.mjs +2 -2
  311. package/dist/esm/typed-routes/getTypedRoutesDeclarationFile.native.js +2 -2
  312. package/dist/esm/useLoader.js +2 -2
  313. package/dist/esm/useLoader.mjs +2 -2
  314. package/dist/esm/useLoader.native.js +2 -2
  315. package/dist/esm/{cleanUrl.js → utils/cleanUrl.js} +3 -3
  316. package/dist/esm/{cleanUrl.js.map → utils/cleanUrl.js.map} +1 -1
  317. package/dist/esm/{cleanUrl.mjs → utils/cleanUrl.mjs} +3 -3
  318. package/dist/esm/utils/cleanUrl.mjs.map +1 -0
  319. package/dist/esm/{cleanUrl.native.js → utils/cleanUrl.native.js} +3 -3
  320. package/dist/esm/{cleanUrl.native.js.map → utils/cleanUrl.native.js.map} +1 -1
  321. package/dist/esm/{platform.js.map → utils/platform.js.map} +1 -1
  322. package/dist/esm/utils/platform.mjs.map +1 -0
  323. package/dist/esm/{platform.native.js.map → utils/platform.native.js.map} +1 -1
  324. package/dist/esm/utils/redirect.js +1 -1
  325. package/dist/esm/utils/redirect.mjs +1 -1
  326. package/dist/esm/utils/redirect.native.js +1 -1
  327. package/dist/esm/utils/serverContext.js +35 -0
  328. package/dist/esm/utils/serverContext.js.map +6 -0
  329. package/dist/esm/utils/serverContext.mjs +28 -0
  330. package/dist/esm/utils/serverContext.mjs.map +1 -0
  331. package/dist/esm/utils/serverContext.native.js +32 -0
  332. package/dist/esm/utils/serverContext.native.js.map +6 -0
  333. package/dist/esm/utils/useConstant.js +11 -0
  334. package/dist/esm/utils/useConstant.js.map +6 -0
  335. package/dist/esm/utils/useConstant.mjs +10 -0
  336. package/dist/esm/utils/useConstant.mjs.map +1 -0
  337. package/dist/esm/utils/useConstant.native.js +15 -0
  338. package/dist/esm/utils/useConstant.native.js.map +6 -0
  339. package/dist/esm/views/EmptyRoute.js +1 -1
  340. package/dist/esm/views/EmptyRoute.mjs +1 -1
  341. package/dist/esm/views/EmptyRoute.native.js +1 -1
  342. package/dist/esm/views/LoadProgressBar.js +1 -1
  343. package/dist/esm/views/LoadProgressBar.mjs +1 -1
  344. package/dist/esm/views/LoadProgressBar.native.js +1 -1
  345. package/dist/esm/views/Navigator.js +2 -2
  346. package/dist/esm/views/Navigator.mjs +2 -2
  347. package/dist/esm/views/Navigator.native.js +2 -2
  348. package/dist/esm/views/Screen.js +1 -1
  349. package/dist/esm/views/Screen.mjs +1 -1
  350. package/dist/esm/views/Screen.native.js +1 -1
  351. package/dist/esm/vite/DevHead.js +39 -0
  352. package/dist/esm/vite/DevHead.js.map +6 -0
  353. package/dist/esm/vite/DevHead.mjs +36 -0
  354. package/dist/esm/vite/DevHead.mjs.map +1 -0
  355. package/dist/esm/vite/DevHead.native.js +9 -0
  356. package/dist/esm/vite/DevHead.native.js.map +6 -0
  357. package/dist/esm/vite/plugins/SSRCSSPlugin.js +6 -8
  358. package/dist/esm/vite/plugins/SSRCSSPlugin.js.map +1 -1
  359. package/dist/esm/vite/plugins/SSRCSSPlugin.mjs +7 -8
  360. package/dist/esm/vite/plugins/SSRCSSPlugin.mjs.map +1 -1
  361. package/dist/esm/vite/plugins/SSRCSSPlugin.native.js +7 -8
  362. package/dist/esm/vite/plugins/SSRCSSPlugin.native.js.map +2 -2
  363. package/dist/esm/vite/plugins/fileSystemRouterPlugin.js +10 -4
  364. package/dist/esm/vite/plugins/fileSystemRouterPlugin.js.map +1 -1
  365. package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs +7 -3
  366. package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs.map +1 -1
  367. package/dist/esm/vite/plugins/fileSystemRouterPlugin.native.js +11 -5
  368. package/dist/esm/vite/plugins/fileSystemRouterPlugin.native.js.map +2 -2
  369. package/dist/esm/zero/useQuery.js +2 -1
  370. package/dist/esm/zero/useQuery.js.map +1 -1
  371. package/dist/esm/zero/useQuery.mjs +2 -1
  372. package/dist/esm/zero/useQuery.mjs.map +1 -1
  373. package/dist/esm/zero/useQuery.native.js +2 -1
  374. package/dist/esm/zero/useQuery.native.js.map +2 -2
  375. package/package.json +8 -14
  376. package/src/Root.tsx +27 -42
  377. package/src/cli/build.ts +1 -1
  378. package/src/constants.ts +4 -0
  379. package/src/createApp.native.tsx +1 -1
  380. package/src/createApp.tsx +23 -82
  381. package/src/createHandleRequest.ts +3 -2
  382. package/src/fork/getPathFromState.ts +1 -1
  383. package/src/fork/getStateFromPath.ts +2 -2
  384. package/src/getReactNavigationConfig.ts +2 -2
  385. package/src/hooks.tsx +2 -2
  386. package/src/index.ts +3 -3
  387. package/src/layouts/withLayoutContext.tsx +2 -2
  388. package/src/link/useLinkTo.tsx +1 -1
  389. package/src/render.tsx +3 -5
  390. package/src/{Route.tsx → router/Route.tsx} +2 -2
  391. package/src/{createRoute.ts → router/createRoute.ts} +2 -2
  392. package/src/router/filterRootHTML.ts +81 -0
  393. package/src/{getLinkingConfig.ts → router/getLinkingConfig.ts} +8 -3
  394. package/src/{getRoutes.ts → router/getRoutes.ts} +5 -5
  395. package/src/{imperative-api.ts → router/imperative-api.ts} +2 -2
  396. package/src/router/router.ts +7 -7
  397. package/src/{useScreens.tsx → router/useScreens.tsx} +63 -48
  398. package/src/{useViteRoutes.tsx → router/useViteRoutes.tsx} +2 -2
  399. package/src/server/createRoutesManifest.ts +3 -3
  400. package/src/server/getServerManifest.ts +3 -3
  401. package/src/server/oneServe.ts +1 -1
  402. package/src/typed-routes/generateRouteTypes.ts +1 -1
  403. package/src/typed-routes/getTypedRoutesDeclarationFile.ts +3 -3
  404. package/src/useLoader.ts +2 -2
  405. package/src/{cleanUrl.ts → utils/cleanUrl.ts} +3 -3
  406. package/src/utils/redirect.ts +1 -1
  407. package/src/utils/serverContext.tsx +52 -0
  408. package/src/utils/useConstant.ts +18 -0
  409. package/src/views/EmptyRoute.tsx +1 -1
  410. package/src/views/LoadProgressBar.tsx +1 -1
  411. package/src/views/Navigator.tsx +2 -2
  412. package/src/views/Screen.tsx +1 -1
  413. package/src/vite/DevHead.tsx +39 -0
  414. package/src/vite/plugins/SSRCSSPlugin.ts +6 -10
  415. package/src/vite/plugins/fileSystemRouterPlugin.tsx +12 -6
  416. package/src/zero/useQuery.ts +2 -1
  417. package/types/Root.d.ts +3 -2
  418. package/types/Root.d.ts.map +1 -1
  419. package/types/constants.d.ts +2 -0
  420. package/types/constants.d.ts.map +1 -1
  421. package/types/createApp.d.ts.map +1 -1
  422. package/types/createHandleRequest.d.ts +1 -1
  423. package/types/createHandleRequest.d.ts.map +1 -1
  424. package/types/fork/getStateFromPath.d.ts +1 -1
  425. package/types/fork/getStateFromPath.d.ts.map +1 -1
  426. package/types/getReactNavigationConfig.d.ts +1 -1
  427. package/types/getReactNavigationConfig.d.ts.map +1 -1
  428. package/types/index.d.ts +3 -3
  429. package/types/index.d.ts.map +1 -1
  430. package/types/layouts/withLayoutContext.d.ts +1 -1
  431. package/types/layouts/withLayoutContext.d.ts.map +1 -1
  432. package/types/render.d.ts.map +1 -1
  433. package/types/{Route.d.ts → router/Route.d.ts} +2 -2
  434. package/types/router/Route.d.ts.map +1 -0
  435. package/types/{createRoute.d.ts → router/createRoute.d.ts} +1 -1
  436. package/types/router/createRoute.d.ts.map +1 -0
  437. package/types/router/filterRootHTML.d.ts +19 -0
  438. package/types/router/filterRootHTML.d.ts.map +1 -0
  439. package/types/{getLinkingConfig.d.ts → router/getLinkingConfig.d.ts} +2 -2
  440. package/types/router/getLinkingConfig.d.ts.map +1 -0
  441. package/types/{getRoutes.d.ts → router/getRoutes.d.ts} +1 -1
  442. package/types/router/getRoutes.d.ts.map +1 -0
  443. package/types/router/imperative-api.d.ts +3 -0
  444. package/types/router/imperative-api.d.ts.map +1 -0
  445. package/types/router/matchers.d.ts.map +1 -0
  446. package/types/router/router.d.ts +2 -2
  447. package/types/router/router.d.ts.map +1 -1
  448. package/types/router/sortRoutes.d.ts.map +1 -0
  449. package/types/router/useNavigation.d.ts.map +1 -0
  450. package/types/router/useScreens.d.ts.map +1 -0
  451. package/types/{useViteRoutes.d.ts → router/useViteRoutes.d.ts} +2 -2
  452. package/types/router/useViteRoutes.d.ts.map +1 -0
  453. package/types/server/createRoutesManifest.d.ts +3 -3
  454. package/types/server/createRoutesManifest.d.ts.map +1 -1
  455. package/types/server/getServerManifest.d.ts +1 -1
  456. package/types/server/getServerManifest.d.ts.map +1 -1
  457. package/types/utils/cleanUrl.d.ts.map +1 -0
  458. package/types/utils/platform.d.ts.map +1 -0
  459. package/types/utils/serverContext.d.ts +14 -0
  460. package/types/utils/serverContext.d.ts.map +1 -0
  461. package/types/utils/useConstant.d.ts +2 -0
  462. package/types/utils/useConstant.d.ts.map +1 -0
  463. package/types/vite/DevHead.d.ts +2 -0
  464. package/types/vite/DevHead.d.ts.map +1 -0
  465. package/types/vite/plugins/SSRCSSPlugin.d.ts +0 -1
  466. package/types/vite/plugins/SSRCSSPlugin.d.ts.map +1 -1
  467. package/types/vite/plugins/fileSystemRouterPlugin.d.ts.map +1 -1
  468. package/types/zero/useQuery.d.ts.map +1 -1
  469. package/dist/cjs/getLinkingConfig.js.map +0 -6
  470. package/dist/cjs/getLinkingConfig.native.js.map +0 -6
  471. package/dist/cjs/useScreens.js.map +0 -6
  472. package/dist/cjs/useScreens.native.js.map +0 -6
  473. package/dist/esm/Route.mjs.map +0 -1
  474. package/dist/esm/cleanUrl.mjs.map +0 -1
  475. package/dist/esm/createRoute.mjs.map +0 -1
  476. package/dist/esm/getLinkingConfig.js.map +0 -6
  477. package/dist/esm/getLinkingConfig.mjs.map +0 -1
  478. package/dist/esm/getLinkingConfig.native.js.map +0 -6
  479. package/dist/esm/getRoutes.mjs.map +0 -1
  480. package/dist/esm/imperative-api.mjs.map +0 -1
  481. package/dist/esm/matchers.mjs.map +0 -1
  482. package/dist/esm/platform.mjs.map +0 -1
  483. package/dist/esm/sortRoutes.mjs.map +0 -1
  484. package/dist/esm/useNavigation.mjs.map +0 -1
  485. package/dist/esm/useScreens.js.map +0 -6
  486. package/dist/esm/useScreens.mjs.map +0 -1
  487. package/dist/esm/useScreens.native.js.map +0 -6
  488. package/dist/esm/useViteRoutes.mjs.map +0 -1
  489. package/types/Route.d.ts.map +0 -1
  490. package/types/cleanUrl.d.ts.map +0 -1
  491. package/types/createRoute.d.ts.map +0 -1
  492. package/types/getLinkingConfig.d.ts.map +0 -1
  493. package/types/getRoutes.d.ts.map +0 -1
  494. package/types/imperative-api.d.ts +0 -3
  495. package/types/imperative-api.d.ts.map +0 -1
  496. package/types/matchers.d.ts.map +0 -1
  497. package/types/platform.d.ts.map +0 -1
  498. package/types/sortRoutes.d.ts.map +0 -1
  499. package/types/useNavigation.d.ts.map +0 -1
  500. package/types/useScreens.d.ts.map +0 -1
  501. package/types/useViteRoutes.d.ts.map +0 -1
  502. /package/dist/cjs/{Route.cjs → router/Route.cjs} +0 -0
  503. /package/dist/cjs/{Route.js → router/Route.js} +0 -0
  504. /package/dist/cjs/{Route.native.js → router/Route.native.js} +0 -0
  505. /package/dist/cjs/{matchers.cjs → router/matchers.cjs} +0 -0
  506. /package/dist/cjs/{matchers.js → router/matchers.js} +0 -0
  507. /package/dist/cjs/{matchers.native.js → router/matchers.native.js} +0 -0
  508. /package/dist/cjs/{sortRoutes.cjs → router/sortRoutes.cjs} +0 -0
  509. /package/dist/cjs/{sortRoutes.js → router/sortRoutes.js} +0 -0
  510. /package/dist/cjs/{sortRoutes.native.js → router/sortRoutes.native.js} +0 -0
  511. /package/dist/cjs/{useNavigation.cjs → router/useNavigation.cjs} +0 -0
  512. /package/dist/cjs/{useNavigation.js → router/useNavigation.js} +0 -0
  513. /package/dist/cjs/{useNavigation.native.js → router/useNavigation.native.js} +0 -0
  514. /package/dist/cjs/{useViteRoutes.cjs → router/useViteRoutes.cjs} +0 -0
  515. /package/dist/cjs/{useViteRoutes.js → router/useViteRoutes.js} +0 -0
  516. /package/dist/cjs/{useViteRoutes.native.js → router/useViteRoutes.native.js} +0 -0
  517. /package/dist/cjs/{platform.cjs → utils/platform.cjs} +0 -0
  518. /package/dist/cjs/{platform.js → utils/platform.js} +0 -0
  519. /package/dist/cjs/{platform.native.js → utils/platform.native.js} +0 -0
  520. /package/dist/esm/{Route.js → router/Route.js} +0 -0
  521. /package/dist/esm/{Route.mjs → router/Route.mjs} +0 -0
  522. /package/dist/esm/{Route.native.js → router/Route.native.js} +0 -0
  523. /package/dist/esm/{matchers.js → router/matchers.js} +0 -0
  524. /package/dist/esm/{matchers.mjs → router/matchers.mjs} +0 -0
  525. /package/dist/esm/{matchers.native.js → router/matchers.native.js} +0 -0
  526. /package/dist/esm/{sortRoutes.js → router/sortRoutes.js} +0 -0
  527. /package/dist/esm/{sortRoutes.mjs → router/sortRoutes.mjs} +0 -0
  528. /package/dist/esm/{sortRoutes.native.js → router/sortRoutes.native.js} +0 -0
  529. /package/dist/esm/{useNavigation.js → router/useNavigation.js} +0 -0
  530. /package/dist/esm/{useNavigation.mjs → router/useNavigation.mjs} +0 -0
  531. /package/dist/esm/{useNavigation.native.js → router/useNavigation.native.js} +0 -0
  532. /package/dist/esm/{useViteRoutes.js → router/useViteRoutes.js} +0 -0
  533. /package/dist/esm/{useViteRoutes.mjs → router/useViteRoutes.mjs} +0 -0
  534. /package/dist/esm/{useViteRoutes.native.js → router/useViteRoutes.native.js} +0 -0
  535. /package/dist/esm/{platform.js → utils/platform.js} +0 -0
  536. /package/dist/esm/{platform.mjs → utils/platform.mjs} +0 -0
  537. /package/dist/esm/{platform.native.js → utils/platform.native.js} +0 -0
  538. /package/src/{matchers.ts → router/matchers.ts} +0 -0
  539. /package/src/{sortRoutes.ts → router/sortRoutes.ts} +0 -0
  540. /package/src/{useNavigation.ts → router/useNavigation.ts} +0 -0
  541. /package/src/{platform.ts → utils/platform.ts} +0 -0
  542. /package/types/{matchers.d.ts → router/matchers.d.ts} +0 -0
  543. /package/types/{sortRoutes.d.ts → router/sortRoutes.d.ts} +0 -0
  544. /package/types/{useNavigation.d.ts → router/useNavigation.d.ts} +0 -0
  545. /package/types/{useScreens.d.ts → router/useScreens.d.ts} +0 -0
  546. /package/types/{cleanUrl.d.ts → utils/cleanUrl.d.ts} +0 -0
  547. /package/types/{platform.d.ts → utils/platform.d.ts} +0 -0
@@ -1,7 +1,8 @@
1
- import { getPathFromLoaderPath } from './cleanUrl'
1
+ import { extname } from 'node:path'
2
+ import { getPathFromLoaderPath } from './utils/cleanUrl'
2
3
  import { LOADER_JS_POSTFIX_UNCACHED } from './constants'
3
4
  import type { Middleware, MiddlewareContext } from './createMiddleware'
4
- import type { RouteNode } from './Route'
5
+ import type { RouteNode } from './router/Route'
5
6
  import type { RouteInfo, RouteInfoCompiled } from './server/createRoutesManifest'
6
7
  import type { LoaderProps } from './types'
7
8
  import { getHonoPath } from './utils/getHonoPath'
@@ -6,7 +6,7 @@ import {
6
6
  matchDynamicName,
7
7
  matchGroupName,
8
8
  testNotFound,
9
- } from '../matchers'
9
+ } from '../router/matchers'
10
10
 
11
11
  type Options<ParamList extends object> = {
12
12
  initialRouteName?: string
@@ -2,8 +2,8 @@ import type { PathConfigMap } from '@react-navigation/core'
2
2
  import type { InitialState } from '@react-navigation/routers'
3
3
  // biome-ignore lint/suspicious/noShadowRestrictedNames: <explanation>
4
4
  import escape from 'escape-string-regexp'
5
- import type { RouteNode } from '../Route'
6
- import { matchGroupName, stripGroupSegmentsFromPath } from '../matchers'
5
+ import type { RouteNode } from '../router/Route'
6
+ import { matchGroupName, stripGroupSegmentsFromPath } from '../router/matchers'
7
7
  import { findFocusedRoute } from './findFocusedRoute'
8
8
  import validatePathConfig from './validatePathConfig'
9
9
  import type { OneRouter } from '../interfaces/router'
@@ -1,5 +1,5 @@
1
- import { matchDeepDynamicRouteName, matchDynamicName } from './matchers'
2
- import type { RouteNode } from './Route'
1
+ import { matchDeepDynamicRouteName, matchDynamicName } from './router/matchers'
2
+ import type { RouteNode } from './router/Route'
3
3
 
4
4
  export type Screen =
5
5
  | string
package/src/hooks.tsx CHANGED
@@ -1,7 +1,7 @@
1
1
  import React, { createContext, type ReactNode } from 'react'
2
- import { router } from './imperative-api'
2
+ import { router } from './router/imperative-api'
3
3
  import type { OneRouter } from './interfaces/router'
4
- import { RouteParamsContext } from './Route'
4
+ import { RouteParamsContext } from './router/Route'
5
5
  import { navigationRef, useStoreRootState, useStoreRouteInfo } from './router/router'
6
6
 
7
7
  type SearchParams = OneRouter.SearchParams
package/src/index.ts CHANGED
@@ -9,8 +9,8 @@ export type LinkProps<T extends string | object = string> = OneRouter.LinkProps<
9
9
  export type { Endpoint, LoaderProps } from './types'
10
10
 
11
11
  // base
12
- export { router } from './imperative-api'
13
- export { createRoute, route } from './createRoute'
12
+ export { router } from './router/imperative-api'
13
+ export { createRoute, route } from './router/createRoute'
14
14
  export { onClientLoaderResolve } from './clientLoaderResolver'
15
15
 
16
16
  // middleware
@@ -66,5 +66,5 @@ export * from '@vxrn/universal-color-scheme'
66
66
 
67
67
  // React Navigation
68
68
  export { useFocusEffect } from './useFocusEffect'
69
- export { useNavigation } from './useNavigation'
69
+ export { useNavigation } from './router/useNavigation'
70
70
  export { useLoader } from './useLoader'
@@ -1,8 +1,8 @@
1
1
  import type { EventMapBase, NavigationState } from '@react-navigation/native'
2
2
  import React from 'react'
3
- import { useContextKey } from '../Route'
3
+ import { useContextKey } from '../router/Route'
4
4
  import type { PickPartial } from '../types'
5
- import { useSortedScreens, type ScreenProps } from '../useScreens'
5
+ import { useSortedScreens, type ScreenProps } from '../router/useScreens'
6
6
  import { Screen } from '../views/Screen'
7
7
  import { withStaticProperties } from '../utils/withStaticProperties'
8
8
 
@@ -3,7 +3,7 @@ import { Platform, type GestureResponderEvent } from 'react-native'
3
3
 
4
4
  import { appendBaseUrl } from '../fork/getPathFromState'
5
5
  import { useOneRouter } from '../router/router'
6
- import { stripGroupSegmentsFromPath } from '../matchers'
6
+ import { stripGroupSegmentsFromPath } from '../router/matchers'
7
7
 
8
8
  function eventShouldPreventDefault(
9
9
  e: React.MouseEvent<HTMLAnchorElement, MouseEvent> | GestureResponderEvent
package/src/render.tsx CHANGED
@@ -9,15 +9,14 @@ export function render(element: React.ReactNode) {
9
9
  globalThis['__vxrnVersion']++
10
10
  globalThis['__vxrnRoot'].render(element)
11
11
  } else {
12
- // const deferLoad = requestAnimationFrame || setImmediate
13
- // deferLoad(() => {
14
12
  startTransition(() => {
13
+ const rootElement = document as any
15
14
  if (globalThis['__vxrnIsSPA']) {
16
- const root = createRoot(document.body)
15
+ const root = createRoot(rootElement)
17
16
  globalThis['__vxrnRoot'] = root
18
17
  root.render(element)
19
18
  } else {
20
- globalThis['__vxrnRoot'] = hydrateRoot(document.body, element, {
19
+ globalThis['__vxrnRoot'] = hydrateRoot(rootElement, element, {
21
20
  onRecoverableError(...args) {
22
21
  console.groupCollapsed(
23
22
  `[one] Non-critical recoverable React error occurred, expand group to see details`
@@ -35,6 +34,5 @@ export function render(element: React.ReactNode) {
35
34
  })
36
35
  }
37
36
  })
38
- // })
39
37
  }
40
38
  }
@@ -1,8 +1,8 @@
1
1
  import React, { createContext, useContext, type ReactNode } from 'react'
2
2
 
3
3
  import { getContextKey } from './matchers'
4
- import type { ErrorBoundaryProps } from './views/Try'
5
- import type { One } from './vite/types'
4
+ import type { ErrorBoundaryProps } from '../views/Try'
5
+ import type { One } from '../vite/types'
6
6
 
7
7
  export type DynamicConvention = { name: string; deep: boolean; notFound?: boolean }
8
8
 
@@ -1,5 +1,5 @@
1
- import { useActiveParams, useParams, usePathname } from './hooks'
2
- import type { OneRouter } from './interfaces/router'
1
+ import { useActiveParams, useParams, usePathname } from '../hooks'
2
+ import type { OneRouter } from '../interfaces/router'
3
3
 
4
4
  export function createRoute<Path>() {
5
5
  type Route = OneRouter.Route<Path>
@@ -0,0 +1,81 @@
1
+ import { cloneElement, isValidElement } from 'react'
2
+
3
+ type Props = Record<string, any>
4
+
5
+ export type FoundRootHTML = {
6
+ children: React.ReactElement
7
+ htmlProps?: Props
8
+ bodyProps?: Props
9
+ head?: React.ReactElement
10
+ }
11
+
12
+ /**
13
+ * To enable custom <html> and other html-like stuff in the root _layout
14
+ * we are doing some fancy stuff, namely, just capturing the root layout return
15
+ * value and deep-mapping over it.
16
+ *
17
+ * On server, we filter it out and hoist it to the parent root html in createApp
18
+ *
19
+ * On client, we just filter it out completely as in One we don't hydrate html
20
+ */
21
+
22
+ export function filterRootHTML(el: React.ReactNode): FoundRootHTML {
23
+ let htmlProps: Props | undefined
24
+ let bodyProps: React.ReactElement | undefined
25
+ let head: React.ReactElement | undefined
26
+
27
+ function traverse(element: React.ReactNode) {
28
+ if (!element || typeof element !== 'object') {
29
+ return element
30
+ }
31
+ if (Array.isArray(element)) {
32
+ return element.map(traverse)
33
+ }
34
+
35
+ const reactElement = element as React.ReactElement
36
+ const { type, props } = reactElement
37
+
38
+ if (type === 'html') {
39
+ const { children, ...restProps } = reactElement.props
40
+ htmlProps = restProps
41
+ return traverse(children)
42
+ }
43
+
44
+ if (type === 'head') {
45
+ head = reactElement
46
+ return null
47
+ }
48
+
49
+ if (type === 'body') {
50
+ const { children, ...restProps } = reactElement.props
51
+ bodyProps = restProps
52
+ return children
53
+ }
54
+
55
+ if (process.env.TAMAGUI_TARGET === 'native') {
56
+ if (
57
+ isValidElement(element) &&
58
+ typeof element.type === 'string' &&
59
+ element.type.toLowerCase() === element.type
60
+ ) {
61
+ // filter out things like <meta /> etc on native
62
+ // because it could just be thown in <html> or a fragment to be hoisted on web
63
+ return null
64
+ }
65
+ }
66
+
67
+ return element
68
+ }
69
+
70
+ const children =
71
+ traverse(el) ||
72
+ // if none found, we assume they aren't returning any html so just pass it on
73
+ el
74
+
75
+ return {
76
+ children,
77
+ htmlProps,
78
+ bodyProps,
79
+ head,
80
+ }
81
+ }
@@ -1,8 +1,13 @@
1
1
  import { getActionFromState, type LinkingOptions } from '@react-navigation/native'
2
2
  import type { RouteNode } from './Route'
3
- import type { State } from './fork/getPathFromState'
4
- import { getReactNavigationConfig, type Screen } from './getReactNavigationConfig'
5
- import { addEventListener, getInitialURL, getPathFromState, getStateFromPath } from './link/linking'
3
+ import type { State } from '../fork/getPathFromState'
4
+ import { getReactNavigationConfig, type Screen } from '../getReactNavigationConfig'
5
+ import {
6
+ addEventListener,
7
+ getInitialURL,
8
+ getPathFromState,
9
+ getStateFromPath,
10
+ } from '../link/linking'
6
11
 
7
12
  export function getNavigationConfig(
8
13
  routes: RouteNode,
@@ -1,4 +1,4 @@
1
- import { getDefaultRenderMode } from './config'
1
+ import { getDefaultRenderMode } from '../config'
2
2
  import {
3
3
  matchArrayGroupName,
4
4
  matchDeepDynamicRouteName,
@@ -7,8 +7,8 @@ import {
7
7
  removeSupportedExtensions,
8
8
  } from './matchers'
9
9
  import type { DynamicConvention, RouteNode } from './Route'
10
- import { getPageExport } from './utils/getPageExport'
11
- import type { One } from './vite/types'
10
+ import { getPageExport } from '../utils/getPageExport'
11
+ import type { One } from '../vite/types'
12
12
  // import { Unmatched } from './views/Unmatched'
13
13
 
14
14
  export type Options = {
@@ -242,7 +242,7 @@ function getDirectoryTree(contextModule: One.RouteContext, options: Options) {
242
242
  {
243
243
  type: 'layout',
244
244
  loadRoute: () => ({
245
- default: (require('./views/Navigator') as typeof import('./views/Navigator'))
245
+ default: (require('../views/Navigator') as typeof import('../views/Navigator'))
246
246
  .DefaultNavigator,
247
247
  }),
248
248
  // Generate a fake file name for the directory
@@ -481,7 +481,7 @@ function appendSitemapRoute(directory: DirectoryNode) {
481
481
  {
482
482
  loadRoute() {
483
483
  // console.warn(`Loading sitemap`)
484
- // const { Sitemap, getNavOptions } = require('./views/Sitemap')
484
+ // const { Sitemap, getNavOptions } = require('../views/Sitemap')
485
485
  // return { default: Sitemap, getNavOptions }
486
486
  return { default: () => null, getNavOptions: () => {} }
487
487
  },
@@ -1,5 +1,5 @@
1
- import * as store from './router/router'
2
- import type { OneRouter } from './interfaces/router'
1
+ import * as store from './router'
2
+ import type { OneRouter } from '../interfaces/router'
3
3
 
4
4
  export const router: OneRouter.Router = {
5
5
  navigate: store.navigate,
@@ -8,19 +8,19 @@ import * as Linking from 'expo-linking'
8
8
  import { nanoid } from 'nanoid/non-secure'
9
9
  import { Fragment, startTransition, useSyncExternalStore, type ComponentType } from 'react'
10
10
  import { Platform } from 'react-native'
11
- import type { RouteNode } from '../Route'
12
- import { getLoaderPath, getPreloadPath } from '../cleanUrl'
11
+ import type { RouteNode } from './Route'
12
+ import { getLoaderPath, getPreloadPath } from '../utils/cleanUrl'
13
13
  import type { State } from '../fork/getPathFromState'
14
14
  import { deepEqual, getPathDataFromState } from '../fork/getPathFromState'
15
15
  import { stripBaseUrl } from '../fork/getStateFromPath'
16
- import { getLinkingConfig, type OneLinkingOptions } from '../getLinkingConfig'
17
- import { getRoutes } from '../getRoutes'
16
+ import { getLinkingConfig, type OneLinkingOptions } from './getLinkingConfig'
17
+ import { getRoutes } from './getRoutes'
18
18
  import type { OneRouter } from '../interfaces/router'
19
19
  import { resolveHref } from '../link/href'
20
20
  import { resolve } from '../link/path'
21
- import { matchDynamicName } from '../matchers'
22
- import { sortRoutes } from '../sortRoutes'
23
- import { getQualifiedRouteComponent } from '../useScreens'
21
+ import { matchDynamicName } from './matchers'
22
+ import { sortRoutes } from './sortRoutes'
23
+ import { getQualifiedRouteComponent } from './useScreens'
24
24
  import { assertIsReady } from '../utils/assertIsReady'
25
25
  import { dynamicImport } from '../utils/dynamicImport'
26
26
  import { removeSearch } from '../utils/removeSearch'
@@ -1,4 +1,5 @@
1
1
  import { createNavigatorFactory } from '@react-navigation/core'
2
+ import { SafeAreaProviderCompat } from '@react-navigation/elements'
2
3
  import type {
3
4
  EventMapBase,
4
5
  NavigationState,
@@ -6,7 +7,15 @@ import type {
6
7
  RouteProp,
7
8
  ScreenListeners,
8
9
  } from '@react-navigation/native'
9
- import React, { Suspense, useEffect } from 'react'
10
+ import React, { forwardRef, Suspense, useEffect } from 'react'
11
+ import { getPageExport } from '../utils/getPageExport'
12
+ import { getServerContext, ServerContextScript } from '../utils/serverContext'
13
+ import { useConstant } from '../utils/useConstant'
14
+ import { EmptyRoute } from '../views/EmptyRoute'
15
+ import { RootErrorBoundary } from '../views/RootErrorBoundary'
16
+ import { Try } from '../views/Try'
17
+ import { DevHead } from '../vite/DevHead'
18
+ import { filterRootHTML } from './filterRootHTML'
10
19
  import {
11
20
  Route,
12
21
  useRouteNode,
@@ -15,10 +24,6 @@ import {
15
24
  type RouteNode,
16
25
  } from './Route'
17
26
  import { sortRoutesWithInitial } from './sortRoutes'
18
- import { getPageExport } from './utils/getPageExport'
19
- import { EmptyRoute } from './views/EmptyRoute'
20
- import { RootErrorBoundary } from './views/RootErrorBoundary'
21
- import { Try } from './views/Try'
22
27
 
23
28
  // `@react-navigation/core` does not expose the Screen or Group components directly, so we have to
24
29
  // do this hack.
@@ -163,52 +168,63 @@ export function getQualifiedRouteComponent(value: RouteNode) {
163
168
  return qualifiedStore.get(value)!
164
169
  }
165
170
 
166
- let ScreenComponent: React.ForwardRefExoticComponent<React.RefAttributes<unknown>>
167
-
168
- // if (One_ROUTER_IMPORT_MODE === 'lazy') {
169
- // ScreenComponent = React.forwardRef((props, ref) => {
170
- // // for native avoid suspense for now
171
- // const [loaded, setLoaded] = useState<any>(null)
172
-
173
- // useEffect(() => {
174
- // try {
175
- // const found = value.loadRoute()
176
- // if (found) {
177
- // setLoaded(found)
178
- // }
179
- // } catch (err) {
180
- // if (err instanceof Promise) {
181
- // err
182
- // .then((res) => {
183
- // setLoaded(res)
184
- // })
185
- // .catch((err) => {
186
- // console.error(`Error loading route`, err)
187
- // })
188
- // } else {
189
- // setLoaded(err as any)
190
- // }
191
- // }
192
- // }, [])
193
-
194
- // if (loaded) {
195
- // const Component = getPageExport(fromImport(loaded)) as React.ComponentType<any>
196
- // return (
197
- // // <Suspense fallback={null}>
198
- // <Component {...props} ref={ref} />
199
- // // </Suspense>
200
- // )
201
- // }
202
-
203
- // return null
204
- // })
205
- // } else {
171
+ let ScreenComponent: React.ForwardRefExoticComponent<{ segment: string; key?: string }>
172
+
206
173
  ScreenComponent = React.forwardRef((props, ref) => {
207
174
  const res = value.loadRoute()
208
- const Component = getPageExport(fromImport(res)) as React.ComponentType<any>
175
+ const Component = useConstant(() => {
176
+ const BaseComponent = getPageExport(fromImport(res)) as React.ComponentType<any>
177
+ const serverContext = getServerContext()
178
+
179
+ // root layout do special html handling only
180
+ if (props.segment === '') {
181
+ return forwardRef((props, ref) => {
182
+ // @ts-expect-error
183
+ const out = BaseComponent(props, ref)
184
+ const { children, bodyProps, head, htmlProps } = filterRootHTML(out)
185
+ const { children: headChildren, ...headProps } = head?.props || {}
186
+
187
+ if (process.env.TAMAGUI_TARGET === 'native') {
188
+ // on native we just ignore all html/body/head
189
+ return children
190
+ }
191
+
192
+ const contents = (
193
+ <>
194
+ <head key="head" {...headProps}>
195
+ <DevHead />
196
+ <script
197
+ dangerouslySetInnerHTML={{
198
+ __html: `globalThis['global'] = globalThis`,
199
+ }}
200
+ />
201
+ {serverContext?.css?.map((file) => {
202
+ return <link key={file} rel="stylesheet" href={file} />
203
+ })}
204
+ <ServerContextScript />
205
+ {headChildren}
206
+ </head>
207
+ <body key="body" suppressHydrationWarning {...bodyProps}>
208
+ <SafeAreaProviderCompat>{children}</SafeAreaProviderCompat>
209
+ </body>
210
+ </>
211
+ )
212
+
213
+ return (
214
+ // tamagui and libraries can add className on hydration to have ssr safe styling
215
+ // so supress hydration warnings here
216
+ <html suppressHydrationWarning lang="en-US" {...htmlProps}>
217
+ {contents}
218
+ </html>
219
+ )
220
+ })
221
+ }
222
+
223
+ return BaseComponent
224
+ })
209
225
 
210
226
  if (process.env.NODE_ENV === 'development' && process.env.DEBUG === 'one') {
211
- console.groupCollapsed(`Render ${props.key}`)
227
+ console.groupCollapsed(`Render ${props.key} ${props.segment}`)
212
228
  console.info(`res`, res)
213
229
  console.info(`value`, value)
214
230
  console.info(`fromImport`, fromImport(res))
@@ -222,7 +238,6 @@ export function getQualifiedRouteComponent(value: RouteNode) {
222
238
  // </Suspense>
223
239
  )
224
240
  })
225
- // }
226
241
 
227
242
  const wrapSuspense = (children: any) => {
228
243
  if (process.env.TAMAGUI_TARGET === 'native') {
@@ -1,5 +1,5 @@
1
- import type { GlobbedRouteImports } from './types'
2
- import type { One } from './vite/types'
1
+ import type { GlobbedRouteImports } from '../types'
2
+ import type { One } from '../vite/types'
3
3
 
4
4
  // essentially a development helper
5
5
 
@@ -1,9 +1,9 @@
1
- import { type Options, getRoutes } from '../getRoutes'
1
+ import { type Options, getRoutes } from '../router/getRoutes'
2
2
  import { getServerManifest } from './getServerManifest'
3
- import type { RouteNode } from '../Route'
3
+ import type { RouteNode } from '../router/Route'
4
4
  import type { One } from '../vite/types'
5
5
 
6
- export { type Options } from '../getRoutes'
6
+ export { type Options } from '../router/getRoutes'
7
7
 
8
8
  export type RouteInfo<TRegex = string> = {
9
9
  file: string
@@ -8,9 +8,9 @@
8
8
  *
9
9
  * Based on https://github.com/vercel/next.js/blob/1df2686bc9964f1a86c444701fa5cbf178669833/packages/next/src/shared/lib/router/utils/route-regex.ts
10
10
  */
11
- import type { RouteNode } from '../Route'
12
- import { getContextKey, matchGroupName } from '../matchers'
13
- import { sortRoutes } from '../sortRoutes'
11
+ import type { RouteNode } from '../router/Route'
12
+ import { getContextKey, matchGroupName } from '../router/matchers'
13
+ import { sortRoutes } from '../router/sortRoutes'
14
14
  import type { One } from '../vite/types'
15
15
 
16
16
  // TODO: Share these types across cli, server, router, etc.
@@ -2,7 +2,7 @@ import type { Hono, MiddlewareHandler } from 'hono'
2
2
  import type { BlankEnv } from 'hono/types'
3
3
  import { extname, join } from 'node:path'
4
4
  import { getServerEntry } from 'vxrn/serve'
5
- import { getPathFromLoaderPath } from '../cleanUrl'
5
+ import { getPathFromLoaderPath } from '../utils/cleanUrl'
6
6
  import { LOADER_JS_POSTFIX_UNCACHED } from '../constants'
7
7
  import { compileManifest, getURLfromRequestURL, type RequestHandlers } from '../createHandleRequest'
8
8
  import type { RenderAppProps } from '../types'
@@ -1,7 +1,7 @@
1
1
  import FSExtra from 'fs-extra'
2
2
  import { writeFile } from 'node:fs/promises'
3
3
  import { dirname } from 'node:path'
4
- import { globbedRoutesToRouteContext } from '../useViteRoutes'
4
+ import { globbedRoutesToRouteContext } from '../router/useViteRoutes'
5
5
  import { globDir } from '../utils/globDir'
6
6
  import { getTypedRoutesDeclarationFile } from './getTypedRoutesDeclarationFile'
7
7
 
@@ -1,6 +1,6 @@
1
- import { getRoutes } from '../getRoutes'
2
- import { isTypedRoute, removeSupportedExtensions } from '../matchers'
3
- import type { RouteNode } from '../Route'
1
+ import { getRoutes } from '../router/getRoutes'
2
+ import { isTypedRoute, removeSupportedExtensions } from '../router/matchers'
3
+ import type { RouteNode } from '../router/Route'
4
4
  import type { One } from '../vite/types'
5
5
 
6
6
  // /[...param1]/ - Match [...param1]
package/src/useLoader.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  /* eslint-disable react-hooks/rules-of-hooks */
2
2
  import { useEffect, useRef } from 'react'
3
- import { getLoaderPath } from './cleanUrl'
3
+ import { getLoaderPath } from './utils/cleanUrl'
4
4
  import { useActiveParams, useParams } from './hooks'
5
5
  import { resolveHref } from './link/href'
6
- import { useRouteNode } from './Route'
6
+ import { useRouteNode } from './router/Route'
7
7
  import { preloadingLoader } from './router/router'
8
8
  import type { LoaderProps } from './types'
9
9
  import { dynamicImport } from './utils/dynamicImport'
@@ -3,9 +3,9 @@ import {
3
3
  LOADER_JS_POSTFIX,
4
4
  LOADER_JS_POSTFIX_REGEX,
5
5
  PRELOAD_JS_POSTFIX,
6
- } from './constants'
7
- import { getURL } from './getURL'
8
- import { removeSearch } from './utils/removeSearch'
6
+ } from '../constants'
7
+ import { getURL } from '../getURL'
8
+ import { removeSearch } from './removeSearch'
9
9
 
10
10
  function cleanUrl(path: string) {
11
11
  return (
@@ -1,5 +1,5 @@
1
1
  import { getURL } from '../getURL'
2
- import { router } from '../imperative-api'
2
+ import { router } from '../router/imperative-api'
3
3
 
4
4
  export const redirect = (path: string, status?: number) => {
5
5
  if (process.env.VITE_ENVIRONMENT === 'client') {
@@ -0,0 +1,52 @@
1
+ type ServerContext = {
2
+ css?: string[]
3
+ postRenderData?: any
4
+ loaderData?: any
5
+ loaderProps?: any
6
+ mode?: 'spa' | 'ssg' | 'ssr'
7
+ }
8
+
9
+ type MaybeServerContext = null | ServerContext
10
+
11
+ export const SERVER_CONTEXT_POST_RENDER_STRING = `_one_post_render_data_`
12
+ const SERVER_CONTEXT_KEY = '__one_server_context__'
13
+ const isClient = typeof document !== 'undefined'
14
+
15
+ let serverContext: MaybeServerContext = globalThis[SERVER_CONTEXT_KEY] || null
16
+
17
+ export function setServerContext(c: ServerContext) {
18
+ if (isClient) {
19
+ serverContext ||= {
20
+ postRenderData: SERVER_CONTEXT_POST_RENDER_STRING,
21
+ }
22
+ Object.assign(serverContext, c)
23
+ } else {
24
+ globalThis[SERVER_CONTEXT_KEY] = c
25
+ }
26
+ }
27
+
28
+ export function getServerContext() {
29
+ if (isClient) {
30
+ return serverContext
31
+ }
32
+ return globalThis[SERVER_CONTEXT_KEY] as MaybeServerContext
33
+ }
34
+
35
+ export function ServerContextScript() {
36
+ const context = getServerContext()
37
+ if (!context) {
38
+ throw new Error(`no server context, internal one bug`)
39
+ }
40
+ return (
41
+ <script
42
+ async
43
+ // @ts-ignore
44
+ href={SERVER_CONTEXT_KEY}
45
+ dangerouslySetInnerHTML={{
46
+ __html: `
47
+ globalThis["${SERVER_CONTEXT_KEY}"] = ${JSON.stringify(context)};
48
+ `,
49
+ }}
50
+ />
51
+ )
52
+ }
@@ -0,0 +1,18 @@
1
+ import * as React from 'react'
2
+
3
+ type ResultBox<T> = { v: T }
4
+
5
+ export function useConstant<T>(fn: () => T): T {
6
+ // RSC compat
7
+ if (typeof document === 'undefined') {
8
+ return React.useMemo(() => fn(), [])
9
+ }
10
+
11
+ const ref = React.useRef<ResultBox<T>>()
12
+
13
+ if (!ref.current) {
14
+ ref.current = { v: fn() }
15
+ }
16
+
17
+ return ref.current.v
18
+ }
@@ -1,6 +1,6 @@
1
1
  import React from 'react'
2
2
 
3
- import { useRouteNode } from '../Route'
3
+ import { useRouteNode } from '../router/Route'
4
4
 
5
5
  // import { Toast, ToastWrapper } from './Toast'
6
6
 
@@ -1,6 +1,6 @@
1
1
  import { useEffect, useState } from 'react'
2
2
  import { View, type ViewProps } from 'react-native'
3
- import { router } from '../imperative-api'
3
+ import { router } from '../router/imperative-api'
4
4
 
5
5
  export type LoadProgressBarProps = {
6
6
  /** How long after a navigation to wait before showing the progress bar (in ms) */