@bleedingdev/modern-js-renderer-solid 0.0.0-stage → 3.9.3-ultramodern.10

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 (301) hide show
  1. package/dist/esm/actions.js +282 -0
  2. package/dist/esm/application-router.js +30 -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 +24 -0
  6. package/dist/esm/federation-context.js +25 -0
  7. package/dist/esm/federation-ssr.js +92 -0
  8. package/dist/esm/federation.js +87 -0
  9. package/dist/esm/i18n/I18nProvider.js +33 -0
  10. package/dist/esm/i18n/LocalizedLink.js +52 -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 +151 -0
  19. package/dist/esm/route-data-error.js +108 -0
  20. package/dist/esm/router-binding/Asset.js +202 -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 +124 -0
  27. package/dist/esm/router-binding/PROVENANCE.json +94 -0
  28. package/dist/esm/router-binding/RouterProvider.js +52 -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 +109 -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 +168 -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 +387 -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 +223 -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 +14 -0
  50. package/dist/esm/router-binding/routerContext.js +3 -0
  51. package/dist/esm/router-binding/routerOptions.js +0 -0
  52. package/dist/esm/router-binding/routerStores.js +50 -0
  53. package/dist/esm/router-binding/scroll-restoration.js +13 -0
  54. package/dist/esm/router-binding/typePrimitives.js +0 -0
  55. package/dist/esm/router-binding/useBlocker.js +152 -0
  56. package/dist/esm/router-binding/useCanGoBack.js +7 -0
  57. package/dist/esm/router-binding/useLoaderData.js +8 -0
  58. package/dist/esm/router-binding/useLoaderDeps.js +8 -0
  59. package/dist/esm/router-binding/useLocation.js +14 -0
  60. package/dist/esm/router-binding/useMatch.js +28 -0
  61. package/dist/esm/router-binding/useNavigate.js +25 -0
  62. package/dist/esm/router-binding/useParams.js +11 -0
  63. package/dist/esm/router-binding/useRouteContext.js +8 -0
  64. package/dist/esm/router-binding/useRouter.js +10 -0
  65. package/dist/esm/router-binding/useRouterState.js +19 -0
  66. package/dist/esm/router-binding/useSearch.js +11 -0
  67. package/dist/esm/router-binding/utils.js +23 -0
  68. package/dist/esm/router.js +187 -0
  69. package/dist/esm-node/actions.js +263 -0
  70. package/dist/esm-node/application-router.js +30 -0
  71. package/dist/esm-node/client.js +49 -0
  72. package/dist/esm-node/entry-application.js +110 -0
  73. package/dist/esm-node/entry-client.js +24 -0
  74. package/dist/esm-node/entry-server.js +47 -0
  75. package/dist/esm-node/federation-context.js +25 -0
  76. package/dist/esm-node/federation-ssr.js +92 -0
  77. package/dist/esm-node/federation.js +87 -0
  78. package/dist/esm-node/i18n/I18nProvider.js +42 -0
  79. package/dist/esm-node/i18n/LocalizedLink.js +88 -0
  80. package/dist/esm-node/i18n/context.js +3 -0
  81. package/dist/esm-node/i18n/index.js +8 -0
  82. package/dist/esm-node/i18n/languageSync.js +50 -0
  83. package/dist/esm-node/i18n/types.js +1 -0
  84. package/dist/esm-node/i18n/useI18n.js +74 -0
  85. package/dist/esm-node/index.js +58 -0
  86. package/dist/esm-node/manifest.js +150 -0
  87. package/dist/esm-node/native-promise-serialization.js +113 -0
  88. package/dist/esm-node/plugin/compiler.js +209 -0
  89. package/dist/esm-node/plugin/create.js +236 -0
  90. package/dist/esm-node/plugin/index.js +70 -0
  91. package/dist/esm-node/plugin/profile.js +51 -0
  92. package/dist/esm-node/route-completion.js +161 -0
  93. package/dist/esm-node/route-data-error.js +108 -0
  94. package/dist/esm-node/router-binding/Asset.js +172 -0
  95. package/dist/esm-node/router-binding/CatchBoundary.js +136 -0
  96. package/dist/esm-node/router-binding/ClientOnly.js +46 -0
  97. package/dist/esm-node/router-binding/HeadContent.js +8 -0
  98. package/dist/esm-node/router-binding/LICENSE +21 -0
  99. package/dist/esm-node/router-binding/Match.js +660 -0
  100. package/dist/esm-node/router-binding/Matches.js +161 -0
  101. package/dist/esm-node/router-binding/PROVENANCE.json +94 -0
  102. package/dist/esm-node/router-binding/RouterProvider.js +88 -0
  103. package/dist/esm-node/router-binding/SafeFragment.js +5 -0
  104. package/dist/esm-node/router-binding/ScriptOnce.js +16 -0
  105. package/dist/esm-node/router-binding/Scripts.js +49 -0
  106. package/dist/esm-node/router-binding/ScrollRestoration.js +16 -0
  107. package/dist/esm-node/router-binding/Transitioner.js +109 -0
  108. package/dist/esm-node/router-binding/awaited.js +75 -0
  109. package/dist/esm-node/router-binding/fileRoute.js +83 -0
  110. package/dist/esm-node/router-binding/flightData.js +23 -0
  111. package/dist/esm-node/router-binding/headContentUtils.js +168 -0
  112. package/dist/esm-node/router-binding/history.js +1 -0
  113. package/dist/esm-node/router-binding/index.js +35 -0
  114. package/dist/esm-node/router-binding/lazyRouteComponent.js +30 -0
  115. package/dist/esm-node/router-binding/link.js +399 -0
  116. package/dist/esm-node/router-binding/matchContext.js +7 -0
  117. package/dist/esm-node/router-binding/nonRouteComponentContext.js +22 -0
  118. package/dist/esm-node/router-binding/not-found.js +49 -0
  119. package/dist/esm-node/router-binding/publicMatchData.js +447 -0
  120. package/dist/esm-node/router-binding/registryTransfer.js +223 -0
  121. package/dist/esm-node/router-binding/renderRouteNotFound.js +22 -0
  122. package/dist/esm-node/router-binding/route.js +162 -0
  123. package/dist/esm-node/router-binding/router.js +14 -0
  124. package/dist/esm-node/router-binding/routerContext.js +3 -0
  125. package/dist/esm-node/router-binding/routerOptions.js +1 -0
  126. package/dist/esm-node/router-binding/routerStores.js +50 -0
  127. package/dist/esm-node/router-binding/scroll-restoration.js +12 -0
  128. package/dist/esm-node/router-binding/typePrimitives.js +1 -0
  129. package/dist/esm-node/router-binding/useBlocker.js +152 -0
  130. package/dist/esm-node/router-binding/useCanGoBack.js +7 -0
  131. package/dist/esm-node/router-binding/useLoaderData.js +8 -0
  132. package/dist/esm-node/router-binding/useLoaderDeps.js +8 -0
  133. package/dist/esm-node/router-binding/useLocation.js +14 -0
  134. package/dist/esm-node/router-binding/useMatch.js +28 -0
  135. package/dist/esm-node/router-binding/useNavigate.js +25 -0
  136. package/dist/esm-node/router-binding/useParams.js +11 -0
  137. package/dist/esm-node/router-binding/useRouteContext.js +8 -0
  138. package/dist/esm-node/router-binding/useRouter.js +10 -0
  139. package/dist/esm-node/router-binding/useRouterState.js +19 -0
  140. package/dist/esm-node/router-binding/useSearch.js +11 -0
  141. package/dist/esm-node/router-binding/utils.js +23 -0
  142. package/dist/esm-node/router.js +187 -0
  143. package/dist/esm-node/server.js +396 -0
  144. package/dist/types/actions.d.ts +45 -0
  145. package/dist/types/application-router.d.ts +5 -0
  146. package/dist/types/client.d.ts +23 -0
  147. package/dist/types/entry-application.d.ts +10 -0
  148. package/dist/types/entry-client.d.ts +5 -0
  149. package/dist/types/entry-server.d.ts +5 -0
  150. package/dist/types/federation-context.d.ts +16 -0
  151. package/dist/types/federation-ssr.d.ts +19 -0
  152. package/dist/types/federation.d.ts +30 -0
  153. package/dist/types/i18n/I18nProvider.d.ts +21 -0
  154. package/dist/types/i18n/LocalizedLink.d.ts +15 -0
  155. package/dist/types/i18n/context.d.ts +11 -0
  156. package/dist/types/i18n/index.d.ts +9 -0
  157. package/dist/types/i18n/languageSync.d.ts +31 -0
  158. package/dist/types/i18n/types.d.ts +33 -0
  159. package/dist/types/i18n/useI18n.d.ts +24 -0
  160. package/dist/types/index.d.ts +41 -0
  161. package/dist/types/manifest.d.ts +55 -0
  162. package/dist/types/native-promise-serialization.d.ts +9 -0
  163. package/dist/types/plugin/compiler.d.ts +6 -0
  164. package/dist/types/plugin/create.d.ts +21 -0
  165. package/dist/types/plugin/index.d.ts +3 -0
  166. package/dist/types/plugin/lazy-modules.d.cts +15 -0
  167. package/dist/types/plugin/preserve-import-loader.d.cts +3 -0
  168. package/dist/types/plugin/profile.d.ts +2 -0
  169. package/dist/types/plugin/solid-loader.d.cts +2 -0
  170. package/dist/types/plugin/svg-component-template.d.cts +6 -0
  171. package/dist/types/route-completion.d.ts +21 -0
  172. package/dist/types/route-data-error.d.ts +17 -0
  173. package/dist/types/router-binding/Asset.d.ts +3 -0
  174. package/dist/types/router-binding/CatchBoundary.d.ts +13 -0
  175. package/dist/types/router-binding/ClientOnly.d.ts +31 -0
  176. package/dist/types/router-binding/HeadContent.d.ts +13 -0
  177. package/dist/types/router-binding/Match.d.ts +6 -0
  178. package/dist/types/router-binding/Matches.d.ts +26 -0
  179. package/dist/types/router-binding/RouterProvider.d.ts +11 -0
  180. package/dist/types/router-binding/SafeFragment.d.ts +2 -0
  181. package/dist/types/router-binding/ScriptOnce.d.ts +6 -0
  182. package/dist/types/router-binding/Scripts.d.ts +2 -0
  183. package/dist/types/router-binding/ScrollRestoration.d.ts +14 -0
  184. package/dist/types/router-binding/Transitioner.d.ts +2 -0
  185. package/dist/types/router-binding/awaited.d.ts +11 -0
  186. package/dist/types/router-binding/fileRoute.d.ts +54 -0
  187. package/dist/types/router-binding/flightData.d.ts +38 -0
  188. package/dist/types/router-binding/headContentUtils.d.ts +15 -0
  189. package/dist/types/router-binding/history.d.ts +8 -0
  190. package/dist/types/router-binding/index.d.ts +46 -0
  191. package/dist/types/router-binding/lazyRouteComponent.d.ts +2 -0
  192. package/dist/types/router-binding/link.d.ts +43 -0
  193. package/dist/types/router-binding/matchContext.d.ts +7 -0
  194. package/dist/types/router-binding/nonRouteComponentContext.d.ts +5 -0
  195. package/dist/types/router-binding/not-found.d.ts +11 -0
  196. package/dist/types/router-binding/publicMatchData.d.ts +19 -0
  197. package/dist/types/router-binding/registryTransfer.d.ts +49 -0
  198. package/dist/types/router-binding/renderRouteNotFound.d.ts +11 -0
  199. package/dist/types/router-binding/route.d.ts +105 -0
  200. package/dist/types/router-binding/router.d.ts +70 -0
  201. package/dist/types/router-binding/routerContext.d.ts +3 -0
  202. package/dist/types/router-binding/routerOptions.d.ts +6 -0
  203. package/dist/types/router-binding/routerStores.d.ts +2 -0
  204. package/dist/types/router-binding/scroll-restoration.d.ts +2 -0
  205. package/dist/types/router-binding/typePrimitives.d.ts +10 -0
  206. package/dist/types/router-binding/useBlocker.d.ts +70 -0
  207. package/dist/types/router-binding/useCanGoBack.d.ts +2 -0
  208. package/dist/types/router-binding/useLoaderData.d.ts +8 -0
  209. package/dist/types/router-binding/useLoaderDeps.d.ts +8 -0
  210. package/dist/types/router-binding/useLocation.d.ts +7 -0
  211. package/dist/types/router-binding/useMatch.d.ts +10 -0
  212. package/dist/types/router-binding/useNavigate.d.ts +5 -0
  213. package/dist/types/router-binding/useParams.d.ts +9 -0
  214. package/dist/types/router-binding/useRouteContext.d.ts +4 -0
  215. package/dist/types/router-binding/useRouter.d.ts +4 -0
  216. package/dist/types/router-binding/useRouterState.d.ts +8 -0
  217. package/dist/types/router-binding/useSearch.d.ts +9 -0
  218. package/dist/types/router-binding/utils.d.ts +25 -0
  219. package/dist/types/router.d.ts +31 -0
  220. package/dist/types/server.d.ts +47 -0
  221. package/package.json +130 -4
  222. package/src/actions.tsx +441 -0
  223. package/src/application-router.tsx +47 -0
  224. package/src/client.ts +106 -0
  225. package/src/entry-application.tsx +73 -0
  226. package/src/entry-client.tsx +49 -0
  227. package/src/entry-server.tsx +85 -0
  228. package/src/federation-context.ts +47 -0
  229. package/src/federation-ssr.ts +136 -0
  230. package/src/federation.tsx +197 -0
  231. package/src/i18n/I18nProvider.tsx +54 -0
  232. package/src/i18n/LocalizedLink.tsx +83 -0
  233. package/src/i18n/context.ts +13 -0
  234. package/src/i18n/index.ts +31 -0
  235. package/src/i18n/languageSync.ts +113 -0
  236. package/src/i18n/types.ts +35 -0
  237. package/src/i18n/useI18n.ts +121 -0
  238. package/src/index.ts +41 -0
  239. package/src/manifest.ts +337 -0
  240. package/src/native-promise-serialization.ts +167 -0
  241. package/src/plugin/compiler.ts +320 -0
  242. package/src/plugin/create.ts +271 -0
  243. package/src/plugin/index.ts +69 -0
  244. package/src/plugin/lazy-modules.cjs +146 -0
  245. package/src/plugin/preserve-import-loader.cjs +46 -0
  246. package/src/plugin/profile.ts +42 -0
  247. package/src/plugin/solid-loader.cjs +83 -0
  248. package/src/plugin/svg-component-template.cjs +19 -0
  249. package/src/route-completion.tsx +226 -0
  250. package/src/route-data-error.ts +175 -0
  251. package/src/router-binding/Asset.tsx +284 -0
  252. package/src/router-binding/CatchBoundary.tsx +130 -0
  253. package/src/router-binding/ClientOnly.tsx +76 -0
  254. package/src/router-binding/HeadContent.tsx +23 -0
  255. package/src/router-binding/LICENSE +21 -0
  256. package/src/router-binding/Match.tsx +397 -0
  257. package/src/router-binding/Matches.tsx +242 -0
  258. package/src/router-binding/PROVENANCE.json +94 -0
  259. package/src/router-binding/RouterProvider.tsx +128 -0
  260. package/src/router-binding/SafeFragment.tsx +5 -0
  261. package/src/router-binding/ScriptOnce.tsx +23 -0
  262. package/src/router-binding/Scripts.tsx +44 -0
  263. package/src/router-binding/ScrollRestoration.tsx +49 -0
  264. package/src/router-binding/Transitioner.tsx +177 -0
  265. package/src/router-binding/awaited.tsx +71 -0
  266. package/src/router-binding/fileRoute.ts +268 -0
  267. package/src/router-binding/flightData.ts +90 -0
  268. package/src/router-binding/headContentUtils.tsx +292 -0
  269. package/src/router-binding/history.ts +9 -0
  270. package/src/router-binding/index.tsx +315 -0
  271. package/src/router-binding/lazyRouteComponent.tsx +70 -0
  272. package/src/router-binding/link.tsx +865 -0
  273. package/src/router-binding/matchContext.tsx +15 -0
  274. package/src/router-binding/nonRouteComponentContext.tsx +23 -0
  275. package/src/router-binding/not-found.tsx +65 -0
  276. package/src/router-binding/publicMatchData.ts +674 -0
  277. package/src/router-binding/registryTransfer.ts +400 -0
  278. package/src/router-binding/renderRouteNotFound.tsx +53 -0
  279. package/src/router-binding/route.tsx +665 -0
  280. package/src/router-binding/router.ts +123 -0
  281. package/src/router-binding/routerContext.tsx +6 -0
  282. package/src/router-binding/routerOptions.ts +26 -0
  283. package/src/router-binding/routerStores.ts +85 -0
  284. package/src/router-binding/scroll-restoration.tsx +15 -0
  285. package/src/router-binding/typePrimitives.ts +74 -0
  286. package/src/router-binding/useBlocker.tsx +359 -0
  287. package/src/router-binding/useCanGoBack.ts +9 -0
  288. package/src/router-binding/useLoaderData.tsx +51 -0
  289. package/src/router-binding/useLoaderDeps.tsx +46 -0
  290. package/src/router-binding/useLocation.tsx +43 -0
  291. package/src/router-binding/useMatch.tsx +111 -0
  292. package/src/router-binding/useNavigate.tsx +45 -0
  293. package/src/router-binding/useParams.tsx +70 -0
  294. package/src/router-binding/useRouteContext.ts +30 -0
  295. package/src/router-binding/useRouter.tsx +17 -0
  296. package/src/router-binding/useRouterState.tsx +50 -0
  297. package/src/router-binding/useSearch.tsx +70 -0
  298. package/src/router-binding/utils.ts +59 -0
  299. package/src/router.ts +376 -0
  300. package/src/server.ts +645 -0
  301. package/README.md +0 -3
@@ -0,0 +1,47 @@
1
+ import { dataMetadataToDocumentPolicy, mergeDataResponseIntoResponse, mergeDataResponseMetadata } from "@modern-js/renderer-core/data";
2
+ import { createNativeServerEntry } from "@modern-js/renderer-core/entry-server";
3
+ import { createNativeRouter } from "@modern-js/renderer-core/router";
4
+ import { componentView, routerView, solidRouterFactory } from "./entry-application.js";
5
+ import { validateSolidModuleManifest } from "./manifest.js";
6
+ import { getApplicationStatus, resolveApplicationRedirect } from "./router.js";
7
+ import { prepareRouterMatchTransfer } from "./router-binding/index.js";
8
+ import { renderCSRDocument, renderDocumentApplication, respondApplicationResponse, runApplicationRequest } from "./server.js";
9
+ function entry_server_createNativeServerEntry(options) {
10
+ return createNativeServerEntry(options, {
11
+ document: (document, nativeManifest, identity)=>({
12
+ ...document,
13
+ renderId: document.documentId,
14
+ manifest: validateSolidModuleManifest(nativeManifest, identity).modules
15
+ }),
16
+ run: (session, callback)=>runApplicationRequest(session, callback),
17
+ respond: respondApplicationResponse,
18
+ createRouter: (application, routerOptions)=>createNativeRouter(application, routerOptions, solidRouterFactory),
19
+ renderCSR: ({ session }, document)=>renderCSRDocument({
20
+ session,
21
+ document
22
+ }),
23
+ renderComponent: ({ session }, component, document, i18n)=>renderDocumentApplication({
24
+ session,
25
+ view: componentView(component, i18n),
26
+ document,
27
+ federation: options.federation
28
+ }),
29
+ async renderRoutes ({ context: { session }, router, outcomes, document, forbiddenValues, i18n }) {
30
+ await router.load();
31
+ prepareRouterMatchTransfer(router, session, forbiddenValues);
32
+ const metadata = mergeDataResponseMetadata(outcomes, {
33
+ status: getApplicationStatus(router)
34
+ });
35
+ const redirect = resolveApplicationRedirect(router);
36
+ if (redirect) return respondApplicationResponse(session, mergeDataResponseIntoResponse(redirect, metadata));
37
+ session.resolveResponse(dataMetadataToDocumentPolicy(metadata));
38
+ return renderDocumentApplication({
39
+ session,
40
+ view: routerView(router, i18n),
41
+ document,
42
+ federation: options.federation
43
+ });
44
+ }
45
+ });
46
+ }
47
+ export { entry_server_createNativeServerEntry as createNativeServerEntry };
@@ -0,0 +1,25 @@
1
+ import { getFederationHost } from "@modern-js/renderer-core/federation";
2
+ import { createComponent, createContext } from "solid-js";
3
+ const FederationContext = createContext(Object.freeze({
4
+ instance: void 0
5
+ }));
6
+ function createFederationScope(binding) {
7
+ if (void 0 === binding) return;
8
+ const instance = getFederationHost(binding);
9
+ return void 0 === binding.hydrationModule ? {
10
+ instance
11
+ } : {
12
+ instance,
13
+ hydrationModule: binding.hydrationModule
14
+ };
15
+ }
16
+ function provideFederation(scope, view) {
17
+ if (!scope) return view;
18
+ return ()=>createComponent(FederationContext, {
19
+ value: scope,
20
+ get children () {
21
+ return view();
22
+ }
23
+ });
24
+ }
25
+ export { FederationContext, createFederationScope, provideFederation };
@@ -0,0 +1,92 @@
1
+ const FEDERATED_ASSET_PREFIX = "ultramodern-federation:";
2
+ const capturedAssets = new WeakMap();
3
+ function captureFederatedServerAssets(scope, id, assets) {
4
+ const instance = scope.instance;
5
+ if (!assets || !scope.hydrationModule || !instance?.name) return;
6
+ const hydration = `${scope.hydrationModule}?id=${encodeURIComponent(id)}&host=${encodeURIComponent(instance.name)}`;
7
+ let records = capturedAssets.get(scope);
8
+ if (!records) {
9
+ records = new Map();
10
+ capturedAssets.set(scope, records);
11
+ }
12
+ const baseKey = federatedAssetKey(id);
13
+ let key = baseKey;
14
+ for(let revision = 1; records.has(key); revision += 1)key = `${baseKey}:${revision}`;
15
+ records.set(key, {
16
+ hydration,
17
+ assets
18
+ });
19
+ return key;
20
+ }
21
+ function federatedAssetKey(id) {
22
+ return `${FEDERATED_ASSET_PREFIX}${id}`;
23
+ }
24
+ function joinAssetPath(base, file) {
25
+ if (/^(?:[a-z][a-z0-9+.-]*:)?\/\//iu.test(file)) return file;
26
+ let prefix = "string" == typeof base && base ? base : "/";
27
+ if (!prefix.endsWith("/")) prefix += "/";
28
+ return prefix + (file.startsWith("/") ? file.slice(1) : file);
29
+ }
30
+ function resolveStaticAssets(manifest, key) {
31
+ if ("_base" === key || !Object.hasOwn(manifest, key)) return null;
32
+ const base = manifest._base;
33
+ const js = [];
34
+ const css = [];
35
+ let preloads;
36
+ const visited = new Set();
37
+ const walk = (name)=>{
38
+ if (visited.has(name) || "_base" === name) return;
39
+ visited.add(name);
40
+ const chunk = manifest[name];
41
+ if (!chunk) return;
42
+ js.push(joinAssetPath(base, chunk.file));
43
+ for (const file of chunk.css ?? [])css.push(joinAssetPath(base, file));
44
+ for (const link of chunk.preloads ?? []){
45
+ const href = "string" == typeof link.href && link.href;
46
+ if (href || "string" == typeof link.imagesrcset) {
47
+ preloads ??= [];
48
+ if (href) preloads.push({
49
+ ...link,
50
+ href: joinAssetPath(base, href)
51
+ });
52
+ else {
53
+ const { href: _ignored, ...rest } = link;
54
+ preloads.push(rest);
55
+ }
56
+ }
57
+ }
58
+ for (const dependency of chunk.imports ?? [])walk(dependency);
59
+ };
60
+ walk(key);
61
+ return preloads ? {
62
+ js,
63
+ css,
64
+ preloads
65
+ } : {
66
+ js,
67
+ css
68
+ };
69
+ }
70
+ function withFederatedAssets(manifest, scope) {
71
+ if (!scope?.hydrationModule || null === manifest || "object" != typeof manifest || "function" == typeof manifest.resolve) return manifest;
72
+ const modules = manifest;
73
+ const resolve = (key)=>{
74
+ if (!key.startsWith(FEDERATED_ASSET_PREFIX)) return resolveStaticAssets(modules, key);
75
+ const remote = capturedAssets.get(scope)?.get(key);
76
+ if (!remote) return null;
77
+ return {
78
+ js: [
79
+ joinAssetPath(modules._base, remote.hydration),
80
+ ...remote.assets.js
81
+ ],
82
+ css: [
83
+ ...remote.assets.css
84
+ ]
85
+ };
86
+ };
87
+ return {
88
+ resolve,
89
+ resolveSync: resolve
90
+ };
91
+ }
92
+ export { FEDERATED_ASSET_PREFIX, captureFederatedServerAssets, federatedAssetKey, withFederatedAssets };
@@ -0,0 +1,87 @@
1
+ import { loadFederatedModule } from "@modern-js/renderer-core/federation";
2
+ import { isServer } from "@solidjs/web";
3
+ import { FederationContext } from "./federation-context.js";
4
+ import { captureFederatedServerAssets } from "./federation-ssr.js";
5
+ import * as __rspack_external_solid_js_0ac0db99 from "solid-js";
6
+ const DEFAULT_SERVER_TIMEOUT = 3e3;
7
+ function withTimeout(promise, timeout, label) {
8
+ if (void 0 === timeout) return promise;
9
+ return new Promise((resolve, reject)=>{
10
+ const timer = setTimeout(()=>reject(new Error(`Remote module ${label} did not load within ${timeout}ms`)), timeout);
11
+ timer.unref?.();
12
+ promise.then((value)=>{
13
+ clearTimeout(timer);
14
+ resolve(value);
15
+ }, (error)=>{
16
+ clearTimeout(timer);
17
+ reject(error);
18
+ });
19
+ });
20
+ }
21
+ function afterHydration(callback) {
22
+ const { sharedConfig } = __rspack_external_solid_js_0ac0db99;
23
+ const onHydrationEnd = sharedConfig?.onHydrationEnd;
24
+ if (onHydrationEnd) onHydrationEnd(callback);
25
+ else queueMicrotask(callback);
26
+ }
27
+ function federatedComponent(remote, options = {}) {
28
+ if ("string" == typeof remote ? !/^[^/]+\/.+/u.test(remote) : "function" != typeof remote) throw new TypeError("federatedComponent requires a remote id such as 'remote/Widget' or a loader");
29
+ if (void 0 !== options.timeout && (!Number.isFinite(options.timeout) || options.timeout <= 0)) throw new TypeError("federatedComponent timeout must be a positive number of milliseconds");
30
+ const id = "string" == typeof remote ? remote : void 0;
31
+ const timeout = options.timeout ?? (isServer ? DEFAULT_SERVER_TIMEOUT : void 0);
32
+ const load = (scope)=>(0, __rspack_external_solid_js_0ac0db99.lazy)(async ()=>{
33
+ if (isServer && !id) throw new Error("A federatedComponent loader renders in the browser only; use a remote id to server-render it");
34
+ const { module, assets } = await withTimeout(Promise.resolve().then(()=>id ? loadFederatedModule(scope.instance, id) : remote().then((module)=>({
35
+ module,
36
+ assets: void 0
37
+ }))), timeout, id ?? "loader");
38
+ const component = module?.default;
39
+ if ("function" != typeof component) throw new TypeError("A federated Solid module must default-export a component");
40
+ if (!isServer || !id) return {
41
+ default: component
42
+ };
43
+ const assetKey = captureFederatedServerAssets(scope, id, assets);
44
+ if (!assetKey) throw new Error(`Cannot server-render ${id}: the host has no server federation state for its browser assets`);
45
+ return {
46
+ default: component,
47
+ $$moduleUrl: assetKey
48
+ };
49
+ });
50
+ const remotes = new WeakMap();
51
+ const fallback = ()=>options.fallback?.();
52
+ return (props)=>{
53
+ const scope = (0, __rspack_external_solid_js_0ac0db99.useContext)(FederationContext);
54
+ const Remote = remotes.get(scope) ?? load(scope);
55
+ remotes.set(scope, Remote);
56
+ const remoteView = ()=>(0, __rspack_external_solid_js_0ac0db99.createComponent)(Remote, props);
57
+ const [retried, retry] = (0, __rspack_external_solid_js_0ac0db99.createSignal)(false);
58
+ const recover = (error)=>{
59
+ if (isServer) return fallback();
60
+ if ((0, __rspack_external_solid_js_0ac0db99.isHydrating)()) {
61
+ let active = true;
62
+ (0, __rspack_external_solid_js_0ac0db99.onCleanup)(()=>{
63
+ active = false;
64
+ });
65
+ afterHydration(()=>{
66
+ if (active) retry(true);
67
+ });
68
+ return fallback();
69
+ }
70
+ throw error();
71
+ };
72
+ return (0, __rspack_external_solid_js_0ac0db99.createComponent)(__rspack_external_solid_js_0ac0db99.Loading, {
73
+ get fallback () {
74
+ return fallback();
75
+ },
76
+ get children () {
77
+ return retried() ? remoteView() : (0, __rspack_external_solid_js_0ac0db99.createComponent)(__rspack_external_solid_js_0ac0db99.Errored, {
78
+ fallback: recover,
79
+ get children () {
80
+ return remoteView();
81
+ }
82
+ });
83
+ }
84
+ });
85
+ };
86
+ }
87
+ export { federatedComponent };
@@ -0,0 +1,42 @@
1
+ import { I18nContext } from "./context.js";
2
+ import * as __rspack_external_solid_js_0ac0db99 from "solid-js";
3
+ var _m$ = Symbol();
4
+ var _d$ = {
5
+ get () {
6
+ const props = this[_m$];
7
+ return props.children;
8
+ },
9
+ enumerable: true,
10
+ configurable: true
11
+ };
12
+ function _P$(_p, _p2) {
13
+ this[_m$] = _p;
14
+ this.value = _p2;
15
+ Object.defineProperty(this, "children", _d$);
16
+ }
17
+ _P$.prototype = Object.prototype;
18
+ function I18nProvider(props) {
19
+ const [language, setLanguage] = __rspack_external_solid_js_0ac0db99.createSignal(props.instance.language);
20
+ __rspack_external_solid_js_0ac0db99.createEffect(()=>props.instance, (instance)=>{
21
+ setLanguage(instance.language);
22
+ const handleLanguageChanged = (lng)=>setLanguage(lng);
23
+ instance.on?.("languageChanged", handleLanguageChanged);
24
+ return ()=>{
25
+ instance.off?.("languageChanged", handleLanguageChanged);
26
+ };
27
+ });
28
+ const value = {
29
+ get instance () {
30
+ return props.instance;
31
+ },
32
+ get languages () {
33
+ return props.languages;
34
+ },
35
+ get localisedUrls () {
36
+ return props.localisedUrls;
37
+ },
38
+ language
39
+ };
40
+ return I18nContext(new _P$(props, value));
41
+ }
42
+ export { I18nProvider };
@@ -0,0 +1,88 @@
1
+ import { memo, mergeProps } from "@solidjs/web";
2
+ import { configuredLanguage, localizePath } from "@modern-js/i18n-runtime-extensions/paths";
3
+ import { Link, useLocation, useRouter } from "../router.js";
4
+ import { I18nContext } from "./context.js";
5
+ import * as __rspack_external_solid_js_0ac0db99 from "solid-js";
6
+ var _m$ = Symbol(), _m$2 = Symbol(), _m$3 = Symbol(), _m$4 = Symbol(), _m$5 = Symbol(), _m$6 = Symbol();
7
+ var _d$ = {
8
+ get () {
9
+ const router = this[_m$];
10
+ const props = this[_m$2];
11
+ const pathname = this[_m$3];
12
+ return memo(()=>!!router.options.rewrite)() ? props.to : pathname();
13
+ },
14
+ enumerable: true,
15
+ configurable: true
16
+ }, _d$2 = {
17
+ get () {
18
+ const router = this[_m$];
19
+ const externalTarget = this[_m$4];
20
+ const pathname = this[_m$3];
21
+ const props = this[_m$2];
22
+ return memo(()=>!!(router.options.rewrite && !externalTarget()))() ? {
23
+ to: pathname(),
24
+ inheritSearch: true,
25
+ hash: props.hash,
26
+ state: props.state
27
+ } : void 0;
28
+ },
29
+ enumerable: true,
30
+ configurable: true
31
+ }, _d$3 = {
32
+ get () {
33
+ const targetLanguage = this[_m$5];
34
+ const context = this[_m$6];
35
+ return memo(()=>targetLanguage() === context.language())() ? void 0 : targetLanguage();
36
+ },
37
+ enumerable: true,
38
+ configurable: true
39
+ }, _d$4 = {
40
+ get () {
41
+ const props = this[_m$2];
42
+ return props.children;
43
+ },
44
+ enumerable: true,
45
+ configurable: true
46
+ };
47
+ function _P$(_p, _p2, _p3, _p4, _p5, _p6) {
48
+ this[_m$] = _p;
49
+ this[_m$2] = _p2;
50
+ this[_m$3] = _p3;
51
+ this[_m$4] = _p4;
52
+ this[_m$5] = _p5;
53
+ this[_m$6] = _p6;
54
+ Object.defineProperty(this, "to", _d$);
55
+ Object.defineProperty(this, "mask", _d$2);
56
+ Object.defineProperty(this, "hreflang", _d$3);
57
+ Object.defineProperty(this, "children", _d$4);
58
+ }
59
+ _P$.prototype = Object.prototype;
60
+ function LocalizedLink(props) {
61
+ const context = __rspack_external_solid_js_0ac0db99.useContext(I18nContext);
62
+ const router = useRouter();
63
+ const location = useLocation();
64
+ const options = __rspack_external_solid_js_0ac0db99.omit(props, "to", "language", "children");
65
+ const targetLanguage = ()=>void 0 === props.language ? context.language() : configuredLanguage(props.language, context.languages);
66
+ const externalTarget = ()=>props.to.startsWith("//") || URL.canParse(props.to);
67
+ const canonicalTarget = ()=>({
68
+ to: props.to,
69
+ from: props.from,
70
+ params: props.params,
71
+ unsafeRelative: props.unsafeRelative
72
+ });
73
+ const pathname = __rspack_external_solid_js_0ac0db99.createMemo(()=>{
74
+ if (externalTarget()) return props.to;
75
+ const target = router.buildLocation({
76
+ ...canonicalTarget(),
77
+ _fromLocation: location()
78
+ });
79
+ return localizePath(target.pathname, targetLanguage(), {
80
+ languages: [
81
+ ...context.languages
82
+ ],
83
+ localisedUrls: context.localisedUrls
84
+ });
85
+ });
86
+ return Link(mergeProps(options, new _P$(router, props, pathname, externalTarget, targetLanguage, context)));
87
+ }
88
+ export { LocalizedLink };
@@ -0,0 +1,3 @@
1
+ import * as __rspack_external_solid_js_0ac0db99 from "solid-js";
2
+ const I18nContext = __rspack_external_solid_js_0ac0db99.createContext();
3
+ export { I18nContext };
@@ -0,0 +1,8 @@
1
+ export { createRequestLanguageRedirect, detectRequestLanguage, languageFromPathname, resolveRequestLanguage } from "@modern-js/i18n-runtime-extensions/request-language";
2
+ export { I18N_SSR_HANDOFF_ELEMENT_ID, createI18nSsrHandoffInlineData, readI18nSsrHandoff } from "@modern-js/i18n-runtime-extensions/ssrLanguageHandoff";
3
+ export { createI18nUrlRewrite } from "@modern-js/i18n-runtime-extensions/urlRewrite";
4
+ export { I18nContext } from "./context.js";
5
+ export { I18nProvider } from "./I18nProvider.js";
6
+ export { LocalizedLink } from "./LocalizedLink.js";
7
+ export { createLatestLanguageSync } from "./languageSync.js";
8
+ export { useI18n } from "./useI18n.js";
@@ -0,0 +1,50 @@
1
+ import { createLatestLanguageSyncBinding } from "@modern-js/i18n-runtime-extensions/language-sync/controller";
2
+ import * as __rspack_external_solid_js_0ac0db99 from "solid-js";
3
+ function createLatestLanguageSync(options) {
4
+ const binding = createLatestLanguageSyncBinding(options.policy);
5
+ const enabled = ()=>options.enabled?.() ?? true;
6
+ __rspack_external_solid_js_0ac0db99.createEffect(()=>void 0, ()=>{
7
+ binding.updateCallbacks({
8
+ changeLanguage: options.changeLanguage,
9
+ commitLanguage: options.commitLanguage,
10
+ readLanguage: options.readLanguage,
11
+ reportFailure: options.reportFailure
12
+ });
13
+ });
14
+ __rspack_external_solid_js_0ac0db99.createEffect(()=>enabled() ? options.target() : void 0, (target)=>{
15
+ if (!target) return;
16
+ binding.activate(target);
17
+ return ()=>binding.deactivate();
18
+ });
19
+ __rspack_external_solid_js_0ac0db99.createEffect(()=>enabled() ? [
20
+ options.target(),
21
+ options.desiredLanguage()
22
+ ] : [
23
+ void 0,
24
+ void 0
25
+ ], ([target, desiredLanguage])=>{
26
+ if (!target || !desiredLanguage) return void binding.clearRequest();
27
+ binding.request(desiredLanguage);
28
+ });
29
+ __rspack_external_solid_js_0ac0db99.createEffect(()=>enabled() && "u" > typeof window ? [
30
+ options.target(),
31
+ options.desiredLanguage()
32
+ ] : [
33
+ void 0,
34
+ void 0
35
+ ], ([target, desiredLanguage])=>{
36
+ if (!target || !desiredLanguage) return;
37
+ const retryCurrentIntent = ()=>binding.request(desiredLanguage);
38
+ const retryVisibleIntent = ()=>{
39
+ if ("visible" === document.visibilityState) retryCurrentIntent();
40
+ };
41
+ window.addEventListener("online", retryCurrentIntent);
42
+ document.addEventListener("visibilitychange", retryVisibleIntent);
43
+ return ()=>{
44
+ window.removeEventListener("online", retryCurrentIntent);
45
+ document.removeEventListener("visibilitychange", retryVisibleIntent);
46
+ };
47
+ });
48
+ return (language)=>binding.request(language);
49
+ }
50
+ export { createLatestLanguageSync };
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1,74 @@
1
+ import { configuredLanguage, localizePath } from "@modern-js/i18n-runtime-extensions/paths";
2
+ import { languageFromPathname } from "@modern-js/i18n-runtime-extensions/request-language";
3
+ import { useRouter } from "../router.js";
4
+ import { I18nContext } from "./context.js";
5
+ import * as __rspack_external_solid_js_0ac0db99 from "solid-js";
6
+ const languageSwitches = new WeakMap();
7
+ function useI18n() {
8
+ const context = __rspack_external_solid_js_0ac0db99.useContext(I18nContext);
9
+ const { instance, languages, localisedUrls, language } = context;
10
+ const t = (key, options)=>{
11
+ language();
12
+ return instance.t(key, options);
13
+ };
14
+ const router = useRouter({
15
+ warn: false
16
+ });
17
+ const changeLanguage = (requested)=>{
18
+ let nextLanguage;
19
+ try {
20
+ nextLanguage = configuredLanguage(requested, languages);
21
+ } catch (error) {
22
+ return Promise.reject(error);
23
+ }
24
+ const state = languageSwitches.get(instance) ?? {
25
+ latest: 0,
26
+ queue: Promise.resolve()
27
+ };
28
+ languageSwitches.set(instance, state);
29
+ const generation = ++state.latest;
30
+ const run = state.queue.then(async ()=>{
31
+ if (state.latest !== generation) return;
32
+ const committed = instance.language;
33
+ const publicLanguage = ()=>router ? languageFromPathname(new URL(router.state.location.publicHref, "http://localhost").pathname, languages, router.options.basepath) : void 0;
34
+ const reconcile = async ()=>{
35
+ const language = publicLanguage() ?? committed;
36
+ if (instance.language !== language) await instance.changeLanguage?.(language);
37
+ };
38
+ try {
39
+ await instance.changeLanguage?.(nextLanguage);
40
+ } catch (error) {
41
+ await reconcile();
42
+ throw error;
43
+ }
44
+ if (!router) return;
45
+ const href = localizePath(router.state.location.href, nextLanguage, {
46
+ languages: [
47
+ ...languages
48
+ ],
49
+ localisedUrls
50
+ });
51
+ try {
52
+ await router.navigate({
53
+ to: ".",
54
+ href,
55
+ replace: true
56
+ });
57
+ } catch (error) {
58
+ await reconcile();
59
+ throw error;
60
+ }
61
+ if (publicLanguage() !== nextLanguage) await reconcile();
62
+ });
63
+ state.queue = run.catch(()=>{});
64
+ return run;
65
+ };
66
+ return {
67
+ t,
68
+ language,
69
+ languages,
70
+ instance,
71
+ changeLanguage
72
+ };
73
+ }
74
+ export { useI18n };
@@ -0,0 +1,58 @@
1
+ const SOLID_RENDERER_PROFILE = {
2
+ renderer: "solid",
3
+ solid: "2.0.0-rc.15",
4
+ web: "2.0.0-rc.15",
5
+ router: "@modern-js/renderer-solid/router@3.8.3",
6
+ routerSource: "4fbd65c5c3b40be87a6248867c22021c1c19bba8",
7
+ routerCore: "1.171.38",
8
+ history: "1.162.5",
9
+ publicRouteData: {
10
+ containers: [
11
+ "plain-record",
12
+ "null-record",
13
+ "array"
14
+ ],
15
+ values: "canonical-scalars",
16
+ deferred: "checked-top-level-native-promises",
17
+ mutation: "immutable-public-snapshot",
18
+ unsupported: [
19
+ "Date",
20
+ "RegExp",
21
+ "Map",
22
+ "Set",
23
+ "AsyncIterable"
24
+ ]
25
+ },
26
+ publicContext: {
27
+ source: "managed-constructor-route-context-and-before-load",
28
+ providerOverrides: "unsupported"
29
+ },
30
+ nativePromiseMetadata: {
31
+ runtime: "2.0.0-rc.15",
32
+ fields: [
33
+ "s",
34
+ "v"
35
+ ],
36
+ status: [
37
+ 0,
38
+ 1,
39
+ 2
40
+ ],
41
+ handle: "sealed-with-checked-metadata"
42
+ },
43
+ nativeRegistry: {
44
+ source: "managed-router-match-transfer",
45
+ rawRejectedMatchInjection: "unsupported"
46
+ },
47
+ nativeRequestContext: {
48
+ scope: "complete-native-request-handler",
49
+ event: "one-per-request-session"
50
+ },
51
+ nativeResponseHead: {
52
+ statusText: "fetch-response-status-text",
53
+ terminalOutcome: "authoritative",
54
+ cache: "intersect-with-session-policy"
55
+ },
56
+ dataHttpTransport: "renderer-core-rich-public-data"
57
+ };
58
+ export { SOLID_RENDERER_PROFILE };