@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
@@ -1,9 +1,7 @@
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
-
4
+ export const isReact18 = () => process.env.IS_REACT18 === 'true';
7
5
  export const formatServer = request => {
8
6
  const {
9
7
  cookie = '',
@@ -16,20 +14,15 @@ export const formatServer = request => {
16
14
  referer
17
15
  }, request);
18
16
  };
19
-
20
17
  const getQuery = () => window.location.search.substring(1).split('&').reduce((res, item) => {
21
18
  const [key, value] = item.split('=');
22
-
23
19
  if (key) {
24
20
  res[key] = value;
25
21
  }
26
-
27
22
  return res;
28
23
  }, {});
29
-
30
24
  export const formatClient = request => {
31
25
  var _request$headers, _request$headers2;
32
-
33
26
  return {
34
27
  params: request.params || {},
35
28
  host: request.host || location.host,
@@ -46,16 +39,18 @@ export const formatClient = request => {
46
39
  export const mockResponse = () => {
47
40
  return {
48
41
  setHeader() {
49
- console.info('setHeader can only be used in the server side');
42
+ console.warn('response.setHeader() can only be used in the server side');
50
43
  },
51
-
52
44
  status() {
53
- console.info('status can only be used in the server side');
45
+ console.warn('response.status() can only be used in the server side');
46
+ },
47
+ get locals() {
48
+ console.warn('response.locals can only be used in the server side');
49
+ return {};
54
50
  }
55
-
56
51
  };
57
52
  };
58
- export const isCrossOrigin = (url, base) => {
53
+ export const isCrossOrigin = (url = '', base) => {
59
54
  if (url.startsWith('/') || url.startsWith('./')) {
60
55
  return false;
61
56
  } else if (!url.includes(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, _cli3.default)(), (0, _cli2.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;
@@ -4,65 +4,43 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.useRuntimeContext = exports.createApp = exports.bootstrap = void 0;
7
-
8
7
  var _react = _interopRequireWildcard(require("react"));
9
-
10
8
  var _reactDom = _interopRequireDefault(require("react-dom"));
11
-
12
9
  var _hoistNonReactStatics = _interopRequireDefault(require("hoist-non-react-statics"));
13
-
14
10
  var _runtimeContext = require("../runtime-context");
15
-
16
11
  var _plugin = require("./plugin");
17
-
18
12
  var _loaderManager = require("./loader/loaderManager");
19
-
20
13
  var _jsxRuntime = require("react/jsx-runtime");
21
-
22
14
  const _excluded = ["context"];
23
-
24
15
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
-
26
16
  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); }
27
-
28
17
  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; }
29
-
30
18
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
31
-
32
19
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
33
-
34
20
  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; }
35
-
36
21
  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; }
37
-
38
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; }
39
-
40
23
  const IS_REACT18 = process.env.IS_REACT18 === 'true';
41
-
24
+ const ROUTE_MANIFEST = `_MODERNJS_ROUTE_MANIFEST`;
42
25
  function isClientArgs(id) {
43
26
  return typeof id === 'string' || typeof HTMLElement !== 'undefined' && id instanceof HTMLElement;
44
27
  }
45
-
46
28
  const runnerMap = new WeakMap();
47
-
48
29
  const getInitialContext = runner => ({
49
30
  loaderManager: (0, _loaderManager.createLoaderManager)({}),
50
31
  runner,
51
- isBrowser: true
32
+ isBrowser: true,
33
+ routeManifest: typeof window !== 'undefined' && window[ROUTE_MANIFEST]
52
34
  });
53
-
54
35
  const createApp = ({
55
36
  plugins
56
37
  }) => {
57
38
  const appRuntime = _plugin.runtime.clone();
58
-
59
39
  appRuntime.usePlugin(...plugins);
60
40
  return App => {
61
41
  const runner = appRuntime.init();
62
-
63
42
  const WrapperComponent = props => {
64
43
  const element = /*#__PURE__*/_react.default.createElement(App || _react.default.Fragment, _objectSpread({}, props), props.children);
65
-
66
44
  const context = (0, _react.useContext)(_runtimeContext.RuntimeReactContext);
67
45
  return runner.provide({
68
46
  element,
@@ -74,11 +52,9 @@ const createApp = ({
74
52
  }) => element
75
53
  });
76
54
  };
77
-
78
55
  if (App) {
79
56
  (0, _hoistNonReactStatics.default)(WrapperComponent, App);
80
57
  }
81
-
82
58
  const HOCApp = runner.hoc({
83
59
  App: WrapperComponent
84
60
  }, {
@@ -87,14 +63,13 @@ const createApp = ({
87
63
  }) => {
88
64
  const WrapComponent = _ref => {
89
65
  var _contextValue;
90
-
91
66
  let {
92
- context
93
- } = _ref,
94
- props = _objectWithoutProperties(_ref, _excluded);
95
-
96
- let contextValue = context; // We should construct the context, when root component is not passed into `bootstrap`.
67
+ context
68
+ } = _ref,
69
+ props = _objectWithoutProperties(_ref, _excluded);
70
+ let contextValue = context;
97
71
 
72
+ // We should construct the context, when root component is not passed into `bootstrap`.
98
73
  if (!((_contextValue = contextValue) !== null && _contextValue !== void 0 && _contextValue.runner)) {
99
74
  contextValue = getInitialContext(runner);
100
75
  runner.init({
@@ -104,18 +79,15 @@ const createApp = ({
104
79
  context: context1
105
80
  }) => {
106
81
  var _App$init;
107
-
108
82
  return App === null || App === void 0 ? void 0 : (_App$init = App.init) === null || _App$init === void 0 ? void 0 : _App$init.call(App, context1);
109
83
  }
110
84
  });
111
85
  }
112
-
113
86
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_runtimeContext.RuntimeReactContext.Provider, {
114
87
  value: contextValue,
115
88
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(App, _objectSpread({}, props))
116
89
  });
117
90
  };
118
-
119
91
  return (0, _hoistNonReactStatics.default)(WrapComponent, App);
120
92
  }
121
93
  });
@@ -123,9 +95,7 @@ const createApp = ({
123
95
  return HOCApp;
124
96
  };
125
97
  };
126
-
127
98
  exports.createApp = createApp;
128
-
129
99
  const bootstrap = async (BootApp,
130
100
  /**
131
101
  * When csr, id is root id.
@@ -135,19 +105,20 @@ id,
135
105
  /**
136
106
  * root.render need use root to run function
137
107
  */
138
- root, ReactDOM = _reactDom.default) => {
108
+ root, ReactDOM = _reactDom.default
109
+ // eslint-disable-next-line consistent-return
110
+ ) => {
139
111
  let App = BootApp;
140
- let runner = runnerMap.get(App); // ensure Component used is created by `createApp`
112
+ let runner = runnerMap.get(App);
141
113
 
114
+ // ensure Component used is created by `createApp`
142
115
  if (!runner) {
143
116
  App = createApp({
144
117
  plugins: []
145
118
  })(App);
146
119
  runner = runnerMap.get(App);
147
120
  }
148
-
149
121
  const context = getInitialContext(runner);
150
-
151
122
  const runInit = _context => runner.init({
152
123
  context: _context
153
124
  }, {
@@ -155,33 +126,27 @@ root, ReactDOM = _reactDom.default) => {
155
126
  context: context1
156
127
  }) => {
157
128
  var _App, _App$init2;
158
-
159
129
  return (_App = App) === null || _App === void 0 ? void 0 : (_App$init2 = _App.init) === null || _App$init2 === void 0 ? void 0 : _App$init2.call(_App, context1);
160
130
  }
161
- }); // don't mount the App, let user in charge of it.
162
-
131
+ });
163
132
 
133
+ // don't mount the App, let user in charge of it.
164
134
  if (!id) {
165
135
  return /*#__PURE__*/_react.default.createElement(App, {
166
136
  context
167
137
  });
168
138
  }
169
-
170
139
  const isBrowser = typeof window !== 'undefined' && window.name !== 'nodejs';
171
-
172
140
  if (isBrowser) {
173
141
  if (isClientArgs(id)) {
174
142
  var _ssrData$data, _ssrData$data2;
175
-
176
143
  const ssrData = window._SSR_DATA;
177
144
  const loadersData = (ssrData === null || ssrData === void 0 ? void 0 : (_ssrData$data = ssrData.data) === null || _ssrData$data === void 0 ? void 0 : _ssrData$data.loadersData) || {};
178
145
  const initialLoadersState = Object.keys(loadersData).reduce((res, key) => {
179
146
  const loaderData = loadersData[key];
180
-
181
147
  if (loaderData.loading !== false) {
182
148
  return res;
183
149
  }
184
-
185
150
  res[key] = loaderData;
186
151
  return res;
187
152
  }, {});
@@ -194,13 +159,12 @@ root, ReactDOM = _reactDom.default) => {
194
159
  } : {}));
195
160
  context.initialData = ssrData === null || ssrData === void 0 ? void 0 : (_ssrData$data2 = ssrData.data) === null || _ssrData$data2 === void 0 ? void 0 : _ssrData$data2.initialData;
196
161
  const initialData = await runInit(context);
197
-
198
162
  if (initialData) {
199
163
  context.initialData = initialData;
200
164
  }
165
+ const rootElement = typeof id !== 'string' ? id : document.getElementById(id || 'root');
201
166
 
202
- const rootElement = typeof id !== 'string' ? id : document.getElementById(id || 'root'); // https://reactjs.org/blog/2022/03/08/react-18-upgrade-guide.html
203
-
167
+ // https://reactjs.org/blog/2022/03/08/react-18-upgrade-guide.html
204
168
  const ModernRender = App => {
205
169
  if (IS_REACT18) {
206
170
  if (root) {
@@ -214,27 +178,22 @@ root, ReactDOM = _reactDom.default) => {
214
178
  if (!ReactDOM.render) {
215
179
  throw Error('The `bootstrap` `ReactDOM` parameter needs to provide the `render` method');
216
180
  }
217
-
218
181
  ReactDOM.render(App, rootElement);
219
182
  }
220
183
  };
221
-
222
184
  const ModernHydrate = (App, callback) => {
223
185
  if (IS_REACT18) {
224
186
  if (!ReactDOM.hydrateRoot) {
225
187
  throw Error('The `bootstrap` `ReactDOM` parameter needs to provide the `hydrateRoot` method');
226
188
  }
227
-
228
189
  ReactDOM.hydrateRoot(rootElement, App);
229
190
  } else {
230
191
  if (!ReactDOM.hydrate) {
231
192
  throw Error('The `bootstrap` `ReactDOM` parameter needs to provide the `hydrate` method');
232
193
  }
233
-
234
194
  ReactDOM.hydrate(App, rootElement, callback);
235
195
  }
236
196
  };
237
-
238
197
  return runner.client({
239
198
  App,
240
199
  context,
@@ -262,17 +221,40 @@ root, ReactDOM = _reactDom.default) => {
262
221
  skipStatic: process.env.NODE_ENV === 'production' && !id.staticGenerate
263
222
  })
264
223
  });
224
+
225
+ // Handle redirects from React Router with an HTTP redirect
226
+ const isRedirectResponse = result => {
227
+ if (typeof Response !== 'undefined' &&
228
+ // fix: ssg workflow doesn't inject Web Response
229
+ result instanceof Response && result.status >= 300 && result.status <= 399) {
230
+ const {
231
+ status
232
+ } = result;
233
+ const redirectUrl = result.headers.get('Location') || '/';
234
+ const {
235
+ ssrContext
236
+ } = context;
237
+ if (ssrContext) {
238
+ ssrContext.res.statusCode = status;
239
+ ssrContext.res.setHeader('Location', redirectUrl);
240
+ ssrContext.redirection.status = status;
241
+ ssrContext.redirection.url = redirectUrl;
242
+ }
243
+ return true;
244
+ }
245
+ return false;
246
+ };
265
247
  const initialData = await runInit(context);
266
- context.initialData = initialData;
267
- return runner.server({
268
- App,
269
- context
270
- });
248
+ if (!isRedirectResponse(initialData)) {
249
+ context.initialData = initialData;
250
+ return runner.server({
251
+ App,
252
+ context
253
+ });
254
+ }
271
255
  }
272
256
  };
273
-
274
257
  exports.bootstrap = bootstrap;
275
-
276
258
  const useRuntimeContext = () => {
277
259
  const context = (0, _react.useContext)(_runtimeContext.RuntimeReactContext);
278
260
  const memoizedContext = (0, _react.useMemo)(() => context.runner.pickContext({
@@ -285,5 +267,4 @@ const useRuntimeContext = () => {
285
267
  }), [context]);
286
268
  return memoizedContext;
287
269
  };
288
-
289
270
  exports.useRuntimeContext = useRuntimeContext;
@@ -8,10 +8,10 @@ var _exportNames = {
8
8
  createRuntime: true,
9
9
  runtime: true,
10
10
  registerInit: true,
11
- registerPrefetch: true,
12
11
  defineConfig: true,
13
12
  getConfig: true,
14
- RuntimeReactContext: true
13
+ RuntimeReactContext: true,
14
+ ServerRouterContext: true
15
15
  };
16
16
  Object.defineProperty(exports, "RuntimeReactContext", {
17
17
  enumerable: true,
@@ -19,6 +19,12 @@ Object.defineProperty(exports, "RuntimeReactContext", {
19
19
  return _runtimeContext.RuntimeReactContext;
20
20
  }
21
21
  });
22
+ Object.defineProperty(exports, "ServerRouterContext", {
23
+ enumerable: true,
24
+ get: function () {
25
+ return _runtimeContext.ServerRouterContext;
26
+ }
27
+ });
22
28
  Object.defineProperty(exports, "createPlugin", {
23
29
  enumerable: true,
24
30
  get: function () {
@@ -49,25 +55,15 @@ Object.defineProperty(exports, "registerInit", {
49
55
  return _plugin.registerInit;
50
56
  }
51
57
  });
52
- Object.defineProperty(exports, "registerPrefetch", {
53
- enumerable: true,
54
- get: function () {
55
- return _plugin.registerPrefetch;
56
- }
57
- });
58
58
  Object.defineProperty(exports, "runtime", {
59
59
  enumerable: true,
60
60
  get: function () {
61
61
  return _plugin.runtime;
62
62
  }
63
63
  });
64
-
65
64
  var _plugin = require("./plugin");
66
-
67
65
  var _appConfig = require("./app-config");
68
-
69
66
  var _compatible = require("./compatible");
70
-
71
67
  Object.keys(_compatible).forEach(function (key) {
72
68
  if (key === "default" || key === "__esModule") return;
73
69
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
@@ -79,11 +75,8 @@ Object.keys(_compatible).forEach(function (key) {
79
75
  }
80
76
  });
81
77
  });
82
-
83
78
  var _runtimeContext = require("../runtime-context");
84
-
85
79
  var _loader = require("./loader");
86
-
87
80
  Object.keys(_loader).forEach(function (key) {
88
81
  if (key === "default" || key === "__esModule") return;
89
82
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
@@ -95,9 +88,7 @@ Object.keys(_loader).forEach(function (key) {
95
88
  }
96
89
  });
97
90
  });
98
-
99
91
  var _plugin2 = require("@modern-js/plugin");
100
-
101
92
  Object.keys(_plugin2).forEach(function (key) {
102
93
  if (key === "default" || key === "__esModule") return;
103
94
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
@@ -9,7 +9,5 @@ Object.defineProperty(exports, "useLoader", {
9
9
  return _useLoader.default;
10
10
  }
11
11
  });
12
-
13
12
  var _useLoader = _interopRequireDefault(require("./useLoader"));
14
-
15
13
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }