Files
SnowLuma/.pnpm-store/v11/files/0f/65fe953efc3dd7b8175e67c7e96ba6f94b10dc0d3b6c693109c18ed5af64081ce370ffd5b3eda16150a8232e2257d9ed6fcda57f186030298b5616259a5e02
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

58 lines
2.1 KiB
Plaintext

import { f as createRule, g as import_ast_utils } from "../utils.js";
var object_property_newline_default = createRule({
name: "object-property-newline",
meta: {
type: "layout",
docs: { description: "Enforce placing object properties on separate lines" },
fixable: "whitespace",
schema: [{
type: "object",
properties: { allowAllPropertiesOnSameLine: { type: "boolean" } },
additionalProperties: false
}],
defaultOptions: [{ allowAllPropertiesOnSameLine: false }],
messages: {
propertiesOnNewlineAll: "Object properties must go on a new line if they aren't all on the same line.",
propertiesOnNewline: "Object properties must go on a new line."
}
},
create(context, [options]) {
const allowSameLine = options.allowAllPropertiesOnSameLine;
const messageId = allowSameLine ? "propertiesOnNewlineAll" : "propertiesOnNewline";
const sourceCode = context.sourceCode;
function check(node, children) {
if (allowSameLine) {
if (children.length > 1) {
if ((0, import_ast_utils.isTokenOnSameLine)(sourceCode.getFirstToken(children[0]), sourceCode.getLastToken(children[children.length - 1]))) return;
}
}
for (let i = 1; i < children.length; i++) {
const lastTokenOfPreviousProperty = sourceCode.getLastToken(children[i - 1]);
const firstTokenOfCurrentProperty = sourceCode.getFirstToken(children[i]);
if ((0, import_ast_utils.isTokenOnSameLine)(lastTokenOfPreviousProperty, firstTokenOfCurrentProperty)) context.report({
node,
loc: firstTokenOfCurrentProperty.loc,
messageId,
fix(fixer) {
const rangeAfterComma = [sourceCode.getTokenBefore(firstTokenOfCurrentProperty).range[1], firstTokenOfCurrentProperty.range[0]];
if (sourceCode.text.slice(rangeAfterComma[0], rangeAfterComma[1]).trim()) return null;
return fixer.replaceTextRange(rangeAfterComma, "\n");
}
});
}
}
return {
ObjectExpression(node) {
check(node, node.properties);
},
TSTypeLiteral(node) {
check(node, node.members);
},
TSInterfaceBody(node) {
check(node, node.body);
}
};
}
});
export { object_property_newline_default as t };