Skip to content

Commit 74680dd

Browse files
committed
refactor(client): make use of ESM instead of CJS (#1967)
1 parent 8e7018c commit 74680dd

19 files changed

+67
-88
lines changed

.eslintrc

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,11 @@
22
"extends": ["webpack", "prettier"],
33
"globals": {
44
"document": true,
5-
"window": true
5+
"window": true,
6+
"self": true,
7+
"WorkerGlobalScope": true,
8+
"__resourceQuery": true,
9+
"__webpack_dev_server_client__": true
610
},
711
"parserOptions": {
812
"sourceType": "script"

client-src/.eslintrc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"parserOptions": {
3+
"sourceType": "module"
4+
}
5+
}

client-src/default/index.js

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
'use strict';
2-
3-
/* global __resourceQuery WorkerGlobalScope self */
41
/* eslint prefer-destructuring: off */
5-
const stripAnsi = require('strip-ansi');
6-
const socket = require('./socket');
7-
const overlay = require('./overlay');
8-
const { log, setLogLevel } = require('./utils/log');
9-
const sendMessage = require('./utils/sendMessage');
10-
const reloadApp = require('./utils/reloadApp');
11-
const createSocketUrl = require('./utils/createSocketUrl');
2+
import stripAnsi from 'strip-ansi';
3+
import socket from './socket';
4+
import {
5+
clear as clearOverlay,
6+
showMessage as showMessageOverlay,
7+
} from './overlay';
8+
import { log, setLogLevel } from './utils/log';
9+
import sendMessage from './utils/sendMessage';
10+
import reloadApp from './utils/reloadApp';
11+
import createSocketUrl from './utils/createSocketUrl';
1212

1313
const status = {
1414
isUnloading: false,
@@ -47,7 +47,7 @@ const onSocketMessage = {
4747
log.info('[WDS] App updated. Recompiling...');
4848
// fixes #1042. overlay doesn't clear if errors are fixed but warnings remain.
4949
if (options.useWarningOverlay || options.useErrorOverlay) {
50-
overlay.clear();
50+
clearOverlay();
5151
}
5252
sendMessage('Invalid');
5353
},
@@ -57,7 +57,7 @@ const onSocketMessage = {
5757
'still-ok': function stillOk() {
5858
log.info('[WDS] Nothing changed.');
5959
if (options.useWarningOverlay || options.useErrorOverlay) {
60-
overlay.clear();
60+
clearOverlay();
6161
}
6262
sendMessage('StillOk');
6363
},
@@ -93,7 +93,7 @@ const onSocketMessage = {
9393
ok() {
9494
sendMessage('Ok');
9595
if (options.useWarningOverlay || options.useErrorOverlay) {
96-
overlay.clear();
96+
clearOverlay();
9797
}
9898
if (options.initial) {
9999
return (options.initial = false);
@@ -112,7 +112,7 @@ const onSocketMessage = {
112112
log.warn(strippedWarnings[i]);
113113
}
114114
if (options.useWarningOverlay) {
115-
overlay.showMessage(warnings);
115+
showMessageOverlay(warnings);
116116
}
117117

118118
if (options.initial) {
@@ -128,7 +128,7 @@ const onSocketMessage = {
128128
log.error(strippedErrors[i]);
129129
}
130130
if (options.useErrorOverlay) {
131-
overlay.showMessage(errors);
131+
showMessageOverlay(errors);
132132
}
133133
options.initial = false;
134134
},

client-src/default/overlay.js

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
'use strict';
2-
31
// The error overlay is inspired (and mostly copied) from Create React App (https://github.com/facebookincubator/create-react-app)
42
// They, in turn, got inspired by webpack-hot-middleware (https://github.com/glenjamin/webpack-hot-middleware).
53

6-
const ansiHTML = require('ansi-html');
7-
const { AllHtmlEntities } = require('html-entities');
4+
import ansiHTML from 'ansi-html';
5+
import { AllHtmlEntities as Entities } from 'html-entities';
6+
7+
const entities = new Entities();
88

99
const entities = new AllHtmlEntities();
1010
const colors = {
@@ -109,19 +109,12 @@ function clear() {
109109
lastOnOverlayDivReady = null;
110110
}
111111

112-
// Compilation with errors (e.g. syntax error or missing modules).
113-
function showMessage(messages) {
114-
ensureOverlayDivExists((div) => {
115-
// Make it look similar to our terminal.
116-
div.innerHTML = `<span style="color: #${
117-
colors.red
118-
}">Failed to compile.</span><br><br>${ansiHTML(
119-
entities.encode(messages[0])
120-
)}`;
121-
});
112+
// Successful compilation.
113+
export function clear() {
114+
destroyErrorOverlay();
122115
}
123116

124-
module.exports = {
125-
clear,
126-
showMessage,
127-
};
117+
// Compilation with errors (e.g. syntax error or missing modules).
118+
export function showMessage(messages) {
119+
showMessageOverlay(messages[0]);
120+
}

client-src/default/socket.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
'use strict';
2-
3-
/* global __webpack_dev_server_client__ */
41
/* eslint-disable
52
camelcase
63
*/
@@ -46,4 +43,4 @@ const socket = function initSocket(url, handlers) {
4643
});
4744
};
4845

49-
module.exports = socket;
46+
export default socket;

client-src/default/utils/createSocketUrl.js

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
1-
'use strict';
2-
3-
/* global self */
4-
5-
const url = require('url');
6-
const querystring = require('querystring');
7-
const getCurrentScriptSource = require('./getCurrentScriptSource');
1+
import url from 'url';
2+
import querystring from 'querystring';
3+
import getCurrentScriptSource from './getCurrentScriptSource';
84

95
function createSocketUrl(resourceQuery) {
106
let urlParts;
@@ -80,4 +76,4 @@ function createSocketUrl(resourceQuery) {
8076
});
8177
}
8278

83-
module.exports = createSocketUrl;
79+
export default createSocketUrl;

client-src/default/utils/getCurrentScriptSource.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
'use strict';
2-
31
function getCurrentScriptSource() {
42
// `document.currentScript` is the most accurate way to find the current script,
53
// but is not supported in all browsers.
@@ -17,4 +15,4 @@ function getCurrentScriptSource() {
1715
throw new Error('[WDS] Failed to get current script source.');
1816
}
1917

20-
module.exports = getCurrentScriptSource;
18+
export default getCurrentScriptSource;

client-src/default/utils/log.js

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
'use strict';
1+
import { getLogger } from 'loglevel';
22

3-
const log = require('loglevel').getLogger('webpack-dev-server');
3+
export const log = getLogger('webpack-dev-server');
44

55
const INFO = 'info';
66
const WARN = 'warn';
@@ -17,7 +17,7 @@ const NONE = 'none';
1717
// Set the default log level
1818
log.setDefaultLevel(INFO);
1919

20-
function setLogLevel(level) {
20+
export function setLogLevel(level) {
2121
switch (level) {
2222
case INFO:
2323
case WARN:
@@ -40,8 +40,3 @@ function setLogLevel(level) {
4040
log.error(`[WDS] Unknown clientLogLevel '${level}'`);
4141
}
4242
}
43-
44-
module.exports = {
45-
log,
46-
setLogLevel,
47-
};

client-src/default/utils/reloadApp.js

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
1-
'use strict';
2-
3-
/* global WorkerGlobalScope self */
4-
5-
const { log } = require('./log');
1+
import { log } from './log';
62

73
function reloadApp(
84
{ hotReload, hot, liveReload },
@@ -46,4 +42,4 @@ function reloadApp(
4642
}
4743
}
4844

49-
module.exports = reloadApp;
45+
export default reloadApp;

client-src/default/utils/sendMessage.js

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
1-
'use strict';
2-
3-
/* global __resourceQuery WorkerGlobalScope self */
4-
51
// Send messages to the outside, so plugins can consume it.
6-
function sendMsg(type, data) {
2+
function sendMessage(type, data) {
73
if (
84
typeof self !== 'undefined' &&
95
(typeof WorkerGlobalScope === 'undefined' ||
@@ -19,4 +15,4 @@ function sendMsg(type, data) {
1915
}
2016
}
2117

22-
module.exports = sendMsg;
18+
export default sendMessage;

0 commit comments

Comments
 (0)