Sha256: 8b66e042ea9b951921711132919a9aaa17b386dcbc6f691ef58da75fc6690e53

Contents?: true

Size: 1.16 KB

Versions: 7

Compression:

Stored size: 1.16 KB

Contents

# frozen_string_literal: true

module GraphQL
  module Stitching
    # Builds hidden selection fields added by stitiching code,
    # used to request operational data about resolved objects.
    class ExportSelection
      EXPORT_PREFIX = "_export_"

      class << self
        @typename_node = nil

        def key?(name)
          return false unless name

          name.start_with?(EXPORT_PREFIX)
        end

        def key(name)
          "#{EXPORT_PREFIX}#{name}"
        end

        # The argument assigning Field.alias changed from
        # a generic `alias` hash key to a structured `field_alias` kwarg.
        # See https://github.com/rmosolgo/graphql-ruby/pull/4718
        FIELD_ALIAS_KWARG = !GraphQL::Language::Nodes::Field.new(field_alias: "a").alias.nil?

        def key_node(field_name)
          if FIELD_ALIAS_KWARG
            GraphQL::Language::Nodes::Field.new(field_alias: key(field_name), name: field_name)
          else
            GraphQL::Language::Nodes::Field.new(alias: key(field_name), name: field_name)
          end
        end

        def typename_node
          @typename_node ||= key_node("__typename")
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
graphql-stitching-1.3.0 lib/graphql/stitching/export_selection.rb
graphql-stitching-1.2.5 lib/graphql/stitching/export_selection.rb
graphql-stitching-1.2.4 lib/graphql/stitching/export_selection.rb
graphql-stitching-1.2.3 lib/graphql/stitching/export_selection.rb
graphql-stitching-1.2.2 lib/graphql/stitching/export_selection.rb
graphql-stitching-1.2.1 lib/graphql/stitching/export_selection.rb
graphql-stitching-1.2.0 lib/graphql/stitching/export_selection.rb