@modern-js/runtime 2.3.1-alpha.0 → 2.4.1-alpha.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 (105) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +14 -18
  3. package/dist/js/modern/core/compatible.js +1 -0
  4. package/dist/js/modern/document/Body.js +2 -2
  5. package/dist/js/modern/document/{DocumentStructrueContext.js → DocumentStructureContext.js} +2 -2
  6. package/dist/js/modern/document/Head.js +2 -2
  7. package/dist/js/modern/document/Html.js +2 -2
  8. package/dist/js/modern/document/index.js +1 -1
  9. package/dist/js/modern/router/runtime/fetch.js +5 -0
  10. package/dist/js/modern/router/runtime/fetch.node.js +4 -0
  11. package/dist/js/modern/router/runtime/fetch.worker.js +5 -0
  12. package/dist/js/modern/router/runtime/plugin.node.js +50 -22
  13. package/dist/js/modern/ssr/cli/index.js +2 -2
  14. package/dist/js/modern/ssr/prefetch.worker.js +66 -0
  15. package/dist/js/modern/ssr/react/nossr/index.js +6 -2
  16. package/dist/js/modern/ssr/serverRender/renderToStream/index.js +1 -1
  17. package/dist/js/modern/ssr/serverRender/renderToStream/index.worker.js +35 -0
  18. package/dist/js/modern/ssr/serverRender/renderToStream/renderToPipe.js +5 -3
  19. package/dist/js/modern/ssr/serverRender/renderToStream/renderToPipe.worker.js +110 -0
  20. package/dist/js/modern/ssr/serverRender/renderToString/entry.js +6 -7
  21. package/dist/js/modern/ssr/serverRender/renderToString/index.js +1 -1
  22. package/dist/js/modern/ssr/serverRender/renderToString/index.worker.js +49 -0
  23. package/dist/js/modern/ssr/serverRender/time.js +13 -0
  24. package/dist/js/modern/ssr/serverRender/time.worker.js +28 -0
  25. package/dist/js/modern/ssr/serverRender/utils.js +1 -12
  26. package/dist/js/node/core/compatible.js +1 -0
  27. package/dist/js/node/document/Body.js +2 -2
  28. package/dist/js/node/document/{DocumentStructrueContext.js → DocumentStructureContext.js} +6 -6
  29. package/dist/js/node/document/Head.js +2 -2
  30. package/dist/js/node/document/Html.js +2 -2
  31. package/dist/js/node/document/index.js +1 -1
  32. package/dist/js/node/router/runtime/fetch.js +28 -0
  33. package/dist/js/node/router/runtime/fetch.node.js +27 -0
  34. package/dist/js/node/router/runtime/fetch.worker.js +28 -0
  35. package/dist/js/node/router/runtime/plugin.node.js +46 -21
  36. package/dist/js/node/ssr/cli/index.js +2 -2
  37. package/dist/js/node/ssr/prefetch.worker.js +87 -0
  38. package/dist/js/node/ssr/react/nossr/index.js +6 -2
  39. package/dist/js/node/ssr/serverRender/renderToStream/index.js +2 -2
  40. package/dist/js/node/ssr/serverRender/renderToStream/index.worker.js +64 -0
  41. package/dist/js/node/ssr/serverRender/renderToStream/renderToPipe.js +6 -2
  42. package/dist/js/node/ssr/serverRender/renderToStream/renderToPipe.worker.js +129 -0
  43. package/dist/js/node/ssr/serverRender/renderToString/entry.js +8 -9
  44. package/dist/js/node/ssr/serverRender/renderToString/index.js +2 -2
  45. package/dist/js/node/ssr/serverRender/renderToString/index.worker.js +78 -0
  46. package/dist/js/node/ssr/serverRender/time.js +36 -0
  47. package/dist/js/node/ssr/serverRender/time.worker.js +51 -0
  48. package/dist/js/node/ssr/serverRender/utils.js +2 -14
  49. package/dist/js/treeshaking/core/compatible.js +8 -7
  50. package/dist/js/treeshaking/core/loader/loaderManager.js +3 -3
  51. package/dist/js/treeshaking/core/loader/useLoader.js +15 -15
  52. package/dist/js/treeshaking/document/Body.js +2 -2
  53. package/dist/js/treeshaking/document/{DocumentStructrueContext.js → DocumentStructureContext.js} +2 -2
  54. package/dist/js/treeshaking/document/Head.js +2 -2
  55. package/dist/js/treeshaking/document/Html.js +4 -4
  56. package/dist/js/treeshaking/document/Root.js +2 -2
  57. package/dist/js/treeshaking/document/cli/index.js +4 -4
  58. package/dist/js/treeshaking/document/index.js +1 -1
  59. package/dist/js/treeshaking/router/cli/index.js +2 -2
  60. package/dist/js/treeshaking/router/runtime/fetch.js +2 -0
  61. package/dist/js/treeshaking/router/runtime/fetch.node.js +2 -0
  62. package/dist/js/treeshaking/router/runtime/fetch.worker.js +2 -0
  63. package/dist/js/treeshaking/router/runtime/plugin.js +3 -3
  64. package/dist/js/treeshaking/router/runtime/plugin.node.js +70 -22
  65. package/dist/js/treeshaking/router/runtime/utils.js +3 -3
  66. package/dist/js/treeshaking/ssr/cli/index.js +5 -5
  67. package/dist/js/treeshaking/ssr/index.js +6 -6
  68. package/dist/js/treeshaking/ssr/index.node.js +1 -1
  69. package/dist/js/treeshaking/ssr/prefetch.js +2 -2
  70. package/dist/js/treeshaking/ssr/prefetch.worker.js +191 -0
  71. package/dist/js/treeshaking/ssr/react/nossr/index.js +3 -3
  72. package/dist/js/treeshaking/ssr/react/prerender/index.js +2 -2
  73. package/dist/js/treeshaking/ssr/react/prerender/util.js +2 -2
  74. package/dist/js/treeshaking/ssr/serverRender/renderToStream/bulidTemplate.before.js +2 -2
  75. package/dist/js/treeshaking/ssr/serverRender/renderToStream/index.js +1 -1
  76. package/dist/js/treeshaking/ssr/serverRender/renderToStream/index.worker.js +32 -0
  77. package/dist/js/treeshaking/ssr/serverRender/renderToStream/loadable.js +1 -1
  78. package/dist/js/treeshaking/ssr/serverRender/renderToStream/renderToPipe.js +12 -9
  79. package/dist/js/treeshaking/ssr/serverRender/renderToStream/renderToPipe.worker.js +280 -0
  80. package/dist/js/treeshaking/ssr/serverRender/renderToStream/template.js +1 -1
  81. package/dist/js/treeshaking/ssr/serverRender/renderToString/entry.js +6 -8
  82. package/dist/js/treeshaking/ssr/serverRender/renderToString/index.js +1 -1
  83. package/dist/js/treeshaking/ssr/serverRender/renderToString/index.worker.js +167 -0
  84. package/dist/js/treeshaking/ssr/serverRender/renderToString/loadable.js +1 -1
  85. package/dist/js/treeshaking/ssr/serverRender/time.js +57 -0
  86. package/dist/js/treeshaking/ssr/serverRender/time.worker.js +75 -0
  87. package/dist/js/treeshaking/ssr/serverRender/utils.js +1 -57
  88. package/dist/js/treeshaking/ssr/utils.js +5 -5
  89. package/dist/js/treeshaking/state/cli/index.js +2 -2
  90. package/dist/js/treeshaking/state/runtime/plugin.js +3 -3
  91. package/dist/types/document/{DocumentStructrueContext.d.ts → DocumentStructureContext.d.ts} +2 -2
  92. package/dist/types/document/index.d.ts +1 -1
  93. package/dist/types/router/runtime/fetch.d.ts +2 -0
  94. package/dist/types/router/runtime/fetch.node.d.ts +2 -0
  95. package/dist/types/router/runtime/fetch.worker.d.ts +2 -0
  96. package/dist/types/ssr/prefetch.worker.d.ts +13 -0
  97. package/dist/types/ssr/react/nossr/index.d.ts +4 -2
  98. package/dist/types/ssr/serverRender/renderToStream/index.worker.d.ts +6 -0
  99. package/dist/types/ssr/serverRender/renderToStream/renderToPipe.d.ts +1 -1
  100. package/dist/types/ssr/serverRender/renderToStream/renderToPipe.worker.d.ts +8 -0
  101. package/dist/types/ssr/serverRender/renderToString/index.worker.d.ts +6 -0
  102. package/dist/types/ssr/serverRender/time.d.ts +1 -0
  103. package/dist/types/ssr/serverRender/time.worker.d.ts +1 -0
  104. package/dist/types/ssr/serverRender/utils.d.ts +2 -3
  105. package/package.json +35 -22
@@ -184,10 +184,10 @@ import { DocumentContext } from "../DocumentContext";
184
184
  import { DOCUMENT_SCRIPTS_PLACEHOLDER, DOCUMENT_LINKS_PLACEHOLDER, DOCUMENT_FILE_NAME, DOCUMENT_META_PLACEHOLDER, PLACEHOLDER_REPLACER_MAP, DOC_EXT, DOCUMENT_SSR_PLACEHOLDER, DOCUMENT_CHUNKSMAP_PLACEHOLDER, DOCUMENT_SSRDATASCRIPT_PLACEHOLDER, DOCUMENT_SCRIPT_PLACEHOLDER_START, DOCUMENT_SCRIPT_PLACEHOLDER_END, HTML_SEPARATOR } from "../constants";
185
185
  var debug = createDebugger("html_genarate");
186
186
  var getDocumenByEntryName = function getDocumenByEntryName(entrypoints, entryName, fallbackDir) {
187
- var ref;
188
- var entryDir = (ref = entrypoints.find(function(item) {
187
+ var _entrypoints_find;
188
+ var entryDir = (_entrypoints_find = entrypoints.find(function(item) {
189
189
  return item.entryName === entryName;
190
- })) === null || ref === void 0 ? void 0 : ref.absoluteEntryDir;
190
+ })) === null || _entrypoints_find === void 0 ? void 0 : _entrypoints_find.absoluteEntryDir;
191
191
  var entryDirs = DOC_EXT.map(function(item) {
192
192
  return "".concat(entryDir).concat(path.sep).concat(DOCUMENT_FILE_NAME, ".").concat(item);
193
193
  });
@@ -223,7 +223,7 @@ var cli_default = function() {
223
223
  }
224
224
  return __generator(this, function(_state) {
225
225
  documentEntry = function(entryName, templateParameters) {
226
- var ref = api.useAppContext(), entrypoints = ref.entrypoints, internalDirectory = ref.internalDirectory, appDirectory = ref.appDirectory;
226
+ var _api_useAppContext = api.useAppContext(), entrypoints = _api_useAppContext.entrypoints, internalDirectory = _api_useAppContext.internalDirectory, appDirectory = _api_useAppContext.appDirectory;
227
227
  var documentFilePath = getDocumenByEntryName(entrypoints, entryName, appDirectory);
228
228
  if (!documentFilePath) {
229
229
  return null;
@@ -1,6 +1,6 @@
1
1
  export * from "./Html";
2
2
  export * from "./DocumentContext";
3
- export * from "./DocumentStructrueContext";
3
+ export * from "./DocumentStructureContext";
4
4
  export * from "./Head";
5
5
  export * from "./Body";
6
6
  export * from "./Root";
@@ -54,8 +54,8 @@ import { getEntryOptions, createRuntimeExportsUtils, PLUGIN_SCHEMAS } from "@mod
54
54
  var PLUGIN_IDENTIFIER = "router";
55
55
  var ROUTES_IDENTIFIER = "routes";
56
56
  var isV5 = function(config) {
57
- var ref, ref1;
58
- return (config === null || config === void 0 ? void 0 : (ref = config.runtime) === null || ref === void 0 ? void 0 : (ref1 = ref.router) === null || ref1 === void 0 ? void 0 : ref1.mode) === "react-router-5";
57
+ var _config_runtime, _config_runtime_router;
58
+ return (config === null || config === void 0 ? void 0 : (_config_runtime = config.runtime) === null || _config_runtime === void 0 ? void 0 : (_config_runtime_router = _config_runtime.router) === null || _config_runtime_router === void 0 ? void 0 : _config_runtime_router.mode) === "react-router-5";
59
59
  };
60
60
  var cli_default = function() {
61
61
  return {
@@ -0,0 +1,2 @@
1
+ function installGlobals() {}
2
+ export { installGlobals };
@@ -0,0 +1,2 @@
1
+ import { installGlobals } from "@remix-run/node";
2
+ export { installGlobals };
@@ -0,0 +1,2 @@
1
+ function installGlobals() {}
2
+ export { installGlobals };
@@ -68,7 +68,7 @@ function modifyRoutes(modifyFunction) {
68
68
  }
69
69
  }
70
70
  var routerPlugin = function(param) {
71
- var _serverBase = param.serverBase, serverBase = _serverBase === void 0 ? [] : _serverBase, _supportHtml5History = param.supportHtml5History, supportHtml5History = _supportHtml5History === void 0 ? true : _supportHtml5History, _basename = param.basename, basename = _basename === void 0 ? "" : _basename, routesConfig = param.routesConfig, createRoutes = param.createRoutes;
71
+ var _param_serverBase = param.serverBase, serverBase = _param_serverBase === void 0 ? [] : _param_serverBase, _param_supportHtml5History = param.supportHtml5History, supportHtml5History = _param_supportHtml5History === void 0 ? true : _param_supportHtml5History, _param_basename = param.basename, basename = _param_basename === void 0 ? "" : _param_basename, routesConfig = param.routesConfig, createRoutes = param.createRoutes;
72
72
  var select = function(pathname) {
73
73
  return serverBase.find(function(baseUrl) {
74
74
  return pathname.search(baseUrl) === 0;
@@ -98,10 +98,10 @@ var routerPlugin = function(param) {
98
98
  }
99
99
  var getRouteApp = function() {
100
100
  return function(props) {
101
- var ref;
101
+ var _window__SERVER_DATA;
102
102
  beforeCreateRouter = true;
103
103
  var routes = createRoutes ? createRoutes() : createRoutesFromElements(renderRoutes(finalRouteConfig));
104
- var baseUrl = ((ref = window._SERVER_DATA) === null || ref === void 0 ? void 0 : ref.router.baseUrl) || select(location.pathname);
104
+ var baseUrl = ((_window__SERVER_DATA = window._SERVER_DATA) === null || _window__SERVER_DATA === void 0 ? void 0 : _window__SERVER_DATA.router.baseUrl) || select(location.pathname);
105
105
  var _basename = baseUrl === "/" ? urlJoin(baseUrl, basename) : baseUrl;
106
106
  var router = supportHtml5History ? createBrowserRouter(routes, {
107
107
  basename: _basename
@@ -227,16 +227,16 @@ var __generator = this && this.__generator || function(thisArg, body) {
227
227
  };
228
228
  }
229
229
  };
230
- import { jsx } from "react/jsx-runtime";
230
+ import { jsx, jsxs } from "react/jsx-runtime";
231
231
  import { useContext } from "react";
232
- import { createStaticHandler } from "@remix-run/router";
232
+ import serialize from "serialize-javascript";
233
+ import { createStaticHandler, isRouteErrorResponse } from "@remix-run/router";
233
234
  import { createStaticRouter, StaticRouterProvider } from "react-router-dom/server";
234
235
  import hoistNonReactStatics from "hoist-non-react-statics";
235
- import { installGlobals } from "@remix-run/node";
236
236
  import { createRoutesFromElements } from "react-router-dom";
237
- import serialize from "serialize-javascript";
238
237
  import { RuntimeReactContext } from "../../core";
239
238
  import { renderRoutes, urlJoin } from "./utils";
239
+ import { installGlobals } from "./fetch";
240
240
  installGlobals();
241
241
  function createFetchRequest(req) {
242
242
  var origin = "".concat(req.protocol, "://").concat(req.host);
@@ -253,8 +253,8 @@ function createFetchHeaders(requestHeaders) {
253
253
  var headers = new Headers();
254
254
  var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
255
255
  try {
256
- for(var _iterator = Object.entries(requestHeaders)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
257
- var _value = _slicedToArray(_step.value, 2), key = _value[0], values = _value[1];
256
+ for(var _iterator = Object.entries(requestHeaders || {})[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
257
+ var _step_value = _slicedToArray(_step.value, 2), key = _step_value[0], values = _step_value[1];
258
258
  if (values) {
259
259
  if (Array.isArray(values)) {
260
260
  var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
@@ -298,8 +298,47 @@ function createFetchHeaders(requestHeaders) {
298
298
  }
299
299
  return headers;
300
300
  }
301
+ function serializeErrors(errors) {
302
+ if (!errors) {
303
+ return null;
304
+ }
305
+ var entries = Object.entries(errors);
306
+ var serialized = {};
307
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
308
+ try {
309
+ for(var _iterator = entries[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
310
+ var _step_value = _slicedToArray(_step.value, 2), key = _step_value[0], val = _step_value[1];
311
+ if (isRouteErrorResponse(val)) {
312
+ serialized[key] = _objectSpreadProps(_objectSpread({}, val), {
313
+ __type: "RouteErrorResponse"
314
+ });
315
+ } else if (_instanceof(val, Error)) {
316
+ serialized[key] = {
317
+ message: val.message,
318
+ __type: "Error"
319
+ };
320
+ } else {
321
+ serialized[key] = val;
322
+ }
323
+ }
324
+ } catch (err) {
325
+ _didIteratorError = true;
326
+ _iteratorError = err;
327
+ } finally{
328
+ try {
329
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
330
+ _iterator.return();
331
+ }
332
+ } finally{
333
+ if (_didIteratorError) {
334
+ throw _iteratorError;
335
+ }
336
+ }
337
+ }
338
+ return serialized;
339
+ }
301
340
  var routerPlugin = function(param) {
302
- var _basename = param.basename, basename = _basename === void 0 ? "" : _basename, routesConfig = param.routesConfig, createRoutes = param.createRoutes;
341
+ var _param_basename = param.basename, basename = _param_basename === void 0 ? "" : _param_basename, routesConfig = param.routesConfig, createRoutes = param.createRoutes;
303
342
  return {
304
343
  name: "@modern-js/plugin-router",
305
344
  setup: function() {
@@ -339,14 +378,6 @@ var routerPlugin = function(param) {
339
378
  routerContext
340
379
  ];
341
380
  }
342
- if (routerContext.loaderData) {
343
- routerContext.loaderData = JSON.parse(JSON.stringify(routerContext.loaderData), function(k, v) {
344
- if (typeof v === "string") {
345
- return serialize(v);
346
- }
347
- return v;
348
- });
349
- }
350
381
  router = createStaticRouter(routes, routerContext);
351
382
  context.router = router;
352
383
  context.routerContext = routerContext;
@@ -371,13 +402,30 @@ var routerPlugin = function(param) {
371
402
  }
372
403
  var getRouteApp = function() {
373
404
  return function(props) {
374
- var ref = useContext(RuntimeReactContext), router = ref.router, routerContext = ref.routerContext;
375
- return /* @__PURE__ */ jsx(App, _objectSpreadProps(_objectSpread({}, props), {
376
- children: /* @__PURE__ */ jsx(StaticRouterProvider, {
377
- router: router,
378
- context: routerContext,
379
- nonce: "the-nonce"
380
- })
405
+ var _useContext = useContext(RuntimeReactContext), router = _useContext.router, routerContext = _useContext.routerContext;
406
+ var data = {
407
+ loaderData: routerContext.loaderData,
408
+ actionData: routerContext.actionData,
409
+ errors: serializeErrors(routerContext.errors)
410
+ };
411
+ var hydrateScript = "window.__staticRouterHydrationData = ".concat(serialize(data, {
412
+ isJSON: true
413
+ }), ";");
414
+ return /* @__PURE__ */ jsxs(App, _objectSpreadProps(_objectSpread({}, props), {
415
+ children: [
416
+ /* @__PURE__ */ jsx(StaticRouterProvider, {
417
+ router: router,
418
+ context: routerContext,
419
+ hydrate: false
420
+ }),
421
+ /* @__PURE__ */ jsx("script", {
422
+ suppressHydrationWarning: true,
423
+ id: "the-nonce",
424
+ dangerouslySetInnerHTML: {
425
+ __html: hydrateScript
426
+ }
427
+ })
428
+ ]
381
429
  }));
382
430
  };
383
431
  };
@@ -203,9 +203,9 @@ function renderRoutes(routesConfig) {
203
203
  return routeElements;
204
204
  }
205
205
  function getLocation(serverContext) {
206
- var ref;
207
- var ref1 = (serverContext === null || serverContext === void 0 ? void 0 : serverContext.request) || {}, pathname = ref1.pathname, url = ref1.url;
208
- var cleanUrl = (ref = url === null || url === void 0 ? void 0 : url.replace("http://", "")) === null || ref === void 0 ? void 0 : ref.replace("https://", "");
206
+ var _url_replace;
207
+ var _ref = (serverContext === null || serverContext === void 0 ? void 0 : serverContext.request) || {}, pathname = _ref.pathname, url = _ref.url;
208
+ var cleanUrl = (_url_replace = url === null || url === void 0 ? void 0 : url.replace("http://", "")) === null || _url_replace === void 0 ? void 0 : _url_replace.replace("https://", "");
209
209
  var index = (cleanUrl || "").indexOf(pathname);
210
210
  if (index === -1) {
211
211
  return pathname;
@@ -118,7 +118,7 @@ var cli_default = function() {
118
118
  },
119
119
  tools: {
120
120
  webpackChain: function(chain, param) {
121
- var name = param.name, isServer = param.isServer, CHAIN_ID = param.CHAIN_ID;
121
+ var name = param.name, isServer = param.isServer, isServiceWorker = param.isServiceWorker, CHAIN_ID = param.CHAIN_ID;
122
122
  var userConfig = api.useResolvedConfigContext();
123
123
  if (isUseSSRBundle(userConfig) && name !== "server" && hasStringSSREntry(userConfig)) {
124
124
  var LoadableWebpackPlugin = require("@loadable/webpack-plugin");
@@ -128,7 +128,7 @@ var cli_default = function() {
128
128
  }
129
129
  ]);
130
130
  }
131
- var modernVars = _defineProperty({}, "process.env.MODERN_TARGET", JSON.stringify(isServer ? "node" : "browser"));
131
+ var modernVars = _defineProperty({}, "process.env.MODERN_TARGET", JSON.stringify(isServer || isServiceWorker ? "node" : "browser"));
132
132
  chain.plugin(CHAIN_ID.PLUGIN.DEFINE).tap(function(args) {
133
133
  var _args = _toArray(args), vars = _args[0], rest = _args.slice(1);
134
134
  return [
@@ -150,13 +150,13 @@ var cli_default = function() {
150
150
  var entrypoint = param.entrypoint, imports = param.imports;
151
151
  var entryName = entrypoint.entryName, fileSystemRoutes = entrypoint.fileSystemRoutes;
152
152
  var userConfig = api.useResolvedConfigContext();
153
- var ref = api.useAppContext(), packageName = ref.packageName, entrypoints = ref.entrypoints;
153
+ var _api_useAppContext = api.useAppContext(), packageName = _api_useAppContext.packageName, entrypoints = _api_useAppContext.entrypoints;
154
154
  pluginsExportsUtils.addExport("export { default as ssr } from '@modern-js/runtime/ssr'");
155
155
  var ssrConfig = getEntryOptions(entryName, userConfig.server.ssr, userConfig.server.ssrByEntries, packageName);
156
156
  if (typeof ssrConfig === "object" && ssrConfig.mode === "stream") {
157
- var ref1;
157
+ var _runtimeConfig_router;
158
158
  var runtimeConfig = getEntryOptions(entryName, userConfig.runtime, userConfig.runtimeByEntries, packageName);
159
- if ((runtimeConfig === null || runtimeConfig === void 0 ? void 0 : (ref1 = runtimeConfig.router) === null || ref1 === void 0 ? void 0 : ref1.mode) === "react-router-5") {
159
+ if ((runtimeConfig === null || runtimeConfig === void 0 ? void 0 : (_runtimeConfig_router = runtimeConfig.router) === null || _runtimeConfig_router === void 0 ? void 0 : _runtimeConfig_router.mode) === "react-router-5") {
160
160
  throw new Error("router v5 plugin doesn't support streaming SSR, check your config 'runtime.router'");
161
161
  }
162
162
  if (fileSystemRoutes && !entrypoint.nestedRoutesEntry) {
@@ -188,7 +188,7 @@ var ssr = function(config) {
188
188
  return {
189
189
  client: function() {
190
190
  var _ref = _asyncToGenerator(function(param) {
191
- var App, context, ModernRender, ModernHydrate, ref, hydrateContext, callback, renderLevel;
191
+ var App, context, ModernRender, ModernHydrate, _window__SSR_DATA, hydrateContext, callback, renderLevel;
192
192
  function stringSSRHydrate() {
193
193
  if (renderLevel === RenderLevel.CLIENT_RENDER || renderLevel === RenderLevel.SERVER_PREFETCH) {
194
194
  ModernRender(/* @__PURE__ */ jsx(App, {
@@ -248,7 +248,7 @@ var ssr = function(config) {
248
248
  callback = function() {
249
249
  delete hydrateContext._hydration;
250
250
  };
251
- renderLevel = (window === null || window === void 0 ? void 0 : (ref = window._SSR_DATA) === null || ref === void 0 ? void 0 : ref.renderLevel) || RenderLevel.CLIENT_RENDER;
251
+ renderLevel = (window === null || window === void 0 ? void 0 : (_window__SSR_DATA = window._SSR_DATA) === null || _window__SSR_DATA === void 0 ? void 0 : _window__SSR_DATA.renderLevel) || RenderLevel.CLIENT_RENDER;
252
252
  if (isReact18() && config.mode === "stream") {
253
253
  return [
254
254
  2,
@@ -267,8 +267,8 @@ var ssr = function(config) {
267
267
  }(),
268
268
  init: function init(param, next) {
269
269
  var context = param.context;
270
- var ref, ref1;
271
- var request = window === null || window === void 0 ? void 0 : (ref = window._SSR_DATA) === null || ref === void 0 ? void 0 : (ref1 = ref.context) === null || ref1 === void 0 ? void 0 : ref1.request;
270
+ var _window__SSR_DATA, _window__SSR_DATA_context;
271
+ var request = window === null || window === void 0 ? void 0 : (_window__SSR_DATA = window._SSR_DATA) === null || _window__SSR_DATA === void 0 ? void 0 : (_window__SSR_DATA_context = _window__SSR_DATA.context) === null || _window__SSR_DATA_context === void 0 ? void 0 : _window__SSR_DATA_context.request;
272
272
  if (!request) {
273
273
  context.ssrContext = _objectSpreadProps(_objectSpread({}, context.ssrContext), {
274
274
  response: mockResp,
@@ -286,8 +286,8 @@ var ssr = function(config) {
286
286
  },
287
287
  pickContext: function(param, next) {
288
288
  var context = param.context, pickedContext = param.pickedContext;
289
- var ref, ref1;
290
- var request = window === null || window === void 0 ? void 0 : (ref = window._SSR_DATA) === null || ref === void 0 ? void 0 : (ref1 = ref.context) === null || ref1 === void 0 ? void 0 : ref1.request;
289
+ var _window__SSR_DATA, _window__SSR_DATA_context;
290
+ var request = window === null || window === void 0 ? void 0 : (_window__SSR_DATA = window._SSR_DATA) === null || _window__SSR_DATA === void 0 ? void 0 : (_window__SSR_DATA_context = _window__SSR_DATA.context) === null || _window__SSR_DATA_context === void 0 ? void 0 : _window__SSR_DATA_context.request;
291
291
  var initialData = context.initialData;
292
292
  if (!request) {
293
293
  return next({
@@ -220,7 +220,7 @@ var ssr = function() {
220
220
  },
221
221
  pickContext: function(param, next) {
222
222
  var context = param.context, pickedContext = param.pickedContext;
223
- var ref = context === null || context === void 0 ? void 0 : context.ssrContext, request = ref.request, response = ref.response;
223
+ var _ref = context === null || context === void 0 ? void 0 : context.ssrContext, request = _ref.request, response = _ref.response;
224
224
  var initialData = context.initialData;
225
225
  return next({
226
226
  context: context,
@@ -132,7 +132,7 @@ var prefetch = function() {
132
132
  return [
133
133
  2,
134
134
  run(context.ssrContext.request.headers, /*#__PURE__*/ _asyncToGenerator(function() {
135
- var ref, ssrContext, loadableStats, extractor, loadersData;
135
+ var _context_store, ssrContext, loadableStats, extractor, loadersData;
136
136
  return __generator(this, function(_state) {
137
137
  switch(_state.label){
138
138
  case 0:
@@ -182,7 +182,7 @@ var prefetch = function() {
182
182
  loadersData: loadersData,
183
183
  initialData: context.initialData,
184
184
  i18nData: context.__i18nData__,
185
- storeState: context === null || context === void 0 ? void 0 : (ref = context.store) === null || ref === void 0 ? void 0 : ref.getState()
185
+ storeState: context === null || context === void 0 ? void 0 : (_context_store = context.store) === null || _context_store === void 0 ? void 0 : _context_store.getState()
186
186
  }
187
187
  ];
188
188
  }
@@ -0,0 +1,191 @@
1
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
2
+ try {
3
+ var info = gen[key](arg);
4
+ var value = info.value;
5
+ } catch (error) {
6
+ reject(error);
7
+ return;
8
+ }
9
+ if (info.done) {
10
+ resolve(value);
11
+ } else {
12
+ Promise.resolve(value).then(_next, _throw);
13
+ }
14
+ }
15
+ function _asyncToGenerator(fn) {
16
+ return function() {
17
+ var self = this, args = arguments;
18
+ return new Promise(function(resolve, reject) {
19
+ var gen = fn.apply(self, args);
20
+ function _next(value) {
21
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
22
+ }
23
+ function _throw(err) {
24
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
25
+ }
26
+ _next(undefined);
27
+ });
28
+ };
29
+ }
30
+ var __generator = this && this.__generator || function(thisArg, body) {
31
+ var f, y, t, g, _ = {
32
+ label: 0,
33
+ sent: function() {
34
+ if (t[0] & 1) throw t[1];
35
+ return t[1];
36
+ },
37
+ trys: [],
38
+ ops: []
39
+ };
40
+ return(g = {
41
+ next: verb(0),
42
+ "throw": verb(1),
43
+ "return": verb(2)
44
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
45
+ return this;
46
+ }), g);
47
+ function verb(n) {
48
+ return function(v) {
49
+ return step([
50
+ n,
51
+ v
52
+ ]);
53
+ };
54
+ }
55
+ function step(op) {
56
+ if (f) throw new TypeError("Generator is already executing.");
57
+ while(_)try {
58
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
59
+ if (y = 0, t) op = [
60
+ op[0] & 2,
61
+ t.value
62
+ ];
63
+ switch(op[0]){
64
+ case 0:
65
+ case 1:
66
+ t = op;
67
+ break;
68
+ case 4:
69
+ _.label++;
70
+ return {
71
+ value: op[1],
72
+ done: false
73
+ };
74
+ case 5:
75
+ _.label++;
76
+ y = op[1];
77
+ op = [
78
+ 0
79
+ ];
80
+ continue;
81
+ case 7:
82
+ op = _.ops.pop();
83
+ _.trys.pop();
84
+ continue;
85
+ default:
86
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
87
+ _ = 0;
88
+ continue;
89
+ }
90
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
91
+ _.label = op[1];
92
+ break;
93
+ }
94
+ if (op[0] === 6 && _.label < t[1]) {
95
+ _.label = t[1];
96
+ t = op;
97
+ break;
98
+ }
99
+ if (t && _.label < t[2]) {
100
+ _.label = t[2];
101
+ _.ops.push(op);
102
+ break;
103
+ }
104
+ if (t[2]) _.ops.pop();
105
+ _.trys.pop();
106
+ continue;
107
+ }
108
+ op = body.call(thisArg, _);
109
+ } catch (e) {
110
+ op = [
111
+ 6,
112
+ e
113
+ ];
114
+ y = 0;
115
+ } finally{
116
+ f = t = 0;
117
+ }
118
+ if (op[0] & 5) throw op[1];
119
+ return {
120
+ value: op[0] ? op[1] : void 0,
121
+ done: true
122
+ };
123
+ }
124
+ };
125
+ import { jsx } from "react/jsx-runtime";
126
+ import { renderToStaticMarkup } from "react-dom/server";
127
+ import { ChunkExtractor } from "@loadable/server";
128
+ var prefetch = function() {
129
+ var _ref = _asyncToGenerator(function(App, context) {
130
+ var _context_store, ssrContext, loadableStats, extractor, loadersData;
131
+ return __generator(this, function(_state) {
132
+ switch(_state.label){
133
+ case 0:
134
+ ssrContext = context.ssrContext;
135
+ loadableStats = ssrContext.loadableStats;
136
+ if (loadableStats) {
137
+ extractor = new ChunkExtractor({
138
+ stats: loadableStats,
139
+ entrypoints: [
140
+ ssrContext.entryName
141
+ ].filter(Boolean)
142
+ });
143
+ renderToStaticMarkup(extractor.collectChunks(/* @__PURE__ */ jsx(App, {
144
+ context: context
145
+ })));
146
+ } else {
147
+ renderToStaticMarkup(/* @__PURE__ */ jsx(App, {
148
+ context: context
149
+ }));
150
+ }
151
+ if (!context.loaderManager.hasPendingLoaders()) {
152
+ return [
153
+ 2,
154
+ {
155
+ initialData: context.initialData,
156
+ i18nData: context.__i18nData__
157
+ }
158
+ ];
159
+ }
160
+ return [
161
+ 4,
162
+ context.loaderManager.awaitPendingLoaders()
163
+ ];
164
+ case 1:
165
+ loadersData = _state.sent();
166
+ Object.keys(loadersData).forEach(function(id) {
167
+ var data = loadersData[id];
168
+ if (data._error) {
169
+ ssrContext.logger.error("App Prefetch Loader", data._error);
170
+ ssrContext.metrics.emitCounter("app.prefetch.loader.error", 1);
171
+ delete data._error;
172
+ }
173
+ });
174
+ return [
175
+ 2,
176
+ {
177
+ loadersData: loadersData,
178
+ initialData: context.initialData,
179
+ i18nData: context.__i18nData__,
180
+ storeState: context === null || context === void 0 ? void 0 : (_context_store = context.store) === null || _context_store === void 0 ? void 0 : _context_store.getState()
181
+ }
182
+ ];
183
+ }
184
+ });
185
+ });
186
+ return function prefetch(App, context) {
187
+ return _ref.apply(this, arguments);
188
+ };
189
+ }();
190
+ var prefetch_worker_default = prefetch;
191
+ export { prefetch_worker_default as default };
@@ -47,12 +47,12 @@ function _unsupportedIterableToArray(o, minLen) {
47
47
  import React, { useEffect, useState } from "react";
48
48
  var csr = false;
49
49
  var NoSSR = function(props) {
50
- var ref = _slicedToArray(useState(csr), 2), isMounted = ref[0], setMounted = ref[1];
50
+ var _useState = _slicedToArray(useState(csr), 2), isMounted = _useState[0], setMounted = _useState[1];
51
51
  useEffect(function() {
52
52
  csr = true;
53
53
  setMounted(true);
54
54
  });
55
- var children = props.children;
56
- return React.createElement(React.Fragment, null, isMounted ? children : null);
55
+ var children = props.children, _props_fallback = props.fallback, fallback = _props_fallback === void 0 ? null : _props_fallback;
56
+ return React.createElement(React.Fragment, null, isMounted ? children : fallback);
57
57
  };
58
58
  export { NoSSR };
@@ -181,7 +181,7 @@ var reducePropsToState = function(propsList) {
181
181
  return reduceProps;
182
182
  };
183
183
  function factory(Component) {
184
- var _Component;
184
+ var _React_Component;
185
185
  var Spr = /*#__PURE__*/ function(_superClass) {
186
186
  "use strict";
187
187
  _inherits(Spr, _superClass);
@@ -220,7 +220,7 @@ function factory(Component) {
220
220
  }
221
221
  ]);
222
222
  return Spr;
223
- }(_Component = React.Component);
223
+ }(_React_Component = React.Component);
224
224
  _defineProperty(Spr, "peek", Component.peek);
225
225
  _defineProperty(Spr, "rewind", Component.rewind);
226
226
  _defineProperty(Spr, "config", function() {
@@ -54,9 +54,9 @@ var aggKeysFromPropsList = function aggKeysFromPropsList2(propsList, propName) {
54
54
  return result;
55
55
  }, initResult);
56
56
  return REQUEST_META.reduce(function(result, next) {
57
- var ref;
57
+ var _result_key;
58
58
  var key = next;
59
- if (result[key] && ((ref = result[key]) === null || ref === void 0 ? void 0 : ref.length) === 0) {
59
+ if (result[key] && ((_result_key = result[key]) === null || _result_key === void 0 ? void 0 : _result_key.length) === 0) {
60
60
  delete result[key];
61
61
  }
62
62
  return result;
@@ -81,7 +81,7 @@ function getHeadTemplate(beforeEntryTemplate, context) {
81
81
  var routeManifest2 = routeAssets[routeId];
82
82
  if (routeManifest2) {
83
83
  var _cssChunks;
84
- var _assets = routeManifest2.assets, assets = _assets === void 0 ? [] : _assets;
84
+ var _routeManifest2_assets = routeManifest2.assets, assets = _routeManifest2_assets === void 0 ? [] : _routeManifest2_assets;
85
85
  var _cssChunks1 = assets.filter(function(asset) {
86
86
  return asset === null || asset === void 0 ? void 0 : asset.endsWith(".css");
87
87
  });
@@ -102,7 +102,7 @@ function getHeadTemplate(beforeEntryTemplate, context) {
102
102
  },
103
103
  injectCss
104
104
  ];
105
- var ref = _slicedToArray(beforeEntryTemplate.match(HEAD_REG_EXP) || [], 1), tmp = ref[0], headTemplate = tmp === void 0 ? "" : tmp;
105
+ var _ref = _slicedToArray(beforeEntryTemplate.match(HEAD_REG_EXP) || [], 1), tmp = _ref[0], headTemplate = tmp === void 0 ? "" : tmp;
106
106
  if (!headTemplate.length) {
107
107
  return "";
108
108
  }
@@ -125,7 +125,7 @@ var __generator = this && this.__generator || function(thisArg, body) {
125
125
  import { createElement } from "react";
126
126
  import { run } from "@modern-js/utils/ssr";
127
127
  import { PreRender } from "../../react/prerender";
128
- import { time } from "../utils";
128
+ import { time } from "../time";
129
129
  import renderToPipe from "./renderToPipe";
130
130
  var render = function(param) {
131
131
  var App = param.App, context = param.context;
@@ -0,0 +1,32 @@
1
+ import { createElement } from "react";
2
+ import { PreRender } from "../../react/prerender";
3
+ import { time } from "../time";
4
+ import renderToPipe from "./renderToPipe";
5
+ var render = function(param) {
6
+ var App = param.App, context = param.context;
7
+ var ssrContext = context.ssrContext;
8
+ if (!ssrContext) {
9
+ throw new Error('The "ssrContext" must not be undefined, but received undefined');
10
+ }
11
+ var end = time();
12
+ var rootElement = createElement(App, {
13
+ context: Object.assign(context || {}, {
14
+ ssr: true
15
+ })
16
+ });
17
+ var pipe = renderToPipe(rootElement, context, {
18
+ onShellReady: function onShellReady() {
19
+ var cacheConfig = PreRender.config();
20
+ if (cacheConfig) {
21
+ ssrContext.cacheConfig = cacheConfig;
22
+ }
23
+ },
24
+ onAllReady: function onAllReady() {
25
+ var cost = end();
26
+ ssrContext.logger.debug("App Render To HTML cost = %d ms", cost);
27
+ ssrContext.metrics.emitTimer("app.render.html.cost", cost);
28
+ }
29
+ });
30
+ return pipe;
31
+ };
32
+ export { render };