@modern-js/runtime 2.27.1-alpha.0 → 2.29.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 (95) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/cjs/core/compatible.js +16 -17
  3. package/dist/cjs/core/loader/useLoader.js +10 -12
  4. package/dist/cjs/core/plugin.js +3 -2
  5. package/dist/cjs/document/Html.js +4 -3
  6. package/dist/cjs/document/cli/index.js +139 -138
  7. package/dist/cjs/router/cli/index.js +91 -92
  8. package/dist/cjs/router/runtime/DeferredDataScripts.node.js +4 -2
  9. package/dist/cjs/router/runtime/PrefetchLink.js +8 -4
  10. package/dist/cjs/router/runtime/plugin.js +10 -3
  11. package/dist/cjs/router/runtime/plugin.node.js +2 -1
  12. package/dist/cjs/router/runtime/utils.js +3 -3
  13. package/dist/cjs/ssr/cli/index.js +122 -123
  14. package/dist/cjs/ssr/index.js +105 -107
  15. package/dist/cjs/ssr/index.node.js +37 -38
  16. package/dist/cjs/ssr/prefetch.js +37 -39
  17. package/dist/cjs/ssr/react/prerender/util.js +4 -2
  18. package/dist/cjs/ssr/serverRender/constants.js +16 -0
  19. package/dist/cjs/ssr/serverRender/renderToStream/bulidTemplate.before.js +4 -2
  20. package/dist/cjs/ssr/serverRender/renderToStream/index.js +1 -1
  21. package/dist/cjs/ssr/serverRender/renderToStream/renderToPipe.js +8 -7
  22. package/dist/cjs/ssr/serverRender/renderToStream/renderToPipe.worker.js +8 -6
  23. package/dist/cjs/ssr/serverRender/renderToString/entry.js +18 -3
  24. package/dist/cjs/ssr/serverRender/renderToString/index.js +4 -1
  25. package/dist/cjs/ssr/serverRender/renderToString/loadable.js +2 -1
  26. package/dist/cjs/ssr/serverRender/reporter.js +27 -0
  27. package/dist/cjs/state/cli/index.js +70 -72
  28. package/dist/cjs/state/runtime/plugin.js +40 -42
  29. package/dist/esm/core/compatible.js +10 -9
  30. package/dist/esm/core/loader/useLoader.js +9 -9
  31. package/dist/esm/core/plugin.js +3 -2
  32. package/dist/esm/document/Html.js +4 -3
  33. package/dist/esm/document/cli/index.js +5 -3
  34. package/dist/esm/router/cli/index.js +2 -1
  35. package/dist/esm/router/runtime/DeferredDataScripts.node.js +4 -2
  36. package/dist/esm/router/runtime/PrefetchLink.js +8 -4
  37. package/dist/esm/router/runtime/plugin.js +10 -3
  38. package/dist/esm/router/runtime/plugin.node.js +2 -1
  39. package/dist/esm/router/runtime/utils.js +3 -3
  40. package/dist/esm/ssr/cli/index.js +7 -6
  41. package/dist/esm/ssr/index.js +6 -6
  42. package/dist/esm/ssr/index.node.js +2 -1
  43. package/dist/esm/ssr/prefetch.js +2 -2
  44. package/dist/esm/ssr/react/prerender/util.js +4 -2
  45. package/dist/esm/ssr/serverRender/constants.js +6 -0
  46. package/dist/esm/ssr/serverRender/renderToStream/bulidTemplate.before.js +4 -2
  47. package/dist/esm/ssr/serverRender/renderToStream/index.js +1 -1
  48. package/dist/esm/ssr/serverRender/renderToStream/renderToPipe.js +8 -7
  49. package/dist/esm/ssr/serverRender/renderToStream/renderToPipe.worker.js +7 -7
  50. package/dist/esm/ssr/serverRender/renderToString/entry.js +19 -4
  51. package/dist/esm/ssr/serverRender/renderToString/index.js +4 -1
  52. package/dist/esm/ssr/serverRender/renderToString/loadable.js +2 -1
  53. package/dist/esm/ssr/serverRender/reporter.js +17 -0
  54. package/dist/esm/state/runtime/plugin.js +2 -2
  55. package/dist/esm-node/core/compatible.js +16 -17
  56. package/dist/esm-node/core/loader/useLoader.js +10 -12
  57. package/dist/esm-node/core/plugin.js +3 -2
  58. package/dist/esm-node/document/Html.js +4 -3
  59. package/dist/esm-node/document/cli/index.js +139 -138
  60. package/dist/esm-node/router/cli/index.js +91 -92
  61. package/dist/esm-node/router/runtime/DeferredDataScripts.node.js +4 -2
  62. package/dist/esm-node/router/runtime/PrefetchLink.js +8 -4
  63. package/dist/esm-node/router/runtime/plugin.js +10 -3
  64. package/dist/esm-node/router/runtime/plugin.node.js +2 -1
  65. package/dist/esm-node/router/runtime/utils.js +3 -3
  66. package/dist/esm-node/ssr/cli/index.js +122 -123
  67. package/dist/esm-node/ssr/cli/loadable-bundler-plugin.js +2 -2
  68. package/dist/esm-node/ssr/index.js +105 -107
  69. package/dist/esm-node/ssr/index.node.js +37 -38
  70. package/dist/esm-node/ssr/prefetch.js +37 -39
  71. package/dist/esm-node/ssr/react/prerender/util.js +4 -2
  72. package/dist/esm-node/ssr/serverRender/constants.js +6 -0
  73. package/dist/esm-node/ssr/serverRender/renderToStream/bulidTemplate.before.js +4 -2
  74. package/dist/esm-node/ssr/serverRender/renderToStream/index.js +1 -1
  75. package/dist/esm-node/ssr/serverRender/renderToStream/renderToPipe.js +8 -7
  76. package/dist/esm-node/ssr/serverRender/renderToStream/renderToPipe.worker.js +8 -6
  77. package/dist/esm-node/ssr/serverRender/renderToString/entry.js +18 -3
  78. package/dist/esm-node/ssr/serverRender/renderToString/index.js +4 -1
  79. package/dist/esm-node/ssr/serverRender/renderToString/loadable.js +2 -1
  80. package/dist/esm-node/ssr/serverRender/reporter.js +17 -0
  81. package/dist/esm-node/state/cli/index.js +70 -72
  82. package/dist/esm-node/state/runtime/plugin.js +40 -42
  83. package/dist/types/router/runtime/types.d.ts +3 -0
  84. package/dist/types/ssr/serverRender/constants.d.ts +5 -0
  85. package/dist/types/ssr/serverRender/renderToString/entry.d.ts +3 -0
  86. package/dist/types/ssr/serverRender/reporter.d.ts +8 -0
  87. package/package.json +9 -9
  88. package/dist/cjs/ssr/serverRender/time.js +0 -20
  89. package/dist/cjs/ssr/serverRender/time.worker.js +0 -38
  90. package/dist/esm/ssr/serverRender/time.js +0 -11
  91. package/dist/esm/ssr/serverRender/time.worker.js +0 -29
  92. package/dist/esm-node/ssr/serverRender/time.js +0 -10
  93. package/dist/esm-node/ssr/serverRender/time.worker.js +0 -28
  94. package/dist/types/ssr/serverRender/time.d.ts +0 -1
  95. package/dist/types/ssr/serverRender/time.worker.d.ts +0 -1
@@ -81,9 +81,9 @@ export function renderRoutes(param) {
81
81
  return routeElements;
82
82
  }
83
83
  export function getLocation(serverContext) {
84
- var _url_replace;
85
- var _ref = (serverContext === null || serverContext === void 0 ? void 0 : serverContext.request) || {}, pathname = _ref.pathname, url = _ref.url;
86
- 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://", "");
84
+ var _serverContext, _url_replace, _url;
85
+ var _ref = ((_serverContext = serverContext) === null || _serverContext === void 0 ? void 0 : _serverContext.request) || {}, pathname = _ref.pathname, url = _ref.url;
86
+ var cleanUrl = (_url = url) === null || _url === void 0 ? void 0 : (_url_replace = _url.replace("http://", "")) === null || _url_replace === void 0 ? void 0 : _url_replace.replace("https://", "");
87
87
  var index = (cleanUrl || "").indexOf(pathname);
88
88
  if (index === -1) {
89
89
  return pathname;
@@ -4,14 +4,15 @@ import path from "path";
4
4
  import { getEntryOptions, SERVER_RENDER_FUNCTION_NAME, LOADABLE_STATS_FILE, isUseSSRBundle, createRuntimeExportsUtils, isSSGEntry } from "@modern-js/utils";
5
5
  var PLUGIN_IDENTIFIER = "ssr";
6
6
  var hasStringSSREntry = function(userConfig) {
7
+ var _server, _server1;
7
8
  var isStreaming = function(ssr) {
8
9
  return ssr && typeof ssr === "object" && ssr.mode === "stream";
9
10
  };
10
11
  var server = userConfig.server;
11
- if ((server === null || server === void 0 ? void 0 : server.ssr) && !isStreaming(server.ssr)) {
12
+ if (((_server = server) === null || _server === void 0 ? void 0 : _server.ssr) && !isStreaming(server.ssr)) {
12
13
  return true;
13
14
  }
14
- if ((server === null || server === void 0 ? void 0 : server.ssrByEntries) && typeof server.ssrByEntries === "object") {
15
+ if (((_server1 = server) === null || _server1 === void 0 ? void 0 : _server1.ssrByEntries) && typeof server.ssrByEntries === "object") {
15
16
  var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
16
17
  try {
17
18
  for (var _iterator = Object.keys(server.ssrByEntries)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
@@ -112,9 +113,9 @@ export var ssrPlugin = function() {
112
113
  pluginsExportsUtils.addExport("export { default as ssr } from '@modern-js/runtime/ssr'");
113
114
  var ssrConfig = getEntryOptions(entryName, isMainEntry, userConfig.server.ssr, userConfig.server.ssrByEntries, packageName);
114
115
  if (typeof ssrConfig === "object" && ssrConfig.mode === "stream") {
115
- var _ref;
116
+ var _this, _runtimeConfig;
116
117
  var runtimeConfig = getEntryOptions(entryName, isMainEntry, userConfig.runtime, userConfig.runtimeByEntries, packageName);
117
- if (((_ref = runtimeConfig === null || runtimeConfig === void 0 ? void 0 : runtimeConfig.router) === null || _ref === void 0 ? void 0 : _ref.mode) === "react-router-5") {
118
+ if (((_this = (_runtimeConfig = runtimeConfig) === null || _runtimeConfig === void 0 ? void 0 : _runtimeConfig.router) === null || _this === void 0 ? void 0 : _this.mode) === "react-router-5") {
118
119
  throw new Error("router v5 plugin doesn't support streaming SSR, check your config 'runtime.router'");
119
120
  }
120
121
  if (fileSystemRoutes && !entrypoint.nestedRoutesEntry) {
@@ -141,8 +142,8 @@ export var ssrPlugin = function() {
141
142
  modifyEntryRuntimePlugins: function modifyEntryRuntimePlugins(param) {
142
143
  var entrypoint = param.entrypoint, plugins = param.plugins, bundlerConfigs = param.bundlerConfigs;
143
144
  if (ssrConfigMap.get(entrypoint.entryName)) {
144
- var _bundlerConfigs_find, _bundlerConfigs_find_output;
145
- var chunkLoadingGlobal = (_bundlerConfigs_find = bundlerConfigs === null || bundlerConfigs === void 0 ? void 0 : bundlerConfigs.find(function(config2) {
145
+ var _bundlerConfigs_find_output, _bundlerConfigs_find, _bundlerConfigs;
146
+ var chunkLoadingGlobal = (_bundlerConfigs = bundlerConfigs) === null || _bundlerConfigs === void 0 ? void 0 : (_bundlerConfigs_find = _bundlerConfigs.find(function(config2) {
146
147
  return config2.name === "client";
147
148
  })) === null || _bundlerConfigs_find === void 0 ? void 0 : (_bundlerConfigs_find_output = _bundlerConfigs_find.output) === null || _bundlerConfigs_find_output === void 0 ? void 0 : _bundlerConfigs_find_output.chunkLoadingGlobal;
148
149
  var config = api.useResolvedConfigContext();
@@ -22,7 +22,7 @@ export var ssr = function(config) {
22
22
  return {
23
23
  client: function() {
24
24
  var _ref = _async_to_generator(function(param) {
25
- var App, context, ModernRender, ModernHydrate, _window__SSR_DATA, hydrateContext, callback, renderLevel;
25
+ var App, context, ModernRender, ModernHydrate, _window__SSR_DATA, _window, hydrateContext, callback, renderLevel;
26
26
  function stringSSRHydrate() {
27
27
  if (renderLevel === RenderLevel.CLIENT_RENDER || renderLevel === RenderLevel.SERVER_PREFETCH) {
28
28
  ModernRender(/* @__PURE__ */ _jsx(App, {
@@ -88,7 +88,7 @@ export var ssr = function(config) {
88
88
  callback = function() {
89
89
  delete hydrateContext._hydration;
90
90
  };
91
- 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;
91
+ renderLevel = ((_window = window) === null || _window === void 0 ? void 0 : (_window__SSR_DATA = _window._SSR_DATA) === null || _window__SSR_DATA === void 0 ? void 0 : _window__SSR_DATA.renderLevel) || RenderLevel.CLIENT_RENDER;
92
92
  if (isReact18() && config.mode === "stream") {
93
93
  return [
94
94
  2,
@@ -107,8 +107,8 @@ export var ssr = function(config) {
107
107
  }(),
108
108
  init: function init(param, next) {
109
109
  var context = param.context;
110
- var _window__SSR_DATA, _window__SSR_DATA_context;
111
- 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;
110
+ var _window__SSR_DATA_context, _window__SSR_DATA, _window;
111
+ var request = (_window = window) === null || _window === void 0 ? void 0 : (_window__SSR_DATA = _window._SSR_DATA) === null || _window__SSR_DATA === void 0 ? void 0 : (_window__SSR_DATA_context = _window__SSR_DATA.context) === null || _window__SSR_DATA_context === void 0 ? void 0 : _window__SSR_DATA_context.request;
112
112
  if (!request) {
113
113
  context.ssrContext = _object_spread_props(_object_spread({}, context.ssrContext), {
114
114
  response: mockResp,
@@ -126,8 +126,8 @@ export var ssr = function(config) {
126
126
  },
127
127
  pickContext: function(param, next) {
128
128
  var context = param.context, pickedContext = param.pickedContext;
129
- var _window__SSR_DATA, _window__SSR_DATA_context;
130
- 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;
129
+ var _window__SSR_DATA_context, _window__SSR_DATA, _window;
130
+ var request = (_window = window) === null || _window === void 0 ? void 0 : (_window__SSR_DATA = _window._SSR_DATA) === null || _window__SSR_DATA === void 0 ? void 0 : (_window__SSR_DATA_context = _window__SSR_DATA.context) === null || _window__SSR_DATA_context === void 0 ? void 0 : _window__SSR_DATA_context.request;
131
131
  var initialData = context.initialData;
132
132
  if (!request) {
133
133
  return next({
@@ -49,7 +49,8 @@ export var ssr = function() {
49
49
  },
50
50
  pickContext: function(param, next) {
51
51
  var context = param.context, pickedContext = param.pickedContext;
52
- var _ref = context === null || context === void 0 ? void 0 : context.ssrContext, request = _ref.request, response = _ref.response;
52
+ var _context;
53
+ var _ref = (_context = context) === null || _context === void 0 ? void 0 : _context.ssrContext, request = _ref.request, response = _ref.response;
53
54
  var initialData = context.initialData;
54
55
  return next({
55
56
  context: context,
@@ -10,7 +10,7 @@ var prefetch = function() {
10
10
  return [
11
11
  2,
12
12
  run(context.ssrContext.request.headers, /* @__PURE__ */ _async_to_generator(function() {
13
- var _context_store, ssrContext, loadableStats, extractor, loadersData;
13
+ var _context_store, _context, ssrContext, loadableStats, extractor, loadersData;
14
14
  return _ts_generator(this, function(_state2) {
15
15
  switch (_state2.label) {
16
16
  case 0:
@@ -61,7 +61,7 @@ var prefetch = function() {
61
61
  initialData: context.initialData,
62
62
  i18nData: context.__i18nData__,
63
63
  // todo: move to plugin state
64
- storeState: context === null || context === void 0 ? void 0 : (_context_store = context.store) === null || _context_store === void 0 ? void 0 : _context_store.getState()
64
+ storeState: (_context = context) === null || _context === void 0 ? void 0 : (_context_store = _context.store) === null || _context_store === void 0 ? void 0 : _context_store.getState()
65
65
  }
66
66
  ];
67
67
  }
@@ -46,8 +46,9 @@ export var aggKeysFromPropsList = function aggKeysFromPropsList2(propsList, prop
46
46
  return usefulObject(props[propName]);
47
47
  }).reduce(function(result, next) {
48
48
  REQUEST_META.forEach(function(key) {
49
+ var _prop;
49
50
  var prop = next[propName];
50
- if ((prop === null || prop === void 0 ? void 0 : prop.hasOwnProperty(key)) && usefulArray(prop[key])) {
51
+ if (((_prop = prop) === null || _prop === void 0 ? void 0 : _prop.hasOwnProperty(key)) && usefulArray(prop[key])) {
51
52
  result[key] = unique(result[key].concat(prop[key]));
52
53
  }
53
54
  });
@@ -72,8 +73,9 @@ export var aggMatchesFromPropsList = function aggMatchesFromPropsList2(propsList
72
73
  return usefulObject(props[propName]);
73
74
  }).reduce(function(result, next) {
74
75
  REQUEST_META.forEach(function(key) {
76
+ var _prop;
75
77
  var prop = next[propName];
76
- if ((prop === null || prop === void 0 ? void 0 : prop.hasOwnProperty(key)) && usefulObject(prop[key])) {
78
+ if (((_prop = prop) === null || _prop === void 0 ? void 0 : _prop.hasOwnProperty(key)) && usefulObject(prop[key])) {
77
79
  result[key] = Object.assign(result[key], prop[key]);
78
80
  }
79
81
  });
@@ -0,0 +1,6 @@
1
+ export var ServerTimingNames;
2
+ (function(ServerTimingNames2) {
3
+ ServerTimingNames2["SSR_RENDER_TOTAL"] = "ssr-render-total";
4
+ ServerTimingNames2["SSR_PREFETCH"] = "ssr-prefetch";
5
+ ServerTimingNames2["SSR_RENDER_HTML"] = "ssr-render-html";
6
+ })(ServerTimingNames || (ServerTimingNames = {}));
@@ -9,6 +9,7 @@ function getHeadTemplate(beforeEntryTemplate, context) {
9
9
  var injectCss = function injectCss2(headTemplate2) {
10
10
  return headTemplate2.replace(CSS_CHUNKS_PLACEHOLDER, getCssChunks());
11
11
  function getCssChunks() {
12
+ var _matches;
12
13
  var routeManifest = context.routeManifest, routerContext = context.routerContext, routes = context.routes;
13
14
  if (!routeManifest || !routerContext || !routes) {
14
15
  return "";
@@ -16,7 +17,7 @@ function getHeadTemplate(beforeEntryTemplate, context) {
16
17
  var routeAssets = routeManifest.routeAssets;
17
18
  var cssChunks = [];
18
19
  var matches = matchRoutes(routes, routerContext.location, routerContext.basename);
19
- matches === null || matches === void 0 ? void 0 : matches.forEach(function(match, index) {
20
+ (_matches = matches) === null || _matches === void 0 ? void 0 : _matches.forEach(function(match, index) {
20
21
  if (!index) {
21
22
  return;
22
23
  }
@@ -27,7 +28,8 @@ function getHeadTemplate(beforeEntryTemplate, context) {
27
28
  var _cssChunks;
28
29
  var _routeManifest_referenceCssAssets = routeManifest2.referenceCssAssets, referenceCssAssets = _routeManifest_referenceCssAssets === void 0 ? [] : _routeManifest_referenceCssAssets;
29
30
  var _cssChunks1 = referenceCssAssets.filter(function(asset) {
30
- return (asset === null || asset === void 0 ? void 0 : asset.endsWith(".css")) && !headTemplate2.includes(asset);
31
+ var _asset;
32
+ return ((_asset = asset) === null || _asset === void 0 ? void 0 : _asset.endsWith(".css")) && !headTemplate2.includes(asset);
31
33
  });
32
34
  (_cssChunks = cssChunks).push.apply(_cssChunks, _to_consumable_array(_cssChunks1));
33
35
  }
@@ -2,8 +2,8 @@ import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2
2
  import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
3
3
  import { createElement } from "react";
4
4
  import { run } from "@modern-js/utils/runtime-node";
5
+ import { time } from "@modern-js/utils/universal/time";
5
6
  import { PreRender } from "../../react/prerender";
6
- import { time } from "../time";
7
7
  import renderToPipe from "./renderToPipe";
8
8
  export var render = function(param) {
9
9
  var App = param.App, context = param.context;
@@ -16,17 +16,18 @@ function renderToPipe(rootElement, context, options) {
16
16
  var chunkVec = [];
17
17
  var forUserPipe = function(stream) {
18
18
  return new Promise(function(resolve) {
19
+ var _ssrContext;
19
20
  var renderToPipeableStream;
20
21
  try {
21
22
  renderToPipeableStream = require("react-dom/server").renderToPipeableStream;
22
23
  } catch (e) {
23
24
  }
24
25
  var pipe = renderToPipeableStream(rootElement, _object_spread_props(_object_spread({}, options), {
25
- nonce: ssrContext === null || ssrContext === void 0 ? void 0 : ssrContext.nonce,
26
+ nonce: (_ssrContext = ssrContext) === null || _ssrContext === void 0 ? void 0 : _ssrContext.nonce,
26
27
  onShellReady: function onShellReady() {
27
- var _options_onShellReady;
28
+ var _options_onShellReady, _options;
28
29
  var _getTemplates = getTemplates(context, RenderLevel.SERVER_RENDER), shellAfter = _getTemplates.shellAfter, shellBefore = _getTemplates.shellBefore;
29
- options === null || options === void 0 ? void 0 : (_options_onShellReady = options.onShellReady) === null || _options_onShellReady === void 0 ? void 0 : _options_onShellReady.call(options);
30
+ (_options = options) === null || _options === void 0 ? void 0 : (_options_onShellReady = _options.onShellReady) === null || _options_onShellReady === void 0 ? void 0 : _options_onShellReady.call(_options);
30
31
  var injectableTransform = new Transform({
31
32
  transform: function transform(chunk, _encoding, callback) {
32
33
  try {
@@ -54,18 +55,18 @@ function renderToPipe(rootElement, context, options) {
54
55
  resolve(pipe(injectableTransform).pipe(stream));
55
56
  },
56
57
  onShellError: function onShellError(error) {
57
- var _options_onShellError;
58
+ var _options_onShellError, _options;
58
59
  ssrContext.metrics.emitCounter("app.render.streaming.shell.error", 1);
59
60
  var _getTemplates = getTemplates(context, RenderLevel.CLIENT_RENDER), shellAfter = _getTemplates.shellAfter, shellBefore = _getTemplates.shellBefore;
60
61
  var fallbackHtml = "".concat(shellBefore).concat(shellAfter);
61
62
  resolve(fallbackHtml);
62
- options === null || options === void 0 ? void 0 : (_options_onShellError = options.onShellError) === null || _options_onShellError === void 0 ? void 0 : _options_onShellError.call(options, error);
63
+ (_options = options) === null || _options === void 0 ? void 0 : (_options_onShellError = _options.onShellError) === null || _options_onShellError === void 0 ? void 0 : _options_onShellError.call(_options, error);
63
64
  },
64
65
  onError: function onError(error) {
65
- var _options_onError;
66
+ var _options_onError, _options;
66
67
  ssrContext.logger.error("An error occurs during streaming SSR", error);
67
68
  ssrContext.metrics.emitCounter("app.render.streaming.error", 1);
68
- options === null || options === void 0 ? void 0 : (_options_onError = options.onError) === null || _options_onError === void 0 ? void 0 : _options_onError.call(options, error);
69
+ (_options = options) === null || _options === void 0 ? void 0 : (_options_onError = _options.onError) === null || _options_onError === void 0 ? void 0 : _options_onError.call(_options, error);
69
70
  }
70
71
  })).pipe;
71
72
  });
@@ -16,7 +16,7 @@ function renderToPipe(rootElement, context, options) {
16
16
  var ssrContext = context.ssrContext;
17
17
  var forUserPipe = function() {
18
18
  var _ref = _async_to_generator(function() {
19
- var renderToReadableStream, _getTemplates, shellAfter, shellBefore, readableOriginal, reader, injectableStream, err, _getTemplates1, shellAfter1, shellBefore1, fallbackHtml;
19
+ var renderToReadableStream, _getTemplates, shellAfter, shellBefore, _ssrContext, readableOriginal, reader, injectableStream, err, _ssrContext1, _getTemplates1, shellAfter1, shellBefore1, fallbackHtml;
20
20
  return _ts_generator(this, function(_state) {
21
21
  switch (_state.label) {
22
22
  case 0:
@@ -36,12 +36,12 @@ function renderToPipe(rootElement, context, options) {
36
36
  return [
37
37
  4,
38
38
  renderToReadableStream(rootElement, _object_spread_props(_object_spread({}, options), {
39
- nonce: ssrContext === null || ssrContext === void 0 ? void 0 : ssrContext.nonce,
39
+ nonce: (_ssrContext = ssrContext) === null || _ssrContext === void 0 ? void 0 : _ssrContext.nonce,
40
40
  onError: function onError(error) {
41
- var _options_onError;
42
- ssrContext === null || ssrContext === void 0 ? void 0 : ssrContext.logger.error("An error occurs during streaming SSR", error);
43
- ssrContext === null || ssrContext === void 0 ? void 0 : ssrContext.metrics.emitCounter("app.render.streaming.error", 1);
44
- options === null || options === void 0 ? void 0 : (_options_onError = options.onError) === null || _options_onError === void 0 ? void 0 : _options_onError.call(options, error);
41
+ var _ssrContext2, _ssrContext12, _options_onError, _options;
42
+ (_ssrContext2 = ssrContext) === null || _ssrContext2 === void 0 ? void 0 : _ssrContext2.logger.error("An error occurs during streaming SSR", error);
43
+ (_ssrContext12 = ssrContext) === null || _ssrContext12 === void 0 ? void 0 : _ssrContext12.metrics.emitCounter("app.render.streaming.error", 1);
44
+ (_options = options) === null || _options === void 0 ? void 0 : (_options_onError = _options.onError) === null || _options_onError === void 0 ? void 0 : _options_onError.call(_options, error);
45
45
  }
46
46
  }))
47
47
  ];
@@ -101,7 +101,7 @@ function renderToPipe(rootElement, context, options) {
101
101
  ];
102
102
  case 3:
103
103
  err = _state.sent();
104
- ssrContext === null || ssrContext === void 0 ? void 0 : ssrContext.metrics.emitCounter("app.render.streaming.shell.error", 1);
104
+ (_ssrContext1 = ssrContext) === null || _ssrContext1 === void 0 ? void 0 : _ssrContext1.metrics.emitCounter("app.render.streaming.shell.error", 1);
105
105
  _getTemplates1 = getTemplates(context, RenderLevel.CLIENT_RENDER), shellAfter1 = _getTemplates1.shellAfter, shellBefore1 = _getTemplates1.shellBefore;
106
106
  fallbackHtml = "".concat(shellBefore1).concat(shellAfter1);
107
107
  return [
@@ -8,17 +8,19 @@ import React from "react";
8
8
  import ReactDomServer from "react-dom/server";
9
9
  import { serializeJson } from "@modern-js/utils/runtime-node";
10
10
  import ReactHelmet from "react-helmet";
11
+ import { time } from "@modern-js/utils/universal/time";
11
12
  import { serializeErrors } from "../../../router/runtime/utils";
12
13
  import helmetReplace from "../helmet";
13
14
  import { RenderLevel } from "../types";
14
- import { time } from "../time";
15
15
  import prefetch from "../../prefetch";
16
16
  import { ROUTER_DATA_JSON_ID, SSR_DATA_JSON_ID, attributesToString } from "../utils";
17
+ import { createSSRReporter } from "../reporter";
18
+ import { ServerTimingNames } from "../constants";
17
19
  import { toFragments } from "./template";
18
20
  import { reduce } from "./reduce";
19
21
  import * as loadableRenderer from "./loadable";
20
22
  import * as styledComponentRenderer from "./styledComponent";
21
- var buildTemplateData = function(context, data, renderLevel) {
23
+ var buildTemplateData = function(context, data, renderLevel, reporter) {
22
24
  var request = context.request, enableUnsafeCtx = context.enableUnsafeCtx;
23
25
  var unsafeContext = {
24
26
  headers: request.headers
@@ -32,7 +34,10 @@ var buildTemplateData = function(context, data, renderLevel) {
32
34
  pathname: request.pathname,
33
35
  host: request.host,
34
36
  url: request.url
35
- }, enableUnsafeCtx ? unsafeContext : {})
37
+ }, enableUnsafeCtx ? unsafeContext : {}),
38
+ reporter: {
39
+ sessionId: reporter.sessionId
40
+ }
36
41
  },
37
42
  renderLevel: renderLevel
38
43
  };
@@ -45,6 +50,8 @@ var Entry = /* @__PURE__ */ function() {
45
50
  _define_property(this, "result", void 0);
46
51
  _define_property(this, "metrics", void 0);
47
52
  _define_property(this, "logger", void 0);
53
+ _define_property(this, "severTiming", void 0);
54
+ _define_property(this, "reporter", void 0);
48
55
  _define_property(this, "template", void 0);
49
56
  _define_property(this, "App", void 0);
50
57
  _define_property(this, "fragments", void 0);
@@ -59,6 +66,8 @@ var Entry = /* @__PURE__ */ function() {
59
66
  this.host = host;
60
67
  this.App = options.App;
61
68
  this.pluginConfig = config;
69
+ this.reporter = createSSRReporter(ctx.reporter);
70
+ this.severTiming = ctx.serverTiming;
62
71
  this.metrics = ctx.metrics;
63
72
  this.logger = ctx.logger;
64
73
  this.nonce = nonce;
@@ -115,7 +124,7 @@ var Entry = /* @__PURE__ */ function() {
115
124
  errors: serializeErrors(routerContext.errors)
116
125
  } : void 0;
117
126
  html = "";
118
- templateData = buildTemplateData(ssrContext, prefetchData, _this.result.renderLevel);
127
+ templateData = buildTemplateData(ssrContext, prefetchData, _this.result.renderLevel, _this.reporter);
119
128
  SSRData = _this.getSSRDataScript(templateData, routerData);
120
129
  _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
121
130
  try {
@@ -179,6 +188,8 @@ var Entry = /* @__PURE__ */ function() {
179
188
  prefetchCost = end();
180
189
  _this.logger.debug("App Prefetch cost = %d ms", prefetchCost);
181
190
  _this.metrics.emitTimer("app.prefetch.cost", prefetchCost);
191
+ _this.reporter.reportTime("app_prefetch_cost", prefetchCost);
192
+ _this.severTiming.addServeTiming(ServerTimingNames.SSR_PREFETCH, prefetchCost);
182
193
  return [
183
194
  3,
184
195
  4
@@ -187,6 +198,7 @@ var Entry = /* @__PURE__ */ function() {
187
198
  e = _state.sent();
188
199
  _this.result.renderLevel = RenderLevel.CLIENT_RENDER;
189
200
  _this.logger.error("App Prefetch Render", e);
201
+ _this.reporter.reportError("App Prefetch Render", e);
190
202
  _this.metrics.emitCounter("app.prefetch.render.error", 1);
191
203
  return [
192
204
  3,
@@ -233,9 +245,12 @@ var Entry = /* @__PURE__ */ function() {
233
245
  var cost = end();
234
246
  this.logger.debug("App Render To HTML cost = %d ms", cost);
235
247
  this.metrics.emitTimer("app.render.html.cost", cost);
248
+ this.reporter.reportTime("app_render_html_cost", cost);
249
+ this.severTiming.addServeTiming(ServerTimingNames.SSR_RENDER_HTML, cost);
236
250
  this.result.renderLevel = RenderLevel.SERVER_RENDER;
237
251
  } catch (e) {
238
252
  this.logger.error("App Render To HTML", e);
253
+ this.reporter.reportError("App Render To HTML", e);
239
254
  this.metrics.emitCounter("app.render.html.error", 1);
240
255
  }
241
256
  return html;
@@ -1,8 +1,9 @@
1
1
  import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2
2
  import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
3
3
  import { run } from "@modern-js/utils/runtime-node";
4
+ import { time } from "@modern-js/utils/universal/time";
4
5
  import { PreRender } from "../../react/prerender";
5
- import { time } from "../time";
6
+ import { ServerTimingNames } from "../constants";
6
7
  import SSREntry from "./entry";
7
8
  export var render = function(param) {
8
9
  var App = param.App, context = param.context, config = param.config;
@@ -28,6 +29,8 @@ export var render = function(param) {
28
29
  cost = end();
29
30
  entry.logger.info("App Render Total cost = %d ms", cost);
30
31
  entry.metrics.emitTimer("app.render.cost", cost);
32
+ entry.reporter.reportTime("app_render_cost", cost);
33
+ entry.severTiming.addServeTiming(ServerTimingNames.SSR_RENDER_TOTAL, cost);
31
34
  cacheConfig = PreRender.config();
32
35
  if (cacheConfig) {
33
36
  context.ssrContext.cacheConfig = cacheConfig;
@@ -1,10 +1,11 @@
1
1
  import { ChunkExtractor } from "@loadable/server";
2
2
  import { attributesToString, getLoadableScripts } from "../utils";
3
3
  var extname = function(uri) {
4
+ var _uri;
4
5
  if (typeof uri !== "string" || !uri.includes(".")) {
5
6
  return "";
6
7
  }
7
- return ".".concat(uri === null || uri === void 0 ? void 0 : uri.split(".").pop()) || "";
8
+ return ".".concat((_uri = uri) === null || _uri === void 0 ? void 0 : _uri.split(".").pop()) || "";
8
9
  };
9
10
  export var toHtml = function(jsx, renderer, next) {
10
11
  var stats = renderer.stats, chunksMap = renderer.result.chunksMap, _renderer_config = renderer.config, config = _renderer_config === void 0 ? {} : _renderer_config, nonce = renderer.nonce;
@@ -0,0 +1,17 @@
1
+ export function createSSRReporter(reporter) {
2
+ var _reporter = {
3
+ get sessionId() {
4
+ return reporter.sessionId;
5
+ },
6
+ get userId() {
7
+ return reporter.userId;
8
+ },
9
+ reportError: function reportError(content, e) {
10
+ reporter.reportError("SSR Error - ".concat(content), e);
11
+ },
12
+ reportTime: function reportTime(name, cost) {
13
+ reporter.reportTiming("ssr_".concat(name), cost);
14
+ }
15
+ };
16
+ return _reporter;
17
+ }
@@ -77,8 +77,8 @@ var state = function(config) {
77
77
  init: function init(param, next) {
78
78
  var context = param.context;
79
79
  if (isBrowser()) {
80
- var _window__SSR_DATA, _window__SSR_DATA_data;
81
- storeConfig.initialState = storeConfig.initialState || (window === null || window === void 0 ? void 0 : (_window__SSR_DATA = window._SSR_DATA) === null || _window__SSR_DATA === void 0 ? void 0 : (_window__SSR_DATA_data = _window__SSR_DATA.data) === null || _window__SSR_DATA_data === void 0 ? void 0 : _window__SSR_DATA_data.storeState) || {};
80
+ var _window__SSR_DATA_data, _window__SSR_DATA, _window;
81
+ storeConfig.initialState = storeConfig.initialState || ((_window = window) === null || _window === void 0 ? void 0 : (_window__SSR_DATA = _window._SSR_DATA) === null || _window__SSR_DATA === void 0 ? void 0 : (_window__SSR_DATA_data = _window__SSR_DATA.data) === null || _window__SSR_DATA_data === void 0 ? void 0 : _window__SSR_DATA_data.storeState) || {};
82
82
  }
83
83
  context.store = createStore(storeConfig);
84
84
  return next({
@@ -48,15 +48,16 @@ export const createApp = ({ plugins, props: globalProps }) => {
48
48
  }, {
49
49
  onLast: ({ App: App2 }) => {
50
50
  const WrapComponent = ({ context, ...props }) => {
51
+ var _contextValue;
51
52
  let contextValue = context;
52
- if (!(contextValue === null || contextValue === void 0 ? void 0 : contextValue.runner)) {
53
+ if (!((_contextValue = contextValue) === null || _contextValue === void 0 ? void 0 : _contextValue.runner)) {
53
54
  contextValue = getInitialContext(runner);
54
55
  runner.init({
55
56
  context: contextValue
56
57
  }, {
57
58
  onLast: ({ context: context1 }) => {
58
- var _App_init;
59
- return App2 === null || App2 === void 0 ? void 0 : (_App_init = App2.init) === null || _App_init === void 0 ? void 0 : _App_init.call(App2, context1);
59
+ var _App_init, _App;
60
+ return (_App = App2) === null || _App === void 0 ? void 0 : (_App_init = _App.init) === null || _App_init === void 0 ? void 0 : _App_init.call(_App, context1);
60
61
  }
61
62
  });
62
63
  }
@@ -88,16 +89,14 @@ export const bootstrap = async (BootApp, id, root, ReactDOM) => {
88
89
  runner = runnerMap.get(App);
89
90
  }
90
91
  const context = getInitialContext(runner);
91
- const runInit = (_context) => {
92
- return runner.init({
93
- context: _context
94
- }, {
95
- onLast: ({ context: context1 }) => {
96
- var _App_init;
97
- return App === null || App === void 0 ? void 0 : (_App_init = App.init) === null || _App_init === void 0 ? void 0 : _App_init.call(App, context1);
98
- }
99
- });
100
- };
92
+ const runInit = (_context) => runner.init({
93
+ context: _context
94
+ }, {
95
+ onLast: ({ context: context1 }) => {
96
+ var _App_init, _App;
97
+ return (_App = App) === null || _App === void 0 ? void 0 : (_App_init = _App.init) === null || _App_init === void 0 ? void 0 : _App_init.call(_App, context1);
98
+ }
99
+ });
101
100
  if (!id) {
102
101
  return /* @__PURE__ */ React.createElement(App, {
103
102
  context
@@ -106,9 +105,9 @@ export const bootstrap = async (BootApp, id, root, ReactDOM) => {
106
105
  const isBrowser = typeof window !== "undefined" && window.name !== "nodejs";
107
106
  if (isBrowser) {
108
107
  if (isClientArgs(id)) {
109
- var _ssrData_data, _ssrData_data1;
108
+ var _ssrData_data, _ssrData, _ssrData1, _ssrData_data1, _ssrData2;
110
109
  const ssrData = window._SSR_DATA;
111
- const loadersData = (ssrData === null || ssrData === void 0 ? void 0 : (_ssrData_data = ssrData.data) === null || _ssrData_data === void 0 ? void 0 : _ssrData_data.loadersData) || {};
110
+ const loadersData = ((_ssrData = ssrData) === null || _ssrData === void 0 ? void 0 : (_ssrData_data = _ssrData.data) === null || _ssrData_data === void 0 ? void 0 : _ssrData_data.loadersData) || {};
112
111
  const initialLoadersState = Object.keys(loadersData).reduce((res, key) => {
113
112
  const loaderData = loadersData[key];
114
113
  if (loaderData.loading !== false) {
@@ -122,10 +121,10 @@ export const bootstrap = async (BootApp, id, root, ReactDOM) => {
122
121
  skipStatic: true
123
122
  }),
124
123
  ...ssrData ? {
125
- ssrContext: ssrData === null || ssrData === void 0 ? void 0 : ssrData.context
124
+ ssrContext: (_ssrData1 = ssrData) === null || _ssrData1 === void 0 ? void 0 : _ssrData1.context
126
125
  } : {}
127
126
  });
128
- context.initialData = ssrData === null || ssrData === void 0 ? void 0 : (_ssrData_data1 = ssrData.data) === null || _ssrData_data1 === void 0 ? void 0 : _ssrData_data1.initialData;
127
+ context.initialData = (_ssrData2 = ssrData) === null || _ssrData2 === void 0 ? void 0 : (_ssrData_data1 = _ssrData2.data) === null || _ssrData_data1 === void 0 ? void 0 : _ssrData_data1.initialData;
129
128
  const initialData = await runInit(context);
130
129
  if (initialData) {
131
130
  context.initialData = initialData;
@@ -14,7 +14,7 @@ const useLoader = (loaderFn, options = {
14
14
  delete options._cache;
15
15
  }
16
16
  const load = useCallback((params) => {
17
- var _unlistenLoaderChangeRef_current, _window__SSR_DATA_data_loadersData_id, _window__SSR_DATA, _window__SSR_DATA_data, _loaderRef_current;
17
+ var _unlistenLoaderChangeRef_current, _unlistenLoaderChangeRef, _window__SSR_DATA_data_loadersData_id, _window__SSR_DATA_data, _window__SSR_DATA, _window, _loaderRef_current;
18
18
  if (typeof params === "undefined") {
19
19
  var _loaderRef_current1;
20
20
  return (_loaderRef_current1 = loaderRef.current) === null || _loaderRef_current1 === void 0 ? void 0 : _loaderRef_current1.load();
@@ -34,37 +34,35 @@ const useLoader = (loaderFn, options = {
34
34
  params
35
35
  });
36
36
  loaderRef.current = loaderManager.get(id);
37
- (_unlistenLoaderChangeRef_current = unlistenLoaderChangeRef.current) === null || _unlistenLoaderChangeRef_current === void 0 ? void 0 : _unlistenLoaderChangeRef_current.call(unlistenLoaderChangeRef);
37
+ (_unlistenLoaderChangeRef_current = (_unlistenLoaderChangeRef = unlistenLoaderChangeRef).current) === null || _unlistenLoaderChangeRef_current === void 0 ? void 0 : _unlistenLoaderChangeRef_current.call(_unlistenLoaderChangeRef);
38
38
  if (isSSRRender) {
39
39
  return void 0;
40
40
  }
41
41
  if (options.skip) {
42
42
  return void 0;
43
43
  }
44
- if (context._hydration && ((_window__SSR_DATA_data_loadersData_id = window === null || window === void 0 ? void 0 : (_window__SSR_DATA = window._SSR_DATA) === null || _window__SSR_DATA === void 0 ? void 0 : (_window__SSR_DATA_data = _window__SSR_DATA.data) === null || _window__SSR_DATA_data === void 0 ? void 0 : _window__SSR_DATA_data.loadersData[id]) === null || _window__SSR_DATA_data_loadersData_id === void 0 ? void 0 : _window__SSR_DATA_data_loadersData_id.error) === null) {
44
+ if (context._hydration && ((_window = window) === null || _window === void 0 ? void 0 : (_window__SSR_DATA = _window._SSR_DATA) === null || _window__SSR_DATA === void 0 ? void 0 : (_window__SSR_DATA_data = _window__SSR_DATA.data) === null || _window__SSR_DATA_data === void 0 ? void 0 : (_window__SSR_DATA_data_loadersData_id = _window__SSR_DATA_data.loadersData[id]) === null || _window__SSR_DATA_data_loadersData_id === void 0 ? void 0 : _window__SSR_DATA_data_loadersData_id.error) === null) {
45
45
  return void 0;
46
46
  }
47
47
  const res = loaderRef.current.load();
48
48
  unlistenLoaderChangeRef.current = (_loaderRef_current = loaderRef.current) === null || _loaderRef_current === void 0 ? void 0 : _loaderRef_current.onChange((_status, _result) => {
49
49
  setResult(_result);
50
50
  if (_status === LoaderStatus.fulfilled) {
51
- var _options_onSuccess;
52
- options === null || options === void 0 ? void 0 : (_options_onSuccess = options.onSuccess) === null || _options_onSuccess === void 0 ? void 0 : _options_onSuccess.call(options, _result.data);
51
+ var _options_onSuccess, _options;
52
+ (_options = options) === null || _options === void 0 ? void 0 : (_options_onSuccess = _options.onSuccess) === null || _options_onSuccess === void 0 ? void 0 : _options_onSuccess.call(_options, _result.data);
53
53
  }
54
54
  if (_status === LoaderStatus.rejected) {
55
- var _options_onError;
56
- options === null || options === void 0 ? void 0 : (_options_onError = options.onError) === null || _options_onError === void 0 ? void 0 : _options_onError.call(options, _result.error);
55
+ var _options_onError, _options1;
56
+ (_options1 = options) === null || _options1 === void 0 ? void 0 : (_options_onError = _options1.onError) === null || _options_onError === void 0 ? void 0 : _options_onError.call(_options1, _result.error);
57
57
  }
58
58
  });
59
59
  return res;
60
60
  }, [
61
61
  options.skip
62
62
  ]);
63
- useEffect(() => {
64
- return () => {
65
- var _unlistenLoaderChangeRef_current;
66
- (_unlistenLoaderChangeRef_current = unlistenLoaderChangeRef.current) === null || _unlistenLoaderChangeRef_current === void 0 ? void 0 : _unlistenLoaderChangeRef_current.call(unlistenLoaderChangeRef);
67
- };
63
+ useEffect(() => () => {
64
+ var _unlistenLoaderChangeRef_current, _unlistenLoaderChangeRef;
65
+ (_unlistenLoaderChangeRef_current = (_unlistenLoaderChangeRef = unlistenLoaderChangeRef).current) === null || _unlistenLoaderChangeRef_current === void 0 ? void 0 : _unlistenLoaderChangeRef_current.call(_unlistenLoaderChangeRef);
68
66
  }, []);
69
67
  useMemo(() => {
70
68
  var _options_params;
@@ -18,12 +18,13 @@ export const createRuntime = () => createManager(runtimeHooks);
18
18
  const registerInit = (App, _init) => {
19
19
  const originalInit = App.init;
20
20
  App.init = async (context) => {
21
+ var _originalInit, _init1;
21
22
  if (!context.loaderManager) {
22
23
  context.loaderManager = createLoaderManager({});
23
24
  }
24
25
  await Promise.all([
25
- originalInit === null || originalInit === void 0 ? void 0 : originalInit(context),
26
- _init === null || _init === void 0 ? void 0 : _init(context)
26
+ (_originalInit = originalInit) === null || _originalInit === void 0 ? void 0 : _originalInit(context),
27
+ (_init1 = _init) === null || _init1 === void 0 ? void 0 : _init1(context)
27
28
  ]);
28
29
  };
29
30
  };
@@ -6,7 +6,8 @@ function findTargetChild(tag, children) {
6
6
  return children.find((item) => getEleType(item) === tag);
7
7
  }
8
8
  function getEleType(ele) {
9
- return typeof (ele === null || ele === void 0 ? void 0 : ele.type) === "function" ? ele.type.name : ele === null || ele === void 0 ? void 0 : ele.type;
9
+ var _ele, _ele1;
10
+ return typeof ((_ele = ele) === null || _ele === void 0 ? void 0 : _ele.type) === "function" ? ele.type.name : (_ele1 = ele) === null || _ele1 === void 0 ? void 0 : _ele1.type;
10
11
  }
11
12
  function findTargetElement(tag, children) {
12
13
  if (children.length === 0) {
@@ -14,11 +15,11 @@ function findTargetElement(tag, children) {
14
15
  }
15
16
  let nextChildren = [];
16
17
  for (const item of children) {
17
- var _item_props;
18
+ var _item_props, _item;
18
19
  if (tag === getEleType(item)) {
19
20
  return item;
20
21
  }
21
- if (item === null || item === void 0 ? void 0 : (_item_props = item.props) === null || _item_props === void 0 ? void 0 : _item_props.children) {
22
+ if ((_item = item) === null || _item === void 0 ? void 0 : (_item_props = _item.props) === null || _item_props === void 0 ? void 0 : _item_props.children) {
22
23
  nextChildren = nextChildren.concat(item.props.children);
23
24
  }
24
25
  }