@modern-js/prod-server 2.0.0-beta.0 → 2.0.0-beta.2
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 +110 -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 +25 -52
- package/dist/js/modern/server/modern-server-split.js +0 -11
- package/dist/js/modern/server/modern-server.js +87 -167
- package/dist/js/modern/utils.js +12 -27
- 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 +25 -72
- package/dist/js/node/server/modern-server-split.js +0 -13
- package/dist/js/node/server/modern-server.js +87 -196
- package/dist/js/node/utils.js +13 -52
- 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 +339 -0
- package/dist/js/treeshaking/server/modern-server-split.js +152 -0
- package/dist/js/treeshaking/server/modern-server.js +946 -0
- package/dist/js/treeshaking/type.js +1 -0
- package/dist/js/treeshaking/utils.js +90 -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 +2 -3
- package/dist/types/worker-server.d.ts +16 -0
- package/package.json +31 -15
|
@@ -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,61 @@ 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
|
-
var _options$config$outpu;
|
|
108
|
-
|
|
109
89
|
const {
|
|
110
90
|
pwd,
|
|
111
91
|
serverConfigFile
|
|
112
92
|
} = options;
|
|
113
|
-
|
|
114
|
-
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
|
-
|
|
93
|
+
const distDirectory = _path.default.join(pwd, options.config.output.path || 'dist');
|
|
116
94
|
const serverConfigPath = (0, _loadConfig.getServerConfigPath)(distDirectory, serverConfigFile);
|
|
117
95
|
const serverConfig = (0, _loadConfig.requireConfig)(serverConfigPath);
|
|
118
96
|
this.serverConfig = serverConfig;
|
|
119
97
|
}
|
|
98
|
+
|
|
120
99
|
/**
|
|
121
100
|
*
|
|
122
101
|
* merge cliConfig and serverConfig
|
|
123
102
|
*/
|
|
124
|
-
|
|
125
|
-
|
|
126
103
|
async initConfig(runner, options) {
|
|
127
|
-
var _config$output;
|
|
128
|
-
|
|
129
104
|
const {
|
|
130
105
|
pwd,
|
|
131
106
|
config
|
|
@@ -134,89 +109,73 @@ class Server {
|
|
|
134
109
|
serverConfig
|
|
135
110
|
} = this;
|
|
136
111
|
const finalServerConfig = this.runConfigHook(runner, serverConfig);
|
|
137
|
-
|
|
138
|
-
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
|
-
|
|
112
|
+
const resolvedConfigPath = _path.default.join(pwd, config.output.path || 'dist', _utils.OUTPUT_CONFIG_FILE);
|
|
140
113
|
options.config = (0, _loadConfig.loadConfig)({
|
|
141
114
|
cliConfig: config,
|
|
142
115
|
serverConfig: finalServerConfig,
|
|
143
116
|
resolvedConfigPath
|
|
144
117
|
});
|
|
145
118
|
}
|
|
146
|
-
|
|
147
119
|
async close() {
|
|
148
120
|
this.app.close();
|
|
149
121
|
}
|
|
150
|
-
|
|
151
122
|
listen(options, listener) {
|
|
152
123
|
const callback = () => {
|
|
153
124
|
listener === null || listener === void 0 ? void 0 : listener();
|
|
154
125
|
};
|
|
155
|
-
|
|
156
126
|
if (typeof options === 'object') {
|
|
157
127
|
this.app.listen(options, callback);
|
|
158
128
|
} else {
|
|
159
129
|
this.app.listen(process.env.PORT || options || 8080, callback);
|
|
160
130
|
}
|
|
161
131
|
}
|
|
162
|
-
|
|
163
132
|
getRequestHandler() {
|
|
164
133
|
return (req, res, next) => {
|
|
165
134
|
const requestHandler = this.server.getRequestHandler();
|
|
166
135
|
return requestHandler(req, res, next);
|
|
167
136
|
};
|
|
168
137
|
}
|
|
169
|
-
|
|
170
138
|
async render(req, res, url) {
|
|
171
139
|
return this.server.render(req, res, url);
|
|
172
140
|
}
|
|
173
|
-
|
|
174
141
|
async createHookRunner() {
|
|
175
142
|
// clear server manager every create time
|
|
176
143
|
_serverCore.serverManager.clear();
|
|
177
|
-
|
|
178
144
|
const {
|
|
179
145
|
options
|
|
180
|
-
} = this;
|
|
181
|
-
|
|
146
|
+
} = this;
|
|
147
|
+
// TODO: 确认下这里是不是可以不从 options 中取插件,而是从 config 中取和过滤
|
|
182
148
|
const {
|
|
183
149
|
internalPlugins = _utils.INTERNAL_SERVER_PLUGINS,
|
|
184
|
-
pwd
|
|
185
|
-
config
|
|
150
|
+
pwd
|
|
186
151
|
} = options;
|
|
187
|
-
const serverPlugins = this.serverConfig.plugins || [];
|
|
152
|
+
const serverPlugins = this.serverConfig.plugins || [];
|
|
188
153
|
|
|
154
|
+
// server app context for serve plugin
|
|
189
155
|
const loadedPlugins = (0, _serverCore.loadPlugins)(pwd, serverPlugins, {
|
|
190
156
|
internalPlugins
|
|
191
157
|
});
|
|
192
|
-
(0, _utils2.debug)('plugins',
|
|
158
|
+
(0, _utils2.debug)('plugins', loadedPlugins);
|
|
193
159
|
loadedPlugins.forEach(p => {
|
|
194
160
|
_serverCore.serverManager.usePlugin(p);
|
|
195
|
-
});
|
|
161
|
+
});
|
|
196
162
|
|
|
163
|
+
// create runner
|
|
197
164
|
const hooksRunner = await _serverCore.serverManager.init();
|
|
198
165
|
return hooksRunner;
|
|
199
166
|
}
|
|
200
|
-
|
|
201
167
|
async injectContext(runner, options) {
|
|
202
|
-
var _config$output2;
|
|
203
|
-
|
|
204
168
|
const appContext = this.initAppContext();
|
|
205
169
|
const {
|
|
206
170
|
config,
|
|
207
171
|
pwd
|
|
208
172
|
} = options;
|
|
209
|
-
|
|
210
173
|
_serverCore.ConfigContext.set(config);
|
|
211
|
-
|
|
212
174
|
_serverCore.AppContext.set(_objectSpread(_objectSpread({}, appContext), {}, {
|
|
213
|
-
distDirectory: _path.default.join(pwd,
|
|
175
|
+
distDirectory: _path.default.join(pwd, config.output.path || 'dist')
|
|
214
176
|
}));
|
|
215
177
|
}
|
|
216
|
-
|
|
217
178
|
initAppContext() {
|
|
218
|
-
var _config$output3;
|
|
219
|
-
|
|
220
179
|
const {
|
|
221
180
|
options
|
|
222
181
|
} = this;
|
|
@@ -230,29 +189,23 @@ class Server {
|
|
|
230
189
|
}));
|
|
231
190
|
return {
|
|
232
191
|
appDirectory,
|
|
233
|
-
distDirectory: _path.default.join(appDirectory,
|
|
192
|
+
distDirectory: _path.default.join(appDirectory, config.output.path || 'dist'),
|
|
234
193
|
sharedDirectory: _path.default.resolve(appDirectory, _utils.SHARED_DIR),
|
|
235
194
|
plugins: serverPlugins
|
|
236
195
|
};
|
|
237
196
|
}
|
|
238
|
-
|
|
239
197
|
loadServerEnv(options) {
|
|
240
198
|
const {
|
|
241
199
|
pwd: appDirectory
|
|
242
200
|
} = options;
|
|
243
201
|
const serverEnv = process.env.MODERN_ENV;
|
|
244
|
-
|
|
245
202
|
const serverEnvPath = _path.default.resolve(appDirectory, `.env.${serverEnv}`);
|
|
246
|
-
|
|
247
203
|
if (serverEnv && _fs.default.existsSync(serverEnvPath) && !_fs.default.statSync(serverEnvPath).isDirectory()) {
|
|
248
204
|
const envConfig = _utils.dotenv.config({
|
|
249
205
|
path: serverEnvPath
|
|
250
206
|
});
|
|
251
|
-
|
|
252
207
|
(0, _utils.dotenvExpand)(envConfig);
|
|
253
208
|
}
|
|
254
209
|
}
|
|
255
|
-
|
|
256
210
|
}
|
|
257
|
-
|
|
258
211
|
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;
|