stylelint-plugin-grid 1.0.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/CHANGELOG.md +0 -0
- package/LICENSE +21 -0
- package/README.md +93 -0
- package/dist/_internal/create-stylelint-rule.d.ts +49 -0
- package/dist/_internal/create-stylelint-rule.d.ts.map +1 -0
- package/dist/_internal/create-stylelint-rule.js +34 -0
- package/dist/_internal/create-stylelint-rule.js.map +1 -0
- package/dist/_internal/grid-template-analysis.d.ts +62 -0
- package/dist/_internal/grid-template-analysis.d.ts.map +1 -0
- package/dist/_internal/grid-template-analysis.js +346 -0
- package/dist/_internal/grid-template-analysis.js.map +1 -0
- package/dist/_internal/plugin-constants.d.ts +30 -0
- package/dist/_internal/plugin-constants.d.ts.map +1 -0
- package/dist/_internal/plugin-constants.js +47 -0
- package/dist/_internal/plugin-constants.js.map +1 -0
- package/dist/_internal/rules-registry.d.ts +10 -0
- package/dist/_internal/rules-registry.d.ts.map +1 -0
- package/dist/_internal/rules-registry.js +31 -0
- package/dist/_internal/rules-registry.js.map +1 -0
- package/dist/configs/grid-all.cjs +3 -0
- package/dist/configs/grid-all.d.cts +3 -0
- package/dist/configs/grid-all.d.ts +9 -0
- package/dist/configs/grid-all.d.ts.map +1 -0
- package/dist/configs/grid-all.js +9 -0
- package/dist/configs/grid-all.js.map +1 -0
- package/dist/configs/grid-recommended.cjs +3 -0
- package/dist/configs/grid-recommended.d.cts +3 -0
- package/dist/configs/grid-recommended.d.ts +9 -0
- package/dist/configs/grid-recommended.d.ts.map +1 -0
- package/dist/configs/grid-recommended.js +9 -0
- package/dist/configs/grid-recommended.js.map +1 -0
- package/dist/plugin.cjs +1268 -0
- package/dist/plugin.cjs.map +7 -0
- package/dist/plugin.d.cts +45 -0
- package/dist/plugin.d.ts +45 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +78 -0
- package/dist/plugin.js.map +1 -0
- package/dist/rules/consistent-area-naming.d.ts +12 -0
- package/dist/rules/consistent-area-naming.d.ts.map +1 -0
- package/dist/rules/consistent-area-naming.js +86 -0
- package/dist/rules/consistent-area-naming.js.map +1 -0
- package/dist/rules/no-dense-auto-flow.d.ts +8 -0
- package/dist/rules/no-dense-auto-flow.d.ts.map +1 -0
- package/dist/rules/no-dense-auto-flow.js +44 -0
- package/dist/rules/no-dense-auto-flow.js.map +1 -0
- package/dist/rules/no-invalid-areas.d.ts +8 -0
- package/dist/rules/no-invalid-areas.d.ts.map +1 -0
- package/dist/rules/no-invalid-areas.js +42 -0
- package/dist/rules/no-invalid-areas.js.map +1 -0
- package/dist/rules/no-invalid-auto-repeat.d.ts +8 -0
- package/dist/rules/no-invalid-auto-repeat.d.ts.map +1 -0
- package/dist/rules/no-invalid-auto-repeat.js +189 -0
- package/dist/rules/no-invalid-auto-repeat.js.map +1 -0
- package/dist/rules/no-invalid-minmax.d.ts +8 -0
- package/dist/rules/no-invalid-minmax.d.ts.map +1 -0
- package/dist/rules/no-invalid-minmax.js +58 -0
- package/dist/rules/no-invalid-minmax.js.map +1 -0
- package/dist/rules/no-mismatched-template-rows.d.ts +8 -0
- package/dist/rules/no-mismatched-template-rows.d.ts.map +1 -0
- package/dist/rules/no-mismatched-template-rows.js +50 -0
- package/dist/rules/no-mismatched-template-rows.js.map +1 -0
- package/dist/rules/no-overlapping-areas.d.ts +8 -0
- package/dist/rules/no-overlapping-areas.d.ts.map +1 -0
- package/dist/rules/no-overlapping-areas.js +48 -0
- package/dist/rules/no-overlapping-areas.js.map +1 -0
- package/dist/rules/no-unknown-areas.d.ts +8 -0
- package/dist/rules/no-unknown-areas.d.ts.map +1 -0
- package/dist/rules/no-unknown-areas.js +47 -0
- package/dist/rules/no-unknown-areas.js.map +1 -0
- package/dist/rules/no-unused-areas.d.ts +8 -0
- package/dist/rules/no-unused-areas.d.ts.map +1 -0
- package/dist/rules/no-unused-areas.js +48 -0
- package/dist/rules/no-unused-areas.js.map +1 -0
- package/dist/rules/prefer-gap-properties.d.ts +8 -0
- package/dist/rules/prefer-gap-properties.d.ts.map +1 -0
- package/dist/rules/prefer-gap-properties.js +58 -0
- package/dist/rules/prefer-gap-properties.js.map +1 -0
- package/dist/rules/require-explicit-rows-with-column-flow.d.ts +8 -0
- package/dist/rules/require-explicit-rows-with-column-flow.d.ts.map +1 -0
- package/dist/rules/require-explicit-rows-with-column-flow.js +52 -0
- package/dist/rules/require-explicit-rows-with-column-flow.js.map +1 -0
- package/dist/rules/validate-area-shapes.d.ts +8 -0
- package/dist/rules/validate-area-shapes.d.ts.map +1 -0
- package/dist/rules/validate-area-shapes.js +47 -0
- package/dist/rules/validate-area-shapes.js.map +1 -0
- package/dist/rules/validate-track-counts.d.ts +9 -0
- package/dist/rules/validate-track-counts.d.ts.map +1 -0
- package/dist/rules/validate-track-counts.js +67 -0
- package/dist/rules/validate-track-counts.js.map +1 -0
- package/docs/rules/configs/grid-all.md +42 -0
- package/docs/rules/configs/grid-recommended.md +37 -0
- package/docs/rules/configs/index.md +46 -0
- package/docs/rules/consistent-area-naming.md +41 -0
- package/docs/rules/getting-started.md +55 -0
- package/docs/rules/guides/current-status.md +44 -0
- package/docs/rules/no-dense-auto-flow.md +57 -0
- package/docs/rules/no-invalid-areas.md +55 -0
- package/docs/rules/no-invalid-auto-repeat.md +58 -0
- package/docs/rules/no-invalid-minmax.md +57 -0
- package/docs/rules/no-mismatched-template-rows.md +36 -0
- package/docs/rules/no-overlapping-areas.md +40 -0
- package/docs/rules/no-unknown-areas.md +39 -0
- package/docs/rules/no-unused-areas.md +44 -0
- package/docs/rules/overview.md +54 -0
- package/docs/rules/prefer-gap-properties.md +45 -0
- package/docs/rules/require-explicit-rows-with-column-flow.md +56 -0
- package/docs/rules/validate-area-shapes.md +46 -0
- package/docs/rules/validate-track-counts.md +39 -0
- package/package.json +355 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import stylelint, {} from "stylelint";
|
|
2
|
+
import { createStylelintRule, } from "../_internal/create-stylelint-rule.js";
|
|
3
|
+
import { collectGridTemplateAreas } from "../_internal/grid-template-analysis.js";
|
|
4
|
+
import { createRuleDocsUrl, createRuleName, } from "../_internal/plugin-constants.js";
|
|
5
|
+
const { report, ruleMessages, validateOptions } = stylelint.utils;
|
|
6
|
+
const ruleName = createRuleName("no-invalid-areas");
|
|
7
|
+
const messages = ruleMessages(ruleName, {
|
|
8
|
+
rejected: (message) => message,
|
|
9
|
+
});
|
|
10
|
+
const docs = {
|
|
11
|
+
description: "Disallow malformed `grid-template-areas` declarations.",
|
|
12
|
+
recommended: true,
|
|
13
|
+
url: createRuleDocsUrl("no-invalid-areas"),
|
|
14
|
+
};
|
|
15
|
+
const ruleFunction = (primary) => (root, result) => {
|
|
16
|
+
if (!validateOptions(result, ruleName, {
|
|
17
|
+
actual: primary,
|
|
18
|
+
possible: [true],
|
|
19
|
+
})) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
for (const template of collectGridTemplateAreas(root)) {
|
|
23
|
+
for (const diagnostic of template.diagnostics) {
|
|
24
|
+
report({
|
|
25
|
+
message: messages.rejected(diagnostic.message),
|
|
26
|
+
node: template.declaration,
|
|
27
|
+
result,
|
|
28
|
+
ruleName,
|
|
29
|
+
word: diagnostic.token,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
/** Public Stylelint rule definition. */
|
|
35
|
+
const rule = createStylelintRule({
|
|
36
|
+
docs,
|
|
37
|
+
messages,
|
|
38
|
+
rule: ruleFunction,
|
|
39
|
+
ruleName,
|
|
40
|
+
});
|
|
41
|
+
export default rule;
|
|
42
|
+
//# sourceMappingURL=no-invalid-areas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-invalid-areas.js","sourceRoot":"","sources":["../../src/rules/no-invalid-areas.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,EAAE,EAAiB,MAAM,WAAW,CAAC;AAErD,OAAO,EACH,mBAAmB,GAEtB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EACH,iBAAiB,EACjB,cAAc,GACjB,MAAM,kCAAkC,CAAC;AAE1C,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC;AAElE,MAAM,QAAQ,GAAG,cAAc,CAAC,kBAAkB,CAAC,CAAC;AACpD,MAAM,QAAQ,GAA8C,YAAY,CACpE,QAAQ,EACR;IACI,QAAQ,EAAE,CAAC,OAAe,EAAU,EAAE,CAAC,OAAO;CACjD,CACJ,CAAC;AAEF,MAAM,IAAI,GAAG;IACT,WAAW,EAAE,wDAAwD;IACrE,WAAW,EAAE,IAAI;IACjB,GAAG,EAAE,iBAAiB,CAAC,kBAAkB,CAAC;CACpC,CAAC;AAEX,MAAM,YAAY,GACd,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;IAC1B,IACI,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE;QAC/B,MAAM,EAAE,OAAO;QACf,QAAQ,EAAE,CAAC,IAAI,CAAC;KACnB,CAAC,EACJ,CAAC;QACC,OAAO;IACX,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC;QACpD,KAAK,MAAM,UAAU,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;YAC5C,MAAM,CAAC;gBACH,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC;gBAC9C,IAAI,EAAE,QAAQ,CAAC,WAAW;gBAC1B,MAAM;gBACN,QAAQ;gBACR,IAAI,EAAE,UAAU,CAAC,KAAK;aACzB,CAAC,CAAC;QACP,CAAC;IACL,CAAC;AACL,CAAC,CAAC;AAEN,wCAAwC;AACxC,MAAM,IAAI,GACN,mBAAmB,CAAsC;IACrD,IAAI;IACJ,QAAQ;IACR,IAAI,EAAE,YAAY;IAClB,QAAQ;CACX,CAAC,CAAC;AAEP,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type StylelintPluginRule } from "../_internal/create-stylelint-rule.js";
|
|
2
|
+
declare const messages: {
|
|
3
|
+
rejected: (token: string, repeatKeyword: string) => string;
|
|
4
|
+
};
|
|
5
|
+
/** Public Stylelint rule definition. */
|
|
6
|
+
declare const rule: StylelintPluginRule<boolean, undefined, typeof messages>;
|
|
7
|
+
export default rule;
|
|
8
|
+
//# sourceMappingURL=no-invalid-auto-repeat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-invalid-auto-repeat.d.ts","sourceRoot":"","sources":["../../src/rules/no-invalid-auto-repeat.ts"],"names":[],"mappings":"AAGA,OAAO,EAEH,KAAK,mBAAmB,EAC3B,MAAM,uCAAuC,CAAC;AAc/C,QAAA,MAAM,QAAQ,EAAE;IACZ,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,KAAK,MAAM,CAAC;CAI7D,CAAC;AA4OH,wCAAwC;AACxC,QAAA,MAAM,IAAI,EAAE,mBAAmB,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,QAAQ,CAM7D,CAAC;AAEP,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import stylelint, {} from "stylelint";
|
|
2
|
+
import { arrayFirst, isDefined, setHas } from "ts-extras";
|
|
3
|
+
import { createStylelintRule, } from "../_internal/create-stylelint-rule.js";
|
|
4
|
+
import { findValueFunctionCalls, splitTopLevelCommas, splitTopLevelWhitespace, } from "../_internal/grid-template-analysis.js";
|
|
5
|
+
import { createRuleDocsUrl, createRuleName, } from "../_internal/plugin-constants.js";
|
|
6
|
+
const { report, ruleMessages, validateOptions } = stylelint.utils;
|
|
7
|
+
const ruleName = createRuleName("no-invalid-auto-repeat");
|
|
8
|
+
const messages = ruleMessages(ruleName, {
|
|
9
|
+
rejected: (token, repeatKeyword) => `Use a fixed track size inside \`repeat(${repeatKeyword}, ...)\`; \`${token}\` can make the grid template declaration invalid.`,
|
|
10
|
+
});
|
|
11
|
+
const docs = {
|
|
12
|
+
description: "Disallow definitely invalid CSS Grid auto-repeat track sizes.",
|
|
13
|
+
recommended: true,
|
|
14
|
+
url: createRuleDocsUrl("no-invalid-auto-repeat"),
|
|
15
|
+
};
|
|
16
|
+
const trackTemplateProperties = new Set([
|
|
17
|
+
"grid-template-columns",
|
|
18
|
+
"grid-template-rows",
|
|
19
|
+
]);
|
|
20
|
+
const invalidBareAutoRepeatTrackTokens = new Set([
|
|
21
|
+
"auto",
|
|
22
|
+
"max-content",
|
|
23
|
+
"min-content",
|
|
24
|
+
]);
|
|
25
|
+
const cssLengthUnits = new Set([
|
|
26
|
+
"cap",
|
|
27
|
+
"ch",
|
|
28
|
+
"cm",
|
|
29
|
+
"dvb",
|
|
30
|
+
"dvh",
|
|
31
|
+
"dvi",
|
|
32
|
+
"dvmax",
|
|
33
|
+
"dvmin",
|
|
34
|
+
"dvw",
|
|
35
|
+
"em",
|
|
36
|
+
"ex",
|
|
37
|
+
"ic",
|
|
38
|
+
"in",
|
|
39
|
+
"lh",
|
|
40
|
+
"lvb",
|
|
41
|
+
"lvh",
|
|
42
|
+
"lvi",
|
|
43
|
+
"lvmax",
|
|
44
|
+
"lvmin",
|
|
45
|
+
"lvw",
|
|
46
|
+
"mm",
|
|
47
|
+
"pc",
|
|
48
|
+
"pt",
|
|
49
|
+
"px",
|
|
50
|
+
"q",
|
|
51
|
+
"rch",
|
|
52
|
+
"rem",
|
|
53
|
+
"rex",
|
|
54
|
+
"ric",
|
|
55
|
+
"rlh",
|
|
56
|
+
"svb",
|
|
57
|
+
"svh",
|
|
58
|
+
"svi",
|
|
59
|
+
"svmax",
|
|
60
|
+
"svmin",
|
|
61
|
+
"svw",
|
|
62
|
+
"vb",
|
|
63
|
+
"vh",
|
|
64
|
+
"vi",
|
|
65
|
+
"vmax",
|
|
66
|
+
"vmin",
|
|
67
|
+
"vw",
|
|
68
|
+
]);
|
|
69
|
+
const lengthPercentagePattern = /^[+\-]?(?:\d+|\d*\.\d+)(?<unit>%|[A-Za-z]+)$/v;
|
|
70
|
+
const zeroPattern = /^[+\-]?(?:0|0?\.0+)$/v;
|
|
71
|
+
function containsRuntimeValue(token) {
|
|
72
|
+
const normalizedToken = token.toLowerCase();
|
|
73
|
+
return normalizedToken.includes("var(") || normalizedToken.includes("env(");
|
|
74
|
+
}
|
|
75
|
+
function getInvalidAutoRepeatTrack(trackList) {
|
|
76
|
+
for (const token of splitTopLevelWhitespace(trackList)) {
|
|
77
|
+
const normalizedToken = token.toLowerCase();
|
|
78
|
+
if (!isLineNameList(token) && !containsRuntimeValue(token)) {
|
|
79
|
+
if (setHas(invalidBareAutoRepeatTrackTokens, normalizedToken) ||
|
|
80
|
+
isFlexTrackBreadth(normalizedToken)) {
|
|
81
|
+
return token;
|
|
82
|
+
}
|
|
83
|
+
if (hasStringPrefix(normalizedToken, "minmax(") &&
|
|
84
|
+
isInvalidAutoRepeatMinmax(token)) {
|
|
85
|
+
return token;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return undefined;
|
|
90
|
+
}
|
|
91
|
+
function getMinmaxArguments(token) {
|
|
92
|
+
const minmaxCall = arrayFirst(findValueFunctionCalls(token, "minmax"));
|
|
93
|
+
if (!isDefined(minmaxCall)) {
|
|
94
|
+
return undefined;
|
|
95
|
+
}
|
|
96
|
+
const [minimum, maximum] = splitTopLevelCommas(minmaxCall.body).map((argument) => argument.trim());
|
|
97
|
+
if (!isDefined(minimum) || !isDefined(maximum)) {
|
|
98
|
+
return undefined;
|
|
99
|
+
}
|
|
100
|
+
return [minimum, maximum];
|
|
101
|
+
}
|
|
102
|
+
function getRepeatKeyword(repeatBody) {
|
|
103
|
+
const repeatCount = arrayFirst(splitTopLevelCommas(repeatBody))
|
|
104
|
+
?.trim()
|
|
105
|
+
.toLowerCase();
|
|
106
|
+
if (repeatCount === "auto-fill" || repeatCount === "auto-fit") {
|
|
107
|
+
return repeatCount;
|
|
108
|
+
}
|
|
109
|
+
return undefined;
|
|
110
|
+
}
|
|
111
|
+
function hasStringPrefix(value, prefix) {
|
|
112
|
+
// eslint-disable-next-line @typescript-eslint/prefer-string-starts-ends-with -- `startsWith` is falsely flagged as unsafe in this typed lint context.
|
|
113
|
+
return value.slice(0, prefix.length) === prefix;
|
|
114
|
+
}
|
|
115
|
+
function isFixedTrackBreadth(value) {
|
|
116
|
+
const normalizedValue = value.toLowerCase();
|
|
117
|
+
if (zeroPattern.test(normalizedValue)) {
|
|
118
|
+
return true;
|
|
119
|
+
}
|
|
120
|
+
if (hasStringPrefix(normalizedValue, "calc(") ||
|
|
121
|
+
hasStringPrefix(normalizedValue, "clamp(") ||
|
|
122
|
+
hasStringPrefix(normalizedValue, "max(") ||
|
|
123
|
+
hasStringPrefix(normalizedValue, "min(")) {
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
126
|
+
const match = lengthPercentagePattern.exec(normalizedValue);
|
|
127
|
+
const unit = match?.groups?.["unit"];
|
|
128
|
+
return unit === "%" || (isDefined(unit) && setHas(cssLengthUnits, unit));
|
|
129
|
+
}
|
|
130
|
+
function isFlexTrackBreadth(value) {
|
|
131
|
+
return /^[+\-]?(?:\d+|\d*\.\d+)fr$/v.test(value);
|
|
132
|
+
}
|
|
133
|
+
function isIntrinsicTrackBreadth(value) {
|
|
134
|
+
const normalizedValue = value.toLowerCase();
|
|
135
|
+
return setHas(invalidBareAutoRepeatTrackTokens, normalizedValue);
|
|
136
|
+
}
|
|
137
|
+
function isInvalidAutoRepeatMinmax(token) {
|
|
138
|
+
const args = getMinmaxArguments(token);
|
|
139
|
+
if (!isDefined(args)) {
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
const [minimum, maximum] = args;
|
|
143
|
+
return (isFlexTrackBreadth(minimum) ||
|
|
144
|
+
(isIntrinsicTrackBreadth(minimum) && !isFixedTrackBreadth(maximum)));
|
|
145
|
+
}
|
|
146
|
+
function isLineNameList(token) {
|
|
147
|
+
return token.startsWith("[") && token.endsWith("]");
|
|
148
|
+
}
|
|
149
|
+
const ruleFunction = (primary) => (root, result) => {
|
|
150
|
+
if (!validateOptions(result, ruleName, {
|
|
151
|
+
actual: primary,
|
|
152
|
+
possible: [true],
|
|
153
|
+
})) {
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
root.walkDecls((declaration) => {
|
|
157
|
+
if (!setHas(trackTemplateProperties, declaration.prop.toLowerCase())) {
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
for (const repeatCall of findValueFunctionCalls(declaration.value, "repeat")) {
|
|
161
|
+
const repeatKeyword = getRepeatKeyword(repeatCall.body);
|
|
162
|
+
if (isDefined(repeatKeyword)) {
|
|
163
|
+
// eslint-disable-next-line typefest/prefer-ts-extras-array-join -- ts-extras does not expose a typed arrayJoin in this project setup.
|
|
164
|
+
const trackList = splitTopLevelCommas(repeatCall.body)
|
|
165
|
+
.slice(1)
|
|
166
|
+
.join(",");
|
|
167
|
+
const invalidTrack = getInvalidAutoRepeatTrack(trackList);
|
|
168
|
+
if (isDefined(invalidTrack)) {
|
|
169
|
+
report({
|
|
170
|
+
message: messages.rejected(invalidTrack, repeatKeyword),
|
|
171
|
+
node: declaration,
|
|
172
|
+
result,
|
|
173
|
+
ruleName,
|
|
174
|
+
word: invalidTrack,
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
};
|
|
181
|
+
/** Public Stylelint rule definition. */
|
|
182
|
+
const rule = createStylelintRule({
|
|
183
|
+
docs,
|
|
184
|
+
messages,
|
|
185
|
+
rule: ruleFunction,
|
|
186
|
+
ruleName,
|
|
187
|
+
});
|
|
188
|
+
export default rule;
|
|
189
|
+
//# sourceMappingURL=no-invalid-auto-repeat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-invalid-auto-repeat.js","sourceRoot":"","sources":["../../src/rules/no-invalid-auto-repeat.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type StylelintPluginRule } from "../_internal/create-stylelint-rule.js";
|
|
2
|
+
declare const messages: {
|
|
3
|
+
rejected: (minimum: string) => string;
|
|
4
|
+
};
|
|
5
|
+
/** Public Stylelint rule definition. */
|
|
6
|
+
declare const rule: StylelintPluginRule<boolean, undefined, typeof messages>;
|
|
7
|
+
export default rule;
|
|
8
|
+
//# sourceMappingURL=no-invalid-minmax.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-invalid-minmax.d.ts","sourceRoot":"","sources":["../../src/rules/no-invalid-minmax.ts"],"names":[],"mappings":"AAGA,OAAO,EAEH,KAAK,mBAAmB,EAC3B,MAAM,uCAAuC,CAAC;AAa/C,QAAA,MAAM,QAAQ,EAAE;IAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAA;CAMtD,CAAC;AAyDF,wCAAwC;AACxC,QAAA,MAAM,IAAI,EAAE,mBAAmB,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,QAAQ,CAM7D,CAAC;AAEP,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import stylelint, {} from "stylelint";
|
|
2
|
+
import { arrayFirst, isDefined, setHas } from "ts-extras";
|
|
3
|
+
import { createStylelintRule, } from "../_internal/create-stylelint-rule.js";
|
|
4
|
+
import { findValueFunctionCalls, splitTopLevelCommas, } from "../_internal/grid-template-analysis.js";
|
|
5
|
+
import { createRuleDocsUrl, createRuleName, } from "../_internal/plugin-constants.js";
|
|
6
|
+
const { report, ruleMessages, validateOptions } = stylelint.utils;
|
|
7
|
+
const ruleName = createRuleName("no-invalid-minmax");
|
|
8
|
+
const messages = ruleMessages(ruleName, {
|
|
9
|
+
rejected: (minimum) => `Do not use flexible track breadth \`${minimum}\` as the minimum in \`minmax()\`; use an inflexible minimum such as \`0\`, a length, or a percentage.`,
|
|
10
|
+
});
|
|
11
|
+
const docs = {
|
|
12
|
+
description: "Disallow flexible `fr` values as the minimum argument in CSS Grid `minmax()` track sizes.",
|
|
13
|
+
recommended: true,
|
|
14
|
+
url: createRuleDocsUrl("no-invalid-minmax"),
|
|
15
|
+
};
|
|
16
|
+
const gridTrackProperties = new Set([
|
|
17
|
+
"grid-auto-columns",
|
|
18
|
+
"grid-auto-rows",
|
|
19
|
+
"grid-template-columns",
|
|
20
|
+
"grid-template-rows",
|
|
21
|
+
]);
|
|
22
|
+
function isFlexTrackBreadth(value) {
|
|
23
|
+
return /^[+\-]?(?:\d+|\d*\.\d+)fr$/v.test(value.toLowerCase());
|
|
24
|
+
}
|
|
25
|
+
const ruleFunction = (primary) => (root, result) => {
|
|
26
|
+
if (!validateOptions(result, ruleName, {
|
|
27
|
+
actual: primary,
|
|
28
|
+
possible: [true],
|
|
29
|
+
})) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
root.walkDecls((declaration) => {
|
|
33
|
+
if (!setHas(gridTrackProperties, declaration.prop.toLowerCase())) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
for (const minmaxCall of findValueFunctionCalls(declaration.value, "minmax")) {
|
|
37
|
+
const minimum = arrayFirst(splitTopLevelCommas(minmaxCall.body))?.trim();
|
|
38
|
+
if (isDefined(minimum) && isFlexTrackBreadth(minimum)) {
|
|
39
|
+
report({
|
|
40
|
+
message: messages.rejected(minimum),
|
|
41
|
+
node: declaration,
|
|
42
|
+
result,
|
|
43
|
+
ruleName,
|
|
44
|
+
word: minimum,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
/** Public Stylelint rule definition. */
|
|
51
|
+
const rule = createStylelintRule({
|
|
52
|
+
docs,
|
|
53
|
+
messages,
|
|
54
|
+
rule: ruleFunction,
|
|
55
|
+
ruleName,
|
|
56
|
+
});
|
|
57
|
+
export default rule;
|
|
58
|
+
//# sourceMappingURL=no-invalid-minmax.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-invalid-minmax.js","sourceRoot":"","sources":["../../src/rules/no-invalid-minmax.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,EAAE,EAAiB,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAE1D,OAAO,EACH,mBAAmB,GAEtB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACH,sBAAsB,EACtB,mBAAmB,GACtB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACH,iBAAiB,EACjB,cAAc,GACjB,MAAM,kCAAkC,CAAC;AAE1C,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC;AAElE,MAAM,QAAQ,GAAG,cAAc,CAAC,mBAAmB,CAAC,CAAC;AACrD,MAAM,QAAQ,GAA8C,YAAY,CACpE,QAAQ,EACR;IACI,QAAQ,EAAE,CAAC,OAAe,EAAU,EAAE,CAClC,uCAAuC,OAAO,wGAAwG;CAC7J,CACJ,CAAC;AAEF,MAAM,IAAI,GAAG;IACT,WAAW,EACP,2FAA2F;IAC/F,WAAW,EAAE,IAAI;IACjB,GAAG,EAAE,iBAAiB,CAAC,mBAAmB,CAAC;CACrC,CAAC;AAEX,MAAM,mBAAmB,GAAwB,IAAI,GAAG,CAAC;IACrD,mBAAmB;IACnB,gBAAgB;IAChB,uBAAuB;IACvB,oBAAoB;CACvB,CAAC,CAAC;AAEH,SAAS,kBAAkB,CAAC,KAAa;IACrC,OAAO,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,YAAY,GACd,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;IAC1B,IACI,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE;QAC/B,MAAM,EAAE,OAAO;QACf,QAAQ,EAAE,CAAC,IAAI,CAAC;KACnB,CAAC,EACJ,CAAC;QACC,OAAO;IACX,CAAC;IAED,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,EAAE;QAC3B,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YAC/D,OAAO;QACX,CAAC;QAED,KAAK,MAAM,UAAU,IAAI,sBAAsB,CAC3C,WAAW,CAAC,KAAK,EACjB,QAAQ,CACX,EAAE,CAAC;YACA,MAAM,OAAO,GAAG,UAAU,CACtB,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,CACvC,EAAE,IAAI,EAAE,CAAC;YAEV,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;gBACpD,MAAM,CAAC;oBACH,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;oBACnC,IAAI,EAAE,WAAW;oBACjB,MAAM;oBACN,QAAQ;oBACR,IAAI,EAAE,OAAO;iBAChB,CAAC,CAAC;YACP,CAAC;QACL,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAEN,wCAAwC;AACxC,MAAM,IAAI,GACN,mBAAmB,CAAsC;IACrD,IAAI;IACJ,QAAQ;IACR,IAAI,EAAE,YAAY;IAClB,QAAQ;CACX,CAAC,CAAC;AAEP,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type StylelintPluginRule } from "../_internal/create-stylelint-rule.js";
|
|
2
|
+
declare const messages: {
|
|
3
|
+
rejected: (areaRows: number, trackRows: number) => string;
|
|
4
|
+
};
|
|
5
|
+
/** Public Stylelint rule definition. */
|
|
6
|
+
declare const rule: StylelintPluginRule<boolean, undefined, typeof messages>;
|
|
7
|
+
export default rule;
|
|
8
|
+
//# sourceMappingURL=no-mismatched-template-rows.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-mismatched-template-rows.d.ts","sourceRoot":"","sources":["../../src/rules/no-mismatched-template-rows.ts"],"names":[],"mappings":"AAGA,OAAO,EAEH,KAAK,mBAAmB,EAC3B,MAAM,uCAAuC,CAAC;AAc/C,QAAA,MAAM,QAAQ,EAAE;IACZ,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;CAI5D,CAAC;AAiDH,wCAAwC;AACxC,QAAA,MAAM,IAAI,EAAE,mBAAmB,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,QAAQ,CAM7D,CAAC;AAEP,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import stylelint, {} from "stylelint";
|
|
2
|
+
import { isDefined, isEmpty } from "ts-extras";
|
|
3
|
+
import { createStylelintRule, } from "../_internal/create-stylelint-rule.js";
|
|
4
|
+
import { collectGridTemplateAreas, countGridTracks, findSiblingDeclaration, } from "../_internal/grid-template-analysis.js";
|
|
5
|
+
import { createRuleDocsUrl, createRuleName, } from "../_internal/plugin-constants.js";
|
|
6
|
+
const { report, ruleMessages, validateOptions } = stylelint.utils;
|
|
7
|
+
const ruleName = createRuleName("no-mismatched-template-rows");
|
|
8
|
+
const messages = ruleMessages(ruleName, {
|
|
9
|
+
rejected: (areaRows, trackRows) => `\`grid-template-areas\` defines ${String(areaRows)} rows, but sibling \`grid-template-rows\` defines ${String(trackRows)} tracks.`,
|
|
10
|
+
});
|
|
11
|
+
const docs = {
|
|
12
|
+
description: "Require `grid-template-rows` track count to match `grid-template-areas` row count.",
|
|
13
|
+
recommended: true,
|
|
14
|
+
url: createRuleDocsUrl("no-mismatched-template-rows"),
|
|
15
|
+
};
|
|
16
|
+
const ruleFunction = (primary) => (root, result) => {
|
|
17
|
+
if (!validateOptions(result, ruleName, {
|
|
18
|
+
actual: primary,
|
|
19
|
+
possible: [true],
|
|
20
|
+
})) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
for (const template of collectGridTemplateAreas(root)) {
|
|
24
|
+
if (isEmpty(template.diagnostics)) {
|
|
25
|
+
const rowsDeclaration = findSiblingDeclaration(template.declaration, "grid-template-rows");
|
|
26
|
+
const trackRows = isDefined(rowsDeclaration)
|
|
27
|
+
? countGridTracks(rowsDeclaration.value)
|
|
28
|
+
: undefined;
|
|
29
|
+
if (isDefined(rowsDeclaration) &&
|
|
30
|
+
isDefined(trackRows) &&
|
|
31
|
+
trackRows !== template.rows.length) {
|
|
32
|
+
report({
|
|
33
|
+
message: messages.rejected(template.rows.length, trackRows),
|
|
34
|
+
node: rowsDeclaration,
|
|
35
|
+
result,
|
|
36
|
+
ruleName,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
/** Public Stylelint rule definition. */
|
|
43
|
+
const rule = createStylelintRule({
|
|
44
|
+
docs,
|
|
45
|
+
messages,
|
|
46
|
+
rule: ruleFunction,
|
|
47
|
+
ruleName,
|
|
48
|
+
});
|
|
49
|
+
export default rule;
|
|
50
|
+
//# sourceMappingURL=no-mismatched-template-rows.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-mismatched-template-rows.js","sourceRoot":"","sources":["../../src/rules/no-mismatched-template-rows.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,EAAE,EAAiB,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE/C,OAAO,EACH,mBAAmB,GAEtB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACH,wBAAwB,EACxB,eAAe,EACf,sBAAsB,GACzB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACH,iBAAiB,EACjB,cAAc,GACjB,MAAM,kCAAkC,CAAC;AAE1C,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC;AAElE,MAAM,QAAQ,GAAG,cAAc,CAAC,6BAA6B,CAAC,CAAC;AAC/D,MAAM,QAAQ,GAEV,YAAY,CAAC,QAAQ,EAAE;IACvB,QAAQ,EAAE,CAAC,QAAgB,EAAE,SAAiB,EAAU,EAAE,CACtD,mCAAmC,MAAM,CAAC,QAAQ,CAAC,qDAAqD,MAAM,CAAC,SAAS,CAAC,UAAU;CAC1I,CAAC,CAAC;AAEH,MAAM,IAAI,GAAG;IACT,WAAW,EACP,oFAAoF;IACxF,WAAW,EAAE,IAAI;IACjB,GAAG,EAAE,iBAAiB,CAAC,6BAA6B,CAAC;CAC/C,CAAC;AAEX,MAAM,YAAY,GACd,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;IAC1B,IACI,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE;QAC/B,MAAM,EAAE,OAAO;QACf,QAAQ,EAAE,CAAC,IAAI,CAAC;KACnB,CAAC,EACJ,CAAC;QACC,OAAO;IACX,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC;QACpD,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAChC,MAAM,eAAe,GAAG,sBAAsB,CAC1C,QAAQ,CAAC,WAAW,EACpB,oBAAoB,CACvB,CAAC;YACF,MAAM,SAAS,GAAG,SAAS,CAAC,eAAe,CAAC;gBACxC,CAAC,CAAC,eAAe,CAAC,eAAe,CAAC,KAAK,CAAC;gBACxC,CAAC,CAAC,SAAS,CAAC;YAEhB,IACI,SAAS,CAAC,eAAe,CAAC;gBAC1B,SAAS,CAAC,SAAS,CAAC;gBACpB,SAAS,KAAK,QAAQ,CAAC,IAAI,CAAC,MAAM,EACpC,CAAC;gBACC,MAAM,CAAC;oBACH,OAAO,EAAE,QAAQ,CAAC,QAAQ,CACtB,QAAQ,CAAC,IAAI,CAAC,MAAM,EACpB,SAAS,CACZ;oBACD,IAAI,EAAE,eAAe;oBACrB,MAAM;oBACN,QAAQ;iBACX,CAAC,CAAC;YACP,CAAC;QACL,CAAC;IACL,CAAC;AACL,CAAC,CAAC;AAEN,wCAAwC;AACxC,MAAM,IAAI,GACN,mBAAmB,CAAsC;IACrD,IAAI;IACJ,QAAQ;IACR,IAAI,EAAE,YAAY;IAClB,QAAQ;CACX,CAAC,CAAC;AAEP,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type StylelintPluginRule } from "../_internal/create-stylelint-rule.js";
|
|
2
|
+
declare const messages: {
|
|
3
|
+
rejected: (areaName: string, firstSelector: string) => string;
|
|
4
|
+
};
|
|
5
|
+
/** Public Stylelint rule definition. */
|
|
6
|
+
declare const rule: StylelintPluginRule<boolean, undefined, typeof messages>;
|
|
7
|
+
export default rule;
|
|
8
|
+
//# sourceMappingURL=no-overlapping-areas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-overlapping-areas.d.ts","sourceRoot":"","sources":["../../src/rules/no-overlapping-areas.ts"],"names":[],"mappings":"AAKA,OAAO,EAEH,KAAK,mBAAmB,EAC3B,MAAM,uCAAuC,CAAC;AAU/C,QAAA,MAAM,QAAQ,EAAE;IACZ,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,KAAK,MAAM,CAAC;CAIhE,CAAC;AA6CH,wCAAwC;AACxC,QAAA,MAAM,IAAI,EAAE,mBAAmB,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,QAAQ,CAM7D,CAAC;AAEP,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import stylelint, {} from "stylelint";
|
|
2
|
+
import { isDefined } from "ts-extras";
|
|
3
|
+
import { createStylelintRule, } from "../_internal/create-stylelint-rule.js";
|
|
4
|
+
import { collectGridAreaUsages } from "../_internal/grid-template-analysis.js";
|
|
5
|
+
import { createRuleDocsUrl, createRuleName, } from "../_internal/plugin-constants.js";
|
|
6
|
+
const { report, ruleMessages, validateOptions } = stylelint.utils;
|
|
7
|
+
const ruleName = createRuleName("no-overlapping-areas");
|
|
8
|
+
const messages = ruleMessages(ruleName, {
|
|
9
|
+
rejected: (areaName, firstSelector) => `Grid area "${areaName}" is assigned by more than one selector; it may overlap the earlier "${firstSelector}" item at runtime.`,
|
|
10
|
+
});
|
|
11
|
+
const docs = {
|
|
12
|
+
description: "Disallow multiple selectors assigning the same single-name `grid-area` value in one stylesheet.",
|
|
13
|
+
recommended: false,
|
|
14
|
+
url: createRuleDocsUrl("no-overlapping-areas"),
|
|
15
|
+
};
|
|
16
|
+
const ruleFunction = (primary) => (root, result) => {
|
|
17
|
+
if (!validateOptions(result, ruleName, {
|
|
18
|
+
actual: primary,
|
|
19
|
+
possible: [true],
|
|
20
|
+
})) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const firstUsageByName = new Map();
|
|
24
|
+
for (const usage of collectGridAreaUsages(root)) {
|
|
25
|
+
const firstUsage = firstUsageByName.get(usage.name);
|
|
26
|
+
if (isDefined(firstUsage)) {
|
|
27
|
+
report({
|
|
28
|
+
message: messages.rejected(usage.name, firstUsage.selector ?? firstUsage.name),
|
|
29
|
+
node: usage.declaration,
|
|
30
|
+
result,
|
|
31
|
+
ruleName,
|
|
32
|
+
word: usage.name,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
firstUsageByName.set(usage.name, usage);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
/** Public Stylelint rule definition. */
|
|
41
|
+
const rule = createStylelintRule({
|
|
42
|
+
docs,
|
|
43
|
+
messages,
|
|
44
|
+
rule: ruleFunction,
|
|
45
|
+
ruleName,
|
|
46
|
+
});
|
|
47
|
+
export default rule;
|
|
48
|
+
//# sourceMappingURL=no-overlapping-areas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-overlapping-areas.js","sourceRoot":"","sources":["../../src/rules/no-overlapping-areas.ts"],"names":[],"mappings":"AAEA,OAAO,SAAS,EAAE,EAAiB,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EACH,mBAAmB,GAEtB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,OAAO,EACH,iBAAiB,EACjB,cAAc,GACjB,MAAM,kCAAkC,CAAC;AAE1C,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC;AAElE,MAAM,QAAQ,GAAG,cAAc,CAAC,sBAAsB,CAAC,CAAC;AACxD,MAAM,QAAQ,GAEV,YAAY,CAAC,QAAQ,EAAE;IACvB,QAAQ,EAAE,CAAC,QAAgB,EAAE,aAAqB,EAAU,EAAE,CAC1D,cAAc,QAAQ,wEAAwE,aAAa,oBAAoB;CACtI,CAAC,CAAC;AAEH,MAAM,IAAI,GAAG;IACT,WAAW,EACP,iGAAiG;IACrG,WAAW,EAAE,KAAK;IAClB,GAAG,EAAE,iBAAiB,CAAC,sBAAsB,CAAC;CACxC,CAAC;AAEX,MAAM,YAAY,GACd,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;IAC1B,IACI,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE;QAC/B,MAAM,EAAE,OAAO;QACf,QAAQ,EAAE,CAAC,IAAI,CAAC;KACnB,CAAC,EACJ,CAAC;QACC,OAAO;IACX,CAAC;IAED,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAG7B,CAAC;IAEJ,KAAK,MAAM,KAAK,IAAI,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9C,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEpD,IAAI,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;YACxB,MAAM,CAAC;gBACH,OAAO,EAAE,QAAQ,CAAC,QAAQ,CACtB,KAAK,CAAC,IAAI,EACV,UAAU,CAAC,QAAQ,IAAI,UAAU,CAAC,IAAI,CACzC;gBACD,IAAI,EAAE,KAAK,CAAC,WAAW;gBACvB,MAAM;gBACN,QAAQ;gBACR,IAAI,EAAE,KAAK,CAAC,IAAI;aACnB,CAAC,CAAC;QACP,CAAC;aAAM,CAAC;YACJ,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC5C,CAAC;IACL,CAAC;AACL,CAAC,CAAC;AAEN,wCAAwC;AACxC,MAAM,IAAI,GACN,mBAAmB,CAAsC;IACrD,IAAI;IACJ,QAAQ;IACR,IAAI,EAAE,YAAY;IAClB,QAAQ;CACX,CAAC,CAAC;AAEP,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type StylelintPluginRule } from "../_internal/create-stylelint-rule.js";
|
|
2
|
+
declare const messages: {
|
|
3
|
+
rejected: (areaName: string) => string;
|
|
4
|
+
};
|
|
5
|
+
/** Public Stylelint rule definition. */
|
|
6
|
+
declare const rule: StylelintPluginRule<boolean, undefined, typeof messages>;
|
|
7
|
+
export default rule;
|
|
8
|
+
//# sourceMappingURL=no-unknown-areas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-unknown-areas.d.ts","sourceRoot":"","sources":["../../src/rules/no-unknown-areas.ts"],"names":[],"mappings":"AAGA,OAAO,EAEH,KAAK,mBAAmB,EAC3B,MAAM,uCAAuC,CAAC;AAa/C,QAAA,MAAM,QAAQ,EAAE;IAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAA;CAMvD,CAAC;AA2CF,wCAAwC;AACxC,QAAA,MAAM,IAAI,EAAE,mBAAmB,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,QAAQ,CAM7D,CAAC;AAEP,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import stylelint, {} from "stylelint";
|
|
2
|
+
import { isEmpty, setHas } from "ts-extras";
|
|
3
|
+
import { createStylelintRule, } from "../_internal/create-stylelint-rule.js";
|
|
4
|
+
import { collectGridAreaUsages, collectGridTemplateAreas, } from "../_internal/grid-template-analysis.js";
|
|
5
|
+
import { createRuleDocsUrl, createRuleName, } from "../_internal/plugin-constants.js";
|
|
6
|
+
const { report, ruleMessages, validateOptions } = stylelint.utils;
|
|
7
|
+
const ruleName = createRuleName("no-unknown-areas");
|
|
8
|
+
const messages = ruleMessages(ruleName, {
|
|
9
|
+
rejected: (areaName) => `Grid area "${areaName}" is referenced by \`grid-area\` but is not declared in any \`grid-template-areas\` template in this stylesheet.`,
|
|
10
|
+
});
|
|
11
|
+
const docs = {
|
|
12
|
+
description: "Disallow single-name `grid-area` references that do not match any named area declared in the same stylesheet.",
|
|
13
|
+
recommended: true,
|
|
14
|
+
url: createRuleDocsUrl("no-unknown-areas"),
|
|
15
|
+
};
|
|
16
|
+
const ruleFunction = (primary) => (root, result) => {
|
|
17
|
+
if (!validateOptions(result, ruleName, {
|
|
18
|
+
actual: primary,
|
|
19
|
+
possible: [true],
|
|
20
|
+
})) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const declaredAreaNames = new Set(collectGridTemplateAreas(root).flatMap((template) => isEmpty(template.diagnostics) ? template.areaNames : []));
|
|
24
|
+
if (declaredAreaNames.size === 0) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
for (const usage of collectGridAreaUsages(root)) {
|
|
28
|
+
if (!setHas(declaredAreaNames, usage.name)) {
|
|
29
|
+
report({
|
|
30
|
+
message: messages.rejected(usage.name),
|
|
31
|
+
node: usage.declaration,
|
|
32
|
+
result,
|
|
33
|
+
ruleName,
|
|
34
|
+
word: usage.name,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
/** Public Stylelint rule definition. */
|
|
40
|
+
const rule = createStylelintRule({
|
|
41
|
+
docs,
|
|
42
|
+
messages,
|
|
43
|
+
rule: ruleFunction,
|
|
44
|
+
ruleName,
|
|
45
|
+
});
|
|
46
|
+
export default rule;
|
|
47
|
+
//# sourceMappingURL=no-unknown-areas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-unknown-areas.js","sourceRoot":"","sources":["../../src/rules/no-unknown-areas.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,EAAE,EAAiB,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAE5C,OAAO,EACH,mBAAmB,GAEtB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACH,qBAAqB,EACrB,wBAAwB,GAC3B,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACH,iBAAiB,EACjB,cAAc,GACjB,MAAM,kCAAkC,CAAC;AAE1C,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC;AAElE,MAAM,QAAQ,GAAG,cAAc,CAAC,kBAAkB,CAAC,CAAC;AACpD,MAAM,QAAQ,GAA+C,YAAY,CACrE,QAAQ,EACR;IACI,QAAQ,EAAE,CAAC,QAAgB,EAAU,EAAE,CACnC,cAAc,QAAQ,kHAAkH;CAC/I,CACJ,CAAC;AAEF,MAAM,IAAI,GAAG;IACT,WAAW,EACP,+GAA+G;IACnH,WAAW,EAAE,IAAI;IACjB,GAAG,EAAE,iBAAiB,CAAC,kBAAkB,CAAC;CACpC,CAAC;AAEX,MAAM,YAAY,GACd,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;IAC1B,IACI,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE;QAC/B,MAAM,EAAE,OAAO;QACf,QAAQ,EAAE,CAAC,IAAI,CAAC;KACnB,CAAC,EACJ,CAAC;QACC,OAAO;IACX,CAAC;IAED,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAC7B,wBAAwB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAChD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAC1D,CACJ,CAAC;IAEF,IAAI,iBAAiB,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO;IACX,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9C,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACzC,MAAM,CAAC;gBACH,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;gBACtC,IAAI,EAAE,KAAK,CAAC,WAAW;gBACvB,MAAM;gBACN,QAAQ;gBACR,IAAI,EAAE,KAAK,CAAC,IAAI;aACnB,CAAC,CAAC;QACP,CAAC;IACL,CAAC;AACL,CAAC,CAAC;AAEN,wCAAwC;AACxC,MAAM,IAAI,GACN,mBAAmB,CAAsC;IACrD,IAAI;IACJ,QAAQ;IACR,IAAI,EAAE,YAAY;IAClB,QAAQ;CACX,CAAC,CAAC;AAEP,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type StylelintPluginRule } from "../_internal/create-stylelint-rule.js";
|
|
2
|
+
declare const messages: {
|
|
3
|
+
rejected: (areaName: string) => string;
|
|
4
|
+
};
|
|
5
|
+
/** Public Stylelint rule definition. */
|
|
6
|
+
declare const rule: StylelintPluginRule<boolean, undefined, typeof messages>;
|
|
7
|
+
export default rule;
|
|
8
|
+
//# sourceMappingURL=no-unused-areas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-unused-areas.d.ts","sourceRoot":"","sources":["../../src/rules/no-unused-areas.ts"],"names":[],"mappings":"AAGA,OAAO,EAEH,KAAK,mBAAmB,EAC3B,MAAM,uCAAuC,CAAC;AAa/C,QAAA,MAAM,QAAQ,EAAE;IAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAA;CAMvD,CAAC;AAyCF,wCAAwC;AACxC,QAAA,MAAM,IAAI,EAAE,mBAAmB,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,QAAQ,CAM7D,CAAC;AAEP,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import stylelint, {} from "stylelint";
|
|
2
|
+
import { isEmpty, setHas } from "ts-extras";
|
|
3
|
+
import { createStylelintRule, } from "../_internal/create-stylelint-rule.js";
|
|
4
|
+
import { collectGridAreaUsages, collectGridTemplateAreas, } from "../_internal/grid-template-analysis.js";
|
|
5
|
+
import { createRuleDocsUrl, createRuleName, } from "../_internal/plugin-constants.js";
|
|
6
|
+
const { report, ruleMessages, validateOptions } = stylelint.utils;
|
|
7
|
+
const ruleName = createRuleName("no-unused-areas");
|
|
8
|
+
const messages = ruleMessages(ruleName, {
|
|
9
|
+
rejected: (areaName) => `Grid template area "${areaName}" is declared but no single-name \`grid-area: ${areaName}\` declaration exists in this stylesheet.`,
|
|
10
|
+
});
|
|
11
|
+
const docs = {
|
|
12
|
+
description: "Disallow named template areas that are never referenced by a single-name `grid-area` declaration in the same stylesheet.",
|
|
13
|
+
recommended: false,
|
|
14
|
+
url: createRuleDocsUrl("no-unused-areas"),
|
|
15
|
+
};
|
|
16
|
+
const ruleFunction = (primary) => (root, result) => {
|
|
17
|
+
if (!validateOptions(result, ruleName, {
|
|
18
|
+
actual: primary,
|
|
19
|
+
possible: [true],
|
|
20
|
+
})) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const usedAreaNames = new Set(collectGridAreaUsages(root).map((usage) => usage.name));
|
|
24
|
+
for (const template of collectGridTemplateAreas(root)) {
|
|
25
|
+
if (isEmpty(template.diagnostics)) {
|
|
26
|
+
for (const areaName of template.areaNames) {
|
|
27
|
+
if (!setHas(usedAreaNames, areaName)) {
|
|
28
|
+
report({
|
|
29
|
+
message: messages.rejected(areaName),
|
|
30
|
+
node: template.declaration,
|
|
31
|
+
result,
|
|
32
|
+
ruleName,
|
|
33
|
+
word: areaName,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
/** Public Stylelint rule definition. */
|
|
41
|
+
const rule = createStylelintRule({
|
|
42
|
+
docs,
|
|
43
|
+
messages,
|
|
44
|
+
rule: ruleFunction,
|
|
45
|
+
ruleName,
|
|
46
|
+
});
|
|
47
|
+
export default rule;
|
|
48
|
+
//# sourceMappingURL=no-unused-areas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-unused-areas.js","sourceRoot":"","sources":["../../src/rules/no-unused-areas.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,EAAE,EAAiB,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAE5C,OAAO,EACH,mBAAmB,GAEtB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACH,qBAAqB,EACrB,wBAAwB,GAC3B,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACH,iBAAiB,EACjB,cAAc,GACjB,MAAM,kCAAkC,CAAC;AAE1C,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC;AAElE,MAAM,QAAQ,GAAG,cAAc,CAAC,iBAAiB,CAAC,CAAC;AACnD,MAAM,QAAQ,GAA+C,YAAY,CACrE,QAAQ,EACR;IACI,QAAQ,EAAE,CAAC,QAAgB,EAAU,EAAE,CACnC,uBAAuB,QAAQ,iDAAiD,QAAQ,2CAA2C;CAC1I,CACJ,CAAC;AAEF,MAAM,IAAI,GAAG;IACT,WAAW,EACP,0HAA0H;IAC9H,WAAW,EAAE,KAAK;IAClB,GAAG,EAAE,iBAAiB,CAAC,iBAAiB,CAAC;CACnC,CAAC;AAEX,MAAM,YAAY,GACd,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;IAC1B,IACI,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE;QAC/B,MAAM,EAAE,OAAO;QACf,QAAQ,EAAE,CAAC,IAAI,CAAC;KACnB,CAAC,EACJ,CAAC;QACC,OAAO;IACX,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,GAAG,CACzB,qBAAqB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CACzD,CAAC;IAEF,KAAK,MAAM,QAAQ,IAAI,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC;QACpD,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAChC,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;gBACxC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,EAAE,CAAC;oBACnC,MAAM,CAAC;wBACH,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;wBACpC,IAAI,EAAE,QAAQ,CAAC,WAAW;wBAC1B,MAAM;wBACN,QAAQ;wBACR,IAAI,EAAE,QAAQ;qBACjB,CAAC,CAAC;gBACP,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;AACL,CAAC,CAAC;AAEN,wCAAwC;AACxC,MAAM,IAAI,GACN,mBAAmB,CAAsC;IACrD,IAAI;IACJ,QAAQ;IACR,IAAI,EAAE,YAAY;IAClB,QAAQ;CACX,CAAC,CAAC;AAEP,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type StylelintPluginRule } from "../_internal/create-stylelint-rule.js";
|
|
2
|
+
declare const messages: {
|
|
3
|
+
rejected: (propertyName: string, replacement: string) => string;
|
|
4
|
+
};
|
|
5
|
+
/** Public Stylelint rule definition. */
|
|
6
|
+
declare const rule: StylelintPluginRule<boolean, undefined, typeof messages>;
|
|
7
|
+
export default rule;
|
|
8
|
+
//# sourceMappingURL=prefer-gap-properties.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prefer-gap-properties.d.ts","sourceRoot":"","sources":["../../src/rules/prefer-gap-properties.ts"],"names":[],"mappings":"AAKA,OAAO,EAEH,KAAK,mBAAmB,EAC3B,MAAM,uCAAuC,CAAC;AAS/C,QAAA,MAAM,QAAQ,EAAE;IACZ,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC;CAIlE,CAAC;AAoDH,wCAAwC;AACxC,QAAA,MAAM,IAAI,EAAE,mBAAmB,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,QAAQ,CAS7D,CAAC;AAEP,eAAe,IAAI,CAAC"}
|