@modern-js/runtime 2.33.1 → 2.34.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.
@@ -142,17 +142,19 @@ const ssrPlugin = () => ({
142
142
  },
143
143
  modifyEntryRuntimePlugins({ entrypoint, plugins, bundlerConfigs }) {
144
144
  if (ssrConfigMap.get(entrypoint.entryName)) {
145
- var _bundlerConfigs_find_output, _bundlerConfigs_find, _bundlerConfigs;
145
+ var _bundlerConfigs_find_output, _bundlerConfigs_find, _bundlerConfigs, _config_server;
146
146
  const chunkLoadingGlobal = (_bundlerConfigs = bundlerConfigs) === null || _bundlerConfigs === void 0 ? void 0 : (_bundlerConfigs_find = _bundlerConfigs.find((config2) => config2.name === "client")) === 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;
147
147
  const config = api.useResolvedConfigContext();
148
148
  const { crossorigin, scriptLoading } = config.html;
149
+ const disablePrerender = typeof ((_config_server = config.server) === null || _config_server === void 0 ? void 0 : _config_server.ssr) === "object" ? Boolean(config.server.ssr.disablePrerender) : false;
149
150
  plugins.push({
150
151
  name: PLUGIN_IDENTIFIER,
151
152
  options: JSON.stringify({
152
153
  ...ssrConfigMap.get(entrypoint.entryName) || {},
153
154
  crossorigin,
154
155
  scriptLoading,
155
- chunkLoadingGlobal
156
+ chunkLoadingGlobal,
157
+ disablePrerender
156
158
  })
157
159
  });
158
160
  }
@@ -12,24 +12,26 @@ const _jsxruntime = require("react/jsx-runtime");
12
12
  const _server = require("react-dom/server");
13
13
  const _runtimenode = require("@modern-js/utils/runtime-node");
14
14
  const _server1 = require("@loadable/server");
15
- const prefetch = async (App, context) => (0, _runtimenode.run)(context.ssrContext.request.headers, async () => {
15
+ const prefetch = async (App, context, config) => (0, _runtimenode.run)(context.ssrContext.request.headers, async () => {
16
16
  var _context_store, _context;
17
17
  const { ssrContext } = context;
18
18
  const { loadableStats } = ssrContext;
19
- if (loadableStats) {
20
- const extractor = new _server1.ChunkExtractor({
21
- stats: loadableStats,
22
- entrypoints: [
23
- ssrContext.entryName
24
- ].filter(Boolean)
25
- });
26
- (0, _server.renderToStaticMarkup)(extractor.collectChunks(/* @__PURE__ */ (0, _jsxruntime.jsx)(App, {
27
- context
28
- })));
29
- } else {
30
- (0, _server.renderToStaticMarkup)(/* @__PURE__ */ (0, _jsxruntime.jsx)(App, {
31
- context
32
- }));
19
+ if (!config.disablePrerender) {
20
+ if (loadableStats) {
21
+ const extractor = new _server1.ChunkExtractor({
22
+ stats: loadableStats,
23
+ entrypoints: [
24
+ ssrContext.entryName
25
+ ].filter(Boolean)
26
+ });
27
+ (0, _server.renderToStaticMarkup)(extractor.collectChunks(/* @__PURE__ */ (0, _jsxruntime.jsx)(App, {
28
+ context
29
+ })));
30
+ } else {
31
+ (0, _server.renderToStaticMarkup)(/* @__PURE__ */ (0, _jsxruntime.jsx)(App, {
32
+ context
33
+ }));
34
+ }
33
35
  }
34
36
  if (!context.loaderManager.hasPendingLoaders()) {
35
37
  return {
@@ -85,7 +85,7 @@ class Entry {
85
85
  let prefetchData;
86
86
  const end = (0, _time.time)();
87
87
  try {
88
- prefetchData = await (0, _prefetch.default)(this.App, context);
88
+ prefetchData = await (0, _prefetch.default)(this.App, context, this.pluginConfig);
89
89
  this.result.renderLevel = _types.RenderLevel.SERVER_PREFETCH;
90
90
  const prefetchCost = end();
91
91
  this.tracker.trackTiming(_tracker.SSRTimings.SSR_PREFETCH, prefetchCost);
@@ -54,7 +54,10 @@ const formatClient = (request) => {
54
54
  cookie: document.cookie || "",
55
55
  userAgent: ((_request_headers = request.headers) === null || _request_headers === void 0 ? void 0 : _request_headers["user-agent"]) || navigator.userAgent,
56
56
  referer: request.referer || document.referrer,
57
- query: request.query || getQuery(),
57
+ query: {
58
+ ...getQuery(),
59
+ ...request.query
60
+ },
58
61
  url: location.href
59
62
  };
60
63
  };
@@ -148,18 +148,20 @@ export var ssrPlugin = function() {
148
148
  modifyEntryRuntimePlugins: function modifyEntryRuntimePlugins(param) {
149
149
  var entrypoint = param.entrypoint, plugins = param.plugins, bundlerConfigs = param.bundlerConfigs;
150
150
  if (ssrConfigMap.get(entrypoint.entryName)) {
151
- var _bundlerConfigs_find_output, _bundlerConfigs_find, _bundlerConfigs;
151
+ var _bundlerConfigs_find_output, _bundlerConfigs_find, _bundlerConfigs, _config_server;
152
152
  var chunkLoadingGlobal = (_bundlerConfigs = bundlerConfigs) === null || _bundlerConfigs === void 0 ? void 0 : (_bundlerConfigs_find = _bundlerConfigs.find(function(config2) {
153
153
  return config2.name === "client";
154
154
  })) === 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
155
  var config = api.useResolvedConfigContext();
156
156
  var _config_html = config.html, crossorigin = _config_html.crossorigin, scriptLoading = _config_html.scriptLoading;
157
+ var disablePrerender = typeof ((_config_server = config.server) === null || _config_server === void 0 ? void 0 : _config_server.ssr) === "object" ? Boolean(config.server.ssr.disablePrerender) : false;
157
158
  plugins.push({
158
159
  name: PLUGIN_IDENTIFIER,
159
160
  options: JSON.stringify(_object_spread_props(_object_spread({}, ssrConfigMap.get(entrypoint.entryName) || {}), {
160
161
  crossorigin: crossorigin,
161
162
  scriptLoading: scriptLoading,
162
- chunkLoadingGlobal: chunkLoadingGlobal
163
+ chunkLoadingGlobal: chunkLoadingGlobal,
164
+ disablePrerender: disablePrerender
163
165
  }))
164
166
  });
165
167
  }
@@ -5,7 +5,7 @@ import { renderToStaticMarkup } from "react-dom/server";
5
5
  import { run } from "@modern-js/utils/runtime-node";
6
6
  import { ChunkExtractor } from "@loadable/server";
7
7
  var prefetch = function() {
8
- var _ref = _async_to_generator(function(App, context) {
8
+ var _ref = _async_to_generator(function(App, context, config) {
9
9
  return _ts_generator(this, function(_state) {
10
10
  return [
11
11
  2,
@@ -16,20 +16,22 @@ var prefetch = function() {
16
16
  case 0:
17
17
  ssrContext = context.ssrContext;
18
18
  loadableStats = ssrContext.loadableStats;
19
- if (loadableStats) {
20
- extractor = new ChunkExtractor({
21
- stats: loadableStats,
22
- entrypoints: [
23
- ssrContext.entryName
24
- ].filter(Boolean)
25
- });
26
- renderToStaticMarkup(extractor.collectChunks(/* @__PURE__ */ _jsx(App, {
27
- context: context
28
- })));
29
- } else {
30
- renderToStaticMarkup(/* @__PURE__ */ _jsx(App, {
31
- context: context
32
- }));
19
+ if (!config.disablePrerender) {
20
+ if (loadableStats) {
21
+ extractor = new ChunkExtractor({
22
+ stats: loadableStats,
23
+ entrypoints: [
24
+ ssrContext.entryName
25
+ ].filter(Boolean)
26
+ });
27
+ renderToStaticMarkup(extractor.collectChunks(/* @__PURE__ */ _jsx(App, {
28
+ context: context
29
+ })));
30
+ } else {
31
+ renderToStaticMarkup(/* @__PURE__ */ _jsx(App, {
32
+ context: context
33
+ }));
34
+ }
33
35
  }
34
36
  if (!context.loaderManager.hasPendingLoaders()) {
35
37
  return [
@@ -70,7 +72,7 @@ var prefetch = function() {
70
72
  ];
71
73
  });
72
74
  });
73
- return function prefetch2(App, context) {
75
+ return function prefetch2(App, context, config) {
74
76
  return _ref.apply(this, arguments);
75
77
  };
76
78
  }();
@@ -154,7 +154,7 @@ var Entry = /* @__PURE__ */ function() {
154
154
  ]);
155
155
  return [
156
156
  4,
157
- prefetch(_this.App, context)
157
+ prefetch(_this.App, context, _this.pluginConfig)
158
158
  ];
159
159
  case 2:
160
160
  prefetchData = _state.sent();
@@ -33,7 +33,7 @@ export var formatClient = function(request) {
33
33
  cookie: document.cookie || "",
34
34
  userAgent: ((_request_headers = request.headers) === null || _request_headers === void 0 ? void 0 : _request_headers["user-agent"]) || navigator.userAgent,
35
35
  referer: request.referer || document.referrer,
36
- query: request.query || getQuery(),
36
+ query: _object_spread({}, getQuery(), request.query),
37
37
  url: location.href
38
38
  };
39
39
  };
@@ -122,17 +122,19 @@ export const ssrPlugin = () => ({
122
122
  },
123
123
  modifyEntryRuntimePlugins({ entrypoint, plugins, bundlerConfigs }) {
124
124
  if (ssrConfigMap.get(entrypoint.entryName)) {
125
- var _bundlerConfigs_find_output, _bundlerConfigs_find, _bundlerConfigs;
125
+ var _bundlerConfigs_find_output, _bundlerConfigs_find, _bundlerConfigs, _config_server;
126
126
  const chunkLoadingGlobal = (_bundlerConfigs = bundlerConfigs) === null || _bundlerConfigs === void 0 ? void 0 : (_bundlerConfigs_find = _bundlerConfigs.find((config2) => config2.name === "client")) === 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;
127
127
  const config = api.useResolvedConfigContext();
128
128
  const { crossorigin, scriptLoading } = config.html;
129
+ const disablePrerender = typeof ((_config_server = config.server) === null || _config_server === void 0 ? void 0 : _config_server.ssr) === "object" ? Boolean(config.server.ssr.disablePrerender) : false;
129
130
  plugins.push({
130
131
  name: PLUGIN_IDENTIFIER,
131
132
  options: JSON.stringify({
132
133
  ...ssrConfigMap.get(entrypoint.entryName) || {},
133
134
  crossorigin,
134
135
  scriptLoading,
135
- chunkLoadingGlobal
136
+ chunkLoadingGlobal,
137
+ disablePrerender
136
138
  })
137
139
  });
138
140
  }
@@ -2,24 +2,26 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { renderToStaticMarkup } from "react-dom/server";
3
3
  import { run } from "@modern-js/utils/runtime-node";
4
4
  import { ChunkExtractor } from "@loadable/server";
5
- const prefetch = async (App, context) => run(context.ssrContext.request.headers, async () => {
5
+ const prefetch = async (App, context, config) => run(context.ssrContext.request.headers, async () => {
6
6
  var _context_store, _context;
7
7
  const { ssrContext } = context;
8
8
  const { loadableStats } = ssrContext;
9
- if (loadableStats) {
10
- const extractor = new ChunkExtractor({
11
- stats: loadableStats,
12
- entrypoints: [
13
- ssrContext.entryName
14
- ].filter(Boolean)
15
- });
16
- renderToStaticMarkup(extractor.collectChunks(/* @__PURE__ */ _jsx(App, {
17
- context
18
- })));
19
- } else {
20
- renderToStaticMarkup(/* @__PURE__ */ _jsx(App, {
21
- context
22
- }));
9
+ if (!config.disablePrerender) {
10
+ if (loadableStats) {
11
+ const extractor = new ChunkExtractor({
12
+ stats: loadableStats,
13
+ entrypoints: [
14
+ ssrContext.entryName
15
+ ].filter(Boolean)
16
+ });
17
+ renderToStaticMarkup(extractor.collectChunks(/* @__PURE__ */ _jsx(App, {
18
+ context
19
+ })));
20
+ } else {
21
+ renderToStaticMarkup(/* @__PURE__ */ _jsx(App, {
22
+ context
23
+ }));
24
+ }
23
25
  }
24
26
  if (!context.loaderManager.hasPendingLoaders()) {
25
27
  return {
@@ -74,7 +74,7 @@ class Entry {
74
74
  let prefetchData;
75
75
  const end = time();
76
76
  try {
77
- prefetchData = await prefetch(this.App, context);
77
+ prefetchData = await prefetch(this.App, context, this.pluginConfig);
78
78
  this.result.renderLevel = RenderLevel.SERVER_PREFETCH;
79
79
  const prefetchCost = end();
80
80
  this.tracker.trackTiming(SSRTimings.SSR_PREFETCH, prefetchCost);
@@ -28,7 +28,10 @@ export const formatClient = (request) => {
28
28
  cookie: document.cookie || "",
29
29
  userAgent: ((_request_headers = request.headers) === null || _request_headers === void 0 ? void 0 : _request_headers["user-agent"]) || navigator.userAgent,
30
30
  referer: request.referer || document.referrer,
31
- query: request.query || getQuery(),
31
+ query: {
32
+ ...getQuery(),
33
+ ...request.query
34
+ },
32
35
  url: location.href
33
36
  };
34
37
  };
@@ -1,5 +1,6 @@
1
1
  import { RuntimeContext } from '../core';
2
- declare const prefetch: (App: React.ComponentType<any>, context: RuntimeContext) => Promise<{
2
+ import { SSRPluginConfig } from './serverRender/types';
3
+ declare const prefetch: (App: React.ComponentType<any>, context: RuntimeContext, config: SSRPluginConfig) => Promise<{
3
4
  initialData: Record<string, unknown> | undefined;
4
5
  i18nData: any;
5
6
  loadersData?: undefined;
@@ -8,6 +8,7 @@ export { RuntimeContext, RenderLevel };
8
8
  export type SSRPluginConfig = {
9
9
  crossorigin?: boolean | 'anonymous' | 'use-credentials';
10
10
  scriptLoading?: 'defer' | 'blocking' | 'module';
11
+ disablePrerender?: boolean;
11
12
  chunkLoadingGlobal?: string;
12
13
  } & Exclude<ServerUserConfig['ssr'], boolean>;
13
14
  export type ServerRenderOptions = {
package/package.json CHANGED
@@ -15,7 +15,7 @@
15
15
  "modern",
16
16
  "modern.js"
17
17
  ],
18
- "version": "2.33.1",
18
+ "version": "2.34.0",
19
19
  "engines": {
20
20
  "node": ">=14.17.6"
21
21
  },
@@ -146,8 +146,8 @@
146
146
  }
147
147
  },
148
148
  "dependencies": {
149
- "@babel/core": "^7.21.8",
150
- "@babel/types": "^7.21.5",
149
+ "@babel/core": "^7.22.15",
150
+ "@babel/types": "^7.22.15",
151
151
  "cookie": "0.5.0",
152
152
  "@loadable/babel-plugin": "5.15.3",
153
153
  "@loadable/component": "5.15.3",
@@ -173,9 +173,9 @@
173
173
  "redux-logger": "^3.0.6",
174
174
  "styled-components": "^5.3.1",
175
175
  "@swc/helpers": "0.5.1",
176
- "@modern-js/plugin": "2.33.1",
177
- "@modern-js/types": "2.33.1",
178
- "@modern-js/utils": "2.33.1"
176
+ "@modern-js/plugin": "2.34.0",
177
+ "@modern-js/types": "2.34.0",
178
+ "@modern-js/utils": "2.34.0"
179
179
  },
180
180
  "peerDependencies": {
181
181
  "react": ">=17",
@@ -196,11 +196,11 @@
196
196
  "ts-jest": "^29.1.0",
197
197
  "typescript": "^5",
198
198
  "webpack": "^5.88.1",
199
- "@modern-js/app-tools": "2.33.1",
200
- "@scripts/build": "2.33.1",
201
- "@modern-js/server-core": "2.33.1",
202
- "@modern-js/core": "2.33.1",
203
- "@scripts/jest-config": "2.33.1"
199
+ "@modern-js/app-tools": "2.34.0",
200
+ "@modern-js/core": "2.34.0",
201
+ "@modern-js/server-core": "2.34.0",
202
+ "@scripts/build": "2.34.0",
203
+ "@scripts/jest-config": "2.34.0"
204
204
  },
205
205
  "sideEffects": false,
206
206
  "publishConfig": {