@modern-js/runtime 2.3.1-alpha.0 → 2.4.1-beta.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 +29 -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 +2 -14
  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 +3 -15
  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 +5 -14
  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 +13 -12
@@ -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 };
@@ -1,7 +1,7 @@
1
1
  import { ChunkExtractor } from "@loadable/server";
2
2
  function getLoadableChunks(param) {
3
3
  var context = param.context, jsx = param.jsx;
4
- var _ssrContext = context.ssrContext, loadableStats = _ssrContext.loadableStats, entryName = _ssrContext.entryName;
4
+ var _context_ssrContext = context.ssrContext, loadableStats = _context_ssrContext.loadableStats, entryName = _context_ssrContext.entryName;
5
5
  if (!loadableStats) {
6
6
  return {
7
7
  jsx: jsx
@@ -58,7 +58,6 @@ function _objectSpreadProps(target, source) {
58
58
  return target;
59
59
  }
60
60
  import { Transform } from "stream";
61
- import { renderToPipeableStream } from "react-dom/server";
62
61
  import { RenderLevel } from "../types";
63
62
  import { getTemplates } from "./template";
64
63
  function renderToPipe(rootElement, context, options) {
@@ -70,11 +69,15 @@ function renderToPipe(rootElement, context, options) {
70
69
  var ssrContext = context.ssrContext;
71
70
  var forUserPipe = function(stream) {
72
71
  return new Promise(function(resolve) {
72
+ var renderToPipeableStream;
73
+ try {
74
+ renderToPipeableStream = require("react-dom/server").renderToPipeableStream;
75
+ } catch (e) {}
73
76
  var pipe = renderToPipeableStream(rootElement, _objectSpreadProps(_objectSpread({}, options), {
74
77
  onShellReady: function onShellReady() {
75
- var ref;
76
- var ref1 = getTemplates(context, RenderLevel.SERVER_RENDER), shellAfter = ref1.shellAfter, shellBefore = ref1.shellBefore;
77
- options === null || options === void 0 ? void 0 : (ref = options.onShellReady) === null || ref === void 0 ? void 0 : ref.call(options);
78
+ var _options_onShellReady;
79
+ var _getTemplates = getTemplates(context, RenderLevel.SERVER_RENDER), shellAfter = _getTemplates.shellAfter, shellBefore = _getTemplates.shellBefore;
80
+ options === null || options === void 0 ? void 0 : (_options_onShellReady = options.onShellReady) === null || _options_onShellReady === void 0 ? void 0 : _options_onShellReady.call(options);
78
81
  var injectableTransform = new Transform({
79
82
  transform: function transform(chunk, _encoding, callback) {
80
83
  try {
@@ -97,18 +100,18 @@ function renderToPipe(rootElement, context, options) {
97
100
  resolve(pipe(injectableTransform).pipe(stream));
98
101
  },
99
102
  onShellError: function onShellError(error) {
100
- var ref;
103
+ var _options_onShellError;
101
104
  ssrContext.metrics.emitCounter("app.render.streaming.shell.error", 1);
102
- var ref1 = getTemplates(context, RenderLevel.CLIENT_RENDER), shellAfter = ref1.shellAfter, shellBefore = ref1.shellBefore;
105
+ var _getTemplates = getTemplates(context, RenderLevel.CLIENT_RENDER), shellAfter = _getTemplates.shellAfter, shellBefore = _getTemplates.shellBefore;
103
106
  var fallbackHtml = "".concat(shellBefore).concat(shellAfter);
104
107
  resolve(fallbackHtml);
105
- options === null || options === void 0 ? void 0 : (ref = options.onShellError) === null || ref === void 0 ? void 0 : ref.call(options, error);
108
+ options === null || options === void 0 ? void 0 : (_options_onShellError = options.onShellError) === null || _options_onShellError === void 0 ? void 0 : _options_onShellError.call(options, error);
106
109
  },
107
110
  onError: function onError(error) {
108
- var ref;
111
+ var _options_onError;
109
112
  ssrContext.logger.error("An error occurs during streaming SSR", error);
110
113
  ssrContext.metrics.emitCounter("app.render.streaming.error", 1);
111
- options === null || options === void 0 ? void 0 : (ref = options.onError) === null || ref === void 0 ? void 0 : ref.call(options, error);
114
+ options === null || options === void 0 ? void 0 : (_options_onError = options.onError) === null || _options_onError === void 0 ? void 0 : _options_onError.call(options, error);
112
115
  }
113
116
  })).pipe;
114
117
  });