@modern-js/prod-server 2.19.1 → 2.21.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 +34 -0
- package/dist/cjs/index.js +3 -15
- package/dist/cjs/libs/context/context.js +10 -26
- package/dist/cjs/libs/hook-api/index.js +13 -29
- package/dist/cjs/libs/hook-api/route.js +4 -16
- package/dist/cjs/libs/hook-api/template.js +2 -14
- package/dist/cjs/libs/loadConfig.js +4 -47
- package/dist/cjs/libs/logger.js +5 -17
- package/dist/cjs/libs/render/cache/__tests__/cache.fun.test.js +2 -6
- package/dist/cjs/libs/render/cache/page-caches/lru.js +5 -21
- package/dist/cjs/libs/render/cache/spr.js +7 -23
- package/dist/cjs/libs/render/cache/util.js +2 -6
- package/dist/cjs/libs/render/index.js +7 -49
- package/dist/cjs/libs/render/reader.js +4 -20
- package/dist/cjs/libs/render/ssr.js +8 -10
- package/dist/cjs/libs/render/static.js +2 -6
- package/dist/cjs/libs/route/index.js +3 -15
- package/dist/cjs/libs/route/matcher.js +5 -17
- package/dist/cjs/libs/route/route.js +10 -22
- package/dist/cjs/libs/serveFile.js +2 -6
- package/dist/cjs/server/index.js +9 -25
- package/dist/cjs/server/modernServer.js +28 -82
- package/dist/cjs/workerServer.js +103 -48
- package/dist/esm/libs/context/context.js +4 -42
- package/dist/esm/libs/hook-api/index.js +6 -132
- package/dist/esm/libs/hook-api/route.js +3 -35
- package/dist/esm/libs/hook-api/template.js +3 -35
- package/dist/esm/libs/loadConfig.js +2 -52
- package/dist/esm/libs/logger.js +7 -101
- package/dist/esm/libs/proxy.js +5 -194
- package/dist/esm/libs/render/cache/__tests__/cache.fun.test.js +6 -192
- package/dist/esm/libs/render/cache/__tests__/cache.test.js +13 -202
- package/dist/esm/libs/render/cache/index.js +8 -164
- package/dist/esm/libs/render/cache/page-caches/index.js +3 -132
- package/dist/esm/libs/render/cache/page-caches/lru.js +3 -35
- package/dist/esm/libs/render/cache/spr.js +10 -171
- package/dist/esm/libs/render/cache/util.js +6 -211
- package/dist/esm/libs/render/index.js +6 -134
- package/dist/esm/libs/render/measure.js +4 -93
- package/dist/esm/libs/render/reader.js +8 -169
- package/dist/esm/libs/render/ssr.js +15 -137
- package/dist/esm/libs/render/static.js +3 -132
- package/dist/esm/libs/route/index.js +3 -35
- package/dist/esm/libs/route/matcher.js +3 -35
- package/dist/esm/libs/route/route.js +2 -18
- package/dist/esm/libs/serveFile.js +3 -132
- package/dist/esm/server/index.js +16 -247
- package/dist/esm/server/modernServer.js +24 -229
- package/dist/esm/server/modernServerSplit.js +12 -253
- package/dist/esm/utils.js +2 -62
- package/dist/esm/workerServer.js +134 -190
- package/dist/esm-node/libs/context/context.js +1 -13
- package/dist/esm-node/libs/hook-api/index.js +1 -13
- package/dist/esm-node/libs/hook-api/route.js +1 -13
- package/dist/esm-node/libs/hook-api/template.js +1 -13
- package/dist/esm-node/libs/logger.js +1 -13
- package/dist/esm-node/libs/render/cache/page-caches/lru.js +1 -13
- package/dist/esm-node/libs/render/cache/spr.js +1 -13
- package/dist/esm-node/libs/render/index.js +3 -2
- package/dist/esm-node/libs/render/reader.js +1 -13
- package/dist/esm-node/libs/render/ssr.js +5 -3
- package/dist/esm-node/libs/route/index.js +1 -13
- package/dist/esm-node/libs/route/matcher.js +1 -13
- package/dist/esm-node/libs/route/route.js +1 -13
- package/dist/esm-node/server/index.js +1 -13
- package/dist/esm-node/server/modernServer.js +4 -15
- package/dist/esm-node/workerServer.js +102 -47
- package/dist/types/index.d.ts +0 -2
- package/dist/types/libs/context/context.d.ts +1 -4
- package/dist/types/libs/loadConfig.d.ts +0 -1
- package/dist/types/libs/logger.d.ts +0 -2
- package/dist/types/libs/render/cache/index.d.ts +0 -2
- package/dist/types/libs/render/cache/spr.d.ts +0 -2
- package/dist/types/libs/render/index.d.ts +3 -1
- package/dist/types/libs/render/ssr.d.ts +1 -0
- package/dist/types/server/index.d.ts +0 -3
- package/dist/types/utils.d.ts +1 -1
- package/dist/types/workerServer.d.ts +33 -5
- package/package.json +9 -8
|
@@ -13,20 +13,8 @@ _export(exports, {
|
|
|
13
13
|
RouteMatchManager: () => RouteMatchManager,
|
|
14
14
|
RouteMatcher: () => _matcher.RouteMatcher
|
|
15
15
|
});
|
|
16
|
+
const _define_property = require("@swc/helpers/_/_define_property");
|
|
16
17
|
const _matcher = require("./matcher");
|
|
17
|
-
function _define_property(obj, key, value) {
|
|
18
|
-
if (key in obj) {
|
|
19
|
-
Object.defineProperty(obj, key, {
|
|
20
|
-
value,
|
|
21
|
-
enumerable: true,
|
|
22
|
-
configurable: true,
|
|
23
|
-
writable: true
|
|
24
|
-
});
|
|
25
|
-
} else {
|
|
26
|
-
obj[key] = value;
|
|
27
|
-
}
|
|
28
|
-
return obj;
|
|
29
|
-
}
|
|
30
18
|
class RouteMatchManager {
|
|
31
19
|
// get all routes matches pathname
|
|
32
20
|
filter(pathname) {
|
|
@@ -76,8 +64,8 @@ class RouteMatchManager {
|
|
|
76
64
|
return bundles;
|
|
77
65
|
}
|
|
78
66
|
constructor() {
|
|
79
|
-
_define_property(this, "matchers", void 0);
|
|
80
|
-
_define_property(this, "specs", []);
|
|
67
|
+
_define_property._(this, "matchers", void 0);
|
|
68
|
+
_define_property._(this, "specs", []);
|
|
81
69
|
this.matchers = [];
|
|
82
70
|
}
|
|
83
71
|
}
|
|
@@ -6,21 +6,9 @@ Object.defineProperty(exports, "RouteMatcher", {
|
|
|
6
6
|
enumerable: true,
|
|
7
7
|
get: () => RouteMatcher
|
|
8
8
|
});
|
|
9
|
+
const _define_property = require("@swc/helpers/_/_define_property");
|
|
9
10
|
const _pathtoregexp = require("path-to-regexp");
|
|
10
11
|
const _route = require("./route");
|
|
11
|
-
function _define_property(obj, key, value) {
|
|
12
|
-
if (key in obj) {
|
|
13
|
-
Object.defineProperty(obj, key, {
|
|
14
|
-
value,
|
|
15
|
-
enumerable: true,
|
|
16
|
-
configurable: true,
|
|
17
|
-
writable: true
|
|
18
|
-
});
|
|
19
|
-
} else {
|
|
20
|
-
obj[key] = value;
|
|
21
|
-
}
|
|
22
|
-
return obj;
|
|
23
|
-
}
|
|
24
12
|
const removeTailSlash = (s) => s.replace(/\/+$/, "");
|
|
25
13
|
const removeHtmlSuffix = (url) => {
|
|
26
14
|
if (url.endsWith(".html")) {
|
|
@@ -100,10 +88,10 @@ class RouteMatcher {
|
|
|
100
88
|
}
|
|
101
89
|
}
|
|
102
90
|
constructor(spec) {
|
|
103
|
-
_define_property(this, "spec", void 0);
|
|
104
|
-
_define_property(this, "urlPath", "");
|
|
105
|
-
_define_property(this, "urlMatcher", void 0);
|
|
106
|
-
_define_property(this, "urlReg", void 0);
|
|
91
|
+
_define_property._(this, "spec", void 0);
|
|
92
|
+
_define_property._(this, "urlPath", "");
|
|
93
|
+
_define_property._(this, "urlMatcher", void 0);
|
|
94
|
+
_define_property._(this, "urlReg", void 0);
|
|
107
95
|
this.spec = spec;
|
|
108
96
|
this.setupUrlPath();
|
|
109
97
|
}
|
|
@@ -6,30 +6,18 @@ Object.defineProperty(exports, "ModernRoute", {
|
|
|
6
6
|
enumerable: true,
|
|
7
7
|
get: () => ModernRoute
|
|
8
8
|
});
|
|
9
|
-
|
|
10
|
-
if (key in obj) {
|
|
11
|
-
Object.defineProperty(obj, key, {
|
|
12
|
-
value,
|
|
13
|
-
enumerable: true,
|
|
14
|
-
configurable: true,
|
|
15
|
-
writable: true
|
|
16
|
-
});
|
|
17
|
-
} else {
|
|
18
|
-
obj[key] = value;
|
|
19
|
-
}
|
|
20
|
-
return obj;
|
|
21
|
-
}
|
|
9
|
+
const _define_property = require("@swc/helpers/_/_define_property");
|
|
22
10
|
class ModernRoute {
|
|
23
11
|
constructor(routeSpec) {
|
|
24
|
-
_define_property(this, "entryName", void 0);
|
|
25
|
-
_define_property(this, "urlPath", void 0);
|
|
26
|
-
_define_property(this, "entryPath", void 0);
|
|
27
|
-
_define_property(this, "bundle", void 0);
|
|
28
|
-
_define_property(this, "isApi", void 0);
|
|
29
|
-
_define_property(this, "isSSR", void 0);
|
|
30
|
-
_define_property(this, "isSPA", void 0);
|
|
31
|
-
_define_property(this, "params", {});
|
|
32
|
-
_define_property(this, "responseHeaders", void 0);
|
|
12
|
+
_define_property._(this, "entryName", void 0);
|
|
13
|
+
_define_property._(this, "urlPath", void 0);
|
|
14
|
+
_define_property._(this, "entryPath", void 0);
|
|
15
|
+
_define_property._(this, "bundle", void 0);
|
|
16
|
+
_define_property._(this, "isApi", void 0);
|
|
17
|
+
_define_property._(this, "isSSR", void 0);
|
|
18
|
+
_define_property._(this, "isSPA", void 0);
|
|
19
|
+
_define_property._(this, "params", {});
|
|
20
|
+
_define_property._(this, "responseHeaders", void 0);
|
|
33
21
|
this.entryName = routeSpec.entryName || "";
|
|
34
22
|
this.urlPath = routeSpec.urlPath;
|
|
35
23
|
this.entryPath = routeSpec.entryPath || "";
|
|
@@ -13,13 +13,9 @@ _export(exports, {
|
|
|
13
13
|
faviconFallbackHandler: () => faviconFallbackHandler,
|
|
14
14
|
createStaticFileHandler: () => createStaticFileHandler
|
|
15
15
|
});
|
|
16
|
-
const
|
|
16
|
+
const _interop_require_default = require("@swc/helpers/_/_interop_require_default");
|
|
17
|
+
const _servestatic = /* @__PURE__ */ _interop_require_default._(require("serve-static"));
|
|
17
18
|
const _utils = require("@modern-js/utils");
|
|
18
|
-
function _interop_require_default(obj) {
|
|
19
|
-
return obj && obj.__esModule ? obj : {
|
|
20
|
-
default: obj
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
19
|
const removedPrefix = (req, prefix) => {
|
|
24
20
|
const useLocalPrefix = !prefix.includes(".");
|
|
25
21
|
if (useLocalPrefix) {
|
package/dist/cjs/server/index.js
CHANGED
|
@@ -6,31 +6,15 @@ Object.defineProperty(exports, "Server", {
|
|
|
6
6
|
enumerable: true,
|
|
7
7
|
get: () => Server
|
|
8
8
|
});
|
|
9
|
-
const
|
|
9
|
+
const _define_property = require("@swc/helpers/_/_define_property");
|
|
10
|
+
const _interop_require_default = require("@swc/helpers/_/_interop_require_default");
|
|
11
|
+
const _path = /* @__PURE__ */ _interop_require_default._(require("path"));
|
|
10
12
|
const _utils = require("@modern-js/utils");
|
|
11
13
|
const _servercore = require("@modern-js/server-core");
|
|
12
14
|
const _metrics = require("../libs/metrics");
|
|
13
15
|
const _loadConfig = require("../libs/loadConfig");
|
|
14
16
|
const _utils1 = require("../utils");
|
|
15
17
|
const _modernServerSplit = require("./modernServerSplit");
|
|
16
|
-
function _define_property(obj, key, value) {
|
|
17
|
-
if (key in obj) {
|
|
18
|
-
Object.defineProperty(obj, key, {
|
|
19
|
-
value,
|
|
20
|
-
enumerable: true,
|
|
21
|
-
configurable: true,
|
|
22
|
-
writable: true
|
|
23
|
-
});
|
|
24
|
-
} else {
|
|
25
|
-
obj[key] = value;
|
|
26
|
-
}
|
|
27
|
-
return obj;
|
|
28
|
-
}
|
|
29
|
-
function _interop_require_default(obj) {
|
|
30
|
-
return obj && obj.__esModule ? obj : {
|
|
31
|
-
default: obj
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
18
|
class Server {
|
|
35
19
|
/**
|
|
36
20
|
* 初始化顺序
|
|
@@ -181,12 +165,12 @@ class Server {
|
|
|
181
165
|
}
|
|
182
166
|
}
|
|
183
167
|
constructor(options) {
|
|
184
|
-
_define_property(this, "options", void 0);
|
|
185
|
-
_define_property(this, "serverImpl", _modernServerSplit.createProdServer);
|
|
186
|
-
_define_property(this, "server", void 0);
|
|
187
|
-
_define_property(this, "app", void 0);
|
|
188
|
-
_define_property(this, "runner", void 0);
|
|
189
|
-
_define_property(this, "serverConfig", void 0);
|
|
168
|
+
_define_property._(this, "options", void 0);
|
|
169
|
+
_define_property._(this, "serverImpl", _modernServerSplit.createProdServer);
|
|
170
|
+
_define_property._(this, "server", void 0);
|
|
171
|
+
_define_property._(this, "app", void 0);
|
|
172
|
+
_define_property._(this, "runner", void 0);
|
|
173
|
+
_define_property._(this, "serverConfig", void 0);
|
|
190
174
|
options.logger = options.logger || new _utils.Logger({
|
|
191
175
|
level: "warn"
|
|
192
176
|
});
|
|
@@ -6,81 +6,26 @@ Object.defineProperty(exports, "ModernServer", {
|
|
|
6
6
|
enumerable: true,
|
|
7
7
|
get: () => ModernServer
|
|
8
8
|
});
|
|
9
|
+
const _define_property = require("@swc/helpers/_/_define_property");
|
|
10
|
+
const _interop_require_default = require("@swc/helpers/_/_interop_require_default");
|
|
11
|
+
const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
|
|
9
12
|
const _http = require("http");
|
|
10
|
-
const _path = /* @__PURE__ */ _interop_require_default(require("path"));
|
|
13
|
+
const _path = /* @__PURE__ */ _interop_require_default._(require("path"));
|
|
11
14
|
const _utils = require("@modern-js/utils");
|
|
12
15
|
const _route = require("../libs/route");
|
|
13
16
|
const _render = require("../libs/render");
|
|
14
17
|
const _serveFile = require("../libs/serveFile");
|
|
15
18
|
const _utils1 = require("../utils");
|
|
16
|
-
const _reader = /* @__PURE__ */ _interop_require_wildcard(require("../libs/render/reader"));
|
|
19
|
+
const _reader = /* @__PURE__ */ _interop_require_wildcard._(require("../libs/render/reader"));
|
|
17
20
|
const _proxy = require("../libs/proxy");
|
|
18
21
|
const _context = require("../libs/context");
|
|
19
22
|
const _constants = require("../constants");
|
|
20
23
|
const _hookapi = require("../libs/hook-api");
|
|
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
|
-
function _getRequireWildcardCache(nodeInterop) {
|
|
40
|
-
if (typeof WeakMap !== "function")
|
|
41
|
-
return null;
|
|
42
|
-
var cacheBabelInterop = /* @__PURE__ */ new WeakMap();
|
|
43
|
-
var cacheNodeInterop = /* @__PURE__ */ new WeakMap();
|
|
44
|
-
return (_getRequireWildcardCache = function(nodeInterop2) {
|
|
45
|
-
return nodeInterop2 ? cacheNodeInterop : cacheBabelInterop;
|
|
46
|
-
})(nodeInterop);
|
|
47
|
-
}
|
|
48
|
-
function _interop_require_wildcard(obj, nodeInterop) {
|
|
49
|
-
if (!nodeInterop && obj && obj.__esModule) {
|
|
50
|
-
return obj;
|
|
51
|
-
}
|
|
52
|
-
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
53
|
-
return {
|
|
54
|
-
default: obj
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
var cache = _getRequireWildcardCache(nodeInterop);
|
|
58
|
-
if (cache && cache.has(obj)) {
|
|
59
|
-
return cache.get(obj);
|
|
60
|
-
}
|
|
61
|
-
var newObj = {};
|
|
62
|
-
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
63
|
-
for (var key in obj) {
|
|
64
|
-
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
65
|
-
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
66
|
-
if (desc && (desc.get || desc.set)) {
|
|
67
|
-
Object.defineProperty(newObj, key, desc);
|
|
68
|
-
} else {
|
|
69
|
-
newObj[key] = obj[key];
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
newObj.default = obj;
|
|
74
|
-
if (cache) {
|
|
75
|
-
cache.set(obj, newObj);
|
|
76
|
-
}
|
|
77
|
-
return newObj;
|
|
78
|
-
}
|
|
79
24
|
const SERVER_DIR = "./server";
|
|
80
25
|
class ModernServer {
|
|
81
26
|
// server prepare
|
|
82
27
|
async onInit(runner, app) {
|
|
83
|
-
var _conf_bff, _this_conf_server, _this_conf_output;
|
|
28
|
+
var _conf_bff, _this_conf_server, _conf_security, _this_conf_output;
|
|
84
29
|
this.runner = runner;
|
|
85
30
|
const { distDir, staticGenerate, conf } = this;
|
|
86
31
|
(0, _utils1.debug)("final server conf", this.conf);
|
|
@@ -104,7 +49,8 @@ class ModernServer {
|
|
|
104
49
|
this.routeRenderHandler = (0, _render.createRenderHandler)({
|
|
105
50
|
distDir,
|
|
106
51
|
staticGenerate,
|
|
107
|
-
forceCSR
|
|
52
|
+
forceCSR,
|
|
53
|
+
nonce: (_conf_security = conf.security) === null || _conf_security === void 0 ? void 0 : _conf_security.nonce
|
|
108
54
|
});
|
|
109
55
|
await this.setupBeforeProdMiddleware();
|
|
110
56
|
this.addHandler(this.setupStaticMiddleware((_this_conf_output = this.conf.output) === null || _this_conf_output === void 0 ? void 0 : _this_conf_output.assetPrefix));
|
|
@@ -494,26 +440,26 @@ class ModernServer {
|
|
|
494
440
|
context.res.end((0, _utils1.createErrorDocument)(status, text));
|
|
495
441
|
}
|
|
496
442
|
constructor({ pwd, config, routes, staticGenerate, logger, metrics, runMode, proxyTarget }) {
|
|
497
|
-
_define_property(this, "pwd", void 0);
|
|
498
|
-
_define_property(this, "distDir", void 0);
|
|
499
|
-
_define_property(this, "workDir", void 0);
|
|
500
|
-
_define_property(this, "router", void 0);
|
|
501
|
-
_define_property(this, "conf", void 0);
|
|
502
|
-
_define_property(this, "handlers", []);
|
|
503
|
-
_define_property(this, "presetRoutes", void 0);
|
|
504
|
-
_define_property(this, "runner", void 0);
|
|
505
|
-
_define_property(this, "logger", void 0);
|
|
506
|
-
_define_property(this, "metrics", void 0);
|
|
507
|
-
_define_property(this, "runMode", void 0);
|
|
508
|
-
_define_property(this, "reader", _reader);
|
|
509
|
-
_define_property(this, "proxyTarget", void 0);
|
|
510
|
-
_define_property(this, "routeRenderHandler", void 0);
|
|
511
|
-
_define_property(this, "loaderHandler", null);
|
|
512
|
-
_define_property(this, "frameWebHandler", null);
|
|
513
|
-
_define_property(this, "frameAPIHandler", null);
|
|
514
|
-
_define_property(this, "proxyHandler", null);
|
|
515
|
-
_define_property(this, "_handler", void 0);
|
|
516
|
-
_define_property(this, "staticGenerate", void 0);
|
|
443
|
+
_define_property._(this, "pwd", void 0);
|
|
444
|
+
_define_property._(this, "distDir", void 0);
|
|
445
|
+
_define_property._(this, "workDir", void 0);
|
|
446
|
+
_define_property._(this, "router", void 0);
|
|
447
|
+
_define_property._(this, "conf", void 0);
|
|
448
|
+
_define_property._(this, "handlers", []);
|
|
449
|
+
_define_property._(this, "presetRoutes", void 0);
|
|
450
|
+
_define_property._(this, "runner", void 0);
|
|
451
|
+
_define_property._(this, "logger", void 0);
|
|
452
|
+
_define_property._(this, "metrics", void 0);
|
|
453
|
+
_define_property._(this, "runMode", void 0);
|
|
454
|
+
_define_property._(this, "reader", _reader);
|
|
455
|
+
_define_property._(this, "proxyTarget", void 0);
|
|
456
|
+
_define_property._(this, "routeRenderHandler", void 0);
|
|
457
|
+
_define_property._(this, "loaderHandler", null);
|
|
458
|
+
_define_property._(this, "frameWebHandler", null);
|
|
459
|
+
_define_property._(this, "frameAPIHandler", null);
|
|
460
|
+
_define_property._(this, "proxyHandler", null);
|
|
461
|
+
_define_property._(this, "_handler", void 0);
|
|
462
|
+
_define_property._(this, "staticGenerate", void 0);
|
|
517
463
|
require("ignore-styles");
|
|
518
464
|
this.pwd = pwd;
|
|
519
465
|
this.distDir = _path.default.join(pwd, config.output.path || "dist");
|
package/dist/cjs/workerServer.js
CHANGED
|
@@ -10,74 +10,129 @@ function _export(target, all) {
|
|
|
10
10
|
});
|
|
11
11
|
}
|
|
12
12
|
_export(exports, {
|
|
13
|
-
|
|
13
|
+
ReturnResponse: () => ReturnResponse,
|
|
14
14
|
createHandler: () => createHandler
|
|
15
15
|
});
|
|
16
|
+
const _define_property = require("@swc/helpers/_/_define_property");
|
|
16
17
|
const _logger = require("./libs/logger");
|
|
17
18
|
const _route = require("./libs/route");
|
|
18
19
|
const _metrics = require("./libs/metrics");
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
class ReturnResponse {
|
|
21
|
+
/**
|
|
22
|
+
* Iterate a Object
|
|
23
|
+
* 1. adds the value if the key does not already exist.
|
|
24
|
+
* 2. append the value if the key does already exist.
|
|
25
|
+
*
|
|
26
|
+
* more detail follow: https://developer.mozilla.org/en-US/docs/Web/API/Headers/append
|
|
27
|
+
* @param headers
|
|
28
|
+
* @returns
|
|
29
|
+
*/
|
|
30
|
+
appendHeaders(headers) {
|
|
31
|
+
Object.entries(headers).forEach(([key, value]) => {
|
|
32
|
+
this.headers.append(key, value.toString());
|
|
33
|
+
});
|
|
34
|
+
return this;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Iterate a Object
|
|
38
|
+
* 1. adds the value if the key does not already exist.
|
|
39
|
+
* 2. modify the value if the key does already exist.
|
|
40
|
+
*
|
|
41
|
+
* more detail follow: https://developer.mozilla.org/en-US/docs/Web/API/Headers/set
|
|
42
|
+
* @param headers
|
|
43
|
+
* @returns
|
|
44
|
+
*/
|
|
45
|
+
setHeaders(headers) {
|
|
46
|
+
Object.entries(headers).forEach(([key, value]) => {
|
|
47
|
+
this.headers.set(key, value.toString());
|
|
48
|
+
});
|
|
49
|
+
return this;
|
|
50
|
+
}
|
|
51
|
+
constructor(body, status, headers = {}) {
|
|
52
|
+
_define_property._(this, "body", void 0);
|
|
53
|
+
_define_property._(this, "status", void 0);
|
|
54
|
+
_define_property._(this, "headers", void 0);
|
|
55
|
+
this.body = body;
|
|
56
|
+
this.status = status;
|
|
57
|
+
this.headers = new Headers(headers);
|
|
58
|
+
this.headers.set("content-type", "text/html;charset=UTF-8");
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
const RESPONSE_NOTFOUND = new ReturnResponse("404: Page not found", 404);
|
|
22
62
|
const createHandler = (manifest) => {
|
|
23
63
|
const routeMgr = new _route.RouteMatchManager();
|
|
24
64
|
const { pages, routes } = manifest;
|
|
25
65
|
routeMgr.reset(routes);
|
|
26
|
-
return async (
|
|
27
|
-
|
|
28
|
-
const
|
|
66
|
+
return async (options) => {
|
|
67
|
+
const { request, loadableStats, routeManifest } = options;
|
|
68
|
+
const url = new URL(request.url);
|
|
69
|
+
const pageMatch = routeMgr.match(url.pathname);
|
|
29
70
|
if (!pageMatch) {
|
|
30
|
-
|
|
31
|
-
ctx.status = 404;
|
|
32
|
-
return;
|
|
71
|
+
return RESPONSE_NOTFOUND;
|
|
33
72
|
}
|
|
34
73
|
const page = pages[pageMatch.spec.urlPath];
|
|
35
|
-
var _query;
|
|
36
|
-
(_query = (_ctx_request = ctx.request).query) !== null && _query !== void 0 ? _query : _ctx_request.query = ctx.query;
|
|
37
|
-
var _pathname;
|
|
38
|
-
(_pathname = (_ctx_request1 = ctx.request).pathname) !== null && _pathname !== void 0 ? _pathname : _ctx_request1.pathname = ctx.pathname;
|
|
39
|
-
var _params;
|
|
40
|
-
(_params = (_ctx_request2 = ctx.request).params) !== null && _params !== void 0 ? _params : _ctx_request2.params = ctx.params;
|
|
41
|
-
const params = pageMatch.parseURLParams(ctx.url);
|
|
42
74
|
if (page.serverRender) {
|
|
43
75
|
try {
|
|
44
|
-
|
|
45
|
-
|
|
76
|
+
const responseLike = {
|
|
77
|
+
headers: {},
|
|
78
|
+
statusCode: 200,
|
|
79
|
+
locals: {},
|
|
80
|
+
setHeader(key, value) {
|
|
81
|
+
this.headers[key] = value;
|
|
82
|
+
},
|
|
83
|
+
status(code) {
|
|
84
|
+
this.statusCode = code;
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
const params = pageMatch.parseURLParams(url.pathname) || {};
|
|
88
|
+
const serverRenderContext = {
|
|
89
|
+
request: createServerRequest(url, request, params),
|
|
90
|
+
response: responseLike,
|
|
91
|
+
loadableStats,
|
|
92
|
+
routeManifest,
|
|
93
|
+
redirection: {},
|
|
46
94
|
template: page.template,
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
response: ctx.response,
|
|
50
|
-
pathname: ctx.pathname,
|
|
51
|
-
req: ctx.request,
|
|
52
|
-
res: ctx.response,
|
|
53
|
-
params: ctx.params || params || {},
|
|
54
|
-
logger: ctx.logger || new _logger.Logger({
|
|
95
|
+
entryName: page.entryName,
|
|
96
|
+
logger: new _logger.Logger({
|
|
55
97
|
level: "warn"
|
|
56
98
|
}),
|
|
57
|
-
metrics:
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
99
|
+
metrics: _metrics.metrics,
|
|
100
|
+
// FIXME: pass correctly req & res
|
|
101
|
+
req: request,
|
|
102
|
+
res: responseLike
|
|
103
|
+
};
|
|
104
|
+
const body = await page.serverRender(serverRenderContext);
|
|
105
|
+
return new ReturnResponse(body, responseLike.statusCode, responseLike.headers);
|
|
63
106
|
} catch (e) {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
return;
|
|
68
|
-
} else {
|
|
69
|
-
ctx.body = "404: not found";
|
|
70
|
-
ctx.status = 404;
|
|
71
|
-
return;
|
|
72
|
-
}
|
|
107
|
+
console.warn(`page(${pageMatch.spec.urlPath}) serverRender occur error: `);
|
|
108
|
+
console.warn(e);
|
|
109
|
+
return createResponse(page.template);
|
|
73
110
|
}
|
|
74
111
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
112
|
+
console.warn(`Can't not page(${pageMatch.spec.urlPath}) serverRender`);
|
|
113
|
+
return createResponse(page.template);
|
|
114
|
+
function createServerRequest(url2, request2, params) {
|
|
115
|
+
const { pathname, host, searchParams } = url2;
|
|
116
|
+
const { headers: rawHeaders } = request2;
|
|
117
|
+
const headers = {};
|
|
118
|
+
rawHeaders.forEach((value, key) => {
|
|
119
|
+
headers[key] = value;
|
|
120
|
+
});
|
|
121
|
+
const query = Object.fromEntries(searchParams);
|
|
122
|
+
return {
|
|
123
|
+
pathname,
|
|
124
|
+
host,
|
|
125
|
+
headers,
|
|
126
|
+
params,
|
|
127
|
+
query
|
|
128
|
+
};
|
|
79
129
|
}
|
|
80
|
-
ctx.body = "404: not found";
|
|
81
|
-
ctx.status = 404;
|
|
82
130
|
};
|
|
83
131
|
};
|
|
132
|
+
function createResponse(template) {
|
|
133
|
+
if (template) {
|
|
134
|
+
return new ReturnResponse(template, 200);
|
|
135
|
+
} else {
|
|
136
|
+
return RESPONSE_NOTFOUND;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
@@ -1,45 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
}
|
|
6
|
-
function _defineProperties(target, props) {
|
|
7
|
-
for (var i = 0; i < props.length; i++) {
|
|
8
|
-
var descriptor = props[i];
|
|
9
|
-
descriptor.enumerable = descriptor.enumerable || false;
|
|
10
|
-
descriptor.configurable = true;
|
|
11
|
-
if ("value" in descriptor)
|
|
12
|
-
descriptor.writable = true;
|
|
13
|
-
Object.defineProperty(target, descriptor.key, descriptor);
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
function _create_class(Constructor, protoProps, staticProps) {
|
|
17
|
-
if (protoProps)
|
|
18
|
-
_defineProperties(Constructor.prototype, protoProps);
|
|
19
|
-
if (staticProps)
|
|
20
|
-
_defineProperties(Constructor, staticProps);
|
|
21
|
-
return Constructor;
|
|
22
|
-
}
|
|
23
|
-
function _define_property(obj, key, value) {
|
|
24
|
-
if (key in obj) {
|
|
25
|
-
Object.defineProperty(obj, key, {
|
|
26
|
-
value: value,
|
|
27
|
-
enumerable: true,
|
|
28
|
-
configurable: true,
|
|
29
|
-
writable: true
|
|
30
|
-
});
|
|
31
|
-
} else {
|
|
32
|
-
obj[key] = value;
|
|
33
|
-
}
|
|
34
|
-
return obj;
|
|
35
|
-
}
|
|
36
|
-
function _instanceof(left, right) {
|
|
37
|
-
if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
|
|
38
|
-
return !!right[Symbol.hasInstance](left);
|
|
39
|
-
} else {
|
|
40
|
-
return left instanceof right;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
1
|
+
import { _ as _class_call_check } from "@swc/helpers/_/_class_call_check";
|
|
2
|
+
import { _ as _create_class } from "@swc/helpers/_/_create_class";
|
|
3
|
+
import { _ as _define_property } from "@swc/helpers/_/_define_property";
|
|
4
|
+
import { _ as _instanceof } from "@swc/helpers/_/_instanceof";
|
|
43
5
|
import { URL } from "url";
|
|
44
6
|
import qs from "querystring";
|
|
45
7
|
import { Buffer } from "buffer";
|