@projectwallace/css-analyzer 5.14.0 → 6.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,881 +1,892 @@
1
- /**
2
- * @typedef Options
3
- * @property {boolean} useUnstableLocations **WARNING: EXPERIMENTAL!** Use Locations (`{ 'item': [{ line, column, offset, length }] }`) instead of a regular count per occurrence (`{ 'item': 3 }`)
4
- */
5
- /**
6
- * Analyze CSS
7
- * @param {string} css
8
- * @param {Options} options
9
- */
10
- export function analyze(css: string, options?: Options): {
11
- stylesheet: {
12
- sourceLinesOfCode: number;
13
- linesOfCode: number;
14
- size: number;
15
- complexity: number;
16
- comments: {
17
- total: number;
18
- size: number;
19
- };
20
- embeddedContent: ({
21
- total: number;
22
- totalUnique: number;
23
- uniquenessRatio: number;
24
- unique: Record<string, number>;
25
- } & ({
26
- __unstable__uniqueWithLocations: Record<string, {
27
- line: number;
28
- column: number;
29
- offset: number;
30
- length: number;
31
- }[]>;
32
- } | {
33
- __unstable__uniqueWithLocations?: undefined;
34
- })) & {
35
- size: {
36
- total: number;
37
- ratio: number;
38
- };
39
- types: {
40
- total: number;
41
- totalUnique: number;
42
- uniquenessRatio: number;
43
- unique: {
44
- [k: string]: {
45
- size: number;
46
- count: number;
47
- } & ({
48
- __unstable__uniqueWithLocations?: undefined;
49
- } | {
50
- __unstable__uniqueWithLocations: {
51
- offset: number;
52
- line: number;
53
- column: number;
54
- length: number;
55
- }[];
56
- });
57
- };
58
- };
59
- };
60
- };
61
- atrules: {
62
- fontface: {
63
- total: number;
64
- totalUnique: number;
65
- unique: Record<string, string>[];
66
- uniquenessRatio: number;
67
- } & ({
68
- __unstable__uniqueWithLocations: Record<string, {
69
- line: number;
70
- column: number;
71
- offset: number;
72
- length: number;
73
- }[]>;
74
- } | {
75
- __unstable__uniqueWithLocations?: undefined;
76
- });
77
- import: {
78
- total: number;
79
- totalUnique: number;
80
- uniquenessRatio: number;
81
- unique: Record<string, number>;
82
- } & ({
83
- __unstable__uniqueWithLocations: Record<string, {
84
- line: number;
85
- column: number;
86
- offset: number;
87
- length: number;
88
- }[]>;
89
- } | {
90
- __unstable__uniqueWithLocations?: undefined;
91
- });
92
- media: ({
93
- total: number;
94
- totalUnique: number;
95
- uniquenessRatio: number;
96
- unique: Record<string, number>;
97
- } & ({
98
- __unstable__uniqueWithLocations: Record<string, {
99
- line: number;
100
- column: number;
101
- offset: number;
102
- length: number;
103
- }[]>;
104
- } | {
105
- __unstable__uniqueWithLocations?: undefined;
106
- })) & {
107
- browserhacks: {
108
- total: number;
109
- totalUnique: number;
110
- uniquenessRatio: number;
111
- unique: Record<string, number>;
112
- } & ({
113
- __unstable__uniqueWithLocations: Record<string, {
114
- line: number;
115
- column: number;
116
- offset: number;
117
- length: number;
118
- }[]>;
119
- } | {
120
- __unstable__uniqueWithLocations?: undefined;
121
- });
122
- };
123
- charset: {
124
- total: number;
125
- totalUnique: number;
126
- uniquenessRatio: number;
127
- unique: Record<string, number>;
128
- } & ({
129
- __unstable__uniqueWithLocations: Record<string, {
130
- line: number;
131
- column: number;
132
- offset: number;
133
- length: number;
134
- }[]>;
135
- } | {
136
- __unstable__uniqueWithLocations?: undefined;
137
- });
138
- supports: ({
139
- total: number;
140
- totalUnique: number;
141
- uniquenessRatio: number;
142
- unique: Record<string, number>;
143
- } & ({
144
- __unstable__uniqueWithLocations: Record<string, {
145
- line: number;
146
- column: number;
147
- offset: number;
148
- length: number;
149
- }[]>;
150
- } | {
151
- __unstable__uniqueWithLocations?: undefined;
152
- })) & {
153
- browserhacks: {
154
- total: number;
155
- totalUnique: number;
156
- uniquenessRatio: number;
157
- unique: Record<string, number>;
158
- } & ({
159
- __unstable__uniqueWithLocations: Record<string, {
160
- line: number;
161
- column: number;
162
- offset: number;
163
- length: number;
164
- }[]>;
165
- } | {
166
- __unstable__uniqueWithLocations?: undefined;
167
- });
168
- };
169
- keyframes: ({
170
- total: number;
171
- totalUnique: number;
172
- uniquenessRatio: number;
173
- unique: Record<string, number>;
174
- } & ({
175
- __unstable__uniqueWithLocations: Record<string, {
176
- line: number;
177
- column: number;
178
- offset: number;
179
- length: number;
180
- }[]>;
181
- } | {
182
- __unstable__uniqueWithLocations?: undefined;
183
- })) & {
184
- prefixed: ({
185
- total: number;
186
- totalUnique: number;
187
- uniquenessRatio: number;
188
- unique: Record<string, number>;
189
- } & ({
190
- __unstable__uniqueWithLocations: Record<string, {
191
- line: number;
192
- column: number;
193
- offset: number;
194
- length: number;
195
- }[]>;
196
- } | {
197
- __unstable__uniqueWithLocations?: undefined;
198
- })) & {
199
- ratio: number;
200
- };
201
- };
202
- container: {
203
- total: number;
204
- totalUnique: number;
205
- uniquenessRatio: number;
206
- unique: Record<string, number>;
207
- } & ({
208
- __unstable__uniqueWithLocations: Record<string, {
209
- line: number;
210
- column: number;
211
- offset: number;
212
- length: number;
213
- }[]>;
214
- } | {
215
- __unstable__uniqueWithLocations?: undefined;
216
- });
217
- layer: {
218
- total: number;
219
- totalUnique: number;
220
- uniquenessRatio: number;
221
- unique: Record<string, number>;
222
- } & ({
223
- __unstable__uniqueWithLocations: Record<string, {
224
- line: number;
225
- column: number;
226
- offset: number;
227
- length: number;
228
- }[]>;
229
- } | {
230
- __unstable__uniqueWithLocations?: undefined;
231
- });
232
- property: {
233
- total: number;
234
- totalUnique: number;
235
- uniquenessRatio: number;
236
- unique: Record<string, number>;
237
- } & ({
238
- __unstable__uniqueWithLocations: Record<string, {
239
- line: number;
240
- column: number;
241
- offset: number;
242
- length: number;
243
- }[]>;
244
- } | {
245
- __unstable__uniqueWithLocations?: undefined;
246
- });
247
- total: number;
248
- complexity: {
249
- min: number;
250
- max: number;
251
- mean: number;
252
- mode: number;
253
- median: number;
254
- range: number;
255
- sum: number;
256
- };
257
- };
258
- rules: {
259
- total: number;
260
- empty: {
261
- total: number;
262
- ratio: number;
263
- };
264
- sizes: {
265
- min: number;
266
- max: number;
267
- mean: number;
268
- mode: number;
269
- median: number;
270
- range: number;
271
- sum: number;
272
- } & {
273
- items: number[];
274
- } & ({
275
- total: number;
276
- totalUnique: number;
277
- uniquenessRatio: number;
278
- unique: Record<string, number>;
279
- } & ({
280
- __unstable__uniqueWithLocations: Record<string, {
281
- line: number;
282
- column: number;
283
- offset: number;
284
- length: number;
285
- }[]>;
286
- } | {
287
- __unstable__uniqueWithLocations?: undefined;
288
- }));
289
- selectors: {
290
- min: number;
291
- max: number;
292
- mean: number;
293
- mode: number;
294
- median: number;
295
- range: number;
296
- sum: number;
297
- } & {
298
- items: number[];
299
- } & ({
300
- total: number;
301
- totalUnique: number;
302
- uniquenessRatio: number;
303
- unique: Record<string, number>;
304
- } & ({
305
- __unstable__uniqueWithLocations: Record<string, {
306
- line: number;
307
- column: number;
308
- offset: number;
309
- length: number;
310
- }[]>;
311
- } | {
312
- __unstable__uniqueWithLocations?: undefined;
313
- }));
314
- declarations: {
315
- min: number;
316
- max: number;
317
- mean: number;
318
- mode: number;
319
- median: number;
320
- range: number;
321
- sum: number;
322
- } & {
323
- items: number[];
324
- } & ({
325
- total: number;
326
- totalUnique: number;
327
- uniquenessRatio: number;
328
- unique: Record<string, number>;
329
- } & ({
330
- __unstable__uniqueWithLocations: Record<string, {
331
- line: number;
332
- column: number;
333
- offset: number;
334
- length: number;
335
- }[]>;
336
- } | {
337
- __unstable__uniqueWithLocations?: undefined;
338
- }));
339
- };
340
- selectors: {
341
- total: number;
342
- totalUnique: number;
343
- uniquenessRatio: number;
344
- specificity: {
345
- /** @type Specificity */
346
- min: Specificity;
347
- /** @type Specificity */
348
- max: Specificity;
349
- /** @type Specificity */
350
- sum: Specificity;
351
- /** @type Specificity */
352
- mean: Specificity;
353
- /** @type Specificity */
354
- mode: Specificity;
355
- /** @type Specificity */
356
- median: Specificity;
357
- items: Specificity[];
358
- } & ({
359
- total: number;
360
- totalUnique: number;
361
- uniquenessRatio: number;
362
- unique: Record<string, number>;
363
- } & ({
364
- __unstable__uniqueWithLocations: Record<string, {
365
- line: number;
366
- column: number;
367
- offset: number;
368
- length: number;
369
- }[]>;
370
- } | {
371
- __unstable__uniqueWithLocations?: undefined;
372
- }));
373
- complexity: {
374
- min: number;
375
- max: number;
376
- mean: number;
377
- mode: number;
378
- median: number;
379
- range: number;
380
- sum: number;
381
- } & ({
382
- total: number;
383
- totalUnique: number;
384
- uniquenessRatio: number;
385
- unique: Record<string, number>;
386
- } & ({
387
- __unstable__uniqueWithLocations: Record<string, {
388
- line: number;
389
- column: number;
390
- offset: number;
391
- length: number;
392
- }[]>;
393
- } | {
394
- __unstable__uniqueWithLocations?: undefined;
395
- })) & {
396
- items: number[];
397
- };
398
- id: ({
399
- total: number;
400
- totalUnique: number;
401
- uniquenessRatio: number;
402
- unique: Record<string, number>;
403
- } & ({
404
- __unstable__uniqueWithLocations: Record<string, {
405
- line: number;
406
- column: number;
407
- offset: number;
408
- length: number;
409
- }[]>;
410
- } | {
411
- __unstable__uniqueWithLocations?: undefined;
412
- })) & {
413
- ratio: number;
414
- };
415
- accessibility: ({
416
- total: number;
417
- totalUnique: number;
418
- uniquenessRatio: number;
419
- unique: Record<string, number>;
420
- } & ({
421
- __unstable__uniqueWithLocations: Record<string, {
422
- line: number;
423
- column: number;
424
- offset: number;
425
- length: number;
426
- }[]>;
427
- } | {
428
- __unstable__uniqueWithLocations?: undefined;
429
- })) & {
430
- ratio: number;
431
- };
432
- keyframes: {
433
- total: number;
434
- totalUnique: number;
435
- uniquenessRatio: number;
436
- unique: Record<string, number>;
437
- } & ({
438
- __unstable__uniqueWithLocations: Record<string, {
439
- line: number;
440
- column: number;
441
- offset: number;
442
- length: number;
443
- }[]>;
444
- } | {
445
- __unstable__uniqueWithLocations?: undefined;
446
- });
447
- prefixed: ({
448
- total: number;
449
- totalUnique: number;
450
- uniquenessRatio: number;
451
- unique: Record<string, number>;
452
- } & ({
453
- __unstable__uniqueWithLocations: Record<string, {
454
- line: number;
455
- column: number;
456
- offset: number;
457
- length: number;
458
- }[]>;
459
- } | {
460
- __unstable__uniqueWithLocations?: undefined;
461
- })) & {
462
- ratio: number;
463
- };
464
- combinators: {
465
- total: number;
466
- totalUnique: number;
467
- uniquenessRatio: number;
468
- unique: Record<string, number>;
469
- } & ({
470
- __unstable__uniqueWithLocations: Record<string, {
471
- line: number;
472
- column: number;
473
- offset: number;
474
- length: number;
475
- }[]>;
476
- } | {
477
- __unstable__uniqueWithLocations?: undefined;
478
- });
479
- };
480
- declarations: {
481
- total: number;
482
- totalUnique: number;
483
- uniquenessRatio: number;
484
- unique: {
485
- total: number;
486
- ratio: number;
487
- };
488
- importants: {
489
- total: number;
490
- ratio: number;
491
- inKeyframes: {
492
- total: number;
493
- ratio: number;
494
- };
495
- };
496
- complexity: {
497
- min: number;
498
- max: number;
499
- mean: number;
500
- mode: number;
501
- median: number;
502
- range: number;
503
- sum: number;
504
- };
505
- };
506
- properties: ({
507
- total: number;
508
- totalUnique: number;
509
- uniquenessRatio: number;
510
- unique: Record<string, number>;
511
- } & ({
512
- __unstable__uniqueWithLocations: Record<string, {
513
- line: number;
514
- column: number;
515
- offset: number;
516
- length: number;
517
- }[]>;
518
- } | {
519
- __unstable__uniqueWithLocations?: undefined;
520
- })) & {
521
- prefixed: ({
522
- total: number;
523
- totalUnique: number;
524
- uniquenessRatio: number;
525
- unique: Record<string, number>;
526
- } & ({
527
- __unstable__uniqueWithLocations: Record<string, {
528
- line: number;
529
- column: number;
530
- offset: number;
531
- length: number;
532
- }[]>;
533
- } | {
534
- __unstable__uniqueWithLocations?: undefined;
535
- })) & {
536
- ratio: number;
537
- };
538
- custom: ({
539
- total: number;
540
- totalUnique: number;
541
- uniquenessRatio: number;
542
- unique: Record<string, number>;
543
- } & ({
544
- __unstable__uniqueWithLocations: Record<string, {
545
- line: number;
546
- column: number;
547
- offset: number;
548
- length: number;
549
- }[]>;
550
- } | {
551
- __unstable__uniqueWithLocations?: undefined;
552
- })) & {
553
- ratio: number;
554
- importants: ({
555
- total: number;
556
- totalUnique: number;
557
- uniquenessRatio: number;
558
- unique: Record<string, number>;
559
- } & ({
560
- __unstable__uniqueWithLocations: Record<string, {
561
- line: number;
562
- column: number;
563
- offset: number;
564
- length: number;
565
- }[]>;
566
- } | {
567
- __unstable__uniqueWithLocations?: undefined;
568
- })) & {
569
- ratio: number;
570
- };
571
- };
572
- browserhacks: ({
573
- total: number;
574
- totalUnique: number;
575
- uniquenessRatio: number;
576
- unique: Record<string, number>;
577
- } & ({
578
- __unstable__uniqueWithLocations: Record<string, {
579
- line: number;
580
- column: number;
581
- offset: number;
582
- length: number;
583
- }[]>;
584
- } | {
585
- __unstable__uniqueWithLocations?: undefined;
586
- })) & {
587
- ratio: number;
588
- };
589
- complexity: {
590
- min: number;
591
- max: number;
592
- mean: number;
593
- mode: number;
594
- median: number;
595
- range: number;
596
- sum: number;
597
- };
598
- };
599
- values: {
600
- colors: (({
601
- total: number;
602
- totalUnique: number;
603
- uniquenessRatio: number;
604
- unique: Record<string, number>;
605
- } & ({
606
- __unstable__uniqueWithLocations: Record<string, {
607
- line: number;
608
- column: number;
609
- offset: number;
610
- length: number;
611
- }[]>;
612
- } | {
613
- __unstable__uniqueWithLocations?: undefined;
614
- })) & {
615
- itemsPerContext: {
616
- [k: string]: {
617
- total: number;
618
- totalUnique: number;
619
- unique: Record<string, number>;
620
- uniquenessRatio: number;
621
- };
622
- };
623
- }) & {
624
- formats: {
625
- total: number;
626
- totalUnique: number;
627
- uniquenessRatio: number;
628
- unique: Record<string, number>;
629
- } & ({
630
- __unstable__uniqueWithLocations: Record<string, {
631
- line: number;
632
- column: number;
633
- offset: number;
634
- length: number;
635
- }[]>;
636
- } | {
637
- __unstable__uniqueWithLocations?: undefined;
638
- });
639
- };
640
- gradients: {
641
- total: number;
642
- totalUnique: number;
643
- uniquenessRatio: number;
644
- unique: Record<string, number>;
645
- } & ({
646
- __unstable__uniqueWithLocations: Record<string, {
647
- line: number;
648
- column: number;
649
- offset: number;
650
- length: number;
651
- }[]>;
652
- } | {
653
- __unstable__uniqueWithLocations?: undefined;
654
- });
655
- fontFamilies: {
656
- total: number;
657
- totalUnique: number;
658
- uniquenessRatio: number;
659
- unique: Record<string, number>;
660
- } & ({
661
- __unstable__uniqueWithLocations: Record<string, {
662
- line: number;
663
- column: number;
664
- offset: number;
665
- length: number;
666
- }[]>;
667
- } | {
668
- __unstable__uniqueWithLocations?: undefined;
669
- });
670
- fontSizes: {
671
- total: number;
672
- totalUnique: number;
673
- uniquenessRatio: number;
674
- unique: Record<string, number>;
675
- } & ({
676
- __unstable__uniqueWithLocations: Record<string, {
677
- line: number;
678
- column: number;
679
- offset: number;
680
- length: number;
681
- }[]>;
682
- } | {
683
- __unstable__uniqueWithLocations?: undefined;
684
- });
685
- lineHeights: {
686
- total: number;
687
- totalUnique: number;
688
- uniquenessRatio: number;
689
- unique: Record<string, number>;
690
- } & ({
691
- __unstable__uniqueWithLocations: Record<string, {
692
- line: number;
693
- column: number;
694
- offset: number;
695
- length: number;
696
- }[]>;
697
- } | {
698
- __unstable__uniqueWithLocations?: undefined;
699
- });
700
- zindexes: {
701
- total: number;
702
- totalUnique: number;
703
- uniquenessRatio: number;
704
- unique: Record<string, number>;
705
- } & ({
706
- __unstable__uniqueWithLocations: Record<string, {
707
- line: number;
708
- column: number;
709
- offset: number;
710
- length: number;
711
- }[]>;
712
- } | {
713
- __unstable__uniqueWithLocations?: undefined;
714
- });
715
- textShadows: {
716
- total: number;
717
- totalUnique: number;
718
- uniquenessRatio: number;
719
- unique: Record<string, number>;
720
- } & ({
721
- __unstable__uniqueWithLocations: Record<string, {
722
- line: number;
723
- column: number;
724
- offset: number;
725
- length: number;
726
- }[]>;
727
- } | {
728
- __unstable__uniqueWithLocations?: undefined;
729
- });
730
- boxShadows: {
731
- total: number;
732
- totalUnique: number;
733
- uniquenessRatio: number;
734
- unique: Record<string, number>;
735
- } & ({
736
- __unstable__uniqueWithLocations: Record<string, {
737
- line: number;
738
- column: number;
739
- offset: number;
740
- length: number;
741
- }[]>;
742
- } | {
743
- __unstable__uniqueWithLocations?: undefined;
744
- });
745
- animations: {
746
- durations: {
747
- total: number;
748
- totalUnique: number;
749
- uniquenessRatio: number;
750
- unique: Record<string, number>;
751
- } & ({
752
- __unstable__uniqueWithLocations: Record<string, {
753
- line: number;
754
- column: number;
755
- offset: number;
756
- length: number;
757
- }[]>;
758
- } | {
759
- __unstable__uniqueWithLocations?: undefined;
760
- });
761
- timingFunctions: {
762
- total: number;
763
- totalUnique: number;
764
- uniquenessRatio: number;
765
- unique: Record<string, number>;
766
- } & ({
767
- __unstable__uniqueWithLocations: Record<string, {
768
- line: number;
769
- column: number;
770
- offset: number;
771
- length: number;
772
- }[]>;
773
- } | {
774
- __unstable__uniqueWithLocations?: undefined;
775
- });
776
- };
777
- prefixes: {
778
- total: number;
779
- totalUnique: number;
780
- uniquenessRatio: number;
781
- unique: Record<string, number>;
782
- } & ({
783
- __unstable__uniqueWithLocations: Record<string, {
784
- line: number;
785
- column: number;
786
- offset: number;
787
- length: number;
788
- }[]>;
789
- } | {
790
- __unstable__uniqueWithLocations?: undefined;
791
- });
792
- browserhacks: {
793
- total: number;
794
- totalUnique: number;
795
- uniquenessRatio: number;
796
- unique: Record<string, number>;
797
- } & ({
798
- __unstable__uniqueWithLocations: Record<string, {
799
- line: number;
800
- column: number;
801
- offset: number;
802
- length: number;
803
- }[]>;
804
- } | {
805
- __unstable__uniqueWithLocations?: undefined;
806
- });
807
- units: ({
808
- total: number;
809
- totalUnique: number;
810
- uniquenessRatio: number;
811
- unique: Record<string, number>;
812
- } & ({
813
- __unstable__uniqueWithLocations: Record<string, {
814
- line: number;
815
- column: number;
816
- offset: number;
817
- length: number;
818
- }[]>;
819
- } | {
820
- __unstable__uniqueWithLocations?: undefined;
821
- })) & {
822
- itemsPerContext: {
823
- [k: string]: {
824
- total: number;
825
- totalUnique: number;
826
- unique: Record<string, number>;
827
- uniquenessRatio: number;
828
- };
829
- };
830
- };
831
- complexity: {
832
- min: number;
833
- max: number;
834
- mean: number;
835
- mode: number;
836
- median: number;
837
- range: number;
838
- sum: number;
839
- };
840
- keywords: {
841
- total: number;
842
- totalUnique: number;
843
- uniquenessRatio: number;
844
- unique: Record<string, number>;
845
- } & ({
846
- __unstable__uniqueWithLocations: Record<string, {
847
- line: number;
848
- column: number;
849
- offset: number;
850
- length: number;
851
- }[]>;
852
- } | {
853
- __unstable__uniqueWithLocations?: undefined;
854
- });
855
- };
856
- __meta__: {
857
- parseTime: number;
858
- analyzeTime: number;
859
- total: number;
860
- };
861
- };
862
- /**
863
- * Compare specificity A to Specificity B
864
- * @param {Specificity} a - Specificity A
865
- * @param {Specificity} b - Specificity B
866
- * @returns {number} sortIndex - 0 when a==b, 1 when a<b, -1 when a>b
867
- */
868
- export function compareSpecificity(a: Specificity, b: Specificity): number;
869
- export { isBrowserhack as isValueBrowserhack } from "./values/browserhacks.js";
870
- export { isHack as isPropertyHack } from "./properties/property-utils.js";
871
- export { isValuePrefixed } from "./values/vendor-prefix.js";
872
- export { hasVendorPrefix } from "./vendor-prefix.js";
873
- export type Specificity = [number, number, number];
874
- export type Options = {
875
- /**
876
- * **WARNING: EXPERIMENTAL!** Use Locations (`{ 'item': [{ line, column, offset, length }] }`) instead of a regular count per occurrence (`{ 'item': 3 }`)
877
- */
878
- useUnstableLocations: boolean;
879
- };
880
- export { getComplexity as selectorComplexity, isPrefixed as isSelectorPrefixed, isAccessibility as isAccessibilitySelector } from "./selectors/utils.js";
881
- export { isSupportsBrowserhack, isMediaBrowserhack } from "./atrules/atrules.js";
1
+ /**
2
+ * @typedef Options
3
+ * @property {boolean} useLocations Use Locations (`{ 'item': [{ line, column, offset, length }] }`) instead of a regular count per occurrence (`{ 'item': 3 }`)
4
+ */
5
+ /**
6
+ * Analyze CSS
7
+ * @param {string} css
8
+ * @param {Options} options
9
+ */
10
+ export function analyze(css: string, options?: Options): {
11
+ stylesheet: {
12
+ sourceLinesOfCode: number;
13
+ linesOfCode: number;
14
+ size: number;
15
+ complexity: number;
16
+ comments: {
17
+ total: number;
18
+ size: number;
19
+ };
20
+ embeddedContent: {
21
+ size: {
22
+ total: number;
23
+ ratio: number;
24
+ };
25
+ types: {
26
+ total: number;
27
+ totalUnique: number;
28
+ uniquenessRatio: number;
29
+ unique: {
30
+ [k: string]: {
31
+ size: number;
32
+ count: number;
33
+ } & ({
34
+ uniqueWithLocations?: undefined;
35
+ } | {
36
+ uniqueWithLocations: {
37
+ offset: number;
38
+ line: number;
39
+ column: number;
40
+ length: number;
41
+ }[];
42
+ });
43
+ };
44
+ };
45
+ };
46
+ };
47
+ atrules: {
48
+ fontface: {
49
+ total: number;
50
+ totalUnique: number;
51
+ unique: Record<string, string>[];
52
+ uniquenessRatio: number;
53
+ } & ({
54
+ uniqueWithLocations: Record<string, {
55
+ line: number;
56
+ column: number;
57
+ offset: number;
58
+ length: number;
59
+ }[]> | undefined;
60
+ } | {
61
+ uniqueWithLocations?: undefined;
62
+ });
63
+ import: {
64
+ total: number;
65
+ totalUnique: number;
66
+ uniquenessRatio: number;
67
+ unique: Record<string, number>;
68
+ } & ({
69
+ uniqueWithLocations: Record<string, {
70
+ line: number;
71
+ column: number;
72
+ offset: number;
73
+ length: number;
74
+ }[]>;
75
+ } | {
76
+ uniqueWithLocations?: undefined;
77
+ });
78
+ media: ({
79
+ total: number;
80
+ totalUnique: number;
81
+ uniquenessRatio: number;
82
+ unique: Record<string, number>;
83
+ } & ({
84
+ uniqueWithLocations: Record<string, {
85
+ line: number;
86
+ column: number;
87
+ offset: number;
88
+ length: number;
89
+ }[]>;
90
+ } | {
91
+ uniqueWithLocations?: undefined;
92
+ })) & {
93
+ browserhacks: {
94
+ total: number;
95
+ totalUnique: number;
96
+ uniquenessRatio: number;
97
+ unique: Record<string, number>;
98
+ } & ({
99
+ uniqueWithLocations: Record<string, {
100
+ line: number;
101
+ column: number;
102
+ offset: number;
103
+ length: number;
104
+ }[]>;
105
+ } | {
106
+ uniqueWithLocations?: undefined;
107
+ });
108
+ };
109
+ charset: {
110
+ total: number;
111
+ totalUnique: number;
112
+ uniquenessRatio: number;
113
+ unique: Record<string, number>;
114
+ } & ({
115
+ uniqueWithLocations: Record<string, {
116
+ line: number;
117
+ column: number;
118
+ offset: number;
119
+ length: number;
120
+ }[]>;
121
+ } | {
122
+ uniqueWithLocations?: undefined;
123
+ });
124
+ supports: ({
125
+ total: number;
126
+ totalUnique: number;
127
+ uniquenessRatio: number;
128
+ unique: Record<string, number>;
129
+ } & ({
130
+ uniqueWithLocations: Record<string, {
131
+ line: number;
132
+ column: number;
133
+ offset: number;
134
+ length: number;
135
+ }[]>;
136
+ } | {
137
+ uniqueWithLocations?: undefined;
138
+ })) & {
139
+ browserhacks: {
140
+ total: number;
141
+ totalUnique: number;
142
+ uniquenessRatio: number;
143
+ unique: Record<string, number>;
144
+ } & ({
145
+ uniqueWithLocations: Record<string, {
146
+ line: number;
147
+ column: number;
148
+ offset: number;
149
+ length: number;
150
+ }[]>;
151
+ } | {
152
+ uniqueWithLocations?: undefined;
153
+ });
154
+ };
155
+ keyframes: ({
156
+ total: number;
157
+ totalUnique: number;
158
+ uniquenessRatio: number;
159
+ unique: Record<string, number>;
160
+ } & ({
161
+ uniqueWithLocations: Record<string, {
162
+ line: number;
163
+ column: number;
164
+ offset: number;
165
+ length: number;
166
+ }[]>;
167
+ } | {
168
+ uniqueWithLocations?: undefined;
169
+ })) & {
170
+ prefixed: ({
171
+ total: number;
172
+ totalUnique: number;
173
+ uniquenessRatio: number;
174
+ unique: Record<string, number>;
175
+ } & ({
176
+ uniqueWithLocations: Record<string, {
177
+ line: number;
178
+ column: number;
179
+ offset: number;
180
+ length: number;
181
+ }[]>;
182
+ } | {
183
+ uniqueWithLocations?: undefined;
184
+ })) & {
185
+ ratio: number;
186
+ };
187
+ };
188
+ container: {
189
+ total: number;
190
+ totalUnique: number;
191
+ uniquenessRatio: number;
192
+ unique: Record<string, number>;
193
+ } & ({
194
+ uniqueWithLocations: Record<string, {
195
+ line: number;
196
+ column: number;
197
+ offset: number;
198
+ length: number;
199
+ }[]>;
200
+ } | {
201
+ uniqueWithLocations?: undefined;
202
+ });
203
+ layer: {
204
+ total: number;
205
+ totalUnique: number;
206
+ uniquenessRatio: number;
207
+ unique: Record<string, number>;
208
+ } & ({
209
+ uniqueWithLocations: Record<string, {
210
+ line: number;
211
+ column: number;
212
+ offset: number;
213
+ length: number;
214
+ }[]>;
215
+ } | {
216
+ uniqueWithLocations?: undefined;
217
+ });
218
+ property: {
219
+ total: number;
220
+ totalUnique: number;
221
+ uniquenessRatio: number;
222
+ unique: Record<string, number>;
223
+ } & ({
224
+ uniqueWithLocations: Record<string, {
225
+ line: number;
226
+ column: number;
227
+ offset: number;
228
+ length: number;
229
+ }[]>;
230
+ } | {
231
+ uniqueWithLocations?: undefined;
232
+ });
233
+ total: number;
234
+ complexity: {
235
+ min: number | undefined;
236
+ max: number | undefined;
237
+ mean: number;
238
+ mode: number;
239
+ range: number;
240
+ sum: number;
241
+ };
242
+ };
243
+ rules: {
244
+ total: number;
245
+ empty: {
246
+ total: number;
247
+ ratio: number;
248
+ };
249
+ sizes: {
250
+ min: number | undefined;
251
+ max: number | undefined;
252
+ mean: number;
253
+ mode: number;
254
+ range: number;
255
+ sum: number;
256
+ } & ({
257
+ items: number[];
258
+ } & ({
259
+ total: number;
260
+ totalUnique: number;
261
+ uniquenessRatio: number;
262
+ unique: Record<string, number>;
263
+ } & ({
264
+ uniqueWithLocations: Record<string, {
265
+ line: number;
266
+ column: number;
267
+ offset: number;
268
+ length: number;
269
+ }[]>;
270
+ } | {
271
+ uniqueWithLocations?: undefined;
272
+ })));
273
+ selectors: {
274
+ min: number | undefined;
275
+ max: number | undefined;
276
+ mean: number;
277
+ mode: number;
278
+ range: number;
279
+ sum: number;
280
+ } & ({
281
+ items: number[];
282
+ } & ({
283
+ total: number;
284
+ totalUnique: number;
285
+ uniquenessRatio: number;
286
+ unique: Record<string, number>;
287
+ } & ({
288
+ uniqueWithLocations: Record<string, {
289
+ line: number;
290
+ column: number;
291
+ offset: number;
292
+ length: number;
293
+ }[]>;
294
+ } | {
295
+ uniqueWithLocations?: undefined;
296
+ })));
297
+ declarations: {
298
+ min: number | undefined;
299
+ max: number | undefined;
300
+ mean: number;
301
+ mode: number;
302
+ range: number;
303
+ sum: number;
304
+ } & ({
305
+ items: number[];
306
+ } & ({
307
+ total: number;
308
+ totalUnique: number;
309
+ uniquenessRatio: number;
310
+ unique: Record<string, number>;
311
+ } & ({
312
+ uniqueWithLocations: Record<string, {
313
+ line: number;
314
+ column: number;
315
+ offset: number;
316
+ length: number;
317
+ }[]>;
318
+ } | {
319
+ uniqueWithLocations?: undefined;
320
+ })));
321
+ };
322
+ selectors: {
323
+ total: number;
324
+ totalUnique: number;
325
+ uniquenessRatio: number;
326
+ specificity: {
327
+ /** @type Specificity */
328
+ min: Specificity;
329
+ /** @type Specificity */
330
+ max: Specificity;
331
+ /** @type Specificity */
332
+ sum: Specificity;
333
+ /** @type Specificity */
334
+ mean: Specificity;
335
+ /** @type Specificity */
336
+ mode: Specificity;
337
+ /** @type Specificity */
338
+ items: Specificity;
339
+ } & ({
340
+ total: number;
341
+ totalUnique: number;
342
+ uniquenessRatio: number;
343
+ unique: Record<string, number>;
344
+ } & ({
345
+ uniqueWithLocations: Record<string, {
346
+ line: number;
347
+ column: number;
348
+ offset: number;
349
+ length: number;
350
+ }[]>;
351
+ } | {
352
+ uniqueWithLocations?: undefined;
353
+ }));
354
+ complexity: {
355
+ min: number | undefined;
356
+ max: number | undefined;
357
+ mean: number;
358
+ mode: number;
359
+ range: number;
360
+ sum: number;
361
+ } & (({
362
+ total: number;
363
+ totalUnique: number;
364
+ uniquenessRatio: number;
365
+ unique: Record<string, number>;
366
+ } & ({
367
+ uniqueWithLocations: Record<string, {
368
+ line: number;
369
+ column: number;
370
+ offset: number;
371
+ length: number;
372
+ }[]>;
373
+ } | {
374
+ uniqueWithLocations?: undefined;
375
+ })) & {
376
+ items: number[];
377
+ });
378
+ id: ({
379
+ total: number;
380
+ totalUnique: number;
381
+ uniquenessRatio: number;
382
+ unique: Record<string, number>;
383
+ } & ({
384
+ uniqueWithLocations: Record<string, {
385
+ line: number;
386
+ column: number;
387
+ offset: number;
388
+ length: number;
389
+ }[]>;
390
+ } | {
391
+ uniqueWithLocations?: undefined;
392
+ })) & {
393
+ ratio: number;
394
+ };
395
+ pseudoClasses: {
396
+ total: number;
397
+ totalUnique: number;
398
+ uniquenessRatio: number;
399
+ unique: Record<string, number>;
400
+ } & ({
401
+ uniqueWithLocations: Record<string, {
402
+ line: number;
403
+ column: number;
404
+ offset: number;
405
+ length: number;
406
+ }[]>;
407
+ } | {
408
+ uniqueWithLocations?: undefined;
409
+ });
410
+ accessibility: ({
411
+ total: number;
412
+ totalUnique: number;
413
+ uniquenessRatio: number;
414
+ unique: Record<string, number>;
415
+ } & ({
416
+ uniqueWithLocations: Record<string, {
417
+ line: number;
418
+ column: number;
419
+ offset: number;
420
+ length: number;
421
+ }[]>;
422
+ } | {
423
+ uniqueWithLocations?: undefined;
424
+ })) & {
425
+ ratio: number;
426
+ };
427
+ keyframes: {
428
+ total: number;
429
+ totalUnique: number;
430
+ uniquenessRatio: number;
431
+ unique: Record<string, number>;
432
+ } & ({
433
+ uniqueWithLocations: Record<string, {
434
+ line: number;
435
+ column: number;
436
+ offset: number;
437
+ length: number;
438
+ }[]>;
439
+ } | {
440
+ uniqueWithLocations?: undefined;
441
+ });
442
+ prefixed: ({
443
+ total: number;
444
+ totalUnique: number;
445
+ uniquenessRatio: number;
446
+ unique: Record<string, number>;
447
+ } & ({
448
+ uniqueWithLocations: Record<string, {
449
+ line: number;
450
+ column: number;
451
+ offset: number;
452
+ length: number;
453
+ }[]>;
454
+ } | {
455
+ uniqueWithLocations?: undefined;
456
+ })) & {
457
+ ratio: number;
458
+ };
459
+ combinators: {
460
+ total: number;
461
+ totalUnique: number;
462
+ uniquenessRatio: number;
463
+ unique: Record<string, number>;
464
+ } & ({
465
+ uniqueWithLocations: Record<string, {
466
+ line: number;
467
+ column: number;
468
+ offset: number;
469
+ length: number;
470
+ }[]>;
471
+ } | {
472
+ uniqueWithLocations?: undefined;
473
+ });
474
+ };
475
+ declarations: {
476
+ total: number;
477
+ totalUnique: number;
478
+ uniquenessRatio: number;
479
+ importants: {
480
+ total: number;
481
+ ratio: number;
482
+ inKeyframes: {
483
+ total: number;
484
+ ratio: number;
485
+ };
486
+ };
487
+ complexity: {
488
+ min: number | undefined;
489
+ max: number | undefined;
490
+ mean: number;
491
+ mode: number;
492
+ range: number;
493
+ sum: number;
494
+ };
495
+ };
496
+ properties: ({
497
+ total: number;
498
+ totalUnique: number;
499
+ uniquenessRatio: number;
500
+ unique: Record<string, number>;
501
+ } & ({
502
+ uniqueWithLocations: Record<string, {
503
+ line: number;
504
+ column: number;
505
+ offset: number;
506
+ length: number;
507
+ }[]>;
508
+ } | {
509
+ uniqueWithLocations?: undefined;
510
+ })) & {
511
+ prefixed: ({
512
+ total: number;
513
+ totalUnique: number;
514
+ uniquenessRatio: number;
515
+ unique: Record<string, number>;
516
+ } & ({
517
+ uniqueWithLocations: Record<string, {
518
+ line: number;
519
+ column: number;
520
+ offset: number;
521
+ length: number;
522
+ }[]>;
523
+ } | {
524
+ uniqueWithLocations?: undefined;
525
+ })) & {
526
+ ratio: number;
527
+ };
528
+ custom: ({
529
+ total: number;
530
+ totalUnique: number;
531
+ uniquenessRatio: number;
532
+ unique: Record<string, number>;
533
+ } & ({
534
+ uniqueWithLocations: Record<string, {
535
+ line: number;
536
+ column: number;
537
+ offset: number;
538
+ length: number;
539
+ }[]>;
540
+ } | {
541
+ uniqueWithLocations?: undefined;
542
+ })) & {
543
+ ratio: number;
544
+ importants: ({
545
+ total: number;
546
+ totalUnique: number;
547
+ uniquenessRatio: number;
548
+ unique: Record<string, number>;
549
+ } & ({
550
+ uniqueWithLocations: Record<string, {
551
+ line: number;
552
+ column: number;
553
+ offset: number;
554
+ length: number;
555
+ }[]>;
556
+ } | {
557
+ uniqueWithLocations?: undefined;
558
+ })) & {
559
+ ratio: number;
560
+ };
561
+ };
562
+ browserhacks: ({
563
+ total: number;
564
+ totalUnique: number;
565
+ uniquenessRatio: number;
566
+ unique: Record<string, number>;
567
+ } & ({
568
+ uniqueWithLocations: Record<string, {
569
+ line: number;
570
+ column: number;
571
+ offset: number;
572
+ length: number;
573
+ }[]>;
574
+ } | {
575
+ uniqueWithLocations?: undefined;
576
+ })) & {
577
+ ratio: number;
578
+ };
579
+ complexity: {
580
+ min: number | undefined;
581
+ max: number | undefined;
582
+ mean: number;
583
+ mode: number;
584
+ range: number;
585
+ sum: number;
586
+ };
587
+ };
588
+ values: {
589
+ colors: (({
590
+ total: number;
591
+ totalUnique: number;
592
+ uniquenessRatio: number;
593
+ unique: Record<string, number>;
594
+ } & ({
595
+ uniqueWithLocations: Record<string, {
596
+ line: number;
597
+ column: number;
598
+ offset: number;
599
+ length: number;
600
+ }[]>;
601
+ } | {
602
+ uniqueWithLocations?: undefined;
603
+ })) & {
604
+ itemsPerContext: {
605
+ [k: string]: {
606
+ total: number;
607
+ totalUnique: number;
608
+ unique: Record<string, number>;
609
+ uniquenessRatio: number;
610
+ };
611
+ };
612
+ }) & {
613
+ formats: {
614
+ total: number;
615
+ totalUnique: number;
616
+ uniquenessRatio: number;
617
+ unique: Record<string, number>;
618
+ } & ({
619
+ uniqueWithLocations: Record<string, {
620
+ line: number;
621
+ column: number;
622
+ offset: number;
623
+ length: number;
624
+ }[]>;
625
+ } | {
626
+ uniqueWithLocations?: undefined;
627
+ });
628
+ };
629
+ gradients: {
630
+ total: number;
631
+ totalUnique: number;
632
+ uniquenessRatio: number;
633
+ unique: Record<string, number>;
634
+ } & ({
635
+ uniqueWithLocations: Record<string, {
636
+ line: number;
637
+ column: number;
638
+ offset: number;
639
+ length: number;
640
+ }[]>;
641
+ } | {
642
+ uniqueWithLocations?: undefined;
643
+ });
644
+ fontFamilies: {
645
+ total: number;
646
+ totalUnique: number;
647
+ uniquenessRatio: number;
648
+ unique: Record<string, number>;
649
+ } & ({
650
+ uniqueWithLocations: Record<string, {
651
+ line: number;
652
+ column: number;
653
+ offset: number;
654
+ length: number;
655
+ }[]>;
656
+ } | {
657
+ uniqueWithLocations?: undefined;
658
+ });
659
+ fontSizes: {
660
+ total: number;
661
+ totalUnique: number;
662
+ uniquenessRatio: number;
663
+ unique: Record<string, number>;
664
+ } & ({
665
+ uniqueWithLocations: Record<string, {
666
+ line: number;
667
+ column: number;
668
+ offset: number;
669
+ length: number;
670
+ }[]>;
671
+ } | {
672
+ uniqueWithLocations?: undefined;
673
+ });
674
+ lineHeights: {
675
+ total: number;
676
+ totalUnique: number;
677
+ uniquenessRatio: number;
678
+ unique: Record<string, number>;
679
+ } & ({
680
+ uniqueWithLocations: Record<string, {
681
+ line: number;
682
+ column: number;
683
+ offset: number;
684
+ length: number;
685
+ }[]>;
686
+ } | {
687
+ uniqueWithLocations?: undefined;
688
+ });
689
+ zindexes: {
690
+ total: number;
691
+ totalUnique: number;
692
+ uniquenessRatio: number;
693
+ unique: Record<string, number>;
694
+ } & ({
695
+ uniqueWithLocations: Record<string, {
696
+ line: number;
697
+ column: number;
698
+ offset: number;
699
+ length: number;
700
+ }[]>;
701
+ } | {
702
+ uniqueWithLocations?: undefined;
703
+ });
704
+ textShadows: {
705
+ total: number;
706
+ totalUnique: number;
707
+ uniquenessRatio: number;
708
+ unique: Record<string, number>;
709
+ } & ({
710
+ uniqueWithLocations: Record<string, {
711
+ line: number;
712
+ column: number;
713
+ offset: number;
714
+ length: number;
715
+ }[]>;
716
+ } | {
717
+ uniqueWithLocations?: undefined;
718
+ });
719
+ boxShadows: {
720
+ total: number;
721
+ totalUnique: number;
722
+ uniquenessRatio: number;
723
+ unique: Record<string, number>;
724
+ } & ({
725
+ uniqueWithLocations: Record<string, {
726
+ line: number;
727
+ column: number;
728
+ offset: number;
729
+ length: number;
730
+ }[]>;
731
+ } | {
732
+ uniqueWithLocations?: undefined;
733
+ });
734
+ borderRadiuses: ({
735
+ total: number;
736
+ totalUnique: number;
737
+ uniquenessRatio: number;
738
+ unique: Record<string, number>;
739
+ } & ({
740
+ uniqueWithLocations: Record<string, {
741
+ line: number;
742
+ column: number;
743
+ offset: number;
744
+ length: number;
745
+ }[]>;
746
+ } | {
747
+ uniqueWithLocations?: undefined;
748
+ })) & {
749
+ itemsPerContext: {
750
+ [k: string]: {
751
+ total: number;
752
+ totalUnique: number;
753
+ unique: Record<string, number>;
754
+ uniquenessRatio: number;
755
+ };
756
+ };
757
+ };
758
+ animations: {
759
+ durations: {
760
+ total: number;
761
+ totalUnique: number;
762
+ uniquenessRatio: number;
763
+ unique: Record<string, number>;
764
+ } & ({
765
+ uniqueWithLocations: Record<string, {
766
+ line: number;
767
+ column: number;
768
+ offset: number;
769
+ length: number;
770
+ }[]>;
771
+ } | {
772
+ uniqueWithLocations?: undefined;
773
+ });
774
+ timingFunctions: {
775
+ total: number;
776
+ totalUnique: number;
777
+ uniquenessRatio: number;
778
+ unique: Record<string, number>;
779
+ } & ({
780
+ uniqueWithLocations: Record<string, {
781
+ line: number;
782
+ column: number;
783
+ offset: number;
784
+ length: number;
785
+ }[]>;
786
+ } | {
787
+ uniqueWithLocations?: undefined;
788
+ });
789
+ };
790
+ prefixes: {
791
+ total: number;
792
+ totalUnique: number;
793
+ uniquenessRatio: number;
794
+ unique: Record<string, number>;
795
+ } & ({
796
+ uniqueWithLocations: Record<string, {
797
+ line: number;
798
+ column: number;
799
+ offset: number;
800
+ length: number;
801
+ }[]>;
802
+ } | {
803
+ uniqueWithLocations?: undefined;
804
+ });
805
+ browserhacks: {
806
+ total: number;
807
+ totalUnique: number;
808
+ uniquenessRatio: number;
809
+ unique: Record<string, number>;
810
+ } & ({
811
+ uniqueWithLocations: Record<string, {
812
+ line: number;
813
+ column: number;
814
+ offset: number;
815
+ length: number;
816
+ }[]>;
817
+ } | {
818
+ uniqueWithLocations?: undefined;
819
+ });
820
+ units: ({
821
+ total: number;
822
+ totalUnique: number;
823
+ uniquenessRatio: number;
824
+ unique: Record<string, number>;
825
+ } & ({
826
+ uniqueWithLocations: Record<string, {
827
+ line: number;
828
+ column: number;
829
+ offset: number;
830
+ length: number;
831
+ }[]>;
832
+ } | {
833
+ uniqueWithLocations?: undefined;
834
+ })) & {
835
+ itemsPerContext: {
836
+ [k: string]: {
837
+ total: number;
838
+ totalUnique: number;
839
+ unique: Record<string, number>;
840
+ uniquenessRatio: number;
841
+ };
842
+ };
843
+ };
844
+ complexity: {
845
+ min: number | undefined;
846
+ max: number | undefined;
847
+ mean: number;
848
+ mode: number;
849
+ range: number;
850
+ sum: number;
851
+ };
852
+ keywords: {
853
+ total: number;
854
+ totalUnique: number;
855
+ uniquenessRatio: number;
856
+ unique: Record<string, number>;
857
+ } & ({
858
+ uniqueWithLocations: Record<string, {
859
+ line: number;
860
+ column: number;
861
+ offset: number;
862
+ length: number;
863
+ }[]>;
864
+ } | {
865
+ uniqueWithLocations?: undefined;
866
+ });
867
+ };
868
+ __meta__: {
869
+ parseTime: number;
870
+ analyzeTime: number;
871
+ total: number;
872
+ };
873
+ };
874
+ /**
875
+ * Compare specificity A to Specificity B
876
+ * @param {Specificity} a - Specificity A
877
+ * @param {Specificity} b - Specificity B
878
+ * @returns {number} sortIndex - 0 when a==b, 1 when a<b, -1 when a>b
879
+ */
880
+ export function compareSpecificity(a: Specificity, b: Specificity): number;
881
+ export { isHack as isPropertyHack } from './properties/property-utils.js';
882
+ export { isValuePrefixed } from './values/vendor-prefix.js';
883
+ export { hasVendorPrefix } from './vendor-prefix.js';
884
+ export type Options = {
885
+ /**
886
+ * Use Locations (`{ 'item': [{ line, column, offset, length }] }`) instead of a regular count per occurrence (`{ 'item': 3 }`)
887
+ */
888
+ useLocations: boolean;
889
+ };
890
+ export type Specificity = [number, number, number];
891
+ export { getComplexity as selectorComplexity, isPrefixed as isSelectorPrefixed, isAccessibility as isAccessibilitySelector } from './selectors/utils.js';
892
+ export { isSupportsBrowserhack, isMediaBrowserhack } from './atrules/atrules.js';