Files
SnowLuma/.pnpm-store/v11/files/03/0707e7c3ba994b36f17c468d3fa118b555044d3effcf3a9f6f51eeb63cc1bb9f2cbeb44b2d70ffc8d3dba0d648c2590703e1b78b71c7ba2c0c642b24c60ed9
T
TanTan 2a69b23b47
Dev Build / cleanup (push) Waiting to run
Dev Build / typecheck (push) Waiting to run
docs: 仓库链接指向本镜像仓库
2026-11-13 09:27:07 +08:00

68 lines
2.1 KiB
Plaintext

import { f as createRule } from "../utils.js";
var jsx_equals_spacing_default = createRule({
name: "jsx-equals-spacing",
meta: {
type: "layout",
docs: { description: "Enforce or disallow spaces around equal signs in JSX attributes" },
fixable: "code",
schema: [{
type: "string",
enum: ["always", "never"]
}],
defaultOptions: ["never"],
messages: {
noSpaceBefore: "There should be no space before '='",
noSpaceAfter: "There should be no space after '='",
needSpaceBefore: "A space is required before '='",
needSpaceAfter: "A space is required after '='"
}
},
create(context, [config]) {
return { JSXOpeningElement(node) {
node.attributes.forEach((attrNode) => {
if (!(attrNode.type !== "JSXSpreadAttribute" && attrNode.value !== null)) return;
const sourceCode = context.sourceCode;
const equalToken = sourceCode.getTokenAfter(attrNode.name);
const spacedBefore = sourceCode.isSpaceBetween(attrNode.name, equalToken);
const spacedAfter = sourceCode.isSpaceBetween(equalToken, attrNode.value);
if (config === "never") {
if (spacedBefore) context.report({
node: attrNode,
messageId: "noSpaceBefore",
loc: equalToken.loc.start,
fix(fixer) {
return fixer.removeRange([attrNode.name.range[1], equalToken.range[0]]);
}
});
if (spacedAfter) context.report({
node: attrNode,
messageId: "noSpaceAfter",
loc: equalToken.loc.start,
fix(fixer) {
return fixer.removeRange([equalToken.range[1], attrNode.value.range[0]]);
}
});
} else if (config === "always") {
if (!spacedBefore) context.report({
messageId: "needSpaceBefore",
node: attrNode,
loc: equalToken.loc.start,
fix(fixer) {
return fixer.insertTextBefore(equalToken, " ");
}
});
if (!spacedAfter) context.report({
node: attrNode,
messageId: "needSpaceAfter",
loc: equalToken.loc.start,
fix(fixer) {
return fixer.insertTextAfter(equalToken, " ");
}
});
}
});
} };
}
});
export { jsx_equals_spacing_default as t };