Sha256: c8725c25299e3f523765c2d8c2038cb71c9d14ff312d16cd6495965a67e86025
Contents?: true
Size: 1.37 KB
Versions: 53
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.types["__Schema"] schema_type.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.is_a?(Module) type = type.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.types["__Type"] type = type_type.type_class.authorized_new(type, context) end type end end end end
Version data entries
53 entries across 53 versions & 1 rubygems