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.
Attributes
Public Class Methods
# File lib/graphql/static_validation/validation_context.rb, line 22 def initialize(query, visitor_class, max_errors) @query = query @types = query.types # TODO update migrated callers to use this accessor @schema = query.schema @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
# File lib/graphql/static_validation/validation_context.rb, line 54 def did_you_mean_suggestion(name, options) if did_you_mean = schema.did_you_mean suggestions = did_you_mean.const_get(:SpellChecker).new(dictionary: options).correct(name) case suggestions.size when 0 "" when 1 " (Did you mean `#{suggestions.first}`?)" else last_sugg = suggestions.pop " (Did you mean #{suggestions.map {|s| "`#{s}`"}.join(", ")} or `#{last_sugg}`?)" end end end
# File lib/graphql/static_validation/validation_context.rb, line 38 def on_dependency_resolve(&handler) @on_dependency_resolve_handlers << handler end
Source
# File lib/graphql/static_validation/validation_context.rb, line 50 def schema_directives @schema_directives ||= schema.directives end
Source
# File lib/graphql/static_validation/validation_context.rb, line 46 def too_many_errors? @errors.length >= @max_errors end
# File lib/graphql/static_validation/validation_context.rb, line 42 def validate_literal(ast_value, type) @literal_validator.validate(ast_value, type) end