feat: add shared response types tracking infrastructure #3
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.
📝 Description
This PR implements the first step of a feature to allow shared response types in the GraphQL Kotlin client generator. Currently, the system generates duplicate classes for the same GraphQL type when it appears in different operations. This change adds the infrastructure to track and identify response types that are shared across multiple operations.
Key Changes:
responseClassToTypeSpecsmap inGraphQLClientGeneratorContextto track response types, similar to existing enum and input type trackingdetectSharedResponseTypes()method that analyzes all operation contexts to identify types used across multiple operationssharedTypescollection alongside enums, input types, and scalar convertersgenerate()method to collect contexts from all operations before processing shared typesImportant Notes:
Testing:
Key Areas for Review:
detectSharedResponseTypes()method correctly identifies types used across multiple operationsgenerateWithContext()refactoring maintains existing behavior🔗 Related Issues
This implements the first step toward resolving duplicate class generation for GraphQL response types across operations, as requested by @akkp-windsurf.
Link to Devin run: https://app.devin.ai/sessions/355a9ae4e762480a804152127e6e1f92
Requested by: Arthur Poon (@akkp-windsurf)