webpack-dev-server 4.4.0 → 4.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -3
- package/bin/cli-flags.js +32 -6
- package/client/index.js +0 -2
- package/client/modules/sockjs-client/index.js +18 -16
- package/lib/Server.js +59 -24
- package/lib/options.json +8 -7
- package/package.json +6 -4
package/README.md
CHANGED
|
@@ -109,8 +109,9 @@ Options:
|
|
|
109
109
|
--client-web-socket-url-protocol <value> Tells clients connected to devServer to use the provided protocol.
|
|
110
110
|
--client-web-socket-url-username <value> Tells clients connected to devServer to use the provided username to authenticate.
|
|
111
111
|
--client-web-socket-url-password <value> Tells clients connected to devServer to use the provided password to authenticate.
|
|
112
|
-
--web-socket-server <value> Allows to set web socket server and options (by default 'ws').
|
|
112
|
+
--web-socket-server <value> Deprecated: please use 'webSocketServer.type'/'--web-socket-server-type' option. Allows to set web socket server and options (by default 'ws').
|
|
113
113
|
--no-web-socket-server Negative 'web-socket-server' option.
|
|
114
|
+
--web-socket-server-type <value> Allows to set web socket server and options (by default 'ws').
|
|
114
115
|
--compress Enables gzip compression for everything served.
|
|
115
116
|
--no-compress Disables gzip compression for everything served.
|
|
116
117
|
--history-api-fallback Allows to proxy requests through a specified index page (by default 'index.html'), useful for Single Page Applications that utilise the HTML5 History API.
|
|
@@ -118,9 +119,10 @@ Options:
|
|
|
118
119
|
--host <value> Allows to specify a hostname to use.
|
|
119
120
|
--hot [value] Enables Hot Module Replacement.
|
|
120
121
|
--no-hot Disables Hot Module Replacement.
|
|
121
|
-
--http2 Allows to serve over HTTP/2 using SPDY.
|
|
122
|
+
--http2 Allows to serve over HTTP/2 using SPDY. Deprecated, it will be removed in favor of the `server` option.
|
|
122
123
|
--no-http2 Does not serve over HTTP/2 using SPDY.
|
|
123
|
-
|
|
124
|
+
--https Allows to configure the server's listening socket for TLS (by default, dev server will be served over HTTP). Deprecated, it will be removed in favor
|
|
125
|
+
of the `server` option.
|
|
124
126
|
--no-https Disallows to configure the server's listening socket for TLS (by default, dev server will be served over HTTP).
|
|
125
127
|
--https-passphrase <value> Passphrase for a pfx file. Deprecated, it will be removed in favor of the `server.options.passphrase` option.
|
|
126
128
|
--https-request-cert Request for an SSL certificate. Deprecated, it will be removed in favor of the `server.options.requestCert`
|
package/bin/cli-flags.js
CHANGED
|
@@ -321,7 +321,7 @@ module.exports = {
|
|
|
321
321
|
configs: [
|
|
322
322
|
{
|
|
323
323
|
description:
|
|
324
|
-
"
|
|
324
|
+
"Deprecated: please use 'webSocketServer.type'/'--web-socket-server-type' option.",
|
|
325
325
|
multiple: false,
|
|
326
326
|
path: "webSocketServer",
|
|
327
327
|
type: "enum",
|
|
@@ -329,7 +329,7 @@ module.exports = {
|
|
|
329
329
|
},
|
|
330
330
|
{
|
|
331
331
|
description:
|
|
332
|
-
"
|
|
332
|
+
"Deprecated: please use 'webSocketServer.type'/'--web-socket-server-type' option.",
|
|
333
333
|
multiple: false,
|
|
334
334
|
path: "webSocketServer",
|
|
335
335
|
type: "enum",
|
|
@@ -344,6 +344,30 @@ module.exports = {
|
|
|
344
344
|
},
|
|
345
345
|
],
|
|
346
346
|
|
|
347
|
+
description:
|
|
348
|
+
"Deprecated: please use 'webSocketServer.type'/'--web-socket-server-type' option. Allows to set web socket server and options (by default 'ws').",
|
|
349
|
+
simpleType: "string",
|
|
350
|
+
multiple: false,
|
|
351
|
+
},
|
|
352
|
+
"web-socket-server-type": {
|
|
353
|
+
configs: [
|
|
354
|
+
{
|
|
355
|
+
description:
|
|
356
|
+
"Allows to set web socket server and options (by default 'ws').",
|
|
357
|
+
multiple: false,
|
|
358
|
+
path: "webSocketServer.type",
|
|
359
|
+
type: "enum",
|
|
360
|
+
values: ["sockjs", "ws"],
|
|
361
|
+
},
|
|
362
|
+
{
|
|
363
|
+
description:
|
|
364
|
+
"Allows to set web socket server and options (by default 'ws').",
|
|
365
|
+
multiple: false,
|
|
366
|
+
path: "webSocketServer.type",
|
|
367
|
+
type: "string",
|
|
368
|
+
},
|
|
369
|
+
],
|
|
370
|
+
|
|
347
371
|
description:
|
|
348
372
|
"Allows to set web socket server and options (by default 'ws').",
|
|
349
373
|
simpleType: "string",
|
|
@@ -424,11 +448,13 @@ module.exports = {
|
|
|
424
448
|
{
|
|
425
449
|
type: "boolean",
|
|
426
450
|
multiple: false,
|
|
427
|
-
description:
|
|
451
|
+
description:
|
|
452
|
+
"Allows to serve over HTTP/2 using SPDY. Deprecated, it will be removed in favor of the `server` option.",
|
|
428
453
|
path: "http2",
|
|
429
454
|
},
|
|
430
455
|
],
|
|
431
|
-
description:
|
|
456
|
+
description:
|
|
457
|
+
"Allows to serve over HTTP/2 using SPDY. Deprecated, it will be removed in favor of the `server` option.",
|
|
432
458
|
negatedDescription: "Does not serve over HTTP/2 using SPDY.",
|
|
433
459
|
simpleType: "boolean",
|
|
434
460
|
multiple: false,
|
|
@@ -439,12 +465,12 @@ module.exports = {
|
|
|
439
465
|
type: "boolean",
|
|
440
466
|
multiple: false,
|
|
441
467
|
description:
|
|
442
|
-
"Allows to configure the server's listening socket for TLS (by default, dev server will be served over HTTP).",
|
|
468
|
+
"Allows to configure the server's listening socket for TLS (by default, dev server will be served over HTTP). Deprecated, it will be removed in favor of the `server` option.",
|
|
443
469
|
path: "https",
|
|
444
470
|
},
|
|
445
471
|
],
|
|
446
472
|
description:
|
|
447
|
-
"Allows to configure the server's listening socket for TLS (by default, dev server will be served over HTTP).",
|
|
473
|
+
"Allows to configure the server's listening socket for TLS (by default, dev server will be served over HTTP). Deprecated, it will be removed in favor of the `server` option.",
|
|
448
474
|
negatedDescription:
|
|
449
475
|
"Disallows to configure the server's listening socket for TLS (by default, dev server will be served over HTTP).",
|
|
450
476
|
simpleType: "boolean",
|
package/client/index.js
CHANGED
|
@@ -1880,7 +1880,7 @@ module.exports = function (SockJS, availableTransports) {
|
|
|
1880
1880
|
"use strict";
|
|
1881
1881
|
|
|
1882
1882
|
|
|
1883
|
-
var EventEmitter = __webpack_require__(/*! events */ "./node_modules/sockjs-client/lib/event/emitter.js").EventEmitter,
|
|
1883
|
+
var EventEmitter = (__webpack_require__(/*! events */ "./node_modules/sockjs-client/lib/event/emitter.js").EventEmitter),
|
|
1884
1884
|
inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits_browser.js"),
|
|
1885
1885
|
JSON3 = __webpack_require__(/*! json3 */ "./node_modules/json3/lib/json3.js"),
|
|
1886
1886
|
objectUtils = __webpack_require__(/*! ./utils/object */ "./node_modules/sockjs-client/lib/utils/object.js");
|
|
@@ -1941,7 +1941,7 @@ module.exports = InfoAjax;
|
|
|
1941
1941
|
|
|
1942
1942
|
|
|
1943
1943
|
var inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits_browser.js"),
|
|
1944
|
-
EventEmitter = __webpack_require__(/*! events */ "./node_modules/sockjs-client/lib/event/emitter.js").EventEmitter,
|
|
1944
|
+
EventEmitter = (__webpack_require__(/*! events */ "./node_modules/sockjs-client/lib/event/emitter.js").EventEmitter),
|
|
1945
1945
|
JSON3 = __webpack_require__(/*! json3 */ "./node_modules/json3/lib/json3.js"),
|
|
1946
1946
|
XHRLocalObject = __webpack_require__(/*! ./transport/sender/xhr-local */ "./node_modules/sockjs-client/lib/transport/sender/xhr-local.js"),
|
|
1947
1947
|
InfoAjax = __webpack_require__(/*! ./info-ajax */ "./node_modules/sockjs-client/lib/info-ajax.js");
|
|
@@ -1981,7 +1981,7 @@ module.exports = InfoReceiverIframe;
|
|
|
1981
1981
|
"use strict";
|
|
1982
1982
|
|
|
1983
1983
|
|
|
1984
|
-
var EventEmitter = __webpack_require__(/*! events */ "./node_modules/sockjs-client/lib/event/emitter.js").EventEmitter,
|
|
1984
|
+
var EventEmitter = (__webpack_require__(/*! events */ "./node_modules/sockjs-client/lib/event/emitter.js").EventEmitter),
|
|
1985
1985
|
inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits_browser.js"),
|
|
1986
1986
|
JSON3 = __webpack_require__(/*! json3 */ "./node_modules/json3/lib/json3.js"),
|
|
1987
1987
|
utils = __webpack_require__(/*! ./utils/event */ "./node_modules/sockjs-client/lib/utils/event.js"),
|
|
@@ -2062,7 +2062,7 @@ module.exports = InfoIframe;
|
|
|
2062
2062
|
"use strict";
|
|
2063
2063
|
|
|
2064
2064
|
|
|
2065
|
-
var EventEmitter = __webpack_require__(/*! events */ "./node_modules/sockjs-client/lib/event/emitter.js").EventEmitter,
|
|
2065
|
+
var EventEmitter = (__webpack_require__(/*! events */ "./node_modules/sockjs-client/lib/event/emitter.js").EventEmitter),
|
|
2066
2066
|
inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits_browser.js"),
|
|
2067
2067
|
urlUtils = __webpack_require__(/*! ./utils/url */ "./node_modules/sockjs-client/lib/utils/url.js"),
|
|
2068
2068
|
XDR = __webpack_require__(/*! ./transport/sender/xdr */ "./node_modules/sockjs-client/lib/transport/sender/xdr.js"),
|
|
@@ -3087,7 +3087,7 @@ __webpack_require__(/*! ./transport/websocket */ "./node_modules/sockjs-client/l
|
|
|
3087
3087
|
"use strict";
|
|
3088
3088
|
|
|
3089
3089
|
|
|
3090
|
-
var EventEmitter = __webpack_require__(/*! events */ "./node_modules/sockjs-client/lib/event/emitter.js").EventEmitter,
|
|
3090
|
+
var EventEmitter = (__webpack_require__(/*! events */ "./node_modules/sockjs-client/lib/event/emitter.js").EventEmitter),
|
|
3091
3091
|
inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits_browser.js"),
|
|
3092
3092
|
utils = __webpack_require__(/*! ../../utils/event */ "./node_modules/sockjs-client/lib/utils/event.js"),
|
|
3093
3093
|
urlUtils = __webpack_require__(/*! ../../utils/url */ "./node_modules/sockjs-client/lib/utils/url.js"),
|
|
@@ -3416,7 +3416,7 @@ module.exports = HtmlFileTransport;
|
|
|
3416
3416
|
|
|
3417
3417
|
var inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits_browser.js"),
|
|
3418
3418
|
JSON3 = __webpack_require__(/*! json3 */ "./node_modules/json3/lib/json3.js"),
|
|
3419
|
-
EventEmitter = __webpack_require__(/*! events */ "./node_modules/sockjs-client/lib/event/emitter.js").EventEmitter,
|
|
3419
|
+
EventEmitter = (__webpack_require__(/*! events */ "./node_modules/sockjs-client/lib/event/emitter.js").EventEmitter),
|
|
3420
3420
|
version = __webpack_require__(/*! ../version */ "./node_modules/sockjs-client/lib/version.js"),
|
|
3421
3421
|
urlUtils = __webpack_require__(/*! ../utils/url */ "./node_modules/sockjs-client/lib/utils/url.js"),
|
|
3422
3422
|
iframeUtils = __webpack_require__(/*! ../utils/iframe */ "./node_modules/sockjs-client/lib/utils/iframe.js"),
|
|
@@ -3660,7 +3660,7 @@ module.exports = AjaxBasedTransport;
|
|
|
3660
3660
|
|
|
3661
3661
|
|
|
3662
3662
|
var inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits_browser.js"),
|
|
3663
|
-
EventEmitter = __webpack_require__(/*! events */ "./node_modules/sockjs-client/lib/event/emitter.js").EventEmitter;
|
|
3663
|
+
EventEmitter = (__webpack_require__(/*! events */ "./node_modules/sockjs-client/lib/event/emitter.js").EventEmitter);
|
|
3664
3664
|
|
|
3665
3665
|
var debug = function debug() {};
|
|
3666
3666
|
|
|
@@ -3804,7 +3804,7 @@ module.exports = function (transport) {
|
|
|
3804
3804
|
|
|
3805
3805
|
|
|
3806
3806
|
var inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits_browser.js"),
|
|
3807
|
-
EventEmitter = __webpack_require__(/*! events */ "./node_modules/sockjs-client/lib/event/emitter.js").EventEmitter;
|
|
3807
|
+
EventEmitter = (__webpack_require__(/*! events */ "./node_modules/sockjs-client/lib/event/emitter.js").EventEmitter);
|
|
3808
3808
|
|
|
3809
3809
|
var debug = function debug() {};
|
|
3810
3810
|
|
|
@@ -3926,7 +3926,7 @@ module.exports = SenderReceiver;
|
|
|
3926
3926
|
|
|
3927
3927
|
|
|
3928
3928
|
var inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits_browser.js"),
|
|
3929
|
-
EventEmitter = __webpack_require__(/*! events */ "./node_modules/sockjs-client/lib/event/emitter.js").EventEmitter,
|
|
3929
|
+
EventEmitter = (__webpack_require__(/*! events */ "./node_modules/sockjs-client/lib/event/emitter.js").EventEmitter),
|
|
3930
3930
|
EventSourceDriver = __webpack_require__(/*! eventsource */ "./node_modules/sockjs-client/lib/transport/browser/eventsource.js");
|
|
3931
3931
|
|
|
3932
3932
|
var debug = function debug() {};
|
|
@@ -4007,7 +4007,7 @@ module.exports = EventSourceReceiver;
|
|
|
4007
4007
|
var inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits_browser.js"),
|
|
4008
4008
|
iframeUtils = __webpack_require__(/*! ../../utils/iframe */ "./node_modules/sockjs-client/lib/utils/iframe.js"),
|
|
4009
4009
|
urlUtils = __webpack_require__(/*! ../../utils/url */ "./node_modules/sockjs-client/lib/utils/url.js"),
|
|
4010
|
-
EventEmitter = __webpack_require__(/*! events */ "./node_modules/sockjs-client/lib/event/emitter.js").EventEmitter,
|
|
4010
|
+
EventEmitter = (__webpack_require__(/*! events */ "./node_modules/sockjs-client/lib/event/emitter.js").EventEmitter),
|
|
4011
4011
|
random = __webpack_require__(/*! ../../utils/random */ "./node_modules/sockjs-client/lib/utils/random.js");
|
|
4012
4012
|
|
|
4013
4013
|
var debug = function debug() {};
|
|
@@ -4108,7 +4108,7 @@ var utils = __webpack_require__(/*! ../../utils/iframe */ "./node_modules/sockjs
|
|
|
4108
4108
|
browser = __webpack_require__(/*! ../../utils/browser */ "./node_modules/sockjs-client/lib/utils/browser.js"),
|
|
4109
4109
|
urlUtils = __webpack_require__(/*! ../../utils/url */ "./node_modules/sockjs-client/lib/utils/url.js"),
|
|
4110
4110
|
inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits_browser.js"),
|
|
4111
|
-
EventEmitter = __webpack_require__(/*! events */ "./node_modules/sockjs-client/lib/event/emitter.js").EventEmitter;
|
|
4111
|
+
EventEmitter = (__webpack_require__(/*! events */ "./node_modules/sockjs-client/lib/event/emitter.js").EventEmitter);
|
|
4112
4112
|
|
|
4113
4113
|
var debug = function debug() {};
|
|
4114
4114
|
|
|
@@ -4312,7 +4312,7 @@ module.exports = JsonpReceiver;
|
|
|
4312
4312
|
|
|
4313
4313
|
|
|
4314
4314
|
var inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits_browser.js"),
|
|
4315
|
-
EventEmitter = __webpack_require__(/*! events */ "./node_modules/sockjs-client/lib/event/emitter.js").EventEmitter;
|
|
4315
|
+
EventEmitter = (__webpack_require__(/*! events */ "./node_modules/sockjs-client/lib/event/emitter.js").EventEmitter);
|
|
4316
4316
|
|
|
4317
4317
|
var debug = function debug() {};
|
|
4318
4318
|
|
|
@@ -4514,7 +4514,7 @@ module.exports = function (url, payload, callback) {
|
|
|
4514
4514
|
"use strict";
|
|
4515
4515
|
|
|
4516
4516
|
|
|
4517
|
-
var EventEmitter = __webpack_require__(/*! events */ "./node_modules/sockjs-client/lib/event/emitter.js").EventEmitter,
|
|
4517
|
+
var EventEmitter = (__webpack_require__(/*! events */ "./node_modules/sockjs-client/lib/event/emitter.js").EventEmitter),
|
|
4518
4518
|
inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits_browser.js"),
|
|
4519
4519
|
eventUtils = __webpack_require__(/*! ../../utils/event */ "./node_modules/sockjs-client/lib/utils/event.js"),
|
|
4520
4520
|
browser = __webpack_require__(/*! ../../utils/browser */ "./node_modules/sockjs-client/lib/utils/browser.js"),
|
|
@@ -4660,10 +4660,12 @@ module.exports = XHRCorsObject;
|
|
|
4660
4660
|
"use strict";
|
|
4661
4661
|
|
|
4662
4662
|
|
|
4663
|
-
var EventEmitter = __webpack_require__(/*! events */ "./node_modules/sockjs-client/lib/event/emitter.js").EventEmitter,
|
|
4663
|
+
var EventEmitter = (__webpack_require__(/*! events */ "./node_modules/sockjs-client/lib/event/emitter.js").EventEmitter),
|
|
4664
4664
|
inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits_browser.js");
|
|
4665
4665
|
|
|
4666
|
-
function
|
|
4666
|
+
function
|
|
4667
|
+
/* method, url, payload, opts */
|
|
4668
|
+
XHRFake() {
|
|
4667
4669
|
var self = this;
|
|
4668
4670
|
EventEmitter.call(this);
|
|
4669
4671
|
this.to = setTimeout(function () {
|
|
@@ -4720,7 +4722,7 @@ module.exports = XHRLocalObject;
|
|
|
4720
4722
|
var utils = __webpack_require__(/*! ../utils/event */ "./node_modules/sockjs-client/lib/utils/event.js"),
|
|
4721
4723
|
urlUtils = __webpack_require__(/*! ../utils/url */ "./node_modules/sockjs-client/lib/utils/url.js"),
|
|
4722
4724
|
inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits_browser.js"),
|
|
4723
|
-
EventEmitter = __webpack_require__(/*! events */ "./node_modules/sockjs-client/lib/event/emitter.js").EventEmitter,
|
|
4725
|
+
EventEmitter = (__webpack_require__(/*! events */ "./node_modules/sockjs-client/lib/event/emitter.js").EventEmitter),
|
|
4724
4726
|
WebsocketDriver = __webpack_require__(/*! ./driver/websocket */ "./node_modules/sockjs-client/lib/transport/browser/websocket.js");
|
|
4725
4727
|
|
|
4726
4728
|
var debug = function debug() {};
|
package/lib/Server.js
CHANGED
|
@@ -32,6 +32,7 @@ class Server {
|
|
|
32
32
|
|
|
33
33
|
this.options = options;
|
|
34
34
|
this.staticWatchers = [];
|
|
35
|
+
this.listeners = [];
|
|
35
36
|
// Keep track of websocket proxies for external websocket upgrade.
|
|
36
37
|
this.webSocketProxies = [];
|
|
37
38
|
this.sockets = [];
|
|
@@ -523,6 +524,17 @@ class Server {
|
|
|
523
524
|
const isHTTPs = Boolean(options.https);
|
|
524
525
|
const isSPDY = Boolean(options.http2);
|
|
525
526
|
|
|
527
|
+
if (isHTTPs || isSPDY) {
|
|
528
|
+
// TODO: remove in the next major release
|
|
529
|
+
util.deprecate(
|
|
530
|
+
() => {},
|
|
531
|
+
`'${
|
|
532
|
+
isHTTPs ? "https" : "http2"
|
|
533
|
+
}' option is deprecated. Please use the 'server' option.`,
|
|
534
|
+
`DEP_WEBPACK_DEV_SERVER_${isHTTPs ? "HTTPS" : "HTTP2"}`
|
|
535
|
+
)();
|
|
536
|
+
}
|
|
537
|
+
|
|
526
538
|
options.server = {
|
|
527
539
|
type:
|
|
528
540
|
// eslint-disable-next-line no-nested-ternary
|
|
@@ -1157,15 +1169,11 @@ class Server {
|
|
|
1157
1169
|
|
|
1158
1170
|
let needForceShutdown = false;
|
|
1159
1171
|
|
|
1160
|
-
const exitProcess = () => {
|
|
1161
|
-
// eslint-disable-next-line no-process-exit
|
|
1162
|
-
process.exit();
|
|
1163
|
-
};
|
|
1164
|
-
|
|
1165
1172
|
signals.forEach((signal) => {
|
|
1166
|
-
|
|
1173
|
+
const listener = () => {
|
|
1167
1174
|
if (needForceShutdown) {
|
|
1168
|
-
|
|
1175
|
+
// eslint-disable-next-line no-process-exit
|
|
1176
|
+
process.exit();
|
|
1169
1177
|
}
|
|
1170
1178
|
|
|
1171
1179
|
this.logger.info(
|
|
@@ -1176,19 +1184,26 @@ class Server {
|
|
|
1176
1184
|
|
|
1177
1185
|
this.stopCallback(() => {
|
|
1178
1186
|
if (typeof this.compiler.close === "function") {
|
|
1179
|
-
this.compiler.close(
|
|
1187
|
+
this.compiler.close(() => {
|
|
1188
|
+
// eslint-disable-next-line no-process-exit
|
|
1189
|
+
process.exit();
|
|
1190
|
+
});
|
|
1180
1191
|
} else {
|
|
1181
|
-
|
|
1192
|
+
// eslint-disable-next-line no-process-exit
|
|
1193
|
+
process.exit();
|
|
1182
1194
|
}
|
|
1183
1195
|
});
|
|
1184
|
-
}
|
|
1196
|
+
};
|
|
1197
|
+
|
|
1198
|
+
this.listeners.push({ name: signal, listener });
|
|
1199
|
+
|
|
1200
|
+
process.on(signal, listener);
|
|
1185
1201
|
});
|
|
1186
1202
|
}
|
|
1187
1203
|
|
|
1188
1204
|
// Proxy WebSocket without the initial http request
|
|
1189
1205
|
// https://github.com/chimurai/http-proxy-middleware#external-websocket-upgrade
|
|
1190
|
-
|
|
1191
|
-
this.webSocketProxies.forEach(function (webSocketProxy) {
|
|
1206
|
+
this.webSocketProxies.forEach((webSocketProxy) => {
|
|
1192
1207
|
this.server.on("upgrade", webSocketProxy.upgrade);
|
|
1193
1208
|
}, this);
|
|
1194
1209
|
}
|
|
@@ -1608,6 +1623,7 @@ class Server {
|
|
|
1608
1623
|
});
|
|
1609
1624
|
}
|
|
1610
1625
|
|
|
1626
|
+
// TODO: remove `--web-socket-server` in favor of `--web-socket-server-type`
|
|
1611
1627
|
createWebSocketServer() {
|
|
1612
1628
|
this.webSocketServer = new (this.getServerTransport())(this);
|
|
1613
1629
|
this.webSocketServer.implementation.on("connection", (client, request) => {
|
|
@@ -1633,7 +1649,9 @@ class Server {
|
|
|
1633
1649
|
) {
|
|
1634
1650
|
this.sendMessage([client], "error", "Invalid Host/Origin header");
|
|
1635
1651
|
|
|
1636
|
-
|
|
1652
|
+
// With https enabled, the sendMessage above is encrypted asynchronously so not yet sent
|
|
1653
|
+
// Terminate would prevent it sending, so use close to allow it to be sent
|
|
1654
|
+
client.close();
|
|
1637
1655
|
|
|
1638
1656
|
return;
|
|
1639
1657
|
}
|
|
@@ -1701,22 +1719,25 @@ class Server {
|
|
|
1701
1719
|
);
|
|
1702
1720
|
}
|
|
1703
1721
|
|
|
1704
|
-
|
|
1705
|
-
|
|
1722
|
+
stopBonjour(callback = () => {}) {
|
|
1723
|
+
this.bonjour.unpublishAll(() => {
|
|
1724
|
+
this.bonjour.destroy();
|
|
1725
|
+
|
|
1726
|
+
if (callback) {
|
|
1727
|
+
callback();
|
|
1728
|
+
}
|
|
1729
|
+
});
|
|
1730
|
+
}
|
|
1706
1731
|
|
|
1707
|
-
|
|
1732
|
+
runBonjour() {
|
|
1733
|
+
this.bonjour = require("bonjour")();
|
|
1734
|
+
this.bonjour.publish({
|
|
1708
1735
|
name: `Webpack Dev Server ${os.hostname()}:${this.options.port}`,
|
|
1709
1736
|
port: this.options.port,
|
|
1710
1737
|
type: this.options.server.type === "http" ? "http" : "https",
|
|
1711
1738
|
subtypes: ["webpack"],
|
|
1712
1739
|
...this.options.bonjour,
|
|
1713
1740
|
});
|
|
1714
|
-
|
|
1715
|
-
process.on("exit", () => {
|
|
1716
|
-
bonjour.unpublishAll(() => {
|
|
1717
|
-
bonjour.destroy();
|
|
1718
|
-
});
|
|
1719
|
-
});
|
|
1720
1741
|
}
|
|
1721
1742
|
|
|
1722
1743
|
logStatus() {
|
|
@@ -2187,13 +2208,21 @@ class Server {
|
|
|
2187
2208
|
}
|
|
2188
2209
|
}
|
|
2189
2210
|
|
|
2190
|
-
startCallback(callback) {
|
|
2211
|
+
startCallback(callback = () => {}) {
|
|
2191
2212
|
this.start()
|
|
2192
2213
|
.then(() => callback(null), callback)
|
|
2193
2214
|
.catch(callback);
|
|
2194
2215
|
}
|
|
2195
2216
|
|
|
2196
2217
|
async stop() {
|
|
2218
|
+
if (this.bonjour) {
|
|
2219
|
+
await new Promise((resolve) => {
|
|
2220
|
+
this.stopBonjour(() => {
|
|
2221
|
+
resolve();
|
|
2222
|
+
});
|
|
2223
|
+
});
|
|
2224
|
+
}
|
|
2225
|
+
|
|
2197
2226
|
this.webSocketProxies = [];
|
|
2198
2227
|
|
|
2199
2228
|
await Promise.all(this.staticWatchers.map((watcher) => watcher.close()));
|
|
@@ -2247,9 +2276,15 @@ class Server {
|
|
|
2247
2276
|
this.middleware = null;
|
|
2248
2277
|
}
|
|
2249
2278
|
}
|
|
2279
|
+
|
|
2280
|
+
// We add listeners to signals when creating a new Server instance
|
|
2281
|
+
// So ensure they are removed to prevent EventEmitter memory leak warnings
|
|
2282
|
+
for (const item of this.listeners) {
|
|
2283
|
+
process.removeListener(item.name, item.listener);
|
|
2284
|
+
}
|
|
2250
2285
|
}
|
|
2251
2286
|
|
|
2252
|
-
stopCallback(callback) {
|
|
2287
|
+
stopCallback(callback = () => {}) {
|
|
2253
2288
|
this.stop()
|
|
2254
2289
|
.then(() => callback(null), callback)
|
|
2255
2290
|
.catch(callback);
|
package/lib/options.json
CHANGED
|
@@ -207,7 +207,7 @@
|
|
|
207
207
|
},
|
|
208
208
|
"HTTP2": {
|
|
209
209
|
"type": "boolean",
|
|
210
|
-
"description": "Allows to serve over HTTP/2 using SPDY.",
|
|
210
|
+
"description": "Allows to serve over HTTP/2 using SPDY. Deprecated, it will be removed in favor of the `server` option.",
|
|
211
211
|
"link": "https://webpack.js.org/configuration/dev-server/#devserverhttp2"
|
|
212
212
|
},
|
|
213
213
|
"HTTPS": {
|
|
@@ -382,7 +382,7 @@
|
|
|
382
382
|
}
|
|
383
383
|
}
|
|
384
384
|
],
|
|
385
|
-
"description": "Allows to configure the server's listening socket for TLS (by default, dev server will be served over HTTP).",
|
|
385
|
+
"description": "Allows to configure the server's listening socket for TLS (by default, dev server will be served over HTTP). Deprecated, it will be removed in favor of the `server` option.",
|
|
386
386
|
"link": "https://webpack.js.org/configuration/dev-server/#devserverhttps"
|
|
387
387
|
},
|
|
388
388
|
"HeaderObject": {
|
|
@@ -1026,16 +1026,14 @@
|
|
|
1026
1026
|
{
|
|
1027
1027
|
"$ref": "#/definitions/WebSocketServerType"
|
|
1028
1028
|
}
|
|
1029
|
-
]
|
|
1029
|
+
],
|
|
1030
|
+
"description": "Deprecated: please use 'webSocketServer.type'/'--web-socket-server-type' option."
|
|
1030
1031
|
},
|
|
1031
1032
|
"WebSocketServerFunction": {
|
|
1032
1033
|
"instanceof": "Function"
|
|
1033
1034
|
},
|
|
1034
1035
|
"WebSocketServerObject": {
|
|
1035
1036
|
"type": "object",
|
|
1036
|
-
"cli": {
|
|
1037
|
-
"exclude": true
|
|
1038
|
-
},
|
|
1039
1037
|
"properties": {
|
|
1040
1038
|
"type": {
|
|
1041
1039
|
"anyOf": [
|
|
@@ -1052,7 +1050,10 @@
|
|
|
1052
1050
|
},
|
|
1053
1051
|
"options": {
|
|
1054
1052
|
"type": "object",
|
|
1055
|
-
"additionalProperties": true
|
|
1053
|
+
"additionalProperties": true,
|
|
1054
|
+
"cli": {
|
|
1055
|
+
"exclude": true
|
|
1056
|
+
}
|
|
1056
1057
|
}
|
|
1057
1058
|
},
|
|
1058
1059
|
"additionalProperties": false
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "webpack-dev-server",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.5.0",
|
|
4
4
|
"description": "Serves a webpack app. Updates the browser on changes.",
|
|
5
5
|
"bin": "bin/webpack-dev-server.js",
|
|
6
6
|
"main": "lib/Server.js",
|
|
@@ -66,14 +66,16 @@
|
|
|
66
66
|
"@babel/plugin-transform-runtime": "^7.14.5",
|
|
67
67
|
"@babel/preset-env": "^7.14.5",
|
|
68
68
|
"@babel/runtime": "^7.14.5",
|
|
69
|
-
"@commitlint/cli": "^
|
|
70
|
-
"@commitlint/config-conventional": "^
|
|
69
|
+
"@commitlint/cli": "^14.1.0",
|
|
70
|
+
"@commitlint/config-conventional": "^14.1.0",
|
|
71
71
|
"acorn": "^8.2.4",
|
|
72
72
|
"babel-jest": "^27.0.2",
|
|
73
73
|
"babel-loader": "^8.2.2",
|
|
74
74
|
"body-parser": "^1.19.0",
|
|
75
75
|
"core-js": "^3.12.1",
|
|
76
76
|
"css-loader": "^5.2.4",
|
|
77
|
+
"css-tree": "^1.1.3",
|
|
78
|
+
"csstree": "^0.0.3",
|
|
77
79
|
"eslint": "^8.0.1",
|
|
78
80
|
"eslint-config-prettier": "^8.3.0",
|
|
79
81
|
"eslint-config-webpack": "^1.2.5",
|
|
@@ -103,7 +105,7 @@
|
|
|
103
105
|
"tcp-port-used": "^1.0.2",
|
|
104
106
|
"typescript": "^4.2.4",
|
|
105
107
|
"url-loader": "^4.1.1",
|
|
106
|
-
"webpack": "^5.
|
|
108
|
+
"webpack": "^5.64.0",
|
|
107
109
|
"webpack-cli": "^4.7.2",
|
|
108
110
|
"webpack-merge": "^5.8.0"
|
|
109
111
|
},
|