one 1.2.19 → 1.2.21

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 (235) hide show
  1. package/dist/cjs/createHandleRequest.cjs +10 -6
  2. package/dist/cjs/createHandleRequest.js +10 -6
  3. package/dist/cjs/createHandleRequest.js.map +1 -1
  4. package/dist/cjs/createHandleRequest.native.js +11 -7
  5. package/dist/cjs/createHandleRequest.native.js.map +1 -1
  6. package/dist/cjs/fork/NavigationContainer.cjs +1 -1
  7. package/dist/cjs/fork/NavigationContainer.js +4 -1
  8. package/dist/cjs/fork/NavigationContainer.js.map +1 -1
  9. package/dist/cjs/fork/NavigationContainer.native.js +1 -1
  10. package/dist/cjs/fork/NavigationContainer.native.js.map +1 -1
  11. package/dist/cjs/fork/createMemoryHistory.cjs +2 -2
  12. package/dist/cjs/fork/createMemoryHistory.js +2 -2
  13. package/dist/cjs/fork/createMemoryHistory.js.map +1 -1
  14. package/dist/cjs/fork/createMemoryHistory.native.js +2 -2
  15. package/dist/cjs/fork/createMemoryHistory.native.js.map +1 -1
  16. package/dist/cjs/fork/extractPathFromURL.cjs +1 -1
  17. package/dist/cjs/fork/extractPathFromURL.js +1 -1
  18. package/dist/cjs/fork/extractPathFromURL.js.map +1 -1
  19. package/dist/cjs/fork/extractPathFromURL.native.js +1 -1
  20. package/dist/cjs/fork/extractPathFromURL.native.js.map +1 -1
  21. package/dist/cjs/fork/getPathFromState-mods.cjs +1 -1
  22. package/dist/cjs/fork/getPathFromState-mods.js +1 -1
  23. package/dist/cjs/fork/getPathFromState-mods.js.map +1 -1
  24. package/dist/cjs/fork/getPathFromState-mods.native.js +1 -1
  25. package/dist/cjs/fork/getPathFromState-mods.native.js.map +1 -1
  26. package/dist/cjs/fork/getStateFromPath-mods.cjs +20 -19
  27. package/dist/cjs/fork/getStateFromPath-mods.js +18 -15
  28. package/dist/cjs/fork/getStateFromPath-mods.js.map +1 -1
  29. package/dist/cjs/fork/getStateFromPath-mods.native.js +19 -18
  30. package/dist/cjs/fork/getStateFromPath-mods.native.js.map +1 -1
  31. package/dist/cjs/fork/getStateFromPath.cjs +1 -1
  32. package/dist/cjs/fork/getStateFromPath.js +1 -1
  33. package/dist/cjs/fork/getStateFromPath.js.map +1 -1
  34. package/dist/cjs/fork/getStateFromPath.native.js +1 -1
  35. package/dist/cjs/fork/getStateFromPath.native.js.map +1 -1
  36. package/dist/cjs/fork/useLinking.cjs +26 -19
  37. package/dist/cjs/fork/useLinking.js +31 -19
  38. package/dist/cjs/fork/useLinking.js.map +2 -2
  39. package/dist/cjs/fork/useLinking.native.js +2 -1
  40. package/dist/cjs/fork/useLinking.native.js.map +1 -1
  41. package/dist/cjs/getReactNavigationConfig.cjs +2 -4
  42. package/dist/cjs/getReactNavigationConfig.js +2 -5
  43. package/dist/cjs/getReactNavigationConfig.js.map +1 -1
  44. package/dist/cjs/getReactNavigationConfig.native.js +2 -4
  45. package/dist/cjs/getReactNavigationConfig.native.js.map +1 -1
  46. package/dist/cjs/hooks.cjs +1 -1
  47. package/dist/cjs/hooks.js +1 -1
  48. package/dist/cjs/hooks.js.map +1 -1
  49. package/dist/cjs/hooks.native.js +4 -1
  50. package/dist/cjs/hooks.native.js.map +1 -1
  51. package/dist/cjs/router/getRoutes.cjs +4 -5
  52. package/dist/cjs/router/getRoutes.js +2 -2
  53. package/dist/cjs/router/getRoutes.js.map +1 -1
  54. package/dist/cjs/router/getRoutes.native.js +4 -5
  55. package/dist/cjs/router/getRoutes.native.js.map +1 -1
  56. package/dist/cjs/router/matchers.cjs +9 -1
  57. package/dist/cjs/router/matchers.js +4 -1
  58. package/dist/cjs/router/matchers.js.map +1 -1
  59. package/dist/cjs/router/matchers.native.js +10 -2
  60. package/dist/cjs/router/matchers.native.js.map +1 -1
  61. package/dist/cjs/router/matchers.test.cjs +7 -1
  62. package/dist/cjs/router/matchers.test.js +1 -1
  63. package/dist/cjs/router/matchers.test.js.map +1 -1
  64. package/dist/cjs/router/matchers.test.native.js +7 -1
  65. package/dist/cjs/router/matchers.test.native.js.map +1 -1
  66. package/dist/cjs/router/router.cjs +35 -5
  67. package/dist/cjs/router/router.js +26 -5
  68. package/dist/cjs/router/router.js.map +1 -1
  69. package/dist/cjs/router/router.native.js +32 -5
  70. package/dist/cjs/router/router.native.js.map +1 -1
  71. package/dist/cjs/router/utils/getNavigateAction.cjs +2 -2
  72. package/dist/cjs/router/utils/getNavigateAction.js +2 -2
  73. package/dist/cjs/router/utils/getNavigateAction.js.map +1 -1
  74. package/dist/cjs/router/utils/getNavigateAction.native.js +2 -2
  75. package/dist/cjs/router/utils/getNavigateAction.native.js.map +1 -1
  76. package/dist/cjs/server/oneServe.cjs +4 -3
  77. package/dist/cjs/server/oneServe.js +12 -4
  78. package/dist/cjs/server/oneServe.js.map +1 -1
  79. package/dist/cjs/server/oneServe.native.js +5 -4
  80. package/dist/cjs/server/oneServe.native.js.map +1 -1
  81. package/dist/cjs/setup.native.js.map +1 -6
  82. package/dist/cjs/vite/one.cjs +9 -12
  83. package/dist/cjs/vite/one.js +7 -7
  84. package/dist/cjs/vite/one.js.map +1 -1
  85. package/dist/cjs/vite/one.native.js +10 -15
  86. package/dist/cjs/vite/one.native.js.map +1 -1
  87. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.cjs +12 -7
  88. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.js +11 -7
  89. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.js.map +1 -1
  90. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js +12 -7
  91. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js.map +1 -1
  92. package/dist/esm/createHandleRequest.js +10 -6
  93. package/dist/esm/createHandleRequest.js.map +1 -1
  94. package/dist/esm/createHandleRequest.mjs +10 -6
  95. package/dist/esm/createHandleRequest.mjs.map +1 -1
  96. package/dist/esm/createHandleRequest.native.js +10 -6
  97. package/dist/esm/createHandleRequest.native.js.map +1 -1
  98. package/dist/esm/fork/NavigationContainer.js +4 -1
  99. package/dist/esm/fork/NavigationContainer.js.map +1 -1
  100. package/dist/esm/fork/NavigationContainer.mjs +1 -1
  101. package/dist/esm/fork/NavigationContainer.mjs.map +1 -1
  102. package/dist/esm/fork/NavigationContainer.native.js +1 -1
  103. package/dist/esm/fork/NavigationContainer.native.js.map +1 -1
  104. package/dist/esm/fork/createMemoryHistory.js +2 -2
  105. package/dist/esm/fork/createMemoryHistory.js.map +1 -1
  106. package/dist/esm/fork/createMemoryHistory.mjs +2 -2
  107. package/dist/esm/fork/createMemoryHistory.mjs.map +1 -1
  108. package/dist/esm/fork/createMemoryHistory.native.js +2 -2
  109. package/dist/esm/fork/createMemoryHistory.native.js.map +1 -1
  110. package/dist/esm/fork/extractPathFromURL.js +1 -1
  111. package/dist/esm/fork/extractPathFromURL.js.map +1 -1
  112. package/dist/esm/fork/extractPathFromURL.mjs +1 -1
  113. package/dist/esm/fork/extractPathFromURL.mjs.map +1 -1
  114. package/dist/esm/fork/extractPathFromURL.native.js +1 -1
  115. package/dist/esm/fork/extractPathFromURL.native.js.map +1 -1
  116. package/dist/esm/fork/getPathFromState-mods.js +2 -2
  117. package/dist/esm/fork/getPathFromState-mods.js.map +1 -1
  118. package/dist/esm/fork/getPathFromState-mods.mjs +2 -2
  119. package/dist/esm/fork/getPathFromState-mods.mjs.map +1 -1
  120. package/dist/esm/fork/getPathFromState-mods.native.js +2 -2
  121. package/dist/esm/fork/getPathFromState-mods.native.js.map +1 -1
  122. package/dist/esm/fork/getStateFromPath-mods.js +18 -15
  123. package/dist/esm/fork/getStateFromPath-mods.js.map +1 -1
  124. package/dist/esm/fork/getStateFromPath-mods.mjs +20 -19
  125. package/dist/esm/fork/getStateFromPath-mods.mjs.map +1 -1
  126. package/dist/esm/fork/getStateFromPath-mods.native.js +19 -18
  127. package/dist/esm/fork/getStateFromPath-mods.native.js.map +1 -1
  128. package/dist/esm/fork/getStateFromPath.js +1 -1
  129. package/dist/esm/fork/getStateFromPath.js.map +1 -1
  130. package/dist/esm/fork/getStateFromPath.mjs +1 -1
  131. package/dist/esm/fork/getStateFromPath.mjs.map +1 -1
  132. package/dist/esm/fork/getStateFromPath.native.js +1 -1
  133. package/dist/esm/fork/useLinking.js +31 -18
  134. package/dist/esm/fork/useLinking.js.map +1 -1
  135. package/dist/esm/fork/useLinking.mjs +26 -19
  136. package/dist/esm/fork/useLinking.mjs.map +1 -1
  137. package/dist/esm/fork/useLinking.native.js +2 -1
  138. package/dist/esm/fork/useLinking.native.js.map +1 -1
  139. package/dist/esm/getReactNavigationConfig.js +3 -6
  140. package/dist/esm/getReactNavigationConfig.js.map +1 -1
  141. package/dist/esm/getReactNavigationConfig.mjs +3 -5
  142. package/dist/esm/getReactNavigationConfig.mjs.map +1 -1
  143. package/dist/esm/getReactNavigationConfig.native.js +3 -5
  144. package/dist/esm/getReactNavigationConfig.native.js.map +1 -1
  145. package/dist/esm/hooks.js +1 -1
  146. package/dist/esm/hooks.js.map +1 -1
  147. package/dist/esm/hooks.mjs +1 -1
  148. package/dist/esm/hooks.mjs.map +1 -1
  149. package/dist/esm/hooks.native.js +4 -1
  150. package/dist/esm/hooks.native.js.map +1 -1
  151. package/dist/esm/router/getRoutes.js +2 -3
  152. package/dist/esm/router/getRoutes.js.map +1 -1
  153. package/dist/esm/router/getRoutes.mjs +5 -6
  154. package/dist/esm/router/getRoutes.mjs.map +1 -1
  155. package/dist/esm/router/getRoutes.native.js +5 -6
  156. package/dist/esm/router/getRoutes.native.js.map +1 -1
  157. package/dist/esm/router/matchers.js +4 -1
  158. package/dist/esm/router/matchers.js.map +1 -1
  159. package/dist/esm/router/matchers.mjs +9 -1
  160. package/dist/esm/router/matchers.mjs.map +1 -1
  161. package/dist/esm/router/matchers.native.js +10 -2
  162. package/dist/esm/router/matchers.native.js.map +1 -1
  163. package/dist/esm/router/matchers.test.js +1 -1
  164. package/dist/esm/router/matchers.test.js.map +1 -1
  165. package/dist/esm/router/matchers.test.mjs +7 -1
  166. package/dist/esm/router/matchers.test.mjs.map +1 -1
  167. package/dist/esm/router/matchers.test.native.js +7 -1
  168. package/dist/esm/router/matchers.test.native.js.map +1 -1
  169. package/dist/esm/router/router.js +26 -5
  170. package/dist/esm/router/router.js.map +1 -1
  171. package/dist/esm/router/router.mjs +35 -5
  172. package/dist/esm/router/router.mjs.map +1 -1
  173. package/dist/esm/router/router.native.js +32 -5
  174. package/dist/esm/router/router.native.js.map +1 -1
  175. package/dist/esm/router/utils/getNavigateAction.js +2 -2
  176. package/dist/esm/router/utils/getNavigateAction.js.map +1 -1
  177. package/dist/esm/router/utils/getNavigateAction.mjs +2 -2
  178. package/dist/esm/router/utils/getNavigateAction.mjs.map +1 -1
  179. package/dist/esm/router/utils/getNavigateAction.native.js +2 -2
  180. package/dist/esm/router/utils/getNavigateAction.native.js.map +1 -1
  181. package/dist/esm/server/oneServe.js +12 -4
  182. package/dist/esm/server/oneServe.js.map +1 -1
  183. package/dist/esm/server/oneServe.mjs +4 -3
  184. package/dist/esm/server/oneServe.mjs.map +1 -1
  185. package/dist/esm/server/oneServe.native.js +4 -3
  186. package/dist/esm/server/oneServe.native.js.map +1 -1
  187. package/dist/esm/vite/one.js +9 -9
  188. package/dist/esm/vite/one.js.map +1 -1
  189. package/dist/esm/vite/one.mjs +9 -12
  190. package/dist/esm/vite/one.mjs.map +1 -1
  191. package/dist/esm/vite/one.native.js +10 -15
  192. package/dist/esm/vite/one.native.js.map +1 -1
  193. package/dist/esm/vite/plugins/fileSystemRouterPlugin.js +11 -7
  194. package/dist/esm/vite/plugins/fileSystemRouterPlugin.js.map +1 -1
  195. package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs +12 -7
  196. package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs.map +1 -1
  197. package/dist/esm/vite/plugins/fileSystemRouterPlugin.native.js +12 -7
  198. package/dist/esm/vite/plugins/fileSystemRouterPlugin.native.js.map +1 -1
  199. package/package.json +10 -10
  200. package/src/createHandleRequest.ts +34 -0
  201. package/src/fork/NavigationContainer.tsx +8 -0
  202. package/src/fork/createMemoryHistory.tsx +8 -0
  203. package/src/fork/extractPathFromURL.ts +6 -0
  204. package/src/fork/getPathFromState-mods.ts +2 -7
  205. package/src/fork/getStateFromPath-mods.ts +43 -17
  206. package/src/fork/getStateFromPath.ts +1 -1
  207. package/src/fork/useLinking.native.ts +1 -1
  208. package/src/fork/useLinking.ts +80 -5
  209. package/src/getReactNavigationConfig.ts +7 -9
  210. package/src/hooks.tsx +21 -19
  211. package/src/router/getRoutes.ts +3 -6
  212. package/src/router/matchers.test.ts +2 -2
  213. package/src/router/matchers.ts +22 -6
  214. package/src/router/router.ts +45 -0
  215. package/src/router/utils/getNavigateAction.ts +3 -2
  216. package/src/server/oneServe.ts +13 -0
  217. package/src/vite/one.ts +9 -13
  218. package/src/vite/plugins/fileSystemRouterPlugin.tsx +17 -5
  219. package/types/createHandleRequest.d.ts.map +1 -1
  220. package/types/fork/NavigationContainer.d.ts.map +1 -1
  221. package/types/fork/createMemoryHistory.d.ts.map +1 -1
  222. package/types/fork/extractPathFromURL.d.ts.map +1 -1
  223. package/types/fork/getStateFromPath-mods.d.ts +7 -10
  224. package/types/fork/getStateFromPath-mods.d.ts.map +1 -1
  225. package/types/fork/useLinking.d.ts.map +1 -1
  226. package/types/getReactNavigationConfig.d.ts.map +1 -1
  227. package/types/hooks.d.ts.map +1 -1
  228. package/types/router/getRoutes.d.ts.map +1 -1
  229. package/types/router/matchers.d.ts +10 -3
  230. package/types/router/matchers.d.ts.map +1 -1
  231. package/types/router/router.d.ts.map +1 -1
  232. package/types/router/utils/getNavigateAction.d.ts.map +1 -1
  233. package/types/server/oneServe.d.ts.map +1 -1
  234. package/types/vite/one.d.ts.map +1 -1
  235. package/types/vite/plugins/fileSystemRouterPlugin.d.ts.map +1 -1
@@ -22,6 +22,7 @@ import isEqual from 'fast-deep-equal'
22
22
  import * as React from 'react'
23
23
  // @modified - start
24
24
  // import { ServerContext } from '@react-navigation/web';
25
+ import { rootState as routerRootState } from '../router/router'
25
26
  import { ServerLocationContext } from '../router/serverLocationContext'
26
27
  import { createMemoryHistory } from './createMemoryHistory'
27
28
  import { appendBaseUrl } from './getPathFromState-mods'
@@ -158,7 +159,7 @@ export function useLinking(
158
159
  const rootState = navigation?.getRootState()
159
160
  // Make sure that the routes in the state exist in the root navigator
160
161
  // Otherwise there's an error in the linking configuration
161
- return state?.routes.some((r) => !rootState?.routeNames.includes(r.name))
162
+ return state?.routes.some((r) => !rootState?.routeNames?.includes(r.name))
162
163
  },
163
164
  [ref]
164
165
  )
@@ -180,8 +181,15 @@ export function useLinking(
180
181
 
181
182
  const path = location ? location.pathname + location.search : undefined
182
183
 
184
+ if (process.env.ONE_DEBUG_ROUTER) {
185
+ console.info(`[one] 🔍 getInitialState path=${path}`)
186
+ }
187
+
183
188
  if (path) {
184
189
  value = getStateFromPathRef.current(path, configRef.current)
190
+ if (process.env.ONE_DEBUG_ROUTER) {
191
+ console.info(`[one] 🔍 getInitialState result:`, JSON.stringify(value, null, 2))
192
+ }
185
193
  }
186
194
 
187
195
  // If the link were handled, it gets cleared in NavigationContainer
@@ -223,6 +231,12 @@ export function useLinking(
223
231
 
224
232
  const previousIndex = previousIndexRef.current ?? 0
225
233
 
234
+ if (process.env.ONE_DEBUG_ROUTER) {
235
+ console.info(
236
+ `[one] 📜 history.listen path=${path} index=${index} prevIndex=${previousIndex}`
237
+ )
238
+ }
239
+
226
240
  previousIndexRef.current = index
227
241
  pendingPopStatePathRef.current = path
228
242
 
@@ -232,12 +246,19 @@ export function useLinking(
232
246
  const record = history.get(index)
233
247
 
234
248
  if (record?.path === path && record?.state) {
249
+ if (process.env.ONE_DEBUG_ROUTER) {
250
+ console.info(`[one] 📜 history record found, resetRoot to:`, record.state)
251
+ }
235
252
  navigation.resetRoot(record.state)
236
253
  return
237
254
  }
238
255
 
239
256
  const state = getStateFromPathRef.current(path, configRef.current)
240
257
 
258
+ if (process.env.ONE_DEBUG_ROUTER) {
259
+ console.info(`[one] 📜 getStateFromPath result:`, state)
260
+ }
261
+
241
262
  // We should only dispatch an action when going forward
242
263
  // Otherwise the action will likely add items to history, which would mess things up
243
264
  if (state) {
@@ -246,6 +267,9 @@ export function useLinking(
246
267
  // Make sure that the routes in the state exist in the root navigator
247
268
  // Otherwise there's an error in the linking configuration
248
269
  if (validateRoutesNotExistInRootState(state)) {
270
+ if (process.env.ONE_DEBUG_ROUTER) {
271
+ console.info(`[one] 📜 routes not in root state, skipping`)
272
+ }
249
273
  return
250
274
  }
251
275
 
@@ -256,6 +280,10 @@ export function useLinking(
256
280
  ) {
257
281
  const action = getActionFromStateRef.current(state, configRef.current)
258
282
 
283
+ if (process.env.ONE_DEBUG_ROUTER) {
284
+ console.info(`[one] 📜 dispatching action:`, action)
285
+ }
286
+
259
287
  if (action !== undefined) {
260
288
  try {
261
289
  navigation.dispatch(action)
@@ -269,13 +297,22 @@ export function useLinking(
269
297
  )
270
298
  }
271
299
  } else {
300
+ if (process.env.ONE_DEBUG_ROUTER) {
301
+ console.info(`[one] 📜 no action, resetRoot`)
302
+ }
272
303
  navigation.resetRoot(state)
273
304
  }
274
305
  } else {
306
+ if (process.env.ONE_DEBUG_ROUTER) {
307
+ console.info(`[one] 📜 going back, resetRoot`)
308
+ }
275
309
  navigation.resetRoot(state)
276
310
  }
277
311
  } else {
278
312
  // if current path didn't return any state, we should revert to initial state
313
+ if (process.env.ONE_DEBUG_ROUTER) {
314
+ console.info(`[one] 📜 no state for path, resetRoot to undefined`)
315
+ }
279
316
  navigation.resetRoot(state)
280
317
  }
281
318
  })
@@ -292,6 +329,11 @@ export function useLinking(
292
329
  ): string => {
293
330
  let path
294
331
 
332
+ if (process.env.ONE_DEBUG_ROUTER) {
333
+ console.info(`[one] 📜 getPathForRoute - route:`, route)
334
+ console.info(`[one] 📜 getPathForRoute - state:`, JSON.stringify(state, null, 2))
335
+ }
336
+
295
337
  // If the `route` object contains a `path`, use that path as long as `route.name` and `params` still match
296
338
  // This makes sure that we preserve the original URL for wildcard routes
297
339
  if (route?.path) {
@@ -315,6 +357,9 @@ export function useLinking(
315
357
 
316
358
  if (path == null) {
317
359
  path = getPathFromStateRef.current(state, configRef.current)
360
+ if (process.env.ONE_DEBUG_ROUTER) {
361
+ console.info(`[one] 📜 getPathForRoute - computed from state:`, path)
362
+ }
318
363
  }
319
364
 
320
365
  // @modified - start: One will handle hashes itself, so these lines are not needed
@@ -340,14 +385,41 @@ export function useLinking(
340
385
  if (ref.current) {
341
386
  // We need to record the current metadata on the first render if they aren't set
342
387
  // This will allow the initial state to be in the history entry
343
- const state = ref.current.getRootState()
388
+ // @modified - start: Use routerRootState instead of getRootState() to avoid stale state
389
+ // getRootState() can return incomplete state during initial render before children mount
390
+ // routerRootState is updated via navigation listener callbacks which only fire with complete state
391
+ const refState = ref.current.getRootState()
392
+ const state = (routerRootState || refState) as NavigationState | undefined
393
+
394
+ if (process.env.ONE_DEBUG_ROUTER) {
395
+ console.info(
396
+ `[one] 📜 useEffect initial state check - refState:`,
397
+ JSON.stringify(refState, null, 2)
398
+ )
399
+ console.info(
400
+ `[one] 📜 useEffect initial state check - routerRootState:`,
401
+ JSON.stringify(routerRootState, null, 2)
402
+ )
403
+ }
404
+ // @modified - end
344
405
 
345
406
  if (state) {
346
407
  const route = findFocusedRoute(state)
408
+
409
+ if (process.env.ONE_DEBUG_ROUTER) {
410
+ console.info(`[one] 📜 useEffect focused route:`, route)
411
+ }
412
+
347
413
  const path = getPathForRoute(route, state)
348
414
 
415
+ if (process.env.ONE_DEBUG_ROUTER) {
416
+ console.info(`[one] 📜 initial history.replace - state:`, JSON.stringify(state, null, 2))
417
+ console.info(`[one] 📜 initial history.replace - focusedRoute:`, route)
418
+ console.info(`[one] 📜 initial history.replace - computed path:`, path)
419
+ }
420
+
349
421
  if (previousStateRef.current === undefined) {
350
- previousStateRef.current = state
422
+ previousStateRef.current = refState
351
423
  }
352
424
 
353
425
  history.replace({ path, state })
@@ -362,7 +434,10 @@ export function useLinking(
362
434
  }
363
435
 
364
436
  const previousState = previousStateRef.current
365
- const state = navigation.getRootState()
437
+ // @modified - start: Use routerRootState for path calculation, refState for comparison
438
+ const refState = navigation.getRootState()
439
+ const state = (routerRootState || refState) as NavigationState | undefined
440
+ // @modified - end
366
441
 
367
442
  // root state may not available, for example when root navigators switch inside the container
368
443
  if (!state) {
@@ -373,7 +448,7 @@ export function useLinking(
373
448
  const route = findFocusedRoute(state)
374
449
  const path = getPathForRoute(route, state)
375
450
 
376
- previousStateRef.current = state
451
+ previousStateRef.current = refState
377
452
  pendingPopStatePathRef.current = undefined
378
453
 
379
454
  // To detect the kind of state change, we need to:
@@ -1,4 +1,4 @@
1
- import { matchDeepDynamicRouteName, matchDynamicName } from './router/matchers'
1
+ import { matchDynamicName } from './router/matchers'
2
2
  import type { RouteNode } from './router/Route'
3
3
 
4
4
  export type Screen =
@@ -22,14 +22,12 @@ function convertDynamicRouteToReactNavigation(segment: string): string {
22
22
  return '*not-found'
23
23
  }
24
24
 
25
- const rest = matchDeepDynamicRouteName(segment)
26
- if (typeof rest === 'string') {
27
- return '*' + rest
28
- }
29
-
30
- const dynamicName = matchDynamicName(segment)
31
- if (typeof dynamicName === 'string') {
32
- return `:${dynamicName}`
25
+ const dynamicMatch = matchDynamicName(segment)
26
+ if (dynamicMatch) {
27
+ if (dynamicMatch.deep) {
28
+ return '*' + dynamicMatch.name
29
+ }
30
+ return `:${dynamicMatch.name}`
33
31
  }
34
32
 
35
33
  return segment
package/src/hooks.tsx CHANGED
@@ -133,24 +133,26 @@ export function useParams<TParams extends Object = SearchParams>(): Partial<TPar
133
133
  const params = React.useContext(RouteParamsContext) ?? {}
134
134
 
135
135
  return Object.fromEntries(
136
- Object.entries(params).map(([key, value]) => {
137
- if (Array.isArray(value)) {
138
- return [
139
- key,
140
- value.map((v) => {
141
- try {
142
- return decodeURIComponent(v)
143
- } catch {
144
- return v
145
- }
146
- }),
147
- ]
148
- }
149
- try {
150
- return [key, decodeURIComponent(value as string)]
151
- } catch {
152
- return [key, value]
153
- }
154
- })
136
+ Object.entries(params)
137
+ .filter(([_, value]) => value !== undefined)
138
+ .map(([key, value]) => {
139
+ if (Array.isArray(value)) {
140
+ return [
141
+ key,
142
+ value.map((v) => {
143
+ try {
144
+ return decodeURIComponent(v)
145
+ } catch {
146
+ return v
147
+ }
148
+ }),
149
+ ]
150
+ }
151
+ try {
152
+ return [key, decodeURIComponent(value as string)]
153
+ } catch {
154
+ return [key, value]
155
+ }
156
+ })
155
157
  ) as TParams
156
158
  }
@@ -3,7 +3,6 @@ import { getPageExport } from '../utils/getPageExport'
3
3
  import type { One } from '../vite/types'
4
4
  import {
5
5
  matchArrayGroupName,
6
- matchDeepDynamicRouteName,
7
6
  matchDynamicName,
8
7
  matchGroupName,
9
8
  removeSupportedExtensions,
@@ -479,11 +478,9 @@ export function generateDynamic(path: string): DynamicConvention[] | null {
479
478
  }
480
479
  }
481
480
 
482
- const deepDynamicName = matchDeepDynamicRouteName(part)
483
- const dynamicName = deepDynamicName ?? matchDynamicName(part)
484
-
485
- if (!dynamicName) return null
486
- return { name: dynamicName, deep: !!deepDynamicName }
481
+ const dynamicMatch = matchDynamicName(part)
482
+ if (!dynamicMatch) return null
483
+ return { name: dynamicMatch.name, deep: dynamicMatch.deep }
487
484
  })
488
485
  .filter((part): part is DynamicConvention => !!part)
489
486
 
@@ -46,8 +46,8 @@ describe(matchDynamicName, () => {
46
46
  it(`matches`, () => {
47
47
  expect(matchDynamicName('[[...foobar]]')).toEqual(undefined)
48
48
  expect(matchDynamicName('[[foobar]]')).toEqual(undefined)
49
- expect(matchDynamicName('[...foobar]')).toEqual(undefined)
50
- expect(matchDynamicName('[foobar]')).toEqual('foobar')
49
+ expect(matchDynamicName('[...foobar]')).toEqual({ name: 'foobar', deep: true })
50
+ expect(matchDynamicName('[foobar]')).toEqual({ name: 'foobar', deep: false })
51
51
  expect(matchDynamicName('foobar')).toEqual(undefined)
52
52
  })
53
53
  })
@@ -1,11 +1,27 @@
1
- /** Match `[page]` -> `page` */
2
- export function matchDynamicName(name: string): string | undefined {
3
- // Don't match `...` or `[` or `]` inside the brackets
4
- // eslint-disable-next-line no-useless-escape
5
- return name.match(/^\[([^[\](?:...)]+?)\]$/)?.[1]
1
+ /** Match `[page]` -> `page` or `[...page]` -> `page` with deep flag */
2
+ const dynamicNameRe = /^\[([^[\]]+?)\]$/
3
+
4
+ export interface DynamicNameMatch {
5
+ name: string
6
+ deep: boolean
7
+ }
8
+
9
+ /** Match `[page]` -> `{ name: 'page', deep: false }` or `[...page]` -> `{ name: 'page', deep: true }` */
10
+ export function matchDynamicName(name: string): DynamicNameMatch | undefined {
11
+ const paramName = name.match(dynamicNameRe)?.[1]
12
+ if (paramName == null) {
13
+ return undefined
14
+ } else if (paramName.startsWith('...')) {
15
+ return { name: paramName.slice(3), deep: true }
16
+ } else {
17
+ return { name: paramName, deep: false }
18
+ }
6
19
  }
7
20
 
8
- /** Match `[...page]` -> `page` */
21
+ /**
22
+ * Match `[...page]` -> `page`
23
+ * @deprecated Use matchDynamicName instead which returns {name, deep}
24
+ */
9
25
  export function matchDeepDynamicRouteName(name: string): string | undefined {
10
26
  return name.match(/^\[\.\.\.([^/]+?)\]$/)?.[1]
11
27
  }
@@ -65,6 +65,30 @@ export function initialize(
65
65
  throw new Error('No routes found')
66
66
  }
67
67
 
68
+ if (process.env.ONE_DEBUG_ROUTER && routeNode) {
69
+ const formatRouteTree = (node: RouteNode, indent = '', isLast = true): string => {
70
+ const prefix = indent + (isLast ? '└─ ' : '├─ ')
71
+ const childIndent = indent + (isLast ? ' ' : '│ ')
72
+
73
+ const dynamicBadge = node.dynamic ? ` [${node.dynamic.map((d) => d.name).join(', ')}]` : ''
74
+ const typeBadge = node.type !== 'layout' ? ` (${node.type})` : ''
75
+ const routeName = node.route || '/'
76
+
77
+ let line = `${prefix}${routeName}${dynamicBadge}${typeBadge}`
78
+
79
+ const visibleChildren = node.children.filter((child) => !child.internal)
80
+ for (let i = 0; i < visibleChildren.length; i++) {
81
+ const child = visibleChildren[i]
82
+ const childIsLast = i === visibleChildren.length - 1
83
+ line += '\n' + formatRouteTree(child, childIndent, childIsLast)
84
+ }
85
+
86
+ return line
87
+ }
88
+
89
+ console.info(`[one] 📍 Route structure:\n${formatRouteTree(routeNode)}`)
90
+ }
91
+
68
92
  navigationRef = ref
69
93
  setupLinkingAndRouteInfo(initialLocation)
70
94
  subscribeToNavigationChanges()
@@ -156,6 +180,9 @@ export function push(url: OneRouter.Href, options?: OneRouter.LinkToOptions) {
156
180
  }
157
181
 
158
182
  export function dismiss(count?: number) {
183
+ if (process.env.ONE_DEBUG_ROUTER) {
184
+ console.info(`[one] 🔙 dismiss${count ? ` (${count})` : ''}`)
185
+ }
159
186
  navigationRef?.dispatch(StackActions.pop(count))
160
187
  }
161
188
 
@@ -172,10 +199,16 @@ export function setParams(params: OneRouter.InpurRouteParamsGeneric = {}) {
172
199
  }
173
200
 
174
201
  export function dismissAll() {
202
+ if (process.env.ONE_DEBUG_ROUTER) {
203
+ console.info(`[one] 🔙 dismissAll`)
204
+ }
175
205
  navigationRef?.dispatch(StackActions.popToTop())
176
206
  }
177
207
 
178
208
  export function goBack() {
209
+ if (process.env.ONE_DEBUG_ROUTER) {
210
+ console.info(`[one] 🔙 goBack`)
211
+ }
179
212
  assertIsReady(navigationRef)
180
213
  navigationRef?.current?.goBack()
181
214
  }
@@ -217,6 +250,14 @@ export function updateState(state: OneRouter.ResultState, nextStateParam = state
217
250
  const nextRouteInfo = getRouteInfo(state)
218
251
 
219
252
  if (!deepEqual(routeInfo, nextRouteInfo)) {
253
+ if (process.env.ONE_DEBUG_ROUTER) {
254
+ const from = routeInfo?.pathname || '(initial)'
255
+ const to = nextRouteInfo.pathname
256
+ const params = Object.keys(nextRouteInfo.params || {}).length
257
+ ? nextRouteInfo.params
258
+ : undefined
259
+ console.info(`[one] 🧭 ${from} → ${to}`, params ? { params } : '')
260
+ }
220
261
  routeInfo = nextRouteInfo
221
262
  }
222
263
  }
@@ -361,6 +402,10 @@ export function preloadRoute(href: string) {
361
402
  }
362
403
 
363
404
  export async function linkTo(href: string, event?: string, options?: OneRouter.LinkToOptions) {
405
+ if (process.env.ONE_DEBUG_ROUTER) {
406
+ console.info(`[one] 🔗 ${event || 'NAVIGATE'} ${href}`)
407
+ }
408
+
364
409
  if (href[0] === '#') {
365
410
  // this is just linking to a section of the current page on web
366
411
  return
@@ -39,14 +39,15 @@ export function getNavigateAction(
39
39
  const childState = actionStateRoute.state
40
40
  const nextNavigationState = stateRoute.state
41
41
 
42
- const dynamicName = matchDynamicName(actionStateRoute.name)
42
+ const dynamicMatch = matchDynamicName(actionStateRoute.name)
43
43
 
44
44
  const didActionAndCurrentStateDiverge =
45
45
  actionStateRoute.name !== stateRoute.name ||
46
46
  // !deepEqual(actionStateRoute.params, stateRoute.params) ||
47
47
  !childState ||
48
48
  !nextNavigationState ||
49
- (dynamicName && actionStateRoute.params?.[dynamicName] !== stateRoute.params?.[dynamicName])
49
+ (dynamicMatch &&
50
+ actionStateRoute.params?.[dynamicMatch.name] !== stateRoute.params?.[dynamicMatch.name])
50
51
 
51
52
  if (didActionAndCurrentStateDiverge) {
52
53
  break
@@ -18,6 +18,8 @@ import { toAbsolute } from '../utils/toAbsolute'
18
18
  import type { One } from '../vite/types'
19
19
  import type { RouteInfoCompiled } from './createRoutesManifest'
20
20
 
21
+ const debugRouter = process.env.ONE_DEBUG_ROUTER
22
+
21
23
  export async function oneServe(oneOptions: One.PluginOptions, buildInfo: One.BuildInfo, app: Hono) {
22
24
  const { resolveAPIRoute, resolveLoaderRoute, resolvePageRoute } = await import(
23
25
  '../createHandleRequest'
@@ -36,6 +38,9 @@ export async function oneServe(oneOptions: One.PluginOptions, buildInfo: One.Bui
36
38
  const paramName = param.substring(1)
37
39
  return context.req.param(paramName) || ''
38
40
  })
41
+ if (debugRouter) {
42
+ console.info(`[one] ↪ redirect ${context.req.path} → ${destinationUrl}`)
43
+ }
39
44
  return context.redirect(destinationUrl, redirect.permanent ? 301 : 302)
40
45
  })
41
46
  }
@@ -180,11 +185,19 @@ url: ${url}`)
180
185
 
181
186
  switch (route.type) {
182
187
  case 'api': {
188
+ if (debugRouter) {
189
+ console.info(`[one] ⚡ ${url.pathname} → matched API route: ${route.page}`)
190
+ }
183
191
  return resolveAPIRoute(requestHandlers, request, url, route)
184
192
  }
185
193
  case 'ssg':
186
194
  case 'spa':
187
195
  case 'ssr': {
196
+ if (debugRouter) {
197
+ console.info(
198
+ `[one] ⚡ ${url.pathname} → matched page route: ${route.page} (${route.type})`
199
+ )
200
+ }
188
201
  return resolvePageRoute(requestHandlers, request, url, route)
189
202
  }
190
203
  }
package/src/vite/one.ts CHANGED
@@ -1,15 +1,15 @@
1
- import events from 'node:events'
2
- import path from 'node:path'
3
1
  import { configureVXRNCompilerPlugin } from '@vxrn/compiler'
4
2
  import { resolvePath } from '@vxrn/resolve'
5
3
  import type {
6
4
  ExpoManifestRequestHandlerPluginPluginOptions,
7
5
  MetroPluginOptions,
8
6
  } from '@vxrn/vite-plugin-metro'
7
+ import events from 'node:events'
8
+ import path from 'node:path'
9
9
  import type { Plugin, PluginOption } from 'vite'
10
10
  import { barrel } from 'vite-plugin-barrel'
11
11
  import tsconfigPaths from 'vite-tsconfig-paths'
12
- import { autoDepOptimizePlugin, getOptimizeDeps, getOptionsFilled, loadEnv } from 'vxrn'
12
+ import { autoDepOptimizePlugin, getOptionsFilled, loadEnv } from 'vxrn'
13
13
  import vxrnVitePlugin from 'vxrn/vite-plugin'
14
14
  import { CACHE_KEY } from '../constants'
15
15
  import { getViteMetroPluginOptions } from '../metro-config/getViteMetroPluginOptions'
@@ -121,15 +121,6 @@ export function one(options: One.PluginOptions = {}): PluginOption {
121
121
  void ensureTSConfig()
122
122
  }
123
123
 
124
- // build is superset for now
125
- const { optimizeDeps } = getOptimizeDeps('build')
126
- const optimizeIds = optimizeDeps.include
127
- const optimizeIdRegex = new RegExp(
128
- // santize ids for regex
129
- // https://stackoverflow.com/questions/6300183/sanitize-string-of-regex-characters-before-regexp-build
130
- `${optimizeIds.map((id) => id.replace(/[#-.]|[[-^]|[?|{}]/g, '\\$&')).join('|')}`
131
- )
132
-
133
124
  let tsConfigPathsPlugin: Plugin | null = null
134
125
 
135
126
  const vxrnOptions = getOptionsFilled()
@@ -167,7 +158,12 @@ export function one(options: One.PluginOptions = {}): PluginOption {
167
158
  userConfig?.envPrefix
168
159
  )
169
160
  return {
170
- define: clientEnvDefine,
161
+ define: {
162
+ ...clientEnvDefine,
163
+ ...(process.env.ONE_DEBUG_ROUTER && {
164
+ 'process.env.ONE_DEBUG_ROUTER': JSON.stringify(process.env.ONE_DEBUG_ROUTER),
165
+ }),
166
+ },
171
167
  }
172
168
  },
173
169
  },
@@ -17,6 +17,8 @@ import type { One } from '../../vite/types'
17
17
  import { setServerContext } from '../one-server-only'
18
18
  import { virtalEntryIdClient, virtualEntryId } from './virtualEntryConstants'
19
19
 
20
+ const debugRouter = process.env.ONE_DEBUG_ROUTER
21
+
20
22
  // server needs better dep optimization
21
23
  const USE_SERVER_ENV = false //!!process.env.USE_SERVER_ENV
22
24
 
@@ -329,7 +331,9 @@ export function createFileSystemRouterPlugin(options: One.PluginOptions): Plugin
329
331
  })
330
332
  }
331
333
 
332
- console.warn(` [one] redirecting via redirect: ${destination}`)
334
+ if (debugRouter) {
335
+ console.info(`[one] ↪ redirect ${url.pathname} → ${destination}`)
336
+ }
333
337
 
334
338
  res.writeHead(redirect.permanent ? 301 : 302, { Location: destination })
335
339
  res.end()
@@ -338,13 +342,21 @@ export function createFileSystemRouterPlugin(options: One.PluginOptions): Plugin
338
342
  }
339
343
  }
340
344
 
341
- const reply = await handleRequest.handler(await convertIncomingMessageToRequest(req))
345
+ const reply = await handleRequest.handler(convertIncomingMessageToRequest(req))
342
346
 
343
347
  if (!reply) {
344
348
  return next()
345
349
  }
346
350
 
347
351
  if (typeof reply !== 'string' && isResponse(reply)) {
352
+ if (debugRouter) {
353
+ const headers: Record<string, string> = {}
354
+ reply.headers.forEach((v, k) => {
355
+ headers[k] = v
356
+ })
357
+ console.info(`[one] 📤 response ${reply.status}`, headers)
358
+ }
359
+
348
360
  reply.headers.forEach((value, key) => {
349
361
  if (key === 'set-cookie') {
350
362
  // for some reason it wasnt doing working without this?
@@ -359,7 +371,9 @@ export function createFileSystemRouterPlugin(options: One.PluginOptions): Plugin
359
371
 
360
372
  if (isStatusRedirect(reply.status)) {
361
373
  const location = `${reply.headers.get('location') || ''}`
362
- console.info(` ↦ Redirect ${location}`)
374
+ if (debugRouter) {
375
+ console.info(`[one] ↪ response redirect → ${location}`)
376
+ }
363
377
  if (location) {
364
378
  res.writeHead(reply.status, {
365
379
  Location: location,
@@ -373,8 +387,6 @@ export function createFileSystemRouterPlugin(options: One.PluginOptions): Plugin
373
387
  res.statusCode = reply.status
374
388
  res.statusMessage = reply.statusText
375
389
 
376
- let outString = ''
377
-
378
390
  if (reply.body) {
379
391
  if (reply.body.locked) {
380
392
  console.warn(`Body is locked??`, req.url)
@@ -1 +1 @@
1
- {"version":3,"file":"createHandleRequest.d.ts","sourceRoot":"","sources":["../src/createHandleRequest.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAK1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAE7C,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IACzD,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IAC3D,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IACxD,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;CACpD,CAAA;AAED,KAAK,mBAAmB,CAAC,eAAe,SAAS,MAAM,GAAG,EAAE,IAAI;IAC9D,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,eAAe,CAAA;IAC1C,GAAG,EAAE,GAAG,CAAA;IACR,WAAW,CAAC,EAAE,WAAW,CAAA;CAC1B,CAAA;AAED,KAAK,sBAAsB,GAAG,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAA;AAEtD,wBAAsB,cAAc,CAClC,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,SAAS,EAChB,WAAW,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,GACnC,OAAO,CAAC,QAAQ,CAAC,CA8CnB;AAED,wBAAsB,eAAe,CACnC,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,iBAAiB,qBAsCzB;AAED,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,iBAAiB,qBAmCzB;AAED,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,iBAAiB,qBAqBzB;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,OAMpD;AASD,wBAAgB,eAAe,CAAC,QAAQ,EAAE;IAAE,UAAU,EAAE,SAAS,EAAE,CAAC;IAAC,SAAS,EAAE,SAAS,EAAE,CAAA;CAAE,GAAG;IAC9F,UAAU,EAAE,iBAAiB,EAAE,CAAA;IAC/B,SAAS,EAAE,iBAAiB,EAAE,CAAA;CAC/B,CAKA;AAGD,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,eAAe,EACzB,EAAE,UAAU,EAAE,EAAE;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE;;uBAUW,OAAO,KAAG,OAAO,CAAC,sBAAsB,CAAC;EAsE3F"}
1
+ {"version":3,"file":"createHandleRequest.d.ts","sourceRoot":"","sources":["../src/createHandleRequest.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAK1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAE7C,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IACzD,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IAC3D,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IACxD,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;CACpD,CAAA;AAED,KAAK,mBAAmB,CAAC,eAAe,SAAS,MAAM,GAAG,EAAE,IAAI;IAC9D,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,eAAe,CAAA;IAC1C,GAAG,EAAE,GAAG,CAAA;IACR,WAAW,CAAC,EAAE,WAAW,CAAA;CAC1B,CAAA;AAED,KAAK,sBAAsB,GAAG,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAA;AAItD,wBAAsB,cAAc,CAClC,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,SAAS,EAChB,WAAW,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,GACnC,OAAO,CAAC,QAAQ,CAAC,CA4DnB;AAED,wBAAsB,eAAe,CACnC,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,iBAAiB,qBA0CzB;AAED,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,iBAAiB,qBAuCzB;AAED,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,iBAAiB,qBAyBzB;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,OAMpD;AASD,wBAAgB,eAAe,CAAC,QAAQ,EAAE;IAAE,UAAU,EAAE,SAAS,EAAE,CAAC;IAAC,SAAS,EAAE,SAAS,EAAE,CAAA;CAAE,GAAG;IAC9F,UAAU,EAAE,iBAAiB,EAAE,CAAA;IAC/B,SAAS,EAAE,iBAAiB,EAAE,CAAA;CAC/B,CAKA;AAGD,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,eAAe,EACzB,EAAE,UAAU,EAAE,EAAE;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE;;uBAUW,OAAO,KAAG,OAAO,CAAC,sBAAsB,CAAC;EA4E3F"}
@@ -1 +1 @@
1
- {"version":3,"file":"NavigationContainer.d.ts","sourceRoot":"","sources":["../../src/fork/NavigationContainer.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAKL,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAK5B,MAAM,wBAAwB,CAAA;AAO/B,OAAO,EAEL,KAAK,oBAAoB,EAEzB,KAAK,cAAc,EAEnB,KAAK,eAAe,EAErB,MAAM,0BAA0B,CAAA;AACjC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAS9B,OAAO,CAAC,MAAM,CAAC;IAEb,IAAI,yBAAyB,EAAE,OAAO,CACpC,sBAAsB,CAAC,GAAG,CAAC,EAC3B;QAAE,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC,GAAG,CAAC,CAAA;KAAE,CAC1C,CAAA;CACF;AAID,KAAK,KAAK,CAAC,SAAS,SAAS,EAAE,IAAI,wBAAwB,GAAG;IAC5D,SAAS,CAAC,EAAE,eAAe,CAAA;IAC3B,OAAO,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,CAAA;IACnC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,aAAa,CAAC,EAAE,oBAAoB,CAAA;CACrC,CAAA;AAuID,eAAO,MAAM,mBAAmB,EAAiD,CAC/E,aAAa,SAAS,EAAE,GAAG,eAAe,CAAC,aAAa,EAExD,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG;IAC5B,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC,CAAA;CACvD,KACE,KAAK,CAAC,YAAY,CAAA"}
1
+ {"version":3,"file":"NavigationContainer.d.ts","sourceRoot":"","sources":["../../src/fork/NavigationContainer.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAKL,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAK5B,MAAM,wBAAwB,CAAA;AAO/B,OAAO,EAEL,KAAK,oBAAoB,EAEzB,KAAK,cAAc,EAEnB,KAAK,eAAe,EAErB,MAAM,0BAA0B,CAAA;AACjC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAS9B,OAAO,CAAC,MAAM,CAAC;IAEb,IAAI,yBAAyB,EAAE,OAAO,CACpC,sBAAsB,CAAC,GAAG,CAAC,EAC3B;QAAE,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC,GAAG,CAAC,CAAA;KAAE,CAC1C,CAAA;CACF;AAID,KAAK,KAAK,CAAC,SAAS,SAAS,EAAE,IAAI,wBAAwB,GAAG;IAC5D,SAAS,CAAC,EAAE,eAAe,CAAA;IAC3B,OAAO,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,CAAA;IACnC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,aAAa,CAAC,EAAE,oBAAoB,CAAA;CACrC,CAAA;AA+ID,eAAO,MAAM,mBAAmB,EAAiD,CAC/E,aAAa,SAAS,EAAE,GAAG,eAAe,CAAC,aAAa,EAExD,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG;IAC5B,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC,CAAA;CACvD,KACE,KAAK,CAAC,YAAY,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"createMemoryHistory.d.ts","sourceRoot":"","sources":["../../src/fork/createMemoryHistory.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAG7D,KAAK,aAAa,GAAG;IAEnB,EAAE,EAAE,MAAM,CAAA;IAEV,KAAK,EAAE,eAAe,CAAA;IAEtB,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,wBAAgB,mBAAmB;oBAmBlB,MAAM;eAcR,MAAM;wBAIG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE;0BAad;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,eAAe,CAAA;KAAE;6BAmBrC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,eAAe,CAAA;KAAE;UAoC3D,MAAM;qBA2FK,MAAM,IAAI;EAiB9B"}
1
+ {"version":3,"file":"createMemoryHistory.d.ts","sourceRoot":"","sources":["../../src/fork/createMemoryHistory.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAG7D,KAAK,aAAa,GAAG;IAEnB,EAAE,EAAE,MAAM,CAAA;IAEV,KAAK,EAAE,eAAe,CAAA;IAEtB,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,wBAAgB,mBAAmB;oBAmBlB,MAAM;eAcR,MAAM;wBAIG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE;0BAad;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,eAAe,CAAA;KAAE;6BAuBrC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,eAAe,CAAA;KAAE;UAwC3D,MAAM;qBA2FK,MAAM,IAAI;EAiB9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"extractPathFromURL.d.ts","sourceRoot":"","sources":["../../src/fork/extractPathFromURL.ts"],"names":[],"mappings":"AAAA,wBAAgB,gCAAgC,CAAC,GAAG,EAAE,MAAM,GAAG;IAC7D,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;CACpB,CAUA;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAI3D;AAwGD,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,SAAK,UAMnE;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,UAMjF;AAED,eAAO,MAAM,kBAAkB,+BAAyB,CAAA"}
1
+ {"version":3,"file":"extractPathFromURL.d.ts","sourceRoot":"","sources":["../../src/fork/extractPathFromURL.ts"],"names":[],"mappings":"AAAA,wBAAgB,gCAAgC,CAAC,GAAG,EAAE,MAAM,GAAG;IAC7D,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;CACpB,CAUA;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAI3D;AA8GD,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,SAAK,UAMnE;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,UAMjF;AAED,eAAO,MAAM,kBAAkB,+BAAyB,CAAA"}
@@ -12,20 +12,15 @@ export type AdditionalRouteConfig = {
12
12
  hasChildren: boolean;
13
13
  expandedRouteNames: string[];
14
14
  parts: string[];
15
+ staticPartCount: number;
15
16
  };
16
- export declare function getUrlWithReactNavigationConcessions(path: string, baseUrl?: string | undefined): {
17
+ interface UrlWithReactNavigationConcessions {
17
18
  path: string;
18
- cleanUrl: string;
19
19
  nonstandardPathname: string;
20
- url: URL;
21
- pathWithoutGroups?: undefined;
22
- } | {
23
- path: string;
24
- nonstandardPathname: string;
25
- url: URL;
20
+ hash: string;
26
21
  pathWithoutGroups: string;
27
- cleanUrl?: undefined;
28
- };
22
+ }
23
+ export declare function getUrlWithReactNavigationConcessions(path: string, baseUrl?: string | undefined): UrlWithReactNavigationConcessions;
29
24
  export declare function matchForEmptyPath(configs: RouteConfig[]): {
30
25
  path: string;
31
26
  screen: string;
@@ -42,6 +37,7 @@ export declare function matchForEmptyPath(configs: RouteConfig[]): {
42
37
  hasChildren: boolean;
43
38
  expandedRouteNames: string[];
44
39
  parts: string[];
40
+ staticPartCount: number;
45
41
  } | undefined;
46
42
  export declare function appendIsInitial(initialRoutes: InitialRouteConfig[]): (config: RouteConfig) => RouteConfig;
47
43
  export declare function getRouteConfigSorter(previousSegments?: string[]): (a: RouteConfig, b: RouteConfig) => number;
@@ -54,4 +50,5 @@ export declare function populateParams(routes?: ParsedRoute[], params?: Record<s
54
50
  export declare function createConfigItemAdditionalProperties(screen: string, pattern: string, routeNames: string[], config?: Record<string, any>): Omit<AdditionalRouteConfig, 'isInitial'>;
55
51
  export declare function parseQueryParamsExtended(path: string, route: ParsedRoute, parseConfig?: Record<string, (value: string) => any>, hash?: string): Record<string, string | string[]> | undefined;
56
52
  export declare function stripBaseUrl(path: string, baseUrl?: string | undefined): string;
53
+ export {};
57
54
  //# sourceMappingURL=getStateFromPath-mods.d.ts.map