@bleedingdev/modern-js-renderer-solid 0.0.0-bootstrap → 3.9.3-ultramodern.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 (296) hide show
  1. package/dist/esm/actions.js +283 -0
  2. package/dist/esm/application-router.js +25 -0
  3. package/dist/esm/client.js +49 -0
  4. package/dist/esm/entry-application.js +60 -0
  5. package/dist/esm/entry-client.js +23 -0
  6. package/dist/esm/federation-context.js +25 -0
  7. package/dist/esm/federation-ssr.js +84 -0
  8. package/dist/esm/federation.js +83 -0
  9. package/dist/esm/i18n/I18nProvider.js +33 -0
  10. package/dist/esm/i18n/LocalizedLink.js +74 -0
  11. package/dist/esm/i18n/context.js +3 -0
  12. package/dist/esm/i18n/index.js +8 -0
  13. package/dist/esm/i18n/languageSync.js +50 -0
  14. package/dist/esm/i18n/types.js +0 -0
  15. package/dist/esm/i18n/useI18n.js +74 -0
  16. package/dist/esm/index.js +58 -0
  17. package/dist/esm/manifest.js +150 -0
  18. package/dist/esm/route-completion.js +150 -0
  19. package/dist/esm/route-data-error.js +108 -0
  20. package/dist/esm/router-binding/Asset.js +201 -0
  21. package/dist/esm/router-binding/CatchBoundary.js +94 -0
  22. package/dist/esm/router-binding/ClientOnly.js +26 -0
  23. package/dist/esm/router-binding/HeadContent.js +8 -0
  24. package/dist/esm/router-binding/LICENSE +21 -0
  25. package/dist/esm/router-binding/Match.js +319 -0
  26. package/dist/esm/router-binding/Matches.js +117 -0
  27. package/dist/esm/router-binding/PROVENANCE.json +94 -0
  28. package/dist/esm/router-binding/RouterProvider.js +51 -0
  29. package/dist/esm/router-binding/SafeFragment.js +5 -0
  30. package/dist/esm/router-binding/ScriptOnce.js +15 -0
  31. package/dist/esm/router-binding/Scripts.js +30 -0
  32. package/dist/esm/router-binding/ScrollRestoration.js +16 -0
  33. package/dist/esm/router-binding/Transitioner.js +103 -0
  34. package/dist/esm/router-binding/awaited.js +48 -0
  35. package/dist/esm/router-binding/fileRoute.js +83 -0
  36. package/dist/esm/router-binding/flightData.js +23 -0
  37. package/dist/esm/router-binding/headContentUtils.js +162 -0
  38. package/dist/esm/router-binding/history.js +0 -0
  39. package/dist/esm/router-binding/index.js +35 -0
  40. package/dist/esm/router-binding/lazyRouteComponent.js +30 -0
  41. package/dist/esm/router-binding/link.js +389 -0
  42. package/dist/esm/router-binding/matchContext.js +7 -0
  43. package/dist/esm/router-binding/nonRouteComponentContext.js +13 -0
  44. package/dist/esm/router-binding/not-found.js +35 -0
  45. package/dist/esm/router-binding/publicMatchData.js +447 -0
  46. package/dist/esm/router-binding/registryTransfer.js +210 -0
  47. package/dist/esm/router-binding/renderRouteNotFound.js +23 -0
  48. package/dist/esm/router-binding/route.js +143 -0
  49. package/dist/esm/router-binding/router.js +13 -0
  50. package/dist/esm/router-binding/routerContext.js +3 -0
  51. package/dist/esm/router-binding/routerStores.js +50 -0
  52. package/dist/esm/router-binding/scroll-restoration.js +13 -0
  53. package/dist/esm/router-binding/typePrimitives.js +0 -0
  54. package/dist/esm/router-binding/useBlocker.js +152 -0
  55. package/dist/esm/router-binding/useCanGoBack.js +7 -0
  56. package/dist/esm/router-binding/useLoaderData.js +9 -0
  57. package/dist/esm/router-binding/useLoaderDeps.js +8 -0
  58. package/dist/esm/router-binding/useLocation.js +14 -0
  59. package/dist/esm/router-binding/useMatch.js +28 -0
  60. package/dist/esm/router-binding/useNavigate.js +19 -0
  61. package/dist/esm/router-binding/useParams.js +13 -0
  62. package/dist/esm/router-binding/useRouteContext.js +8 -0
  63. package/dist/esm/router-binding/useRouter.js +10 -0
  64. package/dist/esm/router-binding/useRouterState.js +19 -0
  65. package/dist/esm/router-binding/useSearch.js +13 -0
  66. package/dist/esm/router-binding/utils.js +23 -0
  67. package/dist/esm/router.js +187 -0
  68. package/dist/esm-node/actions.js +263 -0
  69. package/dist/esm-node/application-router.js +25 -0
  70. package/dist/esm-node/client.js +49 -0
  71. package/dist/esm-node/entry-application.js +110 -0
  72. package/dist/esm-node/entry-client.js +23 -0
  73. package/dist/esm-node/entry-server.js +47 -0
  74. package/dist/esm-node/federation-context.js +25 -0
  75. package/dist/esm-node/federation-ssr.js +84 -0
  76. package/dist/esm-node/federation.js +83 -0
  77. package/dist/esm-node/i18n/I18nProvider.js +42 -0
  78. package/dist/esm-node/i18n/LocalizedLink.js +142 -0
  79. package/dist/esm-node/i18n/context.js +3 -0
  80. package/dist/esm-node/i18n/index.js +8 -0
  81. package/dist/esm-node/i18n/languageSync.js +50 -0
  82. package/dist/esm-node/i18n/types.js +1 -0
  83. package/dist/esm-node/i18n/useI18n.js +74 -0
  84. package/dist/esm-node/index.js +58 -0
  85. package/dist/esm-node/manifest.js +150 -0
  86. package/dist/esm-node/native-promise-serialization.js +113 -0
  87. package/dist/esm-node/plugin/compiler.js +209 -0
  88. package/dist/esm-node/plugin/create.js +235 -0
  89. package/dist/esm-node/plugin/index.js +73 -0
  90. package/dist/esm-node/plugin/profile.js +52 -0
  91. package/dist/esm-node/route-completion.js +160 -0
  92. package/dist/esm-node/route-data-error.js +108 -0
  93. package/dist/esm-node/router-binding/Asset.js +171 -0
  94. package/dist/esm-node/router-binding/CatchBoundary.js +136 -0
  95. package/dist/esm-node/router-binding/ClientOnly.js +46 -0
  96. package/dist/esm-node/router-binding/HeadContent.js +8 -0
  97. package/dist/esm-node/router-binding/LICENSE +21 -0
  98. package/dist/esm-node/router-binding/Match.js +660 -0
  99. package/dist/esm-node/router-binding/Matches.js +161 -0
  100. package/dist/esm-node/router-binding/PROVENANCE.json +94 -0
  101. package/dist/esm-node/router-binding/RouterProvider.js +87 -0
  102. package/dist/esm-node/router-binding/SafeFragment.js +5 -0
  103. package/dist/esm-node/router-binding/ScriptOnce.js +16 -0
  104. package/dist/esm-node/router-binding/Scripts.js +49 -0
  105. package/dist/esm-node/router-binding/ScrollRestoration.js +16 -0
  106. package/dist/esm-node/router-binding/Transitioner.js +103 -0
  107. package/dist/esm-node/router-binding/awaited.js +75 -0
  108. package/dist/esm-node/router-binding/fileRoute.js +83 -0
  109. package/dist/esm-node/router-binding/flightData.js +23 -0
  110. package/dist/esm-node/router-binding/headContentUtils.js +162 -0
  111. package/dist/esm-node/router-binding/history.js +1 -0
  112. package/dist/esm-node/router-binding/index.js +35 -0
  113. package/dist/esm-node/router-binding/lazyRouteComponent.js +30 -0
  114. package/dist/esm-node/router-binding/link.js +399 -0
  115. package/dist/esm-node/router-binding/matchContext.js +7 -0
  116. package/dist/esm-node/router-binding/nonRouteComponentContext.js +22 -0
  117. package/dist/esm-node/router-binding/not-found.js +49 -0
  118. package/dist/esm-node/router-binding/publicMatchData.js +447 -0
  119. package/dist/esm-node/router-binding/registryTransfer.js +210 -0
  120. package/dist/esm-node/router-binding/renderRouteNotFound.js +22 -0
  121. package/dist/esm-node/router-binding/route.js +162 -0
  122. package/dist/esm-node/router-binding/router.js +13 -0
  123. package/dist/esm-node/router-binding/routerContext.js +3 -0
  124. package/dist/esm-node/router-binding/routerStores.js +50 -0
  125. package/dist/esm-node/router-binding/scroll-restoration.js +12 -0
  126. package/dist/esm-node/router-binding/typePrimitives.js +1 -0
  127. package/dist/esm-node/router-binding/useBlocker.js +152 -0
  128. package/dist/esm-node/router-binding/useCanGoBack.js +7 -0
  129. package/dist/esm-node/router-binding/useLoaderData.js +9 -0
  130. package/dist/esm-node/router-binding/useLoaderDeps.js +8 -0
  131. package/dist/esm-node/router-binding/useLocation.js +14 -0
  132. package/dist/esm-node/router-binding/useMatch.js +28 -0
  133. package/dist/esm-node/router-binding/useNavigate.js +19 -0
  134. package/dist/esm-node/router-binding/useParams.js +13 -0
  135. package/dist/esm-node/router-binding/useRouteContext.js +8 -0
  136. package/dist/esm-node/router-binding/useRouter.js +10 -0
  137. package/dist/esm-node/router-binding/useRouterState.js +19 -0
  138. package/dist/esm-node/router-binding/useSearch.js +13 -0
  139. package/dist/esm-node/router-binding/utils.js +23 -0
  140. package/dist/esm-node/router.js +187 -0
  141. package/dist/esm-node/server.js +396 -0
  142. package/dist/types/actions.d.ts +45 -0
  143. package/dist/types/application-router.d.ts +5 -0
  144. package/dist/types/client.d.ts +23 -0
  145. package/dist/types/entry-application.d.ts +10 -0
  146. package/dist/types/entry-client.d.ts +5 -0
  147. package/dist/types/entry-server.d.ts +5 -0
  148. package/dist/types/federation-context.d.ts +16 -0
  149. package/dist/types/federation-ssr.d.ts +21 -0
  150. package/dist/types/federation.d.ts +30 -0
  151. package/dist/types/i18n/I18nProvider.d.ts +21 -0
  152. package/dist/types/i18n/LocalizedLink.d.ts +43 -0
  153. package/dist/types/i18n/context.d.ts +11 -0
  154. package/dist/types/i18n/index.d.ts +9 -0
  155. package/dist/types/i18n/languageSync.d.ts +31 -0
  156. package/dist/types/i18n/types.d.ts +33 -0
  157. package/dist/types/i18n/useI18n.d.ts +24 -0
  158. package/dist/types/index.d.ts +41 -0
  159. package/dist/types/manifest.d.ts +55 -0
  160. package/dist/types/native-promise-serialization.d.ts +9 -0
  161. package/dist/types/plugin/compiler.d.ts +6 -0
  162. package/dist/types/plugin/create.d.ts +21 -0
  163. package/dist/types/plugin/index.d.ts +3 -0
  164. package/dist/types/plugin/lazy-modules.d.cts +15 -0
  165. package/dist/types/plugin/preserve-import-loader.d.cts +3 -0
  166. package/dist/types/plugin/profile.d.ts +2 -0
  167. package/dist/types/plugin/solid-loader.d.cts +2 -0
  168. package/dist/types/plugin/svg-component-template.d.cts +6 -0
  169. package/dist/types/route-completion.d.ts +21 -0
  170. package/dist/types/route-data-error.d.ts +17 -0
  171. package/dist/types/router-binding/Asset.d.ts +3 -0
  172. package/dist/types/router-binding/CatchBoundary.d.ts +13 -0
  173. package/dist/types/router-binding/ClientOnly.d.ts +31 -0
  174. package/dist/types/router-binding/HeadContent.d.ts +13 -0
  175. package/dist/types/router-binding/Match.d.ts +6 -0
  176. package/dist/types/router-binding/Matches.d.ts +26 -0
  177. package/dist/types/router-binding/RouterProvider.d.ts +10 -0
  178. package/dist/types/router-binding/SafeFragment.d.ts +2 -0
  179. package/dist/types/router-binding/ScriptOnce.d.ts +6 -0
  180. package/dist/types/router-binding/Scripts.d.ts +2 -0
  181. package/dist/types/router-binding/ScrollRestoration.d.ts +14 -0
  182. package/dist/types/router-binding/Transitioner.d.ts +2 -0
  183. package/dist/types/router-binding/awaited.d.ts +11 -0
  184. package/dist/types/router-binding/fileRoute.d.ts +54 -0
  185. package/dist/types/router-binding/flightData.d.ts +38 -0
  186. package/dist/types/router-binding/headContentUtils.d.ts +15 -0
  187. package/dist/types/router-binding/history.d.ts +8 -0
  188. package/dist/types/router-binding/index.d.ts +45 -0
  189. package/dist/types/router-binding/lazyRouteComponent.d.ts +2 -0
  190. package/dist/types/router-binding/link.d.ts +43 -0
  191. package/dist/types/router-binding/matchContext.d.ts +7 -0
  192. package/dist/types/router-binding/nonRouteComponentContext.d.ts +5 -0
  193. package/dist/types/router-binding/not-found.d.ts +11 -0
  194. package/dist/types/router-binding/publicMatchData.d.ts +19 -0
  195. package/dist/types/router-binding/registryTransfer.d.ts +47 -0
  196. package/dist/types/router-binding/renderRouteNotFound.d.ts +11 -0
  197. package/dist/types/router-binding/route.d.ts +105 -0
  198. package/dist/types/router-binding/router.d.ts +70 -0
  199. package/dist/types/router-binding/routerContext.d.ts +3 -0
  200. package/dist/types/router-binding/routerStores.d.ts +2 -0
  201. package/dist/types/router-binding/scroll-restoration.d.ts +2 -0
  202. package/dist/types/router-binding/typePrimitives.d.ts +10 -0
  203. package/dist/types/router-binding/useBlocker.d.ts +70 -0
  204. package/dist/types/router-binding/useCanGoBack.d.ts +2 -0
  205. package/dist/types/router-binding/useLoaderData.d.ts +8 -0
  206. package/dist/types/router-binding/useLoaderDeps.d.ts +8 -0
  207. package/dist/types/router-binding/useLocation.d.ts +7 -0
  208. package/dist/types/router-binding/useMatch.d.ts +10 -0
  209. package/dist/types/router-binding/useNavigate.d.ts +5 -0
  210. package/dist/types/router-binding/useParams.d.ts +9 -0
  211. package/dist/types/router-binding/useRouteContext.d.ts +4 -0
  212. package/dist/types/router-binding/useRouter.d.ts +4 -0
  213. package/dist/types/router-binding/useRouterState.d.ts +8 -0
  214. package/dist/types/router-binding/useSearch.d.ts +9 -0
  215. package/dist/types/router-binding/utils.d.ts +25 -0
  216. package/dist/types/router.d.ts +31 -0
  217. package/dist/types/server.d.ts +47 -0
  218. package/package.json +118 -4
  219. package/src/actions.tsx +437 -0
  220. package/src/application-router.tsx +41 -0
  221. package/src/client.ts +106 -0
  222. package/src/entry-application.tsx +73 -0
  223. package/src/entry-client.tsx +48 -0
  224. package/src/entry-server.tsx +85 -0
  225. package/src/federation-context.ts +47 -0
  226. package/src/federation-ssr.ts +117 -0
  227. package/src/federation.tsx +193 -0
  228. package/src/i18n/I18nProvider.tsx +54 -0
  229. package/src/i18n/LocalizedLink.tsx +122 -0
  230. package/src/i18n/context.ts +13 -0
  231. package/src/i18n/index.ts +35 -0
  232. package/src/i18n/languageSync.ts +113 -0
  233. package/src/i18n/types.ts +35 -0
  234. package/src/i18n/useI18n.ts +121 -0
  235. package/src/index.ts +41 -0
  236. package/src/manifest.ts +337 -0
  237. package/src/native-promise-serialization.ts +167 -0
  238. package/src/plugin/compiler.ts +320 -0
  239. package/src/plugin/create.ts +270 -0
  240. package/src/plugin/index.ts +72 -0
  241. package/src/plugin/lazy-modules.cjs +146 -0
  242. package/src/plugin/preserve-import-loader.cjs +46 -0
  243. package/src/plugin/profile.ts +42 -0
  244. package/src/plugin/solid-loader.cjs +83 -0
  245. package/src/plugin/svg-component-template.cjs +19 -0
  246. package/src/route-completion.tsx +222 -0
  247. package/src/route-data-error.ts +175 -0
  248. package/src/router-binding/Asset.tsx +283 -0
  249. package/src/router-binding/CatchBoundary.tsx +130 -0
  250. package/src/router-binding/ClientOnly.tsx +76 -0
  251. package/src/router-binding/HeadContent.tsx +23 -0
  252. package/src/router-binding/LICENSE +21 -0
  253. package/src/router-binding/Match.tsx +397 -0
  254. package/src/router-binding/Matches.tsx +242 -0
  255. package/src/router-binding/PROVENANCE.json +94 -0
  256. package/src/router-binding/RouterProvider.tsx +129 -0
  257. package/src/router-binding/SafeFragment.tsx +5 -0
  258. package/src/router-binding/ScriptOnce.tsx +23 -0
  259. package/src/router-binding/Scripts.tsx +44 -0
  260. package/src/router-binding/ScrollRestoration.tsx +49 -0
  261. package/src/router-binding/Transitioner.tsx +172 -0
  262. package/src/router-binding/awaited.tsx +71 -0
  263. package/src/router-binding/fileRoute.ts +268 -0
  264. package/src/router-binding/flightData.ts +90 -0
  265. package/src/router-binding/headContentUtils.tsx +290 -0
  266. package/src/router-binding/history.ts +9 -0
  267. package/src/router-binding/index.tsx +318 -0
  268. package/src/router-binding/lazyRouteComponent.tsx +70 -0
  269. package/src/router-binding/link.tsx +865 -0
  270. package/src/router-binding/matchContext.tsx +15 -0
  271. package/src/router-binding/nonRouteComponentContext.tsx +23 -0
  272. package/src/router-binding/not-found.tsx +65 -0
  273. package/src/router-binding/publicMatchData.ts +674 -0
  274. package/src/router-binding/registryTransfer.ts +383 -0
  275. package/src/router-binding/renderRouteNotFound.tsx +53 -0
  276. package/src/router-binding/route.tsx +665 -0
  277. package/src/router-binding/router.ts +121 -0
  278. package/src/router-binding/routerContext.tsx +6 -0
  279. package/src/router-binding/routerStores.ts +85 -0
  280. package/src/router-binding/scroll-restoration.tsx +15 -0
  281. package/src/router-binding/typePrimitives.ts +74 -0
  282. package/src/router-binding/useBlocker.tsx +359 -0
  283. package/src/router-binding/useCanGoBack.ts +9 -0
  284. package/src/router-binding/useLoaderData.tsx +50 -0
  285. package/src/router-binding/useLoaderDeps.tsx +46 -0
  286. package/src/router-binding/useLocation.tsx +43 -0
  287. package/src/router-binding/useMatch.tsx +111 -0
  288. package/src/router-binding/useNavigate.tsx +43 -0
  289. package/src/router-binding/useParams.tsx +72 -0
  290. package/src/router-binding/useRouteContext.ts +30 -0
  291. package/src/router-binding/useRouter.tsx +17 -0
  292. package/src/router-binding/useRouterState.tsx +50 -0
  293. package/src/router-binding/useSearch.tsx +72 -0
  294. package/src/router-binding/utils.ts +59 -0
  295. package/src/router.ts +376 -0
  296. package/src/server.ts +645 -0
@@ -0,0 +1,447 @@
1
+ import { DataProtocolError, assertPublicData, parsePublicData, serializePublicData } from "@modern-js/renderer-core/data";
2
+ import { RouteDataError } from "@modern-js/renderer-core/router";
3
+ import { getRequestEvent } from "@solidjs/web";
4
+ import { projectRouteDataError } from "../route-data-error.js";
5
+ const observed = new WeakMap();
6
+ const snapshots = new WeakMap();
7
+ const projectedPromises = new WeakSet();
8
+ function requestFailureOwner(explicit) {
9
+ return explicit ?? getRequestEvent()?.locals.session;
10
+ }
11
+ function privateReferences(owner, contexts) {
12
+ const references = new WeakSet();
13
+ const event = getRequestEvent();
14
+ const identity = owner && "identity" in owner ? owner.identity : void 0;
15
+ let count = 0;
16
+ const visit = (value, depth)=>{
17
+ if (!value || "object" != typeof value && "function" != typeof value || value === identity) return;
18
+ if (++count > 2e4 || depth > 100) throw new DataProtocolError("Private request context exceeds its size or depth limit");
19
+ if (references.has(value)) return;
20
+ references.add(value);
21
+ const prototype = Object.getPrototypeOf(value);
22
+ if (prototype === Map.prototype) for (const [key, entry] of Map.prototype.entries.call(value)){
23
+ visit(key, depth + 1);
24
+ visit(entry, depth + 1);
25
+ }
26
+ else if (prototype === Set.prototype) for (const entry of Set.prototype.values.call(value))visit(entry, depth + 1);
27
+ else if (prototype === Object.prototype || null === prototype || prototype === Array.prototype) for (const key of Reflect.ownKeys(value)){
28
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
29
+ if (!descriptor.get && !descriptor.set) visit(descriptor.value, depth + 1);
30
+ }
31
+ };
32
+ if (owner) {
33
+ references.add(owner);
34
+ if ("request" in owner) visit(owner.request, 0);
35
+ if ("platform" in owner) visit(owner.platform, 0);
36
+ }
37
+ if (event) {
38
+ visit(event, 0);
39
+ visit(event.locals, 0);
40
+ }
41
+ for (const context of contexts)visit(context, 0);
42
+ return references;
43
+ }
44
+ function rejectPrivateReferences(value, references) {
45
+ const seen = new WeakSet();
46
+ let count = 0;
47
+ const visit = (current, depth)=>{
48
+ if (++count > 2e4 || depth > 100) throw new DataProtocolError("Public data exceeds its size or depth limit");
49
+ if (!current || "object" != typeof current) return;
50
+ if (references.has(current)) throw new DataProtocolError("Public data must not contain private request references");
51
+ if (seen.has(current)) return;
52
+ seen.add(current);
53
+ const prototype = Object.getPrototypeOf(current);
54
+ if (prototype === Promise.prototype) return;
55
+ for (const key of Reflect.ownKeys(current)){
56
+ const descriptor = Object.getOwnPropertyDescriptor(current, key);
57
+ if (!descriptor.get && !descriptor.set) visit(descriptor.value, depth + 1);
58
+ }
59
+ if (prototype === Map.prototype) for (const [key, entry] of Map.prototype.entries.call(current)){
60
+ visit(key, depth + 1);
61
+ visit(entry, depth + 1);
62
+ }
63
+ else if (prototype === Set.prototype) for (const entry of Set.prototype.values.call(current))visit(entry, depth + 1);
64
+ };
65
+ visit(value, 0);
66
+ }
67
+ function projectDeferred(promise, session, references) {
68
+ let promises = observed.get(session);
69
+ if (!promises) {
70
+ promises = new WeakMap();
71
+ observed.set(session, promises);
72
+ }
73
+ const previous = promises.get(promise);
74
+ if (previous) {
75
+ previous.scopes.push(references);
76
+ return previous.projection;
77
+ }
78
+ const scopes = [
79
+ references
80
+ ];
81
+ const owner = new WeakRef(session);
82
+ const project = (value)=>{
83
+ try {
84
+ for (const scope of scopes)rejectPrivateReferences(value, scope);
85
+ return immutableSnapshot(value, owner.deref());
86
+ } catch (error) {
87
+ owner.deref()?.fail(error);
88
+ throw Object.freeze({
89
+ name: "DataProtocolError",
90
+ message: "Invalid public deferred data"
91
+ });
92
+ }
93
+ };
94
+ const reject = (reason)=>{
95
+ let projected;
96
+ try {
97
+ for (const scope of scopes)rejectPrivateReferences(reason, scope);
98
+ projected = reason instanceof Error ? preparePublicMatchError(reason, owner.deref()) : immutableSnapshot(reason, owner.deref());
99
+ } catch (error) {
100
+ owner.deref()?.fail(error);
101
+ throw Object.freeze({
102
+ name: "DataProtocolError",
103
+ message: "Invalid public deferred error"
104
+ });
105
+ }
106
+ throw projected;
107
+ };
108
+ const projection = Promise.prototype.then.call(promise, project, reject);
109
+ const observation = {
110
+ scopes,
111
+ projection
112
+ };
113
+ promises.set(promise, observation);
114
+ promises.set(projection, observation);
115
+ projectedPromises.add(projection);
116
+ let status;
117
+ let settledValue;
118
+ Object.defineProperties(projection, {
119
+ s: {
120
+ get: ()=>status,
121
+ set: (next)=>{
122
+ if (void 0 === next || 0 === next || 1 === next || 2 === next) {
123
+ status = next;
124
+ return;
125
+ }
126
+ const error = new DataProtocolError("Unsupported native immutable route-data Promise state. AsyncIterable values are not supported.");
127
+ owner.deref()?.fail(error);
128
+ throw error;
129
+ }
130
+ },
131
+ v: {
132
+ get: ()=>settledValue,
133
+ set: (next)=>{
134
+ try {
135
+ for (const scope of scopes)rejectPrivateReferences(next, scope);
136
+ settledValue = 2 === status && next instanceof Error ? preparePublicMatchError(next, owner.deref()) : immutableSnapshot(next, owner.deref());
137
+ } catch (error) {
138
+ owner.deref()?.fail(error);
139
+ throw error;
140
+ }
141
+ }
142
+ }
143
+ });
144
+ Object.seal(projection);
145
+ projection.catch(()=>{});
146
+ return projection;
147
+ }
148
+ function criticalProjection(value, validateNativePromise) {
149
+ const seen = new WeakMap();
150
+ const slots = [];
151
+ let count = 0;
152
+ const copy = (current, depth)=>{
153
+ if (++count > 2e4 || depth > 100) throw new DataProtocolError("Public data exceeds its size or depth limit");
154
+ if (!current || "object" != typeof current) return current;
155
+ const previous = seen.get(current);
156
+ if (previous) return previous;
157
+ const prototype = Object.getPrototypeOf(current);
158
+ for (const key of Reflect.ownKeys(current)){
159
+ const descriptor = Object.getOwnPropertyDescriptor(current, key);
160
+ if ("symbol" == typeof key || descriptor.get || descriptor.set) throw new DataProtocolError("Public data must not contain symbols or accessors");
161
+ }
162
+ let result;
163
+ if (prototype === Object.prototype || null === prototype) result = Object.create(prototype);
164
+ else if (prototype === Array.prototype && Array.isArray(current)) result = [];
165
+ else {
166
+ rejectMutableNativeContainer(prototype);
167
+ assertPublicData(current);
168
+ throw new DataProtocolError("Unsupported public data container");
169
+ }
170
+ seen.set(current, result);
171
+ for (const key of Reflect.ownKeys(current)){
172
+ const descriptor = Object.getOwnPropertyDescriptor(current, key);
173
+ if ("symbol" == typeof key || descriptor.get || descriptor.set) throw new DataProtocolError("Public data must not contain symbols or accessors");
174
+ if (0 === depth && (prototype === Object.prototype || null === prototype) && descriptor.enumerable && descriptor.value instanceof Promise) {
175
+ const promise = descriptor.value;
176
+ if (Object.getPrototypeOf(promise) !== Promise.prototype) throw new DataProtocolError("Public data must not contain custom Promise properties or prototypes");
177
+ if (!projectedPromises.has(promise) && 0 !== Reflect.ownKeys(promise).length) {
178
+ if (!validateNativePromise) throw new DataProtocolError("Public data must not contain custom Promise properties or prototypes");
179
+ validateNativePromise(promise);
180
+ }
181
+ slots.push([
182
+ key,
183
+ descriptor
184
+ ]);
185
+ Object.defineProperty(result, key, {
186
+ ...descriptor,
187
+ value: void 0
188
+ });
189
+ } else Object.defineProperty(result, key, {
190
+ ...descriptor,
191
+ value: copy(descriptor.value, depth + 1)
192
+ });
193
+ }
194
+ return result;
195
+ };
196
+ return {
197
+ critical: copy(value, 0),
198
+ slots
199
+ };
200
+ }
201
+ function preparePublicLoaderData(value, owner, privateContexts = []) {
202
+ return prepareLoaderData(value, owner, privateContexts);
203
+ }
204
+ function prepareHydratedLoaderData(value, owner, privateContexts = []) {
205
+ return prepareLoaderData(value, owner, privateContexts, true);
206
+ }
207
+ function prepareLoaderData(value, owner, privateContexts = [], hydration = false) {
208
+ const session = requestFailureOwner(owner);
209
+ const references = privateReferences(session, privateContexts);
210
+ rejectPrivateReferences(value, references);
211
+ if (value && "object" == typeof value && session) {
212
+ const cached = snapshots.get(session)?.get(value);
213
+ if (cached) {
214
+ for (const promise of cached.deferred)projectDeferred(promise, session, references);
215
+ return cached.snapshot;
216
+ }
217
+ }
218
+ const nativeSettlements = new Map();
219
+ const validateNativePromise = hydration ? (promise)=>{
220
+ const descriptors = Object.getOwnPropertyDescriptors(promise);
221
+ for (const key of Reflect.ownKeys(promise)){
222
+ const descriptor = Object.getOwnPropertyDescriptor(promise, key);
223
+ if ("s" !== key && "v" !== key || descriptor.get || descriptor.set) throw new DataProtocolError("Native hydrated Promise metadata must contain only s/v data fields");
224
+ }
225
+ const status = descriptors.s?.value;
226
+ if (0 !== status && 1 !== status && 2 !== status) throw new DataProtocolError("Unsupported native hydrated Promise state; AsyncIterable values are not supported");
227
+ if ((1 === status || 2 === status) && !descriptors.v) throw new DataProtocolError("Native settled hydrated Promises require a value data field");
228
+ let projected;
229
+ if (descriptors.v) {
230
+ const settled = descriptors.v.value;
231
+ rejectPrivateReferences(settled, references);
232
+ projected = 2 === status && settled instanceof Error ? preparePublicMatchError(settled, session, privateContexts) : immutableSnapshot(settled, session);
233
+ }
234
+ nativeSettlements.set(promise, {
235
+ status,
236
+ hasValue: Boolean(descriptors.v),
237
+ value: projected
238
+ });
239
+ } : void 0;
240
+ const { critical, slots } = criticalProjection(value, validateNativePromise);
241
+ let snapshot = parsePublicData(serializePublicData(critical));
242
+ if (slots.length) {
243
+ if (!session || "function" != typeof session.fail || !(session.signal instanceof AbortSignal)) throw new DataProtocolError("Native deferred public data requires its owning request session");
244
+ for (const [key, descriptor] of slots){
245
+ const projection = projectDeferred(descriptor.value, session, references);
246
+ const settlement = nativeSettlements.get(descriptor.value);
247
+ if (settlement) {
248
+ Object.getOwnPropertyDescriptor(projection, "s").set.call(projection, settlement.status);
249
+ if (settlement.hasValue) Object.getOwnPropertyDescriptor(projection, "v").set.call(projection, settlement.value);
250
+ }
251
+ Object.defineProperty(snapshot, key, {
252
+ ...descriptor,
253
+ value: projection
254
+ });
255
+ }
256
+ }
257
+ snapshot = rememberSnapshot(value, snapshot, session, slots.map(([, descriptor])=>descriptor.value));
258
+ return snapshot;
259
+ }
260
+ function preparePublicContextData(value, owner, privateContexts = []) {
261
+ assertPublicData(value);
262
+ return preparePublicLoaderData(value, owner, privateContexts);
263
+ }
264
+ function preparePublishedRouteContext(context, owner, privateContexts = []) {
265
+ const snapshot = preparePublicContextData(context, owner, privateContexts);
266
+ if (!snapshot || "object" != typeof snapshot) throw new DataProtocolError("Native public route context must be a plain record");
267
+ const prototype = Object.getPrototypeOf(context);
268
+ if (prototype !== Object.prototype && null !== prototype) throw new DataProtocolError("Native public route context must be a plain record");
269
+ if (snapshot !== context) for (const key of Reflect.ownKeys(context)){
270
+ const descriptor = Object.getOwnPropertyDescriptor(context, key);
271
+ const checked = Object.getOwnPropertyDescriptor(snapshot, key);
272
+ if (checked && checked.value !== descriptor.value) Object.defineProperty(context, key, {
273
+ ...descriptor,
274
+ value: checked.value
275
+ });
276
+ }
277
+ freezeSnapshot(context);
278
+ const record = {
279
+ snapshot: context,
280
+ deferred: []
281
+ };
282
+ snapshots.get(owner)?.set(context, record);
283
+ snapshots.get(owner)?.set(snapshot, record);
284
+ }
285
+ const errorNames = new Map([
286
+ [
287
+ DataProtocolError.prototype,
288
+ "DataProtocolError"
289
+ ],
290
+ [
291
+ Error.prototype,
292
+ "Error"
293
+ ],
294
+ [
295
+ EvalError.prototype,
296
+ "EvalError"
297
+ ],
298
+ [
299
+ RangeError.prototype,
300
+ "RangeError"
301
+ ],
302
+ [
303
+ ReferenceError.prototype,
304
+ "ReferenceError"
305
+ ],
306
+ [
307
+ SyntaxError.prototype,
308
+ "SyntaxError"
309
+ ],
310
+ [
311
+ TypeError.prototype,
312
+ "TypeError"
313
+ ],
314
+ [
315
+ URIError.prototype,
316
+ "URIError"
317
+ ]
318
+ ]);
319
+ function preparePublicMatchError(error, owner, privateContexts = []) {
320
+ const references = privateReferences(requestFailureOwner(owner), privateContexts);
321
+ if (error && "object" == typeof error && Object.getPrototypeOf(error) === RouteDataError.prototype) {
322
+ const result = projectRouteDataError(error, "development" !== process.env.NODE_ENV);
323
+ rejectPrivateReferences(result, references);
324
+ return immutableSnapshot(result, requestFailureOwner(owner));
325
+ }
326
+ const fallback = Object.freeze({
327
+ name: "Error",
328
+ message: "Unexpected Server Error"
329
+ });
330
+ if (!error || "object" != typeof error) return fallback;
331
+ const prototype = Object.getPrototypeOf(error);
332
+ if ((prototype === Object.prototype || null === prototype) && Object.getOwnPropertyDescriptor(error, "isNotFound")?.value === true) return preparePublicContextData(error, owner, privateContexts);
333
+ const name = errorNames.get(prototype);
334
+ if (!name) throw new DataProtocolError("Public match errors require an exact supported error prototype");
335
+ const descriptors = Object.getOwnPropertyDescriptors(error);
336
+ for (const key of Reflect.ownKeys(descriptors)){
337
+ const descriptor = Object.getOwnPropertyDescriptor(error, key);
338
+ if ("string" != typeof key || ![
339
+ "name",
340
+ "message",
341
+ "stack",
342
+ "cause"
343
+ ].includes(key)) throw new DataProtocolError("Public errors must not contain undeclared fields");
344
+ if ("stack" !== key || !descriptor.get && !descriptor.set) {
345
+ if ("symbol" == typeof key || descriptor.get || descriptor.set) throw new DataProtocolError("Public errors must not contain symbols or accessors");
346
+ rejectPrivateReferences(descriptor.value, references);
347
+ assertPublicData(descriptor.value);
348
+ }
349
+ }
350
+ if ("development" !== process.env.NODE_ENV && prototype !== DataProtocolError.prototype) return fallback;
351
+ const result = {
352
+ name: "string" == typeof descriptors.name?.value ? descriptors.name.value : name,
353
+ message: "string" == typeof descriptors.message?.value ? descriptors.message.value : fallback.message
354
+ };
355
+ if ("development" === process.env.NODE_ENV && "string" == typeof descriptors.stack?.value) result.stack = descriptors.stack.value;
356
+ if (descriptors.cause) result.cause = descriptors.cause.value;
357
+ return immutableSnapshot(result, requestFailureOwner(owner));
358
+ }
359
+ function rejectMutableNativeContainer(prototype) {
360
+ const names = new Map([
361
+ [
362
+ Date.prototype,
363
+ "Date"
364
+ ],
365
+ [
366
+ RegExp.prototype,
367
+ "RegExp"
368
+ ],
369
+ [
370
+ Map.prototype,
371
+ "Map"
372
+ ],
373
+ [
374
+ Set.prototype,
375
+ "Set"
376
+ ]
377
+ ]);
378
+ const name = prototype && names.get(prototype);
379
+ if (name) throw new DataProtocolError(`Unsupported native immutable route-data: ${name}. Use scalar values, plain records or arrays.`);
380
+ }
381
+ function freezeSnapshot(value) {
382
+ const seen = new WeakSet();
383
+ const visit = (current)=>{
384
+ if (!current || "object" != typeof current || current instanceof Promise || seen.has(current)) return;
385
+ seen.add(current);
386
+ rejectMutableNativeContainer(Object.getPrototypeOf(current));
387
+ for (const key of Reflect.ownKeys(current))visit(Object.getOwnPropertyDescriptor(current, key).value);
388
+ Object.freeze(current);
389
+ };
390
+ visit(value);
391
+ }
392
+ function immutableSnapshot(value, owner) {
393
+ assertPublicData(value);
394
+ const { critical } = criticalProjection(value);
395
+ const snapshot = parsePublicData(serializePublicData(critical));
396
+ return rememberSnapshot(value, snapshot, owner);
397
+ }
398
+ function rememberSnapshot(original, snapshot, owner, deferred = []) {
399
+ if (!owner || !original || "object" != typeof original) {
400
+ freezeSnapshot(snapshot);
401
+ return snapshot;
402
+ }
403
+ let values = snapshots.get(owner);
404
+ if (!values) {
405
+ values = new WeakMap();
406
+ snapshots.set(owner, values);
407
+ }
408
+ const aliases = new WeakMap();
409
+ const records = [];
410
+ const reuse = (source, projected)=>{
411
+ if (!source || "object" != typeof source || source instanceof Promise || !projected || "object" != typeof projected) return projected;
412
+ const cached = values.get(source);
413
+ if (cached) return cached.snapshot;
414
+ const previous = aliases.get(source);
415
+ if (previous) return previous;
416
+ aliases.set(source, projected);
417
+ records.push([
418
+ source,
419
+ projected
420
+ ]);
421
+ for (const key of Reflect.ownKeys(projected)){
422
+ const sourceDescriptor = Object.getOwnPropertyDescriptor(source, key);
423
+ const descriptor = Object.getOwnPropertyDescriptor(projected, key);
424
+ if (!sourceDescriptor || sourceDescriptor.get || sourceDescriptor.set) continue;
425
+ const value = reuse(sourceDescriptor.value, descriptor.value);
426
+ if (value !== descriptor.value) Object.defineProperty(projected, key, {
427
+ ...descriptor,
428
+ value
429
+ });
430
+ }
431
+ return projected;
432
+ };
433
+ const result = reuse(original, snapshot);
434
+ const { critical } = criticalProjection(result);
435
+ serializePublicData(critical);
436
+ freezeSnapshot(result);
437
+ for (const [source, projected] of records){
438
+ const record = {
439
+ snapshot: projected,
440
+ deferred: source === original ? deferred : []
441
+ };
442
+ values.set(source, record);
443
+ values.set(projected, record);
444
+ }
445
+ return result;
446
+ }
447
+ export { prepareHydratedLoaderData, preparePublicContextData, preparePublicLoaderData, preparePublicMatchError, preparePublishedRouteContext };
@@ -0,0 +1,210 @@
1
+ import { DataProtocolError } from "@modern-js/renderer-core/data";
2
+ import { getHydrationWriter, getRequestEvent, takeHydrationValue } from "@solidjs/web";
3
+ import { restoreRouteDataError } from "../route-data-error.js";
4
+ import { prepareHydratedLoaderData, preparePublicContextData, preparePublicLoaderData, preparePublicMatchError, preparePublishedRouteContext } from "./publicMatchData.js";
5
+ import * as __rspack_external_solid_js_0ac0db99 from "solid-js";
6
+ const MATCH_KEY_PREFIX = "tsr:";
7
+ const preparedTransfers = new WeakMap();
8
+ const publicRouteDataOwners = new WeakMap();
9
+ function registerPublicRouteDataOwner(routeTree, owner, privateContexts = []) {
10
+ publicRouteDataOwners.set(routeTree, {
11
+ owner: new WeakRef(owner),
12
+ privateContexts: privateContexts.map((value)=>new WeakRef(value))
13
+ });
14
+ }
15
+ function requireManagedPublicRouter(router) {
16
+ const owner = getRequestEvent()?.locals.session;
17
+ if (!owner || publicRouteDataOwners.get(router.options.routeTree)?.owner.deref()) return;
18
+ const error = new DataProtocolError("Custom native Solid routers are unsupported by UltraModern SSR. Use the managed filesystem route tree and application router public-data boundary.");
19
+ owner.fail(error);
20
+ throw error;
21
+ }
22
+ function installPublicContextPublication(router) {
23
+ const scope = publicRouteDataOwners.get(router.options.routeTree);
24
+ const owner = scope?.owner.deref();
25
+ if (!scope || !owner) return;
26
+ const publish = router.stores.setMatches;
27
+ router.stores.setMatches = (matches)=>{
28
+ try {
29
+ const privateContexts = scope.privateContexts.flatMap((reference)=>{
30
+ const value = reference.deref();
31
+ return value ? [
32
+ value
33
+ ] : [];
34
+ });
35
+ preparePublishedMatches(matches, owner, privateContexts);
36
+ } catch (error) {
37
+ owner.fail(error);
38
+ throw error;
39
+ }
40
+ publish(matches);
41
+ };
42
+ }
43
+ function preparePublishedMatches(matches, owner, privateContexts) {
44
+ for (const match of matches)preparePublicContextData(match.context, owner, privateContexts);
45
+ for (const match of matches)preparePublishedRouteContext(match.context, owner, privateContexts);
46
+ }
47
+ function prepareEntries(router, owner, privateContexts = []) {
48
+ const entries = new Map();
49
+ const matches = router.stores.matches.get();
50
+ const contexts = privateContexts;
51
+ for (const match of matches){
52
+ if ("pending" === match.status) continue;
53
+ const entry = {
54
+ status: match.status,
55
+ updatedAt: match.updatedAt
56
+ };
57
+ if (void 0 !== match.loaderData) entry.loaderData = preparePublicLoaderData(match.loaderData, owner, contexts);
58
+ if (void 0 !== match.error) entry.error = preparePublicMatchError(match.error, owner, contexts);
59
+ const beforeLoadContext = nativeContextField(match, "__beforeLoadContext");
60
+ if (void 0 !== beforeLoadContext) entry.beforeLoadContext = preparePublicContextData(beforeLoadContext, owner, contexts);
61
+ if (match._notFound) entry.notFound = true;
62
+ if (void 0 !== match.ssr) entry.ssr = match.ssr;
63
+ entries.set(match.id, entry);
64
+ }
65
+ return entries;
66
+ }
67
+ function prepareRouterMatchTransfer(router, owner, privateContexts = []) {
68
+ try {
69
+ const entries = prepareEntries(router, owner, privateContexts);
70
+ let routers = preparedTransfers.get(owner);
71
+ if (!routers) {
72
+ routers = new WeakMap();
73
+ preparedTransfers.set(owner, routers);
74
+ }
75
+ routers.set(router, entries);
76
+ } catch (error) {
77
+ owner.fail(error);
78
+ throw error;
79
+ }
80
+ }
81
+ function serializeMatchTransfer(router) {
82
+ requireManagedPublicRouter(router);
83
+ if (router.serverSsr) return;
84
+ const writer = getHydrationWriter();
85
+ if (!writer || !__rspack_external_solid_js_0ac0db99.isHydratable()) return;
86
+ const owner = getRequestEvent()?.locals.session;
87
+ const entries = (owner && preparedTransfers.get(owner)?.get(router)) ?? prepareEntries(router, owner);
88
+ for (const [id, entry] of entries)writer.write(MATCH_KEY_PREFIX + id, entry);
89
+ }
90
+ function primeRouterFromRegistry(router) {
91
+ if (router.stores.matches.get().length > 0) return false;
92
+ const registry = globalThis._$HY?.r;
93
+ if (!registry) return false;
94
+ let hasMatchEntries = false;
95
+ for(const key in registry)if (key.startsWith(MATCH_KEY_PREFIX)) {
96
+ hasMatchEntries = true;
97
+ break;
98
+ }
99
+ if (!hasMatchEntries) return false;
100
+ const matches = router.matchRoutes(router.latestLocation);
101
+ if (0 === matches.length) return false;
102
+ const entries = [];
103
+ let complete = true;
104
+ for (const match of matches){
105
+ const key = MATCH_KEY_PREFIX + match.id;
106
+ const transferred = takeHydrationValue(key);
107
+ if (transferred?.status !== "resolved") {
108
+ complete = false;
109
+ if (transferred?.status === "pending") Promise.prototype.then.call(transferred.promise, void 0, ()=>{});
110
+ continue;
111
+ }
112
+ const entry = transferred.value;
113
+ if (!entry || "string" != typeof entry.status) {
114
+ complete = false;
115
+ continue;
116
+ }
117
+ entries.push(entry);
118
+ }
119
+ if (!complete) return false;
120
+ const primed = [];
121
+ const scope = publicRouteDataOwners.get(router.options.routeTree);
122
+ const owner = scope?.owner.deref();
123
+ const privateContexts = scope?.privateContexts.flatMap((reference)=>{
124
+ const value = reference.deref();
125
+ return value ? [
126
+ value
127
+ ] : [];
128
+ }) ?? [];
129
+ try {
130
+ for (const [index, match] of matches.entries()){
131
+ const entry = entries[index];
132
+ const checked = {
133
+ ...entry,
134
+ loaderData: prepareHydratedLoaderData(entry.loaderData, owner, privateContexts),
135
+ beforeLoadContext: preparePublicContextData(entry.beforeLoadContext, owner, privateContexts),
136
+ error: preparePublicContextData(entry.error, owner, privateContexts)
137
+ };
138
+ entries[index] = checked;
139
+ primed.push(applyTransferredMatch(match, checked));
140
+ }
141
+ for (const [index, next] of primed.entries()){
142
+ const match = matches[index];
143
+ const route = router.routesById[match.routeId];
144
+ const parentContext = primed[index - 1]?.context ?? router.options.context ?? {};
145
+ const routeContext = route.options.context?.({
146
+ deps: match.loaderDeps,
147
+ params: match.params,
148
+ context: parentContext,
149
+ location: router.latestLocation,
150
+ navigate: (options)=>router.navigate({
151
+ ...options,
152
+ _fromLocation: router.latestLocation
153
+ }),
154
+ buildLocation: router.buildLocation,
155
+ cause: match.cause,
156
+ abortController: match.abortController,
157
+ preload: false,
158
+ matches: primed,
159
+ routeId: route.id
160
+ }) || void 0;
161
+ Object.defineProperty(next, "_ctx", {
162
+ value: routeContext,
163
+ configurable: true,
164
+ writable: true,
165
+ enumerable: true
166
+ });
167
+ next.context = {
168
+ ...parentContext,
169
+ ...routeContext,
170
+ ...entries[index].beforeLoadContext
171
+ };
172
+ }
173
+ if (owner) preparePublishedMatches(primed, owner, privateContexts);
174
+ } catch (error) {
175
+ owner?.fail(error);
176
+ return false;
177
+ }
178
+ router._committed = primed;
179
+ router.batch(()=>{
180
+ router.stores.setMatches(primed);
181
+ router.stores.status.set("idle");
182
+ router.stores.resolvedLocation.set(router.stores.location.get());
183
+ });
184
+ return true;
185
+ }
186
+ function applyTransferredMatch(match, entry) {
187
+ const next = {
188
+ ...match,
189
+ status: entry.status,
190
+ updatedAt: entry.updatedAt,
191
+ error: isRouteDataErrorSnapshot(entry.error) ? Object.freeze(restoreRouteDataError(entry.error)) : entry.error,
192
+ invalid: false,
193
+ isFetching: false,
194
+ preload: false,
195
+ _notFound: entry.notFound,
196
+ __beforeLoadContext: entry.beforeLoadContext
197
+ };
198
+ if ("loaderData" in entry) next.loaderData = entry.loaderData;
199
+ if ("ssr" in entry) next.ssr = entry.ssr;
200
+ return next;
201
+ }
202
+ function isRouteDataErrorSnapshot(value) {
203
+ return !!value && "object" == typeof value && Object.getOwnPropertyDescriptor(value, "kind")?.value === "ultramodern-route-data-error";
204
+ }
205
+ function nativeContextField(match, key) {
206
+ const descriptor = Object.getOwnPropertyDescriptor(match, key);
207
+ if (descriptor?.get || descriptor?.set) throw new DataProtocolError("Native route context must not contain accessor fields");
208
+ return descriptor?.value;
209
+ }
210
+ export { MATCH_KEY_PREFIX, installPublicContextPublication, prepareRouterMatchTransfer, primeRouterFromRegistry, registerPublicRouteDataOwner, requireManagedPublicRouter, serializeMatchTransfer };
@@ -0,0 +1,22 @@
1
+ import { renderInNonRouteComponentContext } from "./nonRouteComponentContext.js";
2
+ import { DefaultGlobalNotFound } from "./not-found.js";
3
+ function renderRouteNotFound(router, route, data) {
4
+ if ("production" !== process.env.NODE_ENV) {
5
+ if (!route.options.notFoundComponent) {
6
+ if (router.options.defaultNotFoundComponent) {
7
+ const DefaultNotFoundComponent = router.options.defaultNotFoundComponent;
8
+ return renderInNonRouteComponentContext(()=>DefaultNotFoundComponent(data), "notFoundComponent");
9
+ }
10
+ console.warn(`Warning: A notFoundError was encountered on the route with ID "${route.id}", but a notFoundComponent option was not configured, nor was a router level defaultNotFoundComponent configured. Consider configuring at least one of these to avoid TanStack Router's overly generic defaultNotFoundComponent (<p>Not Found</p>)`);
11
+ return DefaultGlobalNotFound({});
12
+ }
13
+ const NotFoundComponent = route.options.notFoundComponent;
14
+ return renderInNonRouteComponentContext(()=>NotFoundComponent(data), "notFoundComponent");
15
+ }
16
+ if (!route.options.notFoundComponent) {
17
+ if (router.options.defaultNotFoundComponent) return router.options.defaultNotFoundComponent(data);
18
+ return DefaultGlobalNotFound({});
19
+ }
20
+ return route.options.notFoundComponent(data);
21
+ }
22
+ export { renderRouteNotFound };