@modern-js/runtime 2.0.0-beta.0 → 2.0.0-beta.2

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 +158 -0
  2. package/dist/js/modern/cli/index.js +6 -6
  3. package/dist/js/modern/core/app-config.js +2 -1
  4. package/dist/js/modern/core/compatible.js +66 -48
  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 +132 -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 -11
  51. package/dist/js/modern/state/runtime/plugin.js +1 -14
  52. package/dist/js/node/cli/index.js +6 -14
  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 +66 -66
  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 +142 -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 -16
  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 +6 -4
  122. package/dist/js/treeshaking/core/app-config.js +2 -1
  123. package/dist/js/treeshaking/core/compatible.js +74 -81
  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 +175 -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 -11
  171. package/dist/js/treeshaking/state/runtime/plugin.js +2 -10
  172. package/dist/types/cli/index.d.ts +2 -4
  173. package/dist/types/core/compatible.d.ts +8 -10
  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 +16 -28
  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 +2 -4
  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 +2 -4
  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 +3 -6
  202. package/dist/types/state/cli/index.d.ts +2 -4
  203. package/dist/types/state/types.d.ts +0 -1
  204. package/package.json +24 -15
@@ -25,9 +25,7 @@ Object.defineProperty(exports, "model", {
25
25
  return _store.model;
26
26
  }
27
27
  });
28
-
29
28
  var _react = require("@modern-js-reduck/react");
30
-
31
29
  Object.keys(_react).forEach(function (key) {
32
30
  if (key === "default" || key === "__esModule") return;
33
31
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
@@ -39,11 +37,8 @@ Object.keys(_react).forEach(function (key) {
39
37
  }
40
38
  });
41
39
  });
42
-
43
40
  var _store = require("@modern-js-reduck/store");
44
-
45
41
  var _plugin = _interopRequireWildcard(require("./plugin"));
46
-
47
42
  Object.keys(_plugin).forEach(function (key) {
48
43
  if (key === "default" || key === "__esModule") return;
49
44
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
@@ -55,7 +50,5 @@ Object.keys(_plugin).forEach(function (key) {
55
50
  }
56
51
  });
57
52
  });
58
-
59
53
  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); }
60
-
61
54
  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; }
@@ -5,17 +5,11 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  var _exportNames = {};
7
7
  exports.default = void 0;
8
-
9
8
  var _react = require("react");
10
-
11
9
  var _store = require("@modern-js-reduck/store");
12
-
13
10
  var _react2 = require("@modern-js-reduck/react");
14
-
15
11
  var _hoistNonReactStatics = _interopRequireDefault(require("hoist-non-react-statics"));
16
-
17
12
  var _plugins = require("../plugins");
18
-
19
13
  Object.keys(_plugins).forEach(function (key) {
20
14
  if (key === "default" || key === "__esModule") return;
21
15
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
@@ -27,28 +21,19 @@ Object.keys(_plugins).forEach(function (key) {
27
21
  }
28
22
  });
29
23
  });
30
-
31
24
  var _core = require("../../core");
32
-
33
25
  var _common = require("../../common");
34
-
35
26
  var _jsxRuntime = require("react/jsx-runtime");
36
-
37
27
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
38
-
39
28
  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; }
40
-
41
29
  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; }
42
-
43
30
  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; }
44
-
45
31
  const StatePluginHandleMap = {
46
32
  immer: _plugins.immer,
47
33
  effects: _plugins.effects,
48
34
  autoActions: _plugins.autoActions,
49
35
  devtools: _plugins.devtools
50
36
  };
51
-
52
37
  const getStoreConfig = config => {
53
38
  const internalPlugins = ['immer', 'effects', 'autoActions', 'devtools'];
54
39
  const plugins = [];
@@ -57,7 +42,6 @@ const getStoreConfig = config => {
57
42
  plugins
58
43
  };
59
44
  };
60
-
61
45
  const state = config => ({
62
46
  name: '@modern-js/plugin-state',
63
47
  setup: () => {
@@ -74,29 +58,23 @@ const state = config => ({
74
58
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(App, _objectSpread({}, props))
75
59
  });
76
60
  };
77
-
78
61
  return next({
79
62
  App: (0, _hoistNonReactStatics.default)(getStateApp, App)
80
63
  });
81
64
  },
82
-
83
65
  init({
84
66
  context
85
67
  }, next) {
86
68
  const storeConfig = getStoreConfig(config || {});
87
-
88
69
  if ((0, _common.isBrowser)()) {
89
70
  var _window, _window$_SSR_DATA, _window$_SSR_DATA$dat;
90
-
91
71
  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) || {};
92
72
  }
93
-
94
73
  context.store = (0, _store.createStore)(storeConfig);
95
- next({
74
+ return next({
96
75
  context
97
76
  });
98
77
  },
99
-
100
78
  pickContext({
101
79
  context,
102
80
  pickedContext
@@ -108,10 +86,8 @@ const state = config => ({
108
86
  })
109
87
  });
110
88
  }
111
-
112
89
  };
113
90
  }
114
91
  });
115
-
116
92
  var _default = state;
117
93
  exports.default = _default;
@@ -5,11 +5,12 @@ import { PLUGIN_SCHEMAS, cleanRequireCache, isReact18 } from '@modern-js/utils';
5
5
  import PluginState from "../state/cli";
6
6
  import PluginSSR from "../ssr/cli";
7
7
  import PluginRouter from "../router/cli";
8
+ import Document from "../document/cli";
8
9
  export default (function () {
9
10
  return {
10
11
  name: '@modern-js/runtime',
11
- post: ['@modern-js/plugin-router', '@modern-js/plugin-ssr', '@modern-js/plugin-state', '@modern-js/plugin-design-token'],
12
- usePlugins: [PluginState(), PluginSSR(), PluginRouter()],
12
+ post: ['@modern-js/plugin-router', '@modern-js/plugin-ssr', '@modern-js/plugin-document', '@modern-js/plugin-state', '@modern-js/plugin-design-token'],
13
+ usePlugins: [PluginState(), PluginSSR(), PluginRouter(), Document()],
13
14
  setup: function setup(api) {
14
15
  return {
15
16
  config: function config() {
@@ -27,7 +28,9 @@ export default (function () {
27
28
  */
28
29
  'styled-components': require.resolve('styled-components')
29
30
  },
30
- envVars: ['IS_REACT18']
31
+ globalVars: {
32
+ 'process.env.IS_REACT18': process.env.IS_REACT18
33
+ }
31
34
  }
32
35
  };
33
36
  },
@@ -41,7 +44,6 @@ export default (function () {
41
44
  switch (_context.prev = _context.next) {
42
45
  case 0:
43
46
  cleanRequireCache([require.resolve("../state/cli"), require.resolve("../router/cli"), require.resolve("../ssr/cli")]);
44
-
45
47
  case 1:
46
48
  case "end":
47
49
  return _context.stop();
@@ -1,6 +1,7 @@
1
1
  var APP_CONFIG_SYMBOL = 'config';
2
2
  export var getConfig = function getConfig(Component) {
3
- return (// eslint-disable-next-line @typescript-eslint/ban-ts-comment
3
+ return (
4
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
4
5
  // @ts-expect-error
5
6
  Component[APP_CONFIG_SYMBOL]
6
7
  );
@@ -5,35 +5,31 @@ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
5
5
  import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
6
6
  var _excluded = ["context"];
7
7
  import React, { useContext, useMemo } from 'react';
8
- import defaultReactDOM from 'react-dom';
9
8
  import hoistNonReactStatics from 'hoist-non-react-statics';
10
9
  import { RuntimeReactContext } from "../runtime-context";
11
10
  import { runtime } from "./plugin";
12
11
  import { createLoaderManager } from "./loader/loaderManager";
13
12
  import { jsx as _jsx } from "react/jsx-runtime";
14
13
  var IS_REACT18 = process.env.IS_REACT18 === 'true';
15
-
14
+ var ROUTE_MANIFEST = "_MODERNJS_ROUTE_MANIFEST";
16
15
  function isClientArgs(id) {
17
16
  return typeof id === 'string' || typeof HTMLElement !== 'undefined' && id instanceof HTMLElement;
18
17
  }
19
-
20
18
  var runnerMap = new WeakMap();
21
-
22
19
  var getInitialContext = function getInitialContext(runner) {
23
20
  return {
24
21
  loaderManager: createLoaderManager({}),
25
22
  runner: runner,
26
- isBrowser: true
23
+ isBrowser: true,
24
+ routeManifest: typeof window !== 'undefined' && window[ROUTE_MANIFEST]
27
25
  };
28
26
  };
29
-
30
27
  export var createApp = function createApp(_ref) {
31
28
  var plugins = _ref.plugins;
32
29
  var appRuntime = runtime.clone();
33
30
  appRuntime.usePlugin.apply(appRuntime, _toConsumableArray(plugins));
34
31
  return function (App) {
35
32
  var runner = appRuntime.init();
36
-
37
33
  var WrapperComponent = function WrapperComponent(props) {
38
34
  var element = /*#__PURE__*/React.createElement(App || React.Fragment, _objectSpread({}, props), props.children);
39
35
  var context = useContext(RuntimeReactContext);
@@ -48,25 +44,21 @@ export var createApp = function createApp(_ref) {
48
44
  }
49
45
  });
50
46
  };
51
-
52
47
  if (App) {
53
48
  hoistNonReactStatics(WrapperComponent, App);
54
49
  }
55
-
56
50
  var HOCApp = runner.hoc({
57
51
  App: WrapperComponent
58
52
  }, {
59
53
  onLast: function onLast(_ref3) {
60
54
  var App = _ref3.App;
61
-
62
55
  var WrapComponent = function WrapComponent(_ref4) {
63
56
  var _contextValue;
64
-
65
57
  var context = _ref4.context,
66
- props = _objectWithoutProperties(_ref4, _excluded);
67
-
68
- var contextValue = context; // We should construct the context, when root component is not passed into `bootstrap`.
58
+ props = _objectWithoutProperties(_ref4, _excluded);
59
+ var contextValue = context;
69
60
 
61
+ // We should construct the context, when root component is not passed into `bootstrap`.
70
62
  if (!((_contextValue = contextValue) !== null && _contextValue !== void 0 && _contextValue.runner)) {
71
63
  contextValue = getInitialContext(runner);
72
64
  runner.init({
@@ -74,19 +66,16 @@ export var createApp = function createApp(_ref) {
74
66
  }, {
75
67
  onLast: function onLast(_ref5) {
76
68
  var _App$init;
77
-
78
69
  var context1 = _ref5.context;
79
70
  return App === null || App === void 0 ? void 0 : (_App$init = App.init) === null || _App$init === void 0 ? void 0 : _App$init.call(App, context1);
80
71
  }
81
72
  });
82
73
  }
83
-
84
74
  return /*#__PURE__*/_jsx(RuntimeReactContext.Provider, {
85
75
  value: contextValue,
86
76
  children: /*#__PURE__*/_jsx(App, _objectSpread({}, props))
87
77
  });
88
78
  };
89
-
90
79
  return hoistNonReactStatics(WrapComponent, App);
91
80
  }
92
81
  });
@@ -104,87 +93,58 @@ export var bootstrap = /*#__PURE__*/function () {
104
93
  /**
105
94
  * root.render need use root to run function
106
95
  */
107
- root) {
108
- var ReactDOM,
109
- App,
110
- runner,
111
- context,
112
- runInit,
113
- isBrowser,
114
- _ssrData$data,
115
- _ssrData$data2,
116
- ssrData,
117
- loadersData,
118
- initialLoadersState,
119
- initialData,
120
- _rootElement,
121
- ModernRender,
122
- ModernHydrate,
123
- _initialData,
124
- _args = arguments;
125
-
96
+ root, ReactDOM
97
+ // eslint-disable-next-line consistent-return
98
+ ) {
99
+ var App, runner, context, runInit, isBrowser, _ssrData$data, _ssrData$data2, ssrData, loadersData, initialLoadersState, initialData, rootElement, ModernRender, ModernHydrate, isRedirectResponse, _initialData;
126
100
  return _regeneratorRuntime().wrap(function _callee$(_context2) {
127
101
  while (1) {
128
102
  switch (_context2.prev = _context2.next) {
129
103
  case 0:
130
- ReactDOM = _args.length > 3 && _args[3] !== undefined ? _args[3] : defaultReactDOM;
131
104
  App = BootApp;
132
105
  runner = runnerMap.get(App); // ensure Component used is created by `createApp`
133
-
134
106
  if (!runner) {
135
107
  App = createApp({
136
108
  plugins: []
137
109
  })(App);
138
110
  runner = runnerMap.get(App);
139
111
  }
140
-
141
112
  context = getInitialContext(runner);
142
-
143
113
  runInit = function runInit(_context) {
144
114
  return runner.init({
145
115
  context: _context
146
116
  }, {
147
117
  onLast: function onLast(_ref7) {
148
118
  var _App, _App$init2;
149
-
150
119
  var context1 = _ref7.context;
151
120
  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);
152
121
  }
153
122
  });
154
123
  }; // don't mount the App, let user in charge of it.
155
-
156
-
157
124
  if (id) {
158
- _context2.next = 8;
125
+ _context2.next = 7;
159
126
  break;
160
127
  }
161
-
162
128
  return _context2.abrupt("return", /*#__PURE__*/React.createElement(App, {
163
129
  context: context
164
130
  }));
165
-
166
- case 8:
131
+ case 7:
167
132
  isBrowser = typeof window !== 'undefined' && window.name !== 'nodejs';
168
-
169
133
  if (!isBrowser) {
170
- _context2.next = 29;
134
+ _context2.next = 30;
171
135
  break;
172
136
  }
173
-
174
137
  if (!isClientArgs(id)) {
175
- _context2.next = 26;
138
+ _context2.next = 27;
176
139
  break;
177
140
  }
178
-
179
141
  ssrData = window._SSR_DATA;
180
142
  loadersData = (ssrData === null || ssrData === void 0 ? void 0 : (_ssrData$data = ssrData.data) === null || _ssrData$data === void 0 ? void 0 : _ssrData$data.loadersData) || {};
181
143
  initialLoadersState = Object.keys(loadersData).reduce(function (res, key) {
182
144
  var loaderData = loadersData[key];
183
-
184
145
  if (loaderData.loading !== false) {
185
146
  return res;
186
147
  }
187
-
188
148
  res[key] = loaderData;
189
149
  return res;
190
150
  }, {});
@@ -196,34 +156,50 @@ export var bootstrap = /*#__PURE__*/function () {
196
156
  ssrContext: ssrData === null || ssrData === void 0 ? void 0 : ssrData.context
197
157
  } : {}));
198
158
  context.initialData = ssrData === null || ssrData === void 0 ? void 0 : (_ssrData$data2 = ssrData.data) === null || _ssrData$data2 === void 0 ? void 0 : _ssrData$data2.initialData;
199
- _context2.next = 18;
159
+ _context2.next = 17;
200
160
  return runInit(context);
201
-
202
- case 18:
161
+ case 17:
203
162
  initialData = _context2.sent;
204
-
205
163
  if (initialData) {
206
164
  context.initialData = initialData;
207
165
  }
208
-
209
- _rootElement = typeof id !== 'string' ? id : document.getElementById(id || 'root'); // https://reactjs.org/blog/2022/03/08/react-18-upgrade-guide.html
210
-
166
+ rootElement = typeof id !== 'string' ? id : document.getElementById(id || 'root');
167
+ if (ReactDOM) {
168
+ _context2.next = 22;
169
+ break;
170
+ }
171
+ throw Error('The `bootstrap` need provide `ReactDOM` parameter');
172
+ case 22:
173
+ // https://reactjs.org/blog/2022/03/08/react-18-upgrade-guide.html
211
174
  ModernRender = function ModernRender(App) {
212
175
  if (IS_REACT18) {
213
- (root || ReactDOM.createRoot(_rootElement)).render(App);
176
+ if (root) {
177
+ root.render(App);
178
+ } else if (ReactDOM.createRoot) {
179
+ ReactDOM.createRoot(rootElement).render(App);
180
+ } else {
181
+ throw Error('The `bootstrap` `ReactDOM` parameter needs to provide the `createRoot` method');
182
+ }
214
183
  } else {
215
- ReactDOM.render(App, _rootElement);
184
+ if (!ReactDOM.render) {
185
+ throw Error('The `bootstrap` `ReactDOM` parameter needs to provide the `render` method');
186
+ }
187
+ ReactDOM.render(App, rootElement);
216
188
  }
217
189
  };
218
-
219
190
  ModernHydrate = function ModernHydrate(App, callback) {
220
191
  if (IS_REACT18) {
221
- ReactDOM.hydrateRoot(_rootElement, App);
192
+ if (!ReactDOM.hydrateRoot) {
193
+ throw Error('The `bootstrap` `ReactDOM` parameter needs to provide the `hydrateRoot` method');
194
+ }
195
+ ReactDOM.hydrateRoot(rootElement, App);
222
196
  } else {
223
- ReactDOM.hydrate(App, _rootElement, callback);
197
+ if (!ReactDOM.hydrate) {
198
+ throw Error('The `bootstrap` `ReactDOM` parameter needs to provide the `hydrate` method');
199
+ }
200
+ ReactDOM.hydrate(App, rootElement, callback);
224
201
  }
225
202
  };
226
-
227
203
  return _context2.abrupt("return", runner.client({
228
204
  App: App,
229
205
  context: context,
@@ -237,15 +213,12 @@ export var bootstrap = /*#__PURE__*/function () {
237
213
  }));
238
214
  }
239
215
  }));
240
-
241
- case 26:
242
- throw Error('`bootstrap` needs id in browser environment, it needs to be string or element');
243
-
244
216
  case 27:
245
- _context2.next = 35;
217
+ throw Error('`bootstrap` needs id in browser environment, it needs to be string or element');
218
+ case 28:
219
+ _context2.next = 38;
246
220
  break;
247
-
248
- case 29:
221
+ case 30:
249
222
  Object.assign(context, {
250
223
  ssrContext: id,
251
224
  isBrowser: false,
@@ -255,26 +228,46 @@ export var bootstrap = /*#__PURE__*/function () {
255
228
  skipStatic: process.env.NODE_ENV === 'production' && !id.staticGenerate
256
229
  })
257
230
  });
258
- _context2.next = 32;
259
- return runInit(context);
260
231
 
261
- case 32:
232
+ // Handle redirects from React Router with an HTTP redirect
233
+ isRedirectResponse = function isRedirectResponse(result) {
234
+ if (typeof Response !== 'undefined' &&
235
+ // fix: ssg workflow doesn't inject Web Response
236
+ result instanceof Response && result.status >= 300 && result.status <= 399) {
237
+ var status = result.status;
238
+ var redirectUrl = result.headers.get('Location') || '/';
239
+ var ssrContext = context.ssrContext;
240
+ if (ssrContext) {
241
+ ssrContext.res.statusCode = status;
242
+ ssrContext.res.setHeader('Location', redirectUrl);
243
+ ssrContext.redirection.status = status;
244
+ ssrContext.redirection.url = redirectUrl;
245
+ }
246
+ return true;
247
+ }
248
+ return false;
249
+ };
250
+ _context2.next = 34;
251
+ return runInit(context);
252
+ case 34:
262
253
  _initialData = _context2.sent;
254
+ if (isRedirectResponse(_initialData)) {
255
+ _context2.next = 38;
256
+ break;
257
+ }
263
258
  context.initialData = _initialData;
264
259
  return _context2.abrupt("return", runner.server({
265
260
  App: App,
266
261
  context: context
267
262
  }));
268
-
269
- case 35:
263
+ case 38:
270
264
  case "end":
271
265
  return _context2.stop();
272
266
  }
273
267
  }
274
268
  }, _callee);
275
269
  }));
276
-
277
- return function bootstrap(_x, _x2, _x3) {
270
+ return function bootstrap(_x, _x2, _x3, _x4) {
278
271
  return _ref6.apply(this, arguments);
279
272
  };
280
273
  }();
@@ -1,6 +1,7 @@
1
- export { createPlugin, createRuntime, runtime, registerInit, registerPrefetch } from "./plugin";
2
- export { defineConfig, getConfig } from "./app-config"; // compatible
1
+ export { createPlugin, createRuntime, runtime, registerInit } from "./plugin";
2
+ export { defineConfig, getConfig } from "./app-config";
3
3
 
4
+ // compatible
4
5
  export * from "./compatible";
5
6
  export { RuntimeReactContext, ServerRouterContext } from "../runtime-context";
6
7
  export * from "./loader";