@stylistic/eslint-plugin
Advanced tools
Comparing version 4.0.0 to 4.0.1
@@ -1,4 +0,4 @@ | ||
import { c as createRule, i as isTokenOnSameLine, h as castRuleModule } from '../utils.js'; | ||
import { c as createRule } from '../utils.js'; | ||
import { AST_TOKEN_TYPES } from '@typescript-eslint/utils'; | ||
import { isTokenOnSameLine as isTokenOnSameLine$1 } from '@typescript-eslint/utils/ast-utils'; | ||
import { isTokenOnSameLine } from '@typescript-eslint/utils/ast-utils'; | ||
import 'eslint-visitor-keys'; | ||
@@ -8,5 +8,5 @@ import 'espree'; | ||
var _baseRule = createRule({ | ||
var blockSpacing = createRule({ | ||
name: "block-spacing", | ||
package: "js", | ||
package: "ts", | ||
meta: { | ||
@@ -26,102 +26,5 @@ type: "layout", | ||
}, | ||
create(context) { | ||
const always = context.options[0] !== "never"; | ||
const messageId = always ? "missing" : "extra"; | ||
const sourceCode = context.sourceCode; | ||
function getOpenBrace(node) { | ||
if (node.type === "SwitchStatement") { | ||
if (node.cases.length > 0) | ||
return sourceCode.getTokenBefore(node.cases[0]); | ||
return sourceCode.getLastToken(node, 1); | ||
} | ||
if (node.type === "StaticBlock") | ||
return sourceCode.getFirstToken(node, { skip: 1 }); | ||
return sourceCode.getFirstToken(node); | ||
} | ||
function isValid(left, right) { | ||
return !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 (openBrace.type !== "Punctuator" || openBrace.value !== "{" || closeBrace.type !== "Punctuator" || closeBrace.value !== "}" || firstToken === closeBrace) { | ||
return; | ||
} | ||
if (!always && firstToken.type === "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 | ||
}; | ||
} | ||
}); | ||
const baseRule = /* @__PURE__ */ castRuleModule(_baseRule); | ||
var blockSpacing = createRule({ | ||
name: "block-spacing", | ||
package: "ts", | ||
meta: { | ||
type: "layout", | ||
docs: { | ||
description: "Disallow or enforce spaces inside of blocks after opening block and before closing block" | ||
}, | ||
fixable: "whitespace", | ||
hasSuggestions: baseRule.meta.hasSuggestions, | ||
schema: baseRule.meta.schema, | ||
messages: baseRule.meta.messages | ||
}, | ||
defaultOptions: ["always"], | ||
create(context, [whenToApplyOption]) { | ||
const sourceCode = context.sourceCode; | ||
const baseRules = baseRule.create(context); | ||
const always = whenToApplyOption !== "never"; | ||
@@ -135,3 +38,3 @@ const messageId = always ? "missing" : "extra"; | ||
function isValid(left, right) { | ||
return !isTokenOnSameLine$1(left, right) || sourceCode.isSpaceBetween(left, right) === always; | ||
return !isTokenOnSameLine(left, right) || sourceCode.isSpaceBetween(left, right) === always; | ||
} | ||
@@ -200,3 +103,5 @@ function checkSpacingInsideBraces(node) { | ||
return { | ||
...baseRules, | ||
BlockStatement: checkSpacingInsideBraces, | ||
StaticBlock: checkSpacingInsideBraces, | ||
SwitchStatement: checkSpacingInsideBraces, | ||
// This code worked "out of the box" for interface and type literal | ||
@@ -206,4 +111,4 @@ // Enums were very close to match as well, the only reason they are not is that was that enums don't have a body node in the parser | ||
// the base rule did not filter for the first opening brace punctuator | ||
TSInterfaceBody: baseRules.BlockStatement, | ||
TSTypeLiteral: baseRules.BlockStatement, | ||
TSInterfaceBody: checkSpacingInsideBraces, | ||
TSTypeLiteral: checkSpacingInsideBraces, | ||
TSEnumDeclaration: checkSpacingInsideBraces | ||
@@ -210,0 +115,0 @@ }; |
@@ -105,3 +105,3 @@ import { c as createRule, A as ASSIGNMENT_OPERATOR } from '../utils.js'; | ||
const lastTokenOfLineLeft = lastTokenOfLine(tokenLeft.loc.start.line); | ||
const needAdditionIndent = firstTokenOfLineLeft?.type === "Keyword" && !["typeof", "instanceof", "this"].includes(firstTokenOfLineLeft.value) || firstTokenOfLineLeft?.type === "Identifier" && firstTokenOfLineLeft.value === "type" && isTypeKeywordOfNode(firstTokenOfLineLeft, node) || [":", "[", "(", "<"].concat(ASSIGNMENT_OPERATOR).includes(lastTokenOfLineLeft?.value || "") || ["[", "(", "=>", ":"].concat(ASSIGNMENT_OPERATOR).includes(tokenBeforeAll?.value || "") && firstTokenOfLineLeft?.loc.start.line === tokenBeforeAll?.loc.start.line; | ||
const needAdditionIndent = firstTokenOfLineLeft?.type === "Keyword" && !["typeof", "instanceof", "this"].includes(firstTokenOfLineLeft.value) || firstTokenOfLineLeft?.type === "Identifier" && firstTokenOfLineLeft.value === "type" && isTypeKeywordOfNode(firstTokenOfLineLeft, node) || [":", "[", "(", "<"].concat(ASSIGNMENT_OPERATOR).includes(lastTokenOfLineLeft?.value || "") || ["[", "(", "{", "=>", ":"].concat(ASSIGNMENT_OPERATOR).includes(tokenBeforeAll?.value || "") && firstTokenOfLineLeft?.loc.start.line === tokenBeforeAll?.loc.start.line; | ||
const needSubtractionIndent = lastTokenOfLineLeft?.value === ")" && isGreaterThanCloseBracketOfLine(tokenLeft.loc.start.line) && !["]", ")", "}"].includes(firstTokenOfLineLeft?.value || ""); | ||
@@ -108,0 +108,0 @@ const indentLeft = getIndentOfLine(tokenLeft.loc.start.line); |
{ | ||
"name": "@stylistic/eslint-plugin", | ||
"type": "module", | ||
"version": "4.0.0", | ||
"version": "4.0.1", | ||
"author": "Anthony Fu <anthonyfu117@hotmail.com>", | ||
@@ -6,0 +6,0 @@ "license": "MIT", |
810503
22848