@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
@@ -0,0 +1,102 @@
1
+ import _regeneratorRuntime from "@babel/runtime/helpers/esm/regeneratorRuntime";
2
+ import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
3
+ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
4
+ import _createClass from "@babel/runtime/helpers/esm/createClass";
5
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
6
+ import { matchRoutes } from 'react-router-dom';
7
+ var Logger = /*#__PURE__*/function () {
8
+ function Logger(options) {
9
+ _classCallCheck(this, Logger);
10
+ _defineProperty(this, "enableLogging", void 0);
11
+ this.enableLogging = options.enableLogging;
12
+ }
13
+ _createClass(Logger, [{
14
+ key: "log",
15
+ value: function log() {
16
+ if (this.enableLogging) {
17
+ var _console;
18
+ // eslint-disable-next-line no-console
19
+ (_console = console).log.apply(_console, arguments);
20
+ }
21
+ }
22
+ }], [{
23
+ key: "getLogger",
24
+ value: function getLogger(options) {
25
+ if (this.logger) {
26
+ return this.logger;
27
+ }
28
+ this.logger = new Logger(options);
29
+ return this.logger;
30
+ }
31
+ }]);
32
+ return Logger;
33
+ }();
34
+ _defineProperty(Logger, "logger", void 0);
35
+ export function handleLoad(routes, location, routeManifest) {
36
+ if (!routeManifest || !routeManifest.enableFetchParallel === false) {
37
+ return;
38
+ }
39
+ var routeAssets = routeManifest.routeAssets;
40
+ Logger.getLogger({
41
+ enableLogging: routeManifest.enableLogging
42
+ }).log('handle page load');
43
+ var matches = matchClientRoutes(routes, location);
44
+ matches === null || matches === void 0 ? void 0 : matches.forEach(function (match) {
45
+ return loadRouteModule(match.route, routeAssets);
46
+ });
47
+ }
48
+ export function matchClientRoutes(routes, location) {
49
+ var matches = matchRoutes(routes, location);
50
+ return matches;
51
+ }
52
+ export function loadRouteModule(_x, _x2) {
53
+ return _loadRouteModule.apply(this, arguments);
54
+ }
55
+ function _loadRouteModule() {
56
+ _loadRouteModule = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(route, routeAssets) {
57
+ var routeId, chunkIds;
58
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
59
+ while (1) {
60
+ switch (_context.prev = _context.next) {
61
+ case 0:
62
+ routeId = route.id;
63
+ if (routeId) {
64
+ _context.next = 3;
65
+ break;
66
+ }
67
+ return _context.abrupt("return");
68
+ case 3:
69
+ if (routeAssets[routeId]) {
70
+ _context.next = 5;
71
+ break;
72
+ }
73
+ return _context.abrupt("return");
74
+ case 5:
75
+ chunkIds = routeAssets[routeId].chunkIds;
76
+ if (chunkIds) {
77
+ _context.next = 8;
78
+ break;
79
+ }
80
+ return _context.abrupt("return");
81
+ case 8:
82
+ _context.prev = 8;
83
+ _context.next = 11;
84
+ return Promise.all(chunkIds.map(function (chunkId) {
85
+ return __webpack_chunk_load__(String(chunkId));
86
+ }));
87
+ case 11:
88
+ _context.next = 16;
89
+ break;
90
+ case 13:
91
+ _context.prev = 13;
92
+ _context.t0 = _context["catch"](8);
93
+ console.error(_context.t0);
94
+ case 16:
95
+ case "end":
96
+ return _context.stop();
97
+ }
98
+ }
99
+ }, _callee, null, [[8, 13]]);
100
+ }));
101
+ return _loadRouteModule.apply(this, arguments);
102
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -1,108 +1,154 @@
1
- import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
1
+ import _createForOfIteratorHelper from "@babel/runtime/helpers/esm/createForOfIteratorHelper";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
+ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
3
4
  var _excluded = ["Component"];
4
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
5
- import React from 'react';
6
- import { Route, matchPath } from 'react-router-dom';
5
+ import React, { Suspense } from 'react';
6
+ import { Route } from 'react-router-dom';
7
7
  import { DefaultNotFound } from "./DefaultNotFound";
8
+ import { RootLayout } from "./root";
8
9
  import { jsx as _jsx } from "react/jsx-runtime";
9
- export function renderRoutes(routesConfig) {
10
- var extraProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
11
-
10
+ var renderNestedRoute = function renderNestedRoute(nestedRoute, parent) {
11
+ var children = nestedRoute.children,
12
+ index = nestedRoute.index,
13
+ id = nestedRoute.id,
14
+ Component = nestedRoute.component;
15
+ var childElements = children === null || children === void 0 ? void 0 : children.map(function (childRoute) {
16
+ return renderNestedRoute(childRoute, nestedRoute);
17
+ });
18
+ var routeProps = {
19
+ caseSensitive: nestedRoute.caseSensitive,
20
+ path: nestedRoute.path,
21
+ id: nestedRoute.id,
22
+ loader: nestedRoute.loader,
23
+ action: nestedRoute.action,
24
+ hasErrorBoundary: nestedRoute.hasErrorBoundary,
25
+ shouldRevalidate: nestedRoute.shouldRevalidate,
26
+ handle: nestedRoute.handle,
27
+ index: nestedRoute.index,
28
+ errorElement: nestedRoute.errorElement
29
+ };
30
+ if (nestedRoute.error) {
31
+ var errorElement = /*#__PURE__*/_jsx(nestedRoute.error, {});
32
+ routeProps.errorElement = errorElement;
33
+ }
34
+ var element;
35
+ if (Component) {
36
+ if (parent !== null && parent !== void 0 && parent.loading) {
37
+ var Loading = parent.loading;
38
+ element = /*#__PURE__*/_jsx(Suspense, {
39
+ fallback: /*#__PURE__*/_jsx(Loading, {}),
40
+ children: /*#__PURE__*/_jsx(Component, {})
41
+ });
42
+ } else {
43
+ element = /*#__PURE__*/_jsx(Suspense, {
44
+ children: /*#__PURE__*/_jsx(Component, {})
45
+ });
46
+ }
47
+ }
48
+ if (!parent) {
49
+ element = /*#__PURE__*/_jsx(RootLayout, {
50
+ routes: [nestedRoute],
51
+ children: /*#__PURE__*/_jsx(Suspense, {
52
+ children: element
53
+ })
54
+ });
55
+ }
56
+ routeProps.element = element;
57
+ var routeElement = index ? /*#__PURE__*/_jsx(Route, _objectSpread(_objectSpread({}, routeProps), {}, {
58
+ index: true
59
+ }), id) : /*#__PURE__*/_jsx(Route, _objectSpread(_objectSpread({}, routeProps), {}, {
60
+ index: false,
61
+ children: childElements
62
+ }), id);
63
+ return routeElement;
64
+ };
65
+ export function getRouteComponents(routes, globalApp) {
12
66
  var Layout = function Layout(_ref) {
13
67
  var Component = _ref.Component,
14
- props = _objectWithoutProperties(_ref, _excluded);
15
-
16
- var GlobalLayout = routesConfig === null || routesConfig === void 0 ? void 0 : routesConfig.globalApp;
17
-
68
+ props = _objectWithoutProperties(_ref, _excluded);
69
+ var GlobalLayout = globalApp;
18
70
  if (!GlobalLayout) {
19
71
  return /*#__PURE__*/_jsx(Component, _objectSpread({}, props));
20
72
  }
21
-
22
73
  return /*#__PURE__*/_jsx(GlobalLayout, _objectSpread({
23
74
  Component: Component
24
75
  }, props));
25
76
  };
26
-
27
- var findMatchedRoute = function findMatchedRoute(pathname) {
28
- var _routesConfig$routes;
29
-
30
- return routesConfig === null || routesConfig === void 0 ? void 0 : (_routesConfig$routes = routesConfig.routes) === null || _routesConfig$routes === void 0 ? void 0 : _routesConfig$routes.find(function (route) {
31
- var info = matchPath(pathname, {
32
- path: route.path,
33
- exact: route.exact,
34
- sensitive: route.sensitive
35
- });
36
- return Boolean(info);
37
- });
38
- };
39
-
40
- return /*#__PURE__*/_jsx(Route, {
41
- path: "/",
42
- render: function render(props) {
43
- var matchedRoute = findMatchedRoute(props.location.pathname);
44
-
45
- if (!matchedRoute) {
46
- return /*#__PURE__*/_jsx(DefaultNotFound, {});
77
+ var routeElements = [];
78
+ var _iterator = _createForOfIteratorHelper(routes),
79
+ _step;
80
+ try {
81
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
82
+ var route = _step.value;
83
+ if (route.type === 'nested') {
84
+ var routeElement = renderNestedRoute(route);
85
+ routeElements.push(routeElement);
86
+ } else {
87
+ var _routeElement = /*#__PURE__*/_jsx(Route, {
88
+ path: route.path,
89
+ element: /*#__PURE__*/_jsx(Layout, {
90
+ Component: route.component
91
+ })
92
+ }, route.path);
93
+ routeElements.push(_routeElement);
47
94
  }
48
-
49
- return /*#__PURE__*/_jsx(Route, {
50
- path: matchedRoute.path,
51
- exact: matchedRoute.exact,
52
- sensitive: matchedRoute.sensitive,
53
- render: function render(routeProps) {
54
- return /*#__PURE__*/_jsx(Layout, _objectSpread(_objectSpread({
55
- Component: matchedRoute.component
56
- }, routeProps), extraProps));
57
- }
58
- });
59
95
  }
60
- });
96
+ } catch (err) {
97
+ _iterator.e(err);
98
+ } finally {
99
+ _iterator.f();
100
+ }
101
+ routeElements.push( /*#__PURE__*/_jsx(Route, {
102
+ path: "*",
103
+ element: /*#__PURE__*/_jsx(DefaultNotFound, {})
104
+ }, "*"));
105
+ return routeElements;
106
+ }
107
+ export function renderRoutes(routesConfig) {
108
+ if (!routesConfig) {
109
+ return null;
110
+ }
111
+ var routes = routesConfig.routes,
112
+ globalApp = routesConfig.globalApp;
113
+ if (!routes) {
114
+ return null;
115
+ }
116
+ var routeElements = getRouteComponents(routes, globalApp);
117
+ return routeElements;
61
118
  }
62
119
  export function getLocation(serverContext) {
63
120
  var _url$replace;
64
-
65
121
  var _ref2 = (serverContext === null || serverContext === void 0 ? void 0 : serverContext.request) || {},
66
- pathname = _ref2.pathname,
67
- url = _ref2.url;
68
-
122
+ pathname = _ref2.pathname,
123
+ url = _ref2.url;
69
124
  var cleanUrl = url === null || url === void 0 ? void 0 : (_url$replace = url.replace('http://', '')) === null || _url$replace === void 0 ? void 0 : _url$replace.replace('https://', '');
70
125
  var index = (cleanUrl || '').indexOf(pathname);
71
-
72
126
  if (index === -1) {
73
127
  return pathname;
74
128
  }
75
-
76
129
  return cleanUrl.substring(index);
77
130
  }
78
131
  export var urlJoin = function urlJoin() {
79
132
  var separator = '/';
80
133
  var replace = new RegExp("".concat(separator, "{1,}"), 'g');
81
-
82
134
  for (var _len = arguments.length, parts = new Array(_len), _key = 0; _key < _len; _key++) {
83
135
  parts[_key] = arguments[_key];
84
136
  }
85
-
86
137
  return standardSlash(parts.join(separator).replace(replace, separator));
87
138
  };
88
139
  export function standardSlash(str) {
89
140
  var addr = str;
90
-
91
141
  if (!addr || typeof addr !== 'string') {
92
142
  return addr;
93
143
  }
94
-
95
144
  if (addr.startsWith('.')) {
96
145
  addr = addr.slice(1);
97
146
  }
98
-
99
147
  if (!addr.startsWith('/')) {
100
148
  addr = "/".concat(addr);
101
149
  }
102
-
103
150
  if (addr.endsWith('/') && addr !== '/') {
104
151
  addr = addr.slice(0, addr.length - 1);
105
152
  }
106
-
107
153
  return addr;
108
154
  }
@@ -0,0 +1,18 @@
1
+ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
2
+ // legacy withRouter
3
+
4
+ import React from 'react';
5
+ import { useLocation, useNavigate, useParams } from 'react-router-dom';
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ export var withRouter = function withRouter(Component) {
8
+ return function (props) {
9
+ var location = useLocation();
10
+ var params = useParams();
11
+ var navigate = useNavigate();
12
+ return /*#__PURE__*/_jsx(Component, _objectSpread(_objectSpread({}, props), {}, {
13
+ location: location,
14
+ params: params,
15
+ navigate: navigate
16
+ }));
17
+ };
18
+ };
@@ -1,2 +1,3 @@
1
1
  import { createContext } from 'react';
2
- export var RuntimeReactContext = /*#__PURE__*/createContext({});
2
+ export var RuntimeReactContext = /*#__PURE__*/createContext({});
3
+ export var ServerRouterContext = /*#__PURE__*/createContext({});
@@ -1,5 +1,24 @@
1
+ import _typeof from "@babel/runtime/helpers/esm/typeof";
1
2
  import { getEntryOptions, SERVER_RENDER_FUNCTION_NAME, LOADABLE_STATS_FILE, isUseSSRBundle, createRuntimeExportsUtils, isSingleEntry } from '@modern-js/utils';
2
3
  var PLUGIN_IDENTIFIER = 'ssr';
4
+ var hasStringSSREntry = function hasStringSSREntry(userConfig) {
5
+ var isStreaming = function isStreaming(ssr) {
6
+ return ssr && _typeof(ssr) === 'object' && ssr.mode === 'stream';
7
+ };
8
+ var server = userConfig.server;
9
+ if (server !== null && server !== void 0 && server.ssr && !isStreaming(server.ssr)) {
10
+ return true;
11
+ }
12
+ if (server !== null && server !== void 0 && server.ssrByEntries && _typeof(server.ssrByEntries) === 'object') {
13
+ for (var _i = 0, _Object$keys = Object.keys(server.ssrByEntries); _i < _Object$keys.length; _i++) {
14
+ var name = _Object$keys[_i];
15
+ if (!isStreaming(server.ssrByEntries[name])) {
16
+ return true;
17
+ }
18
+ }
19
+ }
20
+ return false;
21
+ };
3
22
  export default (function () {
4
23
  return {
5
24
  name: '@modern-js/plugin-ssr',
@@ -20,13 +39,11 @@ export default (function () {
20
39
  tools: {
21
40
  webpackChain: function webpackChain(chain, _ref) {
22
41
  var name = _ref.name,
23
- CHAIN_ID = _ref.CHAIN_ID;
42
+ CHAIN_ID = _ref.CHAIN_ID;
24
43
  var userConfig = api.useResolvedConfigContext();
25
-
26
- if (isUseSSRBundle(userConfig) && name !== 'server') {
44
+ if (isUseSSRBundle(userConfig) && name !== 'server' && hasStringSSREntry(userConfig)) {
27
45
  // eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires
28
- var LoadableWebpackPlugin = require('@modern-js/webpack/@loadable/webpack-plugin');
29
-
46
+ var LoadableWebpackPlugin = require('@loadable/webpack-plugin');
30
47
  chain.plugin(CHAIN_ID.PLUGIN.LOADABLE).use(LoadableWebpackPlugin, [{
31
48
  filename: LOADABLE_STATS_FILE
32
49
  }]);
@@ -34,8 +51,7 @@ export default (function () {
34
51
  },
35
52
  babel: function babel(config) {
36
53
  var userConfig = api.useResolvedConfigContext();
37
-
38
- if (isUseSSRBundle(userConfig)) {
54
+ if (isUseSSRBundle(userConfig) && hasStringSSREntry(userConfig)) {
39
55
  config.plugins.push(require.resolve('@loadable/babel-plugin'));
40
56
  }
41
57
  }
@@ -44,21 +60,30 @@ export default (function () {
44
60
  },
45
61
  modifyEntryImports: function modifyEntryImports(_ref2) {
46
62
  var entrypoint = _ref2.entrypoint,
47
- imports = _ref2.imports;
48
- var entryName = entrypoint.entryName;
63
+ imports = _ref2.imports;
64
+ var entryName = entrypoint.entryName,
65
+ fileSystemRoutes = entrypoint.fileSystemRoutes;
49
66
  var userConfig = api.useResolvedConfigContext();
50
-
51
67
  var _api$useAppContext = api.useAppContext(),
52
- packageName = _api$useAppContext.packageName,
53
- entrypoints = _api$useAppContext.entrypoints;
54
-
55
- pluginsExportsUtils.addExport("export { default as ssr } from '@modern-js/runtime/ssr'"); // if use ssg then set ssr config to true
68
+ packageName = _api$useAppContext.packageName,
69
+ entrypoints = _api$useAppContext.entrypoints;
70
+ pluginsExportsUtils.addExport("export { default as ssr } from '@modern-js/runtime/ssr'");
56
71
 
72
+ // if use ssg then set ssr config to true
57
73
  var ssrConfig = getEntryOptions(entryName, userConfig.server.ssr, userConfig.server.ssrByEntries, packageName);
74
+ if (_typeof(ssrConfig) === 'object' && ssrConfig.mode === 'stream') {
75
+ var _runtimeConfig$router;
76
+ var runtimeConfig = getEntryOptions(entryName, userConfig.runtime, userConfig.runtimeByEntries, packageName);
77
+ if (runtimeConfig !== null && runtimeConfig !== void 0 && (_runtimeConfig$router = runtimeConfig.router) !== null && _runtimeConfig$router !== void 0 && _runtimeConfig$router.legacy) {
78
+ throw new Error("Legacy router plugin doesn't support streaming SSR, check your config 'runtime.router'");
79
+ }
80
+ if (fileSystemRoutes && !entrypoint.nestedRoutesEntry) {
81
+ throw new Error("You should switch to file-system based router to support streaming SSR.");
82
+ }
83
+ }
58
84
  var ssgConfig = userConfig.output.ssg;
59
85
  var useSSG = isSingleEntry(entrypoints) ? Boolean(ssgConfig) : ssgConfig === true || typeof (ssgConfig === null || ssgConfig === void 0 ? void 0 : ssgConfig[0]) === 'function' || Boolean(ssgConfig === null || ssgConfig === void 0 ? void 0 : ssgConfig[entryName]);
60
86
  ssrConfigMap.set(entryName, ssrConfig || useSSG);
61
-
62
87
  if (ssrConfig || useSSG) {
63
88
  imports.push({
64
89
  value: '@modern-js/runtime/plugins',
@@ -67,7 +92,6 @@ export default (function () {
67
92
  }]
68
93
  });
69
94
  }
70
-
71
95
  return {
72
96
  entrypoint: entrypoint,
73
97
  imports: imports
@@ -75,15 +99,13 @@ export default (function () {
75
99
  },
76
100
  modifyEntryRuntimePlugins: function modifyEntryRuntimePlugins(_ref3) {
77
101
  var entrypoint = _ref3.entrypoint,
78
- plugins = _ref3.plugins;
79
-
102
+ plugins = _ref3.plugins;
80
103
  if (ssrConfigMap.get(entrypoint.entryName)) {
81
104
  plugins.push({
82
105
  name: PLUGIN_IDENTIFIER,
83
- options: ssrConfigMap.get(entrypoint.entryName)
106
+ options: JSON.stringify(ssrConfigMap.get(entrypoint.entryName))
84
107
  });
85
108
  }
86
-
87
109
  return {
88
110
  entrypoint: entrypoint,
89
111
  plugins: plugins
@@ -91,15 +113,13 @@ export default (function () {
91
113
  },
92
114
  modifyEntryExport: function modifyEntryExport(_ref4) {
93
115
  var entrypoint = _ref4.entrypoint,
94
- exportStatement = _ref4.exportStatement;
95
-
116
+ exportStatement = _ref4.exportStatement;
96
117
  if (ssrConfigMap.get(entrypoint.entryName)) {
97
118
  return {
98
119
  entrypoint: entrypoint,
99
120
  exportStatement: ["export function ".concat(SERVER_RENDER_FUNCTION_NAME, "(context) {\n return bootstrap(AppWrapper, context)\n }"), exportStatement].join('\n')
100
121
  };
101
122
  }
102
-
103
123
  return {
104
124
  entrypoint: entrypoint,
105
125
  exportStatement: exportStatement