@modern-js/runtime 2.34.0 → 2.35.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/dist/cjs/core/compatible.js +9 -10
  2. package/dist/cjs/core/loader/useLoader.js +8 -8
  3. package/dist/cjs/core/plugin.js +2 -3
  4. package/dist/cjs/document/Html.js +3 -4
  5. package/dist/cjs/document/cli/index.js +4 -6
  6. package/dist/cjs/router/cli/index.js +1 -2
  7. package/dist/cjs/router/runtime/DeferredDataScripts.node.js +9 -11
  8. package/dist/cjs/router/runtime/PrefetchLink.js +5 -9
  9. package/dist/cjs/router/runtime/index.js +5 -1
  10. package/dist/cjs/router/runtime/plugin.js +5 -7
  11. package/dist/cjs/router/runtime/plugin.node.js +8 -9
  12. package/dist/cjs/router/runtime/server.js +1 -1
  13. package/dist/cjs/router/runtime/utils.js +7 -7
  14. package/dist/cjs/router/runtime/withRouter.js +1 -1
  15. package/dist/cjs/ssr/cli/index.js +9 -11
  16. package/dist/cjs/ssr/index.js +3 -3
  17. package/dist/cjs/ssr/index.node.js +3 -2
  18. package/dist/cjs/ssr/prefetch.js +4 -4
  19. package/dist/cjs/ssr/react/prerender/util.js +2 -4
  20. package/dist/cjs/ssr/serverRender/renderToStream/buildTemplate.after.js +6 -3
  21. package/dist/cjs/ssr/serverRender/renderToStream/bulidTemplate.before.js +3 -7
  22. package/dist/cjs/ssr/serverRender/renderToStream/index.js +14 -5
  23. package/dist/cjs/ssr/serverRender/renderToStream/renderToPipe.js +5 -13
  24. package/dist/cjs/ssr/serverRender/renderToStream/renderToPipe.worker.js +5 -8
  25. package/dist/cjs/ssr/serverRender/renderToString/entry.js +5 -5
  26. package/dist/cjs/ssr/serverRender/renderToString/index.js +3 -3
  27. package/dist/cjs/ssr/serverRender/renderToString/loadable.js +29 -18
  28. package/dist/cjs/ssr/serverRender/tracker.js +14 -0
  29. package/dist/esm/core/compatible.js +9 -10
  30. package/dist/esm/core/loader/useLoader.js +8 -8
  31. package/dist/esm/core/plugin.js +2 -3
  32. package/dist/esm/document/Html.js +3 -4
  33. package/dist/esm/document/cli/index.js +4 -5
  34. package/dist/esm/router/cli/index.js +1 -2
  35. package/dist/esm/router/runtime/DeferredDataScripts.node.js +4 -6
  36. package/dist/esm/router/runtime/PrefetchLink.js +5 -9
  37. package/dist/esm/router/runtime/index.js +3 -2
  38. package/dist/esm/router/runtime/plugin.js +4 -6
  39. package/dist/esm/router/runtime/plugin.node.js +6 -7
  40. package/dist/esm/router/runtime/server.js +1 -1
  41. package/dist/esm/router/runtime/utils.js +6 -6
  42. package/dist/esm/router/runtime/withRouter.js +1 -1
  43. package/dist/esm/ssr/cli/index.js +9 -11
  44. package/dist/esm/ssr/index.js +1 -1
  45. package/dist/esm/ssr/index.node.js +3 -2
  46. package/dist/esm/ssr/prefetch.js +3 -3
  47. package/dist/esm/ssr/react/prerender/util.js +2 -4
  48. package/dist/esm/ssr/serverRender/renderToStream/buildTemplate.after.js +5 -2
  49. package/dist/esm/ssr/serverRender/renderToStream/bulidTemplate.before.js +3 -5
  50. package/dist/esm/ssr/serverRender/renderToStream/index.js +14 -5
  51. package/dist/esm/ssr/serverRender/renderToStream/renderToPipe.js +5 -13
  52. package/dist/esm/ssr/serverRender/renderToStream/renderToPipe.worker.js +6 -7
  53. package/dist/esm/ssr/serverRender/renderToString/entry.js +4 -4
  54. package/dist/esm/ssr/serverRender/renderToString/index.js +2 -2
  55. package/dist/esm/ssr/serverRender/renderToString/loadable.js +32 -18
  56. package/dist/esm/ssr/serverRender/tracker.js +11 -0
  57. package/dist/esm-node/core/compatible.js +9 -10
  58. package/dist/esm-node/core/loader/useLoader.js +8 -8
  59. package/dist/esm-node/core/plugin.js +2 -3
  60. package/dist/esm-node/document/Html.js +3 -4
  61. package/dist/esm-node/document/cli/index.js +4 -6
  62. package/dist/esm-node/router/cli/index.js +1 -2
  63. package/dist/esm-node/router/runtime/DeferredDataScripts.node.js +4 -6
  64. package/dist/esm-node/router/runtime/PrefetchLink.js +5 -9
  65. package/dist/esm-node/router/runtime/index.js +3 -2
  66. package/dist/esm-node/router/runtime/plugin.js +4 -6
  67. package/dist/esm-node/router/runtime/plugin.node.js +6 -7
  68. package/dist/esm-node/router/runtime/server.js +1 -1
  69. package/dist/esm-node/router/runtime/utils.js +6 -6
  70. package/dist/esm-node/router/runtime/withRouter.js +1 -1
  71. package/dist/esm-node/ssr/cli/index.js +9 -11
  72. package/dist/esm-node/ssr/index.js +1 -1
  73. package/dist/esm-node/ssr/index.node.js +3 -2
  74. package/dist/esm-node/ssr/prefetch.js +3 -3
  75. package/dist/esm-node/ssr/react/prerender/util.js +2 -4
  76. package/dist/esm-node/ssr/serverRender/renderToStream/buildTemplate.after.js +5 -2
  77. package/dist/esm-node/ssr/serverRender/renderToStream/bulidTemplate.before.js +3 -7
  78. package/dist/esm-node/ssr/serverRender/renderToStream/index.js +13 -4
  79. package/dist/esm-node/ssr/serverRender/renderToStream/renderToPipe.js +5 -13
  80. package/dist/esm-node/ssr/serverRender/renderToStream/renderToPipe.worker.js +5 -8
  81. package/dist/esm-node/ssr/serverRender/renderToString/entry.js +4 -4
  82. package/dist/esm-node/ssr/serverRender/renderToString/index.js +2 -2
  83. package/dist/esm-node/ssr/serverRender/renderToString/loadable.js +29 -18
  84. package/dist/esm-node/ssr/serverRender/tracker.js +14 -0
  85. package/dist/types/router/runtime/PrefetchLink.d.ts +1 -1
  86. package/dist/types/router/runtime/hooks.d.ts +1 -1
  87. package/dist/types/router/runtime/index.d.ts +4 -3
  88. package/dist/types/router/runtime/server.d.ts +1 -1
  89. package/dist/types/router/runtime/types.d.ts +2 -2
  90. package/dist/types/router/runtime/utils.d.ts +1 -1
  91. package/dist/types/router/runtime/withRouter.d.ts +1 -1
  92. package/dist/types/runtimeContext.d.ts +1 -1
  93. package/dist/types/ssr/serverRender/renderToString/entry.d.ts +2 -2
  94. package/dist/types/ssr/serverRender/renderToString/loadable.d.ts +1 -0
  95. package/dist/types/ssr/serverRender/renderToString/type.d.ts +0 -10
  96. package/dist/types/ssr/serverRender/tracker.d.ts +5 -2
  97. package/dist/types/ssr/serverRender/types.d.ts +12 -1
  98. package/package.json +10 -9
@@ -1,15 +1,14 @@
1
1
  import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
2
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
3
  import { Suspense, useEffect, useRef, useMemo, useContext } from "react";
4
- import { Await, UNSAFE_DataRouterContext as DataRouterContext, useAsyncError } from "@modern-js/utils/runtime/router";
5
- import { serializeJson } from "@modern-js/utils/runtime-node";
4
+ import { Await, UNSAFE_DataRouterContext as DataRouterContext, useAsyncError } from "@modern-js/runtime-utils/router";
5
+ import { serializeJson } from "@modern-js/runtime-utils/node";
6
6
  import { JSX_SHELL_STREAM_END_MARK } from "../../common";
7
7
  import { serializeErrors } from "./utils";
8
8
  var setupFnStr = "function s(r,e){_ROUTER_DATA.r=_ROUTER_DATA.r||{},_ROUTER_DATA.r[r]=_ROUTER_DATA.r[r]||{};return new Promise((function(A,R){_ROUTER_DATA.r[r][e]={resolve:A,reject:R}}))};";
9
9
  var resolveFnStr = "function r(e,r,o,A){A?_ROUTER_DATA.r[e][r].reject(A):_ROUTER_DATA.r[e][r].resolve(o)};";
10
10
  var preResolvedFnStr = "function p(e,r){return void 0!==r?Promise.reject(new Error(r.message)):Promise.resolve(e)};";
11
11
  var DeferredDataScripts = function(props) {
12
- var _props;
13
12
  var context = useContext(DataRouterContext);
14
13
  var staticContext = (context || {}).staticContext;
15
14
  var hydratedRef = useRef(false);
@@ -38,9 +37,8 @@ var DeferredDataScripts = function(props) {
38
37
  var deferredKeys = deferredData.deferredKeys;
39
38
  var deferredKeyPromiseStr = deferredKeys.map(function(key) {
40
39
  if (pendingKeys.has(key)) {
41
- var _props2;
42
40
  deferredDataScripts.push(/* @__PURE__ */ _jsx(DeferredDataScript, {
43
- nonce: (_props2 = props) === null || _props2 === void 0 ? void 0 : _props2.nonce,
41
+ nonce: props === null || props === void 0 ? void 0 : props.nonce,
44
42
  data: deferredData.data[key],
45
43
  dataKey: key,
46
44
  routeId: routeId
@@ -76,7 +74,7 @@ var DeferredDataScripts = function(props) {
76
74
  children: [
77
75
  !hydratedRef.current && /* @__PURE__ */ _jsx("script", {
78
76
  async: true,
79
- nonce: (_props = props) === null || _props === void 0 ? void 0 : _props.nonce,
77
+ nonce: props === null || props === void 0 ? void 0 : props.nonce,
80
78
  suppressHydrationWarning: true,
81
79
  dangerouslySetInnerHTML: {
82
80
  __html: deferredScripts[0]
@@ -5,12 +5,11 @@ import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
5
5
  import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
6
6
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
7
7
  import React, { useContext, useMemo } from "react";
8
- import { Link as RouterLink, matchRoutes, useResolvedPath, useHref, useMatches, NavLink as RouterNavLink } from "@modern-js/utils/runtime/router";
8
+ import { Link as RouterLink, matchRoutes, useResolvedPath, useHref, useMatches, NavLink as RouterNavLink } from "@modern-js/runtime-utils/router";
9
9
  import { RuntimeReactContext } from "../../core";
10
10
  export function composeEventHandlers(theirHandler, ourHandler) {
11
11
  return function(event) {
12
- var _theirHandler;
13
- (_theirHandler = theirHandler) === null || _theirHandler === void 0 ? void 0 : _theirHandler(event);
12
+ theirHandler === null || theirHandler === void 0 ? void 0 : theirHandler(event);
14
13
  if (!event.defaultPrevented) {
15
14
  ourHandler(event);
16
15
  }
@@ -99,8 +98,7 @@ function _loadRouteModule() {
99
98
  return [
100
99
  4,
101
100
  Promise.all(chunkIds.map(function(chunkId) {
102
- var _$__webpack_chunk_load__;
103
- return (_$__webpack_chunk_load__ = __webpack_chunk_load__) === null || _$__webpack_chunk_load__ === void 0 ? void 0 : _$__webpack_chunk_load__(String(chunkId));
101
+ return __webpack_chunk_load__ === null || __webpack_chunk_load__ === void 0 ? void 0 : __webpack_chunk_load__(String(chunkId));
104
102
  }))
105
103
  ];
106
104
  case 2:
@@ -154,8 +152,7 @@ var PrefetchPageLinks = function(param) {
154
152
  var routeAssets = (routeManifest || {}).routeAssets;
155
153
  var matches = Array.isArray(routes) ? matchRoutes(routes, pathname) : [];
156
154
  if (Array.isArray(matches) && routeAssets) {
157
- var _matches;
158
- (_matches = matches) === null || _matches === void 0 ? void 0 : _matches.forEach(function(match) {
155
+ matches === null || matches === void 0 ? void 0 : matches.forEach(function(match) {
159
156
  return loadRouteModule(match.route, routeAssets);
160
157
  });
161
158
  }
@@ -173,8 +170,7 @@ var PrefetchDataLinks = function(param) {
173
170
  var currentMatches = useMatches();
174
171
  var basename = useHref("/");
175
172
  var dataHrefs = useMemo(function() {
176
- var _matches;
177
- return (_matches = matches) === null || _matches === void 0 ? void 0 : _matches.filter(function(match, index) {
173
+ return matches === null || matches === void 0 ? void 0 : matches.filter(function(match, index) {
178
174
  if (!match.route.loader || typeof match.route.loader !== "function" || match.route.loader.length === 0) {
179
175
  return false;
180
176
  }
@@ -1,5 +1,6 @@
1
- import { useRouteLoaderData as useRouteData } from "@modern-js/utils/runtime/router";
1
+ import { useRouteLoaderData as useRouteData } from "@modern-js/runtime-utils/router";
2
2
  import { routerPlugin } from "./plugin";
3
+ export { renderRoutes } from "./utils";
3
4
  export default routerPlugin;
4
5
  export { modifyRoutes } from "./plugin";
5
6
  export * from "./withRouter";
@@ -65,4 +66,4 @@ export {
65
66
  defer,
66
67
  json,
67
68
  redirect
68
- } from "@modern-js/utils/runtime/router";
69
+ } from "@modern-js/runtime-utils/router";
@@ -3,9 +3,9 @@ import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
3
3
  import { _ as _to_consumable_array } from "@swc/helpers/_/_to_consumable_array";
4
4
  import { jsx as _jsx } from "react/jsx-runtime";
5
5
  import { useContext, useMemo } from "react";
6
- import { createBrowserRouter, createHashRouter, RouterProvider, createRoutesFromElements, useMatches, useLocation } from "@modern-js/utils/runtime/router";
6
+ import { createBrowserRouter, createHashRouter, RouterProvider, createRoutesFromElements, useMatches, useLocation } from "@modern-js/runtime-utils/router";
7
7
  import hoistNonReactStatics from "hoist-non-react-statics";
8
- import { parsedJSONFromElement } from "@modern-js/utils/runtime-browser";
8
+ import { parsedJSONFromElement } from "@modern-js/runtime-utils/browser";
9
9
  import { RuntimeReactContext } from "../../core";
10
10
  import { modifyRoutes as modifyRoutesHook } from "./hooks";
11
11
  import { deserializeErrors, renderRoutes, urlJoin } from "./utils";
@@ -56,7 +56,6 @@ export var routerPlugin = function(param) {
56
56
  },
57
57
  hoc: function(param2, next) {
58
58
  var App = param2.App;
59
- var _routesConfig;
60
59
  if (!finalRouteConfig && !createRoutes) {
61
60
  return next({
62
61
  App: App
@@ -71,8 +70,7 @@ export var routerPlugin = function(param) {
71
70
  var runtimeContext = useContext(RuntimeReactContext);
72
71
  var getBlockNavState = runtimeContext.unstable_getBlockNavState;
73
72
  return useMemo(function() {
74
- var _hydrationData;
75
- if ((_hydrationData = hydrationData) === null || _hydrationData === void 0 ? void 0 : _hydrationData.errors) {
73
+ if (hydrationData === null || hydrationData === void 0 ? void 0 : hydrationData.errors) {
76
74
  hydrationData = _object_spread_props(_object_spread({}, hydrationData), {
77
75
  errors: deserializeErrors(hydrationData.errors)
78
76
  });
@@ -133,7 +131,7 @@ export var routerPlugin = function(param) {
133
131
  if (App) {
134
132
  RouteApp = hoistNonReactStatics(RouteApp, App);
135
133
  }
136
- if ((_routesConfig = routesConfig) === null || _routesConfig === void 0 ? void 0 : _routesConfig.globalApp) {
134
+ if (routesConfig === null || routesConfig === void 0 ? void 0 : routesConfig.globalApp) {
137
135
  return next({
138
136
  App: hoistNonReactStatics(RouteApp, routesConfig.globalApp)
139
137
  });
@@ -6,12 +6,12 @@ import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
6
6
  import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
7
7
  import { jsx as _jsx } from "react/jsx-runtime";
8
8
  import { useContext } from "react";
9
- import { createStaticHandler } from "@modern-js/utils/runtime/remix-router";
10
- import { createStaticRouter, StaticRouterProvider } from "@modern-js/utils/runtime-node/router";
9
+ import { createStaticHandler } from "@modern-js/runtime-utils/remix-router";
10
+ import { createStaticRouter, StaticRouterProvider } from "@modern-js/runtime-utils/node/router";
11
11
  import hoistNonReactStatics from "hoist-non-react-statics";
12
- import { createRoutesFromElements } from "@modern-js/utils/runtime/router";
13
- import { createRequestContext, reporterCtx } from "@modern-js/utils/runtime-node";
14
- import { time } from "@modern-js/utils/universal/time";
12
+ import { createRoutesFromElements } from "@modern-js/runtime-utils/router";
13
+ import { createRequestContext, reporterCtx } from "@modern-js/runtime-utils/node";
14
+ import { time } from "@modern-js/runtime-utils/time";
15
15
  import { LOADER_REPORTER_NAME } from "@modern-js/utils/universal/constants";
16
16
  import { RuntimeReactContext } from "../../core";
17
17
  import { renderRoutes, urlJoin } from "./utils";
@@ -157,7 +157,6 @@ export var routerPlugin = function(param) {
157
157
  },
158
158
  hoc: function(param2, next) {
159
159
  var App = param2.App;
160
- var _routesConfig;
161
160
  if (!routesConfig) {
162
161
  return next({
163
162
  App: App
@@ -176,7 +175,7 @@ export var routerPlugin = function(param) {
176
175
  };
177
176
  };
178
177
  var RouteApp = getRouteApp();
179
- if ((_routesConfig = routesConfig) === null || _routesConfig === void 0 ? void 0 : _routesConfig.globalApp) {
178
+ if (routesConfig === null || routesConfig === void 0 ? void 0 : routesConfig.globalApp) {
180
179
  return next({
181
180
  App: hoistNonReactStatics(RouteApp, routesConfig.globalApp)
182
181
  });
@@ -1 +1 @@
1
- export * from "@modern-js/utils/runtime-node/router";
1
+ export * from "@modern-js/runtime-utils/node/router";
@@ -4,9 +4,9 @@ import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
4
4
  import { _ as _object_without_properties } from "@swc/helpers/_/_object_without_properties";
5
5
  import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
6
6
  import { jsx as _jsx } from "react/jsx-runtime";
7
- import { Route, isRouteErrorResponse } from "@modern-js/utils/runtime/router";
8
- import { ErrorResponse } from "@modern-js/utils/runtime/remix-router";
9
- import { renderNestedRoute } from "@modern-js/utils/runtime/nested-routes";
7
+ import { Route, isRouteErrorResponse } from "@modern-js/runtime-utils/router";
8
+ import { ErrorResponse } from "@modern-js/runtime-utils/remix-router";
9
+ import { renderNestedRoute } from "@modern-js/runtime-utils/browser";
10
10
  import { DefaultNotFound } from "./DefaultNotFound";
11
11
  import DeferredDataScripts from "./DeferredDataScripts";
12
12
  export function getRouteComponents(routes, param) {
@@ -83,9 +83,9 @@ export function renderRoutes(param) {
83
83
  return routeElements;
84
84
  }
85
85
  export function getLocation(serverContext) {
86
- var _serverContext, _url_replace, _url;
87
- var _ref = ((_serverContext = serverContext) === null || _serverContext === void 0 ? void 0 : _serverContext.request) || {}, pathname = _ref.pathname, url = _ref.url;
88
- 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://", "");
86
+ var _url_replace;
87
+ var _ref = (serverContext === null || serverContext === void 0 ? void 0 : serverContext.request) || {}, pathname = _ref.pathname, url = _ref.url;
88
+ var cleanUrl = url === null || url === void 0 ? void 0 : (_url_replace = url.replace("http://", "")) === null || _url_replace === void 0 ? void 0 : _url_replace.replace("https://", "");
89
89
  var index = (cleanUrl || "").indexOf(pathname);
90
90
  if (index === -1) {
91
91
  return pathname;
@@ -1,7 +1,7 @@
1
1
  import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
2
2
  import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
3
3
  import { jsx as _jsx } from "react/jsx-runtime";
4
- import { useLocation, useNavigate, useParams } from "@modern-js/utils/runtime/router";
4
+ import { useLocation, useNavigate, useParams } from "@modern-js/runtime-utils/router";
5
5
  export var withRouter = function(Component) {
6
6
  return function(props) {
7
7
  var location = useLocation();
@@ -4,15 +4,14 @@ 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;
8
7
  var isStreaming = function(ssr) {
9
8
  return ssr && typeof ssr === "object" && ssr.mode === "stream";
10
9
  };
11
10
  var server = userConfig.server, output = userConfig.output;
12
- if ((((_server = server) === null || _server === void 0 ? void 0 : _server.ssr) || output.ssg) && !isStreaming(server.ssr)) {
11
+ if (((server === null || server === void 0 ? void 0 : server.ssr) || output.ssg) && !isStreaming(server.ssr)) {
13
12
  return true;
14
13
  }
15
- if (((_server1 = server) === null || _server1 === void 0 ? void 0 : _server1.ssrByEntries) && typeof server.ssrByEntries === "object") {
14
+ if ((server === null || server === void 0 ? void 0 : server.ssrByEntries) && typeof server.ssrByEntries === "object") {
16
15
  var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
17
16
  try {
18
17
  for (var _iterator = Object.keys(server.ssrByEntries)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
@@ -39,9 +38,8 @@ var hasStringSSREntry = function(userConfig) {
39
38
  return false;
40
39
  };
41
40
  var checkUseStringSSR = function(config) {
42
- var _output;
43
41
  var output = config.output;
44
- return Boolean((_output = output) === null || _output === void 0 ? void 0 : _output.ssg) || hasStringSSREntry(config);
42
+ return Boolean(output === null || output === void 0 ? void 0 : output.ssg) || hasStringSSREntry(config);
45
43
  };
46
44
  export var ssrPlugin = function() {
47
45
  return {
@@ -85,8 +83,8 @@ export var ssrPlugin = function() {
85
83
  return {
86
84
  source: {
87
85
  alias: {
88
- // ensure that all packages use the same storage in @modern-js/utils/runtime-node
89
- "@modern-js/utils/runtime-node$": require.resolve("@modern-js/utils/runtime-node"),
86
+ // ensure that all packages use the same storage in @modern-js/runtime-utils/node
87
+ "@modern-js/runtime-utils/node$": require.resolve("@modern-js/runtime-utils/node"),
90
88
  "@modern-js/runtime/plugins": pluginsExportsUtils.getPath()
91
89
  },
92
90
  globalVars: function(values, param) {
@@ -119,9 +117,9 @@ export var ssrPlugin = function() {
119
117
  pluginsExportsUtils.addExport("export { default as ssr } from '@modern-js/runtime/ssr'");
120
118
  var ssrConfig = getEntryOptions(entryName, isMainEntry, userConfig.server.ssr, userConfig.server.ssrByEntries, packageName);
121
119
  if (typeof ssrConfig === "object" && ssrConfig.mode === "stream") {
122
- var _this, _runtimeConfig;
120
+ var _this;
123
121
  var runtimeConfig = getEntryOptions(entryName, isMainEntry, userConfig.runtime, userConfig.runtimeByEntries, packageName);
124
- if (((_this = (_runtimeConfig = runtimeConfig) === null || _runtimeConfig === void 0 ? void 0 : _runtimeConfig.router) === null || _this === void 0 ? void 0 : _this.mode) === "react-router-5") {
122
+ if (((_this = runtimeConfig === null || runtimeConfig === void 0 ? void 0 : runtimeConfig.router) === null || _this === void 0 ? void 0 : _this.mode) === "react-router-5") {
125
123
  throw new Error("router v5 plugin doesn't support streaming SSR, check your config 'runtime.router'");
126
124
  }
127
125
  if (fileSystemRoutes && !entrypoint.nestedRoutesEntry) {
@@ -148,8 +146,8 @@ export var ssrPlugin = function() {
148
146
  modifyEntryRuntimePlugins: function modifyEntryRuntimePlugins(param) {
149
147
  var entrypoint = param.entrypoint, plugins = param.plugins, bundlerConfigs = param.bundlerConfigs;
150
148
  if (ssrConfigMap.get(entrypoint.entryName)) {
151
- var _bundlerConfigs_find_output, _bundlerConfigs_find, _bundlerConfigs, _config_server;
152
- var chunkLoadingGlobal = (_bundlerConfigs = bundlerConfigs) === null || _bundlerConfigs === void 0 ? void 0 : (_bundlerConfigs_find = _bundlerConfigs.find(function(config2) {
149
+ var _bundlerConfigs_find_output, _bundlerConfigs_find, _config_server;
150
+ var chunkLoadingGlobal = bundlerConfigs === null || bundlerConfigs === void 0 ? void 0 : (_bundlerConfigs_find = bundlerConfigs.find(function(config2) {
153
151
  return config2.name === "client";
154
152
  })) === 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;
155
153
  var config = api.useResolvedConfigContext();
@@ -5,7 +5,7 @@ import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
5
5
  import { jsx as _jsx } from "react/jsx-runtime";
6
6
  import { loadableReady } from "@loadable/component";
7
7
  import hoistNonReactStatics from "hoist-non-react-statics";
8
- import { parsedJSONFromElement } from "@modern-js/utils/runtime-browser";
8
+ import { parsedJSONFromElement } from "@modern-js/runtime-utils/browser";
9
9
  import { RenderLevel } from "./serverRender/types";
10
10
  import { WithCallback } from "./react/withCallback";
11
11
  import { formatClient, mockResponse, isReact18 } from "./utils";
@@ -4,6 +4,7 @@ import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
4
4
  import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
5
5
  import { formatServer } from "./utils";
6
6
  import render from "./serverRender";
7
+ import { createSSRTracker } from "./serverRender/tracker";
7
8
  export var ssr = function() {
8
9
  var config = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
9
10
  return {
@@ -43,6 +44,7 @@ export var ssr = function() {
43
44
  var request = context.ssrContext.request;
44
45
  context.ssrContext.request = formatServer(request);
45
46
  context.ssrContext.mode = config.mode;
47
+ context.ssrContext.tracker = createSSRTracker(context.ssrContext);
46
48
  if (!context.ssrContext.htmlModifiers) {
47
49
  context.ssrContext.htmlModifiers = [];
48
50
  }
@@ -52,8 +54,7 @@ export var ssr = function() {
52
54
  },
53
55
  pickContext: function(param, next) {
54
56
  var context = param.context, pickedContext = param.pickedContext;
55
- var _context;
56
- var _ref = (_context = context) === null || _context === void 0 ? void 0 : _context.ssrContext, request = _ref.request, response = _ref.response;
57
+ var _ref = context === null || context === void 0 ? void 0 : context.ssrContext, request = _ref.request, response = _ref.response;
57
58
  var initialData = context.initialData;
58
59
  return next({
59
60
  context: context,
@@ -2,7 +2,7 @@ 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 { jsx as _jsx } from "react/jsx-runtime";
4
4
  import { renderToStaticMarkup } from "react-dom/server";
5
- import { run } from "@modern-js/utils/runtime-node";
5
+ import { run } from "@modern-js/runtime-utils/node";
6
6
  import { ChunkExtractor } from "@loadable/server";
7
7
  var prefetch = function() {
8
8
  var _ref = _async_to_generator(function(App, context, config) {
@@ -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, _context, ssrContext, loadableStats, extractor, loadersData;
13
+ var _context_store, ssrContext, loadableStats, extractor, loadersData;
14
14
  return _ts_generator(this, function(_state2) {
15
15
  switch (_state2.label) {
16
16
  case 0:
@@ -63,7 +63,7 @@ var prefetch = function() {
63
63
  initialData: context.initialData,
64
64
  i18nData: context.__i18nData__,
65
65
  // todo: move to plugin state
66
- storeState: (_context = context) === null || _context === void 0 ? void 0 : (_context_store = _context.store) === null || _context_store === void 0 ? void 0 : _context_store.getState()
66
+ storeState: context === null || context === void 0 ? void 0 : (_context_store = context.store) === null || _context_store === void 0 ? void 0 : _context_store.getState()
67
67
  }
68
68
  ];
69
69
  }
@@ -46,9 +46,8 @@ 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;
50
49
  var prop = next[propName];
51
- if (((_prop = prop) === null || _prop === void 0 ? void 0 : _prop.hasOwnProperty(key)) && usefulArray(prop[key])) {
50
+ if ((prop === null || prop === void 0 ? void 0 : prop.hasOwnProperty(key)) && usefulArray(prop[key])) {
52
51
  result[key] = unique(result[key].concat(prop[key]));
53
52
  }
54
53
  });
@@ -73,9 +72,8 @@ export var aggMatchesFromPropsList = function aggMatchesFromPropsList2(propsList
73
72
  return usefulObject(props[propName]);
74
73
  }).reduce(function(result, next) {
75
74
  REQUEST_META.forEach(function(key) {
76
- var _prop;
77
75
  var prop = next[propName];
78
- if (((_prop = prop) === null || _prop === void 0 ? void 0 : _prop.hasOwnProperty(key)) && usefulObject(prop[key])) {
76
+ if ((prop === null || prop === void 0 ? void 0 : prop.hasOwnProperty(key)) && usefulObject(prop[key])) {
79
77
  result[key] = Object.assign(result[key], prop[key]);
80
78
  }
81
79
  });
@@ -1,5 +1,5 @@
1
1
  import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
2
- import { serializeJson } from "@modern-js/utils/runtime-node";
2
+ import { serializeJson } from "@modern-js/runtime-utils/node";
3
3
  import { attributesToString } from "../utils";
4
4
  import { buildTemplate } from "./buildTemplate.share";
5
5
  export function buildShellAfterTemplate(afterAppTemplate, options) {
@@ -8,7 +8,7 @@ export function buildShellAfterTemplate(afterAppTemplate, options) {
8
8
  return template.replace("<!--<?- SSRDataScript ?>-->", ssrDataScript);
9
9
  function buildSSRDataScript() {
10
10
  var _options_context = options.context, ssrContext = _options_context.ssrContext, initialData = _options_context.initialData, __i18nData__ = _options_context.__i18nData__, renderLevel = options.renderLevel;
11
- var request = ssrContext.request, enableUnsafeCtx = ssrContext.enableUnsafeCtx, nonce = ssrContext.nonce;
11
+ var request = ssrContext.request, enableUnsafeCtx = ssrContext.enableUnsafeCtx, nonce = ssrContext.nonce, tracker = ssrContext.tracker;
12
12
  var unsafeContext = {
13
13
  headers: request.headers
14
14
  };
@@ -18,6 +18,9 @@ export function buildShellAfterTemplate(afterAppTemplate, options) {
18
18
  i18nData: __i18nData__
19
19
  },
20
20
  context: {
21
+ reporter: {
22
+ sessionId: tracker.sessionId
23
+ },
21
24
  request: _object_spread({
22
25
  params: request.params,
23
26
  query: request.query,
@@ -1,7 +1,7 @@
1
1
  import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
2
2
  import { _ as _to_consumable_array } from "@swc/helpers/_/_to_consumable_array";
3
3
  import ReactHelmet from "react-helmet";
4
- import { matchRoutes } from "@modern-js/utils/runtime/router";
4
+ import { matchRoutes } from "@modern-js/runtime-utils/router";
5
5
  import helmetReplace from "../helmet";
6
6
  import { CSS_CHUNKS_PLACEHOLDER } from "../utils";
7
7
  import { HEAD_REG_EXP, buildTemplate } from "./buildTemplate.share";
@@ -9,7 +9,6 @@ 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;
13
12
  var routeManifest = context.routeManifest, routerContext = context.routerContext, routes = context.routes;
14
13
  if (!routeManifest || !routerContext || !routes) {
15
14
  return "";
@@ -17,7 +16,7 @@ function getHeadTemplate(beforeEntryTemplate, context) {
17
16
  var routeAssets = routeManifest.routeAssets;
18
17
  var cssChunks = [];
19
18
  var matches = matchRoutes(routes, routerContext.location, routerContext.basename);
20
- (_matches = matches) === null || _matches === void 0 ? void 0 : _matches.forEach(function(match, index) {
19
+ matches === null || matches === void 0 ? void 0 : matches.forEach(function(match, index) {
21
20
  if (!index) {
22
21
  return;
23
22
  }
@@ -28,8 +27,7 @@ function getHeadTemplate(beforeEntryTemplate, context) {
28
27
  var _cssChunks;
29
28
  var _routeManifest_referenceCssAssets = routeManifest2.referenceCssAssets, referenceCssAssets = _routeManifest_referenceCssAssets === void 0 ? [] : _routeManifest_referenceCssAssets;
30
29
  var _cssChunks1 = referenceCssAssets.filter(function(asset) {
31
- var _asset;
32
- return ((_asset = asset) === null || _asset === void 0 ? void 0 : _asset.endsWith(".css")) && !headTemplate2.includes(asset);
30
+ return (asset === null || asset === void 0 ? void 0 : asset.endsWith(".css")) && !headTemplate2.includes(asset);
33
31
  });
34
32
  (_cssChunks = cssChunks).push.apply(_cssChunks, _to_consumable_array(_cssChunks1));
35
33
  }
@@ -1,9 +1,10 @@
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 { createElement } from "react";
4
- import { run } from "@modern-js/utils/runtime-node";
5
- import { time } from "@modern-js/utils/universal/time";
4
+ import { run } from "@modern-js/runtime-utils/node";
5
+ import { time } from "@modern-js/runtime-utils/time";
6
6
  import { PreRender } from "../../react/prerender";
7
+ import { SSRErrors, SSRTimings } from "../tracker";
7
8
  import renderToPipe from "./renderToPipe";
8
9
  export var render = function(param) {
9
10
  var App = param.App, context = param.context;
@@ -12,7 +13,7 @@ export var render = function(param) {
12
13
  throw new Error('The "ssrContext" must not be undefined, but received undefined');
13
14
  }
14
15
  return run(ssrContext.request.headers, /* @__PURE__ */ _async_to_generator(function() {
15
- var end, rootElement, pipe;
16
+ var end, rootElement, tracker, pipe;
16
17
  return _ts_generator(this, function(_state) {
17
18
  end = time();
18
19
  rootElement = createElement(App, {
@@ -20,17 +21,25 @@ export var render = function(param) {
20
21
  ssr: true
21
22
  })
22
23
  });
24
+ tracker = ssrContext.tracker;
23
25
  pipe = renderToPipe(rootElement, context, {
24
26
  onShellReady: function onShellReady() {
25
27
  var cacheConfig = PreRender.config();
26
28
  if (cacheConfig) {
27
29
  ssrContext.cacheConfig = cacheConfig;
28
30
  }
31
+ var cost = end();
32
+ tracker.trackTiming(SSRTimings.SSR_RENDER_SHELL, cost);
29
33
  },
30
34
  onAllReady: function onAllReady() {
31
35
  var cost = end();
32
- ssrContext.logger.debug("App Render To HTML cost = %d ms", cost);
33
- ssrContext.metrics.emitTimer("app.render.html.cost", cost);
36
+ tracker.trackTiming(SSRTimings.SSR_RENDER_TOTAL, cost);
37
+ },
38
+ onShellError: function onShellError(e) {
39
+ tracker.trackError(SSRErrors.RENDER_SHELL, e);
40
+ },
41
+ onError: function onError(error) {
42
+ tracker.trackError(SSRErrors.RENDER_STREAM, error);
34
43
  }
35
44
  });
36
45
  return [
@@ -16,18 +16,17 @@ 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;
20
19
  var renderToPipeableStream;
21
20
  try {
22
21
  renderToPipeableStream = require("react-dom/server").renderToPipeableStream;
23
22
  } catch (e) {
24
23
  }
25
24
  var pipe = renderToPipeableStream(rootElement, _object_spread_props(_object_spread({}, options), {
26
- nonce: (_ssrContext = ssrContext) === null || _ssrContext === void 0 ? void 0 : _ssrContext.nonce,
25
+ nonce: ssrContext === null || ssrContext === void 0 ? void 0 : ssrContext.nonce,
27
26
  onShellReady: function onShellReady() {
28
- var _options_onShellReady, _options;
27
+ var _options_onShellReady;
29
28
  var _getTemplates = getTemplates(context, RenderLevel.SERVER_RENDER), shellAfter = _getTemplates.shellAfter, shellBefore = _getTemplates.shellBefore;
30
- (_options = options) === null || _options === void 0 ? void 0 : (_options_onShellReady = _options.onShellReady) === null || _options_onShellReady === void 0 ? void 0 : _options_onShellReady.call(_options);
29
+ options === null || options === void 0 ? void 0 : (_options_onShellReady = options.onShellReady) === null || _options_onShellReady === void 0 ? void 0 : _options_onShellReady.call(options);
31
30
  var injectableTransform = new Transform({
32
31
  transform: function transform(chunk, _encoding, callback) {
33
32
  try {
@@ -55,18 +54,11 @@ function renderToPipe(rootElement, context, options) {
55
54
  resolve(pipe(injectableTransform).pipe(stream));
56
55
  },
57
56
  onShellError: function onShellError(error) {
58
- var _options_onShellError, _options;
59
- ssrContext.metrics.emitCounter("app.render.streaming.shell.error", 1);
57
+ var _options_onShellError;
60
58
  var _getTemplates = getTemplates(context, RenderLevel.CLIENT_RENDER), shellAfter = _getTemplates.shellAfter, shellBefore = _getTemplates.shellBefore;
61
59
  var fallbackHtml = "".concat(shellBefore).concat(shellAfter);
62
60
  resolve(fallbackHtml);
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);
64
- },
65
- onError: function onError(error) {
66
- var _options_onError, _options;
67
- ssrContext.logger.error("An error occurs during streaming SSR", error);
68
- ssrContext.metrics.emitCounter("app.render.streaming.error", 1);
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);
61
+ options === null || options === void 0 ? void 0 : (_options_onShellError = options.onShellError) === null || _options_onShellError === void 0 ? void 0 : _options_onShellError.call(options, error);
70
62
  }
71
63
  })).pipe;
72
64
  });
@@ -4,6 +4,7 @@ import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
4
4
  import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
5
5
  import { RenderLevel } from "../types";
6
6
  import { ESCAPED_SHELL_STREAM_END_MARK } from "../../../common";
7
+ import { SSRErrors } from "../tracker";
7
8
  import { getTemplates } from "./template";
8
9
  var ShellChunkStatus;
9
10
  (function(ShellChunkStatus2) {
@@ -16,7 +17,7 @@ function renderToPipe(rootElement, context, options) {
16
17
  var ssrContext = context.ssrContext;
17
18
  var forUserPipe = function() {
18
19
  var _ref = _async_to_generator(function() {
19
- var renderToReadableStream, _getTemplates, shellAfter, shellBefore, _ssrContext, readableOriginal, reader, injectableStream, err, _ssrContext1, _getTemplates1, shellAfter1, shellBefore1, fallbackHtml;
20
+ var renderToReadableStream, _getTemplates, shellAfter, shellBefore, readableOriginal, reader, injectableStream, err, _getTemplates1, shellAfter1, shellBefore1, fallbackHtml;
20
21
  return _ts_generator(this, function(_state) {
21
22
  switch (_state.label) {
22
23
  case 0:
@@ -36,12 +37,10 @@ function renderToPipe(rootElement, context, options) {
36
37
  return [
37
38
  4,
38
39
  renderToReadableStream(rootElement, _object_spread_props(_object_spread({}, options), {
39
- nonce: (_ssrContext = ssrContext) === null || _ssrContext === void 0 ? void 0 : _ssrContext.nonce,
40
+ nonce: ssrContext === null || ssrContext === void 0 ? void 0 : ssrContext.nonce,
40
41
  onError: function onError(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);
42
+ var _options_onError;
43
+ options === null || options === void 0 ? void 0 : (_options_onError = options.onError) === null || _options_onError === void 0 ? void 0 : _options_onError.call(options, error);
45
44
  }
46
45
  }))
47
46
  ];
@@ -101,7 +100,7 @@ function renderToPipe(rootElement, context, options) {
101
100
  ];
102
101
  case 3:
103
102
  err = _state.sent();
104
- (_ssrContext1 = ssrContext) === null || _ssrContext1 === void 0 ? void 0 : _ssrContext1.metrics.emitCounter("app.render.streaming.shell.error", 1);
103
+ ssrContext === null || ssrContext === void 0 ? void 0 : ssrContext.tracker.trackError(SSRErrors.RENDER_SHELL, err);
105
104
  _getTemplates1 = getTemplates(context, RenderLevel.CLIENT_RENDER), shellAfter1 = _getTemplates1.shellAfter, shellBefore1 = _getTemplates1.shellBefore;
106
105
  fallbackHtml = "".concat(shellBefore1).concat(shellAfter1);
107
106
  return [
@@ -6,15 +6,15 @@ import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
6
6
  import { _ as _to_consumable_array } from "@swc/helpers/_/_to_consumable_array";
7
7
  import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
8
8
  import React from "react";
9
- import { serializeJson } from "@modern-js/utils/runtime-node";
9
+ import { serializeJson } from "@modern-js/runtime-utils/node";
10
10
  import ReactHelmet from "react-helmet";
11
- import { time } from "@modern-js/utils/universal/time";
11
+ import { time } from "@modern-js/runtime-utils/time";
12
12
  import { serializeErrors } from "../../../router/runtime/utils";
13
13
  import helmetReplace from "../helmet";
14
14
  import { RenderLevel } from "../types";
15
15
  import prefetch from "../../prefetch";
16
16
  import { ROUTER_DATA_JSON_ID, SSR_DATA_JSON_ID, attributesToString } from "../utils";
17
- import { SSRErrors, SSRTimings, createSSRTracker } from "../tracker";
17
+ import { SSRErrors, SSRTimings } from "../tracker";
18
18
  import { createLoadableCollector } from "./loadable";
19
19
  import { createRender } from "./render";
20
20
  import { createStyledCollector } from "./styledComponent";
@@ -60,7 +60,7 @@ var Entry = /* @__PURE__ */ function() {
60
60
  this.entryName = entryName;
61
61
  this.App = options.App;
62
62
  this.pluginConfig = config;
63
- this.tracker = createSSRTracker(ctx);
63
+ this.tracker = ctx.tracker;
64
64
  this.metrics = ctx.metrics;
65
65
  this.htmlModifiers = ctx.htmlModifiers;
66
66
  this.nonce = nonce;
@@ -1,7 +1,7 @@
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
- import { run } from "@modern-js/utils/runtime-node";
4
- import { time } from "@modern-js/utils/universal/time";
3
+ import { run } from "@modern-js/runtime-utils/node";
4
+ import { time } from "@modern-js/runtime-utils/time";
5
5
  import { PreRender } from "../../react/prerender";
6
6
  import { SSRTimings } from "../tracker";
7
7
  import SSREntry from "./entry";