@bleedingdev/modern-js-renderer-solid 0.0.0-stage → 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 (297) 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 +123 -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
  297. 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,84 @@
1
+ import { remoteBrowserAssets } from "@modern-js/renderer-core/federation";
2
+ const FEDERATED_ASSET_PREFIX = "ultramodern-federation:";
3
+ function federatedServerAssets(scope, id) {
4
+ const instance = scope?.instance;
5
+ const assets = instance && remoteBrowserAssets(instance, id);
6
+ if (!assets || !scope?.hydrationModule || !instance.name) return;
7
+ const hydration = `${scope.hydrationModule}?id=${encodeURIComponent(id)}&host=${encodeURIComponent(instance.name)}`;
8
+ return {
9
+ hydration,
10
+ assets
11
+ };
12
+ }
13
+ function federatedAssetKey(id) {
14
+ return `${FEDERATED_ASSET_PREFIX}${id}`;
15
+ }
16
+ function joinAssetPath(base, file) {
17
+ if (/^(?:[a-z][a-z0-9+.-]*:)?\/\//iu.test(file)) return file;
18
+ let prefix = "string" == typeof base && base ? base : "/";
19
+ if (!prefix.endsWith("/")) prefix += "/";
20
+ return prefix + (file.startsWith("/") ? file.slice(1) : file);
21
+ }
22
+ function resolveStaticAssets(manifest, key) {
23
+ if ("_base" === key || !Object.hasOwn(manifest, key)) return null;
24
+ const base = manifest._base;
25
+ const js = [];
26
+ const css = [];
27
+ let preloads;
28
+ const visited = new Set();
29
+ const walk = (name)=>{
30
+ if (visited.has(name) || "_base" === name) return;
31
+ visited.add(name);
32
+ const chunk = manifest[name];
33
+ if (!chunk) return;
34
+ js.push(joinAssetPath(base, chunk.file));
35
+ for (const file of chunk.css ?? [])css.push(joinAssetPath(base, file));
36
+ for (const link of chunk.preloads ?? []){
37
+ const href = "string" == typeof link.href && link.href;
38
+ if (href || "string" == typeof link.imagesrcset) {
39
+ preloads ??= [];
40
+ if (href) preloads.push({
41
+ ...link,
42
+ href: joinAssetPath(base, href)
43
+ });
44
+ else {
45
+ const { href: _ignored, ...rest } = link;
46
+ preloads.push(rest);
47
+ }
48
+ }
49
+ }
50
+ for (const dependency of chunk.imports ?? [])walk(dependency);
51
+ };
52
+ walk(key);
53
+ return preloads ? {
54
+ js,
55
+ css,
56
+ preloads
57
+ } : {
58
+ js,
59
+ css
60
+ };
61
+ }
62
+ function withFederatedAssets(manifest, scope) {
63
+ if (!scope?.hydrationModule || null === manifest || "object" != typeof manifest || "function" == typeof manifest.resolve) return manifest;
64
+ const modules = manifest;
65
+ const resolve = (key)=>{
66
+ if (!key.startsWith(FEDERATED_ASSET_PREFIX)) return resolveStaticAssets(modules, key);
67
+ const remote = federatedServerAssets(scope, key.slice(FEDERATED_ASSET_PREFIX.length));
68
+ if (!remote) return null;
69
+ return {
70
+ js: [
71
+ joinAssetPath(modules._base, remote.hydration),
72
+ ...remote.assets.js
73
+ ],
74
+ css: [
75
+ ...remote.assets.css
76
+ ]
77
+ };
78
+ };
79
+ return {
80
+ resolve,
81
+ resolveSync: resolve
82
+ };
83
+ }
84
+ export { FEDERATED_ASSET_PREFIX, federatedAssetKey, federatedServerAssets, withFederatedAssets };
@@ -0,0 +1,83 @@
1
+ import { loadFederatedModule } from "@modern-js/renderer-core/federation";
2
+ import { isServer } from "@solidjs/web";
3
+ import { FederationContext } from "./federation-context.js";
4
+ import { federatedAssetKey, federatedServerAssets } 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 = await withTimeout(Promise.resolve().then(()=>id ? loadFederatedModule(scope.instance, id) : remote()), timeout, id ?? "loader");
35
+ const component = module?.default;
36
+ if ("function" != typeof component) throw new TypeError("A federated Solid module must default-export a component");
37
+ if (!isServer || !id) return {
38
+ default: component
39
+ };
40
+ if (!federatedServerAssets(scope, id)) throw new Error(`Cannot server-render ${id}: the host has no server federation state for its browser assets`);
41
+ return {
42
+ default: component,
43
+ $$moduleUrl: federatedAssetKey(id)
44
+ };
45
+ });
46
+ const remotes = new WeakMap();
47
+ const fallback = ()=>options.fallback?.();
48
+ return (props)=>{
49
+ const scope = (0, __rspack_external_solid_js_0ac0db99.useContext)(FederationContext);
50
+ const Remote = remotes.get(scope) ?? load(scope);
51
+ remotes.set(scope, Remote);
52
+ const remoteView = ()=>(0, __rspack_external_solid_js_0ac0db99.createComponent)(Remote, props);
53
+ const [retried, retry] = (0, __rspack_external_solid_js_0ac0db99.createSignal)(false);
54
+ const recover = (error)=>{
55
+ if (isServer) return fallback();
56
+ if ((0, __rspack_external_solid_js_0ac0db99.isHydrating)()) {
57
+ let active = true;
58
+ (0, __rspack_external_solid_js_0ac0db99.onCleanup)(()=>{
59
+ active = false;
60
+ });
61
+ afterHydration(()=>{
62
+ if (active) retry(true);
63
+ });
64
+ return fallback();
65
+ }
66
+ throw error();
67
+ };
68
+ return (0, __rspack_external_solid_js_0ac0db99.createComponent)(__rspack_external_solid_js_0ac0db99.Loading, {
69
+ get fallback () {
70
+ return fallback();
71
+ },
72
+ get children () {
73
+ return retried() ? remoteView() : (0, __rspack_external_solid_js_0ac0db99.createComponent)(__rspack_external_solid_js_0ac0db99.Errored, {
74
+ fallback: recover,
75
+ get children () {
76
+ return remoteView();
77
+ }
78
+ });
79
+ }
80
+ });
81
+ };
82
+ }
83
+ 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,142 @@
1
+ import { memo, mergeProps } from "@solidjs/web";
2
+ import { canonicalPath, 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();
7
+ var _d$ = {
8
+ get () {
9
+ const masked = this[_m$];
10
+ const props = this[_m$2];
11
+ return memo(()=>!!masked())() ? props.to : ".";
12
+ },
13
+ enumerable: true,
14
+ configurable: true
15
+ }, _d$2 = {
16
+ get () {
17
+ const masked = this[_m$];
18
+ const href = this[_m$3];
19
+ return memo(()=>!!masked())() ? void 0 : href();
20
+ },
21
+ enumerable: true,
22
+ configurable: true
23
+ }, _d$3 = {
24
+ get () {
25
+ const masked = this[_m$];
26
+ const href = this[_m$3];
27
+ return memo(()=>!!masked())() ? {
28
+ to: href()
29
+ } : void 0;
30
+ },
31
+ enumerable: true,
32
+ configurable: true
33
+ }, _d$4 = {
34
+ get () {
35
+ const crossLanguage = this[_m$4];
36
+ const targetLanguage = this[_m$5];
37
+ return memo(()=>!!crossLanguage())() ? targetLanguage() : void 0;
38
+ },
39
+ enumerable: true,
40
+ configurable: true
41
+ }, _d$5 = {
42
+ get () {
43
+ const props = this[_m$2];
44
+ return props.class;
45
+ },
46
+ enumerable: true,
47
+ configurable: true
48
+ }, _d$6 = {
49
+ get () {
50
+ const props = this[_m$2];
51
+ return props.activeProps;
52
+ },
53
+ enumerable: true,
54
+ configurable: true
55
+ }, _d$7 = {
56
+ get () {
57
+ const props = this[_m$2];
58
+ return props.inactiveProps;
59
+ },
60
+ enumerable: true,
61
+ configurable: true
62
+ }, _d$8 = {
63
+ get () {
64
+ const props = this[_m$2];
65
+ return props.activeOptions;
66
+ },
67
+ enumerable: true,
68
+ configurable: true
69
+ }, _d$9 = {
70
+ get () {
71
+ const props = this[_m$2];
72
+ return props.replace;
73
+ },
74
+ enumerable: true,
75
+ configurable: true
76
+ }, _d$10 = {
77
+ get () {
78
+ const props = this[_m$2];
79
+ return props.preload;
80
+ },
81
+ enumerable: true,
82
+ configurable: true
83
+ }, _d$11 = {
84
+ get () {
85
+ const props = this[_m$2];
86
+ return props.children;
87
+ },
88
+ enumerable: true,
89
+ configurable: true
90
+ };
91
+ function _P$(_p, _p2, _p3, _p4, _p5) {
92
+ this[_m$] = _p;
93
+ this[_m$2] = _p2;
94
+ this[_m$3] = _p3;
95
+ this[_m$4] = _p4;
96
+ this[_m$5] = _p5;
97
+ Object.defineProperty(this, "to", _d$);
98
+ Object.defineProperty(this, "href", _d$2);
99
+ Object.defineProperty(this, "mask", _d$3);
100
+ Object.defineProperty(this, "hreflang", _d$4);
101
+ Object.defineProperty(this, "class", _d$5);
102
+ Object.defineProperty(this, "activeProps", _d$6);
103
+ Object.defineProperty(this, "inactiveProps", _d$7);
104
+ Object.defineProperty(this, "activeOptions", _d$8);
105
+ Object.defineProperty(this, "replace", _d$9);
106
+ Object.defineProperty(this, "preload", _d$10);
107
+ Object.defineProperty(this, "children", _d$11);
108
+ }
109
+ _P$.prototype = Object.prototype;
110
+ function LocalizedLink(props) {
111
+ const context = __rspack_external_solid_js_0ac0db99.useContext(I18nContext);
112
+ const router = useRouter();
113
+ const rewrite = Boolean(router.options.rewrite);
114
+ const targetLanguage = ()=>void 0 === props.language ? context.language() : configuredLanguage(props.language, context.languages);
115
+ const href = __rspack_external_solid_js_0ac0db99.createMemo(()=>localizePath(props.to, targetLanguage(), {
116
+ languages: [
117
+ ...context.languages
118
+ ],
119
+ localisedUrls: context.localisedUrls
120
+ }));
121
+ const crossLanguage = ()=>targetLanguage() !== context.language();
122
+ const masked = ()=>rewrite && crossLanguage();
123
+ const dataAttributes = Object.defineProperties({}, Object.fromEntries(Object.keys(props).filter((key)=>key.startsWith("data-")).map((key)=>[
124
+ key,
125
+ {
126
+ enumerable: true,
127
+ get: ()=>props[key]
128
+ }
129
+ ])));
130
+ return Link(mergeProps(dataAttributes, new _P$(masked, props, href, crossLanguage, targetLanguage)));
131
+ }
132
+ function useIsLocalizedActive(canonicalTarget) {
133
+ const context = __rspack_external_solid_js_0ac0db99.useContext(I18nContext);
134
+ const location = useLocation();
135
+ return ()=>canonicalPath(location().pathname, {
136
+ languages: [
137
+ ...context.languages
138
+ ],
139
+ localisedUrls: context.localisedUrls
140
+ }) === canonicalTarget;
141
+ }
142
+ export { LocalizedLink, useIsLocalizedActive };
@@ -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, useIsLocalizedActive } 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.13",
4
+ web: "2.0.0-rc.13",
5
+ router: "@modern-js/renderer-solid/router@3.8.3",
6
+ routerSource: "4fbd65c5c3b40be87a6248867c22021c1c19bba8",
7
+ routerCore: "1.171.34",
8
+ history: "1.162.4",
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.13",
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 };