one 1.1.389 → 1.1.391

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 (730) hide show
  1. package/dist/cjs/Root.cjs +13 -28
  2. package/dist/cjs/Root.js +15 -26
  3. package/dist/cjs/Root.js.map +1 -1
  4. package/dist/cjs/Root.native.js +25 -26
  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/NavigationContainer.cjs +49 -31
  27. package/dist/cjs/fork/NavigationContainer.js +40 -21
  28. package/dist/cjs/fork/NavigationContainer.js.map +2 -2
  29. package/dist/cjs/fork/NavigationContainer.native.js +51 -29
  30. package/dist/cjs/fork/NavigationContainer.native.js.map +2 -2
  31. package/dist/cjs/fork/createMemoryHistory.cjs +4 -3
  32. package/dist/cjs/fork/createMemoryHistory.js +3 -2
  33. package/dist/cjs/fork/createMemoryHistory.js.map +1 -1
  34. package/dist/cjs/fork/createMemoryHistory.native.js +8 -4
  35. package/dist/cjs/fork/createMemoryHistory.native.js.map +2 -2
  36. package/dist/cjs/fork/extractPathFromURL.cjs +48 -28
  37. package/dist/cjs/fork/extractPathFromURL.js +44 -21
  38. package/dist/cjs/fork/extractPathFromURL.js.map +2 -2
  39. package/dist/cjs/fork/extractPathFromURL.native.js +58 -26
  40. package/dist/cjs/fork/extractPathFromURL.native.js.map +2 -2
  41. package/dist/cjs/fork/findFocusedRoute.js.map +1 -1
  42. package/dist/cjs/fork/findFocusedRoute.native.js.map +1 -1
  43. package/dist/cjs/fork/getPathFromState-mods.cjs +65 -0
  44. package/dist/cjs/fork/getPathFromState-mods.js +56 -0
  45. package/dist/cjs/fork/getPathFromState-mods.js.map +6 -0
  46. package/dist/cjs/fork/getPathFromState-mods.native.js +70 -0
  47. package/dist/cjs/fork/getPathFromState-mods.native.js.map +6 -0
  48. package/dist/cjs/fork/getPathFromState.cjs +75 -224
  49. package/dist/cjs/fork/getPathFromState.js +68 -223
  50. package/dist/cjs/fork/getPathFromState.js.map +2 -2
  51. package/dist/cjs/fork/getPathFromState.native.js +79 -261
  52. package/dist/cjs/fork/getPathFromState.native.js.map +2 -2
  53. package/dist/cjs/fork/getStateFromPath-mods.cjs +187 -0
  54. package/dist/cjs/fork/getStateFromPath-mods.js +199 -0
  55. package/dist/cjs/fork/getStateFromPath-mods.js.map +6 -0
  56. package/dist/cjs/fork/getStateFromPath-mods.native.js +284 -0
  57. package/dist/cjs/fork/getStateFromPath-mods.native.js.map +6 -0
  58. package/dist/cjs/fork/getStateFromPath.cjs +181 -263
  59. package/dist/cjs/fork/getStateFromPath.js +148 -264
  60. package/dist/cjs/fork/getStateFromPath.js.map +2 -2
  61. package/dist/cjs/fork/getStateFromPath.native.js +164 -304
  62. package/dist/cjs/fork/getStateFromPath.native.js.map +2 -2
  63. package/dist/cjs/fork/useBackButton.js.map +1 -1
  64. package/dist/cjs/fork/useBackButton.native.js.map +1 -1
  65. package/dist/cjs/fork/useDocumentTitle.js +4 -1
  66. package/dist/cjs/fork/useDocumentTitle.js.map +1 -1
  67. package/dist/cjs/fork/useDocumentTitle.native.js +1 -1
  68. package/dist/cjs/fork/useDocumentTitle.native.js.map +2 -2
  69. package/dist/cjs/fork/useLinking.cjs +21 -24
  70. package/dist/cjs/fork/useLinking.js +21 -25
  71. package/dist/cjs/fork/useLinking.js.map +2 -2
  72. package/dist/cjs/fork/useLinking.native.js +68 -66
  73. package/dist/cjs/fork/useLinking.native.js.map +2 -2
  74. package/dist/cjs/fork/useThenable.js.map +1 -1
  75. package/dist/cjs/fork/useThenable.native.js.map +1 -1
  76. package/dist/cjs/fork/validatePathConfig.cjs +32 -11
  77. package/dist/cjs/fork/validatePathConfig.js +41 -11
  78. package/dist/cjs/fork/validatePathConfig.js.map +1 -1
  79. package/dist/cjs/fork/validatePathConfig.native.js +47 -18
  80. package/dist/cjs/fork/validatePathConfig.native.js.map +2 -2
  81. package/dist/cjs/getReactNavigationConfig.cjs +1 -1
  82. package/dist/cjs/getReactNavigationConfig.js +1 -1
  83. package/dist/cjs/getReactNavigationConfig.native.js +1 -1
  84. package/dist/cjs/hooks.cjs +2 -2
  85. package/dist/cjs/hooks.js +1 -1
  86. package/dist/cjs/hooks.js.map +1 -1
  87. package/dist/cjs/hooks.native.js +1 -1
  88. package/dist/cjs/hooks.native.js.map +1 -1
  89. package/dist/cjs/index.cjs +3 -3
  90. package/dist/cjs/index.js +2 -2
  91. package/dist/cjs/index.js.map +1 -1
  92. package/dist/cjs/index.native.js +2 -2
  93. package/dist/cjs/index.native.js.map +1 -1
  94. package/dist/cjs/layouts/withLayoutContext.cjs +3 -3
  95. package/dist/cjs/layouts/withLayoutContext.js +2 -2
  96. package/dist/cjs/layouts/withLayoutContext.js.map +1 -1
  97. package/dist/cjs/layouts/withLayoutContext.native.js +2 -2
  98. package/dist/cjs/layouts/withLayoutContext.native.js.map +1 -1
  99. package/dist/cjs/link/linking.cjs +4 -4
  100. package/dist/cjs/link/linking.js +3 -3
  101. package/dist/cjs/link/linking.js.map +2 -2
  102. package/dist/cjs/link/linking.native.js +3 -3
  103. package/dist/cjs/link/linking.native.js.map +1 -1
  104. package/dist/cjs/link/useLinkTo.cjs +3 -3
  105. package/dist/cjs/link/useLinkTo.js +2 -2
  106. package/dist/cjs/link/useLinkTo.js.map +1 -1
  107. package/dist/cjs/link/useLinkTo.native.js +2 -2
  108. package/dist/cjs/link/useLinkTo.native.js.map +1 -1
  109. package/dist/cjs/render.cjs +3 -2
  110. package/dist/cjs/render.js +3 -2
  111. package/dist/cjs/render.js.map +1 -1
  112. package/dist/cjs/{Route.js.map → router/Route.js.map} +1 -1
  113. package/dist/cjs/{Route.native.js.map → router/Route.native.js.map} +1 -1
  114. package/dist/cjs/{createRoute.cjs → router/createRoute.cjs} +1 -1
  115. package/dist/cjs/{createRoute.js → router/createRoute.js} +1 -1
  116. package/dist/cjs/{createRoute.js.map → router/createRoute.js.map} +1 -1
  117. package/dist/cjs/{createRoute.native.js → router/createRoute.native.js} +1 -1
  118. package/dist/cjs/{createRoute.native.js.map → router/createRoute.native.js.map} +1 -1
  119. package/dist/cjs/router/filterRootHTML.cjs +62 -0
  120. package/dist/cjs/router/filterRootHTML.js +49 -0
  121. package/dist/cjs/router/filterRootHTML.js.map +6 -0
  122. package/dist/cjs/router/filterRootHTML.native.js +55 -0
  123. package/dist/cjs/router/filterRootHTML.native.js.map +6 -0
  124. package/dist/cjs/{getLinkingConfig.cjs → router/getLinkingConfig.cjs} +2 -2
  125. package/dist/cjs/{getLinkingConfig.js → router/getLinkingConfig.js} +1 -1
  126. package/dist/cjs/router/getLinkingConfig.js.map +6 -0
  127. package/dist/cjs/{getLinkingConfig.native.js → router/getLinkingConfig.native.js} +1 -1
  128. package/dist/cjs/router/getLinkingConfig.native.js.map +6 -0
  129. package/dist/cjs/router/getNormalizedStatePath.cjs +2 -2
  130. package/dist/cjs/router/getNormalizedStatePath.js +2 -2
  131. package/dist/cjs/router/getNormalizedStatePath.js.map +1 -1
  132. package/dist/cjs/router/getNormalizedStatePath.native.js +2 -2
  133. package/dist/cjs/router/getNormalizedStatePath.native.js.map +1 -1
  134. package/dist/cjs/{getRoutes.cjs → router/getRoutes.cjs} +3 -3
  135. package/dist/cjs/{getRoutes.js → router/getRoutes.js} +2 -2
  136. package/dist/cjs/{getRoutes.js.map → router/getRoutes.js.map} +2 -2
  137. package/dist/cjs/{getRoutes.native.js → router/getRoutes.native.js} +2 -2
  138. package/dist/cjs/{getRoutes.native.js.map → router/getRoutes.native.js.map} +2 -2
  139. package/dist/cjs/{imperative-api.cjs → router/imperative-api.cjs} +1 -1
  140. package/dist/cjs/{imperative-api.js → router/imperative-api.js} +1 -1
  141. package/dist/cjs/{imperative-api.js.map → router/imperative-api.js.map} +1 -1
  142. package/dist/cjs/{imperative-api.native.js → router/imperative-api.native.js} +1 -1
  143. package/dist/cjs/{imperative-api.native.js.map → router/imperative-api.native.js.map} +2 -2
  144. package/dist/cjs/{matchers.js.map → router/matchers.js.map} +1 -1
  145. package/dist/cjs/{matchers.native.js.map → router/matchers.native.js.map} +1 -1
  146. package/dist/cjs/router/router.cjs +25 -9
  147. package/dist/cjs/router/router.js +25 -3
  148. package/dist/cjs/router/router.js.map +1 -1
  149. package/dist/cjs/router/router.native.js +39 -3
  150. package/dist/cjs/router/router.native.js.map +2 -2
  151. package/dist/cjs/{sortRoutes.js.map → router/sortRoutes.js.map} +1 -1
  152. package/dist/cjs/{sortRoutes.native.js.map → router/sortRoutes.native.js.map} +1 -1
  153. package/dist/cjs/{useNavigation.js.map → router/useNavigation.js.map} +1 -1
  154. package/dist/cjs/{useNavigation.native.js.map → router/useNavigation.native.js.map} +1 -1
  155. package/dist/cjs/{useScreens.cjs → router/useScreens.cjs} +57 -6
  156. package/dist/cjs/{useScreens.js → router/useScreens.js} +29 -3
  157. package/dist/cjs/router/useScreens.js.map +6 -0
  158. package/dist/cjs/{useScreens.native.js → router/useScreens.native.js} +10 -3
  159. package/dist/cjs/router/useScreens.native.js.map +6 -0
  160. package/dist/cjs/{useViteRoutes.js.map → router/useViteRoutes.js.map} +1 -1
  161. package/dist/cjs/{useViteRoutes.native.js.map → router/useViteRoutes.native.js.map} +1 -1
  162. package/dist/cjs/server/createRoutesManifest.cjs +1 -1
  163. package/dist/cjs/server/createRoutesManifest.js +1 -1
  164. package/dist/cjs/server/createRoutesManifest.js.map +1 -1
  165. package/dist/cjs/server/createRoutesManifest.native.js +1 -1
  166. package/dist/cjs/server/createRoutesManifest.native.js.map +1 -1
  167. package/dist/cjs/server/getServerManifest.cjs +2 -2
  168. package/dist/cjs/server/getServerManifest.js +1 -1
  169. package/dist/cjs/server/getServerManifest.js.map +1 -1
  170. package/dist/cjs/server/getServerManifest.native.js +1 -1
  171. package/dist/cjs/server/getServerManifest.native.js.map +1 -1
  172. package/dist/cjs/server/oneServe.cjs +1 -1
  173. package/dist/cjs/server/oneServe.js +1 -1
  174. package/dist/cjs/server/oneServe.js.map +1 -1
  175. package/dist/cjs/server/oneServe.native.js +1 -1
  176. package/dist/cjs/server/oneServe.native.js.map +1 -1
  177. package/dist/cjs/typed-routes/generateRouteTypes.cjs +1 -1
  178. package/dist/cjs/typed-routes/generateRouteTypes.js +1 -1
  179. package/dist/cjs/typed-routes/generateRouteTypes.js.map +1 -1
  180. package/dist/cjs/typed-routes/generateRouteTypes.native.js +1 -1
  181. package/dist/cjs/typed-routes/generateRouteTypes.native.js.map +1 -1
  182. package/dist/cjs/typed-routes/getTypedRoutesDeclarationFile.cjs +2 -2
  183. package/dist/cjs/typed-routes/getTypedRoutesDeclarationFile.js +1 -1
  184. package/dist/cjs/typed-routes/getTypedRoutesDeclarationFile.js.map +1 -1
  185. package/dist/cjs/typed-routes/getTypedRoutesDeclarationFile.native.js +1 -1
  186. package/dist/cjs/typed-routes/getTypedRoutesDeclarationFile.native.js.map +1 -1
  187. package/dist/cjs/useLoader.cjs +2 -2
  188. package/dist/cjs/useLoader.js +1 -1
  189. package/dist/cjs/useLoader.js.map +1 -1
  190. package/dist/cjs/useLoader.native.js +1 -1
  191. package/dist/cjs/useLoader.native.js.map +1 -1
  192. package/dist/cjs/{cleanUrl.cjs → utils/cleanUrl.cjs} +3 -3
  193. package/dist/cjs/{cleanUrl.js → utils/cleanUrl.js} +1 -1
  194. package/dist/cjs/{cleanUrl.js.map → utils/cleanUrl.js.map} +2 -2
  195. package/dist/cjs/{cleanUrl.native.js → utils/cleanUrl.native.js} +1 -1
  196. package/dist/cjs/{cleanUrl.native.js.map → utils/cleanUrl.native.js.map} +2 -2
  197. package/dist/cjs/{platform.js.map → utils/platform.js.map} +1 -1
  198. package/dist/cjs/{platform.native.js.map → utils/platform.native.js.map} +1 -1
  199. package/dist/cjs/utils/redirect.cjs +1 -1
  200. package/dist/cjs/utils/redirect.js +1 -1
  201. package/dist/cjs/utils/redirect.native.js +1 -1
  202. package/dist/cjs/utils/redirect.native.js.map +1 -1
  203. package/dist/cjs/utils/serverContext.cjs +54 -0
  204. package/dist/cjs/utils/serverContext.js +51 -0
  205. package/dist/cjs/utils/serverContext.js.map +6 -0
  206. package/dist/cjs/utils/serverContext.native.js +55 -0
  207. package/dist/cjs/utils/serverContext.native.js.map +6 -0
  208. package/dist/cjs/utils/useConstant.cjs +44 -0
  209. package/dist/cjs/utils/useConstant.js +35 -0
  210. package/dist/cjs/utils/useConstant.js.map +6 -0
  211. package/dist/cjs/utils/useConstant.native.js +44 -0
  212. package/dist/cjs/utils/useConstant.native.js.map +6 -0
  213. package/dist/cjs/views/EmptyRoute.cjs +1 -1
  214. package/dist/cjs/views/EmptyRoute.js +1 -1
  215. package/dist/cjs/views/EmptyRoute.native.js +1 -1
  216. package/dist/cjs/views/LoadProgressBar.cjs +1 -1
  217. package/dist/cjs/views/LoadProgressBar.js +1 -1
  218. package/dist/cjs/views/LoadProgressBar.js.map +1 -1
  219. package/dist/cjs/views/LoadProgressBar.native.js +1 -1
  220. package/dist/cjs/views/LoadProgressBar.native.js.map +1 -1
  221. package/dist/cjs/views/Navigator.cjs +2 -2
  222. package/dist/cjs/views/Navigator.js +1 -1
  223. package/dist/cjs/views/Navigator.js.map +1 -1
  224. package/dist/cjs/views/Navigator.native.js +1 -1
  225. package/dist/cjs/views/Navigator.native.js.map +1 -1
  226. package/dist/cjs/views/Screen.cjs +1 -1
  227. package/dist/cjs/views/Screen.js +1 -1
  228. package/dist/cjs/views/Screen.native.js +1 -1
  229. package/dist/cjs/vite/DevHead.cjs +59 -0
  230. package/dist/cjs/vite/DevHead.js +54 -0
  231. package/dist/cjs/vite/DevHead.js.map +6 -0
  232. package/dist/cjs/vite/DevHead.native.js +29 -0
  233. package/dist/cjs/vite/DevHead.native.js.map +6 -0
  234. package/dist/cjs/vite/plugins/SSRCSSPlugin.cjs +6 -8
  235. package/dist/cjs/vite/plugins/SSRCSSPlugin.js +6 -8
  236. package/dist/cjs/vite/plugins/SSRCSSPlugin.js.map +1 -1
  237. package/dist/cjs/vite/plugins/SSRCSSPlugin.native.js +7 -9
  238. package/dist/cjs/vite/plugins/SSRCSSPlugin.native.js.map +2 -2
  239. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.cjs +8 -4
  240. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.js +10 -5
  241. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.js.map +1 -1
  242. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js +11 -6
  243. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js.map +2 -2
  244. package/dist/cjs/zero/useQuery.cjs +3 -2
  245. package/dist/cjs/zero/useQuery.js +2 -2
  246. package/dist/cjs/zero/useQuery.js.map +1 -1
  247. package/dist/cjs/zero/useQuery.native.js +1 -1
  248. package/dist/cjs/zero/useQuery.native.js.map +2 -2
  249. package/dist/esm/Root.js +16 -19
  250. package/dist/esm/Root.js.map +1 -1
  251. package/dist/esm/Root.mjs +9 -13
  252. package/dist/esm/Root.mjs.map +1 -1
  253. package/dist/esm/Root.native.js +26 -19
  254. package/dist/esm/Root.native.js.map +2 -2
  255. package/dist/esm/cli/build.js +1 -1
  256. package/dist/esm/cli/build.mjs +1 -1
  257. package/dist/esm/cli/build.native.js +1 -1
  258. package/dist/esm/constants.js +3 -1
  259. package/dist/esm/constants.js.map +1 -1
  260. package/dist/esm/constants.mjs +4 -2
  261. package/dist/esm/constants.mjs.map +1 -1
  262. package/dist/esm/constants.native.js +3 -1
  263. package/dist/esm/constants.native.js.map +2 -2
  264. package/dist/esm/createApp.js +22 -76
  265. package/dist/esm/createApp.js.map +1 -1
  266. package/dist/esm/createApp.mjs +23 -83
  267. package/dist/esm/createApp.mjs.map +1 -1
  268. package/dist/esm/createApp.native.js +0 -1
  269. package/dist/esm/createApp.native.js.map +2 -2
  270. package/dist/esm/createHandleRequest.js +1 -1
  271. package/dist/esm/createHandleRequest.js.map +1 -1
  272. package/dist/esm/createHandleRequest.mjs +1 -1
  273. package/dist/esm/createHandleRequest.mjs.map +1 -1
  274. package/dist/esm/createHandleRequest.native.js +1 -1
  275. package/dist/esm/createHandleRequest.native.js.map +1 -1
  276. package/dist/esm/fork/NavigationContainer.js +43 -20
  277. package/dist/esm/fork/NavigationContainer.js.map +1 -1
  278. package/dist/esm/fork/NavigationContainer.mjs +42 -24
  279. package/dist/esm/fork/NavigationContainer.mjs.map +1 -1
  280. package/dist/esm/fork/NavigationContainer.native.js +44 -24
  281. package/dist/esm/fork/NavigationContainer.native.js.map +2 -2
  282. package/dist/esm/fork/createMemoryHistory.js +3 -2
  283. package/dist/esm/fork/createMemoryHistory.js.map +1 -1
  284. package/dist/esm/fork/createMemoryHistory.mjs +4 -3
  285. package/dist/esm/fork/createMemoryHistory.mjs.map +1 -1
  286. package/dist/esm/fork/createMemoryHistory.native.js +4 -4
  287. package/dist/esm/fork/createMemoryHistory.native.js.map +2 -2
  288. package/dist/esm/fork/extractPathFromURL.js +42 -11
  289. package/dist/esm/fork/extractPathFromURL.js.map +1 -1
  290. package/dist/esm/fork/extractPathFromURL.mjs +39 -11
  291. package/dist/esm/fork/extractPathFromURL.mjs.map +1 -1
  292. package/dist/esm/fork/extractPathFromURL.native.js +52 -15
  293. package/dist/esm/fork/extractPathFromURL.native.js.map +2 -2
  294. package/dist/esm/fork/findFocusedRoute.js.map +1 -1
  295. package/dist/esm/fork/findFocusedRoute.mjs.map +1 -1
  296. package/dist/esm/fork/findFocusedRoute.native.js.map +1 -1
  297. package/dist/esm/fork/getPathFromState-mods.js +40 -0
  298. package/dist/esm/fork/getPathFromState-mods.js.map +6 -0
  299. package/dist/esm/fork/getPathFromState-mods.mjs +40 -0
  300. package/dist/esm/fork/getPathFromState-mods.mjs.map +1 -0
  301. package/dist/esm/fork/getPathFromState-mods.native.js +47 -0
  302. package/dist/esm/fork/getPathFromState-mods.native.js.map +6 -0
  303. package/dist/esm/fork/getPathFromState.js +71 -228
  304. package/dist/esm/fork/getPathFromState.js.map +2 -2
  305. package/dist/esm/fork/getPathFromState.mjs +73 -221
  306. package/dist/esm/fork/getPathFromState.mjs.map +1 -1
  307. package/dist/esm/fork/getPathFromState.native.js +79 -260
  308. package/dist/esm/fork/getPathFromState.native.js.map +2 -2
  309. package/dist/esm/fork/getStateFromPath-mods.js +176 -0
  310. package/dist/esm/fork/getStateFromPath-mods.js.map +6 -0
  311. package/dist/esm/fork/getStateFromPath-mods.mjs +143 -0
  312. package/dist/esm/fork/getStateFromPath-mods.mjs.map +1 -0
  313. package/dist/esm/fork/getStateFromPath-mods.native.js +246 -0
  314. package/dist/esm/fork/getStateFromPath-mods.native.js.map +6 -0
  315. package/dist/esm/fork/getStateFromPath.js +160 -265
  316. package/dist/esm/fork/getStateFromPath.js.map +2 -2
  317. package/dist/esm/fork/getStateFromPath.mjs +181 -260
  318. package/dist/esm/fork/getStateFromPath.mjs.map +1 -1
  319. package/dist/esm/fork/getStateFromPath.native.js +164 -302
  320. package/dist/esm/fork/getStateFromPath.native.js.map +2 -2
  321. package/dist/esm/fork/useBackButton.js.map +1 -1
  322. package/dist/esm/fork/useBackButton.mjs.map +1 -1
  323. package/dist/esm/fork/useBackButton.native.js.map +1 -1
  324. package/dist/esm/fork/useDocumentTitle.js +4 -1
  325. package/dist/esm/fork/useDocumentTitle.js.map +1 -1
  326. package/dist/esm/fork/useDocumentTitle.mjs.map +1 -1
  327. package/dist/esm/fork/useDocumentTitle.native.js +1 -1
  328. package/dist/esm/fork/useDocumentTitle.native.js.map +2 -2
  329. package/dist/esm/fork/useLinking.js +22 -26
  330. package/dist/esm/fork/useLinking.js.map +1 -1
  331. package/dist/esm/fork/useLinking.mjs +20 -23
  332. package/dist/esm/fork/useLinking.mjs.map +1 -1
  333. package/dist/esm/fork/useLinking.native.js +65 -67
  334. package/dist/esm/fork/useLinking.native.js.map +2 -2
  335. package/dist/esm/fork/useThenable.js.map +1 -1
  336. package/dist/esm/fork/useThenable.mjs.map +1 -1
  337. package/dist/esm/fork/useThenable.native.js.map +1 -1
  338. package/dist/esm/fork/validatePathConfig.js +41 -11
  339. package/dist/esm/fork/validatePathConfig.js.map +1 -1
  340. package/dist/esm/fork/validatePathConfig.mjs +32 -11
  341. package/dist/esm/fork/validatePathConfig.mjs.map +1 -1
  342. package/dist/esm/fork/validatePathConfig.native.js +43 -18
  343. package/dist/esm/fork/validatePathConfig.native.js.map +2 -2
  344. package/dist/esm/getReactNavigationConfig.js +1 -1
  345. package/dist/esm/getReactNavigationConfig.mjs +1 -1
  346. package/dist/esm/getReactNavigationConfig.native.js +1 -1
  347. package/dist/esm/hooks.js +2 -2
  348. package/dist/esm/hooks.mjs +2 -2
  349. package/dist/esm/hooks.native.js +2 -2
  350. package/dist/esm/index.js +3 -3
  351. package/dist/esm/index.mjs +3 -3
  352. package/dist/esm/index.native.js +3 -3
  353. package/dist/esm/layouts/withLayoutContext.js +3 -3
  354. package/dist/esm/layouts/withLayoutContext.js.map +1 -1
  355. package/dist/esm/layouts/withLayoutContext.mjs +3 -3
  356. package/dist/esm/layouts/withLayoutContext.mjs.map +1 -1
  357. package/dist/esm/layouts/withLayoutContext.native.js +3 -3
  358. package/dist/esm/layouts/withLayoutContext.native.js.map +1 -1
  359. package/dist/esm/link/linking.js +2 -2
  360. package/dist/esm/link/linking.js.map +1 -1
  361. package/dist/esm/link/linking.mjs +2 -2
  362. package/dist/esm/link/linking.mjs.map +1 -1
  363. package/dist/esm/link/linking.native.js +2 -2
  364. package/dist/esm/link/linking.native.js.map +1 -1
  365. package/dist/esm/link/useLinkTo.js +2 -2
  366. package/dist/esm/link/useLinkTo.mjs +2 -2
  367. package/dist/esm/link/useLinkTo.native.js +2 -2
  368. package/dist/esm/render.js +3 -2
  369. package/dist/esm/render.js.map +1 -1
  370. package/dist/esm/render.mjs +3 -2
  371. package/dist/esm/render.mjs.map +1 -1
  372. package/dist/esm/{Route.js.map → router/Route.js.map} +1 -1
  373. package/dist/esm/router/Route.mjs.map +1 -0
  374. package/dist/esm/{Route.native.js.map → router/Route.native.js.map} +1 -1
  375. package/dist/esm/{createRoute.js → router/createRoute.js} +1 -1
  376. package/dist/esm/{createRoute.js.map → router/createRoute.js.map} +1 -1
  377. package/dist/esm/{createRoute.mjs → router/createRoute.mjs} +1 -1
  378. package/dist/esm/router/createRoute.mjs.map +1 -0
  379. package/dist/esm/{createRoute.native.js → router/createRoute.native.js} +1 -1
  380. package/dist/esm/{createRoute.native.js.map → router/createRoute.native.js.map} +1 -1
  381. package/dist/esm/router/filterRootHTML.js +33 -0
  382. package/dist/esm/router/filterRootHTML.js.map +6 -0
  383. package/dist/esm/router/filterRootHTML.mjs +39 -0
  384. package/dist/esm/router/filterRootHTML.mjs.map +1 -0
  385. package/dist/esm/router/filterRootHTML.native.js +34 -0
  386. package/dist/esm/router/filterRootHTML.native.js.map +6 -0
  387. package/dist/esm/{getLinkingConfig.js → router/getLinkingConfig.js} +7 -2
  388. package/dist/esm/router/getLinkingConfig.js.map +6 -0
  389. package/dist/esm/{getLinkingConfig.mjs → router/getLinkingConfig.mjs} +2 -2
  390. package/dist/esm/router/getLinkingConfig.mjs.map +1 -0
  391. package/dist/esm/{getLinkingConfig.native.js → router/getLinkingConfig.native.js} +2 -2
  392. package/dist/esm/router/getLinkingConfig.native.js.map +6 -0
  393. package/dist/esm/router/getNormalizedStatePath.js +1 -1
  394. package/dist/esm/router/getNormalizedStatePath.mjs +1 -1
  395. package/dist/esm/router/getNormalizedStatePath.native.js +1 -1
  396. package/dist/esm/{getRoutes.js → router/getRoutes.js} +3 -3
  397. package/dist/esm/{getRoutes.js.map → router/getRoutes.js.map} +2 -2
  398. package/dist/esm/{getRoutes.mjs → router/getRoutes.mjs} +3 -3
  399. package/dist/esm/router/getRoutes.mjs.map +1 -0
  400. package/dist/esm/{getRoutes.native.js → router/getRoutes.native.js} +3 -3
  401. package/dist/esm/{getRoutes.native.js.map → router/getRoutes.native.js.map} +2 -2
  402. package/dist/esm/{imperative-api.js → router/imperative-api.js} +1 -1
  403. package/dist/esm/{imperative-api.js.map → router/imperative-api.js.map} +1 -1
  404. package/dist/esm/{imperative-api.mjs → router/imperative-api.mjs} +1 -1
  405. package/dist/esm/router/imperative-api.mjs.map +1 -0
  406. package/dist/esm/{imperative-api.native.js → router/imperative-api.native.js} +1 -1
  407. package/dist/esm/{imperative-api.native.js.map → router/imperative-api.native.js.map} +1 -1
  408. package/dist/esm/{matchers.js.map → router/matchers.js.map} +1 -1
  409. package/dist/esm/router/matchers.mjs.map +1 -0
  410. package/dist/esm/{matchers.native.js.map → router/matchers.native.js.map} +1 -1
  411. package/dist/esm/router/router.js +30 -8
  412. package/dist/esm/router/router.js.map +1 -1
  413. package/dist/esm/router/router.mjs +24 -8
  414. package/dist/esm/router/router.mjs.map +1 -1
  415. package/dist/esm/router/router.native.js +44 -8
  416. package/dist/esm/router/router.native.js.map +2 -2
  417. package/dist/esm/{sortRoutes.js.map → router/sortRoutes.js.map} +1 -1
  418. package/dist/esm/router/sortRoutes.mjs.map +1 -0
  419. package/dist/esm/{sortRoutes.native.js.map → router/sortRoutes.native.js.map} +1 -1
  420. package/dist/esm/{useNavigation.js.map → router/useNavigation.js.map} +1 -1
  421. package/dist/esm/router/useNavigation.mjs.map +1 -0
  422. package/dist/esm/{useNavigation.native.js.map → router/useNavigation.native.js.map} +1 -1
  423. package/dist/esm/{useScreens.js → router/useScreens.js} +39 -8
  424. package/dist/esm/router/useScreens.js.map +6 -0
  425. package/dist/esm/{useScreens.mjs → router/useScreens.mjs} +59 -8
  426. package/dist/esm/router/useScreens.mjs.map +1 -0
  427. package/dist/esm/{useScreens.native.js → router/useScreens.native.js} +20 -8
  428. package/dist/esm/router/useScreens.native.js.map +6 -0
  429. package/dist/esm/{useViteRoutes.js.map → router/useViteRoutes.js.map} +1 -1
  430. package/dist/esm/router/useViteRoutes.mjs.map +1 -0
  431. package/dist/esm/{useViteRoutes.native.js.map → router/useViteRoutes.native.js.map} +1 -1
  432. package/dist/esm/server/createRoutesManifest.js +1 -1
  433. package/dist/esm/server/createRoutesManifest.mjs +1 -1
  434. package/dist/esm/server/createRoutesManifest.native.js +1 -1
  435. package/dist/esm/server/getServerManifest.js +2 -2
  436. package/dist/esm/server/getServerManifest.mjs +2 -2
  437. package/dist/esm/server/getServerManifest.native.js +2 -2
  438. package/dist/esm/server/oneServe.js +1 -1
  439. package/dist/esm/server/oneServe.mjs +1 -1
  440. package/dist/esm/server/oneServe.native.js +1 -1
  441. package/dist/esm/typed-routes/generateRouteTypes.js +1 -1
  442. package/dist/esm/typed-routes/generateRouteTypes.mjs +1 -1
  443. package/dist/esm/typed-routes/generateRouteTypes.native.js +1 -1
  444. package/dist/esm/typed-routes/getTypedRoutesDeclarationFile.js +2 -2
  445. package/dist/esm/typed-routes/getTypedRoutesDeclarationFile.mjs +2 -2
  446. package/dist/esm/typed-routes/getTypedRoutesDeclarationFile.native.js +2 -2
  447. package/dist/esm/useLoader.js +2 -2
  448. package/dist/esm/useLoader.mjs +2 -2
  449. package/dist/esm/useLoader.native.js +2 -2
  450. package/dist/esm/{cleanUrl.js → utils/cleanUrl.js} +3 -3
  451. package/dist/esm/{cleanUrl.js.map → utils/cleanUrl.js.map} +1 -1
  452. package/dist/esm/{cleanUrl.mjs → utils/cleanUrl.mjs} +3 -3
  453. package/dist/esm/utils/cleanUrl.mjs.map +1 -0
  454. package/dist/esm/{cleanUrl.native.js → utils/cleanUrl.native.js} +3 -3
  455. package/dist/esm/{cleanUrl.native.js.map → utils/cleanUrl.native.js.map} +1 -1
  456. package/dist/esm/{platform.js.map → utils/platform.js.map} +1 -1
  457. package/dist/esm/utils/platform.mjs.map +1 -0
  458. package/dist/esm/{platform.native.js.map → utils/platform.native.js.map} +1 -1
  459. package/dist/esm/utils/redirect.js +1 -1
  460. package/dist/esm/utils/redirect.mjs +1 -1
  461. package/dist/esm/utils/redirect.native.js +1 -1
  462. package/dist/esm/utils/serverContext.js +35 -0
  463. package/dist/esm/utils/serverContext.js.map +6 -0
  464. package/dist/esm/utils/serverContext.mjs +28 -0
  465. package/dist/esm/utils/serverContext.mjs.map +1 -0
  466. package/dist/esm/utils/serverContext.native.js +32 -0
  467. package/dist/esm/utils/serverContext.native.js.map +6 -0
  468. package/dist/esm/utils/useConstant.js +11 -0
  469. package/dist/esm/utils/useConstant.js.map +6 -0
  470. package/dist/esm/utils/useConstant.mjs +10 -0
  471. package/dist/esm/utils/useConstant.mjs.map +1 -0
  472. package/dist/esm/utils/useConstant.native.js +15 -0
  473. package/dist/esm/utils/useConstant.native.js.map +6 -0
  474. package/dist/esm/views/EmptyRoute.js +1 -1
  475. package/dist/esm/views/EmptyRoute.mjs +1 -1
  476. package/dist/esm/views/EmptyRoute.native.js +1 -1
  477. package/dist/esm/views/LoadProgressBar.js +1 -1
  478. package/dist/esm/views/LoadProgressBar.mjs +1 -1
  479. package/dist/esm/views/LoadProgressBar.native.js +1 -1
  480. package/dist/esm/views/Navigator.js +2 -2
  481. package/dist/esm/views/Navigator.mjs +2 -2
  482. package/dist/esm/views/Navigator.native.js +2 -2
  483. package/dist/esm/views/Screen.js +1 -1
  484. package/dist/esm/views/Screen.mjs +1 -1
  485. package/dist/esm/views/Screen.native.js +1 -1
  486. package/dist/esm/vite/DevHead.js +39 -0
  487. package/dist/esm/vite/DevHead.js.map +6 -0
  488. package/dist/esm/vite/DevHead.mjs +36 -0
  489. package/dist/esm/vite/DevHead.mjs.map +1 -0
  490. package/dist/esm/vite/DevHead.native.js +9 -0
  491. package/dist/esm/vite/DevHead.native.js.map +6 -0
  492. package/dist/esm/vite/plugins/SSRCSSPlugin.js +6 -8
  493. package/dist/esm/vite/plugins/SSRCSSPlugin.js.map +1 -1
  494. package/dist/esm/vite/plugins/SSRCSSPlugin.mjs +7 -8
  495. package/dist/esm/vite/plugins/SSRCSSPlugin.mjs.map +1 -1
  496. package/dist/esm/vite/plugins/SSRCSSPlugin.native.js +7 -8
  497. package/dist/esm/vite/plugins/SSRCSSPlugin.native.js.map +2 -2
  498. package/dist/esm/vite/plugins/fileSystemRouterPlugin.js +10 -4
  499. package/dist/esm/vite/plugins/fileSystemRouterPlugin.js.map +1 -1
  500. package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs +7 -3
  501. package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs.map +1 -1
  502. package/dist/esm/vite/plugins/fileSystemRouterPlugin.native.js +11 -5
  503. package/dist/esm/vite/plugins/fileSystemRouterPlugin.native.js.map +2 -2
  504. package/dist/esm/zero/useQuery.js +2 -1
  505. package/dist/esm/zero/useQuery.js.map +1 -1
  506. package/dist/esm/zero/useQuery.mjs +2 -1
  507. package/dist/esm/zero/useQuery.mjs.map +1 -1
  508. package/dist/esm/zero/useQuery.native.js +2 -1
  509. package/dist/esm/zero/useQuery.native.js.map +2 -2
  510. package/package.json +9 -16
  511. package/src/Root.tsx +33 -44
  512. package/src/cli/build.ts +1 -1
  513. package/src/constants.ts +4 -0
  514. package/src/createApp.native.tsx +1 -1
  515. package/src/createApp.tsx +23 -82
  516. package/src/createHandleRequest.ts +3 -2
  517. package/src/fork/NavigationContainer.tsx +101 -39
  518. package/src/fork/createMemoryHistory.tsx +15 -13
  519. package/src/fork/extractPathFromURL.ts +85 -40
  520. package/src/fork/findFocusedRoute.tsx +9 -1
  521. package/src/fork/getPathFromState-mods.ts +142 -0
  522. package/src/fork/getPathFromState.ts +244 -501
  523. package/src/fork/getStateFromPath-mods.ts +400 -0
  524. package/src/fork/getStateFromPath.ts +447 -538
  525. package/src/fork/useBackButton.native.tsx +16 -2
  526. package/src/fork/useBackButton.tsx +11 -2
  527. package/src/fork/useDocumentTitle.native.tsx +9 -4
  528. package/src/fork/useDocumentTitle.tsx +12 -7
  529. package/src/fork/useLinking.native.ts +71 -63
  530. package/src/fork/useLinking.ts +75 -40
  531. package/src/fork/useThenable.tsx +7 -1
  532. package/src/fork/validatePathConfig.ts +64 -12
  533. package/src/getReactNavigationConfig.ts +2 -2
  534. package/src/hooks.tsx +2 -2
  535. package/src/index.ts +3 -3
  536. package/src/layouts/withLayoutContext.tsx +3 -3
  537. package/src/link/linking.ts +2 -2
  538. package/src/link/useLinkTo.tsx +2 -2
  539. package/src/render.tsx +3 -5
  540. package/src/{Route.tsx → router/Route.tsx} +2 -2
  541. package/src/{createRoute.ts → router/createRoute.ts} +2 -2
  542. package/src/router/filterRootHTML.ts +81 -0
  543. package/src/{getLinkingConfig.ts → router/getLinkingConfig.ts} +8 -3
  544. package/src/router/getNormalizedStatePath.tsx +1 -1
  545. package/src/{getRoutes.ts → router/getRoutes.ts} +5 -5
  546. package/src/{imperative-api.ts → router/imperative-api.ts} +2 -2
  547. package/src/router/router.ts +48 -9
  548. package/src/{useScreens.tsx → router/useScreens.tsx} +63 -48
  549. package/src/{useViteRoutes.tsx → router/useViteRoutes.tsx} +2 -2
  550. package/src/server/createRoutesManifest.ts +3 -3
  551. package/src/server/getServerManifest.ts +3 -3
  552. package/src/server/oneServe.ts +1 -1
  553. package/src/typed-routes/generateRouteTypes.ts +1 -1
  554. package/src/typed-routes/getTypedRoutesDeclarationFile.ts +3 -3
  555. package/src/useLoader.ts +2 -2
  556. package/src/{cleanUrl.ts → utils/cleanUrl.ts} +3 -3
  557. package/src/utils/redirect.ts +1 -1
  558. package/src/utils/serverContext.tsx +52 -0
  559. package/src/utils/useConstant.ts +18 -0
  560. package/src/views/EmptyRoute.tsx +1 -1
  561. package/src/views/LoadProgressBar.tsx +1 -1
  562. package/src/views/Navigator.tsx +2 -2
  563. package/src/views/Screen.tsx +1 -1
  564. package/src/vite/DevHead.tsx +39 -0
  565. package/src/vite/plugins/SSRCSSPlugin.ts +6 -10
  566. package/src/vite/plugins/fileSystemRouterPlugin.tsx +12 -6
  567. package/src/zero/useQuery.ts +2 -1
  568. package/types/Root.d.ts +3 -2
  569. package/types/Root.d.ts.map +1 -1
  570. package/types/constants.d.ts +2 -0
  571. package/types/constants.d.ts.map +1 -1
  572. package/types/createApp.d.ts.map +1 -1
  573. package/types/createHandleRequest.d.ts +1 -1
  574. package/types/createHandleRequest.d.ts.map +1 -1
  575. package/types/fork/NavigationContainer.d.ts +19 -8
  576. package/types/fork/NavigationContainer.d.ts.map +1 -1
  577. package/types/fork/createMemoryHistory.d.ts +10 -1
  578. package/types/fork/createMemoryHistory.d.ts.map +1 -1
  579. package/types/fork/extractPathFromURL.d.ts +7 -1
  580. package/types/fork/extractPathFromURL.d.ts.map +1 -1
  581. package/types/fork/findFocusedRoute.d.ts +9 -0
  582. package/types/fork/findFocusedRoute.d.ts.map +1 -1
  583. package/types/fork/getPathFromState-mods.d.ts +23 -0
  584. package/types/fork/getPathFromState-mods.d.ts.map +1 -0
  585. package/types/fork/getPathFromState.d.ts +15 -14
  586. package/types/fork/getPathFromState.d.ts.map +1 -1
  587. package/types/fork/getStateFromPath-mods.d.ts +58 -0
  588. package/types/fork/getStateFromPath-mods.d.ts.map +1 -0
  589. package/types/fork/getStateFromPath.d.ts +28 -29
  590. package/types/fork/getStateFromPath.d.ts.map +1 -1
  591. package/types/fork/useBackButton.d.ts +6 -0
  592. package/types/fork/useBackButton.d.ts.map +1 -1
  593. package/types/fork/useBackButton.native.d.ts +9 -1
  594. package/types/fork/useBackButton.native.d.ts.map +1 -1
  595. package/types/fork/useDocumentTitle.d.ts +8 -6
  596. package/types/fork/useDocumentTitle.d.ts.map +1 -1
  597. package/types/fork/useDocumentTitle.native.d.ts +5 -2
  598. package/types/fork/useDocumentTitle.native.d.ts.map +1 -1
  599. package/types/fork/useLinking.d.ts +8 -1
  600. package/types/fork/useLinking.d.ts.map +1 -1
  601. package/types/fork/useLinking.native.d.ts +9 -2
  602. package/types/fork/useLinking.native.d.ts.map +1 -1
  603. package/types/fork/useThenable.d.ts +6 -0
  604. package/types/fork/useThenable.d.ts.map +1 -1
  605. package/types/fork/validatePathConfig.d.ts +8 -1
  606. package/types/fork/validatePathConfig.d.ts.map +1 -1
  607. package/types/getReactNavigationConfig.d.ts +1 -1
  608. package/types/getReactNavigationConfig.d.ts.map +1 -1
  609. package/types/index.d.ts +3 -3
  610. package/types/index.d.ts.map +1 -1
  611. package/types/layouts/withLayoutContext.d.ts +1 -1
  612. package/types/layouts/withLayoutContext.d.ts.map +1 -1
  613. package/types/link/linking.d.ts +2 -2
  614. package/types/link/linking.d.ts.map +1 -1
  615. package/types/render.d.ts.map +1 -1
  616. package/types/{Route.d.ts → router/Route.d.ts} +2 -2
  617. package/types/router/Route.d.ts.map +1 -0
  618. package/types/{createRoute.d.ts → router/createRoute.d.ts} +1 -1
  619. package/types/router/createRoute.d.ts.map +1 -0
  620. package/types/router/filterRootHTML.d.ts +19 -0
  621. package/types/router/filterRootHTML.d.ts.map +1 -0
  622. package/types/{getLinkingConfig.d.ts → router/getLinkingConfig.d.ts} +2 -2
  623. package/types/router/getLinkingConfig.d.ts.map +1 -0
  624. package/types/{getRoutes.d.ts → router/getRoutes.d.ts} +1 -1
  625. package/types/router/getRoutes.d.ts.map +1 -0
  626. package/types/router/imperative-api.d.ts +3 -0
  627. package/types/router/imperative-api.d.ts.map +1 -0
  628. package/types/router/matchers.d.ts.map +1 -0
  629. package/types/router/router.d.ts +2 -2
  630. package/types/router/router.d.ts.map +1 -1
  631. package/types/router/sortRoutes.d.ts.map +1 -0
  632. package/types/router/useNavigation.d.ts.map +1 -0
  633. package/types/router/useScreens.d.ts.map +1 -0
  634. package/types/{useViteRoutes.d.ts → router/useViteRoutes.d.ts} +2 -2
  635. package/types/router/useViteRoutes.d.ts.map +1 -0
  636. package/types/server/createRoutesManifest.d.ts +3 -3
  637. package/types/server/createRoutesManifest.d.ts.map +1 -1
  638. package/types/server/getServerManifest.d.ts +1 -1
  639. package/types/server/getServerManifest.d.ts.map +1 -1
  640. package/types/utils/cleanUrl.d.ts.map +1 -0
  641. package/types/utils/platform.d.ts.map +1 -0
  642. package/types/utils/serverContext.d.ts +14 -0
  643. package/types/utils/serverContext.d.ts.map +1 -0
  644. package/types/utils/useConstant.d.ts +2 -0
  645. package/types/utils/useConstant.d.ts.map +1 -0
  646. package/types/vite/DevHead.d.ts +2 -0
  647. package/types/vite/DevHead.d.ts.map +1 -0
  648. package/types/vite/plugins/SSRCSSPlugin.d.ts +0 -1
  649. package/types/vite/plugins/SSRCSSPlugin.d.ts.map +1 -1
  650. package/types/vite/plugins/fileSystemRouterPlugin.d.ts.map +1 -1
  651. package/types/zero/useQuery.d.ts.map +1 -1
  652. package/dist/cjs/getLinkingConfig.js.map +0 -6
  653. package/dist/cjs/getLinkingConfig.native.js.map +0 -6
  654. package/dist/cjs/useScreens.js.map +0 -6
  655. package/dist/cjs/useScreens.native.js.map +0 -6
  656. package/dist/esm/Route.mjs.map +0 -1
  657. package/dist/esm/cleanUrl.mjs.map +0 -1
  658. package/dist/esm/createRoute.mjs.map +0 -1
  659. package/dist/esm/getLinkingConfig.js.map +0 -6
  660. package/dist/esm/getLinkingConfig.mjs.map +0 -1
  661. package/dist/esm/getLinkingConfig.native.js.map +0 -6
  662. package/dist/esm/getRoutes.mjs.map +0 -1
  663. package/dist/esm/imperative-api.mjs.map +0 -1
  664. package/dist/esm/matchers.mjs.map +0 -1
  665. package/dist/esm/platform.mjs.map +0 -1
  666. package/dist/esm/sortRoutes.mjs.map +0 -1
  667. package/dist/esm/useNavigation.mjs.map +0 -1
  668. package/dist/esm/useScreens.js.map +0 -6
  669. package/dist/esm/useScreens.mjs.map +0 -1
  670. package/dist/esm/useScreens.native.js.map +0 -6
  671. package/dist/esm/useViteRoutes.mjs.map +0 -1
  672. package/types/Route.d.ts.map +0 -1
  673. package/types/cleanUrl.d.ts.map +0 -1
  674. package/types/createRoute.d.ts.map +0 -1
  675. package/types/getLinkingConfig.d.ts.map +0 -1
  676. package/types/getRoutes.d.ts.map +0 -1
  677. package/types/imperative-api.d.ts +0 -3
  678. package/types/imperative-api.d.ts.map +0 -1
  679. package/types/matchers.d.ts.map +0 -1
  680. package/types/platform.d.ts.map +0 -1
  681. package/types/sortRoutes.d.ts.map +0 -1
  682. package/types/useNavigation.d.ts.map +0 -1
  683. package/types/useScreens.d.ts.map +0 -1
  684. package/types/useViteRoutes.d.ts.map +0 -1
  685. /package/dist/cjs/{Route.cjs → router/Route.cjs} +0 -0
  686. /package/dist/cjs/{Route.js → router/Route.js} +0 -0
  687. /package/dist/cjs/{Route.native.js → router/Route.native.js} +0 -0
  688. /package/dist/cjs/{matchers.cjs → router/matchers.cjs} +0 -0
  689. /package/dist/cjs/{matchers.js → router/matchers.js} +0 -0
  690. /package/dist/cjs/{matchers.native.js → router/matchers.native.js} +0 -0
  691. /package/dist/cjs/{sortRoutes.cjs → router/sortRoutes.cjs} +0 -0
  692. /package/dist/cjs/{sortRoutes.js → router/sortRoutes.js} +0 -0
  693. /package/dist/cjs/{sortRoutes.native.js → router/sortRoutes.native.js} +0 -0
  694. /package/dist/cjs/{useNavigation.cjs → router/useNavigation.cjs} +0 -0
  695. /package/dist/cjs/{useNavigation.js → router/useNavigation.js} +0 -0
  696. /package/dist/cjs/{useNavigation.native.js → router/useNavigation.native.js} +0 -0
  697. /package/dist/cjs/{useViteRoutes.cjs → router/useViteRoutes.cjs} +0 -0
  698. /package/dist/cjs/{useViteRoutes.js → router/useViteRoutes.js} +0 -0
  699. /package/dist/cjs/{useViteRoutes.native.js → router/useViteRoutes.native.js} +0 -0
  700. /package/dist/cjs/{platform.cjs → utils/platform.cjs} +0 -0
  701. /package/dist/cjs/{platform.js → utils/platform.js} +0 -0
  702. /package/dist/cjs/{platform.native.js → utils/platform.native.js} +0 -0
  703. /package/dist/esm/{Route.js → router/Route.js} +0 -0
  704. /package/dist/esm/{Route.mjs → router/Route.mjs} +0 -0
  705. /package/dist/esm/{Route.native.js → router/Route.native.js} +0 -0
  706. /package/dist/esm/{matchers.js → router/matchers.js} +0 -0
  707. /package/dist/esm/{matchers.mjs → router/matchers.mjs} +0 -0
  708. /package/dist/esm/{matchers.native.js → router/matchers.native.js} +0 -0
  709. /package/dist/esm/{sortRoutes.js → router/sortRoutes.js} +0 -0
  710. /package/dist/esm/{sortRoutes.mjs → router/sortRoutes.mjs} +0 -0
  711. /package/dist/esm/{sortRoutes.native.js → router/sortRoutes.native.js} +0 -0
  712. /package/dist/esm/{useNavigation.js → router/useNavigation.js} +0 -0
  713. /package/dist/esm/{useNavigation.mjs → router/useNavigation.mjs} +0 -0
  714. /package/dist/esm/{useNavigation.native.js → router/useNavigation.native.js} +0 -0
  715. /package/dist/esm/{useViteRoutes.js → router/useViteRoutes.js} +0 -0
  716. /package/dist/esm/{useViteRoutes.mjs → router/useViteRoutes.mjs} +0 -0
  717. /package/dist/esm/{useViteRoutes.native.js → router/useViteRoutes.native.js} +0 -0
  718. /package/dist/esm/{platform.js → utils/platform.js} +0 -0
  719. /package/dist/esm/{platform.mjs → utils/platform.mjs} +0 -0
  720. /package/dist/esm/{platform.native.js → utils/platform.native.js} +0 -0
  721. /package/src/{matchers.ts → router/matchers.ts} +0 -0
  722. /package/src/{sortRoutes.ts → router/sortRoutes.ts} +0 -0
  723. /package/src/{useNavigation.ts → router/useNavigation.ts} +0 -0
  724. /package/src/{platform.ts → utils/platform.ts} +0 -0
  725. /package/types/{matchers.d.ts → router/matchers.d.ts} +0 -0
  726. /package/types/{sortRoutes.d.ts → router/sortRoutes.d.ts} +0 -0
  727. /package/types/{useNavigation.d.ts → router/useNavigation.d.ts} +0 -0
  728. /package/types/{useScreens.d.ts → router/useScreens.d.ts} +0 -0
  729. /package/types/{cleanUrl.d.ts → utils/cleanUrl.d.ts} +0 -0
  730. /package/types/{platform.d.ts → utils/platform.d.ts} +0 -0
@@ -1,19 +1,33 @@
1
- import { validatePathConfig, type PathConfig, type PathConfigMap } from '@react-navigation/core'
2
- import type { NavigationState, PartialState, Route } from '@react-navigation/routers'
1
+ /**
2
+ * This file is copied from the react-navigation repo:
3
+ * https://github.com/react-navigation/react-navigation/blob/%40react-navigation/core%407.1.2/packages/core/src/getPathFromState.tsx
4
+ *
5
+ * Please refrain from making changes to this file, as it will make merging updates from the upstream harder.
6
+ * All modifications except formatting should be marked with `// @modified` comment.
7
+ */
3
8
 
9
+ // @modified - start
4
10
  import {
5
- matchDeepDynamicRouteName,
6
- matchDynamicName,
7
- matchGroupName,
8
- testNotFound,
9
- } from '../matchers'
11
+ type ConfigItemMods,
12
+ getPathWithConventionsCollapsed,
13
+ appendBaseUrl,
14
+ type AdditionalOptions,
15
+ } from './getPathFromState-mods'
16
+ // @modified - end
10
17
 
11
- type Options<ParamList extends object> = {
18
+ import type { NavigationState, PartialState, Route } from '@react-navigation/routers'
19
+ // import * as queryString from 'query-string' // @modified: not used
20
+
21
+ import type { PathConfig, PathConfigMap } from '@react-navigation/core' // @modified: import from package instead of relative code
22
+ import { validatePathConfig } from './validatePathConfig'
23
+
24
+ type Options<ParamList extends {}> = {
25
+ path?: string
12
26
  initialRouteName?: string
13
27
  screens: PathConfigMap<ParamList>
14
- }
28
+ } & AdditionalOptions // @modified: add `AdditionalOptions`
15
29
 
16
- export type State = NavigationState | Omit<PartialState<NavigationState>, 'stale'>
30
+ export type State = NavigationState | Omit<PartialState<NavigationState>, 'stale'> // @modified: add export
17
31
 
18
32
  type StringifyConfig = Record<string, (value: any) => string>
19
33
 
@@ -21,15 +35,7 @@ type ConfigItem = {
21
35
  pattern?: string
22
36
  stringify?: StringifyConfig
23
37
  screens?: Record<string, ConfigItem>
24
- // Used as fallback for groups
25
- initialRouteName?: string
26
- }
27
-
28
- type CustomRoute = Route<string> & {
29
- state?: State
30
- }
31
-
32
- const DEFAULT_SCREENS: PathConfigMap<object> = {}
38
+ } & ConfigItemMods // @modified: union `ConfigItemMods` for modifications
33
39
 
34
40
  const getActiveRoute = (state: State): { name: string; params?: object } => {
35
41
  const route =
@@ -41,44 +47,26 @@ const getActiveRoute = (state: State): { name: string; params?: object } => {
41
47
  return getActiveRoute(route.state)
42
48
  }
43
49
 
44
- if (route && isInvalidParams(route.params)) {
45
- return getActiveRoute(createFakeState(route.params))
46
- }
47
-
48
50
  return route
49
51
  }
50
52
 
51
- function createFakeState(params: StateAsParams) {
52
- return {
53
- stale: false,
54
- type: 'UNKNOWN',
55
- key: 'UNKNOWN',
56
- index: 0,
57
- routeNames: [],
58
- routes: [
59
- {
60
- key: 'UNKNOWN',
61
- name: params.screen,
62
- params: params.params,
63
- path: params.path,
64
- },
65
- ],
66
- }
67
- }
53
+ const cachedNormalizedConfigs = new WeakMap<PathConfigMap<{}>, Record<string, ConfigItem>>()
68
54
 
69
- function segmentMatchesConvention(segment: string): boolean {
70
- return (
71
- segment === 'index' ||
72
- matchDynamicName(segment) != null ||
73
- matchGroupName(segment) != null ||
74
- matchDeepDynamicRouteName(segment) != null
75
- )
76
- }
55
+ const getNormalizedConfigs = (options?: Options<{}>) => {
56
+ if (!options?.screens) return {}
57
+
58
+ const cached = cachedNormalizedConfigs.get(options?.screens)
59
+
60
+ if (cached) return cached
77
61
 
78
- function encodeURIComponentPreservingBrackets(str: string) {
79
- return encodeURIComponent(str).replace(/%5B/g, '[').replace(/%5D/g, ']')
62
+ const normalizedConfigs = createNormalizedConfigs(options.screens)
63
+
64
+ cachedNormalizedConfigs.set(options.screens, normalizedConfigs)
65
+
66
+ return normalizedConfigs
80
67
  }
81
68
 
69
+ // @modified - start: extract an underlying `getPathDataFromState` function so we can get both the path and the params
82
70
  /**
83
71
  * Utility to serialize a navigation state object to a path string.
84
72
  *
@@ -108,513 +96,273 @@ function encodeURIComponentPreservingBrackets(str: string) {
108
96
  * @param options Extra options to fine-tune how to serialize the path.
109
97
  * @returns Path representing the state, e.g. /foo/bar?count=42.
110
98
  */
111
- export default function getPathFromState<ParamList extends object>(
99
+ export function getPathFromState<ParamList extends {}>(
112
100
  state: State,
113
- _options?: Options<ParamList> & {
114
- preserveGroups?: boolean
115
- preserveDynamicRoutes?: boolean
116
- }
101
+ options?: Options<ParamList>
117
102
  ): string {
118
- return getPathDataFromState(state, _options).path
103
+ return getPathDataFromState(state, options).path
119
104
  }
120
105
 
121
- export function getPathDataFromState<ParamList extends object>(
106
+ export function getPathDataFromState<ParamList extends {}>(
122
107
  state: State,
123
- _options: Options<ParamList> & {
124
- preserveGroups?: boolean
125
- preserveDynamicRoutes?: boolean
126
- } = { screens: DEFAULT_SCREENS }
108
+ options?: Options<ParamList>
127
109
  ) {
110
+ // @modified - end
111
+
128
112
  if (state == null) {
129
113
  throw Error("Got 'undefined' for the navigation state. You must pass a valid state object.")
130
114
  }
131
115
 
132
- const { preserveGroups, preserveDynamicRoutes, ...options } = _options
133
-
134
- validatePathConfig(options)
135
-
136
- // One disallows usage without a linking config.
137
- if (Object.is(options.screens, DEFAULT_SCREENS)) {
138
- throw Error("You must pass a 'screens' object to 'getPathFromState' to generate a path.")
116
+ if (options) {
117
+ validatePathConfig(options)
139
118
  }
140
119
 
141
- return getPathFromResolvedState(
142
- state,
143
- // Create a normalized configs object which will be easier to use
144
- createNormalizedConfigs(options.screens),
145
- { preserveGroups, preserveDynamicRoutes }
146
- )
147
- }
120
+ const configs = getNormalizedConfigs(options)
148
121
 
149
- function processParamsWithUserSettings(configItem: ConfigItem, params: Record<string, any>) {
150
- const stringify = configItem?.stringify
151
-
152
- return Object.fromEntries(
153
- Object.entries(params).map(([key, value]) => [
154
- key,
155
- // TODO: Strip nullish values here.
156
- stringify?.[key]
157
- ? stringify[key](value)
158
- : // Preserve rest params
159
- Array.isArray(value)
160
- ? value
161
- : String(value),
162
- ])
163
- )
164
- }
122
+ let path = '/'
123
+ let current: State | undefined = state
165
124
 
166
- export function deepEqual(a: any, b: any) {
167
- if (a === b) {
168
- return true
169
- }
125
+ const allParams: Record<string, any> = {}
170
126
 
171
- if (Array.isArray(a) && Array.isArray(b)) {
172
- if (a.length !== b.length) {
173
- return false
127
+ while (current) {
128
+ let index = typeof current.index === 'number' ? current.index : 0
129
+ let route = current.routes[index] as Route<string> & {
130
+ state?: State
174
131
  }
175
132
 
176
- for (let i = 0; i < a.length; i++) {
177
- if (!deepEqual(a[i], b[i])) {
178
- return false
179
- }
180
- }
133
+ let pattern: string | undefined
181
134
 
182
- return true
183
- }
135
+ let focusedParams: Record<string, any> | undefined // @modified: value change to any type
136
+ const focusedRoute = getActiveRoute(state)
137
+ let currentOptions = configs
184
138
 
185
- if (typeof a === 'object' && typeof b === 'object') {
186
- const keysA = Object.keys(a)
187
- const keysB = Object.keys(b)
139
+ // Keep all the route names that appeared during going deeper in config in case the pattern is resolved to undefined
140
+ const nestedRouteNames: string[] = [] // @modified: add type annotation
188
141
 
189
- if (keysA.length !== keysB.length) {
190
- return false
191
- }
142
+ let hasNext = true
192
143
 
193
- for (const key of keysA) {
194
- if (!deepEqual(a[key], b[key])) {
195
- return false
196
- }
197
- }
144
+ while (route.name in currentOptions && hasNext) {
145
+ pattern = currentOptions[route.name].pattern
198
146
 
199
- return true
200
- }
147
+ nestedRouteNames.push(route.name)
201
148
 
202
- return false
203
- }
149
+ if (route.params) {
150
+ const stringify = currentOptions[route.name]?.stringify
204
151
 
205
- function walkConfigItems(
206
- route: CustomRoute,
207
- focusedRoute: {
208
- name: string
209
- params?: object
210
- },
211
- configs: Record<string, ConfigItem>,
212
- {
213
- preserveDynamicRoutes,
214
- }: {
215
- preserveDynamicRoutes?: boolean
216
- }
217
- ) {
218
- // NOTE: Fill in current route using state that was passed as params.
219
- if (!route.state && isInvalidParams(route.params)) {
220
- // FIXME: This is a hack to make things work since the `route` object is immutable on react-navigation v7 (`TypeError: Cannot add property state, object is not extensible`), and seems that things are working. But we might want to do a proper migration for these forked code.
221
- // route.state = createFakeState(route.params)
222
- }
152
+ // @modified - start
223
153
 
224
- let pattern: string | null = null
225
- let focusedParams: Record<string, any> | undefined
226
- let hash: string | undefined
154
+ // const currentParams = Object.fromEntries(
155
+ // Object.entries(route.params).map(([key, value]) => [
156
+ // key,
157
+ // stringify?.[key] ? stringify[key](value) : String(value),
158
+ // ])
159
+ // )
227
160
 
228
- const collectedParams: Record<string, any> = {}
161
+ // Better handle array params
162
+ const currentParams = Object.fromEntries(
163
+ Object.entries(route.params!).flatMap(([key, value]) => {
164
+ if (key === 'screen' || key === 'params') {
165
+ return []
166
+ }
229
167
 
230
- while (route.name in configs) {
231
- const configItem = configs[route.name]
232
- const inputPattern = configItem.pattern
168
+ return [
169
+ [
170
+ key,
171
+ stringify?.[key]
172
+ ? stringify[key](value)
173
+ : Array.isArray(value)
174
+ ? value.map(String)
175
+ : String(value),
176
+ ],
177
+ ]
178
+ })
179
+ )
233
180
 
234
- if (inputPattern == null) {
235
- // This should never happen in One.
236
- throw new Error('Unexpected: No pattern found for route ' + route.name)
237
- }
238
- pattern = inputPattern
181
+ // @modified - end
239
182
 
240
- if (route.params) {
241
- if (route.params['#']) {
242
- hash = route.params['#']
243
- delete route.params['#']
244
- }
183
+ // @modified - start
245
184
 
246
- const params = processParamsWithUserSettings(configItem, route.params)
185
+ // if (pattern) {
186
+ // Object.assign(allParams, currentParams)
187
+ // }
247
188
 
248
- if (pattern !== undefined && pattern !== null) {
249
- Object.assign(collectedParams, params)
250
- }
189
+ // Always assign params, as non pattern routes may still have query params
190
+ Object.assign(allParams, currentParams)
251
191
 
252
- if (deepEqual(focusedRoute, route)) {
253
- if (preserveDynamicRoutes) {
254
- focusedParams = params
255
- } else {
192
+ // @modified - end
193
+
194
+ if (focusedRoute === route) {
256
195
  // If this is the focused route, keep the params for later use
257
196
  // We save it here since it's been stringified already
258
- focusedParams = getParamsWithConventionsCollapsed({
259
- params,
260
- pattern,
261
- routeName: route.name,
262
- })
197
+ focusedParams = { ...currentParams }
198
+
199
+ pattern
200
+ ?.split('/')
201
+ .filter((p) => p.startsWith(':'))
202
+ // eslint-disable-next-line no-loop-func
203
+ .forEach((p) => {
204
+ const name = getParamName(p)
205
+
206
+ // Remove the params present in the pattern since we'll only use the rest for query string
207
+ if (focusedParams) {
208
+ // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
209
+ delete focusedParams[name]
210
+ }
211
+ })
263
212
  }
264
213
  }
265
- }
266
214
 
267
- if (!route.state && isInvalidParams(route.params)) {
268
- // FIXME: This is a hack to make things work since the `route` object is immutable on react-navigation v7, and seems that things are working. But we might want to do a proper migration for these forked code.
269
- // route.state = createFakeState(route.params)
270
- }
271
-
272
- // If there is no `screens` property or no nested state, we return pattern
273
- if (!configItem.screens || route.state === undefined) {
274
- if (
275
- configItem.initialRouteName &&
276
- configItem.screens &&
277
- configItem.initialRouteName in configItem.screens &&
278
- configItem.screens[configItem.initialRouteName]?.pattern
279
- ) {
280
- const initialRouteConfig = configItem.screens[configItem.initialRouteName]
281
-
282
- // NOTE: Big hack to support initial route changes in tab bars.
283
- pattern = initialRouteConfig.pattern!
284
- if (focusedParams) {
285
- if (!preserveDynamicRoutes) {
286
- // If this is the focused route, keep the params for later use
287
- // We save it here since it's been stringified already
288
- focusedParams = getParamsWithConventionsCollapsed({
289
- params: focusedParams,
290
- pattern,
291
- routeName: route.name,
292
- })
293
- }
215
+ // If there is no `screens` property or no nested state, we return pattern
216
+ if (!currentOptions[route.name].screens || route.state === undefined) {
217
+ // @modified - start
218
+
219
+ // hasNext = false
220
+
221
+ // One can end up in some configs that React Navigation doesn't seem to support
222
+ // We can get around this by providing a fake state
223
+ const screens = currentOptions[route.name].screens
224
+ const screen =
225
+ route.params && 'screen' in route.params
226
+ ? route.params.screen?.toString()
227
+ : screens
228
+ ? Object.keys(screens)[0]
229
+ : undefined
230
+
231
+ if (screen && screens && currentOptions[route.name].screens?.[screen]) {
232
+ route = { ...screens[screen], name: screen, key: screen }
233
+ currentOptions = screens
234
+ } else {
235
+ hasNext = false
294
236
  }
295
- }
296
- break
297
- }
298
237
 
299
- const index = route.state.index ?? route.state.routes.length - 1
238
+ // @modified - end
239
+ } else {
240
+ index =
241
+ typeof route.state.index === 'number' ? route.state.index : route.state.routes.length - 1
300
242
 
301
- const nextRoute = route.state.routes[index]
302
- const nestedScreens = configItem.screens
243
+ const nextRoute = route.state.routes[index]
244
+ const nestedConfig = currentOptions[route.name].screens
303
245
 
304
- // if there is config for next route name, we go deeper
305
- if (nestedScreens && nextRoute.name in nestedScreens) {
306
- route = nextRoute as CustomRoute
307
- configs = nestedScreens
308
- } else {
309
- // If not, there is no sense in going deeper in config
310
- break
246
+ // if there is config for next route name, we go deeper
247
+ if (nestedConfig && nextRoute.name in nestedConfig) {
248
+ route = nextRoute as Route<string> & { state?: State }
249
+ currentOptions = nestedConfig
250
+ } else {
251
+ // If not, there is no sense in going deeper in config
252
+ hasNext = false
253
+ }
254
+ }
311
255
  }
312
- }
313
256
 
314
- if (pattern == null) {
315
- throw new Error(
316
- `No pattern found for route "${route.name}". Options are: ${Object.keys(configs).join(', ')}.`
317
- )
318
- }
257
+ // @modified - start
258
+ if (currentOptions[route.name] !== undefined) {
259
+ // path += pattern
260
+ // .split('/')
261
+ // .map((p) => {
262
+ // const name = getParamName(p)
263
+
264
+ // // We don't know what to show for wildcard patterns
265
+ // // Showing the route name seems ok, though whatever we show here will be incorrect
266
+ // // Since the page doesn't actually exist
267
+ // if (p === '*') {
268
+ // return route.name
269
+ // }
270
+
271
+ // // If the path has a pattern for a param, put the param in the path
272
+ // if (p.startsWith(':')) {
273
+ // const value = allParams[name]
274
+
275
+ // if (value === undefined && p.endsWith('?')) {
276
+ // // Optional params without value assigned in route.params should be ignored
277
+ // return ''
278
+ // }
279
+
280
+ // // Valid characters according to
281
+ // // https://datatracker.ietf.org/doc/html/rfc3986#section-3.3 (see pchar definition)
282
+ // return String(value).replace(/[^A-Za-z0-9\-._~!$&'()*+,;=:@]/g, (char) =>
283
+ // encodeURIComponent(char)
284
+ // )
285
+ // }
286
+
287
+ // return encodeURIComponent(p)
288
+ // })
289
+ // .join('/')
290
+
291
+ if (pattern === undefined) {
292
+ pattern = nestedRouteNames.join('/')
293
+ }
319
294
 
320
- if (pattern && !focusedParams && focusedRoute.params) {
321
- if (preserveDynamicRoutes) {
322
- focusedParams = focusedRoute.params
323
- } else {
324
- // If this is the focused route, keep the params for later use
325
- // We save it here since it's been stringified already
326
- focusedParams = getParamsWithConventionsCollapsed({
327
- params: focusedRoute.params,
295
+ path += getPathWithConventionsCollapsed({
296
+ ...options,
328
297
  pattern,
329
- routeName: route.name,
298
+ route,
299
+ params: allParams,
300
+ initialRouteName: configs[route.name]?.initialRouteName,
330
301
  })
331
- }
332
- focusedParams = {
333
- ...focusedParams,
334
- ...collectedParams,
335
- }
336
- }
337
-
338
- return {
339
- pattern,
340
- nextRoute: route,
341
- focusedParams,
342
- hash,
343
- params: collectedParams,
344
- }
345
- }
346
-
347
- function getPathFromResolvedState(
348
- state: State,
349
- configs: Record<string, ConfigItem>,
350
- {
351
- preserveGroups,
352
- preserveDynamicRoutes,
353
- }: { preserveGroups?: boolean; preserveDynamicRoutes?: boolean }
354
- ) {
355
- let path = ''
356
- let current: State = state
357
- let hash: string | undefined
358
-
359
- const allParams: Record<string, any> = {}
360
-
361
- while (current) {
362
- path += '/'
363
-
364
- // Make mutable copies to ensure we don't leak state outside of the function.
365
- const route = current.routes[current.index ?? 0] as CustomRoute
366
302
 
367
- // NOTE: Fill in current route using state that was passed as params.
368
- // if (isInvalidParams(route.params)) {
369
- if (!route.state && isInvalidParams(route.params)) {
370
- // FIXME: This is a hack to make things work since the `route` object is immutable on react-navigation v7, and seems that things are working. But we might want to do a proper migration for these forked code.
371
- // route.state = createFakeState(route.params)
303
+ // } else {
304
+ } else if (!route.name.startsWith('+')) {
305
+ path += encodeURIComponent(route.name)
372
306
  }
307
+ // @modified - end
373
308
 
374
- const {
375
- pattern,
376
- params,
377
- nextRoute,
378
- focusedParams,
379
- hash: $hash,
380
- } = walkConfigItems(route, getActiveRoute(current), { ...configs }, { preserveDynamicRoutes })
381
-
382
- if ($hash) {
383
- hash = $hash
309
+ if (!focusedParams) {
310
+ focusedParams = focusedRoute.params
384
311
  }
385
312
 
386
- Object.assign(allParams, params)
387
-
388
- path += getPathWithConventionsCollapsed({
389
- pattern,
390
- routePath: nextRoute.path,
391
- params: allParams,
392
- initialRouteName: configs[nextRoute.name]?.initialRouteName,
393
- preserveGroups,
394
- preserveDynamicRoutes,
395
- })
396
-
397
- if (
398
- nextRoute.state &&
399
- // NOTE: The upstream implementation allows for sending in synthetic states (states that weren't generated by `getStateFromPath`)
400
- // and any invalid routes will simply be ignored.
401
- // Because of this, we need to check if the next route is valid before continuing, otherwise our more strict
402
- // implementation will throw an error.
403
- configs[nextRoute.state.routes?.[nextRoute.state?.index ?? 0]?.name]
404
- ) {
405
- // Continue looping with the next state if available.
406
- current = nextRoute.state
407
- } else {
408
- // Finished crawling state.
409
-
410
- // Check for query params before exiting.
411
- if (
412
- focusedParams &&
413
- // note: using [...route] is returning an array which shouldn't go on search, this is just
414
- // an initial hacky test to work around this as we dont want to pass that to search
415
- !Array.isArray(focusedParams)
416
- ) {
417
- for (const param in focusedParams) {
418
- // TODO: This is not good. We shouldn't squat strings named "undefined".
419
- if (focusedParams[param] === 'undefined') {
420
- // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
421
- delete focusedParams[param]
422
- }
423
- }
424
-
425
- const query = new URLSearchParams(focusedParams).toString()
426
- if (query) {
427
- path += `?${query}`
313
+ if (route.state) {
314
+ path += '/'
315
+ } else if (focusedParams) {
316
+ for (const param in focusedParams) {
317
+ if (focusedParams[param] === 'undefined') {
318
+ // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
319
+ delete focusedParams[param]
428
320
  }
429
321
  }
430
- break
431
- }
432
- }
433
-
434
- if (hash) {
435
- allParams['#'] = hash
436
- path += `#${hash}`
437
- }
438
322
 
439
- const params = decodeParams(allParams)
323
+ // @modified - start
324
+ delete focusedParams['#']
325
+ // @modified - end
440
326
 
441
- return { path: appendBaseUrl(basicSanitizePath(path)), params }
442
- }
443
-
444
- function decodeParams(params: Record<string, string>) {
445
- const parsed: Record<string, any> = {}
327
+ // @modified - start
328
+ // const query = queryString.stringify(focusedParams, { sort: false })
329
+ const query = new URLSearchParams(focusedParams).toString()
330
+ // @modified - end
446
331
 
447
- for (const [key, value] of Object.entries(params)) {
448
- try {
449
- if (Array.isArray(value)) {
450
- parsed[key] = value.map((v) => decodeURIComponent(v))
451
- } else {
452
- parsed[key] = decodeURIComponent(value)
332
+ if (query) {
333
+ path += `?${query}`
453
334
  }
454
- } catch {
455
- parsed[key] = value
456
335
  }
457
- }
458
336
 
459
- return parsed
460
- }
461
-
462
- function getPathWithConventionsCollapsed({
463
- pattern,
464
- routePath,
465
- params,
466
- preserveGroups,
467
- preserveDynamicRoutes,
468
- initialRouteName,
469
- }: {
470
- pattern: string
471
- routePath?: string
472
- params: Record<string, any>
473
- preserveGroups?: boolean
474
- preserveDynamicRoutes?: boolean
475
- initialRouteName?: string
476
- }) {
477
- const segments = pattern.split('/')
478
- return segments
479
- .map((p, i) => {
480
- const name = getParamName(p)
481
-
482
- // We don't know what to show for wildcard patterns
483
- // Showing the route name seems ok, though whatever we show here will be incorrect
484
- // Since the page doesn't actually exist
485
- if (p.startsWith('*')) {
486
- if (preserveDynamicRoutes) {
487
- if (name === 'not-found') {
488
- return '+not-found'
489
- }
490
- return `[...${name}]`
491
- }
492
- if (params[name]) {
493
- if (Array.isArray(params[name])) {
494
- return params[name].join('/')
495
- }
496
- return params[name]
497
- }
498
- if (i === 0) {
499
- // This can occur when a wildcard matches all routes and the given path was `/`.
500
- return routePath
501
- }
502
- // remove existing segments from route.path and return it
503
- // this is used for nested wildcard routes. Without this, the path would add
504
- // all nested segments to the beginning of the wildcard route.
505
- return routePath
506
- ?.split('/')
507
- .slice(i + 1)
508
- .join('/')
509
- }
510
-
511
- // If the path has a pattern for a param, put the param in the path
512
- if (p.startsWith(':')) {
513
- if (preserveDynamicRoutes) {
514
- return `[${name}]`
515
- }
516
- // Optional params without value assigned in route.params should be ignored
517
- return params[name]
518
- }
519
-
520
- if (!preserveGroups && matchGroupName(p) != null) {
521
- // When the last part is a group it could be a shared URL
522
- // if the route has an initialRouteName defined, then we should
523
- // use that as the component path as we can assume it will be shown.
524
- if (segments.length - 1 === i) {
525
- if (initialRouteName) {
526
- // Return an empty string if the init route is ambiguous.
527
- if (segmentMatchesConvention(initialRouteName)) {
528
- return ''
529
- }
530
- return encodeURIComponentPreservingBrackets(initialRouteName)
531
- }
532
- }
533
- return ''
534
- }
535
- // Preserve dynamic syntax for rehydration
536
- return encodeURIComponentPreservingBrackets(p)
537
- })
538
- .map((v) => v ?? '')
539
- .join('/')
540
- }
541
-
542
- /** Given a set of query params and a pattern with possible conventions, collapse the conventions and return the remaining params. */
543
- function getParamsWithConventionsCollapsed({
544
- pattern,
545
- routeName,
546
- params,
547
- }: {
548
- pattern: string
549
- /** Route name is required for matching the wildcard route. This is specific to One. */
550
- routeName: string
551
- params: object
552
- }): Record<string, string> {
553
- const processedParams: Record<string, string> = { ...params }
554
-
555
- // Remove the params present in the pattern since we'll only use the rest for query string
556
-
557
- const segments = pattern.split('/')
558
-
559
- // Dynamic Routes
560
- segments
561
- .filter((segment) => segment.startsWith(':'))
562
- .forEach((segment) => {
563
- const name = getParamName(segment)
564
- delete processedParams[name]
565
- })
566
-
567
- // Deep Dynamic Routes
568
- if (segments.some((segment) => segment.startsWith('*'))) {
569
- // NOTE: Drop the param name matching the wildcard route name -- this is specific to One.
570
- const name = testNotFound(routeName)
571
- ? 'not-found'
572
- : (matchDeepDynamicRouteName(routeName) ?? routeName)
573
-
574
- delete processedParams[name]
337
+ current = route.state
575
338
  }
576
339
 
577
- return processedParams
578
- }
340
+ // Remove multiple as well as trailing slashes
341
+ path = path.replace(/\/+/g, '/')
342
+ path = path.length > 1 ? path.replace(/\/$/, '') : path
579
343
 
580
- // Remove multiple as well as trailing slashes
581
- function basicSanitizePath(path: string) {
582
- // Remove duplicate slashes like `foo//bar` -> `foo/bar`
583
- const simplifiedPath = path.replace(/\/+/g, '/')
584
- if (simplifiedPath.length <= 1) {
585
- return simplifiedPath
344
+ // Include the root path if specified
345
+ if (options?.path) {
346
+ path = joinPaths(options.path, path)
586
347
  }
587
- // Remove trailing slash like `foo/bar/` -> `foo/bar`
588
- return simplifiedPath.replace(/\/$/, '')
589
- }
590
348
 
591
- type StateAsParams = {
592
- initial: boolean
593
- path?: string
594
- screen: string
595
- params: Record<string, any>
596
- }
349
+ // @modified - start
350
+ path = appendBaseUrl(path)
351
+ // @modified - end
597
352
 
598
- // TODO: Make StackRouter not do this...
599
- // Detect if the params came from StackRouter using `params` to pass around internal state.
600
- function isInvalidParams(params?: Record<string, any>): params is StateAsParams {
601
- if (!params) {
602
- return false
353
+ // @modified - start
354
+ if (allParams['#']) {
355
+ path += `#${allParams['#']}`
603
356
  }
357
+ // @modified - end
604
358
 
605
- if ('params' in params && typeof params.params === 'object' && !!params.params) {
606
- return true
607
- }
608
-
609
- return (
610
- 'initial' in params &&
611
- typeof params.initial === 'boolean' &&
612
- // "path" in params &&
613
- 'screen' in params
614
- )
359
+ // @modified - start
360
+ // return path
361
+ return { path, params: allParams }
362
+ // @modified - end
615
363
  }
616
364
 
617
- const getParamName = (pattern: string) => pattern.replace(/^[:*]/, '').replace(/\?$/, '')
365
+ const getParamName = (pattern: string) => pattern.replace(/^:/, '').replace(/\?$/, '')
618
366
 
619
367
  const joinPaths = (...paths: string[]): string =>
620
368
  ([] as string[])
@@ -651,7 +399,6 @@ const createConfigItem = (
651
399
  pattern: pattern?.split('/').filter(Boolean).join('/'),
652
400
  stringify: config.stringify,
653
401
  screens,
654
- initialRouteName: config.initialRouteName,
655
402
  }
656
403
  }
657
404
 
@@ -660,17 +407,13 @@ const createNormalizedConfigs = (
660
407
  pattern?: string
661
408
  ): Record<string, ConfigItem> =>
662
409
  Object.fromEntries(
663
- Object.entries(options).map(([name, c]) => [name, createConfigItem(c, pattern)])
410
+ Object.entries(options).map(([name, c]) => {
411
+ const result = createConfigItem(c, pattern)
412
+
413
+ return [name, result]
414
+ })
664
415
  )
665
416
 
666
- export function appendBaseUrl(
667
- path: string,
668
- baseUrl: string | undefined = process.env.EXPO_BASE_URL
669
- ) {
670
- if (process.env.NODE_ENV !== 'development') {
671
- if (baseUrl) {
672
- return `/${baseUrl.replace(/^\/+/, '').replace(/\/$/, '')}${path}`
673
- }
674
- }
675
- return path
676
- }
417
+ // @modified - start
418
+ export default getPathFromState
419
+ // @modified - end