feat: adds nested query rule #367
Open
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 introduces a new query analysis rule,
NestedQueryRule
, to thewpgraphql-debug-extensions
plugin. This rule is designed to help developers identify and prevent overly nested GraphQL queries, which can lead to performance degradation and increased server load.Related Issue
Dependant PRs
None.
Type of Change
[ ] ✅ Bug fix (non-breaking change which fixes an issue)
[x] ✨ New feature (non-breaking change which adds functionality)
[ ] 💥 Breaking change (fix or feature that would cause existing functionality to change)
[x] 🧹 Code refactoring (no functional changes)
[ ] 📄 Example update (no functional changes)
[ ] 📝 Documentation update
[ ] 🔍 Performance improvement
[ ] 🧪 Test update
Test Queries and Expected Output
1. Query does not trigger the rule (Simple)
Max depth: 5 (well below the limit of 8)
2. Query triggers the rule (Deeply Nested)
This query exceeds the maximum depth of 8 with a nesting depth of 9.
Expected debugExtensions.nestedQuery Output:
3. Query That Does Not Trigger the Rule (With a Fragment)
Max depth: 4 (fragment stays well within limit)
Expected debugExtensions.nestedQuery Output:
4. Query That Triggers the Rule (With a Fragment)
Max depth: 9 (fragment spread creates over-limit nesting)
Expected debugExtensions.nestedQuery Output:
Checklist
[x] I have read the CONTRIBUTING document
[x] My code follows the project's coding standards
[x] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation (if applicable)
[x] My changes generate no new warnings
[x] I have added tests that prove my fix is effective or that my feature works (if applicable)
[ ] Any dependent changes have been highlighted, merged or published