@modern-js/server 1.1.3-beta.1 → 1.1.5-beta.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 +42 -0
- package/dist/js/modern/dev-tools/babel/register.js +2 -2
- package/dist/js/modern/dev-tools/mock/getMockData.js +2 -2
- package/dist/js/modern/libs/context/context.js +15 -7
- package/dist/js/modern/libs/context/index.js +2 -2
- package/dist/js/modern/libs/{measure.js → metrics.js} +2 -2
- package/dist/js/modern/libs/proxy.js +2 -2
- package/dist/js/modern/libs/render/cache/__tests__/cache.test.js +2 -2
- package/dist/js/modern/libs/render/cache/index.js +2 -2
- package/dist/js/modern/libs/render/cache/type.js +0 -1
- package/dist/js/modern/libs/render/index.js +6 -2
- package/dist/js/modern/libs/render/ssr.js +3 -2
- package/dist/js/modern/libs/route/route.js +1 -1
- package/dist/js/modern/server/dev-server/dev-server-split.js +2 -6
- package/dist/js/modern/server/dev-server/dev-server.js +12 -3
- package/dist/js/modern/server/dev-server/index.js +1 -1
- package/dist/js/modern/server/index.js +19 -16
- package/dist/js/modern/server/modern-server-split.js +55 -6
- package/dist/js/modern/server/modern-server.js +92 -58
- package/dist/js/modern/type.js +0 -1
- package/dist/js/modern/utils.js +9 -1
- package/dist/js/node/dev-tools/babel/register.js +2 -2
- package/dist/js/node/dev-tools/mock/getMockData.js +2 -2
- package/dist/js/node/libs/context/context.js +15 -7
- package/dist/js/node/libs/context/index.js +2 -2
- package/dist/js/node/libs/{measure.js → metrics.js} +3 -3
- package/dist/js/node/libs/proxy.js +2 -2
- package/dist/js/node/libs/render/cache/__tests__/cache.test.js +2 -2
- package/dist/js/node/libs/render/cache/index.js +2 -2
- package/dist/js/node/libs/render/index.js +6 -2
- package/dist/js/node/libs/render/ssr.js +3 -2
- package/dist/js/node/libs/route/route.js +1 -1
- package/dist/js/node/server/dev-server/dev-server-split.js +5 -9
- package/dist/js/node/server/dev-server/dev-server.js +12 -3
- package/dist/js/node/server/dev-server/index.js +4 -4
- package/dist/js/node/server/index.js +18 -14
- package/dist/js/node/server/modern-server-split.js +61 -9
- package/dist/js/node/server/modern-server.js +93 -59
- package/dist/js/node/utils.js +12 -2
- package/dist/types/libs/context/context.d.ts +5 -5
- package/dist/types/libs/context/index.d.ts +3 -3
- package/dist/types/libs/metrics.d.ts +3 -0
- package/dist/types/libs/render/index.d.ts +10 -1
- package/dist/types/libs/render/ssr.d.ts +2 -1
- package/dist/types/libs/render/type.d.ts +2 -21
- package/dist/types/libs/route/route.d.ts +2 -10
- package/dist/types/server/dev-server/dev-server-split.d.ts +3 -4
- package/dist/types/server/dev-server/index.d.ts +1 -1
- package/dist/types/server/modern-server-split.d.ts +15 -5
- package/dist/types/server/modern-server.d.ts +14 -7
- package/dist/types/type.d.ts +11 -5
- package/dist/types/utils.d.ts +2 -1
- package/package.json +7 -7
- package/src/libs/context/context.ts +12 -8
- package/src/libs/context/index.ts +3 -3
- package/src/libs/{measure.ts → metrics.ts} +3 -3
- package/src/libs/render/index.ts +21 -11
- package/src/libs/render/ssr.ts +5 -1
- package/src/libs/render/type.ts +3 -16
- package/src/libs/route/route.ts +4 -20
- package/src/server/dev-server/dev-server-split.ts +3 -7
- package/src/server/dev-server/dev-server.ts +15 -13
- package/src/server/dev-server/index.ts +1 -1
- package/src/server/index.ts +24 -14
- package/src/server/modern-server-split.ts +59 -7
- package/src/server/modern-server.ts +105 -67
- package/src/type.ts +12 -5
- package/src/utils.ts +14 -0
- package/dist/types/libs/measure.d.ts +0 -3
|
@@ -17,13 +17,13 @@ var _modernServer = require("./modern-server");
|
|
|
17
17
|
|
|
18
18
|
var _modernServerSplit = require("./modern-server-split");
|
|
19
19
|
|
|
20
|
-
var
|
|
20
|
+
var _metrics = require("../libs/metrics");
|
|
21
21
|
|
|
22
22
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
23
23
|
|
|
24
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
24
|
+
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; }
|
|
25
25
|
|
|
26
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
26
|
+
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; }
|
|
27
27
|
|
|
28
28
|
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; }
|
|
29
29
|
|
|
@@ -52,7 +52,7 @@ class Server {
|
|
|
52
52
|
options
|
|
53
53
|
} = this;
|
|
54
54
|
options.logger = options.logger || _utils.logger;
|
|
55
|
-
options.
|
|
55
|
+
options.metrics = options.metrics || _metrics.metrics; // initialize server
|
|
56
56
|
|
|
57
57
|
if (options.dev) {
|
|
58
58
|
this.server = this.createDevServer();
|
|
@@ -95,9 +95,11 @@ class Server {
|
|
|
95
95
|
} = this;
|
|
96
96
|
|
|
97
97
|
if (options.apiOnly) {
|
|
98
|
-
return new _modernServerSplit.
|
|
98
|
+
return new _modernServerSplit.ModernAPIServer(options);
|
|
99
|
+
} else if (options.ssrOnly) {
|
|
100
|
+
return new _modernServerSplit.ModernSSRServer(options);
|
|
99
101
|
} else if (options.webOnly) {
|
|
100
|
-
return new _modernServerSplit.
|
|
102
|
+
return new _modernServerSplit.ModernWebServer(options);
|
|
101
103
|
} else {
|
|
102
104
|
return new _modernServer.ModernServer(options);
|
|
103
105
|
}
|
|
@@ -109,15 +111,15 @@ class Server {
|
|
|
109
111
|
} = this;
|
|
110
112
|
|
|
111
113
|
const {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
+
ModernAPIDevServer,
|
|
115
|
+
ModernSSRDevServer,
|
|
114
116
|
ModernDevServer
|
|
115
117
|
} = require("./dev-server");
|
|
116
118
|
|
|
117
119
|
if (options.apiOnly) {
|
|
118
|
-
return new
|
|
119
|
-
} else if (options.
|
|
120
|
-
return new
|
|
120
|
+
return new ModernAPIDevServer(options);
|
|
121
|
+
} else if (options.ssrOnly) {
|
|
122
|
+
return new ModernSSRDevServer(options);
|
|
121
123
|
} else {
|
|
122
124
|
return new ModernDevServer(options);
|
|
123
125
|
}
|
|
@@ -129,17 +131,19 @@ class Server {
|
|
|
129
131
|
const {
|
|
130
132
|
options
|
|
131
133
|
} = this;
|
|
134
|
+
(_options$plugins = options.plugins) === null || _options$plugins === void 0 ? void 0 : _options$plugins.forEach(p => {
|
|
135
|
+
_serverPlugin.serverManager.usePlugin(p);
|
|
136
|
+
});
|
|
132
137
|
const appContext = await this.initAppContext();
|
|
133
138
|
|
|
134
139
|
_serverPlugin.serverManager.run(() => {
|
|
140
|
+
_core.ConfigContext.set(this.options.config);
|
|
141
|
+
|
|
135
142
|
_core.AppContext.set(_objectSpread(_objectSpread({}, appContext), {}, {
|
|
136
143
|
distDirectory: _path.default.join(options.pwd, options.config.output.path || 'dist')
|
|
137
144
|
}));
|
|
138
145
|
});
|
|
139
146
|
|
|
140
|
-
(_options$plugins = options.plugins) === null || _options$plugins === void 0 ? void 0 : _options$plugins.forEach(p => {
|
|
141
|
-
_serverPlugin.serverManager.usePlugin(p);
|
|
142
|
-
});
|
|
143
147
|
return _serverPlugin.serverManager.init({});
|
|
144
148
|
}
|
|
145
149
|
|
|
@@ -3,28 +3,46 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.ModernWebServer = exports.ModernSSRServer = exports.ModernAPIServer = void 0;
|
|
7
7
|
|
|
8
8
|
var _modernServer = require("./modern-server");
|
|
9
9
|
|
|
10
|
-
class
|
|
10
|
+
class ModernSSRServer extends _modernServer.ModernServer {
|
|
11
|
+
// Todo should not invoke any route hook in modernSSRServer
|
|
12
|
+
async warmupSSRBundle() {// empty
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
verifyMatch(context, matched) {
|
|
16
|
+
if (matched.generate().isApi) {
|
|
17
|
+
this.render404(context);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
11
21
|
prepareAPIHandler(_m, _) {
|
|
12
22
|
return null;
|
|
13
23
|
}
|
|
14
24
|
|
|
15
25
|
async prepareWebHandler(extension) {
|
|
16
26
|
return super.prepareWebHandler(extension);
|
|
17
|
-
}
|
|
27
|
+
} // protected filterRoutes(routes: ModernRouteInterface[]) {
|
|
28
|
+
// return routes.filter(route => route.entryName);
|
|
29
|
+
// }
|
|
18
30
|
|
|
19
|
-
|
|
20
|
-
|
|
31
|
+
|
|
32
|
+
async preServerInit() {// empty
|
|
21
33
|
}
|
|
22
34
|
|
|
23
35
|
}
|
|
24
36
|
|
|
25
|
-
exports.
|
|
37
|
+
exports.ModernSSRServer = ModernSSRServer;
|
|
38
|
+
|
|
39
|
+
class ModernAPIServer extends _modernServer.ModernServer {
|
|
40
|
+
async emitRouteHook(_, _input) {// empty
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
async warmupSSRBundle() {// empty
|
|
44
|
+
}
|
|
26
45
|
|
|
27
|
-
class APIModernServer extends _modernServer.ModernServer {
|
|
28
46
|
prepareWebHandler(_) {
|
|
29
47
|
return null;
|
|
30
48
|
}
|
|
@@ -37,9 +55,43 @@ class APIModernServer extends _modernServer.ModernServer {
|
|
|
37
55
|
return routes.filter(route => route.isApi);
|
|
38
56
|
}
|
|
39
57
|
|
|
40
|
-
async preServerInit() {//
|
|
58
|
+
async preServerInit() {// empty
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
exports.ModernAPIServer = ModernAPIServer;
|
|
64
|
+
|
|
65
|
+
class ModernWebServer extends _modernServer.ModernServer {
|
|
66
|
+
async warmupSSRBundle() {// empty
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
async handleAPI(context) {
|
|
70
|
+
const {
|
|
71
|
+
proxyTarget
|
|
72
|
+
} = this;
|
|
73
|
+
|
|
74
|
+
if (!(proxyTarget !== null && proxyTarget !== void 0 && proxyTarget.api)) {
|
|
75
|
+
this.proxy();
|
|
76
|
+
} else {
|
|
77
|
+
this.render404(context);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
async handleWeb(context, route) {
|
|
82
|
+
const {
|
|
83
|
+
proxyTarget
|
|
84
|
+
} = this;
|
|
85
|
+
|
|
86
|
+
if (route.isSSR && proxyTarget !== null && proxyTarget !== void 0 && proxyTarget.ssr) {
|
|
87
|
+
return this.proxy();
|
|
88
|
+
} else {
|
|
89
|
+
// if no proxyTarget but access web server, degradation to csr
|
|
90
|
+
route.isSSR = false;
|
|
91
|
+
return super.handleWeb(context, route);
|
|
92
|
+
}
|
|
41
93
|
}
|
|
42
94
|
|
|
43
95
|
}
|
|
44
96
|
|
|
45
|
-
exports.
|
|
97
|
+
exports.ModernWebServer = ModernWebServer;
|
|
@@ -47,9 +47,9 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
47
47
|
|
|
48
48
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
49
49
|
|
|
50
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
50
|
+
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; }
|
|
51
51
|
|
|
52
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
52
|
+
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; }
|
|
53
53
|
|
|
54
54
|
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; }
|
|
55
55
|
|
|
@@ -71,7 +71,8 @@ class ModernServer {
|
|
|
71
71
|
routes,
|
|
72
72
|
staticGenerate,
|
|
73
73
|
logger,
|
|
74
|
-
|
|
74
|
+
metrics,
|
|
75
|
+
proxyTarget
|
|
75
76
|
}) {
|
|
76
77
|
this.pwd = void 0;
|
|
77
78
|
this.distDir = void 0;
|
|
@@ -82,7 +83,8 @@ class ModernServer {
|
|
|
82
83
|
this.presetRoutes = void 0;
|
|
83
84
|
this.runner = void 0;
|
|
84
85
|
this.logger = void 0;
|
|
85
|
-
this.
|
|
86
|
+
this.metrics = void 0;
|
|
87
|
+
this.proxyTarget = void 0;
|
|
86
88
|
this.isDev = false;
|
|
87
89
|
this.staticFileHandler = void 0;
|
|
88
90
|
this.routeRenderHandler = void 0;
|
|
@@ -96,13 +98,14 @@ class ModernServer {
|
|
|
96
98
|
|
|
97
99
|
this.isDev = Boolean(dev);
|
|
98
100
|
this.pwd = pwd;
|
|
99
|
-
this.distDir = _path.default.join(pwd, config.output.path || '');
|
|
101
|
+
this.distDir = _path.default.join(pwd, config.output.path || 'dist');
|
|
100
102
|
this.workDir = this.isDev ? pwd : this.distDir;
|
|
101
103
|
this.conf = config;
|
|
102
104
|
this.logger = logger;
|
|
103
|
-
this.
|
|
105
|
+
this.metrics = metrics;
|
|
104
106
|
this.router = new _route.RouteMatchManager();
|
|
105
107
|
this.presetRoutes = routes;
|
|
108
|
+
this.proxyTarget = proxyTarget;
|
|
106
109
|
|
|
107
110
|
if (staticGenerate) {
|
|
108
111
|
this.staticGenerate = staticGenerate;
|
|
@@ -189,20 +192,6 @@ class ModernServer {
|
|
|
189
192
|
|
|
190
193
|
async createHTTPServer(handler) {
|
|
191
194
|
return (0, _http.createServer)(handler);
|
|
192
|
-
} // warmup ssr function
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
warmupSSRBundle() {
|
|
196
|
-
const {
|
|
197
|
-
distDir
|
|
198
|
-
} = this;
|
|
199
|
-
const bundles = this.router.getBundles();
|
|
200
|
-
bundles.forEach(bundle => {
|
|
201
|
-
const filepath = _path.default.join(distDir, bundle); // if error, just throw and let process die
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
require(filepath);
|
|
205
|
-
});
|
|
206
195
|
} // read route spec from route.json
|
|
207
196
|
|
|
208
197
|
|
|
@@ -266,10 +255,13 @@ class ModernServer {
|
|
|
266
255
|
const mode = _utils.fs.existsSync(_path.default.join(apiDir, _constants.AGGRED_DIR.lambda)) ? _constants.ApiServerMode.frame : _constants.ApiServerMode.func; // if use lambda/, mean framework style of writing, then discard user extension
|
|
267
256
|
|
|
268
257
|
const apiExtension = (0, _utils2.mergeExtension)(pluginAPIExt);
|
|
269
|
-
this.frameAPIHandler = await this.prepareAPIHandler(mode,
|
|
270
|
-
modernJsConfig: this.conf
|
|
271
|
-
}));
|
|
258
|
+
this.frameAPIHandler = await this.prepareAPIHandler(mode, apiExtension);
|
|
272
259
|
}
|
|
260
|
+
} // Todo
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
async proxy() {
|
|
264
|
+
return null;
|
|
273
265
|
}
|
|
274
266
|
/* —————————————————————— function will be overwrite —————————————————————— */
|
|
275
267
|
|
|
@@ -311,34 +303,59 @@ class ModernServer {
|
|
|
311
303
|
return routes;
|
|
312
304
|
}
|
|
313
305
|
|
|
306
|
+
async emitRouteHook(eventName, input) {
|
|
307
|
+
return this.runner[eventName](input, {
|
|
308
|
+
onLast: _utils2.noop
|
|
309
|
+
});
|
|
310
|
+
} // warmup ssr function
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
warmupSSRBundle() {
|
|
314
|
+
const {
|
|
315
|
+
distDir
|
|
316
|
+
} = this;
|
|
317
|
+
const bundles = this.router.getBundles();
|
|
318
|
+
bundles.forEach(bundle => {
|
|
319
|
+
const filepath = _path.default.join(distDir, bundle); // if error, just throw and let process die
|
|
320
|
+
|
|
321
|
+
|
|
322
|
+
require(filepath);
|
|
323
|
+
});
|
|
324
|
+
}
|
|
325
|
+
|
|
314
326
|
async preServerInit() {
|
|
315
327
|
const {
|
|
316
|
-
conf
|
|
328
|
+
conf,
|
|
329
|
+
runner
|
|
317
330
|
} = this;
|
|
318
|
-
const preMiddleware = await
|
|
331
|
+
const preMiddleware = await runner.preServerInit(conf);
|
|
319
332
|
preMiddleware.flat().forEach(mid => {
|
|
320
333
|
this.addHandler(mid);
|
|
321
334
|
});
|
|
322
335
|
}
|
|
323
336
|
|
|
324
|
-
|
|
325
|
-
const
|
|
337
|
+
async handleAPI(context) {
|
|
338
|
+
const {
|
|
339
|
+
req,
|
|
340
|
+
res
|
|
341
|
+
} = context;
|
|
326
342
|
|
|
327
|
-
if (
|
|
328
|
-
|
|
343
|
+
if (!this.frameAPIHandler) {
|
|
344
|
+
throw new Error('can not found api hanlder');
|
|
329
345
|
}
|
|
330
346
|
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
const curFavicon = faviconByEntries[f];
|
|
347
|
+
await this.frameAPIHandler(req, res);
|
|
348
|
+
}
|
|
334
349
|
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
350
|
+
async handleWeb(context, route) {
|
|
351
|
+
return this.routeRenderHandler({
|
|
352
|
+
ctx: context,
|
|
353
|
+
route,
|
|
354
|
+
runner: this.runner
|
|
355
|
+
});
|
|
356
|
+
}
|
|
340
357
|
|
|
341
|
-
|
|
358
|
+
verifyMatch(_c, _m) {// empty
|
|
342
359
|
}
|
|
343
360
|
/* —————————————————————— private function —————————————————————— */
|
|
344
361
|
// handler route.json, include api / csr / ssr
|
|
@@ -350,10 +367,8 @@ class ModernServer {
|
|
|
350
367
|
req,
|
|
351
368
|
res
|
|
352
369
|
} = context;
|
|
353
|
-
await this.
|
|
370
|
+
await this.emitRouteHook('beforeMatch', {
|
|
354
371
|
context
|
|
355
|
-
}, {
|
|
356
|
-
onLast: _utils2.noop
|
|
357
372
|
}); // match routes in the route spec
|
|
358
373
|
|
|
359
374
|
const matched = this.router.match(context.url);
|
|
@@ -361,14 +376,18 @@ class ModernServer {
|
|
|
361
376
|
if (!matched) {
|
|
362
377
|
this.render404(context);
|
|
363
378
|
return;
|
|
379
|
+
} else {
|
|
380
|
+
this.verifyMatch(context, matched);
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
if (res.headersSent) {
|
|
384
|
+
return;
|
|
364
385
|
}
|
|
365
386
|
|
|
366
387
|
const routeAPI = (0, _route2.createRouteAPI)(matched, this.router);
|
|
367
|
-
await this.
|
|
388
|
+
await this.emitRouteHook('afterMatch', {
|
|
368
389
|
context,
|
|
369
390
|
routeAPI
|
|
370
|
-
}, {
|
|
371
|
-
onLast: _utils2.noop
|
|
372
391
|
});
|
|
373
392
|
|
|
374
393
|
if (res.headersSent) {
|
|
@@ -383,11 +402,7 @@ class ModernServer {
|
|
|
383
402
|
context.setParams(params); // route is api service
|
|
384
403
|
|
|
385
404
|
if (route.isApi) {
|
|
386
|
-
|
|
387
|
-
throw new Error('can not found api hanlder');
|
|
388
|
-
}
|
|
389
|
-
|
|
390
|
-
await this.frameAPIHandler(req, res);
|
|
405
|
+
this.handleAPI(context);
|
|
391
406
|
return;
|
|
392
407
|
}
|
|
393
408
|
|
|
@@ -400,12 +415,13 @@ class ModernServer {
|
|
|
400
415
|
return;
|
|
401
416
|
}
|
|
402
417
|
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
}
|
|
408
|
-
|
|
418
|
+
if (route.entryName) {
|
|
419
|
+
await this.emitRouteHook('beforeRender', {
|
|
420
|
+
context
|
|
421
|
+
});
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
const file = await this.handleWeb(context, route);
|
|
409
425
|
|
|
410
426
|
if (!file) {
|
|
411
427
|
this.render404(context);
|
|
@@ -423,11 +439,9 @@ class ModernServer {
|
|
|
423
439
|
|
|
424
440
|
if (route.entryName) {
|
|
425
441
|
const templateAPI = (0, _template.createTemplateAPI)(file.content.toString());
|
|
426
|
-
await this.
|
|
442
|
+
await this.emitRouteHook('afterRender', {
|
|
427
443
|
context,
|
|
428
444
|
templateAPI
|
|
429
|
-
}, {
|
|
430
|
-
onLast: _utils2.noop
|
|
431
445
|
});
|
|
432
446
|
await this.injectMicroFE(context, templateAPI);
|
|
433
447
|
response = templateAPI.get();
|
|
@@ -547,7 +561,7 @@ class ModernServer {
|
|
|
547
561
|
res.statusCode = 200;
|
|
548
562
|
const context = (0, _context.createContext)(req, res, {
|
|
549
563
|
logger: this.logger,
|
|
550
|
-
|
|
564
|
+
metrics: this.metrics
|
|
551
565
|
});
|
|
552
566
|
|
|
553
567
|
try {
|
|
@@ -595,6 +609,26 @@ class ModernServer {
|
|
|
595
609
|
res.end((0, _utils2.createErrorDocument)(status, text));
|
|
596
610
|
}
|
|
597
611
|
|
|
612
|
+
prepareFavicons(favicon, faviconByEntries) {
|
|
613
|
+
const faviconNames = [];
|
|
614
|
+
|
|
615
|
+
if (favicon) {
|
|
616
|
+
faviconNames.push(favicon.substring(favicon.lastIndexOf('/') + 1));
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
if (faviconByEntries) {
|
|
620
|
+
Object.keys(faviconByEntries).forEach(f => {
|
|
621
|
+
const curFavicon = faviconByEntries[f];
|
|
622
|
+
|
|
623
|
+
if (curFavicon) {
|
|
624
|
+
faviconNames.push(curFavicon.substring(curFavicon.lastIndexOf('/') + 1));
|
|
625
|
+
}
|
|
626
|
+
});
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
return faviconNames;
|
|
630
|
+
}
|
|
631
|
+
|
|
598
632
|
}
|
|
599
633
|
/* eslint-enable max-lines */
|
|
600
634
|
|
package/dist/js/node/utils.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
exports.applyMixins = applyMixins;
|
|
6
7
|
exports.toMessage = exports.noop = exports.mergeExtension = exports.createErrorDocument = void 0;
|
|
7
8
|
|
|
8
9
|
const mergeExtension = users => {
|
|
@@ -63,6 +64,15 @@ const createErrorDocument = (status, text) => {
|
|
|
63
64
|
</body>
|
|
64
65
|
</html>
|
|
65
66
|
`;
|
|
66
|
-
};
|
|
67
|
+
}; // This can live anywhere in your codebase:
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
exports.createErrorDocument = createErrorDocument;
|
|
67
71
|
|
|
68
|
-
|
|
72
|
+
function applyMixins(derivedCtor, constructors) {
|
|
73
|
+
constructors.forEach(baseCtor => {
|
|
74
|
+
Object.getOwnPropertyNames(baseCtor.prototype).forEach(name => {
|
|
75
|
+
Object.defineProperty(derivedCtor.prototype, name, Object.getOwnPropertyDescriptor(baseCtor.prototype, name) || Object.create(null));
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { IncomingMessage, ServerResponse } from 'http';
|
|
3
3
|
import { URL } from 'url';
|
|
4
4
|
import qs from 'querystring';
|
|
5
|
-
import type { ModernServerContext as ModernServerContextInterface,
|
|
5
|
+
import type { ModernServerContext as ModernServerContextInterface, Metrics, Logger } from '@modern-js/types/server';
|
|
6
6
|
export declare class ModernServerContext implements ModernServerContextInterface {
|
|
7
7
|
/**
|
|
8
8
|
* http request
|
|
@@ -19,18 +19,18 @@ export declare class ModernServerContext implements ModernServerContextInterface
|
|
|
19
19
|
|
|
20
20
|
params: Record<string, string>;
|
|
21
21
|
logger: Logger;
|
|
22
|
-
|
|
22
|
+
metrics?: Metrics;
|
|
23
23
|
constructor(req: IncomingMessage, res: ServerResponse, {
|
|
24
24
|
logger,
|
|
25
|
-
|
|
25
|
+
metrics
|
|
26
26
|
}: {
|
|
27
27
|
logger: Logger;
|
|
28
|
-
|
|
28
|
+
metrics: Metrics;
|
|
29
29
|
});
|
|
30
|
+
private bind;
|
|
30
31
|
setParams(params: Record<string, string>): void;
|
|
31
32
|
getReqHeader(key: string): string | string[];
|
|
32
33
|
get headers(): import("http").IncomingHttpHeaders;
|
|
33
|
-
set headers(val: import("http").IncomingHttpHeaders);
|
|
34
34
|
get method(): string;
|
|
35
35
|
get url(): string;
|
|
36
36
|
set url(val: string);
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { IncomingMessage, ServerResponse } from 'http';
|
|
2
|
-
import {
|
|
2
|
+
import { Metrics, Logger } from '../../type';
|
|
3
3
|
import { ModernServerContext } from './context';
|
|
4
4
|
export declare const createContext: (req: IncomingMessage, res: ServerResponse, {
|
|
5
5
|
logger,
|
|
6
|
-
|
|
6
|
+
metrics
|
|
7
7
|
}: {
|
|
8
8
|
logger: Logger;
|
|
9
|
-
|
|
9
|
+
metrics: Metrics;
|
|
10
10
|
}) => ModernServerContext;
|
|
11
11
|
export { ModernServerContext };
|
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
import { RenderResult } from '../../type';
|
|
2
2
|
import { ModernRoute } from '../route';
|
|
3
3
|
import { ModernServerContext } from '../context';
|
|
4
|
+
import { ServerHookRunner } from "../../type.d";
|
|
4
5
|
export declare const createRenderHandler: ({
|
|
5
6
|
distDir,
|
|
6
7
|
staticGenerate
|
|
7
8
|
}: {
|
|
8
9
|
distDir: string;
|
|
9
10
|
staticGenerate: boolean;
|
|
10
|
-
}) => (
|
|
11
|
+
}) => ({
|
|
12
|
+
ctx,
|
|
13
|
+
route,
|
|
14
|
+
runner
|
|
15
|
+
}: {
|
|
16
|
+
ctx: ModernServerContext;
|
|
17
|
+
route: ModernRoute;
|
|
18
|
+
runner: ServerHookRunner;
|
|
19
|
+
}) => Promise<RenderResult | null>;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { ModernServerContext } from '../context';
|
|
2
2
|
import { RenderResult } from '../../type';
|
|
3
|
+
import { ServerHookRunner } from "../../type.d";
|
|
3
4
|
export declare const render: (ctx: ModernServerContext, renderOptions: {
|
|
4
5
|
distDir: string;
|
|
5
6
|
bundle: string;
|
|
6
7
|
template: string;
|
|
7
8
|
entryName: string;
|
|
8
9
|
staticGenerate: boolean;
|
|
9
|
-
}) => Promise<RenderResult>;
|
|
10
|
+
}, runner: ServerHookRunner) => Promise<RenderResult>;
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
/// <reference types="react" />
|
|
3
|
-
import {
|
|
4
|
-
import { Measure, Logger } from '../../type';
|
|
2
|
+
import { BaseSSRServerContext } from '@modern-js/types/server';
|
|
5
3
|
declare type MetaKeyMap = {
|
|
6
4
|
header?: string[];
|
|
7
5
|
query?: string[];
|
|
@@ -24,24 +22,7 @@ export declare enum RenderLevel {
|
|
|
24
22
|
SERVER_PREFETCH = 1,
|
|
25
23
|
SERVER_RENDER = 2,
|
|
26
24
|
}
|
|
27
|
-
export declare type SSRServerContext = {
|
|
28
|
-
request: {
|
|
29
|
-
params: Record<string, string>;
|
|
30
|
-
pathname: string;
|
|
31
|
-
query: Record<string, string>;
|
|
32
|
-
headers: IncomingHttpHeaders;
|
|
33
|
-
cookie?: string;
|
|
34
|
-
};
|
|
35
|
-
redirection: {
|
|
36
|
-
url?: string;
|
|
37
|
-
status?: number;
|
|
38
|
-
};
|
|
39
|
-
distDir: string;
|
|
40
|
-
template: string;
|
|
41
|
-
entryName: string;
|
|
42
|
-
logger: Logger;
|
|
43
|
-
measure?: Measure;
|
|
44
|
-
loadableManifest?: string;
|
|
25
|
+
export declare type SSRServerContext = BaseSSRServerContext & {
|
|
45
26
|
cacheConfig?: CacheConfig;
|
|
46
27
|
staticGenerate?: boolean;
|
|
47
28
|
};
|
|
@@ -1,13 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
urlPath: string;
|
|
4
|
-
entryPath?: string;
|
|
5
|
-
isSPA?: boolean;
|
|
6
|
-
isSSR?: boolean;
|
|
7
|
-
isApi?: boolean;
|
|
8
|
-
bundle?: string;
|
|
9
|
-
enableModernMode?: boolean;
|
|
10
|
-
}
|
|
1
|
+
import { ServerRoute as ModernRouteInterface } from '@modern-js/types';
|
|
2
|
+
export type { ModernRouteInterface };
|
|
11
3
|
export declare class ModernRoute implements ModernRouteInterface {
|
|
12
4
|
entryName: string;
|
|
13
5
|
urlPath: string;
|
|
@@ -3,14 +3,13 @@ import { ModernDevServer } from './dev-server';
|
|
|
3
3
|
import { mergeExtension } from "../../utils.d";
|
|
4
4
|
import { ModernRouteInterface } from "../../libs/route";
|
|
5
5
|
import { ApiServerMode } from "../../constants.d";
|
|
6
|
-
export declare class
|
|
6
|
+
export declare class ModernSSRDevServer extends ModernDevServer {
|
|
7
7
|
protected prepareAPIHandler(_m: ApiServerMode, _: APIServerStartInput['config']): any;
|
|
8
8
|
protected prepareWebHandler(extension: ReturnType<typeof mergeExtension>): Promise<import("@modern-js/server-plugin").Adapter>;
|
|
9
9
|
protected filterRoutes(routes: ModernRouteInterface[]): ModernRouteInterface[];
|
|
10
10
|
}
|
|
11
|
-
export declare class
|
|
12
|
-
protected
|
|
13
|
-
protected prepareAPIHandler(mode: ApiServerMode, extension: ReturnType<typeof mergeExtension>): Promise<import("@modern-js/server-plugin").Adapter>;
|
|
11
|
+
export declare class ModernAPIDevServer extends ModernDevServer {
|
|
12
|
+
protected prepareAPIHandler(mode: ApiServerMode, extension: APIServerStartInput['config']): Promise<import("@modern-js/server-plugin").Adapter>;
|
|
14
13
|
protected filterRoutes(routes: ModernRouteInterface[]): ModernRouteInterface[];
|
|
15
14
|
protected preServerInit(): Promise<void>;
|
|
16
15
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { ModernAPIDevServer, ModernSSRDevServer } from './dev-server-split';
|
|
2
2
|
export { ModernDevServer } from './dev-server';
|