@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
@@ -1,5 +1,4 @@
1
1
  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; }
2
-
3
2
  import React from 'react';
4
3
  import ReactDomServer from 'react-dom/server';
5
4
  import serialize from 'serialize-javascript';
@@ -7,11 +6,11 @@ import ReactHelmet from 'react-helmet';
7
6
  import helmetReplace from "../helmet";
8
7
  import { RenderLevel } from "../types";
9
8
  import { time } from "../utils";
9
+ import prefetch from "../../prefetch";
10
10
  import { toFragments } from "./template";
11
11
  import { reduce } from "./reduce";
12
12
  import * as loadableRenderer from "./loadable";
13
13
  import * as styledComponentRenderer from "./styledComponent";
14
-
15
14
  const buildTemplateData = (context, data, renderLevel) => {
16
15
  const {
17
16
  request
@@ -32,25 +31,16 @@ const buildTemplateData = (context, data, renderLevel) => {
32
31
  renderLevel
33
32
  };
34
33
  };
35
-
36
34
  export default class Entry {
37
35
  constructor(options) {
38
36
  _defineProperty(this, "entryName", void 0);
39
-
40
37
  _defineProperty(this, "result", void 0);
41
-
42
38
  _defineProperty(this, "metrics", void 0);
43
-
44
39
  _defineProperty(this, "logger", void 0);
45
-
46
40
  _defineProperty(this, "App", void 0);
47
-
48
41
  _defineProperty(this, "fragments", void 0);
49
-
50
42
  _defineProperty(this, "pluginConfig", void 0);
51
-
52
43
  _defineProperty(this, "host", void 0);
53
-
54
44
  const {
55
45
  ctx,
56
46
  config
@@ -78,32 +68,24 @@ export default class Entry {
78
68
  }
79
69
  };
80
70
  }
81
-
82
71
  async renderToHtml(context) {
83
72
  const ssrContext = context.ssrContext;
84
-
85
73
  if (ssrContext.redirection.url) {
86
74
  return '';
87
75
  }
88
-
89
76
  const prefetchData = await this.prefetch(context);
90
-
91
77
  if (ssrContext.redirection.url) {
92
78
  return '';
93
79
  }
94
-
95
80
  if (this.result.renderLevel >= RenderLevel.SERVER_PREFETCH) {
96
81
  this.result.html = this.renderToString(context);
97
82
  }
98
-
99
83
  if (ssrContext.redirection.url) {
100
84
  return '';
101
85
  }
102
-
103
86
  let html = '';
104
87
  const templateData = buildTemplateData(ssrContext, prefetchData, this.result.renderLevel);
105
88
  const SSRData = this.getSSRDataScript(templateData);
106
-
107
89
  for (const fragment of this.fragments) {
108
90
  if (fragment.isVariable && fragment.content === 'SSRDataScript') {
109
91
  html += fragment.getValue(SSRData);
@@ -111,22 +93,14 @@ export default class Entry {
111
93
  html += fragment.getValue(this.result);
112
94
  }
113
95
  }
114
-
115
96
  const helmetData = ReactHelmet.renderStatic();
116
97
  return helmetData ? helmetReplace(html, helmetData) : html;
117
98
  }
118
-
119
99
  async prefetch(context) {
120
- const {
121
- App: {
122
- prefetch
123
- }
124
- } = this;
125
100
  let prefetchData;
126
101
  const end = time();
127
-
128
102
  try {
129
- prefetchData = prefetch ? await prefetch(context) : null;
103
+ prefetchData = await prefetch(this.App, context);
130
104
  this.result.renderLevel = RenderLevel.SERVER_PREFETCH;
131
105
  const prefetchCost = end();
132
106
  this.logger.debug(`App Prefetch cost = %d ms`, prefetchCost);
@@ -136,17 +110,14 @@ export default class Entry {
136
110
  this.logger.error('App Prefetch Render', e);
137
111
  this.metrics.emitCounter('app.prefetch.render.error', 1);
138
112
  }
139
-
140
113
  return prefetchData || {};
141
114
  }
142
-
143
115
  renderToString(context) {
144
116
  let html = '';
145
117
  const end = time();
146
118
  const {
147
119
  ssrContext
148
120
  } = context;
149
-
150
121
  try {
151
122
  const App = /*#__PURE__*/React.createElement(this.App, {
152
123
  context: Object.assign(context, {
@@ -169,10 +140,8 @@ export default class Entry {
169
140
  this.logger.error('App Render To HTML', e);
170
141
  this.metrics.emitCounter('app.render.html.error', 1);
171
142
  }
172
-
173
143
  return html;
174
144
  }
175
-
176
145
  getSSRDataScript(templateData) {
177
146
  return {
178
147
  SSRDataScript: `
@@ -182,5 +151,4 @@ export default class Entry {
182
151
  `
183
152
  };
184
153
  }
185
-
186
154
  }
@@ -21,11 +21,9 @@ export const render = ({
21
21
  entry.logger.info('App Render Total cost = %d ms', cost);
22
22
  entry.metrics.emitTimer('app.render.cost', cost);
23
23
  const cacheConfig = PreRender.config();
24
-
25
24
  if (cacheConfig) {
26
25
  context.ssrContext.cacheConfig = cacheConfig;
27
26
  }
28
-
29
27
  return html;
30
28
  });
31
29
  };
@@ -1,15 +1,12 @@
1
1
  import { ChunkExtractor } from '@loadable/server';
2
2
  import { isCrossOrigin } from "../../utils";
3
3
  import { getLoadableScripts } from "../utils";
4
-
5
4
  const extname = uri => {
6
5
  if (typeof uri !== 'string' || !uri.includes('.')) {
7
6
  return '';
8
7
  }
9
-
10
8
  return `.${uri === null || uri === void 0 ? void 0 : uri.split('.').pop()}` || '';
11
9
  };
12
-
13
10
  export const toHtml = (jsx, renderer, next) => {
14
11
  const {
15
12
  stats,
@@ -19,11 +16,9 @@ export const toHtml = (jsx, renderer, next) => {
19
16
  host,
20
17
  config = {}
21
18
  } = renderer;
22
-
23
19
  if (!stats || chunksMap.js) {
24
20
  return next(jsx);
25
21
  }
26
-
27
22
  const extractor = new ChunkExtractor({
28
23
  stats,
29
24
  entrypoints: [renderer.entryName]
@@ -31,25 +26,20 @@ export const toHtml = (jsx, renderer, next) => {
31
26
  const html = next(extractor.collectChunks(jsx));
32
27
  const chunks = extractor.getChunkAssets(extractor.chunks);
33
28
  chunksMap.js = (chunksMap.js || '') + getLoadableScripts(extractor);
34
-
35
29
  for (const v of chunks) {
36
30
  const fileType = extname(v.url).slice(1);
37
-
38
31
  if (fileType === 'js') {
39
32
  const props = [];
40
33
  const {
41
34
  crossorigin
42
35
  } = config;
43
-
44
36
  if (crossorigin && isCrossOrigin(v.url, host)) {
45
37
  props.push(`crossorigin="${crossorigin === true ? 'anonymous' : crossorigin}"`);
46
38
  }
47
-
48
39
  chunksMap[fileType] += `<script src="${v.url}" ${props.join(' ')}></script>`;
49
40
  } else if (fileType === 'css') {
50
41
  chunksMap[fileType] += `<link href="${v.url}" rel="stylesheet" />`;
51
42
  }
52
43
  }
53
-
54
44
  return html;
55
45
  };
@@ -1,7 +1,5 @@
1
1
  export function reduce(jsx, renderer, middleware) {
2
2
  let index = 0;
3
-
4
3
  const createNext = () => App => middleware[index++](App, renderer, createNext());
5
-
6
4
  return createNext()(jsx);
7
5
  }
@@ -1,5 +1,4 @@
1
1
  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; }
2
-
3
2
  const VARIABLE_REG_EXP = /<!--<\?([-=+])\s*(.*?)\s*\?>-->/;
4
3
  const VARIABLE_SPLITTER = /(<!--<\?.*?\?>-->)/;
5
4
  const ENCODE_HTML_RULES = {
@@ -10,27 +9,19 @@ const ENCODE_HTML_RULES = {
10
9
  "'": '&#39;'
11
10
  };
12
11
  const MATCH_HTML = /[&<>'"]/g;
13
-
14
12
  function encodeChar(c) {
15
13
  return ENCODE_HTML_RULES[c] || c;
16
14
  }
17
-
18
15
  function escape(str) {
19
16
  return str.replace(MATCH_HTML, encodeChar);
20
17
  }
21
-
22
18
  export class Fragment {
23
19
  constructor(template) {
24
20
  _defineProperty(this, "isVariable", void 0);
25
-
26
21
  _defineProperty(this, "content", void 0);
27
-
28
22
  _defineProperty(this, "filters", void 0);
29
-
30
23
  _defineProperty(this, "path", void 0);
31
-
32
24
  const match = VARIABLE_REG_EXP.exec(template);
33
-
34
25
  if (match) {
35
26
  const [, filterFlag, content] = match;
36
27
  this.isVariable = true;
@@ -44,29 +35,23 @@ export class Fragment {
44
35
  this.path = [];
45
36
  }
46
37
  }
47
-
48
38
  getValue(data) {
49
39
  if (this.isVariable) {
50
40
  const value = this.path.reduce((p, n) => p != null ? p[n] : p, data);
51
41
  return this.filters.reduce((p, n) => n(p), value != null ? value : '');
52
42
  }
53
-
54
43
  return this.content;
55
44
  }
56
-
57
45
  }
58
-
59
46
  _defineProperty(Fragment, "filterMap", {
60
47
  '=': escape,
61
48
  '-': v => v
62
49
  });
63
-
64
50
  const fragmentListMap = {};
65
51
  export function toFragments(template, entryName) {
66
52
  if (fragmentListMap[entryName]) {
67
53
  return fragmentListMap[entryName];
68
54
  }
69
-
70
55
  const fragmentList = template.split(VARIABLE_SPLITTER).filter(v => Boolean(v)).map(v => new Fragment(v));
71
56
  fragmentListMap[entryName] = fragmentList;
72
57
  return fragmentList;
@@ -1,5 +1,4 @@
1
1
  export let RenderLevel;
2
-
3
2
  (function (RenderLevel) {
4
3
  RenderLevel[RenderLevel["CLIENT_RENDER"] = 0] = "CLIENT_RENDER";
5
4
  RenderLevel[RenderLevel["SERVER_PREFETCH"] = 1] = "SERVER_PREFETCH";
@@ -1,21 +1,17 @@
1
1
  export function getLoadableScripts(extractor) {
2
2
  const check = scripts => (scripts || '').includes('__LOADABLE_REQUIRED_CHUNKS___ext');
3
-
4
3
  const scripts = extractor.getScriptTags();
5
-
6
4
  if (!check(scripts)) {
7
5
  return '';
8
6
  }
9
-
10
- return scripts.split('</script>') // 前两个 script为 loadable 必须的 script
7
+ return scripts.split('</script>')
8
+ // 前两个 script为 loadable 必须的 script
11
9
  .slice(0, 2).map(i => `${i}</script>`).join('');
12
10
  }
13
-
14
11
  const getLatency = hrtime => {
15
12
  const [s, ns] = process.hrtime(hrtime);
16
13
  return s * 1e3 + ns / 1e6;
17
14
  };
18
-
19
15
  export const time = () => {
20
16
  const hrtime = process.hrtime();
21
17
  return () => {
@@ -1,9 +1,6 @@
1
1
  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; }
2
-
3
2
  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; }
4
-
5
3
  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; }
6
-
7
4
  export const isReact18 = () => process.env.IS_REACT18 === 'true';
8
5
  export const formatServer = request => {
9
6
  const {
@@ -17,20 +14,15 @@ export const formatServer = request => {
17
14
  referer
18
15
  }, request);
19
16
  };
20
-
21
17
  const getQuery = () => window.location.search.substring(1).split('&').reduce((res, item) => {
22
18
  const [key, value] = item.split('=');
23
-
24
19
  if (key) {
25
20
  res[key] = value;
26
21
  }
27
-
28
22
  return res;
29
23
  }, {});
30
-
31
24
  export const formatClient = request => {
32
25
  var _request$headers, _request$headers2;
33
-
34
26
  return {
35
27
  params: request.params || {},
36
28
  host: request.host || location.host,
@@ -49,16 +41,13 @@ export const mockResponse = () => {
49
41
  setHeader() {
50
42
  console.warn('response.setHeader() can only be used in the server side');
51
43
  },
52
-
53
44
  status() {
54
45
  console.warn('response.status() can only be used in the server side');
55
46
  },
56
-
57
47
  get locals() {
58
48
  console.warn('response.locals can only be used in the server side');
59
49
  return {};
60
50
  }
61
-
62
51
  };
63
52
  };
64
53
  export const isCrossOrigin = (url = '', base) => {
@@ -19,13 +19,11 @@ export default (() => ({
19
19
  }
20
20
  };
21
21
  },
22
-
23
22
  modifyEntryImports({
24
23
  entrypoint,
25
24
  imports
26
25
  }) {
27
26
  var _getEntryOptions;
28
-
29
27
  const {
30
28
  entryName
31
29
  } = entrypoint;
@@ -35,7 +33,6 @@ export default (() => ({
35
33
  } = api.useAppContext();
36
34
  const stateConfig = (_getEntryOptions = getEntryOptions(entryName, userConfig.runtime, userConfig.runtimeByEntries, packageName)) === null || _getEntryOptions === void 0 ? void 0 : _getEntryOptions.state;
37
35
  stateConfigMap.set(entryName, stateConfig);
38
-
39
36
  if (stateConfig) {
40
37
  imports.push({
41
38
  value: '@modern-js/runtime/plugins',
@@ -44,40 +41,33 @@ export default (() => ({
44
41
  }]
45
42
  });
46
43
  }
47
-
48
44
  return {
49
45
  entrypoint,
50
46
  imports
51
47
  };
52
48
  },
53
-
54
49
  modifyEntryRuntimePlugins({
55
50
  entrypoint,
56
51
  plugins
57
52
  }) {
58
53
  const stateOptions = stateConfigMap.get(entrypoint.entryName);
59
-
60
54
  if (stateOptions) {
61
55
  plugins.push({
62
56
  name: PLUGIN_IDENTIFIER,
63
57
  options: `${JSON.stringify(stateConfigMap.get(entrypoint.entryName))}`
64
58
  });
65
59
  }
66
-
67
60
  return {
68
61
  entrypoint,
69
62
  plugins
70
63
  };
71
64
  },
72
-
73
65
  validateSchema() {
74
66
  return PLUGIN_SCHEMAS['@modern-js/plugin-state'];
75
67
  },
76
-
77
68
  addRuntimeExports() {
78
69
  pluginsExportsUtils.addExport(`export { default as state } from '@modern-js/runtime/model'`);
79
70
  }
80
-
81
71
  };
82
72
  }
83
73
  }));
@@ -1,9 +1,6 @@
1
1
  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; }
2
-
3
2
  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; }
4
-
5
3
  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; }
6
-
7
4
  import { useContext } from 'react';
8
5
  import { createStore } from '@modern-js-reduck/store';
9
6
  import { Provider } from '@modern-js-reduck/react';
@@ -18,7 +15,6 @@ const StatePluginHandleMap = {
18
15
  autoActions,
19
16
  devtools
20
17
  };
21
-
22
18
  const getStoreConfig = config => {
23
19
  const internalPlugins = ['immer', 'effects', 'autoActions', 'devtools'];
24
20
  const plugins = [];
@@ -27,7 +23,6 @@ const getStoreConfig = config => {
27
23
  plugins
28
24
  };
29
25
  };
30
-
31
26
  const state = config => ({
32
27
  name: '@modern-js/plugin-state',
33
28
  setup: () => {
@@ -44,29 +39,23 @@ const state = config => ({
44
39
  children: /*#__PURE__*/_jsx(App, _objectSpread({}, props))
45
40
  });
46
41
  };
47
-
48
42
  return next({
49
43
  App: hoistNonReactStatics(getStateApp, App)
50
44
  });
51
45
  },
52
-
53
46
  init({
54
47
  context
55
48
  }, next) {
56
49
  const storeConfig = getStoreConfig(config || {});
57
-
58
50
  if (isBrowser()) {
59
51
  var _window, _window$_SSR_DATA, _window$_SSR_DATA$dat;
60
-
61
52
  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) || {};
62
53
  }
63
-
64
54
  context.store = createStore(storeConfig);
65
- next({
55
+ return next({
66
56
  context
67
57
  });
68
58
  },
69
-
70
59
  pickContext({
71
60
  context,
72
61
  pickedContext
@@ -78,10 +67,8 @@ const state = config => ({
78
67
  })
79
68
  });
80
69
  }
81
-
82
70
  };
83
71
  }
84
72
  });
85
-
86
73
  export default state;
87
74
  export * from "../plugins";
@@ -4,23 +4,17 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _path = _interopRequireDefault(require("path"));
9
-
10
8
  var _utils = require("@modern-js/utils");
11
-
12
9
  var _cli = _interopRequireDefault(require("../state/cli"));
13
-
14
10
  var _cli2 = _interopRequireDefault(require("../ssr/cli"));
15
-
16
11
  var _cli3 = _interopRequireDefault(require("../router/cli"));
17
-
12
+ var _cli4 = _interopRequireDefault(require("../document/cli"));
18
13
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
-
20
14
  var _default = () => ({
21
15
  name: '@modern-js/runtime',
22
- post: ['@modern-js/plugin-router', '@modern-js/plugin-ssr', '@modern-js/plugin-state', '@modern-js/plugin-design-token'],
23
- usePlugins: [(0, _cli.default)(), (0, _cli2.default)(), (0, _cli3.default)()],
16
+ post: ['@modern-js/plugin-router', '@modern-js/plugin-ssr', '@modern-js/plugin-document', '@modern-js/plugin-state', '@modern-js/plugin-design-token'],
17
+ usePlugins: [(0, _cli.default)(), (0, _cli2.default)(), (0, _cli3.default)(), (0, _cli4.default)()],
24
18
  setup: api => {
25
19
  return {
26
20
  config() {
@@ -42,17 +36,13 @@ var _default = () => ({
42
36
  }
43
37
  };
44
38
  },
45
-
46
39
  validateSchema() {
47
40
  return _utils.PLUGIN_SCHEMAS['@modern-js/runtime'];
48
41
  },
49
-
50
42
  async beforeRestart() {
51
43
  (0, _utils.cleanRequireCache)([require.resolve("../state/cli"), require.resolve("../router/cli"), require.resolve("../ssr/cli")]);
52
44
  }
53
-
54
45
  };
55
46
  }
56
47
  });
57
-
58
48
  exports.default = _default;
@@ -4,7 +4,5 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.isBrowser = void 0;
7
-
8
7
  const isBrowser = () => typeof window !== 'undefined' && window.name !== 'nodejs';
9
-
10
8
  exports.isBrowser = isBrowser;
@@ -5,18 +5,15 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.getConfig = exports.defineConfig = void 0;
7
7
  const APP_CONFIG_SYMBOL = 'config';
8
-
9
- const getConfig = Component => // eslint-disable-next-line @typescript-eslint/ban-ts-comment
8
+ const getConfig = Component =>
9
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
10
10
  // @ts-expect-error
11
11
  Component[APP_CONFIG_SYMBOL];
12
-
13
12
  exports.getConfig = getConfig;
14
-
15
13
  const defineConfig = (Component, config) => {
16
14
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
17
15
  // @ts-expect-error
18
16
  Component[APP_CONFIG_SYMBOL] = config;
19
17
  return Component;
20
18
  };
21
-
22
19
  exports.defineConfig = defineConfig;