Skip to content

Commit 216e3cb

Browse files
authoredJul 25, 2022
feat: allow to configure more client options via resource URL (#4274)
1 parent cffffba commit 216e3cb

File tree

50 files changed

+854
-1187
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+854
-1187
lines changed
 

‎client-src/index.js

+34-8
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import stripAnsi from "./utils/stripAnsi.js";
55
import parseURL from "./utils/parseURL.js";
66
import socket from "./socket.js";
77
import { formatProblem, show, hide } from "./overlay.js";
8-
import { log, setLogLevel } from "./utils/log.js";
8+
import { log, logEnabledFeatures, setLogLevel } from "./utils/log.js";
99
import sendMessage from "./utils/sendMessage.js";
1010
import reloadApp from "./utils/reloadApp.js";
1111
import createSocketURL from "./utils/createSocketURL.js";
@@ -46,16 +46,44 @@ const options = {
4646
};
4747
const parsedResourceQuery = parseURL(__resourceQuery);
4848

49+
const enabledFeatures = {
50+
"Hot Module Replacement": false,
51+
"Live Reloading": false,
52+
Progress: false,
53+
Overlay: false,
54+
};
55+
4956
if (parsedResourceQuery.hot === "true") {
5057
options.hot = true;
51-
52-
log.info("Hot Module Replacement enabled.");
58+
enabledFeatures["Hot Module Replacement"] = true;
5359
}
5460

5561
if (parsedResourceQuery["live-reload"] === "true") {
5662
options.liveReload = true;
63+
enabledFeatures["Live Reloading"] = true;
64+
}
5765

58-
log.info("Live Reloading enabled.");
66+
if (parsedResourceQuery.progress === "true") {
67+
options.progress = true;
68+
enabledFeatures.Progress = true;
69+
}
70+
71+
if (parsedResourceQuery.overlay) {
72+
try {
73+
options.overlay = JSON.parse(parsedResourceQuery.overlay);
74+
} catch (e) {
75+
log.error("Error parsing overlay options from resource query:", e);
76+
}
77+
78+
// Fill in default "true" params for partially-specified objects.
79+
if (typeof options.overlay === "object") {
80+
options.overlay = {
81+
errors: true,
82+
warnings: true,
83+
...options.overlay,
84+
};
85+
}
86+
enabledFeatures.Overlay = true;
5987
}
6088

6189
if (parsedResourceQuery.logging) {
@@ -66,6 +94,8 @@ if (typeof parsedResourceQuery.reconnect !== "undefined") {
6694
options.reconnect = Number(parsedResourceQuery.reconnect);
6795
}
6896

97+
logEnabledFeatures(enabledFeatures);
98+
6999
/**
70100
* @param {string} level
71101
*/
@@ -92,17 +122,13 @@ const onSocketMessage = {
92122
}
93123

94124
options.hot = true;
95-
96-
log.info("Hot Module Replacement enabled.");
97125
},
98126
liveReload() {
99127
if (parsedResourceQuery["live-reload"] === "false") {
100128
return;
101129
}
102130

103131
options.liveReload = true;
104-
105-
log.info("Live Reloading enabled.");
106132
},
107133
invalid() {
108134
log.info("App updated. Recompiling...");

‎client-src/utils/log.js

+19-1
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,22 @@ setLogLevel(defaultLevel);
1818

1919
const log = logger.getLogger(name);
2020

21-
export { log, setLogLevel };
21+
const logEnabledFeatures = (features) => {
22+
const enabledFeatures = Object.entries(features);
23+
if (!features || enabledFeatures.length === 0) {
24+
return;
25+
}
26+
27+
let logString = "Server started:";
28+
29+
// Server started: Hot Module Replacement enabled, Live Reloading enabled, Overlay disabled.
30+
for (const [key, value] of Object.entries(features)) {
31+
logString += ` ${key} ${value ? "enabled" : "disabled"},`;
32+
}
33+
// replace last comma with a period
34+
logString = logString.slice(0, -1).concat(".");
35+
36+
log.info(logString);
37+
};
38+
39+
export { log, logEnabledFeatures, setLogLevel };

0 commit comments

Comments
 (0)
Please sign in to comment.