@modern-js/runtime 2.49.3-alpha.0 → 2.49.3

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 (238) hide show
  1. package/dist/cjs/router/runtime/plugin.js +11 -2
  2. package/dist/cjs/router/runtime/plugin.node.js +2 -2
  3. package/dist/esm/router/runtime/plugin.js +2 -2
  4. package/dist/esm/router/runtime/plugin.node.js +2 -2
  5. package/dist/esm-node/router/runtime/plugin.js +11 -2
  6. package/dist/esm-node/router/runtime/plugin.node.js +2 -2
  7. package/dist/types/router/runtime/plugin.d.ts +1 -1
  8. package/dist/types/router/runtime/plugin.node.d.ts +1 -1
  9. package/dist/types/router/runtime/types.d.ts +1 -1
  10. package/package.json +10 -10
  11. package/dist/js/modern/cli/index.js +0 -72
  12. package/dist/js/modern/common.js +0 -4
  13. package/dist/js/modern/config.js +0 -0
  14. package/dist/js/modern/core/app-config.js +0 -10
  15. package/dist/js/modern/core/compatible.js +0 -285
  16. package/dist/js/modern/core/index.js +0 -16
  17. package/dist/js/modern/core/loader/index.js +0 -4
  18. package/dist/js/modern/core/loader/loaderManager.js +0 -165
  19. package/dist/js/modern/core/loader/useLoader.js +0 -114
  20. package/dist/js/modern/core/plugin.js +0 -58
  21. package/dist/js/modern/document/Body.js +0 -23
  22. package/dist/js/modern/document/DocumentContext.js +0 -9
  23. package/dist/js/modern/document/DocumentStructrueContext.js +0 -11
  24. package/dist/js/modern/document/Head.js +0 -27
  25. package/dist/js/modern/document/Html.js +0 -78
  26. package/dist/js/modern/document/Links.js +0 -10
  27. package/dist/js/modern/document/Root.js +0 -33
  28. package/dist/js/modern/document/Script.js +0 -20
  29. package/dist/js/modern/document/Scripts.js +0 -10
  30. package/dist/js/modern/document/cli/index.js +0 -228
  31. package/dist/js/modern/document/constants.js +0 -49
  32. package/dist/js/modern/document/index.js +0 -10
  33. package/dist/js/modern/exports/head.js +0 -6
  34. package/dist/js/modern/exports/loadable.js +0 -6
  35. package/dist/js/modern/exports/server.js +0 -4
  36. package/dist/js/modern/exports/styled.js +0 -6
  37. package/dist/js/modern/index.js +0 -22
  38. package/dist/js/modern/router/cli/index.js +0 -120
  39. package/dist/js/modern/router/index.js +0 -7
  40. package/dist/js/modern/router/runtime/DefaultNotFound.js +0 -14
  41. package/dist/js/modern/router/runtime/index.js +0 -9
  42. package/dist/js/modern/router/runtime/plugin.js +0 -104
  43. package/dist/js/modern/router/runtime/plugin.node.js +0 -149
  44. package/dist/js/modern/router/runtime/server.js +0 -1
  45. package/dist/js/modern/router/runtime/types.js +0 -0
  46. package/dist/js/modern/router/runtime/utils.js +0 -196
  47. package/dist/js/modern/router/runtime/withRouter.js +0 -36
  48. package/dist/js/modern/runtime-context.js +0 -7
  49. package/dist/js/modern/ssr/cli/babel-plugin-ssr-loader-id.js +0 -130
  50. package/dist/js/modern/ssr/cli/index.js +0 -172
  51. package/dist/js/modern/ssr/index.js +0 -159
  52. package/dist/js/modern/ssr/index.node.js +0 -79
  53. package/dist/js/modern/ssr/prefetch.js +0 -69
  54. package/dist/js/modern/ssr/react/index.js +0 -6
  55. package/dist/js/modern/ssr/react/nossr/index.js +0 -14
  56. package/dist/js/modern/ssr/react/prerender/index.js +0 -108
  57. package/dist/js/modern/ssr/react/prerender/type.js +0 -0
  58. package/dist/js/modern/ssr/react/prerender/util.js +0 -96
  59. package/dist/js/modern/ssr/react/withCallback/index.js +0 -15
  60. package/dist/js/modern/ssr/serverRender/helmet.js +0 -44
  61. package/dist/js/modern/ssr/serverRender/index.js +0 -35
  62. package/dist/js/modern/ssr/serverRender/renderToStream/buildTemplate.after.js +0 -36
  63. package/dist/js/modern/ssr/serverRender/renderToStream/buildTemplate.share.js +0 -11
  64. package/dist/js/modern/ssr/serverRender/renderToStream/bulidTemplate.before.js +0 -61
  65. package/dist/js/modern/ssr/serverRender/renderToStream/index.js +0 -58
  66. package/dist/js/modern/ssr/serverRender/renderToStream/loadable.js +0 -24
  67. package/dist/js/modern/ssr/serverRender/renderToStream/renderToPipe.js +0 -94
  68. package/dist/js/modern/ssr/serverRender/renderToStream/styledComponent.js +0 -12
  69. package/dist/js/modern/ssr/serverRender/renderToStream/template.js +0 -22
  70. package/dist/js/modern/ssr/serverRender/renderToStream/type.js +0 -0
  71. package/dist/js/modern/ssr/serverRender/renderToString/entry.js +0 -171
  72. package/dist/js/modern/ssr/serverRender/renderToString/index.js +0 -52
  73. package/dist/js/modern/ssr/serverRender/renderToString/loadable.js +0 -48
  74. package/dist/js/modern/ssr/serverRender/renderToString/reduce.js +0 -8
  75. package/dist/js/modern/ssr/serverRender/renderToString/styledComponent.js +0 -11
  76. package/dist/js/modern/ssr/serverRender/renderToString/template.js +0 -58
  77. package/dist/js/modern/ssr/serverRender/renderToString/type.js +0 -9
  78. package/dist/js/modern/ssr/serverRender/types.js +0 -4
  79. package/dist/js/modern/ssr/serverRender/utils.js +0 -22
  80. package/dist/js/modern/ssr/utils.js +0 -81
  81. package/dist/js/modern/state/cli/index.js +0 -83
  82. package/dist/js/modern/state/index.js +0 -7
  83. package/dist/js/modern/state/plugins.js +0 -13
  84. package/dist/js/modern/state/runtime/index.js +0 -9
  85. package/dist/js/modern/state/runtime/plugin.js +0 -97
  86. package/dist/js/modern/state/types.js +0 -0
  87. package/dist/js/node/cli/index.js +0 -99
  88. package/dist/js/node/common.js +0 -27
  89. package/dist/js/node/config.js +0 -15
  90. package/dist/js/node/core/app-config.js +0 -34
  91. package/dist/js/node/core/compatible.js +0 -312
  92. package/dist/js/node/core/index.js +0 -47
  93. package/dist/js/node/core/loader/index.js +0 -33
  94. package/dist/js/node/core/loader/loaderManager.js +0 -195
  95. package/dist/js/node/core/loader/useLoader.js +0 -132
  96. package/dist/js/node/core/plugin.js +0 -80
  97. package/dist/js/node/document/Body.js +0 -43
  98. package/dist/js/node/document/DocumentContext.js +0 -38
  99. package/dist/js/node/document/DocumentStructrueContext.js +0 -40
  100. package/dist/js/node/document/Head.js +0 -51
  101. package/dist/js/node/document/Html.js +0 -101
  102. package/dist/js/node/document/Links.js +0 -33
  103. package/dist/js/node/document/Root.js +0 -57
  104. package/dist/js/node/document/Script.js +0 -40
  105. package/dist/js/node/document/Scripts.js +0 -33
  106. package/dist/js/node/document/cli/index.js +0 -240
  107. package/dist/js/node/document/constants.js +0 -86
  108. package/dist/js/node/document/index.js +0 -26
  109. package/dist/js/node/exports/head.js +0 -34
  110. package/dist/js/node/exports/loadable.js +0 -34
  111. package/dist/js/node/exports/server.js +0 -27
  112. package/dist/js/node/exports/styled.js +0 -34
  113. package/dist/js/node/index.js +0 -44
  114. package/dist/js/node/router/cli/index.js +0 -135
  115. package/dist/js/node/router/index.js +0 -37
  116. package/dist/js/node/router/runtime/DefaultNotFound.js +0 -37
  117. package/dist/js/node/router/runtime/index.js +0 -33
  118. package/dist/js/node/router/runtime/plugin.js +0 -127
  119. package/dist/js/node/router/runtime/plugin.node.js +0 -175
  120. package/dist/js/node/router/runtime/server.js +0 -17
  121. package/dist/js/node/router/runtime/types.js +0 -15
  122. package/dist/js/node/router/runtime/utils.js +0 -221
  123. package/dist/js/node/router/runtime/withRouter.js +0 -57
  124. package/dist/js/node/runtime-context.js +0 -31
  125. package/dist/js/node/ssr/cli/babel-plugin-ssr-loader-id.js +0 -139
  126. package/dist/js/node/ssr/cli/index.js +0 -190
  127. package/dist/js/node/ssr/index.js +0 -185
  128. package/dist/js/node/ssr/index.node.js +0 -107
  129. package/dist/js/node/ssr/prefetch.js +0 -90
  130. package/dist/js/node/ssr/react/index.js +0 -30
  131. package/dist/js/node/ssr/react/nossr/index.js +0 -43
  132. package/dist/js/node/ssr/react/prerender/index.js +0 -130
  133. package/dist/js/node/ssr/react/prerender/type.js +0 -15
  134. package/dist/js/node/ssr/react/prerender/util.js +0 -123
  135. package/dist/js/node/ssr/react/withCallback/index.js +0 -38
  136. package/dist/js/node/ssr/serverRender/helmet.js +0 -65
  137. package/dist/js/node/ssr/serverRender/index.js +0 -56
  138. package/dist/js/node/ssr/serverRender/renderToStream/buildTemplate.after.js +0 -65
  139. package/dist/js/node/ssr/serverRender/renderToStream/buildTemplate.share.js +0 -35
  140. package/dist/js/node/ssr/serverRender/renderToStream/bulidTemplate.before.js +0 -87
  141. package/dist/js/node/ssr/serverRender/renderToStream/index.js +0 -87
  142. package/dist/js/node/ssr/serverRender/renderToStream/loadable.js +0 -47
  143. package/dist/js/node/ssr/serverRender/renderToStream/renderToPipe.js +0 -111
  144. package/dist/js/node/ssr/serverRender/renderToStream/styledComponent.js +0 -35
  145. package/dist/js/node/ssr/serverRender/renderToStream/template.js +0 -45
  146. package/dist/js/node/ssr/serverRender/renderToStream/type.js +0 -15
  147. package/dist/js/node/ssr/serverRender/renderToString/entry.js +0 -196
  148. package/dist/js/node/ssr/serverRender/renderToString/index.js +0 -81
  149. package/dist/js/node/ssr/serverRender/renderToString/loadable.js +0 -71
  150. package/dist/js/node/ssr/serverRender/renderToString/reduce.js +0 -31
  151. package/dist/js/node/ssr/serverRender/renderToString/styledComponent.js +0 -34
  152. package/dist/js/node/ssr/serverRender/renderToString/template.js +0 -82
  153. package/dist/js/node/ssr/serverRender/renderToString/type.js +0 -32
  154. package/dist/js/node/ssr/serverRender/types.js +0 -27
  155. package/dist/js/node/ssr/serverRender/utils.js +0 -46
  156. package/dist/js/node/ssr/utils.js +0 -106
  157. package/dist/js/node/state/cli/index.js +0 -100
  158. package/dist/js/node/state/index.js +0 -37
  159. package/dist/js/node/state/plugins.js +0 -45
  160. package/dist/js/node/state/runtime/index.js +0 -40
  161. package/dist/js/node/state/runtime/plugin.js +0 -121
  162. package/dist/js/node/state/types.js +0 -15
  163. package/dist/js/treeshaking/cli/index.js +0 -186
  164. package/dist/js/treeshaking/common.js +0 -4
  165. package/dist/js/treeshaking/config.js +0 -1
  166. package/dist/js/treeshaking/core/app-config.js +0 -9
  167. package/dist/js/treeshaking/core/compatible.js +0 -485
  168. package/dist/js/treeshaking/core/index.js +0 -7
  169. package/dist/js/treeshaking/core/loader/index.js +0 -2
  170. package/dist/js/treeshaking/core/loader/loaderManager.js +0 -406
  171. package/dist/js/treeshaking/core/loader/useLoader.js +0 -188
  172. package/dist/js/treeshaking/core/plugin.js +0 -176
  173. package/dist/js/treeshaking/document/Body.js +0 -18
  174. package/dist/js/treeshaking/document/DocumentContext.js +0 -7
  175. package/dist/js/treeshaking/document/DocumentStructrueContext.js +0 -9
  176. package/dist/js/treeshaking/document/Head.js +0 -24
  177. package/dist/js/treeshaking/document/Html.js +0 -99
  178. package/dist/js/treeshaking/document/Links.js +0 -8
  179. package/dist/js/treeshaking/document/Root.js +0 -26
  180. package/dist/js/treeshaking/document/Script.js +0 -15
  181. package/dist/js/treeshaking/document/Scripts.js +0 -8
  182. package/dist/js/treeshaking/document/cli/index.js +0 -393
  183. package/dist/js/treeshaking/document/constants.js +0 -35
  184. package/dist/js/treeshaking/document/index.js +0 -10
  185. package/dist/js/treeshaking/exports/head.js +0 -4
  186. package/dist/js/treeshaking/exports/loadable.js +0 -4
  187. package/dist/js/treeshaking/exports/server.js +0 -4
  188. package/dist/js/treeshaking/exports/styled.js +0 -4
  189. package/dist/js/treeshaking/index.js +0 -3
  190. package/dist/js/treeshaking/router/cli/index.js +0 -148
  191. package/dist/js/treeshaking/router/index.js +0 -4
  192. package/dist/js/treeshaking/router/runtime/DefaultNotFound.js +0 -14
  193. package/dist/js/treeshaking/router/runtime/index.js +0 -6
  194. package/dist/js/treeshaking/router/runtime/plugin.js +0 -132
  195. package/dist/js/treeshaking/router/runtime/plugin.node.js +0 -390
  196. package/dist/js/treeshaking/router/runtime/server.js +0 -1
  197. package/dist/js/treeshaking/router/runtime/types.js +0 -1
  198. package/dist/js/treeshaking/router/runtime/utils.js +0 -260
  199. package/dist/js/treeshaking/router/runtime/withRouter.js +0 -67
  200. package/dist/js/treeshaking/runtime-context.js +0 -4
  201. package/dist/js/treeshaking/ssr/cli/babel-plugin-ssr-loader-id.js +0 -122
  202. package/dist/js/treeshaking/ssr/cli/index.js +0 -217
  203. package/dist/js/treeshaking/ssr/index.js +0 -315
  204. package/dist/js/treeshaking/ssr/index.node.js +0 -240
  205. package/dist/js/treeshaking/ssr/prefetch.js +0 -199
  206. package/dist/js/treeshaking/ssr/react/index.js +0 -3
  207. package/dist/js/treeshaking/ssr/react/nossr/index.js +0 -58
  208. package/dist/js/treeshaking/ssr/react/prerender/index.js +0 -237
  209. package/dist/js/treeshaking/ssr/react/prerender/type.js +0 -1
  210. package/dist/js/treeshaking/ssr/react/prerender/util.js +0 -108
  211. package/dist/js/treeshaking/ssr/react/withCallback/index.js +0 -16
  212. package/dist/js/treeshaking/ssr/serverRender/helmet.js +0 -42
  213. package/dist/js/treeshaking/ssr/serverRender/index.js +0 -169
  214. package/dist/js/treeshaking/ssr/serverRender/renderToStream/buildTemplate.after.js +0 -34
  215. package/dist/js/treeshaking/ssr/serverRender/renderToStream/buildTemplate.share.js +0 -7
  216. package/dist/js/treeshaking/ssr/serverRender/renderToStream/bulidTemplate.before.js +0 -115
  217. package/dist/js/treeshaking/ssr/serverRender/renderToStream/index.js +0 -165
  218. package/dist/js/treeshaking/ssr/serverRender/renderToStream/loadable.js +0 -22
  219. package/dist/js/treeshaking/ssr/serverRender/renderToStream/renderToPipe.js +0 -119
  220. package/dist/js/treeshaking/ssr/serverRender/renderToStream/styledComponent.js +0 -11
  221. package/dist/js/treeshaking/ssr/serverRender/renderToStream/template.js +0 -63
  222. package/dist/js/treeshaking/ssr/serverRender/renderToStream/type.js +0 -1
  223. package/dist/js/treeshaking/ssr/serverRender/renderToString/entry.js +0 -393
  224. package/dist/js/treeshaking/ssr/serverRender/renderToString/index.js +0 -165
  225. package/dist/js/treeshaking/ssr/serverRender/renderToString/loadable.js +0 -56
  226. package/dist/js/treeshaking/ssr/serverRender/renderToString/reduce.js +0 -10
  227. package/dist/js/treeshaking/ssr/serverRender/renderToString/styledComponent.js +0 -9
  228. package/dist/js/treeshaking/ssr/serverRender/renderToString/template.js +0 -156
  229. package/dist/js/treeshaking/ssr/serverRender/renderToString/type.js +0 -7
  230. package/dist/js/treeshaking/ssr/serverRender/types.js +0 -2
  231. package/dist/js/treeshaking/ssr/serverRender/utils.js +0 -69
  232. package/dist/js/treeshaking/ssr/utils.js +0 -134
  233. package/dist/js/treeshaking/state/cli/index.js +0 -71
  234. package/dist/js/treeshaking/state/index.js +0 -4
  235. package/dist/js/treeshaking/state/plugins.js +0 -14
  236. package/dist/js/treeshaking/state/runtime/index.js +0 -5
  237. package/dist/js/treeshaking/state/runtime/plugin.js +0 -198
  238. package/dist/js/treeshaking/state/types.js +0 -1
@@ -1,61 +0,0 @@
1
- import ReactHelmet from "react-helmet";
2
- import { matchRoutes } from "react-router-dom";
3
- import helmetReplace from "../helmet";
4
- import {
5
- HEAD_REG_EXP,
6
- buildTemplate
7
- } from "./buildTemplate.share";
8
- const CSS_CHUNKS_PLACEHOLDER = "<!--<?- chunksMap.css ?>-->";
9
- function getHeadTemplate(beforeEntryTemplate, context) {
10
- const callbacks = [
11
- (headTemplate2) => {
12
- const helmetData = ReactHelmet.renderStatic();
13
- return helmetData ? helmetReplace(headTemplate2, helmetData) : headTemplate2;
14
- },
15
- injectCss
16
- ];
17
- const [headTemplate = ""] = beforeEntryTemplate.match(HEAD_REG_EXP) || [];
18
- if (!headTemplate.length) {
19
- return "";
20
- }
21
- return buildTemplate(headTemplate, callbacks);
22
- function injectCss(headTemplate2) {
23
- return headTemplate2.replace(CSS_CHUNKS_PLACEHOLDER, getCssChunks());
24
- function getCssChunks() {
25
- const { routeManifest, routerContext, routes } = context;
26
- if (!routeManifest || !routerContext || !routes) {
27
- return "";
28
- }
29
- const { routeAssets } = routeManifest;
30
- const cssChunks = [];
31
- const matches = matchRoutes(routes, routerContext.location);
32
- matches == null ? void 0 : matches.forEach((match, index) => {
33
- if (!index) {
34
- return;
35
- }
36
- const routeId = match.route.id;
37
- if (routeId) {
38
- const routeManifest2 = routeAssets[routeId];
39
- if (routeManifest2) {
40
- const { assets = [] } = routeManifest2;
41
- const _cssChunks = assets.filter(
42
- (asset) => asset == null ? void 0 : asset.endsWith(".css")
43
- );
44
- cssChunks.push(..._cssChunks);
45
- }
46
- }
47
- });
48
- const styleLinks = cssChunks.map((chunk) => {
49
- return `<link href="${chunk}" rel="stylesheet" />`;
50
- });
51
- return `${styleLinks.join("")}`;
52
- }
53
- }
54
- }
55
- function buildShellBeforeTemplate(beforeAppTemplate, context) {
56
- const headTemplate = getHeadTemplate(beforeAppTemplate, context);
57
- return beforeAppTemplate.replace(HEAD_REG_EXP, headTemplate);
58
- }
59
- export {
60
- buildShellBeforeTemplate
61
- };
@@ -1,58 +0,0 @@
1
- var __async = (__this, __arguments, generator) => {
2
- return new Promise((resolve, reject) => {
3
- var fulfilled = (value) => {
4
- try {
5
- step(generator.next(value));
6
- } catch (e) {
7
- reject(e);
8
- }
9
- };
10
- var rejected = (value) => {
11
- try {
12
- step(generator.throw(value));
13
- } catch (e) {
14
- reject(e);
15
- }
16
- };
17
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
18
- step((generator = generator.apply(__this, __arguments)).next());
19
- });
20
- };
21
- import { createElement } from "react";
22
- import { run } from "@modern-js/utils/ssr";
23
- import { PreRender } from "../../react/prerender";
24
- import { time } from "../utils";
25
- import renderToPipe from "./renderToPipe";
26
- const render = ({ App, context }) => {
27
- const { ssrContext } = context;
28
- if (!ssrContext) {
29
- throw new Error(
30
- 'The "ssrContext" must not be undefined, but received undefined'
31
- );
32
- }
33
- return run(ssrContext.request.headers, () => __async(void 0, null, function* () {
34
- const end = time();
35
- const rootElement = createElement(App, {
36
- context: Object.assign(context || {}, {
37
- ssr: true
38
- })
39
- });
40
- const pipe = renderToPipe(rootElement, context, {
41
- onShellReady() {
42
- const cacheConfig = PreRender.config();
43
- if (cacheConfig) {
44
- ssrContext.cacheConfig = cacheConfig;
45
- }
46
- },
47
- onAllReady() {
48
- const cost = end();
49
- ssrContext.logger.debug("App Render To HTML cost = %d ms", cost);
50
- ssrContext.metrics.emitTimer("app.render.html.cost", cost);
51
- }
52
- });
53
- return pipe;
54
- }));
55
- };
56
- export {
57
- render
58
- };
@@ -1,24 +0,0 @@
1
- import { ChunkExtractor } from "@loadable/server";
2
- function getLoadableChunks({
3
- context,
4
- jsx
5
- }) {
6
- const { loadableStats, entryName } = context.ssrContext;
7
- if (!loadableStats) {
8
- return {
9
- jsx
10
- };
11
- }
12
- const extractor = new ChunkExtractor({
13
- stats: loadableStats,
14
- entrypoints: [entryName]
15
- });
16
- const collectedJsx = extractor.collectChunks(jsx);
17
- return {
18
- jsx: collectedJsx,
19
- chunkExtractor: extractor
20
- };
21
- }
22
- export {
23
- getLoadableChunks
24
- };
@@ -1,94 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __defProps = Object.defineProperties;
3
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
- var __spreadValues = (a, b) => {
9
- for (var prop in b || (b = {}))
10
- if (__hasOwnProp.call(b, prop))
11
- __defNormalProp(a, prop, b[prop]);
12
- if (__getOwnPropSymbols)
13
- for (var prop of __getOwnPropSymbols(b)) {
14
- if (__propIsEnum.call(b, prop))
15
- __defNormalProp(a, prop, b[prop]);
16
- }
17
- return a;
18
- };
19
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
- import { Transform } from "stream";
21
- import {
22
- renderToPipeableStream
23
- } from "react-dom/server";
24
- import { RenderLevel } from "../types";
25
- import { getTemplates } from "./template";
26
- function renderToPipe(rootElement, context, options) {
27
- let isShellStream = true;
28
- const { ssrContext } = context;
29
- const forUserPipe = (stream) => {
30
- return new Promise((resolve) => {
31
- const { pipe } = renderToPipeableStream(rootElement, __spreadProps(__spreadValues({}, options), {
32
- onShellReady() {
33
- var _a;
34
- const { shellAfter, shellBefore } = getTemplates(
35
- context,
36
- RenderLevel.SERVER_RENDER
37
- );
38
- (_a = options == null ? void 0 : options.onShellReady) == null ? void 0 : _a.call(options);
39
- const injectableTransform = new Transform({
40
- transform(chunk, _encoding, callback) {
41
- try {
42
- if (isShellStream) {
43
- this.push(joinChunk(shellBefore, chunk, shellAfter));
44
- isShellStream = false;
45
- } else {
46
- this.push(chunk);
47
- }
48
- callback();
49
- } catch (e) {
50
- if (e instanceof Error) {
51
- callback(e);
52
- } else {
53
- callback(new Error("Received unkown error when streaming"));
54
- }
55
- }
56
- }
57
- });
58
- resolve(pipe(injectableTransform).pipe(stream));
59
- },
60
- onShellError(error) {
61
- var _a;
62
- ssrContext.metrics.emitCounter(
63
- "app.render.streaming.shell.error",
64
- 1
65
- );
66
- const { shellAfter, shellBefore } = getTemplates(
67
- context,
68
- RenderLevel.CLIENT_RENDER
69
- );
70
- const fallbackHtml = `${shellBefore}${shellAfter}`;
71
- resolve(fallbackHtml);
72
- (_a = options == null ? void 0 : options.onShellError) == null ? void 0 : _a.call(options, error);
73
- },
74
- onError(error) {
75
- var _a;
76
- ssrContext.logger.error(
77
- "An error occurs during streaming SSR",
78
- error
79
- );
80
- ssrContext.metrics.emitCounter("app.render.streaming.error", 1);
81
- (_a = options == null ? void 0 : options.onError) == null ? void 0 : _a.call(options, error);
82
- }
83
- }));
84
- });
85
- };
86
- return forUserPipe;
87
- function joinChunk(before = "", chunk, after = "") {
88
- return `${before}${chunk.toString()}${after}`;
89
- }
90
- }
91
- var renderToPipe_default = renderToPipe;
92
- export {
93
- renderToPipe_default as default
94
- };
@@ -1,12 +0,0 @@
1
- import { ServerStyleSheet } from "styled-components";
2
- function getStyledComponentCss({ jsx }) {
3
- const sheet = new ServerStyleSheet();
4
- const collectedJsx = sheet.collectStyles(jsx);
5
- return {
6
- styleSheet: sheet,
7
- jsx: collectedJsx
8
- };
9
- }
10
- export {
11
- getStyledComponentCss
12
- };
@@ -1,22 +0,0 @@
1
- import { buildShellAfterTemplate } from "./buildTemplate.after";
2
- import { buildShellBeforeTemplate } from "./bulidTemplate.before";
3
- const HTML_SEPARATOR = "<!--<?- html ?>-->";
4
- const getTemplates = (context, renderLevel) => {
5
- const { ssrContext } = context;
6
- const [beforeAppTemplate = "", afterAppHtmlTemplate = ""] = ssrContext.template.split(HTML_SEPARATOR) || [];
7
- const builtBeforeTemplate = buildShellBeforeTemplate(
8
- beforeAppTemplate,
9
- context
10
- );
11
- const builtAfterTemplate = buildShellAfterTemplate(afterAppHtmlTemplate, {
12
- ssrContext,
13
- renderLevel
14
- });
15
- return {
16
- shellBefore: builtBeforeTemplate,
17
- shellAfter: builtAfterTemplate
18
- };
19
- };
20
- export {
21
- getTemplates
22
- };
@@ -1,171 +0,0 @@
1
- var __async = (__this, __arguments, generator) => {
2
- return new Promise((resolve, reject) => {
3
- var fulfilled = (value) => {
4
- try {
5
- step(generator.next(value));
6
- } catch (e) {
7
- reject(e);
8
- }
9
- };
10
- var rejected = (value) => {
11
- try {
12
- step(generator.throw(value));
13
- } catch (e) {
14
- reject(e);
15
- }
16
- };
17
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
18
- step((generator = generator.apply(__this, __arguments)).next());
19
- });
20
- };
21
- import React from "react";
22
- import ReactDomServer from "react-dom/server";
23
- import serialize from "serialize-javascript";
24
- import ReactHelmet from "react-helmet";
25
- import helmetReplace from "../helmet";
26
- import {
27
- RenderLevel
28
- } from "../types";
29
- import { time } from "../utils";
30
- import prefetch from "../../prefetch";
31
- import { toFragments } from "./template";
32
- import { reduce } from "./reduce";
33
- import * as loadableRenderer from "./loadable";
34
- import * as styledComponentRenderer from "./styledComponent";
35
- const buildTemplateData = (context, data, renderLevel) => {
36
- const { request } = context;
37
- return {
38
- data,
39
- context: {
40
- request: {
41
- params: request.params,
42
- query: request.query,
43
- pathname: request.pathname,
44
- host: request.host,
45
- url: request.url,
46
- headers: request.headers,
47
- cookieMap: request.cookieMap
48
- }
49
- },
50
- renderLevel
51
- };
52
- };
53
- class Entry {
54
- constructor(options) {
55
- const { ctx, config } = options;
56
- const {
57
- entryName,
58
- template,
59
- request: { host }
60
- } = ctx;
61
- this.fragments = toFragments(template, entryName);
62
- this.entryName = entryName;
63
- this.host = host;
64
- this.App = options.App;
65
- this.pluginConfig = config;
66
- this.metrics = ctx.metrics;
67
- this.logger = ctx.logger;
68
- this.result = {
69
- renderLevel: RenderLevel.CLIENT_RENDER,
70
- html: "",
71
- chunksMap: {
72
- js: "",
73
- css: ""
74
- }
75
- };
76
- }
77
- renderToHtml(context) {
78
- return __async(this, null, function* () {
79
- const ssrContext = context.ssrContext;
80
- if (ssrContext.redirection.url) {
81
- return "";
82
- }
83
- const prefetchData = yield this.prefetch(context);
84
- if (ssrContext.redirection.url) {
85
- return "";
86
- }
87
- if (this.result.renderLevel >= RenderLevel.SERVER_PREFETCH) {
88
- this.result.html = this.renderToString(context);
89
- }
90
- if (ssrContext.redirection.url) {
91
- return "";
92
- }
93
- let html = "";
94
- const templateData = buildTemplateData(
95
- ssrContext,
96
- prefetchData,
97
- this.result.renderLevel
98
- );
99
- const SSRData = this.getSSRDataScript(templateData);
100
- for (const fragment of this.fragments) {
101
- if (fragment.isVariable && fragment.content === "SSRDataScript") {
102
- html += fragment.getValue(SSRData);
103
- } else {
104
- html += fragment.getValue(this.result);
105
- }
106
- }
107
- const helmetData = ReactHelmet.renderStatic();
108
- return helmetData ? helmetReplace(html, helmetData) : html;
109
- });
110
- }
111
- prefetch(context) {
112
- return __async(this, null, function* () {
113
- let prefetchData;
114
- const end = time();
115
- try {
116
- prefetchData = yield prefetch(this.App, context);
117
- this.result.renderLevel = RenderLevel.SERVER_PREFETCH;
118
- const prefetchCost = end();
119
- this.logger.debug(`App Prefetch cost = %d ms`, prefetchCost);
120
- this.metrics.emitTimer("app.prefetch.cost", prefetchCost);
121
- } catch (e) {
122
- this.result.renderLevel = RenderLevel.CLIENT_RENDER;
123
- this.logger.error("App Prefetch Render", e);
124
- this.metrics.emitCounter("app.prefetch.render.error", 1);
125
- }
126
- return prefetchData || {};
127
- });
128
- }
129
- renderToString(context) {
130
- let html = "";
131
- const end = time();
132
- const { ssrContext } = context;
133
- try {
134
- const App = React.createElement(this.App, {
135
- context: Object.assign(context, { ssr: true })
136
- });
137
- const renderContext = {
138
- stats: ssrContext.loadableStats,
139
- host: this.host,
140
- result: this.result,
141
- entryName: this.entryName,
142
- config: this.pluginConfig
143
- };
144
- html = reduce(App, renderContext, [
145
- styledComponentRenderer.toHtml,
146
- loadableRenderer.toHtml,
147
- (jsx) => ReactDomServer.renderToString(jsx)
148
- ]);
149
- const cost = end();
150
- this.logger.debug("App Render To HTML cost = %d ms", cost);
151
- this.metrics.emitTimer("app.render.html.cost", cost);
152
- this.result.renderLevel = RenderLevel.SERVER_RENDER;
153
- } catch (e) {
154
- this.logger.error("App Render To HTML", e);
155
- this.metrics.emitCounter("app.render.html.error", 1);
156
- }
157
- return html;
158
- }
159
- getSSRDataScript(templateData) {
160
- return {
161
- SSRDataScript: `
162
- <script>window._SSR_DATA = ${serialize(templateData, {
163
- isJSON: true
164
- })}<\/script>
165
- `
166
- };
167
- }
168
- }
169
- export {
170
- Entry as default
171
- };
@@ -1,52 +0,0 @@
1
- var __async = (__this, __arguments, generator) => {
2
- return new Promise((resolve, reject) => {
3
- var fulfilled = (value) => {
4
- try {
5
- step(generator.next(value));
6
- } catch (e) {
7
- reject(e);
8
- }
9
- };
10
- var rejected = (value) => {
11
- try {
12
- step(generator.throw(value));
13
- } catch (e) {
14
- reject(e);
15
- }
16
- };
17
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
18
- step((generator = generator.apply(__this, __arguments)).next());
19
- });
20
- };
21
- import { run } from "@modern-js/utils/ssr";
22
- import { PreRender } from "../../react/prerender";
23
- import { time } from "../utils";
24
- import SSREntry from "./entry";
25
- const render = ({
26
- App,
27
- context,
28
- config
29
- }) => {
30
- const ssrContext = context.ssrContext;
31
- return run(ssrContext.request.headers, () => __async(void 0, null, function* () {
32
- const entry = new SSREntry({
33
- ctx: ssrContext,
34
- App,
35
- config
36
- });
37
- entry.metrics.emitCounter("app.visit.count", 1);
38
- const end = time();
39
- const html = yield entry.renderToHtml(context);
40
- const cost = end();
41
- entry.logger.info("App Render Total cost = %d ms", cost);
42
- entry.metrics.emitTimer("app.render.cost", cost);
43
- const cacheConfig = PreRender.config();
44
- if (cacheConfig) {
45
- context.ssrContext.cacheConfig = cacheConfig;
46
- }
47
- return html;
48
- }));
49
- };
50
- export {
51
- render
52
- };
@@ -1,48 +0,0 @@
1
- import { ChunkExtractor } from "@loadable/server";
2
- import { isCrossOrigin } from "../../utils";
3
- import { getLoadableScripts } from "../utils";
4
- const extname = (uri) => {
5
- if (typeof uri !== "string" || !uri.includes(".")) {
6
- return "";
7
- }
8
- return `.${uri == null ? void 0 : uri.split(".").pop()}` || "";
9
- };
10
- const toHtml = (jsx, renderer, next) => {
11
- const {
12
- stats,
13
- result: { chunksMap },
14
- host,
15
- config = {}
16
- } = renderer;
17
- if (!stats || chunksMap.js) {
18
- return next(jsx);
19
- }
20
- const extractor = new ChunkExtractor({
21
- stats,
22
- entrypoints: [renderer.entryName]
23
- });
24
- const html = next(extractor.collectChunks(jsx));
25
- const chunks = extractor.getChunkAssets(extractor.chunks);
26
- chunksMap.js = (chunksMap.js || "") + getLoadableScripts(extractor);
27
- for (const v of chunks) {
28
- const fileType = extname(v.url).slice(1);
29
- if (fileType === "js") {
30
- const props = [];
31
- const { crossorigin } = config;
32
- if (crossorigin && isCrossOrigin(v.url, host)) {
33
- props.push(
34
- `crossorigin="${crossorigin === true ? "anonymous" : crossorigin}"`
35
- );
36
- }
37
- chunksMap[fileType] += `<script src="${v.url}" ${props.join(
38
- " "
39
- )}><\/script>`;
40
- } else if (fileType === "css") {
41
- chunksMap[fileType] += `<link href="${v.url}" rel="stylesheet" />`;
42
- }
43
- }
44
- return html;
45
- };
46
- export {
47
- toHtml
48
- };
@@ -1,8 +0,0 @@
1
- function reduce(jsx, renderer, middleware) {
2
- let index = 0;
3
- const createNext = () => (App) => middleware[index++](App, renderer, createNext());
4
- return createNext()(jsx);
5
- }
6
- export {
7
- reduce
8
- };
@@ -1,11 +0,0 @@
1
- import { ServerStyleSheet } from "styled-components";
2
- const toHtml = (jsx, renderer, next) => {
3
- const sheet = new ServerStyleSheet();
4
- const html = next(sheet.collectStyles(jsx));
5
- const css = sheet.getStyleTags();
6
- renderer.result.chunksMap.css += css;
7
- return html;
8
- };
9
- export {
10
- toHtml
11
- };
@@ -1,58 +0,0 @@
1
- const VARIABLE_REG_EXP = /<!--<\?([-=+])\s*(.*?)\s*\?>-->/;
2
- const VARIABLE_SPLITTER = /(<!--<\?.*?\?>-->)/;
3
- const ENCODE_HTML_RULES = {
4
- "&": "&amp;",
5
- "<": "&lt;",
6
- ">": "&gt;",
7
- '"': "&#34;",
8
- "'": "&#39;"
9
- };
10
- const MATCH_HTML = /[&<>'"]/g;
11
- function encodeChar(c) {
12
- return ENCODE_HTML_RULES[c] || c;
13
- }
14
- function escape(str) {
15
- return str.replace(MATCH_HTML, encodeChar);
16
- }
17
- const _Fragment = class {
18
- constructor(template) {
19
- const match = VARIABLE_REG_EXP.exec(template);
20
- if (match) {
21
- const [, filterFlag, content] = match;
22
- this.isVariable = true;
23
- this.content = content;
24
- this.filters = [_Fragment.filterMap[filterFlag]];
25
- this.path = content.replace(/\[['"](.*?)['"]\]/g, ".$1").split(".");
26
- } else {
27
- this.isVariable = false;
28
- this.content = template;
29
- this.filters = [];
30
- this.path = [];
31
- }
32
- }
33
- getValue(data) {
34
- if (this.isVariable) {
35
- const value = this.path.reduce((p, n) => p != null ? p[n] : p, data);
36
- return this.filters.reduce((p, n) => n(p), value != null ? value : "");
37
- }
38
- return this.content;
39
- }
40
- };
41
- let Fragment = _Fragment;
42
- Fragment.filterMap = {
43
- "=": escape,
44
- "-": (v) => v
45
- };
46
- const fragmentListMap = {};
47
- function toFragments(template, entryName) {
48
- if (fragmentListMap[entryName]) {
49
- return fragmentListMap[entryName];
50
- }
51
- const fragmentList = template.split(VARIABLE_SPLITTER).filter((v) => Boolean(v)).map((v) => new Fragment(v));
52
- fragmentListMap[entryName] = fragmentList;
53
- return fragmentList;
54
- }
55
- export {
56
- Fragment,
57
- toFragments
58
- };
@@ -1,9 +0,0 @@
1
- var RenderLevel = /* @__PURE__ */ ((RenderLevel2) => {
2
- RenderLevel2[RenderLevel2["CLIENT_RENDER"] = 0] = "CLIENT_RENDER";
3
- RenderLevel2[RenderLevel2["SERVER_PREFETCH"] = 1] = "SERVER_PREFETCH";
4
- RenderLevel2[RenderLevel2["SERVER_RENDER"] = 2] = "SERVER_RENDER";
5
- return RenderLevel2;
6
- })(RenderLevel || {});
7
- export {
8
- RenderLevel
9
- };
@@ -1,4 +0,0 @@
1
- import { RenderLevel } from "./renderToString/type";
2
- export {
3
- RenderLevel
4
- };
@@ -1,22 +0,0 @@
1
- function getLoadableScripts(extractor) {
2
- const check = (scripts2) => (scripts2 || "").includes("__LOADABLE_REQUIRED_CHUNKS___ext");
3
- const scripts = extractor.getScriptTags();
4
- if (!check(scripts)) {
5
- return "";
6
- }
7
- return scripts.split("<\/script>").slice(0, 2).map((i) => `${i}<\/script>`).join("");
8
- }
9
- const getLatency = (hrtime) => {
10
- const [s, ns] = process.hrtime(hrtime);
11
- return s * 1e3 + ns / 1e6;
12
- };
13
- const time = () => {
14
- const hrtime = process.hrtime();
15
- return () => {
16
- return getLatency(hrtime);
17
- };
18
- };
19
- export {
20
- getLoadableScripts,
21
- time
22
- };