@modern-js/prod-server 2.15.0 → 2.17.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/CHANGELOG.md +21 -0
- package/dist/cjs/constants.js +15 -31
- package/dist/cjs/index.js +35 -37
- package/dist/cjs/libs/context/context.js +53 -66
- package/dist/cjs/libs/context/index.js +15 -28
- package/dist/cjs/libs/hook-api/index.js +59 -54
- package/dist/cjs/libs/hook-api/route.js +28 -30
- package/dist/cjs/libs/hook-api/template.js +30 -34
- package/dist/cjs/libs/loadConfig.js +74 -65
- package/dist/cjs/libs/logger.js +46 -37
- package/dist/cjs/libs/metrics.js +7 -25
- package/dist/cjs/libs/proxy.js +29 -46
- package/dist/cjs/libs/render/cache/__tests__/cache.fun.test.js +48 -64
- package/dist/cjs/libs/render/cache/__tests__/cache.test.js +53 -37
- package/dist/cjs/libs/render/cache/__tests__/cacheable.js +38 -34
- package/dist/cjs/libs/render/cache/__tests__/error-configuration.js +22 -30
- package/dist/cjs/libs/render/cache/__tests__/matched-cache.js +86 -46
- package/dist/cjs/libs/render/cache/index.js +17 -37
- package/dist/cjs/libs/render/cache/page-caches/index.js +12 -28
- package/dist/cjs/libs/render/cache/page-caches/lru.js +32 -40
- package/dist/cjs/libs/render/cache/spr.js +104 -111
- package/dist/cjs/libs/render/cache/type.js +4 -15
- package/dist/cjs/libs/render/cache/util.js +29 -53
- package/dist/cjs/libs/render/index.js +75 -73
- package/dist/cjs/libs/render/measure.js +19 -34
- package/dist/cjs/libs/render/reader.js +52 -61
- package/dist/cjs/libs/render/ssr.js +34 -66
- package/dist/cjs/libs/render/static.js +22 -45
- package/dist/cjs/libs/render/type.js +10 -28
- package/dist/cjs/libs/render/utils.js +17 -38
- package/dist/cjs/libs/route/index.js +32 -31
- package/dist/cjs/libs/route/matcher.js +38 -38
- package/dist/cjs/libs/route/route.js +29 -26
- package/dist/cjs/libs/serveFile.js +23 -41
- package/dist/cjs/server/index.js +101 -107
- package/dist/cjs/server/modernServer.js +191 -171
- package/dist/cjs/server/modernServerSplit.js +12 -30
- package/dist/cjs/type.js +4 -15
- package/dist/cjs/utils.js +50 -50
- package/dist/cjs/workerServer.js +26 -36
- package/dist/esm/constants.js +24 -25
- package/dist/esm/index.js +11 -10
- package/dist/esm/libs/context/context.js +271 -264
- package/dist/esm/libs/context/index.js +3 -3
- package/dist/esm/libs/hook-api/index.js +237 -223
- package/dist/esm/libs/hook-api/route.js +62 -60
- package/dist/esm/libs/hook-api/template.js +117 -115
- package/dist/esm/libs/loadConfig.js +68 -69
- package/dist/esm/libs/logger.js +188 -174
- package/dist/esm/libs/metrics.js +6 -3
- package/dist/esm/libs/proxy.js +236 -221
- package/dist/esm/libs/render/cache/__tests__/cache.fun.test.js +286 -267
- package/dist/esm/libs/render/cache/__tests__/cache.test.js +765 -745
- package/dist/esm/libs/render/cache/__tests__/cacheable.js +62 -63
- package/dist/esm/libs/render/cache/__tests__/error-configuration.js +42 -43
- package/dist/esm/libs/render/cache/__tests__/matched-cache.js +134 -135
- package/dist/esm/libs/render/cache/index.js +337 -326
- package/dist/esm/libs/render/cache/page-caches/index.js +147 -141
- package/dist/esm/libs/render/cache/page-caches/lru.js +78 -76
- package/dist/esm/libs/render/cache/spr.js +465 -456
- package/dist/esm/libs/render/cache/type.js +1 -1
- package/dist/esm/libs/render/cache/util.js +266 -246
- package/dist/esm/libs/render/index.js +226 -218
- package/dist/esm/libs/render/measure.js +136 -128
- package/dist/esm/libs/render/reader.js +315 -304
- package/dist/esm/libs/render/ssr.js +214 -209
- package/dist/esm/libs/render/static.js +208 -198
- package/dist/esm/libs/render/type.js +6 -7
- package/dist/esm/libs/render/utils.js +8 -9
- package/dist/esm/libs/route/index.js +134 -123
- package/dist/esm/libs/route/matcher.js +140 -130
- package/dist/esm/libs/route/route.js +36 -37
- package/dist/esm/libs/serveFile.js +177 -168
- package/dist/esm/server/index.js +578 -549
- package/dist/esm/server/modernServer.js +1137 -1074
- package/dist/esm/server/modernServerSplit.js +344 -328
- package/dist/esm/type.js +1 -1
- package/dist/esm/utils.js +133 -124
- package/dist/esm/workerServer.js +226 -220
- package/dist/esm-node/constants.js +7 -14
- package/dist/esm-node/index.js +4 -9
- package/dist/esm-node/libs/context/context.js +32 -25
- package/dist/esm-node/libs/context/index.js +2 -5
- package/dist/esm-node/libs/hook-api/index.js +40 -21
- package/dist/esm-node/libs/hook-api/route.js +21 -8
- package/dist/esm-node/libs/hook-api/template.js +19 -14
- package/dist/esm-node/libs/loadConfig.js +11 -28
- package/dist/esm-node/libs/logger.js +37 -17
- package/dist/esm-node/libs/metrics.js +1 -3
- package/dist/esm-node/libs/proxy.js +14 -22
- package/dist/esm-node/libs/render/cache/__tests__/cache.fun.test.js +25 -36
- package/dist/esm-node/libs/render/cache/__tests__/cache.test.js +23 -11
- package/dist/esm-node/libs/render/cache/__tests__/cacheable.js +32 -13
- package/dist/esm-node/libs/render/cache/__tests__/error-configuration.js +16 -9
- package/dist/esm-node/libs/render/cache/__tests__/matched-cache.js +80 -25
- package/dist/esm-node/libs/render/cache/index.js +3 -10
- package/dist/esm-node/libs/render/cache/page-caches/index.js +4 -5
- package/dist/esm-node/libs/render/cache/page-caches/lru.js +20 -8
- package/dist/esm-node/libs/render/cache/spr.js +79 -80
- package/dist/esm-node/libs/render/cache/type.js +1 -0
- package/dist/esm-node/libs/render/cache/util.js +13 -23
- package/dist/esm-node/libs/render/index.js +10 -28
- package/dist/esm-node/libs/render/measure.js +7 -13
- package/dist/esm-node/libs/render/reader.js +31 -26
- package/dist/esm-node/libs/render/ssr.js +5 -21
- package/dist/esm-node/libs/render/static.js +1 -4
- package/dist/esm-node/libs/render/type.js +3 -6
- package/dist/esm-node/libs/render/utils.js +6 -18
- package/dist/esm-node/libs/route/index.js +20 -9
- package/dist/esm-node/libs/route/matcher.js +28 -17
- package/dist/esm-node/libs/route/route.js +23 -5
- package/dist/esm-node/libs/serveFile.js +2 -6
- package/dist/esm-node/server/index.js +72 -75
- package/dist/esm-node/server/modernServer.js +102 -130
- package/dist/esm-node/server/modernServerSplit.js +1 -4
- package/dist/esm-node/type.js +1 -0
- package/dist/esm-node/utils.js +41 -32
- package/dist/esm-node/workerServer.js +9 -10
- package/dist/types/libs/context/context.d.ts +1 -1
- package/dist/types/server/modernServer.d.ts +1 -1
- package/dist/types/utils.d.ts +1 -1
- package/package.json +12 -8
|
@@ -1,98 +1,100 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
for (var name in all)
|
|
9
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
-
};
|
|
11
|
-
var __copyProps = (to, from, except, desc) => {
|
|
12
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
-
for (let key of __getOwnPropNames(from))
|
|
14
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
-
}
|
|
17
|
-
return to;
|
|
18
|
-
};
|
|
19
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
-
mod
|
|
26
|
-
));
|
|
27
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
-
var render_exports = {};
|
|
29
|
-
__export(render_exports, {
|
|
30
|
-
createRenderHandler: () => createRenderHandler
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "createRenderHandler", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: () => createRenderHandler
|
|
31
8
|
});
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
9
|
+
const _path = /* @__PURE__ */ _interop_require_default(require("path"));
|
|
10
|
+
const _utils = require("@modern-js/utils");
|
|
11
|
+
const _constants = require("../../constants");
|
|
12
|
+
const _static = require("./static");
|
|
13
|
+
const _reader = require("./reader");
|
|
14
|
+
const _ssr = /* @__PURE__ */ _interop_require_wildcard(require("./ssr"));
|
|
15
|
+
const _utils1 = require("./utils");
|
|
16
|
+
function _interop_require_default(obj) {
|
|
17
|
+
return obj && obj.__esModule ? obj : {
|
|
18
|
+
default: obj
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
function _getRequireWildcardCache(nodeInterop) {
|
|
22
|
+
if (typeof WeakMap !== "function")
|
|
23
|
+
return null;
|
|
24
|
+
var cacheBabelInterop = /* @__PURE__ */ new WeakMap();
|
|
25
|
+
var cacheNodeInterop = /* @__PURE__ */ new WeakMap();
|
|
26
|
+
return (_getRequireWildcardCache = function(nodeInterop2) {
|
|
27
|
+
return nodeInterop2 ? cacheNodeInterop : cacheBabelInterop;
|
|
28
|
+
})(nodeInterop);
|
|
29
|
+
}
|
|
30
|
+
function _interop_require_wildcard(obj, nodeInterop) {
|
|
31
|
+
if (!nodeInterop && obj && obj.__esModule) {
|
|
32
|
+
return obj;
|
|
33
|
+
}
|
|
34
|
+
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
35
|
+
return {
|
|
36
|
+
default: obj
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
var cache = _getRequireWildcardCache(nodeInterop);
|
|
40
|
+
if (cache && cache.has(obj)) {
|
|
41
|
+
return cache.get(obj);
|
|
42
|
+
}
|
|
43
|
+
var newObj = {};
|
|
44
|
+
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
45
|
+
for (var key in obj) {
|
|
46
|
+
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
47
|
+
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
48
|
+
if (desc && (desc.get || desc.set)) {
|
|
49
|
+
Object.defineProperty(newObj, key, desc);
|
|
50
|
+
} else {
|
|
51
|
+
newObj[key] = obj[key];
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
newObj.default = obj;
|
|
56
|
+
if (cache) {
|
|
57
|
+
cache.set(obj, newObj);
|
|
58
|
+
}
|
|
59
|
+
return newObj;
|
|
60
|
+
}
|
|
61
|
+
const createRenderHandler = ({ distDir, staticGenerate, forceCSR }) => async function render({ ctx, route, runner }) {
|
|
49
62
|
if (ctx.resHasHandled()) {
|
|
50
63
|
return null;
|
|
51
64
|
}
|
|
52
65
|
const { entryPath, urlPath } = route;
|
|
53
|
-
const entry =
|
|
66
|
+
const entry = _path.default.join(distDir, entryPath);
|
|
54
67
|
if (!route.isSPA) {
|
|
55
|
-
const result = await (0,
|
|
68
|
+
const result = await (0, _static.handleDirectory)(ctx, entry, urlPath);
|
|
56
69
|
return result;
|
|
57
70
|
}
|
|
58
71
|
const templatePath = entry;
|
|
59
|
-
if (!
|
|
72
|
+
if (!_utils.fs.existsSync(templatePath)) {
|
|
60
73
|
throw new Error(`Could not find template file: ${templatePath}`);
|
|
61
74
|
}
|
|
62
|
-
const content = await (0,
|
|
75
|
+
const content = await (0, _reader.readFile)(templatePath);
|
|
63
76
|
if (!content) {
|
|
64
77
|
return null;
|
|
65
78
|
}
|
|
66
79
|
const useCSR = forceCSR && ctx.query.csr;
|
|
67
80
|
if (route.isSSR && !useCSR) {
|
|
68
81
|
try {
|
|
69
|
-
const result = await
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
staticGenerate
|
|
78
|
-
},
|
|
79
|
-
runner
|
|
80
|
-
);
|
|
82
|
+
const result = await _ssr.render(ctx, {
|
|
83
|
+
distDir,
|
|
84
|
+
entryName: route.entryName,
|
|
85
|
+
urlPath: route.urlPath,
|
|
86
|
+
bundle: route.bundle,
|
|
87
|
+
template: content.toString(),
|
|
88
|
+
staticGenerate
|
|
89
|
+
}, runner);
|
|
81
90
|
return result;
|
|
82
91
|
} catch (err) {
|
|
83
|
-
ctx.error(
|
|
84
|
-
import_constants.ERROR_DIGEST.ERENDER,
|
|
85
|
-
err.stack || err.message
|
|
86
|
-
);
|
|
92
|
+
ctx.error(_constants.ERROR_DIGEST.ERENDER, err.stack || err.message);
|
|
87
93
|
ctx.res.setHeader("x-modern-ssr-fallback", "1");
|
|
88
94
|
}
|
|
89
95
|
}
|
|
90
96
|
return {
|
|
91
|
-
content: route.entryName ? (0,
|
|
92
|
-
contentType:
|
|
97
|
+
content: route.entryName ? (0, _utils1.injectServerData)(content.toString(), ctx) : content,
|
|
98
|
+
contentType: _utils.mime.contentType(_path.default.extname(templatePath))
|
|
93
99
|
};
|
|
94
100
|
};
|
|
95
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
96
|
-
0 && (module.exports = {
|
|
97
|
-
createRenderHandler
|
|
98
|
-
});
|
|
@@ -1,27 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
6
|
for (var name in all)
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
return to;
|
|
16
|
-
};
|
|
17
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
-
var measure_exports = {};
|
|
19
|
-
__export(measure_exports, {
|
|
20
|
-
createLogger: () => createLogger,
|
|
21
|
-
createMetrics: () => createMetrics
|
|
7
|
+
Object.defineProperty(target, name, {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: all[name]
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
_export(exports, {
|
|
13
|
+
createMetrics: () => createMetrics,
|
|
14
|
+
createLogger: () => createLogger
|
|
22
15
|
});
|
|
23
|
-
|
|
24
|
-
var import_utils = require("../../utils");
|
|
16
|
+
const _utils = require("../../utils");
|
|
25
17
|
const createMetrics = (context, metrics) => {
|
|
26
18
|
const { entryName: entry, request } = context;
|
|
27
19
|
const { pathname = "" } = request || {};
|
|
@@ -39,7 +31,10 @@ const createMetrics = (context, metrics) => {
|
|
|
39
31
|
entry
|
|
40
32
|
});
|
|
41
33
|
};
|
|
42
|
-
return {
|
|
34
|
+
return {
|
|
35
|
+
emitTimer,
|
|
36
|
+
emitCounter
|
|
37
|
+
};
|
|
43
38
|
};
|
|
44
39
|
const createLogger = (serverContext, logger) => {
|
|
45
40
|
const request = serverContext.request || {};
|
|
@@ -55,12 +50,7 @@ const createLogger = (serverContext, logger) => {
|
|
|
55
50
|
e = message;
|
|
56
51
|
message = "";
|
|
57
52
|
}
|
|
58
|
-
logger.error(
|
|
59
|
-
`SSR Error - ${message}, error = %s, req.url = %s, req.headers = %o`,
|
|
60
|
-
e instanceof Error ? e.stack || e.message : e,
|
|
61
|
-
pathname,
|
|
62
|
-
(0, import_utils.headersWithoutCookie)(headers)
|
|
63
|
-
);
|
|
53
|
+
logger.error(`SSR Error - ${message}, error = %s, req.url = %s, req.headers = %o`, e instanceof Error ? e.stack || e.message : e, pathname, (0, _utils.headersWithoutCookie)(headers));
|
|
64
54
|
};
|
|
65
55
|
return {
|
|
66
56
|
error,
|
|
@@ -68,8 +58,3 @@ const createLogger = (serverContext, logger) => {
|
|
|
68
58
|
debug
|
|
69
59
|
};
|
|
70
60
|
};
|
|
71
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
72
|
-
0 && (module.exports = {
|
|
73
|
-
createLogger,
|
|
74
|
-
createMetrics
|
|
75
|
-
});
|
|
@@ -1,62 +1,53 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
-
var __export = (target, all) => {
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
8
6
|
for (var name in all)
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
-
}
|
|
17
|
-
return to;
|
|
18
|
-
};
|
|
19
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
-
mod
|
|
26
|
-
));
|
|
27
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
-
var reader_exports = {};
|
|
29
|
-
__export(reader_exports, {
|
|
7
|
+
Object.defineProperty(target, name, {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: all[name]
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
_export(exports, {
|
|
30
13
|
LruReader: () => LruReader,
|
|
31
|
-
close: () => close,
|
|
32
|
-
init: () => init,
|
|
33
14
|
readFile: () => readFile,
|
|
34
|
-
updateFile: () => updateFile
|
|
15
|
+
updateFile: () => updateFile,
|
|
16
|
+
init: () => init,
|
|
17
|
+
close: () => close
|
|
35
18
|
});
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
19
|
+
const _utils = require("@modern-js/utils");
|
|
20
|
+
const _lrucache = /* @__PURE__ */ _interop_require_default(require("lru-cache"));
|
|
21
|
+
function _define_property(obj, key, value) {
|
|
22
|
+
if (key in obj) {
|
|
23
|
+
Object.defineProperty(obj, key, {
|
|
24
|
+
value,
|
|
25
|
+
enumerable: true,
|
|
26
|
+
configurable: true,
|
|
27
|
+
writable: true
|
|
28
|
+
});
|
|
29
|
+
} else {
|
|
30
|
+
obj[key] = value;
|
|
31
|
+
}
|
|
32
|
+
return obj;
|
|
33
|
+
}
|
|
34
|
+
function _interop_require_default(obj) {
|
|
35
|
+
return obj && obj.__esModule ? obj : {
|
|
36
|
+
default: obj
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
39
|
const Byte = 1;
|
|
40
40
|
const KB = 1024 * Byte;
|
|
41
41
|
const MB = 1024 * KB;
|
|
42
42
|
const getContentLength = (cache) => cache.content.length;
|
|
43
43
|
const createCacheItem = async (filepath, mtime) => {
|
|
44
|
-
const content = await
|
|
44
|
+
const content = await _utils.fs.readFile(filepath);
|
|
45
45
|
return {
|
|
46
46
|
content,
|
|
47
47
|
mtime
|
|
48
48
|
};
|
|
49
49
|
};
|
|
50
50
|
class LruReader {
|
|
51
|
-
// private timer?: NodeJS.Timeout;
|
|
52
|
-
constructor() {
|
|
53
|
-
this.cache = new import_lru_cache.default({
|
|
54
|
-
max: 256 * MB,
|
|
55
|
-
length: getContentLength,
|
|
56
|
-
maxAge: 5 * 60 * 5e3
|
|
57
|
-
// 60s
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
51
|
init() {
|
|
61
52
|
}
|
|
62
53
|
close() {
|
|
@@ -64,12 +55,14 @@ class LruReader {
|
|
|
64
55
|
async read(filepath) {
|
|
65
56
|
if (this.cache.has(filepath)) {
|
|
66
57
|
const { content } = this.cache.get(filepath);
|
|
67
|
-
return {
|
|
58
|
+
return {
|
|
59
|
+
content
|
|
60
|
+
};
|
|
68
61
|
}
|
|
69
|
-
if (!
|
|
62
|
+
if (!_utils.fs.existsSync(filepath)) {
|
|
70
63
|
return null;
|
|
71
64
|
}
|
|
72
|
-
const stat =
|
|
65
|
+
const stat = _utils.fs.statSync(filepath);
|
|
73
66
|
if (stat.isDirectory()) {
|
|
74
67
|
return null;
|
|
75
68
|
}
|
|
@@ -84,12 +77,12 @@ class LruReader {
|
|
|
84
77
|
const { cache } = this;
|
|
85
78
|
const files = cache.keys();
|
|
86
79
|
for (const filepath of files) {
|
|
87
|
-
if (!
|
|
80
|
+
if (!_utils.fs.existsSync(filepath)) {
|
|
88
81
|
cache.del(filepath);
|
|
89
82
|
}
|
|
90
83
|
try {
|
|
91
84
|
const item = cache.get(filepath);
|
|
92
|
-
const stat =
|
|
85
|
+
const stat = _utils.fs.statSync(filepath);
|
|
93
86
|
const { mtime } = stat;
|
|
94
87
|
if (item.mtime < mtime) {
|
|
95
88
|
cache.del(filepath);
|
|
@@ -99,14 +92,20 @@ class LruReader {
|
|
|
99
92
|
}
|
|
100
93
|
}
|
|
101
94
|
}
|
|
102
|
-
// private
|
|
103
|
-
|
|
104
|
-
|
|
95
|
+
// private timer?: NodeJS.Timeout;
|
|
96
|
+
constructor() {
|
|
97
|
+
_define_property(this, "cache", void 0);
|
|
98
|
+
this.cache = new _lrucache.default({
|
|
99
|
+
max: 256 * MB,
|
|
100
|
+
length: getContentLength,
|
|
101
|
+
maxAge: 5 * 60 * 5e3
|
|
102
|
+
});
|
|
103
|
+
}
|
|
105
104
|
}
|
|
106
105
|
const reader = new LruReader();
|
|
107
106
|
const readFile = async (filepath) => {
|
|
108
107
|
const file = await reader.read(filepath);
|
|
109
|
-
return file
|
|
108
|
+
return file === null || file === void 0 ? void 0 : file.content;
|
|
110
109
|
};
|
|
111
110
|
const updateFile = () => {
|
|
112
111
|
reader.update();
|
|
@@ -117,11 +116,3 @@ const init = () => {
|
|
|
117
116
|
const close = () => {
|
|
118
117
|
reader.close();
|
|
119
118
|
};
|
|
120
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
121
|
-
0 && (module.exports = {
|
|
122
|
-
LruReader,
|
|
123
|
-
close,
|
|
124
|
-
init,
|
|
125
|
-
readFile,
|
|
126
|
-
updateFile
|
|
127
|
-
});
|
|
@@ -1,57 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
-
var __export = (target, all) => {
|
|
8
|
-
for (var name in all)
|
|
9
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
-
};
|
|
11
|
-
var __copyProps = (to, from, except, desc) => {
|
|
12
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
-
for (let key of __getOwnPropNames(from))
|
|
14
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
-
}
|
|
17
|
-
return to;
|
|
18
|
-
};
|
|
19
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
-
mod
|
|
26
|
-
));
|
|
27
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
-
var ssr_exports = {};
|
|
29
|
-
__export(ssr_exports, {
|
|
30
|
-
render: () => render
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
31
4
|
});
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
5
|
+
Object.defineProperty(exports, "render", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: () => render
|
|
8
|
+
});
|
|
9
|
+
const _path = /* @__PURE__ */ _interop_require_default(require("path"));
|
|
10
|
+
const _utils = require("@modern-js/utils");
|
|
11
|
+
const _constants = require("@modern-js/utils/constants");
|
|
12
|
+
const _cache = /* @__PURE__ */ _interop_require_default(require("./cache"));
|
|
13
|
+
const _measure = require("./measure");
|
|
14
|
+
const _utils1 = require("./utils");
|
|
15
|
+
function _interop_require_default(obj) {
|
|
16
|
+
return obj && obj.__esModule ? obj : {
|
|
17
|
+
default: obj
|
|
18
|
+
};
|
|
19
|
+
}
|
|
39
20
|
const render = async (ctx, renderOptions, runner) => {
|
|
40
|
-
var
|
|
41
|
-
const {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
staticGenerate,
|
|
48
|
-
enableUnsafeCtx = false
|
|
49
|
-
} = renderOptions;
|
|
50
|
-
const bundleJS = import_path.default.join(distDir, bundle);
|
|
51
|
-
const loadableUri = import_path.default.join(distDir, import_constants.LOADABLE_STATS_FILE);
|
|
52
|
-
const loadableStats = import_utils.fs.existsSync(loadableUri) ? require(loadableUri) : "";
|
|
53
|
-
const routesManifestUri = import_path.default.join(distDir, import_constants.ROUTE_MANIFEST_FILE);
|
|
54
|
-
const routeManifest = import_utils.fs.existsSync(routesManifestUri) ? require(routesManifestUri) : void 0;
|
|
21
|
+
var _ctx_res;
|
|
22
|
+
const { urlPath, bundle, distDir, template, entryName, staticGenerate, enableUnsafeCtx = false } = renderOptions;
|
|
23
|
+
const bundleJS = _path.default.join(distDir, bundle);
|
|
24
|
+
const loadableUri = _path.default.join(distDir, _constants.LOADABLE_STATS_FILE);
|
|
25
|
+
const loadableStats = _utils.fs.existsSync(loadableUri) ? require(loadableUri) : "";
|
|
26
|
+
const routesManifestUri = _path.default.join(distDir, _constants.ROUTE_MANIFEST_FILE);
|
|
27
|
+
const routeManifest = _utils.fs.existsSync(routesManifestUri) ? require(routesManifestUri) : void 0;
|
|
55
28
|
const context = {
|
|
56
29
|
request: {
|
|
57
30
|
baseUrl: urlPath,
|
|
@@ -69,13 +42,12 @@ const render = async (ctx, renderOptions, runner) => {
|
|
|
69
42
|
status: (code) => {
|
|
70
43
|
ctx.res.statusCode = code;
|
|
71
44
|
},
|
|
72
|
-
locals: ((
|
|
45
|
+
locals: ((_ctx_res = ctx.res) === null || _ctx_res === void 0 ? void 0 : _ctx_res.locals) || {}
|
|
73
46
|
},
|
|
74
47
|
redirection: {},
|
|
75
48
|
template,
|
|
76
49
|
loadableStats,
|
|
77
50
|
routeManifest,
|
|
78
|
-
// for streaming ssr
|
|
79
51
|
entryName,
|
|
80
52
|
staticGenerate,
|
|
81
53
|
logger: void 0,
|
|
@@ -84,11 +56,11 @@ const render = async (ctx, renderOptions, runner) => {
|
|
|
84
56
|
res: ctx.res,
|
|
85
57
|
enableUnsafeCtx
|
|
86
58
|
};
|
|
87
|
-
context.logger = (0,
|
|
88
|
-
context.metrics = (0,
|
|
59
|
+
context.logger = (0, _measure.createLogger)(context, ctx.logger);
|
|
60
|
+
context.metrics = (0, _measure.createMetrics)(context, ctx.metrics);
|
|
89
61
|
runner.extendSSRContext(context);
|
|
90
|
-
const serverRender = require(bundleJS)[
|
|
91
|
-
const content = await (0,
|
|
62
|
+
const serverRender = require(bundleJS)[_constants.SERVER_RENDER_FUNCTION_NAME];
|
|
63
|
+
const content = await (0, _cache.default)(serverRender, ctx)(context);
|
|
92
64
|
const { url, status = 302 } = context.redirection;
|
|
93
65
|
if (url) {
|
|
94
66
|
return {
|
|
@@ -100,18 +72,14 @@ const render = async (ctx, renderOptions, runner) => {
|
|
|
100
72
|
}
|
|
101
73
|
if (typeof content === "string") {
|
|
102
74
|
return {
|
|
103
|
-
content: (0,
|
|
104
|
-
contentType:
|
|
75
|
+
content: (0, _utils1.injectServerData)(content, ctx),
|
|
76
|
+
contentType: _utils.mime.contentType("html")
|
|
105
77
|
};
|
|
106
78
|
} else {
|
|
107
79
|
return {
|
|
108
80
|
content: "",
|
|
109
|
-
contentStream: (0,
|
|
110
|
-
contentType:
|
|
81
|
+
contentStream: (0, _utils1.injectServerDataStream)(content, ctx),
|
|
82
|
+
contentType: _utils.mime.contentType("html")
|
|
111
83
|
};
|
|
112
84
|
}
|
|
113
85
|
};
|
|
114
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
115
|
-
0 && (module.exports = {
|
|
116
|
-
render
|
|
117
|
-
});
|
|
@@ -1,54 +1,35 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
for (var name in all)
|
|
9
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
-
};
|
|
11
|
-
var __copyProps = (to, from, except, desc) => {
|
|
12
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
-
for (let key of __getOwnPropNames(from))
|
|
14
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
-
}
|
|
17
|
-
return to;
|
|
18
|
-
};
|
|
19
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
-
mod
|
|
26
|
-
));
|
|
27
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
-
var static_exports = {};
|
|
29
|
-
__export(static_exports, {
|
|
30
|
-
handleDirectory: () => handleDirectory
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "handleDirectory", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: () => handleDirectory
|
|
31
8
|
});
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
9
|
+
const _path = /* @__PURE__ */ _interop_require_default(require("path"));
|
|
10
|
+
const _utils = require("@modern-js/utils");
|
|
11
|
+
const _reader = require("./reader");
|
|
12
|
+
function _interop_require_default(obj) {
|
|
13
|
+
return obj && obj.__esModule ? obj : {
|
|
14
|
+
default: obj
|
|
15
|
+
};
|
|
16
|
+
}
|
|
36
17
|
async function handleDirectory(ctx, entryPath, urlPath) {
|
|
37
18
|
const { path: pathname } = ctx;
|
|
38
|
-
const filepath =
|
|
39
|
-
let content = await (0,
|
|
40
|
-
let contentType =
|
|
19
|
+
const filepath = _path.default.join(entryPath, trimLeft(pathname, urlPath));
|
|
20
|
+
let content = await (0, _reader.readFile)(filepath);
|
|
21
|
+
let contentType = _utils.mime.contentType(_path.default.extname(filepath) || "");
|
|
41
22
|
if (!content) {
|
|
42
23
|
if (pathname.endsWith("/")) {
|
|
43
|
-
content = await (0,
|
|
24
|
+
content = await (0, _reader.readFile)(`${filepath}index.html`);
|
|
44
25
|
} else if (!pathname.includes(".")) {
|
|
45
|
-
content = await (0,
|
|
26
|
+
content = await (0, _reader.readFile)(`${filepath}.html`);
|
|
46
27
|
if (!content) {
|
|
47
|
-
content = await (0,
|
|
28
|
+
content = await (0, _reader.readFile)(`${filepath}/index.html`);
|
|
48
29
|
}
|
|
49
30
|
}
|
|
50
31
|
if (content) {
|
|
51
|
-
contentType =
|
|
32
|
+
contentType = _utils.mime.contentType("html");
|
|
52
33
|
}
|
|
53
34
|
}
|
|
54
35
|
if (!content) {
|
|
@@ -65,7 +46,3 @@ const trimLeft = (str, prefix) => {
|
|
|
65
46
|
}
|
|
66
47
|
return str;
|
|
67
48
|
};
|
|
68
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
69
|
-
0 && (module.exports = {
|
|
70
|
-
handleDirectory
|
|
71
|
-
});
|