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,12 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # frozen_string_literal: true
         
     | 
| 
       2 
     | 
    
         
            -
            module GraphQL
         
     | 
| 
       3 
     | 
    
         
            -
              module Define
         
     | 
| 
       4 
     | 
    
         
            -
                # Turn argument configs into a {GraphQL::Argument}.
         
     | 
| 
       5 
     | 
    
         
            -
                module AssignArgument
         
     | 
| 
       6 
     | 
    
         
            -
                  def self.call(target, *args, **kwargs, &block)
         
     | 
| 
       7 
     | 
    
         
            -
                    argument = GraphQL::Argument.from_dsl(*args, **kwargs, &block)
         
     | 
| 
       8 
     | 
    
         
            -
                    target.arguments[argument.name] = argument
         
     | 
| 
       9 
     | 
    
         
            -
                  end
         
     | 
| 
       10 
     | 
    
         
            -
                end
         
     | 
| 
       11 
     | 
    
         
            -
              end
         
     | 
| 
       12 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,13 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # frozen_string_literal: true
         
     | 
| 
       2 
     | 
    
         
            -
            module GraphQL
         
     | 
| 
       3 
     | 
    
         
            -
              module Define
         
     | 
| 
       4 
     | 
    
         
            -
                module AssignConnection
         
     | 
| 
       5 
     | 
    
         
            -
                  def self.call(type_defn, *field_args, max_page_size: nil, **field_kwargs, &field_block)
         
     | 
| 
       6 
     | 
    
         
            -
                    underlying_field = GraphQL::Define::AssignObjectField.call(type_defn, *field_args, **field_kwargs, &field_block)
         
     | 
| 
       7 
     | 
    
         
            -
                    underlying_field.connection_max_page_size = max_page_size
         
     | 
| 
       8 
     | 
    
         
            -
                    underlying_field.connection = true
         
     | 
| 
       9 
     | 
    
         
            -
                    type_defn.fields[underlying_field.name] = underlying_field
         
     | 
| 
       10 
     | 
    
         
            -
                  end
         
     | 
| 
       11 
     | 
    
         
            -
                end
         
     | 
| 
       12 
     | 
    
         
            -
              end
         
     | 
| 
       13 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,18 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # frozen_string_literal: true
         
     | 
| 
       2 
     | 
    
         
            -
            module GraphQL
         
     | 
| 
       3 
     | 
    
         
            -
              module Define
         
     | 
| 
       4 
     | 
    
         
            -
                # @api deprecated
         
     | 
| 
       5 
     | 
    
         
            -
                module AssignEnumValue
         
     | 
| 
       6 
     | 
    
         
            -
                  def self.call(enum_type, name, desc = nil, deprecation_reason: nil, value: name, &block)
         
     | 
| 
       7 
     | 
    
         
            -
                    enum_value = GraphQL::EnumType::EnumValue.define(
         
     | 
| 
       8 
     | 
    
         
            -
                      name: name.to_s,
         
     | 
| 
       9 
     | 
    
         
            -
                      description: desc,
         
     | 
| 
       10 
     | 
    
         
            -
                      deprecation_reason: deprecation_reason,
         
     | 
| 
       11 
     | 
    
         
            -
                      value: value,
         
     | 
| 
       12 
     | 
    
         
            -
                      &block
         
     | 
| 
       13 
     | 
    
         
            -
                    )
         
     | 
| 
       14 
     | 
    
         
            -
                    enum_type.add_value(enum_value)
         
     | 
| 
       15 
     | 
    
         
            -
                  end
         
     | 
| 
       16 
     | 
    
         
            -
                end
         
     | 
| 
       17 
     | 
    
         
            -
              end
         
     | 
| 
       18 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,11 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # frozen_string_literal: true
         
     | 
| 
       2 
     | 
    
         
            -
            module GraphQL
         
     | 
| 
       3 
     | 
    
         
            -
              module Define
         
     | 
| 
       4 
     | 
    
         
            -
                module AssignGlobalIdField
         
     | 
| 
       5 
     | 
    
         
            -
                  def self.call(type_defn, field_name, **field_kwargs)
         
     | 
| 
       6 
     | 
    
         
            -
                    resolve = GraphQL::Relay::GlobalIdResolve.new(type: type_defn)
         
     | 
| 
       7 
     | 
    
         
            -
                    GraphQL::Define::AssignObjectField.call(type_defn, field_name, **field_kwargs, type: GraphQL::DEPRECATED_ID_TYPE.to_non_null_type, resolve: resolve)
         
     | 
| 
       8 
     | 
    
         
            -
                  end
         
     | 
| 
       9 
     | 
    
         
            -
                end
         
     | 
| 
       10 
     | 
    
         
            -
              end
         
     | 
| 
       11 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,34 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # frozen_string_literal: true
         
     | 
| 
       2 
     | 
    
         
            -
            module GraphQL
         
     | 
| 
       3 
     | 
    
         
            -
              module Define
         
     | 
| 
       4 
     | 
    
         
            -
                module AssignMutationFunction
         
     | 
| 
       5 
     | 
    
         
            -
                  def self.call(target, function)
         
     | 
| 
       6 
     | 
    
         
            -
                    # TODO: get all this logic somewhere easier to test
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
                    if !function.type.is_a?(GraphQL::ObjectType)
         
     | 
| 
       9 
     | 
    
         
            -
                      raise "Mutation functions must return object types (not #{function.type.unwrap})"
         
     | 
| 
       10 
     | 
    
         
            -
                    end
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
                    target.return_type = function.type.redefine {
         
     | 
| 
       13 
     | 
    
         
            -
                      name(target.name + "Payload")
         
     | 
| 
       14 
     | 
    
         
            -
                      field :clientMutationId, types.String, "A unique identifier for the client performing the mutation.", property: :client_mutation_id
         
     | 
| 
       15 
     | 
    
         
            -
                    }
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
                    target.arguments = function.arguments
         
     | 
| 
       18 
     | 
    
         
            -
                    target.description = function.description
         
     | 
| 
       19 
     | 
    
         
            -
                    target.resolve = ->(o, a, c) {
         
     | 
| 
       20 
     | 
    
         
            -
                      res = function.call(o, a, c)
         
     | 
| 
       21 
     | 
    
         
            -
                      ResultProxy.new(res, a[:clientMutationId])
         
     | 
| 
       22 
     | 
    
         
            -
                    }
         
     | 
| 
       23 
     | 
    
         
            -
                  end
         
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
                  class ResultProxy < SimpleDelegator
         
     | 
| 
       26 
     | 
    
         
            -
                    attr_reader :client_mutation_id
         
     | 
| 
       27 
     | 
    
         
            -
                    def initialize(target, client_mutation_id)
         
     | 
| 
       28 
     | 
    
         
            -
                      @client_mutation_id = client_mutation_id
         
     | 
| 
       29 
     | 
    
         
            -
                      super(target)
         
     | 
| 
       30 
     | 
    
         
            -
                    end
         
     | 
| 
       31 
     | 
    
         
            -
                  end
         
     | 
| 
       32 
     | 
    
         
            -
                end
         
     | 
| 
       33 
     | 
    
         
            -
              end
         
     | 
| 
       34 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,42 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # frozen_string_literal: true
         
     | 
| 
       2 
     | 
    
         
            -
            module GraphQL
         
     | 
| 
       3 
     | 
    
         
            -
              module Define
         
     | 
| 
       4 
     | 
    
         
            -
                # @api deprecated
         
     | 
| 
       5 
     | 
    
         
            -
                module AssignObjectField
         
     | 
| 
       6 
     | 
    
         
            -
                  def self.call(owner_type, name, type_or_field = nil, desc = nil, function: nil, field: nil, relay_mutation_function: nil, **kwargs, &block)
         
     | 
| 
       7 
     | 
    
         
            -
                    name_s = name.to_s
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
                    # Move some positional args into keywords if they're present
         
     | 
| 
       10 
     | 
    
         
            -
                    desc && kwargs[:description] ||= desc
         
     | 
| 
       11 
     | 
    
         
            -
                    name && kwargs[:name] ||= name_s
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
                    if !type_or_field.nil? && !type_or_field.is_a?(GraphQL::Field)
         
     | 
| 
       14 
     | 
    
         
            -
                      # Maybe a string, proc or BaseType
         
     | 
| 
       15 
     | 
    
         
            -
                      kwargs[:type] = type_or_field
         
     | 
| 
       16 
     | 
    
         
            -
                    end
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
                    base_field = if type_or_field.is_a?(GraphQL::Field)
         
     | 
| 
       19 
     | 
    
         
            -
                      type_or_field.redefine(name: name_s)
         
     | 
| 
       20 
     | 
    
         
            -
                    elsif function
         
     | 
| 
       21 
     | 
    
         
            -
                      func_field = GraphQL::Function.build_field(function)
         
     | 
| 
       22 
     | 
    
         
            -
                      func_field.name = name_s
         
     | 
| 
       23 
     | 
    
         
            -
                      func_field
         
     | 
| 
       24 
     | 
    
         
            -
                    elsif field.is_a?(GraphQL::Field)
         
     | 
| 
       25 
     | 
    
         
            -
                      field.redefine(name: name_s)
         
     | 
| 
       26 
     | 
    
         
            -
                    else
         
     | 
| 
       27 
     | 
    
         
            -
                      nil
         
     | 
| 
       28 
     | 
    
         
            -
                    end
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
                    obj_field = if base_field
         
     | 
| 
       31 
     | 
    
         
            -
                      base_field.redefine(**kwargs, &block)
         
     | 
| 
       32 
     | 
    
         
            -
                    else
         
     | 
| 
       33 
     | 
    
         
            -
                      GraphQL::Field.define(**kwargs, &block)
         
     | 
| 
       34 
     | 
    
         
            -
                    end
         
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
                    # Attach the field to the type
         
     | 
| 
       38 
     | 
    
         
            -
                    owner_type.fields[name_s] = obj_field
         
     | 
| 
       39 
     | 
    
         
            -
                  end
         
     | 
| 
       40 
     | 
    
         
            -
                end
         
     | 
| 
       41 
     | 
    
         
            -
              end
         
     | 
| 
       42 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,53 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # frozen_string_literal: true
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            module GraphQL
         
     | 
| 
       4 
     | 
    
         
            -
              module Define
         
     | 
| 
       5 
     | 
    
         
            -
                # This object delegates most methods to a dictionary of functions, {@dictionary}.
         
     | 
| 
       6 
     | 
    
         
            -
                # {@target} is passed to the specified function, along with any arguments and block.
         
     | 
| 
       7 
     | 
    
         
            -
                # This allows a method-based DSL without adding methods to the defined class.
         
     | 
| 
       8 
     | 
    
         
            -
                class DefinedObjectProxy
         
     | 
| 
       9 
     | 
    
         
            -
                  extend GraphQL::Ruby2Keywords
         
     | 
| 
       10 
     | 
    
         
            -
                  # The object which will be defined by definition functions
         
     | 
| 
       11 
     | 
    
         
            -
                  attr_reader :target
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
                  def initialize(target)
         
     | 
| 
       14 
     | 
    
         
            -
                    @target = target
         
     | 
| 
       15 
     | 
    
         
            -
                    @dictionary = target.class.dictionary
         
     | 
| 
       16 
     | 
    
         
            -
                  end
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
                  # Provides shorthand access to GraphQL's built-in types
         
     | 
| 
       19 
     | 
    
         
            -
                  def types
         
     | 
| 
       20 
     | 
    
         
            -
                    GraphQL::Define::TypeDefiner.instance
         
     | 
| 
       21 
     | 
    
         
            -
                  end
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
                  # Allow `plugin` to perform complex initialization on the definition.
         
     | 
| 
       24 
     | 
    
         
            -
                  # Calls `plugin.use(defn, **kwargs)`.
         
     | 
| 
       25 
     | 
    
         
            -
                  # @param plugin [<#use(defn, **kwargs)>] A plugin object
         
     | 
| 
       26 
     | 
    
         
            -
                  # @param kwargs [Hash] Any options for the plugin
         
     | 
| 
       27 
     | 
    
         
            -
                  def use(plugin, **kwargs)
         
     | 
| 
       28 
     | 
    
         
            -
                    # https://bugs.ruby-lang.org/issues/10708
         
     | 
| 
       29 
     | 
    
         
            -
                    if kwargs == {}
         
     | 
| 
       30 
     | 
    
         
            -
                      plugin.use(self)
         
     | 
| 
       31 
     | 
    
         
            -
                    else
         
     | 
| 
       32 
     | 
    
         
            -
                      plugin.use(self, **kwargs)
         
     | 
| 
       33 
     | 
    
         
            -
                    end
         
     | 
| 
       34 
     | 
    
         
            -
                  end
         
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
                  # Lookup a function from the dictionary and call it if it's found.
         
     | 
| 
       37 
     | 
    
         
            -
                  def method_missing(name, *args, &block)
         
     | 
| 
       38 
     | 
    
         
            -
                    definition = @dictionary[name]
         
     | 
| 
       39 
     | 
    
         
            -
                    if definition
         
     | 
| 
       40 
     | 
    
         
            -
                      definition.call(@target, *args, &block)
         
     | 
| 
       41 
     | 
    
         
            -
                    else
         
     | 
| 
       42 
     | 
    
         
            -
                      msg = "#{@target.class.name} can't define '#{name}'"
         
     | 
| 
       43 
     | 
    
         
            -
                      raise NoDefinitionError, msg, caller
         
     | 
| 
       44 
     | 
    
         
            -
                    end
         
     | 
| 
       45 
     | 
    
         
            -
                  end
         
     | 
| 
       46 
     | 
    
         
            -
                  ruby2_keywords :method_missing
         
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
                  def respond_to_missing?(name, include_private = false)
         
     | 
| 
       49 
     | 
    
         
            -
                    @dictionary[name] || super
         
     | 
| 
       50 
     | 
    
         
            -
                  end
         
     | 
| 
       51 
     | 
    
         
            -
                end
         
     | 
| 
       52 
     | 
    
         
            -
              end
         
     | 
| 
       53 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,255 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # frozen_string_literal: true
         
     | 
| 
       2 
     | 
    
         
            -
            module GraphQL
         
     | 
| 
       3 
     | 
    
         
            -
              module Define
         
     | 
| 
       4 
     | 
    
         
            -
                # @api deprecated
         
     | 
| 
       5 
     | 
    
         
            -
                module InstanceDefinable
         
     | 
| 
       6 
     | 
    
         
            -
                  module DeprecatedDefine
         
     | 
| 
       7 
     | 
    
         
            -
                    def define(**kwargs, &block)
         
     | 
| 
       8 
     | 
    
         
            -
                      deprecated_caller = caller(1, 1).first
         
     | 
| 
       9 
     | 
    
         
            -
                      if deprecated_caller.include?("lib/graphql")
         
     | 
| 
       10 
     | 
    
         
            -
                        deprecated_caller = caller(2, 10).find { |c| !c.include?("lib/graphql") }
         
     | 
| 
       11 
     | 
    
         
            -
                      end
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
                      if deprecated_caller
         
     | 
| 
       14 
     | 
    
         
            -
                        GraphQL::Deprecation.warn <<-ERR
         
     | 
| 
       15 
     | 
    
         
            -
            #{self}.define will be removed in GraphQL-Ruby 2.0; use a class-based definition instead. See https://graphql-ruby.org/schema/class_based_api.html.
         
     | 
| 
       16 
     | 
    
         
            -
              -> called from #{deprecated_caller}
         
     | 
| 
       17 
     | 
    
         
            -
            ERR
         
     | 
| 
       18 
     | 
    
         
            -
                      end
         
     | 
| 
       19 
     | 
    
         
            -
                      deprecated_define(**kwargs, &block)
         
     | 
| 
       20 
     | 
    
         
            -
                    end
         
     | 
| 
       21 
     | 
    
         
            -
                  end
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
                  def self.included(base)
         
     | 
| 
       24 
     | 
    
         
            -
                    base.extend(ClassMethods)
         
     | 
| 
       25 
     | 
    
         
            -
                    base.ensure_defined(:metadata)
         
     | 
| 
       26 
     | 
    
         
            -
                  end
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
                  # @api deprecated
         
     | 
| 
       29 
     | 
    
         
            -
                  def metadata
         
     | 
| 
       30 
     | 
    
         
            -
                    @metadata ||= {}
         
     | 
| 
       31 
     | 
    
         
            -
                  end
         
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
                  # @api deprecated
         
     | 
| 
       34 
     | 
    
         
            -
                  def deprecated_define(**kwargs, &block)
         
     | 
| 
       35 
     | 
    
         
            -
                    # make sure the previous definition_proc was executed:
         
     | 
| 
       36 
     | 
    
         
            -
                    ensure_defined
         
     | 
| 
       37 
     | 
    
         
            -
                    stash_dependent_methods
         
     | 
| 
       38 
     | 
    
         
            -
                    @pending_definition = Definition.new(kwargs, block)
         
     | 
| 
       39 
     | 
    
         
            -
                    nil
         
     | 
| 
       40 
     | 
    
         
            -
                  end
         
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
                  # @api deprecated
         
     | 
| 
       43 
     | 
    
         
            -
                  def define(**kwargs, &block)
         
     | 
| 
       44 
     | 
    
         
            -
                    deprecated_define(**kwargs, &block)
         
     | 
| 
       45 
     | 
    
         
            -
                  end
         
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
       47 
     | 
    
         
            -
                  # @api deprecated
         
     | 
| 
       48 
     | 
    
         
            -
                  def redefine(**kwargs, &block)
         
     | 
| 
       49 
     | 
    
         
            -
                    ensure_defined
         
     | 
| 
       50 
     | 
    
         
            -
                    new_inst = self.dup
         
     | 
| 
       51 
     | 
    
         
            -
                    new_inst.deprecated_define(**kwargs, &block)
         
     | 
| 
       52 
     | 
    
         
            -
                    new_inst
         
     | 
| 
       53 
     | 
    
         
            -
                  end
         
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
     | 
    
         
            -
                  def initialize_copy(other)
         
     | 
| 
       56 
     | 
    
         
            -
                    super
         
     | 
| 
       57 
     | 
    
         
            -
                    @metadata = other.metadata.dup
         
     | 
| 
       58 
     | 
    
         
            -
                  end
         
     | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
       60 
     | 
    
         
            -
                  private
         
     | 
| 
       61 
     | 
    
         
            -
             
     | 
| 
       62 
     | 
    
         
            -
                  # Run the definition block if it hasn't been run yet.
         
     | 
| 
       63 
     | 
    
         
            -
                  # This can only be run once: the block is deleted after it's used.
         
     | 
| 
       64 
     | 
    
         
            -
                  # You have to call this before using any value which could
         
     | 
| 
       65 
     | 
    
         
            -
                  # come from the definition block.
         
     | 
| 
       66 
     | 
    
         
            -
                  # @return [void]
         
     | 
| 
       67 
     | 
    
         
            -
                  def ensure_defined
         
     | 
| 
       68 
     | 
    
         
            -
                    if @pending_definition
         
     | 
| 
       69 
     | 
    
         
            -
                      defn = @pending_definition
         
     | 
| 
       70 
     | 
    
         
            -
                      @pending_definition = nil
         
     | 
| 
       71 
     | 
    
         
            -
             
     | 
| 
       72 
     | 
    
         
            -
                      revive_dependent_methods
         
     | 
| 
       73 
     | 
    
         
            -
             
     | 
| 
       74 
     | 
    
         
            -
                      begin
         
     | 
| 
       75 
     | 
    
         
            -
                        defn_proxy = DefinedObjectProxy.new(self)
         
     | 
| 
       76 
     | 
    
         
            -
                        # Apply definition from `define(...)` kwargs
         
     | 
| 
       77 
     | 
    
         
            -
                        defn.define_keywords.each do |keyword, value|
         
     | 
| 
       78 
     | 
    
         
            -
                          # Don't splat string hashes, which blows up on Rubies before 2.7
         
     | 
| 
       79 
     | 
    
         
            -
                          if value.is_a?(Hash) && !value.empty? && value.each_key.all? { |k| k.is_a?(Symbol) }
         
     | 
| 
       80 
     | 
    
         
            -
                            defn_proxy.public_send(keyword, **value)
         
     | 
| 
       81 
     | 
    
         
            -
                          else
         
     | 
| 
       82 
     | 
    
         
            -
                            defn_proxy.public_send(keyword, value)
         
     | 
| 
       83 
     | 
    
         
            -
                          end
         
     | 
| 
       84 
     | 
    
         
            -
                        end
         
     | 
| 
       85 
     | 
    
         
            -
                        # and/or apply definition from `define { ... }` block
         
     | 
| 
       86 
     | 
    
         
            -
                        if defn.define_proc
         
     | 
| 
       87 
     | 
    
         
            -
                          defn_proxy.instance_eval(&defn.define_proc)
         
     | 
| 
       88 
     | 
    
         
            -
                        end
         
     | 
| 
       89 
     | 
    
         
            -
                      rescue StandardError
         
     | 
| 
       90 
     | 
    
         
            -
                        # The definition block failed to run, so make this object pending again:
         
     | 
| 
       91 
     | 
    
         
            -
                        stash_dependent_methods
         
     | 
| 
       92 
     | 
    
         
            -
                        @pending_definition = defn
         
     | 
| 
       93 
     | 
    
         
            -
                        raise
         
     | 
| 
       94 
     | 
    
         
            -
                      end
         
     | 
| 
       95 
     | 
    
         
            -
                    end
         
     | 
| 
       96 
     | 
    
         
            -
                    nil
         
     | 
| 
       97 
     | 
    
         
            -
                  end
         
     | 
| 
       98 
     | 
    
         
            -
             
     | 
| 
       99 
     | 
    
         
            -
                  # Take the pending methods and put them back on this object's singleton class.
         
     | 
| 
       100 
     | 
    
         
            -
                  # This reverts the process done by {#stash_dependent_methods}
         
     | 
| 
       101 
     | 
    
         
            -
                  # @return [void]
         
     | 
| 
       102 
     | 
    
         
            -
                  def revive_dependent_methods
         
     | 
| 
       103 
     | 
    
         
            -
                    pending_methods = @pending_methods
         
     | 
| 
       104 
     | 
    
         
            -
                    self.singleton_class.class_eval {
         
     | 
| 
       105 
     | 
    
         
            -
                      pending_methods.each do |method|
         
     | 
| 
       106 
     | 
    
         
            -
                        undef_method(method.name) if method_defined?(method.name)
         
     | 
| 
       107 
     | 
    
         
            -
                        define_method(method.name, method)
         
     | 
| 
       108 
     | 
    
         
            -
                      end
         
     | 
| 
       109 
     | 
    
         
            -
                    }
         
     | 
| 
       110 
     | 
    
         
            -
                    @pending_methods = nil
         
     | 
| 
       111 
     | 
    
         
            -
                  end
         
     | 
| 
       112 
     | 
    
         
            -
             
     | 
| 
       113 
     | 
    
         
            -
                  # Find the method names which were declared as definition-dependent,
         
     | 
| 
       114 
     | 
    
         
            -
                  # then grab the method definitions off of this object's class
         
     | 
| 
       115 
     | 
    
         
            -
                  # and store them for later.
         
     | 
| 
       116 
     | 
    
         
            -
                  #
         
     | 
| 
       117 
     | 
    
         
            -
                  # Then make a dummy method for each of those method names which:
         
     | 
| 
       118 
     | 
    
         
            -
                  #
         
     | 
| 
       119 
     | 
    
         
            -
                  # - Triggers the pending definition, if there is one
         
     | 
| 
       120 
     | 
    
         
            -
                  # - Calls the same method again.
         
     | 
| 
       121 
     | 
    
         
            -
                  #
         
     | 
| 
       122 
     | 
    
         
            -
                  # It's assumed that {#ensure_defined} will put the original method definitions
         
     | 
| 
       123 
     | 
    
         
            -
                  # back in place with {#revive_dependent_methods}.
         
     | 
| 
       124 
     | 
    
         
            -
                  # @return [void]
         
     | 
| 
       125 
     | 
    
         
            -
                  def stash_dependent_methods
         
     | 
| 
       126 
     | 
    
         
            -
                    method_names = self.class.ensure_defined_method_names
         
     | 
| 
       127 
     | 
    
         
            -
                    @pending_methods = method_names.map { |n| self.class.instance_method(n) }
         
     | 
| 
       128 
     | 
    
         
            -
                    self.singleton_class.class_eval do
         
     | 
| 
       129 
     | 
    
         
            -
                      method_names.each do |method_name|
         
     | 
| 
       130 
     | 
    
         
            -
                        undef_method(method_name) if method_defined?(method_name)
         
     | 
| 
       131 
     | 
    
         
            -
                        define_method(method_name) { |*args, &block|
         
     | 
| 
       132 
     | 
    
         
            -
                          ensure_defined
         
     | 
| 
       133 
     | 
    
         
            -
                          self.send(method_name, *args, &block)
         
     | 
| 
       134 
     | 
    
         
            -
                        }
         
     | 
| 
       135 
     | 
    
         
            -
                      end
         
     | 
| 
       136 
     | 
    
         
            -
                    end
         
     | 
| 
       137 
     | 
    
         
            -
                  end
         
     | 
| 
       138 
     | 
    
         
            -
             
     | 
| 
       139 
     | 
    
         
            -
                  class Definition
         
     | 
| 
       140 
     | 
    
         
            -
                    attr_reader :define_keywords, :define_proc
         
     | 
| 
       141 
     | 
    
         
            -
                    def initialize(define_keywords, define_proc)
         
     | 
| 
       142 
     | 
    
         
            -
                      @define_keywords = define_keywords
         
     | 
| 
       143 
     | 
    
         
            -
                      @define_proc = define_proc
         
     | 
| 
       144 
     | 
    
         
            -
                    end
         
     | 
| 
       145 
     | 
    
         
            -
                  end
         
     | 
| 
       146 
     | 
    
         
            -
             
     | 
| 
       147 
     | 
    
         
            -
                  module ClassMethods
         
     | 
| 
       148 
     | 
    
         
            -
                    # Create a new instance
         
     | 
| 
       149 
     | 
    
         
            -
                    # and prepare a definition using its {.definitions}.
         
     | 
| 
       150 
     | 
    
         
            -
                    # @api deprecated
         
     | 
| 
       151 
     | 
    
         
            -
                    # @param kwargs [Hash] Key-value pairs corresponding to defininitions from `accepts_definitions`
         
     | 
| 
       152 
     | 
    
         
            -
                    # @param block [Proc] Block which calls helper methods from `accepts_definitions`
         
     | 
| 
       153 
     | 
    
         
            -
                    def deprecated_define(**kwargs, &block)
         
     | 
| 
       154 
     | 
    
         
            -
                      instance = self.new
         
     | 
| 
       155 
     | 
    
         
            -
                      instance.deprecated_define(**kwargs, &block)
         
     | 
| 
       156 
     | 
    
         
            -
                      instance
         
     | 
| 
       157 
     | 
    
         
            -
                    end
         
     | 
| 
       158 
     | 
    
         
            -
             
     | 
| 
       159 
     | 
    
         
            -
                    # @api deprecated
         
     | 
| 
       160 
     | 
    
         
            -
                    def define(**kwargs, &block)
         
     | 
| 
       161 
     | 
    
         
            -
                      instance = self.new
         
     | 
| 
       162 
     | 
    
         
            -
                      instance.define(**kwargs, &block)
         
     | 
| 
       163 
     | 
    
         
            -
                      instance
         
     | 
| 
       164 
     | 
    
         
            -
                    end
         
     | 
| 
       165 
     | 
    
         
            -
             
     | 
| 
       166 
     | 
    
         
            -
                    # Attach definitions to this class.
         
     | 
| 
       167 
     | 
    
         
            -
                    # Each symbol in `accepts` will be assigned with `{key}=`.
         
     | 
| 
       168 
     | 
    
         
            -
                    # The last entry in accepts may be a hash of name-proc pairs for custom definitions.
         
     | 
| 
       169 
     | 
    
         
            -
                    def accepts_definitions(*accepts)
         
     | 
| 
       170 
     | 
    
         
            -
                      deprecated_caller = caller(0, 1).first
         
     | 
| 
       171 
     | 
    
         
            -
                      if deprecated_caller.include?("lib/graphql")
         
     | 
| 
       172 
     | 
    
         
            -
                        deprecated_caller = caller(2, 10).find { |c| !c.include?("lib/graphql") }
         
     | 
| 
       173 
     | 
    
         
            -
                      end
         
     | 
| 
       174 
     | 
    
         
            -
             
     | 
| 
       175 
     | 
    
         
            -
                      if deprecated_caller
         
     | 
| 
       176 
     | 
    
         
            -
                        GraphQL::Deprecation.warn <<-ERR
         
     | 
| 
       177 
     | 
    
         
            -
            #{self}.accepts_definitions will be removed in GraphQL-Ruby 2.0; use a class-based definition instead. See https://graphql-ruby.org/schema/class_based_api.html.
         
     | 
| 
       178 
     | 
    
         
            -
              -> called from #{deprecated_caller}
         
     | 
| 
       179 
     | 
    
         
            -
            ERR
         
     | 
| 
       180 
     | 
    
         
            -
                      end
         
     | 
| 
       181 
     | 
    
         
            -
                      deprecated_accepts_definitions(*accepts)
         
     | 
| 
       182 
     | 
    
         
            -
                    end
         
     | 
| 
       183 
     | 
    
         
            -
             
     | 
| 
       184 
     | 
    
         
            -
                    def deprecated_accepts_definitions(*accepts)
         
     | 
| 
       185 
     | 
    
         
            -
                      new_assignments = if accepts.last.is_a?(Hash)
         
     | 
| 
       186 
     | 
    
         
            -
                        accepts.pop.dup
         
     | 
| 
       187 
     | 
    
         
            -
                      else
         
     | 
| 
       188 
     | 
    
         
            -
                        {}
         
     | 
| 
       189 
     | 
    
         
            -
                      end
         
     | 
| 
       190 
     | 
    
         
            -
             
     | 
| 
       191 
     | 
    
         
            -
                      accepts.each do |key|
         
     | 
| 
       192 
     | 
    
         
            -
                        new_assignments[key] = AssignAttribute.new(key)
         
     | 
| 
       193 
     | 
    
         
            -
                      end
         
     | 
| 
       194 
     | 
    
         
            -
             
     | 
| 
       195 
     | 
    
         
            -
                      @own_dictionary = own_dictionary.merge(new_assignments)
         
     | 
| 
       196 
     | 
    
         
            -
                    end
         
     | 
| 
       197 
     | 
    
         
            -
             
     | 
| 
       198 
     | 
    
         
            -
                    def ensure_defined(*method_names)
         
     | 
| 
       199 
     | 
    
         
            -
                      @ensure_defined_method_names ||= []
         
     | 
| 
       200 
     | 
    
         
            -
                      @ensure_defined_method_names.concat(method_names)
         
     | 
| 
       201 
     | 
    
         
            -
                      nil
         
     | 
| 
       202 
     | 
    
         
            -
                    end
         
     | 
| 
       203 
     | 
    
         
            -
             
     | 
| 
       204 
     | 
    
         
            -
                    def ensure_defined_method_names
         
     | 
| 
       205 
     | 
    
         
            -
                      own_method_names = @ensure_defined_method_names || []
         
     | 
| 
       206 
     | 
    
         
            -
                      if superclass.respond_to?(:ensure_defined_method_names)
         
     | 
| 
       207 
     | 
    
         
            -
                        superclass.ensure_defined_method_names + own_method_names
         
     | 
| 
       208 
     | 
    
         
            -
                      else
         
     | 
| 
       209 
     | 
    
         
            -
                        own_method_names
         
     | 
| 
       210 
     | 
    
         
            -
                      end
         
     | 
| 
       211 
     | 
    
         
            -
                    end
         
     | 
| 
       212 
     | 
    
         
            -
             
     | 
| 
       213 
     | 
    
         
            -
                    # @return [Hash] combined definitions for self and ancestors
         
     | 
| 
       214 
     | 
    
         
            -
                    def dictionary
         
     | 
| 
       215 
     | 
    
         
            -
                      if superclass.respond_to?(:dictionary)
         
     | 
| 
       216 
     | 
    
         
            -
                        own_dictionary.merge(superclass.dictionary)
         
     | 
| 
       217 
     | 
    
         
            -
                      else
         
     | 
| 
       218 
     | 
    
         
            -
                        own_dictionary
         
     | 
| 
       219 
     | 
    
         
            -
                      end
         
     | 
| 
       220 
     | 
    
         
            -
                    end
         
     | 
| 
       221 
     | 
    
         
            -
             
     | 
| 
       222 
     | 
    
         
            -
                    # @return [Hash] definitions for this class only
         
     | 
| 
       223 
     | 
    
         
            -
                    def own_dictionary
         
     | 
| 
       224 
     | 
    
         
            -
                      @own_dictionary ||= {}
         
     | 
| 
       225 
     | 
    
         
            -
                    end
         
     | 
| 
       226 
     | 
    
         
            -
                  end
         
     | 
| 
       227 
     | 
    
         
            -
             
     | 
| 
       228 
     | 
    
         
            -
                  class AssignMetadataKey
         
     | 
| 
       229 
     | 
    
         
            -
                    def initialize(key)
         
     | 
| 
       230 
     | 
    
         
            -
                      @key = key
         
     | 
| 
       231 
     | 
    
         
            -
                    end
         
     | 
| 
       232 
     | 
    
         
            -
             
     | 
| 
       233 
     | 
    
         
            -
                    def call(defn, value = true)
         
     | 
| 
       234 
     | 
    
         
            -
                      defn.metadata[@key] = value
         
     | 
| 
       235 
     | 
    
         
            -
                    end
         
     | 
| 
       236 
     | 
    
         
            -
                  end
         
     | 
| 
       237 
     | 
    
         
            -
             
     | 
| 
       238 
     | 
    
         
            -
                  class AssignAttribute
         
     | 
| 
       239 
     | 
    
         
            -
                    extend GraphQL::Ruby2Keywords
         
     | 
| 
       240 
     | 
    
         
            -
             
     | 
| 
       241 
     | 
    
         
            -
                    def initialize(attr_name)
         
     | 
| 
       242 
     | 
    
         
            -
                      @attr_assign_method = :"#{attr_name}="
         
     | 
| 
       243 
     | 
    
         
            -
                    end
         
     | 
| 
       244 
     | 
    
         
            -
             
     | 
| 
       245 
     | 
    
         
            -
                    # Even though we're just using the first value here,
         
     | 
| 
       246 
     | 
    
         
            -
                    # We have to add a splat here to use `ruby2_keywords`,
         
     | 
| 
       247 
     | 
    
         
            -
                    # so that it will accept a `[{}]` input from the caller.
         
     | 
| 
       248 
     | 
    
         
            -
                    def call(defn, *value)
         
     | 
| 
       249 
     | 
    
         
            -
                      defn.public_send(@attr_assign_method, value.first)
         
     | 
| 
       250 
     | 
    
         
            -
                    end
         
     | 
| 
       251 
     | 
    
         
            -
                    ruby2_keywords :call
         
     | 
| 
       252 
     | 
    
         
            -
                  end
         
     | 
| 
       253 
     | 
    
         
            -
                end
         
     | 
| 
       254 
     | 
    
         
            -
              end
         
     | 
| 
       255 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,16 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # frozen_string_literal: true
         
     | 
| 
       2 
     | 
    
         
            -
            module GraphQL
         
     | 
| 
       3 
     | 
    
         
            -
              module Define
         
     | 
| 
       4 
     | 
    
         
            -
                # Wrap the object in NonNullType in response to `!`
         
     | 
| 
       5 
     | 
    
         
            -
                # @example required Int type
         
     | 
| 
       6 
     | 
    
         
            -
                #   !GraphQL::INT_TYPE
         
     | 
| 
       7 
     | 
    
         
            -
                #
         
     | 
| 
       8 
     | 
    
         
            -
                module NonNullWithBang
         
     | 
| 
       9 
     | 
    
         
            -
                  # Make the type non-null
         
     | 
| 
       10 
     | 
    
         
            -
                  # @return [GraphQL::NonNullType] a non-null type which wraps the original type
         
     | 
| 
       11 
     | 
    
         
            -
                  def !
         
     | 
| 
       12 
     | 
    
         
            -
                    to_non_null_type
         
     | 
| 
       13 
     | 
    
         
            -
                  end
         
     | 
| 
       14 
     | 
    
         
            -
                end
         
     | 
| 
       15 
     | 
    
         
            -
              end
         
     | 
| 
       16 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,31 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # frozen_string_literal: true
         
     | 
| 
       2 
     | 
    
         
            -
            module GraphQL
         
     | 
| 
       3 
     | 
    
         
            -
              module Define
         
     | 
| 
       4 
     | 
    
         
            -
                # Some conveniences for definining return & argument types.
         
     | 
| 
       5 
     | 
    
         
            -
                #
         
     | 
| 
       6 
     | 
    
         
            -
                # Passed into initialization blocks, eg {ObjectType#initialize}, {Field#initialize}
         
     | 
| 
       7 
     | 
    
         
            -
                class TypeDefiner
         
     | 
| 
       8 
     | 
    
         
            -
                  include Singleton
         
     | 
| 
       9 
     | 
    
         
            -
                  # rubocop:disable Naming/MethodName
         
     | 
| 
       10 
     | 
    
         
            -
                  def Int;      GraphQL::DEPRECATED_INT_TYPE;      end
         
     | 
| 
       11 
     | 
    
         
            -
                  def String;   GraphQL::DEPRECATED_STRING_TYPE;   end
         
     | 
| 
       12 
     | 
    
         
            -
                  def Float;    GraphQL::DEPRECATED_FLOAT_TYPE;    end
         
     | 
| 
       13 
     | 
    
         
            -
                  def Boolean;  GraphQL::DEPRECATED_BOOLEAN_TYPE;  end
         
     | 
| 
       14 
     | 
    
         
            -
                  def ID;       GraphQL::DEPRECATED_ID_TYPE;       end
         
     | 
| 
       15 
     | 
    
         
            -
                  # rubocop:enable Naming/MethodName
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
                  # Make a {ListType} which wraps the input type
         
     | 
| 
       18 
     | 
    
         
            -
                  #
         
     | 
| 
       19 
     | 
    
         
            -
                  # @example making a list type
         
     | 
| 
       20 
     | 
    
         
            -
                  #   list_of_strings = types[types.String]
         
     | 
| 
       21 
     | 
    
         
            -
                  #   list_of_strings.inspect
         
     | 
| 
       22 
     | 
    
         
            -
                  #   # => "[String]"
         
     | 
| 
       23 
     | 
    
         
            -
                  #
         
     | 
| 
       24 
     | 
    
         
            -
                  # @param type [Type] A type to be wrapped in a ListType
         
     | 
| 
       25 
     | 
    
         
            -
                  # @return [GraphQL::ListType] A ListType wrapping `type`
         
     | 
| 
       26 
     | 
    
         
            -
                  def [](type)
         
     | 
| 
       27 
     | 
    
         
            -
                    type.to_list_type
         
     | 
| 
       28 
     | 
    
         
            -
                  end
         
     | 
| 
       29 
     | 
    
         
            -
                end
         
     | 
| 
       30 
     | 
    
         
            -
              end
         
     | 
| 
       31 
     | 
    
         
            -
            end
         
     | 
    
        data/lib/graphql/define.rb
    DELETED
    
    | 
         @@ -1,31 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # frozen_string_literal: true
         
     | 
| 
       2 
     | 
    
         
            -
            require "graphql/define/assign_argument"
         
     | 
| 
       3 
     | 
    
         
            -
            require "graphql/define/assign_connection"
         
     | 
| 
       4 
     | 
    
         
            -
            require "graphql/define/assign_enum_value"
         
     | 
| 
       5 
     | 
    
         
            -
            require "graphql/define/assign_global_id_field"
         
     | 
| 
       6 
     | 
    
         
            -
            require "graphql/define/assign_mutation_function"
         
     | 
| 
       7 
     | 
    
         
            -
            require "graphql/define/assign_object_field"
         
     | 
| 
       8 
     | 
    
         
            -
            require "graphql/define/defined_object_proxy"
         
     | 
| 
       9 
     | 
    
         
            -
            require "graphql/define/instance_definable"
         
     | 
| 
       10 
     | 
    
         
            -
            require "graphql/define/no_definition_error"
         
     | 
| 
       11 
     | 
    
         
            -
            require "graphql/define/non_null_with_bang"
         
     | 
| 
       12 
     | 
    
         
            -
            require "graphql/define/type_definer"
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
            module GraphQL
         
     | 
| 
       15 
     | 
    
         
            -
              module Define
         
     | 
| 
       16 
     | 
    
         
            -
                # A helper for definitions that store their value in `#metadata`.
         
     | 
| 
       17 
     | 
    
         
            -
                #
         
     | 
| 
       18 
     | 
    
         
            -
                # @example Storing application classes with GraphQL types
         
     | 
| 
       19 
     | 
    
         
            -
                #   # Make a custom definition
         
     | 
| 
       20 
     | 
    
         
            -
                #   GraphQL::ObjectType.accepts_definitions(resolves_to_class_names: GraphQL::Define.assign_metadata_key(:resolves_to_class_names))
         
     | 
| 
       21 
     | 
    
         
            -
                #
         
     | 
| 
       22 
     | 
    
         
            -
                #   # After definition, read the key from metadata
         
     | 
| 
       23 
     | 
    
         
            -
                #   PostType.metadata[:resolves_to_class_names] # => [...]
         
     | 
| 
       24 
     | 
    
         
            -
                #
         
     | 
| 
       25 
     | 
    
         
            -
                # @param key [Object] the key to assign in metadata
         
     | 
| 
       26 
     | 
    
         
            -
                # @return [#call(defn, value)] an assignment for `.accepts_definitions` which writes `key` to `#metadata`
         
     | 
| 
       27 
     | 
    
         
            -
                def self.assign_metadata_key(key)
         
     | 
| 
       28 
     | 
    
         
            -
                  GraphQL::Define::InstanceDefinable::AssignMetadataKey.new(key)
         
     | 
| 
       29 
     | 
    
         
            -
                end
         
     | 
| 
       30 
     | 
    
         
            -
              end
         
     | 
| 
       31 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,55 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # frozen_string_literal: true
         
     | 
| 
       2 
     | 
    
         
            -
            module GraphQL
         
     | 
| 
       3 
     | 
    
         
            -
              # There are two ways to apply the deprecated `!` DSL to class-style schema definitions:
         
     | 
| 
       4 
     | 
    
         
            -
              #
         
     | 
| 
       5 
     | 
    
         
            -
              # 1. Scoped by file (CRuby only), add to the top of the file:
         
     | 
| 
       6 
     | 
    
         
            -
              #
         
     | 
| 
       7 
     | 
    
         
            -
              #      using GraphQL::DeprecationDSL
         
     | 
| 
       8 
     | 
    
         
            -
              #
         
     | 
| 
       9 
     | 
    
         
            -
              #   (This is a "refinement", there are also other ways to scope it.)
         
     | 
| 
       10 
     | 
    
         
            -
              #
         
     | 
| 
       11 
     | 
    
         
            -
              # 2. Global application, add before schema definition:
         
     | 
| 
       12 
     | 
    
         
            -
              #
         
     | 
| 
       13 
     | 
    
         
            -
              #      GraphQL::DeprecationDSL.activate
         
     | 
| 
       14 
     | 
    
         
            -
              #
         
     | 
| 
       15 
     | 
    
         
            -
              module DeprecatedDSL
         
     | 
| 
       16 
     | 
    
         
            -
                TYPE_CLASSES = [
         
     | 
| 
       17 
     | 
    
         
            -
                  GraphQL::Schema::Scalar,
         
     | 
| 
       18 
     | 
    
         
            -
                  GraphQL::Schema::Enum,
         
     | 
| 
       19 
     | 
    
         
            -
                  GraphQL::Schema::InputObject,
         
     | 
| 
       20 
     | 
    
         
            -
                  GraphQL::Schema::Union,
         
     | 
| 
       21 
     | 
    
         
            -
                  GraphQL::Schema::Interface,
         
     | 
| 
       22 
     | 
    
         
            -
                  GraphQL::Schema::Object,
         
     | 
| 
       23 
     | 
    
         
            -
                ]
         
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
                def self.activate
         
     | 
| 
       26 
     | 
    
         
            -
                  deprecated_caller = caller(1, 1).first
         
     | 
| 
       27 
     | 
    
         
            -
                  GraphQL::Deprecation.warn "DeprecatedDSL will be removed from GraphQL-Ruby 2.0, use `.to_non_null_type` instead of `!` and remove `.activate` from #{deprecated_caller}"
         
     | 
| 
       28 
     | 
    
         
            -
                  TYPE_CLASSES.each { |c| c.extend(Methods) }
         
     | 
| 
       29 
     | 
    
         
            -
                  GraphQL::Schema::List.include(Methods)
         
     | 
| 
       30 
     | 
    
         
            -
                  GraphQL::Schema::NonNull.include(Methods)
         
     | 
| 
       31 
     | 
    
         
            -
                end
         
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
                module Methods
         
     | 
| 
       34 
     | 
    
         
            -
                  def !
         
     | 
| 
       35 
     | 
    
         
            -
                    deprecated_caller = caller(1, 1).first
         
     | 
| 
       36 
     | 
    
         
            -
                    GraphQL::Deprecation.warn "DeprecatedDSL will be removed from GraphQL-Ruby 2.0, use `.to_non_null_type` instead of `!` at #{deprecated_caller}"
         
     | 
| 
       37 
     | 
    
         
            -
                    to_non_null_type
         
     | 
| 
       38 
     | 
    
         
            -
                  end
         
     | 
| 
       39 
     | 
    
         
            -
                end
         
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
                if defined?(::Refinement) && Refinement.private_method_defined?(:import_methods)
         
     | 
| 
       42 
     | 
    
         
            -
                  TYPE_CLASSES.each do |type_class|
         
     | 
| 
       43 
     | 
    
         
            -
                    refine type_class.singleton_class do
         
     | 
| 
       44 
     | 
    
         
            -
                      import_methods Methods
         
     | 
| 
       45 
     | 
    
         
            -
                    end
         
     | 
| 
       46 
     | 
    
         
            -
                  end
         
     | 
| 
       47 
     | 
    
         
            -
                else
         
     | 
| 
       48 
     | 
    
         
            -
                  TYPE_CLASSES.each do |type_class|
         
     | 
| 
       49 
     | 
    
         
            -
                    refine type_class.singleton_class do
         
     | 
| 
       50 
     | 
    
         
            -
                      include Methods
         
     | 
| 
       51 
     | 
    
         
            -
                    end
         
     | 
| 
       52 
     | 
    
         
            -
                  end
         
     | 
| 
       53 
     | 
    
         
            -
                end
         
     | 
| 
       54 
     | 
    
         
            -
              end
         
     | 
| 
       55 
     | 
    
         
            -
            end
         
     |