@modern-js/runtime 2.5.0-alpha.0 → 2.6.0

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 (135) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/cjs/cli/index.js +9 -0
  3. package/dist/cjs/common.js +0 -6
  4. package/dist/cjs/core/app-config.js +5 -1
  5. package/dist/cjs/core/compatible.js +8 -7
  6. package/dist/cjs/core/loader/index.js +4 -0
  7. package/dist/cjs/core/loader/loaderManager.js +6 -0
  8. package/dist/cjs/core/loader/useLoader.js +4 -0
  9. package/dist/cjs/document/Body.js +6 -8
  10. package/dist/cjs/document/DocumentContext.js +4 -0
  11. package/dist/cjs/document/DocumentStructureContext.js +4 -0
  12. package/dist/cjs/document/Head.js +7 -11
  13. package/dist/cjs/document/Html.js +24 -22
  14. package/dist/cjs/document/Links.js +1 -3
  15. package/dist/cjs/document/Root.js +8 -14
  16. package/dist/cjs/document/Script.js +5 -7
  17. package/dist/cjs/document/Scripts.js +1 -3
  18. package/dist/cjs/document/cli/index.js +7 -1
  19. package/dist/cjs/exports/head.js +4 -0
  20. package/dist/cjs/exports/loadable.js +4 -0
  21. package/dist/cjs/exports/styled.js +4 -0
  22. package/dist/cjs/router/cli/index.js +3 -7
  23. package/dist/cjs/router/index.js +4 -0
  24. package/dist/cjs/router/runtime/DefaultNotFound.js +13 -10
  25. package/dist/cjs/router/runtime/index.js +3 -52
  26. package/dist/cjs/router/runtime/plugin.js +6 -14
  27. package/dist/cjs/router/runtime/plugin.node.js +54 -10
  28. package/dist/cjs/router/runtime/utils.js +80 -28
  29. package/dist/cjs/router/runtime/withRouter.js +9 -6
  30. package/dist/cjs/ssr/cli/babel-plugin-ssr-loader-id.js +4 -0
  31. package/dist/cjs/ssr/cli/index.js +4 -0
  32. package/dist/cjs/ssr/index.js +10 -24
  33. package/dist/cjs/ssr/index.node.js +4 -0
  34. package/dist/cjs/ssr/prefetch.js +3 -6
  35. package/dist/cjs/ssr/react/nossr/index.js +4 -0
  36. package/dist/cjs/ssr/react/prerender/index.js +4 -0
  37. package/dist/cjs/ssr/serverRender/renderToStream/buildTemplate.after.js +19 -5
  38. package/dist/cjs/ssr/serverRender/renderToStream/bulidTemplate.before.js +5 -0
  39. package/dist/cjs/ssr/serverRender/renderToStream/index.js +4 -0
  40. package/dist/cjs/ssr/serverRender/renderToStream/renderToPipe.js +7 -22
  41. package/dist/cjs/ssr/serverRender/renderToStream/template.js +1 -2
  42. package/dist/cjs/ssr/serverRender/renderToString/entry.js +14 -12
  43. package/dist/cjs/ssr/serverRender/renderToString/index.js +4 -0
  44. package/dist/cjs/ssr/serverRender/renderToString/loadable.js +1 -1
  45. package/dist/cjs/ssr/serverRender/time.worker.js +1 -1
  46. package/dist/cjs/ssr/serverRender/utils.js +1 -1
  47. package/dist/cjs/ssr/utils.js +16 -4
  48. package/dist/cjs/state/index.js +4 -0
  49. package/dist/cjs/state/plugins.js +4 -0
  50. package/dist/cjs/state/runtime/index.js +4 -0
  51. package/dist/cjs/state/runtime/plugin.js +5 -7
  52. package/dist/esm/cli/index.js +5 -1
  53. package/dist/esm/common.js +1 -3
  54. package/dist/esm/core/app-config.js +3 -1
  55. package/dist/esm/core/compatible.js +3 -1
  56. package/dist/esm/core/loader/loaderManager.js +3 -1
  57. package/dist/esm/document/cli/index.js +3 -1
  58. package/dist/esm/router/cli/index.js +1 -5
  59. package/dist/esm/router/runtime/index.js +2 -3
  60. package/dist/esm/router/runtime/plugin.js +2 -5
  61. package/dist/esm/router/runtime/plugin.node.js +65 -8
  62. package/dist/esm/router/runtime/utils.js +106 -5
  63. package/dist/esm/ssr/prefetch.js +1 -0
  64. package/dist/esm/ssr/serverRender/renderToStream/buildTemplate.after.js +39 -8
  65. package/dist/esm/ssr/serverRender/renderToStream/bulidTemplate.before.js +1 -0
  66. package/dist/esm/ssr/serverRender/renderToStream/renderToPipe.js +8 -19
  67. package/dist/esm/ssr/serverRender/renderToStream/template.js +1 -2
  68. package/dist/esm/ssr/serverRender/renderToString/entry.js +29 -16
  69. package/dist/esm/ssr/serverRender/time.worker.js +1 -1
  70. package/dist/esm/ssr/utils.js +6 -4
  71. package/dist/esm-node/cli/index.js +5 -0
  72. package/dist/esm-node/common.js +0 -4
  73. package/dist/esm-node/core/app-config.js +5 -1
  74. package/dist/esm-node/core/compatible.js +4 -7
  75. package/dist/esm-node/core/loader/loaderManager.js +2 -0
  76. package/dist/esm-node/document/Body.js +6 -8
  77. package/dist/esm-node/document/Head.js +7 -11
  78. package/dist/esm-node/document/Html.js +24 -22
  79. package/dist/esm-node/document/Links.js +1 -3
  80. package/dist/esm-node/document/Root.js +8 -14
  81. package/dist/esm-node/document/Script.js +5 -7
  82. package/dist/esm-node/document/Scripts.js +1 -3
  83. package/dist/esm-node/document/cli/index.js +3 -1
  84. package/dist/esm-node/router/cli/index.js +2 -5
  85. package/dist/esm-node/router/runtime/DefaultNotFound.js +13 -10
  86. package/dist/esm-node/router/runtime/index.js +2 -51
  87. package/dist/esm-node/router/runtime/plugin.js +2 -14
  88. package/dist/esm-node/router/runtime/plugin.node.js +53 -10
  89. package/dist/esm-node/router/runtime/utils.js +80 -22
  90. package/dist/esm-node/router/runtime/withRouter.js +9 -6
  91. package/dist/esm-node/ssr/index.js +6 -24
  92. package/dist/esm-node/ssr/prefetch.js +3 -6
  93. package/dist/esm-node/ssr/serverRender/renderToStream/buildTemplate.after.js +9 -5
  94. package/dist/esm-node/ssr/serverRender/renderToStream/bulidTemplate.before.js +1 -0
  95. package/dist/esm-node/ssr/serverRender/renderToStream/renderToPipe.js +7 -22
  96. package/dist/esm-node/ssr/serverRender/renderToStream/template.js +1 -2
  97. package/dist/esm-node/ssr/serverRender/renderToString/entry.js +10 -12
  98. package/dist/esm-node/ssr/serverRender/renderToString/loadable.js +1 -1
  99. package/dist/esm-node/ssr/serverRender/time.worker.js +1 -1
  100. package/dist/esm-node/ssr/serverRender/utils.js +1 -1
  101. package/dist/esm-node/ssr/utils.js +6 -4
  102. package/dist/esm-node/state/runtime/plugin.js +1 -7
  103. package/dist/types/common.d.ts +1 -3
  104. package/dist/types/core/index.d.ts +0 -1
  105. package/dist/types/core/loader/index.d.ts +2 -1
  106. package/dist/types/core/loader/useLoader.d.ts +15 -1
  107. package/dist/types/router/runtime/index.d.ts +2 -4
  108. package/dist/types/runtime-context.d.ts +0 -2
  109. package/dist/types/ssr/serverRender/renderToStream/buildTemplate.after.d.ts +0 -2
  110. package/dist/types/ssr/serverRender/renderToString/type.d.ts +1 -0
  111. package/package.json +17 -12
  112. package/dist/cjs/core/types.js +0 -15
  113. package/dist/cjs/router/index.node.js +0 -31
  114. package/dist/cjs/router/runtime/DeferredDataScripts.js +0 -148
  115. package/dist/cjs/ssr/prefetch.worker.js +0 -67
  116. package/dist/cjs/ssr/serverRender/renderToStream/index.worker.js +0 -64
  117. package/dist/cjs/ssr/serverRender/renderToString/index.worker.js +0 -58
  118. package/dist/esm/core/types.js +0 -1
  119. package/dist/esm/router/index.node.js +0 -4
  120. package/dist/esm/router/runtime/DeferredDataScripts.js +0 -158
  121. package/dist/esm/ssr/prefetch.worker.js +0 -191
  122. package/dist/esm/ssr/serverRender/renderToStream/index.worker.js +0 -32
  123. package/dist/esm/ssr/serverRender/renderToString/index.worker.js +0 -167
  124. package/dist/esm-node/core/types.js +0 -0
  125. package/dist/esm-node/router/index.node.js +0 -7
  126. package/dist/esm-node/router/runtime/DeferredDataScripts.js +0 -131
  127. package/dist/esm-node/ssr/prefetch.worker.js +0 -46
  128. package/dist/esm-node/ssr/serverRender/renderToStream/index.worker.js +0 -35
  129. package/dist/esm-node/ssr/serverRender/renderToString/index.worker.js +0 -29
  130. package/dist/types/core/types.d.ts +0 -21
  131. package/dist/types/router/index.node.d.ts +0 -3
  132. package/dist/types/router/runtime/DeferredDataScripts.d.ts +0 -8
  133. package/dist/types/ssr/prefetch.worker.d.ts +0 -13
  134. package/dist/types/ssr/serverRender/renderToStream/index.worker.d.ts +0 -6
  135. package/dist/types/ssr/serverRender/renderToString/index.worker.d.ts +0 -6
@@ -1,4 +1,32 @@
1
- import { serializeJson } from "@modern-js/utils/serialize";
1
+ function _defineProperty(obj, key, value) {
2
+ if (key in obj) {
3
+ Object.defineProperty(obj, key, {
4
+ value: value,
5
+ enumerable: true,
6
+ configurable: true,
7
+ writable: true
8
+ });
9
+ } else {
10
+ obj[key] = value;
11
+ }
12
+ return obj;
13
+ }
14
+ function _objectSpread(target) {
15
+ for(var i = 1; i < arguments.length; i++){
16
+ var source = arguments[i] != null ? arguments[i] : {};
17
+ var ownKeys = Object.keys(source);
18
+ if (typeof Object.getOwnPropertySymbols === "function") {
19
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
20
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
21
+ }));
22
+ }
23
+ ownKeys.forEach(function(key) {
24
+ _defineProperty(target, key, source[key]);
25
+ });
26
+ }
27
+ return target;
28
+ }
29
+ import serialize from "serialize-javascript";
2
30
  import { buildTemplate } from "./buildTemplate.share";
3
31
  function buildShellAfterTemplate(afterAppTemplate, options) {
4
32
  var injectSSRDataScript = function injectSSRDataScript(template) {
@@ -6,22 +34,25 @@ function buildShellAfterTemplate(afterAppTemplate, options) {
6
34
  return template.replace("<!--<?- SSRDataScript ?>-->", ssrDataScript);
7
35
  function buildSSRDataScript() {
8
36
  var ssrContext = options.ssrContext, renderLevel = options.renderLevel;
9
- var request = ssrContext.request;
37
+ var request = ssrContext.request, enableUnsafeCtx = ssrContext.enableUnsafeCtx;
38
+ var unsafeContext = {
39
+ headers: request.headers
40
+ };
10
41
  var SSRData = {
11
42
  context: {
12
- request: {
43
+ request: _objectSpread({
13
44
  params: request.params,
14
45
  query: request.query,
15
46
  pathname: request.pathname,
16
47
  host: request.host,
17
- url: request.url,
18
- headers: request.headers,
19
- cookieMap: request.cookieMap
20
- }
48
+ url: request.url
49
+ }, enableUnsafeCtx ? unsafeContext : {})
21
50
  },
22
51
  renderLevel: renderLevel
23
52
  };
24
- return "\n <script>window._SSR_DATA = ".concat(serializeJson(SSRData), "</script>\n ");
53
+ return "\n <script>window._SSR_DATA = ".concat(serialize(SSRData, {
54
+ isJSON: true
55
+ }), "</script>\n ");
25
56
  }
26
57
  };
27
58
  var callbacks = [
@@ -100,6 +100,7 @@ function getHeadTemplate(beforeEntryTemplate, context) {
100
100
  var helmetData = ReactHelmet.renderStatic();
101
101
  return helmetData ? helmetReplace(headTemplate2, helmetData) : headTemplate2;
102
102
  },
103
+ // @TODO: prefetch scripts of lazy component
103
104
  injectCss
104
105
  ];
105
106
  var _ref = _slicedToArray(beforeEntryTemplate.match(HEAD_REG_EXP) || [], 1), tmp = _ref[0], headTemplate = tmp === void 0 ? "" : tmp;
@@ -59,16 +59,13 @@ function _objectSpreadProps(target, source) {
59
59
  }
60
60
  import { Transform } from "stream";
61
61
  import { RenderLevel } from "../types";
62
- import { ESCAPED_SHELL_STREAM_END_MARK } from "../../../common";
63
62
  import { getTemplates } from "./template";
64
- var ShellChunkStatus = /* @__PURE__ */ function(ShellChunkStatus2) {
65
- ShellChunkStatus2[ShellChunkStatus2["IDLE"] = 0] = "IDLE";
66
- ShellChunkStatus2[ShellChunkStatus2["START"] = 1] = "START";
67
- ShellChunkStatus2[ShellChunkStatus2["FINIESH"] = 2] = "FINIESH";
68
- return ShellChunkStatus2;
69
- }(ShellChunkStatus || {});
70
63
  function renderToPipe(rootElement, context, options) {
71
- var shellChunkStatus = 0 /* IDLE */ ;
64
+ var joinChunk = function joinChunk() {
65
+ var before = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : "", chunk = arguments.length > 1 ? arguments[1] : void 0, after = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "";
66
+ return "".concat(before).concat(chunk.toString()).concat(after);
67
+ };
68
+ var isShellStream = true;
72
69
  var ssrContext = context.ssrContext;
73
70
  var forUserPipe = function(stream) {
74
71
  return new Promise(function(resolve) {
@@ -84,17 +81,9 @@ function renderToPipe(rootElement, context, options) {
84
81
  var injectableTransform = new Transform({
85
82
  transform: function transform(chunk, _encoding, callback) {
86
83
  try {
87
- if (shellChunkStatus !== 2 /* FINIESH */ ) {
88
- var concatedChunk = chunk.toString();
89
- if (shellChunkStatus === 0 /* IDLE */ ) {
90
- concatedChunk = "".concat(shellBefore).concat(concatedChunk);
91
- shellChunkStatus = 1 /* START */ ;
92
- }
93
- if (shellChunkStatus === 1 /* START */ && concatedChunk.endsWith(ESCAPED_SHELL_STREAM_END_MARK)) {
94
- concatedChunk = concatedChunk.replace(ESCAPED_SHELL_STREAM_END_MARK, shellAfter);
95
- shellChunkStatus = 2 /* FINIESH */ ;
96
- }
97
- this.push(concatedChunk);
84
+ if (isShellStream) {
85
+ this.push(joinChunk(shellBefore, chunk, shellAfter));
86
+ isShellStream = false;
98
87
  } else {
99
88
  this.push(chunk);
100
89
  }
@@ -48,12 +48,11 @@ import { buildShellAfterTemplate } from "./buildTemplate.after";
48
48
  import { buildShellBeforeTemplate } from "./bulidTemplate.before";
49
49
  var HTML_SEPARATOR = "<!--<?- html ?>-->";
50
50
  var getTemplates = function(context, renderLevel) {
51
- var ssrContext = context.ssrContext, routerContext = context.routerContext;
51
+ var ssrContext = context.ssrContext;
52
52
  var _ref = _slicedToArray(ssrContext.template.split(HTML_SEPARATOR) || [], 2), tmp = _ref[0], beforeAppTemplate = tmp === void 0 ? "" : tmp, tmp1 = _ref[1], afterAppHtmlTemplate = tmp1 === void 0 ? "" : tmp1;
53
53
  var builtBeforeTemplate = buildShellBeforeTemplate(beforeAppTemplate, context);
54
54
  var builtAfterTemplate = buildShellAfterTemplate(afterAppHtmlTemplate, {
55
55
  ssrContext: ssrContext,
56
- routerContext: routerContext,
57
56
  renderLevel: renderLevel
58
57
  });
59
58
  return {
@@ -59,6 +59,21 @@ function _defineProperty(obj, key, value) {
59
59
  }
60
60
  return obj;
61
61
  }
62
+ function _objectSpread(target) {
63
+ for(var i = 1; i < arguments.length; i++){
64
+ var source = arguments[i] != null ? arguments[i] : {};
65
+ var ownKeys = Object.keys(source);
66
+ if (typeof Object.getOwnPropertySymbols === "function") {
67
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
68
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
69
+ }));
70
+ }
71
+ ownKeys.forEach(function(key) {
72
+ _defineProperty(target, key, source[key]);
73
+ });
74
+ }
75
+ return target;
76
+ }
62
77
  var __generator = this && this.__generator || function(thisArg, body) {
63
78
  var f, y, t, g, _ = {
64
79
  label: 0,
@@ -156,7 +171,7 @@ var __generator = this && this.__generator || function(thisArg, body) {
156
171
  };
157
172
  import React from "react";
158
173
  import ReactDomServer from "react-dom/server";
159
- import { serializeJson } from "@modern-js/utils/serialize";
174
+ import serialize from "serialize-javascript";
160
175
  import ReactHelmet from "react-helmet";
161
176
  import helmetReplace from "../helmet";
162
177
  import { RenderLevel } from "../types";
@@ -166,21 +181,21 @@ import { toFragments } from "./template";
166
181
  import { reduce } from "./reduce";
167
182
  import * as loadableRenderer from "./loadable";
168
183
  import * as styledComponentRenderer from "./styledComponent";
169
- var buildTemplateData = function(context, data, routerData, renderLevel) {
170
- var request = context.request;
184
+ var buildTemplateData = function(context, data, renderLevel) {
185
+ var request = context.request, enableUnsafeCtx = context.enableUnsafeCtx;
186
+ var unsafeContext = {
187
+ headers: request.headers
188
+ };
171
189
  return {
172
190
  data: data,
173
- routerData: routerData,
174
191
  context: {
175
- request: {
192
+ request: _objectSpread({
176
193
  params: request.params,
177
194
  query: request.query,
178
195
  pathname: request.pathname,
179
196
  host: request.host,
180
- url: request.url,
181
- headers: request.headers,
182
- cookieMap: request.cookieMap
183
- }
197
+ url: request.url
198
+ }, enableUnsafeCtx ? unsafeContext : {})
184
199
  },
185
200
  renderLevel: renderLevel
186
201
  };
@@ -221,7 +236,7 @@ var Entry = /*#__PURE__*/ function() {
221
236
  value: function renderToHtml(context) {
222
237
  var _this = this;
223
238
  return _asyncToGenerator(function() {
224
- var _ssrContext_redirection, _ssrContext_redirection1, _ssrContext_redirection2, ssrContext, prefetchData, routerContext, routerData, html, templateData, SSRData, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, fragment, helmetData;
239
+ var _ssrContext_redirection, _ssrContext_redirection1, _ssrContext_redirection2, ssrContext, prefetchData, html, templateData, SSRData, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, fragment, helmetData;
225
240
  return __generator(this, function(_state) {
226
241
  switch(_state.label){
227
242
  case 0:
@@ -253,12 +268,8 @@ var Entry = /*#__PURE__*/ function() {
253
268
  ""
254
269
  ];
255
270
  }
256
- routerContext = context.routerContext;
257
- routerData = routerContext !== null && routerContext !== void 0 ? routerContext : {
258
- loaderData: routerContext.loaderData
259
- };
260
271
  html = "";
261
- templateData = buildTemplateData(ssrContext, prefetchData, routerData, _this.result.renderLevel);
272
+ templateData = buildTemplateData(ssrContext, prefetchData, _this.result.renderLevel);
262
273
  SSRData = _this.getSSRDataScript(templateData);
263
274
  _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
264
275
  try {
@@ -386,7 +397,9 @@ var Entry = /*#__PURE__*/ function() {
386
397
  key: "getSSRDataScript",
387
398
  value: function getSSRDataScript(templateData) {
388
399
  return {
389
- SSRDataScript: "\n <script>window._SSR_DATA = ".concat(serializeJson(templateData), "</script>\n ")
400
+ SSRDataScript: "\n <script>window._SSR_DATA = ".concat(serialize(templateData, {
401
+ isJSON: true
402
+ }), "</script>\n ")
390
403
  };
391
404
  }
392
405
  }
@@ -45,7 +45,7 @@ function _unsupportedIterableToArray(o, minLen) {
45
45
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
46
46
  }
47
47
  function processHrtime(previousTimestamp) {
48
- var now = new Date().getTime();
48
+ var now = /* @__PURE__ */ new Date().getTime();
49
49
  var clocktime = now * 1e-3;
50
50
  var seconds = Math.floor(clocktime);
51
51
  var nanoseconds = Math.floor(clocktime % 1 * 1e9);
@@ -72,6 +72,7 @@ function _unsupportedIterableToArray(o, minLen) {
72
72
  if (n === "Map" || n === "Set") return Array.from(n);
73
73
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
74
74
  }
75
+ import cookieTool from "cookie";
75
76
  var isReact18 = function() {
76
77
  return process.env.IS_REACT18 === "true";
77
78
  };
@@ -79,6 +80,7 @@ var formatServer = function(request) {
79
80
  var _ref = request.headers || {}, _ref_cookie = _ref.cookie, cookie = _ref_cookie === void 0 ? "" : _ref_cookie, tmp = _ref["user-agent"], userAgent = tmp === void 0 ? "" : tmp, referer = _ref.referer;
80
81
  return _objectSpread({
81
82
  cookie: cookie,
83
+ cookieMap: cookieTool.parse(cookie || "") || {},
82
84
  userAgent: userAgent,
83
85
  referer: referer
84
86
  }, request);
@@ -93,15 +95,15 @@ var getQuery = function() {
93
95
  }, {});
94
96
  };
95
97
  var formatClient = function(request) {
96
- var _request_headers, _request_headers1;
98
+ var _request_headers;
97
99
  return {
98
100
  params: request.params || {},
99
101
  host: request.host || location.host,
100
102
  pathname: request.pathname || location.pathname,
101
103
  headers: request.headers || {},
102
- cookieMap: request.cookieMap || {},
103
- cookie: ((_request_headers = request.headers) === null || _request_headers === void 0 ? void 0 : _request_headers.cookie) || document.cookie,
104
- userAgent: ((_request_headers1 = request.headers) === null || _request_headers1 === void 0 ? void 0 : _request_headers1["user-agent"]) || navigator.userAgent,
104
+ cookieMap: cookieTool.parse(document.cookie || "") || {},
105
+ cookie: document.cookie || "",
106
+ userAgent: ((_request_headers = request.headers) === null || _request_headers === void 0 ? void 0 : _request_headers["user-agent"]) || navigator.userAgent,
105
107
  referer: request.referer || document.referrer,
106
108
  query: request.query || getQuery(),
107
109
  url: location.href
@@ -24,6 +24,11 @@ var cli_default = () => ({
24
24
  runtimeByEntries: {},
25
25
  source: {
26
26
  alias: {
27
+ /**
28
+ * twin.macro inserts styled-components into the code during the compilation process
29
+ * But it will not be installed under the user project.
30
+ * So need to add alias
31
+ */
27
32
  "styled-components": require.resolve("styled-components")
28
33
  },
29
34
  globalVars: {
@@ -1,8 +1,4 @@
1
1
  const isBrowser = () => typeof window !== "undefined" && window.name !== "nodejs";
2
- const JSX_SHELL_STREAM_END_MARK = "<!--<?- SHELL_STREAM_END ?>-->";
3
- const ESCAPED_SHELL_STREAM_END_MARK = "&lt;!--&lt;?- SHELL_STREAM_END ?&gt;--&gt;";
4
2
  export {
5
- ESCAPED_SHELL_STREAM_END_MARK,
6
- JSX_SHELL_STREAM_END_MARK,
7
3
  isBrowser
8
4
  };
@@ -1,5 +1,9 @@
1
1
  const APP_CONFIG_SYMBOL = "config";
2
- const getConfig = (Component) => Component[APP_CONFIG_SYMBOL];
2
+ const getConfig = (Component) => (
3
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
4
+ // @ts-expect-error
5
+ Component[APP_CONFIG_SYMBOL]
6
+ );
3
7
  const defineConfig = (Component, config) => {
4
8
  Component[APP_CONFIG_SYMBOL] = config;
5
9
  return Component;
@@ -58,12 +58,7 @@ const createApp = ({ plugins }) => {
58
58
  }
59
59
  );
60
60
  }
61
- return /* @__PURE__ */ jsx(RuntimeReactContext.Provider, {
62
- value: contextValue,
63
- children: /* @__PURE__ */ jsx(App2, {
64
- ...props
65
- })
66
- });
61
+ return /* @__PURE__ */ jsx(RuntimeReactContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(App2, { ...props }) });
67
62
  };
68
63
  return hoistNonReactStatics(WrapComponent, App2);
69
64
  }
@@ -190,12 +185,14 @@ const bootstrap = async (BootApp, id, root, ReactDOM) => {
190
185
  {},
191
186
  {
192
187
  skipNonStatic: id.staticGenerate,
188
+ // if not static generate, only non-static loader can exec on prod env
193
189
  skipStatic: process.env.NODE_ENV === "production" && !id.staticGenerate
194
190
  }
195
191
  )
196
192
  });
197
193
  const isRedirectResponse = (result) => {
198
- if (typeof Response !== "undefined" && result instanceof Response && result.status >= 300 && result.status <= 399) {
194
+ if (typeof Response !== "undefined" && // fix: ssg workflow doesn't inject Web Response
195
+ result instanceof Response && result.status >= 300 && result.status <= 399) {
199
196
  const { status } = result;
200
197
  const redirectUrl = result.headers.get("Location") || "/";
201
198
  const { ssrContext } = context;
@@ -59,6 +59,7 @@ const createLoader = (id, initialData = {
59
59
  reloading: hasLoaded && status === 1 /* loading */,
60
60
  data,
61
61
  error: error instanceof Error ? `${error.message}` : error,
62
+ // redundant fields for ssr log
62
63
  _error: error
63
64
  });
64
65
  const notify = () => {
@@ -99,6 +100,7 @@ const createLoaderManager = (initialDataMap, managerOptions = {}) => {
99
100
  id,
100
101
  typeof initialDataMap[id] !== "undefined" ? initialDataMap[id] : { data: loaderOptions.initialData },
101
102
  loaderFn,
103
+ // Todo whether static loader is exec when CSR
102
104
  skipExec
103
105
  );
104
106
  loadersMap.set(id, loader);
@@ -9,14 +9,12 @@ import { DefaultRoot } from "./Root";
9
9
  function Body(props) {
10
10
  const { hasSetRoot } = useContext(DocumentStructureContext);
11
11
  const { children } = props;
12
- return /* @__PURE__ */ jsxs("body", {
13
- children: [
14
- hasSetRoot ? null : /* @__PURE__ */ jsx(DefaultRoot, {}),
15
- children,
16
- `${DOCUMENT_CHUNKSMAP_PLACEHOLDER}`,
17
- `${DOCUMENT_SSRDATASCRIPT_PLACEHOLDER}`
18
- ]
19
- });
12
+ return /* @__PURE__ */ jsxs("body", { children: [
13
+ hasSetRoot ? null : /* @__PURE__ */ jsx(DefaultRoot, {}),
14
+ children,
15
+ `${DOCUMENT_CHUNKSMAP_PLACEHOLDER}`,
16
+ `${DOCUMENT_SSRDATASCRIPT_PLACEHOLDER}`
17
+ ] });
20
18
  }
21
19
  export {
22
20
  Body
@@ -7,19 +7,15 @@ import { DOCUMENT_META_PLACEHOLDER } from "./constants";
7
7
  function Head(props) {
8
8
  const { hasSetScripts, hasSetLinks } = useContext(DocumentStructureContext);
9
9
  const { children } = props;
10
- return /* @__PURE__ */ jsxs("head", {
11
- children: [
12
- `${DOCUMENT_META_PLACEHOLDER}`,
13
- !hasSetLinks && /* @__PURE__ */ jsx(Links, {}),
14
- !hasSetScripts && /* @__PURE__ */ jsx(Scripts, {}),
15
- children
16
- ]
17
- });
10
+ return /* @__PURE__ */ jsxs("head", { children: [
11
+ `${DOCUMENT_META_PLACEHOLDER}`,
12
+ !hasSetLinks && /* @__PURE__ */ jsx(Links, {}),
13
+ !hasSetScripts && /* @__PURE__ */ jsx(Scripts, {}),
14
+ children
15
+ ] });
18
16
  }
19
17
  function DefaultHead() {
20
- return /* @__PURE__ */ jsx("head", {
21
- children: `${DOCUMENT_META_PLACEHOLDER}`
22
- });
18
+ return /* @__PURE__ */ jsx("head", { children: `${DOCUMENT_META_PLACEHOLDER}` });
23
19
  }
24
20
  export {
25
21
  DefaultHead,
@@ -34,29 +34,31 @@ function Html(props) {
34
34
  const notMissMustChild = [
35
35
  hasSetHead,
36
36
  hasSetBody
37
+ // hasSetScripts,
38
+ // hasSetRoot,
37
39
  ].every((item) => item);
38
40
  if (!notMissMustChild) {
39
- return /* @__PURE__ */ jsx("html", {
40
- children: /* @__PURE__ */ jsxs("body", {
41
- style: { color: "red" },
42
- children: [
43
- `Miss the `,
44
- [
45
- hasSetHead,
46
- hasSetBody
47
- ].map((item, index) => {
48
- return item ? null : [
49
- "Head",
50
- "Body"
51
- ][index];
52
- }),
53
- ` Element`
54
- ]
55
- })
56
- });
41
+ return /* @__PURE__ */ jsx("html", { children: /* @__PURE__ */ jsxs("body", { style: { color: "red" }, children: [
42
+ `Miss the `,
43
+ [
44
+ hasSetHead,
45
+ hasSetBody
46
+ // hasSetScripts,
47
+ // hasSetRoot,
48
+ ].map((item, index) => {
49
+ return item ? null : [
50
+ "Head",
51
+ "Body"
52
+ // 'Scripts',
53
+ // 'Root',
54
+ ][index];
55
+ }),
56
+ ` Element`
57
+ ] }) });
57
58
  }
58
- return /* @__PURE__ */ jsx("html", {
59
- children: /* @__PURE__ */ jsxs(DocumentStructureContext.Provider, {
59
+ return /* @__PURE__ */ jsx("html", { children: /* @__PURE__ */ jsxs(
60
+ DocumentStructureContext.Provider,
61
+ {
60
62
  value: {
61
63
  hasSetHead,
62
64
  hasSetScripts,
@@ -70,8 +72,8 @@ function Html(props) {
70
72
  !hasSetBody && /* @__PURE__ */ jsx(Body, {}),
71
73
  children
72
74
  ]
73
- })
74
- });
75
+ }
76
+ ) });
75
77
  }
76
78
  export {
77
79
  Html
@@ -1,9 +1,7 @@
1
1
  import { Fragment, jsx } from "react/jsx-runtime";
2
2
  import { DOCUMENT_LINKS_PLACEHOLDER } from "./constants";
3
3
  function Links() {
4
- return /* @__PURE__ */ jsx(Fragment, {
5
- children: DOCUMENT_LINKS_PLACEHOLDER
6
- });
4
+ return /* @__PURE__ */ jsx(Fragment, { children: DOCUMENT_LINKS_PLACEHOLDER });
7
5
  }
8
6
  export {
9
7
  Links
@@ -7,25 +7,19 @@ function Root(props) {
7
7
  const {
8
8
  templateParams: { mountId = "root" }
9
9
  } = useContext(DocumentContext);
10
- return /* @__PURE__ */ jsxs("div", {
11
- id: `${rootId || mountId}`,
12
- children: [
13
- `${DOCUMENT_SSR_PLACEHOLDER}`,
14
- children
15
- ]
16
- });
10
+ return /* @__PURE__ */ jsxs("div", { id: `${rootId || mountId}`, children: [
11
+ `${DOCUMENT_SSR_PLACEHOLDER}`,
12
+ children
13
+ ] });
17
14
  }
18
15
  function DefaultRoot(props) {
19
16
  const {
20
17
  templateParams: { mountId = "root" }
21
18
  } = useContext(DocumentContext);
22
- return /* @__PURE__ */ jsxs("div", {
23
- id: `${mountId}`,
24
- children: [
25
- `${DOCUMENT_SSR_PLACEHOLDER}`,
26
- props.children
27
- ]
28
- });
19
+ return /* @__PURE__ */ jsxs("div", { id: `${mountId}`, children: [
20
+ `${DOCUMENT_SSR_PLACEHOLDER}`,
21
+ props.children
22
+ ] });
29
23
  }
30
24
  export {
31
25
  DefaultRoot,
@@ -7,13 +7,11 @@ function Script(props) {
7
7
  const { content } = props;
8
8
  const contentStr = content.toString();
9
9
  const contentIIFE = encodeURIComponent(`(${contentStr})()`);
10
- return /* @__PURE__ */ jsxs(Fragment, {
11
- children: [
12
- `${DOCUMENT_SCRIPT_PLACEHOLDER_START}`,
13
- `${contentIIFE}`,
14
- `${DOCUMENT_SCRIPT_PLACEHOLDER_END}`
15
- ]
16
- });
10
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
11
+ `${DOCUMENT_SCRIPT_PLACEHOLDER_START}`,
12
+ `${contentIIFE}`,
13
+ `${DOCUMENT_SCRIPT_PLACEHOLDER_END}`
14
+ ] });
17
15
  }
18
16
  export {
19
17
  Script
@@ -1,9 +1,7 @@
1
1
  import { Fragment, jsx } from "react/jsx-runtime";
2
2
  import { DOCUMENT_SCRIPTS_PLACEHOLDER } from "./constants";
3
3
  function Scripts() {
4
- return /* @__PURE__ */ jsx(Fragment, {
5
- children: `${DOCUMENT_SCRIPTS_PLACEHOLDER}`
6
- });
4
+ return /* @__PURE__ */ jsx(Fragment, { children: `${DOCUMENT_SCRIPTS_PLACEHOLDER}` });
7
5
  }
8
6
  export {
9
7
  Scripts
@@ -91,6 +91,7 @@ var cli_default = () => ({
91
91
  entryPoints: [documentFilePath],
92
92
  outfile: htmlOutputFile,
93
93
  platform: "node",
94
+ // change esbuild use the rootDir tsconfig.json as default to tempTsConfigFile
94
95
  tsconfig: tempTsConfigFile,
95
96
  target: "es6",
96
97
  loader: {
@@ -147,7 +148,7 @@ var cli_default = () => ({
147
148
  `${DOCUMENT_SCRIPT_PLACEHOLDER_START}(.*?)${DOCUMENT_SCRIPT_PLACEHOLDER_END}`,
148
149
  "g"
149
150
  ),
150
- (_scriptStr, $1) => `<script>${decodeURIComponent($1)}<\/script>`
151
+ (_scriptStr, $1) => `<script>${decodeURIComponent($1)}</script>`
151
152
  );
152
153
  }
153
154
  const finalHtml = `<!DOCTYPE html>${html}`.replace(DOCUMENT_META_PLACEHOLDER, metas).replace(DOCUMENT_SSR_PLACEHOLDER, HTML_SEPARATOR).replace(DOCUMENT_SCRIPTS_PLACEHOLDER, scripts).replace(DOCUMENT_LINKS_PLACEHOLDER, links).replace(
@@ -173,6 +174,7 @@ var cli_default = () => ({
173
174
  ) : { ...options == null ? void 0 : options.templateParameters };
174
175
  const templateContent = documentEntry(
175
176
  entry.entryName,
177
+ // options,
176
178
  hackParameters
177
179
  );
178
180
  const documentHtmlOptions = templateContent ? {
@@ -1,14 +1,11 @@
1
1
  import {
2
2
  getEntryOptions,
3
3
  createRuntimeExportsUtils,
4
- PLUGIN_SCHEMAS
4
+ PLUGIN_SCHEMAS,
5
+ isRouterV5 as isV5
5
6
  } from "@modern-js/utils";
6
7
  const PLUGIN_IDENTIFIER = "router";
7
8
  const ROUTES_IDENTIFIER = "routes";
8
- const isV5 = (config) => {
9
- var _a, _b;
10
- return ((_b = (_a = config == null ? void 0 : config.runtime) == null ? void 0 : _a.router) == null ? void 0 : _b.mode) === "react-router-5";
11
- };
12
9
  var cli_default = () => ({
13
10
  name: "@modern-js/plugin-router",
14
11
  required: ["@modern-js/runtime"],
@@ -1,14 +1,17 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
- const DefaultNotFound = () => /* @__PURE__ */ jsx("div", {
3
- style: {
4
- margin: "150px auto",
5
- textAlign: "center",
6
- display: "flex",
7
- alignItems: "center",
8
- justifyContent: "center"
9
- },
10
- children: "404"
11
- });
2
+ const DefaultNotFound = () => /* @__PURE__ */ jsx(
3
+ "div",
4
+ {
5
+ style: {
6
+ margin: "150px auto",
7
+ textAlign: "center",
8
+ display: "flex",
9
+ alignItems: "center",
10
+ justifyContent: "center"
11
+ },
12
+ children: "404"
13
+ }
14
+ );
12
15
  export {
13
16
  DefaultNotFound
14
17
  };