graphql 1.7.14 → 1.8.0.pre1

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.
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]