diff --git a/packages/utils/src/ast-utils/helpers.ts b/packages/utils/src/ast-utils/helpers.ts index f2a4ac2e2442..baf4daf68101 100644 --- a/packages/utils/src/ast-utils/helpers.ts +++ b/packages/utils/src/ast-utils/helpers.ts @@ -56,3 +56,24 @@ export const isTokenOfTypeWithConditions = < token?.type === tokenType && entries.every(([key, value]) => token[key] === value); }; + +export const isNotTokenOfTypeWithConditions = + < + TokenType extends AST_TOKEN_TYPES, + Conditions extends Partial, + >( + tokenType: TokenType, + conditions: Conditions, + ): (( + token: TSESTree.Token | null | undefined, + ) => token is Exclude< + TSESTree.Token, + TSESTree.Token & { type: TokenType } & Conditions + >) => + ( + token, + ): token is Exclude< + TSESTree.Token, + TSESTree.Token & { type: TokenType } & Conditions + > => + !isTokenOfTypeWithConditions(tokenType, conditions)(token); diff --git a/packages/utils/src/ast-utils/predicates.ts b/packages/utils/src/ast-utils/predicates.ts index 0038f092bbe0..10e50522d672 100644 --- a/packages/utils/src/ast-utils/predicates.ts +++ b/packages/utils/src/ast-utils/predicates.ts @@ -4,6 +4,7 @@ import { isNodeOfType, isNodeOfTypes, isNodeOfTypeWithConditions, + isNotTokenOfTypeWithConditions, isTokenOfTypeWithConditions, } from './helpers'; @@ -12,25 +13,20 @@ const isOptionalChainPunctuator = isTokenOfTypeWithConditions( { value: '?.' }, ); -function isNotOptionalChainPunctuator( - token: TSESTree.Token, -): token is Exclude< - TSESTree.Token, - TSESTree.PunctuatorToken & { value: '?.' } -> { - return !isOptionalChainPunctuator(token); -} +const isNotOptionalChainPunctuator = isNotTokenOfTypeWithConditions( + AST_TOKEN_TYPES.Punctuator, + { value: '?.' }, +); const isNonNullAssertionPunctuator = isTokenOfTypeWithConditions( AST_TOKEN_TYPES.Punctuator, { value: '!' }, ); -function isNotNonNullAssertionPunctuator( - token: TSESTree.Token, -): token is Exclude { - return !isNonNullAssertionPunctuator(token); -} +const isNotNonNullAssertionPunctuator = isNotTokenOfTypeWithConditions( + AST_TOKEN_TYPES.Punctuator, + { value: '!' }, +); /** * Returns true if and only if the node represents: foo?.() or foo.bar?.() pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy