Sha256: 655a13856076a20b54b5d0b1a8fcaeae4202a01e1c5e56933d46e136f196a2cc
Contents?: true
Size: 1.37 KB
Versions: 5
Compression:
Stored size: 1.37 KB
Contents
# frozen_string_literal: true module GraphQL module Introspection class EntryPoints < Introspection::BaseObject field :__schema, GraphQL::Schema::LateBoundType.new("__Schema"), "This GraphQL schema", null: false field :__type, GraphQL::Schema::LateBoundType.new("__Type"), "A type in the GraphQL system", null: true do argument :name, String, required: true end def __schema # Apply wrapping manually since this field isn't wrapped by instrumentation schema = @context.query.schema schema_type = schema.introspection_system.schema_type schema_type.metadata[:type_class].authorized_new(schema, @context) end def __type(name:) return unless context.warden.reachable_type?(name) type = context.warden.get_type(name) if type && context.interpreter? type = type.metadata[:type_class] || raise("Invariant: interpreter requires class-based type for #{name}") end # The interpreter provides this wrapping, other execution doesnt, so support both. if type && !context.interpreter? # Apply wrapping manually since this field isn't wrapped by instrumentation type_type = context.schema.introspection_system.type_type type = type_type.metadata[:type_class].authorized_new(type, context) end type end end end end
Version data entries
5 entries across 5 versions & 1 rubygems