From 6fc2774b0a948a46cd2811b42ebd41344c3fbc05 Mon Sep 17 00:00:00 2001 From: Jovi De Croock Date: Mon, 13 May 2024 19:16:30 +0200 Subject: [PATCH 1/3] fix nested call expressions --- packages/example-tada/src/index.tsx | 54 +++++++++++++-------------- packages/graphqlsp/src/ast/index.ts | 2 +- packages/graphqlsp/src/ast/resolve.ts | 2 +- packages/graphqlsp/src/index.ts | 2 +- 4 files changed, 30 insertions(+), 30 deletions(-) diff --git a/packages/example-tada/src/index.tsx b/packages/example-tada/src/index.tsx index aeae91fa..1f7a7053 100644 --- a/packages/example-tada/src/index.tsx +++ b/packages/example-tada/src/index.tsx @@ -2,41 +2,41 @@ import { useQuery } from 'urql'; import { graphql } from './graphql'; import { Fields, Pokemon, PokemonFields } from './Pokemon'; -const PokemonQuery = graphql(` - query Po($id: ID!) { - pokemon(id: $id) { - id - fleeRate - ...Pok - ...pokemonFields - attacks { - special { - name - damage - } +const query = graphql(` +query Po($id: ID!) { + pokemon(id: $id) { + id + fleeRate + ...Pok + ...pokemonFields + attacks { + special { + name + damage } - weight { - minimum - maximum - } - name - __typename } - pokemons { - name - maxCP - maxHP - types - fleeRate + weight { + minimum + maximum } + name + __typename + } + pokemons { + name + maxCP + maxHP + types + fleeRate } -`, [PokemonFields, Fields.Pokemon]); +} +`, [PokemonFields, Fields.Pokemon]) -const persisted = graphql.persisted("sha256:7a9bbe8533362e631f92af8d7f314b1589c8272f8e092da564d9ad6cd600a4eb") +// const persisted = graphql.persisted("sha256:7a9bbe8533362e631f92af8d7f314b1589c8272f8e092da564d9ad6cd600a4eb") const Pokemons = () => { const [result] = useQuery({ - query: PokemonQuery, + query, variables: { id: '' } }); 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 [ { From b37d1353f6eafa207f9af16b03394120d2786d75 Mon Sep 17 00:00:00 2001 From: Jovi De Croock Date: Mon, 13 May 2024 19:18:49 +0200 Subject: [PATCH 2/3] restore --- packages/example-tada/src/index.tsx | 52 ++++++++++++++--------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/packages/example-tada/src/index.tsx b/packages/example-tada/src/index.tsx index 1f7a7053..eb6d6ce7 100644 --- a/packages/example-tada/src/index.tsx +++ b/packages/example-tada/src/index.tsx @@ -2,41 +2,41 @@ import { useQuery } from 'urql'; import { graphql } from './graphql'; import { Fields, Pokemon, PokemonFields } from './Pokemon'; -const query = graphql(` -query Po($id: ID!) { - pokemon(id: $id) { - id - fleeRate - ...Pok - ...pokemonFields - attacks { - special { - name - damage +const PokemonQuery = graphql(` + query Po($id: ID!) { + pokemon(id: $id) { + id + fleeRate + ...Pok + ...pokemonFields + attacks { + special { + name + damage + } } + weight { + minimum + maximum + } + name + __typename } - weight { - minimum - maximum + pokemons { + name + maxCP + maxHP + types + fleeRate } - name - __typename - } - pokemons { - name - maxCP - maxHP - types - fleeRate } -} `, [PokemonFields, Fields.Pokemon]) -// const persisted = graphql.persisted("sha256:7a9bbe8533362e631f92af8d7f314b1589c8272f8e092da564d9ad6cd600a4eb") +const persisted = graphql.persisted("sha256:78c769ed6cfef67e17e579a2abfe4da27bd51e09ed832a88393148bcce4c5a7d") const Pokemons = () => { const [result] = useQuery({ - query, + query: PokemonQuery, variables: { id: '' } }); From a0bf5bef1d13b5ce654d05b9ff2543a5001cca33 Mon Sep 17 00:00:00 2001 From: Jovi De Croock Date: Mon, 13 May 2024 19:20:34 +0200 Subject: [PATCH 3/3] changeset --- .changeset/tough-crabs-heal.md | 5 +++++ 1 file changed, 5 insertions(+) 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