Files
SnowLuma/.pnpm-store/v11/files/c4/681d3d3bd5b121dfa834218d9785d17d030e6d98056a530d188d3d89a0f6fe5514e13917f4913d60850f4741dc9e4a4145ab60ea2255c568d3873e8323836a
T
TanTan 2a69b23b47
Dev Build / cleanup (push) Canceled after 0s
Dev Build / typecheck (push) Canceled after 0s
Dev Build / build (linux-arm64, ubuntu-24.04-arm, linux-arm64) (push) Canceled after 0s
Dev Build / build (linux-x64, ubuntu-latest, linux-x64) (push) Canceled after 0s
Dev Build / build (win-x64, windows-latest, win32-x64) (push) Canceled after 0s
Dev Build / dispatch-dev-docker (push) Canceled after 0s
docs: 仓库链接指向本镜像仓库
2026-11-13 09:27:07 +08:00

87 lines
2.9 KiB
Plaintext

import { P as isDecimalInteger, d as safeReplaceTextBetween, f as createRule, g as import_ast_utils } from "../utils.js";
var no_whitespace_before_property_default = createRule({
name: "no-whitespace-before-property",
meta: {
type: "layout",
docs: { description: "Disallow whitespace before properties" },
fixable: "whitespace",
schema: [],
messages: { unexpectedWhitespace: "Unexpected whitespace before property {{propName}}." }
},
create(context) {
const sourceCode = context.sourceCode;
function reportError(descriptor) {
const { node, leftToken, rightToken, propName, replacementText = "", preventAutoFix } = descriptor;
context.report({
node,
messageId: "unexpectedWhitespace",
data: { propName },
fix: preventAutoFix?.() ? null : safeReplaceTextBetween(sourceCode, leftToken, rightToken, replacementText)
});
}
return {
MemberExpression(node) {
if (!(0, import_ast_utils.isTokenOnSameLine)(node.object, node.property)) return;
let rightToken;
let leftToken;
if (node.computed) {
rightToken = sourceCode.getTokenBefore(node.property, import_ast_utils.isOpeningBracketToken);
leftToken = sourceCode.getTokenBefore(rightToken, node.optional ? 1 : 0);
} else {
rightToken = sourceCode.getFirstToken(node.property);
leftToken = sourceCode.getTokenBefore(rightToken, 1);
}
if (!sourceCode.isSpaceBetween(leftToken, rightToken)) return;
let replacementText = "";
if (node.optional) replacementText = "?.";
else if (!node.computed) replacementText = ".";
reportError({
node,
leftToken,
rightToken,
propName: sourceCode.getText(node.property),
replacementText,
preventAutoFix: () => !node.computed && !node.optional && isDecimalInteger(node.object)
});
},
TSIndexedAccessType(node) {
const rightToken = sourceCode.getTokenBefore(node.indexType, import_ast_utils.isOpeningBracketToken);
const leftToken = sourceCode.getTokenBefore(rightToken);
if (!sourceCode.isSpaceBetween(leftToken, rightToken)) return;
reportError({
node,
leftToken,
rightToken,
propName: sourceCode.getText(node.indexType)
});
},
TSQualifiedName(node) {
const leftToken = node.left;
const rightToken = node.right;
if (!sourceCode.isSpaceBetween(leftToken, rightToken)) return;
reportError({
node,
leftToken,
rightToken,
replacementText: ".",
propName: sourceCode.getText(node.right)
});
},
TSImportType(node) {
if (!node.qualifier) return;
const rightToken = node.qualifier;
const leftToken = sourceCode.getTokenBefore(rightToken, 1);
if (!sourceCode.isSpaceBetween(leftToken, rightToken)) return;
reportError({
node,
leftToken,
rightToken,
replacementText: ".",
propName: sourceCode.getText(node.qualifier)
});
}
};
}
});
export { no_whitespace_before_property_default as t };