@herb-tools/linter 0.8.4 → 0.8.5
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/README.md +3 -3
- package/dist/herb-lint.js +122 -26
- package/dist/herb-lint.js.map +1 -1
- package/dist/index.cjs +29 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +29 -3
- package/dist/index.js.map +1 -1
- package/dist/loader.cjs +68 -7
- package/dist/loader.cjs.map +1 -1
- package/dist/loader.js +68 -7
- package/dist/loader.js.map +1 -1
- package/dist/package.json +7 -7
- package/dist/src/rules/html-no-duplicate-meta-names.js +11 -0
- package/dist/src/rules/html-no-duplicate-meta-names.js.map +1 -1
- package/dist/src/rules/html-tag-name-lowercase.js +22 -5
- package/dist/src/rules/html-tag-name-lowercase.js.map +1 -1
- package/package.json +7 -7
- package/src/rules/html-no-duplicate-meta-names.ts +13 -0
- package/src/rules/html-tag-name-lowercase.ts +22 -5
package/dist/index.js
CHANGED
|
@@ -5783,6 +5783,9 @@ class HTMLNoDuplicateMetaNamesVisitor extends ControlFlowTrackingVisitor {
|
|
|
5783
5783
|
else if (name === "http-equiv" && value) {
|
|
5784
5784
|
metaTag.httpEquivValue = value;
|
|
5785
5785
|
}
|
|
5786
|
+
else if (name === "media" && value) {
|
|
5787
|
+
metaTag.mediaValue = value;
|
|
5788
|
+
}
|
|
5786
5789
|
});
|
|
5787
5790
|
}
|
|
5788
5791
|
}
|
|
@@ -5814,6 +5817,14 @@ class HTMLNoDuplicateMetaNamesVisitor extends ControlFlowTrackingVisitor {
|
|
|
5814
5817
|
}
|
|
5815
5818
|
}
|
|
5816
5819
|
areMetaTagsDuplicate(meta1, meta2) {
|
|
5820
|
+
if (meta1.mediaValue && meta2.mediaValue) {
|
|
5821
|
+
if (meta1.mediaValue.toLowerCase() !== meta2.mediaValue.toLowerCase()) {
|
|
5822
|
+
return false;
|
|
5823
|
+
}
|
|
5824
|
+
}
|
|
5825
|
+
if ((meta1.mediaValue && !meta2.mediaValue) || (!meta1.mediaValue && meta2.mediaValue)) {
|
|
5826
|
+
return false;
|
|
5827
|
+
}
|
|
5817
5828
|
if (meta1.nameValue && meta2.nameValue) {
|
|
5818
5829
|
return meta1.nameValue.toLowerCase() === meta2.nameValue.toLowerCase();
|
|
5819
5830
|
}
|
|
@@ -6518,10 +6529,25 @@ class HTMLTagNameLowercaseRule extends ParserRule {
|
|
|
6518
6529
|
autofix(offense, result, _context) {
|
|
6519
6530
|
if (!offense.autofixContext)
|
|
6520
6531
|
return null;
|
|
6521
|
-
const { node
|
|
6522
|
-
if (!tag_name)
|
|
6532
|
+
const { node, correctedTagName } = offense.autofixContext;
|
|
6533
|
+
if (!node.tag_name)
|
|
6523
6534
|
return null;
|
|
6524
|
-
tag_name.value = correctedTagName;
|
|
6535
|
+
node.tag_name.value = correctedTagName;
|
|
6536
|
+
const parentElement = findParent(result.value, node);
|
|
6537
|
+
if (!parentElement || !isHTMLElementNode(parentElement))
|
|
6538
|
+
return result;
|
|
6539
|
+
switch (node.type) {
|
|
6540
|
+
case "AST_HTML_OPEN_TAG_NODE":
|
|
6541
|
+
if (!parentElement.close_tag)
|
|
6542
|
+
break;
|
|
6543
|
+
const closeTag = parentElement.close_tag;
|
|
6544
|
+
closeTag.tag_name.value = correctedTagName;
|
|
6545
|
+
break;
|
|
6546
|
+
case "AST_HTML_CLOSE_TAG_NODE":
|
|
6547
|
+
const openTag = parentElement.open_tag;
|
|
6548
|
+
openTag.tag_name.value = correctedTagName;
|
|
6549
|
+
break;
|
|
6550
|
+
}
|
|
6525
6551
|
return result;
|
|
6526
6552
|
}
|
|
6527
6553
|
}
|