From b2499401d23dabf18431a0c1cfd9f36404f33458 Mon Sep 17 00:00:00 2001 From: Phil Pluckthun Date: Thu, 22 Aug 2024 13:54:08 +0100 Subject: [PATCH] Add helper to resolve identifiers from expressions --- packages/graphqlsp/src/ast/declaration.ts | 26 +++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/packages/graphqlsp/src/ast/declaration.ts b/packages/graphqlsp/src/ast/declaration.ts index aebfcfd..e4d0c28 100644 --- a/packages/graphqlsp/src/ast/declaration.ts +++ b/packages/graphqlsp/src/ast/declaration.ts @@ -325,3 +325,29 @@ export function getValueOfIdentifier( } } } + +/** Resolves exressions that might not influence the target identifier */ +export function getIdentifierOfChainExpression( + node: ts.Expression +): ts.Identifier | undefined { + let target: ts.Expression | undefined = node; + while (target) { + if (ts.isPropertyAccessExpression(target)) { + target = target.name; + } else if (ts.isAsExpression(target)) { + target = target.expression; + } else if (ts.isSatisfiesExpression(target)) { + target = target.expression; + } else if (ts.isNonNullExpression(target)) { + target = target.expression; + } else if (ts.isParenthesizedExpression(target)) { + target = target.expression; + } else if (ts.isCommaListExpression(target)) { + target = target.elements[target.elements.length - 1]; + } else if (ts.isIdentifier(target)) { + return target; + } else { + return; + } + } +}