@modern-js/server 1.1.2 → 1.1.3-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/dist/js/modern/libs/hook-api/route.js +37 -0
- package/dist/js/modern/libs/{hook-api.js → hook-api/template.js} +0 -0
- package/dist/js/modern/libs/route/index.js +4 -0
- package/dist/js/modern/libs/route/matcher.js +4 -0
- package/dist/js/modern/server/{web-server.js → dev-server/dev-server-split.js} +9 -7
- package/dist/js/modern/server/{dev-server.js → dev-server/dev-server.js} +41 -22
- package/dist/js/modern/server/dev-server/index.js +2 -0
- package/dist/js/modern/server/index.js +61 -62
- package/dist/js/modern/server/{api-server.js → modern-server-split.js} +6 -10
- package/dist/js/modern/server/modern-server.js +48 -20
- package/dist/js/modern/utils.js +2 -2
- package/dist/js/node/libs/hook-api/route.js +46 -0
- package/dist/js/node/libs/{hook-api.js → hook-api/template.js} +0 -0
- package/dist/js/node/libs/route/index.js +4 -0
- package/dist/js/node/libs/route/matcher.js +4 -0
- package/dist/js/node/server/{api-server.js → dev-server/dev-server-split.js} +7 -12
- package/dist/js/node/server/{dev-server.js → dev-server/dev-server.js} +42 -21
- package/dist/js/node/server/dev-server/index.js +27 -0
- package/dist/js/node/server/index.js +67 -63
- package/dist/js/node/server/{web-server.js → modern-server-split.js} +10 -9
- package/dist/js/node/server/modern-server.js +50 -20
- package/dist/js/node/utils.js +2 -2
- package/dist/types/libs/hook-api/route.d.ts +13 -0
- package/dist/types/libs/{hook-api.d.ts → hook-api/template.d.ts} +0 -0
- package/dist/types/libs/route/index.d.ts +1 -0
- package/dist/types/libs/route/matcher.d.ts +1 -0
- package/dist/types/server/{api-server.d.ts → dev-server/dev-server-split.d.ts} +7 -8
- package/dist/types/server/{dev-server.d.ts → dev-server/dev-server.d.ts} +6 -5
- package/dist/types/server/dev-server/index.d.ts +2 -0
- package/dist/types/server/index.d.ts +3 -1
- package/dist/types/server/{web-server.d.ts → modern-server-split.d.ts} +5 -4
- package/dist/types/server/modern-server.d.ts +6 -5
- package/dist/types/utils.d.ts +1 -1
- package/package.json +19 -17
- package/src/libs/hook-api/route.ts +38 -0
- package/src/libs/{hook-api.ts → hook-api/template.ts} +0 -0
- package/src/libs/route/index.ts +4 -0
- package/src/libs/route/matcher.ts +4 -0
- package/src/server/{api-server.ts → dev-server/dev-server-split.ts} +9 -11
- package/src/server/{dev-server.ts → dev-server/dev-server.ts} +56 -23
- package/src/server/dev-server/index.ts +2 -0
- package/src/server/index.ts +69 -46
- package/src/server/{web-server.ts → modern-server-split.ts} +12 -10
- package/src/server/modern-server.ts +54 -34
- package/src/utils.ts +2 -2
|
@@ -3,31 +3,26 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.WebModernDevServer = exports.APIModernDevServer = void 0;
|
|
7
7
|
|
|
8
8
|
var _devServer = require("./dev-server");
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
class APIModernServer extends _modernServer.ModernServer {
|
|
13
|
-
prepareWebHandler(_) {
|
|
10
|
+
class WebModernDevServer extends _devServer.ModernDevServer {
|
|
11
|
+
prepareAPIHandler(_m, _) {
|
|
14
12
|
return null;
|
|
15
13
|
}
|
|
16
14
|
|
|
17
|
-
async
|
|
18
|
-
return super.
|
|
15
|
+
async prepareWebHandler(extension) {
|
|
16
|
+
return super.prepareWebHandler(extension);
|
|
19
17
|
}
|
|
20
18
|
|
|
21
19
|
filterRoutes(routes) {
|
|
22
|
-
return routes.filter(route => route.
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
async preServerInit() {// noop
|
|
20
|
+
return routes.filter(route => route.entryName);
|
|
26
21
|
}
|
|
27
22
|
|
|
28
23
|
}
|
|
29
24
|
|
|
30
|
-
exports.
|
|
25
|
+
exports.WebModernDevServer = WebModernDevServer;
|
|
31
26
|
|
|
32
27
|
class APIModernDevServer extends _devServer.ModernDevServer {
|
|
33
28
|
prepareWebHandler(_) {
|
|
@@ -5,31 +5,35 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.ModernDevServer = void 0;
|
|
7
7
|
|
|
8
|
+
var _http = require("http");
|
|
9
|
+
|
|
8
10
|
var _path = _interopRequireDefault(require("path"));
|
|
9
11
|
|
|
12
|
+
var _https = require("https");
|
|
13
|
+
|
|
10
14
|
var _utils = require("@modern-js/utils");
|
|
11
15
|
|
|
12
16
|
var _webpackDevMiddleware = _interopRequireDefault(require("webpack-dev-middleware"));
|
|
13
17
|
|
|
14
|
-
var
|
|
18
|
+
var _modernServer = require("../modern-server");
|
|
15
19
|
|
|
16
|
-
var
|
|
20
|
+
var _mock = require("../../dev-tools/mock");
|
|
17
21
|
|
|
18
|
-
var
|
|
22
|
+
var _proxy = require("../../libs/proxy");
|
|
19
23
|
|
|
20
|
-
var
|
|
24
|
+
var _socketServer = _interopRequireDefault(require("../../dev-tools/socket-server"));
|
|
21
25
|
|
|
22
|
-
var
|
|
26
|
+
var _devServerPlugin = _interopRequireDefault(require("../../dev-tools/dev-server-plugin"));
|
|
23
27
|
|
|
24
|
-
var
|
|
28
|
+
var _launchEditor = require("../../dev-tools/launch-editor");
|
|
25
29
|
|
|
26
|
-
var
|
|
30
|
+
var _register = require("../../dev-tools/babel/register");
|
|
27
31
|
|
|
28
|
-
var
|
|
32
|
+
var reader = _interopRequireWildcard(require("../../libs/render/reader"));
|
|
29
33
|
|
|
30
|
-
var
|
|
34
|
+
var _watcher = _interopRequireDefault(require("../../dev-tools/watcher"));
|
|
31
35
|
|
|
32
|
-
var _constants = require("
|
|
36
|
+
var _constants = require("../../constants");
|
|
33
37
|
|
|
34
38
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
35
39
|
|
|
@@ -54,8 +58,8 @@ const DEFAULT_DEV_OPTIONS = {
|
|
|
54
58
|
};
|
|
55
59
|
|
|
56
60
|
class ModernDevServer extends _modernServer.ModernServer {
|
|
57
|
-
constructor(options
|
|
58
|
-
super(options
|
|
61
|
+
constructor(options) {
|
|
62
|
+
super(options); // set webpack compiler
|
|
59
63
|
|
|
60
64
|
this.devProxyHandler = null;
|
|
61
65
|
this.mockHandler = null;
|
|
@@ -67,18 +71,18 @@ class ModernDevServer extends _modernServer.ModernServer {
|
|
|
67
71
|
this.compiler = options.compiler; // set dev server options, like webpack-dev-server
|
|
68
72
|
|
|
69
73
|
this.dev = typeof options.dev === 'boolean' ? DEFAULT_DEV_OPTIONS : options.dev;
|
|
74
|
+
(0, _register.enableRegister)(this.pwd, this.conf);
|
|
70
75
|
} // Complete the preparation of services
|
|
71
76
|
|
|
72
77
|
|
|
73
|
-
async init() {
|
|
78
|
+
async init(runner) {
|
|
74
79
|
var _conf$tools, _conf$tools$devServer;
|
|
75
80
|
|
|
76
81
|
const {
|
|
77
82
|
conf,
|
|
78
83
|
pwd,
|
|
79
84
|
compiler
|
|
80
|
-
} = this;
|
|
81
|
-
(0, _register.enableRegister)(pwd, conf); // mock handler
|
|
85
|
+
} = this; // mock handler
|
|
82
86
|
|
|
83
87
|
this.mockHandler = (0, _mock.createMockHandler)({
|
|
84
88
|
pwd
|
|
@@ -113,7 +117,7 @@ class ModernDevServer extends _modernServer.ModernServer {
|
|
|
113
117
|
this.addHandler(devMiddlewareHandler);
|
|
114
118
|
}
|
|
115
119
|
|
|
116
|
-
await super.init(); // watch mock/ server/ api/ dir file change
|
|
120
|
+
await super.init(runner); // watch mock/ server/ api/ dir file change
|
|
117
121
|
|
|
118
122
|
this.startWatcher();
|
|
119
123
|
}
|
|
@@ -124,6 +128,7 @@ class ModernDevServer extends _modernServer.ModernServer {
|
|
|
124
128
|
this.cleanSSRCache(); // reset static file
|
|
125
129
|
|
|
126
130
|
reader.updateFile();
|
|
131
|
+
this.runner.reset();
|
|
127
132
|
}
|
|
128
133
|
|
|
129
134
|
onListening(app) {
|
|
@@ -140,6 +145,24 @@ class ModernDevServer extends _modernServer.ModernServer {
|
|
|
140
145
|
resolve();
|
|
141
146
|
});
|
|
142
147
|
});
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
async createHTTPServer(handler) {
|
|
151
|
+
const {
|
|
152
|
+
dev
|
|
153
|
+
} = this;
|
|
154
|
+
const devHttpsOption = typeof dev === 'object' && dev.https;
|
|
155
|
+
|
|
156
|
+
if (devHttpsOption) {
|
|
157
|
+
const {
|
|
158
|
+
genHttpsOptions
|
|
159
|
+
} = require("../../dev-tools/https");
|
|
160
|
+
|
|
161
|
+
const httpsOptions = await genHttpsOptions(devHttpsOption);
|
|
162
|
+
return (0, _https.createServer)(httpsOptions, handler);
|
|
163
|
+
} else {
|
|
164
|
+
return (0, _http.createServer)(handler);
|
|
165
|
+
}
|
|
143
166
|
} // set up plugin to each compiler
|
|
144
167
|
// register hooks for each compilation, update socket stats if recompiled
|
|
145
168
|
// start dev middleware
|
|
@@ -234,18 +257,16 @@ class ModernDevServer extends _modernServer.ModernServer {
|
|
|
234
257
|
pwd
|
|
235
258
|
} = this;
|
|
236
259
|
const {
|
|
237
|
-
mock
|
|
238
|
-
server,
|
|
239
|
-
api,
|
|
240
|
-
shared
|
|
260
|
+
mock
|
|
241
261
|
} = _constants.AGGRED_DIR;
|
|
242
|
-
const defaultWatched = [`${pwd}/${mock}/**/*`, `${pwd}/${
|
|
262
|
+
const defaultWatched = [`${pwd}/${mock}/**/*`, `${pwd}/${_utils.SERVER_DIR}/**/*`, `${pwd}/${_utils.API_DIR}/**/*`, `${pwd}/${_utils.SHARED_DIR}/**/*`];
|
|
243
263
|
const watcher = new _watcher.default();
|
|
244
264
|
watcher.createDepTree(); // 监听文件变动,如果有变动则给 client,也就是 start 启动的插件发消息
|
|
245
265
|
|
|
246
266
|
watcher.listen(defaultWatched, filepath => {
|
|
247
267
|
watcher.updateDepTree();
|
|
248
268
|
watcher.cleanDepCache(filepath);
|
|
269
|
+
this.runner.reset();
|
|
249
270
|
|
|
250
271
|
if (filepath.startsWith(`${pwd}/${mock}`)) {
|
|
251
272
|
this.mockHandler = (0, _mock.createMockHandler)({
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "APIModernDevServer", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _devServerSplit.APIModernDevServer;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "ModernDevServer", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _devServer.ModernDevServer;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
Object.defineProperty(exports, "WebModernDevServer", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () {
|
|
21
|
+
return _devServerSplit.WebModernDevServer;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
var _devServerSplit = require("./dev-server-split");
|
|
26
|
+
|
|
27
|
+
var _devServer = require("./dev-server");
|
|
@@ -5,30 +5,35 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.Server = void 0;
|
|
7
7
|
|
|
8
|
-
var
|
|
9
|
-
|
|
10
|
-
var _https = require("https");
|
|
8
|
+
var _path = _interopRequireDefault(require("path"));
|
|
11
9
|
|
|
12
10
|
var _serverPlugin = require("@modern-js/server-plugin");
|
|
13
11
|
|
|
14
12
|
var _utils = require("@modern-js/utils");
|
|
15
13
|
|
|
14
|
+
var _core = require("@modern-js/core");
|
|
15
|
+
|
|
16
16
|
var _modernServer = require("./modern-server");
|
|
17
17
|
|
|
18
|
+
var _modernServerSplit = require("./modern-server-split");
|
|
19
|
+
|
|
18
20
|
var _measure = require("../libs/measure");
|
|
19
21
|
|
|
22
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
23
|
+
|
|
24
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
25
|
+
|
|
26
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
27
|
+
|
|
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
|
+
|
|
20
30
|
class Server {
|
|
21
31
|
constructor(options) {
|
|
22
|
-
var _options$plugins;
|
|
23
|
-
|
|
24
32
|
this.options = void 0;
|
|
25
33
|
this.server = void 0;
|
|
26
34
|
this.app = void 0;
|
|
27
35
|
this.runner = void 0;
|
|
28
36
|
this.options = options;
|
|
29
|
-
(_options$plugins = options.plugins) === null || _options$plugins === void 0 ? void 0 : _options$plugins.forEach(p => {
|
|
30
|
-
_serverPlugin.serverManager.usePlugin(p);
|
|
31
|
-
});
|
|
32
37
|
}
|
|
33
38
|
|
|
34
39
|
getRequestHandler() {
|
|
@@ -46,40 +51,20 @@ class Server {
|
|
|
46
51
|
const {
|
|
47
52
|
options
|
|
48
53
|
} = this;
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
logger,
|
|
52
|
-
measure
|
|
53
|
-
} = await this.runner.create({
|
|
54
|
-
loggerOptions: options.logger,
|
|
55
|
-
measureOptions: options.measure
|
|
56
|
-
}, {
|
|
57
|
-
onLast: () => ({})
|
|
58
|
-
});
|
|
59
|
-
options.logger = options.logger || logger || _utils.logger;
|
|
60
|
-
options.measure = options.measure || measure || _measure.measure;
|
|
54
|
+
options.logger = options.logger || _utils.logger;
|
|
55
|
+
options.measure = options.measure || _measure.measure; // initialize server
|
|
61
56
|
|
|
62
57
|
if (options.dev) {
|
|
63
|
-
this.server = this.createDevServer();
|
|
64
|
-
|
|
65
|
-
const devHttpsOption = typeof options.dev === 'object' && options.dev.https;
|
|
66
|
-
|
|
67
|
-
if (devHttpsOption) {
|
|
68
|
-
const {
|
|
69
|
-
genHttpsOptions
|
|
70
|
-
} = require("../dev-tools/https");
|
|
71
|
-
|
|
72
|
-
const httpsOptions = await genHttpsOptions(devHttpsOption);
|
|
73
|
-
this.app = (0, _https.createServer)(httpsOptions, this.getRequestHandler());
|
|
74
|
-
} else {
|
|
75
|
-
this.app = (0, _http.createServer)(this.getRequestHandler());
|
|
76
|
-
}
|
|
58
|
+
this.server = this.createDevServer();
|
|
77
59
|
} else {
|
|
78
60
|
this.server = this.createProdServer();
|
|
79
|
-
|
|
80
|
-
|
|
61
|
+
} // check if https is configured when start dev server
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
this.app = await this.server.createHTTPServer(this.getRequestHandler());
|
|
65
|
+
this.runner = await this.createHookRunner(); // runner can only be used after server init
|
|
81
66
|
|
|
82
|
-
await this.server.init();
|
|
67
|
+
await this.server.init(this.runner);
|
|
83
68
|
return this;
|
|
84
69
|
}
|
|
85
70
|
|
|
@@ -110,19 +95,11 @@ class Server {
|
|
|
110
95
|
} = this;
|
|
111
96
|
|
|
112
97
|
if (options.apiOnly) {
|
|
113
|
-
|
|
114
|
-
APIModernServer
|
|
115
|
-
} = require("./api-server");
|
|
116
|
-
|
|
117
|
-
return new APIModernServer(options, this.runner);
|
|
98
|
+
return new _modernServerSplit.APIModernServer(options);
|
|
118
99
|
} else if (options.webOnly) {
|
|
119
|
-
|
|
120
|
-
WebModernServer
|
|
121
|
-
} = require("./web-server");
|
|
122
|
-
|
|
123
|
-
return new WebModernServer(options, this.runner);
|
|
100
|
+
return new _modernServerSplit.WebModernServer(options);
|
|
124
101
|
} else {
|
|
125
|
-
return new _modernServer.ModernServer(options
|
|
102
|
+
return new _modernServer.ModernServer(options);
|
|
126
103
|
}
|
|
127
104
|
}
|
|
128
105
|
|
|
@@ -131,27 +108,54 @@ class Server {
|
|
|
131
108
|
options
|
|
132
109
|
} = this;
|
|
133
110
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
111
|
+
const {
|
|
112
|
+
APIModernDevServer,
|
|
113
|
+
WebModernDevServer,
|
|
114
|
+
ModernDevServer
|
|
115
|
+
} = require("./dev-server");
|
|
138
116
|
|
|
139
|
-
|
|
117
|
+
if (options.apiOnly) {
|
|
118
|
+
return new APIModernDevServer(options);
|
|
140
119
|
} else if (options.webOnly) {
|
|
141
|
-
|
|
142
|
-
WebModernDevServer
|
|
143
|
-
} = require("./web-server");
|
|
144
|
-
|
|
145
|
-
return new WebModernDevServer(options, this.runner);
|
|
120
|
+
return new WebModernDevServer(options);
|
|
146
121
|
} else {
|
|
147
|
-
|
|
148
|
-
ModernDevServer
|
|
149
|
-
} = require("./dev-server");
|
|
150
|
-
|
|
151
|
-
return new ModernDevServer(options, this.runner);
|
|
122
|
+
return new ModernDevServer(options);
|
|
152
123
|
}
|
|
153
124
|
}
|
|
154
125
|
|
|
126
|
+
async createHookRunner() {
|
|
127
|
+
var _options$plugins;
|
|
128
|
+
|
|
129
|
+
const {
|
|
130
|
+
options
|
|
131
|
+
} = this;
|
|
132
|
+
const appContext = await this.initAppContext();
|
|
133
|
+
|
|
134
|
+
_serverPlugin.serverManager.run(() => {
|
|
135
|
+
_core.AppContext.set(_objectSpread(_objectSpread({}, appContext), {}, {
|
|
136
|
+
distDirectory: _path.default.join(options.pwd, options.config.output.path || 'dist')
|
|
137
|
+
}));
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
(_options$plugins = options.plugins) === null || _options$plugins === void 0 ? void 0 : _options$plugins.forEach(p => {
|
|
141
|
+
_serverPlugin.serverManager.usePlugin(p);
|
|
142
|
+
});
|
|
143
|
+
return _serverPlugin.serverManager.init({});
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
async initAppContext() {
|
|
147
|
+
var _this$options$plugins;
|
|
148
|
+
|
|
149
|
+
const appDirectory = await (0, _core.initAppDir)();
|
|
150
|
+
const loaded = await (0, _core.loadUserConfig)(appDirectory);
|
|
151
|
+
const plugins = (_this$options$plugins = this.options.plugins) === null || _this$options$plugins === void 0 ? void 0 : _this$options$plugins.map(p => ({
|
|
152
|
+
server: p,
|
|
153
|
+
cli: undefined
|
|
154
|
+
}));
|
|
155
|
+
const appContext = (0, _core.initAppContext)(appDirectory, plugins || [], loaded.filePath);
|
|
156
|
+
return appContext;
|
|
157
|
+
}
|
|
158
|
+
|
|
155
159
|
}
|
|
156
160
|
|
|
157
161
|
exports.Server = Server;
|
|
@@ -3,9 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.WebModernServer = exports.
|
|
7
|
-
|
|
8
|
-
var _devServer = require("./dev-server");
|
|
6
|
+
exports.WebModernServer = exports.APIModernServer = void 0;
|
|
9
7
|
|
|
10
8
|
var _modernServer = require("./modern-server");
|
|
11
9
|
|
|
@@ -26,19 +24,22 @@ class WebModernServer extends _modernServer.ModernServer {
|
|
|
26
24
|
|
|
27
25
|
exports.WebModernServer = WebModernServer;
|
|
28
26
|
|
|
29
|
-
class
|
|
30
|
-
|
|
27
|
+
class APIModernServer extends _modernServer.ModernServer {
|
|
28
|
+
prepareWebHandler(_) {
|
|
31
29
|
return null;
|
|
32
30
|
}
|
|
33
31
|
|
|
34
|
-
async
|
|
35
|
-
return super.
|
|
32
|
+
async prepareAPIHandler(mode, extension) {
|
|
33
|
+
return super.prepareAPIHandler(mode, extension);
|
|
36
34
|
}
|
|
37
35
|
|
|
38
36
|
filterRoutes(routes) {
|
|
39
|
-
return routes.filter(route => route.
|
|
37
|
+
return routes.filter(route => route.isApi);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
async preServerInit() {// noop
|
|
40
41
|
}
|
|
41
42
|
|
|
42
43
|
}
|
|
43
44
|
|
|
44
|
-
exports.
|
|
45
|
+
exports.APIModernServer = APIModernServer;
|
|
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.ModernServer = void 0;
|
|
7
7
|
|
|
8
|
+
var _http = require("http");
|
|
9
|
+
|
|
8
10
|
var _util = _interopRequireDefault(require("util"));
|
|
9
11
|
|
|
10
12
|
var _path = _interopRequireDefault(require("path"));
|
|
@@ -33,7 +35,9 @@ var _context = require("../libs/context");
|
|
|
33
35
|
|
|
34
36
|
var _constants = require("../constants");
|
|
35
37
|
|
|
36
|
-
var
|
|
38
|
+
var _template = require("../libs/hook-api/template");
|
|
39
|
+
|
|
40
|
+
var _route2 = require("../libs/hook-api/route");
|
|
37
41
|
|
|
38
42
|
const _excluded = ["getMiddlewares"];
|
|
39
43
|
|
|
@@ -68,7 +72,7 @@ class ModernServer {
|
|
|
68
72
|
staticGenerate,
|
|
69
73
|
logger,
|
|
70
74
|
measure
|
|
71
|
-
}
|
|
75
|
+
}) {
|
|
72
76
|
this.pwd = void 0;
|
|
73
77
|
this.distDir = void 0;
|
|
74
78
|
this.workDir = void 0;
|
|
@@ -76,9 +80,9 @@ class ModernServer {
|
|
|
76
80
|
this.conf = void 0;
|
|
77
81
|
this.handlers = [];
|
|
78
82
|
this.presetRoutes = void 0;
|
|
83
|
+
this.runner = void 0;
|
|
79
84
|
this.logger = void 0;
|
|
80
85
|
this.measure = void 0;
|
|
81
|
-
this.runner = void 0;
|
|
82
86
|
this.isDev = false;
|
|
83
87
|
this.staticFileHandler = void 0;
|
|
84
88
|
this.routeRenderHandler = void 0;
|
|
@@ -95,7 +99,6 @@ class ModernServer {
|
|
|
95
99
|
this.distDir = _path.default.join(pwd, config.output.path || '');
|
|
96
100
|
this.workDir = this.isDev ? pwd : this.distDir;
|
|
97
101
|
this.conf = config;
|
|
98
|
-
this.runner = runner;
|
|
99
102
|
this.logger = logger;
|
|
100
103
|
this.measure = measure;
|
|
101
104
|
this.router = new _route.RouteMatchManager();
|
|
@@ -114,9 +117,10 @@ class ModernServer {
|
|
|
114
117
|
} // server prepare
|
|
115
118
|
|
|
116
119
|
|
|
117
|
-
async init() {
|
|
120
|
+
async init(runner) {
|
|
118
121
|
var _conf$bff;
|
|
119
122
|
|
|
123
|
+
this.runner = runner;
|
|
120
124
|
const {
|
|
121
125
|
distDir,
|
|
122
126
|
isDev,
|
|
@@ -181,6 +185,10 @@ class ModernServer {
|
|
|
181
185
|
|
|
182
186
|
close() {
|
|
183
187
|
reader.close();
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
async createHTTPServer(handler) {
|
|
191
|
+
return (0, _http.createServer)(handler);
|
|
184
192
|
} // warmup ssr function
|
|
185
193
|
|
|
186
194
|
|
|
@@ -230,12 +238,7 @@ class ModernServer {
|
|
|
230
238
|
const {
|
|
231
239
|
workDir,
|
|
232
240
|
runner
|
|
233
|
-
} = this; //
|
|
234
|
-
|
|
235
|
-
const {
|
|
236
|
-
api: userAPIExt,
|
|
237
|
-
web: userWebExt
|
|
238
|
-
} = (0, _serverUtils.gather)(workDir); // server hook, gather plugin inject
|
|
241
|
+
} = this; // server hook, gather plugin inject
|
|
239
242
|
|
|
240
243
|
const _createMiddlewareColl = (0, _serverUtils.createMiddlewareCollecter)(),
|
|
241
244
|
{
|
|
@@ -255,15 +258,17 @@ class ModernServer {
|
|
|
255
258
|
|
|
256
259
|
|
|
257
260
|
if (await _utils.fs.pathExists(_path.default.join(serverDir))) {
|
|
258
|
-
const webExtension = (0, _utils2.mergeExtension)(pluginWebExt
|
|
261
|
+
const webExtension = (0, _utils2.mergeExtension)(pluginWebExt);
|
|
259
262
|
this.frameWebHandler = await this.prepareWebHandler(webExtension);
|
|
260
263
|
}
|
|
261
264
|
|
|
262
265
|
if (_utils.fs.existsSync(apiDir)) {
|
|
263
266
|
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
|
|
264
267
|
|
|
265
|
-
const apiExtension = (0, _utils2.mergeExtension)(pluginAPIExt
|
|
266
|
-
this.frameAPIHandler = await this.prepareAPIHandler(mode, apiExtension)
|
|
268
|
+
const apiExtension = (0, _utils2.mergeExtension)(pluginAPIExt);
|
|
269
|
+
this.frameAPIHandler = await this.prepareAPIHandler(mode, _objectSpread(_objectSpread({}, apiExtension), {}, {
|
|
270
|
+
modernJsConfig: this.conf
|
|
271
|
+
}));
|
|
267
272
|
}
|
|
268
273
|
}
|
|
269
274
|
/* —————————————————————— function will be overwrite —————————————————————— */
|
|
@@ -296,7 +301,7 @@ class ModernServer {
|
|
|
296
301
|
pwd: workDir,
|
|
297
302
|
mode,
|
|
298
303
|
config: extension,
|
|
299
|
-
prefix
|
|
304
|
+
prefix: Array.isArray(prefix) ? prefix[0] : prefix
|
|
300
305
|
}, {
|
|
301
306
|
onLast: () => null
|
|
302
307
|
});
|
|
@@ -311,7 +316,7 @@ class ModernServer {
|
|
|
311
316
|
conf
|
|
312
317
|
} = this;
|
|
313
318
|
const preMiddleware = await this.runner.preServerInit(conf);
|
|
314
|
-
preMiddleware.forEach(mid => {
|
|
319
|
+
preMiddleware.flat().forEach(mid => {
|
|
315
320
|
this.addHandler(mid);
|
|
316
321
|
});
|
|
317
322
|
}
|
|
@@ -344,7 +349,12 @@ class ModernServer {
|
|
|
344
349
|
const {
|
|
345
350
|
req,
|
|
346
351
|
res
|
|
347
|
-
} = context;
|
|
352
|
+
} = context;
|
|
353
|
+
await this.runner.beforeMatch({
|
|
354
|
+
context
|
|
355
|
+
}, {
|
|
356
|
+
onLast: _utils2.noop
|
|
357
|
+
}); // match routes in the route spec
|
|
348
358
|
|
|
349
359
|
const matched = this.router.match(context.url);
|
|
350
360
|
|
|
@@ -353,8 +363,23 @@ class ModernServer {
|
|
|
353
363
|
return;
|
|
354
364
|
}
|
|
355
365
|
|
|
356
|
-
const
|
|
357
|
-
|
|
366
|
+
const routeAPI = (0, _route2.createRouteAPI)(matched, this.router);
|
|
367
|
+
await this.runner.afterMatch({
|
|
368
|
+
context,
|
|
369
|
+
routeAPI
|
|
370
|
+
}, {
|
|
371
|
+
onLast: _utils2.noop
|
|
372
|
+
});
|
|
373
|
+
|
|
374
|
+
if (res.headersSent) {
|
|
375
|
+
return;
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
const {
|
|
379
|
+
current
|
|
380
|
+
} = routeAPI;
|
|
381
|
+
const route = current.generate();
|
|
382
|
+
const params = current.parseURLParams(context.url);
|
|
358
383
|
context.setParams(params); // route is api service
|
|
359
384
|
|
|
360
385
|
if (route.isApi) {
|
|
@@ -375,6 +400,11 @@ class ModernServer {
|
|
|
375
400
|
return;
|
|
376
401
|
}
|
|
377
402
|
|
|
403
|
+
await this.runner.beforeRender({
|
|
404
|
+
context
|
|
405
|
+
}, {
|
|
406
|
+
onLast: _utils2.noop
|
|
407
|
+
});
|
|
378
408
|
const file = await this.routeRenderHandler(context, route);
|
|
379
409
|
|
|
380
410
|
if (!file) {
|
|
@@ -392,7 +422,7 @@ class ModernServer {
|
|
|
392
422
|
let response = file.content;
|
|
393
423
|
|
|
394
424
|
if (route.entryName) {
|
|
395
|
-
const templateAPI = (0,
|
|
425
|
+
const templateAPI = (0, _template.createTemplateAPI)(file.content.toString());
|
|
396
426
|
await this.runner.afterRender({
|
|
397
427
|
context,
|
|
398
428
|
templateAPI
|
package/dist/js/node/utils.js
CHANGED
|
@@ -5,10 +5,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.toMessage = exports.noop = exports.mergeExtension = exports.createErrorDocument = void 0;
|
|
7
7
|
|
|
8
|
-
const mergeExtension =
|
|
8
|
+
const mergeExtension = users => {
|
|
9
9
|
const output = [];
|
|
10
10
|
return {
|
|
11
|
-
middleware: output.concat(users)
|
|
11
|
+
middleware: output.concat(users)
|
|
12
12
|
};
|
|
13
13
|
};
|
|
14
14
|
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { RouteMatchManager, RouteMatcher } from '../route';
|
|
2
|
+
|
|
3
|
+
declare class RouteAPI {
|
|
4
|
+
private readonly router;
|
|
5
|
+
private current;
|
|
6
|
+
constructor(matched: RouteMatcher, router: RouteMatchManager);
|
|
7
|
+
cur(): import("../route").ModernRoute;
|
|
8
|
+
get(entryName: string): import("../route").ModernRoute | null;
|
|
9
|
+
use(entryName: string): boolean;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export declare const createRouteAPI: (matched: RouteMatcher, router: RouteMatchManager) => RouteAPI;
|
|
13
|
+
export {};
|
|
File without changes
|
|
@@ -8,6 +8,7 @@ export declare class RouteMatchManager {
|
|
|
8
8
|
private best;
|
|
9
9
|
reset(specs: ModernRouteInterface[]): void;
|
|
10
10
|
match(pathname: string): RouteMatcher | undefined;
|
|
11
|
+
matchEntry(entryname: string): RouteMatcher | undefined;
|
|
11
12
|
getBundles(): (string | undefined)[];
|
|
12
13
|
}
|
|
13
14
|
export type { ModernRouteInterface, RouteMatcher, ModernRoute };
|