From ae82ea4a85a4ca332ebe6104e96c59dba30411be Mon Sep 17 00:00:00 2001 From: Brad Zacher Date: Sun, 17 May 2020 09:45:57 -0700 Subject: [PATCH] fix(experimental-utils): add back SourceCode.isSpaceBetweenTokens SourceCode.isSpaceBetween only exists in 6.7.0, so isSpaceBetweenTokens is a valid alternative until older versions are dead. --- packages/eslint-plugin/src/rules/array-type.ts | 2 +- .../eslint-plugin/src/rules/comma-spacing.ts | 4 ++-- .../src/rules/space-before-function-paren.ts | 2 +- .../experimental-utils/src/ts-eslint/ESLint.ts | 2 ++ .../src/ts-eslint/RuleTester.ts | 3 --- .../src/ts-eslint/SourceCode.ts | 17 ++++++++++++++++- 6 files changed, 22 insertions(+), 8 deletions(-) diff --git a/packages/eslint-plugin/src/rules/array-type.ts b/packages/eslint-plugin/src/rules/array-type.ts index a1ee754f234..de3cca75343 100644 --- a/packages/eslint-plugin/src/rules/array-type.ts +++ b/packages/eslint-plugin/src/rules/array-type.ts @@ -147,7 +147,7 @@ export default util.createRule({ } const nextToken = sourceCode.getTokenAfter(prevToken); - if (nextToken && sourceCode.isSpaceBetween(prevToken, nextToken)) { + if (nextToken && sourceCode.isSpaceBetweenTokens(prevToken, nextToken)) { return false; } diff --git a/packages/eslint-plugin/src/rules/comma-spacing.ts b/packages/eslint-plugin/src/rules/comma-spacing.ts index 665eeffd029..fa5dc1c0ec8 100644 --- a/packages/eslint-plugin/src/rules/comma-spacing.ts +++ b/packages/eslint-plugin/src/rules/comma-spacing.ts @@ -111,7 +111,7 @@ export default createRule({ if ( prevToken && isTokenOnSameLine(prevToken, commaToken) && - spaceBefore !== sourceCode.isSpaceBetween(prevToken, commaToken) + spaceBefore !== sourceCode.isSpaceBetweenTokens(prevToken, commaToken) ) { context.report({ node: commaToken, @@ -140,7 +140,7 @@ export default createRule({ if ( nextToken && isTokenOnSameLine(commaToken, nextToken) && - spaceAfter !== sourceCode.isSpaceBetween(commaToken, nextToken) + spaceAfter !== sourceCode.isSpaceBetweenTokens(commaToken, nextToken) ) { context.report({ node: commaToken, diff --git a/packages/eslint-plugin/src/rules/space-before-function-paren.ts b/packages/eslint-plugin/src/rules/space-before-function-paren.ts index 5b7f8fd6e04..41a817938da 100644 --- a/packages/eslint-plugin/src/rules/space-before-function-paren.ts +++ b/packages/eslint-plugin/src/rules/space-before-function-paren.ts @@ -145,7 +145,7 @@ export default util.createRule({ rightToken = sourceCode.getFirstToken(node, util.isOpeningParenToken)!; leftToken = sourceCode.getTokenBefore(rightToken)!; } - const hasSpacing = sourceCode.isSpaceBetween(leftToken, rightToken); + const hasSpacing = sourceCode.isSpaceBetweenTokens(leftToken, rightToken); if (hasSpacing && functionConfig === 'never') { context.report({ diff --git a/packages/experimental-utils/src/ts-eslint/ESLint.ts b/packages/experimental-utils/src/ts-eslint/ESLint.ts index 9ced6ed6470..c90978bb115 100644 --- a/packages/experimental-utils/src/ts-eslint/ESLint.ts +++ b/packages/experimental-utils/src/ts-eslint/ESLint.ts @@ -346,6 +346,8 @@ namespace ESLint { * This class depends on the Node.js fs module and the file system, so you cannot use it in browsers. * * If you want to lint code on browsers, use the Linter class instead. + * + * @since 7.0.0 */ class ESLint extends (ESLintESLint as typeof ESLintBase) {} diff --git a/packages/experimental-utils/src/ts-eslint/RuleTester.ts b/packages/experimental-utils/src/ts-eslint/RuleTester.ts index d1e11e4ad77..b54c1190ad8 100644 --- a/packages/experimental-utils/src/ts-eslint/RuleTester.ts +++ b/packages/experimental-utils/src/ts-eslint/RuleTester.ts @@ -159,9 +159,6 @@ declare class RuleTesterBase { static it?: (text: string, callback: () => void) => void; } -/** - * @deprecated - use RuleTesterSafe instead - */ class RuleTester extends (ESLintRuleTester as typeof RuleTesterBase) {} export { diff --git a/packages/experimental-utils/src/ts-eslint/SourceCode.ts b/packages/experimental-utils/src/ts-eslint/SourceCode.ts index 82593bbfc6a..888892d825f 100644 --- a/packages/experimental-utils/src/ts-eslint/SourceCode.ts +++ b/packages/experimental-utils/src/ts-eslint/SourceCode.ts @@ -296,14 +296,29 @@ declare class SourceCodeBase extends TokenStore { * Determines if two nodes or tokens have at least one whitespace character * between them. Order does not matter. Returns false if the given nodes or * tokens overlap. + * This was added in v6.7.0. + * @since 6.7.0 * @param first The first node or token to check between. * @param second The second node or token to check between. * @returns True if there is a whitespace character between any of the tokens found between the two given nodes or tokens. */ - isSpaceBetween( + isSpaceBetween?( first: TSESTree.Token | TSESTree.Comment | TSESTree.Node, second: TSESTree.Token | TSESTree.Comment | TSESTree.Node, ): boolean; + /** + * Determines if two nodes or tokens have at least one whitespace character + * between them. Order does not matter. Returns false if the given nodes or + * tokens overlap. + * For backward compatibility, this method returns true if there are + * `JSXText` tokens that contain whitespace between the two. + * @param first The first node or token to check between. + * @param second The second node or token to check between. + * @returns {boolean} True if there is a whitespace character between + * any of the tokens found between the two given nodes or tokens. + * @deprecated in favor of isSpaceBetween + */ + isSpaceBetweenTokens(first: TSESTree.Token, second: TSESTree.Token): boolean; /** * The source code split into lines according to ECMA-262 specification. * This is done to avoid each rule needing to do so separately.