Sha256: be779e84417cfac4b17f16632370a59ee220709e6a62786c29b0951e786b5e62

Contents?: true

Size: 1.87 KB

Versions: 14

Compression:

Stored size: 1.87 KB

Contents

# frozen_string_literal: true
module GraphQL
  module StaticValidation
    class NoDefinitionsArePresent
      include GraphQL::StaticValidation::Message::MessageHelper

      def validate(context)
        schema_definition_nodes = []
        register_node = ->(node, _p) {
          schema_definition_nodes << node
          GraphQL::Language::Visitor::SKIP
        }

        visitor = context.visitor

        visitor[GraphQL::Language::Nodes::DirectiveDefinition] << register_node
        visitor[GraphQL::Language::Nodes::SchemaDefinition] << register_node
        visitor[GraphQL::Language::Nodes::ScalarTypeDefinition] << register_node
        visitor[GraphQL::Language::Nodes::ObjectTypeDefinition] << register_node
        visitor[GraphQL::Language::Nodes::InputObjectTypeDefinition] << register_node
        visitor[GraphQL::Language::Nodes::InterfaceTypeDefinition] << register_node
        visitor[GraphQL::Language::Nodes::UnionTypeDefinition] << register_node
        visitor[GraphQL::Language::Nodes::EnumTypeDefinition] << register_node

        visitor[GraphQL::Language::Nodes::SchemaExtension] << register_node
        visitor[GraphQL::Language::Nodes::ScalarTypeExtension] << register_node
        visitor[GraphQL::Language::Nodes::ObjectTypeExtension] << register_node
        visitor[GraphQL::Language::Nodes::InputObjectTypeExtension] << register_node
        visitor[GraphQL::Language::Nodes::InterfaceTypeExtension] << register_node
        visitor[GraphQL::Language::Nodes::UnionTypeExtension] << register_node
        visitor[GraphQL::Language::Nodes::EnumTypeExtension] << register_node

        visitor[GraphQL::Language::Nodes::Document].leave << ->(node, _p) {
          if schema_definition_nodes.any?
            context.errors << message(%|Query cannot contain schema definitions|, schema_definition_nodes, context: context)
          end
        }
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
graphql-1.8.18 lib/graphql/static_validation/rules/no_definitions_are_present.rb
graphql-1.8.17 lib/graphql/static_validation/rules/no_definitions_are_present.rb
graphql-1.8.16 lib/graphql/static_validation/rules/no_definitions_are_present.rb
graphql-1.8.15 lib/graphql/static_validation/rules/no_definitions_are_present.rb
graphql-1.8.14 lib/graphql/static_validation/rules/no_definitions_are_present.rb
graphql-1.8.13 lib/graphql/static_validation/rules/no_definitions_are_present.rb
graphql-1.8.12 lib/graphql/static_validation/rules/no_definitions_are_present.rb
graphql-1.8.11 lib/graphql/static_validation/rules/no_definitions_are_present.rb
graphql-1.8.10 lib/graphql/static_validation/rules/no_definitions_are_present.rb
graphql-1.8.9 lib/graphql/static_validation/rules/no_definitions_are_present.rb
graphql-1.8.8 lib/graphql/static_validation/rules/no_definitions_are_present.rb
graphql-1.8.7 lib/graphql/static_validation/rules/no_definitions_are_present.rb
graphql-1.8.6 lib/graphql/static_validation/rules/no_definitions_are_present.rb
graphql-1.8.5 lib/graphql/static_validation/rules/no_definitions_are_present.rb