class GraphQL::StaticValidation::ValidationContext

The validation context gets passed to each validator.

It exposes a {GraphQL::Language::Visitor} where validators may add hooks. ({Language::Visitor#visit} is called in {Validator#validate})

It provides access to the schema & fragments which validators may read from.

It holds a list of errors which each validator may add to.

It also provides limited access to the {TypeStack} instance, which tracks state as you climb in and out of different fields.

Attributes

errors[R]
max_errors[R]
on_dependency_resolve_handlers[R]
query[R]
visitor[R]

Public Class Methods

new(query, visitor_class, max_errors) click to toggle source
# File lib/graphql/static_validation/validation_context.rb, line 23
def initialize(query, visitor_class, max_errors)
  @query = query
  @literal_validator = LiteralValidator.new(context: query.context)
  @errors = []
  @max_errors = max_errors || Float::INFINITY
  @on_dependency_resolve_handlers = []
  @visitor = visitor_class.new(document, self)
end

Public Instance Methods

on_dependency_resolve(&handler) click to toggle source
# File lib/graphql/static_validation/validation_context.rb, line 36
def on_dependency_resolve(&handler)
  @on_dependency_resolve_handlers << handler
end
schema_directives() click to toggle source
# File lib/graphql/static_validation/validation_context.rb, line 48
def schema_directives
  @schema_directives ||= schema.directives
end
too_many_errors?() click to toggle source
# File lib/graphql/static_validation/validation_context.rb, line 44
def too_many_errors?
  @errors.length >= @max_errors
end
validate_literal(ast_value, type) click to toggle source
# File lib/graphql/static_validation/validation_context.rb, line 40
def validate_literal(ast_value, type)
  @literal_validator.validate(ast_value, type)
end