Comments (4)
A DefinitionNode
can also be part of the SchemaDefinition part of the GraphQL lanaguage, this means that to efficiently narrow the type you would have to do.
if (definition.kind === Kind.OPERATION_DEFINITION || definition.kind === Kind.FRAGMENT_DEFINITION) {}
Doing the above ensures that you are dealing with the query-language and hence have a selection-set.
from graphql-js.
Ah, that does solve the initial selectionSet
issue. But then it reveals:
Property 'alias' does not exist on type 'SelectionNode'.
Property 'alias' does not exist on type 'FragmentSpreadNode'.
Property 'name' does not exist on type 'SelectionNode'.
Property 'name' does not exist on type 'InlineFragmentNode'.
Property 'operation' does not exist on type 'OperationDefinitionNode | FragmentDefinitionNode'.
Property 'operation' does not exist on type 'FragmentDefinitionNode'.
There surely must be a way to do this would a bunch of narrowing because the code actually works fine (perhaps because my inputs are uniform?).
from graphql-js.
I mean, these are all valid type errors and your code will fail for other permutations of the query-language. 😅
the first one is the distinction between
query { x { alias: field ...fragment } }
Where you can see whether the .kind
is a FragmentSpreadNode, same goes for the second where the distinction is between an inline fragment and a selectionNode as an inline fragment has no name only a potential type-condition and the last one is the distinction between defining an operation and defining a fragment. All of these are valid issues to point out
from graphql-js.
Ahh, yes. Sorry, of course 🤦♂️ Thanks for the explanation.
from graphql-js.
Related Issues (20)
- FieldResolver performance HOT 3
- Inline fragment from an interface to an interface that extends it is invalid
- Resource exhaustion exploit when parsing queries HOT 7
- In GraphQL how to set WriteOnce functionality in specific property in the collection schema HOT 1
- Generator generates alias imports not compatible with TypeScript Type-Only Imports and verbatimModuleSyntax HOT 2
- Printing the @oneOf directive HOT 1
- Allow shallow sorting with lexicographicSortSchema HOT 2
- Passing arguments into the resolvers by just using `buildSchema` and `graphql`? HOT 3
- Error after upgrading from 16.6 to 16.8.1 with globalThis.process.env.NODE_ENV HOT 12
- Add: Link to new api docs in the README of this project.
- Introspection result missing interfaces
- Detect subscription successfully started HOT 1
- Errors thrown when iterating over subscription source event streams (AsyncIterables) should be caught HOT 2
- graphql resolver circular dependency type error (bi-directional relation) HOT 1
- Current main is up to 50% slower than previous major version HOT 10
- AST: `IntValueNode` and `FloatValueNode` store values as string HOT 2
- Array-type resolvers: an intuitive solution to the n+1 problem HOT 1
- Performance of stack traces in errors results in high response latency (>1 second) HOT 1
- Support for deep input graphs HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from graphql-js.