@projectwallace/css-analyzer 7.0.1 → 7.0.2
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/css-analyzer.js +327 -319
- package/package.json +4 -6
package/dist/css-analyzer.js
CHANGED
|
@@ -1,65 +1,64 @@
|
|
|
1
1
|
import Dt from "css-tree/parser";
|
|
2
|
-
import
|
|
2
|
+
import q from "css-tree/walker";
|
|
3
3
|
import { calculateForAST as Ft } from "@bramus/specificity/core";
|
|
4
|
-
function
|
|
4
|
+
function Ee(i, t) {
|
|
5
5
|
return t >= 65 && t <= 90 && (t = t | 32), i === t;
|
|
6
6
|
}
|
|
7
|
-
function
|
|
7
|
+
function z(i, t) {
|
|
8
8
|
if (i === t) return !0;
|
|
9
9
|
let r = i.length;
|
|
10
10
|
if (r !== t.length) return !1;
|
|
11
11
|
for (let e = 0; e < r; e++)
|
|
12
|
-
if (
|
|
12
|
+
if (Ee(i.charCodeAt(e), t.charCodeAt(e)) === !1)
|
|
13
13
|
return !1;
|
|
14
14
|
return !0;
|
|
15
15
|
}
|
|
16
|
-
function
|
|
16
|
+
function L(i, t) {
|
|
17
17
|
if (i === t) return !0;
|
|
18
18
|
let r = t.length, e = r - i.length;
|
|
19
19
|
if (e < 0)
|
|
20
20
|
return !1;
|
|
21
|
-
for (let
|
|
22
|
-
if (
|
|
21
|
+
for (let l = r - 1; l >= e; l--)
|
|
22
|
+
if (Ee(i.charCodeAt(l - e), t.charCodeAt(l)) === !1)
|
|
23
23
|
return !1;
|
|
24
24
|
return !0;
|
|
25
25
|
}
|
|
26
|
-
function
|
|
26
|
+
function De(i, t) {
|
|
27
27
|
if (i === t) return !0;
|
|
28
28
|
let r = i.length;
|
|
29
29
|
if (t.length < r) return !1;
|
|
30
30
|
for (let e = 0; e < r; e++)
|
|
31
|
-
if (
|
|
31
|
+
if (Ee(i.charCodeAt(e), t.charCodeAt(e)) === !1)
|
|
32
32
|
return !1;
|
|
33
33
|
return !0;
|
|
34
34
|
}
|
|
35
|
-
const
|
|
36
|
-
function
|
|
35
|
+
const Tt = "Atrule", Mt = "MediaQuery", Ut = "Rule", Fe = "Selector", _t = "TypeSelector", Y = "PseudoClassSelector", St = "AttributeSelector", vt = "PseudoElementSelector", Re = "Declaration", It = "Value", O = "Identifier", Ht = "Nth", Vt = "Combinator", Wt = "Number", qt = "Dimension", V = "Operator", Kt = "Hash", jt = "Url", Te = "Function";
|
|
36
|
+
function bt(i, t, r) {
|
|
37
37
|
let e = i.value.children.first;
|
|
38
|
-
return
|
|
38
|
+
return z(t, i.property) && e.type === O && z(r, e.name);
|
|
39
39
|
}
|
|
40
|
-
function
|
|
40
|
+
function Bt(i) {
|
|
41
41
|
let t = !1;
|
|
42
|
-
return
|
|
43
|
-
if (r.type ===
|
|
42
|
+
return q(i, function(r) {
|
|
43
|
+
if (r.type === Re && (bt(r, "-webkit-appearance", "none") || bt(r, "-moz-appearance", "meterbar")))
|
|
44
44
|
return t = !0, this.break;
|
|
45
45
|
}), t;
|
|
46
46
|
}
|
|
47
|
-
function
|
|
47
|
+
function Yt(i) {
|
|
48
48
|
let t = !1;
|
|
49
|
-
return
|
|
50
|
-
let e = r.
|
|
51
|
-
if (r.type ===
|
|
52
|
-
|
|
53
|
-
if (Ee("\\0", m) || O("\\9 ", m))
|
|
49
|
+
return q(i, function(r) {
|
|
50
|
+
let e = r.name, l = r.value;
|
|
51
|
+
if (r.type === Mt && r.mediaType !== null) {
|
|
52
|
+
if (De("\\0", r.mediaType) || L("\\9 ", r.mediaType))
|
|
54
53
|
return t = !0, this.break;
|
|
55
|
-
} else if (r.type ===
|
|
54
|
+
} else if (r.type === "Feature" && r.kind === "media") {
|
|
56
55
|
if (l && l.unit && l.unit === "\\0")
|
|
57
56
|
return t = !0, this.break;
|
|
58
|
-
if (
|
|
57
|
+
if (z("-moz-images-in-menus", e) || z("min--moz-device-pixel-ratio", e) || z("-ms-high-contrast", e))
|
|
59
58
|
return t = !0, this.break;
|
|
60
|
-
if (
|
|
59
|
+
if (z("min-resolution", e) && l && z(".001", l.value) && z("dpcm", l.unit))
|
|
61
60
|
return t = !0, this.break;
|
|
62
|
-
if (
|
|
61
|
+
if (z("-webkit-min-device-pixel-ratio", e) && l && l.value && (z("0", l.value) || z("10000", l.value)))
|
|
63
62
|
return t = !0, this.break;
|
|
64
63
|
}
|
|
65
64
|
}), t;
|
|
@@ -68,7 +67,7 @@ const xt = 45;
|
|
|
68
67
|
function D(i) {
|
|
69
68
|
return i.charCodeAt(0) === xt && i.charCodeAt(1) !== xt && i.indexOf("-", 2) !== -1;
|
|
70
69
|
}
|
|
71
|
-
class
|
|
70
|
+
class A {
|
|
72
71
|
/** @param {string[]} items */
|
|
73
72
|
constructor(t) {
|
|
74
73
|
this.set = new Set(t);
|
|
@@ -80,14 +79,14 @@ class q {
|
|
|
80
79
|
}
|
|
81
80
|
function At(i, t) {
|
|
82
81
|
let r = [];
|
|
83
|
-
return
|
|
84
|
-
visit:
|
|
82
|
+
return q(i, {
|
|
83
|
+
visit: Fe,
|
|
85
84
|
enter: function(e) {
|
|
86
85
|
r.push(t(e));
|
|
87
86
|
}
|
|
88
87
|
}), r;
|
|
89
88
|
}
|
|
90
|
-
const Pt = new
|
|
89
|
+
const Pt = new A([
|
|
91
90
|
"nth-child",
|
|
92
91
|
"where",
|
|
93
92
|
"not",
|
|
@@ -100,15 +99,15 @@ const Pt = new q([
|
|
|
100
99
|
]);
|
|
101
100
|
function Lt(i) {
|
|
102
101
|
let t = !1;
|
|
103
|
-
return
|
|
102
|
+
return q(i, function(r) {
|
|
104
103
|
if (r.type === St) {
|
|
105
104
|
let e = r.name.name;
|
|
106
|
-
if (
|
|
105
|
+
if (z("role", e) || De("aria-", e))
|
|
107
106
|
return t = !0, this.break;
|
|
108
107
|
} else if (r.type === Y && Pt.has(r.name)) {
|
|
109
108
|
let e = At(r, Lt);
|
|
110
|
-
for (let
|
|
111
|
-
if (
|
|
109
|
+
for (let l of e)
|
|
110
|
+
if (l === !0) {
|
|
112
111
|
t = !0;
|
|
113
112
|
break;
|
|
114
113
|
}
|
|
@@ -116,49 +115,49 @@ function Lt(i) {
|
|
|
116
115
|
}
|
|
117
116
|
}), t;
|
|
118
117
|
}
|
|
119
|
-
function
|
|
118
|
+
function Gt(i) {
|
|
120
119
|
let t = !1;
|
|
121
|
-
return
|
|
120
|
+
return q(i, function(r) {
|
|
122
121
|
let e = r.type;
|
|
123
|
-
if ((e === vt || e ===
|
|
122
|
+
if ((e === vt || e === _t || e === Y) && D(r.name))
|
|
124
123
|
return t = !0, this.break;
|
|
125
124
|
}), t;
|
|
126
125
|
}
|
|
127
|
-
function
|
|
126
|
+
function Qt(i) {
|
|
128
127
|
let t = [];
|
|
129
|
-
return
|
|
128
|
+
return q(i, function(r) {
|
|
130
129
|
r.type === Y && t.push(r.name);
|
|
131
130
|
}), t.length === 0 ? !1 : t;
|
|
132
131
|
}
|
|
133
132
|
function Ot(i) {
|
|
134
133
|
let t = 0;
|
|
135
|
-
return
|
|
134
|
+
return q(i, function(r) {
|
|
136
135
|
let e = r.type;
|
|
137
|
-
if (!(e ===
|
|
138
|
-
if (t++, (e === vt || e ===
|
|
136
|
+
if (!(e === Fe || e === Ht)) {
|
|
137
|
+
if (t++, (e === vt || e === _t || e === Y) && D(r.name) && t++, e === St)
|
|
139
138
|
return r.value && t++, this.skip;
|
|
140
139
|
if (e === Y && Pt.has(r.name)) {
|
|
141
|
-
let
|
|
142
|
-
if (
|
|
143
|
-
for (let
|
|
144
|
-
t +=
|
|
140
|
+
let l = At(r, Ot);
|
|
141
|
+
if (l.length === 0) return;
|
|
142
|
+
for (let n of l)
|
|
143
|
+
t += n;
|
|
145
144
|
return this.skip;
|
|
146
145
|
}
|
|
147
146
|
}
|
|
148
147
|
}), t;
|
|
149
148
|
}
|
|
150
|
-
function
|
|
151
|
-
|
|
152
|
-
if (r.type ===
|
|
153
|
-
let
|
|
154
|
-
if (
|
|
155
|
-
let
|
|
156
|
-
offset:
|
|
157
|
-
line:
|
|
158
|
-
column:
|
|
149
|
+
function Zt(i, t) {
|
|
150
|
+
q(i, function(r, e) {
|
|
151
|
+
if (r.type === Vt) {
|
|
152
|
+
let l = r.loc, n = r.name;
|
|
153
|
+
if (l === null) {
|
|
154
|
+
let g = e.prev.data.loc.end, w = {
|
|
155
|
+
offset: g.offset,
|
|
156
|
+
line: g.line,
|
|
157
|
+
column: g.column
|
|
159
158
|
};
|
|
160
159
|
t({
|
|
161
|
-
name:
|
|
160
|
+
name: n,
|
|
162
161
|
loc: {
|
|
163
162
|
start: w,
|
|
164
163
|
end: {
|
|
@@ -170,13 +169,13 @@ function Jt(i, t) {
|
|
|
170
169
|
});
|
|
171
170
|
} else
|
|
172
171
|
t({
|
|
173
|
-
name:
|
|
174
|
-
loc:
|
|
172
|
+
name: n,
|
|
173
|
+
loc: l
|
|
175
174
|
});
|
|
176
175
|
}
|
|
177
176
|
});
|
|
178
177
|
}
|
|
179
|
-
const
|
|
178
|
+
const Jt = new A([
|
|
180
179
|
// CSS Named Colors
|
|
181
180
|
// Spec: https://drafts.csswg.org/css-color/#named-colors
|
|
182
181
|
// Heuristic: popular names first for quick finding in set.has()
|
|
@@ -329,7 +328,7 @@ const Xt = new q([
|
|
|
329
328
|
"mediumorchid",
|
|
330
329
|
"darksalmon",
|
|
331
330
|
"mediumspringgreen"
|
|
332
|
-
]),
|
|
331
|
+
]), Xt = new A([
|
|
333
332
|
// CSS System Colors
|
|
334
333
|
// Spec: https://drafts.csswg.org/css-color/#css-system-colors
|
|
335
334
|
"accentcolor",
|
|
@@ -351,7 +350,7 @@ const Xt = new q([
|
|
|
351
350
|
"selecteditem",
|
|
352
351
|
"selecteditemtext",
|
|
353
352
|
"visitedtext"
|
|
354
|
-
]),
|
|
353
|
+
]), $t = new A([
|
|
355
354
|
"rgba",
|
|
356
355
|
"rgb",
|
|
357
356
|
"hsla",
|
|
@@ -362,10 +361,10 @@ const Xt = new q([
|
|
|
362
361
|
"lch",
|
|
363
362
|
"lab",
|
|
364
363
|
"oklab"
|
|
365
|
-
]),
|
|
364
|
+
]), Nt = new A([
|
|
366
365
|
"transparent",
|
|
367
366
|
"currentcolor"
|
|
368
|
-
]), N = new
|
|
367
|
+
]), N = new A([
|
|
369
368
|
"auto",
|
|
370
369
|
"none",
|
|
371
370
|
// for `text-shadow`, `box-shadow` and `background`
|
|
@@ -379,16 +378,16 @@ function $(i) {
|
|
|
379
378
|
let t = i.children, r = t.size;
|
|
380
379
|
if (!t || r > 1 || r === 0) return !1;
|
|
381
380
|
let e = t.first;
|
|
382
|
-
return e.type ===
|
|
381
|
+
return e.type === O && N.has(e.name);
|
|
383
382
|
}
|
|
384
|
-
const
|
|
383
|
+
const ei = new A([
|
|
385
384
|
"caption",
|
|
386
385
|
"icon",
|
|
387
386
|
"menu",
|
|
388
387
|
"message-box",
|
|
389
388
|
"small-caption",
|
|
390
389
|
"status-bar"
|
|
391
|
-
]),
|
|
390
|
+
]), ti = new A([
|
|
392
391
|
/* <absolute-size> values */
|
|
393
392
|
"xx-small",
|
|
394
393
|
"x-small",
|
|
@@ -401,46 +400,46 @@ const ti = new q([
|
|
|
401
400
|
/* <relative-size> values */
|
|
402
401
|
"smaller",
|
|
403
402
|
"larger"
|
|
404
|
-
]),
|
|
405
|
-
function
|
|
403
|
+
]), ii = 44, Ct = 47;
|
|
404
|
+
function Le(i) {
|
|
406
405
|
let t = i.children.first;
|
|
407
|
-
return t === null ? !1 : t.type ===
|
|
406
|
+
return t === null ? !1 : t.type === O && ei.has(t.name);
|
|
408
407
|
}
|
|
409
|
-
function
|
|
408
|
+
function ri(i, t, r) {
|
|
410
409
|
var w;
|
|
411
|
-
let e = Array.from({ length: 2 }),
|
|
412
|
-
i.children.forEach(function(
|
|
413
|
-
let y =
|
|
414
|
-
if (
|
|
410
|
+
let e = Array.from({ length: 2 }), l, n;
|
|
411
|
+
i.children.forEach(function(d, _) {
|
|
412
|
+
let y = _.prev ? _.prev.data : void 0, P = _.next ? _.next.data : void 0;
|
|
413
|
+
if (d.type === O && N.has(d.name) && r({
|
|
415
414
|
type: "keyword",
|
|
416
|
-
value:
|
|
417
|
-
}),
|
|
418
|
-
|
|
415
|
+
value: d.name
|
|
416
|
+
}), P && P.type === V && P.value.charCodeAt(0) === Ct) {
|
|
417
|
+
l = t(d);
|
|
419
418
|
return;
|
|
420
419
|
}
|
|
421
420
|
if (y && y.type === V && y.value.charCodeAt(0) === Ct) {
|
|
422
|
-
|
|
421
|
+
n = t(d);
|
|
423
422
|
return;
|
|
424
423
|
}
|
|
425
|
-
if (
|
|
426
|
-
e[0] =
|
|
424
|
+
if (P && P.type === V && P.value.charCodeAt(0) === ii && !e[0]) {
|
|
425
|
+
e[0] = d, !l && y && (l = t(y));
|
|
427
426
|
return;
|
|
428
427
|
}
|
|
429
|
-
if (
|
|
430
|
-
if (
|
|
431
|
-
e[1] =
|
|
428
|
+
if (d.type !== Wt) {
|
|
429
|
+
if (_.next === null) {
|
|
430
|
+
e[1] = d, !l && !e[0] && y && (l = t(y));
|
|
432
431
|
return;
|
|
433
432
|
}
|
|
434
|
-
if (
|
|
435
|
-
let R =
|
|
436
|
-
if (
|
|
437
|
-
|
|
433
|
+
if (d.type === O) {
|
|
434
|
+
let R = d.name;
|
|
435
|
+
if (ti.has(R)) {
|
|
436
|
+
l = R;
|
|
438
437
|
return;
|
|
439
438
|
}
|
|
440
439
|
}
|
|
441
440
|
}
|
|
442
441
|
});
|
|
443
|
-
let
|
|
442
|
+
let g = e[0] || e[1] ? t({
|
|
444
443
|
loc: {
|
|
445
444
|
start: {
|
|
446
445
|
offset: (e[0] || e[1]).loc.start.offset
|
|
@@ -453,12 +452,12 @@ function si(i, t, r) {
|
|
|
453
452
|
}
|
|
454
453
|
}) : null;
|
|
455
454
|
return {
|
|
456
|
-
font_size:
|
|
457
|
-
line_height:
|
|
458
|
-
font_family:
|
|
455
|
+
font_size: l,
|
|
456
|
+
line_height: n,
|
|
457
|
+
font_family: g
|
|
459
458
|
};
|
|
460
459
|
}
|
|
461
|
-
const
|
|
460
|
+
const si = new A([
|
|
462
461
|
"linear",
|
|
463
462
|
"ease",
|
|
464
463
|
"ease-in",
|
|
@@ -466,24 +465,24 @@ const li = new q([
|
|
|
466
465
|
"ease-in-out",
|
|
467
466
|
"step-start",
|
|
468
467
|
"step-end"
|
|
469
|
-
]),
|
|
468
|
+
]), li = new A([
|
|
470
469
|
"cubic-bezier",
|
|
471
470
|
"steps"
|
|
472
471
|
]);
|
|
473
|
-
function
|
|
472
|
+
function ni(i, t) {
|
|
474
473
|
let r = !1;
|
|
475
474
|
for (let e of i) {
|
|
476
|
-
let
|
|
477
|
-
|
|
475
|
+
let l = e.type, n = e.name;
|
|
476
|
+
l === V ? r = !1 : l === qt && r === !1 ? (r = !0, t({
|
|
478
477
|
type: "duration",
|
|
479
478
|
value: e
|
|
480
|
-
})) :
|
|
479
|
+
})) : l === O ? si.has(n) ? t({
|
|
481
480
|
type: "fn",
|
|
482
481
|
value: e
|
|
483
|
-
}) : N.has(
|
|
482
|
+
}) : N.has(n) && t({
|
|
484
483
|
type: "keyword",
|
|
485
484
|
value: e
|
|
486
|
-
}) :
|
|
485
|
+
}) : l === Te && li.has(n) && t({
|
|
487
486
|
type: "fn",
|
|
488
487
|
value: e
|
|
489
488
|
});
|
|
@@ -494,13 +493,13 @@ function Rt(i) {
|
|
|
494
493
|
if (!t)
|
|
495
494
|
return !1;
|
|
496
495
|
for (let r of t) {
|
|
497
|
-
let { type: e, name:
|
|
498
|
-
if (e ===
|
|
496
|
+
let { type: e, name: l } = r;
|
|
497
|
+
if (e === O && D(l) || e === Te && (D(l) || Rt(r)))
|
|
499
498
|
return !0;
|
|
500
499
|
}
|
|
501
500
|
return !1;
|
|
502
501
|
}
|
|
503
|
-
class
|
|
502
|
+
class u {
|
|
504
503
|
/** @param {boolean} useLocations */
|
|
505
504
|
constructor(t = !1) {
|
|
506
505
|
this._items = /* @__PURE__ */ new Map(), this._total = 0, t && (this._nodes = []), this._useLocations = t;
|
|
@@ -512,8 +511,8 @@ class o {
|
|
|
512
511
|
p(t, r) {
|
|
513
512
|
let e = this._total;
|
|
514
513
|
if (this._useLocations) {
|
|
515
|
-
let
|
|
516
|
-
this._nodes[
|
|
514
|
+
let l = r.start, n = l.offset, g = e * 4;
|
|
515
|
+
this._nodes[g] = l.line, this._nodes[g + 1] = l.column, this._nodes[g + 2] = n, this._nodes[g + 3] = r.end.offset - n;
|
|
517
516
|
}
|
|
518
517
|
if (this._items.has(t)) {
|
|
519
518
|
this._items.get(t).push(e), this._total++;
|
|
@@ -543,35 +542,35 @@ class o {
|
|
|
543
542
|
* })}
|
|
544
543
|
*/
|
|
545
544
|
c() {
|
|
546
|
-
let t = /* @__PURE__ */ new Map(), r = {}, e = this._useLocations,
|
|
547
|
-
|
|
545
|
+
let t = /* @__PURE__ */ new Map(), r = {}, e = this._useLocations, l = this._items, n = this._nodes, g = l.size;
|
|
546
|
+
l.forEach((_, y) => {
|
|
548
547
|
if (e) {
|
|
549
|
-
let
|
|
548
|
+
let P = _.map(function(R) {
|
|
550
549
|
let F = R * 4;
|
|
551
550
|
return {
|
|
552
|
-
line:
|
|
553
|
-
column:
|
|
554
|
-
offset:
|
|
555
|
-
length:
|
|
551
|
+
line: n[F],
|
|
552
|
+
column: n[F + 1],
|
|
553
|
+
offset: n[F + 2],
|
|
554
|
+
length: n[F + 3]
|
|
556
555
|
};
|
|
557
556
|
});
|
|
558
|
-
t.set(y,
|
|
557
|
+
t.set(y, P);
|
|
559
558
|
} else
|
|
560
|
-
r[y] =
|
|
559
|
+
r[y] = _.length;
|
|
561
560
|
});
|
|
562
|
-
let w = this._total,
|
|
561
|
+
let w = this._total, d = {
|
|
563
562
|
total: w,
|
|
564
|
-
totalUnique:
|
|
563
|
+
totalUnique: g,
|
|
565
564
|
unique: r,
|
|
566
|
-
uniquenessRatio: w === 0 ? 0 :
|
|
565
|
+
uniquenessRatio: w === 0 ? 0 : g / w
|
|
567
566
|
};
|
|
568
|
-
return e && (
|
|
567
|
+
return e && (d.uniqueWithLocations = Object.fromEntries(t)), d;
|
|
569
568
|
}
|
|
570
569
|
}
|
|
571
|
-
class
|
|
570
|
+
class Oe {
|
|
572
571
|
/** @param {boolean} useLocations */
|
|
573
572
|
constructor(t) {
|
|
574
|
-
this._list = new
|
|
573
|
+
this._list = new u(t), this._contexts = /* @__PURE__ */ new Map(), this._useLocations = t;
|
|
575
574
|
}
|
|
576
575
|
/**
|
|
577
576
|
* Add an item to this _list's context
|
|
@@ -580,7 +579,7 @@ class Le {
|
|
|
580
579
|
* @param {import('css-tree').CssLocation} node_location
|
|
581
580
|
*/
|
|
582
581
|
push(t, r, e) {
|
|
583
|
-
this._list.p(t, e), this._contexts.has(r) || this._contexts.set(r, new
|
|
582
|
+
this._list.p(t, e), this._contexts.has(r) || this._contexts.set(r, new u(this._useLocations)), this._contexts.get(r).p(t, e);
|
|
584
583
|
}
|
|
585
584
|
count() {
|
|
586
585
|
let t = /* @__PURE__ */ new Map();
|
|
@@ -591,13 +590,13 @@ class Le {
|
|
|
591
590
|
});
|
|
592
591
|
}
|
|
593
592
|
}
|
|
594
|
-
function
|
|
595
|
-
let t = /* @__PURE__ */ new Map(), r = -1, e = 0,
|
|
596
|
-
for (let
|
|
597
|
-
let w = i[
|
|
598
|
-
t.set(w,
|
|
593
|
+
function ai(i) {
|
|
594
|
+
let t = /* @__PURE__ */ new Map(), r = -1, e = 0, l = 0, n = i.length;
|
|
595
|
+
for (let g = 0; g < n; g++) {
|
|
596
|
+
let w = i[g], d = (t.get(w) || 0) + 1;
|
|
597
|
+
t.set(w, d), d > r && (r = d, e = 0, l = 0), d >= r && (e++, l += w);
|
|
599
598
|
}
|
|
600
|
-
return
|
|
599
|
+
return l / e;
|
|
601
600
|
}
|
|
602
601
|
class v {
|
|
603
602
|
constructor() {
|
|
@@ -624,14 +623,14 @@ class v {
|
|
|
624
623
|
range: 0,
|
|
625
624
|
sum: 0
|
|
626
625
|
};
|
|
627
|
-
let r = this._items.slice().sort((w,
|
|
626
|
+
let r = this._items.slice().sort((w, d) => w - d), e = r[0], l = r[t - 1], n = ai(r), g = this._sum;
|
|
628
627
|
return {
|
|
629
628
|
min: e,
|
|
630
|
-
max:
|
|
631
|
-
mean:
|
|
632
|
-
mode:
|
|
633
|
-
range:
|
|
634
|
-
sum:
|
|
629
|
+
max: l,
|
|
630
|
+
mean: g / t,
|
|
631
|
+
mode: n,
|
|
632
|
+
range: l - e,
|
|
633
|
+
sum: g
|
|
635
634
|
};
|
|
636
635
|
}
|
|
637
636
|
/**
|
|
@@ -641,7 +640,7 @@ class v {
|
|
|
641
640
|
return this._items;
|
|
642
641
|
}
|
|
643
642
|
}
|
|
644
|
-
function
|
|
643
|
+
function oi(i) {
|
|
645
644
|
if (Me(i) || D(i)) return !1;
|
|
646
645
|
let t = i.charCodeAt(0);
|
|
647
646
|
return t === 47 || t === 42 || t === 95 || t === 43 || t === 38 || t === 36 || t === 35;
|
|
@@ -650,24 +649,24 @@ function Me(i) {
|
|
|
650
649
|
return i.length < 3 ? !1 : i.charCodeAt(0) === 45 && i.charCodeAt(1) === 45;
|
|
651
650
|
}
|
|
652
651
|
function C(i, t) {
|
|
653
|
-
return Me(t) ? !1 :
|
|
652
|
+
return Me(t) ? !1 : L(i, t);
|
|
654
653
|
}
|
|
655
|
-
function
|
|
654
|
+
function ui(i) {
|
|
656
655
|
return D(i) ? i.slice(i.indexOf("-", 2) + 1) : i;
|
|
657
656
|
}
|
|
658
|
-
function
|
|
657
|
+
function ci(i) {
|
|
659
658
|
let t = 5, r = i.indexOf(";"), e = i.indexOf(",");
|
|
660
659
|
return r === -1 || e !== -1 && e < r ? i.substring(t, e) : i.substring(t, r);
|
|
661
660
|
}
|
|
662
|
-
function
|
|
661
|
+
function fi(i) {
|
|
663
662
|
let t = i.children;
|
|
664
663
|
if (t) {
|
|
665
664
|
let r = t.last;
|
|
666
|
-
return r && r.type ===
|
|
665
|
+
return r && r.type === O && L("\\9", r.name);
|
|
667
666
|
}
|
|
668
667
|
return !1;
|
|
669
668
|
}
|
|
670
|
-
let
|
|
669
|
+
let pi = new A([
|
|
671
670
|
"border-radius",
|
|
672
671
|
"border-top-left-radius",
|
|
673
672
|
"border-top-right-radius",
|
|
@@ -681,78 +680,87 @@ let hi = new q([
|
|
|
681
680
|
function x(i, t) {
|
|
682
681
|
return t === 0 ? 0 : i / t;
|
|
683
682
|
}
|
|
684
|
-
let
|
|
683
|
+
let hi = {
|
|
685
684
|
useLocations: !1
|
|
686
685
|
};
|
|
687
|
-
function
|
|
688
|
-
let e = Object.assign({},
|
|
689
|
-
function
|
|
690
|
-
return
|
|
686
|
+
function yi(i, t = {}) {
|
|
687
|
+
let e = Object.assign({}, hi, t).useLocations === !0, l = Date.now();
|
|
688
|
+
function n(s) {
|
|
689
|
+
return g(s).trim();
|
|
691
690
|
}
|
|
692
|
-
function
|
|
691
|
+
function g(s) {
|
|
693
692
|
let f = s.loc;
|
|
694
693
|
return i.substring(f.start.offset, f.end.offset);
|
|
695
694
|
}
|
|
696
|
-
let w = 0,
|
|
695
|
+
let w = 0, d = 0, _ = 0, y = {
|
|
697
696
|
total: 0,
|
|
698
697
|
/** @type {Map<string, { size: number, count: number } & ({ uniqueWithLocations?: undefined } | ({ uniqueWithLocations: { offset: number, line: number, column: number, length: number }[] })) }>} */
|
|
699
698
|
unique: /* @__PURE__ */ new Map()
|
|
700
|
-
},
|
|
699
|
+
}, P = Date.now(), R = Dt(i, {
|
|
701
700
|
parseCustomProperty: !0,
|
|
702
701
|
// To find font-families, colors, etc.
|
|
703
702
|
positions: !0,
|
|
704
703
|
// So we can use stringifyNode()
|
|
705
704
|
/** @param {string} comment */
|
|
706
705
|
onComment: function(s) {
|
|
707
|
-
w++,
|
|
706
|
+
w++, d += s.length;
|
|
708
707
|
}
|
|
709
|
-
}), F = Date.now(), Et = R.loc.end.line - R.loc.start.line + 1, ee = 0, te = new v(), ie = [], Ue = new
|
|
710
|
-
|
|
708
|
+
}), F = Date.now(), Et = R.loc.end.line - R.loc.start.line + 1, ee = 0, te = new v(), ie = [], Ue = new u(e), re = new u(e), Ie = new u(e), He = new u(e), Ve = new u(e), We = new u(e), se = new u(e), Ke = new u(e), le = new u(e), ne = new u(e), je = new u(e), Be = new u(e), ae = 0, oe = 0, ue = new v(), ce = new v(), fe = new v(), Ye = new u(e), Ge = new u(e), Qe = new u(e), pe = new u(e), Ze = /* @__PURE__ */ new Set(), he = new u(e), T, M, Je = new v(), Xe = new v(), $e = new v(), Ne = new u(e), G = new v(), et = new u(e), tt = [], me = new u(e), ge = new u(e), it = new u(e), rt = new u(e), st = /* @__PURE__ */ new Set(), W = 0, lt = new v(), Q = 0, de = 0, ye = new u(e), K = new u(e), we = new u(e), ke = new u(e), Z = new u(e), j = new v(), be = new v(), nt = new u(e), xe = new u(e), at = new u(e), ot = new u(e), ut = new u(e), Ce = new u(e), ze = new u(e), _e = new u(e), J = new u(e), X = new u(e), U = new Oe(e), I = new u(e), Se = new Oe(e), ct = new u(e), B = new u(e), ft = new Oe(e);
|
|
709
|
+
q(R, function(s) {
|
|
711
710
|
switch (s.type) {
|
|
712
|
-
case
|
|
711
|
+
case Tt: {
|
|
713
712
|
ee++;
|
|
714
713
|
let f = s.name;
|
|
715
714
|
if (f === "font-face") {
|
|
716
|
-
let
|
|
717
|
-
e && Ue.p(s.loc.start.offset, s.loc), s.block.children.forEach((
|
|
718
|
-
|
|
719
|
-
}), ie.push(
|
|
715
|
+
let m = {};
|
|
716
|
+
e && Ue.p(s.loc.start.offset, s.loc), s.block.children.forEach((c) => {
|
|
717
|
+
c.type === Re && (m[c.property] = n(c.value));
|
|
718
|
+
}), ie.push(m), te.push(1);
|
|
720
719
|
break;
|
|
721
720
|
}
|
|
722
721
|
let a = 1;
|
|
723
722
|
if (s.prelude !== null) {
|
|
724
|
-
let
|
|
723
|
+
let m = s.prelude, c = m && n(s.prelude), p = m.loc;
|
|
725
724
|
if (f === "media")
|
|
726
|
-
|
|
725
|
+
He.p(c, p), Yt(m) && (Ve.p(c, p), a++);
|
|
727
726
|
else if (f === "supports")
|
|
728
|
-
|
|
729
|
-
else if (
|
|
730
|
-
let
|
|
731
|
-
D(f) && (
|
|
732
|
-
} else f === "import" ?
|
|
727
|
+
se.p(c, p), Bt(m) && (Ke.p(c, p), a++);
|
|
728
|
+
else if (L("keyframes", f)) {
|
|
729
|
+
let o = "@" + f + " " + c;
|
|
730
|
+
D(f) && (ne.p(o, p), a++), le.p(o, p);
|
|
731
|
+
} else f === "import" ? (q(s, function(o) {
|
|
732
|
+
if (o.type === "Condition" && o.kind === "supports") {
|
|
733
|
+
let h = n(o);
|
|
734
|
+
return se.p(h, o.loc), this.break;
|
|
735
|
+
}
|
|
736
|
+
}), Ie.p(c, p)) : f === "charset" ? We.p(c, p) : f === "container" ? je.p(c, p) : f === "property" && Be.p(c, p);
|
|
733
737
|
} else
|
|
734
738
|
f === "layer" && (re.p("<anonymous>", s.loc), a++);
|
|
735
739
|
te.push(a);
|
|
736
740
|
break;
|
|
737
741
|
}
|
|
738
|
-
case
|
|
739
|
-
|
|
740
|
-
|
|
742
|
+
case "Layer": {
|
|
743
|
+
s.name !== null && re.p(s.name, s.loc);
|
|
744
|
+
break;
|
|
745
|
+
}
|
|
746
|
+
case Ut: {
|
|
747
|
+
let f = s.prelude, a = s.block, m = f.children, c = a.children, p = m ? m.size : 0, o = c ? c.size : 0;
|
|
748
|
+
ue.push(p + o), Ye.p(p + o, s.loc), ce.push(p), Ge.p(p, f.loc), fe.push(o), Qe.p(o, a.loc), ae++, o === 0 && oe++;
|
|
741
749
|
break;
|
|
742
750
|
}
|
|
743
|
-
case
|
|
744
|
-
let f =
|
|
745
|
-
if (this.atrule &&
|
|
746
|
-
return
|
|
747
|
-
Lt(s) &&
|
|
748
|
-
let a =
|
|
751
|
+
case Fe: {
|
|
752
|
+
let f = n(s);
|
|
753
|
+
if (this.atrule && L("keyframes", this.atrule.name))
|
|
754
|
+
return pe.p(f, s.loc), this.skip;
|
|
755
|
+
Lt(s) && ge.p(f, s.loc);
|
|
756
|
+
let a = Qt(s);
|
|
749
757
|
if (a !== !1)
|
|
750
|
-
for (let
|
|
751
|
-
it.p(
|
|
752
|
-
let
|
|
753
|
-
|
|
754
|
-
let
|
|
755
|
-
return Ne.p(
|
|
758
|
+
for (let b of a)
|
|
759
|
+
it.p(b, s.loc);
|
|
760
|
+
let m = Ot(s);
|
|
761
|
+
Gt(s) && he.p(f, s.loc), Ze.add(f), G.push(m), et.p(m, s.loc);
|
|
762
|
+
let c = Ft(s).toArray(), [p, o, h] = c;
|
|
763
|
+
return Ne.p(c.toString(), s.loc), Je.push(p), Xe.push(o), $e.push(h), T === void 0 && (T = c), M === void 0 && (M = c), M !== void 0 && zt(M, c) < 0 && (M = c), T !== void 0 && zt(T, c) > 0 && (T = c), tt.push(c), p > 0 && me.p(f, s.loc), Zt(s, function(S) {
|
|
756
764
|
rt.p(S.name, S.loc);
|
|
757
765
|
}), this.skip;
|
|
758
766
|
}
|
|
@@ -760,13 +768,13 @@ function wi(i, t = {}) {
|
|
|
760
768
|
if (!this.declaration)
|
|
761
769
|
break;
|
|
762
770
|
let f = s.unit;
|
|
763
|
-
return
|
|
771
|
+
return L("\\9", f) ? Se.push(f.substring(0, f.length - 2), this.declaration.property, s.loc) : Se.push(f, this.declaration.property, s.loc), this.skip;
|
|
764
772
|
}
|
|
765
|
-
case
|
|
766
|
-
if (
|
|
767
|
-
let f = s.value, a = f.length,
|
|
768
|
-
y.total++,
|
|
769
|
-
let
|
|
773
|
+
case jt: {
|
|
774
|
+
if (De("data:", s.value)) {
|
|
775
|
+
let f = s.value, a = f.length, m = ci(f);
|
|
776
|
+
y.total++, _ += a;
|
|
777
|
+
let c = {
|
|
770
778
|
/** @type {number} */
|
|
771
779
|
line: s.loc.start.line,
|
|
772
780
|
/** @type {number} */
|
|
@@ -776,101 +784,101 @@ function wi(i, t = {}) {
|
|
|
776
784
|
/** @type {number} */
|
|
777
785
|
length: s.loc.end.offset - s.loc.start.offset
|
|
778
786
|
};
|
|
779
|
-
if (y.unique.has(
|
|
780
|
-
let p = y.unique.get(
|
|
781
|
-
p.count++, p.size += a, y.unique.set(
|
|
787
|
+
if (y.unique.has(m)) {
|
|
788
|
+
let p = y.unique.get(m);
|
|
789
|
+
p.count++, p.size += a, y.unique.set(m, p), e && p.uniqueWithLocations.push(c);
|
|
782
790
|
} else {
|
|
783
791
|
let p = {
|
|
784
792
|
count: 1,
|
|
785
793
|
size: a
|
|
786
794
|
};
|
|
787
|
-
e && (p.uniqueWithLocations = [
|
|
795
|
+
e && (p.uniqueWithLocations = [c]), y.unique.set(m, p);
|
|
788
796
|
}
|
|
789
797
|
}
|
|
790
798
|
break;
|
|
791
799
|
}
|
|
792
|
-
case
|
|
800
|
+
case It: {
|
|
793
801
|
if ($(s)) {
|
|
794
|
-
be.push(1), B.p(
|
|
802
|
+
be.push(1), B.p(n(s), s.loc);
|
|
795
803
|
break;
|
|
796
804
|
}
|
|
797
|
-
let f = this.declaration, { property: a, important:
|
|
798
|
-
Rt(s) && (nt.p(
|
|
799
|
-
let p = s.children,
|
|
800
|
-
if (be.push(
|
|
801
|
-
return at.p(
|
|
805
|
+
let f = this.declaration, { property: a, important: m } = f, c = 1;
|
|
806
|
+
Rt(s) && (nt.p(n(s), s.loc), c++), typeof m == "string" && (xe.p(g(s) + "!" + m, s.loc), c++), fi(s) && (xe.p(n(s), s.loc), c++);
|
|
807
|
+
let p = s.children, o = s.loc;
|
|
808
|
+
if (be.push(c), C("z-index", a))
|
|
809
|
+
return at.p(n(s), o), this.skip;
|
|
802
810
|
if (C("font", a)) {
|
|
803
|
-
if (
|
|
804
|
-
let { font_size: h, line_height:
|
|
805
|
-
E.type === "keyword" && B.p(E.value,
|
|
811
|
+
if (Le(s)) return;
|
|
812
|
+
let { font_size: h, line_height: b, font_family: S } = ri(s, n, function(E) {
|
|
813
|
+
E.type === "keyword" && B.p(E.value, o);
|
|
806
814
|
});
|
|
807
|
-
S &&
|
|
815
|
+
S && Ce.p(S, o), h && ze.p(h, o), b && _e.p(b, o);
|
|
808
816
|
break;
|
|
809
817
|
} else if (C("font-size", a)) {
|
|
810
|
-
|
|
818
|
+
Le(s) || ze.p(n(s), o);
|
|
811
819
|
break;
|
|
812
820
|
} else if (C("font-family", a)) {
|
|
813
|
-
|
|
821
|
+
Le(s) || Ce.p(n(s), o);
|
|
814
822
|
break;
|
|
815
823
|
} else if (C("line-height", a))
|
|
816
|
-
_e.p(
|
|
824
|
+
_e.p(n(s), o);
|
|
817
825
|
else if (C("transition", a) || C("animation", a)) {
|
|
818
|
-
|
|
819
|
-
h.type === "fn" ? J.p(
|
|
826
|
+
ni(p, function(h) {
|
|
827
|
+
h.type === "fn" ? J.p(n(h.value), o) : h.type === "duration" ? X.p(n(h.value), o) : h.type === "keyword" && B.p(n(h.value), o);
|
|
820
828
|
});
|
|
821
829
|
break;
|
|
822
830
|
} else if (C("animation-duration", a) || C("transition-duration", a)) {
|
|
823
831
|
p && p.size > 1 ? p.forEach((h) => {
|
|
824
|
-
h.type !== V && X.p(
|
|
825
|
-
}) : X.p(
|
|
832
|
+
h.type !== V && X.p(n(h), o);
|
|
833
|
+
}) : X.p(n(s), o);
|
|
826
834
|
break;
|
|
827
835
|
} else if (C("transition-timing-function", a) || C("animation-timing-function", a)) {
|
|
828
836
|
p && p.size > 1 ? p.forEach((h) => {
|
|
829
|
-
h.type !== V && J.p(
|
|
830
|
-
}) : J.p(
|
|
837
|
+
h.type !== V && J.p(n(h), o);
|
|
838
|
+
}) : J.p(n(s), o);
|
|
831
839
|
break;
|
|
832
|
-
} else if (
|
|
833
|
-
$(s) || ft.push(
|
|
840
|
+
} else if (pi.has(ui(a))) {
|
|
841
|
+
$(s) || ft.push(n(s), a, o);
|
|
834
842
|
break;
|
|
835
|
-
} else C("text-shadow", a) ? $(s) || ot.p(
|
|
836
|
-
|
|
837
|
-
let
|
|
843
|
+
} else C("text-shadow", a) ? $(s) || ot.p(n(s), o) : C("box-shadow", a) && ($(s) || ut.p(n(s), o));
|
|
844
|
+
q(s, function(h) {
|
|
845
|
+
let b = h.name;
|
|
838
846
|
switch (h.type) {
|
|
839
|
-
case
|
|
847
|
+
case Kt: {
|
|
840
848
|
let S = h.value.length;
|
|
841
|
-
return
|
|
849
|
+
return L("\\9", h.value) && (S = S - 2), U.push("#" + h.value, a, o), I.p("hex" + S, o), this.skip;
|
|
842
850
|
}
|
|
843
|
-
case
|
|
844
|
-
N.has(
|
|
845
|
-
let S =
|
|
851
|
+
case O: {
|
|
852
|
+
N.has(b) && B.p(b, o);
|
|
853
|
+
let S = b.length;
|
|
846
854
|
if (S > 20 || S < 3)
|
|
847
855
|
return this.skip;
|
|
848
|
-
if (
|
|
849
|
-
let E =
|
|
850
|
-
|
|
856
|
+
if (Nt.has(b)) {
|
|
857
|
+
let E = n(h);
|
|
858
|
+
U.push(E, a, o), I.p(b.toLowerCase(), o);
|
|
851
859
|
return;
|
|
852
860
|
}
|
|
853
|
-
if (
|
|
854
|
-
let E =
|
|
855
|
-
|
|
861
|
+
if (Jt.has(b)) {
|
|
862
|
+
let E = n(h);
|
|
863
|
+
U.push(E, a, o), I.p("named", o);
|
|
856
864
|
return;
|
|
857
865
|
}
|
|
858
|
-
if (
|
|
859
|
-
let E =
|
|
860
|
-
|
|
866
|
+
if (Xt.has(b)) {
|
|
867
|
+
let E = n(h);
|
|
868
|
+
U.push(E, a, o), I.p("system", o);
|
|
861
869
|
return;
|
|
862
870
|
}
|
|
863
871
|
return this.skip;
|
|
864
872
|
}
|
|
865
|
-
case
|
|
866
|
-
if (
|
|
873
|
+
case Te: {
|
|
874
|
+
if (z("var", b))
|
|
867
875
|
return this.skip;
|
|
868
|
-
if (
|
|
869
|
-
|
|
876
|
+
if ($t.has(b)) {
|
|
877
|
+
U.push(n(h), a, h.loc), I.p(b.toLowerCase(), h.loc);
|
|
870
878
|
return;
|
|
871
879
|
}
|
|
872
|
-
if (
|
|
873
|
-
ct.p(
|
|
880
|
+
if (L("gradient", b)) {
|
|
881
|
+
ct.p(n(h), h.loc);
|
|
874
882
|
return;
|
|
875
883
|
}
|
|
876
884
|
}
|
|
@@ -878,42 +886,42 @@ function wi(i, t = {}) {
|
|
|
878
886
|
});
|
|
879
887
|
break;
|
|
880
888
|
}
|
|
881
|
-
case
|
|
889
|
+
case Re: {
|
|
882
890
|
if (this.atrulePrelude !== null)
|
|
883
891
|
return this.skip;
|
|
884
892
|
W++;
|
|
885
893
|
let f = 1;
|
|
886
|
-
st.add(
|
|
887
|
-
let { property: a, loc: { start:
|
|
894
|
+
st.add(n(s)), s.important === !0 && (Q++, f++, this.atrule && L("keyframes", this.atrule.name) && (de++, f++)), lt.push(f);
|
|
895
|
+
let { property: a, loc: { start: m } } = s, c = {
|
|
888
896
|
start: {
|
|
889
|
-
line:
|
|
890
|
-
column:
|
|
891
|
-
offset:
|
|
897
|
+
line: m.line,
|
|
898
|
+
column: m.column,
|
|
899
|
+
offset: m.offset
|
|
892
900
|
},
|
|
893
901
|
end: {
|
|
894
|
-
offset:
|
|
902
|
+
offset: m.offset + a.length
|
|
895
903
|
}
|
|
896
904
|
};
|
|
897
|
-
K.p(a,
|
|
905
|
+
K.p(a, c), D(a) ? (ke.p(a, c), j.push(2)) : oi(a) ? (we.p(a, c), j.push(2)) : Me(a) ? (Z.p(a, c), j.push(s.important ? 3 : 2), s.important === !0 && ye.p(a, c)) : j.push(1);
|
|
898
906
|
break;
|
|
899
907
|
}
|
|
900
908
|
}
|
|
901
909
|
});
|
|
902
|
-
let pt = st.size, H = G.size(),
|
|
910
|
+
let pt = st.size, H = G.size(), ve = Je.aggregate(), qe = Xe.aggregate(), Ae = $e.aggregate(), ht = Ze.size, k = Object.assign, mt = i.length, Pe = ie.length, gt = te.aggregate(), dt = G.aggregate(), yt = lt.aggregate(), wt = j.aggregate(), kt = be.aggregate();
|
|
903
911
|
return {
|
|
904
912
|
stylesheet: {
|
|
905
|
-
sourceLinesOfCode: ee + H + W +
|
|
913
|
+
sourceLinesOfCode: ee + H + W + pe.size(),
|
|
906
914
|
linesOfCode: Et,
|
|
907
915
|
size: mt,
|
|
908
|
-
complexity:
|
|
916
|
+
complexity: gt.sum + dt.sum + yt.sum + wt.sum + kt.sum,
|
|
909
917
|
comments: {
|
|
910
918
|
total: w,
|
|
911
|
-
size:
|
|
919
|
+
size: d
|
|
912
920
|
},
|
|
913
921
|
embeddedContent: {
|
|
914
922
|
size: {
|
|
915
|
-
total:
|
|
916
|
-
ratio: x(
|
|
923
|
+
total: _,
|
|
924
|
+
ratio: x(_, mt)
|
|
917
925
|
},
|
|
918
926
|
types: {
|
|
919
927
|
total: y.total,
|
|
@@ -924,35 +932,35 @@ function wi(i, t = {}) {
|
|
|
924
932
|
}
|
|
925
933
|
},
|
|
926
934
|
atrules: {
|
|
927
|
-
fontface:
|
|
928
|
-
total:
|
|
929
|
-
totalUnique:
|
|
935
|
+
fontface: k({
|
|
936
|
+
total: Pe,
|
|
937
|
+
totalUnique: Pe,
|
|
930
938
|
unique: ie,
|
|
931
|
-
uniquenessRatio:
|
|
939
|
+
uniquenessRatio: Pe === 0 ? 0 : 1
|
|
932
940
|
}, e ? {
|
|
933
941
|
uniqueWithLocations: Ue.c().uniqueWithLocations
|
|
934
942
|
} : {}),
|
|
935
|
-
import:
|
|
936
|
-
media:
|
|
937
|
-
|
|
943
|
+
import: Ie.c(),
|
|
944
|
+
media: k(
|
|
945
|
+
He.c(),
|
|
938
946
|
{
|
|
939
|
-
browserhacks:
|
|
947
|
+
browserhacks: Ve.c()
|
|
940
948
|
}
|
|
941
949
|
),
|
|
942
|
-
charset:
|
|
943
|
-
supports:
|
|
944
|
-
|
|
950
|
+
charset: We.c(),
|
|
951
|
+
supports: k(
|
|
952
|
+
se.c(),
|
|
945
953
|
{
|
|
946
954
|
browserhacks: Ke.c()
|
|
947
955
|
}
|
|
948
956
|
),
|
|
949
|
-
keyframes:
|
|
950
|
-
|
|
957
|
+
keyframes: k(
|
|
958
|
+
le.c(),
|
|
951
959
|
{
|
|
952
|
-
prefixed:
|
|
953
|
-
|
|
960
|
+
prefixed: k(
|
|
961
|
+
ne.c(),
|
|
954
962
|
{
|
|
955
|
-
ratio: x(
|
|
963
|
+
ratio: x(ne.size(), le.size())
|
|
956
964
|
}
|
|
957
965
|
)
|
|
958
966
|
}
|
|
@@ -961,32 +969,32 @@ function wi(i, t = {}) {
|
|
|
961
969
|
layer: re.c(),
|
|
962
970
|
property: Be.c(),
|
|
963
971
|
total: ee,
|
|
964
|
-
complexity:
|
|
972
|
+
complexity: gt
|
|
965
973
|
},
|
|
966
974
|
rules: {
|
|
967
|
-
total:
|
|
975
|
+
total: ae,
|
|
968
976
|
empty: {
|
|
969
|
-
total:
|
|
970
|
-
ratio: x(
|
|
977
|
+
total: oe,
|
|
978
|
+
ratio: x(oe, ae)
|
|
971
979
|
},
|
|
972
|
-
sizes:
|
|
973
|
-
|
|
980
|
+
sizes: k(
|
|
981
|
+
ue.aggregate(),
|
|
974
982
|
{
|
|
975
|
-
items:
|
|
983
|
+
items: ue.toArray()
|
|
976
984
|
},
|
|
977
985
|
Ye.c()
|
|
978
986
|
),
|
|
979
|
-
selectors:
|
|
980
|
-
|
|
987
|
+
selectors: k(
|
|
988
|
+
ce.aggregate(),
|
|
981
989
|
{
|
|
982
|
-
items:
|
|
990
|
+
items: ce.toArray()
|
|
983
991
|
},
|
|
984
992
|
Ge.c()
|
|
985
993
|
),
|
|
986
|
-
declarations:
|
|
987
|
-
|
|
994
|
+
declarations: k(
|
|
995
|
+
fe.aggregate(),
|
|
988
996
|
{
|
|
989
|
-
items:
|
|
997
|
+
items: fe.toArray()
|
|
990
998
|
},
|
|
991
999
|
Qe.c()
|
|
992
1000
|
)
|
|
@@ -995,48 +1003,48 @@ function wi(i, t = {}) {
|
|
|
995
1003
|
total: H,
|
|
996
1004
|
totalUnique: ht,
|
|
997
1005
|
uniquenessRatio: x(ht, H),
|
|
998
|
-
specificity:
|
|
1006
|
+
specificity: k(
|
|
999
1007
|
{
|
|
1000
1008
|
/** @type Specificity */
|
|
1001
|
-
min:
|
|
1009
|
+
min: M === void 0 ? [0, 0, 0] : M,
|
|
1002
1010
|
/** @type Specificity */
|
|
1003
|
-
max:
|
|
1011
|
+
max: T === void 0 ? [0, 0, 0] : T,
|
|
1004
1012
|
/** @type Specificity */
|
|
1005
|
-
sum: [
|
|
1013
|
+
sum: [ve.sum, qe.sum, Ae.sum],
|
|
1006
1014
|
/** @type Specificity */
|
|
1007
|
-
mean: [
|
|
1015
|
+
mean: [ve.mean, qe.mean, Ae.mean],
|
|
1008
1016
|
/** @type Specificity */
|
|
1009
|
-
mode: [
|
|
1017
|
+
mode: [ve.mode, qe.mode, Ae.mode],
|
|
1010
1018
|
/** @type Specificity */
|
|
1011
1019
|
items: tt
|
|
1012
1020
|
},
|
|
1013
1021
|
Ne.c()
|
|
1014
1022
|
),
|
|
1015
|
-
complexity:
|
|
1016
|
-
|
|
1023
|
+
complexity: k(
|
|
1024
|
+
dt,
|
|
1017
1025
|
et.c(),
|
|
1018
1026
|
{
|
|
1019
1027
|
items: G.toArray()
|
|
1020
1028
|
}
|
|
1021
1029
|
),
|
|
1022
|
-
id:
|
|
1023
|
-
|
|
1030
|
+
id: k(
|
|
1031
|
+
me.c(),
|
|
1024
1032
|
{
|
|
1025
|
-
ratio: x(
|
|
1033
|
+
ratio: x(me.size(), H)
|
|
1026
1034
|
}
|
|
1027
1035
|
),
|
|
1028
1036
|
pseudoClasses: it.c(),
|
|
1029
|
-
accessibility:
|
|
1030
|
-
|
|
1037
|
+
accessibility: k(
|
|
1038
|
+
ge.c(),
|
|
1031
1039
|
{
|
|
1032
|
-
ratio: x(
|
|
1040
|
+
ratio: x(ge.size(), H)
|
|
1033
1041
|
}
|
|
1034
1042
|
),
|
|
1035
|
-
keyframes:
|
|
1036
|
-
prefixed:
|
|
1037
|
-
|
|
1043
|
+
keyframes: pe.c(),
|
|
1044
|
+
prefixed: k(
|
|
1045
|
+
he.c(),
|
|
1038
1046
|
{
|
|
1039
|
-
ratio: x(
|
|
1047
|
+
ratio: x(he.size(), H)
|
|
1040
1048
|
}
|
|
1041
1049
|
),
|
|
1042
1050
|
combinators: rt.c()
|
|
@@ -1055,46 +1063,46 @@ function wi(i, t = {}) {
|
|
|
1055
1063
|
},
|
|
1056
1064
|
complexity: yt
|
|
1057
1065
|
},
|
|
1058
|
-
properties:
|
|
1066
|
+
properties: k(
|
|
1059
1067
|
K.c(),
|
|
1060
1068
|
{
|
|
1061
|
-
prefixed:
|
|
1062
|
-
|
|
1069
|
+
prefixed: k(
|
|
1070
|
+
ke.c(),
|
|
1063
1071
|
{
|
|
1064
|
-
ratio: x(
|
|
1072
|
+
ratio: x(ke.size(), K.size())
|
|
1065
1073
|
}
|
|
1066
1074
|
),
|
|
1067
|
-
custom:
|
|
1075
|
+
custom: k(
|
|
1068
1076
|
Z.c(),
|
|
1069
1077
|
{
|
|
1070
1078
|
ratio: x(Z.size(), K.size()),
|
|
1071
|
-
importants:
|
|
1072
|
-
|
|
1079
|
+
importants: k(
|
|
1080
|
+
ye.c(),
|
|
1073
1081
|
{
|
|
1074
|
-
ratio: x(
|
|
1082
|
+
ratio: x(ye.size(), Z.size())
|
|
1075
1083
|
}
|
|
1076
1084
|
)
|
|
1077
1085
|
}
|
|
1078
1086
|
),
|
|
1079
|
-
browserhacks:
|
|
1080
|
-
|
|
1087
|
+
browserhacks: k(
|
|
1088
|
+
we.c(),
|
|
1081
1089
|
{
|
|
1082
|
-
ratio: x(
|
|
1090
|
+
ratio: x(we.size(), K.size())
|
|
1083
1091
|
}
|
|
1084
1092
|
),
|
|
1085
1093
|
complexity: wt
|
|
1086
1094
|
}
|
|
1087
1095
|
),
|
|
1088
1096
|
values: {
|
|
1089
|
-
colors:
|
|
1090
|
-
|
|
1097
|
+
colors: k(
|
|
1098
|
+
U.count(),
|
|
1091
1099
|
{
|
|
1092
1100
|
formats: I.c()
|
|
1093
1101
|
}
|
|
1094
1102
|
),
|
|
1095
1103
|
gradients: ct.c(),
|
|
1096
|
-
fontFamilies:
|
|
1097
|
-
fontSizes:
|
|
1104
|
+
fontFamilies: Ce.c(),
|
|
1105
|
+
fontSizes: ze.c(),
|
|
1098
1106
|
lineHeights: _e.c(),
|
|
1099
1107
|
zindexes: at.c(),
|
|
1100
1108
|
textShadows: ot.c(),
|
|
@@ -1105,30 +1113,30 @@ function wi(i, t = {}) {
|
|
|
1105
1113
|
timingFunctions: J.c()
|
|
1106
1114
|
},
|
|
1107
1115
|
prefixes: nt.c(),
|
|
1108
|
-
browserhacks:
|
|
1109
|
-
units:
|
|
1110
|
-
complexity:
|
|
1116
|
+
browserhacks: xe.c(),
|
|
1117
|
+
units: Se.count(),
|
|
1118
|
+
complexity: kt,
|
|
1111
1119
|
keywords: B.c()
|
|
1112
1120
|
},
|
|
1113
1121
|
__meta__: {
|
|
1114
|
-
parseTime: F -
|
|
1122
|
+
parseTime: F - P,
|
|
1115
1123
|
analyzeTime: Date.now() - F,
|
|
1116
|
-
total: Date.now() -
|
|
1124
|
+
total: Date.now() - l
|
|
1117
1125
|
}
|
|
1118
1126
|
};
|
|
1119
1127
|
}
|
|
1120
|
-
function
|
|
1128
|
+
function zt(i, t) {
|
|
1121
1129
|
return i[0] === t[0] ? i[1] === t[1] ? t[2] - i[2] : t[1] - i[1] : t[0] - i[0];
|
|
1122
1130
|
}
|
|
1123
1131
|
export {
|
|
1124
|
-
|
|
1125
|
-
|
|
1132
|
+
yi as analyze,
|
|
1133
|
+
zt as compareSpecificity,
|
|
1126
1134
|
D as hasVendorPrefix,
|
|
1127
1135
|
Lt as isAccessibilitySelector,
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1136
|
+
Yt as isMediaBrowserhack,
|
|
1137
|
+
oi as isPropertyHack,
|
|
1138
|
+
Gt as isSelectorPrefixed,
|
|
1139
|
+
Bt as isSupportsBrowserhack,
|
|
1132
1140
|
Rt as isValuePrefixed,
|
|
1133
1141
|
Ot as selectorComplexity
|
|
1134
1142
|
};
|
package/package.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@projectwallace/css-analyzer",
|
|
3
|
-
"
|
|
3
|
+
"description": "The best CSS analyzer out there. Check design tokens, complexity, specificity, performance and more.",
|
|
4
|
+
"version": "7.0.2",
|
|
4
5
|
"author": "Bart Veneman",
|
|
5
6
|
"repository": {
|
|
6
7
|
"type": "git",
|
|
7
8
|
"url": "git+https://github.com/projectwallace/css-analyzer.git"
|
|
8
9
|
},
|
|
9
|
-
"homepage": "https://
|
|
10
|
+
"homepage": "https://github.com/projectwallace/css-analyzer",
|
|
10
11
|
"issues": "https://github.com/projectwallace/css-analyzer/issues",
|
|
11
12
|
"license": "MIT",
|
|
12
13
|
"type": "module",
|
|
@@ -45,7 +46,7 @@
|
|
|
45
46
|
],
|
|
46
47
|
"dependencies": {
|
|
47
48
|
"@bramus/specificity": "^2.4.1",
|
|
48
|
-
"css-tree": "^
|
|
49
|
+
"css-tree": "^3.1.0"
|
|
49
50
|
},
|
|
50
51
|
"devDependencies": {
|
|
51
52
|
"@codecov/vite-plugin": "^1.9.0",
|
|
@@ -53,8 +54,5 @@
|
|
|
53
54
|
"uvu": "^0.5.6",
|
|
54
55
|
"vite": "^6.3.4",
|
|
55
56
|
"vite-plugin-dts": "^4.5.0"
|
|
56
|
-
},
|
|
57
|
-
"mangle": {
|
|
58
|
-
"regex": "^_[^_]"
|
|
59
57
|
}
|
|
60
58
|
}
|