@modern-js/prod-server 2.0.0-beta.3 → 2.0.0-beta.4
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 +69 -0
- package/dist/js/modern/constants.js +32 -25
- package/dist/js/modern/index.js +11 -6
- package/dist/js/modern/libs/context/context.js +52 -84
- package/dist/js/modern/libs/context/index.js +5 -2
- package/dist/js/modern/libs/hook-api/index.js +42 -35
- package/dist/js/modern/libs/hook-api/route.js +6 -7
- package/dist/js/modern/libs/hook-api/template.js +20 -34
- package/dist/js/modern/libs/loadConfig.js +45 -24
- package/dist/js/modern/libs/metrics.js +3 -4
- package/dist/js/modern/libs/proxy.js +68 -37
- package/dist/js/modern/libs/render/cache/__tests__/cache.fun.test.js +112 -67
- package/dist/js/modern/libs/render/cache/__tests__/cache.test.js +246 -216
- package/dist/js/modern/libs/render/cache/__tests__/cacheable.js +43 -49
- package/dist/js/modern/libs/render/cache/__tests__/error-configuration.js +36 -34
- package/dist/js/modern/libs/render/cache/__tests__/matched-cache.js +83 -113
- package/dist/js/modern/libs/render/cache/index.js +88 -54
- package/dist/js/modern/libs/render/cache/page-caches/index.js +31 -8
- package/dist/js/modern/libs/render/cache/page-caches/lru.js +6 -6
- package/dist/js/modern/libs/render/cache/spr.js +133 -117
- package/dist/js/modern/libs/render/cache/type.js +0 -1
- package/dist/js/modern/libs/render/cache/util.js +71 -39
- package/dist/js/modern/libs/render/index.js +76 -56
- package/dist/js/modern/libs/render/measure.js +38 -27
- package/dist/js/modern/libs/render/reader.js +65 -62
- package/dist/js/modern/libs/render/ssr.js +50 -32
- package/dist/js/modern/libs/render/static.js +50 -33
- package/dist/js/modern/libs/render/type.js +9 -6
- package/dist/js/modern/libs/route/index.js +8 -15
- package/dist/js/modern/libs/route/matcher.js +20 -34
- package/dist/js/modern/libs/route/route.js +9 -18
- package/dist/js/modern/libs/serve-file.js +33 -20
- package/dist/js/modern/server/index.js +144 -145
- package/dist/js/modern/server/modern-server-split.js +46 -12
- package/dist/js/modern/server/modern-server.js +377 -417
- package/dist/js/modern/type.js +0 -1
- package/dist/js/modern/utils.js +62 -43
- package/dist/js/modern/worker-server.js +34 -14
- package/dist/js/node/constants.js +45 -30
- package/dist/js/node/index.js +31 -57
- package/dist/js/node/libs/context/context.js +79 -94
- package/dist/js/node/libs/context/index.js +23 -13
- package/dist/js/node/libs/hook-api/index.js +69 -48
- package/dist/js/node/libs/hook-api/route.js +22 -11
- package/dist/js/node/libs/hook-api/template.js +36 -39
- package/dist/js/node/libs/loadConfig.js +69 -35
- package/dist/js/node/libs/metrics.js +21 -9
- package/dist/js/node/libs/proxy.js +86 -44
- package/dist/js/node/libs/render/cache/__tests__/cache.fun.test.js +132 -70
- package/dist/js/node/libs/render/cache/__tests__/cache.test.js +268 -218
- package/dist/js/node/libs/render/cache/__tests__/cacheable.js +61 -55
- package/dist/js/node/libs/render/cache/__tests__/error-configuration.js +54 -40
- package/dist/js/node/libs/render/cache/__tests__/matched-cache.js +101 -119
- package/dist/js/node/libs/render/cache/index.js +110 -64
- package/dist/js/node/libs/render/cache/page-caches/index.js +50 -14
- package/dist/js/node/libs/render/cache/page-caches/lru.js +29 -12
- package/dist/js/node/libs/render/cache/spr.js +156 -129
- package/dist/js/node/libs/render/cache/type.js +0 -5
- package/dist/js/node/libs/render/cache/util.js +88 -45
- package/dist/js/node/libs/render/index.js +102 -67
- package/dist/js/node/libs/render/measure.js +55 -31
- package/dist/js/node/libs/render/reader.js +87 -70
- package/dist/js/node/libs/render/ssr.js +76 -47
- package/dist/js/node/libs/render/static.js +75 -40
- package/dist/js/node/libs/render/type.js +27 -12
- package/dist/js/node/libs/route/index.js +26 -26
- package/dist/js/node/libs/route/matcher.js +36 -41
- package/dist/js/node/libs/route/route.js +25 -22
- package/dist/js/node/libs/serve-file.js +61 -32
- package/dist/js/node/server/index.js +160 -160
- package/dist/js/node/server/modern-server-split.js +68 -22
- package/dist/js/node/server/modern-server.js +395 -441
- package/dist/js/node/type.js +0 -3
- package/dist/js/node/utils.js +74 -52
- package/dist/js/node/worker-server.js +53 -21
- package/dist/js/treeshaking/constants.js +26 -25
- package/dist/js/treeshaking/index.js +10 -10
- package/dist/js/treeshaking/libs/context/context.js +268 -237
- package/dist/js/treeshaking/libs/context/index.js +3 -3
- package/dist/js/treeshaking/libs/hook-api/index.js +265 -143
- package/dist/js/treeshaking/libs/hook-api/route.js +65 -30
- package/dist/js/treeshaking/libs/hook-api/template.js +121 -85
- package/dist/js/treeshaking/libs/loadConfig.js +80 -37
- package/dist/js/treeshaking/libs/metrics.js +4 -10
- package/dist/js/treeshaking/libs/proxy.js +240 -76
- package/dist/js/treeshaking/libs/render/cache/__tests__/cache.fun.test.js +288 -121
- package/dist/js/treeshaking/libs/render/cache/__tests__/cache.test.js +772 -455
- package/dist/js/treeshaking/libs/render/cache/__tests__/cacheable.js +65 -51
- package/dist/js/treeshaking/libs/render/cache/__tests__/error-configuration.js +45 -35
- package/dist/js/treeshaking/libs/render/cache/__tests__/matched-cache.js +144 -118
- package/dist/js/treeshaking/libs/render/cache/index.js +337 -175
- package/dist/js/treeshaking/libs/render/cache/page-caches/index.js +151 -27
- package/dist/js/treeshaking/libs/render/cache/page-caches/lru.js +80 -42
- package/dist/js/treeshaking/libs/render/cache/spr.js +470 -340
- package/dist/js/treeshaking/libs/render/cache/type.js +1 -1
- package/dist/js/treeshaking/libs/render/cache/util.js +271 -92
- package/dist/js/treeshaking/libs/render/index.js +228 -95
- package/dist/js/treeshaking/libs/render/measure.js +142 -57
- package/dist/js/treeshaking/libs/render/reader.js +325 -177
- package/dist/js/treeshaking/libs/render/ssr.js +220 -95
- package/dist/js/treeshaking/libs/render/static.js +210 -78
- package/dist/js/treeshaking/libs/render/type.js +7 -6
- package/dist/js/treeshaking/libs/route/index.js +125 -89
- package/dist/js/treeshaking/libs/route/matcher.js +132 -107
- package/dist/js/treeshaking/libs/route/route.js +40 -26
- package/dist/js/treeshaking/libs/serve-file.js +177 -68
- package/dist/js/treeshaking/server/index.js +468 -327
- package/dist/js/treeshaking/server/modern-server-split.js +352 -144
- package/dist/js/treeshaking/server/modern-server.js +1046 -909
- package/dist/js/treeshaking/type.js +1 -1
- package/dist/js/treeshaking/utils.js +138 -81
- package/dist/js/treeshaking/worker-server.js +176 -55
- package/dist/types/index.d.ts +2 -0
- package/dist/types/libs/context/context.d.ts +4 -1
- package/dist/types/libs/loadConfig.d.ts +1 -0
- package/dist/types/libs/render/cache/index.d.ts +2 -0
- package/dist/types/libs/render/cache/spr.d.ts +2 -0
- package/dist/types/libs/route/route.d.ts +0 -1
- package/dist/types/server/index.d.ts +3 -0
- package/dist/types/utils.d.ts +1 -1
- package/dist/types/worker-server.d.ts +1 -2
- package/package.json +7 -14
- package/dist/js/modern/libs/render/modern/browser-list.js +0 -7
- package/dist/js/modern/libs/render/modern/index.js +0 -37
- package/dist/js/node/libs/render/modern/browser-list.js +0 -14
- package/dist/js/node/libs/render/modern/index.js +0 -46
- package/dist/js/treeshaking/libs/render/modern/browser-list.js +0 -7
- package/dist/js/treeshaking/libs/render/modern/index.js +0 -39
- package/dist/types/libs/render/modern/browser-list.d.ts +0 -1
- package/dist/types/libs/render/modern/index.d.ts +0 -3
|
@@ -1,339 +1,480 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
import path from 'path';
|
|
9
|
-
import fs from 'fs';
|
|
10
|
-
import { Logger, SHARED_DIR, OUTPUT_CONFIG_FILE, dotenv, dotenvExpand, INTERNAL_SERVER_PLUGINS } from '@modern-js/utils';
|
|
11
|
-
import { serverManager, AppContext, ConfigContext, loadPlugins } from '@modern-js/server-core';
|
|
12
|
-
import { metrics as defaultMetrics } from "../libs/metrics";
|
|
13
|
-
import { loadConfig, getServerConfigPath, requireConfig } from "../libs/loadConfig";
|
|
14
|
-
import { debug } from "../utils";
|
|
15
|
-
import { createProdServer } from "./modern-server-split";
|
|
16
|
-
export var Server = /*#__PURE__*/function () {
|
|
17
|
-
function Server(options) {
|
|
18
|
-
_classCallCheck(this, Server);
|
|
19
|
-
_defineProperty(this, "options", void 0);
|
|
20
|
-
_defineProperty(this, "serverImpl", createProdServer);
|
|
21
|
-
_defineProperty(this, "server", void 0);
|
|
22
|
-
_defineProperty(this, "app", void 0);
|
|
23
|
-
_defineProperty(this, "runner", void 0);
|
|
24
|
-
_defineProperty(this, "serverConfig", void 0);
|
|
25
|
-
options.logger = options.logger || new Logger({
|
|
26
|
-
level: 'warn'
|
|
27
|
-
});
|
|
28
|
-
options.metrics = options.metrics || defaultMetrics;
|
|
29
|
-
this.options = options;
|
|
30
|
-
this.serverConfig = {};
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* 初始化顺序
|
|
35
|
-
* - 读取 .env.{process.env.MODERN_ENV} 文件,加载环境变量
|
|
36
|
-
* - 获取 server runtime config
|
|
37
|
-
* - 设置 context
|
|
38
|
-
* - 创建 hooksRunner
|
|
39
|
-
* - 合并插件,内置插件和 serverConfig 中配置的插件
|
|
40
|
-
* - 执行 config hook
|
|
41
|
-
* - 获取最终的配置
|
|
42
|
-
* - 设置配置到 context
|
|
43
|
-
* - 初始化 server
|
|
44
|
-
* - 执行 prepare hook
|
|
45
|
-
* - 执行 server init
|
|
46
|
-
*/
|
|
47
|
-
_createClass(Server, [{
|
|
48
|
-
key: "init",
|
|
49
|
-
value: function () {
|
|
50
|
-
var _init = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
51
|
-
var options;
|
|
52
|
-
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
53
|
-
while (1) {
|
|
54
|
-
switch (_context.prev = _context.next) {
|
|
55
|
-
case 0:
|
|
56
|
-
options = this.options;
|
|
57
|
-
this.loadServerEnv(options);
|
|
58
|
-
this.initServerConfig(options);
|
|
59
|
-
_context.next = 5;
|
|
60
|
-
return this.injectContext(this.runner, options);
|
|
61
|
-
case 5:
|
|
62
|
-
_context.next = 7;
|
|
63
|
-
return this.createHookRunner();
|
|
64
|
-
case 7:
|
|
65
|
-
this.runner = _context.sent;
|
|
66
|
-
_context.next = 10;
|
|
67
|
-
return this.initConfig(this.runner, options);
|
|
68
|
-
case 10:
|
|
69
|
-
_context.next = 12;
|
|
70
|
-
return this.injectContext(this.runner, options);
|
|
71
|
-
case 12:
|
|
72
|
-
// initialize server
|
|
73
|
-
this.server = this.serverImpl(options);
|
|
74
|
-
_context.next = 15;
|
|
75
|
-
return this.runPrepareHook(this.runner);
|
|
76
|
-
case 15:
|
|
77
|
-
_context.next = 17;
|
|
78
|
-
return this.server.createHTTPServer(this.getRequestHandler());
|
|
79
|
-
case 17:
|
|
80
|
-
this.app = _context.sent;
|
|
81
|
-
_context.next = 20;
|
|
82
|
-
return this.server.onInit(this.runner, this.app);
|
|
83
|
-
case 20:
|
|
84
|
-
return _context.abrupt("return", this);
|
|
85
|
-
case 21:
|
|
86
|
-
case "end":
|
|
87
|
-
return _context.stop();
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}, _callee, this);
|
|
91
|
-
}));
|
|
92
|
-
function init() {
|
|
93
|
-
return _init.apply(this, arguments);
|
|
94
|
-
}
|
|
95
|
-
return init;
|
|
96
|
-
}()
|
|
97
|
-
/**
|
|
98
|
-
* Execute config hooks
|
|
99
|
-
* @param runner
|
|
100
|
-
* @param options
|
|
101
|
-
*/
|
|
102
|
-
}, {
|
|
103
|
-
key: "runConfigHook",
|
|
104
|
-
value: function runConfigHook(runner, serverConfig) {
|
|
105
|
-
var newServerConfig = runner.config(serverConfig || {});
|
|
106
|
-
return newServerConfig;
|
|
1
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
2
|
+
try {
|
|
3
|
+
var info = gen[key](arg);
|
|
4
|
+
var value = info.value;
|
|
5
|
+
} catch (error) {
|
|
6
|
+
reject(error);
|
|
7
|
+
return;
|
|
107
8
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
113
|
-
while (1) {
|
|
114
|
-
switch (_context2.prev = _context2.next) {
|
|
115
|
-
case 0:
|
|
116
|
-
runner.prepare();
|
|
117
|
-
case 1:
|
|
118
|
-
case "end":
|
|
119
|
-
return _context2.stop();
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
}, _callee2);
|
|
123
|
-
}));
|
|
124
|
-
function runPrepareHook(_x) {
|
|
125
|
-
return _runPrepareHook.apply(this, arguments);
|
|
126
|
-
}
|
|
127
|
-
return runPrepareHook;
|
|
128
|
-
}()
|
|
129
|
-
}, {
|
|
130
|
-
key: "initServerConfig",
|
|
131
|
-
value: function initServerConfig(options) {
|
|
132
|
-
var pwd = options.pwd,
|
|
133
|
-
serverConfigFile = options.serverConfigFile;
|
|
134
|
-
var distDirectory = path.join(pwd, options.config.output.path || 'dist');
|
|
135
|
-
var serverConfigPath = getServerConfigPath(distDirectory, serverConfigFile);
|
|
136
|
-
var serverConfig = requireConfig(serverConfigPath);
|
|
137
|
-
this.serverConfig = serverConfig;
|
|
9
|
+
if (info.done) {
|
|
10
|
+
resolve(value);
|
|
11
|
+
} else {
|
|
12
|
+
Promise.resolve(value).then(_next, _throw);
|
|
138
13
|
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
var _initConfig = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(runner, options) {
|
|
148
|
-
var pwd, config, serverConfig, finalServerConfig, resolvedConfigPath;
|
|
149
|
-
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
150
|
-
while (1) {
|
|
151
|
-
switch (_context3.prev = _context3.next) {
|
|
152
|
-
case 0:
|
|
153
|
-
pwd = options.pwd, config = options.config;
|
|
154
|
-
serverConfig = this.serverConfig;
|
|
155
|
-
finalServerConfig = this.runConfigHook(runner, serverConfig);
|
|
156
|
-
resolvedConfigPath = path.join(pwd, config.output.path || 'dist', OUTPUT_CONFIG_FILE);
|
|
157
|
-
options.config = loadConfig({
|
|
158
|
-
cliConfig: config,
|
|
159
|
-
serverConfig: finalServerConfig,
|
|
160
|
-
resolvedConfigPath: resolvedConfigPath
|
|
161
|
-
});
|
|
162
|
-
case 5:
|
|
163
|
-
case "end":
|
|
164
|
-
return _context3.stop();
|
|
14
|
+
}
|
|
15
|
+
function _asyncToGenerator(fn) {
|
|
16
|
+
return function() {
|
|
17
|
+
var self = this, args = arguments;
|
|
18
|
+
return new Promise(function(resolve, reject) {
|
|
19
|
+
var gen = fn.apply(self, args);
|
|
20
|
+
function _next(value) {
|
|
21
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
165
22
|
}
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
}));
|
|
169
|
-
function initConfig(_x2, _x3) {
|
|
170
|
-
return _initConfig.apply(this, arguments);
|
|
171
|
-
}
|
|
172
|
-
return initConfig;
|
|
173
|
-
}()
|
|
174
|
-
}, {
|
|
175
|
-
key: "close",
|
|
176
|
-
value: function () {
|
|
177
|
-
var _close = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
|
|
178
|
-
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
179
|
-
while (1) {
|
|
180
|
-
switch (_context4.prev = _context4.next) {
|
|
181
|
-
case 0:
|
|
182
|
-
this.app.close();
|
|
183
|
-
case 1:
|
|
184
|
-
case "end":
|
|
185
|
-
return _context4.stop();
|
|
23
|
+
function _throw(err) {
|
|
24
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
186
25
|
}
|
|
187
|
-
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
}()
|
|
195
|
-
}, {
|
|
196
|
-
key: "listen",
|
|
197
|
-
value: function listen(options, listener) {
|
|
198
|
-
var callback = function callback() {
|
|
199
|
-
listener === null || listener === void 0 ? void 0 : listener();
|
|
200
|
-
};
|
|
201
|
-
if (_typeof(options) === 'object') {
|
|
202
|
-
this.app.listen(options, callback);
|
|
203
|
-
} else {
|
|
204
|
-
this.app.listen(process.env.PORT || options || 8080, callback);
|
|
205
|
-
}
|
|
26
|
+
_next(undefined);
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
function _classCallCheck(instance, Constructor) {
|
|
31
|
+
if (!(instance instanceof Constructor)) {
|
|
32
|
+
throw new TypeError("Cannot call a class as a function");
|
|
206
33
|
}
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
34
|
+
}
|
|
35
|
+
function _defineProperties(target, props) {
|
|
36
|
+
for(var i = 0; i < props.length; i++){
|
|
37
|
+
var descriptor = props[i];
|
|
38
|
+
descriptor.enumerable = descriptor.enumerable || false;
|
|
39
|
+
descriptor.configurable = true;
|
|
40
|
+
if ("value" in descriptor) descriptor.writable = true;
|
|
41
|
+
Object.defineProperty(target, descriptor.key, descriptor);
|
|
215
42
|
}
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
43
|
+
}
|
|
44
|
+
function _createClass(Constructor, protoProps, staticProps) {
|
|
45
|
+
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
46
|
+
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
47
|
+
return Constructor;
|
|
48
|
+
}
|
|
49
|
+
function _defineProperty(obj, key, value) {
|
|
50
|
+
if (key in obj) {
|
|
51
|
+
Object.defineProperty(obj, key, {
|
|
52
|
+
value: value,
|
|
53
|
+
enumerable: true,
|
|
54
|
+
configurable: true,
|
|
55
|
+
writable: true
|
|
56
|
+
});
|
|
57
|
+
} else {
|
|
58
|
+
obj[key] = value;
|
|
59
|
+
}
|
|
60
|
+
return obj;
|
|
61
|
+
}
|
|
62
|
+
function _objectSpread(target) {
|
|
63
|
+
for(var i = 1; i < arguments.length; i++){
|
|
64
|
+
var source = arguments[i] != null ? arguments[i] : {};
|
|
65
|
+
var ownKeys = Object.keys(source);
|
|
66
|
+
if (typeof Object.getOwnPropertySymbols === "function") {
|
|
67
|
+
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
|
|
68
|
+
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
|
69
|
+
}));
|
|
70
|
+
}
|
|
71
|
+
ownKeys.forEach(function(key) {
|
|
72
|
+
_defineProperty(target, key, source[key]);
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
return target;
|
|
76
|
+
}
|
|
77
|
+
function ownKeys(object, enumerableOnly) {
|
|
78
|
+
var keys = Object.keys(object);
|
|
79
|
+
if (Object.getOwnPropertySymbols) {
|
|
80
|
+
var symbols = Object.getOwnPropertySymbols(object);
|
|
81
|
+
if (enumerableOnly) {
|
|
82
|
+
symbols = symbols.filter(function(sym) {
|
|
83
|
+
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
keys.push.apply(keys, symbols);
|
|
87
|
+
}
|
|
88
|
+
return keys;
|
|
89
|
+
}
|
|
90
|
+
function _objectSpreadProps(target, source) {
|
|
91
|
+
source = source != null ? source : {};
|
|
92
|
+
if (Object.getOwnPropertyDescriptors) {
|
|
93
|
+
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
|
|
94
|
+
} else {
|
|
95
|
+
ownKeys(Object(source)).forEach(function(key) {
|
|
96
|
+
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
return target;
|
|
100
|
+
}
|
|
101
|
+
var __generator = this && this.__generator || function(thisArg, body) {
|
|
102
|
+
var f, y, t, g, _ = {
|
|
103
|
+
label: 0,
|
|
104
|
+
sent: function() {
|
|
105
|
+
if (t[0] & 1) throw t[1];
|
|
106
|
+
return t[1];
|
|
107
|
+
},
|
|
108
|
+
trys: [],
|
|
109
|
+
ops: []
|
|
110
|
+
};
|
|
111
|
+
return g = {
|
|
112
|
+
next: verb(0),
|
|
113
|
+
"throw": verb(1),
|
|
114
|
+
"return": verb(2)
|
|
115
|
+
}, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
|
|
116
|
+
return this;
|
|
117
|
+
}), g;
|
|
118
|
+
function verb(n) {
|
|
119
|
+
return function(v) {
|
|
120
|
+
return step([
|
|
121
|
+
n,
|
|
122
|
+
v
|
|
123
|
+
]);
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
function step(op) {
|
|
127
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
128
|
+
while(_)try {
|
|
129
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
130
|
+
if (y = 0, t) op = [
|
|
131
|
+
op[0] & 2,
|
|
132
|
+
t.value
|
|
133
|
+
];
|
|
134
|
+
switch(op[0]){
|
|
135
|
+
case 0:
|
|
136
|
+
case 1:
|
|
137
|
+
t = op;
|
|
138
|
+
break;
|
|
139
|
+
case 4:
|
|
140
|
+
_.label++;
|
|
141
|
+
return {
|
|
142
|
+
value: op[1],
|
|
143
|
+
done: false
|
|
144
|
+
};
|
|
145
|
+
case 5:
|
|
146
|
+
_.label++;
|
|
147
|
+
y = op[1];
|
|
148
|
+
op = [
|
|
149
|
+
0
|
|
150
|
+
];
|
|
151
|
+
continue;
|
|
152
|
+
case 7:
|
|
153
|
+
op = _.ops.pop();
|
|
154
|
+
_.trys.pop();
|
|
155
|
+
continue;
|
|
156
|
+
default:
|
|
157
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
158
|
+
_ = 0;
|
|
159
|
+
continue;
|
|
160
|
+
}
|
|
161
|
+
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
162
|
+
_.label = op[1];
|
|
163
|
+
break;
|
|
164
|
+
}
|
|
165
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
166
|
+
_.label = t[1];
|
|
167
|
+
t = op;
|
|
168
|
+
break;
|
|
169
|
+
}
|
|
170
|
+
if (t && _.label < t[2]) {
|
|
171
|
+
_.label = t[2];
|
|
172
|
+
_.ops.push(op);
|
|
173
|
+
break;
|
|
174
|
+
}
|
|
175
|
+
if (t[2]) _.ops.pop();
|
|
176
|
+
_.trys.pop();
|
|
177
|
+
continue;
|
|
295
178
|
}
|
|
296
|
-
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
var options = this.options;
|
|
308
|
-
var appDirectory = options.pwd,
|
|
309
|
-
_options$plugins = options.plugins,
|
|
310
|
-
plugins = _options$plugins === void 0 ? [] : _options$plugins,
|
|
311
|
-
config = options.config;
|
|
312
|
-
var serverPlugins = plugins.map(function (p) {
|
|
179
|
+
op = body.call(thisArg, _);
|
|
180
|
+
} catch (e) {
|
|
181
|
+
op = [
|
|
182
|
+
6,
|
|
183
|
+
e
|
|
184
|
+
];
|
|
185
|
+
y = 0;
|
|
186
|
+
} finally{
|
|
187
|
+
f = t = 0;
|
|
188
|
+
}
|
|
189
|
+
if (op[0] & 5) throw op[1];
|
|
313
190
|
return {
|
|
314
|
-
|
|
191
|
+
value: op[0] ? op[1] : void 0,
|
|
192
|
+
done: true
|
|
315
193
|
};
|
|
316
|
-
});
|
|
317
|
-
return {
|
|
318
|
-
appDirectory: appDirectory,
|
|
319
|
-
distDirectory: path.join(appDirectory, config.output.path || 'dist'),
|
|
320
|
-
sharedDirectory: path.resolve(appDirectory, SHARED_DIR),
|
|
321
|
-
plugins: serverPlugins
|
|
322
|
-
};
|
|
323
194
|
}
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
195
|
+
};
|
|
196
|
+
import path from "path";
|
|
197
|
+
import fs from "fs";
|
|
198
|
+
import { Logger, SHARED_DIR, OUTPUT_CONFIG_FILE, dotenv, dotenvExpand, INTERNAL_SERVER_PLUGINS } from "@modern-js/utils";
|
|
199
|
+
import { serverManager, AppContext, ConfigContext, loadPlugins } from "@modern-js/server-core";
|
|
200
|
+
import { metrics as defaultMetrics } from "../libs/metrics";
|
|
201
|
+
import { loadConfig, getServerConfigPath, requireConfig } from "../libs/loadConfig";
|
|
202
|
+
import { debug } from "../utils";
|
|
203
|
+
import { createProdServer } from "./modern-server-split";
|
|
204
|
+
var Server = /*#__PURE__*/ function() {
|
|
205
|
+
"use strict";
|
|
206
|
+
function Server(options) {
|
|
207
|
+
_classCallCheck(this, Server);
|
|
208
|
+
_defineProperty(this, "options", void 0);
|
|
209
|
+
_defineProperty(this, "serverImpl", createProdServer);
|
|
210
|
+
_defineProperty(this, "server", void 0);
|
|
211
|
+
_defineProperty(this, "app", void 0);
|
|
212
|
+
_defineProperty(this, "runner", void 0);
|
|
213
|
+
_defineProperty(this, "serverConfig", void 0);
|
|
214
|
+
options.logger = options.logger || new Logger({
|
|
215
|
+
level: "warn"
|
|
333
216
|
});
|
|
334
|
-
|
|
335
|
-
|
|
217
|
+
options.metrics = options.metrics || defaultMetrics;
|
|
218
|
+
this.options = options;
|
|
219
|
+
this.serverConfig = {};
|
|
336
220
|
}
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
221
|
+
_createClass(Server, [
|
|
222
|
+
{
|
|
223
|
+
key: "init",
|
|
224
|
+
value: function init() {
|
|
225
|
+
var _this = this;
|
|
226
|
+
return _asyncToGenerator(function() {
|
|
227
|
+
var options;
|
|
228
|
+
return __generator(this, function(_state) {
|
|
229
|
+
switch(_state.label){
|
|
230
|
+
case 0:
|
|
231
|
+
options = _this.options;
|
|
232
|
+
_this.loadServerEnv(options);
|
|
233
|
+
_this.initServerConfig(options);
|
|
234
|
+
return [
|
|
235
|
+
4,
|
|
236
|
+
_this.injectContext(_this.runner, options)
|
|
237
|
+
];
|
|
238
|
+
case 1:
|
|
239
|
+
_state.sent();
|
|
240
|
+
return [
|
|
241
|
+
4,
|
|
242
|
+
_this.createHookRunner()
|
|
243
|
+
];
|
|
244
|
+
case 2:
|
|
245
|
+
_this.runner = _state.sent();
|
|
246
|
+
return [
|
|
247
|
+
4,
|
|
248
|
+
_this.initConfig(_this.runner, options)
|
|
249
|
+
];
|
|
250
|
+
case 3:
|
|
251
|
+
_state.sent();
|
|
252
|
+
return [
|
|
253
|
+
4,
|
|
254
|
+
_this.injectContext(_this.runner, options)
|
|
255
|
+
];
|
|
256
|
+
case 4:
|
|
257
|
+
_state.sent();
|
|
258
|
+
_this.server = _this.serverImpl(options);
|
|
259
|
+
return [
|
|
260
|
+
4,
|
|
261
|
+
_this.runPrepareHook(_this.runner)
|
|
262
|
+
];
|
|
263
|
+
case 5:
|
|
264
|
+
_state.sent();
|
|
265
|
+
return [
|
|
266
|
+
4,
|
|
267
|
+
_this.server.createHTTPServer(_this.getRequestHandler())
|
|
268
|
+
];
|
|
269
|
+
case 6:
|
|
270
|
+
_this.app = _state.sent();
|
|
271
|
+
return [
|
|
272
|
+
4,
|
|
273
|
+
_this.server.onInit(_this.runner, _this.app)
|
|
274
|
+
];
|
|
275
|
+
case 7:
|
|
276
|
+
_state.sent();
|
|
277
|
+
return [
|
|
278
|
+
2,
|
|
279
|
+
_this
|
|
280
|
+
];
|
|
281
|
+
}
|
|
282
|
+
});
|
|
283
|
+
})();
|
|
284
|
+
}
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
key: "runConfigHook",
|
|
288
|
+
value: function runConfigHook(runner, serverConfig) {
|
|
289
|
+
var newServerConfig = runner.config(serverConfig || {});
|
|
290
|
+
return newServerConfig;
|
|
291
|
+
}
|
|
292
|
+
},
|
|
293
|
+
{
|
|
294
|
+
key: "runPrepareHook",
|
|
295
|
+
value: function runPrepareHook(runner) {
|
|
296
|
+
return _asyncToGenerator(function() {
|
|
297
|
+
return __generator(this, function(_state) {
|
|
298
|
+
runner.prepare();
|
|
299
|
+
return [
|
|
300
|
+
2
|
|
301
|
+
];
|
|
302
|
+
});
|
|
303
|
+
})();
|
|
304
|
+
}
|
|
305
|
+
},
|
|
306
|
+
{
|
|
307
|
+
key: "initServerConfig",
|
|
308
|
+
value: function initServerConfig(options) {
|
|
309
|
+
var pwd = options.pwd, serverConfigFile = options.serverConfigFile;
|
|
310
|
+
var distDirectory = path.join(pwd, options.config.output.path || "dist");
|
|
311
|
+
var serverConfigPath = getServerConfigPath(distDirectory, serverConfigFile);
|
|
312
|
+
var serverConfig = requireConfig(serverConfigPath);
|
|
313
|
+
this.serverConfig = serverConfig;
|
|
314
|
+
}
|
|
315
|
+
},
|
|
316
|
+
{
|
|
317
|
+
key: "initConfig",
|
|
318
|
+
value: function initConfig(runner, options) {
|
|
319
|
+
var _this = this;
|
|
320
|
+
return _asyncToGenerator(function() {
|
|
321
|
+
var pwd, config, serverConfig, finalServerConfig, resolvedConfigPath;
|
|
322
|
+
return __generator(this, function(_state) {
|
|
323
|
+
pwd = options.pwd, config = options.config;
|
|
324
|
+
serverConfig = _this.serverConfig;
|
|
325
|
+
finalServerConfig = _this.runConfigHook(runner, serverConfig);
|
|
326
|
+
resolvedConfigPath = path.join(pwd, config.output.path || "dist", OUTPUT_CONFIG_FILE);
|
|
327
|
+
options.config = loadConfig({
|
|
328
|
+
cliConfig: config,
|
|
329
|
+
serverConfig: finalServerConfig,
|
|
330
|
+
resolvedConfigPath: resolvedConfigPath
|
|
331
|
+
});
|
|
332
|
+
return [
|
|
333
|
+
2
|
|
334
|
+
];
|
|
335
|
+
});
|
|
336
|
+
})();
|
|
337
|
+
}
|
|
338
|
+
},
|
|
339
|
+
{
|
|
340
|
+
key: "close",
|
|
341
|
+
value: function close() {
|
|
342
|
+
var _this = this;
|
|
343
|
+
return _asyncToGenerator(function() {
|
|
344
|
+
return __generator(this, function(_state) {
|
|
345
|
+
_this.app.close();
|
|
346
|
+
return [
|
|
347
|
+
2
|
|
348
|
+
];
|
|
349
|
+
});
|
|
350
|
+
})();
|
|
351
|
+
}
|
|
352
|
+
},
|
|
353
|
+
{
|
|
354
|
+
key: "listen",
|
|
355
|
+
value: function listen(options, listener) {
|
|
356
|
+
var callback = function() {
|
|
357
|
+
listener === null || listener === void 0 ? void 0 : listener();
|
|
358
|
+
};
|
|
359
|
+
if (typeof options === "object") {
|
|
360
|
+
this.app.listen(options, callback);
|
|
361
|
+
} else {
|
|
362
|
+
this.app.listen(process.env.PORT || options || 8080, callback);
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
},
|
|
366
|
+
{
|
|
367
|
+
key: "getRequestHandler",
|
|
368
|
+
value: function getRequestHandler() {
|
|
369
|
+
var _this = this;
|
|
370
|
+
return function(req, res, next) {
|
|
371
|
+
var requestHandler = _this.server.getRequestHandler();
|
|
372
|
+
return requestHandler(req, res, next);
|
|
373
|
+
};
|
|
374
|
+
}
|
|
375
|
+
},
|
|
376
|
+
{
|
|
377
|
+
key: "render",
|
|
378
|
+
value: function render(req, res, url) {
|
|
379
|
+
var _this = this;
|
|
380
|
+
return _asyncToGenerator(function() {
|
|
381
|
+
return __generator(this, function(_state) {
|
|
382
|
+
return [
|
|
383
|
+
2,
|
|
384
|
+
_this.server.render(req, res, url)
|
|
385
|
+
];
|
|
386
|
+
});
|
|
387
|
+
})();
|
|
388
|
+
}
|
|
389
|
+
},
|
|
390
|
+
{
|
|
391
|
+
key: "createHookRunner",
|
|
392
|
+
value: function createHookRunner() {
|
|
393
|
+
var _this = this;
|
|
394
|
+
return _asyncToGenerator(function() {
|
|
395
|
+
var options, _internalPlugins, internalPlugins, pwd, serverPlugins, loadedPlugins, hooksRunner;
|
|
396
|
+
return __generator(this, function(_state) {
|
|
397
|
+
switch(_state.label){
|
|
398
|
+
case 0:
|
|
399
|
+
serverManager.clear();
|
|
400
|
+
options = _this.options;
|
|
401
|
+
_internalPlugins = options.internalPlugins, internalPlugins = _internalPlugins === void 0 ? INTERNAL_SERVER_PLUGINS : _internalPlugins, pwd = options.pwd;
|
|
402
|
+
serverPlugins = _this.serverConfig.plugins || [];
|
|
403
|
+
loadedPlugins = loadPlugins(pwd, serverPlugins, {
|
|
404
|
+
internalPlugins: internalPlugins
|
|
405
|
+
});
|
|
406
|
+
debug("plugins", loadedPlugins);
|
|
407
|
+
loadedPlugins.forEach(function(p) {
|
|
408
|
+
serverManager.usePlugin(p);
|
|
409
|
+
});
|
|
410
|
+
return [
|
|
411
|
+
4,
|
|
412
|
+
serverManager.init()
|
|
413
|
+
];
|
|
414
|
+
case 1:
|
|
415
|
+
hooksRunner = _state.sent();
|
|
416
|
+
return [
|
|
417
|
+
2,
|
|
418
|
+
hooksRunner
|
|
419
|
+
];
|
|
420
|
+
}
|
|
421
|
+
});
|
|
422
|
+
})();
|
|
423
|
+
}
|
|
424
|
+
},
|
|
425
|
+
{
|
|
426
|
+
key: "injectContext",
|
|
427
|
+
value: function injectContext(runner, options) {
|
|
428
|
+
var _this = this;
|
|
429
|
+
return _asyncToGenerator(function() {
|
|
430
|
+
var appContext, config, pwd;
|
|
431
|
+
return __generator(this, function(_state) {
|
|
432
|
+
appContext = _this.initAppContext();
|
|
433
|
+
config = options.config, pwd = options.pwd;
|
|
434
|
+
ConfigContext.set(config);
|
|
435
|
+
AppContext.set(_objectSpreadProps(_objectSpread({}, appContext), {
|
|
436
|
+
distDirectory: path.join(pwd, config.output.path || "dist")
|
|
437
|
+
}));
|
|
438
|
+
return [
|
|
439
|
+
2
|
|
440
|
+
];
|
|
441
|
+
});
|
|
442
|
+
})();
|
|
443
|
+
}
|
|
444
|
+
},
|
|
445
|
+
{
|
|
446
|
+
key: "initAppContext",
|
|
447
|
+
value: function initAppContext() {
|
|
448
|
+
var options = this.options;
|
|
449
|
+
var appDirectory = options.pwd, _plugins = options.plugins, plugins = _plugins === void 0 ? [] : _plugins, config = options.config;
|
|
450
|
+
var serverPlugins = plugins.map(function(p) {
|
|
451
|
+
return {
|
|
452
|
+
server: p
|
|
453
|
+
};
|
|
454
|
+
});
|
|
455
|
+
return {
|
|
456
|
+
appDirectory: appDirectory,
|
|
457
|
+
distDirectory: path.join(appDirectory, config.output.path || "dist"),
|
|
458
|
+
sharedDirectory: path.resolve(appDirectory, SHARED_DIR),
|
|
459
|
+
plugins: serverPlugins
|
|
460
|
+
};
|
|
461
|
+
}
|
|
462
|
+
},
|
|
463
|
+
{
|
|
464
|
+
key: "loadServerEnv",
|
|
465
|
+
value: function loadServerEnv(options) {
|
|
466
|
+
var appDirectory = options.pwd;
|
|
467
|
+
var serverEnv = process.env.MODERN_ENV;
|
|
468
|
+
var serverEnvPath = path.resolve(appDirectory, ".env.".concat(serverEnv));
|
|
469
|
+
if (serverEnv && fs.existsSync(serverEnvPath) && !fs.statSync(serverEnvPath).isDirectory()) {
|
|
470
|
+
var envConfig = dotenv.config({
|
|
471
|
+
path: serverEnvPath
|
|
472
|
+
});
|
|
473
|
+
dotenvExpand(envConfig);
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
]);
|
|
478
|
+
return Server;
|
|
479
|
+
}();
|
|
480
|
+
export { Server };
|