@stylistic/eslint-plugin-ts
Advanced tools
Comparing version 2.12.1 to 2.13.0
@@ -134,2 +134,12 @@ | ||
afterColon?: boolean | ||
ignoredNodes?: ( | ||
| 'ObjectExpression' | ||
| 'ObjectPattern' | ||
| 'ImportDeclaration' | ||
| 'ExportNamedDeclaration' | ||
| 'ExportAllDeclaration' | ||
| 'TSTypeLiteral' | ||
| 'TSInterfaceBody' | ||
| 'ClassBody' | ||
)[] | ||
} | ||
@@ -583,2 +593,3 @@ | { | ||
allowParensAfterCommentPattern?: string | ||
nestedConditionalExpressions?: boolean | ||
}, | ||
@@ -585,0 +596,0 @@ ] |
@@ -41,3 +41,3 @@ 'use strict'; | ||
function isValid(left, right) { | ||
return !utils.isTokenOnSameLine(left, right) || sourceCode.isSpaceBetweenTokens(left, right) === always; | ||
return !utils.isTokenOnSameLine(left, right) || sourceCode.isSpaceBetween(left, right) === always; | ||
} | ||
@@ -44,0 +44,0 @@ function checkSpacingInsideBraces(node) { |
@@ -9,2 +9,12 @@ 'use strict'; | ||
const listeningNodes = [ | ||
"ObjectExpression", | ||
"ObjectPattern", | ||
"ImportDeclaration", | ||
"ExportNamedDeclaration", | ||
"ExportAllDeclaration", | ||
"TSTypeLiteral", | ||
"TSInterfaceBody", | ||
"ClassBody" | ||
]; | ||
function containsLineTerminator(str) { | ||
@@ -72,2 +82,3 @@ return utils.LINEBREAK_MATCHER.test(str); | ||
} | ||
toOptions.ignoredNodes = fromOptions.ignoredNodes || []; | ||
return toOptions; | ||
@@ -126,2 +137,9 @@ } | ||
type: "boolean" | ||
}, | ||
ignoredNodes: { | ||
type: "array", | ||
items: { | ||
type: "string", | ||
enum: listeningNodes | ||
} | ||
} | ||
@@ -270,2 +288,3 @@ }, | ||
const alignmentOptions = ruleOptions.align || null; | ||
const ignoredNodes = ruleOptions.ignoredNodes; | ||
const sourceCode = context.sourceCode; | ||
@@ -428,2 +447,4 @@ function isKeyValueProperty(property) { | ||
function verifySpacing(node, lineOptions) { | ||
if (ignoredNodes.includes(node.parent.type)) | ||
return; | ||
const actual = getPropertyWhitespace(node); | ||
@@ -450,2 +471,4 @@ if (actual) { | ||
function verifyImportAttributes(node) { | ||
if (ignoredNodes.includes(node.type)) | ||
return; | ||
if (!node.attributes) | ||
@@ -463,2 +486,4 @@ return; | ||
ObjectExpression(node) { | ||
if (ignoredNodes.includes(node.type)) | ||
return; | ||
if (isSingleLine(node)) | ||
@@ -510,2 +535,3 @@ verifyListSpacing(node.properties.filter(isKeyValueProperty), singleLineOptions); | ||
const options = _options || {}; | ||
const ignoredNodes = options.ignoredNodes || []; | ||
const sourceCode = context.sourceCode; | ||
@@ -679,2 +705,4 @@ const baseRules = baseRule.create(context); | ||
function validateBody(body) { | ||
if (ignoredNodes.includes(body.type)) | ||
return; | ||
const isSingleLine = body.loc.start.line === body.loc.end.line; | ||
@@ -681,0 +709,0 @@ const members = body.type === utils$1.AST_NODE_TYPES.TSTypeLiteral ? body.members : body.body; |
@@ -75,3 +75,3 @@ 'use strict'; | ||
const prevToken = sourceCode.getTokenBefore(token); | ||
if (prevToken && (CHECK_TYPE.test(prevToken.type) || pattern.test(prevToken.value)) && !isOpenParenOfTemplate(prevToken) && !tokensToIgnore.has(prevToken) && utils.isTokenOnSameLine(prevToken, token) && !sourceCode.isSpaceBetweenTokens(prevToken, token)) { | ||
if (prevToken && (CHECK_TYPE.test(prevToken.type) || pattern.test(prevToken.value)) && !isOpenParenOfTemplate(prevToken) && !tokensToIgnore.has(prevToken) && utils.isTokenOnSameLine(prevToken, token) && !sourceCode.isSpaceBetween(prevToken, token)) { | ||
context.report({ | ||
@@ -90,3 +90,3 @@ loc: token.loc, | ||
const prevToken = sourceCode.getTokenBefore(token); | ||
if (prevToken && (CHECK_TYPE.test(prevToken.type) || pattern.test(prevToken.value)) && !isOpenParenOfTemplate(prevToken) && !tokensToIgnore.has(prevToken) && utils.isTokenOnSameLine(prevToken, token) && sourceCode.isSpaceBetweenTokens(prevToken, token)) { | ||
if (prevToken && (CHECK_TYPE.test(prevToken.type) || pattern.test(prevToken.value)) && !isOpenParenOfTemplate(prevToken) && !tokensToIgnore.has(prevToken) && utils.isTokenOnSameLine(prevToken, token) && sourceCode.isSpaceBetween(prevToken, token)) { | ||
context.report({ | ||
@@ -105,3 +105,3 @@ loc: { start: prevToken.loc.end, end: token.loc.start }, | ||
const nextToken = sourceCode.getTokenAfter(token); | ||
if (nextToken && (CHECK_TYPE.test(nextToken.type) || pattern.test(nextToken.value)) && !isCloseParenOfTemplate(nextToken) && !tokensToIgnore.has(nextToken) && utils.isTokenOnSameLine(token, nextToken) && !sourceCode.isSpaceBetweenTokens(token, nextToken)) { | ||
if (nextToken && (CHECK_TYPE.test(nextToken.type) || pattern.test(nextToken.value)) && !isCloseParenOfTemplate(nextToken) && !tokensToIgnore.has(nextToken) && utils.isTokenOnSameLine(token, nextToken) && !sourceCode.isSpaceBetween(token, nextToken)) { | ||
context.report({ | ||
@@ -120,3 +120,3 @@ loc: token.loc, | ||
const nextToken = sourceCode.getTokenAfter(token); | ||
if (nextToken && (CHECK_TYPE.test(nextToken.type) || pattern.test(nextToken.value)) && !isCloseParenOfTemplate(nextToken) && !tokensToIgnore.has(nextToken) && utils.isTokenOnSameLine(token, nextToken) && sourceCode.isSpaceBetweenTokens(token, nextToken)) { | ||
if (nextToken && (CHECK_TYPE.test(nextToken.type) || pattern.test(nextToken.value)) && !isCloseParenOfTemplate(nextToken) && !tokensToIgnore.has(nextToken) && utils.isTokenOnSameLine(token, nextToken) && sourceCode.isSpaceBetween(token, nextToken)) { | ||
context.report({ | ||
@@ -123,0 +123,0 @@ loc: { start: token.loc.end, end: nextToken.loc.start }, |
@@ -50,3 +50,4 @@ 'use strict'; | ||
enforceForFunctionPrototypeMethods: { type: "boolean" }, | ||
allowParensAfterCommentPattern: { type: "string" } | ||
allowParensAfterCommentPattern: { type: "string" }, | ||
nestedConditionalExpressions: { type: "boolean" } | ||
}, | ||
@@ -80,2 +81,3 @@ additionalProperties: false | ||
const ALLOW_PARENS_AFTER_COMMENT_PATTERN = ALL_NODES && context.options[1] && context.options[1].allowParensAfterCommentPattern; | ||
const ALLOW_NESTED_TERNARY = ALL_NODES && context.options[1] && context.options[1].nestedConditionalExpressions === false; | ||
const PRECEDENCE_OF_ASSIGNMENT_EXPR = precedence({ type: "AssignmentExpression" }); | ||
@@ -185,3 +187,3 @@ const PRECEDENCE_OF_UPDATE_EXPR = precedence({ type: "UpdateExpression" }); | ||
const tokenBeforeRightParen = sourceCode.getLastToken(node); | ||
return rightParenToken && tokenAfterRightParen && !sourceCode.isSpaceBetweenTokens(rightParenToken, tokenAfterRightParen) && !utils.canTokensBeAdjacent(tokenBeforeRightParen, tokenAfterRightParen); | ||
return rightParenToken && tokenAfterRightParen && !sourceCode.isSpaceBetween(rightParenToken, tokenAfterRightParen) && !utils.canTokensBeAdjacent(tokenBeforeRightParen, tokenAfterRightParen); | ||
} | ||
@@ -420,9 +422,9 @@ function isIIFE(node) { | ||
const availableTypes = /* @__PURE__ */ new Set(["BinaryExpression", "LogicalExpression"]); | ||
if (!(EXCEPT_COND_TERNARY && availableTypes.has(node.test.type)) && !isCondAssignException(node) && hasExcessParensWithPrecedence(node.test, precedence({ type: "LogicalExpression", operator: "||" }))) { | ||
if (!(EXCEPT_COND_TERNARY && availableTypes.has(node.test.type)) && !(ALLOW_NESTED_TERNARY && ["ConditionalExpression"].includes(node.test.type)) && !isCondAssignException(node) && hasExcessParensWithPrecedence(node.test, precedence({ type: "LogicalExpression", operator: "||" }))) { | ||
report(node.test); | ||
} | ||
if (!(EXCEPT_COND_TERNARY && availableTypes.has(node.consequent.type)) && hasExcessParensWithPrecedence(node.consequent, PRECEDENCE_OF_ASSIGNMENT_EXPR)) { | ||
if (!(EXCEPT_COND_TERNARY && availableTypes.has(node.consequent.type)) && !(ALLOW_NESTED_TERNARY && ["ConditionalExpression"].includes(node.consequent.type)) && hasExcessParensWithPrecedence(node.consequent, PRECEDENCE_OF_ASSIGNMENT_EXPR)) { | ||
report(node.consequent); | ||
} | ||
if (!(EXCEPT_COND_TERNARY && availableTypes.has(node.alternate.type)) && hasExcessParensWithPrecedence(node.alternate, PRECEDENCE_OF_ASSIGNMENT_EXPR)) { | ||
if (!(EXCEPT_COND_TERNARY && availableTypes.has(node.alternate.type)) && !(ALLOW_NESTED_TERNARY && ["ConditionalExpression"].includes(node.alternate.type)) && hasExcessParensWithPrecedence(node.alternate, PRECEDENCE_OF_ASSIGNMENT_EXPR)) { | ||
report(node.alternate); | ||
@@ -429,0 +431,0 @@ } |
@@ -111,3 +111,3 @@ 'use strict'; | ||
if (utils.isTokenOnSameLine(first, second)) { | ||
const firstSpaced = sourceCode.isSpaceBetweenTokens(first, second); | ||
const firstSpaced = sourceCode.isSpaceBetween(first, second); | ||
if (options.spaced && !firstSpaced) | ||
@@ -122,3 +122,3 @@ reportRequiredBeginningSpace(node, first); | ||
const closingCurlyBraceMustBeSpaced = options.arraysInObjectsException && penultimateType === "ArrayExpression" || options.objectsInObjectsException && (penultimateType === "ObjectExpression" || penultimateType === "ObjectPattern") ? !options.spaced : options.spaced; | ||
const lastSpaced = sourceCode.isSpaceBetweenTokens(penultimate, last); | ||
const lastSpaced = sourceCode.isSpaceBetween(penultimate, last); | ||
if (closingCurlyBraceMustBeSpaced && !lastSpaced) | ||
@@ -125,0 +125,0 @@ reportRequiredEndingSpace(node, last); |
@@ -84,3 +84,3 @@ 'use strict'; | ||
if (precedingToken && !isConflicted(precedingToken, node) && utils.isTokenOnSameLine(precedingToken, node)) { | ||
const hasSpace = sourceCode.isSpaceBetweenTokens(precedingToken, node); | ||
const hasSpace = sourceCode.isSpaceBetween(precedingToken, node); | ||
let requireSpace; | ||
@@ -87,0 +87,0 @@ let requireNoSpace; |
@@ -41,3 +41,3 @@ 'use strict'; | ||
const next = sourceCode.getTokenAfter(operator); | ||
if (!sourceCode.isSpaceBetweenTokens(prev, operator) || !sourceCode.isSpaceBetweenTokens(operator, next)) | ||
if (!sourceCode.isSpaceBetween(prev, operator) || !sourceCode.isSpaceBetween(operator, next)) | ||
return operator; | ||
@@ -108,3 +108,3 @@ return null; | ||
const rightToken = sourceCode.getTokenAfter(operatorToken); | ||
if (!sourceCode.isSpaceBetweenTokens(leftToken, operatorToken) || !sourceCode.isSpaceBetweenTokens(operatorToken, rightToken)) { | ||
if (!sourceCode.isSpaceBetween(leftToken, operatorToken) || !sourceCode.isSpaceBetween(operatorToken, rightToken)) { | ||
report(node, operatorToken); | ||
@@ -111,0 +111,0 @@ } |
{ | ||
"name": "@stylistic/eslint-plugin-ts", | ||
"type": "commonjs", | ||
"version": "2.12.1", | ||
"version": "2.13.0", | ||
"author": "Anthony Fu <anthonyfu117@hotmail.com>", | ||
@@ -6,0 +6,0 @@ "license": "MIT", |
392167
10828
1