@tanstack/react-router 1.7.0 → 1.8.0

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 (200) hide show
  1. package/dist/cjs/CatchBoundary.cjs +106 -0
  2. package/dist/cjs/CatchBoundary.cjs.map +1 -0
  3. package/dist/cjs/Matches.cjs +278 -0
  4. package/dist/cjs/Matches.cjs.map +1 -0
  5. package/{build/cjs/RouterProvider.js → dist/cjs/RouterProvider.cjs} +55 -58
  6. package/dist/cjs/RouterProvider.cjs.map +1 -0
  7. package/dist/cjs/awaited.cjs +51 -0
  8. package/dist/cjs/awaited.cjs.map +1 -0
  9. package/dist/cjs/defer.cjs +30 -0
  10. package/dist/cjs/defer.cjs.map +1 -0
  11. package/dist/cjs/fileRoute.cjs +19 -0
  12. package/dist/cjs/fileRoute.cjs.map +1 -0
  13. package/dist/cjs/history.d.cts +7 -0
  14. package/{build/cjs/index.js → dist/cjs/index.cjs} +39 -51
  15. package/dist/cjs/index.cjs.map +1 -0
  16. package/dist/cjs/lazyRouteComponent.cjs +40 -0
  17. package/dist/cjs/lazyRouteComponent.cjs.map +1 -0
  18. package/dist/cjs/link.cjs +196 -0
  19. package/dist/cjs/link.cjs.map +1 -0
  20. package/dist/cjs/link.d.cts +85 -0
  21. package/{build/cjs/path.js → dist/cjs/path.cjs} +77 -94
  22. package/dist/cjs/path.cjs.map +1 -0
  23. package/dist/cjs/qss.cjs +45 -0
  24. package/dist/cjs/qss.cjs.map +1 -0
  25. package/dist/cjs/redirects.cjs +15 -0
  26. package/dist/cjs/redirects.cjs.map +1 -0
  27. package/dist/cjs/route.cjs +143 -0
  28. package/dist/cjs/route.cjs.map +1 -0
  29. package/dist/cjs/router.cjs +1070 -0
  30. package/dist/cjs/router.cjs.map +1 -0
  31. package/dist/cjs/routerContext.cjs +29 -0
  32. package/dist/cjs/routerContext.cjs.map +1 -0
  33. package/{build/cjs/scroll-restoration.js → dist/cjs/scroll-restoration.cjs} +58 -75
  34. package/dist/cjs/scroll-restoration.cjs.map +1 -0
  35. package/{build/cjs/searchParams.js → dist/cjs/searchParams.cjs} +18 -36
  36. package/dist/cjs/searchParams.cjs.map +1 -0
  37. package/dist/cjs/useBlocker.cjs +36 -0
  38. package/dist/cjs/useBlocker.cjs.map +1 -0
  39. package/dist/cjs/useNavigate.cjs +55 -0
  40. package/dist/cjs/useNavigate.cjs.map +1 -0
  41. package/dist/cjs/useParams.cjs +16 -0
  42. package/dist/cjs/useParams.cjs.map +1 -0
  43. package/dist/cjs/useRouteContext.cjs +11 -0
  44. package/dist/cjs/useRouteContext.cjs.map +1 -0
  45. package/dist/cjs/useRouter.cjs +33 -0
  46. package/dist/cjs/useRouter.cjs.map +1 -0
  47. package/dist/cjs/useRouterState.cjs +12 -0
  48. package/dist/cjs/useRouterState.cjs.map +1 -0
  49. package/dist/cjs/useSearch.cjs +13 -0
  50. package/dist/cjs/useSearch.cjs.map +1 -0
  51. package/{build/cjs/utils.js → dist/cjs/utils.cjs} +25 -116
  52. package/dist/cjs/utils.cjs.map +1 -0
  53. package/dist/esm/CatchBoundary.d.ts +36 -0
  54. package/dist/esm/CatchBoundary.js +89 -0
  55. package/dist/esm/CatchBoundary.js.map +1 -0
  56. package/dist/esm/Matches.d.ts +71 -0
  57. package/dist/esm/Matches.js +261 -0
  58. package/{build/cjs → dist/esm}/Matches.js.map +1 -1
  59. package/dist/esm/RouterProvider.d.ts +27 -0
  60. package/dist/esm/RouterProvider.js +136 -0
  61. package/{build/cjs → dist/esm}/RouterProvider.js.map +1 -1
  62. package/dist/esm/awaited.d.ts +9 -0
  63. package/dist/esm/awaited.js +51 -0
  64. package/dist/esm/awaited.js.map +1 -0
  65. package/dist/esm/defer.d.ts +22 -0
  66. package/dist/esm/defer.js +30 -0
  67. package/{build/cjs → dist/esm}/defer.js.map +1 -1
  68. package/dist/esm/fileRoute.d.ts +21 -0
  69. package/dist/esm/fileRoute.js +19 -0
  70. package/dist/esm/fileRoute.js.map +1 -0
  71. package/{build/types → dist/esm}/history.d.ts +1 -1
  72. package/dist/esm/index.d.ts +30 -0
  73. package/dist/esm/index.js +118 -0
  74. package/dist/esm/index.js.map +1 -0
  75. package/dist/esm/lazyRouteComponent.d.ts +2 -0
  76. package/dist/esm/lazyRouteComponent.js +23 -0
  77. package/{build/cjs → dist/esm}/lazyRouteComponent.js.map +1 -1
  78. package/{build/types → dist/esm}/link.d.ts +5 -1
  79. package/dist/esm/link.js +179 -0
  80. package/dist/esm/link.js.map +1 -0
  81. package/dist/esm/location.d.ts +12 -0
  82. package/dist/esm/path.d.ts +17 -0
  83. package/dist/esm/path.js +200 -0
  84. package/dist/esm/path.js.map +1 -0
  85. package/dist/esm/qss.d.ts +2 -0
  86. package/dist/esm/qss.js +45 -0
  87. package/dist/esm/qss.js.map +1 -0
  88. package/dist/esm/redirects.d.ts +11 -0
  89. package/dist/esm/redirects.js +15 -0
  90. package/{build/cjs → dist/esm}/redirects.js.map +1 -1
  91. package/dist/esm/route.d.ts +300 -0
  92. package/dist/esm/route.js +143 -0
  93. package/dist/esm/route.js.map +1 -0
  94. package/dist/esm/routeInfo.d.ts +31 -0
  95. package/dist/esm/router.d.ts +201 -0
  96. package/dist/esm/router.js +1070 -0
  97. package/{build/cjs → dist/esm}/router.js.map +1 -1
  98. package/dist/esm/routerContext.d.ts +3 -0
  99. package/dist/esm/routerContext.js +13 -0
  100. package/{build/cjs → dist/esm}/routerContext.js.map +1 -1
  101. package/dist/esm/scroll-restoration.d.ts +18 -0
  102. package/dist/esm/scroll-restoration.js +168 -0
  103. package/dist/esm/scroll-restoration.js.map +1 -0
  104. package/dist/esm/searchParams.d.ts +7 -0
  105. package/dist/esm/searchParams.js +63 -0
  106. package/{build/cjs → dist/esm}/searchParams.js.map +1 -1
  107. package/dist/esm/useBlocker.d.ts +9 -0
  108. package/dist/esm/useBlocker.js +19 -0
  109. package/{build/cjs → dist/esm}/useBlocker.js.map +1 -1
  110. package/dist/esm/useNavigate.d.ts +20 -0
  111. package/dist/esm/useNavigate.js +38 -0
  112. package/{build/cjs → dist/esm}/useNavigate.js.map +1 -1
  113. package/dist/esm/useParams.d.ts +7 -0
  114. package/dist/esm/useParams.js +16 -0
  115. package/{build/cjs → dist/esm}/useParams.js.map +1 -1
  116. package/dist/esm/useRouteContext.d.ts +7 -0
  117. package/dist/esm/useRouteContext.js +11 -0
  118. package/{build/cjs → dist/esm}/useRouteContext.js.map +1 -1
  119. package/dist/esm/useRouter.d.ts +5 -0
  120. package/dist/esm/useRouter.js +16 -0
  121. package/{build/cjs → dist/esm}/useRouter.js.map +1 -1
  122. package/dist/esm/useRouterState.d.ts +6 -0
  123. package/dist/esm/useRouterState.js +12 -0
  124. package/{build/cjs → dist/esm}/useRouterState.js.map +1 -1
  125. package/dist/esm/useSearch.d.ts +7 -0
  126. package/dist/esm/useSearch.js +13 -0
  127. package/dist/esm/useSearch.js.map +1 -0
  128. package/dist/esm/utils.d.ts +46 -0
  129. package/dist/esm/utils.js +137 -0
  130. package/{build/cjs → dist/esm}/utils.js.map +1 -1
  131. package/package.json +43 -22
  132. package/src/fileRoute.ts +4 -5
  133. package/src/link.tsx +25 -16
  134. package/src/route.ts +5 -6
  135. package/src/useSearch.tsx +5 -2
  136. package/build/cjs/CatchBoundary.js +0 -128
  137. package/build/cjs/CatchBoundary.js.map +0 -1
  138. package/build/cjs/Matches.js +0 -260
  139. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js +0 -29
  140. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js.map +0 -1
  141. package/build/cjs/awaited.js +0 -60
  142. package/build/cjs/awaited.js.map +0 -1
  143. package/build/cjs/defer.js +0 -42
  144. package/build/cjs/fileRoute.js +0 -31
  145. package/build/cjs/fileRoute.js.map +0 -1
  146. package/build/cjs/index.js.map +0 -1
  147. package/build/cjs/lazyRouteComponent.js +0 -54
  148. package/build/cjs/link.js +0 -224
  149. package/build/cjs/link.js.map +0 -1
  150. package/build/cjs/path.js.map +0 -1
  151. package/build/cjs/qss.js +0 -63
  152. package/build/cjs/qss.js.map +0 -1
  153. package/build/cjs/redirects.js +0 -28
  154. package/build/cjs/route.js +0 -292
  155. package/build/cjs/route.js.map +0 -1
  156. package/build/cjs/router.js +0 -1116
  157. package/build/cjs/routerContext.js +0 -42
  158. package/build/cjs/scroll-restoration.js.map +0 -1
  159. package/build/cjs/useBlocker.js +0 -55
  160. package/build/cjs/useNavigate.js +0 -88
  161. package/build/cjs/useParams.js +0 -27
  162. package/build/cjs/useRouteContext.js +0 -23
  163. package/build/cjs/useRouter.js +0 -44
  164. package/build/cjs/useRouterState.js +0 -24
  165. package/build/cjs/useSearch.js +0 -25
  166. package/build/cjs/useSearch.js.map +0 -1
  167. package/build/esm/index.js +0 -2874
  168. package/build/esm/index.js.map +0 -1
  169. package/build/stats-html.html +0 -4838
  170. package/build/stats-react.json +0 -1471
  171. package/build/umd/index.development.js +0 -3573
  172. package/build/umd/index.development.js.map +0 -1
  173. package/build/umd/index.production.js +0 -22
  174. package/build/umd/index.production.js.map +0 -1
  175. /package/{build/types/CatchBoundary.d.ts → dist/cjs/CatchBoundary.d.cts} +0 -0
  176. /package/{build/types/Matches.d.ts → dist/cjs/Matches.d.cts} +0 -0
  177. /package/{build/types/RouterProvider.d.ts → dist/cjs/RouterProvider.d.cts} +0 -0
  178. /package/{build/types/awaited.d.ts → dist/cjs/awaited.d.cts} +0 -0
  179. /package/{build/types/defer.d.ts → dist/cjs/defer.d.cts} +0 -0
  180. /package/{build/types/fileRoute.d.ts → dist/cjs/fileRoute.d.cts} +0 -0
  181. /package/{build/types/index.d.ts → dist/cjs/index.d.cts} +0 -0
  182. /package/{build/types/lazyRouteComponent.d.ts → dist/cjs/lazyRouteComponent.d.cts} +0 -0
  183. /package/{build/types/location.d.ts → dist/cjs/location.d.cts} +0 -0
  184. /package/{build/types/path.d.ts → dist/cjs/path.d.cts} +0 -0
  185. /package/{build/types/qss.d.ts → dist/cjs/qss.d.cts} +0 -0
  186. /package/{build/types/redirects.d.ts → dist/cjs/redirects.d.cts} +0 -0
  187. /package/{build/types/route.d.ts → dist/cjs/route.d.cts} +0 -0
  188. /package/{build/types/routeInfo.d.ts → dist/cjs/routeInfo.d.cts} +0 -0
  189. /package/{build/types/router.d.ts → dist/cjs/router.d.cts} +0 -0
  190. /package/{build/types/routerContext.d.ts → dist/cjs/routerContext.d.cts} +0 -0
  191. /package/{build/types/scroll-restoration.d.ts → dist/cjs/scroll-restoration.d.cts} +0 -0
  192. /package/{build/types/searchParams.d.ts → dist/cjs/searchParams.d.cts} +0 -0
  193. /package/{build/types/useBlocker.d.ts → dist/cjs/useBlocker.d.cts} +0 -0
  194. /package/{build/types/useNavigate.d.ts → dist/cjs/useNavigate.d.cts} +0 -0
  195. /package/{build/types/useParams.d.ts → dist/cjs/useParams.d.cts} +0 -0
  196. /package/{build/types/useRouteContext.d.ts → dist/cjs/useRouteContext.d.cts} +0 -0
  197. /package/{build/types/useRouter.d.ts → dist/cjs/useRouter.d.cts} +0 -0
  198. /package/{build/types/useRouterState.d.ts → dist/cjs/useRouterState.d.cts} +0 -0
  199. /package/{build/types/useSearch.d.ts → dist/cjs/useSearch.d.cts} +0 -0
  200. /package/{build/types/utils.d.ts → dist/cjs/utils.d.cts} +0 -0
@@ -0,0 +1,200 @@
1
+ import { last } from "./utils.js";
2
+ function joinPaths(paths) {
3
+ return cleanPath(paths.filter(Boolean).join("/"));
4
+ }
5
+ function cleanPath(path) {
6
+ return path.replace(/\/{2,}/g, "/");
7
+ }
8
+ function trimPathLeft(path) {
9
+ return path === "/" ? path : path.replace(/^\/{1,}/, "");
10
+ }
11
+ function trimPathRight(path) {
12
+ return path === "/" ? path : path.replace(/\/{1,}$/, "");
13
+ }
14
+ function trimPath(path) {
15
+ return trimPathRight(trimPathLeft(path));
16
+ }
17
+ function resolvePath(basepath, base, to) {
18
+ base = base.replace(new RegExp(`^${basepath}`), "/");
19
+ to = to.replace(new RegExp(`^${basepath}`), "/");
20
+ let baseSegments = parsePathname(base);
21
+ const toSegments = parsePathname(to);
22
+ toSegments.forEach((toSegment, index) => {
23
+ var _a;
24
+ if (toSegment.value === "/") {
25
+ if (!index) {
26
+ baseSegments = [toSegment];
27
+ } else if (index === toSegments.length - 1) {
28
+ baseSegments.push(toSegment);
29
+ } else
30
+ ;
31
+ } else if (toSegment.value === "..") {
32
+ if (baseSegments.length > 1 && ((_a = last(baseSegments)) == null ? void 0 : _a.value) === "/") {
33
+ baseSegments.pop();
34
+ }
35
+ baseSegments.pop();
36
+ } else if (toSegment.value === ".") {
37
+ return;
38
+ } else {
39
+ baseSegments.push(toSegment);
40
+ }
41
+ });
42
+ const joined = joinPaths([basepath, ...baseSegments.map((d) => d.value)]);
43
+ return cleanPath(joined);
44
+ }
45
+ function parsePathname(pathname) {
46
+ if (!pathname) {
47
+ return [];
48
+ }
49
+ pathname = cleanPath(pathname);
50
+ const segments = [];
51
+ if (pathname.slice(0, 1) === "/") {
52
+ pathname = pathname.substring(1);
53
+ segments.push({
54
+ type: "pathname",
55
+ value: "/"
56
+ });
57
+ }
58
+ if (!pathname) {
59
+ return segments;
60
+ }
61
+ const split = pathname.split("/").filter(Boolean);
62
+ segments.push(
63
+ ...split.map((part) => {
64
+ if (part === "$" || part === "*") {
65
+ return {
66
+ type: "wildcard",
67
+ value: part
68
+ };
69
+ }
70
+ if (part.charAt(0) === "$") {
71
+ return {
72
+ type: "param",
73
+ value: part
74
+ };
75
+ }
76
+ return {
77
+ type: "pathname",
78
+ value: part
79
+ };
80
+ })
81
+ );
82
+ if (pathname.slice(-1) === "/") {
83
+ pathname = pathname.substring(1);
84
+ segments.push({
85
+ type: "pathname",
86
+ value: "/"
87
+ });
88
+ }
89
+ return segments;
90
+ }
91
+ function interpolatePath(path, params, leaveWildcards = false) {
92
+ const interpolatedPathSegments = parsePathname(path);
93
+ return joinPaths(
94
+ interpolatedPathSegments.map((segment) => {
95
+ if (segment.type === "wildcard") {
96
+ const value = params[segment.value];
97
+ if (leaveWildcards)
98
+ return `${segment.value}${value ?? ""}`;
99
+ return value;
100
+ }
101
+ if (segment.type === "param") {
102
+ return params[segment.value.substring(1)] ?? "undefined";
103
+ }
104
+ return segment.value;
105
+ })
106
+ );
107
+ }
108
+ function matchPathname(basepath, currentPathname, matchLocation) {
109
+ const pathParams = matchByPath(basepath, currentPathname, matchLocation);
110
+ if (matchLocation.to && !pathParams) {
111
+ return;
112
+ }
113
+ return pathParams ?? {};
114
+ }
115
+ function removeBasepath(basepath, pathname) {
116
+ return basepath != "/" ? pathname.substring(basepath.length) : pathname;
117
+ }
118
+ function matchByPath(basepath, from, matchLocation) {
119
+ from = removeBasepath(basepath, from);
120
+ const to = `${matchLocation.to ?? "$"}`;
121
+ const baseSegments = parsePathname(from);
122
+ const routeSegments = parsePathname(to);
123
+ if (!from.startsWith("/")) {
124
+ baseSegments.unshift({
125
+ type: "pathname",
126
+ value: "/"
127
+ });
128
+ }
129
+ if (!to.startsWith("/")) {
130
+ routeSegments.unshift({
131
+ type: "pathname",
132
+ value: "/"
133
+ });
134
+ }
135
+ const params = {};
136
+ let isMatch = (() => {
137
+ for (let i = 0; i < Math.max(baseSegments.length, routeSegments.length); i++) {
138
+ const baseSegment = baseSegments[i];
139
+ const routeSegment = routeSegments[i];
140
+ const isLastBaseSegment = i >= baseSegments.length - 1;
141
+ const isLastRouteSegment = i >= routeSegments.length - 1;
142
+ if (routeSegment) {
143
+ if (routeSegment.type === "wildcard") {
144
+ if (baseSegment == null ? void 0 : baseSegment.value) {
145
+ const _splat = joinPaths(baseSegments.slice(i).map((d) => d.value));
146
+ params["*"] = _splat;
147
+ params["_splat"] = _splat;
148
+ return true;
149
+ }
150
+ return false;
151
+ }
152
+ if (routeSegment.type === "pathname") {
153
+ if (routeSegment.value === "/" && !(baseSegment == null ? void 0 : baseSegment.value)) {
154
+ return true;
155
+ }
156
+ if (baseSegment) {
157
+ if (matchLocation.caseSensitive) {
158
+ if (routeSegment.value !== baseSegment.value) {
159
+ return false;
160
+ }
161
+ } else if (routeSegment.value.toLowerCase() !== baseSegment.value.toLowerCase()) {
162
+ return false;
163
+ }
164
+ }
165
+ }
166
+ if (!baseSegment) {
167
+ return false;
168
+ }
169
+ if (routeSegment.type === "param") {
170
+ if ((baseSegment == null ? void 0 : baseSegment.value) === "/") {
171
+ return false;
172
+ }
173
+ if (baseSegment.value.charAt(0) !== "$") {
174
+ params[routeSegment.value.substring(1)] = baseSegment.value;
175
+ }
176
+ }
177
+ }
178
+ if (!isLastBaseSegment && isLastRouteSegment) {
179
+ params["**"] = joinPaths(baseSegments.slice(i + 1).map((d) => d.value));
180
+ return !!matchLocation.fuzzy && (routeSegment == null ? void 0 : routeSegment.value) !== "/";
181
+ }
182
+ }
183
+ return true;
184
+ })();
185
+ return isMatch ? params : void 0;
186
+ }
187
+ export {
188
+ cleanPath,
189
+ interpolatePath,
190
+ joinPaths,
191
+ matchByPath,
192
+ matchPathname,
193
+ parsePathname,
194
+ removeBasepath,
195
+ resolvePath,
196
+ trimPath,
197
+ trimPathLeft,
198
+ trimPathRight
199
+ };
200
+ //# sourceMappingURL=path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path.js","sources":["../../src/path.ts"],"sourcesContent":["import { MatchLocation } from './RouterProvider'\nimport { AnyPathParams } from './route'\nimport { last } from './utils'\n\nexport interface Segment {\n type: 'pathname' | 'param' | 'wildcard'\n value: string\n}\n\nexport function joinPaths(paths: (string | undefined)[]) {\n return cleanPath(paths.filter(Boolean).join('/'))\n}\n\nexport function cleanPath(path: string) {\n // remove double slashes\n return path.replace(/\\/{2,}/g, '/')\n}\n\nexport function trimPathLeft(path: string) {\n return path === '/' ? path : path.replace(/^\\/{1,}/, '')\n}\n\nexport function trimPathRight(path: string) {\n return path === '/' ? path : path.replace(/\\/{1,}$/, '')\n}\n\nexport function trimPath(path: string) {\n return trimPathRight(trimPathLeft(path))\n}\n\nexport function resolvePath(basepath: string, base: string, to: string) {\n base = base.replace(new RegExp(`^${basepath}`), '/')\n to = to.replace(new RegExp(`^${basepath}`), '/')\n\n let baseSegments = parsePathname(base)\n const toSegments = parsePathname(to)\n\n toSegments.forEach((toSegment, index) => {\n if (toSegment.value === '/') {\n if (!index) {\n // Leading slash\n baseSegments = [toSegment]\n } else if (index === toSegments.length - 1) {\n // Trailing Slash\n baseSegments.push(toSegment)\n } else {\n // ignore inter-slashes\n }\n } else if (toSegment.value === '..') {\n // Extra trailing slash? pop it off\n if (baseSegments.length > 1 && last(baseSegments)?.value === '/') {\n baseSegments.pop()\n }\n baseSegments.pop()\n } else if (toSegment.value === '.') {\n return\n } else {\n baseSegments.push(toSegment)\n }\n })\n\n const joined = joinPaths([basepath, ...baseSegments.map((d) => d.value)])\n\n return cleanPath(joined)\n}\n\nexport function parsePathname(pathname?: string): Segment[] {\n if (!pathname) {\n return []\n }\n\n pathname = cleanPath(pathname)\n\n const segments: Segment[] = []\n\n if (pathname.slice(0, 1) === '/') {\n pathname = pathname.substring(1)\n segments.push({\n type: 'pathname',\n value: '/',\n })\n }\n\n if (!pathname) {\n return segments\n }\n\n // Remove empty segments and '.' segments\n const split = pathname.split('/').filter(Boolean)\n\n segments.push(\n ...split.map((part): Segment => {\n if (part === '$' || part === '*') {\n return {\n type: 'wildcard',\n value: part,\n }\n }\n\n if (part.charAt(0) === '$') {\n return {\n type: 'param',\n value: part,\n }\n }\n\n return {\n type: 'pathname',\n value: part,\n }\n }),\n )\n\n if (pathname.slice(-1) === '/') {\n pathname = pathname.substring(1)\n segments.push({\n type: 'pathname',\n value: '/',\n })\n }\n\n return segments\n}\n\nexport function interpolatePath(\n path: string | undefined,\n params: any,\n leaveWildcards: boolean = false,\n) {\n const interpolatedPathSegments = parsePathname(path)\n\n return joinPaths(\n interpolatedPathSegments.map((segment) => {\n if (segment.type === 'wildcard') {\n const value = params[segment.value]\n if (leaveWildcards) return `${segment.value}${value ?? ''}`\n return value\n }\n\n if (segment.type === 'param') {\n return params![segment.value.substring(1)] ?? 'undefined'\n }\n\n return segment.value\n }),\n )\n}\n\nexport function matchPathname(\n basepath: string,\n currentPathname: string,\n matchLocation: Pick<MatchLocation, 'to' | 'fuzzy' | 'caseSensitive'>,\n): AnyPathParams | undefined {\n const pathParams = matchByPath(basepath, currentPathname, matchLocation)\n // const searchMatched = matchBySearch(location.search, matchLocation)\n\n if (matchLocation.to && !pathParams) {\n return\n }\n\n return pathParams ?? {}\n}\n\nexport function removeBasepath(basepath: string, pathname: string) {\n return basepath != '/' ? pathname.substring(basepath.length) : pathname\n}\n\nexport function matchByPath(\n basepath: string,\n from: string,\n matchLocation: Pick<MatchLocation, 'to' | 'caseSensitive' | 'fuzzy'>,\n): Record<string, string> | undefined {\n // Remove the base path from the pathname\n from = removeBasepath(basepath, from)\n // Default to to $ (wildcard)\n const to = `${matchLocation.to ?? '$'}`\n // Parse the from and to\n const baseSegments = parsePathname(from)\n const routeSegments = parsePathname(to)\n\n if (!from.startsWith('/')) {\n baseSegments.unshift({\n type: 'pathname',\n value: '/',\n })\n }\n\n if (!to.startsWith('/')) {\n routeSegments.unshift({\n type: 'pathname',\n value: '/',\n })\n }\n\n const params: Record<string, string> = {}\n\n let isMatch = (() => {\n for (\n let i = 0;\n i < Math.max(baseSegments.length, routeSegments.length);\n i++\n ) {\n const baseSegment = baseSegments[i]\n const routeSegment = routeSegments[i]\n\n const isLastBaseSegment = i >= baseSegments.length - 1\n const isLastRouteSegment = i >= routeSegments.length - 1\n\n if (routeSegment) {\n if (routeSegment.type === 'wildcard') {\n if (baseSegment?.value) {\n const _splat = joinPaths(baseSegments.slice(i).map((d) => d.value))\n // TODO: Deprecate *\n params['*'] = _splat\n params['_splat'] = _splat\n return true\n }\n return false\n }\n\n if (routeSegment.type === 'pathname') {\n if (routeSegment.value === '/' && !baseSegment?.value) {\n return true\n }\n\n if (baseSegment) {\n if (matchLocation.caseSensitive) {\n if (routeSegment.value !== baseSegment.value) {\n return false\n }\n } else if (\n routeSegment.value.toLowerCase() !==\n baseSegment.value.toLowerCase()\n ) {\n return false\n }\n }\n }\n\n if (!baseSegment) {\n return false\n }\n\n if (routeSegment.type === 'param') {\n if (baseSegment?.value === '/') {\n return false\n }\n if (baseSegment.value.charAt(0) !== '$') {\n params[routeSegment.value.substring(1)] = baseSegment.value\n }\n }\n }\n\n if (!isLastBaseSegment && isLastRouteSegment) {\n params['**'] = joinPaths(baseSegments.slice(i + 1).map((d) => d.value))\n return !!matchLocation.fuzzy && routeSegment?.value !== '/'\n }\n }\n\n return true\n })()\n\n return isMatch ? (params as Record<string, string>) : undefined\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function encode(obj: any, pfx?: string): string;
2
+ export declare function decode(str: any): {};
@@ -0,0 +1,45 @@
1
+ function encode(obj, pfx) {
2
+ var k, i, tmp, str = "";
3
+ for (k in obj) {
4
+ if ((tmp = obj[k]) !== void 0) {
5
+ if (Array.isArray(tmp)) {
6
+ for (i = 0; i < tmp.length; i++) {
7
+ str && (str += "&");
8
+ str += encodeURIComponent(k) + "=" + encodeURIComponent(tmp[i]);
9
+ }
10
+ } else {
11
+ str && (str += "&");
12
+ str += encodeURIComponent(k) + "=" + encodeURIComponent(tmp);
13
+ }
14
+ }
15
+ }
16
+ return (pfx || "") + str;
17
+ }
18
+ function toValue(mix) {
19
+ if (!mix)
20
+ return "";
21
+ var str = decodeURIComponent(mix);
22
+ if (str === "false")
23
+ return false;
24
+ if (str === "true")
25
+ return true;
26
+ return +str * 0 === 0 && +str + "" === str ? +str : str;
27
+ }
28
+ function decode(str) {
29
+ var tmp, k, out = {}, arr = str.split("&");
30
+ while (tmp = arr.shift()) {
31
+ tmp = tmp.split("=");
32
+ k = tmp.shift();
33
+ if (out[k] !== void 0) {
34
+ out[k] = [].concat(out[k], toValue(tmp.shift()));
35
+ } else {
36
+ out[k] = toValue(tmp.shift());
37
+ }
38
+ }
39
+ return out;
40
+ }
41
+ export {
42
+ decode,
43
+ encode
44
+ };
45
+ //# sourceMappingURL=qss.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qss.js","sources":["../../src/qss.ts"],"sourcesContent":["// @ts-nocheck\n\n// qss has been slightly modified and inlined here for our use cases (and compression's sake). We've included it as a hard dependency for MIT license attribution.\n\nexport function encode(obj, pfx?: string) {\n var k,\n i,\n tmp,\n str = ''\n\n for (k in obj) {\n if ((tmp = obj[k]) !== void 0) {\n if (Array.isArray(tmp)) {\n for (i = 0; i < tmp.length; i++) {\n str && (str += '&')\n str += encodeURIComponent(k) + '=' + encodeURIComponent(tmp[i])\n }\n } else {\n str && (str += '&')\n str += encodeURIComponent(k) + '=' + encodeURIComponent(tmp)\n }\n }\n }\n\n return (pfx || '') + str\n}\n\nfunction toValue(mix) {\n if (!mix) return ''\n var str = decodeURIComponent(mix)\n if (str === 'false') return false\n if (str === 'true') return true\n return +str * 0 === 0 && +str + '' === str ? +str : str\n}\n\nexport function decode(str) {\n var tmp,\n k,\n out = {},\n arr = str.split('&')\n\n while ((tmp = arr.shift())) {\n tmp = tmp.split('=')\n k = tmp.shift()\n if (out[k] !== void 0) {\n out[k] = [].concat(out[k], toValue(tmp.shift()))\n } else {\n out[k] = toValue(tmp.shift())\n }\n }\n\n return out\n}\n"],"names":[],"mappings":"AAIgB,SAAA,OAAO,KAAK,KAAc;AACpC,MAAA,GACF,GACA,KACA,MAAM;AAER,OAAK,KAAK,KAAK;AACb,SAAK,MAAM,IAAI,CAAC,OAAO,QAAQ;AACzB,UAAA,MAAM,QAAQ,GAAG,GAAG;AACtB,aAAK,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AAC/B,kBAAQ,OAAO;AACf,iBAAO,mBAAmB,CAAC,IAAI,MAAM,mBAAmB,IAAI,CAAC,CAAC;AAAA,QAChE;AAAA,MAAA,OACK;AACL,gBAAQ,OAAO;AACf,eAAO,mBAAmB,CAAC,IAAI,MAAM,mBAAmB,GAAG;AAAA,MAC7D;AAAA,IACF;AAAA,EACF;AAEA,UAAQ,OAAO,MAAM;AACvB;AAEA,SAAS,QAAQ,KAAK;AACpB,MAAI,CAAC;AAAY,WAAA;AACb,MAAA,MAAM,mBAAmB,GAAG;AAChC,MAAI,QAAQ;AAAgB,WAAA;AAC5B,MAAI,QAAQ;AAAe,WAAA;AACpB,SAAA,CAAC,MAAM,MAAM,KAAK,CAAC,MAAM,OAAO,MAAM,CAAC,MAAM;AACtD;AAEO,SAAS,OAAO,KAAK;AACtB,MAAA,KACF,GACA,MAAM,CAAA,GACN,MAAM,IAAI,MAAM,GAAG;AAEb,SAAA,MAAM,IAAI,SAAU;AACpB,UAAA,IAAI,MAAM,GAAG;AACnB,QAAI,IAAI;AACJ,QAAA,IAAI,CAAC,MAAM,QAAQ;AACrB,UAAI,CAAC,IAAI,CAAC,EAAE,OAAO,IAAI,CAAC,GAAG,QAAQ,IAAI,MAAM,CAAC,CAAC;AAAA,IAAA,OAC1C;AACL,UAAI,CAAC,IAAI,QAAQ,IAAI,MAAO,CAAA;AAAA,IAC9B;AAAA,EACF;AAEO,SAAA;AACT;"}
@@ -0,0 +1,11 @@
1
+ import { NavigateOptions } from './link';
2
+ import { AnyRoute } from './route';
3
+ import { RoutePaths } from './routeInfo';
4
+ import { RegisteredRouter } from './router';
5
+ export type AnyRedirect = Redirect<any, any, any, any, any>;
6
+ export type Redirect<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RoutePaths<TRouteTree> = '/', TTo extends string = '', TMaskFrom extends RoutePaths<TRouteTree> = TFrom, TMaskTo extends string = ''> = {
7
+ code?: number;
8
+ throw?: any;
9
+ } & NavigateOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>;
10
+ export declare function redirect<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RoutePaths<TRouteTree> = '/', TTo extends string = '', TMaskFrom extends RoutePaths<TRouteTree> = TFrom, TMaskTo extends string = ''>(opts: Redirect<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>): Redirect<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>;
11
+ export declare function isRedirect(obj: any): obj is AnyRedirect;
@@ -0,0 +1,15 @@
1
+ function redirect(opts) {
2
+ opts.isRedirect = true;
3
+ if (opts.throw) {
4
+ throw opts;
5
+ }
6
+ return opts;
7
+ }
8
+ function isRedirect(obj) {
9
+ return !!(obj == null ? void 0 : obj.isRedirect);
10
+ }
11
+ export {
12
+ isRedirect,
13
+ redirect
14
+ };
15
+ //# sourceMappingURL=redirects.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"redirects.js","sources":["../../src/redirects.ts"],"sourcesContent":["import { NavigateOptions } from './link'\nimport { AnyRoute } from './route'\nimport { RoutePaths } from './routeInfo'\nimport { RegisteredRouter } from './router'\n\n// Detect if we're in the DOM\n\nexport type AnyRedirect = Redirect<any, any, any, any, any>\n\nexport type Redirect<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RoutePaths<TRouteTree> = '/',\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouteTree> = TFrom,\n TMaskTo extends string = '',\n> = {\n code?: number\n throw?: any\n} & NavigateOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>\n\nexport function redirect<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RoutePaths<TRouteTree> = '/',\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouteTree> = TFrom,\n TMaskTo extends string = '',\n>(\n opts: Redirect<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>,\n): Redirect<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo> {\n ;(opts as any).isRedirect = true\n if (opts.throw) {\n throw opts\n }\n return opts\n}\n\nexport function isRedirect(obj: any): obj is AnyRedirect {\n return !!obj?.isRedirect\n}\n"],"names":["redirect","opts","isRedirect","throw","obj"],"mappings":";;;;;;;;;;;;AAKA;;AAeO,SAASA,QAAQA,CAOtBC,IAA0D,EACJ;EACpDA,IAAI,CAASC,UAAU,GAAG,IAAI,CAAA;EAChC,IAAID,IAAI,CAACE,KAAK,EAAE;AACd,IAAA,MAAMF,IAAI,CAAA;AACZ,GAAA;AACA,EAAA,OAAOA,IAAI,CAAA;AACb,CAAA;AAEO,SAASC,UAAUA,CAACE,GAAQ,EAAsB;AACvD,EAAA,OAAO,CAAC,CAACA,GAAG,EAAEF,UAAU,CAAA;AAC1B;;;;;"}
1
+ {"version":3,"file":"redirects.js","sources":["../../src/redirects.ts"],"sourcesContent":["import { NavigateOptions } from './link'\nimport { AnyRoute } from './route'\nimport { RoutePaths } from './routeInfo'\nimport { RegisteredRouter } from './router'\n\n// Detect if we're in the DOM\n\nexport type AnyRedirect = Redirect<any, any, any, any, any>\n\nexport type Redirect<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RoutePaths<TRouteTree> = '/',\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouteTree> = TFrom,\n TMaskTo extends string = '',\n> = {\n code?: number\n throw?: any\n} & NavigateOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>\n\nexport function redirect<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RoutePaths<TRouteTree> = '/',\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouteTree> = TFrom,\n TMaskTo extends string = '',\n>(\n opts: Redirect<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>,\n): Redirect<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo> {\n ;(opts as any).isRedirect = true\n if (opts.throw) {\n throw opts\n }\n return opts\n}\n\nexport function isRedirect(obj: any): obj is AnyRedirect {\n return !!obj?.isRedirect\n}\n"],"names":[],"mappings":"AAoBO,SAAS,SAOd,MACsD;AACpD,OAAa,aAAa;AAC5B,MAAI,KAAK,OAAO;AACR,UAAA;AAAA,EACR;AACO,SAAA;AACT;AAEO,SAAS,WAAW,KAA8B;AAChD,SAAA,CAAC,EAAC,2BAAK;AAChB;"}
@@ -0,0 +1,300 @@
1
+ import * as React from 'react';
2
+ import { AnyRouteMatch } from './Matches';
3
+ import { NavigateOptions, ParsePathParams, ToSubOptions } from './link';
4
+ import { ParsedLocation } from './location';
5
+ import { RouteById, RouteIds, RoutePaths } from './routeInfo';
6
+ import { AnyRouter, RegisteredRouter } from './router';
7
+ import { Assign, Expand, IsAny, NoInfer, UnionToIntersection } from './utils';
8
+ import { BuildLocationFn, NavigateFn } from './RouterProvider';
9
+ export declare const rootRouteId: "__root__";
10
+ export type RootRouteId = typeof rootRouteId;
11
+ export type AnyPathParams = {};
12
+ export type SearchSchemaInput = {
13
+ __TSearchSchemaInput__: 'TSearchSchemaInput';
14
+ };
15
+ export type AnySearchSchema = {};
16
+ export type AnyContext = {};
17
+ export interface RouteContext {
18
+ }
19
+ export type PreloadableObj = {
20
+ preload?: () => Promise<void>;
21
+ };
22
+ export type RoutePathOptions<TCustomId, TPath> = {
23
+ path: TPath;
24
+ } | {
25
+ id: TCustomId;
26
+ };
27
+ export type RoutePathOptionsIntersection<TCustomId, TPath> = UnionToIntersection<RoutePathOptions<TCustomId, TPath>>;
28
+ export type RouteOptions<TParentRoute extends AnyRoute = AnyRoute, TCustomId extends string = string, TPath extends string = string, TSearchSchemaInput extends Record<string, any> = {}, TSearchSchema extends Record<string, any> = {}, TSearchSchemaUsed extends Record<string, any> = {}, TFullSearchSchemaInput extends Record<string, any> = TSearchSchemaUsed, TFullSearchSchema extends Record<string, any> = TSearchSchema, TParams extends AnyPathParams = AnyPathParams, TAllParams extends AnyPathParams = TParams, TRouteContextReturn extends RouteContext = RouteContext, TRouteContext extends RouteContext = RouteContext, TRouterContext extends RouteConstraints['TRouterContext'] = AnyContext, TAllContext extends Record<string, any> = AnyContext, TLoaderDeps extends Record<string, any> = {}, TLoaderData extends any = unknown> = BaseRouteOptions<TParentRoute, TCustomId, TPath, TSearchSchemaInput, TSearchSchema, TSearchSchemaUsed, TFullSearchSchemaInput, TFullSearchSchema, TParams, TAllParams, TRouteContextReturn, TRouteContext, TRouterContext, TAllContext, TLoaderDeps, TLoaderData> & UpdatableRouteOptions<NoInfer<TFullSearchSchema>>;
29
+ export type ParamsFallback<TPath extends string, TParams> = unknown extends TParams ? Record<ParsePathParams<TPath>, string> : TParams;
30
+ export type BaseRouteOptions<TParentRoute extends AnyRoute = AnyRoute, TCustomId extends string = string, TPath extends string = string, TSearchSchemaInput extends Record<string, any> = {}, TSearchSchema extends Record<string, any> = {}, TSearchSchemaUsed extends Record<string, any> = {}, TFullSearchSchemaInput extends Record<string, any> = TSearchSchemaUsed, TFullSearchSchema extends Record<string, any> = TSearchSchema, TParams extends AnyPathParams = {}, TAllParams = ParamsFallback<TPath, TParams>, TRouteContextReturn extends RouteContext = RouteContext, TRouteContext extends RouteContext = RouteContext, TRouterContext extends RouteConstraints['TRouterContext'] = AnyContext, TAllContext extends Record<string, any> = AnyContext, TLoaderDeps extends Record<string, any> = {}, TLoaderData extends any = unknown> = RoutePathOptions<TCustomId, TPath> & {
31
+ getParentRoute: () => TParentRoute;
32
+ validateSearch?: SearchSchemaValidator<TSearchSchemaInput, TSearchSchema>;
33
+ shouldReload?: boolean | ((match: LoaderFnContext<TAllParams, TFullSearchSchema, TAllContext, TRouteContext>) => any);
34
+ } & {
35
+ beforeLoad?: BeforeLoadFn<TFullSearchSchema, TParentRoute, TAllParams, TRouteContextReturn, TRouterContext>;
36
+ } & {
37
+ loaderDeps?: (opts: {
38
+ search: TFullSearchSchema;
39
+ }) => TLoaderDeps;
40
+ loader?: RouteLoaderFn<TAllParams, NoInfer<TLoaderDeps>, NoInfer<TAllContext>, NoInfer<TRouteContext>, TLoaderData>;
41
+ } & ({
42
+ parseParams?: (rawParams: IsAny<TPath, any, Record<ParsePathParams<TPath>, string>>) => TParams extends Record<ParsePathParams<TPath>, any> ? TParams : 'parseParams must return an object';
43
+ stringifyParams?: (params: NoInfer<ParamsFallback<TPath, TParams>>) => Record<ParsePathParams<TPath>, string>;
44
+ } | {
45
+ stringifyParams?: never;
46
+ parseParams?: never;
47
+ });
48
+ type BeforeLoadFn<TFullSearchSchema extends Record<string, any>, TParentRoute extends AnyRoute, TAllParams, TRouteContextReturn extends RouteContext, TRouterContext extends RouteConstraints['TRouterContext'] = AnyContext, TContext = IsAny<TParentRoute['types']['allContext'], TRouterContext>> = (opts: {
49
+ search: TFullSearchSchema;
50
+ abortController: AbortController;
51
+ preload: boolean;
52
+ params: TAllParams;
53
+ context: TContext;
54
+ location: ParsedLocation;
55
+ navigate: NavigateFn<AnyRoute>;
56
+ buildLocation: BuildLocationFn<TParentRoute>;
57
+ cause: 'preload' | 'enter' | 'stay';
58
+ }) => Promise<TRouteContextReturn> | TRouteContextReturn | void;
59
+ export type UpdatableRouteOptions<TFullSearchSchema extends Record<string, any>> = {
60
+ caseSensitive?: boolean;
61
+ wrapInSuspense?: boolean;
62
+ component?: RouteComponent;
63
+ errorComponent?: false | null | ErrorRouteComponent;
64
+ pendingComponent?: RouteComponent;
65
+ pendingMs?: number;
66
+ pendingMinMs?: number;
67
+ staleTime?: number;
68
+ gcTime?: number;
69
+ preloadStaleTime?: number;
70
+ preloadGcTime?: number;
71
+ preSearchFilters?: SearchFilter<TFullSearchSchema>[];
72
+ postSearchFilters?: SearchFilter<TFullSearchSchema>[];
73
+ onError?: (err: any) => void;
74
+ onEnter?: (match: AnyRouteMatch) => void;
75
+ onStay?: (match: AnyRouteMatch) => void;
76
+ onLeave?: (match: AnyRouteMatch) => void;
77
+ };
78
+ export type ParseParamsOption<TPath extends string, TParams> = ParseParamsFn<TPath, TParams>;
79
+ export type ParseParamsFn<TPath extends string, TParams> = (rawParams: IsAny<TPath, any, Record<ParsePathParams<TPath>, string>>) => TParams extends Record<ParsePathParams<TPath>, any> ? TParams : 'parseParams must return an object';
80
+ export type ParseParamsObj<TPath extends string, TParams> = {
81
+ parse?: ParseParamsFn<TPath, TParams>;
82
+ };
83
+ export type SearchSchemaValidator<TInput, TReturn> = SearchSchemaValidatorObj<TInput, TReturn> | SearchSchemaValidatorFn<TInput, TReturn>;
84
+ export type SearchSchemaValidatorObj<TInput, TReturn> = {
85
+ parse?: SearchSchemaValidatorFn<TInput, TReturn>;
86
+ };
87
+ export type SearchSchemaValidatorFn<TInput, TReturn> = (searchObj: TInput) => TReturn;
88
+ export type DefinedPathParamWarning = 'Path params cannot be redefined by child routes!';
89
+ export type ParentParams<TParentParams> = AnyPathParams extends TParentParams ? {} : {
90
+ [Key in keyof TParentParams]?: DefinedPathParamWarning;
91
+ };
92
+ export type RouteLoaderFn<TAllParams = {}, TLoaderDeps extends Record<string, any> = {}, TAllContext extends Record<string, any> = AnyContext, TRouteContext extends Record<string, any> = AnyContext, TLoaderData extends any = unknown> = (match: LoaderFnContext<TAllParams, TLoaderDeps, TAllContext, TRouteContext>) => Promise<TLoaderData> | TLoaderData;
93
+ export interface LoaderFnContext<TAllParams = {}, TLoaderDeps extends Record<string, any> = {}, TAllContext extends Record<string, any> = AnyContext, TRouteContext extends Record<string, any> = AnyContext> {
94
+ abortController: AbortController;
95
+ preload: boolean;
96
+ params: TAllParams;
97
+ deps: TLoaderDeps;
98
+ context: Expand<Assign<TAllContext, TRouteContext>>;
99
+ location: ParsedLocation;
100
+ navigate: (opts: NavigateOptions<AnyRoute>) => Promise<void>;
101
+ parentMatchPromise?: Promise<void>;
102
+ cause: 'preload' | 'enter' | 'stay';
103
+ }
104
+ export type SearchFilter<T, U = T> = (prev: T) => U;
105
+ export type ResolveId<TParentRoute, TCustomId extends string, TPath extends string> = TParentRoute extends {
106
+ id: infer TParentId extends string;
107
+ } ? RoutePrefix<TParentId, string extends TCustomId ? TPath : TCustomId> : RootRouteId;
108
+ export type InferFullSearchSchema<TRoute> = TRoute extends {
109
+ types: {
110
+ fullSearchSchema: infer TFullSearchSchema;
111
+ };
112
+ } ? TFullSearchSchema : {};
113
+ export type InferFullSearchSchemaInput<TRoute> = TRoute extends {
114
+ types: {
115
+ fullSearchSchemaInput: infer TFullSearchSchemaInput;
116
+ };
117
+ } ? TFullSearchSchemaInput : {};
118
+ export type ResolveFullSearchSchema<TParentRoute, TSearchSchema> = Expand<Assign<Omit<InferFullSearchSchema<TParentRoute>, keyof RootSearchSchema>, TSearchSchema>>;
119
+ export type ResolveFullSearchSchemaInput<TParentRoute, TSearchSchemaUsed> = Expand<Assign<Omit<InferFullSearchSchemaInput<TParentRoute>, keyof RootSearchSchema>, TSearchSchemaUsed>>;
120
+ export interface AnyRoute extends Route<any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any> {
121
+ }
122
+ export type MergeFromFromParent<T, U> = IsAny<T, U, T & U>;
123
+ export type ResolveAllParams<TParentRoute extends AnyRoute, TParams extends AnyPathParams> = Record<never, string> extends TParentRoute['types']['allParams'] ? TParams : Expand<UnionToIntersection<TParentRoute['types']['allParams'] & TParams> & {}>;
124
+ export type RouteConstraints = {
125
+ TParentRoute: AnyRoute;
126
+ TPath: string;
127
+ TFullPath: string;
128
+ TCustomId: string;
129
+ TId: string;
130
+ TSearchSchema: AnySearchSchema;
131
+ TFullSearchSchema: AnySearchSchema;
132
+ TParams: Record<string, any>;
133
+ TAllParams: Record<string, any>;
134
+ TParentContext: AnyContext;
135
+ TRouteContext: RouteContext;
136
+ TAllContext: AnyContext;
137
+ TRouterContext: AnyContext;
138
+ TChildren: unknown;
139
+ TRouteTree: AnyRoute;
140
+ };
141
+ export declare class RouteApi<TId extends RouteIds<RegisteredRouter['routeTree']>, TRoute extends AnyRoute = RouteById<RegisteredRouter['routeTree'], TId>, TFullSearchSchema extends Record<string, any> = TRoute['types']['fullSearchSchema'], TAllParams extends AnyPathParams = TRoute['types']['allParams'], TAllContext extends Record<string, any> = TRoute['types']['allContext'], TLoaderDeps extends Record<string, any> = TRoute['types']['loaderDeps'], TLoaderData extends any = TRoute['types']['loaderData']> {
142
+ id: TId;
143
+ constructor({ id }: {
144
+ id: TId;
145
+ });
146
+ useMatch: <TSelected = TAllContext>(opts?: {
147
+ select?: ((s: TAllContext) => TSelected) | undefined;
148
+ } | undefined) => TSelected;
149
+ useRouteContext: <TSelected = TAllContext>(opts?: {
150
+ select?: ((s: TAllContext) => TSelected) | undefined;
151
+ } | undefined) => TSelected;
152
+ useSearch: <TSelected = TFullSearchSchema>(opts?: {
153
+ select?: ((s: TFullSearchSchema) => TSelected) | undefined;
154
+ } | undefined) => TSelected;
155
+ useParams: <TSelected = TAllParams>(opts?: {
156
+ select?: ((s: TAllParams) => TSelected) | undefined;
157
+ } | undefined) => TSelected;
158
+ useLoaderDeps: <TSelected = TLoaderDeps>(opts?: {
159
+ select?: ((s: TLoaderDeps) => TSelected) | undefined;
160
+ } | undefined) => TSelected;
161
+ useLoaderData: <TSelected = TLoaderData>(opts?: {
162
+ select?: ((s: TLoaderData) => TSelected) | undefined;
163
+ } | undefined) => TSelected;
164
+ }
165
+ export declare class Route<TParentRoute extends RouteConstraints['TParentRoute'] = AnyRoute, TPath extends RouteConstraints['TPath'] = '/', TFullPath extends RouteConstraints['TFullPath'] = ResolveFullPath<TParentRoute, TPath>, TCustomId extends RouteConstraints['TCustomId'] = string, TId extends RouteConstraints['TId'] = ResolveId<TParentRoute, TCustomId, TPath>, TSearchSchemaInput extends RouteConstraints['TSearchSchema'] = {}, TSearchSchema extends RouteConstraints['TSearchSchema'] = {}, TSearchSchemaUsed extends Record<string, any> = TSearchSchemaInput extends SearchSchemaInput ? Omit<TSearchSchemaInput, keyof SearchSchemaInput> : TSearchSchema, TFullSearchSchemaInput extends Record<string, any> = ResolveFullSearchSchemaInput<TParentRoute, TSearchSchemaUsed>, TFullSearchSchema extends RouteConstraints['TFullSearchSchema'] = ResolveFullSearchSchema<TParentRoute, TSearchSchema>, TParams extends RouteConstraints['TParams'] = Expand<Record<ParsePathParams<TPath>, string>>, TAllParams extends RouteConstraints['TAllParams'] = ResolveAllParams<TParentRoute, TParams>, TRouteContextReturn extends RouteConstraints['TRouteContext'] = RouteContext, TRouteContext extends RouteConstraints['TRouteContext'] = [
166
+ TRouteContextReturn
167
+ ] extends [never] ? RouteContext : TRouteContextReturn, TAllContext extends Expand<Assign<IsAny<TParentRoute['types']['allContext'], {}>, TRouteContext>> = Expand<Assign<IsAny<TParentRoute['types']['allContext'], {}>, TRouteContext>>, TRouterContext extends RouteConstraints['TRouterContext'] = AnyContext, TLoaderDeps extends Record<string, any> = {}, TLoaderData extends any = unknown, TChildren extends RouteConstraints['TChildren'] = unknown, TRouteTree extends RouteConstraints['TRouteTree'] = AnyRoute> {
168
+ isRoot: TParentRoute extends Route<any> ? true : false;
169
+ options: RouteOptions<TParentRoute, TCustomId, TPath, TSearchSchemaInput, TSearchSchema, TSearchSchemaUsed, TFullSearchSchemaInput, TFullSearchSchema, TParams, TAllParams, TRouteContextReturn, TRouteContext, TRouterContext, TAllContext, TLoaderDeps, TLoaderData>;
170
+ test: Expand<Assign<IsAny<TParentRoute['types']['allContext'], {}>, TRouteContext>>;
171
+ parentRoute: TParentRoute;
172
+ id: TId;
173
+ path: TPath;
174
+ fullPath: TFullPath;
175
+ to: TrimPathRight<TFullPath>;
176
+ children?: TChildren;
177
+ originalIndex?: number;
178
+ router?: AnyRouter;
179
+ rank: number;
180
+ constructor(options: RouteOptions<TParentRoute, TCustomId, TPath, TSearchSchemaInput, TSearchSchema, TSearchSchemaUsed, TFullSearchSchemaInput, TFullSearchSchema, TParams, TAllParams, TRouteContextReturn, TRouteContext, TRouterContext, TAllContext, TLoaderDeps, TLoaderData>);
181
+ types: {
182
+ parentRoute: TParentRoute;
183
+ path: TPath;
184
+ to: TrimPathRight<TFullPath>;
185
+ fullPath: TFullPath;
186
+ customId: TCustomId;
187
+ id: TId;
188
+ searchSchema: TSearchSchema;
189
+ searchSchemaInput: TSearchSchemaInput;
190
+ searchSchemaUsed: TSearchSchemaUsed;
191
+ fullSearchSchema: TFullSearchSchema;
192
+ fullSearchSchemaInput: TFullSearchSchemaInput;
193
+ params: TParams;
194
+ allParams: TAllParams;
195
+ routeContext: TRouteContext;
196
+ allContext: TAllContext;
197
+ children: TChildren;
198
+ routeTree: TRouteTree;
199
+ routerContext: TRouterContext;
200
+ loaderData: TLoaderData;
201
+ loaderDeps: TLoaderDeps;
202
+ };
203
+ init: (opts: {
204
+ originalIndex: number;
205
+ }) => void;
206
+ addChildren: <TNewChildren extends AnyRoute[]>(children: TNewChildren) => Route<TParentRoute, TPath, TFullPath, TCustomId, TId, TSearchSchemaInput, TSearchSchema, TSearchSchemaUsed, TFullSearchSchemaInput, TFullSearchSchema, TParams, TAllParams, TRouteContextReturn, TRouteContext, TAllContext, TRouterContext, TLoaderDeps, TLoaderData, TNewChildren, TRouteTree>;
207
+ updateLoader: <TNewLoaderData extends unknown = unknown>(options: {
208
+ loader: RouteLoaderFn<TAllParams, TLoaderDeps, TAllContext, TRouteContext, TNewLoaderData>;
209
+ }) => Route<TParentRoute, TPath, TFullPath, TCustomId, TId, TSearchSchemaInput, TSearchSchema, TSearchSchemaUsed, TFullSearchSchemaInput, TFullSearchSchema, TParams, TAllParams, TRouteContextReturn, TRouteContext, TAllContext, TRouterContext, TLoaderDeps, TNewLoaderData, TChildren, TRouteTree>;
210
+ update: (options: UpdatableRouteOptions<TFullSearchSchema>) => this;
211
+ useMatch: <TSelected = TAllContext>(opts?: {
212
+ select?: ((search: TAllContext) => TSelected) | undefined;
213
+ } | undefined) => TSelected;
214
+ useRouteContext: <TSelected = TAllContext>(opts?: {
215
+ select?: ((search: TAllContext) => TSelected) | undefined;
216
+ } | undefined) => TSelected;
217
+ useSearch: <TSelected = TFullSearchSchema>(opts?: {
218
+ select?: ((search: TFullSearchSchema) => TSelected) | undefined;
219
+ } | undefined) => TSelected;
220
+ useParams: <TSelected = TAllParams>(opts?: {
221
+ select?: ((search: TAllParams) => TSelected) | undefined;
222
+ } | undefined) => TSelected;
223
+ useLoaderDeps: <TSelected = TLoaderDeps>(opts?: {
224
+ select?: ((s: TLoaderDeps) => TSelected) | undefined;
225
+ } | undefined) => TSelected;
226
+ useLoaderData: <TSelected = TLoaderData>(opts?: {
227
+ select?: ((search: TLoaderData) => TSelected) | undefined;
228
+ } | undefined) => TSelected;
229
+ }
230
+ export type AnyRootRoute = RootRoute<any, any, any, any, any, any, any, any>;
231
+ export declare function rootRouteWithContext<TRouterContext extends {}>(): <TSearchSchemaInput extends Record<string, any> = RootSearchSchema, TSearchSchema extends Record<string, any> = RootSearchSchema, TSearchSchemaUsed extends Record<string, any> = RootSearchSchema, TRouteContextReturn extends RouteContext = RouteContext, TRouteContext extends RouteContext = [TRouteContextReturn] extends [never] ? RouteContext : TRouteContextReturn, TLoaderDeps extends Record<string, any> = {}, TLoaderData extends unknown = unknown>(options?: Omit<RouteOptions<AnyRoute, "__root__", "", TSearchSchemaInput, TSearchSchema, TSearchSchemaUsed, TSearchSchemaUsed, TSearchSchema, {}, {}, TRouteContextReturn, TRouteContext, TRouterContext, Assign<TRouterContext, TRouteContext>, TLoaderDeps, TLoaderData>, "path" | "id" | "getParentRoute" | "stringifyParams" | "parseParams" | "caseSensitive"> | undefined) => RootRoute<TSearchSchemaInput, TSearchSchema, TSearchSchemaUsed, TRouteContextReturn, TRouteContext, TRouterContext, {}, unknown>;
232
+ export type RootSearchSchema = {
233
+ __TRootSearchSchema__: '__TRootSearchSchema__';
234
+ };
235
+ export declare class RootRoute<TSearchSchemaInput extends Record<string, any> = RootSearchSchema, TSearchSchema extends Record<string, any> = RootSearchSchema, TSearchSchemaUsed extends Record<string, any> = RootSearchSchema, TRouteContextReturn extends RouteContext = RouteContext, TRouteContext extends RouteContext = [TRouteContextReturn] extends [never] ? RouteContext : TRouteContextReturn, TRouterContext extends {} = {}, TLoaderDeps extends Record<string, any> = {}, TLoaderData extends any = unknown> extends Route<any, // TParentRoute
236
+ '/', // TPath
237
+ '/', // TFullPath
238
+ string, // TCustomId
239
+ RootRouteId, // TId
240
+ TSearchSchemaInput, // TSearchSchemaInput
241
+ TSearchSchema, // TSearchSchema
242
+ TSearchSchemaUsed, TSearchSchemaUsed, // TFullSearchSchemaInput
243
+ TSearchSchema, // TFullSearchSchema
244
+ {}, // TParams
245
+ {}, // TAllParams
246
+ TRouteContextReturn, // TRouteContextReturn
247
+ TRouteContext, // TRouteContext
248
+ Expand<Assign<TRouterContext, TRouteContext>>, // TAllContext
249
+ TRouterContext, // TRouterContext
250
+ TLoaderDeps, TLoaderData, any, // TChildren
251
+ any> {
252
+ constructor(options?: Omit<RouteOptions<AnyRoute, // TParentRoute
253
+ RootRouteId, // TCustomId
254
+ '', // TPath
255
+ TSearchSchemaInput, // TSearchSchemaInput
256
+ TSearchSchema, // TSearchSchema
257
+ TSearchSchemaUsed, TSearchSchemaUsed, // TFullSearchSchemaInput
258
+ TSearchSchema, // TFullSearchSchema
259
+ {}, // TParams
260
+ {}, // TAllParams
261
+ TRouteContextReturn, // TRouteContextReturn
262
+ TRouteContext, // TRouteContext
263
+ TRouterContext, Assign<TRouterContext, TRouteContext>, // TAllContext
264
+ TLoaderDeps, TLoaderData>, 'path' | 'id' | 'getParentRoute' | 'caseSensitive' | 'parseParams' | 'stringifyParams'>);
265
+ }
266
+ export type ResolveFullPath<TParentRoute extends AnyRoute, TPath extends string, TPrefixed = RoutePrefix<TParentRoute['fullPath'], TPath>> = TPrefixed extends RootRouteId ? '/' : TPrefixed;
267
+ type RoutePrefix<TPrefix extends string, TPath extends string> = string extends TPath ? RootRouteId : TPath extends string ? TPrefix extends RootRouteId ? TPath extends '/' ? '/' : `/${TrimPath<TPath>}` : `${TPrefix}/${TPath}` extends '/' ? '/' : `/${TrimPathLeft<`${TrimPathRight<TPrefix>}/${TrimPath<TPath>}`>}` : never;
268
+ export type TrimPath<T extends string> = '' extends T ? '' : TrimPathRight<TrimPathLeft<T>>;
269
+ export type TrimPathLeft<T extends string> = T extends `${RootRouteId}/${infer U}` ? TrimPathLeft<U> : T extends `/${infer U}` ? TrimPathLeft<U> : T;
270
+ export type TrimPathRight<T extends string> = T extends '/' ? '/' : T extends `${infer U}/` ? TrimPathRight<U> : T;
271
+ export type RouteMask<TRouteTree extends AnyRoute> = {
272
+ routeTree: TRouteTree;
273
+ from: RoutePaths<TRouteTree>;
274
+ to?: any;
275
+ params?: any;
276
+ search?: any;
277
+ hash?: any;
278
+ state?: any;
279
+ unmaskOnReload?: boolean;
280
+ };
281
+ export declare function createRouteMask<TRouteTree extends AnyRoute, TFrom extends RoutePaths<TRouteTree>, TTo extends string>(opts: {
282
+ routeTree: TRouteTree;
283
+ } & ToSubOptions<TRouteTree, TFrom, TTo>): RouteMask<TRouteTree>;
284
+ export type ErrorRouteProps = {
285
+ error: unknown;
286
+ info: {
287
+ componentStack: string;
288
+ };
289
+ };
290
+ export type ReactNode = any;
291
+ export type SyncRouteComponent<TProps> = ((props: TProps) => ReactNode) | React.LazyExoticComponent<(props: TProps) => ReactNode>;
292
+ export type AsyncRouteComponent<TProps> = SyncRouteComponent<TProps> & {
293
+ preload?: () => Promise<void>;
294
+ };
295
+ export type RouteComponent<TProps = any> = SyncRouteComponent<TProps> & AsyncRouteComponent<TProps>;
296
+ export type ErrorRouteComponent = RouteComponent<ErrorRouteProps>;
297
+ export declare class NotFoundRoute<TParentRoute extends AnyRootRoute, TSearchSchemaInput extends Record<string, any> = {}, TSearchSchema extends RouteConstraints['TSearchSchema'] = {}, TSearchSchemaUsed extends RouteConstraints['TSearchSchema'] = {}, TFullSearchSchemaInput extends RouteConstraints['TFullSearchSchema'] = ResolveFullSearchSchemaInput<TParentRoute, TSearchSchemaUsed>, TFullSearchSchema extends RouteConstraints['TFullSearchSchema'] = ResolveFullSearchSchema<TParentRoute, TSearchSchema>, TRouteContextReturn extends RouteConstraints['TRouteContext'] = AnyContext, TRouteContext extends RouteConstraints['TRouteContext'] = RouteContext, TAllContext extends Expand<Assign<IsAny<TParentRoute['types']['allContext'], {}>, TRouteContext>> = Expand<Assign<IsAny<TParentRoute['types']['allContext'], {}>, TRouteContext>>, TRouterContext extends RouteConstraints['TRouterContext'] = AnyContext, TLoaderDeps extends Record<string, any> = {}, TLoaderData extends any = unknown, TChildren extends RouteConstraints['TChildren'] = unknown, TRouteTree extends RouteConstraints['TRouteTree'] = AnyRoute> extends Route<TParentRoute, '/404', '/404', '404', '404', TSearchSchemaInput, TSearchSchema, TSearchSchemaUsed, TFullSearchSchemaInput, TFullSearchSchema, {}, {}, TRouteContextReturn, TRouteContext, TAllContext, TRouterContext, TLoaderDeps, TLoaderData, TChildren, TRouteTree> {
298
+ constructor(options: Omit<RouteOptions<TParentRoute, string, string, TSearchSchemaInput, TSearchSchema, TSearchSchemaUsed, TFullSearchSchemaInput, TFullSearchSchema, {}, {}, TRouteContextReturn, TRouteContext, TRouterContext, TAllContext, TLoaderDeps, TLoaderData>, 'caseSensitive' | 'parseParams' | 'stringifyParams' | 'path' | 'id'>);
299
+ }
300
+ export {};