one 1.1.390 → 1.1.391

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (241) hide show
  1. package/dist/cjs/Root.cjs +6 -17
  2. package/dist/cjs/Root.js +9 -13
  3. package/dist/cjs/Root.js.map +1 -1
  4. package/dist/cjs/Root.native.js +4 -12
  5. package/dist/cjs/Root.native.js.map +1 -1
  6. package/dist/cjs/fork/NavigationContainer.cjs +49 -31
  7. package/dist/cjs/fork/NavigationContainer.js +40 -21
  8. package/dist/cjs/fork/NavigationContainer.js.map +2 -2
  9. package/dist/cjs/fork/NavigationContainer.native.js +51 -29
  10. package/dist/cjs/fork/NavigationContainer.native.js.map +2 -2
  11. package/dist/cjs/fork/createMemoryHistory.cjs +4 -3
  12. package/dist/cjs/fork/createMemoryHistory.js +3 -2
  13. package/dist/cjs/fork/createMemoryHistory.js.map +1 -1
  14. package/dist/cjs/fork/createMemoryHistory.native.js +8 -4
  15. package/dist/cjs/fork/createMemoryHistory.native.js.map +2 -2
  16. package/dist/cjs/fork/extractPathFromURL.cjs +48 -28
  17. package/dist/cjs/fork/extractPathFromURL.js +44 -21
  18. package/dist/cjs/fork/extractPathFromURL.js.map +2 -2
  19. package/dist/cjs/fork/extractPathFromURL.native.js +58 -26
  20. package/dist/cjs/fork/extractPathFromURL.native.js.map +2 -2
  21. package/dist/cjs/fork/findFocusedRoute.js.map +1 -1
  22. package/dist/cjs/fork/findFocusedRoute.native.js.map +1 -1
  23. package/dist/cjs/fork/getPathFromState-mods.cjs +65 -0
  24. package/dist/cjs/fork/getPathFromState-mods.js +56 -0
  25. package/dist/cjs/fork/getPathFromState-mods.js.map +6 -0
  26. package/dist/cjs/fork/getPathFromState-mods.native.js +70 -0
  27. package/dist/cjs/fork/getPathFromState-mods.native.js.map +6 -0
  28. package/dist/cjs/fork/getPathFromState.cjs +75 -224
  29. package/dist/cjs/fork/getPathFromState.js +68 -223
  30. package/dist/cjs/fork/getPathFromState.js.map +2 -2
  31. package/dist/cjs/fork/getPathFromState.native.js +79 -261
  32. package/dist/cjs/fork/getPathFromState.native.js.map +2 -2
  33. package/dist/cjs/fork/getStateFromPath-mods.cjs +187 -0
  34. package/dist/cjs/fork/getStateFromPath-mods.js +199 -0
  35. package/dist/cjs/fork/getStateFromPath-mods.js.map +6 -0
  36. package/dist/cjs/fork/getStateFromPath-mods.native.js +284 -0
  37. package/dist/cjs/fork/getStateFromPath-mods.native.js.map +6 -0
  38. package/dist/cjs/fork/getStateFromPath.cjs +181 -263
  39. package/dist/cjs/fork/getStateFromPath.js +148 -264
  40. package/dist/cjs/fork/getStateFromPath.js.map +2 -2
  41. package/dist/cjs/fork/getStateFromPath.native.js +164 -304
  42. package/dist/cjs/fork/getStateFromPath.native.js.map +2 -2
  43. package/dist/cjs/fork/useBackButton.js.map +1 -1
  44. package/dist/cjs/fork/useBackButton.native.js.map +1 -1
  45. package/dist/cjs/fork/useDocumentTitle.js +4 -1
  46. package/dist/cjs/fork/useDocumentTitle.js.map +1 -1
  47. package/dist/cjs/fork/useDocumentTitle.native.js +1 -1
  48. package/dist/cjs/fork/useDocumentTitle.native.js.map +2 -2
  49. package/dist/cjs/fork/useLinking.cjs +21 -24
  50. package/dist/cjs/fork/useLinking.js +21 -25
  51. package/dist/cjs/fork/useLinking.js.map +2 -2
  52. package/dist/cjs/fork/useLinking.native.js +68 -66
  53. package/dist/cjs/fork/useLinking.native.js.map +2 -2
  54. package/dist/cjs/fork/useThenable.js.map +1 -1
  55. package/dist/cjs/fork/useThenable.native.js.map +1 -1
  56. package/dist/cjs/fork/validatePathConfig.cjs +32 -11
  57. package/dist/cjs/fork/validatePathConfig.js +41 -11
  58. package/dist/cjs/fork/validatePathConfig.js.map +1 -1
  59. package/dist/cjs/fork/validatePathConfig.native.js +47 -18
  60. package/dist/cjs/fork/validatePathConfig.native.js.map +2 -2
  61. package/dist/cjs/layouts/withLayoutContext.cjs +1 -1
  62. package/dist/cjs/layouts/withLayoutContext.js +1 -1
  63. package/dist/cjs/layouts/withLayoutContext.js.map +1 -1
  64. package/dist/cjs/layouts/withLayoutContext.native.js +1 -1
  65. package/dist/cjs/layouts/withLayoutContext.native.js.map +1 -1
  66. package/dist/cjs/link/linking.cjs +4 -4
  67. package/dist/cjs/link/linking.js +3 -3
  68. package/dist/cjs/link/linking.js.map +2 -2
  69. package/dist/cjs/link/linking.native.js +3 -3
  70. package/dist/cjs/link/linking.native.js.map +1 -1
  71. package/dist/cjs/link/useLinkTo.cjs +2 -2
  72. package/dist/cjs/link/useLinkTo.js +2 -2
  73. package/dist/cjs/link/useLinkTo.js.map +1 -1
  74. package/dist/cjs/link/useLinkTo.native.js +2 -2
  75. package/dist/cjs/link/useLinkTo.native.js.map +1 -1
  76. package/dist/cjs/router/getNormalizedStatePath.cjs +2 -2
  77. package/dist/cjs/router/getNormalizedStatePath.js +2 -2
  78. package/dist/cjs/router/getNormalizedStatePath.js.map +1 -1
  79. package/dist/cjs/router/getNormalizedStatePath.native.js +2 -2
  80. package/dist/cjs/router/getNormalizedStatePath.native.js.map +1 -1
  81. package/dist/cjs/router/router.cjs +19 -3
  82. package/dist/cjs/router/router.js +25 -3
  83. package/dist/cjs/router/router.js.map +1 -1
  84. package/dist/cjs/router/router.native.js +39 -3
  85. package/dist/cjs/router/router.native.js.map +2 -2
  86. package/dist/esm/Root.js +6 -2
  87. package/dist/esm/Root.js.map +1 -1
  88. package/dist/esm/Root.mjs +1 -1
  89. package/dist/esm/Root.mjs.map +1 -1
  90. package/dist/esm/Root.native.js +1 -1
  91. package/dist/esm/Root.native.js.map +2 -2
  92. package/dist/esm/fork/NavigationContainer.js +43 -20
  93. package/dist/esm/fork/NavigationContainer.js.map +1 -1
  94. package/dist/esm/fork/NavigationContainer.mjs +42 -24
  95. package/dist/esm/fork/NavigationContainer.mjs.map +1 -1
  96. package/dist/esm/fork/NavigationContainer.native.js +44 -24
  97. package/dist/esm/fork/NavigationContainer.native.js.map +2 -2
  98. package/dist/esm/fork/createMemoryHistory.js +3 -2
  99. package/dist/esm/fork/createMemoryHistory.js.map +1 -1
  100. package/dist/esm/fork/createMemoryHistory.mjs +4 -3
  101. package/dist/esm/fork/createMemoryHistory.mjs.map +1 -1
  102. package/dist/esm/fork/createMemoryHistory.native.js +4 -4
  103. package/dist/esm/fork/createMemoryHistory.native.js.map +2 -2
  104. package/dist/esm/fork/extractPathFromURL.js +42 -11
  105. package/dist/esm/fork/extractPathFromURL.js.map +1 -1
  106. package/dist/esm/fork/extractPathFromURL.mjs +39 -11
  107. package/dist/esm/fork/extractPathFromURL.mjs.map +1 -1
  108. package/dist/esm/fork/extractPathFromURL.native.js +52 -15
  109. package/dist/esm/fork/extractPathFromURL.native.js.map +2 -2
  110. package/dist/esm/fork/findFocusedRoute.js.map +1 -1
  111. package/dist/esm/fork/findFocusedRoute.mjs.map +1 -1
  112. package/dist/esm/fork/findFocusedRoute.native.js.map +1 -1
  113. package/dist/esm/fork/getPathFromState-mods.js +40 -0
  114. package/dist/esm/fork/getPathFromState-mods.js.map +6 -0
  115. package/dist/esm/fork/getPathFromState-mods.mjs +40 -0
  116. package/dist/esm/fork/getPathFromState-mods.mjs.map +1 -0
  117. package/dist/esm/fork/getPathFromState-mods.native.js +47 -0
  118. package/dist/esm/fork/getPathFromState-mods.native.js.map +6 -0
  119. package/dist/esm/fork/getPathFromState.js +71 -228
  120. package/dist/esm/fork/getPathFromState.js.map +2 -2
  121. package/dist/esm/fork/getPathFromState.mjs +73 -221
  122. package/dist/esm/fork/getPathFromState.mjs.map +1 -1
  123. package/dist/esm/fork/getPathFromState.native.js +79 -260
  124. package/dist/esm/fork/getPathFromState.native.js.map +2 -2
  125. package/dist/esm/fork/getStateFromPath-mods.js +176 -0
  126. package/dist/esm/fork/getStateFromPath-mods.js.map +6 -0
  127. package/dist/esm/fork/getStateFromPath-mods.mjs +143 -0
  128. package/dist/esm/fork/getStateFromPath-mods.mjs.map +1 -0
  129. package/dist/esm/fork/getStateFromPath-mods.native.js +246 -0
  130. package/dist/esm/fork/getStateFromPath-mods.native.js.map +6 -0
  131. package/dist/esm/fork/getStateFromPath.js +160 -265
  132. package/dist/esm/fork/getStateFromPath.js.map +2 -2
  133. package/dist/esm/fork/getStateFromPath.mjs +181 -260
  134. package/dist/esm/fork/getStateFromPath.mjs.map +1 -1
  135. package/dist/esm/fork/getStateFromPath.native.js +164 -302
  136. package/dist/esm/fork/getStateFromPath.native.js.map +2 -2
  137. package/dist/esm/fork/useBackButton.js.map +1 -1
  138. package/dist/esm/fork/useBackButton.mjs.map +1 -1
  139. package/dist/esm/fork/useBackButton.native.js.map +1 -1
  140. package/dist/esm/fork/useDocumentTitle.js +4 -1
  141. package/dist/esm/fork/useDocumentTitle.js.map +1 -1
  142. package/dist/esm/fork/useDocumentTitle.mjs.map +1 -1
  143. package/dist/esm/fork/useDocumentTitle.native.js +1 -1
  144. package/dist/esm/fork/useDocumentTitle.native.js.map +2 -2
  145. package/dist/esm/fork/useLinking.js +22 -26
  146. package/dist/esm/fork/useLinking.js.map +1 -1
  147. package/dist/esm/fork/useLinking.mjs +20 -23
  148. package/dist/esm/fork/useLinking.mjs.map +1 -1
  149. package/dist/esm/fork/useLinking.native.js +65 -67
  150. package/dist/esm/fork/useLinking.native.js.map +2 -2
  151. package/dist/esm/fork/useThenable.js.map +1 -1
  152. package/dist/esm/fork/useThenable.mjs.map +1 -1
  153. package/dist/esm/fork/useThenable.native.js.map +1 -1
  154. package/dist/esm/fork/validatePathConfig.js +41 -11
  155. package/dist/esm/fork/validatePathConfig.js.map +1 -1
  156. package/dist/esm/fork/validatePathConfig.mjs +32 -11
  157. package/dist/esm/fork/validatePathConfig.mjs.map +1 -1
  158. package/dist/esm/fork/validatePathConfig.native.js +43 -18
  159. package/dist/esm/fork/validatePathConfig.native.js.map +2 -2
  160. package/dist/esm/layouts/withLayoutContext.js +1 -1
  161. package/dist/esm/layouts/withLayoutContext.js.map +1 -1
  162. package/dist/esm/layouts/withLayoutContext.mjs +1 -1
  163. package/dist/esm/layouts/withLayoutContext.mjs.map +1 -1
  164. package/dist/esm/layouts/withLayoutContext.native.js +1 -1
  165. package/dist/esm/layouts/withLayoutContext.native.js.map +1 -1
  166. package/dist/esm/link/linking.js +2 -2
  167. package/dist/esm/link/linking.js.map +1 -1
  168. package/dist/esm/link/linking.mjs +2 -2
  169. package/dist/esm/link/linking.mjs.map +1 -1
  170. package/dist/esm/link/linking.native.js +2 -2
  171. package/dist/esm/link/linking.native.js.map +1 -1
  172. package/dist/esm/link/useLinkTo.js +1 -1
  173. package/dist/esm/link/useLinkTo.mjs +1 -1
  174. package/dist/esm/link/useLinkTo.native.js +1 -1
  175. package/dist/esm/router/getNormalizedStatePath.js +1 -1
  176. package/dist/esm/router/getNormalizedStatePath.mjs +1 -1
  177. package/dist/esm/router/getNormalizedStatePath.native.js +1 -1
  178. package/dist/esm/router/router.js +24 -2
  179. package/dist/esm/router/router.js.map +1 -1
  180. package/dist/esm/router/router.mjs +18 -2
  181. package/dist/esm/router/router.mjs.map +1 -1
  182. package/dist/esm/router/router.native.js +38 -2
  183. package/dist/esm/router/router.native.js.map +2 -2
  184. package/package.json +8 -9
  185. package/src/Root.tsx +6 -2
  186. package/src/fork/NavigationContainer.tsx +101 -39
  187. package/src/fork/createMemoryHistory.tsx +15 -13
  188. package/src/fork/extractPathFromURL.ts +85 -40
  189. package/src/fork/findFocusedRoute.tsx +9 -1
  190. package/src/fork/getPathFromState-mods.ts +142 -0
  191. package/src/fork/getPathFromState.ts +244 -501
  192. package/src/fork/getStateFromPath-mods.ts +400 -0
  193. package/src/fork/getStateFromPath.ts +447 -538
  194. package/src/fork/useBackButton.native.tsx +16 -2
  195. package/src/fork/useBackButton.tsx +11 -2
  196. package/src/fork/useDocumentTitle.native.tsx +9 -4
  197. package/src/fork/useDocumentTitle.tsx +12 -7
  198. package/src/fork/useLinking.native.ts +71 -63
  199. package/src/fork/useLinking.ts +75 -40
  200. package/src/fork/useThenable.tsx +7 -1
  201. package/src/fork/validatePathConfig.ts +64 -12
  202. package/src/layouts/withLayoutContext.tsx +1 -1
  203. package/src/link/linking.ts +2 -2
  204. package/src/link/useLinkTo.tsx +1 -1
  205. package/src/router/getNormalizedStatePath.tsx +1 -1
  206. package/src/router/router.ts +41 -2
  207. package/types/Root.d.ts.map +1 -1
  208. package/types/fork/NavigationContainer.d.ts +19 -8
  209. package/types/fork/NavigationContainer.d.ts.map +1 -1
  210. package/types/fork/createMemoryHistory.d.ts +10 -1
  211. package/types/fork/createMemoryHistory.d.ts.map +1 -1
  212. package/types/fork/extractPathFromURL.d.ts +7 -1
  213. package/types/fork/extractPathFromURL.d.ts.map +1 -1
  214. package/types/fork/findFocusedRoute.d.ts +9 -0
  215. package/types/fork/findFocusedRoute.d.ts.map +1 -1
  216. package/types/fork/getPathFromState-mods.d.ts +23 -0
  217. package/types/fork/getPathFromState-mods.d.ts.map +1 -0
  218. package/types/fork/getPathFromState.d.ts +15 -14
  219. package/types/fork/getPathFromState.d.ts.map +1 -1
  220. package/types/fork/getStateFromPath-mods.d.ts +58 -0
  221. package/types/fork/getStateFromPath-mods.d.ts.map +1 -0
  222. package/types/fork/getStateFromPath.d.ts +28 -29
  223. package/types/fork/getStateFromPath.d.ts.map +1 -1
  224. package/types/fork/useBackButton.d.ts +6 -0
  225. package/types/fork/useBackButton.d.ts.map +1 -1
  226. package/types/fork/useBackButton.native.d.ts +9 -1
  227. package/types/fork/useBackButton.native.d.ts.map +1 -1
  228. package/types/fork/useDocumentTitle.d.ts +8 -6
  229. package/types/fork/useDocumentTitle.d.ts.map +1 -1
  230. package/types/fork/useDocumentTitle.native.d.ts +5 -2
  231. package/types/fork/useDocumentTitle.native.d.ts.map +1 -1
  232. package/types/fork/useLinking.d.ts +8 -1
  233. package/types/fork/useLinking.d.ts.map +1 -1
  234. package/types/fork/useLinking.native.d.ts +9 -2
  235. package/types/fork/useLinking.native.d.ts.map +1 -1
  236. package/types/fork/useThenable.d.ts +6 -0
  237. package/types/fork/useThenable.d.ts.map +1 -1
  238. package/types/fork/validatePathConfig.d.ts +8 -1
  239. package/types/fork/validatePathConfig.d.ts.map +1 -1
  240. package/types/link/linking.d.ts +2 -2
  241. package/types/link/linking.d.ts.map +1 -1
@@ -0,0 +1,143 @@
1
+ import escape_ from "escape-string-regexp";
2
+ import { matchGroupName, stripGroupSegmentsFromPath } from "../router/matchers.mjs";
3
+ function getUrlWithReactNavigationConcessions(path, baseUrl = process.env.EXPO_BASE_URL) {
4
+ let parsed;
5
+ try {
6
+ parsed = new URL(path, "https://phony.example");
7
+ } catch {
8
+ return {
9
+ path,
10
+ cleanUrl: "",
11
+ nonstandardPathname: "",
12
+ url: new URL("https://phony.example")
13
+ };
14
+ }
15
+ const pathname = parsed.pathname,
16
+ withoutBaseUrl = stripBaseUrl(pathname, baseUrl),
17
+ pathWithoutGroups = stripGroupSegmentsFromPath(stripBaseUrl(path, baseUrl));
18
+ return {
19
+ // The slashes are at the end, not the beginning
20
+ path,
21
+ nonstandardPathname: withoutBaseUrl.replace(/^\/+/g, "").replace(/\/+$/g, "") + "/",
22
+ url: parsed,
23
+ pathWithoutGroups
24
+ };
25
+ }
26
+ function matchForEmptyPath(configs) {
27
+ const leafNodes = configs.filter(config => !config.hasChildren).map(value => ({
28
+ ...value,
29
+ // Collapse all levels of group segments before testing.
30
+ // This enables `app/(one)/(two)/index.js` to be matched.
31
+ path: stripGroupSegmentsFromPath(value.path)
32
+ }));
33
+ return leafNodes.find(config =>
34
+ // NOTE: Test leaf node index routes that either don't have a regex or match an empty string.
35
+ config.path === "" && (!config.regex || config.regex.test(""))) ?? leafNodes.find(config =>
36
+ // NOTE: Test leaf node dynamic routes that match an empty string.
37
+ config.path.startsWith(":") && config.regex.test("")) ??
38
+ // NOTE: Test leaf node deep dynamic routes that match a slash.
39
+ // This should be done last to enable dynamic routes having a higher priority.
40
+ leafNodes.find(config => config.path.startsWith("*") && config.regex.test("/"));
41
+ }
42
+ function appendIsInitial(initialRoutes) {
43
+ const resolvedInitialPatterns = initialRoutes.map(route => joinPaths(...route.parentScreens, route.initialRouteName));
44
+ return config => (config.isInitial = resolvedInitialPatterns.includes(config.routeNames.join("/")), config);
45
+ }
46
+ const joinPaths = (...paths) => [].concat(...paths.map(p => p.split("/"))).filter(Boolean).join("/");
47
+ function getRouteConfigSorter(previousSegments = []) {
48
+ return function (a, b) {
49
+ if (a.pattern === b.pattern) return b.routeNames.join(">").localeCompare(a.routeNames.join(">"));
50
+ if (a.pattern.startsWith(b.pattern) && !b.isIndex) return -1;
51
+ if (b.pattern.startsWith(a.pattern) && !a.isIndex) return 1;
52
+ if (a.type === "static" && b.type !== "static") return -1;
53
+ if (a.type !== "static" && b.type === "static") return 1;
54
+ const similarToPreviousA = previousSegments.filter((value, index) => value === a.expandedRouteNames[index] && value.startsWith("(") && value.endsWith(")")),
55
+ similarToPreviousB = previousSegments.filter((value, index) => value === b.expandedRouteNames[index] && value.startsWith("(") && value.endsWith(")"));
56
+ if ((similarToPreviousA.length > 0 || similarToPreviousB.length > 0) && similarToPreviousA.length !== similarToPreviousB.length) return similarToPreviousB.length - similarToPreviousA.length;
57
+ for (let i = 0; i < Math.max(a.parts.length, b.parts.length); i++) {
58
+ if (a.parts[i] == null) return 1;
59
+ if (b.parts[i] == null) return -1;
60
+ const aWildCard = a.parts[i].startsWith("*"),
61
+ bWildCard = b.parts[i].startsWith("*");
62
+ if (aWildCard && bWildCard) {
63
+ const aNotFound = a.parts[i].match(/^[*]not-found$/),
64
+ bNotFound = b.parts[i].match(/^[*]not-found$/);
65
+ if (aNotFound && bNotFound) continue;
66
+ if (aNotFound) return 1;
67
+ if (bNotFound) return -1;
68
+ continue;
69
+ }
70
+ if (aWildCard) return 1;
71
+ if (bWildCard) return -1;
72
+ const aSlug = a.parts[i].startsWith(":"),
73
+ bSlug = b.parts[i].startsWith(":");
74
+ if (aSlug && bSlug) {
75
+ const aNotFound = a.parts[i].match(/^[*]not-found$/),
76
+ bNotFound = b.parts[i].match(/^[*]not-found$/);
77
+ if (aNotFound && bNotFound) continue;
78
+ if (aNotFound) return 1;
79
+ if (bNotFound) return -1;
80
+ continue;
81
+ }
82
+ if (aSlug) return 1;
83
+ if (bSlug) return -1;
84
+ }
85
+ return a.isInitial && !b.isInitial ? -1 : !a.isInitial && b.isInitial ? 1 : b.parts.length - a.parts.length;
86
+ };
87
+ }
88
+ function formatRegexPattern(it) {
89
+ return it = it.replace(" ", "%20"), it.startsWith(":") ? `(([^/]+\\/)${it.endsWith("?") ? "?" : ""})` : it.startsWith("*") ? `((.*\\/)${it.endsWith("?") ? "?" : ""})` : matchGroupName(it) != null ? `(?:${escape(it)}\\/)?` : escape_(it) + "\\/";
90
+ }
91
+ function decodeURIComponentSafe(str) {
92
+ try {
93
+ return decodeURIComponent(str);
94
+ } catch {
95
+ return str;
96
+ }
97
+ }
98
+ function getParamValue(p, value) {
99
+ if (p.startsWith("*")) {
100
+ const values = value.split("/").filter(v => v !== "");
101
+ return values.length === 0 && p.endsWith("?") ? void 0 : values;
102
+ }
103
+ return value;
104
+ }
105
+ function populateParams(routes, params) {
106
+ if (!(!routes || !params || Object.keys(params).length === 0)) {
107
+ for (const route of routes) Object.assign(route, {
108
+ params
109
+ });
110
+ return routes;
111
+ }
112
+ }
113
+ function createConfigItemAdditionalProperties(screen, pattern, routeNames, config = {}) {
114
+ const parts = [];
115
+ let isDynamic = !1;
116
+ const isIndex = screen === "index" || screen.endsWith("/index");
117
+ for (const part of pattern.split("/")) part && (isDynamic ||= part.startsWith(":") || part.startsWith("*") || part.includes("*not-found"), matchGroupName(part) || parts.push(part));
118
+ const hasChildren = config.screens ? !!Object.keys(config.screens)?.length : !1,
119
+ type = hasChildren ? "layout" : isDynamic ? "dynamic" : "static";
120
+ return isIndex && parts.push("index"), {
121
+ type,
122
+ isIndex,
123
+ hasChildren,
124
+ parts,
125
+ userReadableName: [...routeNames.slice(0, -1), config.path || screen].join("/"),
126
+ expandedRouteNames: routeNames.flatMap(name => name.split("/"))
127
+ };
128
+ }
129
+ function parseQueryParamsExtended(path, route, parseConfig, hash) {
130
+ const searchParams = new URL(path, "https://phony.example").searchParams,
131
+ params = /* @__PURE__ */Object.create(null);
132
+ hash && (params["#"] = hash.slice(1));
133
+ for (const name of searchParams.keys()) if (route.params?.[name]) process.env.NODE_ENV !== "production" && console.warn(`Route '/${route.name}' with param '${name}' was specified both in the path and as a param, removing from path`);else {
134
+ const values = parseConfig?.hasOwnProperty(name) ? searchParams.getAll(name).map(value => parseConfig[name](value)) : searchParams.getAll(name);
135
+ params[name] = values.length === 1 ? values[0] : values;
136
+ }
137
+ return Object.keys(params).length ? params : void 0;
138
+ }
139
+ function stripBaseUrl(path, baseUrl = process.env.EXPO_BASE_URL) {
140
+ return process.env.NODE_ENV !== "development" && baseUrl ? path.replace(/^\/+/g, "/").replace(new RegExp(`^\\/?${escape(baseUrl)}`, "g"), "") : path;
141
+ }
142
+ export { appendIsInitial, createConfigItemAdditionalProperties, decodeURIComponentSafe, formatRegexPattern, getParamValue, getRouteConfigSorter, getUrlWithReactNavigationConcessions, matchForEmptyPath, parseQueryParamsExtended, populateParams, stripBaseUrl };
143
+ //# sourceMappingURL=getStateFromPath-mods.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["escape_","matchGroupName","stripGroupSegmentsFromPath","getUrlWithReactNavigationConcessions","path","baseUrl","process","env","EXPO_BASE_URL","parsed","URL","cleanUrl","nonstandardPathname","url","pathname","withoutBaseUrl","stripBaseUrl","pathWithoutGroups","replace","matchForEmptyPath","configs","leafNodes","filter","config","hasChildren","map","value","find","regex","test","startsWith","appendIsInitial","initialRoutes","resolvedInitialPatterns","route","joinPaths","parentScreens","initialRouteName","isInitial","includes","routeNames","join","paths","concat","p","split","Boolean","getRouteConfigSorter","previousSegments","a","b","pattern","localeCompare","isIndex","type","similarToPreviousA","index","expandedRouteNames","endsWith","similarToPreviousB","length","i","Math","max","parts","aWildCard","bWildCard","aNotFound","match","bNotFound","aSlug","bSlug","formatRegexPattern","it","escape","decodeURIComponentSafe","str","decodeURIComponent","getParamValue","values","v","populateParams","routes","params","Object","keys","assign","createConfigItemAdditionalProperties","screen","isDynamic","part","push","screens","userReadableName","slice","flatMap","name","parseQueryParamsExtended","parseConfig","hash","searchParams","create","NODE_ENV","console","warn","hasOwnProperty","getAll","RegExp"],"sources":["../../../src/fork/getStateFromPath-mods.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,246 @@
1
+ import escape_ from "escape-string-regexp";
2
+ import { matchGroupName, stripGroupSegmentsFromPath } from "../router/matchers";
3
+ function getUrlWithReactNavigationConcessions(path) {
4
+ var baseUrl = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : process.env.EXPO_BASE_URL, parsed;
5
+ try {
6
+ parsed = new URL(path, "https://phony.example");
7
+ } catch {
8
+ return {
9
+ path,
10
+ cleanUrl: "",
11
+ nonstandardPathname: "",
12
+ url: new URL("https://phony.example")
13
+ };
14
+ }
15
+ var pathname = parsed.pathname, withoutBaseUrl = stripBaseUrl(pathname, baseUrl), pathWithoutGroups = stripGroupSegmentsFromPath(stripBaseUrl(path, baseUrl));
16
+ return {
17
+ // The slashes are at the end, not the beginning
18
+ path,
19
+ nonstandardPathname: withoutBaseUrl.replace(/^\/+/g, "").replace(/\/+$/g, "") + "/",
20
+ url: parsed,
21
+ pathWithoutGroups
22
+ };
23
+ }
24
+ function matchForEmptyPath(configs) {
25
+ var leafNodes = configs.filter(function(config) {
26
+ return !config.hasChildren;
27
+ }).map(function(value) {
28
+ return {
29
+ ...value,
30
+ // Collapse all levels of group segments before testing.
31
+ // This enables `app/(one)/(two)/index.js` to be matched.
32
+ path: stripGroupSegmentsFromPath(value.path)
33
+ };
34
+ }), _leafNodes_find, _ref, match = (_ref = (_leafNodes_find = leafNodes.find(function(config) {
35
+ return (
36
+ // NOTE: Test leaf node index routes that either don't have a regex or match an empty string.
37
+ config.path === "" && (!config.regex || config.regex.test(""))
38
+ );
39
+ })) !== null && _leafNodes_find !== void 0 ? _leafNodes_find : leafNodes.find(function(config) {
40
+ return (
41
+ // NOTE: Test leaf node dynamic routes that match an empty string.
42
+ config.path.startsWith(":") && config.regex.test("")
43
+ );
44
+ })) !== null && _ref !== void 0 ? _ref : (
45
+ // NOTE: Test leaf node deep dynamic routes that match a slash.
46
+ // This should be done last to enable dynamic routes having a higher priority.
47
+ leafNodes.find(function(config) {
48
+ return config.path.startsWith("*") && config.regex.test("/");
49
+ })
50
+ );
51
+ return match;
52
+ }
53
+ function appendIsInitial(initialRoutes) {
54
+ var resolvedInitialPatterns = initialRoutes.map(function(route) {
55
+ return joinPaths(...route.parentScreens, route.initialRouteName);
56
+ });
57
+ return function(config) {
58
+ return config.isInitial = resolvedInitialPatterns.includes(config.routeNames.join("/")), config;
59
+ };
60
+ }
61
+ var joinPaths = function() {
62
+ for (var _len = arguments.length, paths = new Array(_len), _key = 0; _key < _len; _key++)
63
+ paths[_key] = arguments[_key];
64
+ return [].concat(...paths.map(function(p) {
65
+ return p.split("/");
66
+ })).filter(Boolean).join("/");
67
+ };
68
+ function getRouteConfigSorter() {
69
+ var previousSegments = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];
70
+ return function(a, b) {
71
+ if (a.pattern === b.pattern)
72
+ return b.routeNames.join(">").localeCompare(a.routeNames.join(">"));
73
+ if (a.pattern.startsWith(b.pattern) && !b.isIndex)
74
+ return -1;
75
+ if (b.pattern.startsWith(a.pattern) && !a.isIndex)
76
+ return 1;
77
+ if (a.type === "static" && b.type !== "static")
78
+ return -1;
79
+ if (a.type !== "static" && b.type === "static")
80
+ return 1;
81
+ var similarToPreviousA = previousSegments.filter(function(value, index) {
82
+ return value === a.expandedRouteNames[index] && value.startsWith("(") && value.endsWith(")");
83
+ }), similarToPreviousB = previousSegments.filter(function(value, index) {
84
+ return value === b.expandedRouteNames[index] && value.startsWith("(") && value.endsWith(")");
85
+ });
86
+ if ((similarToPreviousA.length > 0 || similarToPreviousB.length > 0) && similarToPreviousA.length !== similarToPreviousB.length)
87
+ return similarToPreviousB.length - similarToPreviousA.length;
88
+ for (var i = 0; i < Math.max(a.parts.length, b.parts.length); i++) {
89
+ if (a.parts[i] == null)
90
+ return 1;
91
+ if (b.parts[i] == null)
92
+ return -1;
93
+ var aWildCard = a.parts[i].startsWith("*"), bWildCard = b.parts[i].startsWith("*");
94
+ if (aWildCard && bWildCard) {
95
+ var aNotFound = a.parts[i].match(/^[*]not-found$/), bNotFound = b.parts[i].match(/^[*]not-found$/);
96
+ if (aNotFound && bNotFound)
97
+ continue;
98
+ if (aNotFound)
99
+ return 1;
100
+ if (bNotFound)
101
+ return -1;
102
+ continue;
103
+ }
104
+ if (aWildCard)
105
+ return 1;
106
+ if (bWildCard)
107
+ return -1;
108
+ var aSlug = a.parts[i].startsWith(":"), bSlug = b.parts[i].startsWith(":");
109
+ if (aSlug && bSlug) {
110
+ var aNotFound1 = a.parts[i].match(/^[*]not-found$/), bNotFound1 = b.parts[i].match(/^[*]not-found$/);
111
+ if (aNotFound1 && bNotFound1)
112
+ continue;
113
+ if (aNotFound1)
114
+ return 1;
115
+ if (bNotFound1)
116
+ return -1;
117
+ continue;
118
+ }
119
+ if (aSlug)
120
+ return 1;
121
+ if (bSlug)
122
+ return -1;
123
+ }
124
+ return a.isInitial && !b.isInitial ? -1 : !a.isInitial && b.isInitial ? 1 : b.parts.length - a.parts.length;
125
+ };
126
+ }
127
+ function formatRegexPattern(it) {
128
+ return it = it.replace(" ", "%20"), it.startsWith(":") ? `(([^/]+\\/)${it.endsWith("?") ? "?" : ""})` : it.startsWith("*") ? `((.*\\/)${it.endsWith("?") ? "?" : ""})` : matchGroupName(it) != null ? `(?:${escape(it)}\\/)?` : escape_(it) + "\\/";
129
+ }
130
+ function decodeURIComponentSafe(str) {
131
+ try {
132
+ return decodeURIComponent(str);
133
+ } catch {
134
+ return str;
135
+ }
136
+ }
137
+ function getParamValue(p, value) {
138
+ if (p.startsWith("*")) {
139
+ var values = value.split("/").filter(function(v) {
140
+ return v !== "";
141
+ });
142
+ return values.length === 0 && p.endsWith("?") ? void 0 : values;
143
+ }
144
+ return value;
145
+ }
146
+ function populateParams(routes, params) {
147
+ if (!(!routes || !params || Object.keys(params).length === 0)) {
148
+ var _iteratorNormalCompletion = !0, _didIteratorError = !1, _iteratorError = void 0;
149
+ try {
150
+ for (var _iterator = routes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
151
+ var route = _step.value;
152
+ Object.assign(route, {
153
+ params
154
+ });
155
+ }
156
+ } catch (err) {
157
+ _didIteratorError = !0, _iteratorError = err;
158
+ } finally {
159
+ try {
160
+ !_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
161
+ } finally {
162
+ if (_didIteratorError)
163
+ throw _iteratorError;
164
+ }
165
+ }
166
+ return routes;
167
+ }
168
+ }
169
+ function createConfigItemAdditionalProperties(screen, pattern, routeNames) {
170
+ var config = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {}, _Object_keys, parts = [], isDynamic = !1, isIndex = screen === "index" || screen.endsWith("/index"), _iteratorNormalCompletion = !0, _didIteratorError = !1, _iteratorError = void 0;
171
+ try {
172
+ for (var _iterator = pattern.split("/")[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
173
+ var part = _step.value;
174
+ part && (isDynamic || (isDynamic = part.startsWith(":") || part.startsWith("*") || part.includes("*not-found")), matchGroupName(part) || parts.push(part));
175
+ }
176
+ } catch (err) {
177
+ _didIteratorError = !0, _iteratorError = err;
178
+ } finally {
179
+ try {
180
+ !_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
181
+ } finally {
182
+ if (_didIteratorError)
183
+ throw _iteratorError;
184
+ }
185
+ }
186
+ var hasChildren = config.screens ? !!(!((_Object_keys = Object.keys(config.screens)) === null || _Object_keys === void 0) && _Object_keys.length) : !1, type = hasChildren ? "layout" : isDynamic ? "dynamic" : "static";
187
+ return isIndex && parts.push("index"), {
188
+ type,
189
+ isIndex,
190
+ hasChildren,
191
+ parts,
192
+ userReadableName: [
193
+ ...routeNames.slice(0, -1),
194
+ config.path || screen
195
+ ].join("/"),
196
+ expandedRouteNames: routeNames.flatMap(function(name) {
197
+ return name.split("/");
198
+ })
199
+ };
200
+ }
201
+ function parseQueryParamsExtended(path, route, parseConfig, hash) {
202
+ var searchParams = new URL(path, "https://phony.example").searchParams, params = /* @__PURE__ */ Object.create(null);
203
+ hash && (params["#"] = hash.slice(1));
204
+ var _iteratorNormalCompletion = !0, _didIteratorError = !1, _iteratorError = void 0;
205
+ try {
206
+ for (var _loop = function() {
207
+ var name = _step.value, _route_params;
208
+ if (!((_route_params = route.params) === null || _route_params === void 0) && _route_params[name])
209
+ process.env.NODE_ENV !== "production" && console.warn(`Route '/${route.name}' with param '${name}' was specified both in the path and as a param, removing from path`);
210
+ else {
211
+ var values = parseConfig?.hasOwnProperty(name) ? searchParams.getAll(name).map(function(value) {
212
+ return parseConfig[name](value);
213
+ }) : searchParams.getAll(name);
214
+ params[name] = values.length === 1 ? values[0] : values;
215
+ }
216
+ }, _iterator = searchParams.keys()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) _loop();
217
+ } catch (err) {
218
+ _didIteratorError = !0, _iteratorError = err;
219
+ } finally {
220
+ try {
221
+ !_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
222
+ } finally {
223
+ if (_didIteratorError)
224
+ throw _iteratorError;
225
+ }
226
+ }
227
+ return Object.keys(params).length ? params : void 0;
228
+ }
229
+ function stripBaseUrl(path) {
230
+ var baseUrl = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : process.env.EXPO_BASE_URL;
231
+ return process.env.NODE_ENV !== "development" && baseUrl ? path.replace(/^\/+/g, "/").replace(new RegExp(`^\\/?${escape(baseUrl)}`, "g"), "") : path;
232
+ }
233
+ export {
234
+ appendIsInitial,
235
+ createConfigItemAdditionalProperties,
236
+ decodeURIComponentSafe,
237
+ formatRegexPattern,
238
+ getParamValue,
239
+ getRouteConfigSorter,
240
+ getUrlWithReactNavigationConcessions,
241
+ matchForEmptyPath,
242
+ parseQueryParamsExtended,
243
+ populateParams,
244
+ stripBaseUrl
245
+ };
246
+ //# sourceMappingURL=getStateFromPath-mods.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/fork/Users/n8/one/packages/one/src/fork/getStateFromPath-mods.ts"],
4
+ "mappings": "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",
5
+ "names": ["escape_", "matchGroupName", "stripGroupSegmentsFromPath", "getUrlWithReactNavigationConcessions", "path", "baseUrl", "process", "env", "EXPO_BASE_URL", "parsed", "URL", "cleanUrl", "nonstandardPathname", "url", "pathname", "withoutBaseUrl", "stripBaseUrl", "pathWithoutGroups", "replace", "matchForEmptyPath", "configs", "leafNodes", "filter", "config", "hasChildren", "map", "value", "match", "find", "regex", "test", "startsWith", "appendIsInitial", "initialRoutes", "resolvedInitialPatterns", "route", "joinPaths", "parentScreens", "initialRouteName", "isInitial", "includes", "routeNames", "join", "paths", "concat", "p", "split", "Boolean", "getRouteConfigSorter", "previousSegments", "a", "b", "pattern", "localeCompare", "isIndex", "type", "similarToPreviousA", "index", "expandedRouteNames", "endsWith", "similarToPreviousB", "length", "i", "Math", "max", "parts", "aWildCard", "bWildCard", "aNotFound", "bNotFound", "aSlug", "bSlug", "formatRegexPattern", "it", "escape", "decodeURIComponentSafe", "str", "decodeURIComponent", "getParamValue", "values", "v", "undefined", "populateParams", "routes", "params", "Object", "keys", "assign", "createConfigItemAdditionalProperties", "screen", "isDynamic", "part", "push", "screens", "userReadableName", "slice", "flatMap", "name", "parseQueryParamsExtended", "parseConfig", "hash", "searchParams", "create", "NODE_ENV", "console", "warn", "hasOwnProperty", "getAll", "RegExp"]
6
+ }