@modern-js/prod-server 2.46.1 → 2.47.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.
@@ -55,7 +55,9 @@ const createRenderHandler = ({ distDir, staticGenerate, conf, forceCSR, nonce, s
55
55
  if (!content) {
56
56
  return null;
57
57
  }
58
- const useCSR = forceCSR && (ctx.query.csr || ctx.headers[calcFallback(metaName)]);
58
+ const queryCSR = ctx.query.csr;
59
+ const headerFallback = ctx.headers[calcFallback(metaName)];
60
+ const useCSR = forceCSR && (queryCSR || headerFallback);
59
61
  if (route.isSSR && !useCSR) {
60
62
  try {
61
63
  const userAgent = ctx.getReqHeader("User-Agent");
@@ -84,7 +86,17 @@ const createRenderHandler = ({ distDir, staticGenerate, conf, forceCSR, nonce, s
84
86
  } catch (err) {
85
87
  ctx.error(import_constants.ERROR_DIGEST.ERENDER, err.stack || err.message);
86
88
  ctx.res.set(calcFallback(metaName), "1");
89
+ await runner.handleSSRFallback({
90
+ ctx,
91
+ type: "error"
92
+ });
87
93
  }
94
+ } else if (route.isSSR && useCSR) {
95
+ const fallbackType = queryCSR ? "query" : "header";
96
+ await runner.handleSSRFallback({
97
+ ctx,
98
+ type: fallbackType
99
+ });
88
100
  }
89
101
  return {
90
102
  content: route.entryName ? (0, import_utils2.injectServerData)(content.toString(), ctx) : content,
@@ -34,7 +34,9 @@ async function ssrCache(req, render, ssrContext) {
34
34
  return cacheManager.getCacheResult(req, cacheControl, render, ssrContext);
35
35
  } else {
36
36
  const renderResult = await render(ssrContext);
37
- if (typeof renderResult === "string") {
37
+ if (!renderResult) {
38
+ return "";
39
+ } else if (typeof renderResult === "string") {
38
40
  return renderResult;
39
41
  } else {
40
42
  const stream = new import_stream.Transform({
@@ -46,7 +46,9 @@ class CacheManager {
46
46
  }
47
47
  async processCache(key, render, ssrContext, ttl) {
48
48
  const renderResult = await render(ssrContext);
49
- if (typeof renderResult === "string") {
49
+ if (!renderResult) {
50
+ return "";
51
+ } else if (typeof renderResult === "string") {
50
52
  const current = Date.now();
51
53
  const cache = {
52
54
  val: renderResult,
@@ -57,7 +59,7 @@ class CacheManager {
57
59
  });
58
60
  return renderResult;
59
61
  } else {
60
- let html;
62
+ let html = "";
61
63
  const stream = new import_stream.Transform({
62
64
  write(chunk, _, callback) {
63
65
  html += chunk.toString();
@@ -15,7 +15,7 @@ var createRenderHandler = function(param) {
15
15
  var distDir = param.distDir, staticGenerate = param.staticGenerate, conf = param.conf, forceCSR = param.forceCSR, nonce = param.nonce, ssrRender = param.ssrRender, _param_metaName = param.metaName, metaName = _param_metaName === void 0 ? "modern-js" : _param_metaName;
16
16
  return function() {
17
17
  var _render = _async_to_generator(function(param2) {
18
- var ctx, route, runner, entryPath, urlPath, entry, result, templatePath, content, useCSR, userAgent, disablePreload, flushServerHeader, ssrRenderOptions, result1, err;
18
+ var ctx, route, runner, entryPath, urlPath, entry, result, templatePath, content, queryCSR, headerFallback, useCSR, userAgent, disablePreload, flushServerHeader, ssrRenderOptions, result1, err, fallbackType;
19
19
  return _ts_generator(this, function(_state) {
20
20
  switch (_state.label) {
21
21
  case 0:
@@ -57,11 +57,13 @@ var createRenderHandler = function(param) {
57
57
  null
58
58
  ];
59
59
  }
60
- useCSR = forceCSR && (ctx.query.csr || ctx.headers[calcFallback(metaName)]);
60
+ queryCSR = ctx.query.csr;
61
+ headerFallback = ctx.headers[calcFallback(metaName)];
62
+ useCSR = forceCSR && (queryCSR || headerFallback);
61
63
  if (!(route.isSSR && !useCSR))
62
64
  return [
63
65
  3,
64
- 9
66
+ 11
65
67
  ];
66
68
  _state.label = 4;
67
69
  case 4:
@@ -69,7 +71,7 @@ var createRenderHandler = function(param) {
69
71
  4,
70
72
  8,
71
73
  ,
72
- 9
74
+ 10
73
75
  ]);
74
76
  userAgent = ctx.getReqHeader("User-Agent");
75
77
  disablePreload = Boolean(ctx.headers["x-".concat(cutNameByHyphen(metaName), "-disable-preload")]);
@@ -117,10 +119,41 @@ var createRenderHandler = function(param) {
117
119
  ctx.error(ERROR_DIGEST.ERENDER, err.stack || err.message);
118
120
  ctx.res.set(calcFallback(metaName), "1");
119
121
  return [
120
- 3,
121
- 9
122
+ 4,
123
+ runner.handleSSRFallback({
124
+ ctx,
125
+ type: "error"
126
+ })
122
127
  ];
123
128
  case 9:
129
+ _state.sent();
130
+ return [
131
+ 3,
132
+ 10
133
+ ];
134
+ case 10:
135
+ return [
136
+ 3,
137
+ 13
138
+ ];
139
+ case 11:
140
+ if (!(route.isSSR && useCSR))
141
+ return [
142
+ 3,
143
+ 13
144
+ ];
145
+ fallbackType = queryCSR ? "query" : "header";
146
+ return [
147
+ 4,
148
+ runner.handleSSRFallback({
149
+ ctx,
150
+ type: fallbackType
151
+ })
152
+ ];
153
+ case 12:
154
+ _state.sent();
155
+ _state.label = 13;
156
+ case 13:
124
157
  return [
125
158
  2,
126
159
  {
@@ -39,7 +39,12 @@ function _ssrCache() {
39
39
  ];
40
40
  case 3:
41
41
  renderResult = _state.sent();
42
- if (typeof renderResult === "string") {
42
+ if (!renderResult) {
43
+ return [
44
+ 2,
45
+ ""
46
+ ];
47
+ } else if (typeof renderResult === "string") {
43
48
  return [
44
49
  2,
45
50
  renderResult
@@ -80,10 +80,20 @@ var CacheManager = /* @__PURE__ */ function() {
80
80
  ];
81
81
  case 1:
82
82
  renderResult = _state.sent();
83
+ if (!!renderResult)
84
+ return [
85
+ 3,
86
+ 2
87
+ ];
88
+ return [
89
+ 2,
90
+ ""
91
+ ];
92
+ case 2:
83
93
  if (!(typeof renderResult === "string"))
84
94
  return [
85
95
  3,
86
- 3
96
+ 4
87
97
  ];
88
98
  current = Date.now();
89
99
  cache = {
@@ -96,13 +106,14 @@ var CacheManager = /* @__PURE__ */ function() {
96
106
  ttl
97
107
  })
98
108
  ];
99
- case 2:
109
+ case 3:
100
110
  _state.sent();
101
111
  return [
102
112
  2,
103
113
  renderResult
104
114
  ];
105
- case 3:
115
+ case 4:
116
+ html = "";
106
117
  stream = new Transform({
107
118
  write: function write(chunk, _, callback) {
108
119
  html += chunk.toString();
@@ -124,7 +135,7 @@ var CacheManager = /* @__PURE__ */ function() {
124
135
  2,
125
136
  renderResult(stream)
126
137
  ];
127
- case 4:
138
+ case 5:
128
139
  return [
129
140
  2
130
141
  ];
@@ -22,7 +22,9 @@ const createRenderHandler = ({ distDir, staticGenerate, conf, forceCSR, nonce, s
22
22
  if (!content) {
23
23
  return null;
24
24
  }
25
- const useCSR = forceCSR && (ctx.query.csr || ctx.headers[calcFallback(metaName)]);
25
+ const queryCSR = ctx.query.csr;
26
+ const headerFallback = ctx.headers[calcFallback(metaName)];
27
+ const useCSR = forceCSR && (queryCSR || headerFallback);
26
28
  if (route.isSSR && !useCSR) {
27
29
  try {
28
30
  const userAgent = ctx.getReqHeader("User-Agent");
@@ -51,7 +53,17 @@ const createRenderHandler = ({ distDir, staticGenerate, conf, forceCSR, nonce, s
51
53
  } catch (err) {
52
54
  ctx.error(ERROR_DIGEST.ERENDER, err.stack || err.message);
53
55
  ctx.res.set(calcFallback(metaName), "1");
56
+ await runner.handleSSRFallback({
57
+ ctx,
58
+ type: "error"
59
+ });
54
60
  }
61
+ } else if (route.isSSR && useCSR) {
62
+ const fallbackType = queryCSR ? "query" : "header";
63
+ await runner.handleSSRFallback({
64
+ ctx,
65
+ type: fallbackType
66
+ });
55
67
  }
56
68
  return {
57
69
  content: route.entryName ? injectServerData(content.toString(), ctx) : content,
@@ -11,7 +11,9 @@ async function ssrCache(req, render, ssrContext) {
11
11
  return cacheManager.getCacheResult(req, cacheControl, render, ssrContext);
12
12
  } else {
13
13
  const renderResult = await render(ssrContext);
14
- if (typeof renderResult === "string") {
14
+ if (!renderResult) {
15
+ return "";
16
+ } else if (typeof renderResult === "string") {
15
17
  return renderResult;
16
18
  } else {
17
19
  const stream = new Transform({
@@ -23,7 +23,9 @@ class CacheManager {
23
23
  }
24
24
  async processCache(key, render, ssrContext, ttl) {
25
25
  const renderResult = await render(ssrContext);
26
- if (typeof renderResult === "string") {
26
+ if (!renderResult) {
27
+ return "";
28
+ } else if (typeof renderResult === "string") {
27
29
  const current = Date.now();
28
30
  const cache = {
29
31
  val: renderResult,
@@ -34,7 +36,7 @@ class CacheManager {
34
36
  });
35
37
  return renderResult;
36
38
  } else {
37
- let html;
39
+ let html = "";
38
40
  const stream = new Transform({
39
41
  write(chunk, _, callback) {
40
42
  html += chunk.toString();
@@ -32,5 +32,5 @@ export type ModernSSRReactComponent = React.ComponentType<any> & {
32
32
  init: (context: SSRServerContext) => Promise<void>;
33
33
  prefetch: (context: SSRServerContext) => Promise<Record<string, any>>;
34
34
  };
35
- export type RenderFunction = (context: SSRServerContext) => Promise<string | ((writable: Writable) => Promise<Readable>)>;
35
+ export type RenderFunction = (context: SSRServerContext) => Promise<string | ((writable: Writable) => Promise<Readable>) | undefined>;
36
36
  export {};
package/package.json CHANGED
@@ -15,7 +15,7 @@
15
15
  "modern",
16
16
  "modern.js"
17
17
  ],
18
- "version": "2.46.1",
18
+ "version": "2.47.1",
19
19
  "jsnext:source": "./src/index.ts",
20
20
  "types": "./dist/types/index.d.ts",
21
21
  "main": "./dist/cjs/index.js",
@@ -74,10 +74,10 @@
74
74
  "node-html-parser": "^6.1.5",
75
75
  "path-to-regexp": "^6.2.0",
76
76
  "serve-static": "^1.14.1",
77
- "@modern-js/plugin": "2.46.1",
78
- "@modern-js/server-core": "2.46.1",
79
- "@modern-js/utils": "2.46.1",
80
- "@modern-js/runtime-utils": "2.46.1"
77
+ "@modern-js/plugin": "2.47.1",
78
+ "@modern-js/server-core": "2.47.1",
79
+ "@modern-js/runtime-utils": "2.47.1",
80
+ "@modern-js/utils": "2.47.1"
81
81
  },
82
82
  "devDependencies": {
83
83
  "@types/cookie": "0.5.1",
@@ -95,9 +95,9 @@
95
95
  "portfinder": "^1.0.28",
96
96
  "typescript": "^5",
97
97
  "ws": "^8.13.0",
98
- "@modern-js/types": "2.46.1",
99
- "@scripts/jest-config": "2.46.1",
100
- "@scripts/build": "2.46.1"
98
+ "@scripts/build": "2.47.1",
99
+ "@modern-js/types": "2.47.1",
100
+ "@scripts/jest-config": "2.47.1"
101
101
  },
102
102
  "sideEffects": false,
103
103
  "publishConfig": {