Sha256: 114843a2880eccbbe6be1024f63abc105fec54856d8de09c1b0e8c9ad6cacb7c
Contents?: true
Size: 969 Bytes
Versions: 20
Compression:
Stored size: 969 Bytes
Contents
module GraphQL module StaticValidation class FragmentsAreOnCompositeTypes include GraphQL::StaticValidation::Message::MessageHelper HAS_TYPE_CONDITION = [ GraphQL::Language::Nodes::FragmentDefinition, GraphQL::Language::Nodes::InlineFragment, ] def validate(context) HAS_TYPE_CONDITION.each do |node_class| context.visitor[node_class] << -> (node, parent) { validate_type_is_composite(node, context) } end end private def validate_type_is_composite(node, context) type_name = node.type return unless type_name type_def = context.schema.types[type_name] if type_def.nil? || !type_def.kind.composite? context.errors << message("Invalid fragment on type #{type_name} (must be Union, Interface or Object)", node, context: context) GraphQL::Language::Visitor::SKIP end end end end end
Version data entries
20 entries across 20 versions & 1 rubygems