@modern-js/server 2.0.0-beta.4 → 2.0.0-beta.7

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 +99 -0
  2. package/dist/js/modern/dev-tools/dev-middleware/hmr-client/index.js +2 -2
  3. package/dist/js/modern/dev-tools/dev-middleware/index.js +22 -52
  4. package/dist/js/modern/dev-tools/https/index.js +19 -2
  5. package/dist/js/modern/index.js +1 -1
  6. package/dist/js/modern/server/dev-server.js +1 -2
  7. package/dist/js/node/constants.js +7 -3
  8. package/dist/js/node/dev-tools/dev-middleware/hmr-client/createSocketUrl.js +8 -3
  9. package/dist/js/node/dev-tools/dev-middleware/hmr-client/index.js +2 -2
  10. package/dist/js/node/dev-tools/dev-middleware/index.js +45 -75
  11. package/dist/js/node/dev-tools/dev-middleware/socket-server.js +5 -3
  12. package/dist/js/node/dev-tools/https/index.js +28 -13
  13. package/dist/js/node/dev-tools/mock/getMockData.js +29 -27
  14. package/dist/js/node/dev-tools/mock/index.js +13 -9
  15. package/dist/js/node/dev-tools/register/index.js +24 -22
  16. package/dist/js/node/dev-tools/watcher/dependency-tree.js +8 -3
  17. package/dist/js/node/dev-tools/watcher/index.js +23 -19
  18. package/dist/js/node/dev-tools/watcher/stats-cache.js +7 -3
  19. package/dist/js/node/index.js +8 -4
  20. package/dist/js/node/server/dev-server.js +39 -54
  21. package/dist/js/node/server/index.js +7 -3
  22. package/dist/js/node/types.js +15 -0
  23. package/dist/js/treeshaking/dev-tools/dev-middleware/hmr-client/index.js +156 -156
  24. package/dist/js/treeshaking/dev-tools/dev-middleware/index.js +23 -65
  25. package/dist/js/treeshaking/dev-tools/https/index.js +39 -7
  26. package/dist/js/treeshaking/index.js +1 -1
  27. package/dist/js/treeshaking/server/dev-server.js +1 -2
  28. package/dist/types/dev-tools/dev-middleware/index.d.ts +1 -8
  29. package/dist/types/dev-tools/https/index.d.ts +1 -1
  30. package/dist/types/types.d.ts +22 -5
  31. package/package.json +13 -10
  32. package/dist/js/modern/dev-tools/dev-middleware/dev-server-plugin.js +0 -32
  33. package/dist/js/node/dev-tools/dev-middleware/dev-server-plugin.js +0 -57
  34. package/dist/js/treeshaking/dev-tools/dev-middleware/dev-server-plugin.js +0 -74
  35. package/dist/types/dev-tools/dev-middleware/dev-server-plugin.d.ts +0 -8
  36. package/temp-fix-hmr.js +0 -483
@@ -1,157 +1,157 @@
1
1
  var __getOwnPropNames = Object.getOwnPropertyNames;
2
- var __commonJS = function(cb, mod) {
3
- return function __require() {
4
- return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = {
5
- exports: {}
6
- }).exports, mod), mod.exports;
7
- };
8
- };
9
- import stripAnsi from "@modern-js/utils/strip-ansi";
10
- import { formatWebpackMessages } from "@modern-js/utils/format";
11
- import { createSocketUrl } from "./createSocketUrl";
12
- var require_hmr_client = __commonJS({
13
- "src/dev-tools/dev-middleware/hmr-client/index.ts": function(exports, module) {
14
- var clearOutdatedErrors = function clearOutdatedErrors() {
15
- if (typeof console !== "undefined" && typeof console.clear === "function") {
16
- if (hasCompileErrors) {
17
- console.clear();
18
- }
19
- }
20
- };
21
- var handleSuccess = function handleSuccess() {
22
- clearOutdatedErrors();
23
- var isHotUpdate = !isFirstCompilation;
24
- isFirstCompilation = false;
25
- hasCompileErrors = false;
26
- if (isHotUpdate) {
27
- tryApplyUpdates();
28
- }
29
- };
30
- var handleWarnings = function handleWarnings(warnings) {
31
- clearOutdatedErrors();
32
- var isHotUpdate = !isFirstCompilation;
33
- isFirstCompilation = false;
34
- hasCompileErrors = false;
35
- function printWarnings() {
36
- var formatted = formatWebpackMessages({
37
- warnings: warnings,
38
- errors: []
39
- });
40
- if (typeof console !== "undefined" && typeof console.warn === "function") {
41
- for(var i = 0; i < formatted.warnings.length; i++){
42
- if (i === 5) {
43
- console.warn("There were more warnings in other files. You can find a complete log in the terminal.");
44
- break;
45
- }
46
- console.warn(stripAnsi(formatted.warnings[i]));
47
- }
48
- }
49
- }
50
- printWarnings();
51
- if (isHotUpdate) {
52
- tryApplyUpdates();
53
- }
54
- };
55
- var handleErrors = function handleErrors(errors) {
56
- clearOutdatedErrors();
57
- isFirstCompilation = false;
58
- hasCompileErrors = true;
59
- var formatted = formatWebpackMessages({
60
- errors: errors,
61
- warnings: []
62
- });
63
- if (typeof console !== "undefined" && typeof console.error === "function") {
64
- var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
65
- try {
66
- for(var _iterator = formatted.errors[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
67
- var error = _step.value;
68
- console.error(stripAnsi(error));
69
- }
70
- } catch (err) {
71
- _didIteratorError = true;
72
- _iteratorError = err;
73
- } finally{
74
- try {
75
- if (!_iteratorNormalCompletion && _iterator.return != null) {
76
- _iterator.return();
77
- }
78
- } finally{
79
- if (_didIteratorError) {
80
- throw _iteratorError;
81
- }
82
- }
83
- }
84
- }
85
- };
86
- var handleAvailableHash = function handleAvailableHash(hash) {
87
- mostRecentCompilationHash = hash;
88
- };
89
- var isUpdateAvailable = function isUpdateAvailable() {
90
- return mostRecentCompilationHash !== __webpack_hash__;
91
- };
92
- var canApplyUpdates = function canApplyUpdates() {
93
- return module.hot.status() === "idle";
94
- };
95
- var hadRuntimeError = false;
96
- var socketUrl = createSocketUrl(__resourceQuery);
97
- var connection = new WebSocket(socketUrl);
98
- connection.onclose = function() {
99
- if (typeof console !== "undefined" && typeof console.info === "function") {
100
- console.info("The development server has disconnected. Refresh the page if necessary.");
101
- }
102
- };
103
- var isFirstCompilation = true;
104
- var mostRecentCompilationHash = null;
105
- var hasCompileErrors = false;
106
- connection.onmessage = function(e) {
107
- var message = JSON.parse(e.data);
108
- switch(message.type){
109
- case "hash":
110
- handleAvailableHash(message.data);
111
- break;
112
- case "still-ok":
113
- case "ok":
114
- handleSuccess();
115
- break;
116
- case "content-changed":
117
- window.location.reload();
118
- break;
119
- case "warnings":
120
- handleWarnings(message.data);
121
- break;
122
- case "errors":
123
- handleErrors(message.data);
124
- break;
125
- default:
126
- }
127
- };
128
- function tryApplyUpdates() {
129
- if (!module.hot) {
130
- window.location.reload();
131
- return;
132
- }
133
- if (!isUpdateAvailable() || !canApplyUpdates()) {
134
- return;
135
- }
136
- function handleApplyUpdates(err, updatedModules) {
137
- var wantsForcedReload = err || !updatedModules || hadRuntimeError;
138
- if (wantsForcedReload) {
139
- window.location.reload();
140
- return;
141
- }
142
- if (isUpdateAvailable()) {
143
- tryApplyUpdates();
144
- }
145
- }
146
- var result = module.hot.check(true, handleApplyUpdates);
147
- if (result === null || result === void 0 ? void 0 : result.then) {
148
- result.then(function(updatedModules) {
149
- handleApplyUpdates(null, updatedModules);
150
- }, function(err) {
151
- handleApplyUpdates(err, null);
152
- });
153
- }
154
- }
155
- }
156
- });
157
- export default require_hmr_client();
2
+ var __commonJS = function(cb, mod) {
3
+ return function __require() {
4
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = {
5
+ exports: {}
6
+ }).exports, mod), mod.exports;
7
+ };
8
+ };
9
+ import stripAnsi from "@modern-js/utils/strip-ansi";
10
+ import { formatWebpackMessages } from "@modern-js/utils/format";
11
+ import { createSocketUrl } from "./createSocketUrl";
12
+ var require_hmr_client = __commonJS({
13
+ "src/dev-tools/dev-middleware/hmr-client/index.ts": function(exports, module) {
14
+ var clearOutdatedErrors = function clearOutdatedErrors() {
15
+ if (typeof console !== "undefined" && typeof console.clear === "function") {
16
+ if (hasCompileErrors) {
17
+ console.clear();
18
+ }
19
+ }
20
+ };
21
+ var handleSuccess = function handleSuccess() {
22
+ clearOutdatedErrors();
23
+ var isHotUpdate = !isFirstCompilation;
24
+ isFirstCompilation = false;
25
+ hasCompileErrors = false;
26
+ if (isHotUpdate) {
27
+ tryApplyUpdates();
28
+ }
29
+ };
30
+ var handleWarnings = function handleWarnings(warnings) {
31
+ clearOutdatedErrors();
32
+ var isHotUpdate = !isFirstCompilation;
33
+ isFirstCompilation = false;
34
+ hasCompileErrors = false;
35
+ function printWarnings() {
36
+ var formatted = formatWebpackMessages({
37
+ warnings: warnings,
38
+ errors: []
39
+ });
40
+ if (typeof console !== "undefined" && typeof console.warn === "function") {
41
+ for(var i = 0; i < formatted.warnings.length; i++){
42
+ if (i === 5) {
43
+ console.warn("There were more warnings in other files.\nYou can find a complete log in the terminal.");
44
+ break;
45
+ }
46
+ console.warn(stripAnsi(formatted.warnings[i]));
47
+ }
48
+ }
49
+ }
50
+ printWarnings();
51
+ if (isHotUpdate) {
52
+ tryApplyUpdates();
53
+ }
54
+ };
55
+ var handleErrors = function handleErrors(errors) {
56
+ clearOutdatedErrors();
57
+ isFirstCompilation = false;
58
+ hasCompileErrors = true;
59
+ var formatted = formatWebpackMessages({
60
+ errors: errors,
61
+ warnings: []
62
+ });
63
+ if (typeof console !== "undefined" && typeof console.error === "function") {
64
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
65
+ try {
66
+ for(var _iterator = formatted.errors[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
67
+ var error = _step.value;
68
+ console.error(stripAnsi(error));
69
+ }
70
+ } catch (err) {
71
+ _didIteratorError = true;
72
+ _iteratorError = err;
73
+ } finally{
74
+ try {
75
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
76
+ _iterator.return();
77
+ }
78
+ } finally{
79
+ if (_didIteratorError) {
80
+ throw _iteratorError;
81
+ }
82
+ }
83
+ }
84
+ }
85
+ };
86
+ var handleAvailableHash = function handleAvailableHash(hash) {
87
+ mostRecentCompilationHash = hash;
88
+ };
89
+ var isUpdateAvailable = function isUpdateAvailable() {
90
+ return mostRecentCompilationHash !== __webpack_hash__;
91
+ };
92
+ var canApplyUpdates = function canApplyUpdates() {
93
+ return module.hot.status() === "idle";
94
+ };
95
+ var hadRuntimeError = false;
96
+ var socketUrl = createSocketUrl(__resourceQuery);
97
+ var connection = new WebSocket(socketUrl);
98
+ connection.onclose = function() {
99
+ if (typeof console !== "undefined" && typeof console.info === "function") {
100
+ console.info("The development server has disconnected.\nRefresh the page if necessary.");
101
+ }
102
+ };
103
+ var isFirstCompilation = true;
104
+ var mostRecentCompilationHash = null;
105
+ var hasCompileErrors = false;
106
+ connection.onmessage = function(e) {
107
+ var message = JSON.parse(e.data);
108
+ switch(message.type){
109
+ case "hash":
110
+ handleAvailableHash(message.data);
111
+ break;
112
+ case "still-ok":
113
+ case "ok":
114
+ handleSuccess();
115
+ break;
116
+ case "content-changed":
117
+ window.location.reload();
118
+ break;
119
+ case "warnings":
120
+ handleWarnings(message.data);
121
+ break;
122
+ case "errors":
123
+ handleErrors(message.data);
124
+ break;
125
+ default:
126
+ }
127
+ };
128
+ function tryApplyUpdates() {
129
+ if (!module.hot) {
130
+ window.location.reload();
131
+ return;
132
+ }
133
+ if (!isUpdateAvailable() || !canApplyUpdates()) {
134
+ return;
135
+ }
136
+ function handleApplyUpdates(err, updatedModules) {
137
+ var wantsForcedReload = err || !updatedModules || hadRuntimeError;
138
+ if (wantsForcedReload) {
139
+ window.location.reload();
140
+ return;
141
+ }
142
+ if (isUpdateAvailable()) {
143
+ tryApplyUpdates();
144
+ }
145
+ }
146
+ var result = module.hot.check(true, handleApplyUpdates);
147
+ if (result === null || result === void 0 ? void 0 : result.then) {
148
+ result.then(function(updatedModules) {
149
+ handleApplyUpdates(null, updatedModules);
150
+ }, function(err) {
151
+ handleApplyUpdates(err, null);
152
+ });
153
+ }
154
+ }
155
+ }
156
+ });
157
+ export default require_hmr_client();
@@ -236,29 +236,30 @@ var __generator = this && this.__generator || function(thisArg, body) {
236
236
  }
237
237
  };
238
238
  import { EventEmitter } from "events";
239
- import webpackDevMiddleware from "@modern-js/utils/webpack-dev-middleware";
240
- import DevServerPlugin from "./dev-server-plugin";
241
239
  import SocketServer from "./socket-server";
242
240
  var noop = function() {};
241
+ function getHMRClientPath(client) {
242
+ var host = (client === null || client === void 0 ? void 0 : client.host) ? "&host=".concat(client.host) : "";
243
+ var path = (client === null || client === void 0 ? void 0 : client.path) ? "&path=".concat(client.path) : "";
244
+ var port = (client === null || client === void 0 ? void 0 : client.port) ? "&port=".concat(client.port) : "";
245
+ var clientEntry = "".concat(require.resolve("./hmr-client"), "?").concat(host).concat(path).concat(port);
246
+ return clientEntry;
247
+ }
243
248
  var DevMiddleware = /*#__PURE__*/ function(EventEmitter) {
244
249
  "use strict";
245
250
  _inherits(DevMiddleware, EventEmitter);
246
251
  var _super = _createSuper(DevMiddleware);
247
252
  function DevMiddleware(param) {
248
- var compiler = param.compiler, dev = param.dev, devMiddleware = param.devMiddleware;
253
+ var dev = param.dev, devMiddleware = param.devMiddleware;
249
254
  _classCallCheck(this, DevMiddleware);
250
255
  var _this;
251
256
  _this = _super.call(this);
252
257
  _defineProperty(_assertThisInitialized(_this), "middleware", void 0);
253
- _defineProperty(_assertThisInitialized(_this), "compiler", void 0);
254
258
  _defineProperty(_assertThisInitialized(_this), "devOptions", void 0);
255
259
  _defineProperty(_assertThisInitialized(_this), "socketServer", void 0);
256
- _this.compiler = compiler;
257
260
  _this.devOptions = dev;
258
261
  _this.socketServer = new SocketServer(dev);
259
- if (_this.compiler) {
260
- _this.setupDevServerPlugin();
261
- _this.setupHooks();
262
+ if (devMiddleware) {
262
263
  _this.middleware = _this.setupDevMiddleware(devMiddleware);
263
264
  }
264
265
  return _this;
@@ -284,22 +285,6 @@ var DevMiddleware = /*#__PURE__*/ function(EventEmitter) {
284
285
  }));
285
286
  }
286
287
  },
287
- {
288
- key: "setupDevServerPlugin",
289
- value: function setupDevServerPlugin() {
290
- var _this = this;
291
- var devOptions = this.devOptions;
292
- if (this.compiler.compilers) {
293
- this.compiler.compilers.forEach(function(target) {
294
- if (_this.isClientCompiler(target)) {
295
- new DevServerPlugin(devOptions).apply(target);
296
- }
297
- });
298
- } else {
299
- new DevServerPlugin(devOptions).apply(this.compiler);
300
- }
301
- }
302
- },
303
288
  {
304
289
  key: "sockWrite",
305
290
  value: function sockWrite(type, data) {
@@ -307,55 +292,28 @@ var DevMiddleware = /*#__PURE__*/ function(EventEmitter) {
307
292
  }
308
293
  },
309
294
  {
310
- key: "setupHooks",
311
- value: function setupHooks() {
295
+ key: "setupDevMiddleware",
296
+ value: function setupDevMiddleware(devMiddleware) {
312
297
  var _this = this;
313
- var invalidPlugin = function() {
314
- _this.socketServer.sockWrite("invalid");
315
- };
316
- var addHooks = function(compiler) {
317
- if (compiler.name === "server") {
318
- return;
319
- }
320
- var _hooks = compiler.hooks, compile = _hooks.compile, invalid = _hooks.invalid, done = _hooks.done;
321
- compile.tap("modern-dev-server", invalidPlugin);
322
- invalid.tap("modern-dev-server", invalidPlugin);
323
- done.tap("modern-dev-server", function(stats) {
298
+ var devOptions = this.devOptions;
299
+ var callbacks = {
300
+ onInvalid: function() {
301
+ _this.socketServer.sockWrite("invalid");
302
+ },
303
+ onDone: function(stats) {
324
304
  _this.socketServer.updateStats(stats);
325
305
  _this.emit("change", stats);
326
- });
306
+ }
327
307
  };
328
- if (this.compiler.compilers) {
329
- this.compiler.compilers.forEach(addHooks);
330
- } else {
331
- addHooks(this.compiler);
332
- }
333
- }
334
- },
335
- {
336
- key: "setupDevMiddleware",
337
- value: function setupDevMiddleware() {
338
- var devMiddleware = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : webpackDevMiddleware;
339
- var devOptions = this.devOptions;
340
- var middleware = devMiddleware(this.compiler, _objectSpread({
308
+ var enableHMR = this.devOptions.hot || this.devOptions.liveReload;
309
+ var middleware = devMiddleware(_objectSpread({
341
310
  headers: devOptions.headers,
342
- stats: false
311
+ stats: false,
312
+ callbacks: callbacks,
313
+ hmrClientPath: enableHMR ? getHMRClientPath(devOptions.client) : void 0
343
314
  }, devOptions.devMiddleware));
344
315
  return middleware;
345
316
  }
346
- },
347
- {
348
- key: "isClientCompiler",
349
- value: function isClientCompiler(compiler) {
350
- var target = compiler.options.target;
351
- if (target) {
352
- if (Array.isArray(target)) {
353
- return !target.includes("node");
354
- }
355
- return target !== "node";
356
- }
357
- return compiler.name === "client";
358
- }
359
317
  }
360
318
  ]);
361
319
  return DevMiddleware;
@@ -122,31 +122,63 @@ var __generator = this && this.__generator || function(thisArg, body) {
122
122
  };
123
123
  }
124
124
  };
125
- import * as devcert from "devcert";
125
+ import { chalk, getPackageManager, logger } from "@modern-js/utils";
126
126
  var genHttpsOptions = function() {
127
- var _ref = _asyncToGenerator(function(userOptions) {
128
- var httpsOptions, selfsign;
127
+ var _ref = _asyncToGenerator(function(userOptions, pwd) {
128
+ var httpsOptions, devcertPath, err, packageManager, command, devcert, selfsign;
129
129
  return __generator(this, function(_state) {
130
130
  switch(_state.label){
131
131
  case 0:
132
132
  httpsOptions = typeof userOptions === "boolean" ? {} : userOptions;
133
133
  if (!(!httpsOptions.key || !httpsOptions.cert)) return [
134
134
  3,
135
- 2
135
+ 6
136
136
  ];
137
+ _state.label = 1;
138
+ case 1:
139
+ _state.trys.push([
140
+ 1,
141
+ 2,
142
+ ,
143
+ 4
144
+ ]);
145
+ devcertPath = require.resolve("devcert", {
146
+ paths: [
147
+ pwd,
148
+ __dirname
149
+ ]
150
+ });
151
+ return [
152
+ 3,
153
+ 4
154
+ ];
155
+ case 2:
156
+ err = _state.sent();
157
+ return [
158
+ 4,
159
+ getPackageManager(pwd)
160
+ ];
161
+ case 3:
162
+ packageManager = _state.sent();
163
+ command = chalk.yellow.bold("".concat(packageManager, " install devcert@1.2.2 -D"));
164
+ logger.error('You have enabled "dev.https" option, but the "devcert" package is not installed.');
165
+ logger.error("Please run ".concat(command, " to install manually, otherwise the https can not work."));
166
+ throw new Error('[https] "devcert" is not found.');
167
+ case 4:
168
+ devcert = require(devcertPath);
137
169
  return [
138
170
  4,
139
171
  devcert.certificateFor([
140
172
  "localhost"
141
173
  ])
142
174
  ];
143
- case 1:
175
+ case 5:
144
176
  selfsign = _state.sent();
145
177
  return [
146
178
  2,
147
179
  selfsign
148
180
  ];
149
- case 2:
181
+ case 6:
150
182
  return [
151
183
  2,
152
184
  httpsOptions
@@ -154,7 +186,7 @@ var genHttpsOptions = function() {
154
186
  }
155
187
  });
156
188
  });
157
- return function genHttpsOptions(userOptions) {
189
+ return function genHttpsOptions(userOptions, pwd) {
158
190
  return _ref.apply(this, arguments);
159
191
  };
160
192
  }();
@@ -1,7 +1,7 @@
1
1
  import { DevServer as Server } from "./server";
2
2
  var src_default = function(options) {
3
3
  if (options == null) {
4
- throw new Error("can not start mserver without options");
4
+ throw new Error("can not start server without options");
5
5
  }
6
6
  var server = new Server(options);
7
7
  return server.init();
@@ -367,7 +367,6 @@ var ModernDevServer = /*#__PURE__*/ function(ModernServer) {
367
367
  _this.dev = _this.getDevOptions(options);
368
368
  _this.devMiddleware = new DevMiddleware({
369
369
  dev: _this.dev,
370
- compiler: options.compiler,
371
370
  devMiddleware: options.devMiddleware
372
371
  });
373
372
  enableRegister(_this.pwd, _this.conf);
@@ -628,7 +627,7 @@ var ModernDevServer = /*#__PURE__*/ function(ModernServer) {
628
627
  genHttpsOptions = require("../dev-tools/https").genHttpsOptions;
629
628
  return [
630
629
  4,
631
- genHttpsOptions(devHttpsOption)
630
+ genHttpsOptions(devHttpsOption, _this.pwd)
632
631
  ];
633
632
  case 1:
634
633
  httpsOptions = _state.sent();
@@ -2,28 +2,21 @@
2
2
  /// <reference types="node" />
3
3
  import { Server } from 'http';
4
4
  import { EventEmitter } from 'events';
5
- import { Compiler, MultiCompiler } from 'webpack';
6
- import { DevServerOptions, DevMiddlewareAPI, CustomDevMiddleware } from '../../types';
5
+ import { DevServerOptions, DevMiddlewareAPI, DevMiddleware as CustomDevMiddleware } from '../../types';
7
6
  declare type Options = {
8
- compiler: MultiCompiler | Compiler | null;
9
7
  dev: DevServerOptions;
10
8
  devMiddleware?: CustomDevMiddleware;
11
9
  };
12
10
  export default class DevMiddleware extends EventEmitter {
13
11
  middleware?: DevMiddlewareAPI;
14
- private compiler;
15
12
  private devOptions;
16
13
  private socketServer;
17
14
  constructor({
18
- compiler,
19
15
  dev,
20
16
  devMiddleware
21
17
  }: Options);
22
18
  init(app: Server): void;
23
- private setupDevServerPlugin;
24
19
  sockWrite(type: string, data?: Record<string, any> | string | boolean): void;
25
- private setupHooks;
26
20
  private setupDevMiddleware;
27
- private isClientCompiler;
28
21
  }
29
22
  export {};
@@ -1,6 +1,6 @@
1
1
  import type Buffer from 'buffer';
2
2
  import type { DevServerHttpsOptions } from '../../types';
3
- export declare const genHttpsOptions: (userOptions: DevServerHttpsOptions) => Promise<{
3
+ export declare const genHttpsOptions: (userOptions: DevServerHttpsOptions, pwd: string) => Promise<{
4
4
  key?: Buffer | string;
5
5
  cert?: Buffer | string;
6
6
  }>;
@@ -1,6 +1,5 @@
1
1
  /// <reference types="node" />
2
2
  import type { IncomingMessage, ServerResponse } from 'http';
3
- import type webpack from 'webpack';
4
3
  import type { DevServerOptions, DevServerHttpsOptions, NextFunction } from '@modern-js/types';
5
4
  import type { ModernServerOptions } from '@modern-js/prod-server';
6
5
  export type { DevServerOptions, DevServerHttpsOptions };
@@ -8,14 +7,32 @@ declare type Middleware = (req: IncomingMessage, res: ServerResponse, next: Next
8
7
  export declare type DevMiddlewareAPI = Middleware & {
9
8
  close: (callback: (err: Error | null | undefined) => void) => any;
10
9
  };
11
- export declare type CustomDevMiddleware = (compiler: webpack.MultiCompiler | webpack.Compiler, options: {
10
+ export declare type MiddlewareCallbacks = {
11
+ onInvalid: () => void;
12
+ onDone: (stats: any) => void;
13
+ };
14
+ export declare type DevMiddlewareOptions = {
15
+ /** To ensure HMR works, the devMiddleware need inject the hmr client path into page when HMR enable. */
16
+ hmrClientPath?: string;
17
+ /** The options need by compiler middleware (like webpackMiddleware) */
18
+
12
19
  headers?: Record<string, string>;
13
20
  writeToDisk?: boolean | ((filename: string) => boolean);
14
21
  stats?: boolean;
15
- }) => DevMiddlewareAPI;
22
+ /** should trigger when compiler hook called */
23
+
24
+ callbacks: MiddlewareCallbacks;
25
+ };
26
+ /**
27
+ * The modern/server do nothing about compiler, the devMiddleware need do such things to ensure dev works well:
28
+ * - Call compiler.watch (normally did by webpack-dev-middleware).
29
+ * - Inject the hmr client path into page (the hmr client modern/server already provide).
30
+ * - Notify server when compiler hooks are triggered.
31
+ */
32
+
33
+ export declare type DevMiddleware = (options: DevMiddlewareOptions) => DevMiddlewareAPI;
16
34
  export declare type ExtraOptions = {
17
35
  dev: boolean | Partial<DevServerOptions>;
18
- compiler: webpack.MultiCompiler | webpack.Compiler | null;
19
- devMiddleware?: CustomDevMiddleware;
36
+ devMiddleware?: DevMiddleware;
20
37
  };
21
38
  export declare type ModernDevServerOptions = ModernServerOptions & ExtraOptions;