@modern-js/runtime 1.21.5 → 2.0.0-beta.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 (256) hide show
  1. package/CHANGELOG.md +117 -18
  2. package/dist/js/modern/cli/index.js +3 -5
  3. package/dist/js/modern/core/app-config.js +2 -1
  4. package/dist/js/modern/core/compatible.js +47 -48
  5. package/dist/js/modern/core/index.js +4 -3
  6. package/dist/js/modern/core/loader/loaderManager.js +12 -34
  7. package/dist/js/modern/core/loader/useLoader.js +8 -26
  8. package/dist/js/modern/core/plugin.js +6 -28
  9. package/dist/js/modern/document/Body.js +17 -0
  10. package/dist/js/modern/document/DocumentContext.js +6 -0
  11. package/dist/js/modern/document/DocumentStructrueContext.js +7 -0
  12. package/dist/js/modern/document/Head.js +24 -0
  13. package/dist/js/modern/document/Html.js +92 -0
  14. package/dist/js/modern/document/Root.js +31 -0
  15. package/dist/js/modern/document/Scripts.js +10 -0
  16. package/dist/js/modern/document/cli/index.js +130 -0
  17. package/dist/js/modern/document/constants.js +19 -0
  18. package/dist/js/modern/document/index.js +8 -0
  19. package/dist/js/modern/index.js +2 -1
  20. package/dist/js/modern/router/cli/index.js +20 -20
  21. package/dist/js/modern/router/runtime/index.js +1 -1
  22. package/dist/js/modern/router/runtime/plugin.js +25 -52
  23. package/dist/js/modern/router/runtime/plugin.node.js +137 -0
  24. package/dist/js/modern/router/runtime/root/index.js +19 -0
  25. package/dist/js/modern/router/runtime/root/load.js +61 -0
  26. package/dist/js/modern/router/runtime/types.js +1 -0
  27. package/dist/js/modern/router/runtime/utils.js +99 -58
  28. package/dist/js/modern/router/runtime/withRouter.js +20 -0
  29. package/dist/js/modern/runtime-context.js +2 -1
  30. package/dist/js/modern/ssr/cli/index.js +35 -17
  31. package/dist/js/modern/ssr/index.js +64 -51
  32. package/dist/js/modern/ssr/index.node.js +6 -15
  33. package/dist/js/modern/ssr/prefetch.js +0 -7
  34. package/dist/js/modern/ssr/react/prerender/index.js +2 -23
  35. package/dist/js/modern/ssr/react/prerender/util.js +2 -17
  36. package/dist/js/modern/ssr/react/withCallback/index.js +0 -1
  37. package/dist/js/modern/ssr/serverRender/helmet.js +12 -20
  38. package/dist/js/modern/ssr/serverRender/index.js +12 -27
  39. package/dist/js/modern/ssr/serverRender/renderToStream/buildTemplate.after.js +38 -0
  40. package/dist/js/modern/ssr/serverRender/renderToStream/buildTemplate.share.js +5 -0
  41. package/dist/js/modern/ssr/serverRender/renderToStream/bulidTemplate.before.js +58 -0
  42. package/dist/js/modern/ssr/serverRender/renderToStream/index.js +40 -0
  43. package/dist/js/modern/ssr/serverRender/renderToStream/loadable.js +24 -0
  44. package/dist/js/modern/ssr/serverRender/renderToStream/renderToPipe.js +72 -0
  45. package/dist/js/modern/ssr/serverRender/renderToStream/styledComponent.js +11 -0
  46. package/dist/js/modern/ssr/serverRender/renderToStream/template.js +18 -0
  47. package/dist/js/modern/ssr/serverRender/renderToStream/type.js +0 -0
  48. package/dist/js/modern/ssr/serverRender/{entry.js → renderToString/entry.js} +6 -40
  49. package/dist/js/modern/ssr/serverRender/renderToString/index.js +29 -0
  50. package/dist/js/modern/ssr/serverRender/{loadable.js → renderToString/loadable.js} +2 -24
  51. package/dist/js/modern/ssr/serverRender/{reduce.js → renderToString/reduce.js} +0 -2
  52. package/dist/js/modern/ssr/serverRender/{styledComponent.js → renderToString/styledComponent.js} +0 -0
  53. package/dist/js/modern/ssr/serverRender/{template.js → renderToString/template.js} +0 -15
  54. package/dist/js/modern/ssr/serverRender/{type.js → renderToString/type.js} +0 -2
  55. package/dist/js/modern/ssr/serverRender/types.js +2 -0
  56. package/dist/js/modern/ssr/serverRender/utils.js +20 -0
  57. package/dist/js/modern/ssr/utils.js +8 -13
  58. package/dist/js/modern/state/cli/index.js +0 -10
  59. package/dist/js/modern/state/runtime/plugin.js +1 -14
  60. package/dist/js/node/cli/index.js +3 -13
  61. package/dist/js/node/common.js +0 -2
  62. package/dist/js/node/core/app-config.js +2 -5
  63. package/dist/js/node/core/compatible.js +47 -66
  64. package/dist/js/node/core/index.js +8 -17
  65. package/dist/js/node/core/loader/index.js +0 -2
  66. package/dist/js/node/core/loader/loaderManager.js +12 -37
  67. package/dist/js/node/core/loader/useLoader.js +8 -31
  68. package/dist/js/node/core/plugin.js +5 -34
  69. package/dist/js/node/document/Body.js +26 -0
  70. package/dist/js/node/document/DocumentContext.js +14 -0
  71. package/dist/js/node/document/DocumentStructrueContext.js +15 -0
  72. package/dist/js/node/document/Head.js +33 -0
  73. package/dist/js/node/document/Html.js +98 -0
  74. package/dist/js/node/document/Root.js +41 -0
  75. package/dist/js/node/document/Scripts.js +17 -0
  76. package/dist/js/node/document/cli/index.js +140 -0
  77. package/dist/js/node/document/constants.js +36 -0
  78. package/dist/js/node/document/index.js +93 -0
  79. package/dist/js/node/exports/head.js +0 -5
  80. package/dist/js/node/exports/loadable.js +0 -5
  81. package/dist/js/node/exports/server.js +0 -2
  82. package/dist/js/node/exports/styled.js +0 -5
  83. package/dist/js/node/index.js +5 -5
  84. package/dist/js/node/router/cli/index.js +20 -24
  85. package/dist/js/node/router/index.js +0 -4
  86. package/dist/js/node/router/runtime/DefaultNotFound.js +1 -5
  87. package/dist/js/node/router/runtime/index.js +4 -9
  88. package/dist/js/node/router/runtime/plugin.js +23 -65
  89. package/dist/js/node/router/runtime/plugin.node.js +147 -0
  90. package/dist/js/node/router/runtime/root/index.js +26 -0
  91. package/dist/js/node/router/runtime/root/load.js +69 -0
  92. package/dist/js/node/router/runtime/types.js +5 -0
  93. package/dist/js/node/router/runtime/utils.js +101 -67
  94. package/dist/js/node/router/runtime/withRouter.js +26 -0
  95. package/dist/js/node/runtime-context.js +4 -4
  96. package/dist/js/node/ssr/cli/index.js +35 -21
  97. package/dist/js/node/ssr/index.js +63 -62
  98. package/dist/js/node/ssr/index.node.js +6 -25
  99. package/dist/js/node/ssr/prefetch.js +0 -11
  100. package/dist/js/node/ssr/react/index.js +0 -2
  101. package/dist/js/node/ssr/react/nossr/index.js +0 -6
  102. package/dist/js/node/ssr/react/prerender/index.js +2 -30
  103. package/dist/js/node/ssr/react/prerender/util.js +2 -25
  104. package/dist/js/node/ssr/react/withCallback/index.js +1 -4
  105. package/dist/js/node/ssr/serverRender/helmet.js +13 -20
  106. package/dist/js/node/ssr/serverRender/index.js +14 -39
  107. package/dist/js/node/ssr/serverRender/renderToStream/buildTemplate.after.js +45 -0
  108. package/dist/js/node/ssr/serverRender/renderToStream/buildTemplate.share.js +13 -0
  109. package/dist/js/node/ssr/serverRender/renderToStream/bulidTemplate.before.js +65 -0
  110. package/dist/js/node/ssr/serverRender/renderToStream/index.js +48 -0
  111. package/dist/js/node/ssr/serverRender/renderToStream/loadable.js +30 -0
  112. package/dist/js/node/ssr/serverRender/renderToStream/renderToPipe.js +79 -0
  113. package/dist/js/node/ssr/serverRender/renderToStream/styledComponent.js +17 -0
  114. package/dist/js/node/ssr/serverRender/renderToStream/template.js +25 -0
  115. package/dist/js/node/ssr/serverRender/renderToStream/type.js +0 -0
  116. package/dist/js/node/ssr/serverRender/{entry.js → renderToString/entry.js} +13 -64
  117. package/dist/js/node/ssr/serverRender/renderToString/index.js +37 -0
  118. package/dist/js/node/ssr/serverRender/{loadable.js → renderToString/loadable.js} +3 -28
  119. package/dist/js/node/ssr/serverRender/{reduce.js → renderToString/reduce.js} +0 -3
  120. package/dist/js/node/ssr/serverRender/{styledComponent.js → renderToString/styledComponent.js} +0 -3
  121. package/dist/js/node/ssr/serverRender/{template.js → renderToString/template.js} +0 -18
  122. package/dist/js/node/ssr/serverRender/{type.js → renderToString/type.js} +0 -2
  123. package/dist/js/node/ssr/serverRender/types.js +12 -0
  124. package/dist/js/node/ssr/serverRender/utils.js +28 -0
  125. package/dist/js/node/ssr/utils.js +10 -21
  126. package/dist/js/node/state/cli/index.js +0 -15
  127. package/dist/js/node/state/index.js +0 -4
  128. package/dist/js/node/state/plugins.js +0 -11
  129. package/dist/js/node/state/runtime/index.js +0 -7
  130. package/dist/js/node/state/runtime/plugin.js +1 -25
  131. package/dist/js/treeshaking/cli/index.js +3 -3
  132. package/dist/js/treeshaking/core/app-config.js +2 -1
  133. package/dist/js/treeshaking/core/compatible.js +50 -65
  134. package/dist/js/treeshaking/core/index.js +4 -3
  135. package/dist/js/treeshaking/core/loader/loaderManager.js +19 -51
  136. package/dist/js/treeshaking/core/loader/useLoader.js +11 -28
  137. package/dist/js/treeshaking/core/plugin.js +6 -51
  138. package/dist/js/treeshaking/document/Body.js +14 -0
  139. package/dist/js/treeshaking/document/DocumentContext.js +6 -0
  140. package/dist/js/treeshaking/document/DocumentStructrueContext.js +7 -0
  141. package/dist/js/treeshaking/document/Head.js +21 -0
  142. package/dist/js/treeshaking/document/Html.js +104 -0
  143. package/dist/js/treeshaking/document/Root.js +24 -0
  144. package/dist/js/treeshaking/document/Scripts.js +10 -0
  145. package/dist/js/treeshaking/document/cli/index.js +170 -0
  146. package/dist/js/treeshaking/document/constants.js +16 -0
  147. package/dist/js/treeshaking/document/index.js +8 -0
  148. package/dist/js/treeshaking/index.js +2 -1
  149. package/dist/js/treeshaking/router/cli/index.js +26 -22
  150. package/dist/js/treeshaking/router/runtime/index.js +1 -1
  151. package/dist/js/treeshaking/router/runtime/plugin.js +28 -54
  152. package/dist/js/treeshaking/router/runtime/plugin.node.js +161 -0
  153. package/dist/js/treeshaking/router/runtime/root/index.js +17 -0
  154. package/dist/js/treeshaking/router/runtime/root/load.js +102 -0
  155. package/dist/js/treeshaking/router/runtime/types.js +1 -0
  156. package/dist/js/treeshaking/router/runtime/utils.js +104 -58
  157. package/dist/js/treeshaking/router/runtime/withRouter.js +18 -0
  158. package/dist/js/treeshaking/runtime-context.js +2 -1
  159. package/dist/js/treeshaking/ssr/cli/index.js +43 -23
  160. package/dist/js/treeshaking/ssr/index.js +74 -59
  161. package/dist/js/treeshaking/ssr/index.node.js +18 -31
  162. package/dist/js/treeshaking/ssr/prefetch.js +0 -13
  163. package/dist/js/treeshaking/ssr/react/nossr/index.js +3 -4
  164. package/dist/js/treeshaking/ssr/react/prerender/index.js +2 -21
  165. package/dist/js/treeshaking/ssr/react/prerender/util.js +3 -20
  166. package/dist/js/treeshaking/ssr/react/withCallback/index.js +1 -2
  167. package/dist/js/treeshaking/ssr/serverRender/helmet.js +12 -11
  168. package/dist/js/treeshaking/ssr/serverRender/index.js +33 -55
  169. package/dist/js/treeshaking/ssr/serverRender/renderToStream/buildTemplate.after.js +32 -0
  170. package/dist/js/treeshaking/ssr/serverRender/renderToStream/buildTemplate.share.js +7 -0
  171. package/dist/js/treeshaking/ssr/serverRender/renderToStream/bulidTemplate.before.js +60 -0
  172. package/dist/js/treeshaking/ssr/serverRender/renderToStream/index.js +50 -0
  173. package/dist/js/treeshaking/ssr/serverRender/renderToStream/loadable.js +22 -0
  174. package/dist/js/treeshaking/ssr/serverRender/renderToStream/renderToPipe.js +68 -0
  175. package/dist/js/treeshaking/ssr/serverRender/renderToStream/styledComponent.js +10 -0
  176. package/dist/js/treeshaking/ssr/serverRender/renderToStream/template.js +22 -0
  177. package/dist/js/treeshaking/ssr/serverRender/renderToStream/type.js +0 -0
  178. package/dist/js/treeshaking/ssr/serverRender/{entry.js → renderToString/entry.js} +23 -76
  179. package/dist/js/treeshaking/ssr/serverRender/renderToString/index.js +44 -0
  180. package/dist/js/treeshaking/ssr/serverRender/{loadable.js → renderToString/loadable.js} +7 -34
  181. package/dist/js/treeshaking/ssr/serverRender/{reduce.js → renderToString/reduce.js} +0 -2
  182. package/dist/js/treeshaking/ssr/serverRender/{styledComponent.js → renderToString/styledComponent.js} +0 -0
  183. package/dist/js/treeshaking/ssr/serverRender/{template.js → renderToString/template.js} +2 -18
  184. package/dist/js/treeshaking/ssr/serverRender/{type.js → renderToString/type.js} +0 -2
  185. package/dist/js/treeshaking/ssr/serverRender/types.js +2 -0
  186. package/dist/js/treeshaking/ssr/serverRender/utils.js +28 -0
  187. package/dist/js/treeshaking/ssr/utils.js +20 -17
  188. package/dist/js/treeshaking/state/cli/index.js +3 -10
  189. package/dist/js/treeshaking/state/runtime/plugin.js +2 -10
  190. package/dist/types/cli/index.d.ts +0 -2
  191. package/dist/types/common.d.ts +0 -2
  192. package/dist/types/core/compatible.d.ts +2 -2
  193. package/dist/types/core/index.d.ts +2 -2
  194. package/dist/types/core/loader/loaderManager.d.ts +0 -1
  195. package/dist/types/core/loader/useLoader.d.ts +0 -5
  196. package/dist/types/core/plugin.d.ts +2 -14
  197. package/dist/types/document/Body.d.ts +4 -0
  198. package/dist/types/document/DocumentContext.d.ts +13 -0
  199. package/dist/types/document/DocumentStructrueContext.d.ts +10 -0
  200. package/dist/types/document/Head.d.ts +5 -0
  201. package/dist/types/document/Html.d.ts +4 -0
  202. package/dist/types/document/Root.d.ts +8 -0
  203. package/dist/types/document/Scripts.d.ts +2 -0
  204. package/dist/types/document/cli/index.d.ts +3 -0
  205. package/dist/types/document/constants.d.ts +14 -0
  206. package/dist/types/document/index.d.ts +8 -0
  207. package/dist/types/exports/server.d.ts +21 -1
  208. package/dist/types/index.d.ts +2 -1
  209. package/dist/types/router/cli/index.d.ts +0 -2
  210. package/dist/types/router/runtime/DefaultNotFound.d.ts +1 -0
  211. package/dist/types/router/runtime/index.d.ts +3 -3
  212. package/dist/types/router/runtime/plugin.d.ts +2 -45
  213. package/dist/types/router/runtime/plugin.node.d.ts +8 -0
  214. package/dist/types/router/runtime/root/index.d.ts +8 -0
  215. package/dist/types/router/runtime/root/load.d.ts +22 -0
  216. package/dist/types/router/runtime/types.d.ts +36 -0
  217. package/dist/types/router/runtime/utils.d.ts +5 -2
  218. package/dist/types/router/runtime/withRouter.d.ts +8 -0
  219. package/dist/types/runtime-context.d.ts +3 -1
  220. package/dist/types/ssr/cli/index.d.ts +0 -2
  221. package/dist/types/ssr/index.d.ts +2 -2
  222. package/dist/types/ssr/index.node.d.ts +1 -1
  223. package/dist/types/ssr/prefetch.d.ts +2 -2
  224. package/dist/types/ssr/react/nossr/index.d.ts +3 -1
  225. package/dist/types/ssr/serverRender/index.d.ts +2 -3
  226. package/dist/types/ssr/serverRender/renderToStream/buildTemplate.after.d.ts +7 -0
  227. package/dist/types/ssr/serverRender/renderToStream/buildTemplate.share.d.ts +3 -0
  228. package/dist/types/ssr/serverRender/renderToStream/bulidTemplate.before.d.ts +2 -0
  229. package/dist/types/ssr/serverRender/renderToStream/index.d.ts +6 -0
  230. package/dist/types/ssr/serverRender/renderToStream/loadable.d.ts +16 -0
  231. package/dist/types/ssr/serverRender/renderToStream/renderToPipe.d.ts +8 -0
  232. package/dist/types/ssr/serverRender/renderToStream/styledComponent.d.ts +12 -0
  233. package/dist/types/ssr/serverRender/renderToStream/template.d.ts +3 -0
  234. package/dist/types/ssr/serverRender/renderToStream/type.d.ts +4 -0
  235. package/dist/types/ssr/serverRender/{entry.d.ts → renderToString/entry.d.ts} +2 -2
  236. package/dist/types/ssr/serverRender/renderToString/index.d.ts +6 -0
  237. package/dist/types/ssr/serverRender/{loadable.d.ts → renderToString/loadable.d.ts} +0 -0
  238. package/dist/types/ssr/serverRender/{reduce.d.ts → renderToString/reduce.d.ts} +0 -0
  239. package/dist/types/ssr/serverRender/{styledComponent.d.ts → renderToString/styledComponent.d.ts} +0 -0
  240. package/dist/types/ssr/serverRender/{template.d.ts → renderToString/template.d.ts} +0 -0
  241. package/dist/types/ssr/serverRender/{type.d.ts → renderToString/type.d.ts} +1 -8
  242. package/dist/types/ssr/serverRender/types.d.ts +15 -0
  243. package/dist/types/ssr/serverRender/utils.d.ts +3 -0
  244. package/dist/types/ssr/utils.d.ts +4 -2
  245. package/dist/types/state/cli/index.d.ts +0 -2
  246. package/dist/types/state/runtime/plugin.d.ts +1 -1
  247. package/dist/types/state/types.d.ts +0 -1
  248. package/package.json +63 -71
  249. package/types/index.d.ts +13 -0
  250. package/types/router.d.ts +14 -0
  251. package/dist/js/modern/ssr/serverRender/measure.js +0 -11
  252. package/dist/js/node/ssr/serverRender/measure.js +0 -20
  253. package/dist/js/treeshaking/ssr/serverRender/measure.js +0 -17
  254. package/dist/types/ssr/serverRender/measure.d.ts +0 -1
  255. package/lib/types.d.ts +0 -10
  256. package/type.d.ts +0 -5
@@ -4,37 +4,22 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _react = _interopRequireDefault(require("react"));
9
-
10
8
  var _server = _interopRequireDefault(require("react-dom/server"));
11
-
12
9
  var _serializeJavascript = _interopRequireDefault(require("serialize-javascript"));
13
-
14
10
  var _reactHelmet = _interopRequireDefault(require("react-helmet"));
15
-
11
+ var _helmet = _interopRequireDefault(require("../helmet"));
12
+ var _types = require("../types");
13
+ var _utils = require("../utils");
14
+ var _prefetch = _interopRequireDefault(require("../../prefetch"));
16
15
  var _template = require("./template");
17
-
18
- var _type = require("./type");
19
-
20
- var _helmet = _interopRequireDefault(require("./helmet"));
21
-
22
16
  var _reduce = require("./reduce");
23
-
24
17
  var loadableRenderer = _interopRequireWildcard(require("./loadable"));
25
-
26
18
  var styledComponentRenderer = _interopRequireWildcard(require("./styledComponent"));
27
-
28
- var _measure = require("./measure");
29
-
30
19
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
31
-
32
20
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
33
-
34
21
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
35
-
36
22
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
37
-
38
23
  const buildTemplateData = (context, data, renderLevel) => {
39
24
  const {
40
25
  request
@@ -55,25 +40,16 @@ const buildTemplateData = (context, data, renderLevel) => {
55
40
  renderLevel
56
41
  };
57
42
  };
58
-
59
43
  class Entry {
60
44
  constructor(options) {
61
45
  _defineProperty(this, "entryName", void 0);
62
-
63
46
  _defineProperty(this, "result", void 0);
64
-
65
47
  _defineProperty(this, "metrics", void 0);
66
-
67
48
  _defineProperty(this, "logger", void 0);
68
-
69
49
  _defineProperty(this, "App", void 0);
70
-
71
50
  _defineProperty(this, "fragments", void 0);
72
-
73
51
  _defineProperty(this, "pluginConfig", void 0);
74
-
75
52
  _defineProperty(this, "host", void 0);
76
-
77
53
  const {
78
54
  ctx,
79
55
  config
@@ -93,7 +69,7 @@ class Entry {
93
69
  this.metrics = ctx.metrics;
94
70
  this.logger = ctx.logger;
95
71
  this.result = {
96
- renderLevel: _type.RenderLevel.CLIENT_RENDER,
72
+ renderLevel: _types.RenderLevel.CLIENT_RENDER,
97
73
  html: '',
98
74
  chunksMap: {
99
75
  js: '',
@@ -101,34 +77,24 @@ class Entry {
101
77
  }
102
78
  };
103
79
  }
104
-
105
80
  async renderToHtml(context) {
106
- const {
107
- ssrContext
108
- } = context;
109
-
81
+ const ssrContext = context.ssrContext;
110
82
  if (ssrContext.redirection.url) {
111
83
  return '';
112
84
  }
113
-
114
85
  const prefetchData = await this.prefetch(context);
115
-
116
86
  if (ssrContext.redirection.url) {
117
87
  return '';
118
88
  }
119
-
120
- if (this.result.renderLevel >= _type.RenderLevel.SERVER_PREFETCH) {
89
+ if (this.result.renderLevel >= _types.RenderLevel.SERVER_PREFETCH) {
121
90
  this.result.html = this.renderToString(context);
122
91
  }
123
-
124
92
  if (ssrContext.redirection.url) {
125
93
  return '';
126
94
  }
127
-
128
95
  let html = '';
129
96
  const templateData = buildTemplateData(ssrContext, prefetchData, this.result.renderLevel);
130
97
  const SSRData = this.getSSRDataScript(templateData);
131
-
132
98
  for (const fragment of this.fragments) {
133
99
  if (fragment.isVariable && fragment.content === 'SSRDataScript') {
134
100
  html += fragment.getValue(SSRData);
@@ -136,50 +102,37 @@ class Entry {
136
102
  html += fragment.getValue(this.result);
137
103
  }
138
104
  }
139
-
140
105
  const helmetData = _reactHelmet.default.renderStatic();
141
-
142
106
  return helmetData ? (0, _helmet.default)(html, helmetData) : html;
143
107
  }
144
-
145
108
  async prefetch(context) {
146
- const {
147
- App: {
148
- prefetch
149
- }
150
- } = this;
151
109
  let prefetchData;
152
- const end = (0, _measure.time)();
153
-
110
+ const end = (0, _utils.time)();
154
111
  try {
155
- prefetchData = prefetch ? await prefetch(context) : null;
156
- this.result.renderLevel = _type.RenderLevel.SERVER_PREFETCH;
112
+ prefetchData = await (0, _prefetch.default)(this.App, context);
113
+ this.result.renderLevel = _types.RenderLevel.SERVER_PREFETCH;
157
114
  const prefetchCost = end();
158
115
  this.logger.debug(`App Prefetch cost = %d ms`, prefetchCost);
159
116
  this.metrics.emitTimer('app.prefetch.cost', prefetchCost);
160
117
  } catch (e) {
161
- this.result.renderLevel = _type.RenderLevel.CLIENT_RENDER;
118
+ this.result.renderLevel = _types.RenderLevel.CLIENT_RENDER;
162
119
  this.logger.error('App Prefetch Render', e);
163
120
  this.metrics.emitCounter('app.prefetch.render.error', 1);
164
121
  }
165
-
166
122
  return prefetchData || {};
167
123
  }
168
-
169
124
  renderToString(context) {
170
125
  let html = '';
171
- const end = (0, _measure.time)();
126
+ const end = (0, _utils.time)();
172
127
  const {
173
128
  ssrContext
174
129
  } = context;
175
-
176
130
  try {
177
131
  const App = /*#__PURE__*/_react.default.createElement(this.App, {
178
132
  context: Object.assign(context, {
179
133
  ssr: true
180
134
  })
181
135
  });
182
-
183
136
  const renderContext = {
184
137
  stats: ssrContext.loadableStats,
185
138
  host: this.host,
@@ -191,15 +144,13 @@ class Entry {
191
144
  const cost = end();
192
145
  this.logger.debug('App Render To HTML cost = %d ms', cost);
193
146
  this.metrics.emitTimer('app.render.html.cost', cost);
194
- this.result.renderLevel = _type.RenderLevel.SERVER_RENDER;
147
+ this.result.renderLevel = _types.RenderLevel.SERVER_RENDER;
195
148
  } catch (e) {
196
149
  this.logger.error('App Render To HTML', e);
197
150
  this.metrics.emitCounter('app.render.html.error', 1);
198
151
  }
199
-
200
152
  return html;
201
153
  }
202
-
203
154
  getSSRDataScript(templateData) {
204
155
  return {
205
156
  SSRDataScript: `
@@ -209,7 +160,5 @@ class Entry {
209
160
  `
210
161
  };
211
162
  }
212
-
213
163
  }
214
-
215
164
  exports.default = Entry;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.render = void 0;
7
+ var _ssr = require("@modern-js/utils/ssr");
8
+ var _prerender = require("../../react/prerender");
9
+ var _utils = require("../utils");
10
+ var _entry = _interopRequireDefault(require("./entry"));
11
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+ const render = ({
13
+ App,
14
+ context,
15
+ config
16
+ }) => {
17
+ const ssrContext = context.ssrContext;
18
+ return (0, _ssr.run)(ssrContext.request.headers, async () => {
19
+ const entry = new _entry.default({
20
+ ctx: ssrContext,
21
+ App,
22
+ config
23
+ });
24
+ entry.metrics.emitCounter('app.visit.count', 1);
25
+ const end = (0, _utils.time)();
26
+ const html = await entry.renderToHtml(context);
27
+ const cost = end();
28
+ entry.logger.info('App Render Total cost = %d ms', cost);
29
+ entry.metrics.emitTimer('app.render.cost', cost);
30
+ const cacheConfig = _prerender.PreRender.config();
31
+ if (cacheConfig) {
32
+ context.ssrContext.cacheConfig = cacheConfig;
33
+ }
34
+ return html;
35
+ });
36
+ };
37
+ exports.render = render;
@@ -4,32 +4,15 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.toHtml = void 0;
7
-
8
7
  var _server = require("@loadable/server");
9
-
10
- var _utils = require("../utils");
11
-
8
+ var _utils = require("../../utils");
9
+ var _utils2 = require("../utils");
12
10
  const extname = uri => {
13
11
  if (typeof uri !== 'string' || !uri.includes('.')) {
14
12
  return '';
15
13
  }
16
-
17
14
  return `.${uri === null || uri === void 0 ? void 0 : uri.split('.').pop()}` || '';
18
15
  };
19
-
20
- function getLoadableScripts(extractor) {
21
- const check = scripts => (scripts || '').includes('__LOADABLE_REQUIRED_CHUNKS___ext');
22
-
23
- const scripts = extractor.getScriptTags();
24
-
25
- if (!check(scripts)) {
26
- return '';
27
- }
28
-
29
- return scripts.split('</script>') // 前两个 script为 loadable 必须的 script
30
- .slice(0, 2).map(i => `${i}</script>`).join('');
31
- }
32
-
33
16
  const toHtml = (jsx, renderer, next) => {
34
17
  const {
35
18
  stats,
@@ -39,39 +22,31 @@ const toHtml = (jsx, renderer, next) => {
39
22
  host,
40
23
  config = {}
41
24
  } = renderer;
42
-
43
25
  if (!stats || chunksMap.js) {
44
26
  return next(jsx);
45
27
  }
46
-
47
28
  const extractor = new _server.ChunkExtractor({
48
29
  stats,
49
30
  entrypoints: [renderer.entryName]
50
31
  });
51
32
  const html = next(extractor.collectChunks(jsx));
52
33
  const chunks = extractor.getChunkAssets(extractor.chunks);
53
- chunksMap.js = (chunksMap.js || '') + getLoadableScripts(extractor);
54
-
34
+ chunksMap.js = (chunksMap.js || '') + (0, _utils2.getLoadableScripts)(extractor);
55
35
  for (const v of chunks) {
56
36
  const fileType = extname(v.url).slice(1);
57
-
58
37
  if (fileType === 'js') {
59
38
  const props = [];
60
39
  const {
61
40
  crossorigin
62
41
  } = config;
63
-
64
42
  if (crossorigin && (0, _utils.isCrossOrigin)(v.url, host)) {
65
43
  props.push(`crossorigin="${crossorigin === true ? 'anonymous' : crossorigin}"`);
66
44
  }
67
-
68
45
  chunksMap[fileType] += `<script src="${v.url}" ${props.join(' ')}></script>`;
69
46
  } else if (fileType === 'css') {
70
47
  chunksMap[fileType] += `<link href="${v.url}" rel="stylesheet" />`;
71
48
  }
72
49
  }
73
-
74
50
  return html;
75
51
  };
76
-
77
52
  exports.toHtml = toHtml;
@@ -4,11 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.reduce = reduce;
7
-
8
7
  function reduce(jsx, renderer, middleware) {
9
8
  let index = 0;
10
-
11
9
  const createNext = () => App => middleware[index++](App, renderer, createNext());
12
-
13
10
  return createNext()(jsx);
14
11
  }
@@ -4,9 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.toHtml = void 0;
7
-
8
7
  var _styledComponents = require("styled-components");
9
-
10
8
  const toHtml = (jsx, renderer, next) => {
11
9
  const sheet = new _styledComponents.ServerStyleSheet();
12
10
  const html = next(sheet.collectStyles(jsx));
@@ -14,5 +12,4 @@ const toHtml = (jsx, renderer, next) => {
14
12
  renderer.result.chunksMap.css += css;
15
13
  return html;
16
14
  };
17
-
18
15
  exports.toHtml = toHtml;
@@ -5,9 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.Fragment = void 0;
7
7
  exports.toFragments = toFragments;
8
-
9
8
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
10
-
11
9
  const VARIABLE_REG_EXP = /<!--<\?([-=+])\s*(.*?)\s*\?>-->/;
12
10
  const VARIABLE_SPLITTER = /(<!--<\?.*?\?>-->)/;
13
11
  const ENCODE_HTML_RULES = {
@@ -18,27 +16,19 @@ const ENCODE_HTML_RULES = {
18
16
  "'": '&#39;'
19
17
  };
20
18
  const MATCH_HTML = /[&<>'"]/g;
21
-
22
19
  function encodeChar(c) {
23
20
  return ENCODE_HTML_RULES[c] || c;
24
21
  }
25
-
26
22
  function escape(str) {
27
23
  return str.replace(MATCH_HTML, encodeChar);
28
24
  }
29
-
30
25
  class Fragment {
31
26
  constructor(template) {
32
27
  _defineProperty(this, "isVariable", void 0);
33
-
34
28
  _defineProperty(this, "content", void 0);
35
-
36
29
  _defineProperty(this, "filters", void 0);
37
-
38
30
  _defineProperty(this, "path", void 0);
39
-
40
31
  const match = VARIABLE_REG_EXP.exec(template);
41
-
42
32
  if (match) {
43
33
  const [, filterFlag, content] = match;
44
34
  this.isVariable = true;
@@ -52,32 +42,24 @@ class Fragment {
52
42
  this.path = [];
53
43
  }
54
44
  }
55
-
56
45
  getValue(data) {
57
46
  if (this.isVariable) {
58
47
  const value = this.path.reduce((p, n) => p != null ? p[n] : p, data);
59
48
  return this.filters.reduce((p, n) => n(p), value != null ? value : '');
60
49
  }
61
-
62
50
  return this.content;
63
51
  }
64
-
65
52
  }
66
-
67
53
  exports.Fragment = Fragment;
68
-
69
54
  _defineProperty(Fragment, "filterMap", {
70
55
  '=': escape,
71
56
  '-': v => v
72
57
  });
73
-
74
58
  const fragmentListMap = {};
75
-
76
59
  function toFragments(template, entryName) {
77
60
  if (fragmentListMap[entryName]) {
78
61
  return fragmentListMap[entryName];
79
62
  }
80
-
81
63
  const fragmentList = template.split(VARIABLE_SPLITTER).filter(v => Boolean(v)).map(v => new Fragment(v));
82
64
  fragmentListMap[entryName] = fragmentList;
83
65
  return fragmentList;
@@ -4,10 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.RenderLevel = void 0;
7
- // import { IncomingHttpHeaders } from 'http';
8
7
  let RenderLevel;
9
8
  exports.RenderLevel = RenderLevel;
10
-
11
9
  (function (RenderLevel) {
12
10
  RenderLevel[RenderLevel["CLIENT_RENDER"] = 0] = "CLIENT_RENDER";
13
11
  RenderLevel[RenderLevel["SERVER_PREFETCH"] = 1] = "SERVER_PREFETCH";
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "RenderLevel", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _type.RenderLevel;
10
+ }
11
+ });
12
+ var _type = require("./renderToString/type");
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getLoadableScripts = getLoadableScripts;
7
+ exports.time = void 0;
8
+ function getLoadableScripts(extractor) {
9
+ const check = scripts => (scripts || '').includes('__LOADABLE_REQUIRED_CHUNKS___ext');
10
+ const scripts = extractor.getScriptTags();
11
+ if (!check(scripts)) {
12
+ return '';
13
+ }
14
+ return scripts.split('</script>')
15
+ // 前两个 script为 loadable 必须的 script
16
+ .slice(0, 2).map(i => `${i}</script>`).join('');
17
+ }
18
+ const getLatency = hrtime => {
19
+ const [s, ns] = process.hrtime(hrtime);
20
+ return s * 1e3 + ns / 1e6;
21
+ };
22
+ const time = () => {
23
+ const hrtime = process.hrtime();
24
+ return () => {
25
+ return getLatency(hrtime);
26
+ };
27
+ };
28
+ exports.time = time;
@@ -3,14 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.mockResponse = exports.isCrossOrigin = exports.formatServer = exports.formatClient = void 0;
7
-
6
+ exports.mockResponse = exports.isReact18 = exports.isCrossOrigin = exports.formatServer = exports.formatClient = void 0;
8
7
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
9
-
10
8
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
11
-
12
9
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
13
-
10
+ const isReact18 = () => process.env.IS_REACT18 === 'true';
11
+ exports.isReact18 = isReact18;
14
12
  const formatServer = request => {
15
13
  const {
16
14
  cookie = '',
@@ -23,22 +21,16 @@ const formatServer = request => {
23
21
  referer
24
22
  }, request);
25
23
  };
26
-
27
24
  exports.formatServer = formatServer;
28
-
29
25
  const getQuery = () => window.location.search.substring(1).split('&').reduce((res, item) => {
30
26
  const [key, value] = item.split('=');
31
-
32
27
  if (key) {
33
28
  res[key] = value;
34
29
  }
35
-
36
30
  return res;
37
31
  }, {});
38
-
39
32
  const formatClient = request => {
40
33
  var _request$headers, _request$headers2;
41
-
42
34
  return {
43
35
  params: request.params || {},
44
36
  host: request.host || location.host,
@@ -52,25 +44,23 @@ const formatClient = request => {
52
44
  url: location.href
53
45
  };
54
46
  };
55
-
56
47
  exports.formatClient = formatClient;
57
-
58
48
  const mockResponse = () => {
59
49
  return {
60
50
  setHeader() {
61
- console.info('setHeader can only be used in the server side');
51
+ console.warn('response.setHeader() can only be used in the server side');
62
52
  },
63
-
64
53
  status() {
65
- console.info('status can only be used in the server side');
54
+ console.warn('response.status() can only be used in the server side');
55
+ },
56
+ get locals() {
57
+ console.warn('response.locals can only be used in the server side');
58
+ return {};
66
59
  }
67
-
68
60
  };
69
61
  };
70
-
71
62
  exports.mockResponse = mockResponse;
72
-
73
- const isCrossOrigin = (url, base) => {
63
+ const isCrossOrigin = (url = '', base) => {
74
64
  if (url.startsWith('/') || url.startsWith('./')) {
75
65
  return false;
76
66
  } else if (!url.includes(base)) {
@@ -79,5 +69,4 @@ const isCrossOrigin = (url, base) => {
79
69
  return false;
80
70
  }
81
71
  };
82
-
83
72
  exports.isCrossOrigin = isCrossOrigin;
@@ -4,13 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _utils = require("@modern-js/utils");
9
-
10
8
  require("../types");
11
-
12
9
  const PLUGIN_IDENTIFIER = 'state';
13
-
14
10
  var _default = () => ({
15
11
  name: '@modern-js/plugin-state',
16
12
  required: ['@modern-js/runtime'],
@@ -29,13 +25,11 @@ var _default = () => ({
29
25
  }
30
26
  };
31
27
  },
32
-
33
28
  modifyEntryImports({
34
29
  entrypoint,
35
30
  imports
36
31
  }) {
37
32
  var _getEntryOptions;
38
-
39
33
  const {
40
34
  entryName
41
35
  } = entrypoint;
@@ -45,7 +39,6 @@ var _default = () => ({
45
39
  } = api.useAppContext();
46
40
  const stateConfig = (_getEntryOptions = (0, _utils.getEntryOptions)(entryName, userConfig.runtime, userConfig.runtimeByEntries, packageName)) === null || _getEntryOptions === void 0 ? void 0 : _getEntryOptions.state;
47
41
  stateConfigMap.set(entryName, stateConfig);
48
-
49
42
  if (stateConfig) {
50
43
  imports.push({
51
44
  value: '@modern-js/runtime/plugins',
@@ -54,42 +47,34 @@ var _default = () => ({
54
47
  }]
55
48
  });
56
49
  }
57
-
58
50
  return {
59
51
  entrypoint,
60
52
  imports
61
53
  };
62
54
  },
63
-
64
55
  modifyEntryRuntimePlugins({
65
56
  entrypoint,
66
57
  plugins
67
58
  }) {
68
59
  const stateOptions = stateConfigMap.get(entrypoint.entryName);
69
-
70
60
  if (stateOptions) {
71
61
  plugins.push({
72
62
  name: PLUGIN_IDENTIFIER,
73
63
  options: `${JSON.stringify(stateConfigMap.get(entrypoint.entryName))}`
74
64
  });
75
65
  }
76
-
77
66
  return {
78
67
  entrypoint,
79
68
  plugins
80
69
  };
81
70
  },
82
-
83
71
  validateSchema() {
84
72
  return _utils.PLUGIN_SCHEMAS['@modern-js/plugin-state'];
85
73
  },
86
-
87
74
  addRuntimeExports() {
88
75
  pluginsExportsUtils.addExport(`export { default as state } from '@modern-js/runtime/model'`);
89
76
  }
90
-
91
77
  };
92
78
  }
93
79
  });
94
-
95
80
  exports.default = _default;
@@ -18,9 +18,7 @@ Object.defineProperty(exports, "state", {
18
18
  return _runtime.default;
19
19
  }
20
20
  });
21
-
22
21
  var _runtime = _interopRequireWildcard(require("./runtime"));
23
-
24
22
  Object.keys(_runtime).forEach(function (key) {
25
23
  if (key === "default" || key === "__esModule") return;
26
24
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
@@ -32,7 +30,5 @@ Object.keys(_runtime).forEach(function (key) {
32
30
  }
33
31
  });
34
32
  });
35
-
36
33
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
37
-
38
34
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -11,25 +11,14 @@ Object.defineProperty(exports, "devtools", {
11
11
  }
12
12
  });
13
13
  exports.immer = exports.effects = void 0;
14
-
15
14
  var _pluginEffects = require("@modern-js-reduck/plugin-effects");
16
-
17
15
  var _pluginAutoActions = _interopRequireDefault(require("@modern-js-reduck/plugin-auto-actions"));
18
-
19
16
  var _pluginImmutable = _interopRequireDefault(require("@modern-js-reduck/plugin-immutable"));
20
-
21
17
  var _pluginDevtools = _interopRequireDefault(require("@modern-js-reduck/plugin-devtools"));
22
-
23
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24
-
25
19
  const effects = () => _pluginEffects.plugin;
26
-
27
20
  exports.effects = effects;
28
-
29
21
  const immer = () => _pluginImmutable.default;
30
-
31
22
  exports.immer = immer;
32
-
33
23
  const autoActions = () => _pluginAutoActions.default;
34
-
35
24
  exports.autoActions = autoActions;