UNPKG

1.18 kBJavaScriptView Raw
1/* global __webpack_dev_server_client__ */
2
3const getSocketUrlParts = require('./utils/getSocketUrlParts.js');
4const getUrlFromParts = require('./utils/getUrlFromParts');
5const getWDSMetadata = require('./utils/getWDSMetadata');
6
7/**
8 * Initializes a socket server for HMR for webpack-dev-server.
9 * @param {function(*): void} messageHandler A handler to consume Webpack compilation messages.
10 * @param {string} [resourceQuery] Webpack's `__resourceQuery` string.
11 * @returns {void}
12 */
13function initWDSSocket(messageHandler, resourceQuery) {
14 if (typeof __webpack_dev_server_client__ !== 'undefined') {
15 let SocketClient = __webpack_dev_server_client__;
16 if (typeof __webpack_dev_server_client__.default !== 'undefined') {
17 SocketClient = __webpack_dev_server_client__.default;
18 }
19
20 const wdsMeta = getWDSMetadata(SocketClient);
21 const urlParts = getSocketUrlParts(resourceQuery, wdsMeta);
22
23 const connection = new SocketClient(getUrlFromParts(urlParts, wdsMeta));
24
25 connection.onMessage(function onSocketMessage(data) {
26 const message = JSON.parse(data);
27 messageHandler(message);
28 });
29 }
30}
31
32module.exports = { init: initWDSSocket };