From b153ce16580a5724aeb834ee03ca755483e0cc50 Mon Sep 17 00:00:00 2001 From: Jovi De Croock Date: Mon, 13 May 2024 19:22:04 +0200 Subject: [PATCH] fix(lsp): nested call expressions (#319) --- .changeset/tough-crabs-heal.md | 5 +++++ packages/example-tada/src/index.tsx | 4 ++-- packages/graphqlsp/src/ast/index.ts | 2 +- packages/graphqlsp/src/ast/resolve.ts | 2 +- packages/graphqlsp/src/index.ts | 2 +- 5 files changed, 10 insertions(+), 5 deletions(-) create mode 100644 .changeset/tough-crabs-heal.md diff --git a/.changeset/tough-crabs-heal.md b/.changeset/tough-crabs-heal.md new file mode 100644 index 00000000..9636e33b --- /dev/null +++ b/.changeset/tough-crabs-heal.md @@ -0,0 +1,5 @@ +--- +'@0no-co/graphqlsp': patch +--- + +Support finding `graphql()` invocations within call-expressions diff --git a/packages/example-tada/src/index.tsx b/packages/example-tada/src/index.tsx index aeae91fa..eb6d6ce7 100644 --- a/packages/example-tada/src/index.tsx +++ b/packages/example-tada/src/index.tsx @@ -30,9 +30,9 @@ const PokemonQuery = graphql(` fleeRate } } -`, [PokemonFields, Fields.Pokemon]); +`, [PokemonFields, Fields.Pokemon]) -const persisted = graphql.persisted("sha256:7a9bbe8533362e631f92af8d7f314b1589c8272f8e092da564d9ad6cd600a4eb") +const persisted = graphql.persisted("sha256:78c769ed6cfef67e17e579a2abfe4da27bd51e09ed832a88393148bcce4c5a7d") const Pokemons = () => { const [result] = useQuery({ diff --git a/packages/graphqlsp/src/ast/index.ts b/packages/graphqlsp/src/ast/index.ts index 5f568c4a..78f1a065 100644 --- a/packages/graphqlsp/src/ast/index.ts +++ b/packages/graphqlsp/src/ast/index.ts @@ -153,7 +153,7 @@ export function findAllCallExpressions( // Check whether we've got a `graphql()` or `gql()` call, by the // call expression's identifier if (!checks.isGraphQLCall(node, typeChecker)) { - return; + return ts.forEachChild(node, find); } const name = checks.getSchemaName(node, typeChecker); diff --git a/packages/graphqlsp/src/ast/resolve.ts b/packages/graphqlsp/src/ast/resolve.ts index 82920e55..f1e79ff5 100644 --- a/packages/graphqlsp/src/ast/resolve.ts +++ b/packages/graphqlsp/src/ast/resolve.ts @@ -158,7 +158,7 @@ export const resolveTadaFragmentArray = ( if (node.elements.every(ts.isIdentifier)) return node.elements; const identifiers: ts.Identifier[] = []; for (let element of node.elements) { - while (ts.isPropertyAccessExpression(element)) element = element.expression; + while (ts.isPropertyAccessExpression(element)) element = element.name; if (ts.isIdentifier(element)) identifiers.push(element); } return identifiers; diff --git a/packages/graphqlsp/src/index.ts b/packages/graphqlsp/src/index.ts index 23781630..5db3d784 100644 --- a/packages/graphqlsp/src/index.ts +++ b/packages/graphqlsp/src/index.ts @@ -162,7 +162,7 @@ function create(info: ts.server.PluginCreateInfo) { : positionOrRange.pos, info ); - console.log('[GraphQLSP]', JSON.stringify(codefix)); + if (codefix) { return [ {