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.
- checksums.yaml +5 -5
- data/lib/generators/graphql/function_generator.rb +1 -1
- data/lib/generators/graphql/loader_generator.rb +1 -1
- data/lib/generators/graphql/mutation_generator.rb +1 -6
- data/lib/generators/graphql/templates/function.erb +2 -2
- data/lib/generators/graphql/templates/loader.erb +2 -2
- data/lib/graphql.rb +2 -0
- data/lib/graphql/argument.rb +0 -1
- data/lib/graphql/backwards_compatibility.rb +2 -3
- data/lib/graphql/base_type.rb +18 -16
- data/lib/graphql/compatibility/query_parser_specification.rb +0 -117
- data/lib/graphql/compatibility/query_parser_specification/parse_error_specification.rb +0 -14
- data/lib/graphql/define/assign_object_field.rb +5 -12
- data/lib/graphql/deprecated_dsl.rb +28 -0
- data/lib/graphql/directive.rb +0 -1
- data/lib/graphql/enum_type.rb +1 -3
- data/lib/graphql/execution.rb +0 -1
- data/lib/graphql/execution/multiplex.rb +29 -12
- data/lib/graphql/field.rb +5 -20
- data/lib/graphql/function.rb +12 -0
- data/lib/graphql/input_object_type.rb +1 -3
- data/lib/graphql/internal_representation/node.rb +14 -26
- data/lib/graphql/internal_representation/visit.rb +6 -3
- data/lib/graphql/introspection/arguments_field.rb +0 -1
- data/lib/graphql/introspection/enum_values_field.rb +0 -1
- data/lib/graphql/introspection/fields_field.rb +0 -1
- data/lib/graphql/introspection/input_fields_field.rb +0 -1
- data/lib/graphql/introspection/interfaces_field.rb +0 -1
- data/lib/graphql/introspection/of_type_field.rb +0 -1
- data/lib/graphql/introspection/possible_types_field.rb +0 -1
- data/lib/graphql/introspection/schema_field.rb +0 -1
- data/lib/graphql/introspection/type_by_name_field.rb +0 -1
- data/lib/graphql/introspection/typename_field.rb +0 -1
- data/lib/graphql/language.rb +0 -3
- data/lib/graphql/language/generation.rb +182 -3
- data/lib/graphql/language/lexer.rb +69 -144
- data/lib/graphql/language/lexer.rl +4 -15
- data/lib/graphql/language/nodes.rb +76 -136
- data/lib/graphql/language/parser.rb +621 -668
- data/lib/graphql/language/parser.y +11 -17
- data/lib/graphql/language/token.rb +3 -10
- data/lib/graphql/object_type.rb +6 -1
- data/lib/graphql/query.rb +13 -8
- data/lib/graphql/query/arguments.rb +33 -48
- data/lib/graphql/query/context.rb +1 -0
- data/lib/graphql/query/literal_input.rb +1 -4
- data/lib/graphql/relay/connection_resolve.rb +3 -0
- data/lib/graphql/relay/global_id_resolve.rb +5 -1
- data/lib/graphql/relay/relation_connection.rb +19 -14
- data/lib/graphql/schema.rb +219 -12
- data/lib/graphql/schema/argument.rb +33 -0
- data/lib/graphql/schema/build_from_definition.rb +18 -64
- data/lib/graphql/schema/enum.rb +76 -0
- data/lib/graphql/schema/field.rb +127 -0
- data/lib/graphql/schema/field/dynamic_resolve.rb +63 -0
- data/lib/graphql/schema/field/unwrapped_resolve.rb +20 -0
- data/lib/graphql/schema/input_object.rb +61 -0
- data/lib/graphql/schema/interface.rb +32 -0
- data/lib/graphql/schema/loader.rb +2 -2
- data/lib/graphql/schema/member.rb +97 -0
- data/lib/graphql/schema/member/build_type.rb +106 -0
- data/lib/graphql/schema/member/has_fields.rb +56 -0
- data/lib/graphql/schema/member/instrumentation.rb +113 -0
- data/lib/graphql/schema/member/list_type_proxy.rb +21 -0
- data/lib/graphql/schema/member/non_null_type_proxy.rb +21 -0
- data/lib/graphql/schema/object.rb +65 -0
- data/lib/graphql/schema/printer.rb +266 -33
- data/lib/graphql/schema/scalar.rb +25 -0
- data/lib/graphql/schema/traversal.rb +26 -17
- data/lib/graphql/schema/union.rb +48 -0
- data/lib/graphql/static_validation/rules/fields_have_appropriate_selections.rb +1 -5
- data/lib/graphql/static_validation/rules/fields_will_merge.rb +8 -15
- data/lib/graphql/static_validation/rules/variables_are_used_and_defined.rb +1 -11
- data/lib/graphql/subscriptions/action_cable_subscriptions.rb +5 -7
- data/lib/graphql/tracing.rb +0 -1
- data/lib/graphql/tracing/platform_tracing.rb +7 -20
- data/lib/graphql/tracing/scout_tracing.rb +2 -2
- data/lib/graphql/unresolved_type_error.rb +2 -3
- data/lib/graphql/version.rb +1 -1
- data/readme.md +1 -1
- data/spec/dummy/app/channels/graphql_channel.rb +1 -22
- data/spec/dummy/log/development.log +0 -239
- data/spec/dummy/log/test.log +0 -204
- data/spec/dummy/test/system/action_cable_subscription_test.rb +0 -4
- data/spec/dummy/tmp/screenshots/failures_test_it_handles_subscriptions.png +0 -0
- data/spec/generators/graphql/function_generator_spec.rb +0 -26
- data/spec/generators/graphql/loader_generator_spec.rb +0 -24
- data/spec/graphql/analysis/max_query_complexity_spec.rb +3 -3
- data/spec/graphql/analysis/max_query_depth_spec.rb +3 -3
- data/spec/graphql/backtrace_spec.rb +0 -10
- data/spec/graphql/base_type_spec.rb +5 -19
- data/spec/graphql/boolean_type_spec.rb +3 -3
- data/spec/graphql/directive_spec.rb +1 -3
- data/spec/graphql/enum_type_spec.rb +5 -18
- data/spec/graphql/execution/execute_spec.rb +1 -1
- data/spec/graphql/execution/multiplex_spec.rb +2 -2
- data/spec/graphql/float_type_spec.rb +2 -2
- data/spec/graphql/id_type_spec.rb +1 -1
- data/spec/graphql/input_object_type_spec.rb +2 -15
- data/spec/graphql/int_type_spec.rb +2 -2
- data/spec/graphql/internal_representation/rewrite_spec.rb +2 -2
- data/spec/graphql/introspection/schema_type_spec.rb +0 -1
- data/spec/graphql/language/generation_spec.rb +186 -21
- data/spec/graphql/language/lexer_spec.rb +1 -21
- data/spec/graphql/language/nodes_spec.rb +12 -21
- data/spec/graphql/language/parser_spec.rb +1 -1
- data/spec/graphql/query/arguments_spec.rb +15 -37
- data/spec/graphql/query/serial_execution/value_resolution_spec.rb +2 -2
- data/spec/graphql/query/variables_spec.rb +1 -1
- data/spec/graphql/query_spec.rb +5 -31
- data/spec/graphql/rake_task_spec.rb +1 -3
- data/spec/graphql/relay/base_connection_spec.rb +1 -1
- data/spec/graphql/relay/connection_instrumentation_spec.rb +2 -2
- data/spec/graphql/relay/connection_resolve_spec.rb +1 -1
- data/spec/graphql/relay/connection_type_spec.rb +1 -1
- data/spec/graphql/relay/mutation_spec.rb +3 -3
- data/spec/graphql/relay/relation_connection_spec.rb +1 -65
- data/spec/graphql/schema/build_from_definition_spec.rb +4 -86
- data/spec/graphql/schema/enum_spec.rb +60 -0
- data/spec/graphql/schema/field_spec.rb +14 -0
- data/spec/graphql/schema/input_object_spec.rb +43 -0
- data/spec/graphql/schema/interface_spec.rb +98 -0
- data/spec/graphql/schema/object_spec.rb +119 -0
- data/spec/graphql/schema/printer_spec.rb +15 -92
- data/spec/graphql/schema/scalar_spec.rb +40 -0
- data/spec/graphql/schema/union_spec.rb +35 -0
- data/spec/graphql/schema/validation_spec.rb +1 -1
- data/spec/graphql/schema/warden_spec.rb +11 -11
- data/spec/graphql/schema_spec.rb +25 -23
- data/spec/graphql/static_validation/rules/fields_have_appropriate_selections_spec.rb +2 -10
- data/spec/graphql/static_validation/rules/fields_will_merge_spec.rb +2 -2
- data/spec/graphql/string_type_spec.rb +3 -3
- data/spec/graphql/subscriptions_spec.rb +1 -1
- data/spec/graphql/tracing/platform_tracing_spec.rb +1 -60
- data/spec/support/dummy/schema.rb +25 -39
- data/spec/support/jazz.rb +334 -0
- data/spec/support/lazy_helpers.rb +21 -23
- data/spec/support/star_wars/data.rb +7 -6
- data/spec/support/star_wars/schema.rb +109 -142
- metadata +39 -33
- data/lib/graphql/execution/instrumentation.rb +0 -82
- data/lib/graphql/language/block_string.rb +0 -47
- data/lib/graphql/language/document_from_schema_definition.rb +0 -277
- data/lib/graphql/language/printer.rb +0 -351
- data/lib/graphql/tracing/data_dog_tracing.rb +0 -49
- data/spec/graphql/execution/instrumentation_spec.rb +0 -165
- data/spec/graphql/language/block_string_spec.rb +0 -70
- data/spec/graphql/language/document_from_schema_definition_spec.rb +0 -770
- data/spec/graphql/language/printer_spec.rb +0 -203
@@ -34,9 +34,6 @@
|
|
34
34
|
RBRACKET = ']';
|
35
35
|
COLON = ':';
|
36
36
|
QUOTE = '"';
|
37
|
-
BLOCK_QUOTE = '"""';
|
38
|
-
ESCAPED_BLOCK_QUOTE = '\\"""';
|
39
|
-
BLOCK_STRING_CHAR = (ESCAPED_BLOCK_QUOTE | ^'"""');
|
40
37
|
ESCAPED_QUOTE = '\\"';
|
41
38
|
STRING_CHAR = (ESCAPED_QUOTE | ^'"');
|
42
39
|
VAR_SIGN = '$';
|
@@ -45,10 +42,9 @@
|
|
45
42
|
EQUALS = '=';
|
46
43
|
BANG = '!';
|
47
44
|
PIPE = '|';
|
48
|
-
AMP = '&';
|
49
45
|
|
50
46
|
QUOTED_STRING = QUOTE STRING_CHAR* QUOTE;
|
51
|
-
|
47
|
+
|
52
48
|
# catch-all for anything else. must be at the bottom for precedence.
|
53
49
|
UNKNOWN_CHAR = /./;
|
54
50
|
|
@@ -79,15 +75,13 @@
|
|
79
75
|
RBRACKET => { emit(:RBRACKET, ts, te, meta) };
|
80
76
|
LBRACKET => { emit(:LBRACKET, ts, te, meta) };
|
81
77
|
COLON => { emit(:COLON, ts, te, meta) };
|
82
|
-
QUOTED_STRING => { emit_string(ts, te, meta
|
83
|
-
BLOCK_STRING => { emit_string(ts, te, meta, block: true) };
|
78
|
+
QUOTED_STRING => { emit_string(ts + 1, te - 1, meta) };
|
84
79
|
VAR_SIGN => { emit(:VAR_SIGN, ts, te, meta) };
|
85
80
|
DIR_SIGN => { emit(:DIR_SIGN, ts, te, meta) };
|
86
81
|
ELLIPSIS => { emit(:ELLIPSIS, ts, te, meta) };
|
87
82
|
EQUALS => { emit(:EQUALS, ts, te, meta) };
|
88
83
|
BANG => { emit(:BANG, ts, te, meta) };
|
89
84
|
PIPE => { emit(:PIPE, ts, te, meta) };
|
90
|
-
AMP => { emit(:AMP, ts, te, meta) };
|
91
85
|
IDENTIFIER => { emit(:IDENTIFIER, ts, te, meta) };
|
92
86
|
COMMENT => { record_comment(ts, te, meta) };
|
93
87
|
|
@@ -194,13 +188,8 @@ module GraphQL
|
|
194
188
|
PACK_DIRECTIVE = "c*"
|
195
189
|
UTF_8_ENCODING = "UTF-8"
|
196
190
|
|
197
|
-
def self.emit_string(ts, te, meta
|
198
|
-
|
199
|
-
ts += quotes_length
|
200
|
-
value = meta[:data][ts...te - quotes_length].pack(PACK_DIRECTIVE).force_encoding(UTF_8_ENCODING)
|
201
|
-
if block
|
202
|
-
value = GraphQL::Language::BlockString.trim_whitespace(value)
|
203
|
-
end
|
191
|
+
def self.emit_string(ts, te, meta)
|
192
|
+
value = meta[:data][ts...te].pack(PACK_DIRECTIVE).force_encoding(UTF_8_ENCODING)
|
204
193
|
if value !~ VALID_STRING
|
205
194
|
meta[:tokens] << token = GraphQL::Language::Token.new(
|
206
195
|
name: :BAD_UNICODE_ESCAPE,
|
@@ -8,16 +8,7 @@ module GraphQL
|
|
8
8
|
# - `children` returns all AST nodes attached to this one. Used for tree traversal.
|
9
9
|
# - `scalars` returns all scalar (Ruby) values attached to this one. Used for comparing nodes.
|
10
10
|
# - `to_query_string` turns an AST node into a GraphQL string
|
11
|
-
|
12
11
|
class AbstractNode
|
13
|
-
module Scalars # :nodoc:
|
14
|
-
module Name
|
15
|
-
def scalars
|
16
|
-
super + [name]
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
12
|
attr_accessor :line, :col, :filename
|
22
13
|
|
23
14
|
# Initialize a node by extracting its position,
|
@@ -50,50 +41,79 @@ module GraphQL
|
|
50
41
|
|
51
42
|
# @return [Array<GraphQL::Language::Nodes::AbstractNode>] all nodes in the tree below this one
|
52
43
|
def children
|
53
|
-
|
44
|
+
self.class.child_attributes
|
45
|
+
.map { |attr_name| public_send(attr_name) }
|
46
|
+
.flatten
|
54
47
|
end
|
55
48
|
|
56
49
|
# @return [Array<Integer, Float, String, Boolean, Array>] Scalar values attached to this node
|
57
50
|
def scalars
|
58
|
-
|
51
|
+
self.class.scalar_attributes
|
52
|
+
.map { |attr_name| public_send(attr_name) }
|
53
|
+
end
|
54
|
+
|
55
|
+
class << self
|
56
|
+
# A node subclass inherits `scalar_attributes`
|
57
|
+
# and `child_attributes` from its parent
|
58
|
+
def inherited(subclass)
|
59
|
+
subclass.scalar_attributes(*@scalar_attributes)
|
60
|
+
subclass.child_attributes(*@child_attributes)
|
61
|
+
end
|
62
|
+
|
63
|
+
# define `attr_names` as places where scalars may be attached to this node
|
64
|
+
def scalar_attributes(*attr_names)
|
65
|
+
@scalar_attributes ||= []
|
66
|
+
@scalar_attributes += attr_names
|
67
|
+
end
|
68
|
+
|
69
|
+
# define `attr_names` as places where child nodes may be attached to this node
|
70
|
+
def child_attributes(*attr_names)
|
71
|
+
@child_attributes ||= []
|
72
|
+
@child_attributes += attr_names
|
73
|
+
end
|
59
74
|
end
|
60
75
|
|
61
76
|
def position
|
62
77
|
[line, col]
|
63
78
|
end
|
64
79
|
|
65
|
-
def to_query_string
|
66
|
-
|
80
|
+
def to_query_string
|
81
|
+
Generation.generate(self)
|
67
82
|
end
|
68
83
|
end
|
69
84
|
|
70
85
|
# Base class for non-null type names and list type names
|
71
86
|
class WrapperType < AbstractNode
|
72
87
|
attr_accessor :of_type
|
88
|
+
scalar_attributes :of_type
|
73
89
|
|
74
90
|
def initialize_node(of_type: nil)
|
75
91
|
@of_type = of_type
|
76
92
|
end
|
77
93
|
|
78
|
-
def
|
79
|
-
[
|
94
|
+
def children
|
95
|
+
[].freeze
|
80
96
|
end
|
81
97
|
end
|
82
98
|
|
83
99
|
# Base class for nodes whose only value is a name (no child nodes or other scalars)
|
84
100
|
class NameOnlyNode < AbstractNode
|
85
|
-
include Scalars::Name
|
86
|
-
|
87
101
|
attr_accessor :name
|
102
|
+
scalar_attributes :name
|
88
103
|
|
89
104
|
def initialize_node(name: nil)
|
90
105
|
@name = name
|
91
106
|
end
|
107
|
+
|
108
|
+
def children
|
109
|
+
[].freeze
|
110
|
+
end
|
92
111
|
end
|
93
112
|
|
94
113
|
# A key-value pair for a field's inputs
|
95
114
|
class Argument < AbstractNode
|
96
115
|
attr_accessor :name, :value
|
116
|
+
scalar_attributes :name, :value
|
97
117
|
|
98
118
|
# @!attribute name
|
99
119
|
# @return [String] the key for this argument
|
@@ -106,20 +126,15 @@ module GraphQL
|
|
106
126
|
@value = value
|
107
127
|
end
|
108
128
|
|
109
|
-
def scalars
|
110
|
-
[name, value]
|
111
|
-
end
|
112
|
-
|
113
129
|
def children
|
114
130
|
[value].flatten.select { |v| v.is_a?(AbstractNode) }
|
115
131
|
end
|
116
132
|
end
|
117
133
|
|
118
134
|
class Directive < AbstractNode
|
119
|
-
include Scalars::Name
|
120
|
-
|
121
135
|
attr_accessor :name, :arguments
|
122
|
-
|
136
|
+
scalar_attributes :name
|
137
|
+
child_attributes :arguments
|
123
138
|
|
124
139
|
def initialize_node(name: nil, arguments: [])
|
125
140
|
@name = name
|
@@ -128,9 +143,9 @@ module GraphQL
|
|
128
143
|
end
|
129
144
|
|
130
145
|
class DirectiveDefinition < AbstractNode
|
131
|
-
include Scalars::Name
|
132
|
-
|
133
146
|
attr_accessor :name, :arguments, :locations, :description
|
147
|
+
scalar_attributes :name
|
148
|
+
child_attributes :arguments, :locations
|
134
149
|
|
135
150
|
def initialize_node(name: nil, arguments: [], locations: [], description: nil)
|
136
151
|
@name = name
|
@@ -138,10 +153,6 @@ module GraphQL
|
|
138
153
|
@locations = locations
|
139
154
|
@description = description
|
140
155
|
end
|
141
|
-
|
142
|
-
def children
|
143
|
-
arguments + locations
|
144
|
-
end
|
145
156
|
end
|
146
157
|
|
147
158
|
# This is the AST root for normal queries
|
@@ -153,18 +164,9 @@ module GraphQL
|
|
153
164
|
# document.to_query_string
|
154
165
|
# # { ... }
|
155
166
|
#
|
156
|
-
# @example Creating a custom string from a document
|
157
|
-
# class VariableScrubber < GraphQL::Language::Printer
|
158
|
-
# def print_argument(arg)
|
159
|
-
# "#{arg.name}: <HIDDEN>"
|
160
|
-
# end
|
161
|
-
# end
|
162
|
-
#
|
163
|
-
# document.to_query_string(printer: VariableSrubber.new)
|
164
|
-
#
|
165
167
|
class Document < AbstractNode
|
166
168
|
attr_accessor :definitions
|
167
|
-
|
169
|
+
child_attributes :definitions
|
168
170
|
|
169
171
|
# @!attribute definitions
|
170
172
|
# @return [Array<OperationDefinition, FragmentDefinition>] top-level GraphQL units: operations or fragments
|
@@ -186,6 +188,8 @@ module GraphQL
|
|
186
188
|
# A single selection in a GraphQL query.
|
187
189
|
class Field < AbstractNode
|
188
190
|
attr_accessor :name, :alias, :arguments, :directives, :selections
|
191
|
+
scalar_attributes :name, :alias
|
192
|
+
child_attributes :arguments, :directives, :selections
|
189
193
|
|
190
194
|
# @!attribute selections
|
191
195
|
# @return [Array<Nodes::Field>] Selections on this object (or empty array if this is a scalar field)
|
@@ -198,19 +202,13 @@ module GraphQL
|
|
198
202
|
@directives = directives
|
199
203
|
@selections = selections
|
200
204
|
end
|
201
|
-
|
202
|
-
def scalars
|
203
|
-
[name, self.alias]
|
204
|
-
end
|
205
|
-
|
206
|
-
def children
|
207
|
-
arguments + directives + selections
|
208
|
-
end
|
209
205
|
end
|
210
206
|
|
211
207
|
# A reusable fragment, defined at document-level.
|
212
208
|
class FragmentDefinition < AbstractNode
|
213
209
|
attr_accessor :name, :type, :directives, :selections
|
210
|
+
scalar_attributes :name, :type
|
211
|
+
child_attributes :directives, :selections
|
214
212
|
|
215
213
|
# @!attribute name
|
216
214
|
# @return [String] the identifier for this fragment, which may be applied with `...#{name}`
|
@@ -223,22 +221,13 @@ module GraphQL
|
|
223
221
|
@directives = directives
|
224
222
|
@selections = selections
|
225
223
|
end
|
226
|
-
|
227
|
-
def children
|
228
|
-
directives + selections
|
229
|
-
end
|
230
|
-
|
231
|
-
def scalars
|
232
|
-
[name, type]
|
233
|
-
end
|
234
224
|
end
|
235
225
|
|
236
226
|
# Application of a named fragment in a selection
|
237
227
|
class FragmentSpread < AbstractNode
|
238
|
-
include Scalars::Name
|
239
|
-
|
240
228
|
attr_accessor :name, :directives
|
241
|
-
|
229
|
+
scalar_attributes :name
|
230
|
+
child_attributes :directives
|
242
231
|
|
243
232
|
# @!attribute name
|
244
233
|
# @return [String] The identifier of the fragment to apply, corresponds with {FragmentDefinition#name}
|
@@ -252,6 +241,8 @@ module GraphQL
|
|
252
241
|
# An unnamed fragment, defined directly in the query with `... { }`
|
253
242
|
class InlineFragment < AbstractNode
|
254
243
|
attr_accessor :type, :directives, :selections
|
244
|
+
scalar_attributes :type
|
245
|
+
child_attributes :directives, :selections
|
255
246
|
|
256
247
|
# @!attribute type
|
257
248
|
# @return [String, nil] Name of the type this fragment applies to, or `nil` if this fragment applies to any type
|
@@ -261,20 +252,12 @@ module GraphQL
|
|
261
252
|
@directives = directives
|
262
253
|
@selections = selections
|
263
254
|
end
|
264
|
-
|
265
|
-
def children
|
266
|
-
directives + selections
|
267
|
-
end
|
268
|
-
|
269
|
-
def scalars
|
270
|
-
[type]
|
271
|
-
end
|
272
255
|
end
|
273
256
|
|
274
257
|
# A collection of key-value inputs which may be a field argument
|
275
258
|
class InputObject < AbstractNode
|
276
259
|
attr_accessor :arguments
|
277
|
-
|
260
|
+
child_attributes :arguments
|
278
261
|
|
279
262
|
# @!attribute arguments
|
280
263
|
# @return [Array<Nodes::Argument>] A list of key-value pairs inside this input object
|
@@ -295,16 +278,13 @@ module GraphQL
|
|
295
278
|
private
|
296
279
|
|
297
280
|
def serialize_value_for_hash(value)
|
298
|
-
|
299
|
-
when InputObject
|
281
|
+
if value.is_a? InputObject
|
300
282
|
value.to_h
|
301
|
-
|
283
|
+
elsif value.is_a? Array
|
302
284
|
value.map do |v|
|
303
285
|
serialize_value_for_hash v
|
304
286
|
end
|
305
|
-
|
306
|
-
value.name
|
307
|
-
when NullValue
|
287
|
+
elsif value.is_a? NullValue
|
308
288
|
nil
|
309
289
|
else
|
310
290
|
value
|
@@ -324,6 +304,8 @@ module GraphQL
|
|
324
304
|
# May be explicitly typed (eg `mutation { ... }`) or implicitly a query (eg `{ ... }`).
|
325
305
|
class OperationDefinition < AbstractNode
|
326
306
|
attr_accessor :operation_type, :name, :variables, :directives, :selections
|
307
|
+
scalar_attributes :operation_type, :name
|
308
|
+
child_attributes :variables, :directives, :selections
|
327
309
|
|
328
310
|
# @!attribute variables
|
329
311
|
# @return [Array<VariableDefinition>] Variable definitions for this operation
|
@@ -344,14 +326,6 @@ module GraphQL
|
|
344
326
|
@directives = directives
|
345
327
|
@selections = selections
|
346
328
|
end
|
347
|
-
|
348
|
-
def children
|
349
|
-
variables + directives + selections
|
350
|
-
end
|
351
|
-
|
352
|
-
def scalars
|
353
|
-
[operation_type, name]
|
354
|
-
end
|
355
329
|
end
|
356
330
|
|
357
331
|
# A type name, used for variable definitions
|
@@ -360,6 +334,7 @@ module GraphQL
|
|
360
334
|
# An operation-level query variable
|
361
335
|
class VariableDefinition < AbstractNode
|
362
336
|
attr_accessor :name, :type, :default_value
|
337
|
+
scalar_attributes :name, :type, :default_value
|
363
338
|
|
364
339
|
# @!attribute default_value
|
365
340
|
# @return [String, Integer, Float, Boolean, Array, NullValue] A Ruby value to use if no other value is provided
|
@@ -375,10 +350,6 @@ module GraphQL
|
|
375
350
|
@type = type
|
376
351
|
@default_value = default_value
|
377
352
|
end
|
378
|
-
|
379
|
-
def scalars
|
380
|
-
[name, type, default_value]
|
381
|
-
end
|
382
353
|
end
|
383
354
|
|
384
355
|
# Usage of a variable in a query. Name does _not_ include `$`.
|
@@ -386,23 +357,19 @@ module GraphQL
|
|
386
357
|
|
387
358
|
class SchemaDefinition < AbstractNode
|
388
359
|
attr_accessor :query, :mutation, :subscription
|
360
|
+
scalar_attributes :query, :mutation, :subscription
|
389
361
|
|
390
362
|
def initialize_node(query: nil, mutation: nil, subscription: nil)
|
391
363
|
@query = query
|
392
364
|
@mutation = mutation
|
393
365
|
@subscription = subscription
|
394
366
|
end
|
395
|
-
|
396
|
-
def scalars
|
397
|
-
[query, mutation, subscription]
|
398
|
-
end
|
399
367
|
end
|
400
368
|
|
401
369
|
class ScalarTypeDefinition < AbstractNode
|
402
|
-
include Scalars::Name
|
403
|
-
|
404
370
|
attr_accessor :name, :directives, :description
|
405
|
-
|
371
|
+
scalar_attributes :name
|
372
|
+
child_attributes :directives
|
406
373
|
|
407
374
|
def initialize_node(name:, directives: [], description: nil)
|
408
375
|
@name = name
|
@@ -412,9 +379,9 @@ module GraphQL
|
|
412
379
|
end
|
413
380
|
|
414
381
|
class ObjectTypeDefinition < AbstractNode
|
415
|
-
include Scalars::Name
|
416
|
-
|
417
382
|
attr_accessor :name, :interfaces, :fields, :directives, :description
|
383
|
+
scalar_attributes :name
|
384
|
+
child_attributes :interfaces, :fields, :directives
|
418
385
|
|
419
386
|
def initialize_node(name:, interfaces:, fields:, directives: [], description: nil)
|
420
387
|
@name = name
|
@@ -423,15 +390,12 @@ module GraphQL
|
|
423
390
|
@fields = fields
|
424
391
|
@description = description
|
425
392
|
end
|
426
|
-
|
427
|
-
def children
|
428
|
-
interfaces + fields + directives
|
429
|
-
end
|
430
393
|
end
|
431
394
|
|
432
395
|
class InputValueDefinition < AbstractNode
|
433
396
|
attr_accessor :name, :type, :default_value, :directives,:description
|
434
|
-
|
397
|
+
scalar_attributes :name, :type, :default_value
|
398
|
+
child_attributes :directives
|
435
399
|
|
436
400
|
def initialize_node(name:, type:, default_value: nil, directives: [], description: nil)
|
437
401
|
@name = name
|
@@ -440,14 +404,12 @@ module GraphQL
|
|
440
404
|
@directives = directives
|
441
405
|
@description = description
|
442
406
|
end
|
443
|
-
|
444
|
-
def scalars
|
445
|
-
[name, type, default_value]
|
446
|
-
end
|
447
407
|
end
|
448
408
|
|
449
409
|
class FieldDefinition < AbstractNode
|
450
410
|
attr_accessor :name, :arguments, :type, :directives, :description
|
411
|
+
scalar_attributes :name, :type
|
412
|
+
child_attributes :arguments, :directives
|
451
413
|
|
452
414
|
def initialize_node(name:, arguments:, type:, directives: [], description: nil)
|
453
415
|
@name = name
|
@@ -456,20 +418,12 @@ module GraphQL
|
|
456
418
|
@directives = directives
|
457
419
|
@description = description
|
458
420
|
end
|
459
|
-
|
460
|
-
def children
|
461
|
-
arguments + directives
|
462
|
-
end
|
463
|
-
|
464
|
-
def scalars
|
465
|
-
[name, type]
|
466
|
-
end
|
467
421
|
end
|
468
422
|
|
469
423
|
class InterfaceTypeDefinition < AbstractNode
|
470
|
-
include Scalars::Name
|
471
|
-
|
472
424
|
attr_accessor :name, :fields, :directives, :description
|
425
|
+
scalar_attributes :name
|
426
|
+
child_attributes :fields, :directives
|
473
427
|
|
474
428
|
def initialize_node(name:, fields:, directives: [], description: nil)
|
475
429
|
@name = name
|
@@ -477,16 +431,12 @@ module GraphQL
|
|
477
431
|
@directives = directives
|
478
432
|
@description = description
|
479
433
|
end
|
480
|
-
|
481
|
-
def children
|
482
|
-
fields + directives
|
483
|
-
end
|
484
434
|
end
|
485
435
|
|
486
436
|
class UnionTypeDefinition < AbstractNode
|
487
|
-
include Scalars::Name
|
488
|
-
|
489
437
|
attr_accessor :name, :types, :directives, :description
|
438
|
+
scalar_attributes :name
|
439
|
+
child_attributes :types, :directives
|
490
440
|
|
491
441
|
def initialize_node(name:, types:, directives: [], description: nil)
|
492
442
|
@name = name
|
@@ -494,16 +444,12 @@ module GraphQL
|
|
494
444
|
@directives = directives
|
495
445
|
@description = description
|
496
446
|
end
|
497
|
-
|
498
|
-
def children
|
499
|
-
types + directives
|
500
|
-
end
|
501
447
|
end
|
502
448
|
|
503
449
|
class EnumTypeDefinition < AbstractNode
|
504
|
-
include Scalars::Name
|
505
|
-
|
506
450
|
attr_accessor :name, :values, :directives, :description
|
451
|
+
scalar_attributes :name
|
452
|
+
child_attributes :values, :directives
|
507
453
|
|
508
454
|
def initialize_node(name:, values:, directives: [], description: nil)
|
509
455
|
@name = name
|
@@ -511,17 +457,12 @@ module GraphQL
|
|
511
457
|
@directives = directives
|
512
458
|
@description = description
|
513
459
|
end
|
514
|
-
|
515
|
-
def children
|
516
|
-
values + directives
|
517
|
-
end
|
518
460
|
end
|
519
461
|
|
520
462
|
class EnumValueDefinition < AbstractNode
|
521
|
-
include Scalars::Name
|
522
|
-
|
523
463
|
attr_accessor :name, :directives, :description
|
524
|
-
|
464
|
+
scalar_attributes :name
|
465
|
+
child_attributes :directives
|
525
466
|
|
526
467
|
def initialize_node(name:, directives: [], description: nil)
|
527
468
|
@name = name
|
@@ -531,10 +472,9 @@ module GraphQL
|
|
531
472
|
end
|
532
473
|
|
533
474
|
class InputObjectTypeDefinition < AbstractNode
|
534
|
-
include Scalars::Name
|
535
|
-
|
536
475
|
attr_accessor :name, :fields, :directives, :description
|
537
|
-
|
476
|
+
scalar_attributes :name
|
477
|
+
child_attributes :fields
|
538
478
|
|
539
479
|
def initialize_node(name:, fields:, directives: [], description: nil)
|
540
480
|
@name = name
|