@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
package/dist/cjs/server/index.js
CHANGED
|
@@ -1,66 +1,51 @@
|
|
|
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 server_exports = {};
|
|
29
|
-
__export(server_exports, {
|
|
30
|
-
Server: () => Server
|
|
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, "Server", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: () => Server
|
|
8
|
+
});
|
|
9
|
+
const _path = /* @__PURE__ */ _interop_require_default(require("path"));
|
|
10
|
+
const _utils = require("@modern-js/utils");
|
|
11
|
+
const _servercore = require("@modern-js/server-core");
|
|
12
|
+
const _metrics = require("../libs/metrics");
|
|
13
|
+
const _loadConfig = require("../libs/loadConfig");
|
|
14
|
+
const _utils1 = require("../utils");
|
|
15
|
+
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
|
|
45
23
|
});
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
this.serverConfig = {};
|
|
24
|
+
} else {
|
|
25
|
+
obj[key] = value;
|
|
49
26
|
}
|
|
27
|
+
return obj;
|
|
28
|
+
}
|
|
29
|
+
function _interop_require_default(obj) {
|
|
30
|
+
return obj && obj.__esModule ? obj : {
|
|
31
|
+
default: obj
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
class Server {
|
|
50
35
|
/**
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
36
|
+
* 初始化顺序
|
|
37
|
+
* - 读取 .env.{process.env.MODERN_ENV} 文件,加载环境变量
|
|
38
|
+
* - 获取 server runtime config
|
|
39
|
+
* - 设置 context
|
|
40
|
+
* - 创建 hooksRunner
|
|
41
|
+
* - 合并插件,内置插件和 serverConfig 中配置的插件
|
|
42
|
+
* - 执行 config hook
|
|
43
|
+
* - 获取最终的配置
|
|
44
|
+
* - 设置配置到 context
|
|
45
|
+
* - 初始化 server
|
|
46
|
+
* - 执行 prepare hook
|
|
47
|
+
* - 执行 server init
|
|
48
|
+
*/
|
|
64
49
|
async init() {
|
|
65
50
|
const { options } = this;
|
|
66
51
|
await this.loadServerEnv(options);
|
|
@@ -76,10 +61,10 @@ class Server {
|
|
|
76
61
|
return this;
|
|
77
62
|
}
|
|
78
63
|
/**
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
64
|
+
* Execute config hooks
|
|
65
|
+
* @param runner
|
|
66
|
+
* @param options
|
|
67
|
+
*/
|
|
83
68
|
runConfigHook(runner, serverConfig) {
|
|
84
69
|
const newServerConfig = runner.config(serverConfig || {});
|
|
85
70
|
return newServerConfig;
|
|
@@ -89,28 +74,21 @@ class Server {
|
|
|
89
74
|
}
|
|
90
75
|
initServerConfig(options) {
|
|
91
76
|
const { pwd, serverConfigFile } = options;
|
|
92
|
-
const distDirectory =
|
|
93
|
-
const serverConfigPath = (0,
|
|
94
|
-
|
|
95
|
-
serverConfigFile
|
|
96
|
-
);
|
|
97
|
-
const serverConfig = (0, import_loadConfig.requireConfig)(serverConfigPath);
|
|
77
|
+
const distDirectory = _path.default.join(pwd, options.config.output.path || "dist");
|
|
78
|
+
const serverConfigPath = (0, _loadConfig.getServerConfigPath)(distDirectory, serverConfigFile);
|
|
79
|
+
const serverConfig = (0, _loadConfig.requireConfig)(serverConfigPath);
|
|
98
80
|
this.serverConfig = serverConfig;
|
|
99
81
|
}
|
|
100
82
|
/**
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
83
|
+
*
|
|
84
|
+
* merge cliConfig and serverConfig
|
|
85
|
+
*/
|
|
104
86
|
async initConfig(runner, options) {
|
|
105
87
|
const { pwd, config } = options;
|
|
106
88
|
const { serverConfig } = this;
|
|
107
89
|
const finalServerConfig = this.runConfigHook(runner, serverConfig);
|
|
108
|
-
const resolvedConfigPath =
|
|
109
|
-
|
|
110
|
-
config.output.path || "dist",
|
|
111
|
-
import_utils.OUTPUT_CONFIG_FILE
|
|
112
|
-
);
|
|
113
|
-
options.config = (0, import_loadConfig.loadConfig)({
|
|
90
|
+
const resolvedConfigPath = _path.default.join(pwd, config.output.path || "dist", _utils.OUTPUT_CONFIG_FILE);
|
|
91
|
+
options.config = (0, _loadConfig.loadConfig)({
|
|
114
92
|
cliConfig: config,
|
|
115
93
|
serverConfig: finalServerConfig,
|
|
116
94
|
resolvedConfigPath
|
|
@@ -121,11 +99,13 @@ class Server {
|
|
|
121
99
|
}
|
|
122
100
|
listen(options, listener) {
|
|
123
101
|
const callback = () => {
|
|
124
|
-
listener
|
|
102
|
+
listener === null || listener === void 0 ? void 0 : listener();
|
|
125
103
|
};
|
|
126
104
|
if (typeof options === "object") {
|
|
127
105
|
if (process.env.PORT) {
|
|
128
|
-
Object.assign(options, {
|
|
106
|
+
Object.assign(options, {
|
|
107
|
+
port: process.env.PORT
|
|
108
|
+
});
|
|
129
109
|
}
|
|
130
110
|
this.app.listen(options, callback);
|
|
131
111
|
} else {
|
|
@@ -142,31 +122,30 @@ class Server {
|
|
|
142
122
|
return this.server.render(req, res, url);
|
|
143
123
|
}
|
|
144
124
|
async createHookRunner() {
|
|
145
|
-
|
|
125
|
+
_servercore.serverManager.clear();
|
|
146
126
|
const { options } = this;
|
|
147
|
-
const {
|
|
148
|
-
internalPlugins = import_utils.INTERNAL_SERVER_PLUGINS,
|
|
149
|
-
pwd,
|
|
150
|
-
plugins = []
|
|
151
|
-
} = options;
|
|
127
|
+
const { internalPlugins = _utils.INTERNAL_SERVER_PLUGINS, pwd, plugins = [] } = options;
|
|
152
128
|
const serverPlugins = this.serverConfig.plugins || [];
|
|
153
|
-
const loadedPlugins = (0,
|
|
129
|
+
const loadedPlugins = (0, _servercore.loadPlugins)(pwd, [
|
|
130
|
+
...serverPlugins,
|
|
131
|
+
...plugins
|
|
132
|
+
], {
|
|
154
133
|
internalPlugins
|
|
155
134
|
});
|
|
156
|
-
(0,
|
|
135
|
+
(0, _utils1.debug)("plugins", loadedPlugins);
|
|
157
136
|
loadedPlugins.forEach((p) => {
|
|
158
|
-
|
|
137
|
+
_servercore.serverManager.usePlugin(p);
|
|
159
138
|
});
|
|
160
|
-
const hooksRunner = await
|
|
139
|
+
const hooksRunner = await _servercore.serverManager.init();
|
|
161
140
|
return hooksRunner;
|
|
162
141
|
}
|
|
163
142
|
async injectContext(runner, options) {
|
|
164
143
|
const appContext = this.initAppContext();
|
|
165
144
|
const { config, pwd } = options;
|
|
166
|
-
|
|
167
|
-
|
|
145
|
+
_servercore.ConfigContext.set(config);
|
|
146
|
+
_servercore.AppContext.set({
|
|
168
147
|
...appContext,
|
|
169
|
-
distDirectory:
|
|
148
|
+
distDirectory: _path.default.join(pwd, config.output.path || "dist")
|
|
170
149
|
});
|
|
171
150
|
}
|
|
172
151
|
initAppContext() {
|
|
@@ -177,27 +156,42 @@ class Server {
|
|
|
177
156
|
}));
|
|
178
157
|
return {
|
|
179
158
|
appDirectory,
|
|
180
|
-
apiDirectory: appContext
|
|
181
|
-
lambdaDirectory: appContext
|
|
182
|
-
sharedDirectory: (appContext
|
|
183
|
-
distDirectory:
|
|
159
|
+
apiDirectory: appContext === null || appContext === void 0 ? void 0 : appContext.apiDirectory,
|
|
160
|
+
lambdaDirectory: appContext === null || appContext === void 0 ? void 0 : appContext.lambdaDirectory,
|
|
161
|
+
sharedDirectory: (appContext === null || appContext === void 0 ? void 0 : appContext.sharedDirectory) || _path.default.resolve(appDirectory, _utils.SHARED_DIR),
|
|
162
|
+
distDirectory: _path.default.join(appDirectory, config.output.path || "dist"),
|
|
184
163
|
plugins: serverPlugins
|
|
185
164
|
};
|
|
186
165
|
}
|
|
187
166
|
async loadServerEnv(options) {
|
|
188
167
|
const { pwd: appDirectory } = options;
|
|
189
168
|
const serverEnv = process.env.MODERN_ENV;
|
|
190
|
-
const defaultEnvPath =
|
|
191
|
-
const serverEnvPath =
|
|
192
|
-
for (const envPath of [
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
169
|
+
const defaultEnvPath = _path.default.resolve(appDirectory, `.env`);
|
|
170
|
+
const serverEnvPath = _path.default.resolve(appDirectory, `.env.${serverEnv}`);
|
|
171
|
+
for (const envPath of [
|
|
172
|
+
serverEnvPath,
|
|
173
|
+
defaultEnvPath
|
|
174
|
+
]) {
|
|
175
|
+
if (await _utils.fs.pathExists(envPath) && !(await _utils.fs.stat(envPath)).isDirectory()) {
|
|
176
|
+
const envConfig = _utils.dotenv.config({
|
|
177
|
+
path: envPath
|
|
178
|
+
});
|
|
179
|
+
(0, _utils.dotenvExpand)(envConfig);
|
|
196
180
|
}
|
|
197
181
|
}
|
|
198
182
|
}
|
|
183
|
+
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);
|
|
190
|
+
options.logger = options.logger || new _utils.Logger({
|
|
191
|
+
level: "warn"
|
|
192
|
+
});
|
|
193
|
+
options.metrics = options.metrics || _metrics.metrics;
|
|
194
|
+
this.options = options;
|
|
195
|
+
this.serverConfig = {};
|
|
196
|
+
}
|
|
199
197
|
}
|
|
200
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
201
|
-
0 && (module.exports = {
|
|
202
|
-
Server
|
|
203
|
-
});
|