@modern-js/prod-server 2.14.0 → 2.16.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,86 +1,90 @@
|
|
|
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 modernServer_exports = {};
|
|
29
|
-
__export(modernServer_exports, {
|
|
30
|
-
ModernServer: () => ModernServer
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
31
4
|
});
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
5
|
+
Object.defineProperty(exports, "ModernServer", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: () => ModernServer
|
|
8
|
+
});
|
|
9
|
+
const _http = require("http");
|
|
10
|
+
const _path = /* @__PURE__ */ _interop_require_default(require("path"));
|
|
11
|
+
const _utils = require("@modern-js/utils");
|
|
12
|
+
const _route = require("../libs/route");
|
|
13
|
+
const _render = require("../libs/render");
|
|
14
|
+
const _serveFile = require("../libs/serveFile");
|
|
15
|
+
const _utils1 = require("../utils");
|
|
16
|
+
const _reader = /* @__PURE__ */ _interop_require_wildcard(require("../libs/render/reader"));
|
|
17
|
+
const _proxy = require("../libs/proxy");
|
|
18
|
+
const _context = require("../libs/context");
|
|
19
|
+
const _constants = require("../constants");
|
|
20
|
+
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
|
+
}
|
|
45
79
|
const SERVER_DIR = "./server";
|
|
46
80
|
class ModernServer {
|
|
47
|
-
constructor({
|
|
48
|
-
pwd,
|
|
49
|
-
config,
|
|
50
|
-
routes,
|
|
51
|
-
staticGenerate,
|
|
52
|
-
logger,
|
|
53
|
-
metrics,
|
|
54
|
-
runMode,
|
|
55
|
-
proxyTarget
|
|
56
|
-
}) {
|
|
57
|
-
this.handlers = [];
|
|
58
|
-
this.reader = reader;
|
|
59
|
-
this.loaderHandler = null;
|
|
60
|
-
this.frameWebHandler = null;
|
|
61
|
-
this.frameAPIHandler = null;
|
|
62
|
-
this.proxyHandler = null;
|
|
63
|
-
require("ignore-styles");
|
|
64
|
-
this.pwd = pwd;
|
|
65
|
-
this.distDir = import_path.default.join(pwd, config.output.path || "dist");
|
|
66
|
-
this.workDir = this.distDir;
|
|
67
|
-
this.conf = config;
|
|
68
|
-
(0, import_utils2.debug)("server conf", this.conf);
|
|
69
|
-
this.logger = logger;
|
|
70
|
-
this.metrics = metrics;
|
|
71
|
-
this.router = new import_route.RouteMatchManager();
|
|
72
|
-
this.presetRoutes = routes;
|
|
73
|
-
this.proxyTarget = proxyTarget;
|
|
74
|
-
this.staticGenerate = staticGenerate || false;
|
|
75
|
-
this.runMode = runMode || import_constants.RUN_MODE.FULL;
|
|
76
|
-
}
|
|
77
81
|
// server prepare
|
|
78
82
|
async onInit(runner, app) {
|
|
79
|
-
var
|
|
83
|
+
var _conf_bff, _this_conf_server, _this_conf_output;
|
|
80
84
|
this.runner = runner;
|
|
81
85
|
const { distDir, staticGenerate, conf } = this;
|
|
82
|
-
(0,
|
|
83
|
-
this.proxyHandler = (0,
|
|
86
|
+
(0, _utils1.debug)("final server conf", this.conf);
|
|
87
|
+
this.proxyHandler = (0, _proxy.createProxyHandler)((_conf_bff = conf.bff) === null || _conf_bff === void 0 ? void 0 : _conf_bff.proxy);
|
|
84
88
|
if (this.proxyHandler) {
|
|
85
89
|
this.proxyHandler.forEach((handler) => {
|
|
86
90
|
this.addHandler(handler);
|
|
@@ -95,30 +99,33 @@ class ModernServer {
|
|
|
95
99
|
this.warmupSSRBundle();
|
|
96
100
|
await this.prepareFrameHandler();
|
|
97
101
|
await this.prepareLoaderHandler(usageRoutes, distDir);
|
|
98
|
-
const ssrConfig = (
|
|
102
|
+
const ssrConfig = (_this_conf_server = this.conf.server) === null || _this_conf_server === void 0 ? void 0 : _this_conf_server.ssr;
|
|
99
103
|
const forceCSR = typeof ssrConfig === "object" ? ssrConfig.forceCSR : false;
|
|
100
|
-
this.routeRenderHandler = (0,
|
|
104
|
+
this.routeRenderHandler = (0, _render.createRenderHandler)({
|
|
101
105
|
distDir,
|
|
102
106
|
staticGenerate,
|
|
103
107
|
forceCSR
|
|
104
108
|
});
|
|
105
109
|
await this.setupBeforeProdMiddleware();
|
|
106
|
-
this.addHandler(this.setupStaticMiddleware((
|
|
107
|
-
this.addHandler(
|
|
110
|
+
this.addHandler(this.setupStaticMiddleware((_this_conf_output = this.conf.output) === null || _this_conf_output === void 0 ? void 0 : _this_conf_output.assetPrefix));
|
|
111
|
+
this.addHandler(_serveFile.faviconFallbackHandler);
|
|
108
112
|
this.addHandler(this.routeHandler.bind(this));
|
|
109
113
|
this.compose();
|
|
110
114
|
}
|
|
111
115
|
// server ready
|
|
112
116
|
onRepack(_) {
|
|
113
117
|
}
|
|
114
|
-
onServerChange({ filepath }) {
|
|
118
|
+
async onServerChange({ filepath }) {
|
|
115
119
|
const { pwd } = this;
|
|
116
|
-
const { api, server } =
|
|
117
|
-
const apiPath =
|
|
118
|
-
const serverPath =
|
|
120
|
+
const { api, server } = _constants.AGGRED_DIR;
|
|
121
|
+
const apiPath = _path.default.normalize(_path.default.join(pwd, api));
|
|
122
|
+
const serverPath = _path.default.normalize(_path.default.join(pwd, server));
|
|
119
123
|
const onlyApi = filepath.startsWith(apiPath);
|
|
120
124
|
const onlyWeb = filepath.startsWith(serverPath);
|
|
121
|
-
this.prepareFrameHandler({
|
|
125
|
+
await this.prepareFrameHandler({
|
|
126
|
+
onlyWeb,
|
|
127
|
+
onlyApi
|
|
128
|
+
});
|
|
122
129
|
}
|
|
123
130
|
// exposed requestHandler
|
|
124
131
|
getRequestHandler() {
|
|
@@ -127,7 +134,7 @@ class ModernServer {
|
|
|
127
134
|
async render(req, res, url) {
|
|
128
135
|
req.logger = req.logger || this.logger;
|
|
129
136
|
req.metrics = req.metrics || this.metrics;
|
|
130
|
-
const context = (0,
|
|
137
|
+
const context = (0, _context.createContext)(req, res);
|
|
131
138
|
const matched = this.router.match(url || context.path);
|
|
132
139
|
if (!matched) {
|
|
133
140
|
return null;
|
|
@@ -143,7 +150,7 @@ class ModernServer {
|
|
|
143
150
|
return result.content.toString();
|
|
144
151
|
}
|
|
145
152
|
async createHTTPServer(handler) {
|
|
146
|
-
return (0,
|
|
153
|
+
return (0, _http.createServer)(handler);
|
|
147
154
|
}
|
|
148
155
|
/* —————————————————————— function will be overwrite —————————————————————— */
|
|
149
156
|
// get routes info
|
|
@@ -151,9 +158,9 @@ class ModernServer {
|
|
|
151
158
|
if (this.presetRoutes) {
|
|
152
159
|
return this.presetRoutes;
|
|
153
160
|
}
|
|
154
|
-
const file =
|
|
155
|
-
if (
|
|
156
|
-
const content =
|
|
161
|
+
const file = _path.default.join(this.distDir, _utils.ROUTE_SPEC_FILE);
|
|
162
|
+
if (_utils.fs.existsSync(file)) {
|
|
163
|
+
const content = _utils.fs.readJSONSync(file);
|
|
157
164
|
return content.routes;
|
|
158
165
|
}
|
|
159
166
|
return [];
|
|
@@ -165,71 +172,66 @@ class ModernServer {
|
|
|
165
172
|
}
|
|
166
173
|
// return 404 page
|
|
167
174
|
render404(context) {
|
|
168
|
-
context.error(
|
|
175
|
+
context.error(_constants.ERROR_DIGEST.ENOTF, "404 Not Found");
|
|
169
176
|
this.renderErrorPage(context, 404);
|
|
170
177
|
}
|
|
171
178
|
async prepareLoaderHandler(specs, distDir) {
|
|
172
179
|
const { runner } = this;
|
|
173
|
-
const handler = await runner.prepareLoaderHandler(
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
onLast: () => null
|
|
180
|
-
}
|
|
181
|
-
);
|
|
180
|
+
const handler = await runner.prepareLoaderHandler({
|
|
181
|
+
serverRoutes: specs,
|
|
182
|
+
distDir
|
|
183
|
+
}, {
|
|
184
|
+
onLast: () => null
|
|
185
|
+
});
|
|
182
186
|
this.loaderHandler = handler;
|
|
183
187
|
}
|
|
184
188
|
// gather frame extension and get framework handler
|
|
185
189
|
async prepareFrameHandler(options) {
|
|
186
190
|
const { workDir, runner } = this;
|
|
187
191
|
const { onlyApi, onlyWeb } = options || {};
|
|
188
|
-
const { getMiddlewares, ...collector } = (0,
|
|
192
|
+
const { getMiddlewares, ...collector } = (0, _utils1.createMiddlewareCollecter)();
|
|
189
193
|
await runner.gather(collector);
|
|
190
194
|
const { api: pluginAPIExt, web: pluginWebExt } = getMiddlewares();
|
|
191
|
-
const serverDir =
|
|
192
|
-
if (await
|
|
193
|
-
const webExtension = (0,
|
|
195
|
+
const serverDir = _path.default.join(workDir, SERVER_DIR);
|
|
196
|
+
if (await _utils.fs.pathExists(_path.default.join(serverDir)) && !onlyApi) {
|
|
197
|
+
const webExtension = (0, _utils1.mergeExtension)(pluginWebExt);
|
|
194
198
|
this.frameWebHandler = await this.prepareWebHandler(webExtension);
|
|
195
199
|
}
|
|
196
200
|
if (!onlyWeb) {
|
|
197
|
-
const apiExtension = (0,
|
|
201
|
+
const apiExtension = (0, _utils1.mergeExtension)(pluginAPIExt);
|
|
198
202
|
this.frameAPIHandler = await this.prepareAPIHandler(apiExtension);
|
|
199
203
|
}
|
|
200
204
|
}
|
|
201
205
|
async prepareWebHandler(extension) {
|
|
202
206
|
const { workDir, runner } = this;
|
|
203
|
-
const handler = await runner.prepareWebServer(
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
);
|
|
207
|
+
const handler = await runner.prepareWebServer({
|
|
208
|
+
pwd: workDir,
|
|
209
|
+
config: extension
|
|
210
|
+
}, {
|
|
211
|
+
onLast: () => null
|
|
212
|
+
});
|
|
210
213
|
return handler;
|
|
211
214
|
}
|
|
212
215
|
async prepareAPIHandler(extension) {
|
|
213
216
|
const { workDir, runner, conf } = this;
|
|
214
217
|
const { bff } = conf;
|
|
215
|
-
const prefix = (bff
|
|
216
|
-
const webOnly = await (0,
|
|
218
|
+
const prefix = (bff === null || bff === void 0 ? void 0 : bff.prefix) || "/api";
|
|
219
|
+
const webOnly = await (0, _utils.isWebOnly)();
|
|
217
220
|
if (webOnly && process.env.NODE_ENV === "development") {
|
|
218
221
|
return (req, res) => {
|
|
219
222
|
res.setHeader("Content-Type", "text/plain");
|
|
220
223
|
res.end(JSON.stringify(""));
|
|
221
224
|
};
|
|
222
225
|
}
|
|
223
|
-
return runner.prepareApiServer(
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
);
|
|
226
|
+
return runner.prepareApiServer({
|
|
227
|
+
pwd: workDir,
|
|
228
|
+
config: extension,
|
|
229
|
+
prefix: Array.isArray(prefix) ? prefix[0] : prefix,
|
|
230
|
+
httpMethodDecider: bff === null || bff === void 0 ? void 0 : bff.httpMethodDecider,
|
|
231
|
+
render: this.render.bind(this)
|
|
232
|
+
}, {
|
|
233
|
+
onLast: () => null
|
|
234
|
+
});
|
|
233
235
|
}
|
|
234
236
|
filterRoutes(routes) {
|
|
235
237
|
return routes;
|
|
@@ -242,20 +244,13 @@ class ModernServer {
|
|
|
242
244
|
});
|
|
243
245
|
}
|
|
244
246
|
setupStaticMiddleware(prefix) {
|
|
245
|
-
const staticPathRegExp = (0,
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
{
|
|
253
|
-
path: staticPathRegExp,
|
|
254
|
-
target: this.distDir
|
|
255
|
-
}
|
|
256
|
-
],
|
|
257
|
-
prefix
|
|
258
|
-
);
|
|
247
|
+
const staticPathRegExp = (0, _utils1.getStaticReg)(this.conf.output, this.conf.html, prefix);
|
|
248
|
+
return (0, _serveFile.createStaticFileHandler)([
|
|
249
|
+
{
|
|
250
|
+
path: staticPathRegExp,
|
|
251
|
+
target: this.distDir
|
|
252
|
+
}
|
|
253
|
+
], prefix);
|
|
259
254
|
}
|
|
260
255
|
async handleAPI(context) {
|
|
261
256
|
const { req, res } = context;
|
|
@@ -295,11 +290,7 @@ class ModernServer {
|
|
|
295
290
|
return null;
|
|
296
291
|
}
|
|
297
292
|
if (renderResult.redirect) {
|
|
298
|
-
this.redirect(
|
|
299
|
-
res,
|
|
300
|
-
renderResult.content,
|
|
301
|
-
renderResult.statusCode
|
|
302
|
-
);
|
|
293
|
+
this.redirect(res, renderResult.content, renderResult.statusCode);
|
|
303
294
|
return null;
|
|
304
295
|
}
|
|
305
296
|
if (this.isSend(res)) {
|
|
@@ -316,14 +307,14 @@ class ModernServer {
|
|
|
316
307
|
const { distDir } = this;
|
|
317
308
|
const bundles = this.router.getBundles();
|
|
318
309
|
bundles.forEach((bundle) => {
|
|
319
|
-
const filepath =
|
|
320
|
-
if (
|
|
310
|
+
const filepath = _path.default.join(distDir, bundle);
|
|
311
|
+
if (_utils.fs.existsSync(filepath)) {
|
|
321
312
|
require(filepath);
|
|
322
313
|
}
|
|
323
314
|
});
|
|
324
315
|
}
|
|
325
316
|
createContext(req, res, options = {}) {
|
|
326
|
-
return (0,
|
|
317
|
+
return (0, _context.createContext)(req, res, options);
|
|
327
318
|
}
|
|
328
319
|
/* —————————————————————— private function —————————————————————— */
|
|
329
320
|
// handler route.json, include api / csr / ssr
|
|
@@ -340,12 +331,11 @@ class ModernServer {
|
|
|
340
331
|
return;
|
|
341
332
|
}
|
|
342
333
|
if (route.entryName) {
|
|
343
|
-
const afterMatchContext = (0,
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
await this.runner.afterMatch(afterMatchContext, { onLast: import_utils2.noop });
|
|
334
|
+
const afterMatchContext = (0, _hookapi.createAfterMatchContext)(context, route.entryName);
|
|
335
|
+
if (this.runMode === _constants.RUN_MODE.FULL) {
|
|
336
|
+
await this.runner.afterMatch(afterMatchContext, {
|
|
337
|
+
onLast: _utils1.noop
|
|
338
|
+
});
|
|
349
339
|
}
|
|
350
340
|
if (this.isSend(res)) {
|
|
351
341
|
return;
|
|
@@ -366,7 +356,7 @@ class ModernServer {
|
|
|
366
356
|
}
|
|
367
357
|
if (this.frameWebHandler) {
|
|
368
358
|
res.locals = res.locals || {};
|
|
369
|
-
const middlewareContext = (0,
|
|
359
|
+
const middlewareContext = (0, _hookapi.createMiddlewareContext)(context);
|
|
370
360
|
await this.frameWebHandler(middlewareContext);
|
|
371
361
|
res.locals = {
|
|
372
362
|
...res.locals,
|
|
@@ -387,12 +377,11 @@ class ModernServer {
|
|
|
387
377
|
return;
|
|
388
378
|
}
|
|
389
379
|
if (route.entryName) {
|
|
390
|
-
const afterRenderContext = (0,
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
await this.runner.afterRender(afterRenderContext, { onLast: import_utils2.noop });
|
|
380
|
+
const afterRenderContext = (0, _hookapi.createAfterRenderContext)(context, response.toString());
|
|
381
|
+
if (this.runMode === _constants.RUN_MODE.FULL) {
|
|
382
|
+
await this.runner.afterRender(afterRenderContext, {
|
|
383
|
+
onLast: _utils1.noop
|
|
384
|
+
});
|
|
396
385
|
}
|
|
397
386
|
if (this.isSend(res)) {
|
|
398
387
|
return;
|
|
@@ -405,7 +394,7 @@ class ModernServer {
|
|
|
405
394
|
if (res.headersSent) {
|
|
406
395
|
return true;
|
|
407
396
|
}
|
|
408
|
-
if (res.getHeader("Location") && (0,
|
|
397
|
+
if (res.getHeader("Location") && (0, _utils1.isRedirect)(res.statusCode)) {
|
|
409
398
|
res.end();
|
|
410
399
|
return true;
|
|
411
400
|
}
|
|
@@ -434,7 +423,7 @@ class ModernServer {
|
|
|
434
423
|
}
|
|
435
424
|
try {
|
|
436
425
|
const result = handler(context, dispatch);
|
|
437
|
-
if ((0,
|
|
426
|
+
if ((0, _utils.isPromise)(result)) {
|
|
438
427
|
return result.catch(onError);
|
|
439
428
|
}
|
|
440
429
|
} catch (e) {
|
|
@@ -458,8 +447,8 @@ class ModernServer {
|
|
|
458
447
|
} catch (e) {
|
|
459
448
|
this.logger.error(e);
|
|
460
449
|
res.statusCode = 500;
|
|
461
|
-
res.setHeader("content-type",
|
|
462
|
-
return res.end((0,
|
|
450
|
+
res.setHeader("content-type", _utils.mime.contentType("html"));
|
|
451
|
+
return res.end((0, _utils1.createErrorDocument)(500, _constants.ERROR_PAGE_TEXT[500]));
|
|
463
452
|
}
|
|
464
453
|
try {
|
|
465
454
|
return this._handler(context, next);
|
|
@@ -473,13 +462,13 @@ class ModernServer {
|
|
|
473
462
|
res.end();
|
|
474
463
|
}
|
|
475
464
|
onError(context, err) {
|
|
476
|
-
context.error(
|
|
465
|
+
context.error(_constants.ERROR_DIGEST.EINTER, err);
|
|
477
466
|
this.renderErrorPage(context, 500);
|
|
478
467
|
}
|
|
479
468
|
async renderErrorPage(context, status) {
|
|
480
469
|
const { res } = context;
|
|
481
470
|
context.status = status;
|
|
482
|
-
res.setHeader("content-type",
|
|
471
|
+
res.setHeader("content-type", _utils.mime.contentType("html"));
|
|
483
472
|
const statusPage = `/${status}`;
|
|
484
473
|
const customErrorPage = `/_error`;
|
|
485
474
|
const matched = this.router.match(statusPage) || this.router.match(customErrorPage);
|
|
@@ -501,11 +490,42 @@ class ModernServer {
|
|
|
501
490
|
}
|
|
502
491
|
}
|
|
503
492
|
}
|
|
504
|
-
const text =
|
|
505
|
-
context.res.end((0,
|
|
493
|
+
const text = _constants.ERROR_PAGE_TEXT[status] || _constants.ERROR_PAGE_TEXT[500];
|
|
494
|
+
context.res.end((0, _utils1.createErrorDocument)(status, text));
|
|
495
|
+
}
|
|
496
|
+
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);
|
|
517
|
+
require("ignore-styles");
|
|
518
|
+
this.pwd = pwd;
|
|
519
|
+
this.distDir = _path.default.join(pwd, config.output.path || "dist");
|
|
520
|
+
this.workDir = this.distDir;
|
|
521
|
+
this.conf = config;
|
|
522
|
+
(0, _utils1.debug)("server conf", this.conf);
|
|
523
|
+
this.logger = logger;
|
|
524
|
+
this.metrics = metrics;
|
|
525
|
+
this.router = new _route.RouteMatchManager();
|
|
526
|
+
this.presetRoutes = routes;
|
|
527
|
+
this.proxyTarget = proxyTarget;
|
|
528
|
+
this.staticGenerate = staticGenerate || false;
|
|
529
|
+
this.runMode = runMode || _constants.RUN_MODE.FULL;
|
|
506
530
|
}
|
|
507
531
|
}
|
|
508
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
509
|
-
0 && (module.exports = {
|
|
510
|
-
ModernServer
|
|
511
|
-
});
|
|
@@ -1,27 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __export = (target, all) => {
|
|
6
|
-
for (var name in all)
|
|
7
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
-
};
|
|
9
|
-
var __copyProps = (to, from, except, desc) => {
|
|
10
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
-
for (let key of __getOwnPropNames(from))
|
|
12
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
-
}
|
|
15
|
-
return to;
|
|
16
|
-
};
|
|
17
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
-
var modernServerSplit_exports = {};
|
|
19
|
-
__export(modernServerSplit_exports, {
|
|
20
|
-
createProdServer: () => createProdServer
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
21
4
|
});
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
5
|
+
Object.defineProperty(exports, "createProdServer", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: () => createProdServer
|
|
8
|
+
});
|
|
9
|
+
const _modernServer = require("./modernServer");
|
|
10
|
+
class ModernSSRServer extends _modernServer.ModernServer {
|
|
25
11
|
prepareAPIHandler(_) {
|
|
26
12
|
return null;
|
|
27
13
|
}
|
|
@@ -29,7 +15,7 @@ class ModernSSRServer extends import_modernServer.ModernServer {
|
|
|
29
15
|
return this.render404(context);
|
|
30
16
|
}
|
|
31
17
|
}
|
|
32
|
-
class ModernAPIServer extends
|
|
18
|
+
class ModernAPIServer extends _modernServer.ModernServer {
|
|
33
19
|
prepareWebHandler(_) {
|
|
34
20
|
return null;
|
|
35
21
|
}
|
|
@@ -37,7 +23,7 @@ class ModernAPIServer extends import_modernServer.ModernServer {
|
|
|
37
23
|
return routes.filter((route) => route.isApi);
|
|
38
24
|
}
|
|
39
25
|
}
|
|
40
|
-
class ModernWebServer extends
|
|
26
|
+
class ModernWebServer extends _modernServer.ModernServer {
|
|
41
27
|
async warmupSSRBundle() {
|
|
42
28
|
return null;
|
|
43
29
|
}
|
|
@@ -57,10 +43,6 @@ const createProdServer = (options) => {
|
|
|
57
43
|
} else if (options.webOnly) {
|
|
58
44
|
return new ModernWebServer(options);
|
|
59
45
|
} else {
|
|
60
|
-
return new
|
|
46
|
+
return new _modernServer.ModernServer(options);
|
|
61
47
|
}
|
|
62
48
|
};
|
|
63
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
64
|
-
0 && (module.exports = {
|
|
65
|
-
createProdServer
|
|
66
|
-
});
|
package/dist/cjs/type.js
CHANGED
|
@@ -1,15 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
var __copyProps = (to, from, except, desc) => {
|
|
6
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
7
|
-
for (let key of __getOwnPropNames(from))
|
|
8
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
9
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
10
|
-
}
|
|
11
|
-
return to;
|
|
12
|
-
};
|
|
13
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
14
|
-
var type_exports = {};
|
|
15
|
-
module.exports = __toCommonJS(type_exports);
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|