expo-router 5.0.1-preview.1 → 5.0.2-preview.1

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 (274) hide show
  1. package/build/ExpoRoot.js +18 -9
  2. package/build/ExpoRoot.js.map +1 -1
  3. package/build/LocationProvider.js +2 -3
  4. package/build/LocationProvider.js.map +1 -1
  5. package/build/Route.js +4 -4
  6. package/build/Route.js.map +1 -1
  7. package/build/doctor/index.js +1 -2
  8. package/build/doctor/index.js.map +1 -1
  9. package/build/exports.js +17 -7
  10. package/build/exports.js.map +1 -1
  11. package/build/fast-refresh.js.map +1 -1
  12. package/build/fork/NavigationContainer.d.ts +2 -7
  13. package/build/fork/NavigationContainer.d.ts.map +1 -1
  14. package/build/fork/NavigationContainer.js.map +1 -1
  15. package/build/fork/createMemoryHistory.d.ts.map +1 -1
  16. package/build/fork/createMemoryHistory.js +1 -2
  17. package/build/fork/createMemoryHistory.js.map +1 -1
  18. package/build/fork/extractPathFromURL.js +3 -4
  19. package/build/fork/extractPathFromURL.js.map +1 -1
  20. package/build/fork/findFocusedRoute.d.ts +1 -11
  21. package/build/fork/findFocusedRoute.d.ts.map +1 -1
  22. package/build/fork/findFocusedRoute.js +1 -2
  23. package/build/fork/findFocusedRoute.js.map +1 -1
  24. package/build/fork/getPathFromState-forks.d.ts.map +1 -1
  25. package/build/fork/getPathFromState-forks.js +24 -14
  26. package/build/fork/getPathFromState-forks.js.map +1 -1
  27. package/build/fork/getPathFromState.js +20 -11
  28. package/build/fork/getPathFromState.js.map +1 -1
  29. package/build/fork/getStateFromPath-forks.d.ts +4 -4
  30. package/build/fork/getStateFromPath-forks.d.ts.map +1 -1
  31. package/build/fork/getStateFromPath-forks.js +18 -19
  32. package/build/fork/getStateFromPath-forks.js.map +1 -1
  33. package/build/fork/getStateFromPath.js +18 -9
  34. package/build/fork/getStateFromPath.js.map +1 -1
  35. package/build/fork/native-stack/NativeStackView.js +1 -2
  36. package/build/fork/native-stack/NativeStackView.js.map +1 -1
  37. package/build/fork/native-stack/createNativeStackNavigator.js +18 -9
  38. package/build/fork/native-stack/createNativeStackNavigator.js.map +1 -1
  39. package/build/fork/useBackButton.d.ts +0 -1
  40. package/build/fork/useBackButton.d.ts.map +1 -1
  41. package/build/fork/useBackButton.js +1 -2
  42. package/build/fork/useBackButton.js.map +1 -1
  43. package/build/fork/useBackButton.native.js +18 -9
  44. package/build/fork/useBackButton.native.js.map +1 -1
  45. package/build/fork/useDocumentTitle.js +18 -9
  46. package/build/fork/useDocumentTitle.js.map +1 -1
  47. package/build/fork/useDocumentTitle.native.js +1 -2
  48. package/build/fork/useDocumentTitle.native.js.map +1 -1
  49. package/build/fork/useLinking.d.ts +3 -26
  50. package/build/fork/useLinking.d.ts.map +1 -1
  51. package/build/fork/useLinking.js +20 -10
  52. package/build/fork/useLinking.js.map +1 -1
  53. package/build/fork/useLinking.native.d.ts +6 -6
  54. package/build/fork/useLinking.native.js +19 -10
  55. package/build/fork/useLinking.native.js.map +1 -1
  56. package/build/fork/useThenable.js +18 -9
  57. package/build/fork/useThenable.js.map +1 -1
  58. package/build/fork/validatePathConfig.js +1 -1
  59. package/build/fork/validatePathConfig.js.map +1 -1
  60. package/build/getDevServer/index.js.map +1 -1
  61. package/build/getLinkingConfig.js +3 -3
  62. package/build/getLinkingConfig.js.map +1 -1
  63. package/build/getReactNavigationConfig.js +3 -4
  64. package/build/getReactNavigationConfig.js.map +1 -1
  65. package/build/getRoutes.js +3 -3
  66. package/build/getRoutes.js.map +1 -1
  67. package/build/getRoutesCore.js +6 -7
  68. package/build/getRoutesCore.js.map +1 -1
  69. package/build/getRoutesRedirects.d.ts +0 -1
  70. package/build/getRoutesRedirects.d.ts.map +1 -1
  71. package/build/getRoutesRedirects.js +3 -4
  72. package/build/getRoutesRedirects.js.map +1 -1
  73. package/build/getRoutesSSR.js +3 -3
  74. package/build/getRoutesSSR.js.map +1 -1
  75. package/build/getServerManifest.js +2 -3
  76. package/build/getServerManifest.js.map +1 -1
  77. package/build/global-state/routeInfo.js +18 -9
  78. package/build/global-state/routeInfo.js.map +1 -1
  79. package/build/global-state/router-store.d.ts +6 -6
  80. package/build/global-state/router-store.d.ts.map +1 -1
  81. package/build/global-state/router-store.js +22 -12
  82. package/build/global-state/router-store.js.map +1 -1
  83. package/build/global-state/routing.js +29 -20
  84. package/build/global-state/routing.js.map +1 -1
  85. package/build/global-state/serverLocationContext.d.ts +0 -1
  86. package/build/global-state/serverLocationContext.d.ts.map +1 -1
  87. package/build/global-state/sort-routes.js +1 -2
  88. package/build/global-state/sort-routes.js.map +1 -1
  89. package/build/head/ExpoHead.android.d.ts +1 -1
  90. package/build/head/ExpoHead.android.js +1 -2
  91. package/build/head/ExpoHead.android.js.map +1 -1
  92. package/build/head/ExpoHead.ios.js.map +1 -1
  93. package/build/head/ExpoHeadModule.js.map +1 -1
  94. package/build/head/url.js +2 -3
  95. package/build/head/url.js.map +1 -1
  96. package/build/hooks.js +11 -12
  97. package/build/hooks.js.map +1 -1
  98. package/build/layouts/DrawerClient.d.ts +16 -17
  99. package/build/layouts/DrawerClient.d.ts.map +1 -1
  100. package/build/layouts/RootModal.d.ts +1 -2
  101. package/build/layouts/RootModal.d.ts.map +1 -1
  102. package/build/layouts/RootModal.js +2 -2
  103. package/build/layouts/RootModal.js.map +1 -1
  104. package/build/layouts/StackClient.d.ts +16 -16
  105. package/build/layouts/StackClient.d.ts.map +1 -1
  106. package/build/layouts/StackClient.js.map +1 -1
  107. package/build/layouts/TabsClient.d.ts +12 -12
  108. package/build/layouts/TabsClient.js.map +1 -1
  109. package/build/layouts/withLayoutContext.d.ts +2 -2
  110. package/build/layouts/withLayoutContext.d.ts.map +1 -1
  111. package/build/layouts/withLayoutContext.js +19 -10
  112. package/build/layouts/withLayoutContext.js.map +1 -1
  113. package/build/link/Link.d.ts.map +1 -1
  114. package/build/link/Link.js +2 -2
  115. package/build/link/Link.js.map +1 -1
  116. package/build/link/href.d.ts.map +1 -1
  117. package/build/link/href.js +2 -2
  118. package/build/link/href.js.map +1 -1
  119. package/build/link/linking.d.ts.map +1 -1
  120. package/build/link/linking.js +21 -11
  121. package/build/link/linking.js.map +1 -1
  122. package/build/link/useDomComponentNavigation.js +6 -7
  123. package/build/link/useDomComponentNavigation.js.map +1 -1
  124. package/build/link/useLinkHooks.d.ts.map +1 -1
  125. package/build/link/useLinkHooks.js +2 -2
  126. package/build/link/useLinkHooks.js.map +1 -1
  127. package/build/link/useLinkToPathProps.d.ts.map +1 -1
  128. package/build/link/useLinkToPathProps.js +2 -3
  129. package/build/link/useLinkToPathProps.js.map +1 -1
  130. package/build/link/useLoadedNavigation.d.ts.map +1 -1
  131. package/build/link/useLoadedNavigation.js +2 -3
  132. package/build/link/useLoadedNavigation.js.map +1 -1
  133. package/build/loadStaticParamsAsync.js +3 -4
  134. package/build/loadStaticParamsAsync.js.map +1 -1
  135. package/build/matchers.js +14 -15
  136. package/build/matchers.js.map +1 -1
  137. package/build/onboard/Tutorial.js +1 -2
  138. package/build/onboard/Tutorial.js.map +1 -1
  139. package/build/onboard/createEntryFile.js +2 -3
  140. package/build/onboard/createEntryFile.js.map +1 -1
  141. package/build/qualified-entry.js +1 -2
  142. package/build/qualified-entry.js.map +1 -1
  143. package/build/renderRootComponent.js +18 -9
  144. package/build/renderRootComponent.js.map +1 -1
  145. package/build/routes-manifest.js +1 -2
  146. package/build/routes-manifest.js.map +1 -1
  147. package/build/rsc/entry.js +1 -2
  148. package/build/rsc/entry.js.map +1 -1
  149. package/build/rsc/exports.d.ts +0 -1
  150. package/build/rsc/exports.d.ts.map +1 -1
  151. package/build/rsc/exports.js +18 -18
  152. package/build/rsc/exports.js.map +1 -1
  153. package/build/rsc/middleware.js +2 -3
  154. package/build/rsc/middleware.js.map +1 -1
  155. package/build/rsc/path.d.ts.map +1 -1
  156. package/build/rsc/path.js.map +1 -1
  157. package/build/rsc/router/client.d.ts +7 -7
  158. package/build/rsc/router/client.d.ts.map +1 -1
  159. package/build/rsc/router/client.js +4 -4
  160. package/build/rsc/router/client.js.map +1 -1
  161. package/build/rsc/router/common.js +4 -4
  162. package/build/rsc/router/common.js.map +1 -1
  163. package/build/rsc/router/create-expo-pages.d.ts.map +1 -1
  164. package/build/rsc/router/create-expo-pages.js +1 -2
  165. package/build/rsc/router/create-expo-pages.js.map +1 -1
  166. package/build/rsc/router/create-pages.d.ts +1 -3
  167. package/build/rsc/router/create-pages.d.ts.map +1 -1
  168. package/build/rsc/router/create-pages.js +1 -2
  169. package/build/rsc/router/create-pages.js.map +1 -1
  170. package/build/rsc/router/defineRouter.js +2 -3
  171. package/build/rsc/router/defineRouter.js.map +1 -1
  172. package/build/rsc/router/errors.js.map +1 -1
  173. package/build/rsc/router/expo-definedRouter.d.ts +1 -1
  174. package/build/rsc/router/expo-definedRouter.js.map +1 -1
  175. package/build/rsc/router/fetch.js +1 -2
  176. package/build/rsc/router/fetch.js.map +1 -1
  177. package/build/rsc/router/host.d.ts +3 -3
  178. package/build/rsc/router/host.d.ts.map +1 -1
  179. package/build/rsc/router/host.js.map +1 -1
  180. package/build/rsc/router/noopRouter.d.ts +1 -1
  181. package/build/rsc/router/utils.d.ts.map +1 -1
  182. package/build/rsc/router/utils.js.map +1 -1
  183. package/build/rsc/rsc-renderer.js +1 -2
  184. package/build/rsc/rsc-renderer.js.map +1 -1
  185. package/build/rsc/server.d.ts.map +1 -1
  186. package/build/rsc/server.js +5 -5
  187. package/build/rsc/server.js.map +1 -1
  188. package/build/sortRoutes.d.ts.map +1 -1
  189. package/build/sortRoutes.js +2 -3
  190. package/build/sortRoutes.js.map +1 -1
  191. package/build/static/getRootComponent.js +1 -2
  192. package/build/static/getRootComponent.js.map +1 -1
  193. package/build/static/getServerManifest.js +2 -3
  194. package/build/static/getServerManifest.js.map +1 -1
  195. package/build/static/html.js +2 -3
  196. package/build/static/html.js.map +1 -1
  197. package/build/static/renderStaticContent.js +19 -9
  198. package/build/static/renderStaticContent.js.map +1 -1
  199. package/build/testing-library/context-stubs.d.ts +1 -2
  200. package/build/testing-library/context-stubs.d.ts.map +1 -1
  201. package/build/testing-library/context-stubs.js +3 -3
  202. package/build/testing-library/context-stubs.js.map +1 -1
  203. package/build/testing-library/index.d.ts.map +1 -1
  204. package/build/testing-library/index.js +2 -2
  205. package/build/testing-library/index.js.map +1 -1
  206. package/build/testing-library/mock-config.js +2 -3
  207. package/build/testing-library/mock-config.js.map +1 -1
  208. package/build/testing-library/mocks.js.map +1 -1
  209. package/build/testing-library/require-context-ponyfill.js +1 -1
  210. package/build/testing-library/require-context-ponyfill.js.map +1 -1
  211. package/build/typed-routes/generate.js +4 -5
  212. package/build/typed-routes/generate.js.map +1 -1
  213. package/build/typed-routes/index.d.ts.map +1 -1
  214. package/build/typed-routes/index.js +2 -2
  215. package/build/typed-routes/index.js.map +1 -1
  216. package/build/ui/Slot.d.ts +0 -1
  217. package/build/ui/Slot.d.ts.map +1 -1
  218. package/build/ui/TabContext.d.ts +47 -55
  219. package/build/ui/TabContext.d.ts.map +1 -1
  220. package/build/ui/TabList.js +2 -3
  221. package/build/ui/TabList.js.map +1 -1
  222. package/build/ui/TabRouter.d.ts +27 -27
  223. package/build/ui/TabRouter.d.ts.map +1 -1
  224. package/build/ui/TabRouter.js +18 -9
  225. package/build/ui/TabRouter.js.map +1 -1
  226. package/build/ui/TabSlot.js +4 -5
  227. package/build/ui/TabSlot.js.map +1 -1
  228. package/build/ui/TabTrigger.js +3 -4
  229. package/build/ui/TabTrigger.js.map +1 -1
  230. package/build/ui/Tabs.d.ts +73 -78
  231. package/build/ui/Tabs.d.ts.map +1 -1
  232. package/build/ui/Tabs.js +3 -4
  233. package/build/ui/Tabs.js.map +1 -1
  234. package/build/ui/common.d.ts +2 -3
  235. package/build/ui/common.d.ts.map +1 -1
  236. package/build/ui/common.js +3 -3
  237. package/build/ui/common.js.map +1 -1
  238. package/build/ui/useComponent.d.ts.map +1 -1
  239. package/build/ui/useComponent.js +1 -2
  240. package/build/ui/useComponent.js.map +1 -1
  241. package/build/useDeprecated.js +2 -3
  242. package/build/useDeprecated.js.map +1 -1
  243. package/build/useFocusEffect.js +18 -9
  244. package/build/useFocusEffect.js.map +1 -1
  245. package/build/useNavigation.js +1 -2
  246. package/build/useNavigation.js.map +1 -1
  247. package/build/useScreens.js +5 -6
  248. package/build/useScreens.js.map +1 -1
  249. package/build/utils/splash.js +5 -6
  250. package/build/utils/splash.js.map +1 -1
  251. package/build/utils/url.js +3 -4
  252. package/build/utils/url.js.map +1 -1
  253. package/build/views/EmptyRoute.js +1 -2
  254. package/build/views/EmptyRoute.js.map +1 -1
  255. package/build/views/ErrorBoundary.d.ts +0 -1
  256. package/build/views/ErrorBoundary.d.ts.map +1 -1
  257. package/build/views/ErrorBoundary.js +1 -2
  258. package/build/views/ErrorBoundary.js.map +1 -1
  259. package/build/views/Navigator.js +22 -12
  260. package/build/views/Navigator.js.map +1 -1
  261. package/build/views/Pressable.d.ts.map +1 -1
  262. package/build/views/Screen.js +1 -2
  263. package/build/views/Screen.js.map +1 -1
  264. package/build/views/Sitemap.js +2 -3
  265. package/build/views/Sitemap.js.map +1 -1
  266. package/build/views/SuspenseFallback.js +1 -2
  267. package/build/views/SuspenseFallback.js.map +1 -1
  268. package/build/views/Toast.js +3 -3
  269. package/build/views/Toast.js.map +1 -1
  270. package/build/views/Try.js +17 -7
  271. package/build/views/Try.js.map +1 -1
  272. package/build/views/Unmatched.js +1 -2
  273. package/build/views/Unmatched.js.map +1 -1
  274. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"findFocusedRoute.d.ts","sourceRoot":"","sources":["../../src/fork/findFocusedRoute.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY;;;;;;;;;;;;eAUnD"}
1
+ {"version":3,"file":"findFocusedRoute.d.ts","sourceRoot":"","sources":["../../src/fork/findFocusedRoute.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY;;eAUnD"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  // Forked so we can access without importing any React Native code in Node.js environments.
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.findFocusedRoute = void 0;
4
+ exports.findFocusedRoute = findFocusedRoute;
5
5
  function findFocusedRoute(state) {
6
6
  let current = state;
7
7
  while (current?.routes[current.index ?? 0].state != null) {
@@ -10,5 +10,4 @@ function findFocusedRoute(state) {
10
10
  const route = current?.routes[current?.index ?? 0];
11
11
  return route;
12
12
  }
13
- exports.findFocusedRoute = findFocusedRoute;
14
13
  //# sourceMappingURL=findFocusedRoute.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"findFocusedRoute.js","sourceRoot":"","sources":["../../src/fork/findFocusedRoute.tsx"],"names":[],"mappings":";AAAA,2FAA2F;;;AAI3F,SAAgB,gBAAgB,CAAC,KAAmB;IAClD,IAAI,OAAO,GAA6B,KAAK,CAAC;IAE9C,OAAO,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,EAAE;QACxD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;KACpD;IAED,MAAM,KAAK,GAAG,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC;IAEnD,OAAO,KAAK,CAAC;AACf,CAAC;AAVD,4CAUC","sourcesContent":["// Forked so we can access without importing any React Native code in Node.js environments.\n\nimport type { InitialState } from '@react-navigation/routers';\n\nexport function findFocusedRoute(state: InitialState) {\n let current: InitialState | undefined = state;\n\n while (current?.routes[current.index ?? 0].state != null) {\n current = current.routes[current.index ?? 0].state;\n }\n\n const route = current?.routes[current?.index ?? 0];\n\n return route;\n}\n"]}
1
+ {"version":3,"file":"findFocusedRoute.js","sourceRoot":"","sources":["../../src/fork/findFocusedRoute.tsx"],"names":[],"mappings":";AAAA,2FAA2F;;AAI3F,4CAUC;AAVD,SAAgB,gBAAgB,CAAC,KAAmB;IAClD,IAAI,OAAO,GAA6B,KAAK,CAAC;IAE9C,OAAO,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;QACzD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IACrD,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC;IAEnD,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["// Forked so we can access without importing any React Native code in Node.js environments.\n\nimport type { InitialState } from '@react-navigation/routers';\n\nexport function findFocusedRoute(state: InitialState) {\n let current: InitialState | undefined = state;\n\n while (current?.routes[current.index ?? 0].state != null) {\n current = current.routes[current.index ?? 0].state;\n }\n\n const route = current?.routes[current?.index ?? 0];\n\n return route;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"getPathFromState-forks.d.ts","sourceRoot":"","sources":["../../src/fork/getPathFromState-forks.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8C,KAAK,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAGlG,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG1E,MAAM,MAAM,WAAW,GAAG;IACxB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAE3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,SAAS,SAAS,MAAM,EAAE,EAC3D,qBAAqB,EACrB,cAAc,EACd,sBAAsB,EACtB,GAAG,OAAO,EACX,EAAE,OAAO,CAAC,SAAS,CAAC,QAEpB;AAED,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC9B,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG;IACrB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,EACD,SAAS,CAAC,EAAE,eAAe;;EA0B5B;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,aAAa,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,UAarD;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAAM,GAAG,SAAqC,UASxD;AAED,wBAAgB,+BAA+B,CAAC,EAC9C,OAAO,EACP,KAAK,EACL,MAAM,EACN,cAAc,EACd,qBAAqB,EACrB,sBAA6B,EAC7B,gBAAgB,GACjB,EAAE,WAAW,GAAG;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,UAkEA;AAED,eAAO,MAAM,YAAY,YAAa,MAAM,WAAoD,CAAC;AAEjG,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,WAEtC"}
1
+ {"version":3,"file":"getPathFromState-forks.d.ts","sourceRoot":"","sources":["../../src/fork/getPathFromState-forks.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8C,KAAK,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAGlG,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG1E,MAAM,MAAM,WAAW,GAAG;IACxB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAE3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,SAAS,SAAS,MAAM,EAAE,EAC3D,qBAAqB,EACrB,cAAc,EACd,sBAAsB,EACtB,GAAG,OAAO,EACX,EAAE,OAAO,CAAC,SAAS,CAAC,QAEpB;AAED,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC9B,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG;IACrB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,EACD,SAAS,CAAC,EAAE,eAAe;;EA0B5B;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,aAAa,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,UAarD;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAAM,GAAG,SAAqC,UASxD;AAED,wBAAgB,+BAA+B,CAAC,EAC9C,OAAO,EACP,KAAK,EACL,MAAM,EACN,cAAc,EACd,qBAAqB,EACrB,sBAA6B,EAC7B,gBAAgB,GACjB,EAAE,WAAW,GAAG;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,UAkEA;AAED,eAAO,MAAM,YAAY,GAAI,SAAS,MAAM,WAAoD,CAAC;AAEjG,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,WAEtC"}
@@ -15,22 +15,37 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.isDynamicPart = exports.getParamName = exports.getPathWithConventionsCollapsed = exports.appendBaseUrl = exports.appendQueryAndHash = exports.fixCurrentParams = exports.validatePathConfig = void 0;
36
+ exports.getParamName = void 0;
37
+ exports.validatePathConfig = validatePathConfig;
38
+ exports.fixCurrentParams = fixCurrentParams;
39
+ exports.appendQueryAndHash = appendQueryAndHash;
40
+ exports.appendBaseUrl = appendBaseUrl;
41
+ exports.getPathWithConventionsCollapsed = getPathWithConventionsCollapsed;
42
+ exports.isDynamicPart = isDynamicPart;
27
43
  const native_1 = require("@react-navigation/native");
28
44
  const queryString = __importStar(require("query-string"));
29
45
  const matchers_1 = require("../matchers");
30
46
  function validatePathConfig({ preserveDynamicRoutes, preserveGroups, shouldEncodeURISegment, ...options }) {
31
47
  (0, native_1.validatePathConfig)(options);
32
48
  }
33
- exports.validatePathConfig = validatePathConfig;
34
49
  function fixCurrentParams(allParams, route, stringify) {
35
50
  // Better handle array params
36
51
  const currentParams = Object.fromEntries(Object.entries(route.params).flatMap(([key, value]) => {
@@ -52,7 +67,6 @@ function fixCurrentParams(allParams, route, stringify) {
52
67
  Object.assign(allParams, currentParams);
53
68
  return currentParams;
54
69
  }
55
- exports.fixCurrentParams = fixCurrentParams;
56
70
  function appendQueryAndHash(path, { '#': hash, ...focusedParams }) {
57
71
  const query = queryString.stringify(focusedParams, { sort: false });
58
72
  if (query) {
@@ -63,7 +77,6 @@ function appendQueryAndHash(path, { '#': hash, ...focusedParams }) {
63
77
  }
64
78
  return path;
65
79
  }
66
- exports.appendQueryAndHash = appendQueryAndHash;
67
80
  function appendBaseUrl(path, baseUrl = process.env.EXPO_BASE_URL) {
68
81
  if (process.env.NODE_ENV !== 'development') {
69
82
  if (baseUrl) {
@@ -72,7 +85,6 @@ function appendBaseUrl(path, baseUrl = process.env.EXPO_BASE_URL) {
72
85
  }
73
86
  return path;
74
87
  }
75
- exports.appendBaseUrl = appendBaseUrl;
76
88
  function getPathWithConventionsCollapsed({ pattern, route, params, preserveGroups, preserveDynamicRoutes, shouldEncodeURISegment = true, initialRouteName, }) {
77
89
  const segments = pattern.split('/');
78
90
  return segments
@@ -138,13 +150,11 @@ function getPathWithConventionsCollapsed({ pattern, route, params, preserveGroup
138
150
  .map((v) => v ?? '')
139
151
  .join('/');
140
152
  }
141
- exports.getPathWithConventionsCollapsed = getPathWithConventionsCollapsed;
142
153
  const getParamName = (pattern) => pattern.replace(/^[:*]/, '').replace(/\?$/, '');
143
154
  exports.getParamName = getParamName;
144
155
  function isDynamicPart(p) {
145
156
  return p.startsWith(':') || p.startsWith('*');
146
157
  }
147
- exports.isDynamicPart = isDynamicPart;
148
158
  function segmentMatchesConvention(segment) {
149
159
  return (segment === 'index' ||
150
160
  (0, matchers_1.matchDynamicName)(segment) != null ||
@@ -1 +1 @@
1
- {"version":3,"file":"getPathFromState-forks.js","sourceRoot":"","sources":["../../src/fork/getPathFromState-forks.ts"],"names":[],"mappings":"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","sourcesContent":["import { validatePathConfig as RNValidatePathConfig, type Route } from '@react-navigation/native';\nimport * as queryString from 'query-string';\n\nimport type { Options, State, StringifyConfig } from './getPathFromState';\nimport { matchDeepDynamicRouteName, matchDynamicName, matchGroupName } from '../matchers';\n\nexport type ExpoOptions = {\n preserveDynamicRoutes?: boolean;\n preserveGroups?: boolean;\n shouldEncodeURISegment?: boolean;\n};\n\nexport type ExpoConfigItem = {\n // Used as fallback for groups\n initialRouteName?: string;\n};\n\nexport function validatePathConfig<ParamList extends object>({\n preserveDynamicRoutes,\n preserveGroups,\n shouldEncodeURISegment,\n ...options\n}: Options<ParamList>) {\n RNValidatePathConfig(options);\n}\n\nexport function fixCurrentParams(\n allParams: Record<string, any>,\n route: Route<string> & {\n state?: State;\n },\n stringify?: StringifyConfig\n) {\n // Better handle array params\n const currentParams = Object.fromEntries(\n Object.entries(route.params!).flatMap(([key, value]) => {\n if (key === 'screen' || key === 'params') {\n return [];\n }\n\n return [\n [\n key,\n stringify?.[key]\n ? stringify[key](value)\n : Array.isArray(value)\n ? value.map(String)\n : String(value),\n ],\n ];\n })\n );\n\n // We always assign params, as non pattern routes may still have query params\n Object.assign(allParams, currentParams);\n\n return currentParams;\n}\n\nexport function appendQueryAndHash(\n path: string,\n { '#': hash, ...focusedParams }: Record<string, any>\n) {\n const query = queryString.stringify(focusedParams, { sort: false });\n\n if (query) {\n path += `?${query}`;\n }\n\n if (hash) {\n path += `#${hash}`;\n }\n\n return path;\n}\n\nexport function appendBaseUrl(\n path: string,\n baseUrl: string | undefined = process.env.EXPO_BASE_URL\n) {\n if (process.env.NODE_ENV !== 'development') {\n if (baseUrl) {\n return `/${baseUrl.replace(/^\\/+/, '').replace(/\\/$/, '')}${path}`;\n }\n }\n\n return path;\n}\n\nexport function getPathWithConventionsCollapsed({\n pattern,\n route,\n params,\n preserveGroups,\n preserveDynamicRoutes,\n shouldEncodeURISegment = true,\n initialRouteName,\n}: ExpoOptions & {\n pattern: string;\n route: Route<any>;\n params: Record<string, any>;\n initialRouteName?: string;\n}) {\n const segments = pattern.split('/');\n\n return segments\n .map((p, i) => {\n const name = getParamName(p);\n\n // Showing the route name seems ok, though whatever we show here will be incorrect\n // Since the page doesn't actually exist\n if (p.startsWith('*')) {\n if (preserveDynamicRoutes) {\n if (name === 'not-found') {\n return '+not-found';\n }\n\n return `[...${name}]`;\n } else if (params[name]) {\n if (Array.isArray(params[name])) {\n return params[name].join('/');\n }\n return params[name];\n } else if (route.name.startsWith('[') && route.name.endsWith(']')) {\n return '';\n } else if (p === '*not-found') {\n return '';\n } else {\n return route.name;\n }\n }\n\n // If the path has a pattern for a param, put the param in the path\n if (p.startsWith(':')) {\n if (preserveDynamicRoutes) {\n return `[${name}]`;\n }\n // Optional params without value assigned in route.params should be ignored\n const value = params[name];\n if (value === undefined && p.endsWith('?')) {\n return;\n }\n\n return (shouldEncodeURISegment ? encodeURISegment(value) : value) ?? 'undefined';\n }\n\n if (!preserveGroups && matchGroupName(p) != null) {\n // When the last part is a group it could be a shared URL\n // if the route has an initialRouteName defined, then we should\n // use that as the component path as we can assume it will be shown.\n if (segments.length - 1 === i) {\n if (initialRouteName) {\n // Return an empty string if the init route is ambiguous.\n if (segmentMatchesConvention(initialRouteName)) {\n return '';\n }\n return shouldEncodeURISegment\n ? encodeURISegment(initialRouteName, { preserveBrackets: true })\n : initialRouteName;\n }\n }\n return '';\n }\n // Preserve dynamic syntax for rehydration\n return shouldEncodeURISegment ? encodeURISegment(p, { preserveBrackets: true }) : p;\n })\n .map((v) => v ?? '')\n .join('/');\n}\n\nexport const getParamName = (pattern: string) => pattern.replace(/^[:*]/, '').replace(/\\?$/, '');\n\nexport function isDynamicPart(p: string) {\n return p.startsWith(':') || p.startsWith('*');\n}\n\nfunction segmentMatchesConvention(segment: string): boolean {\n return (\n segment === 'index' ||\n matchDynamicName(segment) != null ||\n matchGroupName(segment) != null ||\n matchDeepDynamicRouteName(segment) != null\n );\n}\n\nfunction encodeURISegment(str: string, { preserveBrackets = false } = {}) {\n // Valid characters according to\n // https://datatracker.ietf.org/doc/html/rfc3986#section-3.3 (see pchar definition)\n str = String(str).replace(/[^A-Za-z0-9\\-._~!$&'()*+,;=:@]/g, (char) => encodeURIComponent(char));\n\n if (preserveBrackets) {\n // Preserve brackets\n str = str.replace(/%5B/g, '[').replace(/%5D/g, ']');\n }\n return str;\n}\n"]}
1
+ {"version":3,"file":"getPathFromState-forks.js","sourceRoot":"","sources":["../../src/fork/getPathFromState-forks.ts"],"names":[],"mappings":"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","sourcesContent":["import { validatePathConfig as RNValidatePathConfig, type Route } from '@react-navigation/native';\nimport * as queryString from 'query-string';\n\nimport type { Options, State, StringifyConfig } from './getPathFromState';\nimport { matchDeepDynamicRouteName, matchDynamicName, matchGroupName } from '../matchers';\n\nexport type ExpoOptions = {\n preserveDynamicRoutes?: boolean;\n preserveGroups?: boolean;\n shouldEncodeURISegment?: boolean;\n};\n\nexport type ExpoConfigItem = {\n // Used as fallback for groups\n initialRouteName?: string;\n};\n\nexport function validatePathConfig<ParamList extends object>({\n preserveDynamicRoutes,\n preserveGroups,\n shouldEncodeURISegment,\n ...options\n}: Options<ParamList>) {\n RNValidatePathConfig(options);\n}\n\nexport function fixCurrentParams(\n allParams: Record<string, any>,\n route: Route<string> & {\n state?: State;\n },\n stringify?: StringifyConfig\n) {\n // Better handle array params\n const currentParams = Object.fromEntries(\n Object.entries(route.params!).flatMap(([key, value]) => {\n if (key === 'screen' || key === 'params') {\n return [];\n }\n\n return [\n [\n key,\n stringify?.[key]\n ? stringify[key](value)\n : Array.isArray(value)\n ? value.map(String)\n : String(value),\n ],\n ];\n })\n );\n\n // We always assign params, as non pattern routes may still have query params\n Object.assign(allParams, currentParams);\n\n return currentParams;\n}\n\nexport function appendQueryAndHash(\n path: string,\n { '#': hash, ...focusedParams }: Record<string, any>\n) {\n const query = queryString.stringify(focusedParams, { sort: false });\n\n if (query) {\n path += `?${query}`;\n }\n\n if (hash) {\n path += `#${hash}`;\n }\n\n return path;\n}\n\nexport function appendBaseUrl(\n path: string,\n baseUrl: string | undefined = process.env.EXPO_BASE_URL\n) {\n if (process.env.NODE_ENV !== 'development') {\n if (baseUrl) {\n return `/${baseUrl.replace(/^\\/+/, '').replace(/\\/$/, '')}${path}`;\n }\n }\n\n return path;\n}\n\nexport function getPathWithConventionsCollapsed({\n pattern,\n route,\n params,\n preserveGroups,\n preserveDynamicRoutes,\n shouldEncodeURISegment = true,\n initialRouteName,\n}: ExpoOptions & {\n pattern: string;\n route: Route<any>;\n params: Record<string, any>;\n initialRouteName?: string;\n}) {\n const segments = pattern.split('/');\n\n return segments\n .map((p, i) => {\n const name = getParamName(p);\n\n // Showing the route name seems ok, though whatever we show here will be incorrect\n // Since the page doesn't actually exist\n if (p.startsWith('*')) {\n if (preserveDynamicRoutes) {\n if (name === 'not-found') {\n return '+not-found';\n }\n\n return `[...${name}]`;\n } else if (params[name]) {\n if (Array.isArray(params[name])) {\n return params[name].join('/');\n }\n return params[name];\n } else if (route.name.startsWith('[') && route.name.endsWith(']')) {\n return '';\n } else if (p === '*not-found') {\n return '';\n } else {\n return route.name;\n }\n }\n\n // If the path has a pattern for a param, put the param in the path\n if (p.startsWith(':')) {\n if (preserveDynamicRoutes) {\n return `[${name}]`;\n }\n // Optional params without value assigned in route.params should be ignored\n const value = params[name];\n if (value === undefined && p.endsWith('?')) {\n return;\n }\n\n return (shouldEncodeURISegment ? encodeURISegment(value) : value) ?? 'undefined';\n }\n\n if (!preserveGroups && matchGroupName(p) != null) {\n // When the last part is a group it could be a shared URL\n // if the route has an initialRouteName defined, then we should\n // use that as the component path as we can assume it will be shown.\n if (segments.length - 1 === i) {\n if (initialRouteName) {\n // Return an empty string if the init route is ambiguous.\n if (segmentMatchesConvention(initialRouteName)) {\n return '';\n }\n return shouldEncodeURISegment\n ? encodeURISegment(initialRouteName, { preserveBrackets: true })\n : initialRouteName;\n }\n }\n return '';\n }\n // Preserve dynamic syntax for rehydration\n return shouldEncodeURISegment ? encodeURISegment(p, { preserveBrackets: true }) : p;\n })\n .map((v) => v ?? '')\n .join('/');\n}\n\nexport const getParamName = (pattern: string) => pattern.replace(/^[:*]/, '').replace(/\\?$/, '');\n\nexport function isDynamicPart(p: string) {\n return p.startsWith(':') || p.startsWith('*');\n}\n\nfunction segmentMatchesConvention(segment: string): boolean {\n return (\n segment === 'index' ||\n matchDynamicName(segment) != null ||\n matchGroupName(segment) != null ||\n matchDeepDynamicRouteName(segment) != null\n );\n}\n\nfunction encodeURISegment(str: string, { preserveBrackets = false } = {}) {\n // Valid characters according to\n // https://datatracker.ietf.org/doc/html/rfc3986#section-3.3 (see pchar definition)\n str = String(str).replace(/[^A-Za-z0-9\\-._~!$&'()*+,;=:@]/g, (char) => encodeURIComponent(char));\n\n if (preserveBrackets) {\n // Preserve brackets\n str = str.replace(/%5B/g, '[').replace(/%5D/g, ']');\n }\n return str;\n}\n"]}
@@ -15,15 +15,27 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.appendBaseUrl = exports.getPathDataFromState = exports.getPathFromState = void 0;
36
+ exports.getPathFromState = getPathFromState;
37
+ exports.getPathDataFromState = getPathDataFromState;
38
+ exports.appendBaseUrl = appendBaseUrl;
27
39
  const queryString = __importStar(require("query-string"));
28
40
  const expo = __importStar(require("./getPathFromState-forks"));
29
41
  // END FORK
@@ -72,7 +84,6 @@ let cachedNormalizedConfigs = [
72
84
  function getPathFromState(state, options) {
73
85
  return getPathDataFromState(state, options).path;
74
86
  }
75
- exports.getPathFromState = getPathFromState;
76
87
  function getPathDataFromState(state, options) {
77
88
  if (state == null) {
78
89
  throw Error("Got 'undefined' for the navigation state. You must pass a valid state object.");
@@ -283,7 +294,6 @@ function getPathDataFromState(state, options) {
283
294
  return { path, params: allParams };
284
295
  // END FORK
285
296
  }
286
- exports.getPathDataFromState = getPathDataFromState;
287
297
  // const getParamName = (pattern: string) => pattern.replace(/^:/, '').replace(/\?$/, '');
288
298
  const joinPaths = (...paths) => []
289
299
  .concat(...paths.map((p) => p.split('/')))
@@ -321,5 +331,4 @@ function appendBaseUrl(path, baseUrl = process.env.EXPO_BASE_URL) {
321
331
  }
322
332
  return path;
323
333
  }
324
- exports.appendBaseUrl = appendBaseUrl;
325
334
  //# sourceMappingURL=getPathFromState.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getPathFromState.js","sourceRoot":"","sources":["../../src/fork/getPathFromState.ts"],"names":[],"mappings":"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","sourcesContent":["import { PathConfig, PathConfigMap } from '@react-navigation/native';\nimport type { NavigationState, PartialState, Route } from '@react-navigation/routers';\nimport * as queryString from 'query-string';\n\nimport * as expo from './getPathFromState-forks';\nimport type { ExpoConfigItem, ExpoOptions } from './getPathFromState-forks';\n\n// START FORK\nexport type Options<ParamList extends object> = ExpoOptions & {\n path?: string;\n initialRouteName?: string;\n screens: PathConfigMap<ParamList>;\n};\n// END FORK\n\nexport type State = NavigationState | Omit<PartialState<NavigationState>, 'stale'>;\n\nexport type StringifyConfig = Record<string, (value: any) => string>;\n\n// START FORK\ntype ConfigItem = ExpoConfigItem & {\n pattern?: string;\n stringify?: StringifyConfig;\n screens?: Record<string, ConfigItem>;\n};\n// END FORK\n\nconst getActiveRoute = (state: State): { name: string; params?: object } => {\n const route =\n typeof state.index === 'number'\n ? state.routes[state.index]\n : state.routes[state.routes.length - 1];\n\n if (route.state) {\n return getActiveRoute(route.state);\n }\n\n return route;\n};\n\nlet cachedNormalizedConfigs: [PathConfigMap<object> | undefined, Record<string, ConfigItem>] = [\n undefined,\n {},\n];\n\n/**\n * Utility to serialize a navigation state object to a path string.\n *\n * @example\n * ```js\n * getPathFromState(\n * {\n * routes: [\n * {\n * name: 'Chat',\n * params: { author: 'Jane', id: 42 },\n * },\n * ],\n * },\n * {\n * screens: {\n * Chat: {\n * path: 'chat/:author/:id',\n * stringify: { author: author => author.toLowerCase() }\n * }\n * }\n * }\n * )\n * ```\n *\n * @param state Navigation state to serialize.\n * @param options Extra options to fine-tune how to serialize the path.\n * @returns Path representing the state, e.g. /foo/bar?count=42.\n */\nexport function getPathFromState<ParamList extends object>(\n state: State,\n options?: Options<ParamList>\n): string {\n return getPathDataFromState(state, options).path;\n}\n\nexport function getPathDataFromState<ParamList extends object>(\n state: State,\n options?: Options<ParamList>\n) {\n if (state == null) {\n throw Error(\"Got 'undefined' for the navigation state. You must pass a valid state object.\");\n }\n\n if (options) {\n // START FORK\n expo.validatePathConfig(options);\n // validatePathConfig(options);\n // END FORK\n }\n\n // Create a normalized configs object which will be easier to use\n if (cachedNormalizedConfigs[0] !== options?.screens) {\n cachedNormalizedConfigs = [\n options?.screens,\n options?.screens ? createNormalizedConfigs(options.screens) : {},\n ];\n }\n const configs: Record<string, ConfigItem> = cachedNormalizedConfigs[1];\n\n let path = '/';\n let current: State | undefined = state;\n\n const allParams: Record<string, any> = {};\n\n while (current) {\n let index = typeof current.index === 'number' ? current.index : 0;\n let route = current.routes[index] as Route<string> & {\n state?: State;\n };\n\n let pattern: string | undefined;\n\n let focusedParams: Record<string, any> | undefined;\n const focusedRoute = getActiveRoute(state);\n let currentOptions = configs;\n\n // Keep all the route names that appeared during going deeper in config in case the pattern is resolved to undefined\n const nestedRouteNames: string[] = [];\n\n let hasNext = true;\n\n while (route.name in currentOptions && hasNext) {\n pattern = currentOptions[route.name].pattern;\n\n nestedRouteNames.push(route.name);\n\n if (route.params) {\n const stringify = currentOptions[route.name]?.stringify;\n\n // START FORK\n // This mutates allParams\n const currentParams = expo.fixCurrentParams(allParams, route, stringify);\n\n // const currentParams = Object.fromEntries(\n // Object.entries(route.params).map(([key, value]) => [\n // key,\n // stringify?.[key] ? stringify[key](value) : String(value),\n // ])\n // );\n\n // if (pattern) {\n // Object.assign(allParams, currentParams);\n // }\n // END FORK\n\n if (focusedRoute === route) {\n // If this is the focused route, keep the params for later use\n // We save it here since it's been stringified already\n focusedParams = { ...currentParams };\n\n pattern\n ?.split('/')\n .filter((p) => expo.isDynamicPart(p))\n // eslint-disable-next-line no-loop-func\n .forEach((p) => {\n const name = expo.getParamName(p);\n\n // Remove the params present in the pattern since we'll only use the rest for query string\n if (focusedParams) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete focusedParams[name];\n }\n });\n }\n }\n\n // If there is no `screens` property or no nested state, we return pattern\n if (!currentOptions[route.name].screens || route.state === undefined) {\n // START FORK\n // Expo Router allows you to navigate to a (group) and not specify a target screen\n // This is different from React Navigation, which requires a target screen\n // We need to handle this case here, by selecting either the index screen or the first screen of the group\n\n // IMPORTANT: This does not affect groups that use _layout files with initialRouteNames\n // Layout files create a new route config. This only affects groups without layouts that have their screens\n // hoisted.\n\n // Example:\n // - /home/_layout\n // - /home/(a|b|c)/index --> Hoisted to /home/_layout navigator\n // - /home/(a|b|c)/other --> Hoisted to /home/_layout navigator\n // - /home/(profile)/me --> Hoisted to /home/_layout navigator\n //\n // route.push('/home/(a)') --> This should navigate to /home/(a)/index\n // route.push('/home/(profile)') --> This should navigate to /home/(profile)/me\n const screens = currentOptions[route.name].screens;\n\n // Determine what screen the user wants to navigate to. If no screen is specified, assume there is an index screen\n // In the examples above, this ensures that /home/(a) navigates to /home/(a)/index\n const targetScreen =\n // This is typed as unknown, so we need to add these extra assertions\n route.params && 'screen' in route.params && typeof route.params.screen === 'string'\n ? route.params.screen\n : 'index';\n\n // If the target screen is not in the screens object, default to the first screen\n // In the examples above, this ensures that /home/(profile) navigates to /home/(profile)/me\n // As there is no index screen in the group\n const screen = screens\n ? screens[targetScreen]\n ? targetScreen\n : Object.keys(screens)[0]\n : undefined;\n\n if (screen && screens && currentOptions[route.name].screens?.[screen]) {\n route = { ...screens[screen], name: screen, key: screen };\n currentOptions = screens;\n } else {\n hasNext = false;\n }\n // hasNext = false;\n // END FORK\n } else {\n index =\n typeof route.state.index === 'number' ? route.state.index : route.state.routes.length - 1;\n\n const nextRoute = route.state.routes[index];\n const nestedConfig = currentOptions[route.name].screens;\n\n // if there is config for next route name, we go deeper\n if (nestedConfig && nextRoute.name in nestedConfig) {\n route = nextRoute as Route<string> & { state?: State };\n currentOptions = nestedConfig;\n } else {\n // If not, there is no sense in going deeper in config\n hasNext = false;\n }\n }\n }\n\n if (pattern === undefined) {\n pattern = nestedRouteNames.join('/');\n }\n\n if (currentOptions[route.name] !== undefined) {\n // START FORK\n path += expo.getPathWithConventionsCollapsed({\n ...options,\n pattern,\n route,\n params: allParams,\n initialRouteName: configs[route.name]?.initialRouteName,\n });\n // path += pattern\n // .split('/')\n // .map((p) => {\n // const name = getParamName(p);\n\n // // We don't know what to show for wildcard patterns\n // // Showing the route name seems ok, though whatever we show here will be incorrect\n // // Since the page doesn't actually exist\n // if (p === '*') {\n // return route.name;\n // }\n\n // // If the path has a pattern for a param, put the param in the path\n // if (p.startsWith(':')) {\n // const value = allParams[name];\n\n // if (value === undefined && p.endsWith('?')) {\n // // Optional params without value assigned in route.params should be ignored\n // return '';\n // }\n\n // // Valid characters according to\n // // https://datatracker.ietf.org/doc/html/rfc3986#section-3.3 (see pchar definition)\n // return String(value).replace(/[^A-Za-z0-9\\-._~!$&'()*+,;=:@]/g, (char) =>\n // encodeURIComponent(char)\n // );\n // }\n\n // return encodeURIComponent(p);\n // })\n // .join('/');\n // } else {\n } else if (!route.name.startsWith('+')) {\n path += encodeURIComponent(route.name);\n }\n // END FORK\n\n if (!focusedParams) {\n focusedParams = focusedRoute.params;\n }\n\n if (route.state) {\n path += '/';\n } else if (focusedParams) {\n for (const param in focusedParams) {\n if (focusedParams[param] === 'undefined') {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete focusedParams[param];\n }\n }\n\n // START FORK\n delete focusedParams['#'];\n // END FORK\n\n const query = queryString.stringify(focusedParams, { sort: false });\n if (query) {\n path += `?${query}`;\n }\n }\n\n current = route.state;\n }\n\n // Remove multiple as well as trailing slashes\n path = path.replace(/\\/+/g, '/');\n path = path.length > 1 ? path.replace(/\\/$/, '') : path;\n\n // Include the root path if specified\n if (options?.path) {\n path = joinPaths(options.path, path);\n }\n\n // START FORK\n path = expo.appendBaseUrl(path);\n if (allParams['#']) {\n path += `#${allParams['#']}`;\n }\n // END FORK\n\n // START FORK\n return { path, params: allParams };\n // END FORK\n}\n\n// const getParamName = (pattern: string) => pattern.replace(/^:/, '').replace(/\\?$/, '');\n\nconst joinPaths = (...paths: string[]): string =>\n ([] as string[])\n .concat(...paths.map((p) => p.split('/')))\n .filter(Boolean)\n .join('/');\n\nconst createConfigItem = (\n config: PathConfig<object> | string,\n parentPattern?: string\n): ConfigItem => {\n if (typeof config === 'string') {\n // If a string is specified as the value of the key(e.g. Foo: '/path'), use it as the pattern\n const pattern = parentPattern ? joinPaths(parentPattern, config) : config;\n\n return { pattern };\n }\n\n if (config.exact && config.path === undefined) {\n throw new Error(\n \"A 'path' needs to be specified when specifying 'exact: true'. If you don't want this screen in the URL, specify it as empty string, e.g. `path: ''`.\"\n );\n }\n\n // If an object is specified as the value (e.g. Foo: { ... }),\n // It can have `path` property and `screens` prop which has nested configs\n const pattern =\n config.exact !== true ? joinPaths(parentPattern || '', config.path || '') : config.path || '';\n\n const screens = config.screens ? createNormalizedConfigs(config.screens, pattern) : undefined;\n\n return {\n // Normalize pattern to remove any leading, trailing slashes, duplicate slashes etc.\n pattern: pattern?.split('/').filter(Boolean).join('/'),\n stringify: config.stringify,\n screens,\n };\n};\n\nconst createNormalizedConfigs = (\n options: PathConfigMap<object>,\n pattern?: string\n): Record<string, ConfigItem> =>\n Object.fromEntries(\n Object.entries(options).map(([name, c]) => {\n const result = createConfigItem(c, pattern);\n\n return [name, result];\n })\n );\n\nexport function appendBaseUrl(\n path: string,\n baseUrl: string | undefined = process.env.EXPO_BASE_URL\n) {\n if (process.env.NODE_ENV !== 'development') {\n if (baseUrl) {\n return `/${baseUrl.replace(/^\\/+/, '').replace(/\\/$/, '')}${path}`;\n }\n }\n return path;\n}\n"]}
1
+ {"version":3,"file":"getPathFromState.js","sourceRoot":"","sources":["../../src/fork/getPathFromState.ts"],"names":[],"mappings":"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","sourcesContent":["import { PathConfig, PathConfigMap } from '@react-navigation/native';\nimport type { NavigationState, PartialState, Route } from '@react-navigation/routers';\nimport * as queryString from 'query-string';\n\nimport * as expo from './getPathFromState-forks';\nimport type { ExpoConfigItem, ExpoOptions } from './getPathFromState-forks';\n\n// START FORK\nexport type Options<ParamList extends object> = ExpoOptions & {\n path?: string;\n initialRouteName?: string;\n screens: PathConfigMap<ParamList>;\n};\n// END FORK\n\nexport type State = NavigationState | Omit<PartialState<NavigationState>, 'stale'>;\n\nexport type StringifyConfig = Record<string, (value: any) => string>;\n\n// START FORK\ntype ConfigItem = ExpoConfigItem & {\n pattern?: string;\n stringify?: StringifyConfig;\n screens?: Record<string, ConfigItem>;\n};\n// END FORK\n\nconst getActiveRoute = (state: State): { name: string; params?: object } => {\n const route =\n typeof state.index === 'number'\n ? state.routes[state.index]\n : state.routes[state.routes.length - 1];\n\n if (route.state) {\n return getActiveRoute(route.state);\n }\n\n return route;\n};\n\nlet cachedNormalizedConfigs: [PathConfigMap<object> | undefined, Record<string, ConfigItem>] = [\n undefined,\n {},\n];\n\n/**\n * Utility to serialize a navigation state object to a path string.\n *\n * @example\n * ```js\n * getPathFromState(\n * {\n * routes: [\n * {\n * name: 'Chat',\n * params: { author: 'Jane', id: 42 },\n * },\n * ],\n * },\n * {\n * screens: {\n * Chat: {\n * path: 'chat/:author/:id',\n * stringify: { author: author => author.toLowerCase() }\n * }\n * }\n * }\n * )\n * ```\n *\n * @param state Navigation state to serialize.\n * @param options Extra options to fine-tune how to serialize the path.\n * @returns Path representing the state, e.g. /foo/bar?count=42.\n */\nexport function getPathFromState<ParamList extends object>(\n state: State,\n options?: Options<ParamList>\n): string {\n return getPathDataFromState(state, options).path;\n}\n\nexport function getPathDataFromState<ParamList extends object>(\n state: State,\n options?: Options<ParamList>\n) {\n if (state == null) {\n throw Error(\"Got 'undefined' for the navigation state. You must pass a valid state object.\");\n }\n\n if (options) {\n // START FORK\n expo.validatePathConfig(options);\n // validatePathConfig(options);\n // END FORK\n }\n\n // Create a normalized configs object which will be easier to use\n if (cachedNormalizedConfigs[0] !== options?.screens) {\n cachedNormalizedConfigs = [\n options?.screens,\n options?.screens ? createNormalizedConfigs(options.screens) : {},\n ];\n }\n const configs: Record<string, ConfigItem> = cachedNormalizedConfigs[1];\n\n let path = '/';\n let current: State | undefined = state;\n\n const allParams: Record<string, any> = {};\n\n while (current) {\n let index = typeof current.index === 'number' ? current.index : 0;\n let route = current.routes[index] as Route<string> & {\n state?: State;\n };\n\n let pattern: string | undefined;\n\n let focusedParams: Record<string, any> | undefined;\n const focusedRoute = getActiveRoute(state);\n let currentOptions = configs;\n\n // Keep all the route names that appeared during going deeper in config in case the pattern is resolved to undefined\n const nestedRouteNames: string[] = [];\n\n let hasNext = true;\n\n while (route.name in currentOptions && hasNext) {\n pattern = currentOptions[route.name].pattern;\n\n nestedRouteNames.push(route.name);\n\n if (route.params) {\n const stringify = currentOptions[route.name]?.stringify;\n\n // START FORK\n // This mutates allParams\n const currentParams = expo.fixCurrentParams(allParams, route, stringify);\n\n // const currentParams = Object.fromEntries(\n // Object.entries(route.params).map(([key, value]) => [\n // key,\n // stringify?.[key] ? stringify[key](value) : String(value),\n // ])\n // );\n\n // if (pattern) {\n // Object.assign(allParams, currentParams);\n // }\n // END FORK\n\n if (focusedRoute === route) {\n // If this is the focused route, keep the params for later use\n // We save it here since it's been stringified already\n focusedParams = { ...currentParams };\n\n pattern\n ?.split('/')\n .filter((p) => expo.isDynamicPart(p))\n // eslint-disable-next-line no-loop-func\n .forEach((p) => {\n const name = expo.getParamName(p);\n\n // Remove the params present in the pattern since we'll only use the rest for query string\n if (focusedParams) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete focusedParams[name];\n }\n });\n }\n }\n\n // If there is no `screens` property or no nested state, we return pattern\n if (!currentOptions[route.name].screens || route.state === undefined) {\n // START FORK\n // Expo Router allows you to navigate to a (group) and not specify a target screen\n // This is different from React Navigation, which requires a target screen\n // We need to handle this case here, by selecting either the index screen or the first screen of the group\n\n // IMPORTANT: This does not affect groups that use _layout files with initialRouteNames\n // Layout files create a new route config. This only affects groups without layouts that have their screens\n // hoisted.\n\n // Example:\n // - /home/_layout\n // - /home/(a|b|c)/index --> Hoisted to /home/_layout navigator\n // - /home/(a|b|c)/other --> Hoisted to /home/_layout navigator\n // - /home/(profile)/me --> Hoisted to /home/_layout navigator\n //\n // route.push('/home/(a)') --> This should navigate to /home/(a)/index\n // route.push('/home/(profile)') --> This should navigate to /home/(profile)/me\n const screens = currentOptions[route.name].screens;\n\n // Determine what screen the user wants to navigate to. If no screen is specified, assume there is an index screen\n // In the examples above, this ensures that /home/(a) navigates to /home/(a)/index\n const targetScreen =\n // This is typed as unknown, so we need to add these extra assertions\n route.params && 'screen' in route.params && typeof route.params.screen === 'string'\n ? route.params.screen\n : 'index';\n\n // If the target screen is not in the screens object, default to the first screen\n // In the examples above, this ensures that /home/(profile) navigates to /home/(profile)/me\n // As there is no index screen in the group\n const screen = screens\n ? screens[targetScreen]\n ? targetScreen\n : Object.keys(screens)[0]\n : undefined;\n\n if (screen && screens && currentOptions[route.name].screens?.[screen]) {\n route = { ...screens[screen], name: screen, key: screen };\n currentOptions = screens;\n } else {\n hasNext = false;\n }\n // hasNext = false;\n // END FORK\n } else {\n index =\n typeof route.state.index === 'number' ? route.state.index : route.state.routes.length - 1;\n\n const nextRoute = route.state.routes[index];\n const nestedConfig = currentOptions[route.name].screens;\n\n // if there is config for next route name, we go deeper\n if (nestedConfig && nextRoute.name in nestedConfig) {\n route = nextRoute as Route<string> & { state?: State };\n currentOptions = nestedConfig;\n } else {\n // If not, there is no sense in going deeper in config\n hasNext = false;\n }\n }\n }\n\n if (pattern === undefined) {\n pattern = nestedRouteNames.join('/');\n }\n\n if (currentOptions[route.name] !== undefined) {\n // START FORK\n path += expo.getPathWithConventionsCollapsed({\n ...options,\n pattern,\n route,\n params: allParams,\n initialRouteName: configs[route.name]?.initialRouteName,\n });\n // path += pattern\n // .split('/')\n // .map((p) => {\n // const name = getParamName(p);\n\n // // We don't know what to show for wildcard patterns\n // // Showing the route name seems ok, though whatever we show here will be incorrect\n // // Since the page doesn't actually exist\n // if (p === '*') {\n // return route.name;\n // }\n\n // // If the path has a pattern for a param, put the param in the path\n // if (p.startsWith(':')) {\n // const value = allParams[name];\n\n // if (value === undefined && p.endsWith('?')) {\n // // Optional params without value assigned in route.params should be ignored\n // return '';\n // }\n\n // // Valid characters according to\n // // https://datatracker.ietf.org/doc/html/rfc3986#section-3.3 (see pchar definition)\n // return String(value).replace(/[^A-Za-z0-9\\-._~!$&'()*+,;=:@]/g, (char) =>\n // encodeURIComponent(char)\n // );\n // }\n\n // return encodeURIComponent(p);\n // })\n // .join('/');\n // } else {\n } else if (!route.name.startsWith('+')) {\n path += encodeURIComponent(route.name);\n }\n // END FORK\n\n if (!focusedParams) {\n focusedParams = focusedRoute.params;\n }\n\n if (route.state) {\n path += '/';\n } else if (focusedParams) {\n for (const param in focusedParams) {\n if (focusedParams[param] === 'undefined') {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete focusedParams[param];\n }\n }\n\n // START FORK\n delete focusedParams['#'];\n // END FORK\n\n const query = queryString.stringify(focusedParams, { sort: false });\n if (query) {\n path += `?${query}`;\n }\n }\n\n current = route.state;\n }\n\n // Remove multiple as well as trailing slashes\n path = path.replace(/\\/+/g, '/');\n path = path.length > 1 ? path.replace(/\\/$/, '') : path;\n\n // Include the root path if specified\n if (options?.path) {\n path = joinPaths(options.path, path);\n }\n\n // START FORK\n path = expo.appendBaseUrl(path);\n if (allParams['#']) {\n path += `#${allParams['#']}`;\n }\n // END FORK\n\n // START FORK\n return { path, params: allParams };\n // END FORK\n}\n\n// const getParamName = (pattern: string) => pattern.replace(/^:/, '').replace(/\\?$/, '');\n\nconst joinPaths = (...paths: string[]): string =>\n ([] as string[])\n .concat(...paths.map((p) => p.split('/')))\n .filter(Boolean)\n .join('/');\n\nconst createConfigItem = (\n config: PathConfig<object> | string,\n parentPattern?: string\n): ConfigItem => {\n if (typeof config === 'string') {\n // If a string is specified as the value of the key(e.g. Foo: '/path'), use it as the pattern\n const pattern = parentPattern ? joinPaths(parentPattern, config) : config;\n\n return { pattern };\n }\n\n if (config.exact && config.path === undefined) {\n throw new Error(\n \"A 'path' needs to be specified when specifying 'exact: true'. If you don't want this screen in the URL, specify it as empty string, e.g. `path: ''`.\"\n );\n }\n\n // If an object is specified as the value (e.g. Foo: { ... }),\n // It can have `path` property and `screens` prop which has nested configs\n const pattern =\n config.exact !== true ? joinPaths(parentPattern || '', config.path || '') : config.path || '';\n\n const screens = config.screens ? createNormalizedConfigs(config.screens, pattern) : undefined;\n\n return {\n // Normalize pattern to remove any leading, trailing slashes, duplicate slashes etc.\n pattern: pattern?.split('/').filter(Boolean).join('/'),\n stringify: config.stringify,\n screens,\n };\n};\n\nconst createNormalizedConfigs = (\n options: PathConfigMap<object>,\n pattern?: string\n): Record<string, ConfigItem> =>\n Object.fromEntries(\n Object.entries(options).map(([name, c]) => {\n const result = createConfigItem(c, pattern);\n\n return [name, result];\n })\n );\n\nexport function appendBaseUrl(\n path: string,\n baseUrl: string | undefined = process.env.EXPO_BASE_URL\n) {\n if (process.env.NODE_ENV !== 'development') {\n if (baseUrl) {\n return `/${baseUrl.replace(/^\\/+/, '').replace(/\\/$/, '')}${path}`;\n }\n }\n return path;\n}\n"]}
@@ -44,20 +44,20 @@ export declare function spreadParamsAcrossAllStates(state: InitialState, params?
44
44
  export declare function stripBaseUrl(path: string, baseUrl?: string | undefined): string;
45
45
  export declare function matchForEmptyPath(configs: RouteConfig[]): {
46
46
  path: string;
47
- type: "layout" | "dynamic" | "static";
47
+ type: "static" | "dynamic" | "layout";
48
48
  userReadableName: string;
49
49
  isIndex: boolean;
50
- isInitial?: boolean | undefined;
50
+ isInitial?: boolean;
51
51
  hasChildren: boolean;
52
52
  expandedRouteNames: string[];
53
53
  parts: string[];
54
54
  screen: string;
55
- regex?: RegExp | undefined;
55
+ regex?: RegExp;
56
56
  pattern: string;
57
57
  routeNames: string[];
58
58
  parse?: {
59
59
  [x: string]: (value: string) => any;
60
- } | undefined;
60
+ };
61
61
  } | undefined;
62
62
  export declare function appendIsInitial(initialRoutes: InitialRouteConfig[]): (config: RouteConfig) => RouteConfig;
63
63
  export declare function getRouteConfigSorter(previousSegments?: string[]): (a: RouteConfig, b: RouteConfig) => number;
@@ -1 +1 @@
1
- {"version":3,"file":"getStateFromPath-forks.d.ts","sourceRoot":"","sources":["../../src/fork/getStateFromPath-forks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,KAAK,WAAW,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGhG,MAAM,MAAM,WAAW,GAAG;IACxB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;IACtC,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,6BAQlF;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,UAMnD;AAED,wBAAgB,oCAAoC,CAClD,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAAM,GAAG,SAAqC;;;;;;;;;;;;EA2BxD;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAAE,EACpB,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAC/B,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,CAkCpC;AAED,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAI3F;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,sBAI/C;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,WAEtC;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,UAEpC;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,iCAOrD;AAwBD,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,WAAW,QAsBnF;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAK5F;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAAM,GAAG,SAAqC,UAQxD;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE;;;;;;;;;;;;;;;;cAgCvD;AAED,wBAAgB,eAAe,CAAC,aAAa,EAAE,kBAAkB,EAAE,YAKxC,WAAW,iBAMrC;AAQD,wBAAgB,oBAAoB,CAAC,gBAAgB,GAAE,MAAM,EAAO,OACnC,WAAW,KAAK,WAAW,YAoJ3D;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,WAAW,EAClB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,CAAC,EACpD,IAAI,CAAC,EAAE,MAAM,iDA4Bd;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,UAUrC;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,UAalD"}
1
+ {"version":3,"file":"getStateFromPath-forks.d.ts","sourceRoot":"","sources":["../../src/fork/getStateFromPath-forks.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,24 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.routePatternToRegex = exports.cleanPath = exports.parseQueryParams = exports.getRouteConfigSorter = exports.appendIsInitial = exports.matchForEmptyPath = exports.stripBaseUrl = exports.spreadParamsAcrossAllStates = exports.handleUrlParams = exports.getParamValue = exports.replacePart = exports.isDynamicPart = exports.configRegExp = exports.assertScreens = exports.createConfig = exports.getUrlWithReactNavigationConcessions = exports.safelyDecodeURIComponent = exports.populateParams = void 0;
6
+ exports.populateParams = populateParams;
7
+ exports.safelyDecodeURIComponent = safelyDecodeURIComponent;
8
+ exports.getUrlWithReactNavigationConcessions = getUrlWithReactNavigationConcessions;
9
+ exports.createConfig = createConfig;
10
+ exports.assertScreens = assertScreens;
11
+ exports.configRegExp = configRegExp;
12
+ exports.isDynamicPart = isDynamicPart;
13
+ exports.replacePart = replacePart;
14
+ exports.getParamValue = getParamValue;
15
+ exports.handleUrlParams = handleUrlParams;
16
+ exports.spreadParamsAcrossAllStates = spreadParamsAcrossAllStates;
17
+ exports.stripBaseUrl = stripBaseUrl;
18
+ exports.matchForEmptyPath = matchForEmptyPath;
19
+ exports.appendIsInitial = appendIsInitial;
20
+ exports.getRouteConfigSorter = getRouteConfigSorter;
21
+ exports.parseQueryParams = parseQueryParams;
22
+ exports.cleanPath = cleanPath;
23
+ exports.routePatternToRegex = routePatternToRegex;
7
24
  const escape_string_regexp_1 = __importDefault(require("escape-string-regexp"));
8
25
  const matchers_1 = require("../matchers");
9
26
  /**
@@ -19,7 +36,6 @@ function populateParams(routes, params) {
19
36
  }
20
37
  return routes;
21
38
  }
22
- exports.populateParams = populateParams;
23
39
  function safelyDecodeURIComponent(str) {
24
40
  try {
25
41
  return decodeURIComponent(str);
@@ -28,7 +44,6 @@ function safelyDecodeURIComponent(str) {
28
44
  return str;
29
45
  }
30
46
  }
31
- exports.safelyDecodeURIComponent = safelyDecodeURIComponent;
32
47
  function getUrlWithReactNavigationConcessions(path, baseUrl = process.env.EXPO_BASE_URL) {
33
48
  let parsed;
34
49
  try {
@@ -55,7 +70,6 @@ function getUrlWithReactNavigationConcessions(path, baseUrl = process.env.EXPO_B
55
70
  pathWithoutGroups,
56
71
  };
57
72
  }
58
- exports.getUrlWithReactNavigationConcessions = getUrlWithReactNavigationConcessions;
59
73
  function createConfig(screen, pattern, routeNames, config = {}) {
60
74
  const parts = [];
61
75
  let isDynamic = false;
@@ -86,27 +100,22 @@ function createConfig(screen, pattern, routeNames, config = {}) {
86
100
  }),
87
101
  };
88
102
  }
89
- exports.createConfig = createConfig;
90
103
  function assertScreens(options) {
91
104
  if (!options?.screens) {
92
105
  throw Error("You must pass a 'screens' object to 'getStateFromPath' to generate a path.");
93
106
  }
94
107
  }
95
- exports.assertScreens = assertScreens;
96
108
  function configRegExp(config) {
97
109
  return config.pattern
98
110
  ? new RegExp(`^(${config.pattern.split('/').map(formatRegexPattern).join('')})$`)
99
111
  : undefined;
100
112
  }
101
- exports.configRegExp = configRegExp;
102
113
  function isDynamicPart(p) {
103
114
  return p.length > 1 && (p.startsWith(':') || p.startsWith('*'));
104
115
  }
105
- exports.isDynamicPart = isDynamicPart;
106
116
  function replacePart(p) {
107
117
  return p.replace(/^[:*]/, '').replace(/\?$/, '');
108
118
  }
109
- exports.replacePart = replacePart;
110
119
  function getParamValue(p, value) {
111
120
  if (p.startsWith('*')) {
112
121
  const values = value.split('/').filter((v) => v !== '');
@@ -116,7 +125,6 @@ function getParamValue(p, value) {
116
125
  return value;
117
126
  }
118
127
  }
119
- exports.getParamValue = getParamValue;
120
128
  function formatRegexPattern(it) {
121
129
  // Allow spaces in file path names.
122
130
  it = it.replace(' ', '%20');
@@ -155,14 +163,12 @@ function handleUrlParams(route, params) {
155
163
  }
156
164
  }
157
165
  }
158
- exports.handleUrlParams = handleUrlParams;
159
166
  function spreadParamsAcrossAllStates(state, params) {
160
167
  while (state) {
161
168
  const route = state.routes[0];
162
169
  route.params = Object.assign({}, route.params, params);
163
170
  }
164
171
  }
165
- exports.spreadParamsAcrossAllStates = spreadParamsAcrossAllStates;
166
172
  function stripBaseUrl(path, baseUrl = process.env.EXPO_BASE_URL) {
167
173
  if (process.env.NODE_ENV !== 'development') {
168
174
  if (baseUrl) {
@@ -171,7 +177,6 @@ function stripBaseUrl(path, baseUrl = process.env.EXPO_BASE_URL) {
171
177
  }
172
178
  return path;
173
179
  }
174
- exports.stripBaseUrl = stripBaseUrl;
175
180
  function matchForEmptyPath(configs) {
176
181
  // We need to add special handling of empty path so navigation to empty path also works
177
182
  // When handling empty path, we should only look at the root level config
@@ -197,7 +202,6 @@ function matchForEmptyPath(configs) {
197
202
  leafNodes.find((config) => config.path.startsWith('*') && config.regex.test('/'));
198
203
  return match;
199
204
  }
200
- exports.matchForEmptyPath = matchForEmptyPath;
201
205
  function appendIsInitial(initialRoutes) {
202
206
  const resolvedInitialPatterns = initialRoutes.map((route) => joinPaths(...route.parentScreens, route.initialRouteName));
203
207
  return function (config) {
@@ -207,7 +211,6 @@ function appendIsInitial(initialRoutes) {
207
211
  return config;
208
212
  };
209
213
  }
210
- exports.appendIsInitial = appendIsInitial;
211
214
  const joinPaths = (...paths) => []
212
215
  .concat(...paths.map((p) => p.split('/')))
213
216
  .filter(Boolean)
@@ -351,7 +354,6 @@ function getRouteConfigSorter(previousSegments = []) {
351
354
  return b.parts.length - a.parts.length;
352
355
  };
353
356
  }
354
- exports.getRouteConfigSorter = getRouteConfigSorter;
355
357
  function parseQueryParams(path, route, parseConfig, hash) {
356
358
  const searchParams = new URL(path, 'https://phony.example').searchParams;
357
359
  const params = Object.create(null);
@@ -375,7 +377,6 @@ function parseQueryParams(path, route, parseConfig, hash) {
375
377
  }
376
378
  return Object.keys(params).length ? params : undefined;
377
379
  }
378
- exports.parseQueryParams = parseQueryParams;
379
380
  function cleanPath(path) {
380
381
  path = path
381
382
  // let remaining = path
@@ -386,7 +387,6 @@ function cleanPath(path) {
386
387
  // Make sure there is a trailing slash
387
388
  return path.endsWith('/') ? path : `${path}/`;
388
389
  }
389
- exports.cleanPath = cleanPath;
390
390
  function routePatternToRegex(pattern) {
391
391
  return new RegExp(`^(${pattern
392
392
  .split('/')
@@ -398,5 +398,4 @@ function routePatternToRegex(pattern) {
398
398
  })
399
399
  .join('')})`);
400
400
  }
401
- exports.routePatternToRegex = routePatternToRegex;
402
401
  //# sourceMappingURL=getStateFromPath-forks.js.map