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
84 lines
2.7 KiB
Plaintext
84 lines
2.7 KiB
Plaintext
import { f as createRule, g as import_ast_utils, h as AST_TOKEN_TYPES } from "../utils.js";
|
|
var block_spacing_default = createRule({
|
|
name: "block-spacing",
|
|
meta: {
|
|
type: "layout",
|
|
docs: { description: "Disallow or enforce spaces inside of blocks after opening block and before closing block" },
|
|
fixable: "whitespace",
|
|
schema: [{
|
|
type: "string",
|
|
enum: ["always", "never"]
|
|
}],
|
|
defaultOptions: ["always"],
|
|
messages: {
|
|
missing: "Requires a space {{location}} '{{token}}'.",
|
|
extra: "Unexpected space(s) {{location}} '{{token}}'."
|
|
}
|
|
},
|
|
create(context, [whenToApplyOption]) {
|
|
const sourceCode = context.sourceCode;
|
|
const always = whenToApplyOption !== "never";
|
|
const messageId = always ? "missing" : "extra";
|
|
function getOpenBrace(node) {
|
|
return sourceCode.getFirstToken(node, { filter: (token) => (0, import_ast_utils.isOpeningBraceToken)(token) });
|
|
}
|
|
function isValid(left, right) {
|
|
return !(0, import_ast_utils.isTokenOnSameLine)(left, right) || sourceCode.isSpaceBetween(left, right) === always;
|
|
}
|
|
function checkSpacingInsideBraces(node) {
|
|
const openBrace = getOpenBrace(node);
|
|
const closeBrace = sourceCode.getLastToken(node);
|
|
const firstToken = sourceCode.getTokenAfter(openBrace, { includeComments: true });
|
|
const lastToken = sourceCode.getTokenBefore(closeBrace, { includeComments: true });
|
|
if (!(0, import_ast_utils.isOpeningBraceToken)(openBrace) || !(0, import_ast_utils.isClosingBraceToken)(closeBrace) || firstToken === closeBrace) return;
|
|
if (!always && firstToken.type === AST_TOKEN_TYPES.Line) return;
|
|
if (!isValid(openBrace, firstToken)) {
|
|
let loc = openBrace.loc;
|
|
if (messageId === "extra") loc = {
|
|
start: openBrace.loc.end,
|
|
end: firstToken.loc.start
|
|
};
|
|
context.report({
|
|
node,
|
|
loc,
|
|
messageId,
|
|
data: {
|
|
location: "after",
|
|
token: openBrace.value
|
|
},
|
|
fix(fixer) {
|
|
if (always) return fixer.insertTextBefore(firstToken, " ");
|
|
return fixer.removeRange([openBrace.range[1], firstToken.range[0]]);
|
|
}
|
|
});
|
|
}
|
|
if (!isValid(lastToken, closeBrace)) {
|
|
let loc = closeBrace.loc;
|
|
if (messageId === "extra") loc = {
|
|
start: lastToken.loc.end,
|
|
end: closeBrace.loc.start
|
|
};
|
|
context.report({
|
|
node,
|
|
loc,
|
|
messageId,
|
|
data: {
|
|
location: "before",
|
|
token: closeBrace.value
|
|
},
|
|
fix(fixer) {
|
|
if (always) return fixer.insertTextAfter(lastToken, " ");
|
|
return fixer.removeRange([lastToken.range[1], closeBrace.range[0]]);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
return {
|
|
BlockStatement: checkSpacingInsideBraces,
|
|
StaticBlock: checkSpacingInsideBraces,
|
|
SwitchStatement: checkSpacingInsideBraces
|
|
};
|
|
}
|
|
});
|
|
export { block_spacing_default as t };
|