feat(composition): Implement shallow argument addition #8299
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.
Summary
Ports the logic for Merger.addArgumentsShallow. The port for
mergeDefaultValue
will be coming in a separate PR.New
HasArguments
traitIn the TS implementation, this method is generic over types which are
FieldDefinition
orDirectiveDefinition
. Since we can't create the same sum type in Rust, I abstracted out the various calls to the AST node which get the arguments we're looking for. Then, we can calladd_arguments_shallow
on any position which implements that contract. This also includes the implementation of that trait for object field, interface field, and directive definition positions.Argument positions can now
.insert()
The aforementioned trait is implemented using new
.insert()
methods on the various argument types. These automatically insert the referencers required on insert, so our schema metadata is up-to-date.Checklist
Complete the checklist (and note appropriate exceptions) before the PR is marked ready-for-review.
Exceptions
Note any exceptions here
Notes
Footnotes
It may be appropriate to bring upcoming changes to the attention of other (impacted) groups. Please endeavour to do this before seeking PR approval. The mechanism for doing this will vary considerably, so use your judgement as to how and when to do this. ↩
Configuration is an important part of many changes. Where applicable please try to document configuration examples. ↩
A lot of (if not most) features benefit from built-in observability and
debug
-level logs. Please read this guidance on metrics best-practices. ↩Tick whichever testing boxes are applicable. If you are adding Manual Tests, please document the manual testing (extensively) in the Exceptions. ↩