@modern-js/prod-server 2.46.1 → 2.47.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.
- package/dist/cjs/libs/render/index.js +13 -1
- package/dist/cjs/libs/render/ssrCache/index.js +3 -1
- package/dist/cjs/libs/render/ssrCache/manager.js +4 -2
- package/dist/esm/libs/render/index.js +39 -6
- package/dist/esm/libs/render/ssrCache/index.js +6 -1
- package/dist/esm/libs/render/ssrCache/manager.js +15 -4
- package/dist/esm-node/libs/render/index.js +13 -1
- package/dist/esm-node/libs/render/ssrCache/index.js +3 -1
- package/dist/esm-node/libs/render/ssrCache/manager.js +4 -2
- package/dist/types/libs/render/type.d.ts +1 -1
- package/package.json +8 -8
|
@@ -55,7 +55,9 @@ const createRenderHandler = ({ distDir, staticGenerate, conf, forceCSR, nonce, s
|
|
|
55
55
|
if (!content) {
|
|
56
56
|
return null;
|
|
57
57
|
}
|
|
58
|
-
const
|
|
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 (
|
|
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 (
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
121
|
-
|
|
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 (
|
|
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
|
-
|
|
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
|
|
109
|
+
case 3:
|
|
100
110
|
_state.sent();
|
|
101
111
|
return [
|
|
102
112
|
2,
|
|
103
113
|
renderResult
|
|
104
114
|
];
|
|
105
|
-
case
|
|
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
|
|
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
|
|
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 (
|
|
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 (
|
|
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.
|
|
18
|
+
"version": "2.47.0",
|
|
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/
|
|
78
|
-
"@modern-js/
|
|
79
|
-
"@modern-js/utils": "2.
|
|
80
|
-
"@modern-js/
|
|
77
|
+
"@modern-js/utils": "2.47.0",
|
|
78
|
+
"@modern-js/plugin": "2.47.0",
|
|
79
|
+
"@modern-js/runtime-utils": "2.47.0",
|
|
80
|
+
"@modern-js/server-core": "2.47.0"
|
|
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.
|
|
99
|
-
"@scripts/
|
|
100
|
-
"@scripts/
|
|
98
|
+
"@modern-js/types": "2.47.0",
|
|
99
|
+
"@scripts/build": "2.47.0",
|
|
100
|
+
"@scripts/jest-config": "2.47.0"
|
|
101
101
|
},
|
|
102
102
|
"sideEffects": false,
|
|
103
103
|
"publishConfig": {
|