@benjavicente/router-core 1.168.9

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 (380) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +5 -0
  3. package/bin/intent.js +25 -0
  4. package/dist/cjs/Matches.cjs +17 -0
  5. package/dist/cjs/Matches.cjs.map +1 -0
  6. package/dist/cjs/Matches.d.cts +139 -0
  7. package/dist/cjs/RouterProvider.d.cts +27 -0
  8. package/dist/cjs/config.cjs +11 -0
  9. package/dist/cjs/config.cjs.map +1 -0
  10. package/dist/cjs/config.d.cts +17 -0
  11. package/dist/cjs/defer.cjs +41 -0
  12. package/dist/cjs/defer.cjs.map +1 -0
  13. package/dist/cjs/defer.d.cts +37 -0
  14. package/dist/cjs/fileRoute.d.cts +24 -0
  15. package/dist/cjs/global.d.cts +7 -0
  16. package/dist/cjs/hash-scroll.cjs +20 -0
  17. package/dist/cjs/hash-scroll.cjs.map +1 -0
  18. package/dist/cjs/hash-scroll.d.cts +7 -0
  19. package/dist/cjs/history.d.cts +8 -0
  20. package/dist/cjs/index.cjs +96 -0
  21. package/dist/cjs/index.d.cts +53 -0
  22. package/dist/cjs/invariant.cjs +8 -0
  23. package/dist/cjs/invariant.cjs.map +1 -0
  24. package/dist/cjs/invariant.d.cts +1 -0
  25. package/dist/cjs/isServer/client.cjs +7 -0
  26. package/dist/cjs/isServer/client.cjs.map +1 -0
  27. package/dist/cjs/isServer/client.d.cts +1 -0
  28. package/dist/cjs/isServer/development.cjs +7 -0
  29. package/dist/cjs/isServer/development.cjs.map +1 -0
  30. package/dist/cjs/isServer/development.d.cts +1 -0
  31. package/dist/cjs/isServer/server.cjs +7 -0
  32. package/dist/cjs/isServer/server.cjs.map +1 -0
  33. package/dist/cjs/isServer/server.d.cts +1 -0
  34. package/dist/cjs/link.cjs +6 -0
  35. package/dist/cjs/link.cjs.map +1 -0
  36. package/dist/cjs/link.d.cts +221 -0
  37. package/dist/cjs/load-matches.cjs +659 -0
  38. package/dist/cjs/load-matches.cjs.map +1 -0
  39. package/dist/cjs/load-matches.d.cts +18 -0
  40. package/dist/cjs/location.d.cts +50 -0
  41. package/dist/cjs/lru-cache.cjs +70 -0
  42. package/dist/cjs/lru-cache.cjs.map +1 -0
  43. package/dist/cjs/lru-cache.d.cts +6 -0
  44. package/dist/cjs/manifest.cjs +18 -0
  45. package/dist/cjs/manifest.cjs.map +1 -0
  46. package/dist/cjs/manifest.d.cts +35 -0
  47. package/dist/cjs/new-process-route-tree.cjs +754 -0
  48. package/dist/cjs/new-process-route-tree.cjs.map +1 -0
  49. package/dist/cjs/new-process-route-tree.d.cts +236 -0
  50. package/dist/cjs/not-found.cjs +26 -0
  51. package/dist/cjs/not-found.cjs.map +1 -0
  52. package/dist/cjs/not-found.d.cts +32 -0
  53. package/dist/cjs/path.cjs +252 -0
  54. package/dist/cjs/path.cjs.map +1 -0
  55. package/dist/cjs/path.d.cts +56 -0
  56. package/dist/cjs/qss.cjs +70 -0
  57. package/dist/cjs/qss.cjs.map +1 -0
  58. package/dist/cjs/qss.d.cts +33 -0
  59. package/dist/cjs/redirect.cjs +56 -0
  60. package/dist/cjs/redirect.cjs.map +1 -0
  61. package/dist/cjs/redirect.d.cts +77 -0
  62. package/dist/cjs/rewrite.cjs +68 -0
  63. package/dist/cjs/rewrite.cjs.map +1 -0
  64. package/dist/cjs/rewrite.d.cts +30 -0
  65. package/dist/cjs/root.cjs +7 -0
  66. package/dist/cjs/root.cjs.map +1 -0
  67. package/dist/cjs/root.d.cts +3 -0
  68. package/dist/cjs/route.cjs +100 -0
  69. package/dist/cjs/route.cjs.map +1 -0
  70. package/dist/cjs/route.d.cts +552 -0
  71. package/dist/cjs/routeInfo.d.cts +54 -0
  72. package/dist/cjs/router.cjs +1173 -0
  73. package/dist/cjs/router.cjs.map +1 -0
  74. package/dist/cjs/router.d.cts +734 -0
  75. package/dist/cjs/scroll-restoration-inline.cjs +6 -0
  76. package/dist/cjs/scroll-restoration-inline.cjs.map +1 -0
  77. package/dist/cjs/scroll-restoration-inline.d.cts +6 -0
  78. package/dist/cjs/scroll-restoration-script/client.cjs +9 -0
  79. package/dist/cjs/scroll-restoration-script/client.cjs.map +1 -0
  80. package/dist/cjs/scroll-restoration-script/client.d.cts +2 -0
  81. package/dist/cjs/scroll-restoration-script/server.cjs +30 -0
  82. package/dist/cjs/scroll-restoration-script/server.cjs.map +1 -0
  83. package/dist/cjs/scroll-restoration-script/server.d.cts +2 -0
  84. package/dist/cjs/scroll-restoration.cjs +191 -0
  85. package/dist/cjs/scroll-restoration.cjs.map +1 -0
  86. package/dist/cjs/scroll-restoration.d.cts +38 -0
  87. package/dist/cjs/searchMiddleware.cjs +55 -0
  88. package/dist/cjs/searchMiddleware.cjs.map +1 -0
  89. package/dist/cjs/searchMiddleware.d.cts +25 -0
  90. package/dist/cjs/searchParams.cjs +65 -0
  91. package/dist/cjs/searchParams.cjs.map +1 -0
  92. package/dist/cjs/searchParams.d.cts +31 -0
  93. package/dist/cjs/ssr/client.cjs +7 -0
  94. package/dist/cjs/ssr/client.d.cts +6 -0
  95. package/dist/cjs/ssr/constants.cjs +8 -0
  96. package/dist/cjs/ssr/constants.cjs.map +1 -0
  97. package/dist/cjs/ssr/constants.d.cts +3 -0
  98. package/dist/cjs/ssr/createRequestHandler.cjs +44 -0
  99. package/dist/cjs/ssr/createRequestHandler.cjs.map +1 -0
  100. package/dist/cjs/ssr/createRequestHandler.d.cts +9 -0
  101. package/dist/cjs/ssr/handlerCallback.cjs +8 -0
  102. package/dist/cjs/ssr/handlerCallback.cjs.map +1 -0
  103. package/dist/cjs/ssr/handlerCallback.d.cts +9 -0
  104. package/dist/cjs/ssr/headers.cjs +21 -0
  105. package/dist/cjs/ssr/headers.cjs.map +1 -0
  106. package/dist/cjs/ssr/headers.d.cts +3 -0
  107. package/dist/cjs/ssr/json.cjs +11 -0
  108. package/dist/cjs/ssr/json.cjs.map +1 -0
  109. package/dist/cjs/ssr/json.d.cts +10 -0
  110. package/dist/cjs/ssr/serializer/RawStream.cjs +287 -0
  111. package/dist/cjs/ssr/serializer/RawStream.cjs.map +1 -0
  112. package/dist/cjs/ssr/serializer/RawStream.d.cts +64 -0
  113. package/dist/cjs/ssr/serializer/ShallowErrorPlugin.cjs +32 -0
  114. package/dist/cjs/ssr/serializer/ShallowErrorPlugin.cjs.map +1 -0
  115. package/dist/cjs/ssr/serializer/ShallowErrorPlugin.d.cts +9 -0
  116. package/dist/cjs/ssr/serializer/seroval-plugins.cjs +13 -0
  117. package/dist/cjs/ssr/serializer/seroval-plugins.cjs.map +1 -0
  118. package/dist/cjs/ssr/serializer/seroval-plugins.d.cts +2 -0
  119. package/dist/cjs/ssr/serializer/transformer.cjs +53 -0
  120. package/dist/cjs/ssr/serializer/transformer.cjs.map +1 -0
  121. package/dist/cjs/ssr/serializer/transformer.d.cts +91 -0
  122. package/dist/cjs/ssr/server.cjs +13 -0
  123. package/dist/cjs/ssr/server.d.cts +6 -0
  124. package/dist/cjs/ssr/ssr-client.cjs +183 -0
  125. package/dist/cjs/ssr/ssr-client.cjs.map +1 -0
  126. package/dist/cjs/ssr/ssr-client.d.cts +10 -0
  127. package/dist/cjs/ssr/ssr-match-id.cjs +12 -0
  128. package/dist/cjs/ssr/ssr-match-id.cjs.map +1 -0
  129. package/dist/cjs/ssr/ssr-match-id.d.cts +2 -0
  130. package/dist/cjs/ssr/ssr-server.cjs +279 -0
  131. package/dist/cjs/ssr/ssr-server.cjs.map +1 -0
  132. package/dist/cjs/ssr/ssr-server.d.cts +42 -0
  133. package/dist/cjs/ssr/transformStreamWithRouter.cjs +327 -0
  134. package/dist/cjs/ssr/transformStreamWithRouter.cjs.map +1 -0
  135. package/dist/cjs/ssr/transformStreamWithRouter.d.cts +11 -0
  136. package/dist/cjs/ssr/tsrScript.cjs +6 -0
  137. package/dist/cjs/ssr/tsrScript.cjs.map +1 -0
  138. package/dist/cjs/ssr/tsrScript.d.cts +1 -0
  139. package/dist/cjs/ssr/types.d.cts +30 -0
  140. package/dist/cjs/stores.cjs +148 -0
  141. package/dist/cjs/stores.cjs.map +1 -0
  142. package/dist/cjs/stores.d.cts +70 -0
  143. package/dist/cjs/structuralSharing.d.cts +4 -0
  144. package/dist/cjs/typePrimitives.d.cts +65 -0
  145. package/dist/cjs/useLoaderData.d.cts +5 -0
  146. package/dist/cjs/useLoaderDeps.d.cts +5 -0
  147. package/dist/cjs/useNavigate.d.cts +3 -0
  148. package/dist/cjs/useParams.d.cts +5 -0
  149. package/dist/cjs/useRouteContext.d.cts +9 -0
  150. package/dist/cjs/useSearch.d.cts +5 -0
  151. package/dist/cjs/utils.cjs +339 -0
  152. package/dist/cjs/utils.cjs.map +1 -0
  153. package/dist/cjs/utils.d.cts +178 -0
  154. package/dist/cjs/validators.d.cts +51 -0
  155. package/dist/esm/Matches.d.ts +139 -0
  156. package/dist/esm/Matches.js +17 -0
  157. package/dist/esm/Matches.js.map +1 -0
  158. package/dist/esm/RouterProvider.d.ts +27 -0
  159. package/dist/esm/config.d.ts +17 -0
  160. package/dist/esm/config.js +11 -0
  161. package/dist/esm/config.js.map +1 -0
  162. package/dist/esm/defer.d.ts +37 -0
  163. package/dist/esm/defer.js +40 -0
  164. package/dist/esm/defer.js.map +1 -0
  165. package/dist/esm/fileRoute.d.ts +24 -0
  166. package/dist/esm/global.d.ts +7 -0
  167. package/dist/esm/hash-scroll.d.ts +7 -0
  168. package/dist/esm/hash-scroll.js +20 -0
  169. package/dist/esm/hash-scroll.js.map +1 -0
  170. package/dist/esm/history.d.ts +8 -0
  171. package/dist/esm/index.d.ts +53 -0
  172. package/dist/esm/index.js +24 -0
  173. package/dist/esm/invariant.d.ts +1 -0
  174. package/dist/esm/invariant.js +8 -0
  175. package/dist/esm/invariant.js.map +1 -0
  176. package/dist/esm/isServer/client.d.ts +1 -0
  177. package/dist/esm/isServer/client.js +6 -0
  178. package/dist/esm/isServer/client.js.map +1 -0
  179. package/dist/esm/isServer/development.d.ts +1 -0
  180. package/dist/esm/isServer/development.js +6 -0
  181. package/dist/esm/isServer/development.js.map +1 -0
  182. package/dist/esm/isServer/server.d.ts +1 -0
  183. package/dist/esm/isServer/server.js +6 -0
  184. package/dist/esm/isServer/server.js.map +1 -0
  185. package/dist/esm/link.d.ts +221 -0
  186. package/dist/esm/link.js +6 -0
  187. package/dist/esm/link.js.map +1 -0
  188. package/dist/esm/load-matches.d.ts +18 -0
  189. package/dist/esm/load-matches.js +657 -0
  190. package/dist/esm/load-matches.js.map +1 -0
  191. package/dist/esm/location.d.ts +50 -0
  192. package/dist/esm/lru-cache.d.ts +6 -0
  193. package/dist/esm/lru-cache.js +70 -0
  194. package/dist/esm/lru-cache.js.map +1 -0
  195. package/dist/esm/manifest.d.ts +35 -0
  196. package/dist/esm/manifest.js +17 -0
  197. package/dist/esm/manifest.js.map +1 -0
  198. package/dist/esm/new-process-route-tree.d.ts +236 -0
  199. package/dist/esm/new-process-route-tree.js +749 -0
  200. package/dist/esm/new-process-route-tree.js.map +1 -0
  201. package/dist/esm/not-found.d.ts +32 -0
  202. package/dist/esm/not-found.js +25 -0
  203. package/dist/esm/not-found.js.map +1 -0
  204. package/dist/esm/path.d.ts +56 -0
  205. package/dist/esm/path.js +243 -0
  206. package/dist/esm/path.js.map +1 -0
  207. package/dist/esm/qss.d.ts +33 -0
  208. package/dist/esm/qss.js +69 -0
  209. package/dist/esm/qss.js.map +1 -0
  210. package/dist/esm/redirect.d.ts +77 -0
  211. package/dist/esm/redirect.js +53 -0
  212. package/dist/esm/redirect.js.map +1 -0
  213. package/dist/esm/rewrite.d.ts +30 -0
  214. package/dist/esm/rewrite.js +65 -0
  215. package/dist/esm/rewrite.js.map +1 -0
  216. package/dist/esm/root.d.ts +3 -0
  217. package/dist/esm/root.js +7 -0
  218. package/dist/esm/root.js.map +1 -0
  219. package/dist/esm/route.d.ts +552 -0
  220. package/dist/esm/route.js +98 -0
  221. package/dist/esm/route.js.map +1 -0
  222. package/dist/esm/routeInfo.d.ts +54 -0
  223. package/dist/esm/router.d.ts +734 -0
  224. package/dist/esm/router.js +1165 -0
  225. package/dist/esm/router.js.map +1 -0
  226. package/dist/esm/scroll-restoration-inline.d.ts +6 -0
  227. package/dist/esm/scroll-restoration-inline.js +6 -0
  228. package/dist/esm/scroll-restoration-inline.js.map +1 -0
  229. package/dist/esm/scroll-restoration-script/client.d.ts +2 -0
  230. package/dist/esm/scroll-restoration-script/client.js +8 -0
  231. package/dist/esm/scroll-restoration-script/client.js.map +1 -0
  232. package/dist/esm/scroll-restoration-script/server.d.ts +2 -0
  233. package/dist/esm/scroll-restoration-script/server.js +29 -0
  234. package/dist/esm/scroll-restoration-script/server.js.map +1 -0
  235. package/dist/esm/scroll-restoration.d.ts +38 -0
  236. package/dist/esm/scroll-restoration.js +187 -0
  237. package/dist/esm/scroll-restoration.js.map +1 -0
  238. package/dist/esm/searchMiddleware.d.ts +25 -0
  239. package/dist/esm/searchMiddleware.js +54 -0
  240. package/dist/esm/searchMiddleware.js.map +1 -0
  241. package/dist/esm/searchParams.d.ts +31 -0
  242. package/dist/esm/searchParams.js +62 -0
  243. package/dist/esm/searchParams.js.map +1 -0
  244. package/dist/esm/ssr/client.d.ts +6 -0
  245. package/dist/esm/ssr/client.js +4 -0
  246. package/dist/esm/ssr/constants.d.ts +3 -0
  247. package/dist/esm/ssr/constants.js +7 -0
  248. package/dist/esm/ssr/constants.js.map +1 -0
  249. package/dist/esm/ssr/createRequestHandler.d.ts +9 -0
  250. package/dist/esm/ssr/createRequestHandler.js +44 -0
  251. package/dist/esm/ssr/createRequestHandler.js.map +1 -0
  252. package/dist/esm/ssr/handlerCallback.d.ts +9 -0
  253. package/dist/esm/ssr/handlerCallback.js +8 -0
  254. package/dist/esm/ssr/handlerCallback.js.map +1 -0
  255. package/dist/esm/ssr/headers.d.ts +3 -0
  256. package/dist/esm/ssr/headers.js +21 -0
  257. package/dist/esm/ssr/headers.js.map +1 -0
  258. package/dist/esm/ssr/json.d.ts +10 -0
  259. package/dist/esm/ssr/json.js +11 -0
  260. package/dist/esm/ssr/json.js.map +1 -0
  261. package/dist/esm/ssr/serializer/RawStream.d.ts +64 -0
  262. package/dist/esm/ssr/serializer/RawStream.js +282 -0
  263. package/dist/esm/ssr/serializer/RawStream.js.map +1 -0
  264. package/dist/esm/ssr/serializer/ShallowErrorPlugin.d.ts +9 -0
  265. package/dist/esm/ssr/serializer/ShallowErrorPlugin.js +33 -0
  266. package/dist/esm/ssr/serializer/ShallowErrorPlugin.js.map +1 -0
  267. package/dist/esm/ssr/serializer/seroval-plugins.d.ts +2 -0
  268. package/dist/esm/ssr/serializer/seroval-plugins.js +13 -0
  269. package/dist/esm/ssr/serializer/seroval-plugins.js.map +1 -0
  270. package/dist/esm/ssr/serializer/transformer.d.ts +91 -0
  271. package/dist/esm/ssr/serializer/transformer.js +51 -0
  272. package/dist/esm/ssr/serializer/transformer.js.map +1 -0
  273. package/dist/esm/ssr/server.d.ts +6 -0
  274. package/dist/esm/ssr/server.js +5 -0
  275. package/dist/esm/ssr/ssr-client.d.ts +10 -0
  276. package/dist/esm/ssr/ssr-client.js +183 -0
  277. package/dist/esm/ssr/ssr-client.js.map +1 -0
  278. package/dist/esm/ssr/ssr-match-id.d.ts +2 -0
  279. package/dist/esm/ssr/ssr-match-id.js +11 -0
  280. package/dist/esm/ssr/ssr-match-id.js.map +1 -0
  281. package/dist/esm/ssr/ssr-server.d.ts +42 -0
  282. package/dist/esm/ssr/ssr-server.js +277 -0
  283. package/dist/esm/ssr/ssr-server.js.map +1 -0
  284. package/dist/esm/ssr/transformStreamWithRouter.d.ts +11 -0
  285. package/dist/esm/ssr/transformStreamWithRouter.js +325 -0
  286. package/dist/esm/ssr/transformStreamWithRouter.js.map +1 -0
  287. package/dist/esm/ssr/tsrScript.d.ts +0 -0
  288. package/dist/esm/ssr/tsrScript.js +6 -0
  289. package/dist/esm/ssr/tsrScript.js.map +1 -0
  290. package/dist/esm/ssr/types.d.ts +30 -0
  291. package/dist/esm/stores.d.ts +70 -0
  292. package/dist/esm/stores.js +146 -0
  293. package/dist/esm/stores.js.map +1 -0
  294. package/dist/esm/structuralSharing.d.ts +4 -0
  295. package/dist/esm/typePrimitives.d.ts +65 -0
  296. package/dist/esm/useLoaderData.d.ts +5 -0
  297. package/dist/esm/useLoaderDeps.d.ts +5 -0
  298. package/dist/esm/useNavigate.d.ts +3 -0
  299. package/dist/esm/useParams.d.ts +5 -0
  300. package/dist/esm/useRouteContext.d.ts +9 -0
  301. package/dist/esm/useSearch.d.ts +5 -0
  302. package/dist/esm/utils.d.ts +178 -0
  303. package/dist/esm/utils.js +322 -0
  304. package/dist/esm/utils.js.map +1 -0
  305. package/dist/esm/validators.d.ts +51 -0
  306. package/package.json +200 -0
  307. package/skills/router-core/SKILL.md +139 -0
  308. package/skills/router-core/auth-and-guards/SKILL.md +458 -0
  309. package/skills/router-core/code-splitting/SKILL.md +322 -0
  310. package/skills/router-core/data-loading/SKILL.md +485 -0
  311. package/skills/router-core/navigation/SKILL.md +448 -0
  312. package/skills/router-core/not-found-and-errors/SKILL.md +435 -0
  313. package/skills/router-core/path-params/SKILL.md +382 -0
  314. package/skills/router-core/search-params/SKILL.md +349 -0
  315. package/skills/router-core/search-params/references/validation-patterns.md +379 -0
  316. package/skills/router-core/ssr/SKILL.md +437 -0
  317. package/skills/router-core/type-safety/SKILL.md +497 -0
  318. package/src/Matches.ts +291 -0
  319. package/src/RouterProvider.ts +47 -0
  320. package/src/config.ts +42 -0
  321. package/src/defer.ts +69 -0
  322. package/src/fileRoute.ts +164 -0
  323. package/src/global.ts +9 -0
  324. package/src/hash-scroll.ts +21 -0
  325. package/src/history.ts +9 -0
  326. package/src/index.ts +471 -0
  327. package/src/invariant.ts +3 -0
  328. package/src/isServer/client.ts +1 -0
  329. package/src/isServer/development.ts +2 -0
  330. package/src/isServer/server.ts +1 -0
  331. package/src/link.ts +704 -0
  332. package/src/load-matches.ts +1281 -0
  333. package/src/location.ts +51 -0
  334. package/src/lru-cache.ts +74 -0
  335. package/src/manifest.ts +68 -0
  336. package/src/new-process-route-tree.ts +1387 -0
  337. package/src/not-found.ts +41 -0
  338. package/src/path.ts +436 -0
  339. package/src/qss.ts +81 -0
  340. package/src/redirect.ts +179 -0
  341. package/src/rewrite.ts +93 -0
  342. package/src/root.ts +3 -0
  343. package/src/route.ts +2235 -0
  344. package/src/routeInfo.ts +235 -0
  345. package/src/router.ts +3207 -0
  346. package/src/scroll-restoration-inline.ts +81 -0
  347. package/src/scroll-restoration-script/client.ts +5 -0
  348. package/src/scroll-restoration-script/server.ts +64 -0
  349. package/src/scroll-restoration.ts +357 -0
  350. package/src/searchMiddleware.ts +76 -0
  351. package/src/searchParams.ts +90 -0
  352. package/src/ssr/client.ts +6 -0
  353. package/src/ssr/constants.ts +3 -0
  354. package/src/ssr/createRequestHandler.ts +98 -0
  355. package/src/ssr/handlerCallback.ts +15 -0
  356. package/src/ssr/headers.ts +40 -0
  357. package/src/ssr/json.ts +16 -0
  358. package/src/ssr/serializer/RawStream.ts +464 -0
  359. package/src/ssr/serializer/ShallowErrorPlugin.ts +43 -0
  360. package/src/ssr/serializer/seroval-plugins.ts +12 -0
  361. package/src/ssr/serializer/transformer.ts +312 -0
  362. package/src/ssr/server.ts +14 -0
  363. package/src/ssr/ssr-client.ts +313 -0
  364. package/src/ssr/ssr-match-id.ts +7 -0
  365. package/src/ssr/ssr-server.ts +425 -0
  366. package/src/ssr/transformStreamWithRouter.ts +493 -0
  367. package/src/ssr/tsrScript.ts +20 -0
  368. package/src/ssr/types.ts +41 -0
  369. package/src/stores.ts +342 -0
  370. package/src/structuralSharing.ts +7 -0
  371. package/src/typePrimitives.ts +181 -0
  372. package/src/useLoaderData.ts +20 -0
  373. package/src/useLoaderDeps.ts +13 -0
  374. package/src/useNavigate.ts +13 -0
  375. package/src/useParams.ts +20 -0
  376. package/src/useRouteContext.ts +39 -0
  377. package/src/useSearch.ts +20 -0
  378. package/src/utils.ts +708 -0
  379. package/src/validators.ts +121 -0
  380. package/src/vite-env.d.ts +4 -0
@@ -0,0 +1,659 @@
1
+ const require_utils = require("./utils.cjs");
2
+ const require_invariant = require("./invariant.cjs");
3
+ const require_not_found = require("./not-found.cjs");
4
+ const require_root = require("./root.cjs");
5
+ const require_redirect = require("./redirect.cjs");
6
+ let _benjavicente_router_core_isServer = require("@benjavicente/router-core/isServer");
7
+ //#region src/load-matches.ts
8
+ var triggerOnReady = (inner) => {
9
+ if (!inner.rendered) {
10
+ inner.rendered = true;
11
+ return inner.onReady?.();
12
+ }
13
+ };
14
+ var hasForcePendingActiveMatch = (router) => {
15
+ return router.stores.matchesId.state.some((matchId) => {
16
+ return router.stores.activeMatchStoresById.get(matchId)?.state._forcePending;
17
+ });
18
+ };
19
+ var resolvePreload = (inner, matchId) => {
20
+ return !!(inner.preload && !inner.router.stores.activeMatchStoresById.has(matchId));
21
+ };
22
+ /**
23
+ * Builds the accumulated context from router options and all matches up to (and optionally including) the given index.
24
+ * Merges __routeContext and __beforeLoadContext from each match.
25
+ */
26
+ var buildMatchContext = (inner, index, includeCurrentMatch = true) => {
27
+ const context = { ...inner.router.options.context ?? {} };
28
+ const end = includeCurrentMatch ? index : index - 1;
29
+ for (let i = 0; i <= end; i++) {
30
+ const innerMatch = inner.matches[i];
31
+ if (!innerMatch) continue;
32
+ const m = inner.router.getMatch(innerMatch.id);
33
+ if (!m) continue;
34
+ Object.assign(context, m.__routeContext, m.__beforeLoadContext);
35
+ }
36
+ return context;
37
+ };
38
+ var getNotFoundBoundaryIndex = (inner, err) => {
39
+ if (!inner.matches.length) return;
40
+ const requestedRouteId = err.routeId;
41
+ const matchedRootIndex = inner.matches.findIndex((m) => m.routeId === inner.router.routeTree.id);
42
+ const rootIndex = matchedRootIndex >= 0 ? matchedRootIndex : 0;
43
+ let startIndex = requestedRouteId ? inner.matches.findIndex((match) => match.routeId === requestedRouteId) : inner.firstBadMatchIndex ?? inner.matches.length - 1;
44
+ if (startIndex < 0) startIndex = rootIndex;
45
+ for (let i = startIndex; i >= 0; i--) {
46
+ const match = inner.matches[i];
47
+ if (inner.router.looseRoutesById[match.routeId].options.notFoundComponent) return i;
48
+ }
49
+ return requestedRouteId ? startIndex : rootIndex;
50
+ };
51
+ var handleRedirectAndNotFound = (inner, match, err) => {
52
+ if (!require_redirect.isRedirect(err) && !require_not_found.isNotFound(err)) return;
53
+ if (require_redirect.isRedirect(err) && err.redirectHandled && !err.options.reloadDocument) throw err;
54
+ if (match) {
55
+ match._nonReactive.beforeLoadPromise?.resolve();
56
+ match._nonReactive.loaderPromise?.resolve();
57
+ match._nonReactive.beforeLoadPromise = void 0;
58
+ match._nonReactive.loaderPromise = void 0;
59
+ match._nonReactive.error = err;
60
+ inner.updateMatch(match.id, (prev) => ({
61
+ ...prev,
62
+ status: require_redirect.isRedirect(err) ? "redirected" : prev.status === "pending" ? "success" : prev.status,
63
+ context: buildMatchContext(inner, match.index),
64
+ isFetching: false,
65
+ error: err
66
+ }));
67
+ if (require_not_found.isNotFound(err) && !err.routeId) err.routeId = match.routeId;
68
+ match._nonReactive.loadPromise?.resolve();
69
+ }
70
+ if (require_redirect.isRedirect(err)) {
71
+ inner.rendered = true;
72
+ err.options._fromLocation = inner.location;
73
+ err.redirectHandled = true;
74
+ err = inner.router.resolveRedirect(err);
75
+ }
76
+ throw err;
77
+ };
78
+ var shouldSkipLoader = (inner, matchId) => {
79
+ const match = inner.router.getMatch(matchId);
80
+ if (!match) return true;
81
+ if (!(_benjavicente_router_core_isServer.isServer ?? inner.router.isServer) && match._nonReactive.dehydrated) return true;
82
+ if ((_benjavicente_router_core_isServer.isServer ?? inner.router.isServer) && match.ssr === false) return true;
83
+ return false;
84
+ };
85
+ var syncMatchContext = (inner, matchId, index) => {
86
+ const nextContext = buildMatchContext(inner, index);
87
+ inner.updateMatch(matchId, (prev) => {
88
+ return {
89
+ ...prev,
90
+ context: nextContext
91
+ };
92
+ });
93
+ };
94
+ var handleSerialError = (inner, index, err, routerCode) => {
95
+ const { id: matchId, routeId } = inner.matches[index];
96
+ const route = inner.router.looseRoutesById[routeId];
97
+ if (err instanceof Promise) throw err;
98
+ err.routerCode = routerCode;
99
+ inner.firstBadMatchIndex ??= index;
100
+ handleRedirectAndNotFound(inner, inner.router.getMatch(matchId), err);
101
+ try {
102
+ route.options.onError?.(err);
103
+ } catch (errorHandlerErr) {
104
+ err = errorHandlerErr;
105
+ handleRedirectAndNotFound(inner, inner.router.getMatch(matchId), err);
106
+ }
107
+ inner.updateMatch(matchId, (prev) => {
108
+ prev._nonReactive.beforeLoadPromise?.resolve();
109
+ prev._nonReactive.beforeLoadPromise = void 0;
110
+ prev._nonReactive.loadPromise?.resolve();
111
+ return {
112
+ ...prev,
113
+ error: err,
114
+ status: "error",
115
+ isFetching: false,
116
+ updatedAt: Date.now(),
117
+ abortController: new AbortController()
118
+ };
119
+ });
120
+ if (!inner.preload && !require_redirect.isRedirect(err) && !require_not_found.isNotFound(err)) inner.serialError ??= err;
121
+ };
122
+ var isBeforeLoadSsr = (inner, matchId, index, route) => {
123
+ const existingMatch = inner.router.getMatch(matchId);
124
+ const parentMatchId = inner.matches[index - 1]?.id;
125
+ const parentMatch = parentMatchId ? inner.router.getMatch(parentMatchId) : void 0;
126
+ if (inner.router.isShell()) {
127
+ existingMatch.ssr = route.id === require_root.rootRouteId;
128
+ return;
129
+ }
130
+ if (parentMatch?.ssr === false) {
131
+ existingMatch.ssr = false;
132
+ return;
133
+ }
134
+ const parentOverride = (tempSsr) => {
135
+ if (tempSsr === true && parentMatch?.ssr === "data-only") return "data-only";
136
+ return tempSsr;
137
+ };
138
+ const defaultSsr = inner.router.options.defaultSsr ?? true;
139
+ if (route.options.ssr === void 0) {
140
+ existingMatch.ssr = parentOverride(defaultSsr);
141
+ return;
142
+ }
143
+ if (typeof route.options.ssr !== "function") {
144
+ existingMatch.ssr = parentOverride(route.options.ssr);
145
+ return;
146
+ }
147
+ const { search, params } = existingMatch;
148
+ const ssrFnContext = {
149
+ search: makeMaybe(search, existingMatch.searchError),
150
+ params: makeMaybe(params, existingMatch.paramsError),
151
+ location: inner.location,
152
+ matches: inner.matches.map((match) => ({
153
+ index: match.index,
154
+ pathname: match.pathname,
155
+ fullPath: match.fullPath,
156
+ staticData: match.staticData,
157
+ id: match.id,
158
+ routeId: match.routeId,
159
+ search: makeMaybe(match.search, match.searchError),
160
+ params: makeMaybe(match.params, match.paramsError),
161
+ ssr: match.ssr
162
+ }))
163
+ };
164
+ const tempSsr = route.options.ssr(ssrFnContext);
165
+ if (require_utils.isPromise(tempSsr)) return tempSsr.then((ssr) => {
166
+ existingMatch.ssr = parentOverride(ssr ?? defaultSsr);
167
+ });
168
+ existingMatch.ssr = parentOverride(tempSsr ?? defaultSsr);
169
+ };
170
+ var setupPendingTimeout = (inner, matchId, route, match) => {
171
+ if (match._nonReactive.pendingTimeout !== void 0) return;
172
+ const pendingMs = route.options.pendingMs ?? inner.router.options.defaultPendingMs;
173
+ if (!!(inner.onReady && !(_benjavicente_router_core_isServer.isServer ?? inner.router.isServer) && !resolvePreload(inner, matchId) && (route.options.loader || route.options.beforeLoad || routeNeedsPreload(route)) && typeof pendingMs === "number" && pendingMs !== Infinity && (route.options.pendingComponent ?? inner.router.options?.defaultPendingComponent))) {
174
+ const pendingTimeout = setTimeout(() => {
175
+ triggerOnReady(inner);
176
+ }, pendingMs);
177
+ match._nonReactive.pendingTimeout = pendingTimeout;
178
+ }
179
+ };
180
+ var preBeforeLoadSetup = (inner, matchId, route) => {
181
+ const existingMatch = inner.router.getMatch(matchId);
182
+ if (!existingMatch._nonReactive.beforeLoadPromise && !existingMatch._nonReactive.loaderPromise) return;
183
+ setupPendingTimeout(inner, matchId, route, existingMatch);
184
+ const then = () => {
185
+ const match = inner.router.getMatch(matchId);
186
+ if (match.preload && (match.status === "redirected" || match.status === "notFound")) handleRedirectAndNotFound(inner, match, match.error);
187
+ };
188
+ return existingMatch._nonReactive.beforeLoadPromise ? existingMatch._nonReactive.beforeLoadPromise.then(then) : then();
189
+ };
190
+ var executeBeforeLoad = (inner, matchId, index, route) => {
191
+ const match = inner.router.getMatch(matchId);
192
+ let prevLoadPromise = match._nonReactive.loadPromise;
193
+ match._nonReactive.loadPromise = require_utils.createControlledPromise(() => {
194
+ prevLoadPromise?.resolve();
195
+ prevLoadPromise = void 0;
196
+ });
197
+ const { paramsError, searchError } = match;
198
+ if (paramsError) handleSerialError(inner, index, paramsError, "PARSE_PARAMS");
199
+ if (searchError) handleSerialError(inner, index, searchError, "VALIDATE_SEARCH");
200
+ setupPendingTimeout(inner, matchId, route, match);
201
+ const abortController = new AbortController();
202
+ let isPending = false;
203
+ const pending = () => {
204
+ if (isPending) return;
205
+ isPending = true;
206
+ inner.updateMatch(matchId, (prev) => ({
207
+ ...prev,
208
+ isFetching: "beforeLoad",
209
+ fetchCount: prev.fetchCount + 1,
210
+ abortController
211
+ }));
212
+ };
213
+ const resolve = () => {
214
+ match._nonReactive.beforeLoadPromise?.resolve();
215
+ match._nonReactive.beforeLoadPromise = void 0;
216
+ inner.updateMatch(matchId, (prev) => ({
217
+ ...prev,
218
+ isFetching: false
219
+ }));
220
+ };
221
+ if (!route.options.beforeLoad) {
222
+ inner.router.batch(() => {
223
+ pending();
224
+ resolve();
225
+ });
226
+ return;
227
+ }
228
+ match._nonReactive.beforeLoadPromise = require_utils.createControlledPromise();
229
+ const context = {
230
+ ...buildMatchContext(inner, index, false),
231
+ ...match.__routeContext
232
+ };
233
+ const { search, params, cause } = match;
234
+ const preload = resolvePreload(inner, matchId);
235
+ const beforeLoadFnContext = {
236
+ search,
237
+ abortController,
238
+ params,
239
+ preload,
240
+ context,
241
+ location: inner.location,
242
+ navigate: (opts) => inner.router.navigate({
243
+ ...opts,
244
+ _fromLocation: inner.location
245
+ }),
246
+ buildLocation: inner.router.buildLocation,
247
+ cause: preload ? "preload" : cause,
248
+ matches: inner.matches,
249
+ routeId: route.id,
250
+ ...inner.router.options.additionalContext
251
+ };
252
+ const updateContext = (beforeLoadContext) => {
253
+ if (beforeLoadContext === void 0) {
254
+ inner.router.batch(() => {
255
+ pending();
256
+ resolve();
257
+ });
258
+ return;
259
+ }
260
+ if (require_redirect.isRedirect(beforeLoadContext) || require_not_found.isNotFound(beforeLoadContext)) {
261
+ pending();
262
+ handleSerialError(inner, index, beforeLoadContext, "BEFORE_LOAD");
263
+ }
264
+ inner.router.batch(() => {
265
+ pending();
266
+ inner.updateMatch(matchId, (prev) => ({
267
+ ...prev,
268
+ __beforeLoadContext: beforeLoadContext
269
+ }));
270
+ resolve();
271
+ });
272
+ };
273
+ let beforeLoadContext;
274
+ try {
275
+ beforeLoadContext = route.options.beforeLoad(beforeLoadFnContext);
276
+ if (require_utils.isPromise(beforeLoadContext)) {
277
+ pending();
278
+ return beforeLoadContext.catch((err) => {
279
+ handleSerialError(inner, index, err, "BEFORE_LOAD");
280
+ }).then(updateContext);
281
+ }
282
+ } catch (err) {
283
+ pending();
284
+ handleSerialError(inner, index, err, "BEFORE_LOAD");
285
+ }
286
+ updateContext(beforeLoadContext);
287
+ };
288
+ var handleBeforeLoad = (inner, index) => {
289
+ const { id: matchId, routeId } = inner.matches[index];
290
+ const route = inner.router.looseRoutesById[routeId];
291
+ const serverSsr = () => {
292
+ if (_benjavicente_router_core_isServer.isServer ?? inner.router.isServer) {
293
+ const maybePromise = isBeforeLoadSsr(inner, matchId, index, route);
294
+ if (require_utils.isPromise(maybePromise)) return maybePromise.then(queueExecution);
295
+ }
296
+ return queueExecution();
297
+ };
298
+ const execute = () => executeBeforeLoad(inner, matchId, index, route);
299
+ const queueExecution = () => {
300
+ if (shouldSkipLoader(inner, matchId)) return;
301
+ const result = preBeforeLoadSetup(inner, matchId, route);
302
+ return require_utils.isPromise(result) ? result.then(execute) : execute();
303
+ };
304
+ return serverSsr();
305
+ };
306
+ var executeHead = (inner, matchId, route) => {
307
+ const match = inner.router.getMatch(matchId);
308
+ if (!match) return;
309
+ if (!route.options.head && !route.options.scripts && !route.options.headers) return;
310
+ const assetContext = {
311
+ ssr: inner.router.options.ssr,
312
+ matches: inner.matches,
313
+ match,
314
+ params: match.params,
315
+ loaderData: match.loaderData
316
+ };
317
+ return Promise.all([
318
+ route.options.head?.(assetContext),
319
+ route.options.scripts?.(assetContext),
320
+ route.options.headers?.(assetContext)
321
+ ]).then(([headFnContent, scripts, headers]) => {
322
+ return {
323
+ meta: headFnContent?.meta,
324
+ links: headFnContent?.links,
325
+ headScripts: headFnContent?.scripts,
326
+ headers,
327
+ scripts,
328
+ styles: headFnContent?.styles
329
+ };
330
+ });
331
+ };
332
+ var getLoaderContext = (inner, matchPromises, matchId, index, route) => {
333
+ const parentMatchPromise = matchPromises[index - 1];
334
+ const { params, loaderDeps, abortController, cause } = inner.router.getMatch(matchId);
335
+ const context = buildMatchContext(inner, index);
336
+ const preload = resolvePreload(inner, matchId);
337
+ return {
338
+ params,
339
+ deps: loaderDeps,
340
+ preload: !!preload,
341
+ parentMatchPromise,
342
+ abortController,
343
+ context,
344
+ location: inner.location,
345
+ navigate: (opts) => inner.router.navigate({
346
+ ...opts,
347
+ _fromLocation: inner.location
348
+ }),
349
+ cause: preload ? "preload" : cause,
350
+ route,
351
+ ...inner.router.options.additionalContext
352
+ };
353
+ };
354
+ var runLoader = async (inner, matchPromises, matchId, index, route) => {
355
+ try {
356
+ const match = inner.router.getMatch(matchId);
357
+ try {
358
+ if (!(_benjavicente_router_core_isServer.isServer ?? inner.router.isServer) || match.ssr === true) loadRouteChunk(route);
359
+ const routeLoader = route.options.loader;
360
+ const loader = typeof routeLoader === "function" ? routeLoader : routeLoader?.handler;
361
+ const loaderResult = loader?.(getLoaderContext(inner, matchPromises, matchId, index, route));
362
+ const loaderResultIsPromise = !!loader && require_utils.isPromise(loaderResult);
363
+ if (!!(loaderResultIsPromise || route._lazyPromise || route._componentsPromise || route.options.head || route.options.scripts || route.options.headers || match._nonReactive.minPendingPromise)) inner.updateMatch(matchId, (prev) => ({
364
+ ...prev,
365
+ isFetching: "loader"
366
+ }));
367
+ if (loader) {
368
+ const loaderData = loaderResultIsPromise ? await loaderResult : loaderResult;
369
+ handleRedirectAndNotFound(inner, inner.router.getMatch(matchId), loaderData);
370
+ if (loaderData !== void 0) inner.updateMatch(matchId, (prev) => ({
371
+ ...prev,
372
+ loaderData
373
+ }));
374
+ }
375
+ if (route._lazyPromise) await route._lazyPromise;
376
+ const pendingPromise = match._nonReactive.minPendingPromise;
377
+ if (pendingPromise) await pendingPromise;
378
+ if (route._componentsPromise) await route._componentsPromise;
379
+ inner.updateMatch(matchId, (prev) => ({
380
+ ...prev,
381
+ error: void 0,
382
+ context: buildMatchContext(inner, index),
383
+ status: "success",
384
+ isFetching: false,
385
+ updatedAt: Date.now()
386
+ }));
387
+ } catch (e) {
388
+ let error = e;
389
+ if (error?.name === "AbortError") {
390
+ if (match.abortController.signal.aborted) {
391
+ match._nonReactive.loaderPromise?.resolve();
392
+ match._nonReactive.loaderPromise = void 0;
393
+ return;
394
+ }
395
+ inner.updateMatch(matchId, (prev) => ({
396
+ ...prev,
397
+ status: prev.status === "pending" ? "success" : prev.status,
398
+ isFetching: false,
399
+ context: buildMatchContext(inner, index)
400
+ }));
401
+ return;
402
+ }
403
+ const pendingPromise = match._nonReactive.minPendingPromise;
404
+ if (pendingPromise) await pendingPromise;
405
+ if (require_not_found.isNotFound(e)) await route.options.notFoundComponent?.preload?.();
406
+ handleRedirectAndNotFound(inner, inner.router.getMatch(matchId), e);
407
+ try {
408
+ route.options.onError?.(e);
409
+ } catch (onErrorError) {
410
+ error = onErrorError;
411
+ handleRedirectAndNotFound(inner, inner.router.getMatch(matchId), onErrorError);
412
+ }
413
+ if (!require_redirect.isRedirect(error) && !require_not_found.isNotFound(error)) await loadRouteChunk(route, ["errorComponent"]);
414
+ inner.updateMatch(matchId, (prev) => ({
415
+ ...prev,
416
+ error,
417
+ context: buildMatchContext(inner, index),
418
+ status: "error",
419
+ isFetching: false
420
+ }));
421
+ }
422
+ } catch (err) {
423
+ const match = inner.router.getMatch(matchId);
424
+ if (match) match._nonReactive.loaderPromise = void 0;
425
+ handleRedirectAndNotFound(inner, match, err);
426
+ }
427
+ };
428
+ var loadRouteMatch = async (inner, matchPromises, index) => {
429
+ async function handleLoader(preload, prevMatch, previousRouteMatchId, match, route) {
430
+ const age = Date.now() - prevMatch.updatedAt;
431
+ const staleAge = preload ? route.options.preloadStaleTime ?? inner.router.options.defaultPreloadStaleTime ?? 3e4 : route.options.staleTime ?? inner.router.options.defaultStaleTime ?? 0;
432
+ const shouldReloadOption = route.options.shouldReload;
433
+ const shouldReload = typeof shouldReloadOption === "function" ? shouldReloadOption(getLoaderContext(inner, matchPromises, matchId, index, route)) : shouldReloadOption;
434
+ const { status, invalid } = match;
435
+ const staleMatchShouldReload = age >= staleAge && (!!inner.forceStaleReload || match.cause === "enter" || previousRouteMatchId !== void 0 && previousRouteMatchId !== match.id);
436
+ loaderShouldRunAsync = status === "success" && (invalid || (shouldReload ?? staleMatchShouldReload));
437
+ if (preload && route.options.preload === false) {} else if (loaderShouldRunAsync && !inner.sync && shouldReloadInBackground) {
438
+ loaderIsRunningAsync = true;
439
+ (async () => {
440
+ try {
441
+ await runLoader(inner, matchPromises, matchId, index, route);
442
+ const match = inner.router.getMatch(matchId);
443
+ match._nonReactive.loaderPromise?.resolve();
444
+ match._nonReactive.loadPromise?.resolve();
445
+ match._nonReactive.loaderPromise = void 0;
446
+ match._nonReactive.loadPromise = void 0;
447
+ } catch (err) {
448
+ if (require_redirect.isRedirect(err)) await inner.router.navigate(err.options);
449
+ }
450
+ })();
451
+ } else if (status !== "success" || loaderShouldRunAsync) await runLoader(inner, matchPromises, matchId, index, route);
452
+ else syncMatchContext(inner, matchId, index);
453
+ }
454
+ const { id: matchId, routeId } = inner.matches[index];
455
+ let loaderShouldRunAsync = false;
456
+ let loaderIsRunningAsync = false;
457
+ const route = inner.router.looseRoutesById[routeId];
458
+ const routeLoader = route.options.loader;
459
+ const shouldReloadInBackground = ((typeof routeLoader === "function" ? void 0 : routeLoader?.staleReloadMode) ?? inner.router.options.defaultStaleReloadMode) !== "blocking";
460
+ if (shouldSkipLoader(inner, matchId)) {
461
+ if (!inner.router.getMatch(matchId)) return inner.matches[index];
462
+ syncMatchContext(inner, matchId, index);
463
+ if (_benjavicente_router_core_isServer.isServer ?? inner.router.isServer) return inner.router.getMatch(matchId);
464
+ } else {
465
+ const prevMatch = inner.router.getMatch(matchId);
466
+ const activeIdAtIndex = inner.router.stores.matchesId.state[index];
467
+ const previousRouteMatchId = (activeIdAtIndex && inner.router.stores.activeMatchStoresById.get(activeIdAtIndex) || null)?.routeId === routeId ? activeIdAtIndex : inner.router.stores.activeMatchesSnapshot.state.find((d) => d.routeId === routeId)?.id;
468
+ const preload = resolvePreload(inner, matchId);
469
+ if (prevMatch._nonReactive.loaderPromise) {
470
+ if (prevMatch.status === "success" && !inner.sync && !prevMatch.preload && shouldReloadInBackground) return prevMatch;
471
+ await prevMatch._nonReactive.loaderPromise;
472
+ const match = inner.router.getMatch(matchId);
473
+ const error = match._nonReactive.error || match.error;
474
+ if (error) handleRedirectAndNotFound(inner, match, error);
475
+ if (match.status === "pending") await handleLoader(preload, prevMatch, previousRouteMatchId, match, route);
476
+ } else {
477
+ const nextPreload = preload && !inner.router.stores.activeMatchStoresById.has(matchId);
478
+ const match = inner.router.getMatch(matchId);
479
+ match._nonReactive.loaderPromise = require_utils.createControlledPromise();
480
+ if (nextPreload !== match.preload) inner.updateMatch(matchId, (prev) => ({
481
+ ...prev,
482
+ preload: nextPreload
483
+ }));
484
+ await handleLoader(preload, prevMatch, previousRouteMatchId, match, route);
485
+ }
486
+ }
487
+ const match = inner.router.getMatch(matchId);
488
+ if (!loaderIsRunningAsync) {
489
+ match._nonReactive.loaderPromise?.resolve();
490
+ match._nonReactive.loadPromise?.resolve();
491
+ match._nonReactive.loadPromise = void 0;
492
+ }
493
+ clearTimeout(match._nonReactive.pendingTimeout);
494
+ match._nonReactive.pendingTimeout = void 0;
495
+ if (!loaderIsRunningAsync) match._nonReactive.loaderPromise = void 0;
496
+ match._nonReactive.dehydrated = void 0;
497
+ const nextIsFetching = loaderIsRunningAsync ? match.isFetching : false;
498
+ if (nextIsFetching !== match.isFetching || match.invalid !== false) {
499
+ inner.updateMatch(matchId, (prev) => ({
500
+ ...prev,
501
+ isFetching: nextIsFetching,
502
+ invalid: false
503
+ }));
504
+ return inner.router.getMatch(matchId);
505
+ } else return match;
506
+ };
507
+ async function loadMatches(arg) {
508
+ const inner = arg;
509
+ const matchPromises = [];
510
+ if (!(_benjavicente_router_core_isServer.isServer ?? inner.router.isServer) && hasForcePendingActiveMatch(inner.router)) triggerOnReady(inner);
511
+ let beforeLoadNotFound;
512
+ for (let i = 0; i < inner.matches.length; i++) {
513
+ try {
514
+ const beforeLoad = handleBeforeLoad(inner, i);
515
+ if (require_utils.isPromise(beforeLoad)) await beforeLoad;
516
+ } catch (err) {
517
+ if (require_redirect.isRedirect(err)) throw err;
518
+ if (require_not_found.isNotFound(err)) beforeLoadNotFound = err;
519
+ else if (!inner.preload) throw err;
520
+ break;
521
+ }
522
+ if (inner.serialError || inner.firstBadMatchIndex != null) break;
523
+ }
524
+ const baseMaxIndexExclusive = inner.firstBadMatchIndex ?? inner.matches.length;
525
+ const boundaryIndex = beforeLoadNotFound && !inner.preload ? getNotFoundBoundaryIndex(inner, beforeLoadNotFound) : void 0;
526
+ const maxIndexExclusive = beforeLoadNotFound && inner.preload ? 0 : boundaryIndex !== void 0 ? Math.min(boundaryIndex + 1, baseMaxIndexExclusive) : baseMaxIndexExclusive;
527
+ let firstNotFound;
528
+ let firstUnhandledRejection;
529
+ for (let i = 0; i < maxIndexExclusive; i++) matchPromises.push(loadRouteMatch(inner, matchPromises, i));
530
+ try {
531
+ await Promise.all(matchPromises);
532
+ } catch {
533
+ const settled = await Promise.allSettled(matchPromises);
534
+ for (const result of settled) {
535
+ if (result.status !== "rejected") continue;
536
+ const reason = result.reason;
537
+ if (require_redirect.isRedirect(reason)) throw reason;
538
+ if (require_not_found.isNotFound(reason)) firstNotFound ??= reason;
539
+ else firstUnhandledRejection ??= reason;
540
+ }
541
+ if (firstUnhandledRejection !== void 0) throw firstUnhandledRejection;
542
+ }
543
+ const notFoundToThrow = firstNotFound ?? (beforeLoadNotFound && !inner.preload ? beforeLoadNotFound : void 0);
544
+ let headMaxIndex = inner.firstBadMatchIndex !== void 0 ? inner.firstBadMatchIndex : inner.matches.length - 1;
545
+ if (!notFoundToThrow && beforeLoadNotFound && inner.preload) return inner.matches;
546
+ if (notFoundToThrow) {
547
+ const renderedBoundaryIndex = getNotFoundBoundaryIndex(inner, notFoundToThrow);
548
+ if (renderedBoundaryIndex === void 0) {
549
+ if (process.env.NODE_ENV !== "production") throw new Error("Invariant failed: Could not find match for notFound boundary");
550
+ require_invariant.invariant();
551
+ }
552
+ const boundaryMatch = inner.matches[renderedBoundaryIndex];
553
+ const boundaryRoute = inner.router.looseRoutesById[boundaryMatch.routeId];
554
+ const defaultNotFoundComponent = inner.router.options?.defaultNotFoundComponent;
555
+ if (!boundaryRoute.options.notFoundComponent && defaultNotFoundComponent) boundaryRoute.options.notFoundComponent = defaultNotFoundComponent;
556
+ notFoundToThrow.routeId = boundaryMatch.routeId;
557
+ const boundaryIsRoot = boundaryMatch.routeId === inner.router.routeTree.id;
558
+ inner.updateMatch(boundaryMatch.id, (prev) => ({
559
+ ...prev,
560
+ ...boundaryIsRoot ? {
561
+ status: "success",
562
+ globalNotFound: true,
563
+ error: void 0
564
+ } : {
565
+ status: "notFound",
566
+ error: notFoundToThrow
567
+ },
568
+ isFetching: false
569
+ }));
570
+ headMaxIndex = renderedBoundaryIndex;
571
+ await loadRouteChunk(boundaryRoute, ["notFoundComponent"]);
572
+ } else if (!inner.preload) {
573
+ const rootMatch = inner.matches[0];
574
+ if (!rootMatch.globalNotFound) {
575
+ if (inner.router.getMatch(rootMatch.id)?.globalNotFound) inner.updateMatch(rootMatch.id, (prev) => ({
576
+ ...prev,
577
+ globalNotFound: false,
578
+ error: void 0
579
+ }));
580
+ }
581
+ }
582
+ if (inner.serialError && inner.firstBadMatchIndex !== void 0) {
583
+ const errorRoute = inner.router.looseRoutesById[inner.matches[inner.firstBadMatchIndex].routeId];
584
+ await loadRouteChunk(errorRoute, ["errorComponent"]);
585
+ }
586
+ for (let i = 0; i <= headMaxIndex; i++) {
587
+ const { id: matchId, routeId } = inner.matches[i];
588
+ const route = inner.router.looseRoutesById[routeId];
589
+ try {
590
+ const headResult = executeHead(inner, matchId, route);
591
+ if (headResult) {
592
+ const head = await headResult;
593
+ inner.updateMatch(matchId, (prev) => ({
594
+ ...prev,
595
+ ...head
596
+ }));
597
+ }
598
+ } catch (err) {
599
+ console.error(`Error executing head for route ${routeId}:`, err);
600
+ }
601
+ }
602
+ const readyPromise = triggerOnReady(inner);
603
+ if (require_utils.isPromise(readyPromise)) await readyPromise;
604
+ if (notFoundToThrow) throw notFoundToThrow;
605
+ if (inner.serialError && !inner.preload && !inner.onReady) throw inner.serialError;
606
+ return inner.matches;
607
+ }
608
+ function preloadRouteComponents(route, componentTypesToLoad) {
609
+ const preloads = componentTypesToLoad.map((type) => route.options[type]?.preload?.()).filter(Boolean);
610
+ if (preloads.length === 0) return void 0;
611
+ return Promise.all(preloads);
612
+ }
613
+ function loadRouteChunk(route, componentTypesToLoad = componentTypes) {
614
+ if (!route._lazyLoaded && route._lazyPromise === void 0) if (route.lazyFn) route._lazyPromise = route.lazyFn().then((lazyRoute) => {
615
+ const { id: _id, ...options } = lazyRoute.options;
616
+ Object.assign(route.options, options);
617
+ route._lazyLoaded = true;
618
+ route._lazyPromise = void 0;
619
+ });
620
+ else route._lazyLoaded = true;
621
+ const runAfterLazy = () => route._componentsLoaded ? void 0 : componentTypesToLoad === componentTypes ? (() => {
622
+ if (route._componentsPromise === void 0) {
623
+ const componentsPromise = preloadRouteComponents(route, componentTypes);
624
+ if (componentsPromise) route._componentsPromise = componentsPromise.then(() => {
625
+ route._componentsLoaded = true;
626
+ route._componentsPromise = void 0;
627
+ });
628
+ else route._componentsLoaded = true;
629
+ }
630
+ return route._componentsPromise;
631
+ })() : preloadRouteComponents(route, componentTypesToLoad);
632
+ return route._lazyPromise ? route._lazyPromise.then(runAfterLazy) : runAfterLazy();
633
+ }
634
+ function makeMaybe(value, error) {
635
+ if (error) return {
636
+ status: "error",
637
+ error
638
+ };
639
+ return {
640
+ status: "success",
641
+ value
642
+ };
643
+ }
644
+ function routeNeedsPreload(route) {
645
+ for (const componentType of componentTypes) if (route.options[componentType]?.preload) return true;
646
+ return false;
647
+ }
648
+ var componentTypes = [
649
+ "component",
650
+ "errorComponent",
651
+ "pendingComponent",
652
+ "notFoundComponent"
653
+ ];
654
+ //#endregion
655
+ exports.loadMatches = loadMatches;
656
+ exports.loadRouteChunk = loadRouteChunk;
657
+ exports.routeNeedsPreload = routeNeedsPreload;
658
+
659
+ //# sourceMappingURL=load-matches.cjs.map