...

Source file src/github.com/vektah/gqlparser/validator/rules/known_argument_names.go

Documentation: github.com/vektah/gqlparser/validator/rules

     1  package validator
     2  
     3  import (
     4  	"github.com/vektah/gqlparser/ast"
     5  	. "github.com/vektah/gqlparser/validator"
     6  )
     7  
     8  func init() {
     9  	AddRule("KnownArgumentNames", func(observers *Events, addError AddErrFunc) {
    10  		// A GraphQL field is only valid if all supplied arguments are defined by that field.
    11  		observers.OnField(func(walker *Walker, field *ast.Field) {
    12  			if field.Definition == nil || field.ObjectDefinition == nil {
    13  				return
    14  			}
    15  			for _, arg := range field.Arguments {
    16  				def := field.Definition.Arguments.ForName(arg.Name)
    17  				if def != nil {
    18  					continue
    19  				}
    20  
    21  				var suggestions []string
    22  				for _, argDef := range field.Definition.Arguments {
    23  					suggestions = append(suggestions, argDef.Name)
    24  				}
    25  
    26  				addError(
    27  					Message(`Unknown argument "%s" on field "%s" of type "%s".`, arg.Name, field.Name, field.ObjectDefinition.Name),
    28  					SuggestListQuoted("Did you mean", arg.Name, suggestions),
    29  					At(field.Position),
    30  				)
    31  			}
    32  		})
    33  
    34  		observers.OnDirective(func(walker *Walker, directive *ast.Directive) {
    35  			if directive.Definition == nil {
    36  				return
    37  			}
    38  			for _, arg := range directive.Arguments {
    39  				def := directive.Definition.Arguments.ForName(arg.Name)
    40  				if def != nil {
    41  					continue
    42  				}
    43  
    44  				var suggestions []string
    45  				for _, argDef := range directive.Definition.Arguments {
    46  					suggestions = append(suggestions, argDef.Name)
    47  				}
    48  
    49  				addError(
    50  					Message(`Unknown argument "%s" on directive "@%s".`, arg.Name, directive.Name),
    51  					SuggestListQuoted("Did you mean", arg.Name, suggestions),
    52  					At(directive.Position),
    53  				)
    54  			}
    55  		})
    56  	})
    57  }
    58  

View as plain text