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