@modern-js/runtime 2.0.0-beta.0 → 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 (204) hide show
  1. package/CHANGELOG.md +77 -0
  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 +63 -46
  5. package/dist/js/modern/core/index.js +3 -2
  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 +1 -1
  20. package/dist/js/modern/router/cli/index.js +0 -16
  21. package/dist/js/modern/router/runtime/plugin.js +0 -9
  22. package/dist/js/modern/router/runtime/plugin.node.js +18 -24
  23. package/dist/js/modern/router/runtime/root/index.js +19 -0
  24. package/dist/js/modern/router/runtime/root/load.js +61 -0
  25. package/dist/js/modern/router/runtime/utils.js +16 -35
  26. package/dist/js/modern/router/runtime/withRouter.js +1 -3
  27. package/dist/js/modern/ssr/cli/index.js +2 -23
  28. package/dist/js/modern/ssr/index.js +23 -34
  29. package/dist/js/modern/ssr/index.node.js +0 -13
  30. package/dist/js/modern/ssr/prefetch.js +0 -7
  31. package/dist/js/modern/ssr/react/prerender/index.js +2 -23
  32. package/dist/js/modern/ssr/react/prerender/util.js +2 -17
  33. package/dist/js/modern/ssr/react/withCallback/index.js +0 -1
  34. package/dist/js/modern/ssr/serverRender/helmet.js +12 -20
  35. package/dist/js/modern/ssr/serverRender/index.js +1 -2
  36. package/dist/js/modern/ssr/serverRender/renderToStream/buildTemplate.after.js +5 -5
  37. package/dist/js/modern/ssr/serverRender/renderToStream/bulidTemplate.before.js +45 -11
  38. package/dist/js/modern/ssr/serverRender/renderToStream/index.js +6 -39
  39. package/dist/js/modern/ssr/serverRender/renderToStream/loadable.js +0 -2
  40. package/dist/js/modern/ssr/serverRender/renderToStream/renderToPipe.js +26 -15
  41. package/dist/js/modern/ssr/serverRender/renderToStream/template.js +14 -18
  42. package/dist/js/modern/ssr/serverRender/renderToString/entry.js +2 -34
  43. package/dist/js/modern/ssr/serverRender/renderToString/index.js +0 -2
  44. package/dist/js/modern/ssr/serverRender/renderToString/loadable.js +0 -10
  45. package/dist/js/modern/ssr/serverRender/renderToString/reduce.js +0 -2
  46. package/dist/js/modern/ssr/serverRender/renderToString/template.js +0 -15
  47. package/dist/js/modern/ssr/serverRender/renderToString/type.js +0 -1
  48. package/dist/js/modern/ssr/serverRender/utils.js +2 -6
  49. package/dist/js/modern/ssr/utils.js +0 -11
  50. package/dist/js/modern/state/cli/index.js +0 -10
  51. package/dist/js/modern/state/runtime/plugin.js +1 -14
  52. package/dist/js/node/cli/index.js +3 -13
  53. package/dist/js/node/common.js +0 -2
  54. package/dist/js/node/core/app-config.js +2 -5
  55. package/dist/js/node/core/compatible.js +63 -64
  56. package/dist/js/node/core/index.js +0 -16
  57. package/dist/js/node/core/loader/index.js +0 -2
  58. package/dist/js/node/core/loader/loaderManager.js +12 -37
  59. package/dist/js/node/core/loader/useLoader.js +8 -31
  60. package/dist/js/node/core/plugin.js +5 -34
  61. package/dist/js/node/document/Body.js +26 -0
  62. package/dist/js/node/document/DocumentContext.js +14 -0
  63. package/dist/js/node/document/DocumentStructrueContext.js +15 -0
  64. package/dist/js/node/document/Head.js +33 -0
  65. package/dist/js/node/document/Html.js +98 -0
  66. package/dist/js/node/document/Root.js +41 -0
  67. package/dist/js/node/document/Scripts.js +17 -0
  68. package/dist/js/node/document/cli/index.js +140 -0
  69. package/dist/js/node/document/constants.js +36 -0
  70. package/dist/js/node/document/index.js +93 -0
  71. package/dist/js/node/exports/head.js +0 -5
  72. package/dist/js/node/exports/loadable.js +0 -5
  73. package/dist/js/node/exports/server.js +0 -2
  74. package/dist/js/node/exports/styled.js +0 -5
  75. package/dist/js/node/index.js +0 -8
  76. package/dist/js/node/router/cli/index.js +0 -20
  77. package/dist/js/node/router/index.js +0 -4
  78. package/dist/js/node/router/runtime/DefaultNotFound.js +1 -5
  79. package/dist/js/node/router/runtime/index.js +0 -5
  80. package/dist/js/node/router/runtime/plugin.js +0 -17
  81. package/dist/js/node/router/runtime/plugin.node.js +16 -38
  82. package/dist/js/node/router/runtime/root/index.js +26 -0
  83. package/dist/js/node/router/runtime/root/load.js +69 -0
  84. package/dist/js/node/router/runtime/utils.js +16 -44
  85. package/dist/js/node/router/runtime/withRouter.js +0 -9
  86. package/dist/js/node/runtime-context.js +0 -2
  87. package/dist/js/node/ssr/cli/index.js +2 -26
  88. package/dist/js/node/ssr/index.js +23 -45
  89. package/dist/js/node/ssr/index.node.js +0 -23
  90. package/dist/js/node/ssr/prefetch.js +0 -11
  91. package/dist/js/node/ssr/react/index.js +0 -2
  92. package/dist/js/node/ssr/react/nossr/index.js +0 -6
  93. package/dist/js/node/ssr/react/prerender/index.js +2 -30
  94. package/dist/js/node/ssr/react/prerender/util.js +2 -25
  95. package/dist/js/node/ssr/react/withCallback/index.js +1 -4
  96. package/dist/js/node/ssr/serverRender/helmet.js +13 -20
  97. package/dist/js/node/ssr/serverRender/index.js +1 -4
  98. package/dist/js/node/ssr/serverRender/renderToStream/buildTemplate.after.js +5 -9
  99. package/dist/js/node/ssr/serverRender/renderToStream/buildTemplate.share.js +0 -1
  100. package/dist/js/node/ssr/serverRender/renderToStream/bulidTemplate.before.js +43 -15
  101. package/dist/js/node/ssr/serverRender/renderToStream/index.js +6 -48
  102. package/dist/js/node/ssr/serverRender/renderToStream/loadable.js +0 -4
  103. package/dist/js/node/ssr/serverRender/renderToStream/renderToPipe.js +26 -17
  104. package/dist/js/node/ssr/serverRender/renderToStream/styledComponent.js +0 -2
  105. package/dist/js/node/ssr/serverRender/renderToStream/template.js +16 -23
  106. package/dist/js/node/ssr/serverRender/renderToString/entry.js +2 -51
  107. package/dist/js/node/ssr/serverRender/renderToString/index.js +0 -10
  108. package/dist/js/node/ssr/serverRender/renderToString/loadable.js +0 -14
  109. package/dist/js/node/ssr/serverRender/renderToString/reduce.js +0 -3
  110. package/dist/js/node/ssr/serverRender/renderToString/styledComponent.js +0 -3
  111. package/dist/js/node/ssr/serverRender/renderToString/template.js +0 -18
  112. package/dist/js/node/ssr/serverRender/renderToString/type.js +0 -1
  113. package/dist/js/node/ssr/serverRender/types.js +0 -1
  114. package/dist/js/node/ssr/serverRender/utils.js +2 -8
  115. package/dist/js/node/ssr/utils.js +0 -20
  116. package/dist/js/node/state/cli/index.js +0 -15
  117. package/dist/js/node/state/index.js +0 -4
  118. package/dist/js/node/state/plugins.js +0 -11
  119. package/dist/js/node/state/runtime/index.js +0 -7
  120. package/dist/js/node/state/runtime/plugin.js +1 -25
  121. package/dist/js/treeshaking/cli/index.js +3 -3
  122. package/dist/js/treeshaking/core/app-config.js +2 -1
  123. package/dist/js/treeshaking/core/compatible.js +66 -63
  124. package/dist/js/treeshaking/core/index.js +3 -2
  125. package/dist/js/treeshaking/core/loader/loaderManager.js +19 -51
  126. package/dist/js/treeshaking/core/loader/useLoader.js +11 -28
  127. package/dist/js/treeshaking/core/plugin.js +6 -51
  128. package/dist/js/treeshaking/document/Body.js +14 -0
  129. package/dist/js/treeshaking/document/DocumentContext.js +6 -0
  130. package/dist/js/treeshaking/document/DocumentStructrueContext.js +7 -0
  131. package/dist/js/treeshaking/document/Head.js +21 -0
  132. package/dist/js/treeshaking/document/Html.js +104 -0
  133. package/dist/js/treeshaking/document/Root.js +24 -0
  134. package/dist/js/treeshaking/document/Scripts.js +10 -0
  135. package/dist/js/treeshaking/document/cli/index.js +170 -0
  136. package/dist/js/treeshaking/document/constants.js +16 -0
  137. package/dist/js/treeshaking/document/index.js +8 -0
  138. package/dist/js/treeshaking/index.js +1 -1
  139. package/dist/js/treeshaking/router/cli/index.js +6 -18
  140. package/dist/js/treeshaking/router/runtime/plugin.js +5 -13
  141. package/dist/js/treeshaking/router/runtime/plugin.node.js +23 -36
  142. package/dist/js/treeshaking/router/runtime/root/index.js +17 -0
  143. package/dist/js/treeshaking/router/runtime/root/load.js +102 -0
  144. package/dist/js/treeshaking/router/runtime/utils.js +21 -39
  145. package/dist/js/treeshaking/router/runtime/withRouter.js +1 -0
  146. package/dist/js/treeshaking/ssr/cli/index.js +9 -31
  147. package/dist/js/treeshaking/ssr/index.js +26 -40
  148. package/dist/js/treeshaking/ssr/index.node.js +12 -29
  149. package/dist/js/treeshaking/ssr/prefetch.js +0 -13
  150. package/dist/js/treeshaking/ssr/react/nossr/index.js +3 -4
  151. package/dist/js/treeshaking/ssr/react/prerender/index.js +2 -21
  152. package/dist/js/treeshaking/ssr/react/prerender/util.js +3 -20
  153. package/dist/js/treeshaking/ssr/react/withCallback/index.js +1 -2
  154. package/dist/js/treeshaking/ssr/serverRender/helmet.js +12 -11
  155. package/dist/js/treeshaking/ssr/serverRender/index.js +1 -9
  156. package/dist/js/treeshaking/ssr/serverRender/renderToStream/buildTemplate.after.js +5 -6
  157. package/dist/js/treeshaking/ssr/serverRender/renderToStream/bulidTemplate.before.js +46 -15
  158. package/dist/js/treeshaking/ssr/serverRender/renderToStream/index.js +9 -79
  159. package/dist/js/treeshaking/ssr/serverRender/renderToStream/loadable.js +3 -5
  160. package/dist/js/treeshaking/ssr/serverRender/renderToStream/renderToPipe.js +46 -35
  161. package/dist/js/treeshaking/ssr/serverRender/renderToStream/template.js +17 -24
  162. package/dist/js/treeshaking/ssr/serverRender/renderToString/entry.js +20 -73
  163. package/dist/js/treeshaking/ssr/serverRender/renderToString/index.js +2 -6
  164. package/dist/js/treeshaking/ssr/serverRender/renderToString/loadable.js +5 -16
  165. package/dist/js/treeshaking/ssr/serverRender/renderToString/reduce.js +0 -2
  166. package/dist/js/treeshaking/ssr/serverRender/renderToString/template.js +2 -18
  167. package/dist/js/treeshaking/ssr/serverRender/renderToString/type.js +0 -1
  168. package/dist/js/treeshaking/ssr/serverRender/utils.js +5 -10
  169. package/dist/js/treeshaking/ssr/utils.js +8 -17
  170. package/dist/js/treeshaking/state/cli/index.js +3 -10
  171. package/dist/js/treeshaking/state/runtime/plugin.js +2 -10
  172. package/dist/types/cli/index.d.ts +0 -2
  173. package/dist/types/core/compatible.d.ts +5 -5
  174. package/dist/types/core/index.d.ts +1 -1
  175. package/dist/types/core/loader/loaderManager.d.ts +0 -1
  176. package/dist/types/core/loader/useLoader.d.ts +0 -5
  177. package/dist/types/core/plugin.d.ts +1 -13
  178. package/dist/types/document/Body.d.ts +4 -0
  179. package/dist/types/document/DocumentContext.d.ts +13 -0
  180. package/dist/types/document/DocumentStructrueContext.d.ts +10 -0
  181. package/dist/types/document/Head.d.ts +5 -0
  182. package/dist/types/document/Html.d.ts +4 -0
  183. package/dist/types/document/Root.d.ts +8 -0
  184. package/dist/types/document/Scripts.d.ts +2 -0
  185. package/dist/types/document/cli/index.d.ts +3 -0
  186. package/dist/types/document/constants.d.ts +14 -0
  187. package/dist/types/document/index.d.ts +8 -0
  188. package/dist/types/exports/server.d.ts +3 -3
  189. package/dist/types/index.d.ts +1 -1
  190. package/dist/types/router/cli/index.d.ts +0 -2
  191. package/dist/types/router/runtime/root/index.d.ts +8 -0
  192. package/dist/types/router/runtime/root/load.d.ts +22 -0
  193. package/dist/types/router/runtime/types.d.ts +0 -2
  194. package/dist/types/runtime-context.d.ts +1 -0
  195. package/dist/types/ssr/cli/index.d.ts +0 -2
  196. package/dist/types/ssr/prefetch.d.ts +2 -2
  197. package/dist/types/ssr/serverRender/renderToStream/buildTemplate.after.d.ts +3 -2
  198. package/dist/types/ssr/serverRender/renderToStream/bulidTemplate.before.d.ts +2 -1
  199. package/dist/types/ssr/serverRender/renderToStream/renderToPipe.d.ts +3 -3
  200. package/dist/types/ssr/serverRender/renderToStream/template.d.ts +2 -2
  201. package/dist/types/ssr/serverRender/types.d.ts +1 -4
  202. package/dist/types/state/cli/index.d.ts +0 -2
  203. package/dist/types/state/types.d.ts +0 -1
  204. package/package.json +19 -11
@@ -2,28 +2,21 @@ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
2
  import { buildShellAfterTemplate } from "./buildTemplate.after";
3
3
  import { buildShellBeforeTemplate } from "./bulidTemplate.before";
4
4
  var HTML_SEPARATOR = '<!--<?- html ?>-->';
5
- export function createTemplates(context) {
6
- var getTemplates = function getTemplates() {
7
- var _ref = context.ssrContext,
8
- template = _ref.template;
9
-
10
- var _ref2 = template.split(HTML_SEPARATOR) || [],
11
- _ref3 = _slicedToArray(_ref2, 2),
12
- _ref3$ = _ref3[0],
13
- beforeAppTemplate = _ref3$ === void 0 ? '' : _ref3$,
14
- _ref3$2 = _ref3[1],
15
- afterAppHtmlTemplate = _ref3$2 === void 0 ? '' : _ref3$2; // templates injected some variables
16
-
17
-
18
- var builtBeforeTemplate = buildShellBeforeTemplate(beforeAppTemplate);
19
- var builtAfterTemplate = buildShellAfterTemplate(afterAppHtmlTemplate, {
20
- context: context
21
- });
22
- return {
23
- shellBefore: builtBeforeTemplate,
24
- shellAfter: builtAfterTemplate
25
- };
5
+ export var getTemplates = function getTemplates(context, renderLevel) {
6
+ var ssrContext = context.ssrContext;
7
+ var _ref = ssrContext.template.split(HTML_SEPARATOR) || [],
8
+ _ref2 = _slicedToArray(_ref, 2),
9
+ _ref2$ = _ref2[0],
10
+ beforeAppTemplate = _ref2$ === void 0 ? '' : _ref2$,
11
+ _ref2$2 = _ref2[1],
12
+ afterAppHtmlTemplate = _ref2$2 === void 0 ? '' : _ref2$2;
13
+ var builtBeforeTemplate = buildShellBeforeTemplate(beforeAppTemplate, context);
14
+ var builtAfterTemplate = buildShellAfterTemplate(afterAppHtmlTemplate, {
15
+ ssrContext: ssrContext,
16
+ renderLevel: renderLevel
17
+ });
18
+ return {
19
+ shellBefore: builtBeforeTemplate,
20
+ shellAfter: builtAfterTemplate
26
21
  };
27
-
28
- return getTemplates;
29
- }
22
+ };
@@ -11,11 +11,11 @@ import ReactHelmet from 'react-helmet';
11
11
  import helmetReplace from "../helmet";
12
12
  import { RenderLevel } from "../types";
13
13
  import { time } from "../utils";
14
+ import _prefetch from "../../prefetch";
14
15
  import { toFragments } from "./template";
15
16
  import { reduce } from "./reduce";
16
17
  import * as loadableRenderer from "./loadable";
17
18
  import * as styledComponentRenderer from "./styledComponent";
18
-
19
19
  var buildTemplateData = function buildTemplateData(context, data, renderLevel) {
20
20
  var request = context.request;
21
21
  return {
@@ -34,32 +34,22 @@ var buildTemplateData = function buildTemplateData(context, data, renderLevel) {
34
34
  renderLevel: renderLevel
35
35
  };
36
36
  };
37
-
38
37
  var Entry = /*#__PURE__*/function () {
39
38
  function Entry(options) {
40
39
  _classCallCheck(this, Entry);
41
-
42
40
  _defineProperty(this, "entryName", void 0);
43
-
44
41
  _defineProperty(this, "result", void 0);
45
-
46
42
  _defineProperty(this, "metrics", void 0);
47
-
48
43
  _defineProperty(this, "logger", void 0);
49
-
50
44
  _defineProperty(this, "App", void 0);
51
-
52
45
  _defineProperty(this, "fragments", void 0);
53
-
54
46
  _defineProperty(this, "pluginConfig", void 0);
55
-
56
47
  _defineProperty(this, "host", void 0);
57
-
58
48
  var ctx = options.ctx,
59
- config = options.config;
49
+ config = options.config;
60
50
  var entryName = ctx.entryName,
61
- template = ctx.template,
62
- host = ctx.request.host;
51
+ template = ctx.template,
52
+ host = ctx.request.host;
63
53
  this.fragments = toFragments(template, entryName);
64
54
  this.entryName = entryName;
65
55
  this.host = host;
@@ -76,62 +66,48 @@ var Entry = /*#__PURE__*/function () {
76
66
  }
77
67
  };
78
68
  }
79
-
80
69
  _createClass(Entry, [{
81
70
  key: "renderToHtml",
82
71
  value: function () {
83
72
  var _renderToHtml = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(context) {
84
73
  var ssrContext, prefetchData, html, templateData, SSRData, _iterator, _step, fragment, helmetData;
85
-
86
74
  return _regeneratorRuntime().wrap(function _callee$(_context) {
87
75
  while (1) {
88
76
  switch (_context.prev = _context.next) {
89
77
  case 0:
90
78
  ssrContext = context.ssrContext;
91
-
92
79
  if (!ssrContext.redirection.url) {
93
80
  _context.next = 3;
94
81
  break;
95
82
  }
96
-
97
83
  return _context.abrupt("return", '');
98
-
99
84
  case 3:
100
85
  _context.next = 5;
101
86
  return this.prefetch(context);
102
-
103
87
  case 5:
104
88
  prefetchData = _context.sent;
105
-
106
89
  if (!ssrContext.redirection.url) {
107
90
  _context.next = 8;
108
91
  break;
109
92
  }
110
-
111
93
  return _context.abrupt("return", '');
112
-
113
94
  case 8:
114
95
  if (this.result.renderLevel >= RenderLevel.SERVER_PREFETCH) {
115
96
  this.result.html = this.renderToString(context);
116
97
  }
117
-
118
98
  if (!ssrContext.redirection.url) {
119
99
  _context.next = 11;
120
100
  break;
121
101
  }
122
-
123
102
  return _context.abrupt("return", '');
124
-
125
103
  case 11:
126
104
  html = '';
127
105
  templateData = buildTemplateData(ssrContext, prefetchData, this.result.renderLevel);
128
106
  SSRData = this.getSSRDataScript(templateData);
129
107
  _iterator = _createForOfIteratorHelper(this.fragments);
130
-
131
108
  try {
132
109
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
133
110
  fragment = _step.value;
134
-
135
111
  if (fragment.isVariable && fragment.content === 'SSRDataScript') {
136
112
  html += fragment.getValue(SSRData);
137
113
  } else {
@@ -143,10 +119,8 @@ var Entry = /*#__PURE__*/function () {
143
119
  } finally {
144
120
  _iterator.f();
145
121
  }
146
-
147
122
  helmetData = ReactHelmet.renderStatic();
148
123
  return _context.abrupt("return", helmetData ? helmetReplace(html, helmetData) : html);
149
-
150
124
  case 18:
151
125
  case "end":
152
126
  return _context.stop();
@@ -154,73 +128,50 @@ var Entry = /*#__PURE__*/function () {
154
128
  }
155
129
  }, _callee, this);
156
130
  }));
157
-
158
131
  function renderToHtml(_x) {
159
132
  return _renderToHtml.apply(this, arguments);
160
133
  }
161
-
162
134
  return renderToHtml;
163
135
  }()
164
136
  }, {
165
137
  key: "prefetch",
166
138
  value: function () {
167
- var _prefetch = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(context) {
168
- var prefetch, prefetchData, end, prefetchCost;
139
+ var _prefetch2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(context) {
140
+ var prefetchData, end, prefetchCost;
169
141
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
170
142
  while (1) {
171
143
  switch (_context2.prev = _context2.next) {
172
144
  case 0:
173
- prefetch = this.App.prefetch;
174
145
  end = time();
175
- _context2.prev = 2;
176
-
177
- if (!prefetch) {
178
- _context2.next = 9;
179
- break;
180
- }
181
-
182
- _context2.next = 6;
183
- return prefetch(context);
184
-
185
- case 6:
186
- _context2.t0 = _context2.sent;
187
- _context2.next = 10;
188
- break;
189
-
190
- case 9:
191
- _context2.t0 = null;
192
-
193
- case 10:
194
- prefetchData = _context2.t0;
146
+ _context2.prev = 1;
147
+ _context2.next = 4;
148
+ return _prefetch(this.App, context);
149
+ case 4:
150
+ prefetchData = _context2.sent;
195
151
  this.result.renderLevel = RenderLevel.SERVER_PREFETCH;
196
152
  prefetchCost = end();
197
153
  this.logger.debug("App Prefetch cost = %d ms", prefetchCost);
198
154
  this.metrics.emitTimer('app.prefetch.cost', prefetchCost);
199
- _context2.next = 22;
155
+ _context2.next = 16;
200
156
  break;
201
-
202
- case 17:
203
- _context2.prev = 17;
204
- _context2.t1 = _context2["catch"](2);
157
+ case 11:
158
+ _context2.prev = 11;
159
+ _context2.t0 = _context2["catch"](1);
205
160
  this.result.renderLevel = RenderLevel.CLIENT_RENDER;
206
- this.logger.error('App Prefetch Render', _context2.t1);
161
+ this.logger.error('App Prefetch Render', _context2.t0);
207
162
  this.metrics.emitCounter('app.prefetch.render.error', 1);
208
-
209
- case 22:
163
+ case 16:
210
164
  return _context2.abrupt("return", prefetchData || {});
211
-
212
- case 23:
165
+ case 17:
213
166
  case "end":
214
167
  return _context2.stop();
215
168
  }
216
169
  }
217
- }, _callee2, this, [[2, 17]]);
170
+ }, _callee2, this, [[1, 11]]);
218
171
  }));
219
-
220
172
  function prefetch(_x2) {
221
- return _prefetch.apply(this, arguments);
173
+ return _prefetch2.apply(this, arguments);
222
174
  }
223
-
224
175
  return prefetch;
225
176
  }()
226
177
  }, {
@@ -229,7 +180,6 @@ var Entry = /*#__PURE__*/function () {
229
180
  var html = '';
230
181
  var end = time();
231
182
  var ssrContext = context.ssrContext;
232
-
233
183
  try {
234
184
  var App = /*#__PURE__*/React.createElement(this.App, {
235
185
  context: Object.assign(context, {
@@ -254,7 +204,6 @@ var Entry = /*#__PURE__*/function () {
254
204
  this.logger.error('App Render To HTML', e);
255
205
  this.metrics.emitCounter('app.render.html.error', 1);
256
206
  }
257
-
258
207
  return html;
259
208
  }
260
209
  }, {
@@ -267,8 +216,6 @@ var Entry = /*#__PURE__*/function () {
267
216
  };
268
217
  }
269
218
  }]);
270
-
271
219
  return Entry;
272
220
  }();
273
-
274
221
  export { Entry as default };
@@ -6,8 +6,8 @@ import { time } from "../utils";
6
6
  import SSREntry from "./entry";
7
7
  export var render = function render(_ref) {
8
8
  var App = _ref.App,
9
- context = _ref.context,
10
- config = _ref.config;
9
+ context = _ref.context,
10
+ config = _ref.config;
11
11
  var ssrContext = context.ssrContext;
12
12
  return run(ssrContext.request.headers, /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
13
13
  var entry, end, html, cost, cacheConfig;
@@ -24,20 +24,16 @@ export var render = function render(_ref) {
24
24
  end = time();
25
25
  _context.next = 5;
26
26
  return entry.renderToHtml(context);
27
-
28
27
  case 5:
29
28
  html = _context.sent;
30
29
  cost = end();
31
30
  entry.logger.info('App Render Total cost = %d ms', cost);
32
31
  entry.metrics.emitTimer('app.render.cost', cost);
33
32
  cacheConfig = PreRender.config();
34
-
35
33
  if (cacheConfig) {
36
34
  context.ssrContext.cacheConfig = cacheConfig;
37
35
  }
38
-
39
36
  return _context.abrupt("return", html);
40
-
41
37
  case 12:
42
38
  case "end":
43
39
  return _context.stop();
@@ -2,26 +2,21 @@ import _createForOfIteratorHelper from "@babel/runtime/helpers/esm/createForOfIt
2
2
  import { ChunkExtractor } from '@loadable/server';
3
3
  import { isCrossOrigin } from "../../utils";
4
4
  import { getLoadableScripts } from "../utils";
5
-
6
5
  var extname = function extname(uri) {
7
6
  if (typeof uri !== 'string' || !uri.includes('.')) {
8
7
  return '';
9
8
  }
10
-
11
9
  return ".".concat(uri === null || uri === void 0 ? void 0 : uri.split('.').pop()) || '';
12
10
  };
13
-
14
11
  export var toHtml = function toHtml(jsx, renderer, next) {
15
12
  var stats = renderer.stats,
16
- chunksMap = renderer.result.chunksMap,
17
- host = renderer.host,
18
- _renderer$config = renderer.config,
19
- config = _renderer$config === void 0 ? {} : _renderer$config;
20
-
13
+ chunksMap = renderer.result.chunksMap,
14
+ host = renderer.host,
15
+ _renderer$config = renderer.config,
16
+ config = _renderer$config === void 0 ? {} : _renderer$config;
21
17
  if (!stats || chunksMap.js) {
22
18
  return next(jsx);
23
19
  }
24
-
25
20
  var extractor = new ChunkExtractor({
26
21
  stats: stats,
27
22
  entrypoints: [renderer.entryName]
@@ -29,23 +24,18 @@ export var toHtml = function toHtml(jsx, renderer, next) {
29
24
  var html = next(extractor.collectChunks(jsx));
30
25
  var chunks = extractor.getChunkAssets(extractor.chunks);
31
26
  chunksMap.js = (chunksMap.js || '') + getLoadableScripts(extractor);
32
-
33
27
  var _iterator = _createForOfIteratorHelper(chunks),
34
- _step;
35
-
28
+ _step;
36
29
  try {
37
30
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
38
31
  var v = _step.value;
39
32
  var fileType = extname(v.url).slice(1);
40
-
41
33
  if (fileType === 'js') {
42
34
  var props = [];
43
35
  var crossorigin = config.crossorigin;
44
-
45
36
  if (crossorigin && isCrossOrigin(v.url, host)) {
46
37
  props.push("crossorigin=\"".concat(crossorigin === true ? 'anonymous' : crossorigin, "\""));
47
38
  }
48
-
49
39
  chunksMap[fileType] += "<script src=\"".concat(v.url, "\" ").concat(props.join(' '), "></script>");
50
40
  } else if (fileType === 'css') {
51
41
  chunksMap[fileType] += "<link href=\"".concat(v.url, "\" rel=\"stylesheet\" />");
@@ -56,6 +46,5 @@ export var toHtml = function toHtml(jsx, renderer, next) {
56
46
  } finally {
57
47
  _iterator.f();
58
48
  }
59
-
60
49
  return html;
61
50
  };
@@ -1,11 +1,9 @@
1
1
  export function reduce(jsx, renderer, middleware) {
2
2
  var index = 0;
3
-
4
3
  var createNext = function createNext() {
5
4
  return function (App) {
6
5
  return middleware[index++](App, renderer, createNext());
7
6
  };
8
7
  };
9
-
10
8
  return createNext()(jsx);
11
9
  }
@@ -12,34 +12,24 @@ var ENCODE_HTML_RULES = {
12
12
  "'": '&#39;'
13
13
  };
14
14
  var MATCH_HTML = /[&<>'"]/g;
15
-
16
15
  function encodeChar(c) {
17
16
  return ENCODE_HTML_RULES[c] || c;
18
17
  }
19
-
20
18
  function escape(str) {
21
19
  return str.replace(MATCH_HTML, encodeChar);
22
20
  }
23
-
24
21
  export var Fragment = /*#__PURE__*/function () {
25
22
  function Fragment(template) {
26
23
  _classCallCheck(this, Fragment);
27
-
28
24
  _defineProperty(this, "isVariable", void 0);
29
-
30
25
  _defineProperty(this, "content", void 0);
31
-
32
26
  _defineProperty(this, "filters", void 0);
33
-
34
27
  _defineProperty(this, "path", void 0);
35
-
36
28
  var match = VARIABLE_REG_EXP.exec(template);
37
-
38
29
  if (match) {
39
30
  var _match = _slicedToArray(match, 3),
40
- filterFlag = _match[1],
41
- content = _match[2];
42
-
31
+ filterFlag = _match[1],
32
+ content = _match[2];
43
33
  this.isVariable = true;
44
34
  this.content = content;
45
35
  this.filters = [Fragment.filterMap[filterFlag]];
@@ -51,7 +41,6 @@ export var Fragment = /*#__PURE__*/function () {
51
41
  this.path = [];
52
42
  }
53
43
  }
54
-
55
44
  _createClass(Fragment, [{
56
45
  key: "getValue",
57
46
  value: function getValue(data) {
@@ -63,27 +52,22 @@ export var Fragment = /*#__PURE__*/function () {
63
52
  return n(p);
64
53
  }, value != null ? value : '');
65
54
  }
66
-
67
55
  return this.content;
68
56
  }
69
57
  }]);
70
-
71
58
  return Fragment;
72
59
  }();
73
-
74
60
  _defineProperty(Fragment, "filterMap", {
75
61
  '=': escape,
76
62
  '-': function _(v) {
77
63
  return v;
78
64
  }
79
65
  });
80
-
81
66
  var fragmentListMap = {};
82
67
  export function toFragments(template, entryName) {
83
68
  if (fragmentListMap[entryName]) {
84
69
  return fragmentListMap[entryName];
85
70
  }
86
-
87
71
  var fragmentList = template.split(VARIABLE_SPLITTER).filter(function (v) {
88
72
  return Boolean(v);
89
73
  }).map(function (v) {
@@ -1,5 +1,4 @@
1
1
  export var RenderLevel;
2
-
3
2
  (function (RenderLevel) {
4
3
  RenderLevel[RenderLevel["CLIENT_RENDER"] = 0] = "CLIENT_RENDER";
5
4
  RenderLevel[RenderLevel["SERVER_PREFETCH"] = 1] = "SERVER_PREFETCH";
@@ -3,28 +3,23 @@ export function getLoadableScripts(extractor) {
3
3
  var check = function check(scripts) {
4
4
  return (scripts || '').includes('__LOADABLE_REQUIRED_CHUNKS___ext');
5
5
  };
6
-
7
6
  var scripts = extractor.getScriptTags();
8
-
9
7
  if (!check(scripts)) {
10
8
  return '';
11
9
  }
12
-
13
- return scripts.split('</script>') // 前两个 script为 loadable 必须的 script
10
+ return scripts.split('</script>')
11
+ // 前两个 script为 loadable 必须的 script
14
12
  .slice(0, 2).map(function (i) {
15
13
  return "".concat(i, "</script>");
16
14
  }).join('');
17
15
  }
18
-
19
16
  var getLatency = function getLatency(hrtime) {
20
17
  var _process$hrtime = process.hrtime(hrtime),
21
- _process$hrtime2 = _slicedToArray(_process$hrtime, 2),
22
- s = _process$hrtime2[0],
23
- ns = _process$hrtime2[1];
24
-
18
+ _process$hrtime2 = _slicedToArray(_process$hrtime, 2),
19
+ s = _process$hrtime2[0],
20
+ ns = _process$hrtime2[1];
25
21
  return s * 1e3 + ns / 1e6;
26
22
  };
27
-
28
23
  export var time = function time() {
29
24
  var hrtime = process.hrtime();
30
25
  return function () {
@@ -5,37 +5,31 @@ export var isReact18 = function isReact18() {
5
5
  };
6
6
  export var formatServer = function formatServer(request) {
7
7
  var _ref = request.headers || {},
8
- _ref$cookie = _ref.cookie,
9
- cookie = _ref$cookie === void 0 ? '' : _ref$cookie,
10
- _ref$userAgent = _ref['user-agent'],
11
- userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent,
12
- referer = _ref.referer;
13
-
8
+ _ref$cookie = _ref.cookie,
9
+ cookie = _ref$cookie === void 0 ? '' : _ref$cookie,
10
+ _ref$userAgent = _ref['user-agent'],
11
+ userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent,
12
+ referer = _ref.referer;
14
13
  return _objectSpread({
15
14
  cookie: cookie,
16
15
  userAgent: userAgent,
17
16
  referer: referer
18
17
  }, request);
19
18
  };
20
-
21
19
  var getQuery = function getQuery() {
22
20
  return window.location.search.substring(1).split('&').reduce(function (res, item) {
23
21
  var _item$split = item.split('='),
24
- _item$split2 = _slicedToArray(_item$split, 2),
25
- key = _item$split2[0],
26
- value = _item$split2[1];
27
-
22
+ _item$split2 = _slicedToArray(_item$split, 2),
23
+ key = _item$split2[0],
24
+ value = _item$split2[1];
28
25
  if (key) {
29
26
  res[key] = value;
30
27
  }
31
-
32
28
  return res;
33
29
  }, {});
34
30
  };
35
-
36
31
  export var formatClient = function formatClient(request) {
37
32
  var _request$headers, _request$headers2;
38
-
39
33
  return {
40
34
  params: request.params || {},
41
35
  host: request.host || location.host,
@@ -57,18 +51,15 @@ export var mockResponse = function mockResponse() {
57
51
  status: function status() {
58
52
  console.warn('response.status() can only be used in the server side');
59
53
  },
60
-
61
54
  get locals() {
62
55
  console.warn('response.locals can only be used in the server side');
63
56
  return {};
64
57
  }
65
-
66
58
  };
67
59
  };
68
60
  export var isCrossOrigin = function isCrossOrigin() {
69
61
  var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
70
62
  var base = arguments.length > 1 ? arguments[1] : undefined;
71
-
72
63
  if (url.startsWith('/') || url.startsWith('./')) {
73
64
  return false;
74
65
  } else if (!url.includes(base)) {
@@ -22,18 +22,14 @@ export default (function () {
22
22
  },
23
23
  modifyEntryImports: function modifyEntryImports(_ref) {
24
24
  var _getEntryOptions;
25
-
26
25
  var entrypoint = _ref.entrypoint,
27
- imports = _ref.imports;
26
+ imports = _ref.imports;
28
27
  var entryName = entrypoint.entryName;
29
28
  var userConfig = api.useResolvedConfigContext();
30
-
31
29
  var _api$useAppContext = api.useAppContext(),
32
- packageName = _api$useAppContext.packageName;
33
-
30
+ packageName = _api$useAppContext.packageName;
34
31
  var stateConfig = (_getEntryOptions = getEntryOptions(entryName, userConfig.runtime, userConfig.runtimeByEntries, packageName)) === null || _getEntryOptions === void 0 ? void 0 : _getEntryOptions.state;
35
32
  stateConfigMap.set(entryName, stateConfig);
36
-
37
33
  if (stateConfig) {
38
34
  imports.push({
39
35
  value: '@modern-js/runtime/plugins',
@@ -42,7 +38,6 @@ export default (function () {
42
38
  }]
43
39
  });
44
40
  }
45
-
46
41
  return {
47
42
  entrypoint: entrypoint,
48
43
  imports: imports
@@ -50,16 +45,14 @@ export default (function () {
50
45
  },
51
46
  modifyEntryRuntimePlugins: function modifyEntryRuntimePlugins(_ref2) {
52
47
  var entrypoint = _ref2.entrypoint,
53
- plugins = _ref2.plugins;
48
+ plugins = _ref2.plugins;
54
49
  var stateOptions = stateConfigMap.get(entrypoint.entryName);
55
-
56
50
  if (stateOptions) {
57
51
  plugins.push({
58
52
  name: PLUGIN_IDENTIFIER,
59
53
  options: "".concat(JSON.stringify(stateConfigMap.get(entrypoint.entryName)))
60
54
  });
61
55
  }
62
-
63
56
  return {
64
57
  entrypoint: entrypoint,
65
58
  plugins: plugins
@@ -13,7 +13,6 @@ var StatePluginHandleMap = {
13
13
  autoActions: autoActions,
14
14
  devtools: devtools
15
15
  };
16
-
17
16
  var getStoreConfig = function getStoreConfig(config) {
18
17
  var internalPlugins = ['immer', 'effects', 'autoActions', 'devtools'];
19
18
  var plugins = [];
@@ -26,7 +25,6 @@ var getStoreConfig = function getStoreConfig(config) {
26
25
  plugins: plugins
27
26
  };
28
27
  };
29
-
30
28
  var state = function state(config) {
31
29
  return {
32
30
  name: '@modern-js/plugin-state',
@@ -34,7 +32,6 @@ var state = function state(config) {
34
32
  return {
35
33
  hoc: function hoc(_ref, next) {
36
34
  var App = _ref.App;
37
-
38
35
  var getStateApp = function getStateApp(props) {
39
36
  // eslint-disable-next-line react-hooks/rules-of-hooks
40
37
  var context = useContext(RuntimeReactContext);
@@ -44,7 +41,6 @@ var state = function state(config) {
44
41
  children: /*#__PURE__*/_jsx(App, _objectSpread({}, props))
45
42
  });
46
43
  };
47
-
48
44
  return next({
49
45
  App: hoistNonReactStatics(getStateApp, App)
50
46
  });
@@ -52,21 +48,18 @@ var state = function state(config) {
52
48
  init: function init(_ref2, next) {
53
49
  var context = _ref2.context;
54
50
  var storeConfig = getStoreConfig(config || {});
55
-
56
51
  if (isBrowser()) {
57
52
  var _window, _window$_SSR_DATA, _window$_SSR_DATA$dat;
58
-
59
53
  storeConfig.initialState = storeConfig.initialState || ((_window = window) === null || _window === void 0 ? void 0 : (_window$_SSR_DATA = _window._SSR_DATA) === null || _window$_SSR_DATA === void 0 ? void 0 : (_window$_SSR_DATA$dat = _window$_SSR_DATA.data) === null || _window$_SSR_DATA$dat === void 0 ? void 0 : _window$_SSR_DATA$dat.storeState) || {};
60
54
  }
61
-
62
55
  context.store = createStore(storeConfig);
63
- next({
56
+ return next({
64
57
  context: context
65
58
  });
66
59
  },
67
60
  pickContext: function pickContext(_ref3, next) {
68
61
  var context = _ref3.context,
69
- pickedContext = _ref3.pickedContext;
62
+ pickedContext = _ref3.pickedContext;
70
63
  return next({
71
64
  context: context,
72
65
  pickedContext: _objectSpread(_objectSpread({}, pickedContext), {}, {
@@ -78,6 +71,5 @@ var state = function state(config) {
78
71
  }
79
72
  };
80
73
  };
81
-
82
74
  export default state;
83
75
  export * from "../plugins";