@tanstack/react-router 1.20.0 → 1.20.3-alpha.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 (320) hide show
  1. package/README.md +31 -0
  2. package/dist/cjs/Asset.cjs +41 -0
  3. package/dist/cjs/Asset.cjs.map +1 -0
  4. package/dist/cjs/Asset.d.cts +2 -0
  5. package/dist/cjs/CatchBoundary.cjs +16 -12
  6. package/dist/cjs/CatchBoundary.cjs.map +1 -1
  7. package/dist/cjs/CatchBoundary.d.cts +8 -32
  8. package/dist/cjs/ClientOnly.cjs +20 -0
  9. package/dist/cjs/ClientOnly.cjs.map +1 -0
  10. package/dist/cjs/ClientOnly.d.cts +29 -0
  11. package/dist/cjs/HeadContent.cjs +155 -0
  12. package/dist/cjs/HeadContent.cjs.map +1 -0
  13. package/dist/cjs/HeadContent.d.cts +7 -0
  14. package/dist/cjs/Match.cjs +252 -0
  15. package/dist/cjs/Match.cjs.map +1 -0
  16. package/dist/cjs/Match.d.cts +8 -0
  17. package/dist/cjs/Matches.cjs +39 -287
  18. package/dist/cjs/Matches.cjs.map +1 -1
  19. package/dist/cjs/Matches.d.cts +23 -83
  20. package/dist/cjs/RouterProvider.cjs +17 -140
  21. package/dist/cjs/RouterProvider.cjs.map +1 -1
  22. package/dist/cjs/RouterProvider.d.cts +8 -27
  23. package/dist/cjs/SafeFragment.cjs +8 -0
  24. package/dist/cjs/SafeFragment.cjs.map +1 -0
  25. package/dist/cjs/SafeFragment.d.cts +1 -0
  26. package/dist/cjs/ScriptOnce.cjs +28 -0
  27. package/dist/cjs/ScriptOnce.cjs.map +1 -0
  28. package/dist/cjs/ScriptOnce.d.cts +5 -0
  29. package/dist/cjs/Scripts.cjs +51 -0
  30. package/dist/cjs/Scripts.cjs.map +1 -0
  31. package/dist/cjs/Scripts.d.cts +1 -0
  32. package/dist/cjs/ScrollRestoration.cjs +39 -0
  33. package/dist/cjs/ScrollRestoration.cjs.map +1 -0
  34. package/dist/cjs/ScrollRestoration.d.cts +14 -0
  35. package/dist/cjs/Transitioner.cjs +115 -0
  36. package/dist/cjs/Transitioner.cjs.map +1 -0
  37. package/dist/cjs/Transitioner.d.cts +1 -0
  38. package/dist/cjs/awaited.cjs +12 -65
  39. package/dist/cjs/awaited.cjs.map +1 -1
  40. package/dist/cjs/awaited.d.cts +4 -4
  41. package/dist/cjs/fileRoute.cjs +41 -15
  42. package/dist/cjs/fileRoute.cjs.map +1 -1
  43. package/dist/cjs/fileRoute.d.cts +33 -108
  44. package/dist/cjs/history.d.cts +1 -0
  45. package/dist/cjs/index.cjs +216 -73
  46. package/dist/cjs/index.cjs.map +1 -1
  47. package/dist/cjs/index.d.cts +52 -29
  48. package/dist/cjs/lazyRouteComponent.cjs +40 -29
  49. package/dist/cjs/lazyRouteComponent.cjs.map +1 -1
  50. package/dist/cjs/lazyRouteComponent.d.cts +1 -1
  51. package/dist/cjs/link.cjs +212 -106
  52. package/dist/cjs/link.cjs.map +1 -1
  53. package/dist/cjs/link.d.cts +41 -86
  54. package/dist/cjs/matchContext.cjs +27 -0
  55. package/dist/cjs/matchContext.cjs.map +1 -0
  56. package/dist/cjs/matchContext.d.cts +3 -0
  57. package/dist/cjs/not-found.cjs +9 -15
  58. package/dist/cjs/not-found.cjs.map +1 -1
  59. package/dist/cjs/not-found.d.cts +5 -22
  60. package/dist/cjs/renderRouteNotFound.cjs +22 -0
  61. package/dist/cjs/renderRouteNotFound.cjs.map +1 -0
  62. package/dist/cjs/renderRouteNotFound.d.cts +2 -0
  63. package/dist/cjs/route.cjs +110 -79
  64. package/dist/cjs/route.cjs.map +1 -1
  65. package/dist/cjs/route.d.cts +64 -361
  66. package/dist/cjs/router.cjs +12 -1237
  67. package/dist/cjs/router.cjs.map +1 -1
  68. package/dist/cjs/router.d.cts +69 -237
  69. package/dist/cjs/routerContext.cjs +1 -1
  70. package/dist/cjs/routerContext.cjs.map +1 -1
  71. package/dist/cjs/routerContext.d.cts +7 -2
  72. package/dist/cjs/scroll-restoration.cjs +16 -177
  73. package/dist/cjs/scroll-restoration.cjs.map +1 -1
  74. package/dist/cjs/scroll-restoration.d.cts +1 -18
  75. package/dist/cjs/serializer.d.cts +6 -0
  76. package/dist/cjs/structuralSharing.d.cts +8 -0
  77. package/dist/cjs/typePrimitives.d.cts +16 -0
  78. package/dist/cjs/useBlocker.cjs +138 -9
  79. package/dist/cjs/useBlocker.cjs.map +1 -1
  80. package/dist/cjs/useBlocker.d.cts +64 -7
  81. package/dist/cjs/useCanGoBack.cjs +8 -0
  82. package/dist/cjs/useCanGoBack.cjs.map +1 -0
  83. package/dist/cjs/useCanGoBack.d.cts +1 -0
  84. package/dist/cjs/useLoaderData.cjs +15 -0
  85. package/dist/cjs/useLoaderData.cjs.map +1 -0
  86. package/dist/cjs/useLoaderData.d.cts +8 -0
  87. package/dist/cjs/useLoaderDeps.cjs +14 -0
  88. package/dist/cjs/useLoaderDeps.cjs.map +1 -0
  89. package/dist/cjs/useLoaderDeps.d.cts +8 -0
  90. package/dist/cjs/useLocation.cjs +10 -0
  91. package/dist/cjs/useLocation.cjs.map +1 -0
  92. package/dist/cjs/useLocation.d.cts +7 -0
  93. package/dist/cjs/useMatch.cjs +47 -0
  94. package/dist/cjs/useMatch.cjs.map +1 -0
  95. package/dist/cjs/useMatch.d.cts +10 -0
  96. package/dist/cjs/useNavigate.cjs +18 -19
  97. package/dist/cjs/useNavigate.cjs.map +1 -1
  98. package/dist/cjs/useNavigate.d.cts +4 -8
  99. package/dist/cjs/useParams.cjs +8 -8
  100. package/dist/cjs/useParams.cjs.map +1 -1
  101. package/dist/cjs/useParams.d.cts +9 -8
  102. package/dist/cjs/useRouteContext.cjs +3 -3
  103. package/dist/cjs/useRouteContext.cjs.map +1 -1
  104. package/dist/cjs/useRouteContext.d.cts +3 -7
  105. package/dist/cjs/useRouter.cjs.map +1 -1
  106. package/dist/cjs/useRouter.d.cts +3 -4
  107. package/dist/cjs/useRouterState.cjs +18 -1
  108. package/dist/cjs/useRouterState.cjs.map +1 -1
  109. package/dist/cjs/useRouterState.d.cts +8 -6
  110. package/dist/cjs/useSearch.cjs +7 -4
  111. package/dist/cjs/useSearch.cjs.map +1 -1
  112. package/dist/cjs/useSearch.d.cts +9 -7
  113. package/dist/cjs/utils.cjs +40 -122
  114. package/dist/cjs/utils.cjs.map +1 -1
  115. package/dist/cjs/utils.d.cts +46 -50
  116. package/dist/esm/Asset.d.ts +2 -0
  117. package/dist/esm/Asset.js +41 -0
  118. package/dist/esm/Asset.js.map +1 -0
  119. package/dist/esm/CatchBoundary.d.ts +8 -32
  120. package/dist/esm/CatchBoundary.js +16 -12
  121. package/dist/esm/CatchBoundary.js.map +1 -1
  122. package/dist/esm/ClientOnly.d.ts +29 -0
  123. package/dist/esm/ClientOnly.js +20 -0
  124. package/dist/esm/ClientOnly.js.map +1 -0
  125. package/dist/esm/HeadContent.d.ts +7 -0
  126. package/dist/esm/HeadContent.js +139 -0
  127. package/dist/esm/HeadContent.js.map +1 -0
  128. package/dist/esm/Match.d.ts +8 -0
  129. package/dist/esm/Match.js +235 -0
  130. package/dist/esm/Match.js.map +1 -0
  131. package/dist/esm/Matches.d.ts +23 -83
  132. package/dist/esm/Matches.js +36 -284
  133. package/dist/esm/Matches.js.map +1 -1
  134. package/dist/esm/RouterProvider.d.ts +8 -27
  135. package/dist/esm/RouterProvider.js +20 -126
  136. package/dist/esm/RouterProvider.js.map +1 -1
  137. package/dist/esm/SafeFragment.d.ts +1 -0
  138. package/dist/esm/SafeFragment.js +8 -0
  139. package/dist/esm/SafeFragment.js.map +1 -0
  140. package/dist/esm/ScriptOnce.d.ts +5 -0
  141. package/dist/esm/ScriptOnce.js +28 -0
  142. package/dist/esm/ScriptOnce.js.map +1 -0
  143. package/dist/esm/Scripts.d.ts +1 -0
  144. package/dist/esm/Scripts.js +51 -0
  145. package/dist/esm/Scripts.js.map +1 -0
  146. package/dist/esm/ScrollRestoration.d.ts +14 -0
  147. package/dist/esm/ScrollRestoration.js +39 -0
  148. package/dist/esm/ScrollRestoration.js.map +1 -0
  149. package/dist/esm/Transitioner.d.ts +1 -0
  150. package/dist/esm/Transitioner.js +98 -0
  151. package/dist/esm/Transitioner.js.map +1 -0
  152. package/dist/esm/awaited.d.ts +4 -4
  153. package/dist/esm/awaited.js +12 -65
  154. package/dist/esm/awaited.js.map +1 -1
  155. package/dist/esm/fileRoute.d.ts +33 -108
  156. package/dist/esm/fileRoute.js +38 -12
  157. package/dist/esm/fileRoute.js.map +1 -1
  158. package/dist/esm/history.d.ts +1 -0
  159. package/dist/esm/index.d.ts +52 -29
  160. package/dist/esm/index.js +41 -29
  161. package/dist/esm/index.js.map +1 -1
  162. package/dist/esm/lazyRouteComponent.d.ts +1 -1
  163. package/dist/esm/lazyRouteComponent.js +40 -29
  164. package/dist/esm/lazyRouteComponent.js.map +1 -1
  165. package/dist/esm/link.d.ts +41 -86
  166. package/dist/esm/link.js +212 -106
  167. package/dist/esm/link.js.map +1 -1
  168. package/dist/esm/matchContext.d.ts +3 -0
  169. package/dist/esm/matchContext.js +10 -0
  170. package/dist/esm/matchContext.js.map +1 -0
  171. package/dist/esm/not-found.d.ts +5 -22
  172. package/dist/esm/not-found.js +9 -15
  173. package/dist/esm/not-found.js.map +1 -1
  174. package/dist/esm/renderRouteNotFound.d.ts +2 -0
  175. package/dist/esm/renderRouteNotFound.js +22 -0
  176. package/dist/esm/renderRouteNotFound.js.map +1 -0
  177. package/dist/esm/route.d.ts +64 -361
  178. package/dist/esm/route.js +103 -72
  179. package/dist/esm/route.js.map +1 -1
  180. package/dist/esm/router.d.ts +69 -237
  181. package/dist/esm/router.js +13 -1238
  182. package/dist/esm/router.js.map +1 -1
  183. package/dist/esm/routerContext.d.ts +7 -2
  184. package/dist/esm/routerContext.js +1 -1
  185. package/dist/esm/routerContext.js.map +1 -1
  186. package/dist/esm/scroll-restoration.d.ts +1 -18
  187. package/dist/esm/scroll-restoration.js +17 -161
  188. package/dist/esm/scroll-restoration.js.map +1 -1
  189. package/dist/esm/serializer.d.ts +6 -0
  190. package/dist/esm/structuralSharing.d.ts +8 -0
  191. package/dist/esm/typePrimitives.d.ts +16 -0
  192. package/dist/esm/useBlocker.d.ts +64 -7
  193. package/dist/esm/useBlocker.js +138 -9
  194. package/dist/esm/useBlocker.js.map +1 -1
  195. package/dist/esm/useCanGoBack.d.ts +1 -0
  196. package/dist/esm/useCanGoBack.js +8 -0
  197. package/dist/esm/useCanGoBack.js.map +1 -0
  198. package/dist/esm/useLoaderData.d.ts +8 -0
  199. package/dist/esm/useLoaderData.js +15 -0
  200. package/dist/esm/useLoaderData.js.map +1 -0
  201. package/dist/esm/useLoaderDeps.d.ts +8 -0
  202. package/dist/esm/useLoaderDeps.js +14 -0
  203. package/dist/esm/useLoaderDeps.js.map +1 -0
  204. package/dist/esm/useLocation.d.ts +7 -0
  205. package/dist/esm/useLocation.js +10 -0
  206. package/dist/esm/useLocation.js.map +1 -0
  207. package/dist/esm/useMatch.d.ts +10 -0
  208. package/dist/esm/useMatch.js +30 -0
  209. package/dist/esm/useMatch.js.map +1 -0
  210. package/dist/esm/useNavigate.d.ts +4 -8
  211. package/dist/esm/useNavigate.js +18 -19
  212. package/dist/esm/useNavigate.js.map +1 -1
  213. package/dist/esm/useParams.d.ts +9 -8
  214. package/dist/esm/useParams.js +8 -8
  215. package/dist/esm/useParams.js.map +1 -1
  216. package/dist/esm/useRouteContext.d.ts +3 -7
  217. package/dist/esm/useRouteContext.js +2 -2
  218. package/dist/esm/useRouteContext.js.map +1 -1
  219. package/dist/esm/useRouter.d.ts +3 -4
  220. package/dist/esm/useRouter.js.map +1 -1
  221. package/dist/esm/useRouterState.d.ts +8 -6
  222. package/dist/esm/useRouterState.js +18 -1
  223. package/dist/esm/useRouterState.js.map +1 -1
  224. package/dist/esm/useSearch.d.ts +9 -7
  225. package/dist/esm/useSearch.js +6 -3
  226. package/dist/esm/useSearch.js.map +1 -1
  227. package/dist/esm/utils.d.ts +46 -50
  228. package/dist/esm/utils.js +41 -123
  229. package/dist/esm/utils.js.map +1 -1
  230. package/package.json +30 -31
  231. package/src/Asset.tsx +40 -0
  232. package/src/CatchBoundary.tsx +35 -19
  233. package/src/ClientOnly.tsx +68 -0
  234. package/src/HeadContent.tsx +174 -0
  235. package/src/Match.tsx +330 -0
  236. package/src/Matches.tsx +149 -558
  237. package/src/RouterProvider.tsx +58 -212
  238. package/src/SafeFragment.tsx +5 -0
  239. package/src/ScriptOnce.tsx +32 -0
  240. package/src/Scripts.tsx +65 -0
  241. package/src/ScrollRestoration.tsx +69 -0
  242. package/src/Transitioner.tsx +130 -0
  243. package/src/awaited.tsx +16 -87
  244. package/src/fileRoute.ts +145 -248
  245. package/src/history.ts +2 -1
  246. package/src/index.tsx +368 -30
  247. package/src/lazyRouteComponent.tsx +68 -54
  248. package/src/link.tsx +397 -522
  249. package/src/matchContext.tsx +8 -0
  250. package/src/not-found.tsx +13 -34
  251. package/src/renderRouteNotFound.tsx +27 -0
  252. package/src/route.tsx +572 -0
  253. package/src/router.ts +99 -2067
  254. package/src/routerContext.tsx +8 -2
  255. package/src/scroll-restoration.tsx +23 -224
  256. package/src/serializer.ts +7 -0
  257. package/src/structuralSharing.ts +47 -0
  258. package/src/typePrimitives.ts +84 -0
  259. package/src/useBlocker.tsx +297 -15
  260. package/src/useCanGoBack.ts +5 -0
  261. package/src/useLoaderData.tsx +80 -0
  262. package/src/useLoaderDeps.tsx +58 -0
  263. package/src/useLocation.tsx +41 -0
  264. package/src/useMatch.tsx +119 -0
  265. package/src/useNavigate.tsx +41 -61
  266. package/src/useParams.tsx +88 -23
  267. package/src/useRouteContext.ts +24 -18
  268. package/src/useRouter.tsx +4 -5
  269. package/src/useRouterState.tsx +52 -10
  270. package/src/useSearch.tsx +87 -24
  271. package/src/utils.ts +97 -312
  272. package/dist/cjs/createServerFn.cjs +0 -40
  273. package/dist/cjs/createServerFn.cjs.map +0 -1
  274. package/dist/cjs/createServerFn.d.cts +0 -44
  275. package/dist/cjs/defer.cjs +0 -30
  276. package/dist/cjs/defer.cjs.map +0 -1
  277. package/dist/cjs/defer.d.cts +0 -25
  278. package/dist/cjs/location.d.cts +0 -12
  279. package/dist/cjs/path.cjs +0 -213
  280. package/dist/cjs/path.cjs.map +0 -1
  281. package/dist/cjs/path.d.cts +0 -24
  282. package/dist/cjs/qss.cjs +0 -45
  283. package/dist/cjs/qss.cjs.map +0 -1
  284. package/dist/cjs/qss.d.cts +0 -2
  285. package/dist/cjs/redirects.cjs +0 -16
  286. package/dist/cjs/redirects.cjs.map +0 -1
  287. package/dist/cjs/redirects.d.cts +0 -18
  288. package/dist/cjs/routeInfo.d.cts +0 -33
  289. package/dist/cjs/searchParams.cjs +0 -63
  290. package/dist/cjs/searchParams.cjs.map +0 -1
  291. package/dist/cjs/searchParams.d.cts +0 -7
  292. package/dist/esm/createServerFn.d.ts +0 -44
  293. package/dist/esm/createServerFn.js +0 -40
  294. package/dist/esm/createServerFn.js.map +0 -1
  295. package/dist/esm/defer.d.ts +0 -25
  296. package/dist/esm/defer.js +0 -30
  297. package/dist/esm/defer.js.map +0 -1
  298. package/dist/esm/location.d.ts +0 -12
  299. package/dist/esm/path.d.ts +0 -24
  300. package/dist/esm/path.js +0 -213
  301. package/dist/esm/path.js.map +0 -1
  302. package/dist/esm/qss.d.ts +0 -2
  303. package/dist/esm/qss.js +0 -45
  304. package/dist/esm/qss.js.map +0 -1
  305. package/dist/esm/redirects.d.ts +0 -18
  306. package/dist/esm/redirects.js +0 -16
  307. package/dist/esm/redirects.js.map +0 -1
  308. package/dist/esm/routeInfo.d.ts +0 -33
  309. package/dist/esm/searchParams.d.ts +0 -7
  310. package/dist/esm/searchParams.js +0 -63
  311. package/dist/esm/searchParams.js.map +0 -1
  312. package/src/createServerFn.ts +0 -107
  313. package/src/defer.ts +0 -70
  314. package/src/location.ts +0 -13
  315. package/src/path.ts +0 -280
  316. package/src/qss.ts +0 -53
  317. package/src/redirects.ts +0 -56
  318. package/src/route.ts +0 -1356
  319. package/src/routeInfo.ts +0 -62
  320. package/src/searchParams.ts +0 -79
package/dist/cjs/path.cjs DELETED
@@ -1,213 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const utils = require("./utils.cjs");
4
- function joinPaths(paths) {
5
- return cleanPath(paths.filter(Boolean).join("/"));
6
- }
7
- function cleanPath(path) {
8
- return path.replace(/\/{2,}/g, "/");
9
- }
10
- function trimPathLeft(path) {
11
- return path === "/" ? path : path.replace(/^\/{1,}/, "");
12
- }
13
- function trimPathRight(path) {
14
- return path === "/" ? path : path.replace(/\/{1,}$/, "");
15
- }
16
- function trimPath(path) {
17
- return trimPathRight(trimPathLeft(path));
18
- }
19
- function resolvePath(basepath, base, to) {
20
- base = base.replace(new RegExp(`^${basepath}`), "/");
21
- to = to.replace(new RegExp(`^${basepath}`), "/");
22
- let baseSegments = parsePathname(base);
23
- const toSegments = parsePathname(to);
24
- toSegments.forEach((toSegment, index) => {
25
- var _a;
26
- if (toSegment.value === "/") {
27
- if (!index) {
28
- baseSegments = [toSegment];
29
- } else if (index === toSegments.length - 1) {
30
- baseSegments.push(toSegment);
31
- } else
32
- ;
33
- } else if (toSegment.value === "..") {
34
- if (baseSegments.length > 1 && ((_a = utils.last(baseSegments)) == null ? void 0 : _a.value) === "/") {
35
- baseSegments.pop();
36
- }
37
- baseSegments.pop();
38
- } else if (toSegment.value === ".") {
39
- return;
40
- } else {
41
- baseSegments.push(toSegment);
42
- }
43
- });
44
- const joined = joinPaths([basepath, ...baseSegments.map((d) => d.value)]);
45
- return cleanPath(joined);
46
- }
47
- function parsePathname(pathname) {
48
- if (!pathname) {
49
- return [];
50
- }
51
- pathname = cleanPath(pathname);
52
- const segments = [];
53
- if (pathname.slice(0, 1) === "/") {
54
- pathname = pathname.substring(1);
55
- segments.push({
56
- type: "pathname",
57
- value: "/"
58
- });
59
- }
60
- if (!pathname) {
61
- return segments;
62
- }
63
- const split = pathname.split("/").filter(Boolean);
64
- segments.push(
65
- ...split.map((part) => {
66
- if (part === "$" || part === "*") {
67
- return {
68
- type: "wildcard",
69
- value: part
70
- };
71
- }
72
- if (part.charAt(0) === "$") {
73
- return {
74
- type: "param",
75
- value: part
76
- };
77
- }
78
- return {
79
- type: "pathname",
80
- value: part
81
- };
82
- })
83
- );
84
- if (pathname.slice(-1) === "/") {
85
- pathname = pathname.substring(1);
86
- segments.push({
87
- type: "pathname",
88
- value: "/"
89
- });
90
- }
91
- return segments;
92
- }
93
- function interpolatePath({
94
- path,
95
- params,
96
- leaveWildcards,
97
- leaveParams
98
- }) {
99
- const interpolatedPathSegments = parsePathname(path);
100
- return joinPaths(
101
- interpolatedPathSegments.map((segment) => {
102
- if (segment.type === "wildcard") {
103
- const value = params._splat;
104
- if (leaveWildcards)
105
- return `${segment.value}${value ?? ""}`;
106
- return value;
107
- }
108
- if (segment.type === "param") {
109
- if (leaveParams) {
110
- const value = params[segment.value];
111
- return `${segment.value}${value ?? ""}`;
112
- }
113
- return params[segment.value.substring(1)] ?? "undefined";
114
- }
115
- return segment.value;
116
- })
117
- );
118
- }
119
- function matchPathname(basepath, currentPathname, matchLocation) {
120
- const pathParams = matchByPath(basepath, currentPathname, matchLocation);
121
- if (matchLocation.to && !pathParams) {
122
- return;
123
- }
124
- return pathParams ?? {};
125
- }
126
- function removeBasepath(basepath, pathname) {
127
- return basepath != "/" ? pathname.replace(basepath, "") : pathname;
128
- }
129
- function matchByPath(basepath, from, matchLocation) {
130
- from = removeBasepath(basepath, from);
131
- const to = removeBasepath(basepath, `${matchLocation.to ?? "$"}`);
132
- const baseSegments = parsePathname(from);
133
- const routeSegments = parsePathname(to);
134
- if (!from.startsWith("/")) {
135
- baseSegments.unshift({
136
- type: "pathname",
137
- value: "/"
138
- });
139
- }
140
- if (!to.startsWith("/")) {
141
- routeSegments.unshift({
142
- type: "pathname",
143
- value: "/"
144
- });
145
- }
146
- const params = {};
147
- let isMatch = (() => {
148
- for (let i = 0; i < Math.max(baseSegments.length, routeSegments.length); i++) {
149
- const baseSegment = baseSegments[i];
150
- const routeSegment = routeSegments[i];
151
- const isLastBaseSegment = i >= baseSegments.length - 1;
152
- const isLastRouteSegment = i >= routeSegments.length - 1;
153
- if (routeSegment) {
154
- if (routeSegment.type === "wildcard") {
155
- if (baseSegment == null ? void 0 : baseSegment.value) {
156
- const _splat = decodeURI(
157
- joinPaths(baseSegments.slice(i).map((d) => d.value))
158
- );
159
- params["*"] = _splat;
160
- params["_splat"] = _splat;
161
- return true;
162
- }
163
- return false;
164
- }
165
- if (routeSegment.type === "pathname") {
166
- if (routeSegment.value === "/" && !(baseSegment == null ? void 0 : baseSegment.value)) {
167
- return true;
168
- }
169
- if (baseSegment) {
170
- if (matchLocation.caseSensitive) {
171
- if (routeSegment.value !== baseSegment.value) {
172
- return false;
173
- }
174
- } else if (routeSegment.value.toLowerCase() !== baseSegment.value.toLowerCase()) {
175
- return false;
176
- }
177
- }
178
- }
179
- if (!baseSegment) {
180
- return false;
181
- }
182
- if (routeSegment.type === "param") {
183
- if ((baseSegment == null ? void 0 : baseSegment.value) === "/") {
184
- return false;
185
- }
186
- if (baseSegment.value.charAt(0) !== "$") {
187
- params[routeSegment.value.substring(1)] = decodeURI(
188
- baseSegment.value
189
- );
190
- }
191
- }
192
- }
193
- if (!isLastBaseSegment && isLastRouteSegment) {
194
- params["**"] = joinPaths(baseSegments.slice(i + 1).map((d) => d.value));
195
- return !!matchLocation.fuzzy && (routeSegment == null ? void 0 : routeSegment.value) !== "/";
196
- }
197
- }
198
- return true;
199
- })();
200
- return isMatch ? params : void 0;
201
- }
202
- exports.cleanPath = cleanPath;
203
- exports.interpolatePath = interpolatePath;
204
- exports.joinPaths = joinPaths;
205
- exports.matchByPath = matchByPath;
206
- exports.matchPathname = matchPathname;
207
- exports.parsePathname = parsePathname;
208
- exports.removeBasepath = removeBasepath;
209
- exports.resolvePath = resolvePath;
210
- exports.trimPath = trimPath;
211
- exports.trimPathLeft = trimPathLeft;
212
- exports.trimPathRight = trimPathRight;
213
- //# sourceMappingURL=path.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"path.cjs","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\ninterface InterpolatePathOptions {\n path?: string\n params: any\n leaveWildcards?: boolean\n leaveParams?: boolean\n}\nexport function interpolatePath({\n path,\n params,\n leaveWildcards,\n leaveParams,\n}: InterpolatePathOptions) {\n const interpolatedPathSegments = parsePathname(path)\n\n return joinPaths(\n interpolatedPathSegments.map((segment) => {\n if (segment.type === 'wildcard') {\n const value = params._splat\n if (leaveWildcards) return `${segment.value}${value ?? ''}`\n return value\n }\n\n if (segment.type === 'param') {\n if (leaveParams) {\n const value = params[segment.value]\n return `${segment.value}${value ?? ''}`\n }\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.replace(basepath, '') : 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 = removeBasepath(basepath, `${matchLocation.to ?? '$'}`)\n\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 = decodeURI(\n joinPaths(baseSegments.slice(i).map((d) => d.value)),\n )\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)] = decodeURI(\n baseSegment.value,\n )\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":["last"],"mappings":"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"}
@@ -1,24 +0,0 @@
1
- import { MatchLocation } from './RouterProvider.cjs';
2
- import { AnyPathParams } from './route.cjs';
3
- export interface Segment {
4
- type: 'pathname' | 'param' | 'wildcard';
5
- value: string;
6
- }
7
- export declare function joinPaths(paths: (string | undefined)[]): string;
8
- export declare function cleanPath(path: string): string;
9
- export declare function trimPathLeft(path: string): string;
10
- export declare function trimPathRight(path: string): string;
11
- export declare function trimPath(path: string): string;
12
- export declare function resolvePath(basepath: string, base: string, to: string): string;
13
- export declare function parsePathname(pathname?: string): Segment[];
14
- interface InterpolatePathOptions {
15
- path?: string;
16
- params: any;
17
- leaveWildcards?: boolean;
18
- leaveParams?: boolean;
19
- }
20
- export declare function interpolatePath({ path, params, leaveWildcards, leaveParams, }: InterpolatePathOptions): string;
21
- export declare function matchPathname(basepath: string, currentPathname: string, matchLocation: Pick<MatchLocation, 'to' | 'fuzzy' | 'caseSensitive'>): AnyPathParams | undefined;
22
- export declare function removeBasepath(basepath: string, pathname: string): string;
23
- export declare function matchByPath(basepath: string, from: string, matchLocation: Pick<MatchLocation, 'to' | 'caseSensitive' | 'fuzzy'>): Record<string, string> | undefined;
24
- export {};
package/dist/cjs/qss.cjs DELETED
@@ -1,45 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- function encode(obj, pfx) {
4
- var k, i, tmp, str = "";
5
- for (k in obj) {
6
- if ((tmp = obj[k]) !== void 0) {
7
- if (Array.isArray(tmp)) {
8
- for (i = 0; i < tmp.length; i++) {
9
- str && (str += "&");
10
- str += encodeURIComponent(k) + "=" + encodeURIComponent(tmp[i]);
11
- }
12
- } else {
13
- str && (str += "&");
14
- str += encodeURIComponent(k) + "=" + encodeURIComponent(tmp);
15
- }
16
- }
17
- }
18
- return (pfx || "") + str;
19
- }
20
- function toValue(mix) {
21
- if (!mix)
22
- return "";
23
- var str = decodeURIComponent(mix);
24
- if (str === "false")
25
- return false;
26
- if (str === "true")
27
- return true;
28
- return +str * 0 === 0 && +str + "" === str ? +str : str;
29
- }
30
- function decode(str, pfx) {
31
- var tmp, k, out = {}, arr = (pfx ? str.substr(pfx.length) : str).split("&");
32
- while (tmp = arr.shift()) {
33
- tmp = tmp.split("=");
34
- k = tmp.shift();
35
- if (out[k] !== void 0) {
36
- out[k] = [].concat(out[k], toValue(tmp.shift()));
37
- } else {
38
- out[k] = toValue(tmp.shift());
39
- }
40
- }
41
- return out;
42
- }
43
- exports.decode = decode;
44
- exports.encode = encode;
45
- //# sourceMappingURL=qss.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"qss.cjs","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, pfx?: string) {\n var tmp,\n k,\n out = {},\n arr = (pfx ? str.substr(pfx.length) : 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;AAEgB,SAAA,OAAO,KAAK,KAAc;AACxC,MAAI,KACF,GACA,MAAM,CAAA,GACN,OAAO,MAAM,IAAI,OAAO,IAAI,MAAM,IAAI,KAAK,MAAM,GAAG;AAE9C,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;;;"}
@@ -1,2 +0,0 @@
1
- export declare function encode(obj: any, pfx?: string): string;
2
- export declare function decode(str: any, pfx?: string): {};
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- function redirect(opts) {
4
- opts.isRedirect = true;
5
- opts.statusCode = opts.statusCode || opts.code || 301;
6
- if (opts.throw ?? true) {
7
- throw opts;
8
- }
9
- return opts;
10
- }
11
- function isRedirect(obj) {
12
- return !!(obj == null ? void 0 : obj.isRedirect);
13
- }
14
- exports.isRedirect = isRedirect;
15
- exports.redirect = redirect;
16
- //# sourceMappingURL=redirects.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"redirects.cjs","sources":["../../src/redirects.ts"],"sourcesContent":["import { PickAsRequired } from '.'\nimport { NavigateOptions } from './link'\nimport { AnyRoute } from './route'\nimport { RoutePaths } from './routeInfo'\nimport { RegisteredRouter } from './router'\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 /**\n * @deprecated Use `statusCode` instead\n **/\n href?: string\n code?: number\n statusCode?: number\n throw?: any\n} & NavigateOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>\n\nexport type ResolvedRedirect<\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> = PickAsRequired<\n Redirect<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>,\n 'code' | 'statusCode' | 'href'\n>\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 opts.statusCode = opts.statusCode || opts.code || 301\n if (opts.throw ?? true) {\n throw opts\n }\n\n return opts\n}\n\nexport function isRedirect(obj: any): obj is AnyRedirect {\n return !!obj?.isRedirect\n}\n"],"names":[],"mappings":";;AAmCO,SAAS,SAOd,MACsD;AACpD,OAAa,aAAa;AAC5B,OAAK,aAAa,KAAK,cAAc,KAAK,QAAQ;AAC9C,MAAA,KAAK,SAAS,MAAM;AAChB,UAAA;AAAA,EACR;AAEO,SAAA;AACT;AAEO,SAAS,WAAW,KAA8B;AAChD,SAAA,CAAC,EAAC,2BAAK;AAChB;;;"}
@@ -1,18 +0,0 @@
1
- import { PickAsRequired } from '.';
2
- import { NavigateOptions } from './link.cjs';
3
- import { AnyRoute } from './route.cjs';
4
- import { RoutePaths } from './routeInfo.cjs';
5
- import { RegisteredRouter } from './router.cjs';
6
- export type AnyRedirect = Redirect<any, any, any, any, any>;
7
- export type Redirect<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RoutePaths<TRouteTree> = '/', TTo extends string = '', TMaskFrom extends RoutePaths<TRouteTree> = TFrom, TMaskTo extends string = ''> = {
8
- /**
9
- * @deprecated Use `statusCode` instead
10
- **/
11
- href?: string;
12
- code?: number;
13
- statusCode?: number;
14
- throw?: any;
15
- } & NavigateOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>;
16
- export type ResolvedRedirect<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RoutePaths<TRouteTree> = '/', TTo extends string = '', TMaskFrom extends RoutePaths<TRouteTree> = TFrom, TMaskTo extends string = ''> = PickAsRequired<Redirect<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>, 'code' | 'statusCode' | 'href'>;
17
- 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>;
18
- export declare function isRedirect(obj: any): obj is AnyRedirect;
@@ -1,33 +0,0 @@
1
- import { AnyRoute } from './route.cjs';
2
- import { Expand, UnionToIntersection, UnionToTuple } from './utils.cjs';
3
- export type ParseRoute<TRouteTree, TAcc = TRouteTree> = TRouteTree extends {
4
- types: {
5
- children: infer TChildren;
6
- };
7
- } ? TChildren extends unknown[] ? ParseRoute<TChildren[number], TAcc | TChildren[number]> : TAcc : TAcc;
8
- export type RoutesById<TRouteTree extends AnyRoute> = {
9
- [K in ParseRoute<TRouteTree> as K['id']]: K;
10
- };
11
- export type RouteById<TRouteTree extends AnyRoute, TId> = Extract<Extract<ParseRoute<TRouteTree>, {
12
- id: TId;
13
- }>, AnyRoute>;
14
- export type RouteIds<TRouteTree extends AnyRoute> = ParseRoute<TRouteTree>['id'];
15
- export type RoutesByPath<TRouteTree extends AnyRoute> = {
16
- [K in ParseRoute<TRouteTree> as K['fullPath']]: K;
17
- };
18
- export type RouteByPath<TRouteTree extends AnyRoute, TPath> = Extract<Extract<ParseRoute<TRouteTree>, {
19
- fullPath: TPath;
20
- }>, AnyRoute>;
21
- export type RoutePaths<TRouteTree extends AnyRoute> = ParseRoute<TRouteTree>['fullPath'] | '/';
22
- export type RoutePathsAutoComplete<TRouteTree extends AnyRoute, T> = T | RoutePaths<TRouteTree> | (string & {});
23
- type UnionizeCollisions<T, U> = {
24
- [P in keyof T & keyof U]: T[P] extends U[P] ? T[P] : T[P] | U[P];
25
- };
26
- type Reducer<T, U, C = UnionizeCollisions<T, U>> = C & Omit<T, keyof C> & Omit<U, keyof C>;
27
- type Reduce<T extends any[], Result = unknown> = T extends [
28
- infer First,
29
- ...infer Rest
30
- ] ? Reduce<Rest, Reducer<Result, First>> : Result;
31
- export type FullSearchSchema<TRouteTree extends AnyRoute> = Partial<Expand<Reduce<UnionToTuple<ParseRoute<TRouteTree>['types']['fullSearchSchema']>>>>;
32
- export type AllParams<TRouteTree extends AnyRoute> = Expand<UnionToIntersection<ParseRoute<TRouteTree>['types']['allParams']>>;
33
- export {};
@@ -1,63 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const qss = require("./qss.cjs");
4
- const defaultParseSearch = parseSearchWith(JSON.parse);
5
- const defaultStringifySearch = stringifySearchWith(
6
- JSON.stringify,
7
- JSON.parse
8
- );
9
- function parseSearchWith(parser) {
10
- return (searchStr) => {
11
- if (searchStr.substring(0, 1) === "?") {
12
- searchStr = searchStr.substring(1);
13
- }
14
- let query = qss.decode(searchStr);
15
- for (let key in query) {
16
- const value = query[key];
17
- if (typeof value === "string") {
18
- try {
19
- query[key] = parser(value);
20
- } catch (err) {
21
- }
22
- }
23
- }
24
- return query;
25
- };
26
- }
27
- function stringifySearchWith(stringify, parser) {
28
- function stringifyValue(val) {
29
- if (typeof val === "object" && val !== null) {
30
- try {
31
- return stringify(val);
32
- } catch (err) {
33
- }
34
- } else if (typeof val === "string" && typeof parser === "function") {
35
- try {
36
- parser(val);
37
- return stringify(val);
38
- } catch (err) {
39
- }
40
- }
41
- return val;
42
- }
43
- return (search) => {
44
- search = { ...search };
45
- if (search) {
46
- Object.keys(search).forEach((key) => {
47
- const val = search[key];
48
- if (typeof val === "undefined" || val === void 0) {
49
- delete search[key];
50
- } else {
51
- search[key] = stringifyValue(val);
52
- }
53
- });
54
- }
55
- const searchStr = qss.encode(search).toString();
56
- return searchStr ? `?${searchStr}` : "";
57
- };
58
- }
59
- exports.defaultParseSearch = defaultParseSearch;
60
- exports.defaultStringifySearch = defaultStringifySearch;
61
- exports.parseSearchWith = parseSearchWith;
62
- exports.stringifySearchWith = stringifySearchWith;
63
- //# sourceMappingURL=searchParams.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"searchParams.cjs","sources":["../../src/searchParams.ts"],"sourcesContent":["import { decode, encode } from './qss'\nimport { AnySearchSchema } from './route'\n\nexport const defaultParseSearch = parseSearchWith(JSON.parse)\nexport const defaultStringifySearch = stringifySearchWith(\n JSON.stringify,\n JSON.parse,\n)\n\nexport function parseSearchWith(parser: (str: string) => any) {\n return (searchStr: string): AnySearchSchema => {\n if (searchStr.substring(0, 1) === '?') {\n searchStr = searchStr.substring(1)\n }\n\n let query: Record<string, unknown> = decode(searchStr)\n\n // Try to parse any query params that might be json\n for (let key in query) {\n const value = query[key]\n if (typeof value === 'string') {\n try {\n query[key] = parser(value)\n } catch (err) {\n //\n }\n }\n }\n\n return query\n }\n}\n\nexport function stringifySearchWith(\n stringify: (search: any) => string,\n parser?: (str: string) => any,\n) {\n function stringifyValue(val: any) {\n if (typeof val === 'object' && val !== null) {\n try {\n return stringify(val)\n } catch (err) {\n // silent\n }\n } else if (typeof val === 'string' && typeof parser === 'function') {\n try {\n // Check if it's a valid parseable string.\n // If it is, then stringify it again.\n parser(val)\n return stringify(val)\n } catch (err) {\n // silent\n }\n }\n return val\n }\n\n return (search: Record<string, any>) => {\n search = { ...search }\n\n if (search) {\n Object.keys(search).forEach((key) => {\n const val = search[key]\n if (typeof val === 'undefined' || val === undefined) {\n delete search[key]\n } else {\n search[key] = stringifyValue(val)\n }\n })\n }\n\n const searchStr = encode(search as Record<string, string>).toString()\n\n return searchStr ? `?${searchStr}` : ''\n }\n}\n\nexport type SearchSerializer = (searchObj: Record<string, any>) => string\nexport type SearchParser = (searchStr: string) => Record<string, any>\n"],"names":["decode","encode"],"mappings":";;;AAGa,MAAA,qBAAqB,gBAAgB,KAAK,KAAK;AACrD,MAAM,yBAAyB;AAAA,EACpC,KAAK;AAAA,EACL,KAAK;AACP;AAEO,SAAS,gBAAgB,QAA8B;AAC5D,SAAO,CAAC,cAAuC;AAC7C,QAAI,UAAU,UAAU,GAAG,CAAC,MAAM,KAAK;AACzB,kBAAA,UAAU,UAAU,CAAC;AAAA,IACnC;AAEI,QAAA,QAAiCA,WAAO,SAAS;AAGrD,aAAS,OAAO,OAAO;AACf,YAAA,QAAQ,MAAM,GAAG;AACnB,UAAA,OAAO,UAAU,UAAU;AACzB,YAAA;AACI,gBAAA,GAAG,IAAI,OAAO,KAAK;AAAA,iBAClB,KAAK;AAAA,QAEd;AAAA,MACF;AAAA,IACF;AAEO,WAAA;AAAA,EAAA;AAEX;AAEgB,SAAA,oBACd,WACA,QACA;AACA,WAAS,eAAe,KAAU;AAChC,QAAI,OAAO,QAAQ,YAAY,QAAQ,MAAM;AACvC,UAAA;AACF,eAAO,UAAU,GAAG;AAAA,eACb,KAAK;AAAA,MAEd;AAAA,eACS,OAAO,QAAQ,YAAY,OAAO,WAAW,YAAY;AAC9D,UAAA;AAGF,eAAO,GAAG;AACV,eAAO,UAAU,GAAG;AAAA,eACb,KAAK;AAAA,MAEd;AAAA,IACF;AACO,WAAA;AAAA,EACT;AAEA,SAAO,CAAC,WAAgC;AAC7B,aAAA,EAAE,GAAG;AAEd,QAAI,QAAQ;AACV,aAAO,KAAK,MAAM,EAAE,QAAQ,CAAC,QAAQ;AAC7B,cAAA,MAAM,OAAO,GAAG;AACtB,YAAI,OAAO,QAAQ,eAAe,QAAQ,QAAW;AACnD,iBAAO,OAAO,GAAG;AAAA,QAAA,OACZ;AACE,iBAAA,GAAG,IAAI,eAAe,GAAG;AAAA,QAClC;AAAA,MAAA,CACD;AAAA,IACH;AAEA,UAAM,YAAYC,IAAA,OAAO,MAAgC,EAAE,SAAS;AAE7D,WAAA,YAAY,IAAI,SAAS,KAAK;AAAA,EAAA;AAEzC;;;;;"}
@@ -1,7 +0,0 @@
1
- import { AnySearchSchema } from './route.cjs';
2
- export declare const defaultParseSearch: (searchStr: string) => AnySearchSchema;
3
- export declare const defaultStringifySearch: (search: Record<string, any>) => string;
4
- export declare function parseSearchWith(parser: (str: string) => any): (searchStr: string) => AnySearchSchema;
5
- export declare function stringifySearchWith(stringify: (search: any) => string, parser?: (str: string) => any): (search: Record<string, any>) => string;
6
- export type SearchSerializer = (searchObj: Record<string, any>) => string;
7
- export type SearchParser = (searchStr: string) => Record<string, any>;
@@ -1,44 +0,0 @@
1
- export declare const serverFnReturnTypeHeader = "server-fn-return-type";
2
- export declare const serverFnPayloadTypeHeader = "server-fn-payload-type";
3
- export interface JsonResponse<TData> extends Response {
4
- json(): Promise<TData>;
5
- }
6
- export type FetcherOptionsBase = {
7
- method?: 'GET' | 'POST';
8
- };
9
- export type FetcherOptions = FetcherOptionsBase & {
10
- requestInit?: RequestInit;
11
- };
12
- export type FetchFnCtx = {
13
- method: 'GET' | 'POST';
14
- request: Request;
15
- };
16
- export type FetchFn<TPayload, TResponse> = {
17
- (payload: TPayload, ctx: FetchFnCtx): Promise<TResponse> | TResponse;
18
- url?: string;
19
- };
20
- export type CompiledFetcherFnOptions<TPayload> = {
21
- method: 'GET' | 'POST';
22
- payload: TPayload | undefined;
23
- requestInit?: RequestInit;
24
- };
25
- export type CompiledFetcherFn<TPayload, TResponse> = {
26
- (opts: CompiledFetcherFnOptions<TPayload>): Promise<TResponse>;
27
- url: string;
28
- };
29
- type IsPayloadOptional<T> = [T] extends [undefined] ? true : false;
30
- export type Fetcher<TPayload, TResponse> = (IsPayloadOptional<TPayload> extends true ? {
31
- (payload?: TPayload, opts?: FetcherOptions): Promise<JsonResponseOrPayload<TResponse>>;
32
- } : {
33
- (payload: TPayload, opts?: FetcherOptions): Promise<JsonResponseOrPayload<TResponse>>;
34
- }) & {
35
- url: string;
36
- };
37
- export type JsonResponseOrPayload<TResponse> = TResponse extends JsonResponse<infer TData> ? TData : TResponse;
38
- export declare function createServerFn<TPayload extends any = undefined, TResponse = unknown>(method: 'GET' | 'POST', fn: FetchFn<TPayload, TResponse>): Fetcher<TPayload, TResponse>;
39
- export declare function json<TData>(payload: TData, opts?: {
40
- status?: number;
41
- statusText?: string;
42
- headers?: HeadersInit;
43
- }): JsonResponse<TData>;
44
- export {};
@@ -1,40 +0,0 @@
1
- import invariant from "tiny-invariant";
2
- const serverFnReturnTypeHeader = "server-fn-return-type";
3
- const serverFnPayloadTypeHeader = "server-fn-payload-type";
4
- function createServerFn(method, fn) {
5
- const compiledFn = fn;
6
- invariant(
7
- compiledFn.url,
8
- `createServerFn must be called with a function that is marked with the 'use server' pragma.`
9
- );
10
- return Object.assign(
11
- async (payload, opts) => {
12
- return compiledFn({
13
- method,
14
- payload: payload || void 0,
15
- requestInit: opts == null ? void 0 : opts.requestInit
16
- });
17
- },
18
- {
19
- url: fn.url
20
- }
21
- );
22
- }
23
- function json(payload, opts) {
24
- return new Response(JSON.stringify(payload), {
25
- status: (opts == null ? void 0 : opts.status) || 200,
26
- statusText: (opts == null ? void 0 : opts.statusText) || (opts == null ? void 0 : opts.status) === 200 ? "OK" : "Error",
27
- headers: {
28
- "Content-Type": "application/json",
29
- [serverFnReturnTypeHeader]: "json",
30
- ...opts == null ? void 0 : opts.headers
31
- }
32
- });
33
- }
34
- export {
35
- createServerFn,
36
- json,
37
- serverFnPayloadTypeHeader,
38
- serverFnReturnTypeHeader
39
- };
40
- //# sourceMappingURL=createServerFn.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createServerFn.js","sources":["../../src/createServerFn.ts"],"sourcesContent":["import invariant from 'tiny-invariant'\n\nexport const serverFnReturnTypeHeader = 'server-fn-return-type'\nexport const serverFnPayloadTypeHeader = 'server-fn-payload-type'\n\nexport interface JsonResponse<TData> extends Response {\n json(): Promise<TData>\n}\n\nexport type FetcherOptionsBase = {\n method?: 'GET' | 'POST'\n}\n\nexport type FetcherOptions = FetcherOptionsBase & {\n requestInit?: RequestInit\n}\n\nexport type FetchFnCtx = {\n method: 'GET' | 'POST'\n request: Request\n}\n\nexport type FetchFn<TPayload, TResponse> = {\n (payload: TPayload, ctx: FetchFnCtx): Promise<TResponse> | TResponse\n url?: string\n}\n\nexport type CompiledFetcherFnOptions<TPayload> = {\n method: 'GET' | 'POST'\n payload: TPayload | undefined\n requestInit?: RequestInit\n}\n\nexport type CompiledFetcherFn<TPayload, TResponse> = {\n (opts: CompiledFetcherFnOptions<TPayload>): Promise<TResponse>\n url: string\n}\n\ntype IsPayloadOptional<T> = [T] extends [undefined] ? true : false\n\nexport type Fetcher<TPayload, TResponse> =\n (IsPayloadOptional<TPayload> extends true\n ? {\n (\n payload?: TPayload,\n opts?: FetcherOptions,\n ): Promise<JsonResponseOrPayload<TResponse>>\n }\n : {\n (\n payload: TPayload,\n opts?: FetcherOptions,\n ): Promise<JsonResponseOrPayload<TResponse>>\n }) & {\n url: string\n }\n\nexport type JsonResponseOrPayload<TResponse> =\n TResponse extends JsonResponse<infer TData> ? TData : TResponse\n\nexport function createServerFn<\n TPayload extends any = undefined,\n TResponse = unknown,\n>(\n method: 'GET' | 'POST',\n fn: FetchFn<TPayload, TResponse>,\n): Fetcher<TPayload, TResponse> {\n // Cast the compiled function that will be injected by vinxi\n const compiledFn = fn as unknown as CompiledFetcherFn<TPayload, TResponse>\n\n invariant(\n compiledFn.url,\n `createServerFn must be called with a function that is marked with the 'use server' pragma.`,\n )\n\n return Object.assign(\n async (payload: TPayload, opts?: FetcherOptions) => {\n return compiledFn({\n method,\n payload: payload || undefined,\n requestInit: opts?.requestInit,\n })\n },\n {\n url: fn.url!,\n },\n ) as Fetcher<TPayload, TResponse>\n}\n\nexport function json<TData>(\n payload: TData,\n opts?: {\n status?: number\n statusText?: string\n headers?: HeadersInit\n },\n): JsonResponse<TData> {\n return new Response(JSON.stringify(payload), {\n status: opts?.status || 200,\n statusText: opts?.statusText || opts?.status === 200 ? 'OK' : 'Error',\n headers: {\n 'Content-Type': 'application/json',\n [serverFnReturnTypeHeader]: 'json',\n ...opts?.headers,\n },\n })\n}\n"],"names":[],"mappings":";AAEO,MAAM,2BAA2B;AACjC,MAAM,4BAA4B;AAyDzB,SAAA,eAId,QACA,IAC8B;AAE9B,QAAM,aAAa;AAEnB;AAAA,IACE,WAAW;AAAA,IACX;AAAA,EAAA;AAGF,SAAO,OAAO;AAAA,IACZ,OAAO,SAAmB,SAA0B;AAClD,aAAO,WAAW;AAAA,QAChB;AAAA,QACA,SAAS,WAAW;AAAA,QACpB,aAAa,6BAAM;AAAA,MAAA,CACpB;AAAA,IACH;AAAA,IACA;AAAA,MACE,KAAK,GAAG;AAAA,IACV;AAAA,EAAA;AAEJ;AAEgB,SAAA,KACd,SACA,MAKqB;AACrB,SAAO,IAAI,SAAS,KAAK,UAAU,OAAO,GAAG;AAAA,IAC3C,SAAQ,6BAAM,WAAU;AAAA,IACxB,aAAY,6BAAM,gBAAc,6BAAM,YAAW,MAAM,OAAO;AAAA,IAC9D,SAAS;AAAA,MACP,gBAAgB;AAAA,MAChB,CAAC,wBAAwB,GAAG;AAAA,MAC5B,GAAG,6BAAM;AAAA,IACX;AAAA,EAAA,CACD;AACH;"}
@@ -1,25 +0,0 @@
1
- import { defaultSerializeError } from './router.js';
2
- export type DeferredPromiseState<T> = {
3
- uid: string;
4
- resolve?: () => void;
5
- promise?: Promise<void>;
6
- __resolvePromise?: () => void;
7
- } & ({
8
- status: 'pending';
9
- data?: T;
10
- error?: unknown;
11
- } | {
12
- status: 'success';
13
- data: T;
14
- } | {
15
- status: 'error';
16
- data?: T;
17
- error: unknown;
18
- });
19
- export type DeferredPromise<T> = Promise<T> & {
20
- __deferredState: DeferredPromiseState<T>;
21
- };
22
- export declare function defer<T>(_promise: Promise<T>, options?: {
23
- serializeError?: typeof defaultSerializeError;
24
- }): DeferredPromise<T>;
25
- export declare function isDehydratedDeferred(obj: any): boolean;
package/dist/esm/defer.js DELETED
@@ -1,30 +0,0 @@
1
- import { defaultSerializeError } from "./router.js";
2
- function defer(_promise, options) {
3
- const promise = _promise;
4
- if (!promise.__deferredState) {
5
- promise.__deferredState = {
6
- uid: Math.random().toString(36).slice(2),
7
- status: "pending"
8
- };
9
- const state = promise.__deferredState;
10
- promise.then((data) => {
11
- state.status = "success";
12
- state.data = data;
13
- }).catch((error) => {
14
- state.status = "error";
15
- state.error = {
16
- data: ((options == null ? void 0 : options.serializeError) ?? defaultSerializeError)(error),
17
- __isServerError: true
18
- };
19
- });
20
- }
21
- return promise;
22
- }
23
- function isDehydratedDeferred(obj) {
24
- return typeof obj === "object" && obj !== null && !(obj instanceof Promise) && !obj.then && "__deferredState" in obj;
25
- }
26
- export {
27
- defer,
28
- isDehydratedDeferred
29
- };
30
- //# sourceMappingURL=defer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"defer.js","sources":["../../src/defer.ts"],"sourcesContent":["import { defaultSerializeError } from './router'\n\nexport type DeferredPromiseState<T> = {\n uid: string\n resolve?: () => void\n promise?: Promise<void>\n __resolvePromise?: () => void\n} & (\n | {\n status: 'pending'\n data?: T\n error?: unknown\n }\n | {\n status: 'success'\n data: T\n }\n | {\n status: 'error'\n data?: T\n error: unknown\n }\n)\n\nexport type DeferredPromise<T> = Promise<T> & {\n __deferredState: DeferredPromiseState<T>\n}\n\nexport function defer<T>(\n _promise: Promise<T>,\n options?: {\n serializeError?: typeof defaultSerializeError\n },\n) {\n const promise = _promise as DeferredPromise<T>\n\n if (!promise.__deferredState) {\n promise.__deferredState = {\n uid: Math.random().toString(36).slice(2),\n status: 'pending',\n }\n\n const state = promise.__deferredState\n\n promise\n .then((data) => {\n state.status = 'success' as any\n state.data = data\n })\n .catch((error) => {\n state.status = 'error' as any\n state.error = {\n data: (options?.serializeError ?? defaultSerializeError)(error),\n __isServerError: true,\n }\n })\n }\n\n return promise\n}\n\nexport function isDehydratedDeferred(obj: any): boolean {\n return (\n typeof obj === 'object' &&\n obj !== null &&\n !(obj instanceof Promise) &&\n !obj.then &&\n '__deferredState' in obj\n )\n}\n"],"names":[],"mappings":";AA4BgB,SAAA,MACd,UACA,SAGA;AACA,QAAM,UAAU;AAEZ,MAAA,CAAC,QAAQ,iBAAiB;AAC5B,YAAQ,kBAAkB;AAAA,MACxB,KAAK,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,CAAC;AAAA,MACvC,QAAQ;AAAA,IAAA;AAGV,UAAM,QAAQ,QAAQ;AAGnB,YAAA,KAAK,CAAC,SAAS;AACd,YAAM,SAAS;AACf,YAAM,OAAO;AAAA,IAAA,CACd,EACA,MAAM,CAAC,UAAU;AAChB,YAAM,SAAS;AACf,YAAM,QAAQ;AAAA,QACZ,QAAO,mCAAS,mBAAkB,uBAAuB,KAAK;AAAA,QAC9D,iBAAiB;AAAA,MAAA;AAAA,IACnB,CACD;AAAA,EACL;AAEO,SAAA;AACT;AAEO,SAAS,qBAAqB,KAAmB;AAEpD,SAAA,OAAO,QAAQ,YACf,QAAQ,QACR,EAAE,eAAe,YACjB,CAAC,IAAI,QACL,qBAAqB;AAEzB;"}
@@ -1,12 +0,0 @@
1
- import { HistoryState } from '@tanstack/history';
2
- import { AnySearchSchema } from './route.js';
3
- export interface ParsedLocation<TSearchObj extends AnySearchSchema = {}> {
4
- href: string;
5
- pathname: string;
6
- search: TSearchObj;
7
- searchStr: string;
8
- state: HistoryState;
9
- hash: string;
10
- maskedLocation?: ParsedLocation<TSearchObj>;
11
- unmaskOnReload?: boolean;
12
- }