Skip to content

Commit f46a159

Browse files
Bart Venemanbartveneman
authored andcommitted
fix: trim() stringifyNode to prevent subtle uniqueness bugs
1 parent f68c106 commit f46a159

File tree

10 files changed

+301
-460
lines changed

10 files changed

+301
-460
lines changed

src/__fixtures__/bol-com-20190617.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56883,11 +56883,11 @@
5688356883
},
5688456884
"declarations": {
5688556885
"total": 8228,
56886-
"totalUnique": 1987,
56887-
"uniquenessRatio": 0.24149246475449684,
56886+
"totalUnique": 1986,
56887+
"uniquenessRatio": 0.24137092853670394,
5688856888
"unique": {
56889-
"total": 1987,
56890-
"ratio": 0.24149246475449684
56889+
"total": 1986,
56890+
"ratio": 0.24137092853670394
5689156891
},
5689256892
"importants": {
5689356893
"total": 534,

src/__fixtures__/bootstrap-5.0.0.json

Lines changed: 29 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -24037,11 +24037,11 @@
2403724037
},
2403824038
"declarations": {
2403924039
"total": 4091,
24040-
"totalUnique": 1209,
24041-
"uniquenessRatio": 0.29552676607186507,
24040+
"totalUnique": 1205,
24041+
"uniquenessRatio": 0.2945490100219995,
2404224042
"unique": {
24043-
"total": 1209,
24044-
"ratio": 0.29552676607186507
24043+
"total": 1205,
24044+
"ratio": 0.2945490100219995
2404524045
},
2404624046
"importants": {
2404724047
"total": 1279,
@@ -25143,28 +25143,27 @@
2514325143
},
2514425144
"fontFamilies": {
2514525145
"total": 5,
25146-
"totalUnique": 3,
25146+
"totalUnique": 2,
2514725147
"unique": {
2514825148
"var(--bs-font-sans-serif)": 3,
25149-
"var(--bs-font-monospace)": 1,
25150-
"var(--bs-font-monospace) ": 1
25149+
"var(--bs-font-monospace)": 2
2515125150
},
25152-
"uniquenessRatio": 0.6
25151+
"uniquenessRatio": 0.4
2515325152
},
2515425153
"fontSizes": {
2515525154
"total": 79,
25156-
"totalUnique": 35,
25155+
"totalUnique": 25,
2515725156
"unique": {
25158-
"1rem": 9,
25159-
"calc(1.375rem + 1.5vw)": 2,
25160-
"2.5rem": 2,
25161-
"calc(1.325rem + 0.9vw)": 1,
25162-
"2rem": 1,
25163-
"calc(1.3rem + 0.6vw)": 1,
25164-
"1.75rem": 1,
25165-
"calc(1.275rem + 0.3vw)": 2,
25166-
"1.5rem": 2,
25167-
"1.25rem": 11,
25157+
"1rem": 10,
25158+
"calc(1.375rem + 1.5vw)": 3,
25159+
"2.5rem": 3,
25160+
"calc(1.325rem + 0.9vw)": 2,
25161+
"2rem": 2,
25162+
"calc(1.3rem + 0.6vw)": 2,
25163+
"1.75rem": 2,
25164+
"calc(1.275rem + 0.3vw)": 3,
25165+
"1.5rem": 3,
25166+
"1.25rem": 12,
2516825167
"0.875em": 10,
2516925168
"0.75em": 2,
2517025169
"1em": 2,
@@ -25179,19 +25178,9 @@
2517925178
"calc(1.425rem + 2.1vw)": 1,
2518025179
"3rem": 1,
2518125180
"0.875rem": 12,
25182-
"0.75rem": 1,
25183-
"calc(1.375rem + 1.5vw) ": 1,
25184-
"calc(1.325rem + 0.9vw) ": 1,
25185-
"calc(1.3rem + 0.6vw) ": 1,
25186-
"calc(1.275rem + 0.3vw) ": 1,
25187-
"1.25rem ": 1,
25188-
"1rem ": 1,
25189-
"2.5rem ": 1,
25190-
"2rem ": 1,
25191-
"1.75rem ": 1,
25192-
"1.5rem ": 1
25181+
"0.75rem": 1
2519325182
},
25194-
"uniquenessRatio": 0.4430379746835443
25183+
"uniquenessRatio": 0.31645569620253167
2519525184
},
2519625185
"zindexes": {
2519725186
"total": 37,
@@ -25223,7 +25212,7 @@
2522325212
},
2522425213
"boxShadows": {
2522525214
"total": 54,
25226-
"totalUnique": 27,
25215+
"totalUnique": 26,
2522725216
"unique": {
2522825217
"inset 0 0 0 9999px var(--bs-table-accent-bg)": 1,
2522925218
"0 0 0 0.25rem rgba(13, 110, 253, 0.25)": 7,
@@ -25248,12 +25237,11 @@
2524825237
"0 0 0 0.25rem rgba(33, 37, 41, 0.5)": 2,
2524925238
"0 0 0 0.25rem": 1,
2525025239
"inset 0 -1px 0 rgba(0, 0, 0, 0.125)": 1,
25251-
"0 0.5rem 1rem rgba(0, 0, 0, 0.15)": 1,
25252-
"0 0.5rem 1rem rgba(0, 0, 0, 0.15) ": 1,
25253-
"0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) ": 1,
25254-
"0 1rem 3rem rgba(0, 0, 0, 0.175) ": 1
25240+
"0 0.5rem 1rem rgba(0, 0, 0, 0.15)": 2,
25241+
"0 0.125rem 0.25rem rgba(0, 0, 0, 0.075)": 1,
25242+
"0 1rem 3rem rgba(0, 0, 0, 0.175)": 1
2525525243
},
25256-
"uniquenessRatio": 0.5
25244+
"uniquenessRatio": 0.48148148148148145
2525725245
},
2525825246
"animations": {
2525925247
"durations": {
@@ -25287,16 +25275,15 @@
2528725275
},
2528825276
"prefixes": {
2528925277
"total": 11,
25290-
"totalUnique": 6,
25278+
"totalUnique": 5,
2529125279
"unique": {
25292-
" system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", \"Liberation Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"": 1,
25280+
"system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", \"Liberation Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"": 1,
2529325281
"-webkit-match-parent": 1,
2529425282
"-webkit-max-content": 1,
2529525283
"-moz-max-content": 1,
25296-
"-webkit-sticky": 6,
25297-
"-webkit-sticky ": 1
25284+
"-webkit-sticky": 7
2529825285
},
25299-
"uniquenessRatio": 0.5454545454545454
25286+
"uniquenessRatio": 0.45454545454545453
2530025287
},
2530125288
"browserhacks": {
2530225289
"total": 0,

src/__fixtures__/cnn-20220403.json

Lines changed: 24 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -153091,11 +153091,11 @@
153091153091
},
153092153092
"declarations": {
153093153093
"total": 27794,
153094-
"totalUnique": 5827,
153095-
"uniquenessRatio": 0.20964956465424192,
153094+
"totalUnique": 5823,
153095+
"uniquenessRatio": 0.20950564870115854,
153096153096
"unique": {
153097-
"total": 5827,
153098-
"ratio": 0.20964956465424192
153097+
"total": 5823,
153098+
"ratio": 0.20950564870115854
153099153099
},
153100153100
"importants": {
153101153101
"total": 345,
@@ -154631,7 +154631,7 @@
154631154631
},
154632154632
"fontFamilies": {
154633154633
"total": 802,
154634-
"totalUnique": 37,
154634+
"totalUnique": 35,
154635154635
"unique": {
154636154636
"sans-serif": 2,
154637154637
"monospace,serif": 1,
@@ -154643,7 +154643,7 @@
154643154643
"STYLE": 2,
154644154644
"CNN Business": 4,
154645154645
"CNN Travel": 6,
154646-
"cnn-icons": 212,
154646+
"cnn-icons": 214,
154647154647
"CNN,Helvetica Neue,Helvetica,Arial,Utkal,sans-serif": 197,
154648154648
"CNN,Helvetica Neue,Verdana,Geneva,sans-serif": 14,
154649154649
"Georgia,serif": 1,
@@ -154662,27 +154662,25 @@
154662154662
"\"DIN Condensed\"": 1,
154663154663
"\"CNN Business\"": 4,
154664154664
"\"CNN Travel\"": 6,
154665-
"CNN, \"Helvetica Neue\", Helvetica, Arial, Utkal, sans-serif": 228,
154665+
"CNN, \"Helvetica Neue\", Helvetica, Arial, Utkal, sans-serif": 229,
154666154666
"CNN, \"Helvetica Neue\", Verdana, Geneva, sans-serif": 12,
154667154667
"Georgia, serif": 1,
154668154668
"STYLE, \"Helvetica Neue\", Helvetica, Arial, Utkal, sans-serif": 1,
154669154669
"CNN, \"Helvetica Neue\", \"Arial Black\", Helvetica, Arial, Utkal, sans-serif": 4,
154670-
"CNN, \"Helvetica Neue\", Helvetica, Arial, Utkal, sans-serif ": 1,
154671-
"cnn-icons ": 2,
154672154670
"CNN, \"Helvetica Neue\", Verdana, Helvetica, Arial, Utkal, sans-serif": 1
154673154671
},
154674-
"uniquenessRatio": 0.046134663341645885
154672+
"uniquenessRatio": 0.043640897755610975
154675154673
},
154676154674
"fontSizes": {
154677154675
"total": 2308,
154678-
"totalUnique": 419,
154676+
"totalUnique": 412,
154679154677
"unique": {
154680154678
"0": 7,
154681154679
"100%": 5,
154682154680
"2em": 5,
154683154681
"1.5em": 6,
154684154682
"1.17em": 2,
154685-
"1em": 24,
154683+
"1em": 25,
154686154684
".83em": 1,
154687154685
".75em": 1,
154688154686
"75%": 3,
@@ -154701,7 +154699,7 @@
154701154699
"1.2rem": 80,
154702154700
"12px": 47,
154703154701
".8rem": 26,
154704-
"14px": 117,
154702+
"14px": 118,
154705154703
".93333rem": 67,
154706154704
"27px": 2,
154707154705
"1.8rem": 4,
@@ -154713,7 +154711,7 @@
154713154711
"3.6rem": 2,
154714154712
"25px": 5,
154715154713
"1.66667rem": 10,
154716-
"36px": 134,
154714+
"36px": 165,
154717154715
"2.4rem": 14,
154718154716
"52px": 8,
154719154717
"3.46667rem": 16,
@@ -154742,7 +154740,7 @@
154742154740
"3em": 4,
154743154741
"1.46667rem": 22,
154744154742
"21px": 1,
154745-
"1.4rem": 1,
154743+
"1.4rem": 2,
154746154744
"3.21429vw": 14,
154747154745
"2.41071vw": 4,
154748154746
"1.60714vw": 4,
@@ -154910,9 +154908,9 @@
154910154908
"2.09732vw": 2,
154911154909
"1.39821vw": 2,
154912154910
"1.9575vw": 2,
154913-
"150px": 5,
154914-
"15.625vw": 1,
154915-
"136px": 9,
154911+
"150px": 6,
154912+
"15.625vw": 2,
154913+
"136px": 10,
154916154914
"14.16667vw": 1,
154917154915
"46px": 1,
154918154916
"3.06667rem": 2,
@@ -155006,9 +155004,6 @@
155006155004
"0.53333rem": 1,
155007155005
"0px": 7,
155008155006
"0.86667rem": 6,
155009-
"14px ": 1,
155010-
"1.4rem ": 1,
155011-
"36px ": 31,
155012155007
"13.9286vw": 2,
155013155008
"10.4464vw": 1,
155014155009
"12.1179vw": 2,
@@ -155041,10 +155036,7 @@
155041155036
"43.7486px": 2,
155042155037
"43.1429px": 4,
155043155038
"37.5343px": 2,
155044-
"150px ": 1,
155045-
"15.625vw ": 1,
155046-
"136px ": 1,
155047-
"14.1667vw ": 1,
155039+
"14.1667vw": 1,
155048155040
"0.66667rem": 1,
155049155041
"12.1429vw": 2,
155050155042
"11.5357vw": 2,
@@ -155092,23 +155084,22 @@
155092155084
"0.688em": 1,
155093155085
"0.85em": 2,
155094155086
"0.7em": 2,
155095-
"1em ": 1,
155096155087
"0.6em": 2,
155097-
"1.32rem ": 1,
155088+
"1.32rem": 1,
155098155089
"64px": 1
155099155090
},
155100-
"uniquenessRatio": 0.1815424610051993
155091+
"uniquenessRatio": 0.17850953206239167
155101155092
},
155102155093
"zindexes": {
155103155094
"total": 401,
155104-
"totalUnique": 36,
155095+
"totalUnique": 34,
155105155096
"unique": {
155106155097
"0": 130,
155107155098
"1": 36,
155108155099
"2": 23,
155109155100
"3": 12,
155110-
"4": 1,
155111-
"5": 18,
155101+
"4": 2,
155102+
"5": 19,
155112155103
"9": 1,
155113155104
"26": 24,
155114155105
"27": 2,
@@ -155136,11 +155127,9 @@
155136155127
"-1": 5,
155137155128
"-22": 12,
155138155129
"-21": 8,
155139-
"4 ": 1,
155140-
"-9999": 1,
155141-
"5 ": 1
155130+
"-9999": 1
155142155131
},
155143-
"uniquenessRatio": 0.08977556109725686
155132+
"uniquenessRatio": 0.08478802992518704
155144155133
},
155145155134
"textShadows": {
155146155135
"total": 19,

src/__fixtures__/css-tricks-20190319.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20544,11 +20544,11 @@
2054420544
},
2054520545
"declarations": {
2054620546
"total": 4646,
20547-
"totalUnique": 1797,
20548-
"uniquenessRatio": 0.38678433060697376,
20547+
"totalUnique": 1796,
20548+
"uniquenessRatio": 0.3865690916917779,
2054920549
"unique": {
20550-
"total": 1797,
20551-
"ratio": 0.38678433060697376
20550+
"total": 1796,
20551+
"ratio": 0.3865690916917779
2055220552
},
2055320553
"importants": {
2055420554
"total": 71,

src/__fixtures__/facebook-20190319.json

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -41223,7 +41223,7 @@
4122341223
},
4122441224
"fontFamilies": {
4122541225
"total": 37,
41226-
"totalUnique": 17,
41226+
"totalUnique": 15,
4122741227
"unique": {
4122841228
"Helvetica, Arial, sans-serif": 18,
4122941229
"Helvetica Neue, Helvetica, Arial, sans-serif": 1,
@@ -41235,25 +41235,23 @@
4123541235
"Georgia, serif": 1,
4123641236
"'Open Dyslexic'": 1,
4123741237
"Helvetica,Arial,sans-serif": 1,
41238-
"'Freight Sans Bold', Helvetica, Arial, sans-serif": 1,
41239-
"'Freight Sans', Helvetica, Arial, sans-serif": 1,
41238+
"'Freight Sans Bold', Helvetica, Arial, sans-serif": 2,
41239+
"'Freight Sans', Helvetica, Arial, sans-serif": 2,
4124041240
"'Freight Sans'": 1,
4124141241
"'Freight Sans Bold'": 1,
41242-
"'Freight Sans', Helvetica, Arial, sans-serif ": 1,
41243-
"'Freight Sans Bold', Helvetica, Arial, sans-serif ": 1,
4124441242
"Georgia, Lucida Grande, Tahoma, Verdana, Arial, sans-serif": 3
4124541243
},
41246-
"uniquenessRatio": 0.4594594594594595
41244+
"uniquenessRatio": 0.40540540540540543
4124741245
},
4124841246
"fontSizes": {
4124941247
"total": 171,
41250-
"totalUnique": 40,
41248+
"totalUnique": 38,
4125141249
"unique": {
41252-
"0": 4,
41250+
"0": 5,
4125341251
"12px": 34,
4125441252
"13px": 18,
4125541253
"14px": 23,
41256-
"11px": 16,
41254+
"11px": 17,
4125741255
"1px": 1,
4125841256
"16px": 9,
4125941257
"18px": 9,
@@ -41264,8 +41262,6 @@
4126441262
"20px": 4,
4126541263
"40px": 2,
4126641264
"24px": 3,
41267-
"0 ": 1,
41268-
"11px ": 1,
4126941265
"15px": 5,
4127041266
"17px": 3,
4127141267
"19px": 4,
@@ -41290,7 +41286,7 @@
4129041286
"1.5rem": 1,
4129141287
"1.375rem": 1
4129241288
},
41293-
"uniquenessRatio": 0.23391812865497075
41289+
"uniquenessRatio": 0.2222222222222222
4129441290
},
4129541291
"zindexes": {
4129641292
"total": 52,

0 commit comments

Comments
 (0)