@modern-js/runtime 2.0.0-beta.4 → 2.0.0-beta.6

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 (115) hide show
  1. package/CHANGELOG.md +133 -0
  2. package/dist/js/modern/document/Body.js +2 -2
  3. package/dist/js/modern/document/DocumentStructrueContext.js +2 -1
  4. package/dist/js/modern/document/Head.js +3 -1
  5. package/dist/js/modern/document/Html.js +2 -0
  6. package/dist/js/modern/document/Links.js +10 -0
  7. package/dist/js/modern/document/Root.js +1 -1
  8. package/dist/js/modern/document/cli/index.js +8 -2
  9. package/dist/js/modern/document/constants.js +4 -0
  10. package/dist/js/modern/document/index.js +1 -0
  11. package/dist/js/modern/router/cli/index.js +7 -9
  12. package/dist/js/modern/router/runtime/index.js +1 -0
  13. package/dist/js/modern/router/runtime/plugin.node.js +3 -3
  14. package/dist/js/modern/router/runtime/utils.js +8 -4
  15. package/dist/js/modern/ssr/cli/index.js +2 -2
  16. package/dist/js/node/cli/index.js +13 -11
  17. package/dist/js/node/common.js +7 -3
  18. package/dist/js/node/core/app-config.js +8 -3
  19. package/dist/js/node/core/compatible.js +41 -37
  20. package/dist/js/node/core/index.js +17 -6
  21. package/dist/js/node/core/loader/index.js +7 -3
  22. package/dist/js/node/core/loader/loaderManager.js +19 -14
  23. package/dist/js/node/core/loader/useLoader.js +22 -22
  24. package/dist/js/node/core/plugin.js +17 -10
  25. package/dist/js/node/document/Body.js +8 -4
  26. package/dist/js/node/document/DocumentContext.js +7 -3
  27. package/dist/js/node/document/DocumentStructrueContext.js +9 -4
  28. package/dist/js/node/document/Head.js +11 -4
  29. package/dist/js/node/document/Html.js +9 -3
  30. package/dist/js/node/document/Links.js +33 -0
  31. package/dist/js/node/document/Root.js +9 -4
  32. package/dist/js/node/document/Script.js +7 -3
  33. package/dist/js/node/document/Scripts.js +7 -3
  34. package/dist/js/node/document/cli/index.js +35 -30
  35. package/dist/js/node/document/constants.js +25 -3
  36. package/dist/js/node/document/index.js +12 -11
  37. package/dist/js/node/exports/head.js +6 -4
  38. package/dist/js/node/exports/loadable.js +6 -4
  39. package/dist/js/node/exports/server.js +7 -3
  40. package/dist/js/node/exports/styled.js +6 -4
  41. package/dist/js/node/index.js +15 -3
  42. package/dist/js/node/router/cli/index.js +29 -31
  43. package/dist/js/node/router/index.js +8 -4
  44. package/dist/js/node/router/runtime/DefaultNotFound.js +7 -3
  45. package/dist/js/node/router/runtime/index.js +10 -5
  46. package/dist/js/node/router/runtime/plugin.js +27 -22
  47. package/dist/js/node/router/runtime/plugin.node.js +40 -37
  48. package/dist/js/node/router/runtime/root/index.js +7 -3
  49. package/dist/js/node/router/runtime/root/load.js +14 -8
  50. package/dist/js/node/router/runtime/server.js +3 -3
  51. package/dist/js/node/router/runtime/types.js +15 -0
  52. package/dist/js/node/router/runtime/utils.js +48 -38
  53. package/dist/js/node/router/runtime/withRouter.js +24 -22
  54. package/dist/js/node/runtime-context.js +8 -3
  55. package/dist/js/node/ssr/cli/babel-plugin-ssr-loader-id.js +109 -128
  56. package/dist/js/node/ssr/cli/index.js +21 -21
  57. package/dist/js/node/ssr/index.js +34 -32
  58. package/dist/js/node/ssr/index.node.js +30 -28
  59. package/dist/js/node/ssr/prefetch.js +11 -9
  60. package/dist/js/node/ssr/react/index.js +8 -3
  61. package/dist/js/node/ssr/react/nossr/index.js +7 -3
  62. package/dist/js/node/ssr/react/prerender/index.js +24 -22
  63. package/dist/js/node/ssr/react/prerender/type.js +15 -0
  64. package/dist/js/node/ssr/react/prerender/util.js +11 -3
  65. package/dist/js/node/ssr/react/withCallback/index.js +7 -3
  66. package/dist/js/node/ssr/serverRender/helmet.js +5 -3
  67. package/dist/js/node/ssr/serverRender/index.js +8 -6
  68. package/dist/js/node/ssr/serverRender/renderToStream/buildTemplate.after.js +7 -3
  69. package/dist/js/node/ssr/serverRender/renderToStream/buildTemplate.share.js +8 -3
  70. package/dist/js/node/ssr/serverRender/renderToStream/bulidTemplate.before.js +7 -3
  71. package/dist/js/node/ssr/serverRender/renderToStream/index.js +14 -10
  72. package/dist/js/node/ssr/serverRender/renderToStream/loadable.js +7 -3
  73. package/dist/js/node/ssr/serverRender/renderToStream/renderToPipe.js +22 -22
  74. package/dist/js/node/ssr/serverRender/renderToStream/styledComponent.js +7 -3
  75. package/dist/js/node/ssr/serverRender/renderToStream/template.js +7 -3
  76. package/dist/js/node/ssr/serverRender/renderToStream/type.js +15 -0
  77. package/dist/js/node/ssr/serverRender/renderToString/entry.js +19 -17
  78. package/dist/js/node/ssr/serverRender/renderToString/index.js +13 -9
  79. package/dist/js/node/ssr/serverRender/renderToString/loadable.js +7 -3
  80. package/dist/js/node/ssr/serverRender/renderToString/reduce.js +7 -3
  81. package/dist/js/node/ssr/serverRender/renderToString/styledComponent.js +7 -3
  82. package/dist/js/node/ssr/serverRender/renderToString/template.js +8 -3
  83. package/dist/js/node/ssr/serverRender/renderToString/type.js +7 -3
  84. package/dist/js/node/ssr/serverRender/types.js +7 -3
  85. package/dist/js/node/ssr/serverRender/utils.js +8 -3
  86. package/dist/js/node/ssr/utils.js +25 -19
  87. package/dist/js/node/state/cli/index.js +5 -3
  88. package/dist/js/node/state/index.js +8 -4
  89. package/dist/js/node/state/plugins.js +10 -3
  90. package/dist/js/node/state/runtime/index.js +10 -5
  91. package/dist/js/node/state/runtime/plugin.js +23 -23
  92. package/dist/js/node/state/types.js +15 -0
  93. package/dist/js/treeshaking/document/Body.js +2 -2
  94. package/dist/js/treeshaking/document/DocumentStructrueContext.js +2 -1
  95. package/dist/js/treeshaking/document/Head.js +3 -1
  96. package/dist/js/treeshaking/document/Html.js +2 -0
  97. package/dist/js/treeshaking/document/Links.js +8 -0
  98. package/dist/js/treeshaking/document/Root.js +1 -1
  99. package/dist/js/treeshaking/document/cli/index.js +9 -4
  100. package/dist/js/treeshaking/document/constants.js +2 -1
  101. package/dist/js/treeshaking/document/index.js +1 -0
  102. package/dist/js/treeshaking/router/cli/index.js +7 -9
  103. package/dist/js/treeshaking/router/runtime/index.js +1 -0
  104. package/dist/js/treeshaking/router/runtime/plugin.node.js +2 -2
  105. package/dist/js/treeshaking/router/runtime/utils.js +8 -4
  106. package/dist/js/treeshaking/ssr/cli/index.js +2 -2
  107. package/dist/types/document/DocumentStructrueContext.d.ts +1 -0
  108. package/dist/types/document/Links.d.ts +2 -0
  109. package/dist/types/document/constants.d.ts +1 -0
  110. package/dist/types/document/index.d.ts +1 -0
  111. package/dist/types/router/runtime/index.d.ts +1 -0
  112. package/dist/types/router/runtime/types.d.ts +1 -1
  113. package/package.json +18 -15
  114. package/types/index.d.ts +2 -2
  115. package/types/router.d.ts +2 -2
@@ -4,6 +4,7 @@ export * from "./DocumentStructrueContext";
4
4
  export * from "./Head";
5
5
  export * from "./Body";
6
6
  export * from "./Root";
7
+ export * from "./Links";
7
8
  export * from "./Scripts";
8
9
  export * from "./Script";
9
10
  export * from "./constants";
@@ -53,6 +53,10 @@ function _objectSpreadProps(target, source) {
53
53
  import { getEntryOptions, createRuntimeExportsUtils, PLUGIN_SCHEMAS } from "@modern-js/utils";
54
54
  var PLUGIN_IDENTIFIER = "router";
55
55
  var ROUTES_IDENTIFIER = "routes";
56
+ var isV5 = function(config) {
57
+ var ref, ref1;
58
+ return (config === null || config === void 0 ? void 0 : (ref = config.runtime) === null || ref === void 0 ? void 0 : (ref1 = ref.router) === null || ref1 === void 0 ? void 0 : ref1.mode) === "react-router-5";
59
+ };
56
60
  var cli_default = function() {
57
61
  return {
58
62
  name: "@modern-js/plugin-router",
@@ -79,15 +83,13 @@ var cli_default = function() {
79
83
  },
80
84
  modifyEntryImports: function modifyEntryImports(param) {
81
85
  var entrypoint = param.entrypoint, imports = param.imports;
82
- var ref, ref1;
83
86
  var entryName = entrypoint.entryName, fileSystemRoutes = entrypoint.fileSystemRoutes;
84
87
  var userConfig = api.useResolvedConfigContext();
85
- var isLegacy = Boolean(userConfig === null || userConfig === void 0 ? void 0 : (ref = userConfig.runtime) === null || ref === void 0 ? void 0 : (ref1 = ref.router) === null || ref1 === void 0 ? void 0 : ref1.legacy);
86
88
  var packageName = api.useAppContext().packageName;
87
89
  var runtimeConfig = getEntryOptions(entryName, userConfig.runtime, userConfig.runtimeByEntries, packageName);
88
90
  runtimeConfigMap.set(entryName, runtimeConfig);
89
91
  if (runtimeConfig === null || runtimeConfig === void 0 ? void 0 : runtimeConfig.router) {
90
- if (!isLegacy) {
92
+ if (!isV5(userConfig)) {
91
93
  imports.push({
92
94
  value: "@modern-js/runtime/plugins",
93
95
  specifiers: [
@@ -107,13 +109,11 @@ var cli_default = function() {
107
109
  },
108
110
  modifyEntryRuntimePlugins: function modifyEntryRuntimePlugins(param) {
109
111
  var entrypoint = param.entrypoint, plugins = param.plugins;
110
- var ref, ref1;
111
112
  var entryName = entrypoint.entryName, fileSystemRoutes = entrypoint.fileSystemRoutes;
112
113
  var serverRoutes = api.useAppContext().serverRoutes;
113
114
  var userConfig = api.useResolvedConfigContext();
114
- var isLegacy = Boolean(userConfig === null || userConfig === void 0 ? void 0 : (ref = userConfig.runtime) === null || ref === void 0 ? void 0 : (ref1 = ref.router) === null || ref1 === void 0 ? void 0 : ref1.legacy);
115
115
  var runtimeConfig = runtimeConfigMap.get(entryName);
116
- if (runtimeConfig.router && !isLegacy) {
116
+ if (runtimeConfig.router && !isV5(userConfig)) {
117
117
  var serverBase = serverRoutes.filter(function(route) {
118
118
  return route.entryName === entryName;
119
119
  }).map(function(route) {
@@ -136,10 +136,8 @@ var cli_default = function() {
136
136
  };
137
137
  },
138
138
  addRuntimeExports: function addRuntimeExports() {
139
- var ref, ref1;
140
139
  var userConfig = api.useResolvedConfigContext();
141
- var isLegacy = Boolean(userConfig === null || userConfig === void 0 ? void 0 : (ref = userConfig.runtime) === null || ref === void 0 ? void 0 : (ref1 = ref.router) === null || ref1 === void 0 ? void 0 : ref1.legacy);
142
- if (!isLegacy) {
140
+ if (!isV5(userConfig)) {
143
141
  pluginsExportsUtils.addExport("export { default as router } from '@modern-js/runtime/router'");
144
142
  }
145
143
  }
@@ -2,5 +2,6 @@ import { routerPlugin } from "./plugin";
2
2
  var runtime_default = routerPlugin;
3
3
  import { modifyRoutes } from "./plugin";
4
4
  export * from "react-router-dom";
5
+ export * from "react-router-dom/server";
5
6
  export * from "./withRouter";
6
7
  export { runtime_default as default, modifyRoutes };
@@ -229,8 +229,8 @@ var __generator = this && this.__generator || function(thisArg, body) {
229
229
  };
230
230
  import { jsx } from "react/jsx-runtime";
231
231
  import { useContext } from "react";
232
- import { unstable_createStaticHandler as createStaticHandler } from "@remix-run/router";
233
- import { unstable_createStaticRouter as createStaticRouter, unstable_StaticRouterProvider as StaticRouterProvider } from "react-router-dom/server";
232
+ import { createStaticHandler } from "@remix-run/router";
233
+ import { createStaticRouter, StaticRouterProvider } from "react-router-dom/server";
234
234
  import hoistNonReactStatics from "hoist-non-react-statics";
235
235
  import { installGlobals } from "@remix-run/node";
236
236
  import { createRoutesFromElements } from "react-router-dom";
@@ -84,9 +84,6 @@ import { DefaultNotFound } from "./DefaultNotFound";
84
84
  import { RootLayout } from "./root";
85
85
  var renderNestedRoute = function(nestedRoute, parent) {
86
86
  var children = nestedRoute.children, index = nestedRoute.index, id = nestedRoute.id, Component = nestedRoute.component;
87
- var childElements = children === null || children === void 0 ? void 0 : children.map(function(childRoute) {
88
- return renderNestedRoute(childRoute, nestedRoute);
89
- });
90
87
  var routeProps = {
91
88
  caseSensitive: nestedRoute.caseSensitive,
92
89
  path: nestedRoute.path,
@@ -112,11 +109,15 @@ var renderNestedRoute = function(nestedRoute, parent) {
112
109
  fallback: /* @__PURE__ */ jsx(Loading, {}),
113
110
  children: /* @__PURE__ */ jsx(Component, {})
114
111
  });
115
- } else {
112
+ } else if (!(parent === null || parent === void 0 ? void 0 : parent.index)) {
116
113
  element = /* @__PURE__ */ jsx(Suspense, {
117
114
  children: /* @__PURE__ */ jsx(Component, {})
118
115
  });
116
+ } else {
117
+ element = /* @__PURE__ */ jsx(Component, {});
119
118
  }
119
+ } else {
120
+ nestedRoute.loading = parent === null || parent === void 0 ? void 0 : parent.loading;
120
121
  }
121
122
  if (!parent && element) {
122
123
  element = /* @__PURE__ */ jsx(RootLayout, {
@@ -129,6 +130,9 @@ var renderNestedRoute = function(nestedRoute, parent) {
129
130
  if (element) {
130
131
  routeProps.element = element;
131
132
  }
133
+ var childElements = children === null || children === void 0 ? void 0 : children.map(function(childRoute) {
134
+ return renderNestedRoute(childRoute, nestedRoute);
135
+ });
132
136
  var routeElement = index ? /* @__PURE__ */ jsx(Route, _objectSpreadProps(_objectSpread({}, routeProps), {
133
137
  index: true
134
138
  }), id) : /* @__PURE__ */ jsx(Route, _objectSpreadProps(_objectSpread({}, routeProps), {
@@ -157,8 +157,8 @@ var cli_default = function() {
157
157
  if (typeof ssrConfig === "object" && ssrConfig.mode === "stream") {
158
158
  var ref1;
159
159
  var runtimeConfig = getEntryOptions(entryName, userConfig.runtime, userConfig.runtimeByEntries, packageName);
160
- if (runtimeConfig === null || runtimeConfig === void 0 ? void 0 : (ref1 = runtimeConfig.router) === null || ref1 === void 0 ? void 0 : ref1.legacy) {
161
- throw new Error("Legacy router plugin doesn't support streaming SSR, check your config 'runtime.router'");
160
+ if ((runtimeConfig === null || runtimeConfig === void 0 ? void 0 : (ref1 = runtimeConfig.router) === null || ref1 === void 0 ? void 0 : ref1.mode) === "react-router-5") {
161
+ throw new Error("router v5 plugin doesn't support streaming SSR, check your config 'runtime.router'");
162
162
  }
163
163
  if (fileSystemRoutes && !entrypoint.nestedRoutesEntry) {
164
164
  throw new Error("You should switch to file-system based router to support streaming SSR.");
@@ -2,6 +2,7 @@ import React, { ReactNode } from 'react';
2
2
  declare type DocumentStructrueContextProps = {
3
3
  hasSetHead?: boolean;
4
4
  hasSetScripts?: boolean;
5
+ hasSetLinks?: boolean;
5
6
  hasSetBody?: boolean;
6
7
  hasSetRoot?: boolean;
7
8
  docChild?: ReactNode;
@@ -0,0 +1,2 @@
1
+ /// <reference types="react" />
2
+ export declare function Links(): JSX.Element;
@@ -8,6 +8,7 @@ export declare const DOCUMENT_CHUNKSMAP_PLACEHOLDER: string;
8
8
  export declare const DOCUMENT_SSRDATASCRIPT_PLACEHOLDER: string;
9
9
  export declare const DOCUMENT_FILE_NAME = "Document";
10
10
  export declare const DOCUMENT_SCRIPTS_PLACEHOLDER: string;
11
+ export declare const DOCUMENT_LINKS_PLACEHOLDER: string;
11
12
  export declare const DOCUMENT_NO_SCRIPTE_PLACEHOLDER: string;
12
13
  export declare const DOCUMENT_SCRIPT_PLACEHOLDER_START: string;
13
14
  export declare const DOCUMENT_SCRIPT_PLACEHOLDER_END: string;
@@ -4,6 +4,7 @@ export * from './DocumentStructrueContext';
4
4
  export * from './Head';
5
5
  export * from './Body';
6
6
  export * from './Root';
7
+ export * from './Links';
7
8
  export * from './Scripts';
8
9
  export * from './Script';
9
10
  export * from './constants';
@@ -4,4 +4,5 @@ export type { SingleRouteConfig, RouterConfig };
4
4
  export default routerPlugin;
5
5
  export { modifyRoutes } from './plugin';
6
6
  export * from 'react-router-dom';
7
+ export * from 'react-router-dom/server';
7
8
  export * from './withRouter';
@@ -27,7 +27,7 @@ export declare type SingleRouteConfig = RouteProps & {
27
27
  component?: React.ComponentType;
28
28
  };
29
29
  export declare type RouterConfig = {
30
- legacy?: boolean;
30
+ mode?: 'react-router-5';
31
31
  routesConfig: {
32
32
  globalApp?: React.ComponentType<any>;
33
33
  routes: (NestedRoute | PageRoute)[];
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "modern",
12
12
  "modern.js"
13
13
  ],
14
- "version": "2.0.0-beta.4",
14
+ "version": "2.0.0-beta.6",
15
15
  "engines": {
16
16
  "node": ">=14.17.6"
17
17
  },
@@ -94,6 +94,9 @@
94
94
  "loadable": [
95
95
  "./dist/types/exports/loadable.d.ts"
96
96
  ],
97
+ "cli": [
98
+ "./dist/types/cli/index.d.ts"
99
+ ],
97
100
  "head": [
98
101
  "./dist/types/exports/head.d.ts"
99
102
  ],
@@ -125,18 +128,20 @@
125
128
  },
126
129
  "dependencies": {
127
130
  "@babel/core": "^7.18.0",
128
- "@babel/types": "^7.18.0",
129
131
  "@babel/runtime": "^7.18.0",
132
+ "@babel/types": "^7.18.0",
130
133
  "@loadable/babel-plugin": "^5.13.2",
131
- "@loadable/webpack-plugin": "5.15.2",
132
134
  "@loadable/component": "^5.15.0",
133
135
  "@loadable/server": "^5.15.1",
136
+ "@loadable/webpack-plugin": "5.15.2",
134
137
  "@modern-js-reduck/plugin-auto-actions": "^1.1.4",
135
138
  "@modern-js-reduck/plugin-devtools": "^1.1.4",
136
139
  "@modern-js-reduck/plugin-effects": "^1.1.4",
137
140
  "@modern-js-reduck/plugin-immutable": "^1.1.4",
138
141
  "@modern-js-reduck/react": "^1.1.4",
139
142
  "@modern-js-reduck/store": "^1.1.4",
143
+ "@remix-run/node": "^1.9.0",
144
+ "@remix-run/router": "^1.2.0",
140
145
  "@types/loadable__component": "^5.13.4",
141
146
  "@types/react-helmet": "^6.1.2",
142
147
  "@types/redux-logger": "^3.0.9",
@@ -144,26 +149,24 @@
144
149
  "hoist-non-react-statics": "^3.3.2",
145
150
  "invariant": "^2.2.4",
146
151
  "react-helmet": "^6.1.0",
147
- "@remix-run/node": "^1.7.0",
148
- "@remix-run/router": "^1.0.4",
149
152
  "react-is": "^18",
150
- "react-router-dom": "^6.4.4",
153
+ "react-router-dom": "^6.6.0",
151
154
  "react-side-effect": "^2.1.1",
152
155
  "redux-logger": "^3.0.6",
153
156
  "serialize-javascript": "^6.0.0",
154
157
  "styled-components": "^5.3.1",
155
- "@modern-js/plugin": "2.0.0-beta.4",
156
- "@modern-js/utils": "2.0.0-beta.4",
157
- "@modern-js/types": "2.0.0-beta.4"
158
+ "@modern-js/plugin": "2.0.0-beta.6",
159
+ "@modern-js/types": "2.0.0-beta.6",
160
+ "@modern-js/utils": "2.0.0-beta.6"
158
161
  },
159
162
  "peerDependencies": {
160
163
  "react": ">=17",
161
164
  "react-dom": ">=17"
162
165
  },
163
166
  "devDependencies": {
167
+ "@remix-run/web-fetch": "^4.1.3",
164
168
  "@testing-library/react": "^13.4.0",
165
169
  "@testing-library/react-hooks": "^8.0.1",
166
- "@remix-run/web-fetch": "^4.1.3",
167
170
  "@types/invariant": "^2.2.30",
168
171
  "@types/jest": "^27",
169
172
  "@types/loadable__webpack-plugin": "^5.7.3",
@@ -175,11 +178,11 @@
175
178
  "react-dom": "^18",
176
179
  "ts-jest": "^27.0.4",
177
180
  "typescript": "^4",
178
- "@modern-js/core": "2.0.0-beta.4",
179
- "@modern-js/server-core": "2.0.0-beta.4",
180
- "@scripts/build": "2.0.0-beta.4",
181
- "@modern-js/app-tools": "2.0.0-beta.4",
182
- "@scripts/jest-config": "2.0.0-beta.4"
181
+ "@modern-js/app-tools": "2.0.0-beta.6",
182
+ "@modern-js/core": "2.0.0-beta.6",
183
+ "@modern-js/server-core": "2.0.0-beta.6",
184
+ "@scripts/build": "2.0.0-beta.6",
185
+ "@scripts/jest-config": "2.0.0-beta.6"
183
186
  },
184
187
  "sideEffects": false,
185
188
  "modernConfig": {},
package/types/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { StateConfig } from '../dist/types';
2
2
 
3
- declare module '@modern-js/core/config' {
4
- interface RuntimeConfig {
3
+ declare module '@modern-js/app-tools' {
4
+ interface RuntimeUserConfig {
5
5
  state?: StateConfig | boolean;
6
6
  }
7
7
  }
package/types/router.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { RouterConfig } from '../dist/types';
2
2
  import '../dist/types/router';
3
3
 
4
- declare module '@modern-js/core/config' {
5
- interface RuntimeConfig {
4
+ declare module '@modern-js/app-tools' {
5
+ interface RuntimeUserConfig {
6
6
  router?: RouterConfig | boolean;
7
7
  }
8
8
  }