Deepen introspection query from 3 levels to 7 #364
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
Certain use cases require deeply nested types, perhaps non-null lists inside non-null lists etc..
GraphQL (quite reasonably) doesn't support infinitely recursive queries, which would enable introspecting on arbitrarily nested structures like this. This limits introspection on deeply nested types.
This GraphQL implementation provides an introspection query that supports up to a finite depth, currently 3, e.g.
[Int!]!
. This is not enough for all use cases: imagine a fully non-null 3D matrix:[[[Int!]!]!]!
.In practice, I encountered this problem almost immediately with a modest type akin to
[[Int!]!]
.Solution
Deepen the introspection depth for nested types from 3 to 7. This is enough to support the examples above, and is likely to be enough for most reasonable cases, even with fairly heavy use of non-null types.
Tests now explicitly express the desired maximum depth.
Result
It becomes easy to introspect on deeply nested types.