@modern-js/server 1.21.5 → 2.0.0-beta.1

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 (36) hide show
  1. package/CHANGELOG.md +79 -22
  2. package/dist/js/modern/dev-tools/dev-middleware/dev-server-plugin.js +4 -9
  3. package/dist/js/modern/dev-tools/dev-middleware/hmr-client/createSocketUrl.js +2 -5
  4. package/dist/js/modern/dev-tools/dev-middleware/hmr-client/index.js +43 -50
  5. package/dist/js/modern/dev-tools/dev-middleware/index.js +14 -32
  6. package/dist/js/modern/dev-tools/dev-middleware/socket-server.js +18 -43
  7. package/dist/js/modern/dev-tools/https/index.js +0 -2
  8. package/dist/js/modern/dev-tools/mock/getMockData.js +4 -23
  9. package/dist/js/modern/dev-tools/mock/index.js +0 -8
  10. package/dist/js/modern/dev-tools/register/index.js +9 -23
  11. package/dist/js/modern/dev-tools/watcher/dependency-tree.js +5 -15
  12. package/dist/js/modern/dev-tools/watcher/index.js +0 -18
  13. package/dist/js/modern/dev-tools/watcher/stats-cache.js +0 -16
  14. package/dist/js/modern/index.js +0 -1
  15. package/dist/js/modern/server/dev-server.js +37 -56
  16. package/dist/js/modern/server/index.js +0 -4
  17. package/dist/js/node/constants.js +0 -3
  18. package/dist/js/node/dev-tools/dev-middleware/dev-server-plugin.js +4 -11
  19. package/dist/js/node/dev-tools/dev-middleware/hmr-client/createSocketUrl.js +2 -8
  20. package/dist/js/node/dev-tools/dev-middleware/hmr-client/index.js +41 -53
  21. package/dist/js/node/dev-tools/dev-middleware/index.js +14 -38
  22. package/dist/js/node/dev-tools/dev-middleware/socket-server.js +18 -48
  23. package/dist/js/node/dev-tools/https/index.js +0 -7
  24. package/dist/js/node/dev-tools/mock/getMockData.js +4 -29
  25. package/dist/js/node/dev-tools/mock/index.js +0 -17
  26. package/dist/js/node/dev-tools/register/index.js +8 -31
  27. package/dist/js/node/dev-tools/watcher/dependency-tree.js +5 -19
  28. package/dist/js/node/dev-tools/watcher/index.js +0 -32
  29. package/dist/js/node/dev-tools/watcher/stats-cache.js +0 -23
  30. package/dist/js/node/index.js +0 -4
  31. package/dist/js/node/server/dev-server.js +37 -75
  32. package/dist/js/node/server/index.js +0 -7
  33. package/dist/types/dev-tools/mock/getMockData.d.ts +0 -2
  34. package/dist/types/dev-tools/watcher/dependency-tree.d.ts +0 -2
  35. package/dist/types/index.d.ts +0 -2
  36. package/package.json +11 -34
@@ -4,16 +4,11 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.defaultIgnores = exports.DependencyTree = void 0;
7
-
8
7
  var _minimatch = _interopRequireDefault(require("minimatch"));
9
-
10
8
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
-
12
9
  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; }
13
-
14
10
  const defaultIgnores = ['**/bower_components/**', '**/coverage/**', '**/node_modules/**', '**/.*/**', '**/*.d.ts', '**/*.log'];
15
11
  exports.defaultIgnores = defaultIgnores;
16
-
17
12
  /**
18
13
  * `require.cache` already is a dependency tree, however require cache's
19
14
  * `module.parent` is the module that first required. so we have to implement
@@ -22,26 +17,23 @@ exports.defaultIgnores = defaultIgnores;
22
17
  class DependencyTree {
23
18
  constructor() {
24
19
  _defineProperty(this, "tree", void 0);
25
-
26
20
  _defineProperty(this, "ignore", void 0);
27
-
28
21
  this.tree = new Map();
29
22
  this.ignore = [...defaultIgnores];
30
23
  }
31
-
32
24
  getNode(path) {
33
25
  return this.tree.get(path);
34
26
  }
27
+
35
28
  /**
36
29
  * update dependency tree
37
30
  *
38
31
  * @param cache
39
32
  */
40
-
41
-
42
33
  update(cache) {
43
- this.tree.clear(); // insert all module that not ignored
34
+ this.tree.clear();
44
35
 
36
+ // insert all module that not ignored
45
37
  Object.keys(cache).forEach(path => {
46
38
  if (!this.shouldIgnore(path)) {
47
39
  const module = cache[path];
@@ -51,8 +43,9 @@ class DependencyTree {
51
43
  children: new Set()
52
44
  });
53
45
  }
54
- }); // update treeNode parent and children
46
+ });
55
47
 
48
+ // update treeNode parent and children
56
49
  for (const treeNode of this.tree.values()) {
57
50
  const {
58
51
  parent
@@ -60,19 +53,15 @@ class DependencyTree {
60
53
  const {
61
54
  children
62
55
  } = treeNode.module;
63
-
64
56
  if (parent && !this.shouldIgnore(parent.filename)) {
65
57
  const parentTreeNode = this.tree.get(parent.filename);
66
-
67
58
  if (parentTreeNode) {
68
59
  treeNode.parent.add(parentTreeNode);
69
60
  }
70
61
  }
71
-
72
62
  children.forEach(child => {
73
63
  if (!this.shouldIgnore(child.filename)) {
74
64
  const childTreeNode = this.tree.get(child.filename);
75
-
76
65
  if (childTreeNode) {
77
66
  treeNode.children.add(childTreeNode);
78
67
  childTreeNode.parent.add(treeNode);
@@ -81,11 +70,8 @@ class DependencyTree {
81
70
  });
82
71
  }
83
72
  }
84
-
85
73
  shouldIgnore(path) {
86
74
  return !path || Boolean(this.ignore.find(rule => _minimatch.default.match([path], rule).length > 0));
87
75
  }
88
-
89
76
  }
90
-
91
77
  exports.DependencyTree = DependencyTree;
@@ -4,30 +4,20 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.mergeWatchOptions = exports.getWatchedFiles = exports.defaultWatchOptions = exports.default = void 0;
7
-
8
7
  var _path = _interopRequireDefault(require("path"));
9
-
10
8
  var _utils = require("@modern-js/utils");
11
-
12
9
  var _dependencyTree = require("./dependency-tree");
13
-
14
10
  var _statsCache = require("./stats-cache");
15
-
16
11
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
18
12
  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
13
  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
14
  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
15
  const defaultWatchOptions = {
25
16
  // 初始化的时候不触发 add、addDir 事件
26
17
  ignoreInitial: true,
27
18
  ignored: /api\/typings\/.*/
28
19
  };
29
20
  exports.defaultWatchOptions = defaultWatchOptions;
30
-
31
21
  const getWatchedFiles = watcher => {
32
22
  const watched = watcher.getWatched();
33
23
  const files = [];
@@ -38,44 +28,32 @@ const getWatchedFiles = watcher => {
38
28
  });
39
29
  return files;
40
30
  };
41
-
42
31
  exports.getWatchedFiles = getWatchedFiles;
43
-
44
32
  const mergeWatchOptions = options => {
45
33
  const watchOptions = _objectSpread({}, options);
46
-
47
34
  if (watchOptions) {
48
35
  const {
49
36
  ignored
50
37
  } = watchOptions;
51
38
  const finalIgnored = ignored ? [defaultWatchOptions.ignored, ...(Array.isArray(ignored) ? ignored : [ignored])] : ignored;
52
-
53
39
  if (finalIgnored) {
54
40
  watchOptions.ignored = finalIgnored;
55
41
  }
56
42
  }
57
-
58
43
  const finalWatchOptions = _objectSpread(_objectSpread({}, defaultWatchOptions), watchOptions);
59
-
60
44
  return finalWatchOptions;
61
45
  };
62
-
63
46
  exports.mergeWatchOptions = mergeWatchOptions;
64
-
65
47
  class Watcher {
66
48
  constructor() {
67
49
  _defineProperty(this, "dependencyTree", null);
68
-
69
50
  _defineProperty(this, "watcher", void 0);
70
51
  }
71
-
72
52
  listen(files, options, callback) {
73
53
  const watched = files.filter(Boolean);
74
54
  const filenames = watched.map(filename => filename.replace(/\\/g, '/'));
75
55
  const cache = new _statsCache.StatsCache();
76
-
77
56
  const watcher = _utils.chokidar.watch(filenames, options);
78
-
79
57
  watcher.on('ready', () => {
80
58
  cache.add(getWatchedFiles(watcher));
81
59
  });
@@ -97,35 +75,25 @@ class Watcher {
97
75
  });
98
76
  this.watcher = watcher;
99
77
  }
100
-
101
78
  createDepTree() {
102
79
  this.dependencyTree = new _dependencyTree.DependencyTree();
103
80
  }
104
-
105
81
  updateDepTree() {
106
82
  var _this$dependencyTree;
107
-
108
83
  (_this$dependencyTree = this.dependencyTree) === null || _this$dependencyTree === void 0 ? void 0 : _this$dependencyTree.update(require.cache);
109
84
  }
110
-
111
85
  cleanDepCache(filepath) {
112
86
  var _this$dependencyTree2;
113
-
114
87
  const node = (_this$dependencyTree2 = this.dependencyTree) === null || _this$dependencyTree2 === void 0 ? void 0 : _this$dependencyTree2.getNode(filepath);
115
-
116
88
  if (node && require.cache[filepath]) {
117
89
  delete require.cache[filepath];
118
-
119
90
  for (const parentNode of node.parent.values()) {
120
91
  this.cleanDepCache(parentNode.module.filename);
121
92
  }
122
93
  }
123
94
  }
124
-
125
95
  close() {
126
96
  return this.watcher.close();
127
97
  }
128
-
129
98
  }
130
-
131
99
  exports.default = Watcher;
@@ -4,32 +4,23 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.StatsCache = void 0;
7
-
8
7
  var _fs = _interopRequireDefault(require("fs"));
9
-
10
8
  var _crypto = _interopRequireDefault(require("crypto"));
11
-
12
9
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
-
14
10
  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; }
15
-
16
11
  class StatsCache {
17
12
  constructor() {
18
13
  _defineProperty(this, "cachedHash", {});
19
-
20
14
  _defineProperty(this, "cachedSize", {});
21
15
  }
22
-
23
16
  add(files) {
24
17
  const {
25
18
  cachedHash,
26
19
  cachedSize
27
20
  } = this;
28
-
29
21
  for (const filename of files) {
30
22
  if (_fs.default.existsSync(filename)) {
31
23
  const stats = _fs.default.statSync(filename);
32
-
33
24
  if (stats.isFile() && !cachedHash[filename]) {
34
25
  cachedHash[filename] = this.hash(stats, filename);
35
26
  cachedSize[filename] = stats.size;
@@ -37,60 +28,46 @@ class StatsCache {
37
28
  }
38
29
  }
39
30
  }
40
-
41
31
  refresh(filename) {
42
32
  const {
43
33
  cachedHash,
44
34
  cachedSize
45
35
  } = this;
46
-
47
36
  if (_fs.default.existsSync(filename)) {
48
37
  const stats = _fs.default.statSync(filename);
49
-
50
38
  if (stats.isFile()) {
51
39
  cachedHash[filename] = this.hash(stats, filename);
52
40
  cachedSize[filename] = stats.size;
53
41
  }
54
42
  }
55
43
  }
56
-
57
44
  del(filename) {
58
45
  if (this.cachedHash[filename]) {
59
46
  delete this.cachedHash[filename];
60
47
  delete this.cachedSize[filename];
61
48
  }
62
49
  }
63
-
64
50
  isDiff(filename) {
65
51
  const {
66
52
  cachedHash,
67
53
  cachedSize
68
54
  } = this;
69
-
70
55
  const stats = _fs.default.statSync(filename);
71
-
72
56
  const hash = cachedHash[filename];
73
57
  const size = cachedSize[filename];
74
-
75
58
  if (stats.size !== size) {
76
59
  return true;
77
60
  }
78
-
79
61
  if (this.hash(stats, filename) !== hash) {
80
62
  return true;
81
63
  }
82
-
83
64
  return false;
84
65
  }
85
-
86
66
  has(filename) {
87
67
  return Boolean(this.cachedHash[filename]);
88
68
  }
89
-
90
69
  hash(stats, filename) {
91
70
  return _crypto.default.createHash('md5').update(_fs.default.readFileSync(filename)).digest('hex');
92
71
  }
93
-
94
72
  }
95
-
96
73
  exports.StatsCache = StatsCache;
@@ -10,16 +10,12 @@ Object.defineProperty(exports, "Server", {
10
10
  }
11
11
  });
12
12
  exports.default = void 0;
13
-
14
13
  var _server = require("./server");
15
-
16
14
  var _default = options => {
17
15
  if (options == null) {
18
16
  throw new Error('can not start mserver without options');
19
17
  }
20
-
21
18
  const server = new _server.DevServer(options);
22
19
  return server.init();
23
20
  };
24
-
25
21
  exports.default = _default;
@@ -4,57 +4,38 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.ModernDevServer = void 0;
7
-
8
7
  var _http = require("http");
9
-
10
8
  var _path = _interopRequireDefault(require("path"));
11
-
12
9
  var _https = require("https");
13
-
14
10
  var _utils = require("@modern-js/utils");
15
-
16
11
  var _prodServer = require("@modern-js/prod-server");
17
-
18
12
  var _constants = require("@modern-js/utils/constants");
19
-
20
13
  var _constants2 = require("../constants");
21
-
22
14
  var _mock = require("../dev-tools/mock");
23
-
24
15
  var _register = require("../dev-tools/register");
25
-
26
16
  var _watcher = _interopRequireWildcard(require("../dev-tools/watcher"));
27
-
28
17
  var _devMiddleware = _interopRequireDefault(require("../dev-tools/dev-middleware"));
29
-
30
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
31
-
32
19
  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
-
34
20
  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; }
35
-
36
21
  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; }
37
-
38
22
  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; }
39
-
40
23
  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; }
41
-
42
24
  class ModernDevServer extends _prodServer.ModernServer {
43
25
  constructor(options) {
44
- super(options); // dev server should work in pwd
26
+ super(options);
45
27
 
28
+ // dev server should work in pwd
46
29
  _defineProperty(this, "mockHandler", null);
47
-
48
30
  _defineProperty(this, "dev", void 0);
49
-
50
31
  _defineProperty(this, "devMiddleware", void 0);
51
-
52
32
  _defineProperty(this, "watcher", void 0);
33
+ this.workDir = this.pwd;
53
34
 
54
- this.workDir = this.pwd; // set dev server options, like webpack-dev-server
55
-
56
- this.dev = this.getDevOptions(options); // create dev middleware instance
35
+ // set dev server options, like webpack-dev-server
36
+ this.dev = this.getDevOptions(options);
57
37
 
38
+ // create dev middleware instance
58
39
  this.devMiddleware = new _devMiddleware.default({
59
40
  dev: this.dev,
60
41
  compiler: options.compiler,
@@ -62,7 +43,6 @@ class ModernDevServer extends _prodServer.ModernServer {
62
43
  });
63
44
  (0, _register.enableRegister)(this.pwd, this.conf);
64
45
  }
65
-
66
46
  getDevOptions(options) {
67
47
  const devOptions = typeof options.dev === 'boolean' ? {} : options.dev;
68
48
  const defaultOptions = (0, _constants2.getDefaultDevOptions)();
@@ -70,7 +50,6 @@ class ModernDevServer extends _prodServer.ModernServer {
70
50
  client: _objectSpread(_objectSpread({}, defaultOptions.client), devOptions === null || devOptions === void 0 ? void 0 : devOptions.client)
71
51
  });
72
52
  }
73
-
74
53
  addMiddlewareHandler(handlers) {
75
54
  handlers.forEach(handler => {
76
55
  this.addHandler((ctx, next) => {
@@ -82,7 +61,6 @@ class ModernDevServer extends _prodServer.ModernServer {
82
61
  });
83
62
  });
84
63
  }
85
-
86
64
  applySetupMiddlewares() {
87
65
  const setupMiddlewares = this.dev.setupMiddlewares || [];
88
66
  const serverOptions = {
@@ -100,38 +78,40 @@ class ModernDevServer extends _prodServer.ModernServer {
100
78
  befores,
101
79
  afters
102
80
  };
103
- } // Complete the preparation of services
104
-
81
+ }
105
82
 
83
+ // Complete the preparation of services
106
84
  async onInit(runner, app) {
107
85
  this.runner = runner;
108
86
  const {
109
87
  dev
110
- } = this; // Order: devServer.before => setupMiddlewares.unshift => internal middlewares => setupMiddlewares.push => devServer.after
88
+ } = this;
111
89
 
90
+ // Order: devServer.before => setupMiddlewares.unshift => internal middlewares => setupMiddlewares.push => devServer.after
112
91
  const {
113
92
  befores,
114
93
  afters
115
- } = this.applySetupMiddlewares(); // before dev handler
94
+ } = this.applySetupMiddlewares();
116
95
 
96
+ // before dev handler
117
97
  const beforeHandlers = await this.setupBeforeDevMiddleware();
118
98
  this.addMiddlewareHandler([...beforeHandlers, ...befores]);
119
- await this.applyDefaultMiddlewares(app); // after dev handler
99
+ await this.applyDefaultMiddlewares(app);
120
100
 
101
+ // after dev handler
121
102
  const afterHandlers = await this.setupAfterDevMiddleware();
122
103
  this.addMiddlewareHandler([...afters, ...afterHandlers]);
123
- await super.onInit(runner, app); // watch mock/ server/ api/ dir file change
104
+ await super.onInit(runner, app);
124
105
 
106
+ // watch mock/ server/ api/ dir file change
125
107
  if (dev.watch) {
126
108
  this.startWatcher();
127
109
  app.on('close', async () => {
128
110
  var _this$watcher;
129
-
130
111
  await ((_this$watcher = this.watcher) === null || _this$watcher === void 0 ? void 0 : _this$watcher.close());
131
112
  });
132
113
  }
133
114
  }
134
-
135
115
  async applyDefaultMiddlewares(app) {
136
116
  const {
137
117
  pwd,
@@ -141,23 +121,21 @@ class ModernDevServer extends _prodServer.ModernServer {
141
121
  this.addHandler((ctx, next) => {
142
122
  // allow hmr request cross-domain, because the user may use global proxy
143
123
  ctx.res.setHeader('Access-Control-Allow-Origin', '*');
144
-
145
124
  if (ctx.path.includes('hot-update')) {
146
125
  ctx.res.setHeader('Access-Control-Allow-Credentials', 'false');
147
- } // 用户在 devServer 上配置的 headers 不会对 html 的请求生效,加入下面代码,使配置的 headers 对所有请求生效
148
-
126
+ }
149
127
 
128
+ // 用户在 devServer 上配置的 headers 不会对 html 的请求生效,加入下面代码,使配置的 headers 对所有请求生效
150
129
  const confHeaders = dev.headers;
151
-
152
130
  if (confHeaders) {
153
131
  for (const [key, value] of Object.entries(confHeaders)) {
154
132
  ctx.res.setHeader(key, value);
155
133
  }
156
134
  }
157
-
158
135
  next();
159
- }); // mock handler
136
+ });
160
137
 
138
+ // mock handler
161
139
  this.mockHandler = (0, _mock.createMockHandler)({
162
140
  pwd
163
141
  });
@@ -167,17 +145,17 @@ class ModernDevServer extends _prodServer.ModernServer {
167
145
  } else {
168
146
  next();
169
147
  }
170
- }); // dev proxy handler, each proxy has own handler
148
+ });
171
149
 
150
+ // dev proxy handler, each proxy has own handler
172
151
  const proxyHandlers = (0, _prodServer.createProxyHandler)(dev.proxy);
173
-
174
152
  if (proxyHandlers) {
175
153
  proxyHandlers.forEach(handler => {
176
154
  this.addHandler(handler);
177
155
  });
178
- } // do webpack build / plugin apply / socket server when pass compiler instance
179
-
156
+ }
180
157
 
158
+ // do webpack build / plugin apply / socket server when pass compiler instance
181
159
  devMiddleware.init(app);
182
160
  devMiddleware.on('change', stats => {
183
161
  // Reset only when client compile done
@@ -194,14 +172,12 @@ class ModernDevServer extends _prodServer.ModernServer {
194
172
  req,
195
173
  res
196
174
  } = ctx;
197
-
198
175
  if (devMiddleware.middleware) {
199
176
  devMiddleware.middleware(req, res, next);
200
177
  } else {
201
178
  next();
202
179
  }
203
180
  });
204
-
205
181
  if (dev.historyApiFallback) {
206
182
  const {
207
183
  default: connectHistoryApiFallback
@@ -210,41 +186,37 @@ class ModernDevServer extends _prodServer.ModernServer {
210
186
  this.addHandler((ctx, next) => historyApiFallbackMiddleware(ctx.req, ctx.res, next));
211
187
  }
212
188
  }
213
-
214
189
  onRepack(options = {}) {
215
190
  // reset the routing management instance every times the service starts
216
191
  if (Array.isArray(options.routes)) {
217
192
  this.router.reset(this.filterRoutes(options.routes));
218
- } // clean ssr bundle cache
219
-
193
+ }
220
194
 
221
- this.cleanSSRCache(); // reset static file
195
+ // clean ssr bundle cache
196
+ this.cleanSSRCache();
222
197
 
198
+ // reset static file
223
199
  this.reader.updateFile();
224
200
  super.onRepack(options);
225
201
  }
226
-
227
202
  async createHTTPServer(handler) {
228
203
  const {
229
204
  dev
230
205
  } = this;
231
206
  const devHttpsOption = typeof dev === 'object' && dev.https;
232
-
233
207
  if (devHttpsOption) {
234
208
  const {
235
209
  genHttpsOptions
236
210
  } = require("../dev-tools/https");
237
-
238
211
  const httpsOptions = await genHttpsOptions(devHttpsOption);
239
212
  return (0, _https.createServer)(httpsOptions, handler);
240
213
  } else {
241
214
  return (0, _http.createServer)(handler);
242
215
  }
243
216
  }
244
-
245
- warmupSSRBundle() {// not warmup ssr bundle on development
217
+ warmupSSRBundle() {
218
+ // not warmup ssr bundle on development
246
219
  }
247
-
248
220
  onServerChange({
249
221
  filepath,
250
222
  event
@@ -255,11 +227,8 @@ class ModernDevServer extends _prodServer.ModernServer {
255
227
  const {
256
228
  mock
257
229
  } = _prodServer.AGGRED_DIR;
258
-
259
230
  const mockPath = _path.default.normalize(_path.default.join(pwd, mock));
260
-
261
231
  this.runner.reset();
262
-
263
232
  if (filepath.startsWith(mockPath)) {
264
233
  this.mockHandler = (0, _mock.createMockHandler)({
265
234
  pwd
@@ -269,11 +238,12 @@ class ModernDevServer extends _prodServer.ModernServer {
269
238
  const success = this.runner.onApiChange([{
270
239
  filename: filepath,
271
240
  event
272
- }]); // onApiChange 钩子被调用,且返回 true,则表示无需重新编译
241
+ }]);
242
+
243
+ // onApiChange 钩子被调用,且返回 true,则表示无需重新编译
273
244
  // onApiChange 的类型是 WaterFall,WaterFall 钩子的返回值类型目前有问题
274
245
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
275
246
  // @ts-expect-error
276
-
277
247
  if (success !== true) {
278
248
  super.onServerChange({
279
249
  filepath
@@ -284,13 +254,11 @@ class ModernDevServer extends _prodServer.ModernServer {
284
254
  }
285
255
  }
286
256
  }
287
-
288
257
  createContext(req, res) {
289
258
  return super.createContext(req, res, {
290
259
  etag: true
291
260
  });
292
261
  }
293
-
294
262
  async setupBeforeDevMiddleware() {
295
263
  const {
296
264
  runner,
@@ -301,7 +269,6 @@ class ModernDevServer extends _prodServer.ModernServer {
301
269
  const pluginMids = await runner.beforeDevServer(conf);
302
270
  return [...setupMids, ...pluginMids].flat();
303
271
  }
304
-
305
272
  async setupAfterDevMiddleware() {
306
273
  const {
307
274
  runner,
@@ -312,7 +279,6 @@ class ModernDevServer extends _prodServer.ModernServer {
312
279
  const pluginMids = await runner.afterDevServer(conf);
313
280
  return [...pluginMids, ...setupMids].flat();
314
281
  }
315
-
316
282
  cleanSSRCache() {
317
283
  const {
318
284
  distDir
@@ -320,20 +286,17 @@ class ModernDevServer extends _prodServer.ModernServer {
320
286
  const bundles = this.router.getBundles();
321
287
  bundles.forEach(bundle => {
322
288
  const filepath = _path.default.join(distDir, bundle);
323
-
324
289
  if (require.cache[filepath]) {
325
290
  delete require.cache[filepath];
326
291
  }
327
292
  });
328
-
329
293
  const loadable = _path.default.join(distDir, _constants.LOADABLE_STATS_FILE);
330
-
331
294
  if (require.cache[loadable]) {
332
295
  delete require.cache[loadable];
333
296
  }
334
297
  }
335
-
336
298
  startWatcher() {
299
+ var _this$conf$server;
337
300
  const {
338
301
  pwd
339
302
  } = this;
@@ -341,11 +304,12 @@ class ModernDevServer extends _prodServer.ModernServer {
341
304
  mock
342
305
  } = _prodServer.AGGRED_DIR;
343
306
  const defaultWatched = [`${mock}/**/*`, `${_utils.SERVER_DIR}/**/*`, `${_utils.API_DIR}/**`, `${_utils.SHARED_DIR}/**/*`];
344
- const watchOptions = (0, _watcher.mergeWatchOptions)(this.conf.server.watchOptions);
307
+ const watchOptions = (0, _watcher.mergeWatchOptions)((_this$conf$server = this.conf.server) === null || _this$conf$server === void 0 ? void 0 : _this$conf$server.watchOptions);
345
308
  const defaultWatchedPaths = defaultWatched.map(p => _path.default.normalize(_path.default.join(pwd, p)));
346
309
  const watcher = new _watcher.default();
347
- watcher.createDepTree(); // 监听文件变动,如果有变动则给 client,也就是 start 启动的插件发消息
310
+ watcher.createDepTree();
348
311
 
312
+ // 监听文件变动,如果有变动则给 client,也就是 start 启动的插件发消息
349
313
  watcher.listen(defaultWatchedPaths, watchOptions, (filepath, event) => {
350
314
  watcher.updateDepTree();
351
315
  watcher.cleanDepCache(filepath);
@@ -356,7 +320,5 @@ class ModernDevServer extends _prodServer.ModernServer {
356
320
  });
357
321
  this.watcher = watcher;
358
322
  }
359
-
360
323
  }
361
-
362
324
  exports.ModernDevServer = ModernDevServer;
@@ -4,24 +4,17 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.DevServer = void 0;
7
-
8
7
  var _prodServer = require("@modern-js/prod-server");
9
-
10
8
  var _devServer = require("./dev-server");
11
-
12
9
  const createDevServer = options => {
13
10
  return new _devServer.ModernDevServer(options);
14
11
  };
15
-
16
12
  class DevServer extends _prodServer.Server {
17
13
  constructor(options) {
18
14
  super(options);
19
-
20
15
  if (options.dev) {
21
16
  this.serverImpl = createDevServer;
22
17
  }
23
18
  }
24
-
25
19
  }
26
-
27
20
  exports.DevServer = DevServer;
@@ -11,8 +11,6 @@ export declare type MockApi = {
11
11
  };
12
12
  declare const createFunctionDataHandler: (method: string, handler: (req: IncomingMessage, res: ServerResponse, next: NextFunction) => void) => (context: ModernServerContext, next: NextFunction) => Promise<void>;
13
13
  declare const createStaticDataHandler: (method: string, handler: Record<string, any>) => (context: ModernServerContext) => void;
14
-
15
14
  declare const _default: (filepath: string) => MockApi[];
16
-
17
15
  export default _default;
18
16
  export declare const getMatched: (context: ModernServerContext, mockApiList: MockApi[]) => MockApi | undefined;