Omit types not used by loaded resolvers #415
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.
This PR fix the leakages in generated schema that were unintended. Now, the
buildSchema
function will produceGraphQLSchema
only with operations declared in classes provided inresolvers
option 🎉This also apply to other types (object, inputs, interfaces) - they will be emitted in schema only if they are explicitly used in used types.
So if you have declared 10 object types implementing an interface but don't use them directly as a return type of an operation, part of an union type or as a field type, they will be omitted too.
In that case you might want to provide the orphaned types explicitly to
buildSchema
option to emit them too as they might be used indirectly, e.g. by the underlying database or something:And because we don't have control of glob-imported files with resolvers and types, this feature doesn't apply if you use the indirect, glob path version of
resolvers
options property. In that case it will still emit the whole metadata storage content as earlier 😞Closes #110 🔒