validator

package
v2.1.1-0...-534efe0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 6, 2021 License: MIT Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Prelude = &ast.Source{
	Name:    "prelude.graphql",
	Input:   "# This file defines all the implicitly declared types that are required by the graphql spec. It is implicitly included by calls to LoadSchema\n\n\"The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.\"\nscalar Int\n\n\"The `Float` scalar type represents signed double-precision fractional values as specified by [IEEE 754](http://en.wikipedia.org/wiki/IEEE_floating_point).\"\nscalar Float\n\n\"The `String`scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.\"\nscalar String\n\n\"The `Boolean` scalar type represents `true` or `false`.\"\nscalar Boolean\n\n\"\"\"The `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as \"4\") or integer (such as 4) input value will be accepted as an ID.\"\"\"\nscalar ID\n\n\"The @include directive may be provided for fields, fragment spreads, and inline fragments, and allows for conditional inclusion during execution as described by the if argument.\"\ndirective @include(if: Boolean!) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT\n\n\"The @skip directive may be provided for fields, fragment spreads, and inline fragments, and allows for conditional exclusion during execution as described by the if argument.\"\ndirective @skip(if: Boolean!) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT\n\n\"The @deprecated directive is used within the type system definition language to indicate deprecated portions of a GraphQL service’s schema, such as deprecated fields on a type or deprecated enum values.\"\ndirective @deprecated(reason: String = \"No longer supported\") on FIELD_DEFINITION | ENUM_VALUE\n\ntype __Schema {\n  description: String\n  types: [__Type!]!\n  queryType: __Type!\n  mutationType: __Type\n  subscriptionType: __Type\n  directives: [__Directive!]!\n}\n\ntype __Type {\n  kind: __TypeKind!\n  name: String\n  description: String\n\n  # should be non-null for OBJECT and INTERFACE only, must be null for the others\n  fields(includeDeprecated: Boolean = false): [__Field!]\n\n  # should be non-null for OBJECT and INTERFACE only, must be null for the others\n  interfaces: [__Type!]\n\n  # should be non-null for INTERFACE and UNION only, always null for the others\n  possibleTypes: [__Type!]\n\n  # should be non-null for ENUM only, must be null for the others\n  enumValues(includeDeprecated: Boolean = false): [__EnumValue!]\n\n  # should be non-null for INPUT_OBJECT only, must be null for the others\n  inputFields: [__InputValue!]\n\n  # should be non-null for NON_NULL and LIST only, must be null for the others\n  ofType: __Type\n}\n\ntype __Field {\n  name: String!\n  description: String\n  args: [__InputValue!]!\n  type: __Type!\n  isDeprecated: Boolean!\n  deprecationReason: String\n}\n\ntype __InputValue {\n  name: String!\n  description: String\n  type: __Type!\n  defaultValue: String\n}\n\ntype __EnumValue {\n  name: String!\n  description: String\n  isDeprecated: Boolean!\n  deprecationReason: String\n}\n\nenum __TypeKind {\n  SCALAR\n  OBJECT\n  INTERFACE\n  UNION\n  ENUM\n  INPUT_OBJECT\n  LIST\n  NON_NULL\n}\n\ntype __Directive {\n  name: String!\n  description: String\n  locations: [__DirectiveLocation!]!\n  args: [__InputValue!]!\n  isRepeatable: Boolean!\n}\n\nenum __DirectiveLocation {\n  QUERY\n  MUTATION\n  SUBSCRIPTION\n  FIELD\n  FRAGMENT_DEFINITION\n  FRAGMENT_SPREAD\n  INLINE_FRAGMENT\n  VARIABLE_DEFINITION\n  SCHEMA\n  SCALAR\n  OBJECT\n  FIELD_DEFINITION\n  ARGUMENT_DEFINITION\n  INTERFACE\n  UNION\n  ENUM\n  ENUM_VALUE\n  INPUT_OBJECT\n  INPUT_FIELD_DEFINITION\n}",
	BuiltIn: true,
}
View Source
var UnexpectedType = fmt.Errorf("Unexpected Type")

Functions

func AddRule

func AddRule(name string, f ruleFunc)

addRule to rule set. f is called once each time `Validate` is executed.

func LoadSchema

func LoadSchema(inputs ...*Source) (*Schema, *gqlerror.Error)

func OrList

func OrList(items ...string) string

Given [ A, B, C ] return 'A, B, or C'.

func QuotedOrList

func QuotedOrList(items ...string) string

Given [ A, B, C ] return '"A", "B", or "C"'.

func SuggestionList

func SuggestionList(input string, options []string) []string

Given an invalid input string and a list of valid options, returns a filtered list of valid options sorted based on their similarity with the input.

func Validate

func Validate(schema *Schema, doc *QueryDocument) gqlerror.List

func ValidateSchemaDocument

func ValidateSchemaDocument(ast *SchemaDocument) (*Schema, *gqlerror.Error)

func VariableValues

func VariableValues(schema *ast.Schema, op *ast.OperationDefinition, variables map[string]interface{}) (map[string]interface{}, *gqlerror.Error)

VariableValues coerces and validates variable values

func Walk

func Walk(schema *ast.Schema, document *ast.QueryDocument, observers *Events)

Types

type AddErrFunc

type AddErrFunc func(options ...ErrorOption)

type ErrorOption

type ErrorOption func(err *gqlerror.Error)

func At

func At(position *ast.Position) ErrorOption

func Message

func Message(msg string, args ...interface{}) ErrorOption

func SuggestListQuoted

func SuggestListQuoted(prefix string, typed string, suggestions []string) ErrorOption

func SuggestListUnquoted

func SuggestListUnquoted(prefix string, typed string, suggestions []string) ErrorOption

func Suggestf

func Suggestf(suggestion string, args ...interface{}) ErrorOption

type Events

type Events struct {
	// contains filtered or unexported fields
}

func (*Events) OnDirective

func (o *Events) OnDirective(f func(walker *Walker, directive *ast.Directive))

func (*Events) OnDirectiveList

func (o *Events) OnDirectiveList(f func(walker *Walker, directives []*ast.Directive))

func (*Events) OnField

func (o *Events) OnField(f func(walker *Walker, field *ast.Field))

func (*Events) OnFragment

func (o *Events) OnFragment(f func(walker *Walker, fragment *ast.FragmentDefinition))

func (*Events) OnFragmentSpread

func (o *Events) OnFragmentSpread(f func(walker *Walker, fragmentSpread *ast.FragmentSpread))

func (*Events) OnInlineFragment

func (o *Events) OnInlineFragment(f func(walker *Walker, inlineFragment *ast.InlineFragment))

func (*Events) OnOperation

func (o *Events) OnOperation(f func(walker *Walker, operation *ast.OperationDefinition))

func (*Events) OnValue

func (o *Events) OnValue(f func(walker *Walker, value *ast.Value))

type Walker

type Walker struct {
	Context   context.Context
	Observers *Events
	Schema    *ast.Schema
	Document  *ast.QueryDocument

	CurrentOperation *ast.OperationDefinition
	// contains filtered or unexported fields
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL