@modern-js/server 1.18.0 → 1.18.1-alpha.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.
Files changed (31) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/js/modern/dev-tools/{dev-server-plugin.js → dev-middleware/dev-server-plugin.js} +1 -1
  3. package/dist/js/modern/{hmr-client → dev-tools/dev-middleware/hmr-client}/createSocketUrl.js +0 -0
  4. package/dist/js/modern/{hmr-client → dev-tools/dev-middleware/hmr-client}/index.js +0 -0
  5. package/dist/js/modern/dev-tools/dev-middleware/index.js +138 -0
  6. package/dist/js/modern/dev-tools/{socket-server.js → dev-middleware/socket-server.js} +0 -0
  7. package/dist/js/modern/dev-tools/register/index.js +5 -1
  8. package/dist/js/modern/server/dev-server.js +44 -141
  9. package/dist/js/modern/server/index.js +1 -8
  10. package/dist/js/node/dev-tools/{dev-server-plugin.js → dev-middleware/dev-server-plugin.js} +1 -1
  11. package/dist/js/node/{hmr-client → dev-tools/dev-middleware/hmr-client}/createSocketUrl.js +0 -0
  12. package/dist/js/node/{hmr-client → dev-tools/dev-middleware/hmr-client}/index.js +0 -0
  13. package/dist/js/node/dev-tools/dev-middleware/index.js +152 -0
  14. package/dist/js/node/dev-tools/{socket-server.js → dev-middleware/socket-server.js} +0 -0
  15. package/dist/js/node/dev-tools/register/index.js +5 -1
  16. package/dist/js/node/server/dev-server.js +45 -144
  17. package/dist/js/node/server/index.js +1 -9
  18. package/dist/types/dev-tools/{dev-server-plugin.d.ts → dev-middleware/dev-server-plugin.d.ts} +1 -1
  19. package/dist/types/{hmr-client → dev-tools/dev-middleware/hmr-client}/createSocketUrl.d.ts +0 -0
  20. package/dist/types/{hmr-client → dev-tools/dev-middleware/hmr-client}/index.d.ts +0 -0
  21. package/dist/types/dev-tools/dev-middleware/index.d.ts +31 -0
  22. package/dist/types/dev-tools/{socket-server.d.ts → dev-middleware/socket-server.d.ts} +1 -1
  23. package/dist/types/dev-tools/mock/getMockData.d.ts +1 -1
  24. package/dist/types/dev-tools/mock/index.d.ts +1 -1
  25. package/dist/types/server/dev-server.d.ts +6 -14
  26. package/dist/types/server/index.d.ts +1 -1
  27. package/dist/types/types.d.ts +2 -2
  28. package/package.json +9 -9
  29. package/dist/js/modern/server/dev-server-split.js +0 -43
  30. package/dist/js/node/server/dev-server-split.js +0 -57
  31. package/dist/types/server/dev-server-split.d.ts +0 -16
package/CHANGELOG.md CHANGED
@@ -1,5 +1,33 @@
1
1
  # @modern-js/server
2
2
 
3
+ ## 1.18.1-alpha.0
4
+
5
+ ### Patch Changes
6
+
7
+ - 8016a8a: fix: invoke next() in dev-middleware directly if only api
8
+ fix: 在 api 服务的情况下,直接调用 next(),不执行 dev-middleware
9
+ - f6a3aa1: feat: support etag in dev server by default
10
+ feat: 开发环境默认支持 etag 功能
11
+ - 23fa468: fix: ssr bundle should not be compiled by ts-node
12
+
13
+ fix: ts-node 不应该编译 ssr bundle
14
+
15
+ - 55988fa: fix: fix dev server type error
16
+ fix: 修复 dev server 中的类型错误
17
+ - bc3bbd8: fix: use output.publicPath(default) as webpack-dev-middleware publicPath
18
+
19
+ fix: 使用 output.publicPath 作为 webpack-dev-middleware publicPath
20
+
21
+ - Updated dependencies [3586707]
22
+ - Updated dependencies [f6a3aa1]
23
+ - Updated dependencies [fb02c81]
24
+ - Updated dependencies [9f7bfa6]
25
+ - Updated dependencies [9fcfbd4]
26
+ - Updated dependencies [6c2c745]
27
+ - @modern-js/prod-server@1.18.1-alpha.0
28
+ - @modern-js/server-utils@1.18.1-alpha.0
29
+ - @modern-js/utils@1.18.1-alpha.0
30
+
3
31
  ## 1.18.0
4
32
 
5
33
  ### Patch Changes
@@ -14,7 +14,7 @@ export default class DevServerPlugin {
14
14
  const host = client.host ? `&host=${client.host}` : '';
15
15
  const path = client.path ? `&path=${client.path}` : '';
16
16
  const port = client.port ? `&port=${client.port}` : '';
17
- const clientEntry = `${require.resolve("../hmr-client")}?${host}${path}${port}`; // use a hook to add entries if available
17
+ const clientEntry = `${require.resolve("./hmr-client")}?${host}${path}${port}`; // use a hook to add entries if available
18
18
 
19
19
  new compiler.webpack.EntryPlugin(compiler.context, clientEntry, {
20
20
  name: undefined
@@ -0,0 +1,138 @@
1
+ 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; }
2
+
3
+ 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; }
4
+
5
+ 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; }
6
+
7
+ import { EventEmitter } from 'events';
8
+ import webpackDevMiddleware from '@modern-js/utils/webpack-dev-middleware';
9
+ import DevServerPlugin from "./dev-server-plugin";
10
+ import SocketServer from "./socket-server";
11
+
12
+ const noop = () => {// noop
13
+ };
14
+
15
+ export default class DevMiddleware extends EventEmitter {
16
+ constructor({
17
+ compiler,
18
+ dev,
19
+ config
20
+ }) {
21
+ super();
22
+
23
+ _defineProperty(this, "middleware", void 0);
24
+
25
+ _defineProperty(this, "compiler", void 0);
26
+
27
+ _defineProperty(this, "devOptions", void 0);
28
+
29
+ _defineProperty(this, "socketServer", void 0);
30
+
31
+ _defineProperty(this, "config", void 0);
32
+
33
+ this.compiler = compiler;
34
+ this.devOptions = dev;
35
+ this.config = config; // init socket server
36
+
37
+ this.socketServer = new SocketServer(dev); // Todo: should remove after abstract dev middleware
38
+
39
+ if (this.compiler) {
40
+ // setup compiler in server, also add dev-middleware to handler static file in memory
41
+ // set up plugin to each compiler
42
+ this.setupDevServerPlugin(); // register hooks for each compilation, update socket stats if recompiled
43
+
44
+ this.setupHooks(); // start dev middleware
45
+
46
+ this.middleware = this.setupDevMiddleware();
47
+ }
48
+ }
49
+
50
+ init(app) {
51
+ app.on('listening', () => {
52
+ this.socketServer.prepare(app);
53
+ });
54
+ app.on('close', async () => {
55
+ var _this$middleware;
56
+
57
+ (_this$middleware = this.middleware) === null || _this$middleware === void 0 ? void 0 : _this$middleware.close(noop);
58
+ this.socketServer.close();
59
+ });
60
+ }
61
+
62
+ setupDevServerPlugin() {
63
+ const {
64
+ devOptions
65
+ } = this; // apply dev server to client compiler, add hmr client to entry.
66
+
67
+ if (this.compiler.compilers) {
68
+ this.compiler.compilers.forEach(target => {
69
+ if (this.isClientCompiler(target)) {
70
+ new DevServerPlugin(devOptions).apply(target);
71
+ }
72
+ });
73
+ } else {
74
+ new DevServerPlugin(devOptions).apply(this.compiler);
75
+ }
76
+ }
77
+
78
+ setupHooks() {
79
+ const invalidPlugin = () => {
80
+ this.socketServer.sockWrite('invalid');
81
+ };
82
+
83
+ const addHooks = compiler => {
84
+ if (compiler.name === 'server') {
85
+ return;
86
+ }
87
+
88
+ const {
89
+ compile,
90
+ invalid,
91
+ done
92
+ } = compiler.hooks;
93
+ compile.tap('modern-dev-server', invalidPlugin);
94
+ invalid.tap('modern-dev-server', invalidPlugin);
95
+ done.tap('modern-dev-server', stats => {
96
+ this.socketServer.updateStats(stats);
97
+ this.emit('change', stats);
98
+ });
99
+ };
100
+
101
+ if (this.compiler.compilers) {
102
+ this.compiler.compilers.forEach(addHooks);
103
+ } else {
104
+ addHooks(this.compiler);
105
+ }
106
+ }
107
+
108
+ setupDevMiddleware() {
109
+ var _config$tools, _config$tools$devServ;
110
+
111
+ const {
112
+ config,
113
+ devOptions
114
+ } = this;
115
+ const middleware = webpackDevMiddleware(this.compiler, _objectSpread({
116
+ headers: (_config$tools = config.tools) === null || _config$tools === void 0 ? void 0 : (_config$tools$devServ = _config$tools.devServer) === null || _config$tools$devServ === void 0 ? void 0 : _config$tools$devServ.headers,
117
+ stats: false
118
+ }, devOptions.devMiddleware));
119
+ return middleware;
120
+ }
121
+
122
+ isClientCompiler(compiler) {
123
+ const {
124
+ target
125
+ } = compiler.options; // if target not contains `node`, it's a client compiler
126
+
127
+ if (target) {
128
+ if (Array.isArray(target)) {
129
+ return !target.includes('node');
130
+ }
131
+
132
+ return target !== 'node';
133
+ }
134
+
135
+ return compiler.name === 'client';
136
+ }
137
+
138
+ }
@@ -31,7 +31,10 @@ export const enableRegister = (projectRoot, config // eslint-disable-next-line c
31
31
  const existTsConfigPaths = checkDep('tsconfig-paths', [projectRoot]);
32
32
 
33
33
  if (isTsProject && existTsNode && existTsConfigPaths) {
34
+ var _config$output;
35
+
34
36
  debug('use ts-node');
37
+ const distPath = (config === null || config === void 0 ? void 0 : (_config$output = config.output) === null || _config$output === void 0 ? void 0 : _config$output.path) || 'dist';
35
38
 
36
39
  const tsNode = require('ts-node');
37
40
 
@@ -71,7 +74,8 @@ export const enableRegister = (projectRoot, config // eslint-disable-next-line c
71
74
  project: tsconfigPath,
72
75
  // for env.d.ts, https://www.npmjs.com/package/ts-node#missing-types
73
76
  files: true,
74
- transpileOnly: true
77
+ transpileOnly: true,
78
+ ignore: ['(?:^|/)node_modules/', `(?:^|/)${distPath}/bundles/`]
75
79
  });
76
80
  } else {
77
81
  debug('use @babel/register');
@@ -8,14 +8,12 @@ import { createServer } from 'http';
8
8
  import path from 'path';
9
9
  import { createServer as createHttpsServer } from 'https';
10
10
  import { API_DIR, SERVER_DIR, SHARED_DIR } from '@modern-js/utils';
11
- import webpackDevMiddleware from '@modern-js/utils/webpack-dev-middleware';
12
11
  import { createProxyHandler, ModernServer, AGGRED_DIR } from '@modern-js/prod-server';
13
12
  import { getDefaultDevOptions } from "../constants";
14
13
  import { createMockHandler } from "../dev-tools/mock";
15
- import SocketServer from "../dev-tools/socket-server";
16
- import DevServerPlugin from "../dev-tools/dev-server-plugin";
17
14
  import { enableRegister } from "../dev-tools/register";
18
15
  import Watcher, { mergeWatchOptions } from "../dev-tools/watcher";
16
+ import DevMiddleware from "../dev-tools/dev-middleware";
19
17
  export class ModernDevServer extends ModernServer {
20
18
  constructor(options) {
21
19
  super(options); // dev server should work in pwd
@@ -24,19 +22,19 @@ export class ModernDevServer extends ModernServer {
24
22
 
25
23
  _defineProperty(this, "dev", void 0);
26
24
 
27
- _defineProperty(this, "compiler", void 0);
28
-
29
- _defineProperty(this, "socketServer", void 0);
25
+ _defineProperty(this, "devMiddleware", void 0);
30
26
 
31
27
  _defineProperty(this, "watcher", void 0);
32
28
 
33
- _defineProperty(this, "devMiddleware", void 0);
29
+ this.workDir = this.pwd; // set dev server options, like webpack-dev-server
34
30
 
35
- this.workDir = this.pwd; // set webpack compiler
31
+ this.dev = this.getDevOptions(options); // create dev middleware instance
36
32
 
37
- this.compiler = options.compiler; // set dev server options, like webpack-dev-server
38
-
39
- this.dev = this.getDevOptions(options);
33
+ this.devMiddleware = new DevMiddleware({
34
+ dev: this.dev,
35
+ compiler: options.compiler,
36
+ config: this.conf
37
+ });
40
38
  enableRegister(this.pwd, this.conf);
41
39
  }
42
40
 
@@ -49,15 +47,15 @@ export class ModernDevServer extends ModernServer {
49
47
  } // Complete the preparation of services
50
48
 
51
49
 
52
- async onInit(runner) {
50
+ async onInit(runner, app) {
53
51
  var _conf$tools, _conf$tools$devServer;
54
52
 
55
53
  this.runner = runner;
56
54
  const {
57
55
  conf,
58
56
  pwd,
59
- compiler,
60
- dev
57
+ dev,
58
+ devMiddleware
61
59
  } = this; // before dev handler
62
60
 
63
61
  const beforeHandlers = await this.setupBeforeDevMiddleware();
@@ -111,14 +109,29 @@ export class ModernDevServer extends ModernServer {
111
109
  } // do webpack build / plugin apply / socket server when pass compiler instance
112
110
 
113
111
 
114
- if (compiler) {
115
- // init socket server
116
- this.socketServer = new SocketServer(dev); // setup compiler in server, also add dev-middleware to handler static file in memory
117
-
118
- const devMiddlewareHandler = this.setupCompiler(compiler);
119
- this.addHandler(devMiddlewareHandler);
120
- } // after dev handler
112
+ devMiddleware.init(app);
113
+ devMiddleware.on('change', stats => {
114
+ // Reset only when client compile done
115
+ if (stats.toJson({
116
+ all: false
117
+ }).name === 'client') {
118
+ this.onRepack({
119
+ routes: this.getRoutes()
120
+ });
121
+ }
122
+ });
123
+ this.addHandler((ctx, next) => {
124
+ const {
125
+ req,
126
+ res
127
+ } = ctx;
121
128
 
129
+ if (devMiddleware.middleware) {
130
+ devMiddleware.middleware(req, res, next);
131
+ } else {
132
+ next();
133
+ }
134
+ }); // after dev handler
122
135
 
123
136
  const afterHandlers = await this.setupAfterDevMiddleware();
124
137
  afterHandlers.forEach(handler => {
@@ -130,28 +143,16 @@ export class ModernDevServer extends ModernServer {
130
143
  return handler(req, res, next);
131
144
  });
132
145
  });
133
- await super.onInit(runner); // watch mock/ server/ api/ dir file change
146
+ await super.onInit(runner, app); // watch mock/ server/ api/ dir file change
134
147
 
135
148
  if (dev.watch) {
136
149
  this.startWatcher();
137
- }
138
- }
139
-
140
- async onClose() {
141
- var _this$watcher, _this$socketServer;
150
+ app.on('close', async () => {
151
+ var _this$watcher;
142
152
 
143
- await super.onClose();
144
- await ((_this$watcher = this.watcher) === null || _this$watcher === void 0 ? void 0 : _this$watcher.close());
145
- await new Promise(resolve => {
146
- if (this.devMiddleware) {
147
- this.devMiddleware.close(() => {
148
- resolve();
149
- });
150
- } else {
151
- resolve();
152
- }
153
- });
154
- (_this$socketServer = this.socketServer) === null || _this$socketServer === void 0 ? void 0 : _this$socketServer.close();
153
+ await ((_this$watcher = this.watcher) === null || _this$watcher === void 0 ? void 0 : _this$watcher.close());
154
+ });
155
+ }
155
156
  }
156
157
 
157
158
  onRepack(options = {}) {
@@ -167,12 +168,6 @@ export class ModernDevServer extends ModernServer {
167
168
  super.onRepack(options);
168
169
  }
169
170
 
170
- onListening(app) {
171
- var _this$socketServer2;
172
-
173
- (_this$socketServer2 = this.socketServer) === null || _this$socketServer2 === void 0 ? void 0 : _this$socketServer2.prepare(app);
174
- }
175
-
176
171
  async createHTTPServer(handler) {
177
172
  const {
178
173
  dev
@@ -230,104 +225,12 @@ export class ModernDevServer extends ModernServer {
230
225
  this.logger.error(e);
231
226
  }
232
227
  }
233
- } // set up plugin to each compiler
234
- // register hooks for each compilation, update socket stats if recompiled
235
- // start dev middleware
236
-
237
-
238
- setupCompiler(compiler) {
239
- this.setupDevServerPlugin(compiler);
240
- this.setupHooks();
241
- return this.setupDevMiddleware(compiler);
242
228
  }
243
229
 
244
- isClientCompiler(compiler) {
245
- const {
246
- target
247
- } = compiler.options; // if target not contains `node`, it's a client compiler
248
-
249
- if (target) {
250
- if (Array.isArray(target)) {
251
- return !target.includes('node');
252
- }
253
-
254
- return target !== 'node';
255
- }
256
-
257
- return compiler.name === 'client';
258
- }
259
-
260
- setupDevServerPlugin(compiler) {
261
- const {
262
- dev: devConf
263
- } = this; // apply dev server to client compiler, add hmr client to entry.
264
-
265
- if (compiler.compilers) {
266
- compiler.compilers.forEach(target => {
267
- if (this.isClientCompiler(target)) {
268
- new DevServerPlugin(devConf).apply(target);
269
- }
270
- });
271
- } else {
272
- new DevServerPlugin(devConf).apply(compiler);
273
- }
274
- }
275
-
276
- setupHooks() {
277
- const invalidPlugin = () => {
278
- this.socketServer.sockWrite('invalid');
279
- };
280
-
281
- const addHooks = compiler => {
282
- if (compiler.name === 'server') {
283
- return;
284
- }
285
-
286
- const {
287
- compile,
288
- invalid,
289
- done
290
- } = compiler.hooks;
291
- compile.tap('modern-dev-server', invalidPlugin);
292
- invalid.tap('modern-dev-server', invalidPlugin);
293
- done.tap('modern-dev-server', stats => {
294
- this.socketServer.updateStats(stats); // Reset only when client compile done
295
-
296
- if (stats.toJson({
297
- all: false
298
- }).name === 'client') {
299
- this.onRepack({
300
- routes: this.getRoutes()
301
- });
302
- }
303
- });
304
- };
305
-
306
- if (this.compiler.compilers) {
307
- this.compiler.compilers.forEach(addHooks);
308
- } else {
309
- addHooks(this.compiler);
310
- }
311
- }
312
-
313
- setupDevMiddleware(compiler) {
314
- var _conf$tools2, _conf$tools2$devServe;
315
-
316
- const {
317
- conf
318
- } = this;
319
- this.devMiddleware = webpackDevMiddleware(compiler, _objectSpread({
320
- headers: (_conf$tools2 = conf.tools) === null || _conf$tools2 === void 0 ? void 0 : (_conf$tools2$devServe = _conf$tools2.devServer) === null || _conf$tools2$devServe === void 0 ? void 0 : _conf$tools2$devServe.headers,
321
- publicPath: '/',
322
- stats: false
323
- }, this.dev.devMiddleware));
324
- return (ctx, next) => {
325
- const {
326
- req,
327
- res
328
- } = ctx;
329
- this.devMiddleware(req, res, next);
330
- };
230
+ createContext(req, res) {
231
+ return super.createContext(req, res, {
232
+ etag: true
233
+ });
331
234
  }
332
235
 
333
236
  async setupBeforeDevMiddleware() {
@@ -1,15 +1,8 @@
1
1
  import { Server } from '@modern-js/prod-server';
2
2
  import { ModernDevServer } from "./dev-server";
3
- import { ModernAPIDevServer, ModernSSRDevServer } from "./dev-server-split";
4
3
 
5
4
  const createDevServer = options => {
6
- if (options.apiOnly) {
7
- return new ModernAPIDevServer(options);
8
- } else if (options.ssrOnly) {
9
- return new ModernSSRDevServer(options);
10
- } else {
11
- return new ModernDevServer(options);
12
- }
5
+ return new ModernDevServer(options);
13
6
  };
14
7
 
15
8
  export class DevServer extends Server {
@@ -21,7 +21,7 @@ class DevServerPlugin {
21
21
  const host = client.host ? `&host=${client.host}` : '';
22
22
  const path = client.path ? `&path=${client.path}` : '';
23
23
  const port = client.port ? `&port=${client.port}` : '';
24
- const clientEntry = `${require.resolve("../hmr-client")}?${host}${path}${port}`; // use a hook to add entries if available
24
+ const clientEntry = `${require.resolve("./hmr-client")}?${host}${path}${port}`; // use a hook to add entries if available
25
25
 
26
26
  new compiler.webpack.EntryPlugin(compiler.context, clientEntry, {
27
27
  name: undefined
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _events = require("events");
9
+
10
+ var _webpackDevMiddleware = _interopRequireDefault(require("@modern-js/utils/webpack-dev-middleware"));
11
+
12
+ var _devServerPlugin = _interopRequireDefault(require("./dev-server-plugin"));
13
+
14
+ var _socketServer = _interopRequireDefault(require("./socket-server"));
15
+
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+
18
+ 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; }
19
+
20
+ 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; }
21
+
22
+ 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; }
23
+
24
+ const noop = () => {// noop
25
+ };
26
+
27
+ class DevMiddleware extends _events.EventEmitter {
28
+ constructor({
29
+ compiler,
30
+ dev,
31
+ config
32
+ }) {
33
+ super();
34
+
35
+ _defineProperty(this, "middleware", void 0);
36
+
37
+ _defineProperty(this, "compiler", void 0);
38
+
39
+ _defineProperty(this, "devOptions", void 0);
40
+
41
+ _defineProperty(this, "socketServer", void 0);
42
+
43
+ _defineProperty(this, "config", void 0);
44
+
45
+ this.compiler = compiler;
46
+ this.devOptions = dev;
47
+ this.config = config; // init socket server
48
+
49
+ this.socketServer = new _socketServer.default(dev); // Todo: should remove after abstract dev middleware
50
+
51
+ if (this.compiler) {
52
+ // setup compiler in server, also add dev-middleware to handler static file in memory
53
+ // set up plugin to each compiler
54
+ this.setupDevServerPlugin(); // register hooks for each compilation, update socket stats if recompiled
55
+
56
+ this.setupHooks(); // start dev middleware
57
+
58
+ this.middleware = this.setupDevMiddleware();
59
+ }
60
+ }
61
+
62
+ init(app) {
63
+ app.on('listening', () => {
64
+ this.socketServer.prepare(app);
65
+ });
66
+ app.on('close', async () => {
67
+ var _this$middleware;
68
+
69
+ (_this$middleware = this.middleware) === null || _this$middleware === void 0 ? void 0 : _this$middleware.close(noop);
70
+ this.socketServer.close();
71
+ });
72
+ }
73
+
74
+ setupDevServerPlugin() {
75
+ const {
76
+ devOptions
77
+ } = this; // apply dev server to client compiler, add hmr client to entry.
78
+
79
+ if (this.compiler.compilers) {
80
+ this.compiler.compilers.forEach(target => {
81
+ if (this.isClientCompiler(target)) {
82
+ new _devServerPlugin.default(devOptions).apply(target);
83
+ }
84
+ });
85
+ } else {
86
+ new _devServerPlugin.default(devOptions).apply(this.compiler);
87
+ }
88
+ }
89
+
90
+ setupHooks() {
91
+ const invalidPlugin = () => {
92
+ this.socketServer.sockWrite('invalid');
93
+ };
94
+
95
+ const addHooks = compiler => {
96
+ if (compiler.name === 'server') {
97
+ return;
98
+ }
99
+
100
+ const {
101
+ compile,
102
+ invalid,
103
+ done
104
+ } = compiler.hooks;
105
+ compile.tap('modern-dev-server', invalidPlugin);
106
+ invalid.tap('modern-dev-server', invalidPlugin);
107
+ done.tap('modern-dev-server', stats => {
108
+ this.socketServer.updateStats(stats);
109
+ this.emit('change', stats);
110
+ });
111
+ };
112
+
113
+ if (this.compiler.compilers) {
114
+ this.compiler.compilers.forEach(addHooks);
115
+ } else {
116
+ addHooks(this.compiler);
117
+ }
118
+ }
119
+
120
+ setupDevMiddleware() {
121
+ var _config$tools, _config$tools$devServ;
122
+
123
+ const {
124
+ config,
125
+ devOptions
126
+ } = this;
127
+ const middleware = (0, _webpackDevMiddleware.default)(this.compiler, _objectSpread({
128
+ headers: (_config$tools = config.tools) === null || _config$tools === void 0 ? void 0 : (_config$tools$devServ = _config$tools.devServer) === null || _config$tools$devServ === void 0 ? void 0 : _config$tools$devServ.headers,
129
+ stats: false
130
+ }, devOptions.devMiddleware));
131
+ return middleware;
132
+ }
133
+
134
+ isClientCompiler(compiler) {
135
+ const {
136
+ target
137
+ } = compiler.options; // if target not contains `node`, it's a client compiler
138
+
139
+ if (target) {
140
+ if (Array.isArray(target)) {
141
+ return !target.includes('node');
142
+ }
143
+
144
+ return target !== 'node';
145
+ }
146
+
147
+ return compiler.name === 'client';
148
+ }
149
+
150
+ }
151
+
152
+ exports.default = DevMiddleware;
@@ -46,7 +46,10 @@ const enableRegister = (projectRoot, config // eslint-disable-next-line consiste
46
46
  const existTsConfigPaths = checkDep('tsconfig-paths', [projectRoot]);
47
47
 
48
48
  if (isTsProject && existTsNode && existTsConfigPaths) {
49
+ var _config$output;
50
+
49
51
  debug('use ts-node');
52
+ const distPath = (config === null || config === void 0 ? void 0 : (_config$output = config.output) === null || _config$output === void 0 ? void 0 : _config$output.path) || 'dist';
50
53
 
51
54
  const tsNode = require('ts-node');
52
55
 
@@ -86,7 +89,8 @@ const enableRegister = (projectRoot, config // eslint-disable-next-line consiste
86
89
  project: tsconfigPath,
87
90
  // for env.d.ts, https://www.npmjs.com/package/ts-node#missing-types
88
91
  files: true,
89
- transpileOnly: true
92
+ transpileOnly: true,
93
+ ignore: ['(?:^|/)node_modules/', `(?:^|/)${distPath}/bundles/`]
90
94
  });
91
95
  } else {
92
96
  debug('use @babel/register');
@@ -13,22 +13,18 @@ var _https = require("https");
13
13
 
14
14
  var _utils = require("@modern-js/utils");
15
15
 
16
- var _webpackDevMiddleware = _interopRequireDefault(require("@modern-js/utils/webpack-dev-middleware"));
17
-
18
16
  var _prodServer = require("@modern-js/prod-server");
19
17
 
20
18
  var _constants = require("../constants");
21
19
 
22
20
  var _mock = require("../dev-tools/mock");
23
21
 
24
- var _socketServer = _interopRequireDefault(require("../dev-tools/socket-server"));
25
-
26
- var _devServerPlugin = _interopRequireDefault(require("../dev-tools/dev-server-plugin"));
27
-
28
22
  var _register = require("../dev-tools/register");
29
23
 
30
24
  var _watcher = _interopRequireWildcard(require("../dev-tools/watcher"));
31
25
 
26
+ var _devMiddleware = _interopRequireDefault(require("../dev-tools/dev-middleware"));
27
+
32
28
  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); }
33
29
 
34
30
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -49,19 +45,19 @@ class ModernDevServer extends _prodServer.ModernServer {
49
45
 
50
46
  _defineProperty(this, "dev", void 0);
51
47
 
52
- _defineProperty(this, "compiler", void 0);
53
-
54
- _defineProperty(this, "socketServer", void 0);
48
+ _defineProperty(this, "devMiddleware", void 0);
55
49
 
56
50
  _defineProperty(this, "watcher", void 0);
57
51
 
58
- _defineProperty(this, "devMiddleware", void 0);
59
-
60
- this.workDir = this.pwd; // set webpack compiler
52
+ this.workDir = this.pwd; // set dev server options, like webpack-dev-server
61
53
 
62
- this.compiler = options.compiler; // set dev server options, like webpack-dev-server
54
+ this.dev = this.getDevOptions(options); // create dev middleware instance
63
55
 
64
- this.dev = this.getDevOptions(options);
56
+ this.devMiddleware = new _devMiddleware.default({
57
+ dev: this.dev,
58
+ compiler: options.compiler,
59
+ config: this.conf
60
+ });
65
61
  (0, _register.enableRegister)(this.pwd, this.conf);
66
62
  }
67
63
 
@@ -74,15 +70,15 @@ class ModernDevServer extends _prodServer.ModernServer {
74
70
  } // Complete the preparation of services
75
71
 
76
72
 
77
- async onInit(runner) {
73
+ async onInit(runner, app) {
78
74
  var _conf$tools, _conf$tools$devServer;
79
75
 
80
76
  this.runner = runner;
81
77
  const {
82
78
  conf,
83
79
  pwd,
84
- compiler,
85
- dev
80
+ dev,
81
+ devMiddleware
86
82
  } = this; // before dev handler
87
83
 
88
84
  const beforeHandlers = await this.setupBeforeDevMiddleware();
@@ -136,14 +132,29 @@ class ModernDevServer extends _prodServer.ModernServer {
136
132
  } // do webpack build / plugin apply / socket server when pass compiler instance
137
133
 
138
134
 
139
- if (compiler) {
140
- // init socket server
141
- this.socketServer = new _socketServer.default(dev); // setup compiler in server, also add dev-middleware to handler static file in memory
142
-
143
- const devMiddlewareHandler = this.setupCompiler(compiler);
144
- this.addHandler(devMiddlewareHandler);
145
- } // after dev handler
135
+ devMiddleware.init(app);
136
+ devMiddleware.on('change', stats => {
137
+ // Reset only when client compile done
138
+ if (stats.toJson({
139
+ all: false
140
+ }).name === 'client') {
141
+ this.onRepack({
142
+ routes: this.getRoutes()
143
+ });
144
+ }
145
+ });
146
+ this.addHandler((ctx, next) => {
147
+ const {
148
+ req,
149
+ res
150
+ } = ctx;
146
151
 
152
+ if (devMiddleware.middleware) {
153
+ devMiddleware.middleware(req, res, next);
154
+ } else {
155
+ next();
156
+ }
157
+ }); // after dev handler
147
158
 
148
159
  const afterHandlers = await this.setupAfterDevMiddleware();
149
160
  afterHandlers.forEach(handler => {
@@ -155,28 +166,16 @@ class ModernDevServer extends _prodServer.ModernServer {
155
166
  return handler(req, res, next);
156
167
  });
157
168
  });
158
- await super.onInit(runner); // watch mock/ server/ api/ dir file change
169
+ await super.onInit(runner, app); // watch mock/ server/ api/ dir file change
159
170
 
160
171
  if (dev.watch) {
161
172
  this.startWatcher();
162
- }
163
- }
173
+ app.on('close', async () => {
174
+ var _this$watcher;
164
175
 
165
- async onClose() {
166
- var _this$watcher, _this$socketServer;
167
-
168
- await super.onClose();
169
- await ((_this$watcher = this.watcher) === null || _this$watcher === void 0 ? void 0 : _this$watcher.close());
170
- await new Promise(resolve => {
171
- if (this.devMiddleware) {
172
- this.devMiddleware.close(() => {
173
- resolve();
174
- });
175
- } else {
176
- resolve();
177
- }
178
- });
179
- (_this$socketServer = this.socketServer) === null || _this$socketServer === void 0 ? void 0 : _this$socketServer.close();
176
+ await ((_this$watcher = this.watcher) === null || _this$watcher === void 0 ? void 0 : _this$watcher.close());
177
+ });
178
+ }
180
179
  }
181
180
 
182
181
  onRepack(options = {}) {
@@ -192,12 +191,6 @@ class ModernDevServer extends _prodServer.ModernServer {
192
191
  super.onRepack(options);
193
192
  }
194
193
 
195
- onListening(app) {
196
- var _this$socketServer2;
197
-
198
- (_this$socketServer2 = this.socketServer) === null || _this$socketServer2 === void 0 ? void 0 : _this$socketServer2.prepare(app);
199
- }
200
-
201
194
  async createHTTPServer(handler) {
202
195
  const {
203
196
  dev
@@ -257,104 +250,12 @@ class ModernDevServer extends _prodServer.ModernServer {
257
250
  this.logger.error(e);
258
251
  }
259
252
  }
260
- } // set up plugin to each compiler
261
- // register hooks for each compilation, update socket stats if recompiled
262
- // start dev middleware
263
-
264
-
265
- setupCompiler(compiler) {
266
- this.setupDevServerPlugin(compiler);
267
- this.setupHooks();
268
- return this.setupDevMiddleware(compiler);
269
253
  }
270
254
 
271
- isClientCompiler(compiler) {
272
- const {
273
- target
274
- } = compiler.options; // if target not contains `node`, it's a client compiler
275
-
276
- if (target) {
277
- if (Array.isArray(target)) {
278
- return !target.includes('node');
279
- }
280
-
281
- return target !== 'node';
282
- }
283
-
284
- return compiler.name === 'client';
285
- }
286
-
287
- setupDevServerPlugin(compiler) {
288
- const {
289
- dev: devConf
290
- } = this; // apply dev server to client compiler, add hmr client to entry.
291
-
292
- if (compiler.compilers) {
293
- compiler.compilers.forEach(target => {
294
- if (this.isClientCompiler(target)) {
295
- new _devServerPlugin.default(devConf).apply(target);
296
- }
297
- });
298
- } else {
299
- new _devServerPlugin.default(devConf).apply(compiler);
300
- }
301
- }
302
-
303
- setupHooks() {
304
- const invalidPlugin = () => {
305
- this.socketServer.sockWrite('invalid');
306
- };
307
-
308
- const addHooks = compiler => {
309
- if (compiler.name === 'server') {
310
- return;
311
- }
312
-
313
- const {
314
- compile,
315
- invalid,
316
- done
317
- } = compiler.hooks;
318
- compile.tap('modern-dev-server', invalidPlugin);
319
- invalid.tap('modern-dev-server', invalidPlugin);
320
- done.tap('modern-dev-server', stats => {
321
- this.socketServer.updateStats(stats); // Reset only when client compile done
322
-
323
- if (stats.toJson({
324
- all: false
325
- }).name === 'client') {
326
- this.onRepack({
327
- routes: this.getRoutes()
328
- });
329
- }
330
- });
331
- };
332
-
333
- if (this.compiler.compilers) {
334
- this.compiler.compilers.forEach(addHooks);
335
- } else {
336
- addHooks(this.compiler);
337
- }
338
- }
339
-
340
- setupDevMiddleware(compiler) {
341
- var _conf$tools2, _conf$tools2$devServe;
342
-
343
- const {
344
- conf
345
- } = this;
346
- this.devMiddleware = (0, _webpackDevMiddleware.default)(compiler, _objectSpread({
347
- headers: (_conf$tools2 = conf.tools) === null || _conf$tools2 === void 0 ? void 0 : (_conf$tools2$devServe = _conf$tools2.devServer) === null || _conf$tools2$devServe === void 0 ? void 0 : _conf$tools2$devServe.headers,
348
- publicPath: '/',
349
- stats: false
350
- }, this.dev.devMiddleware));
351
- return (ctx, next) => {
352
- const {
353
- req,
354
- res
355
- } = ctx;
356
- this.devMiddleware(req, res, next);
357
- };
255
+ createContext(req, res) {
256
+ return super.createContext(req, res, {
257
+ etag: true
258
+ });
358
259
  }
359
260
 
360
261
  async setupBeforeDevMiddleware() {
@@ -9,16 +9,8 @@ var _prodServer = require("@modern-js/prod-server");
9
9
 
10
10
  var _devServer = require("./dev-server");
11
11
 
12
- var _devServerSplit = require("./dev-server-split");
13
-
14
12
  const createDevServer = options => {
15
- if (options.apiOnly) {
16
- return new _devServerSplit.ModernAPIDevServer(options);
17
- } else if (options.ssrOnly) {
18
- return new _devServerSplit.ModernSSRDevServer(options);
19
- } else {
20
- return new _devServer.ModernDevServer(options);
21
- }
13
+ return new _devServer.ModernDevServer(options);
22
14
  };
23
15
 
24
16
  class DevServer extends _prodServer.Server {
@@ -1,5 +1,5 @@
1
1
  import type webpack from 'webpack';
2
- import type { DevServerOptions } from '../types';
2
+ import type { DevServerOptions } from '../../types';
3
3
  export default class DevServerPlugin {
4
4
  private readonly options;
5
5
  constructor(options: DevServerOptions);
@@ -0,0 +1,31 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ import { Server, IncomingMessage, ServerResponse } from 'http';
4
+ import { EventEmitter } from 'events';
5
+ import { Compiler, MultiCompiler } from 'webpack';
6
+ import webpackDevMiddleware from '@modern-js/utils/webpack-dev-middleware';
7
+ import type { NormalizedConfig } from '@modern-js/core';
8
+ import { DevServerOptions } from '../../types';
9
+ declare type Options = {
10
+ compiler: MultiCompiler | Compiler | null;
11
+ dev: DevServerOptions;
12
+ config: NormalizedConfig;
13
+ };
14
+ export default class DevMiddleware extends EventEmitter {
15
+ middleware?: webpackDevMiddleware.API<IncomingMessage, ServerResponse>;
16
+ private compiler;
17
+ private devOptions;
18
+ private socketServer;
19
+ private config;
20
+ constructor({
21
+ compiler,
22
+ dev,
23
+ config
24
+ }: Options);
25
+ init(app: Server): void;
26
+ private setupDevServerPlugin;
27
+ private setupHooks;
28
+ private setupDevMiddleware;
29
+ private isClientCompiler;
30
+ }
31
+ export {};
@@ -2,7 +2,7 @@
2
2
  import { Server } from 'http';
3
3
  import ws from 'ws';
4
4
  import type webpack from 'webpack';
5
- import type { DevServerOptions } from '../types';
5
+ import type { DevServerOptions } from '../../types';
6
6
  export default class SocketServer {
7
7
  private wsServer;
8
8
  private readonly sockets;
@@ -1,6 +1,6 @@
1
1
  /// <reference types="node" />
2
2
  import { IncomingMessage, ServerResponse } from 'http';
3
- import { ModernServerContext, NextFunction } from '@modern-js/types';
3
+ import type { ModernServerContext, NextFunction } from '@modern-js/types';
4
4
  export declare type MockConfig = Record<string, {
5
5
  data: any;
6
6
  } | ((req: IncomingMessage, res: ServerResponse, next: NextFunction) => Promise<void>)>;
@@ -1,4 +1,4 @@
1
- import { ModernServerContext, NextFunction } from '@modern-js/types';
1
+ import type { ModernServerContext, NextFunction } from '@modern-js/types';
2
2
  export declare const createMockHandler: ({
3
3
  pwd
4
4
  }: {
@@ -1,23 +1,19 @@
1
1
  /// <reference types="node" />
2
2
  /// <reference types="node" />
3
- import http, { Server, IncomingMessage, ServerResponse } from 'http';
3
+ import { IncomingMessage, Server, ServerResponse } from 'http';
4
4
  import { ServerHookRunner, ModernServer, BuildOptions } from '@modern-js/prod-server';
5
5
  import { WatchEvent } from '../dev-tools/watcher';
6
- import { ModernDevServerOptions } from '../types';
6
+ import type { ModernDevServerOptions } from '../types';
7
7
  export declare class ModernDevServer extends ModernServer {
8
8
  private mockHandler;
9
9
  private readonly dev;
10
- private readonly compiler?;
11
- private socketServer;
10
+ private readonly devMiddleware;
12
11
  private watcher?;
13
- private devMiddleware;
14
12
  constructor(options: ModernDevServerOptions);
15
13
  private getDevOptions;
16
- onInit(runner: ServerHookRunner): Promise<void>;
17
- onClose(): Promise<void>;
14
+ onInit(runner: ServerHookRunner, app: Server): Promise<void>;
18
15
  onRepack(options?: BuildOptions): void;
19
- onListening(app: Server): void;
20
- createHTTPServer(handler: (req: IncomingMessage, res: ServerResponse, next?: () => void) => void): Promise<http.Server | import("https").Server>;
16
+ createHTTPServer(handler: (req: IncomingMessage, res: ServerResponse, next?: () => void) => void): Promise<Server | import("https").Server>;
21
17
  protected warmupSSRBundle(): void;
22
18
  protected onServerChange({
23
19
  filepath,
@@ -26,11 +22,7 @@ export declare class ModernDevServer extends ModernServer {
26
22
  filepath: string;
27
23
  event: WatchEvent;
28
24
  }): void;
29
- private setupCompiler;
30
- private isClientCompiler;
31
- private setupDevServerPlugin;
32
- private setupHooks;
33
- private setupDevMiddleware;
25
+ protected createContext(req: IncomingMessage, res: ServerResponse): import("@modern-js/prod-server/src/libs/context").ModernServerContext;
34
26
  private setupBeforeDevMiddleware;
35
27
  private setupAfterDevMiddleware;
36
28
  private cleanSSRCache;
@@ -1,5 +1,5 @@
1
1
  import { Server } from '@modern-js/prod-server';
2
- import { ModernDevServerOptions } from '../types';
2
+ import type { ModernDevServerOptions } from '../types';
3
3
  export declare class DevServer extends Server {
4
4
  constructor(options: ModernDevServerOptions);
5
5
  }
@@ -23,7 +23,7 @@ export declare type DevServerOptions = {
23
23
  [propName: string]: any;
24
24
  };
25
25
  export declare type ExtraOptions = {
26
- dev?: boolean | Partial<DevServerOptions>;
27
- compiler?: webpack.MultiCompiler | webpack.Compiler | null;
26
+ dev: boolean | Partial<DevServerOptions>;
27
+ compiler: webpack.MultiCompiler | webpack.Compiler | null;
28
28
  };
29
29
  export declare type ModernDevServerOptions = ModernServerOptions & ExtraOptions;
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "modern",
12
12
  "modern.js"
13
13
  ],
14
- "version": "1.18.0",
14
+ "version": "1.18.1-alpha.0",
15
15
  "jsnext:source": "./src/index.ts",
16
16
  "types": "./dist/types/index.d.ts",
17
17
  "main": "./dist/js/node/index.js",
@@ -30,20 +30,20 @@
30
30
  "dependencies": {
31
31
  "@babel/core": "^7.18.0",
32
32
  "@babel/register": "^7.17.7",
33
- "@modern-js/prod-server": "1.18.0",
34
- "@modern-js/server-utils": "1.18.0",
35
- "@modern-js/utils": "1.18.0",
33
+ "@modern-js/prod-server": "1.18.1-alpha.0",
34
+ "@modern-js/server-utils": "1.18.1-alpha.0",
35
+ "@modern-js/utils": "1.18.1-alpha.0",
36
36
  "devcert": "^1.2.2",
37
37
  "minimatch": "^3.0.4",
38
38
  "path-to-regexp": "^6.2.0",
39
39
  "ws": "^8.2.0"
40
40
  },
41
41
  "devDependencies": {
42
- "@modern-js/core": "1.18.0",
43
- "@modern-js/server-core": "1.18.0",
44
- "@modern-js/types": "1.18.0",
45
- "@scripts/build": "1.18.0",
46
- "@scripts/jest-config": "1.18.0",
42
+ "@modern-js/core": "1.18.1-alpha.0",
43
+ "@modern-js/server-core": "1.18.1-alpha.0",
44
+ "@modern-js/types": "1.18.1-alpha.0",
45
+ "@scripts/build": "1.18.1-alpha.0",
46
+ "@scripts/jest-config": "1.18.1-alpha.0",
47
47
  "@types/jest": "^27",
48
48
  "@types/minimatch": "^3.0.5",
49
49
  "@types/node": "^14",
@@ -1,43 +0,0 @@
1
- import { RUN_MODE } from '@modern-js/prod-server';
2
- import { ModernDevServer } from "./dev-server";
3
- export class ModernSSRDevServer extends ModernDevServer {
4
- prepareAPIHandler(_) {
5
- return null;
6
- }
7
-
8
- filterRoutes(routes) {
9
- return routes.filter(route => route.isSSR);
10
- }
11
-
12
- async setupBeforeProdMiddleware() {
13
- if (this.runMode === RUN_MODE.FULL) {
14
- await super.setupBeforeProdMiddleware();
15
- }
16
- }
17
-
18
- async emitRouteHook(_, _input) {
19
- if (this.runMode === RUN_MODE.FULL) {
20
- await super.emitRouteHook(_, _input);
21
- }
22
- }
23
-
24
- }
25
- export class ModernAPIDevServer extends ModernDevServer {
26
- prepareWebHandler(_) {
27
- return null;
28
- }
29
-
30
- filterRoutes(routes) {
31
- return routes.filter(route => route.isApi);
32
- }
33
-
34
- async setupBeforeProdMiddleware() {
35
- if (this.runMode === RUN_MODE.FULL) {
36
- await super.setupBeforeProdMiddleware();
37
- }
38
- }
39
-
40
- async emitRouteHook(_, _input) {// empty
41
- }
42
-
43
- }
@@ -1,57 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.ModernSSRDevServer = exports.ModernAPIDevServer = void 0;
7
-
8
- var _prodServer = require("@modern-js/prod-server");
9
-
10
- var _devServer = require("./dev-server");
11
-
12
- class ModernSSRDevServer extends _devServer.ModernDevServer {
13
- prepareAPIHandler(_) {
14
- return null;
15
- }
16
-
17
- filterRoutes(routes) {
18
- return routes.filter(route => route.isSSR);
19
- }
20
-
21
- async setupBeforeProdMiddleware() {
22
- if (this.runMode === _prodServer.RUN_MODE.FULL) {
23
- await super.setupBeforeProdMiddleware();
24
- }
25
- }
26
-
27
- async emitRouteHook(_, _input) {
28
- if (this.runMode === _prodServer.RUN_MODE.FULL) {
29
- await super.emitRouteHook(_, _input);
30
- }
31
- }
32
-
33
- }
34
-
35
- exports.ModernSSRDevServer = ModernSSRDevServer;
36
-
37
- class ModernAPIDevServer extends _devServer.ModernDevServer {
38
- prepareWebHandler(_) {
39
- return null;
40
- }
41
-
42
- filterRoutes(routes) {
43
- return routes.filter(route => route.isApi);
44
- }
45
-
46
- async setupBeforeProdMiddleware() {
47
- if (this.runMode === _prodServer.RUN_MODE.FULL) {
48
- await super.setupBeforeProdMiddleware();
49
- }
50
- }
51
-
52
- async emitRouteHook(_, _input) {// empty
53
- }
54
-
55
- }
56
-
57
- exports.ModernAPIDevServer = ModernAPIDevServer;
@@ -1,16 +0,0 @@
1
- import type { APIServerStartInput } from '@modern-js/server-core';
2
- import { ServerRoute as ModernRouteInterface } from '@modern-js/types';
3
- import { HookNames } from '@modern-js/prod-server';
4
- import { ModernDevServer } from './dev-server';
5
- export declare class ModernSSRDevServer extends ModernDevServer {
6
- protected prepareAPIHandler(_: APIServerStartInput['config']): any;
7
- protected filterRoutes(routes: ModernRouteInterface[]): ModernRouteInterface[];
8
- protected setupBeforeProdMiddleware(): Promise<void>;
9
- protected emitRouteHook(_: HookNames, _input: any): Promise<void>;
10
- }
11
- export declare class ModernAPIDevServer extends ModernDevServer {
12
- protected prepareWebHandler(_: APIServerStartInput['config']): any;
13
- protected filterRoutes(routes: ModernRouteInterface[]): ModernRouteInterface[];
14
- protected setupBeforeProdMiddleware(): Promise<void>;
15
- protected emitRouteHook(_: HookNames, _input: any): Promise<void>;
16
- }