graphql 1.7.14 → 1.8.0.pre1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (149) hide show
  1. checksums.yaml +5 -5
  2. data/lib/generators/graphql/function_generator.rb +1 -1
  3. data/lib/generators/graphql/loader_generator.rb +1 -1
  4. data/lib/generators/graphql/mutation_generator.rb +1 -6
  5. data/lib/generators/graphql/templates/function.erb +2 -2
  6. data/lib/generators/graphql/templates/loader.erb +2 -2
  7. data/lib/graphql.rb +2 -0
  8. data/lib/graphql/argument.rb +0 -1
  9. data/lib/graphql/backwards_compatibility.rb +2 -3
  10. data/lib/graphql/base_type.rb +18 -16
  11. data/lib/graphql/compatibility/query_parser_specification.rb +0 -117
  12. data/lib/graphql/compatibility/query_parser_specification/parse_error_specification.rb +0 -14
  13. data/lib/graphql/define/assign_object_field.rb +5 -12
  14. data/lib/graphql/deprecated_dsl.rb +28 -0
  15. data/lib/graphql/directive.rb +0 -1
  16. data/lib/graphql/enum_type.rb +1 -3
  17. data/lib/graphql/execution.rb +0 -1
  18. data/lib/graphql/execution/multiplex.rb +29 -12
  19. data/lib/graphql/field.rb +5 -20
  20. data/lib/graphql/function.rb +12 -0
  21. data/lib/graphql/input_object_type.rb +1 -3
  22. data/lib/graphql/internal_representation/node.rb +14 -26
  23. data/lib/graphql/internal_representation/visit.rb +6 -3
  24. data/lib/graphql/introspection/arguments_field.rb +0 -1
  25. data/lib/graphql/introspection/enum_values_field.rb +0 -1
  26. data/lib/graphql/introspection/fields_field.rb +0 -1
  27. data/lib/graphql/introspection/input_fields_field.rb +0 -1
  28. data/lib/graphql/introspection/interfaces_field.rb +0 -1
  29. data/lib/graphql/introspection/of_type_field.rb +0 -1
  30. data/lib/graphql/introspection/possible_types_field.rb +0 -1
  31. data/lib/graphql/introspection/schema_field.rb +0 -1
  32. data/lib/graphql/introspection/type_by_name_field.rb +0 -1
  33. data/lib/graphql/introspection/typename_field.rb +0 -1
  34. data/lib/graphql/language.rb +0 -3
  35. data/lib/graphql/language/generation.rb +182 -3
  36. data/lib/graphql/language/lexer.rb +69 -144
  37. data/lib/graphql/language/lexer.rl +4 -15
  38. data/lib/graphql/language/nodes.rb +76 -136
  39. data/lib/graphql/language/parser.rb +621 -668
  40. data/lib/graphql/language/parser.y +11 -17
  41. data/lib/graphql/language/token.rb +3 -10
  42. data/lib/graphql/object_type.rb +6 -1
  43. data/lib/graphql/query.rb +13 -8
  44. data/lib/graphql/query/arguments.rb +33 -48
  45. data/lib/graphql/query/context.rb +1 -0
  46. data/lib/graphql/query/literal_input.rb +1 -4
  47. data/lib/graphql/relay/connection_resolve.rb +3 -0
  48. data/lib/graphql/relay/global_id_resolve.rb +5 -1
  49. data/lib/graphql/relay/relation_connection.rb +19 -14
  50. data/lib/graphql/schema.rb +219 -12
  51. data/lib/graphql/schema/argument.rb +33 -0
  52. data/lib/graphql/schema/build_from_definition.rb +18 -64
  53. data/lib/graphql/schema/enum.rb +76 -0
  54. data/lib/graphql/schema/field.rb +127 -0
  55. data/lib/graphql/schema/field/dynamic_resolve.rb +63 -0
  56. data/lib/graphql/schema/field/unwrapped_resolve.rb +20 -0
  57. data/lib/graphql/schema/input_object.rb +61 -0
  58. data/lib/graphql/schema/interface.rb +32 -0
  59. data/lib/graphql/schema/loader.rb +2 -2
  60. data/lib/graphql/schema/member.rb +97 -0
  61. data/lib/graphql/schema/member/build_type.rb +106 -0
  62. data/lib/graphql/schema/member/has_fields.rb +56 -0
  63. data/lib/graphql/schema/member/instrumentation.rb +113 -0
  64. data/lib/graphql/schema/member/list_type_proxy.rb +21 -0
  65. data/lib/graphql/schema/member/non_null_type_proxy.rb +21 -0
  66. data/lib/graphql/schema/object.rb +65 -0
  67. data/lib/graphql/schema/printer.rb +266 -33
  68. data/lib/graphql/schema/scalar.rb +25 -0
  69. data/lib/graphql/schema/traversal.rb +26 -17
  70. data/lib/graphql/schema/union.rb +48 -0
  71. data/lib/graphql/static_validation/rules/fields_have_appropriate_selections.rb +1 -5
  72. data/lib/graphql/static_validation/rules/fields_will_merge.rb +8 -15
  73. data/lib/graphql/static_validation/rules/variables_are_used_and_defined.rb +1 -11
  74. data/lib/graphql/subscriptions/action_cable_subscriptions.rb +5 -7
  75. data/lib/graphql/tracing.rb +0 -1
  76. data/lib/graphql/tracing/platform_tracing.rb +7 -20
  77. data/lib/graphql/tracing/scout_tracing.rb +2 -2
  78. data/lib/graphql/unresolved_type_error.rb +2 -3
  79. data/lib/graphql/version.rb +1 -1
  80. data/readme.md +1 -1
  81. data/spec/dummy/app/channels/graphql_channel.rb +1 -22
  82. data/spec/dummy/log/development.log +0 -239
  83. data/spec/dummy/log/test.log +0 -204
  84. data/spec/dummy/test/system/action_cable_subscription_test.rb +0 -4
  85. data/spec/dummy/tmp/screenshots/failures_test_it_handles_subscriptions.png +0 -0
  86. data/spec/generators/graphql/function_generator_spec.rb +0 -26
  87. data/spec/generators/graphql/loader_generator_spec.rb +0 -24
  88. data/spec/graphql/analysis/max_query_complexity_spec.rb +3 -3
  89. data/spec/graphql/analysis/max_query_depth_spec.rb +3 -3
  90. data/spec/graphql/backtrace_spec.rb +0 -10
  91. data/spec/graphql/base_type_spec.rb +5 -19
  92. data/spec/graphql/boolean_type_spec.rb +3 -3
  93. data/spec/graphql/directive_spec.rb +1 -3
  94. data/spec/graphql/enum_type_spec.rb +5 -18
  95. data/spec/graphql/execution/execute_spec.rb +1 -1
  96. data/spec/graphql/execution/multiplex_spec.rb +2 -2
  97. data/spec/graphql/float_type_spec.rb +2 -2
  98. data/spec/graphql/id_type_spec.rb +1 -1
  99. data/spec/graphql/input_object_type_spec.rb +2 -15
  100. data/spec/graphql/int_type_spec.rb +2 -2
  101. data/spec/graphql/internal_representation/rewrite_spec.rb +2 -2
  102. data/spec/graphql/introspection/schema_type_spec.rb +0 -1
  103. data/spec/graphql/language/generation_spec.rb +186 -21
  104. data/spec/graphql/language/lexer_spec.rb +1 -21
  105. data/spec/graphql/language/nodes_spec.rb +12 -21
  106. data/spec/graphql/language/parser_spec.rb +1 -1
  107. data/spec/graphql/query/arguments_spec.rb +15 -37
  108. data/spec/graphql/query/serial_execution/value_resolution_spec.rb +2 -2
  109. data/spec/graphql/query/variables_spec.rb +1 -1
  110. data/spec/graphql/query_spec.rb +5 -31
  111. data/spec/graphql/rake_task_spec.rb +1 -3
  112. data/spec/graphql/relay/base_connection_spec.rb +1 -1
  113. data/spec/graphql/relay/connection_instrumentation_spec.rb +2 -2
  114. data/spec/graphql/relay/connection_resolve_spec.rb +1 -1
  115. data/spec/graphql/relay/connection_type_spec.rb +1 -1
  116. data/spec/graphql/relay/mutation_spec.rb +3 -3
  117. data/spec/graphql/relay/relation_connection_spec.rb +1 -65
  118. data/spec/graphql/schema/build_from_definition_spec.rb +4 -86
  119. data/spec/graphql/schema/enum_spec.rb +60 -0
  120. data/spec/graphql/schema/field_spec.rb +14 -0
  121. data/spec/graphql/schema/input_object_spec.rb +43 -0
  122. data/spec/graphql/schema/interface_spec.rb +98 -0
  123. data/spec/graphql/schema/object_spec.rb +119 -0
  124. data/spec/graphql/schema/printer_spec.rb +15 -92
  125. data/spec/graphql/schema/scalar_spec.rb +40 -0
  126. data/spec/graphql/schema/union_spec.rb +35 -0
  127. data/spec/graphql/schema/validation_spec.rb +1 -1
  128. data/spec/graphql/schema/warden_spec.rb +11 -11
  129. data/spec/graphql/schema_spec.rb +25 -23
  130. data/spec/graphql/static_validation/rules/fields_have_appropriate_selections_spec.rb +2 -10
  131. data/spec/graphql/static_validation/rules/fields_will_merge_spec.rb +2 -2
  132. data/spec/graphql/string_type_spec.rb +3 -3
  133. data/spec/graphql/subscriptions_spec.rb +1 -1
  134. data/spec/graphql/tracing/platform_tracing_spec.rb +1 -60
  135. data/spec/support/dummy/schema.rb +25 -39
  136. data/spec/support/jazz.rb +334 -0
  137. data/spec/support/lazy_helpers.rb +21 -23
  138. data/spec/support/star_wars/data.rb +7 -6
  139. data/spec/support/star_wars/schema.rb +109 -142
  140. metadata +39 -33
  141. data/lib/graphql/execution/instrumentation.rb +0 -82
  142. data/lib/graphql/language/block_string.rb +0 -47
  143. data/lib/graphql/language/document_from_schema_definition.rb +0 -277
  144. data/lib/graphql/language/printer.rb +0 -351
  145. data/lib/graphql/tracing/data_dog_tracing.rb +0 -49
  146. data/spec/graphql/execution/instrumentation_spec.rb +0 -165
  147. data/spec/graphql/language/block_string_spec.rb +0 -70
  148. data/spec/graphql/language/document_from_schema_definition_spec.rb +0 -770
  149. data/spec/graphql/language/printer_spec.rb +0 -203
@@ -16,6 +16,17 @@ require "graphql/schema/validation"
16
16
  require "graphql/schema/warden"
17
17
  require "graphql/schema/build_from_definition"
18
18
 
19
+
20
+ require "graphql/schema/member"
21
+ require "graphql/schema/argument"
22
+ require "graphql/schema/enum"
23
+ require "graphql/schema/field"
24
+ require "graphql/schema/input_object"
25
+ require "graphql/schema/interface"
26
+ require "graphql/schema/object"
27
+ require "graphql/schema/scalar"
28
+ require "graphql/schema/union"
29
+
19
30
  module GraphQL
20
31
  # A GraphQL schema which may be queried with {GraphQL::Query}.
21
32
  #
@@ -80,7 +91,6 @@ module GraphQL
80
91
  :orphan_types, :directives,
81
92
  :query_analyzers, :multiplex_analyzers, :instrumenters, :lazy_methods,
82
93
  :cursor_encoder,
83
- :ast_node,
84
94
  :raise_definition_error
85
95
 
86
96
  # Single, long-lived instance of the provided subscriptions class, if there is one.
@@ -387,6 +397,18 @@ module GraphQL
387
397
  # @param ctx [GraphQL::Query::Context] The context for the current query
388
398
  # @return [GraphQL::ObjectType] The type for exposing `object` in GraphQL
389
399
  def resolve_type(type, object, ctx = :__undefined__)
400
+ check_resolved_type(type, object, ctx) do |ok_type, ok_object, ok_ctx|
401
+ if @resolve_type_proc.nil?
402
+ raise(NotImplementedError, "Can't determine GraphQL type for: #{ok_object.inspect}, define `resolve_type (type, obj, ctx) -> { ... }` inside `Schema.define`.")
403
+ end
404
+ @resolve_type_proc.call(ok_type, ok_object, ok_ctx)
405
+ end
406
+ end
407
+
408
+ # This is a compatibility hack so that instance-level and class-level
409
+ # methods can get correctness checks without calling one another
410
+ # @api private
411
+ def check_resolved_type(type, object, ctx = :__undefined__)
390
412
  if ctx == :__undefined__
391
413
  # Old method signature
392
414
  ctx = object
@@ -394,15 +416,20 @@ module GraphQL
394
416
  type = nil
395
417
  end
396
418
 
419
+ if object.is_a?(GraphQL::Schema::Object)
420
+ object = object.object
421
+ end
422
+
397
423
  # Prefer a type-local function; fall back to the schema-level function
398
424
  type_proc = type && type.resolve_type_proc
399
425
  type_result = if type_proc
400
426
  type_proc.call(object, ctx)
401
427
  else
402
- if @resolve_type_proc.nil?
403
- raise(NotImplementedError, "Can't determine GraphQL type for: #{object.inspect}, define `resolve_type (type, obj, ctx) -> { ... }` inside `Schema.define`.")
404
- end
405
- @resolve_type_proc.call(type, object, ctx)
428
+ yield(type, object, ctx)
429
+ end
430
+
431
+ if type_result.respond_to?(:graphql_definition)
432
+ type_result = type_result.graphql_definition
406
433
  end
407
434
 
408
435
  if type_result.nil?
@@ -543,19 +570,13 @@ module GraphQL
543
570
  GraphQL::Schema::Printer.print_schema(self, only: only, except: except, context: context)
544
571
  end
545
572
 
546
- # Return the GraphQL::Language::Document IDL AST for the schema
547
- # @return [GraphQL::Language::Document]
548
- def to_document
549
- GraphQL::Language::DocumentFromSchemaDefinition.new(self).document
550
- end
551
-
552
573
  # Return the Hash response of {Introspection::INTROSPECTION_QUERY}.
553
574
  # @param context [Hash]
554
575
  # @param only [<#call(member, ctx)>]
555
576
  # @param except [<#call(member, ctx)>]
556
577
  # @return [Hash] GraphQL result
557
578
  def as_json(only: nil, except: nil, context: {})
558
- execute(Introspection::INTROSPECTION_QUERY, only: only, except: except, context: context).to_h
579
+ execute(Introspection::INTROSPECTION_QUERY, only: only, except: except, context: context)
559
580
  end
560
581
 
561
582
  # Returns the JSON response of {Introspection::INTROSPECTION_QUERY}.
@@ -565,6 +586,191 @@ module GraphQL
565
586
  JSON.pretty_generate(as_json(*args))
566
587
  end
567
588
 
589
+ class << self
590
+ extend GraphQL::Delegate
591
+ def_delegators :graphql_definition, :as_json, :to_json
592
+
593
+ def method_missing(method_name, *args, &block)
594
+ if graphql_definition.respond_to?(method_name)
595
+ graphql_definition.public_send(method_name, *args, &block)
596
+ else
597
+ super
598
+ end
599
+ end
600
+
601
+ def respond_to_missing?(method_name, incl_private = false)
602
+ graphql_definition.respond_to?(method_name, incl_private) || super
603
+ end
604
+
605
+ def graphql_definition
606
+ @graphql_definition ||= to_graphql
607
+ end
608
+
609
+ def use(plugin, options = {})
610
+ plugins << [plugin, options]
611
+ end
612
+
613
+ def plugins
614
+ @plugins ||= []
615
+ end
616
+
617
+ def to_graphql
618
+ schema_defn = self.new
619
+ schema_defn.query = query
620
+ schema_defn.mutation = mutation
621
+ schema_defn.subscription = subscription
622
+ schema_defn.max_depth = max_depth
623
+ schema_defn.default_max_page_size = default_max_page_size
624
+ schema_defn.orphan_types = orphan_types
625
+ if !directives
626
+ directives(DIRECTIVES)
627
+ end
628
+ schema_defn.directives = directives
629
+ schema_defn.resolve_type = method(:resolve_type)
630
+ schema_defn.object_from_id = method(:object_from_id)
631
+ schema_defn.id_from_object = method(:id_from_object)
632
+ instrumenters.each do |step, insts|
633
+ insts.each do |inst|
634
+ schema_defn.instrumenters[step] << inst
635
+ end
636
+ end
637
+ schema_defn.instrumenters[:query] << GraphQL::Schema::Member::Instrumentation
638
+ lazy_classes.each do |lazy_class, value_method|
639
+ schema_defn.lazy_methods.set(lazy_class, value_method)
640
+ end
641
+ if plugins.any?
642
+ schema_plugins = plugins
643
+ # TODO don't depend on .define
644
+ schema_defn = schema_defn.redefine do
645
+ schema_plugins.each do |plugin, options|
646
+ if options.any?
647
+ use(plugin, **options)
648
+ else
649
+ use(plugin)
650
+ end
651
+ end
652
+ end
653
+ end
654
+ schema_defn.send(:rebuild_artifacts)
655
+
656
+ schema_defn
657
+ end
658
+
659
+ def query(new_query_object = nil)
660
+ if new_query_object
661
+ @query_object = new_query_object
662
+ else
663
+ @query_object.respond_to?(:graphql_definition) ? @query_object.graphql_definition : @query_object
664
+ end
665
+ end
666
+
667
+ def mutation(new_mutation_object = nil)
668
+ if new_mutation_object
669
+ @mutation_object = new_mutation_object
670
+ else
671
+ @mutation_object.respond_to?(:graphql_definition) ? @mutation_object.graphql_definition : @mutation_object
672
+ end
673
+ end
674
+
675
+ def subscription(new_subscription_object = nil)
676
+ if new_subscription_object
677
+ @subscription_object = new_subscription_object
678
+ else
679
+ @subscription_object.respond_to?(:graphql_definition) ? @subscription_object.graphql_definition : @subscription_object
680
+ end
681
+ end
682
+
683
+ def default_max_page_size(new_default_max_page_size = nil)
684
+ if new_default_max_page_size
685
+ @default_max_page_size = new_default_max_page_size
686
+ else
687
+ @default_max_page_size
688
+ end
689
+ end
690
+
691
+ def max_depth(new_max_depth = nil)
692
+ if new_max_depth
693
+ @max_depth = new_max_depth
694
+ else
695
+ @max_depth
696
+ end
697
+ end
698
+
699
+ def orphan_types(new_orphan_types = nil)
700
+ if new_orphan_types
701
+ @orphan_types = new_orphan_types
702
+ else
703
+ @orphan_types || []
704
+ end
705
+ end
706
+
707
+ def default_execution_strategy
708
+ if superclass <= GraphQL::Schema
709
+ superclass.default_execution_strategy
710
+ else
711
+ @default_execution_strategy
712
+ end
713
+ end
714
+
715
+ def resolve_type(type, obj, ctx)
716
+ raise NotImplementedError, "#{self.name}.resolve_type(type, obj, ctx) must be implemented to use Union types or Interface types (tried to resolve: #{type.name})"
717
+ end
718
+
719
+ def object_from_id(node_id, ctx)
720
+ raise NotImplementedError, "#{self.name}.object_from_id(node_id, ctx) must be implemented to use the `node` field (tried to load from id `#{node_id}`)"
721
+ end
722
+
723
+ def id_from_object(object, type, ctx)
724
+ raise NotImplementedError, "#{self.name}.id_from_object(object, type, ctx) must be implemented to create global ids (tried to create an id for `#{object.inspect}`)"
725
+ end
726
+
727
+ def lazy_resolve(lazy_class, value_method)
728
+ lazy_classes[lazy_class] = value_method
729
+ end
730
+
731
+ def instrument(instrument_step, instrumenter, options = {})
732
+ step = if instrument_step == :field && options[:after_built_ins]
733
+ :field_after_built_ins
734
+ else
735
+ instrument_step
736
+ end
737
+ instrumenters[step] << instrumenter
738
+ end
739
+
740
+ def directives(new_directives = nil)
741
+ if new_directives
742
+ @directives = new_directives.reduce({}) { |m, d| m[d.name] = d; m }
743
+ end
744
+ @directives
745
+ end
746
+
747
+ private
748
+
749
+ def lazy_classes
750
+ @lazy_classes ||= {}
751
+ end
752
+
753
+ def instrumenters
754
+ @instrumenters ||= Hash.new { |h,k| h[k] = [] }
755
+ end
756
+ end
757
+
758
+
759
+ def self.inherited(child_class)
760
+ child_class.singleton_class.class_eval do
761
+ prepend(MethodWrappers)
762
+ end
763
+ end
764
+
765
+ module MethodWrappers
766
+ # Wrap the user-provided resolve-type in a correctness check
767
+ def resolve_type(type, obj, ctx = :__undefined__)
768
+ graphql_definition.check_resolved_type(type, obj, ctx) do |ok_type, ok_obj, ok_ctx|
769
+ super(ok_type, ok_obj, ok_ctx)
770
+ end
771
+ end
772
+ end
773
+
568
774
  protected
569
775
 
570
776
  def rescues?
@@ -585,6 +791,7 @@ module GraphQL
585
791
  GraphQL::Relay::ConnectionInstrumentation,
586
792
  GraphQL::Relay::EdgesInstrumentation,
587
793
  GraphQL::Relay::Mutation::Instrumentation,
794
+ GraphQL::Schema::Member::Instrumentation,
588
795
  ]
589
796
 
590
797
  def rebuild_artifacts
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+ module GraphQL
3
+ class Schema
4
+ class Argument
5
+ include GraphQL::Schema::Member::CachedGraphQLDefinition
6
+
7
+ NO_DEFAULT = :__no_default__
8
+
9
+ attr_reader :name
10
+
11
+ def initialize(arg_name, type_expr, desc = nil, required:, default_value: NO_DEFAULT)
12
+ @name = arg_name.to_s
13
+ @type_expr = type_expr
14
+ @description = desc
15
+ @null = !required
16
+ @default_value = default_value
17
+ end
18
+
19
+ def to_graphql
20
+ argument = GraphQL::Argument.new
21
+ argument.name = @name
22
+ argument.type = -> {
23
+ Member::BuildType.parse_type(@type_expr, null: @null)
24
+ }
25
+ argument.description = @description
26
+ if NO_DEFAULT != @default_value
27
+ argument.default_value = @default_value
28
+ end
29
+ argument
30
+ end
31
+ end
32
+ end
33
+ end
@@ -107,8 +107,6 @@ module GraphQL
107
107
  directives directives.values
108
108
  end
109
109
 
110
- schema.ast_node = schema_definition if schema_definition
111
-
112
110
  schema
113
111
  end
114
112
 
@@ -119,26 +117,18 @@ module GraphQL
119
117
  NullScalarCoerce = ->(val, _ctx) { val }
120
118
 
121
119
  def build_enum_type(enum_type_definition, type_resolver)
122
- enum = GraphQL::EnumType.define(
120
+ GraphQL::EnumType.define(
123
121
  name: enum_type_definition.name,
124
122
  description: enum_type_definition.description,
125
123
  values: enum_type_definition.values.map do |enum_value_definition|
126
- value = EnumType::EnumValue.define(
124
+ EnumType::EnumValue.define(
127
125
  name: enum_value_definition.name,
128
126
  value: enum_value_definition.name,
129
127
  deprecation_reason: build_deprecation_reason(enum_value_definition.directives),
130
128
  description: enum_value_definition.description,
131
129
  )
132
-
133
- value.ast_node = enum_value_definition
134
-
135
- value
136
130
  end
137
131
  )
138
-
139
- enum.ast_node = enum_type_definition
140
-
141
- enum
142
132
  end
143
133
 
144
134
  def build_deprecation_reason(directives)
@@ -158,8 +148,6 @@ module GraphQL
158
148
  coerce: NullScalarCoerce,
159
149
  )
160
150
 
161
- scalar_type.ast_node = scalar_type_definition
162
-
163
151
  if default_resolve.respond_to?(:coerce_input)
164
152
  scalar_type = scalar_type.redefine(
165
153
  coerce_input: ->(val, ctx) { default_resolve.coerce_input(scalar_type, val, ctx) },
@@ -171,15 +159,11 @@ module GraphQL
171
159
  end
172
160
 
173
161
  def build_union_type(union_type_definition, type_resolver)
174
- union = GraphQL::UnionType.define(
162
+ GraphQL::UnionType.define(
175
163
  name: union_type_definition.name,
176
164
  description: union_type_definition.description,
177
165
  possible_types: union_type_definition.types.map{ |type_name| type_resolver.call(type_name) },
178
166
  )
179
-
180
- union.ast_node = union_type_definition
181
-
182
- union
183
167
  end
184
168
 
185
169
  def build_object_type(object_type_definition, type_resolver, default_resolve:)
@@ -191,20 +175,14 @@ module GraphQL
191
175
  fields: Hash[build_fields(object_type_definition.fields, type_resolver, default_resolve: typed_resolve_fn)],
192
176
  interfaces: object_type_definition.interfaces.map{ |interface_name| type_resolver.call(interface_name) },
193
177
  )
194
- type_def.ast_node = object_type_definition
195
- type_def
196
178
  end
197
179
 
198
180
  def build_input_object_type(input_object_type_definition, type_resolver)
199
- input = GraphQL::InputObjectType.define(
181
+ GraphQL::InputObjectType.define(
200
182
  name: input_object_type_definition.name,
201
183
  description: input_object_type_definition.description,
202
184
  arguments: Hash[build_input_arguments(input_object_type_definition, type_resolver)],
203
185
  )
204
-
205
- input.ast_node = input_object_type_definition
206
-
207
- input
208
186
  end
209
187
 
210
188
  def build_default_value(default_value)
@@ -213,10 +191,6 @@ module GraphQL
213
191
  default_value.name
214
192
  when GraphQL::Language::Nodes::NullValue
215
193
  nil
216
- when GraphQL::Language::Nodes::InputObject
217
- default_value.to_h
218
- when Array
219
- default_value.map { |v| build_default_value(v) }
220
194
  else
221
195
  default_value
222
196
  end
@@ -230,33 +204,25 @@ module GraphQL
230
204
  kwargs[:default_value] = build_default_value(input_argument.default_value)
231
205
  end
232
206
 
233
- argument = GraphQL::Argument.define(
234
- name: input_argument.name,
235
- type: type_resolver.call(input_argument.type),
236
- description: input_argument.description,
237
- **kwargs,
238
- )
239
-
240
- argument.ast_node = input_object_type_definition
241
-
242
207
  [
243
208
  input_argument.name,
244
- argument
209
+ GraphQL::Argument.define(
210
+ name: input_argument.name,
211
+ type: type_resolver.call(input_argument.type),
212
+ description: input_argument.description,
213
+ **kwargs,
214
+ )
245
215
  ]
246
216
  end
247
217
  end
248
218
 
249
219
  def build_directive(directive_definition, type_resolver)
250
- directive = GraphQL::Directive.define(
220
+ GraphQL::Directive.define(
251
221
  name: directive_definition.name,
252
222
  description: directive_definition.description,
253
223
  arguments: Hash[build_directive_arguments(directive_definition, type_resolver)],
254
224
  locations: directive_definition.locations.map(&:to_sym),
255
225
  )
256
-
257
- directive.ast_node = directive_definition
258
-
259
- directive
260
226
  end
261
227
 
262
228
  def build_directive_arguments(directive_definition, type_resolver)
@@ -267,32 +233,24 @@ module GraphQL
267
233
  kwargs[:default_value] = build_default_value(directive_argument.default_value)
268
234
  end
269
235
 
270
- argument = GraphQL::Argument.define(
271
- name: directive_argument.name,
272
- type: type_resolver.call(directive_argument.type),
273
- description: directive_argument.description,
274
- **kwargs,
275
- )
276
-
277
- argument.ast_node = directive_argument
278
-
279
236
  [
280
237
  directive_argument.name,
281
- argument
238
+ GraphQL::Argument.define(
239
+ name: directive_argument.name,
240
+ type: type_resolver.call(directive_argument.type),
241
+ description: directive_argument.description,
242
+ **kwargs,
243
+ )
282
244
  ]
283
245
  end
284
246
  end
285
247
 
286
248
  def build_interface_type(interface_type_definition, type_resolver)
287
- interface = GraphQL::InterfaceType.define(
249
+ GraphQL::InterfaceType.define(
288
250
  name: interface_type_definition.name,
289
251
  description: interface_type_definition.description,
290
252
  fields: Hash[build_fields(interface_type_definition.fields, type_resolver, default_resolve: nil)],
291
253
  )
292
-
293
- interface.ast_node = interface_type_definition
294
-
295
- interface
296
254
  end
297
255
 
298
256
  def build_fields(field_definitions, type_resolver, default_resolve:)
@@ -311,8 +269,6 @@ module GraphQL
311
269
  **kwargs,
312
270
  )
313
271
 
314
- arg.ast_node = argument
315
-
316
272
  [argument.name, arg]
317
273
  end]
318
274
 
@@ -325,8 +281,6 @@ module GraphQL
325
281
  deprecation_reason: build_deprecation_reason(field_definition.directives),
326
282
  )
327
283
 
328
- field.ast_node = field_definition
329
-
330
284
  type_name = resolve_type_name(field_definition.type)
331
285
  field.connection = type_name.end_with?("Connection")
332
286
  [field_definition.name, field]