Skip to content

Commit 4991704

Browse files
bebrawSpaceK33z
authored andcommitted
feat - Allow overlay to be enabled for warnings (#789) (#790)
Now you can use { overlay: { errors: true, warnings: true } } Closes #789.
1 parent 9d2925c commit 4991704

File tree

8 files changed

+72
-8
lines changed

8 files changed

+72
-8
lines changed

client/index.js

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ var hot = false;
3333
var initial = true;
3434
var currentHash = "";
3535
var logLevel = "info";
36-
var useOverlay = false;
36+
var useWarningOverlay = false;
37+
var useErrorOverlay = false;
3738

3839
function log(level, msg) {
3940
if(logLevel === "info" && level === "info")
@@ -75,12 +76,18 @@ var onSocketMsg = {
7576
},
7677
"overlay": function(overlay) {
7778
if(typeof document !== "undefined") {
78-
useOverlay = overlay;
79+
if(typeof(overlay) === "boolean") {
80+
useWarningOverlay = overlay;
81+
useErrorOverlay = overlay;
82+
} else if(overlay) {
83+
useWarningOverlay = overlay.warnings;
84+
useErrorOverlay = overlay.errors;
85+
}
7986
}
8087
},
8188
ok: function() {
8289
sendMsg("Ok");
83-
if(useOverlay) overlay.clear();
90+
if(useWarningOverlay || useErrorOverlay) overlay.clear();
8491
if(initial) return initial = false;
8592
reloadApp();
8693
},
@@ -96,6 +103,8 @@ var onSocketMsg = {
96103
sendMsg("Warnings", strippedWarnings);
97104
for(var i = 0; i < strippedWarnings.length; i++)
98105
console.warn(strippedWarnings[i]);
106+
if(useWarningOverlay) overlay.showMessage(warnings);
107+
99108
if(initial) return initial = false;
100109
reloadApp();
101110
},
@@ -107,7 +116,7 @@ var onSocketMsg = {
107116
sendMsg("Errors", strippedErrors);
108117
for(var i = 0; i < strippedErrors.length; i++)
109118
console.error(strippedErrors[i]);
110-
if(useOverlay) overlay.showErrors(errors);
119+
if(useErrorOverlay) overlay.showMessage(errors);
111120
},
112121
close: function() {
113122
log("error", "[WDS] Disconnected!");

client/overlay.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ function ensureOverlayDivExists(onOverlayDivReady) {
9191
document.body.appendChild(overlayIframe);
9292
}
9393

94-
function showErrorOverlay(message) {
94+
function showMessageOverlay(message) {
9595
ensureOverlayDivExists(function onOverlayDivReady(overlayDiv) {
9696
// Make it look similar to our terminal.
9797
overlayDiv.innerHTML =
@@ -121,6 +121,6 @@ exports.clear = function handleSuccess() {
121121
}
122122

123123
// Compilation with errors (e.g. syntax error or missing modules).
124-
exports.showErrors = function handleErrors(errors) {
125-
showErrorOverlay(errors[0]);
124+
exports.showMessage = function handleMessage(messages) {
125+
showMessageOverlay(messages[0]);
126126
}

examples/overlay-warnings/README.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# Overlay
2+
3+
```shell
4+
node ../../bin/webpack-dev-server.js --open
5+
```
6+
7+
## What should happen
8+
9+
The script should open the browser and show a heading with "Example: overlay with warnings".
10+
11+
In `app.js`, uncomment the lines that should cause a warning to appear. The page should now refresh and show a full screen overlay that shows the warning.

examples/overlay-warnings/app.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
document.write("It's working.");
2+
3+
// This results in a warning:
4+
// require("./casesensitive.js");
5+
// require("./caseSensitive.js");
6+
7+
// This results in an error:
8+
// if(!window) require("test");
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
console.log("case sensitive");
2+

examples/overlay-warnings/index.html

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<script src="/bundle.js" type="text/javascript" charset="utf-8"></script>
5+
</head>
6+
<body>
7+
<h1>Example: overlay with warnings</h1>
8+
</body>
9+
</html>
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
module.exports = {
2+
context: __dirname,
3+
entry: "./app.js",
4+
devServer: {
5+
overlay: {
6+
errors: true,
7+
warnings: true
8+
}
9+
}
10+
}

lib/optionsSchema.json

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,22 @@
6969
},
7070
"overlay": {
7171
"description": "Shows an error overlay in browser.",
72-
"type": "boolean"
72+
"anyOf": [
73+
{
74+
"type": "boolean"
75+
},
76+
{
77+
"type": "object",
78+
"properties": {
79+
"errors": {
80+
"type": "boolean"
81+
},
82+
"warnings": {
83+
"type": "boolean"
84+
}
85+
}
86+
}
87+
]
7388
},
7489
"key": {
7590
"description": "The contents of a SSL key.",

0 commit comments

Comments
 (0)