Skip to content

Commit c0f0165

Browse files
authored
Merge pull request #223 from webpack-contrib/use-buffer-bytelength
replace <str>.length with Buffer.byteLength(<str>)
2 parents b04a23c + 0d5824f commit c0f0165

File tree

5 files changed

+198
-1
lines changed

5 files changed

+198
-1
lines changed

src/analyzer.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ function getViewerData(bundleStats, bundleDir, opts) {
7474
const asset = result[statAsset.name] = _.pick(statAsset, 'size');
7575

7676
if (bundlesSources && _.has(bundlesSources, statAsset.name)) {
77-
asset.parsedSize = bundlesSources[statAsset.name].length;
77+
asset.parsedSize = Buffer.byteLength(bundlesSources[statAsset.name]);
7878
asset.gzipSize = gzipSize.sync(bundlesSources[statAsset.name]);
7979
}
8080

test/analyzer.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,14 @@ describe('Analyzer', function () {
3636
);
3737
});
3838

39+
it('should record accurate byte lengths for sources with special chars', async function () {
40+
generateReportFrom('with-special-chars/stats.json');
41+
const chartData = await getChartData();
42+
expect(chartData).to.containSubset(
43+
require('./stats/with-special-chars/expected-chart-data')
44+
);
45+
});
46+
3947
it('should support bundles with invalid dynamic require calls', async function () {
4048
generateReportFrom('with-invalid-dynamic-require.json');
4149
await expectValidReport({statSize: 136});

test/stats/with-special-chars/bundle.js

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
module.exports = [
2+
{
3+
"groups": [
4+
{
5+
"gzipSize": 1647,
6+
"id": 0,
7+
"label": "index.js",
8+
"parsedSize": 1057,
9+
"path": "./index.js",
10+
"statSize": 1021
11+
}
12+
],
13+
"gzipSize": 2191,
14+
"label": "bundle.js",
15+
"parsedSize": 2884,
16+
"statSize": 1021
17+
}
18+
];
Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
{
2+
"errors": [],
3+
"warnings": [],
4+
"version": "4.25.1",
5+
"hash": "6a0006856f4405101aa5",
6+
"time": 279,
7+
"builtAt": 1542409324382,
8+
"publicPath": "",
9+
"outputPath": "/tmp/with-special-chars",
10+
"assetsByChunkName": {
11+
"main": "bundle.js"
12+
},
13+
"assets": [
14+
{
15+
"name": "bundle.js",
16+
"size": 1972,
17+
"chunks": [
18+
0
19+
],
20+
"chunkNames": [
21+
"main"
22+
],
23+
"emitted": true
24+
}
25+
],
26+
"filteredAssets": 0,
27+
"entrypoints": {
28+
"main": {
29+
"chunks": [
30+
0
31+
],
32+
"assets": [
33+
"bundle.js"
34+
],
35+
"children": {},
36+
"childAssets": {}
37+
}
38+
},
39+
"namedChunkGroups": {
40+
"main": {
41+
"chunks": [
42+
0
43+
],
44+
"assets": [
45+
"bundle.js"
46+
],
47+
"children": {},
48+
"childAssets": {}
49+
}
50+
},
51+
"chunks": [
52+
{
53+
"id": 0,
54+
"rendered": true,
55+
"initial": true,
56+
"entry": true,
57+
"size": 1021,
58+
"names": [
59+
"main"
60+
],
61+
"files": [
62+
"bundle.js"
63+
],
64+
"hash": "ad9a5baaeb4c63ce54e3",
65+
"siblings": [],
66+
"parents": [],
67+
"children": [],
68+
"childrenByOrder": {},
69+
"modules": [
70+
{
71+
"id": 0,
72+
"identifier": "/tmp/with-special-chars/index.js",
73+
"name": "./index.js",
74+
"index": 0,
75+
"index2": 0,
76+
"size": 1021,
77+
"cacheable": true,
78+
"built": true,
79+
"optional": false,
80+
"prefetched": false,
81+
"chunks": [
82+
0
83+
],
84+
"issuer": null,
85+
"issuerId": null,
86+
"issuerName": null,
87+
"issuerPath": null,
88+
"failed": false,
89+
"errors": 0,
90+
"warnings": 0,
91+
"assets": [],
92+
"reasons": [
93+
{
94+
"moduleId": null,
95+
"moduleIdentifier": null,
96+
"module": null,
97+
"moduleName": null,
98+
"type": "single entry",
99+
"userRequest": "/tmp/with-special-chars/index.js",
100+
"loc": "main"
101+
}
102+
],
103+
"usedExports": true,
104+
"providedExports": [],
105+
"optimizationBailout": [
106+
"ModuleConcatenation bailout: Module is an entry point"
107+
],
108+
"depth": 0,
109+
"source": "console.log(`!\"#$%&amp;'()*+,-./0123456789:;&lt;=&gt;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ&nbsp;¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħĨĩĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀŁłŃńŅņŇňʼnŊŋŌōŎŏŐőŒœŔŕŖŗŘřŚśŜŝŞşŠšŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽžſƀƁƂƃƄƅƆƇƈƉƊƋƌƍƎƏƐƑƒƓƔƕƖƗƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽƾƿǀǁǂǃDŽDždžLJLjljNJNjnjǍǎǏǐǑǒǓǔǕǖǗǘǙǚǛǜǝǞǟǠǡǢǣǤǥǦǧǨǩǪǫǬǭǮǯǰDZDzdzǴǵǶǷǸǹǺǻǼǽǾǿȀȁȂȃȄȅȆȇȈȉȊȋȌȍȎȏȐȑȒȓȔȕȖȗȘșȚțȜȝȞȟȠȡȢȣȤȥȦȧȨȩȪȫȬȭȮȯȰȱȲȳȴȵȶȷȸȹȺȻȼȽȾȿɀɁɂɃɄɅɆɇɈɉɊɋɌɍɎɏɐɑɒɓɔɕɖɗɘəɚɛɜɝɞɟɠɡɢɣɤɥɦɧɨɩɪɫɬɭɮɯɰɱɲɳɴɵɶɷɸɹɺɻɼɽɾɿʀʁʂʃʄʅʆʇʈʉʊʋʌʍʎʏʐʑʒʓʔʕʖʗʘʙʚʛʜʝʞʟʠʡʢʣʤʥʦʧʨʩʪʫʬʭʮʯʰʱʲʳʴʵʶʷʸʹʺʻʼʽʾʿˀˁ˂˃˄˅ˆˇˈˉˊˋˌˍˎˏːˑ˒˓˔˕˖˗˘˙˚˛˜˝˞˟ˠˡˢˣˤ˥˦˧˨˩˪˫ˬ˭ˮ˯˰˱˲˳˴˵˶˷˸˹˺˻˼˽˾˿̴̵̶̷̸̡̢̧̨̛̖̗̘̙̜̝̞̟̠̣̤̥̦̩̪̫̬̭̮̯̰̱̲̳̹̺̻̼͇͈͉͍͎̀́̂̃̄̅̆̇̈̉̊̋̌̍̎̏̐̑̒̓̔̽̾̿̀́͂̓̈́͆͊͋͌̕̚ͅ͏͓͔͕͖͙͚͐͑͒͗͛ͣͤͥͦͧͨͩͪͫͬͭͮͯ͘͜͟͢͝͞͠͡ͰͱͲͳʹ͵Ͷͷͺͻͼͽ;Ϳ΄΅Ά·ΈΉΊΌΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώϏϐϑϒϓϔϕϖϗϘϙϚϛϜϝϞϟϠϡϢϣϤϥϦϧϨϩϪϫϬϭϮϯϰϱϲϳϴϵ϶ϷϸϹϺϻϼϽϾϿЀЁЂЃЄЅІЇЈ`)\n"
110+
}
111+
],
112+
"filteredModules": 0,
113+
"origins": [
114+
{
115+
"module": "",
116+
"moduleIdentifier": "",
117+
"moduleName": "",
118+
"loc": "main",
119+
"request": "/tmp/with-special-chars/index.js",
120+
"reasons": []
121+
}
122+
]
123+
}
124+
],
125+
"modules": [
126+
{
127+
"id": 0,
128+
"identifier": "/tmp/with-special-chars/index.js",
129+
"name": "./index.js",
130+
"index": 0,
131+
"index2": 0,
132+
"size": 1021,
133+
"cacheable": true,
134+
"built": true,
135+
"optional": false,
136+
"prefetched": false,
137+
"chunks": [
138+
0
139+
],
140+
"issuer": null,
141+
"issuerId": null,
142+
"issuerName": null,
143+
"issuerPath": null,
144+
"failed": false,
145+
"errors": 0,
146+
"warnings": 0,
147+
"assets": [],
148+
"reasons": [
149+
{
150+
"moduleId": null,
151+
"moduleIdentifier": null,
152+
"module": null,
153+
"moduleName": null,
154+
"type": "single entry",
155+
"userRequest": "/tmp/with-special-chars/index.js",
156+
"loc": "main"
157+
}
158+
],
159+
"usedExports": true,
160+
"providedExports": [],
161+
"optimizationBailout": [
162+
"ModuleConcatenation bailout: Module is an entry point"
163+
],
164+
"depth": 0,
165+
"source": "console.log(`!\"#$%&amp;'()*+,-./0123456789:;&lt;=&gt;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ&nbsp;¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħĨĩĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀŁłŃńŅņŇňʼnŊŋŌōŎŏŐőŒœŔŕŖŗŘřŚśŜŝŞşŠšŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽžſƀƁƂƃƄƅƆƇƈƉƊƋƌƍƎƏƐƑƒƓƔƕƖƗƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽƾƿǀǁǂǃDŽDždžLJLjljNJNjnjǍǎǏǐǑǒǓǔǕǖǗǘǙǚǛǜǝǞǟǠǡǢǣǤǥǦǧǨǩǪǫǬǭǮǯǰDZDzdzǴǵǶǷǸǹǺǻǼǽǾǿȀȁȂȃȄȅȆȇȈȉȊȋȌȍȎȏȐȑȒȓȔȕȖȗȘșȚțȜȝȞȟȠȡȢȣȤȥȦȧȨȩȪȫȬȭȮȯȰȱȲȳȴȵȶȷȸȹȺȻȼȽȾȿɀɁɂɃɄɅɆɇɈɉɊɋɌɍɎɏɐɑɒɓɔɕɖɗɘəɚɛɜɝɞɟɠɡɢɣɤɥɦɧɨɩɪɫɬɭɮɯɰɱɲɳɴɵɶɷɸɹɺɻɼɽɾɿʀʁʂʃʄʅʆʇʈʉʊʋʌʍʎʏʐʑʒʓʔʕʖʗʘʙʚʛʜʝʞʟʠʡʢʣʤʥʦʧʨʩʪʫʬʭʮʯʰʱʲʳʴʵʶʷʸʹʺʻʼʽʾʿˀˁ˂˃˄˅ˆˇˈˉˊˋˌˍˎˏːˑ˒˓˔˕˖˗˘˙˚˛˜˝˞˟ˠˡˢˣˤ˥˦˧˨˩˪˫ˬ˭ˮ˯˰˱˲˳˴˵˶˷˸˹˺˻˼˽˾˿̴̵̶̷̸̡̢̧̨̛̖̗̘̙̜̝̞̟̠̣̤̥̦̩̪̫̬̭̮̯̰̱̲̳̹̺̻̼͇͈͉͍͎̀́̂̃̄̅̆̇̈̉̊̋̌̍̎̏̐̑̒̓̔̽̾̿̀́͂̓̈́͆͊͋͌̕̚ͅ͏͓͔͕͖͙͚͐͑͒͗͛ͣͤͥͦͧͨͩͪͫͬͭͮͯ͘͜͟͢͝͞͠͡ͰͱͲͳʹ͵Ͷͷͺͻͼͽ;Ϳ΄΅Ά·ΈΉΊΌΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώϏϐϑϒϓϔϕϖϗϘϙϚϛϜϝϞϟϠϡϢϣϤϥϦϧϨϩϪϫϬϭϮϯϰϱϲϳϴϵ϶ϷϸϹϺϻϼϽϾϿЀЁЂЃЄЅІЇЈ`)\n"
166+
}
167+
],
168+
"filteredModules": 0,
169+
"children": []
170+
}

0 commit comments

Comments
 (0)