@modern-js/prod-server 2.0.0-beta.0 → 2.0.0-beta.1
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 +55 -0
- package/dist/js/modern/constants.js +0 -2
- package/dist/js/modern/index.js +0 -1
- package/dist/js/modern/libs/context/context.js +10 -56
- package/dist/js/modern/libs/hook-api/index.js +0 -31
- package/dist/js/modern/libs/hook-api/route.js +0 -8
- package/dist/js/modern/libs/hook-api/template.js +0 -16
- package/dist/js/modern/libs/loadConfig.js +3 -10
- package/dist/js/modern/libs/metrics.js +6 -6
- package/dist/js/modern/libs/proxy.js +7 -12
- package/dist/js/modern/libs/render/cache/__tests__/cache.fun.test.js +0 -1
- package/dist/js/modern/libs/render/cache/__tests__/cache.test.js +0 -9
- package/dist/js/modern/libs/render/cache/index.js +8 -16
- package/dist/js/modern/libs/render/cache/page-caches/lru.js +0 -10
- package/dist/js/modern/libs/render/cache/spr.js +12 -62
- package/dist/js/modern/libs/render/cache/util.js +0 -6
- package/dist/js/modern/libs/render/index.js +6 -11
- package/dist/js/modern/libs/render/measure.js +1 -11
- package/dist/js/modern/libs/render/modern/index.js +2 -13
- package/dist/js/modern/libs/render/reader.js +13 -24
- package/dist/js/modern/libs/render/ssr.js +5 -6
- package/dist/js/modern/libs/render/static.js +6 -9
- package/dist/js/modern/libs/render/type.js +0 -1
- package/dist/js/modern/libs/route/index.js +8 -19
- package/dist/js/modern/libs/route/matcher.js +21 -29
- package/dist/js/modern/libs/route/route.js +0 -13
- package/dist/js/modern/libs/serve-file.js +5 -6
- package/dist/js/modern/server/index.js +19 -41
- package/dist/js/modern/server/modern-server-split.js +0 -11
- package/dist/js/modern/server/modern-server.js +83 -164
- package/dist/js/modern/utils.js +2 -21
- package/dist/js/modern/worker-server.js +34 -0
- package/dist/js/node/constants.js +0 -2
- package/dist/js/node/index.js +0 -10
- package/dist/js/node/libs/context/context.js +10 -65
- package/dist/js/node/libs/context/index.js +0 -3
- package/dist/js/node/libs/hook-api/index.js +0 -42
- package/dist/js/node/libs/hook-api/route.js +0 -10
- package/dist/js/node/libs/hook-api/template.js +0 -22
- package/dist/js/node/libs/loadConfig.js +3 -22
- package/dist/js/node/libs/metrics.js +6 -6
- package/dist/js/node/libs/proxy.js +7 -17
- package/dist/js/node/libs/render/cache/__tests__/cache.fun.test.js +0 -5
- package/dist/js/node/libs/render/cache/__tests__/cache.test.js +0 -12
- package/dist/js/node/libs/render/cache/index.js +8 -22
- package/dist/js/node/libs/render/cache/page-caches/index.js +0 -2
- package/dist/js/node/libs/render/cache/page-caches/lru.js +0 -14
- package/dist/js/node/libs/render/cache/spr.js +12 -71
- package/dist/js/node/libs/render/cache/util.js +0 -18
- package/dist/js/node/libs/render/index.js +6 -26
- package/dist/js/node/libs/render/measure.js +0 -17
- package/dist/js/node/libs/render/modern/index.js +2 -20
- package/dist/js/node/libs/render/reader.js +12 -39
- package/dist/js/node/libs/render/ssr.js +4 -16
- package/dist/js/node/libs/render/static.js +6 -18
- package/dist/js/node/libs/render/type.js +0 -1
- package/dist/js/node/libs/route/index.js +8 -22
- package/dist/js/node/libs/route/matcher.js +18 -34
- package/dist/js/node/libs/route/route.js +0 -15
- package/dist/js/node/libs/serve-file.js +5 -13
- package/dist/js/node/server/index.js +19 -61
- package/dist/js/node/server/modern-server-split.js +0 -13
- package/dist/js/node/server/modern-server.js +83 -193
- package/dist/js/node/utils.js +3 -46
- package/dist/js/node/worker-server.js +41 -0
- package/dist/js/treeshaking/constants.js +28 -0
- package/dist/js/treeshaking/index.js +13 -0
- package/dist/js/treeshaking/libs/context/context.js +243 -0
- package/dist/js/treeshaking/libs/context/index.js +5 -0
- package/dist/js/treeshaking/libs/hook-api/index.js +157 -0
- package/dist/js/treeshaking/libs/hook-api/route.js +33 -0
- package/dist/js/treeshaking/libs/hook-api/template.js +91 -0
- package/dist/js/treeshaking/libs/loadConfig.js +39 -0
- package/dist/js/treeshaking/libs/metrics.js +12 -0
- package/dist/js/treeshaking/libs/proxy.js +80 -0
- package/dist/js/treeshaking/libs/render/cache/__tests__/cache.fun.test.js +124 -0
- package/dist/js/treeshaking/libs/render/cache/__tests__/cache.test.js +464 -0
- package/dist/js/treeshaking/libs/render/cache/__tests__/cacheable.js +53 -0
- package/dist/js/treeshaking/libs/render/cache/__tests__/error-configuration.js +35 -0
- package/dist/js/treeshaking/libs/render/cache/__tests__/matched-cache.js +121 -0
- package/dist/js/treeshaking/libs/render/cache/index.js +184 -0
- package/dist/js/treeshaking/libs/render/cache/page-caches/index.js +30 -0
- package/dist/js/treeshaking/libs/render/cache/page-caches/lru.js +46 -0
- package/dist/js/treeshaking/libs/render/cache/spr.js +362 -0
- package/dist/js/treeshaking/libs/render/cache/type.js +1 -0
- package/dist/js/treeshaking/libs/render/cache/util.js +101 -0
- package/dist/js/treeshaking/libs/render/index.js +100 -0
- package/dist/js/treeshaking/libs/render/measure.js +61 -0
- package/dist/js/treeshaking/libs/render/modern/browser-list.js +7 -0
- package/dist/js/treeshaking/libs/render/modern/index.js +39 -0
- package/dist/js/treeshaking/libs/render/reader.js +191 -0
- package/dist/js/treeshaking/libs/render/ssr.js +98 -0
- package/dist/js/treeshaking/libs/render/static.js +84 -0
- package/dist/js/treeshaking/libs/render/type.js +6 -0
- package/dist/js/treeshaking/libs/route/index.js +94 -0
- package/dist/js/treeshaking/libs/route/matcher.js +113 -0
- package/dist/js/treeshaking/libs/route/route.js +26 -0
- package/dist/js/treeshaking/libs/serve-file.js +75 -0
- package/dist/js/treeshaking/server/index.js +343 -0
- package/dist/js/treeshaking/server/modern-server-split.js +152 -0
- package/dist/js/treeshaking/server/modern-server.js +945 -0
- package/dist/js/treeshaking/type.js +1 -0
- package/dist/js/treeshaking/utils.js +87 -0
- package/dist/js/treeshaking/worker-server.js +56 -0
- package/dist/types/index.d.ts +0 -2
- package/dist/types/libs/context/context.d.ts +0 -3
- package/dist/types/libs/loadConfig.d.ts +0 -1
- 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/server/index.d.ts +0 -3
- package/dist/types/utils.d.ts +0 -1
- package/dist/types/worker-server.d.ts +16 -0
- package/package.json +28 -12
|
@@ -4,45 +4,26 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.Server = void 0;
|
|
7
|
-
|
|
8
7
|
var _path = _interopRequireDefault(require("path"));
|
|
9
|
-
|
|
10
8
|
var _fs = _interopRequireDefault(require("fs"));
|
|
11
|
-
|
|
12
9
|
var _utils = require("@modern-js/utils");
|
|
13
|
-
|
|
14
10
|
var _serverCore = require("@modern-js/server-core");
|
|
15
|
-
|
|
16
11
|
var _metrics = require("../libs/metrics");
|
|
17
|
-
|
|
18
12
|
var _loadConfig = require("../libs/loadConfig");
|
|
19
|
-
|
|
20
13
|
var _utils2 = require("../utils");
|
|
21
|
-
|
|
22
14
|
var _modernServerSplit = require("./modern-server-split");
|
|
23
|
-
|
|
24
15
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
25
|
-
|
|
26
16
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
27
|
-
|
|
28
17
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
29
|
-
|
|
30
18
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
31
|
-
|
|
32
19
|
class Server {
|
|
33
20
|
constructor(options) {
|
|
34
21
|
_defineProperty(this, "options", void 0);
|
|
35
|
-
|
|
36
22
|
_defineProperty(this, "serverImpl", _modernServerSplit.createProdServer);
|
|
37
|
-
|
|
38
23
|
_defineProperty(this, "server", void 0);
|
|
39
|
-
|
|
40
24
|
_defineProperty(this, "app", void 0);
|
|
41
|
-
|
|
42
25
|
_defineProperty(this, "runner", void 0);
|
|
43
|
-
|
|
44
26
|
_defineProperty(this, "serverConfig", void 0);
|
|
45
|
-
|
|
46
27
|
options.logger = options.logger || new _utils.Logger({
|
|
47
28
|
level: 'warn'
|
|
48
29
|
});
|
|
@@ -50,6 +31,7 @@ class Server {
|
|
|
50
31
|
this.options = options;
|
|
51
32
|
this.serverConfig = {};
|
|
52
33
|
}
|
|
34
|
+
|
|
53
35
|
/**
|
|
54
36
|
* 初始化顺序
|
|
55
37
|
* - 读取 .env.{process.env.MODERN_ENV} 文件,加载环境变量
|
|
@@ -64,68 +46,63 @@ class Server {
|
|
|
64
46
|
* - 执行 prepare hook
|
|
65
47
|
* - 执行 server init
|
|
66
48
|
*/
|
|
67
|
-
|
|
68
|
-
|
|
69
49
|
async init() {
|
|
70
50
|
const {
|
|
71
51
|
options
|
|
72
52
|
} = this;
|
|
73
53
|
this.loadServerEnv(options);
|
|
74
54
|
this.initServerConfig(options);
|
|
75
|
-
await this.injectContext(this.runner, options);
|
|
55
|
+
await this.injectContext(this.runner, options);
|
|
76
56
|
|
|
77
|
-
|
|
57
|
+
// initialize server runner
|
|
58
|
+
this.runner = await this.createHookRunner();
|
|
78
59
|
|
|
60
|
+
// init config and execute config hook
|
|
79
61
|
await this.initConfig(this.runner, options);
|
|
80
|
-
await this.injectContext(this.runner, options);
|
|
62
|
+
await this.injectContext(this.runner, options);
|
|
81
63
|
|
|
64
|
+
// initialize server
|
|
82
65
|
this.server = this.serverImpl(options);
|
|
83
|
-
await this.runPrepareHook(this.runner);
|
|
66
|
+
await this.runPrepareHook(this.runner);
|
|
84
67
|
|
|
85
|
-
|
|
68
|
+
// create http-server
|
|
69
|
+
this.app = await this.server.createHTTPServer(this.getRequestHandler());
|
|
86
70
|
|
|
71
|
+
// runner can only be used after server init
|
|
87
72
|
await this.server.onInit(this.runner, this.app);
|
|
88
73
|
return this;
|
|
89
74
|
}
|
|
75
|
+
|
|
90
76
|
/**
|
|
91
77
|
* Execute config hooks
|
|
92
78
|
* @param runner
|
|
93
79
|
* @param options
|
|
94
80
|
*/
|
|
95
|
-
|
|
96
|
-
|
|
97
81
|
runConfigHook(runner, serverConfig) {
|
|
98
82
|
const newServerConfig = runner.config(serverConfig || {});
|
|
99
83
|
return newServerConfig;
|
|
100
84
|
}
|
|
101
|
-
|
|
102
85
|
async runPrepareHook(runner) {
|
|
103
86
|
runner.prepare();
|
|
104
87
|
}
|
|
105
|
-
|
|
106
88
|
initServerConfig(options) {
|
|
107
89
|
var _options$config$outpu;
|
|
108
|
-
|
|
109
90
|
const {
|
|
110
91
|
pwd,
|
|
111
92
|
serverConfigFile
|
|
112
93
|
} = options;
|
|
113
|
-
|
|
114
94
|
const distDirectory = _path.default.join(pwd, ((_options$config$outpu = options.config.output) === null || _options$config$outpu === void 0 ? void 0 : _options$config$outpu.path) || 'dist');
|
|
115
|
-
|
|
116
95
|
const serverConfigPath = (0, _loadConfig.getServerConfigPath)(distDirectory, serverConfigFile);
|
|
117
96
|
const serverConfig = (0, _loadConfig.requireConfig)(serverConfigPath);
|
|
118
97
|
this.serverConfig = serverConfig;
|
|
119
98
|
}
|
|
99
|
+
|
|
120
100
|
/**
|
|
121
101
|
*
|
|
122
102
|
* merge cliConfig and serverConfig
|
|
123
103
|
*/
|
|
124
|
-
|
|
125
|
-
|
|
126
104
|
async initConfig(runner, options) {
|
|
127
105
|
var _config$output;
|
|
128
|
-
|
|
129
106
|
const {
|
|
130
107
|
pwd,
|
|
131
108
|
config
|
|
@@ -134,89 +111,76 @@ class Server {
|
|
|
134
111
|
serverConfig
|
|
135
112
|
} = this;
|
|
136
113
|
const finalServerConfig = this.runConfigHook(runner, serverConfig);
|
|
137
|
-
|
|
138
114
|
const resolvedConfigPath = _path.default.join(pwd, (config === null || config === void 0 ? void 0 : (_config$output = config.output) === null || _config$output === void 0 ? void 0 : _config$output.path) || 'dist', _utils.OUTPUT_CONFIG_FILE);
|
|
139
|
-
|
|
140
115
|
options.config = (0, _loadConfig.loadConfig)({
|
|
141
116
|
cliConfig: config,
|
|
142
117
|
serverConfig: finalServerConfig,
|
|
143
118
|
resolvedConfigPath
|
|
144
119
|
});
|
|
145
120
|
}
|
|
146
|
-
|
|
147
121
|
async close() {
|
|
148
122
|
this.app.close();
|
|
149
123
|
}
|
|
150
|
-
|
|
151
124
|
listen(options, listener) {
|
|
152
125
|
const callback = () => {
|
|
153
126
|
listener === null || listener === void 0 ? void 0 : listener();
|
|
154
127
|
};
|
|
155
|
-
|
|
156
128
|
if (typeof options === 'object') {
|
|
157
129
|
this.app.listen(options, callback);
|
|
158
130
|
} else {
|
|
159
131
|
this.app.listen(process.env.PORT || options || 8080, callback);
|
|
160
132
|
}
|
|
161
133
|
}
|
|
162
|
-
|
|
163
134
|
getRequestHandler() {
|
|
164
135
|
return (req, res, next) => {
|
|
165
136
|
const requestHandler = this.server.getRequestHandler();
|
|
166
137
|
return requestHandler(req, res, next);
|
|
167
138
|
};
|
|
168
139
|
}
|
|
169
|
-
|
|
170
140
|
async render(req, res, url) {
|
|
171
141
|
return this.server.render(req, res, url);
|
|
172
142
|
}
|
|
173
|
-
|
|
174
143
|
async createHookRunner() {
|
|
175
144
|
// clear server manager every create time
|
|
176
145
|
_serverCore.serverManager.clear();
|
|
177
|
-
|
|
178
146
|
const {
|
|
179
147
|
options
|
|
180
|
-
} = this;
|
|
181
|
-
|
|
148
|
+
} = this;
|
|
149
|
+
// TODO: 确认下这里是不是可以不从 options 中取插件,而是从 config 中取和过滤
|
|
182
150
|
const {
|
|
183
151
|
internalPlugins = _utils.INTERNAL_SERVER_PLUGINS,
|
|
184
152
|
pwd,
|
|
185
153
|
config
|
|
186
154
|
} = options;
|
|
187
|
-
const serverPlugins = this.serverConfig.plugins || [];
|
|
155
|
+
const serverPlugins = this.serverConfig.plugins || [];
|
|
188
156
|
|
|
157
|
+
// server app context for serve plugin
|
|
189
158
|
const loadedPlugins = (0, _serverCore.loadPlugins)(pwd, serverPlugins, {
|
|
190
159
|
internalPlugins
|
|
191
160
|
});
|
|
192
161
|
(0, _utils2.debug)('plugins', config.plugins, loadedPlugins);
|
|
193
162
|
loadedPlugins.forEach(p => {
|
|
194
163
|
_serverCore.serverManager.usePlugin(p);
|
|
195
|
-
});
|
|
164
|
+
});
|
|
196
165
|
|
|
166
|
+
// create runner
|
|
197
167
|
const hooksRunner = await _serverCore.serverManager.init();
|
|
198
168
|
return hooksRunner;
|
|
199
169
|
}
|
|
200
|
-
|
|
201
170
|
async injectContext(runner, options) {
|
|
202
171
|
var _config$output2;
|
|
203
|
-
|
|
204
172
|
const appContext = this.initAppContext();
|
|
205
173
|
const {
|
|
206
174
|
config,
|
|
207
175
|
pwd
|
|
208
176
|
} = options;
|
|
209
|
-
|
|
210
177
|
_serverCore.ConfigContext.set(config);
|
|
211
|
-
|
|
212
178
|
_serverCore.AppContext.set(_objectSpread(_objectSpread({}, appContext), {}, {
|
|
213
179
|
distDirectory: _path.default.join(pwd, ((_config$output2 = config.output) === null || _config$output2 === void 0 ? void 0 : _config$output2.path) || 'dist')
|
|
214
180
|
}));
|
|
215
181
|
}
|
|
216
|
-
|
|
217
182
|
initAppContext() {
|
|
218
183
|
var _config$output3;
|
|
219
|
-
|
|
220
184
|
const {
|
|
221
185
|
options
|
|
222
186
|
} = this;
|
|
@@ -235,24 +199,18 @@ class Server {
|
|
|
235
199
|
plugins: serverPlugins
|
|
236
200
|
};
|
|
237
201
|
}
|
|
238
|
-
|
|
239
202
|
loadServerEnv(options) {
|
|
240
203
|
const {
|
|
241
204
|
pwd: appDirectory
|
|
242
205
|
} = options;
|
|
243
206
|
const serverEnv = process.env.MODERN_ENV;
|
|
244
|
-
|
|
245
207
|
const serverEnvPath = _path.default.resolve(appDirectory, `.env.${serverEnv}`);
|
|
246
|
-
|
|
247
208
|
if (serverEnv && _fs.default.existsSync(serverEnvPath) && !_fs.default.statSync(serverEnvPath).isDirectory()) {
|
|
248
209
|
const envConfig = _utils.dotenv.config({
|
|
249
210
|
path: serverEnvPath
|
|
250
211
|
});
|
|
251
|
-
|
|
252
212
|
(0, _utils.dotenvExpand)(envConfig);
|
|
253
213
|
}
|
|
254
214
|
}
|
|
255
|
-
|
|
256
215
|
}
|
|
257
|
-
|
|
258
216
|
exports.Server = Server;
|
|
@@ -4,47 +4,35 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.createProdServer = void 0;
|
|
7
|
-
|
|
8
7
|
var _modernServer = require("./modern-server");
|
|
9
|
-
|
|
10
8
|
class ModernSSRServer extends _modernServer.ModernServer {
|
|
11
9
|
prepareAPIHandler(_) {
|
|
12
10
|
return null;
|
|
13
11
|
}
|
|
14
|
-
|
|
15
12
|
async handleAPI(context) {
|
|
16
13
|
return this.render404(context);
|
|
17
14
|
}
|
|
18
|
-
|
|
19
15
|
}
|
|
20
|
-
|
|
21
16
|
class ModernAPIServer extends _modernServer.ModernServer {
|
|
22
17
|
prepareWebHandler(_) {
|
|
23
18
|
return null;
|
|
24
19
|
}
|
|
25
|
-
|
|
26
20
|
filterRoutes(routes) {
|
|
27
21
|
return routes.filter(route => route.isApi);
|
|
28
22
|
}
|
|
29
|
-
|
|
30
23
|
}
|
|
31
|
-
|
|
32
24
|
class ModernWebServer extends _modernServer.ModernServer {
|
|
33
25
|
async warmupSSRBundle() {
|
|
34
26
|
return null;
|
|
35
27
|
}
|
|
36
|
-
|
|
37
28
|
async handleAPI(context) {
|
|
38
29
|
return this.render404(context);
|
|
39
30
|
}
|
|
40
|
-
|
|
41
31
|
async handleWeb(context, route) {
|
|
42
32
|
route.isSSR = false;
|
|
43
33
|
return super.handleWeb(context, route);
|
|
44
34
|
}
|
|
45
|
-
|
|
46
35
|
}
|
|
47
|
-
|
|
48
36
|
const createProdServer = options => {
|
|
49
37
|
if (options.apiOnly) {
|
|
50
38
|
return new ModernAPIServer(options);
|
|
@@ -56,5 +44,4 @@ const createProdServer = options => {
|
|
|
56
44
|
return new _modernServer.ModernServer(options);
|
|
57
45
|
}
|
|
58
46
|
};
|
|
59
|
-
|
|
60
47
|
exports.createProdServer = createProdServer;
|