@@ -17,18 +17,13 @@ def initialize(
17
17
)
18
18
@schema = schema
19
19
@always_include_schema = always_include_schema
20
-
21
- filter = GraphQL ::Language ::DocumentFromSchemaDefinition ::Filter . new (
22
- only ,
23
- except ,
24
- include_introspection_types : include_introspection_types ,
25
- include_built_ins : include_built_ins ,
26
- )
20
+ @include_introspection_types = include_introspection_types
21
+ @include_built_ins = include_built_ins
27
22
28
23
@warden = GraphQL ::Schema ::Warden . new (
29
- filter ,
24
+ GraphQL :: Filter . new ( only : only , except : except ) ,
30
25
schema : @schema ,
31
- context : @ context
26
+ context : context ,
32
27
)
33
28
end
34
29
@@ -59,7 +54,7 @@ def build_schema_node
59
54
def build_object_type_node ( object_type )
60
55
GraphQL ::Language ::Nodes ::ObjectTypeDefinition . new (
61
56
name : object_type . name ,
62
- interfaces : warden . interfaces ( object_type ) . map { |iface | build_type_name_node ( iface ) } ,
57
+ interfaces : warden . interfaces ( object_type ) . sort_by ( & :name ) . map { |iface | build_type_name_node ( iface ) } ,
63
58
fields : build_field_nodes ( warden . fields ( object_type ) ) ,
64
59
description : object_type . description ,
65
60
)
@@ -78,7 +73,7 @@ def build_union_type_node(union_type)
78
73
GraphQL ::Language ::Nodes ::UnionTypeDefinition . new (
79
74
name : union_type . name ,
80
75
description : union_type . description ,
81
- types : warden . possible_types ( union_type ) . map { |type | build_type_name_node ( type ) }
76
+ types : warden . possible_types ( union_type ) . sort_by ( & :name ) . map { |type | build_type_name_node ( type ) }
82
77
)
83
78
end
84
79
@@ -93,7 +88,7 @@ def build_interface_type_node(interface_type)
93
88
def build_enum_type_node ( enum_type )
94
89
GraphQL ::Language ::Nodes ::EnumTypeDefinition . new (
95
90
name : enum_type . name ,
96
- values : warden . enum_values ( enum_type ) . map do |enum_value |
91
+ values : warden . enum_values ( enum_type ) . sort_by ( & :name ) . map do |enum_value |
97
92
build_enum_value_node ( enum_value )
98
93
end ,
99
94
description : enum_type . description ,
@@ -175,11 +170,19 @@ def build_type_definition_node(type)
175
170
end
176
171
177
172
def build_argument_nodes ( arguments )
178
- arguments . map { |arg | build_argument_node ( arg ) }
173
+ arguments
174
+ . map { |arg | build_argument_node ( arg ) }
175
+ . sort_by ( &:name )
179
176
end
180
177
181
178
def build_directive_nodes ( directives )
182
- directives . map { |directive | build_directive_node ( directive ) }
179
+ if !include_built_ins
180
+ directives = directives . reject { |directive | built_in? ( directive ) }
181
+ end
182
+
183
+ directives
184
+ . map { |directive | build_directive_node ( directive ) }
185
+ . sort_by ( &:name )
183
186
end
184
187
185
188
def build_definition_nodes
@@ -190,61 +193,42 @@ def build_definition_nodes
190
193
end
191
194
192
195
def build_type_definition_nodes ( types )
193
- types . map { |type | build_type_definition_node ( type ) }
194
- end
195
-
196
- def build_field_nodes ( fields )
197
- fields . map { |field | build_field_node ( field ) }
198
- end
199
-
200
- class Filter
201
- def initialize ( only , except , include_introspection_types :, include_built_ins :)
202
- @only = only
203
- @except = except
204
- @include_introspection_types = include_introspection_types
205
- @include_built_ins = include_built_ins
196
+ if !include_introspection_types
197
+ types = types . reject { |type | introspection? ( type ) }
206
198
end
207
199
208
- def call ( member , context )
209
- if !include_introspection_types && introspection? ( member )
210
- return false
211
- end
212
-
213
- if !include_built_ins && built_in? ( member )
214
- return false
215
- end
216
-
217
- if only
218
- !only . call ( member , context )
219
- elsif except
220
- except . call ( member , context )
221
- else
222
- true
223
- end
200
+ if !include_built_ins
201
+ types = types . reject { |type | built_in? ( type ) }
224
202
end
225
203
226
- private
204
+ types
205
+ . map { |type | build_type_definition_node ( type ) }
206
+ . sort_by ( &:name )
207
+ end
227
208
228
- attr_reader :include_introspection_types , :include_built_ins ,
229
- :only , :except
209
+ def build_field_nodes ( fields )
210
+ fields
211
+ . map { |field | build_field_node ( field ) }
212
+ . sort_by ( &:name )
213
+ end
230
214
231
- def introspection? ( member )
232
- member . is_a? ( BaseType ) && member . introspection?
233
- end
215
+ private
234
216
235
- def built_in? ( member )
236
- ( member . is_a? ( GraphQL ::ScalarType ) && member . default_scalar? ) ||
237
- ( member . is_a? ( GraphQL ::Directive ) && member . default_directive? )
238
- end
217
+ def introspection? ( member )
218
+ member . is_a? ( BaseType ) && member . introspection?
239
219
end
240
220
241
- private
221
+ def built_in? ( member )
222
+ ( member . is_a? ( GraphQL ::ScalarType ) && member . default_scalar? ) ||
223
+ ( member . is_a? ( GraphQL ::Directive ) && member . default_directive? )
224
+ end
242
225
243
226
def include_schema_node?
244
- @ always_include_schema || !schema . respects_root_name_conventions?
227
+ always_include_schema || !schema . respects_root_name_conventions?
245
228
end
246
229
247
- attr_reader :schema , :warden
230
+ attr_reader :schema , :warden , :always_include_schema ,
231
+ :include_introspection_types , :include_built_ins
248
232
end
249
233
end
250
234
end
0 commit comments