Skip to content

Commit a615815

Browse files
authored
Merge pull request #264 from webpack-contrib/fix-escape-regression
Fix regression with escaping internal assets
2 parents 9836649 + 20f2b4c commit a615815

File tree

3 files changed

+13
-13
lines changed

3 files changed

+13
-13
lines changed

src/viewer.js

+9-9
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,11 @@ async function startServer(bundleStats, opts) {
5252
app.use('/', (req, res) => {
5353
res.render('viewer', {
5454
mode: 'server',
55-
get chartData() { return JSON.stringify(chartData) },
56-
defaultSizes: JSON.stringify(defaultSizes),
55+
get chartData() { return chartData },
56+
defaultSizes,
5757
enableWebSocket: true,
5858
// Helpers
59-
escapeScript
59+
escapeJson
6060
});
6161
});
6262

@@ -133,12 +133,12 @@ async function generateReport(bundleStats, opts) {
133133
`${projectRoot}/views/viewer.ejs`,
134134
{
135135
mode: 'static',
136-
chartData: JSON.stringify(chartData),
137-
defaultSizes: JSON.stringify(defaultSizes),
136+
chartData,
137+
defaultSizes,
138138
enableWebSocket: false,
139139
// Helpers
140140
assetContent: getAssetContent,
141-
escapeScript
141+
escapeJson
142142
},
143143
(err, reportHtml) => {
144144
try {
@@ -180,10 +180,10 @@ function getAssetContent(filename) {
180180
}
181181

182182
/**
183-
* Escapes `<` characters in the string to safely use it in `<script>` tag.
183+
* Escapes `<` characters in JSON to safely use it in `<script>` tag.
184184
*/
185-
function escapeScript(value) {
186-
return String(value).replace(/</gu, '\\u003c');
185+
function escapeJson(json) {
186+
return JSON.stringify(json).replace(/</gu, '\\u003c');
187187
}
188188

189189
function getChartData(analyzerOpts, ...args) {

views/script.ejs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<% if (mode === 'static') { %>
22
<!-- <%= filename %> -->
33
<script>
4-
<%- escapeScript(assetContent(filename)) %>
4+
<%- assetContent(filename) %>
55
</script>
66
<% } else { %>
77
<script src="<%= filename %>"></script>

views/viewer.ejs

+3-3
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
<body>
1212
<div id="app"></div>
1313
<script>
14-
window.chartData = <%- escapeScript(chartData) %>;
15-
window.defaultSizes = <%- escapeScript(defaultSizes) %>;
16-
window.enableWebSocket = <%- escapeScript(enableWebSocket) %>;
14+
window.chartData = <%- escapeJson(chartData) %>;
15+
window.defaultSizes = <%- escapeJson(defaultSizes) %>;
16+
window.enableWebSocket = <%- escapeJson(enableWebSocket) %>;
1717
</script>
1818
</body>
1919
</html>

0 commit comments

Comments
 (0)