Skip to content

Commit 2a313b5

Browse files
authored
Store node locations (#319)
Closes #298 Notes: - This setups seems to consume a lot of memory and that should be addressed, but I'll tackle that separately; - The implementation is under an unfriendly `__unstable__uniqueWithLocations` property when opted-in via the new `useUnstableLocations` flag. That should be enough warning signs that this isn't ready for prime time yet;
1 parent bb8303a commit 2a313b5

22 files changed

+422
-182
lines changed

benchmark/run.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ files.forEach(([filename, name, expectedDuration]) => {
3131
const fileSize = byteSize(css.length)
3232
suite.push([
3333
`${name.padEnd(maxLen + 2)} ${fileSize.padStart(7)}`,
34-
() => analyzeCss(css),
34+
() => analyzeCss(css, { useUnstableLocations: false }),
3535
expectedDuration,
3636
css.length,
3737
])

package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/__fixtures__/bol-com-20190617.json

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3805,6 +3805,8 @@
38053805
2,
38063806
152
38073807
],
3808+
"total": 3564,
3809+
"totalUnique": 35,
38083810
"unique": {
38093811
"1": 1,
38103812
"2": 1495,
@@ -3842,7 +3844,6 @@
38423844
"161": 1,
38433845
"643": 1
38443846
},
3845-
"totalUnique": 35,
38463847
"uniquenessRatio": 0.009820426487093154
38473848
},
38483849
"selectors": {
@@ -7419,6 +7420,8 @@
74197420
1,
74207421
151
74217422
],
7423+
"total": 3564,
7424+
"totalUnique": 24,
74227425
"unique": {
74237426
"1": 2601,
74247427
"2": 404,
@@ -7445,7 +7448,6 @@
74457448
"160": 1,
74467449
"640": 1
74477450
},
7448-
"totalUnique": 24,
74497451
"uniquenessRatio": 0.006734006734006734
74507452
},
74517453
"declarations": {
@@ -11022,6 +11024,8 @@
1102211024
1,
1102311025
1
1102411026
],
11027+
"total": 3564,
11028+
"totalUnique": 20,
1102511029
"unique": {
1102611030
"0": 1,
1102711031
"1": 2088,
@@ -11044,7 +11048,6 @@
1104411048
"19": 1,
1104511049
"23": 1
1104611050
},
11047-
"totalUnique": 20,
1104811051
"uniquenessRatio": 0.005611672278338945
1104911052
}
1105011053
},
@@ -49165,6 +49168,8 @@
4916549168
1
4916649169
]
4916749170
],
49171+
"total": 7616,
49172+
"totalUnique": 31,
4916849173
"unique": {
4916949174
"0,1,0": 2079,
4917049175
"0,2,0": 873,
@@ -49198,7 +49203,6 @@
4919849203
"1,2,2": 1,
4919949204
"1,1,2": 1
4920049205
},
49201-
"totalUnique": 31,
4920249206
"uniquenessRatio": 0.0040703781512605045
4920349207
},
4920449208
"complexity": {

src/__fixtures__/bootstrap-5.0.0.json

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2454,6 +2454,8 @@
24542454
2,
24552455
2
24562456
],
2457+
"total": 2296,
2458+
"totalUnique": 20,
24572459
"unique": {
24582460
"2": 1284,
24592461
"3": 600,
@@ -2476,7 +2478,6 @@
24762478
"25": 1,
24772479
"27": 1
24782480
},
2479-
"totalUnique": 20,
24802481
"uniquenessRatio": 0.008710801393728223
24812482
},
24822483
"selectors": {
@@ -4785,6 +4786,8 @@
47854786
1,
47864787
1
47874788
],
4789+
"total": 2296,
4790+
"totalUnique": 8,
47884791
"unique": {
47894792
"1": 1976,
47904793
"2": 250,
@@ -4795,7 +4798,6 @@
47954798
"7": 3,
47964799
"12": 2
47974800
},
4798-
"totalUnique": 8,
47994801
"uniquenessRatio": 0.003484320557491289
48004802
},
48014803
"declarations": {
@@ -7104,6 +7106,8 @@
71047106
1,
71057107
1
71067108
],
7109+
"total": 2296,
7110+
"totalUnique": 20,
71077111
"unique": {
71087112
"1": 1471,
71097113
"2": 503,
@@ -7126,7 +7130,6 @@
71267130
"24": 1,
71277131
"26": 1
71287132
},
7129-
"totalUnique": 20,
71307133
"uniquenessRatio": 0.008710801393728223
71317134
}
71327135
},
@@ -21162,6 +21165,8 @@
2116221165
0
2116321166
]
2116421167
],
21168+
"total": 2799,
21169+
"totalUnique": 15,
2116521170
"unique": {
2116621171
"0,1,0": 1792,
2116721172
"0,0,0": 1,
@@ -21179,7 +21184,6 @@
2117921184
"0,7,0": 1,
2118021185
"0,1,2": 1
2118121186
},
21182-
"totalUnique": 15,
2118321187
"uniquenessRatio": 0.0053590568060021436
2118421188
},
2118521189
"complexity": {

src/__fixtures__/cnn-20220403.json

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12021,6 +12021,8 @@
1202112021
2,
1202212022
4
1202312023
],
12024+
"total": 10928,
12025+
"totalUnique": 31,
1202412026
"unique": {
1202512027
"1": 6,
1202612028
"2": 3903,
@@ -12054,7 +12056,6 @@
1205412056
"43": 6,
1205512057
"147": 1
1205612058
},
12057-
"totalUnique": 31,
1205812059
"uniquenessRatio": 0.0028367496339677892
1205912060
},
1206012061
"selectors": {
@@ -22995,6 +22996,8 @@
2299522996
1,
2299622997
1
2299722998
],
22999+
"total": 10928,
23000+
"totalUnique": 26,
2299823001
"unique": {
2299923002
"1": 7760,
2300023003
"2": 1470,
@@ -23023,7 +23026,6 @@
2302323026
"42": 6,
2302423027
"116": 1
2302523028
},
23026-
"totalUnique": 26,
2302723029
"uniquenessRatio": 0.0023792093704245974
2302823030
},
2302923031
"declarations": {
@@ -33964,6 +33966,8 @@
3396433966
1,
3396533967
3
3396633968
],
33969+
"total": 10928,
33970+
"totalUnique": 27,
3396733971
"unique": {
3396833972
"0": 6,
3396933973
"1": 5880,
@@ -33993,7 +33997,6 @@
3399333997
"29": 1,
3399433998
"31": 1
3399533999
},
33996-
"totalUnique": 27,
3399734000
"uniquenessRatio": 0.002470717423133236
3399834001
}
3399934002
},
@@ -132179,6 +132182,8 @@
132179132182
0
132180132183
]
132181132184
],
132185+
"total": 19629,
132186+
"totalUnique": 91,
132182132187
"unique": {
132183132188
"0,0,2": 22,
132184132189
"0,1,2": 107,
@@ -132272,7 +132277,6 @@
132272132277
"4,1,0": 1,
132273132278
"4,5,1": 1
132274132279
},
132275-
"totalUnique": 91,
132276132280
"uniquenessRatio": 0.004635997758418667
132277132281
},
132278132282
"complexity": {

src/__fixtures__/css-tricks-20190319.json

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1736,6 +1736,8 @@
17361736
4,
17371737
9
17381738
],
1739+
"total": 1563,
1740+
"totalUnique": 24,
17391741
"unique": {
17401742
"1": 2,
17411743
"2": 468,
@@ -1762,7 +1764,6 @@
17621764
"23": 2,
17631765
"25": 2
17641766
},
1765-
"totalUnique": 24,
17661767
"uniquenessRatio": 0.015355086372360844
17671768
},
17681769
"selectors": {
@@ -3338,6 +3339,8 @@
33383339
1,
33393340
4
33403341
],
3342+
"total": 1563,
3343+
"totalUnique": 15,
33413344
"unique": {
33423345
"1": 1156,
33433346
"2": 236,
@@ -3355,7 +3358,6 @@
33553358
"22": 1,
33563359
"24": 1
33573360
},
3358-
"totalUnique": 15,
33593361
"uniquenessRatio": 0.009596928982725527
33603362
},
33613363
"declarations": {
@@ -4931,6 +4933,8 @@
49314933
3,
49324934
5
49334935
],
4936+
"total": 1563,
4937+
"totalUnique": 24,
49344938
"unique": {
49354939
"0": 2,
49364940
"1": 668,
@@ -4957,7 +4961,6 @@
49574961
"22": 1,
49584962
"24": 1
49594963
},
4960-
"totalUnique": 24,
49614964
"uniquenessRatio": 0.015355086372360844
49624965
}
49634966
},
@@ -17553,6 +17556,8 @@
1755317556
1
1755417557
]
1755517558
],
17559+
"total": 2511,
17560+
"totalUnique": 62,
1755617561
"unique": {
1755717562
"0,0,0": 1,
1755817563
"0,0,1": 102,
@@ -17617,7 +17622,6 @@
1761717622
"3,1,2": 1,
1761817623
"1,3,3": 1
1761917624
},
17620-
"totalUnique": 62,
1762117625
"uniquenessRatio": 0.024691358024691357
1762217626
},
1762317627
"complexity": {

src/__fixtures__/facebook-20190319.json

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4414,6 +4414,8 @@
44144414
2,
44154415
2
44164416
],
4417+
"total": 4235,
4418+
"totalUnique": 16,
44174419
"unique": {
44184420
"2": 2786,
44194421
"3": 467,
@@ -4432,7 +4434,6 @@
44324434
"16": 1,
44334435
"17": 1
44344436
},
4435-
"totalUnique": 16,
44364437
"uniquenessRatio": 0.0037780401416765055
44374438
},
44384439
"selectors": {
@@ -8680,6 +8681,8 @@
86808681
1,
86818682
1
86828683
],
8684+
"total": 4235,
8685+
"totalUnique": 10,
86838686
"unique": {
86848687
"1": 4016,
86858688
"2": 153,
@@ -8692,7 +8695,6 @@
86928695
"10": 1,
86938696
"12": 1
86948697
},
8695-
"totalUnique": 10,
86968698
"uniquenessRatio": 0.0023612750885478157
86978699
},
86988700
"declarations": {
@@ -12940,6 +12942,8 @@
1294012942
1,
1294112943
1
1294212944
],
12945+
"total": 4235,
12946+
"totalUnique": 16,
1294312947
"unique": {
1294412948
"1": 2871,
1294512949
"2": 472,
@@ -12958,7 +12962,6 @@
1295812962
"15": 1,
1295912963
"16": 1
1296012964
},
12961-
"totalUnique": 16,
1296212965
"uniquenessRatio": 0.0037780401416765055
1296312966
}
1296412967
},
@@ -35479,6 +35482,8 @@
3547935482
0
3548035483
]
3548135484
],
35485+
"total": 4496,
35486+
"totalUnique": 28,
3548235487
"unique": {
3548335488
"0,1,0": 2497,
3548435489
"0,2,0": 1222,
@@ -35509,7 +35514,6 @@
3550935514
"1,4,0": 2,
3551035515
"0,6,0": 1
3551135516
},
35512-
"totalUnique": 28,
3551335517
"uniquenessRatio": 0.006227758007117438
3551435518
},
3551535519
"complexity": {

0 commit comments

Comments
 (0)