Sha256: 13755f161725e5104b3403a73fb6de8353a4ff6102a1dbc95c08f7a7270ff77e
Contents?: true
Size: 768 Bytes
Versions: 3
Compression:
Stored size: 768 Bytes
Contents
class GraphQL::StaticValidation::ComplexityValidator include GraphQL::StaticValidation::Message::MessageHelper def initialize(max_fields:, list_multiplier:) @max_fields = max_fields @list_multiplier = list_multiplier end def validate(context) visitor = context.visitor complexity = 0 visitor[GraphQL::Language::Nodes::Field] << -> (node, parent) { field_type = field_definition.type if field_type.kind.list? complexity += list_multiplier else complexity += 1 end } visitor[GraphQL::Language::Nodes::Document].exit << -> (node, parent) { if complexity > @max_fields context.errors << message("This query is too complex. Request fewer fields.", node) end } end end
Version data entries
3 entries across 3 versions & 1 rubygems