@modern-js/runtime 2.15.1-alpha.2 → 2.16.1-alpha.0

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 (261) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/cjs/cli/index.js +32 -48
  3. package/dist/cjs/common.js +13 -27
  4. package/dist/cjs/config.js +4 -15
  5. package/dist/cjs/core/appConfig.js +13 -26
  6. package/dist/cjs/core/compatible.js +170 -158
  7. package/dist/cjs/core/index.js +38 -45
  8. package/dist/cjs/core/loader/index.js +12 -35
  9. package/dist/cjs/core/loader/loaderManager.js +42 -56
  10. package/dist/cjs/core/loader/useLoader.js +80 -105
  11. package/dist/cjs/core/plugin.js +28 -40
  12. package/dist/cjs/core/types.js +4 -15
  13. package/dist/cjs/document/Body.js +61 -37
  14. package/dist/cjs/document/Comment.js +22 -32
  15. package/dist/cjs/document/DocumentContext.js +14 -37
  16. package/dist/cjs/document/DocumentStructureContext.js +14 -37
  17. package/dist/cjs/document/Head.js +71 -40
  18. package/dist/cjs/document/Html.js +46 -58
  19. package/dist/cjs/document/Links.js +18 -28
  20. package/dist/cjs/document/Root.js +73 -44
  21. package/dist/cjs/document/Script.js +22 -32
  22. package/dist/cjs/document/Scripts.js +18 -28
  23. package/dist/cjs/document/cli/index.js +161 -207
  24. package/dist/cjs/document/constants.js +36 -75
  25. package/dist/cjs/document/index.js +28 -27
  26. package/dist/cjs/exports/head.js +27 -37
  27. package/dist/cjs/exports/loadable.js +27 -37
  28. package/dist/cjs/exports/server.js +7 -25
  29. package/dist/cjs/exports/styled.js +27 -37
  30. package/dist/cjs/index.js +22 -42
  31. package/dist/cjs/router/cli/index.js +91 -114
  32. package/dist/cjs/router/index.js +32 -39
  33. package/dist/cjs/router/runtime/DefaultNotFound.js +23 -38
  34. package/dist/cjs/router/runtime/DeferredDataScripts.js +8 -24
  35. package/dist/cjs/router/runtime/DeferredDataScripts.node.js +69 -112
  36. package/dist/cjs/router/runtime/PrefetchLink.js +117 -96
  37. package/dist/cjs/router/runtime/fetch.js +7 -25
  38. package/dist/cjs/router/runtime/fetch.node.js +7 -25
  39. package/dist/cjs/router/runtime/fetch.worker.js +7 -25
  40. package/dist/cjs/router/runtime/hooks.js +8 -26
  41. package/dist/cjs/router/runtime/index.js +97 -149
  42. package/dist/cjs/router/runtime/plugin.js +56 -76
  43. package/dist/cjs/router/runtime/plugin.node.js +95 -74
  44. package/dist/cjs/router/runtime/server.js +18 -17
  45. package/dist/cjs/router/runtime/types.js +4 -15
  46. package/dist/cjs/router/runtime/utils.js +57 -83
  47. package/dist/cjs/router/runtime/withRouter.js +24 -39
  48. package/dist/cjs/runtimeContext.js +14 -27
  49. package/dist/cjs/ssr/cli/babel-plugin-ssr-loader-id.js +75 -59
  50. package/dist/cjs/ssr/cli/index.js +120 -150
  51. package/dist/cjs/ssr/index.js +149 -132
  52. package/dist/cjs/ssr/index.node.js +73 -74
  53. package/dist/cjs/ssr/prefetch.js +51 -59
  54. package/dist/cjs/ssr/react/index.js +15 -28
  55. package/dist/cjs/ssr/react/nossr/index.js +51 -43
  56. package/dist/cjs/ssr/react/prerender/index.js +93 -59
  57. package/dist/cjs/ssr/react/prerender/type.js +4 -15
  58. package/dist/cjs/ssr/react/prerender/util.js +32 -51
  59. package/dist/cjs/ssr/react/withCallback/index.js +53 -29
  60. package/dist/cjs/ssr/serverRender/helmet.js +15 -26
  61. package/dist/cjs/ssr/serverRender/index.js +14 -32
  62. package/dist/cjs/ssr/serverRender/renderToStream/buildTemplate.after.js +15 -34
  63. package/dist/cjs/ssr/serverRender/renderToStream/buildTemplate.share.js +12 -28
  64. package/dist/cjs/ssr/serverRender/renderToStream/bulidTemplate.before.js +28 -55
  65. package/dist/cjs/ssr/serverRender/renderToStream/index.js +23 -48
  66. package/dist/cjs/ssr/serverRender/renderToStream/loadable.js +13 -32
  67. package/dist/cjs/ssr/serverRender/renderToStream/renderToPipe.js +33 -64
  68. package/dist/cjs/ssr/serverRender/renderToStream/renderToPipe.worker.js +26 -54
  69. package/dist/cjs/ssr/serverRender/renderToStream/styledComponent.js +9 -27
  70. package/dist/cjs/ssr/serverRender/renderToStream/template.js +11 -32
  71. package/dist/cjs/ssr/serverRender/renderToStream/type.js +4 -15
  72. package/dist/cjs/ssr/serverRender/renderToString/entry.js +133 -99
  73. package/dist/cjs/ssr/serverRender/renderToString/index.js +21 -48
  74. package/dist/cjs/ssr/serverRender/renderToString/loadable.js +20 -45
  75. package/dist/cjs/ssr/serverRender/renderToString/reduce.js +13 -25
  76. package/dist/cjs/ssr/serverRender/renderToString/styledComponent.js +9 -27
  77. package/dist/cjs/ssr/serverRender/renderToString/template.js +42 -37
  78. package/dist/cjs/ssr/serverRender/renderToString/type.js +10 -28
  79. package/dist/cjs/ssr/serverRender/time.js +7 -25
  80. package/dist/cjs/ssr/serverRender/time.worker.js +11 -26
  81. package/dist/cjs/ssr/serverRender/types.js +7 -25
  82. package/dist/cjs/ssr/serverRender/utils.js +12 -27
  83. package/dist/cjs/ssr/utils.js +26 -51
  84. package/dist/cjs/state/cli/index.js +71 -95
  85. package/dist/cjs/state/index.js +32 -39
  86. package/dist/cjs/state/plugins.js +26 -46
  87. package/dist/cjs/state/runtime/index.js +27 -37
  88. package/dist/cjs/state/runtime/plugin.js +82 -84
  89. package/dist/cjs/state/types.js +4 -15
  90. package/dist/esm/cli/index.js +184 -176
  91. package/dist/esm/common.js +4 -5
  92. package/dist/esm/config.js +1 -1
  93. package/dist/esm/core/appConfig.js +8 -7
  94. package/dist/esm/core/compatible.js +470 -448
  95. package/dist/esm/core/index.js +3 -4
  96. package/dist/esm/core/loader/index.js +1 -2
  97. package/dist/esm/core/loader/loaderManager.js +391 -366
  98. package/dist/esm/core/loader/useLoader.js +173 -162
  99. package/dist/esm/core/plugin.js +162 -155
  100. package/dist/esm/core/types.js +1 -1
  101. package/dist/esm/document/Body.js +12 -13
  102. package/dist/esm/document/Comment.js +11 -12
  103. package/dist/esm/document/DocumentContext.js +4 -5
  104. package/dist/esm/document/DocumentStructureContext.js +6 -7
  105. package/dist/esm/document/Head.js +16 -17
  106. package/dist/esm/document/Html.js +84 -85
  107. package/dist/esm/document/Links.js +5 -6
  108. package/dist/esm/document/Root.js +20 -21
  109. package/dist/esm/document/Script.js +12 -13
  110. package/dist/esm/document/Scripts.js +5 -6
  111. package/dist/esm/document/cli/index.js +390 -371
  112. package/dist/esm/document/constants.js +33 -34
  113. package/dist/esm/exports/head.js +1 -2
  114. package/dist/esm/exports/loadable.js +1 -2
  115. package/dist/esm/exports/server.js +2 -3
  116. package/dist/esm/exports/styled.js +1 -2
  117. package/dist/esm/index.js +2 -3
  118. package/dist/esm/router/cli/index.js +141 -141
  119. package/dist/esm/router/index.js +2 -3
  120. package/dist/esm/router/runtime/DefaultNotFound.js +12 -13
  121. package/dist/esm/router/runtime/DeferredDataScripts.js +4 -4
  122. package/dist/esm/router/runtime/DeferredDataScripts.node.js +154 -143
  123. package/dist/esm/router/runtime/PrefetchLink.js +418 -394
  124. package/dist/esm/router/runtime/fetch.js +2 -1
  125. package/dist/esm/router/runtime/fetch.worker.js +2 -1
  126. package/dist/esm/router/runtime/index.js +62 -9
  127. package/dist/esm/router/runtime/plugin.js +141 -142
  128. package/dist/esm/router/runtime/plugin.node.js +372 -353
  129. package/dist/esm/router/runtime/types.js +1 -1
  130. package/dist/esm/router/runtime/utils.js +295 -279
  131. package/dist/esm/router/runtime/withRouter.js +57 -58
  132. package/dist/esm/runtimeContext.js +2 -3
  133. package/dist/esm/ssr/cli/babel-plugin-ssr-loader-id.js +105 -118
  134. package/dist/esm/ssr/cli/index.js +146 -146
  135. package/dist/esm/ssr/index.js +303 -297
  136. package/dist/esm/ssr/index.node.js +227 -221
  137. package/dist/esm/ssr/prefetch.js +192 -186
  138. package/dist/esm/ssr/react/index.js +2 -3
  139. package/dist/esm/ssr/react/nossr/index.js +58 -47
  140. package/dist/esm/ssr/react/prerender/index.js +214 -206
  141. package/dist/esm/ssr/react/prerender/type.js +1 -1
  142. package/dist/esm/ssr/react/prerender/util.js +91 -92
  143. package/dist/esm/ssr/react/withCallback/index.js +13 -14
  144. package/dist/esm/ssr/serverRender/helmet.js +34 -35
  145. package/dist/esm/ssr/serverRender/index.js +167 -160
  146. package/dist/esm/ssr/serverRender/renderToStream/buildTemplate.after.js +58 -59
  147. package/dist/esm/ssr/serverRender/renderToStream/buildTemplate.share.js +5 -6
  148. package/dist/esm/ssr/serverRender/renderToStream/bulidTemplate.before.js +106 -93
  149. package/dist/esm/ssr/serverRender/renderToStream/index.js +157 -151
  150. package/dist/esm/ssr/serverRender/renderToStream/loadable.js +17 -18
  151. package/dist/esm/ssr/serverRender/renderToStream/renderToPipe.js +117 -117
  152. package/dist/esm/ssr/serverRender/renderToStream/renderToPipe.worker.js +286 -279
  153. package/dist/esm/ssr/serverRender/renderToStream/styledComponent.js +8 -9
  154. package/dist/esm/ssr/serverRender/renderToStream/template.js +62 -51
  155. package/dist/esm/ssr/serverRender/renderToStream/type.js +1 -1
  156. package/dist/esm/ssr/serverRender/renderToString/entry.js +393 -383
  157. package/dist/esm/ssr/serverRender/renderToString/index.js +158 -152
  158. package/dist/esm/ssr/serverRender/renderToString/loadable.js +46 -47
  159. package/dist/esm/ssr/serverRender/renderToString/reduce.js +7 -8
  160. package/dist/esm/ssr/serverRender/renderToString/styledComponent.js +6 -7
  161. package/dist/esm/ssr/serverRender/renderToString/template.js +142 -128
  162. package/dist/esm/ssr/serverRender/renderToString/type.js +6 -7
  163. package/dist/esm/ssr/serverRender/time.js +57 -46
  164. package/dist/esm/ssr/serverRender/time.worker.js +72 -61
  165. package/dist/esm/ssr/serverRender/utils.js +14 -15
  166. package/dist/esm/ssr/utils.js +128 -117
  167. package/dist/esm/state/cli/index.js +67 -67
  168. package/dist/esm/state/index.js +2 -3
  169. package/dist/esm/state/plugins.js +7 -8
  170. package/dist/esm/state/runtime/index.js +1 -2
  171. package/dist/esm/state/runtime/plugin.js +177 -166
  172. package/dist/esm/state/types.js +1 -1
  173. package/dist/esm-node/cli/index.js +11 -9
  174. package/dist/esm-node/common.js +3 -8
  175. package/dist/esm-node/config.js +1 -0
  176. package/dist/esm-node/core/appConfig.js +2 -6
  177. package/dist/esm-node/core/compatible.js +104 -120
  178. package/dist/esm-node/core/index.js +3 -13
  179. package/dist/esm-node/core/loader/index.js +1 -4
  180. package/dist/esm-node/core/loader/loaderManager.js +25 -25
  181. package/dist/esm-node/core/loader/useLoader.js +60 -74
  182. package/dist/esm-node/core/plugin.js +9 -15
  183. package/dist/esm-node/core/types.js +1 -0
  184. package/dist/esm-node/document/Body.js +11 -15
  185. package/dist/esm-node/document/Comment.js +10 -14
  186. package/dist/esm-node/document/DocumentContext.js +1 -4
  187. package/dist/esm-node/document/DocumentStructureContext.js +1 -4
  188. package/dist/esm-node/document/Head.js +14 -14
  189. package/dist/esm-node/document/Html.js +31 -34
  190. package/dist/esm-node/document/Links.js +5 -6
  191. package/dist/esm-node/document/Root.js +19 -21
  192. package/dist/esm-node/document/Script.js +10 -14
  193. package/dist/esm-node/document/Scripts.js +5 -6
  194. package/dist/esm-node/document/cli/index.js +136 -184
  195. package/dist/esm-node/document/constants.js +22 -52
  196. package/dist/esm-node/exports/head.js +1 -4
  197. package/dist/esm-node/exports/loadable.js +1 -4
  198. package/dist/esm-node/exports/server.js +1 -4
  199. package/dist/esm-node/exports/styled.js +1 -4
  200. package/dist/esm-node/index.js +2 -22
  201. package/dist/esm-node/router/cli/index.js +83 -98
  202. package/dist/esm-node/router/index.js +2 -6
  203. package/dist/esm-node/router/runtime/DefaultNotFound.js +11 -17
  204. package/dist/esm-node/router/runtime/DeferredDataScripts.js +1 -4
  205. package/dist/esm-node/router/runtime/DeferredDataScripts.node.js +51 -85
  206. package/dist/esm-node/router/runtime/PrefetchLink.js +53 -59
  207. package/dist/esm-node/router/runtime/fetch.js +1 -3
  208. package/dist/esm-node/router/runtime/fetch.node.js +1 -3
  209. package/dist/esm-node/router/runtime/fetch.worker.js +1 -3
  210. package/dist/esm-node/router/runtime/hooks.js +1 -3
  211. package/dist/esm-node/router/runtime/index.js +10 -69
  212. package/dist/esm-node/router/runtime/plugin.js +27 -41
  213. package/dist/esm-node/router/runtime/plugin.node.js +24 -32
  214. package/dist/esm-node/router/runtime/types.js +1 -0
  215. package/dist/esm-node/router/runtime/utils.js +34 -50
  216. package/dist/esm-node/router/runtime/withRouter.js +8 -14
  217. package/dist/esm-node/runtimeContext.js +2 -6
  218. package/dist/esm-node/ssr/cli/babel-plugin-ssr-loader-id.js +99 -119
  219. package/dist/esm-node/ssr/cli/index.js +106 -125
  220. package/dist/esm-node/ssr/index.js +112 -96
  221. package/dist/esm-node/ssr/index.node.js +39 -39
  222. package/dist/esm-node/ssr/prefetch.js +40 -35
  223. package/dist/esm-node/ssr/react/index.js +2 -6
  224. package/dist/esm-node/ssr/react/nossr/index.js +2 -9
  225. package/dist/esm-node/ssr/react/prerender/index.js +32 -23
  226. package/dist/esm-node/ssr/react/prerender/type.js +1 -0
  227. package/dist/esm-node/ssr/react/prerender/util.js +23 -33
  228. package/dist/esm-node/ssr/react/withCallback/index.js +4 -5
  229. package/dist/esm-node/ssr/serverRender/helmet.js +2 -5
  230. package/dist/esm-node/ssr/serverRender/index.js +5 -10
  231. package/dist/esm-node/ssr/serverRender/renderToStream/buildTemplate.after.js +5 -9
  232. package/dist/esm-node/ssr/serverRender/renderToStream/buildTemplate.share.js +3 -10
  233. package/dist/esm-node/ssr/serverRender/renderToStream/bulidTemplate.before.js +7 -17
  234. package/dist/esm-node/ssr/serverRender/renderToStream/index.js +2 -7
  235. package/dist/esm-node/ssr/serverRender/renderToStream/loadable.js +4 -8
  236. package/dist/esm-node/ssr/serverRender/renderToStream/renderToPipe.js +21 -39
  237. package/dist/esm-node/ssr/serverRender/renderToStream/renderToPipe.worker.js +16 -31
  238. package/dist/esm-node/ssr/serverRender/renderToStream/styledComponent.js +1 -4
  239. package/dist/esm-node/ssr/serverRender/renderToStream/template.js +2 -8
  240. package/dist/esm-node/ssr/serverRender/renderToStream/type.js +1 -0
  241. package/dist/esm-node/ssr/serverRender/renderToString/entry.js +50 -39
  242. package/dist/esm-node/ssr/serverRender/renderToString/index.js +1 -8
  243. package/dist/esm-node/ssr/serverRender/renderToString/loadable.js +8 -18
  244. package/dist/esm-node/ssr/serverRender/renderToString/reduce.js +1 -4
  245. package/dist/esm-node/ssr/serverRender/renderToString/styledComponent.js +1 -4
  246. package/dist/esm-node/ssr/serverRender/renderToString/template.js +32 -18
  247. package/dist/esm-node/ssr/serverRender/renderToString/type.js +3 -6
  248. package/dist/esm-node/ssr/serverRender/time.js +1 -4
  249. package/dist/esm-node/ssr/serverRender/time.worker.js +5 -5
  250. package/dist/esm-node/ssr/serverRender/types.js +1 -3
  251. package/dist/esm-node/ssr/serverRender/utils.js +4 -10
  252. package/dist/esm-node/ssr/utils.js +8 -19
  253. package/dist/esm-node/state/cli/index.js +63 -78
  254. package/dist/esm-node/state/index.js +2 -6
  255. package/dist/esm-node/state/plugins.js +4 -10
  256. package/dist/esm-node/state/runtime/index.js +1 -4
  257. package/dist/esm-node/state/runtime/plugin.js +47 -44
  258. package/dist/esm-node/state/types.js +1 -0
  259. package/dist/types/router/runtime/index.d.ts +1 -1
  260. package/package.json +14 -10
  261. package/types/model.d.ts +1 -0
@@ -1,12 +1,10 @@
1
1
  import { isReact18 } from "../utils";
2
2
  import { CSS_CHUNKS_PLACEHOLDER } from "./utils";
3
- async function serverRender(options) {
4
- var _a, _b;
5
- if ((_a = options.context.ssrContext) == null ? void 0 : _a.template) {
6
- options.context.ssrContext.template = (_b = options.context.ssrContext) == null ? void 0 : _b.template.replace(
7
- "</head>",
8
- `${CSS_CHUNKS_PLACEHOLDER}</head>`
9
- );
3
+ export default async function serverRender(options) {
4
+ var _options_context_ssrContext;
5
+ if ((_options_context_ssrContext = options.context.ssrContext) === null || _options_context_ssrContext === void 0 ? void 0 : _options_context_ssrContext.template) {
6
+ var _options_context_ssrContext1;
7
+ options.context.ssrContext.template = (_options_context_ssrContext1 = options.context.ssrContext) === null || _options_context_ssrContext1 === void 0 ? void 0 : _options_context_ssrContext1.template.replace("</head>", `${CSS_CHUNKS_PLACEHOLDER}</head>`);
10
8
  }
11
9
  if (isReact18() && options.config.mode === "stream") {
12
10
  const pipe = await require("./renderToStream").render(options);
@@ -16,6 +14,3 @@ async function serverRender(options) {
16
14
  return html;
17
15
  }
18
16
  }
19
- export {
20
- serverRender as default
21
- };
@@ -1,16 +1,15 @@
1
1
  import { serializeJson } from "@modern-js/utils/universal/serialize";
2
2
  import { buildTemplate } from "./buildTemplate.share";
3
- function buildShellAfterTemplate(afterAppTemplate, options) {
4
- const callbacks = [injectSSRDataScript];
3
+ export function buildShellAfterTemplate(afterAppTemplate, options) {
4
+ const callbacks = [
5
+ injectSSRDataScript
6
+ ];
5
7
  return buildTemplate(afterAppTemplate, callbacks);
6
8
  function injectSSRDataScript(template) {
7
9
  const ssrDataScript = buildSSRDataScript();
8
10
  return template.replace("<!--<?- SSRDataScript ?>-->", ssrDataScript);
9
11
  function buildSSRDataScript() {
10
- const {
11
- context: { ssrContext, initialData, __i18nData__ },
12
- renderLevel
13
- } = options;
12
+ const { context: { ssrContext, initialData, __i18nData__ }, renderLevel } = options;
14
13
  const { request, enableUnsafeCtx } = ssrContext;
15
14
  const unsafeContext = {
16
15
  headers: request.headers
@@ -38,6 +37,3 @@ function buildShellAfterTemplate(afterAppTemplate, options) {
38
37
  }
39
38
  }
40
39
  }
41
- export {
42
- buildShellAfterTemplate
43
- };
@@ -1,11 +1,4 @@
1
- const HEAD_REG_EXP = /<head(.|\n)*>(.|\n)*<\/head>/;
2
- function buildTemplate(template, callbacks) {
3
- return callbacks.reduce(
4
- (template2, buildTemplateCb) => buildTemplateCb(template2),
5
- template
6
- );
1
+ export const HEAD_REG_EXP = /<head(.|\n)*>(.|\n)*<\/head>/;
2
+ export function buildTemplate(template, callbacks) {
3
+ return callbacks.reduce((template2, buildTemplateCb) => buildTemplateCb(template2), template);
7
4
  }
8
- export {
9
- HEAD_REG_EXP,
10
- buildTemplate
11
- };
@@ -2,10 +2,7 @@ import ReactHelmet from "react-helmet";
2
2
  import { matchRoutes } from "react-router-dom";
3
3
  import helmetReplace from "../helmet";
4
4
  import { CSS_CHUNKS_PLACEHOLDER } from "../utils";
5
- import {
6
- HEAD_REG_EXP,
7
- buildTemplate
8
- } from "./buildTemplate.share";
5
+ import { HEAD_REG_EXP, buildTemplate } from "./buildTemplate.share";
9
6
  function getHeadTemplate(beforeEntryTemplate, context) {
10
7
  const callbacks = [
11
8
  (headTemplate2) => {
@@ -29,12 +26,8 @@ function getHeadTemplate(beforeEntryTemplate, context) {
29
26
  }
30
27
  const { routeAssets } = routeManifest;
31
28
  const cssChunks = [];
32
- const matches = matchRoutes(
33
- routes,
34
- routerContext.location,
35
- routerContext.basename
36
- );
37
- matches == null ? void 0 : matches.forEach((match, index) => {
29
+ const matches = matchRoutes(routes, routerContext.location, routerContext.basename);
30
+ matches === null || matches === void 0 ? void 0 : matches.forEach((match, index) => {
38
31
  if (!index) {
39
32
  return;
40
33
  }
@@ -43,9 +36,9 @@ function getHeadTemplate(beforeEntryTemplate, context) {
43
36
  const routeManifest2 = routeAssets[routeId];
44
37
  if (routeManifest2) {
45
38
  const { referenceCssAssets = [] } = routeManifest2;
46
- const _cssChunks = referenceCssAssets.filter(
47
- (asset) => (asset == null ? void 0 : asset.endsWith(".css")) && !headTemplate2.includes(asset)
48
- );
39
+ const _cssChunks = referenceCssAssets.filter((asset) => {
40
+ return (asset === null || asset === void 0 ? void 0 : asset.endsWith(".css")) && !headTemplate2.includes(asset);
41
+ });
49
42
  cssChunks.push(..._cssChunks);
50
43
  }
51
44
  }
@@ -57,10 +50,7 @@ function getHeadTemplate(beforeEntryTemplate, context) {
57
50
  }
58
51
  }
59
52
  }
60
- function buildShellBeforeTemplate(beforeAppTemplate, context) {
53
+ export function buildShellBeforeTemplate(beforeAppTemplate, context) {
61
54
  const headTemplate = getHeadTemplate(beforeAppTemplate, context);
62
55
  return beforeAppTemplate.replace(HEAD_REG_EXP, headTemplate);
63
56
  }
64
- export {
65
- buildShellBeforeTemplate
66
- };
@@ -3,12 +3,10 @@ import { run } from "@modern-js/utils/ssr";
3
3
  import { PreRender } from "../../react/prerender";
4
4
  import { time } from "../time";
5
5
  import renderToPipe from "./renderToPipe";
6
- const render = ({ App, context }) => {
6
+ export const render = ({ App, context }) => {
7
7
  const { ssrContext } = context;
8
8
  if (!ssrContext) {
9
- throw new Error(
10
- 'The "ssrContext" must not be undefined, but received undefined'
11
- );
9
+ throw new Error('The "ssrContext" must not be undefined, but received undefined');
12
10
  }
13
11
  return run(ssrContext.request.headers, async () => {
14
12
  const end = time();
@@ -33,6 +31,3 @@ const render = ({ App, context }) => {
33
31
  return pipe;
34
32
  });
35
33
  };
36
- export {
37
- render
38
- };
@@ -1,8 +1,5 @@
1
1
  import { ChunkExtractor } from "@loadable/server";
2
- function getLoadableChunks({
3
- context,
4
- jsx
5
- }) {
2
+ export function getLoadableChunks({ context, jsx }) {
6
3
  const { loadableStats, entryName } = context.ssrContext;
7
4
  if (!loadableStats) {
8
5
  return {
@@ -11,7 +8,9 @@ function getLoadableChunks({
11
8
  }
12
9
  const extractor = new ChunkExtractor({
13
10
  stats: loadableStats,
14
- entrypoints: [entryName]
11
+ entrypoints: [
12
+ entryName
13
+ ]
15
14
  });
16
15
  const collectedJsx = extractor.collectChunks(jsx);
17
16
  return {
@@ -19,6 +18,3 @@ function getLoadableChunks({
19
18
  chunkExtractor: extractor
20
19
  };
21
20
  }
22
- export {
23
- getLoadableChunks
24
- };
@@ -2,14 +2,14 @@ import { Transform } from "stream";
2
2
  import { RenderLevel } from "../types";
3
3
  import { ESCAPED_SHELL_STREAM_END_MARK } from "../../../common";
4
4
  import { getTemplates } from "./template";
5
- var ShellChunkStatus = /* @__PURE__ */ ((ShellChunkStatus2) => {
5
+ var ShellChunkStatus;
6
+ (function(ShellChunkStatus2) {
6
7
  ShellChunkStatus2[ShellChunkStatus2["IDLE"] = 0] = "IDLE";
7
8
  ShellChunkStatus2[ShellChunkStatus2["START"] = 1] = "START";
8
9
  ShellChunkStatus2[ShellChunkStatus2["FINIESH"] = 2] = "FINIESH";
9
- return ShellChunkStatus2;
10
- })(ShellChunkStatus || {});
10
+ })(ShellChunkStatus || (ShellChunkStatus = {}));
11
11
  function renderToPipe(rootElement, context, options) {
12
- let shellChunkStatus = 0 /* IDLE */;
12
+ let shellChunkStatus = ShellChunkStatus.IDLE;
13
13
  const { ssrContext } = context;
14
14
  const forUserPipe = (stream) => {
15
15
  return new Promise((resolve) => {
@@ -21,27 +21,21 @@ function renderToPipe(rootElement, context, options) {
21
21
  const { pipe } = renderToPipeableStream(rootElement, {
22
22
  ...options,
23
23
  onShellReady() {
24
- var _a;
25
- const { shellAfter, shellBefore } = getTemplates(
26
- context,
27
- RenderLevel.SERVER_RENDER
28
- );
29
- (_a = options == null ? void 0 : options.onShellReady) == null ? void 0 : _a.call(options);
24
+ var _options_onShellReady;
25
+ const { shellAfter, shellBefore } = getTemplates(context, RenderLevel.SERVER_RENDER);
26
+ options === null || options === void 0 ? void 0 : (_options_onShellReady = options.onShellReady) === null || _options_onShellReady === void 0 ? void 0 : _options_onShellReady.call(options);
30
27
  const injectableTransform = new Transform({
31
28
  transform(chunk, _encoding, callback) {
32
29
  try {
33
- if (shellChunkStatus !== 2 /* FINIESH */) {
30
+ if (shellChunkStatus !== ShellChunkStatus.FINIESH) {
34
31
  let concatedChunk = chunk.toString();
35
- if (shellChunkStatus === 0 /* IDLE */) {
32
+ if (shellChunkStatus === ShellChunkStatus.IDLE) {
36
33
  concatedChunk = `${shellBefore}${concatedChunk}`;
37
- shellChunkStatus = 1 /* START */;
34
+ shellChunkStatus = ShellChunkStatus.START;
38
35
  }
39
- if (shellChunkStatus === 1 /* START */ && concatedChunk.endsWith(ESCAPED_SHELL_STREAM_END_MARK)) {
40
- concatedChunk = concatedChunk.replace(
41
- ESCAPED_SHELL_STREAM_END_MARK,
42
- shellAfter
43
- );
44
- shellChunkStatus = 2 /* FINIESH */;
36
+ if (shellChunkStatus === ShellChunkStatus.START && concatedChunk.endsWith(ESCAPED_SHELL_STREAM_END_MARK)) {
37
+ concatedChunk = concatedChunk.replace(ESCAPED_SHELL_STREAM_END_MARK, shellAfter);
38
+ shellChunkStatus = ShellChunkStatus.FINIESH;
45
39
  }
46
40
  this.push(concatedChunk);
47
41
  } else {
@@ -60,34 +54,22 @@ function renderToPipe(rootElement, context, options) {
60
54
  resolve(pipe(injectableTransform).pipe(stream));
61
55
  },
62
56
  onShellError(error) {
63
- var _a;
64
- ssrContext.metrics.emitCounter(
65
- "app.render.streaming.shell.error",
66
- 1
67
- );
68
- const { shellAfter, shellBefore } = getTemplates(
69
- context,
70
- RenderLevel.CLIENT_RENDER
71
- );
57
+ var _options_onShellError;
58
+ ssrContext.metrics.emitCounter("app.render.streaming.shell.error", 1);
59
+ const { shellAfter, shellBefore } = getTemplates(context, RenderLevel.CLIENT_RENDER);
72
60
  const fallbackHtml = `${shellBefore}${shellAfter}`;
73
61
  resolve(fallbackHtml);
74
- (_a = options == null ? void 0 : options.onShellError) == null ? void 0 : _a.call(options, error);
62
+ options === null || options === void 0 ? void 0 : (_options_onShellError = options.onShellError) === null || _options_onShellError === void 0 ? void 0 : _options_onShellError.call(options, error);
75
63
  },
76
64
  onError(error) {
77
- var _a;
78
- ssrContext.logger.error(
79
- "An error occurs during streaming SSR",
80
- error
81
- );
65
+ var _options_onError;
66
+ ssrContext.logger.error("An error occurs during streaming SSR", error);
82
67
  ssrContext.metrics.emitCounter("app.render.streaming.error", 1);
83
- (_a = options == null ? void 0 : options.onError) == null ? void 0 : _a.call(options, error);
68
+ options === null || options === void 0 ? void 0 : (_options_onError = options.onError) === null || _options_onError === void 0 ? void 0 : _options_onError.call(options, error);
84
69
  }
85
70
  });
86
71
  });
87
72
  };
88
73
  return forUserPipe;
89
74
  }
90
- var renderToPipe_default = renderToPipe;
91
- export {
92
- renderToPipe_default as default
93
- };
75
+ export default renderToPipe;
@@ -1,14 +1,14 @@
1
1
  import { RenderLevel } from "../types";
2
2
  import { ESCAPED_SHELL_STREAM_END_MARK } from "../../../common";
3
3
  import { getTemplates } from "./template";
4
- var ShellChunkStatus = /* @__PURE__ */ ((ShellChunkStatus2) => {
4
+ var ShellChunkStatus;
5
+ (function(ShellChunkStatus2) {
5
6
  ShellChunkStatus2[ShellChunkStatus2["IDLE"] = 0] = "IDLE";
6
7
  ShellChunkStatus2[ShellChunkStatus2["START"] = 1] = "START";
7
8
  ShellChunkStatus2[ShellChunkStatus2["FINIESH"] = 2] = "FINIESH";
8
- return ShellChunkStatus2;
9
- })(ShellChunkStatus || {});
9
+ })(ShellChunkStatus || (ShellChunkStatus = {}));
10
10
  function renderToPipe(rootElement, context, options) {
11
- let shellChunkStatus = 0 /* IDLE */;
11
+ let shellChunkStatus = ShellChunkStatus.IDLE;
12
12
  const { ssrContext } = context;
13
13
  const forUserPipe = async () => {
14
14
  let renderToReadableStream;
@@ -16,21 +16,15 @@ function renderToPipe(rootElement, context, options) {
16
16
  ({ renderToReadableStream } = require("react-dom/server"));
17
17
  } catch (e) {
18
18
  }
19
- const { shellAfter, shellBefore } = getTemplates(
20
- context,
21
- RenderLevel.SERVER_RENDER
22
- );
19
+ const { shellAfter, shellBefore } = getTemplates(context, RenderLevel.SERVER_RENDER);
23
20
  try {
24
21
  const readableOriginal = await renderToReadableStream(rootElement, {
25
22
  ...options,
26
23
  onError(error) {
27
- var _a;
28
- ssrContext.logger.error(
29
- "An error occurs during streaming SSR",
30
- error
31
- );
24
+ var _options_onError;
25
+ ssrContext.logger.error("An error occurs during streaming SSR", error);
32
26
  ssrContext.metrics.emitCounter("app.render.streaming.error", 1);
33
- (_a = options == null ? void 0 : options.onError) == null ? void 0 : _a.call(options, error);
27
+ options === null || options === void 0 ? void 0 : (_options_onError = options.onError) === null || _options_onError === void 0 ? void 0 : _options_onError.call(options, error);
34
28
  }
35
29
  });
36
30
  const reader = readableOriginal.getReader();
@@ -42,18 +36,15 @@ function renderToPipe(rootElement, context, options) {
42
36
  controller.close();
43
37
  return;
44
38
  }
45
- if (shellChunkStatus !== 2 /* FINIESH */) {
39
+ if (shellChunkStatus !== ShellChunkStatus.FINIESH) {
46
40
  let concatedChunk = new TextDecoder().decode(value);
47
- if (shellChunkStatus === 0 /* IDLE */) {
41
+ if (shellChunkStatus === ShellChunkStatus.IDLE) {
48
42
  concatedChunk = `${shellBefore}${concatedChunk}`;
49
- shellChunkStatus = 1 /* START */;
43
+ shellChunkStatus = ShellChunkStatus.START;
50
44
  }
51
- if (shellChunkStatus === 1 /* START */ && concatedChunk.endsWith(ESCAPED_SHELL_STREAM_END_MARK)) {
52
- concatedChunk = concatedChunk.replace(
53
- ESCAPED_SHELL_STREAM_END_MARK,
54
- shellAfter
55
- );
56
- shellChunkStatus = 2 /* FINIESH */;
45
+ if (shellChunkStatus === ShellChunkStatus.START && concatedChunk.endsWith(ESCAPED_SHELL_STREAM_END_MARK)) {
46
+ concatedChunk = concatedChunk.replace(ESCAPED_SHELL_STREAM_END_MARK, shellAfter);
47
+ shellChunkStatus = ShellChunkStatus.FINIESH;
57
48
  }
58
49
  controller.enqueue(encodeForWebStream(concatedChunk));
59
50
  } else {
@@ -67,10 +58,7 @@ function renderToPipe(rootElement, context, options) {
67
58
  return injectableStream;
68
59
  } catch (err) {
69
60
  ssrContext.metrics.emitCounter("app.render.streaming.shell.error", 1);
70
- const { shellAfter: shellAfter2, shellBefore: shellBefore2 } = getTemplates(
71
- context,
72
- RenderLevel.CLIENT_RENDER
73
- );
61
+ const { shellAfter: shellAfter2, shellBefore: shellBefore2 } = getTemplates(context, RenderLevel.CLIENT_RENDER);
74
62
  const fallbackHtml = `${shellBefore2}${shellAfter2}`;
75
63
  return fallbackHtml;
76
64
  }
@@ -87,7 +75,4 @@ function encodeForWebStream(thing) {
87
75
  }
88
76
  return thing;
89
77
  }
90
- var renderToPipe_worker_default = renderToPipe;
91
- export {
92
- renderToPipe_worker_default as default
93
- };
78
+ export default renderToPipe;
@@ -1,5 +1,5 @@
1
1
  import { ServerStyleSheet } from "styled-components";
2
- function getStyledComponentCss({ jsx }) {
2
+ export function getStyledComponentCss({ jsx }) {
3
3
  const sheet = new ServerStyleSheet();
4
4
  const collectedJsx = sheet.collectStyles(jsx);
5
5
  return {
@@ -7,6 +7,3 @@ function getStyledComponentCss({ jsx }) {
7
7
  jsx: collectedJsx
8
8
  };
9
9
  }
10
- export {
11
- getStyledComponentCss
12
- };
@@ -1,13 +1,10 @@
1
1
  import { buildShellAfterTemplate } from "./buildTemplate.after";
2
2
  import { buildShellBeforeTemplate } from "./bulidTemplate.before";
3
3
  const HTML_SEPARATOR = "<!--<?- html ?>-->";
4
- const getTemplates = (context, renderLevel) => {
4
+ export const getTemplates = (context, renderLevel) => {
5
5
  const { ssrContext } = context;
6
6
  const [beforeAppTemplate = "", afterAppHtmlTemplate = ""] = ssrContext.template.split(HTML_SEPARATOR) || [];
7
- const builtBeforeTemplate = buildShellBeforeTemplate(
8
- beforeAppTemplate,
9
- context
10
- );
7
+ const builtBeforeTemplate = buildShellBeforeTemplate(beforeAppTemplate, context);
11
8
  const builtAfterTemplate = buildShellAfterTemplate(afterAppHtmlTemplate, {
12
9
  context,
13
10
  renderLevel
@@ -17,6 +14,3 @@ const getTemplates = (context, renderLevel) => {
17
14
  shellAfter: builtAfterTemplate
18
15
  };
19
16
  };
20
- export {
21
- getTemplates
22
- };
@@ -0,0 +1 @@
1
+ export {};
@@ -1,12 +1,23 @@
1
+ function _define_property(obj, key, value) {
2
+ if (key in obj) {
3
+ Object.defineProperty(obj, key, {
4
+ value,
5
+ enumerable: true,
6
+ configurable: true,
7
+ writable: true
8
+ });
9
+ } else {
10
+ obj[key] = value;
11
+ }
12
+ return obj;
13
+ }
1
14
  import React from "react";
2
15
  import ReactDomServer from "react-dom/server";
3
16
  import { serializeJson } from "@modern-js/utils/universal/serialize";
4
17
  import ReactHelmet from "react-helmet";
5
18
  import { serializeErrors } from "../../../router/runtime/utils";
6
19
  import helmetReplace from "../helmet";
7
- import {
8
- RenderLevel
9
- } from "../types";
20
+ import { RenderLevel } from "../types";
10
21
  import { time } from "../time";
11
22
  import prefetch from "../../prefetch";
12
23
  import { ROUTER_DATA_JSON_ID, SSR_DATA_JSON_ID } from "../utils";
@@ -35,43 +46,20 @@ const buildTemplateData = (context, data, renderLevel) => {
35
46
  };
36
47
  };
37
48
  class Entry {
38
- constructor(options) {
39
- const { ctx, config } = options;
40
- const {
41
- entryName,
42
- template,
43
- request: { host }
44
- } = ctx;
45
- this.fragments = toFragments(template, entryName);
46
- this.entryName = entryName;
47
- this.host = host;
48
- this.App = options.App;
49
- this.pluginConfig = config;
50
- this.metrics = ctx.metrics;
51
- this.logger = ctx.logger;
52
- this.result = {
53
- renderLevel: RenderLevel.CLIENT_RENDER,
54
- html: "",
55
- chunksMap: {
56
- js: "",
57
- css: ""
58
- }
59
- };
60
- }
61
49
  async renderToHtml(context) {
62
- var _a, _b, _c;
50
+ var _ssrContext_redirection, _ssrContext_redirection1, _ssrContext_redirection2;
63
51
  const ssrContext = context.ssrContext;
64
- if ((_a = ssrContext.redirection) == null ? void 0 : _a.url) {
52
+ if ((_ssrContext_redirection = ssrContext.redirection) === null || _ssrContext_redirection === void 0 ? void 0 : _ssrContext_redirection.url) {
65
53
  return "";
66
54
  }
67
55
  const prefetchData = await this.prefetch(context);
68
- if ((_b = ssrContext.redirection) == null ? void 0 : _b.url) {
56
+ if ((_ssrContext_redirection1 = ssrContext.redirection) === null || _ssrContext_redirection1 === void 0 ? void 0 : _ssrContext_redirection1.url) {
69
57
  return "";
70
58
  }
71
59
  if (this.result.renderLevel >= RenderLevel.SERVER_PREFETCH) {
72
60
  this.result.html = this.renderToString(context);
73
61
  }
74
- if ((_c = ssrContext.redirection) == null ? void 0 : _c.url) {
62
+ if ((_ssrContext_redirection2 = ssrContext.redirection) === null || _ssrContext_redirection2 === void 0 ? void 0 : _ssrContext_redirection2.url) {
75
63
  return "";
76
64
  }
77
65
  const { routerContext } = context;
@@ -80,11 +68,7 @@ class Entry {
80
68
  errors: serializeErrors(routerContext.errors)
81
69
  } : void 0;
82
70
  let html = "";
83
- const templateData = buildTemplateData(
84
- ssrContext,
85
- prefetchData,
86
- this.result.renderLevel
87
- );
71
+ const templateData = buildTemplateData(ssrContext, prefetchData, this.result.renderLevel);
88
72
  const SSRData = this.getSSRDataScript(templateData, routerData);
89
73
  for (const fragment of this.fragments) {
90
74
  if (fragment.isVariable && fragment.content === "SSRDataScript") {
@@ -118,7 +102,9 @@ class Entry {
118
102
  const { ssrContext } = context;
119
103
  try {
120
104
  const App = React.createElement(this.App, {
121
- context: Object.assign(context, { ssr: true })
105
+ context: Object.assign(context, {
106
+ ssr: true
107
+ })
122
108
  });
123
109
  const renderContext = {
124
110
  stats: ssrContext.loadableStats,
@@ -156,7 +142,32 @@ class Entry {
156
142
  SSRDataScript: ssrDataScripts
157
143
  };
158
144
  }
145
+ constructor(options) {
146
+ _define_property(this, "entryName", void 0);
147
+ _define_property(this, "result", void 0);
148
+ _define_property(this, "metrics", void 0);
149
+ _define_property(this, "logger", void 0);
150
+ _define_property(this, "App", void 0);
151
+ _define_property(this, "fragments", void 0);
152
+ _define_property(this, "pluginConfig", void 0);
153
+ _define_property(this, "host", void 0);
154
+ const { ctx, config } = options;
155
+ const { entryName, template, request: { host } } = ctx;
156
+ this.fragments = toFragments(template, entryName);
157
+ this.entryName = entryName;
158
+ this.host = host;
159
+ this.App = options.App;
160
+ this.pluginConfig = config;
161
+ this.metrics = ctx.metrics;
162
+ this.logger = ctx.logger;
163
+ this.result = {
164
+ renderLevel: RenderLevel.CLIENT_RENDER,
165
+ html: "",
166
+ chunksMap: {
167
+ js: "",
168
+ css: ""
169
+ }
170
+ };
171
+ }
159
172
  }
160
- export {
161
- Entry as default
162
- };
173
+ export { Entry as default };
@@ -2,11 +2,7 @@ import { run } from "@modern-js/utils/ssr";
2
2
  import { PreRender } from "../../react/prerender";
3
3
  import { time } from "../time";
4
4
  import SSREntry from "./entry";
5
- const render = ({
6
- App,
7
- context,
8
- config
9
- }) => {
5
+ export const render = ({ App, context, config }) => {
10
6
  const ssrContext = context.ssrContext;
11
7
  return run(ssrContext.request.headers, async () => {
12
8
  const entry = new SSREntry({
@@ -27,6 +23,3 @@ const render = ({
27
23
  return html;
28
24
  });
29
25
  };
30
- export {
31
- render
32
- };
@@ -5,21 +5,18 @@ const extname = (uri) => {
5
5
  if (typeof uri !== "string" || !uri.includes(".")) {
6
6
  return "";
7
7
  }
8
- return `.${uri == null ? void 0 : uri.split(".").pop()}` || "";
8
+ return `.${uri === null || uri === void 0 ? void 0 : uri.split(".").pop()}` || "";
9
9
  };
10
- const toHtml = (jsx, renderer, next) => {
11
- const {
12
- stats,
13
- result: { chunksMap },
14
- host,
15
- config = {}
16
- } = renderer;
10
+ export const toHtml = (jsx, renderer, next) => {
11
+ const { stats, result: { chunksMap }, host, config = {} } = renderer;
17
12
  if (!stats || chunksMap.js) {
18
13
  return next(jsx);
19
14
  }
20
15
  const extractor = new ChunkExtractor({
21
16
  stats,
22
- entrypoints: [renderer.entryName]
17
+ entrypoints: [
18
+ renderer.entryName
19
+ ]
23
20
  });
24
21
  const html = next(extractor.collectChunks(jsx));
25
22
  const chunks = extractor.getChunkAssets(extractor.chunks);
@@ -30,19 +27,12 @@ const toHtml = (jsx, renderer, next) => {
30
27
  const props = [];
31
28
  const { crossorigin } = config;
32
29
  if (crossorigin && isCrossOrigin(v.url, host)) {
33
- props.push(
34
- `crossorigin="${crossorigin === true ? "anonymous" : crossorigin}"`
35
- );
30
+ props.push(`crossorigin="${crossorigin === true ? "anonymous" : crossorigin}"`);
36
31
  }
37
- chunksMap[fileType] += `<script src="${v.url}" ${props.join(
38
- " "
39
- )}></script>`;
32
+ chunksMap[fileType] += `<script src="${v.url}" ${props.join(" ")}></script>`;
40
33
  } else if (fileType === "css") {
41
34
  chunksMap[fileType] += `<link href="${v.url}" rel="stylesheet" />`;
42
35
  }
43
36
  }
44
37
  return html;
45
38
  };
46
- export {
47
- toHtml
48
- };
@@ -1,8 +1,5 @@
1
- function reduce(jsx, renderer, middleware) {
1
+ export function reduce(jsx, renderer, middleware) {
2
2
  let index = 0;
3
3
  const createNext = () => (App) => middleware[index++](App, renderer, createNext());
4
4
  return createNext()(jsx);
5
5
  }
6
- export {
7
- reduce
8
- };
@@ -1,11 +1,8 @@
1
1
  import { ServerStyleSheet } from "styled-components";
2
- const toHtml = (jsx, renderer, next) => {
2
+ export const toHtml = (jsx, renderer, next) => {
3
3
  const sheet = new ServerStyleSheet();
4
4
  const html = next(sheet.collectStyles(jsx));
5
5
  const css = sheet.getStyleTags();
6
6
  renderer.result.chunksMap.css += css;
7
7
  return html;
8
8
  };
9
- export {
10
- toHtml
11
- };