@modern-js/runtime 2.20.0 → 2.21.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 (76) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/dist/cjs/document/cli/index.js +5 -2
  3. package/dist/cjs/router/runtime/DeferredDataScripts.node.js +4 -4
  4. package/dist/cjs/router/runtime/PrefetchLink.js +7 -7
  5. package/dist/cjs/router/runtime/index.js +55 -56
  6. package/dist/cjs/router/runtime/plugin.js +7 -7
  7. package/dist/cjs/router/runtime/plugin.node.js +7 -7
  8. package/dist/cjs/router/runtime/server.js +1 -1
  9. package/dist/cjs/router/runtime/utils.js +6 -5
  10. package/dist/cjs/router/runtime/withRouter.js +4 -4
  11. package/dist/cjs/ssr/cli/index.js +1 -1
  12. package/dist/cjs/ssr/serverRender/renderToStream/buildTemplate.after.js +6 -2
  13. package/dist/cjs/ssr/serverRender/renderToStream/bulidTemplate.before.js +2 -2
  14. package/dist/cjs/ssr/serverRender/renderToStream/renderToPipe.js +10 -12
  15. package/dist/cjs/ssr/serverRender/renderToStream/renderToPipe.worker.js +11 -11
  16. package/dist/cjs/ssr/serverRender/renderToString/entry.js +10 -4
  17. package/dist/cjs/ssr/serverRender/renderToString/loadable.js +7 -4
  18. package/dist/cjs/ssr/serverRender/utils.js +7 -1
  19. package/dist/esm/document/cli/index.js +6 -3
  20. package/dist/esm/router/runtime/DeferredDataScripts.node.js +1 -1
  21. package/dist/esm/router/runtime/PrefetchLink.js +1 -1
  22. package/dist/esm/router/runtime/index.js +6 -4
  23. package/dist/esm/router/runtime/plugin.js +1 -1
  24. package/dist/esm/router/runtime/plugin.node.js +3 -3
  25. package/dist/esm/router/runtime/server.js +1 -1
  26. package/dist/esm/router/runtime/utils.js +3 -2
  27. package/dist/esm/router/runtime/withRouter.js +1 -1
  28. package/dist/esm/ssr/cli/index.js +1 -1
  29. package/dist/esm/ssr/serverRender/renderToStream/buildTemplate.after.js +6 -2
  30. package/dist/esm/ssr/serverRender/renderToStream/bulidTemplate.before.js +1 -1
  31. package/dist/esm/ssr/serverRender/renderToStream/renderToPipe.js +10 -12
  32. package/dist/esm/ssr/serverRender/renderToStream/renderToPipe.worker.js +12 -12
  33. package/dist/esm/ssr/serverRender/renderToString/entry.js +11 -5
  34. package/dist/esm/ssr/serverRender/renderToString/loadable.js +8 -5
  35. package/dist/esm/ssr/serverRender/utils.js +7 -0
  36. package/dist/esm-node/document/cli/index.js +5 -2
  37. package/dist/esm-node/router/runtime/DeferredDataScripts.node.js +1 -1
  38. package/dist/esm-node/router/runtime/PrefetchLink.js +1 -1
  39. package/dist/esm-node/router/runtime/index.js +6 -4
  40. package/dist/esm-node/router/runtime/plugin.js +1 -1
  41. package/dist/esm-node/router/runtime/plugin.node.js +3 -3
  42. package/dist/esm-node/router/runtime/server.js +1 -1
  43. package/dist/esm-node/router/runtime/utils.js +3 -2
  44. package/dist/esm-node/router/runtime/withRouter.js +1 -1
  45. package/dist/esm-node/ssr/cli/index.js +1 -1
  46. package/dist/esm-node/ssr/serverRender/renderToStream/buildTemplate.after.js +6 -2
  47. package/dist/esm-node/ssr/serverRender/renderToStream/bulidTemplate.before.js +1 -1
  48. package/dist/esm-node/ssr/serverRender/renderToStream/renderToPipe.js +10 -12
  49. package/dist/esm-node/ssr/serverRender/renderToStream/renderToPipe.worker.js +11 -11
  50. package/dist/esm-node/ssr/serverRender/renderToString/entry.js +11 -5
  51. package/dist/esm-node/ssr/serverRender/renderToString/loadable.js +8 -5
  52. package/dist/esm-node/ssr/serverRender/utils.js +5 -0
  53. package/dist/types/cli/index.d.ts +0 -2
  54. package/dist/types/core/loader/loaderManager.d.ts +0 -1
  55. package/dist/types/core/loader/useLoader.d.ts +0 -5
  56. package/dist/types/core/plugin.d.ts +1 -6
  57. package/dist/types/document/cli/index.d.ts +0 -2
  58. package/dist/types/router/cli/index.d.ts +0 -2
  59. package/dist/types/router/runtime/DeferredDataScripts.d.ts +0 -1
  60. package/dist/types/router/runtime/DeferredDataScripts.node.d.ts +0 -1
  61. package/dist/types/router/runtime/PrefetchLink.d.ts +1 -3
  62. package/dist/types/router/runtime/hooks.d.ts +1 -1
  63. package/dist/types/router/runtime/index.d.ts +3 -4
  64. package/dist/types/router/runtime/server.d.ts +1 -1
  65. package/dist/types/router/runtime/types.d.ts +1 -3
  66. package/dist/types/router/runtime/utils.d.ts +1 -3
  67. package/dist/types/router/runtime/withRouter.d.ts +1 -1
  68. package/dist/types/runtimeContext.d.ts +1 -1
  69. package/dist/types/ssr/cli/index.d.ts +0 -2
  70. package/dist/types/ssr/serverRender/renderToStream/type.d.ts +2 -2
  71. package/dist/types/ssr/serverRender/renderToString/entry.d.ts +1 -0
  72. package/dist/types/ssr/serverRender/renderToString/type.d.ts +1 -0
  73. package/dist/types/ssr/serverRender/utils.d.ts +2 -1
  74. package/dist/types/state/cli/index.d.ts +0 -2
  75. package/dist/types/state/types.d.ts +0 -1
  76. package/package.json +27 -20
package/CHANGELOG.md CHANGED
@@ -1,5 +1,43 @@
1
1
  # @modern-js/runtime
2
2
 
3
+ ## 2.21.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 0a1aa3b: feat: the runtime package export `loadable_bundler_plugin`
8
+ feat: runtime 包导出 `loadable_bundler_plugin`
9
+
10
+ ### Patch Changes
11
+
12
+ - e81eeaf: refactor: guard react-router version consistency
13
+ refactor: 保证 react-router 相关包的版本一致性
14
+ - 26dcf3a: chore: bump typescript to v5 in devDependencies
15
+
16
+ chore: 升级 devDependencies 中的 typescript 版本到 v5
17
+
18
+ - 8b7c6d4: chore: update reduck
19
+ chore: 更新 reduck
20
+ - 807f04a: fix(plugin-runtime): streaming ssr split chunk so that can't match `SHELL_STREAM_END_MARK`
21
+ fix(plugin-runtime): streaming ssr chunk 进行分割导致无法匹配 `SHELL_STREAM_END_MARK`
22
+ - 0fc15ca: fix: fix `@modern-js/utils` subpath exports
23
+ fix: 修复 `@modern-js/utils` 子路径导出
24
+ - 43b4e83: feat: support security.nonce for add nonce attribute on script tag
25
+ feat: 支持 security.nonce 配置,为 script 标签添加 nonce 属性
26
+ - ad78387: chore(deps): bump babel-related dependencies to latest version
27
+
28
+ chore(deps): 升级 babel 相关依赖到最新版本
29
+
30
+ - Updated dependencies [e81eeaf]
31
+ - Updated dependencies [26dcf3a]
32
+ - Updated dependencies [1ef03dc]
33
+ - Updated dependencies [056627f]
34
+ - Updated dependencies [0fc15ca]
35
+ - Updated dependencies [43b4e83]
36
+ - Updated dependencies [ad78387]
37
+ - @modern-js/utils@2.21.0
38
+ - @modern-js/plugin@2.21.0
39
+ - @modern-js/types@2.21.0
40
+
3
41
  ## 2.20.0
4
42
 
5
43
  ### Patch Changes
@@ -62,8 +62,9 @@ const _default = () => {
62
62
  return null;
63
63
  }
64
64
  return async ({ htmlWebpackPlugin }) => {
65
+ const config = api.useResolvedConfigContext();
65
66
  const documentParams = getDocParams({
66
- config: api.useResolvedConfigContext(),
67
+ config,
67
68
  entryName,
68
69
  templateParameters
69
70
  });
@@ -137,7 +138,9 @@ const _default = () => {
137
138
  htmlWebpackPlugin.tags.headTags.filter((item) => item.tagName !== "script" && item.tagName !== "link").join("")
138
139
  ].join("");
139
140
  if (html.includes(_constants.DOCUMENT_SCRIPT_PLACEHOLDER_START) && html.includes(_constants.DOCUMENT_SCRIPT_PLACEHOLDER_END)) {
140
- html = html.replace(new RegExp(`${_constants.DOCUMENT_SCRIPT_PLACEHOLDER_START}(.*?)${_constants.DOCUMENT_SCRIPT_PLACEHOLDER_END}`, "g"), (_scriptStr, $1) => `<script>${decodeURIComponent($1)}</script>`);
141
+ const { nonce } = config.security;
142
+ const nonceAttr = nonce ? `nonce=${nonce}` : "";
143
+ html = html.replace(new RegExp(`${_constants.DOCUMENT_SCRIPT_PLACEHOLDER_START}(.*?)${_constants.DOCUMENT_SCRIPT_PLACEHOLDER_END}`, "g"), (_scriptStr, $1) => `<script ${nonceAttr}>${decodeURIComponent($1)}</script>`);
141
144
  }
142
145
  if (html.includes(_constants.DOCUMENT_COMMENT_PLACEHOLDER_START) && html.includes(_constants.DOCUMENT_COMMENT_PLACEHOLDER_END)) {
143
146
  html = html.replace(new RegExp(`${_constants.DOCUMENT_COMMENT_PLACEHOLDER_START}(.*?)${_constants.DOCUMENT_COMMENT_PLACEHOLDER_END}`, "g"), (_scriptStr, $1) => `${decodeURIComponent($1)}`);
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "default", {
8
8
  });
9
9
  const _jsxruntime = require("react/jsx-runtime");
10
10
  const _react = require("react");
11
- const _reactrouterdom = require("react-router-dom");
11
+ const _router = require("@modern-js/utils/runtime/router");
12
12
  const _runtimenode = require("@modern-js/utils/runtime-node");
13
13
  const _common = require("../../common");
14
14
  const _utils = require("./utils");
@@ -16,7 +16,7 @@ const setupFnStr = `function s(r,e){_ROUTER_DATA.r=_ROUTER_DATA.r||{},_ROUTER_DA
16
16
  const resolveFnStr = `function r(e,r,o,A){A?_ROUTER_DATA.r[e][r].reject(A):_ROUTER_DATA.r[e][r].resolve(o)};`;
17
17
  const preResolvedFnStr = `function p(e,r){return void 0!==r?Promise.reject(new Error(r.message)):Promise.resolve(e)};`;
18
18
  const DeferredDataScripts = () => {
19
- const context = (0, _react.useContext)(_reactrouterdom.UNSAFE_DataRouterContext);
19
+ const context = (0, _react.useContext)(_router.UNSAFE_DataRouterContext);
20
20
  const { staticContext } = context || {};
21
21
  const hydratedRef = (0, _react.useRef)(false);
22
22
  (0, _react.useEffect)(() => {
@@ -91,7 +91,7 @@ const DeferredDataScripts = () => {
91
91
  };
92
92
  const DeferredDataScript = ({ data, routeId, dataKey }) => {
93
93
  return /* @__PURE__ */ (0, _jsxruntime.jsx)(_react.Suspense, {
94
- children: typeof document === "undefined" && data && dataKey && routeId ? /* @__PURE__ */ (0, _jsxruntime.jsx)(_reactrouterdom.Await, {
94
+ children: typeof document === "undefined" && data && dataKey && routeId ? /* @__PURE__ */ (0, _jsxruntime.jsx)(_router.Await, {
95
95
  resolve: data,
96
96
  errorElement: /* @__PURE__ */ (0, _jsxruntime.jsx)(ErrorDeferredDataScript, {
97
97
  routeId,
@@ -108,7 +108,7 @@ const DeferredDataScript = ({ data, routeId, dataKey }) => {
108
108
  });
109
109
  };
110
110
  const ErrorDeferredDataScript = ({ routeId, dataKey }) => {
111
- const error = (0, _reactrouterdom.useAsyncError)();
111
+ const error = (0, _router.useAsyncError)();
112
112
  return /* @__PURE__ */ (0, _jsxruntime.jsx)("script", {
113
113
  suppressHydrationWarning: true,
114
114
  dangerouslySetInnerHTML: {
@@ -17,7 +17,7 @@ _export(exports, {
17
17
  const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
18
18
  const _jsxruntime = require("react/jsx-runtime");
19
19
  const _react = /* @__PURE__ */ _interop_require_wildcard._(require("react"));
20
- const _reactrouterdom = require("react-router-dom");
20
+ const _router = require("@modern-js/utils/runtime/router");
21
21
  const _core = require("../../core");
22
22
  function composeEventHandlers(theirHandler, ourHandler) {
23
23
  return (event) => {
@@ -119,7 +119,7 @@ const PrefetchPageLinks = ({ pathname }) => {
119
119
  const context = (0, _react.useContext)(_core.RuntimeReactContext);
120
120
  const { routeManifest, routes } = context;
121
121
  const { routeAssets } = routeManifest;
122
- const matches = Array.isArray(routes) ? (0, _reactrouterdom.matchRoutes)(routes, pathname) : [];
122
+ const matches = Array.isArray(routes) ? (0, _router.matchRoutes)(routes, pathname) : [];
123
123
  if (Array.isArray(matches)) {
124
124
  matches === null || matches === void 0 ? void 0 : matches.forEach((match) => loadRouteModule(match.route, routeAssets));
125
125
  }
@@ -133,8 +133,8 @@ const PrefetchPageLinks = ({ pathname }) => {
133
133
  });
134
134
  };
135
135
  const PrefetchDataLinks = ({ matches, pathname, routeManifest }) => {
136
- const currentMatches = (0, _reactrouterdom.useMatches)();
137
- const basename = (0, _reactrouterdom.useHref)("/");
136
+ const currentMatches = (0, _router.useMatches)();
137
+ const basename = (0, _router.useHref)("/");
138
138
  const dataHrefs = (0, _react.useMemo)(() => {
139
139
  return matches === null || matches === void 0 ? void 0 : matches.filter((match, index) => {
140
140
  if (!match.route.loader || typeof match.route.loader !== "function" || match.route.loader.length === 0) {
@@ -165,7 +165,7 @@ const createPrefetchLink = (Link2) => {
165
165
  return /* @__PURE__ */ _react.default.forwardRef(({ to, prefetch = "none", ...props }, forwardedRef) => {
166
166
  const isAbsolute = typeof to === "string" && ABSOLUTE_URL_REGEX.test(to);
167
167
  const [shouldPrefetch, prefetchHandlers] = usePrefetchBehavior(prefetch, props);
168
- const resolvedPath = (0, _reactrouterdom.useResolvedPath)(to);
168
+ const resolvedPath = (0, _router.useResolvedPath)(to);
169
169
  const { pathname } = resolvedPath;
170
170
  return /* @__PURE__ */ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {
171
171
  children: [
@@ -182,7 +182,7 @@ const createPrefetchLink = (Link2) => {
182
182
  });
183
183
  });
184
184
  };
185
- const Link = createPrefetchLink(_reactrouterdom.Link);
185
+ const Link = createPrefetchLink(_router.Link);
186
186
  Link.displayName = "Link";
187
- const NavLink = createPrefetchLink(_reactrouterdom.NavLink);
187
+ const NavLink = createPrefetchLink(_router.NavLink);
188
188
  NavLink.displayName = "NavLink";
@@ -16,75 +16,74 @@ _export(exports, {
16
16
  NavLink: () => _PrefetchLink.NavLink,
17
17
  useRouteLoaderData: () => useRouteLoaderData,
18
18
  // Routers
19
- createBrowserRouter: () => _reactrouterdom.createBrowserRouter,
20
- createHashRouter: () => _reactrouterdom.createHashRouter,
21
- createMemoryRouter: () => _reactrouterdom.createMemoryRouter,
22
- RouterProvider: () => _reactrouterdom.RouterProvider,
19
+ createBrowserRouter: () => _router.createBrowserRouter,
20
+ createHashRouter: () => _router.createHashRouter,
21
+ createMemoryRouter: () => _router.createMemoryRouter,
22
+ RouterProvider: () => _router.RouterProvider,
23
23
  // Router Components
24
- BrowserRouter: () => _reactrouterdom.BrowserRouter,
25
- HashRouter: () => _reactrouterdom.HashRouter,
26
- MemoryRouter: () => _reactrouterdom.MemoryRouter,
27
- Router: () => _reactrouterdom.Router,
24
+ BrowserRouter: () => _router.BrowserRouter,
25
+ HashRouter: () => _router.HashRouter,
26
+ MemoryRouter: () => _router.MemoryRouter,
27
+ Router: () => _router.Router,
28
28
  // Components
29
- Await: () => _reactrouterdom.Await,
30
- Form: () => _reactrouterdom.Form,
31
- Navigate: () => _reactrouterdom.Navigate,
32
- Outlet: () => _reactrouterdom.Outlet,
33
- Route: () => _reactrouterdom.Route,
34
- Routes: () => _reactrouterdom.Routes,
35
- ScrollRestoration: () => _reactrouterdom.ScrollRestoration,
29
+ Await: () => _router.Await,
30
+ Form: () => _router.Form,
31
+ Navigate: () => _router.Navigate,
32
+ Outlet: () => _router.Outlet,
33
+ Route: () => _router.Route,
34
+ Routes: () => _router.Routes,
35
+ ScrollRestoration: () => _router.ScrollRestoration,
36
36
  // Hooks
37
- useActionData: () => _reactrouterdom.useActionData,
38
- useAsyncError: () => _reactrouterdom.useAsyncError,
39
- useAsyncValue: () => _reactrouterdom.useAsyncValue,
40
- useBeforeUnload: () => _reactrouterdom.useBeforeUnload,
41
- useFetcher: () => _reactrouterdom.useFetcher,
42
- useFetchers: () => _reactrouterdom.useFetchers,
43
- useFormAction: () => _reactrouterdom.useFormAction,
44
- useHref: () => _reactrouterdom.useHref,
45
- useInRouterContext: () => _reactrouterdom.useInRouterContext,
46
- useLinkClickHandler: () => _reactrouterdom.useLinkClickHandler,
47
- useLoaderData: () => _reactrouterdom.useLoaderData,
48
- useLocation: () => _reactrouterdom.useLocation,
49
- useMatch: () => _reactrouterdom.useMatch,
50
- useMatches: () => _reactrouterdom.useMatches,
51
- useNavigate: () => _reactrouterdom.useNavigate,
52
- useNavigation: () => _reactrouterdom.useNavigation,
53
- useNavigationType: () => _reactrouterdom.useNavigationType,
54
- useOutlet: () => _reactrouterdom.useOutlet,
55
- useOutletContext: () => _reactrouterdom.useOutletContext,
56
- useParams: () => _reactrouterdom.useParams,
57
- useResolvedPath: () => _reactrouterdom.useResolvedPath,
58
- useRevalidator: () => _reactrouterdom.useRevalidator,
59
- useRouteError: () => _reactrouterdom.useRouteError,
60
- useRoutes: () => _reactrouterdom.useRoutes,
61
- useSearchParams: () => _reactrouterdom.useSearchParams,
62
- useSubmit: () => _reactrouterdom.useSubmit,
37
+ useActionData: () => _router.useActionData,
38
+ useAsyncError: () => _router.useAsyncError,
39
+ useAsyncValue: () => _router.useAsyncValue,
40
+ useBeforeUnload: () => _router.useBeforeUnload,
41
+ useFetcher: () => _router.useFetcher,
42
+ useFetchers: () => _router.useFetchers,
43
+ useFormAction: () => _router.useFormAction,
44
+ useHref: () => _router.useHref,
45
+ useInRouterContext: () => _router.useInRouterContext,
46
+ useLinkClickHandler: () => _router.useLinkClickHandler,
47
+ useLoaderData: () => _router.useLoaderData,
48
+ useLocation: () => _router.useLocation,
49
+ useMatch: () => _router.useMatch,
50
+ useMatches: () => _router.useMatches,
51
+ useNavigate: () => _router.useNavigate,
52
+ useNavigation: () => _router.useNavigation,
53
+ useNavigationType: () => _router.useNavigationType,
54
+ useOutlet: () => _router.useOutlet,
55
+ useOutletContext: () => _router.useOutletContext,
56
+ useParams: () => _router.useParams,
57
+ useResolvedPath: () => _router.useResolvedPath,
58
+ useRevalidator: () => _router.useRevalidator,
59
+ useRouteError: () => _router.useRouteError,
60
+ useRoutes: () => _router.useRoutes,
61
+ useSearchParams: () => _router.useSearchParams,
62
+ useSubmit: () => _router.useSubmit,
63
63
  // Utilities
64
- createRoutesFromChildren: () => _reactrouterdom.createRoutesFromChildren,
65
- createRoutesFromElements: () => _reactrouterdom.createRoutesFromElements,
66
- createSearchParams: () => _reactrouterdom.createSearchParams,
67
- generatePath: () => _reactrouterdom.generatePath,
68
- isRouteErrorResponse: () => _reactrouterdom.isRouteErrorResponse,
69
- matchPath: () => _reactrouterdom.matchPath,
70
- matchRoutes: () => _reactrouterdom.matchRoutes,
71
- renderMatches: () => _reactrouterdom.renderMatches,
72
- resolvePath: () => _reactrouterdom.resolvePath,
73
- createPath: () => _reactrouterdom.createPath,
74
- unstable_useBlocker: () => _reactrouterdom.unstable_useBlocker,
75
- unstable_usePrompt: () => _reactrouterdom.unstable_usePrompt,
64
+ createRoutesFromChildren: () => _router.createRoutesFromChildren,
65
+ createRoutesFromElements: () => _router.createRoutesFromElements,
66
+ createSearchParams: () => _router.createSearchParams,
67
+ generatePath: () => _router.generatePath,
68
+ isRouteErrorResponse: () => _router.isRouteErrorResponse,
69
+ matchPath: () => _router.matchPath,
70
+ matchRoutes: () => _router.matchRoutes,
71
+ renderMatches: () => _router.renderMatches,
72
+ resolvePath: () => _router.resolvePath,
73
+ createPath: () => _router.createPath,
74
+ unstable_useBlocker: () => _router.unstable_useBlocker,
75
+ unstable_usePrompt: () => _router.unstable_usePrompt,
76
76
  defer: () => _router.defer,
77
77
  json: () => _router.json,
78
78
  redirect: () => _router.redirect
79
79
  });
80
80
  const _export_star = require("@swc/helpers/_/_export_star");
81
- const _reactrouterdom = require("react-router-dom");
81
+ const _router = require("@modern-js/utils/runtime/router");
82
82
  const _plugin = require("./plugin");
83
83
  _export_star._(require("./withRouter"), exports);
84
84
  const _PrefetchLink = require("./PrefetchLink");
85
- const _router = require("@modern-js/utils/runtime/router");
86
85
  const _default = _plugin.routerPlugin;
87
86
  const useRouteLoaderData = (routeId) => {
88
87
  const realRouteId = routeId.replace(/\[(.*?)\]/g, "($1)");
89
- return (0, _reactrouterdom.useRouteLoaderData)(realRouteId);
88
+ return (0, _router.useRouteLoaderData)(realRouteId);
90
89
  };
@@ -18,7 +18,7 @@ _export(exports, {
18
18
  const _interop_require_default = require("@swc/helpers/_/_interop_require_default");
19
19
  const _jsxruntime = require("react/jsx-runtime");
20
20
  const _react = /* @__PURE__ */ _interop_require_default._(require("react"));
21
- const _reactrouterdom = require("react-router-dom");
21
+ const _router = require("@modern-js/utils/runtime/router");
22
22
  const _hoistnonreactstatics = /* @__PURE__ */ _interop_require_default._(require("hoist-non-react-statics"));
23
23
  const _runtimebrowser = require("@modern-js/utils/runtime-browser");
24
24
  const _hooks = require("./hooks");
@@ -50,8 +50,8 @@ const routerPlugin = ({ serverBase = [], supportHtml5History = true, basename =
50
50
  return {
51
51
  init({ context }, next) {
52
52
  context.router = {
53
- useMatches: _reactrouterdom.useMatches,
54
- useLocation: _reactrouterdom.useLocation
53
+ useMatches: _router.useMatches,
54
+ useLocation: _router.useLocation
55
55
  };
56
56
  Object.defineProperty(context, "routes", {
57
57
  get() {
@@ -72,7 +72,7 @@ const routerPlugin = ({ serverBase = [], supportHtml5History = true, basename =
72
72
  return (props) => {
73
73
  var _window__SERVER_DATA;
74
74
  beforeCreateRouter = false;
75
- routes = createRoutes ? createRoutes() : (0, _reactrouterdom.createRoutesFromElements)((0, _utils.renderRoutes)({
75
+ routes = createRoutes ? createRoutes() : (0, _router.createRoutesFromElements)((0, _utils.renderRoutes)({
76
76
  routesConfig: finalRouteConfig,
77
77
  props
78
78
  }));
@@ -87,16 +87,16 @@ const routerPlugin = ({ serverBase = [], supportHtml5History = true, basename =
87
87
  errors: (0, _utils.deserializeErrors)(hydrationData.errors)
88
88
  };
89
89
  }
90
- const router = supportHtml5History ? (0, _reactrouterdom.createBrowserRouter)(routes, {
90
+ const router = supportHtml5History ? (0, _router.createBrowserRouter)(routes, {
91
91
  basename: _basename,
92
92
  hydrationData
93
- }) : (0, _reactrouterdom.createHashRouter)(routes, {
93
+ }) : (0, _router.createHashRouter)(routes, {
94
94
  basename: _basename,
95
95
  hydrationData
96
96
  });
97
97
  return /* @__PURE__ */ (0, _jsxruntime.jsx)(App, {
98
98
  ...props,
99
- children: /* @__PURE__ */ (0, _jsxruntime.jsx)(_reactrouterdom.RouterProvider, {
99
+ children: /* @__PURE__ */ (0, _jsxruntime.jsx)(_router.RouterProvider, {
100
100
  router
101
101
  })
102
102
  });
@@ -18,10 +18,10 @@ const _interop_require_default = require("@swc/helpers/_/_interop_require_defaul
18
18
  const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
19
19
  const _jsxruntime = require("react/jsx-runtime");
20
20
  const _react = /* @__PURE__ */ _interop_require_wildcard._(require("react"));
21
- const _router = require("@modern-js/utils/runtime/router");
22
- const _server = require("react-router-dom/server");
21
+ const _remixrouter = require("@modern-js/utils/runtime/remix-router");
22
+ const _router = require("@modern-js/utils/runtime-node/router");
23
23
  const _hoistnonreactstatics = /* @__PURE__ */ _interop_require_default._(require("hoist-non-react-statics"));
24
- const _reactrouterdom = require("react-router-dom");
24
+ const _router1 = require("@modern-js/utils/runtime/router");
25
25
  const _core = require("../../core");
26
26
  const _utils = require("./utils");
27
27
  const _fetch = require("./fetch");
@@ -70,11 +70,11 @@ const routerPlugin = ({ basename = "", routesConfig, createRoutes }) => {
70
70
  const { request, mode: ssrMode } = context.ssrContext;
71
71
  const baseUrl = request.baseUrl;
72
72
  const _basename = baseUrl === "/" ? (0, _utils.urlJoin)(baseUrl, basename) : baseUrl;
73
- const routes = createRoutes ? createRoutes() : (0, _reactrouterdom.createRoutesFromElements)((0, _utils.renderRoutes)({
73
+ const routes = createRoutes ? createRoutes() : (0, _router1.createRoutesFromElements)((0, _utils.renderRoutes)({
74
74
  routesConfig,
75
75
  ssrMode
76
76
  }));
77
- const { query } = (0, _router.createStaticHandler)(routes, {
77
+ const { query } = (0, _remixrouter.createStaticHandler)(routes, {
78
78
  basename: _basename
79
79
  });
80
80
  const remixRequest = createFetchRequest(request);
@@ -82,7 +82,7 @@ const routerPlugin = ({ basename = "", routesConfig, createRoutes }) => {
82
82
  if (routerContext instanceof Response) {
83
83
  return routerContext;
84
84
  }
85
- const router = (0, _server.createStaticRouter)(routes, routerContext);
85
+ const router = (0, _router.createStaticRouter)(routes, routerContext);
86
86
  context.router = router;
87
87
  context.routerContext = routerContext;
88
88
  context.routes = routes;
@@ -104,7 +104,7 @@ const routerPlugin = ({ basename = "", routesConfig, createRoutes }) => {
104
104
  const { router, routerContext } = (0, _react.useContext)(_core.RuntimeReactContext);
105
105
  return /* @__PURE__ */ (0, _jsxruntime.jsx)(App, {
106
106
  ...props,
107
- children: /* @__PURE__ */ (0, _jsxruntime.jsx)(_server.StaticRouterProvider, {
107
+ children: /* @__PURE__ */ (0, _jsxruntime.jsx)(_router.StaticRouterProvider, {
108
108
  router,
109
109
  context: routerContext,
110
110
  hydrate: false
@@ -3,4 +3,4 @@ Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
5
  const _export_star = require("@swc/helpers/_/_export_star");
6
- _export_star._(require("react-router-dom/server"), exports);
6
+ _export_star._(require("@modern-js/utils/runtime-node/router"), exports);
@@ -21,8 +21,9 @@ _export(exports, {
21
21
  const _interop_require_default = require("@swc/helpers/_/_interop_require_default");
22
22
  const _jsxruntime = require("react/jsx-runtime");
23
23
  const _react = /* @__PURE__ */ _interop_require_default._(require("react"));
24
- const _reactrouterdom = require("react-router-dom");
25
24
  const _router = require("@modern-js/utils/runtime/router");
25
+ const _remixrouter = require("@modern-js/utils/runtime/remix-router");
26
+ const _nestedroutes = require("@modern-js/utils/runtime/nested-routes");
26
27
  const _DefaultNotFound = require("./DefaultNotFound");
27
28
  const _DeferredDataScripts = /* @__PURE__ */ _interop_require_default._(require("./DeferredDataScripts"));
28
29
  function getRouteComponents(routes, { globalApp, ssrMode, props }) {
@@ -41,13 +42,13 @@ function getRouteComponents(routes, { globalApp, ssrMode, props }) {
41
42
  const routeElements = [];
42
43
  for (const route of routes) {
43
44
  if (route.type === "nested") {
44
- const routeElement = (0, _router.renderNestedRoute)(route, {
45
+ const routeElement = (0, _nestedroutes.renderNestedRoute)(route, {
45
46
  DeferredDataComponent: ssrMode === "stream" ? _DeferredDataScripts.default : void 0,
46
47
  props
47
48
  });
48
49
  routeElements.push(routeElement);
49
50
  } else {
50
- const routeElement = /* @__PURE__ */ (0, _jsxruntime.jsx)(_reactrouterdom.Route, {
51
+ const routeElement = /* @__PURE__ */ (0, _jsxruntime.jsx)(_router.Route, {
51
52
  path: route.path,
52
53
  element: /* @__PURE__ */ (0, _jsxruntime.jsx)(Layout, {
53
54
  Component: route.component
@@ -56,7 +57,7 @@ function getRouteComponents(routes, { globalApp, ssrMode, props }) {
56
57
  routeElements.push(routeElement);
57
58
  }
58
59
  }
59
- routeElements.push(/* @__PURE__ */ (0, _jsxruntime.jsx)(_reactrouterdom.Route, {
60
+ routeElements.push(/* @__PURE__ */ (0, _jsxruntime.jsx)(_router.Route, {
60
61
  path: "*",
61
62
  element: /* @__PURE__ */ (0, _jsxruntime.jsx)(_DefaultNotFound.DefaultNotFound, {})
62
63
  }, "*"));
@@ -140,7 +141,7 @@ function deserializeErrors(errors) {
140
141
  const serialized = {};
141
142
  for (const [key, val] of entries) {
142
143
  if (val && val.__type === "RouteErrorResponse") {
143
- serialized[key] = new _router.ErrorResponse(val.status, val.statusText, val.data, val.internal === true);
144
+ serialized[key] = new _remixrouter.ErrorResponse(val.status, val.statusText, val.data, val.internal === true);
144
145
  } else if (val && val.__type === "Error") {
145
146
  const error = new Error(val.message);
146
147
  error.stack = val.stack;
@@ -9,12 +9,12 @@ Object.defineProperty(exports, "withRouter", {
9
9
  const _interop_require_default = require("@swc/helpers/_/_interop_require_default");
10
10
  const _jsxruntime = require("react/jsx-runtime");
11
11
  const _react = /* @__PURE__ */ _interop_require_default._(require("react"));
12
- const _reactrouterdom = require("react-router-dom");
12
+ const _router = require("@modern-js/utils/runtime/router");
13
13
  const withRouter = (Component) => {
14
14
  return (props) => {
15
- const location = (0, _reactrouterdom.useLocation)();
16
- const params = (0, _reactrouterdom.useParams)();
17
- const navigate = (0, _reactrouterdom.useNavigate)();
15
+ const location = (0, _router.useLocation)();
16
+ const params = (0, _router.useParams)();
17
+ const navigate = (0, _router.useNavigate)();
18
18
  return /* @__PURE__ */ (0, _jsxruntime.jsx)(Component, {
19
19
  ...props,
20
20
  location,
@@ -67,7 +67,7 @@ const _default = () => {
67
67
  source: {
68
68
  alias: {
69
69
  // ensure that all packages use the same storage in @modern-js/utils/runtime-node
70
- "@modern-js/utils/runtime-node": require.resolve("@modern-js/utils/runtime-node"),
70
+ "@modern-js/utils/runtime-node$": require.resolve("@modern-js/utils/runtime-node"),
71
71
  "@modern-js/runtime/plugins": pluginsExportsUtils.getPath()
72
72
  },
73
73
  globalVars: (values, { target }) => {
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "buildShellAfterTemplate", {
7
7
  get: () => buildShellAfterTemplate
8
8
  });
9
9
  const _runtimenode = require("@modern-js/utils/runtime-node");
10
+ const _utils = require("../utils");
10
11
  const _buildTemplateshare = require("./buildTemplate.share");
11
12
  function buildShellAfterTemplate(afterAppTemplate, options) {
12
13
  const callbacks = [
@@ -18,7 +19,7 @@ function buildShellAfterTemplate(afterAppTemplate, options) {
18
19
  return template.replace("<!--<?- SSRDataScript ?>-->", ssrDataScript);
19
20
  function buildSSRDataScript() {
20
21
  const { context: { ssrContext, initialData, __i18nData__ }, renderLevel } = options;
21
- const { request, enableUnsafeCtx } = ssrContext;
22
+ const { request, enableUnsafeCtx, nonce } = ssrContext;
22
23
  const unsafeContext = {
23
24
  headers: request.headers
24
25
  };
@@ -39,8 +40,11 @@ function buildShellAfterTemplate(afterAppTemplate, options) {
39
40
  },
40
41
  renderLevel
41
42
  };
43
+ const attrsStr = (0, _utils.attributesToString)({
44
+ nonce
45
+ });
42
46
  return `
43
- <script>window._SSR_DATA = ${(0, _runtimenode.serializeJson)(SSRData)}</script>
47
+ <script${attrsStr}>window._SSR_DATA = ${(0, _runtimenode.serializeJson)(SSRData)}</script>
44
48
  `;
45
49
  }
46
50
  }
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "buildShellBeforeTemplate", {
8
8
  });
9
9
  const _interop_require_default = require("@swc/helpers/_/_interop_require_default");
10
10
  const _reacthelmet = /* @__PURE__ */ _interop_require_default._(require("react-helmet"));
11
- const _reactrouterdom = require("react-router-dom");
11
+ const _router = require("@modern-js/utils/runtime/router");
12
12
  const _helmet = /* @__PURE__ */ _interop_require_default._(require("../helmet"));
13
13
  const _utils = require("../utils");
14
14
  const _buildTemplateshare = require("./buildTemplate.share");
@@ -35,7 +35,7 @@ function getHeadTemplate(beforeEntryTemplate, context) {
35
35
  }
36
36
  const { routeAssets } = routeManifest;
37
37
  const cssChunks = [];
38
- const matches = (0, _reactrouterdom.matchRoutes)(routes, routerContext.location, routerContext.basename);
38
+ const matches = (0, _router.matchRoutes)(routes, routerContext.location, routerContext.basename);
39
39
  matches === null || matches === void 0 ? void 0 : matches.forEach((match, index) => {
40
40
  if (!index) {
41
41
  return;
@@ -12,13 +12,13 @@ const _common = require("../../../common");
12
12
  const _template = require("./template");
13
13
  var ShellChunkStatus;
14
14
  (function(ShellChunkStatus2) {
15
- ShellChunkStatus2[ShellChunkStatus2["IDLE"] = 0] = "IDLE";
16
- ShellChunkStatus2[ShellChunkStatus2["START"] = 1] = "START";
17
- ShellChunkStatus2[ShellChunkStatus2["FINIESH"] = 2] = "FINIESH";
15
+ ShellChunkStatus2[ShellChunkStatus2["START"] = 0] = "START";
16
+ ShellChunkStatus2[ShellChunkStatus2["FINIESH"] = 1] = "FINIESH";
18
17
  })(ShellChunkStatus || (ShellChunkStatus = {}));
19
18
  function renderToPipe(rootElement, context, options) {
20
- let shellChunkStatus = ShellChunkStatus.IDLE;
19
+ let shellChunkStatus = ShellChunkStatus.START;
21
20
  const { ssrContext } = context;
21
+ const chunkVec = [];
22
22
  const forUserPipe = (stream) => {
23
23
  return new Promise((resolve) => {
24
24
  let renderToPipeableStream;
@@ -28,6 +28,7 @@ function renderToPipe(rootElement, context, options) {
28
28
  }
29
29
  const { pipe } = renderToPipeableStream(rootElement, {
30
30
  ...options,
31
+ nonce: ssrContext === null || ssrContext === void 0 ? void 0 : ssrContext.nonce,
31
32
  onShellReady() {
32
33
  var _options_onShellReady;
33
34
  const { shellAfter, shellBefore } = (0, _template.getTemplates)(context, _types.RenderLevel.SERVER_RENDER);
@@ -36,16 +37,13 @@ function renderToPipe(rootElement, context, options) {
36
37
  transform(chunk, _encoding, callback) {
37
38
  try {
38
39
  if (shellChunkStatus !== ShellChunkStatus.FINIESH) {
39
- let concatedChunk = chunk.toString();
40
- if (shellChunkStatus === ShellChunkStatus.IDLE) {
41
- concatedChunk = `${shellBefore}${concatedChunk}`;
42
- shellChunkStatus = ShellChunkStatus.START;
43
- }
44
- if (shellChunkStatus === ShellChunkStatus.START && concatedChunk.endsWith(_common.ESCAPED_SHELL_STREAM_END_MARK)) {
45
- concatedChunk = concatedChunk.replace(_common.ESCAPED_SHELL_STREAM_END_MARK, shellAfter);
40
+ chunkVec.push(chunk.toString());
41
+ let concatedChunk = chunkVec.join("");
42
+ if (concatedChunk.endsWith(_common.ESCAPED_SHELL_STREAM_END_MARK)) {
43
+ concatedChunk = concatedChunk.replace(_common.ESCAPED_SHELL_STREAM_END_MARK, "");
46
44
  shellChunkStatus = ShellChunkStatus.FINIESH;
45
+ this.push(`${shellBefore}${concatedChunk}${shellAfter}`);
47
46
  }
48
- this.push(concatedChunk);
49
47
  } else {
50
48
  this.push(chunk);
51
49
  }
@@ -11,12 +11,12 @@ const _common = require("../../../common");
11
11
  const _template = require("./template");
12
12
  var ShellChunkStatus;
13
13
  (function(ShellChunkStatus2) {
14
- ShellChunkStatus2[ShellChunkStatus2["IDLE"] = 0] = "IDLE";
15
- ShellChunkStatus2[ShellChunkStatus2["START"] = 1] = "START";
16
- ShellChunkStatus2[ShellChunkStatus2["FINIESH"] = 2] = "FINIESH";
14
+ ShellChunkStatus2[ShellChunkStatus2["START"] = 0] = "START";
15
+ ShellChunkStatus2[ShellChunkStatus2["FINIESH"] = 1] = "FINIESH";
17
16
  })(ShellChunkStatus || (ShellChunkStatus = {}));
18
17
  function renderToPipe(rootElement, context, options) {
19
- let shellChunkStatus = ShellChunkStatus.IDLE;
18
+ let shellChunkStatus = ShellChunkStatus.START;
19
+ const chunkVec = [];
20
20
  const { ssrContext } = context;
21
21
  const forUserPipe = async () => {
22
22
  let renderToReadableStream;
@@ -28,6 +28,7 @@ function renderToPipe(rootElement, context, options) {
28
28
  try {
29
29
  const readableOriginal = await renderToReadableStream(rootElement, {
30
30
  ...options,
31
+ nonce: ssrContext === null || ssrContext === void 0 ? void 0 : ssrContext.nonce,
31
32
  onError(error) {
32
33
  var _options_onError;
33
34
  ssrContext.logger.error("An error occurs during streaming SSR", error);
@@ -45,14 +46,13 @@ function renderToPipe(rootElement, context, options) {
45
46
  return;
46
47
  }
47
48
  if (shellChunkStatus !== ShellChunkStatus.FINIESH) {
48
- let concatedChunk = new TextDecoder().decode(value);
49
- if (shellChunkStatus === ShellChunkStatus.IDLE) {
50
- concatedChunk = `${shellBefore}${concatedChunk}`;
51
- shellChunkStatus = ShellChunkStatus.START;
52
- }
53
- if (shellChunkStatus === ShellChunkStatus.START && concatedChunk.endsWith(_common.ESCAPED_SHELL_STREAM_END_MARK)) {
54
- concatedChunk = concatedChunk.replace(_common.ESCAPED_SHELL_STREAM_END_MARK, shellAfter);
49
+ const chunk = new TextDecoder().decode(value);
50
+ chunkVec.push(chunk);
51
+ let concatedChunk = chunkVec.join("");
52
+ if (concatedChunk.endsWith(_common.ESCAPED_SHELL_STREAM_END_MARK)) {
53
+ concatedChunk = concatedChunk.replace(_common.ESCAPED_SHELL_STREAM_END_MARK, "");
55
54
  shellChunkStatus = ShellChunkStatus.FINIESH;
55
+ controller.enqueue(encodeForWebStream(`${shellBefore}${concatedChunk}${shellAfter}`));
56
56
  }
57
57
  controller.enqueue(encodeForWebStream(concatedChunk));
58
58
  } else {