graphql 1.13.14 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of graphql might be problematic. Click here for more details.
- checksums.yaml +4 -4
 - data/lib/graphql/analysis/ast/query_complexity.rb +1 -1
 - data/lib/graphql/analysis/ast/query_depth.rb +0 -1
 - data/lib/graphql/analysis/ast/visitor.rb +1 -1
 - data/lib/graphql/analysis/ast.rb +0 -10
 - data/lib/graphql/analysis.rb +0 -7
 - data/lib/graphql/backtrace/table.rb +0 -18
 - data/lib/graphql/backtrace/tracer.rb +1 -2
 - data/lib/graphql/backtrace.rb +2 -8
 - data/lib/graphql/dig.rb +1 -1
 - data/lib/graphql/execution/errors.rb +1 -9
 - data/lib/graphql/execution/interpreter/runtime.rb +2 -9
 - data/lib/graphql/execution/interpreter.rb +0 -22
 - data/lib/graphql/execution/lazy.rb +1 -1
 - data/lib/graphql/execution/lookahead.rb +6 -13
 - data/lib/graphql/execution/multiplex.rb +50 -107
 - data/lib/graphql/execution.rb +11 -3
 - data/lib/graphql/introspection/dynamic_fields.rb +3 -8
 - data/lib/graphql/introspection/entry_points.rb +2 -15
 - data/lib/graphql/language/document_from_schema_definition.rb +0 -17
 - data/lib/graphql/pagination/connections.rb +2 -28
 - data/lib/graphql/query/context.rb +1 -185
 - data/lib/graphql/query/literal_input.rb +8 -13
 - data/lib/graphql/query/validation_pipeline.rb +8 -37
 - data/lib/graphql/query/variables.rb +22 -18
 - data/lib/graphql/query.rb +5 -35
 - data/lib/graphql/railtie.rb +0 -104
 - data/lib/graphql/relay/range_add.rb +0 -4
 - data/lib/graphql/relay.rb +0 -15
 - data/lib/graphql/schema/addition.rb +1 -8
 - data/lib/graphql/schema/argument.rb +1 -25
 - data/lib/graphql/schema/build_from_definition.rb +0 -1
 - data/lib/graphql/schema/directive.rb +0 -21
 - data/lib/graphql/schema/enum.rb +1 -18
 - data/lib/graphql/schema/enum_value.rb +0 -22
 - data/lib/graphql/schema/field.rb +2 -185
 - data/lib/graphql/schema/input_object.rb +9 -56
 - data/lib/graphql/schema/interface.rb +0 -25
 - data/lib/graphql/schema/introspection_system.rb +3 -8
 - data/lib/graphql/schema/late_bound_type.rb +2 -2
 - data/lib/graphql/schema/list.rb +0 -6
 - data/lib/graphql/schema/loader.rb +0 -1
 - data/lib/graphql/schema/member/base_dsl_methods.rb +0 -5
 - data/lib/graphql/schema/member/build_type.rb +4 -6
 - data/lib/graphql/schema/member/has_arguments.rb +14 -18
 - data/lib/graphql/schema/member/has_fields.rb +2 -2
 - data/lib/graphql/schema/member/has_interfaces.rb +0 -2
 - data/lib/graphql/schema/member.rb +0 -6
 - data/lib/graphql/schema/mutation.rb +0 -9
 - data/lib/graphql/schema/non_null.rb +1 -7
 - data/lib/graphql/schema/object.rb +0 -40
 - data/lib/graphql/schema/relay_classic_mutation.rb +17 -28
 - data/lib/graphql/schema/scalar.rb +0 -15
 - data/lib/graphql/schema/union.rb +0 -16
 - data/lib/graphql/schema/warden.rb +1 -1
 - data/lib/graphql/schema/wrapper.rb +0 -5
 - data/lib/graphql/schema.rb +106 -945
 - data/lib/graphql/static_validation/base_visitor.rb +4 -21
 - data/lib/graphql/static_validation/rules/directives_are_in_valid_locations.rb +12 -12
 - data/lib/graphql/static_validation/validator.rb +2 -24
 - data/lib/graphql/static_validation.rb +0 -2
 - data/lib/graphql/subscriptions/default_subscription_resolve_extension.rb +38 -1
 - data/lib/graphql/subscriptions/event.rb +1 -1
 - data/lib/graphql/subscriptions/instrumentation.rb +0 -51
 - data/lib/graphql/subscriptions.rb +4 -13
 - data/lib/graphql/tracing/data_dog_tracing.rb +2 -19
 - data/lib/graphql/tracing/platform_tracing.rb +4 -31
 - data/lib/graphql/tracing.rb +0 -2
 - data/lib/graphql/types/relay/connection_behaviors.rb +2 -6
 - data/lib/graphql/types/relay/default_relay.rb +0 -10
 - data/lib/graphql/types/relay/node_behaviors.rb +5 -1
 - data/lib/graphql/types/relay.rb +0 -2
 - data/lib/graphql/version.rb +1 -1
 - data/lib/graphql.rb +1 -65
 - metadata +6 -132
 - data/lib/graphql/analysis/analyze_query.rb +0 -98
 - data/lib/graphql/analysis/field_usage.rb +0 -45
 - data/lib/graphql/analysis/max_query_complexity.rb +0 -26
 - data/lib/graphql/analysis/max_query_depth.rb +0 -26
 - data/lib/graphql/analysis/query_complexity.rb +0 -88
 - data/lib/graphql/analysis/query_depth.rb +0 -43
 - data/lib/graphql/analysis/reducer_state.rb +0 -48
 - data/lib/graphql/argument.rb +0 -131
 - data/lib/graphql/authorization.rb +0 -82
 - data/lib/graphql/backtrace/legacy_tracer.rb +0 -56
 - data/lib/graphql/backwards_compatibility.rb +0 -61
 - data/lib/graphql/base_type.rb +0 -232
 - data/lib/graphql/boolean_type.rb +0 -2
 - data/lib/graphql/compatibility/execution_specification/counter_schema.rb +0 -53
 - data/lib/graphql/compatibility/execution_specification/specification_schema.rb +0 -200
 - data/lib/graphql/compatibility/execution_specification.rb +0 -436
 - data/lib/graphql/compatibility/lazy_execution_specification/lazy_schema.rb +0 -111
 - data/lib/graphql/compatibility/lazy_execution_specification.rb +0 -215
 - data/lib/graphql/compatibility/query_parser_specification/parse_error_specification.rb +0 -87
 - data/lib/graphql/compatibility/query_parser_specification/query_assertions.rb +0 -79
 - data/lib/graphql/compatibility/query_parser_specification.rb +0 -266
 - data/lib/graphql/compatibility/schema_parser_specification.rb +0 -682
 - data/lib/graphql/compatibility.rb +0 -5
 - data/lib/graphql/define/assign_argument.rb +0 -12
 - data/lib/graphql/define/assign_connection.rb +0 -13
 - data/lib/graphql/define/assign_enum_value.rb +0 -18
 - data/lib/graphql/define/assign_global_id_field.rb +0 -11
 - data/lib/graphql/define/assign_mutation_function.rb +0 -34
 - data/lib/graphql/define/assign_object_field.rb +0 -42
 - data/lib/graphql/define/defined_object_proxy.rb +0 -53
 - data/lib/graphql/define/instance_definable.rb +0 -255
 - data/lib/graphql/define/no_definition_error.rb +0 -7
 - data/lib/graphql/define/non_null_with_bang.rb +0 -16
 - data/lib/graphql/define/type_definer.rb +0 -31
 - data/lib/graphql/define.rb +0 -31
 - data/lib/graphql/deprecated_dsl.rb +0 -55
 - data/lib/graphql/directive/deprecated_directive.rb +0 -2
 - data/lib/graphql/directive/include_directive.rb +0 -2
 - data/lib/graphql/directive/skip_directive.rb +0 -2
 - data/lib/graphql/directive.rb +0 -107
 - data/lib/graphql/enum_type.rb +0 -133
 - data/lib/graphql/execution/execute.rb +0 -333
 - data/lib/graphql/execution/flatten.rb +0 -40
 - data/lib/graphql/execution/typecast.rb +0 -50
 - data/lib/graphql/field/resolve.rb +0 -59
 - data/lib/graphql/field.rb +0 -226
 - data/lib/graphql/float_type.rb +0 -2
 - data/lib/graphql/function.rb +0 -128
 - data/lib/graphql/id_type.rb +0 -2
 - data/lib/graphql/input_object_type.rb +0 -138
 - data/lib/graphql/int_type.rb +0 -2
 - data/lib/graphql/interface_type.rb +0 -72
 - data/lib/graphql/internal_representation/document.rb +0 -27
 - data/lib/graphql/internal_representation/node.rb +0 -206
 - data/lib/graphql/internal_representation/print.rb +0 -51
 - data/lib/graphql/internal_representation/rewrite.rb +0 -184
 - data/lib/graphql/internal_representation/scope.rb +0 -88
 - data/lib/graphql/internal_representation/visit.rb +0 -36
 - data/lib/graphql/internal_representation.rb +0 -7
 - data/lib/graphql/list_type.rb +0 -80
 - data/lib/graphql/non_null_type.rb +0 -71
 - data/lib/graphql/object_type.rb +0 -130
 - data/lib/graphql/query/arguments.rb +0 -189
 - data/lib/graphql/query/arguments_cache.rb +0 -24
 - data/lib/graphql/query/executor.rb +0 -52
 - data/lib/graphql/query/serial_execution/field_resolution.rb +0 -92
 - data/lib/graphql/query/serial_execution/operation_resolution.rb +0 -19
 - data/lib/graphql/query/serial_execution/selection_resolution.rb +0 -23
 - data/lib/graphql/query/serial_execution/value_resolution.rb +0 -87
 - data/lib/graphql/query/serial_execution.rb +0 -40
 - data/lib/graphql/relay/array_connection.rb +0 -83
 - data/lib/graphql/relay/base_connection.rb +0 -189
 - data/lib/graphql/relay/connection_instrumentation.rb +0 -54
 - data/lib/graphql/relay/connection_resolve.rb +0 -43
 - data/lib/graphql/relay/connection_type.rb +0 -54
 - data/lib/graphql/relay/edge.rb +0 -27
 - data/lib/graphql/relay/edge_type.rb +0 -19
 - data/lib/graphql/relay/edges_instrumentation.rb +0 -39
 - data/lib/graphql/relay/global_id_resolve.rb +0 -17
 - data/lib/graphql/relay/mongo_relation_connection.rb +0 -50
 - data/lib/graphql/relay/mutation/instrumentation.rb +0 -23
 - data/lib/graphql/relay/mutation/resolve.rb +0 -56
 - data/lib/graphql/relay/mutation/result.rb +0 -38
 - data/lib/graphql/relay/mutation.rb +0 -106
 - data/lib/graphql/relay/node.rb +0 -39
 - data/lib/graphql/relay/page_info.rb +0 -7
 - data/lib/graphql/relay/relation_connection.rb +0 -188
 - data/lib/graphql/relay/type_extensions.rb +0 -32
 - data/lib/graphql/scalar_type.rb +0 -91
 - data/lib/graphql/schema/catchall_middleware.rb +0 -35
 - data/lib/graphql/schema/default_parse_error.rb +0 -10
 - data/lib/graphql/schema/default_type_error.rb +0 -17
 - data/lib/graphql/schema/member/accepts_definition.rb +0 -164
 - data/lib/graphql/schema/member/cached_graphql_definition.rb +0 -58
 - data/lib/graphql/schema/member/instrumentation.rb +0 -131
 - data/lib/graphql/schema/middleware_chain.rb +0 -82
 - data/lib/graphql/schema/possible_types.rb +0 -44
 - data/lib/graphql/schema/rescue_middleware.rb +0 -60
 - data/lib/graphql/schema/timeout_middleware.rb +0 -88
 - data/lib/graphql/schema/traversal.rb +0 -228
 - data/lib/graphql/schema/validation.rb +0 -313
 - data/lib/graphql/static_validation/default_visitor.rb +0 -15
 - data/lib/graphql/static_validation/no_validate_visitor.rb +0 -10
 - data/lib/graphql/string_type.rb +0 -2
 - data/lib/graphql/subscriptions/subscription_root.rb +0 -76
 - data/lib/graphql/tracing/opentelemetry_tracing.rb +0 -101
 - data/lib/graphql/tracing/skylight_tracing.rb +0 -70
 - data/lib/graphql/types/relay/node_field.rb +0 -24
 - data/lib/graphql/types/relay/nodes_field.rb +0 -43
 - data/lib/graphql/union_type.rb +0 -115
 - data/lib/graphql/upgrader/member.rb +0 -937
 - data/lib/graphql/upgrader/schema.rb +0 -38
 
| 
         @@ -1,56 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # frozen_string_literal: true
         
     | 
| 
       2 
     | 
    
         
            -
            module GraphQL
         
     | 
| 
       3 
     | 
    
         
            -
              module Relay
         
     | 
| 
       4 
     | 
    
         
            -
                class Mutation
         
     | 
| 
       5 
     | 
    
         
            -
                  # Wrap a user-provided resolve function,
         
     | 
| 
       6 
     | 
    
         
            -
                  # wrapping the returned value in a {Mutation::Result}.
         
     | 
| 
       7 
     | 
    
         
            -
                  # Also, pass the `clientMutationId` to that result object.
         
     | 
| 
       8 
     | 
    
         
            -
                  # @api private
         
     | 
| 
       9 
     | 
    
         
            -
                  class Resolve
         
     | 
| 
       10 
     | 
    
         
            -
                    def initialize(mutation, resolve)
         
     | 
| 
       11 
     | 
    
         
            -
                      @mutation = mutation
         
     | 
| 
       12 
     | 
    
         
            -
                      @resolve = resolve
         
     | 
| 
       13 
     | 
    
         
            -
                      @wrap_result = mutation.is_a?(GraphQL::Relay::Mutation) && mutation.has_generated_return_type?
         
     | 
| 
       14 
     | 
    
         
            -
                      @class_based = mutation.is_a?(Class)
         
     | 
| 
       15 
     | 
    
         
            -
                    end
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
                    def call(obj, args, ctx)
         
     | 
| 
       18 
     | 
    
         
            -
                      mutation_result = begin
         
     | 
| 
       19 
     | 
    
         
            -
                        @resolve.call(obj, args[:input], ctx)
         
     | 
| 
       20 
     | 
    
         
            -
                      rescue GraphQL::ExecutionError => err
         
     | 
| 
       21 
     | 
    
         
            -
                        err
         
     | 
| 
       22 
     | 
    
         
            -
                      end
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
                      ctx.schema.after_lazy(mutation_result) do |res|
         
     | 
| 
       25 
     | 
    
         
            -
                        build_result(res, args, ctx)
         
     | 
| 
       26 
     | 
    
         
            -
                      end
         
     | 
| 
       27 
     | 
    
         
            -
                    end
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
                    private
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
                    def build_result(mutation_result, args, ctx)
         
     | 
| 
       32 
     | 
    
         
            -
                      if mutation_result.is_a?(GraphQL::ExecutionError)
         
     | 
| 
       33 
     | 
    
         
            -
                        ctx.add_error(mutation_result)
         
     | 
| 
       34 
     | 
    
         
            -
                        mutation_result = nil
         
     | 
| 
       35 
     | 
    
         
            -
                      end
         
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
                      if mutation_result.nil?
         
     | 
| 
       38 
     | 
    
         
            -
                        nil
         
     | 
| 
       39 
     | 
    
         
            -
                      elsif @wrap_result
         
     | 
| 
       40 
     | 
    
         
            -
                        if mutation_result && !mutation_result.is_a?(Hash)
         
     | 
| 
       41 
     | 
    
         
            -
                          raise StandardError, "Expected `#{mutation_result}` to be a Hash."\
         
     | 
| 
       42 
     | 
    
         
            -
                            " Return a hash when using `return_field` or specify a custom `return_type`."
         
     | 
| 
       43 
     | 
    
         
            -
                        end
         
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
                        @mutation.result_class.new(client_mutation_id: args[:input][:clientMutationId], result: mutation_result)
         
     | 
| 
       46 
     | 
    
         
            -
                      elsif @class_based
         
     | 
| 
       47 
     | 
    
         
            -
                        mutation_result[:client_mutation_id] = args[:input][:client_mutation_id]
         
     | 
| 
       48 
     | 
    
         
            -
                        mutation_result
         
     | 
| 
       49 
     | 
    
         
            -
                      else
         
     | 
| 
       50 
     | 
    
         
            -
                        mutation_result
         
     | 
| 
       51 
     | 
    
         
            -
                      end
         
     | 
| 
       52 
     | 
    
         
            -
                    end
         
     | 
| 
       53 
     | 
    
         
            -
                  end
         
     | 
| 
       54 
     | 
    
         
            -
                end
         
     | 
| 
       55 
     | 
    
         
            -
              end
         
     | 
| 
       56 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,38 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # frozen_string_literal: true
         
     | 
| 
       2 
     | 
    
         
            -
            module GraphQL
         
     | 
| 
       3 
     | 
    
         
            -
              module Relay
         
     | 
| 
       4 
     | 
    
         
            -
                class Mutation
         
     | 
| 
       5 
     | 
    
         
            -
                  # Use this when the mutation's return type was generated from `return_field`s.
         
     | 
| 
       6 
     | 
    
         
            -
                  # It delegates field lookups to the hash returned from `resolve`.
         
     | 
| 
       7 
     | 
    
         
            -
                  # @api private
         
     | 
| 
       8 
     | 
    
         
            -
                  class Result
         
     | 
| 
       9 
     | 
    
         
            -
                    attr_reader :client_mutation_id
         
     | 
| 
       10 
     | 
    
         
            -
                    def initialize(client_mutation_id:, result:)
         
     | 
| 
       11 
     | 
    
         
            -
                      @client_mutation_id = client_mutation_id
         
     | 
| 
       12 
     | 
    
         
            -
                      result && result.each do |key, value|
         
     | 
| 
       13 
     | 
    
         
            -
                        self.public_send("#{key}=", value)
         
     | 
| 
       14 
     | 
    
         
            -
                      end
         
     | 
| 
       15 
     | 
    
         
            -
                    end
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
                    class << self
         
     | 
| 
       18 
     | 
    
         
            -
                      attr_accessor :mutation
         
     | 
| 
       19 
     | 
    
         
            -
                    end
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
                    # Build a subclass whose instances have a method
         
     | 
| 
       22 
     | 
    
         
            -
                    # for each of `mutation_defn`'s `return_field`s
         
     | 
| 
       23 
     | 
    
         
            -
                    # @param mutation_defn [GraphQL::Relay::Mutation]
         
     | 
| 
       24 
     | 
    
         
            -
                    # @return [Class]
         
     | 
| 
       25 
     | 
    
         
            -
                    def self.define_subclass(mutation_defn)
         
     | 
| 
       26 
     | 
    
         
            -
                      subclass = Class.new(self) do
         
     | 
| 
       27 
     | 
    
         
            -
                        mutation_result_methods = mutation_defn.return_type.all_fields.map do |f|
         
     | 
| 
       28 
     | 
    
         
            -
                          f.property || f.name
         
     | 
| 
       29 
     | 
    
         
            -
                        end
         
     | 
| 
       30 
     | 
    
         
            -
                        attr_accessor(*mutation_result_methods)
         
     | 
| 
       31 
     | 
    
         
            -
                        self.mutation = mutation_defn
         
     | 
| 
       32 
     | 
    
         
            -
                      end
         
     | 
| 
       33 
     | 
    
         
            -
                      subclass
         
     | 
| 
       34 
     | 
    
         
            -
                    end
         
     | 
| 
       35 
     | 
    
         
            -
                  end
         
     | 
| 
       36 
     | 
    
         
            -
                end
         
     | 
| 
       37 
     | 
    
         
            -
              end
         
     | 
| 
       38 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,106 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # frozen_string_literal: true
         
     | 
| 
       2 
     | 
    
         
            -
            require "graphql/relay/mutation/instrumentation"
         
     | 
| 
       3 
     | 
    
         
            -
            require "graphql/relay/mutation/resolve"
         
     | 
| 
       4 
     | 
    
         
            -
            require "graphql/relay/mutation/result"
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
            module GraphQL
         
     | 
| 
       7 
     | 
    
         
            -
              module Relay
         
     | 
| 
       8 
     | 
    
         
            -
                # @api deprecated
         
     | 
| 
       9 
     | 
    
         
            -
                class Mutation
         
     | 
| 
       10 
     | 
    
         
            -
                  include GraphQL::Define::InstanceDefinable
         
     | 
| 
       11 
     | 
    
         
            -
                  deprecated_accepts_definitions(
         
     | 
| 
       12 
     | 
    
         
            -
                    :name, :description, :resolve,
         
     | 
| 
       13 
     | 
    
         
            -
                    :return_type,
         
     | 
| 
       14 
     | 
    
         
            -
                    :return_interfaces,
         
     | 
| 
       15 
     | 
    
         
            -
                    input_field: GraphQL::Define::AssignArgument,
         
     | 
| 
       16 
     | 
    
         
            -
                    return_field: GraphQL::Define::AssignObjectField,
         
     | 
| 
       17 
     | 
    
         
            -
                    function: GraphQL::Define::AssignMutationFunction,
         
     | 
| 
       18 
     | 
    
         
            -
                  )
         
     | 
| 
       19 
     | 
    
         
            -
                  attr_accessor :name, :description, :fields, :arguments
         
     | 
| 
       20 
     | 
    
         
            -
                  attr_writer :return_type, :return_interfaces
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
                  ensure_defined(
         
     | 
| 
       23 
     | 
    
         
            -
                    :input_fields, :return_fields, :name, :description,
         
     | 
| 
       24 
     | 
    
         
            -
                    :fields, :arguments, :return_type,
         
     | 
| 
       25 
     | 
    
         
            -
                    :return_interfaces, :resolve=,
         
     | 
| 
       26 
     | 
    
         
            -
                    :field, :result_class, :input_type
         
     | 
| 
       27 
     | 
    
         
            -
                  )
         
     | 
| 
       28 
     | 
    
         
            -
                  # For backwards compat, but do we need this separate API?
         
     | 
| 
       29 
     | 
    
         
            -
                  alias :return_fields :fields
         
     | 
| 
       30 
     | 
    
         
            -
                  alias :input_fields :arguments
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
                  def initialize
         
     | 
| 
       33 
     | 
    
         
            -
                    GraphQL::Deprecation.warn "GraphQL::Relay::Mutation will be removed from GraphQL-Ruby 2.0, use GraphQL::Schema::RelayClassicMutation instead: https://graphql-ruby.org/mutations/mutation_classes"
         
     | 
| 
       34 
     | 
    
         
            -
                    @fields = {}
         
     | 
| 
       35 
     | 
    
         
            -
                    @arguments = {}
         
     | 
| 
       36 
     | 
    
         
            -
                    @has_generated_return_type = false
         
     | 
| 
       37 
     | 
    
         
            -
                  end
         
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
                  def has_generated_return_type?
         
     | 
| 
       40 
     | 
    
         
            -
                    # Trigger the generation of the return type, if it is dynamically generated:
         
     | 
| 
       41 
     | 
    
         
            -
                    return_type
         
     | 
| 
       42 
     | 
    
         
            -
                    @has_generated_return_type
         
     | 
| 
       43 
     | 
    
         
            -
                  end
         
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
                  def resolve=(new_resolve_proc)
         
     | 
| 
       46 
     | 
    
         
            -
                    @resolve_proc = new_resolve_proc
         
     | 
| 
       47 
     | 
    
         
            -
                  end
         
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
                  def field
         
     | 
| 
       50 
     | 
    
         
            -
                    @field ||= begin
         
     | 
| 
       51 
     | 
    
         
            -
                      relay_mutation = self
         
     | 
| 
       52 
     | 
    
         
            -
                      field_resolve_proc = @resolve_proc
         
     | 
| 
       53 
     | 
    
         
            -
                      GraphQL::Field.define do
         
     | 
| 
       54 
     | 
    
         
            -
                        type(relay_mutation.return_type)
         
     | 
| 
       55 
     | 
    
         
            -
                        description(relay_mutation.description)
         
     | 
| 
       56 
     | 
    
         
            -
                        argument :input, !relay_mutation.input_type
         
     | 
| 
       57 
     | 
    
         
            -
                        resolve(field_resolve_proc)
         
     | 
| 
       58 
     | 
    
         
            -
                        mutation(relay_mutation)
         
     | 
| 
       59 
     | 
    
         
            -
                      end
         
     | 
| 
       60 
     | 
    
         
            -
                    end
         
     | 
| 
       61 
     | 
    
         
            -
                  end
         
     | 
| 
       62 
     | 
    
         
            -
             
     | 
| 
       63 
     | 
    
         
            -
                  def return_interfaces
         
     | 
| 
       64 
     | 
    
         
            -
                    @return_interfaces ||= []
         
     | 
| 
       65 
     | 
    
         
            -
                  end
         
     | 
| 
       66 
     | 
    
         
            -
             
     | 
| 
       67 
     | 
    
         
            -
                  def return_type
         
     | 
| 
       68 
     | 
    
         
            -
                    @return_type ||= begin
         
     | 
| 
       69 
     | 
    
         
            -
                      @has_generated_return_type = true
         
     | 
| 
       70 
     | 
    
         
            -
                      relay_mutation = self
         
     | 
| 
       71 
     | 
    
         
            -
                      GraphQL::ObjectType.define do
         
     | 
| 
       72 
     | 
    
         
            -
                        name("#{relay_mutation.name}Payload")
         
     | 
| 
       73 
     | 
    
         
            -
                        description("Autogenerated return type of #{relay_mutation.name}")
         
     | 
| 
       74 
     | 
    
         
            -
                        field :clientMutationId, types.String, "A unique identifier for the client performing the mutation.", property: :client_mutation_id
         
     | 
| 
       75 
     | 
    
         
            -
                        interfaces relay_mutation.return_interfaces
         
     | 
| 
       76 
     | 
    
         
            -
                        relay_mutation.return_fields.each do |name, field_obj|
         
     | 
| 
       77 
     | 
    
         
            -
                          field name, field: field_obj
         
     | 
| 
       78 
     | 
    
         
            -
                        end
         
     | 
| 
       79 
     | 
    
         
            -
                        mutation(relay_mutation)
         
     | 
| 
       80 
     | 
    
         
            -
                      end
         
     | 
| 
       81 
     | 
    
         
            -
                    end
         
     | 
| 
       82 
     | 
    
         
            -
                  end
         
     | 
| 
       83 
     | 
    
         
            -
             
     | 
| 
       84 
     | 
    
         
            -
                  def input_type
         
     | 
| 
       85 
     | 
    
         
            -
                    @input_type ||= begin
         
     | 
| 
       86 
     | 
    
         
            -
                      relay_mutation = self
         
     | 
| 
       87 
     | 
    
         
            -
                      input_object_type = GraphQL::InputObjectType.define do
         
     | 
| 
       88 
     | 
    
         
            -
                        name("#{relay_mutation.name}Input")
         
     | 
| 
       89 
     | 
    
         
            -
                        description("Autogenerated input type of #{relay_mutation.name}")
         
     | 
| 
       90 
     | 
    
         
            -
                        input_field :clientMutationId, types.String, "A unique identifier for the client performing the mutation."
         
     | 
| 
       91 
     | 
    
         
            -
                        mutation(relay_mutation)
         
     | 
| 
       92 
     | 
    
         
            -
                      end
         
     | 
| 
       93 
     | 
    
         
            -
                      input_fields.each do |name, arg|
         
     | 
| 
       94 
     | 
    
         
            -
                        input_object_type.arguments[name] = arg
         
     | 
| 
       95 
     | 
    
         
            -
                      end
         
     | 
| 
       96 
     | 
    
         
            -
             
     | 
| 
       97 
     | 
    
         
            -
                      input_object_type
         
     | 
| 
       98 
     | 
    
         
            -
                    end
         
     | 
| 
       99 
     | 
    
         
            -
                  end
         
     | 
| 
       100 
     | 
    
         
            -
             
     | 
| 
       101 
     | 
    
         
            -
                  def result_class
         
     | 
| 
       102 
     | 
    
         
            -
                    @result_class ||= Result.define_subclass(self)
         
     | 
| 
       103 
     | 
    
         
            -
                  end
         
     | 
| 
       104 
     | 
    
         
            -
                end
         
     | 
| 
       105 
     | 
    
         
            -
              end
         
     | 
| 
       106 
     | 
    
         
            -
            end
         
     | 
    
        data/lib/graphql/relay/node.rb
    DELETED
    
    | 
         @@ -1,39 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # frozen_string_literal: true
         
     | 
| 
       2 
     | 
    
         
            -
            module GraphQL
         
     | 
| 
       3 
     | 
    
         
            -
              module Relay
         
     | 
| 
       4 
     | 
    
         
            -
                # Helpers for working with Relay-specific Node objects.
         
     | 
| 
       5 
     | 
    
         
            -
                module Node
         
     | 
| 
       6 
     | 
    
         
            -
                  # @return [GraphQL::Field] a field for finding objects by their global ID.
         
     | 
| 
       7 
     | 
    
         
            -
                  def self.field(**kwargs, &block)
         
     | 
| 
       8 
     | 
    
         
            -
                    GraphQL::Deprecation.warn "GraphQL::Relay::Node.field will be removed from GraphQL-Ruby 2.0, use GraphQL::Types::Relay::NodeField instead"
         
     | 
| 
       9 
     | 
    
         
            -
                    # We have to define it fresh each time because
         
     | 
| 
       10 
     | 
    
         
            -
                    # its name will be modified and its description
         
     | 
| 
       11 
     | 
    
         
            -
                    # _may_ be modified.
         
     | 
| 
       12 
     | 
    
         
            -
                    field = GraphQL::Types::Relay::NodeField.graphql_definition
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
                    if kwargs.any? || block
         
     | 
| 
       15 
     | 
    
         
            -
                      field = field.redefine(**kwargs, &block)
         
     | 
| 
       16 
     | 
    
         
            -
                    end
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
                    field
         
     | 
| 
       19 
     | 
    
         
            -
                  end
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
                  def self.plural_field(**kwargs, &block)
         
     | 
| 
       22 
     | 
    
         
            -
                    GraphQL::Deprecation.warn "GraphQL::Relay::Nodes.field will be removed from GraphQL-Ruby 2.0, use GraphQL::Types::Relay::NodesField instead"
         
     | 
| 
       23 
     | 
    
         
            -
                    field = GraphQL::Types::Relay::NodesField.graphql_definition
         
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
                    if kwargs.any? || block
         
     | 
| 
       26 
     | 
    
         
            -
                      field = field.redefine(**kwargs, &block)
         
     | 
| 
       27 
     | 
    
         
            -
                    end
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
                    field
         
     | 
| 
       30 
     | 
    
         
            -
                  end
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
                  # @return [GraphQL::InterfaceType] The interface which all Relay types must implement
         
     | 
| 
       33 
     | 
    
         
            -
                  def self.interface
         
     | 
| 
       34 
     | 
    
         
            -
                    GraphQL::Deprecation.warn "GraphQL::Relay::Node.interface will be removed from GraphQL-Ruby 2.0, use GraphQL::Types::Relay::Node instead"
         
     | 
| 
       35 
     | 
    
         
            -
                    @interface ||= GraphQL::Types::Relay::Node.graphql_definition
         
     | 
| 
       36 
     | 
    
         
            -
                  end
         
     | 
| 
       37 
     | 
    
         
            -
                end
         
     | 
| 
       38 
     | 
    
         
            -
              end
         
     | 
| 
       39 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,188 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # frozen_string_literal: true
         
     | 
| 
       2 
     | 
    
         
            -
            module GraphQL
         
     | 
| 
       3 
     | 
    
         
            -
              module Relay
         
     | 
| 
       4 
     | 
    
         
            -
                # A connection implementation to expose SQL collection objects.
         
     | 
| 
       5 
     | 
    
         
            -
                # It works for:
         
     | 
| 
       6 
     | 
    
         
            -
                # - `ActiveRecord::Relation`
         
     | 
| 
       7 
     | 
    
         
            -
                # - `Sequel::Dataset`
         
     | 
| 
       8 
     | 
    
         
            -
                class RelationConnection < BaseConnection
         
     | 
| 
       9 
     | 
    
         
            -
                  def cursor_from_node(item)
         
     | 
| 
       10 
     | 
    
         
            -
                    item_index = paged_nodes.index(item)
         
     | 
| 
       11 
     | 
    
         
            -
                    if item_index.nil?
         
     | 
| 
       12 
     | 
    
         
            -
                      raise("Can't generate cursor, item not found in connection: #{item}")
         
     | 
| 
       13 
     | 
    
         
            -
                    else
         
     | 
| 
       14 
     | 
    
         
            -
                      offset = item_index + 1 + ((paged_nodes_offset || 0) - (relation_offset(sliced_nodes) || 0))
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
                      if after
         
     | 
| 
       17 
     | 
    
         
            -
                        offset += offset_from_cursor(after)
         
     | 
| 
       18 
     | 
    
         
            -
                      elsif before
         
     | 
| 
       19 
     | 
    
         
            -
                        offset += offset_from_cursor(before) - 1 - sliced_nodes_count
         
     | 
| 
       20 
     | 
    
         
            -
                      end
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
                      encode(offset.to_s)
         
     | 
| 
       23 
     | 
    
         
            -
                    end
         
     | 
| 
       24 
     | 
    
         
            -
                  end
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
                  def has_next_page
         
     | 
| 
       27 
     | 
    
         
            -
                    if first
         
     | 
| 
       28 
     | 
    
         
            -
                      if defined?(ActiveRecord::Relation) && nodes.is_a?(ActiveRecord::Relation)
         
     | 
| 
       29 
     | 
    
         
            -
                        initial_offset = after ? offset_from_cursor(after) : 0
         
     | 
| 
       30 
     | 
    
         
            -
                        return paged_nodes.length >= first && nodes.offset(first + initial_offset).exists?
         
     | 
| 
       31 
     | 
    
         
            -
                      end
         
     | 
| 
       32 
     | 
    
         
            -
                      return paged_nodes.length >= first && sliced_nodes_count > first
         
     | 
| 
       33 
     | 
    
         
            -
                    end
         
     | 
| 
       34 
     | 
    
         
            -
                    if GraphQL::Relay::ConnectionType.bidirectional_pagination && last
         
     | 
| 
       35 
     | 
    
         
            -
                      return sliced_nodes_count >= last
         
     | 
| 
       36 
     | 
    
         
            -
                    end
         
     | 
| 
       37 
     | 
    
         
            -
                    false
         
     | 
| 
       38 
     | 
    
         
            -
                  end
         
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
                  def has_previous_page
         
     | 
| 
       41 
     | 
    
         
            -
                    if last
         
     | 
| 
       42 
     | 
    
         
            -
                      paged_nodes.length >= last && sliced_nodes_count > last
         
     | 
| 
       43 
     | 
    
         
            -
                    elsif GraphQL::Relay::ConnectionType.bidirectional_pagination && after
         
     | 
| 
       44 
     | 
    
         
            -
                      # We've already paginated through the collection a bit,
         
     | 
| 
       45 
     | 
    
         
            -
                      # there are nodes behind us
         
     | 
| 
       46 
     | 
    
         
            -
                      offset_from_cursor(after) > 0
         
     | 
| 
       47 
     | 
    
         
            -
                    else
         
     | 
| 
       48 
     | 
    
         
            -
                      false
         
     | 
| 
       49 
     | 
    
         
            -
                    end
         
     | 
| 
       50 
     | 
    
         
            -
                  end
         
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
                  def first
         
     | 
| 
       53 
     | 
    
         
            -
                    @first ||= begin
         
     | 
| 
       54 
     | 
    
         
            -
                      capped = limit_pagination_argument(arguments[:first], max_page_size)
         
     | 
| 
       55 
     | 
    
         
            -
                      if capped.nil? && last.nil?
         
     | 
| 
       56 
     | 
    
         
            -
                        capped = max_page_size
         
     | 
| 
       57 
     | 
    
         
            -
                      end
         
     | 
| 
       58 
     | 
    
         
            -
                      capped
         
     | 
| 
       59 
     | 
    
         
            -
                    end
         
     | 
| 
       60 
     | 
    
         
            -
                  end
         
     | 
| 
       61 
     | 
    
         
            -
             
     | 
| 
       62 
     | 
    
         
            -
                  def last
         
     | 
| 
       63 
     | 
    
         
            -
                    @last ||= limit_pagination_argument(arguments[:last], max_page_size)
         
     | 
| 
       64 
     | 
    
         
            -
                  end
         
     | 
| 
       65 
     | 
    
         
            -
             
     | 
| 
       66 
     | 
    
         
            -
                  private
         
     | 
| 
       67 
     | 
    
         
            -
             
     | 
| 
       68 
     | 
    
         
            -
                  # apply first / last limit results
         
     | 
| 
       69 
     | 
    
         
            -
                  # @return [Array]
         
     | 
| 
       70 
     | 
    
         
            -
                  def paged_nodes
         
     | 
| 
       71 
     | 
    
         
            -
                    return @paged_nodes if defined? @paged_nodes
         
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
       73 
     | 
    
         
            -
                    items = sliced_nodes
         
     | 
| 
       74 
     | 
    
         
            -
             
     | 
| 
       75 
     | 
    
         
            -
                    if first
         
     | 
| 
       76 
     | 
    
         
            -
                      if relation_limit(items).nil? || relation_limit(items) > first
         
     | 
| 
       77 
     | 
    
         
            -
                        items = items.limit(first)
         
     | 
| 
       78 
     | 
    
         
            -
                      end
         
     | 
| 
       79 
     | 
    
         
            -
                    end
         
     | 
| 
       80 
     | 
    
         
            -
             
     | 
| 
       81 
     | 
    
         
            -
                    if last
         
     | 
| 
       82 
     | 
    
         
            -
                      if relation_limit(items)
         
     | 
| 
       83 
     | 
    
         
            -
                        if last <= relation_limit(items)
         
     | 
| 
       84 
     | 
    
         
            -
                          offset = (relation_offset(items) || 0) + (relation_limit(items) - last)
         
     | 
| 
       85 
     | 
    
         
            -
                          items = items.offset(offset).limit(last)
         
     | 
| 
       86 
     | 
    
         
            -
                        end
         
     | 
| 
       87 
     | 
    
         
            -
                      else
         
     | 
| 
       88 
     | 
    
         
            -
                        slice_count = relation_count(items)
         
     | 
| 
       89 
     | 
    
         
            -
                        offset = (relation_offset(items) || 0) + slice_count - [last, slice_count].min
         
     | 
| 
       90 
     | 
    
         
            -
                        items = items.offset(offset).limit(last)
         
     | 
| 
       91 
     | 
    
         
            -
                      end
         
     | 
| 
       92 
     | 
    
         
            -
                    end
         
     | 
| 
       93 
     | 
    
         
            -
             
     | 
| 
       94 
     | 
    
         
            -
                    if max_page_size && !first && !last
         
     | 
| 
       95 
     | 
    
         
            -
                      if relation_limit(items).nil? || relation_limit(items) > max_page_size
         
     | 
| 
       96 
     | 
    
         
            -
                        items = items.limit(max_page_size)
         
     | 
| 
       97 
     | 
    
         
            -
                      end
         
     | 
| 
       98 
     | 
    
         
            -
                    end
         
     | 
| 
       99 
     | 
    
         
            -
             
     | 
| 
       100 
     | 
    
         
            -
                    # Store this here so we can convert the relation to an Array
         
     | 
| 
       101 
     | 
    
         
            -
                    # (this avoids an extra DB call on Sequel)
         
     | 
| 
       102 
     | 
    
         
            -
                    @paged_nodes_offset = relation_offset(items)
         
     | 
| 
       103 
     | 
    
         
            -
                    @paged_nodes = items.to_a
         
     | 
| 
       104 
     | 
    
         
            -
                  end
         
     | 
| 
       105 
     | 
    
         
            -
             
     | 
| 
       106 
     | 
    
         
            -
                  def paged_nodes_offset
         
     | 
| 
       107 
     | 
    
         
            -
                    paged_nodes && @paged_nodes_offset
         
     | 
| 
       108 
     | 
    
         
            -
                  end
         
     | 
| 
       109 
     | 
    
         
            -
             
     | 
| 
       110 
     | 
    
         
            -
                  def relation_offset(relation)
         
     | 
| 
       111 
     | 
    
         
            -
                    if relation.respond_to?(:offset_value)
         
     | 
| 
       112 
     | 
    
         
            -
                      relation.offset_value
         
     | 
| 
       113 
     | 
    
         
            -
                    else
         
     | 
| 
       114 
     | 
    
         
            -
                      relation.opts[:offset]
         
     | 
| 
       115 
     | 
    
         
            -
                    end
         
     | 
| 
       116 
     | 
    
         
            -
                  end
         
     | 
| 
       117 
     | 
    
         
            -
             
     | 
| 
       118 
     | 
    
         
            -
                  def relation_limit(relation)
         
     | 
| 
       119 
     | 
    
         
            -
                    if relation.respond_to?(:limit_value)
         
     | 
| 
       120 
     | 
    
         
            -
                      relation.limit_value
         
     | 
| 
       121 
     | 
    
         
            -
                    else
         
     | 
| 
       122 
     | 
    
         
            -
                      relation.opts[:limit]
         
     | 
| 
       123 
     | 
    
         
            -
                    end
         
     | 
| 
       124 
     | 
    
         
            -
                  end
         
     | 
| 
       125 
     | 
    
         
            -
             
     | 
| 
       126 
     | 
    
         
            -
                  # If a relation contains a `.group` clause, a `.count` will return a Hash.
         
     | 
| 
       127 
     | 
    
         
            -
                  def relation_count(relation)
         
     | 
| 
       128 
     | 
    
         
            -
                    count_or_hash = if(defined?(ActiveRecord::Relation) && relation.is_a?(ActiveRecord::Relation))
         
     | 
| 
       129 
     | 
    
         
            -
                      relation.respond_to?(:unscope)? relation.unscope(:order).count(:all) : relation.count(:all)
         
     | 
| 
       130 
     | 
    
         
            -
                    else # eg, Sequel::Dataset, don't mess up others
         
     | 
| 
       131 
     | 
    
         
            -
                      relation.count
         
     | 
| 
       132 
     | 
    
         
            -
                    end
         
     | 
| 
       133 
     | 
    
         
            -
                    count_or_hash.is_a?(Integer) ? count_or_hash : count_or_hash.length
         
     | 
| 
       134 
     | 
    
         
            -
                  end
         
     | 
| 
       135 
     | 
    
         
            -
             
     | 
| 
       136 
     | 
    
         
            -
                  # Apply cursors to edges
         
     | 
| 
       137 
     | 
    
         
            -
                  def sliced_nodes
         
     | 
| 
       138 
     | 
    
         
            -
                    return @sliced_nodes if defined? @sliced_nodes
         
     | 
| 
       139 
     | 
    
         
            -
             
     | 
| 
       140 
     | 
    
         
            -
                    @sliced_nodes = nodes
         
     | 
| 
       141 
     | 
    
         
            -
             
     | 
| 
       142 
     | 
    
         
            -
                    if after
         
     | 
| 
       143 
     | 
    
         
            -
                      offset = (relation_offset(@sliced_nodes) || 0) + offset_from_cursor(after)
         
     | 
| 
       144 
     | 
    
         
            -
                      @sliced_nodes = @sliced_nodes.offset(offset)
         
     | 
| 
       145 
     | 
    
         
            -
                    end
         
     | 
| 
       146 
     | 
    
         
            -
             
     | 
| 
       147 
     | 
    
         
            -
                    if before && after
         
     | 
| 
       148 
     | 
    
         
            -
                      if offset_from_cursor(after) < offset_from_cursor(before)
         
     | 
| 
       149 
     | 
    
         
            -
                        @sliced_nodes = limit_nodes(@sliced_nodes,  offset_from_cursor(before) - offset_from_cursor(after) - 1)
         
     | 
| 
       150 
     | 
    
         
            -
                      else
         
     | 
| 
       151 
     | 
    
         
            -
                        @sliced_nodes = limit_nodes(@sliced_nodes, 0)
         
     | 
| 
       152 
     | 
    
         
            -
                      end
         
     | 
| 
       153 
     | 
    
         
            -
             
     | 
| 
       154 
     | 
    
         
            -
                    elsif before
         
     | 
| 
       155 
     | 
    
         
            -
                      @sliced_nodes = limit_nodes(@sliced_nodes, offset_from_cursor(before) - 1)
         
     | 
| 
       156 
     | 
    
         
            -
                    end
         
     | 
| 
       157 
     | 
    
         
            -
             
     | 
| 
       158 
     | 
    
         
            -
                    @sliced_nodes
         
     | 
| 
       159 
     | 
    
         
            -
                  end
         
     | 
| 
       160 
     | 
    
         
            -
             
     | 
| 
       161 
     | 
    
         
            -
                  def limit_nodes(sliced_nodes, limit)
         
     | 
| 
       162 
     | 
    
         
            -
                    if limit > 0 || defined?(ActiveRecord::Relation) && sliced_nodes.is_a?(ActiveRecord::Relation)
         
     | 
| 
       163 
     | 
    
         
            -
                      sliced_nodes.limit(limit)
         
     | 
| 
       164 
     | 
    
         
            -
                    else
         
     | 
| 
       165 
     | 
    
         
            -
                      sliced_nodes.where(false)
         
     | 
| 
       166 
     | 
    
         
            -
                    end
         
     | 
| 
       167 
     | 
    
         
            -
                  end
         
     | 
| 
       168 
     | 
    
         
            -
             
     | 
| 
       169 
     | 
    
         
            -
                  def sliced_nodes_count
         
     | 
| 
       170 
     | 
    
         
            -
                    return @sliced_nodes_count if defined? @sliced_nodes_count
         
     | 
| 
       171 
     | 
    
         
            -
             
     | 
| 
       172 
     | 
    
         
            -
                    # If a relation contains a `.group` clause, a `.count` will return a Hash.
         
     | 
| 
       173 
     | 
    
         
            -
                    @sliced_nodes_count = relation_count(sliced_nodes)
         
     | 
| 
       174 
     | 
    
         
            -
                  end
         
     | 
| 
       175 
     | 
    
         
            -
             
     | 
| 
       176 
     | 
    
         
            -
                  def offset_from_cursor(cursor)
         
     | 
| 
       177 
     | 
    
         
            -
                    decode(cursor).to_i
         
     | 
| 
       178 
     | 
    
         
            -
                  end
         
     | 
| 
       179 
     | 
    
         
            -
                end
         
     | 
| 
       180 
     | 
    
         
            -
             
     | 
| 
       181 
     | 
    
         
            -
                if defined?(ActiveRecord::Relation)
         
     | 
| 
       182 
     | 
    
         
            -
                  BaseConnection.register_connection_implementation(ActiveRecord::Relation, RelationConnection)
         
     | 
| 
       183 
     | 
    
         
            -
                end
         
     | 
| 
       184 
     | 
    
         
            -
                if defined?(Sequel::Dataset)
         
     | 
| 
       185 
     | 
    
         
            -
                  BaseConnection.register_connection_implementation(Sequel::Dataset, RelationConnection)
         
     | 
| 
       186 
     | 
    
         
            -
                end
         
     | 
| 
       187 
     | 
    
         
            -
              end
         
     | 
| 
       188 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,32 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # frozen_string_literal: true
         
     | 
| 
       2 
     | 
    
         
            -
            module GraphQL
         
     | 
| 
       3 
     | 
    
         
            -
              module Relay
         
     | 
| 
       4 
     | 
    
         
            -
                # Mixin for Relay-related methods in type objects
         
     | 
| 
       5 
     | 
    
         
            -
                # (used by BaseType and Schema::Member).
         
     | 
| 
       6 
     | 
    
         
            -
                module TypeExtensions
         
     | 
| 
       7 
     | 
    
         
            -
                  # @return [GraphQL::ObjectType] The default connection type for this object type
         
     | 
| 
       8 
     | 
    
         
            -
                  def connection_type
         
     | 
| 
       9 
     | 
    
         
            -
                    @connection_type ||= define_connection
         
     | 
| 
       10 
     | 
    
         
            -
                  end
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
                  # Define a custom connection type for this object type
         
     | 
| 
       13 
     | 
    
         
            -
                  # @return [GraphQL::ObjectType]
         
     | 
| 
       14 
     | 
    
         
            -
                  def define_connection(**kwargs, &block)
         
     | 
| 
       15 
     | 
    
         
            -
                    GraphQL::Deprecation.warn ".connection_type and .define_connection will be removed from GraphQL-Ruby 2.0, use class-based type definitions instead: https://graphql-ruby.org/schema/class_based_api.html"
         
     | 
| 
       16 
     | 
    
         
            -
                    GraphQL::Relay::ConnectionType.create_type(self, **kwargs, &block)
         
     | 
| 
       17 
     | 
    
         
            -
                  end
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
                  # @return [GraphQL::ObjectType] The default edge type for this object type
         
     | 
| 
       20 
     | 
    
         
            -
                  def edge_type
         
     | 
| 
       21 
     | 
    
         
            -
                    @edge_type ||= define_edge
         
     | 
| 
       22 
     | 
    
         
            -
                  end
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
                  # Define a custom edge type for this object type
         
     | 
| 
       25 
     | 
    
         
            -
                  # @return [GraphQL::ObjectType]
         
     | 
| 
       26 
     | 
    
         
            -
                  def define_edge(**kwargs, &block)
         
     | 
| 
       27 
     | 
    
         
            -
                    GraphQL::Deprecation.warn ".edge_type and .define_edge will be removed from GraphQL-Ruby 2.0, use class-based type definitions instead: https://graphql-ruby.org/schema/class_based_api.html"
         
     | 
| 
       28 
     | 
    
         
            -
                    GraphQL::Relay::EdgeType.create_type(self, **kwargs, &block)
         
     | 
| 
       29 
     | 
    
         
            -
                  end
         
     | 
| 
       30 
     | 
    
         
            -
                end
         
     | 
| 
       31 
     | 
    
         
            -
              end
         
     | 
| 
       32 
     | 
    
         
            -
            end
         
     | 
    
        data/lib/graphql/scalar_type.rb
    DELETED
    
    | 
         @@ -1,91 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # frozen_string_literal: true
         
     | 
| 
       2 
     | 
    
         
            -
            module GraphQL
         
     | 
| 
       3 
     | 
    
         
            -
              # @api deprecated
         
     | 
| 
       4 
     | 
    
         
            -
              class ScalarType < GraphQL::BaseType
         
     | 
| 
       5 
     | 
    
         
            -
                extend Define::InstanceDefinable::DeprecatedDefine
         
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
                deprecated_accepts_definitions :coerce, :coerce_input, :coerce_result
         
     | 
| 
       8 
     | 
    
         
            -
                ensure_defined :coerce_non_null_input, :coerce_result
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
                module NoOpCoerce
         
     | 
| 
       11 
     | 
    
         
            -
                  def self.call(val, ctx)
         
     | 
| 
       12 
     | 
    
         
            -
                    val
         
     | 
| 
       13 
     | 
    
         
            -
                  end
         
     | 
| 
       14 
     | 
    
         
            -
                end
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
                def initialize
         
     | 
| 
       17 
     | 
    
         
            -
                  super
         
     | 
| 
       18 
     | 
    
         
            -
                  self.coerce = NoOpCoerce
         
     | 
| 
       19 
     | 
    
         
            -
                end
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
                def coerce=(proc)
         
     | 
| 
       22 
     | 
    
         
            -
                  self.coerce_input = proc
         
     | 
| 
       23 
     | 
    
         
            -
                  self.coerce_result = proc
         
     | 
| 
       24 
     | 
    
         
            -
                end
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
                def coerce_input=(coerce_input_fn)
         
     | 
| 
       27 
     | 
    
         
            -
                  if !coerce_input_fn.nil?
         
     | 
| 
       28 
     | 
    
         
            -
                    @coerce_input_proc = ensure_two_arg(coerce_input_fn, :coerce_input)
         
     | 
| 
       29 
     | 
    
         
            -
                  end
         
     | 
| 
       30 
     | 
    
         
            -
                end
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
                def coerce_result(value, ctx = nil)
         
     | 
| 
       33 
     | 
    
         
            -
                  if ctx.nil?
         
     | 
| 
       34 
     | 
    
         
            -
                    warn_deprecated_coerce("coerce_isolated_result")
         
     | 
| 
       35 
     | 
    
         
            -
                    ctx = GraphQL::Query::NullContext
         
     | 
| 
       36 
     | 
    
         
            -
                  end
         
     | 
| 
       37 
     | 
    
         
            -
                  @coerce_result_proc.call(value, ctx)
         
     | 
| 
       38 
     | 
    
         
            -
                end
         
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
                def coerce_result=(coerce_result_fn)
         
     | 
| 
       41 
     | 
    
         
            -
                  if !coerce_result_fn.nil?
         
     | 
| 
       42 
     | 
    
         
            -
                    @coerce_result_proc = ensure_two_arg(coerce_result_fn, :coerce_result)
         
     | 
| 
       43 
     | 
    
         
            -
                  end
         
     | 
| 
       44 
     | 
    
         
            -
                end
         
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
                def kind
         
     | 
| 
       47 
     | 
    
         
            -
                  GraphQL::TypeKinds::SCALAR
         
     | 
| 
       48 
     | 
    
         
            -
                end
         
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
                private
         
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
                def ensure_two_arg(callable, method_name)
         
     | 
| 
       53 
     | 
    
         
            -
                  GraphQL::BackwardsCompatibility.wrap_arity(callable, from: 1, to: 2, name: "#{name}.#{method_name}(val, ctx)")
         
     | 
| 
       54 
     | 
    
         
            -
                end
         
     | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
       56 
     | 
    
         
            -
                def coerce_non_null_input(value, ctx)
         
     | 
| 
       57 
     | 
    
         
            -
                  @coerce_input_proc.call(raw_coercion_input(value), ctx)
         
     | 
| 
       58 
     | 
    
         
            -
                end
         
     | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
       60 
     | 
    
         
            -
                def raw_coercion_input(value)
         
     | 
| 
       61 
     | 
    
         
            -
                  if value.is_a?(GraphQL::Language::Nodes::InputObject)
         
     | 
| 
       62 
     | 
    
         
            -
                    value.to_h
         
     | 
| 
       63 
     | 
    
         
            -
                  elsif value.is_a?(Array)
         
     | 
| 
       64 
     | 
    
         
            -
                    value.map { |element| raw_coercion_input(element) }
         
     | 
| 
       65 
     | 
    
         
            -
                  else
         
     | 
| 
       66 
     | 
    
         
            -
                    value
         
     | 
| 
       67 
     | 
    
         
            -
                  end
         
     | 
| 
       68 
     | 
    
         
            -
                end
         
     | 
| 
       69 
     | 
    
         
            -
             
     | 
| 
       70 
     | 
    
         
            -
                def validate_non_null_input(value, ctx)
         
     | 
| 
       71 
     | 
    
         
            -
                  result = Query::InputValidationResult.new
         
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
       73 
     | 
    
         
            -
                  coerced_result = begin
         
     | 
| 
       74 
     | 
    
         
            -
                    coerce_non_null_input(value, ctx)
         
     | 
| 
       75 
     | 
    
         
            -
                  rescue GraphQL::CoercionError => err
         
     | 
| 
       76 
     | 
    
         
            -
                    err
         
     | 
| 
       77 
     | 
    
         
            -
                  end
         
     | 
| 
       78 
     | 
    
         
            -
             
     | 
| 
       79 
     | 
    
         
            -
                  if value.is_a?(GraphQL::Language::Nodes::Enum) || coerced_result.nil?
         
     | 
| 
       80 
     | 
    
         
            -
                    result.add_problem("Could not coerce value #{GraphQL::Language.serialize(value)} to #{name}")
         
     | 
| 
       81 
     | 
    
         
            -
                  elsif coerced_result.is_a?(GraphQL::CoercionError)
         
     | 
| 
       82 
     | 
    
         
            -
                    result.add_problem(
         
     | 
| 
       83 
     | 
    
         
            -
                      coerced_result.message,
         
     | 
| 
       84 
     | 
    
         
            -
                      message: coerced_result.message,
         
     | 
| 
       85 
     | 
    
         
            -
                      extensions: coerced_result.extensions
         
     | 
| 
       86 
     | 
    
         
            -
                    )
         
     | 
| 
       87 
     | 
    
         
            -
                  end
         
     | 
| 
       88 
     | 
    
         
            -
                  result
         
     | 
| 
       89 
     | 
    
         
            -
                end
         
     | 
| 
       90 
     | 
    
         
            -
              end
         
     | 
| 
       91 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,35 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # frozen_string_literal: true
         
     | 
| 
       2 
     | 
    
         
            -
            module GraphQL
         
     | 
| 
       3 
     | 
    
         
            -
              class Schema
         
     | 
| 
       4 
     | 
    
         
            -
                # In early GraphQL versions, errors would be "automatically"
         
     | 
| 
       5 
     | 
    
         
            -
                # rescued and replaced with `"Internal error"`. That behavior
         
     | 
| 
       6 
     | 
    
         
            -
                # was undesirable but this middleware is offered for people who
         
     | 
| 
       7 
     | 
    
         
            -
                # want to preserve it.
         
     | 
| 
       8 
     | 
    
         
            -
                #
         
     | 
| 
       9 
     | 
    
         
            -
                # It has a couple of differences from the previous behavior:
         
     | 
| 
       10 
     | 
    
         
            -
                #
         
     | 
| 
       11 
     | 
    
         
            -
                # - Other parts of the query _will_ be run (previously,
         
     | 
| 
       12 
     | 
    
         
            -
                #   execution would stop when the error was raised and the result
         
     | 
| 
       13 
     | 
    
         
            -
                #   would have no `"data"` key at all)
         
     | 
| 
       14 
     | 
    
         
            -
                # - The entry in {Query::Context#errors} is a {GraphQL::ExecutionError}, _not_
         
     | 
| 
       15 
     | 
    
         
            -
                #   the originally-raised error.
         
     | 
| 
       16 
     | 
    
         
            -
                # - The entry in the `"errors"` key includes the location of the field
         
     | 
| 
       17 
     | 
    
         
            -
                #   which raised the errors.
         
     | 
| 
       18 
     | 
    
         
            -
                #
         
     | 
| 
       19 
     | 
    
         
            -
                # @example Use CatchallMiddleware with your schema
         
     | 
| 
       20 
     | 
    
         
            -
                #     # All errors will be suppressed and replaced with "Internal error" messages
         
     | 
| 
       21 
     | 
    
         
            -
                #     MySchema.middleware << GraphQL::Schema::CatchallMiddleware
         
     | 
| 
       22 
     | 
    
         
            -
                #
         
     | 
| 
       23 
     | 
    
         
            -
                module CatchallMiddleware
         
     | 
| 
       24 
     | 
    
         
            -
                  MESSAGE = "Internal error"
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
                  # Rescue any error and replace it with a {GraphQL::ExecutionError}
         
     | 
| 
       27 
     | 
    
         
            -
                  # whose message is {MESSAGE}
         
     | 
| 
       28 
     | 
    
         
            -
                  def self.call(parent_type, parent_object, field_definition, field_args, query_context)
         
     | 
| 
       29 
     | 
    
         
            -
                    yield
         
     | 
| 
       30 
     | 
    
         
            -
                  rescue StandardError
         
     | 
| 
       31 
     | 
    
         
            -
                    GraphQL::ExecutionError.new(MESSAGE)
         
     | 
| 
       32 
     | 
    
         
            -
                  end
         
     | 
| 
       33 
     | 
    
         
            -
                end
         
     | 
| 
       34 
     | 
    
         
            -
              end
         
     | 
| 
       35 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,17 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # frozen_string_literal: true
         
     | 
| 
       2 
     | 
    
         
            -
            module GraphQL
         
     | 
| 
       3 
     | 
    
         
            -
              class Schema
         
     | 
| 
       4 
     | 
    
         
            -
                module DefaultTypeError
         
     | 
| 
       5 
     | 
    
         
            -
                  def self.call(type_error, ctx)
         
     | 
| 
       6 
     | 
    
         
            -
                    case type_error
         
     | 
| 
       7 
     | 
    
         
            -
                    when GraphQL::InvalidNullError
         
     | 
| 
       8 
     | 
    
         
            -
                      ctx.errors << type_error
         
     | 
| 
       9 
     | 
    
         
            -
                    when GraphQL::UnresolvedTypeError, GraphQL::StringEncodingError, GraphQL::IntegerEncodingError
         
     | 
| 
       10 
     | 
    
         
            -
                      raise type_error
         
     | 
| 
       11 
     | 
    
         
            -
                    when GraphQL::IntegerDecodingError
         
     | 
| 
       12 
     | 
    
         
            -
                      nil
         
     | 
| 
       13 
     | 
    
         
            -
                    end
         
     | 
| 
       14 
     | 
    
         
            -
                  end
         
     | 
| 
       15 
     | 
    
         
            -
                end
         
     | 
| 
       16 
     | 
    
         
            -
              end
         
     | 
| 
       17 
     | 
    
         
            -
            end
         
     |