graphql 1.8.0 → 1.12.12

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.

Files changed (924) hide show
  1. checksums.yaml +5 -5
  2. data/lib/generators/graphql/core.rb +20 -3
  3. data/lib/generators/graphql/enum_generator.rb +3 -3
  4. data/lib/generators/graphql/install_generator.rb +52 -7
  5. data/lib/generators/graphql/loader_generator.rb +1 -0
  6. data/lib/generators/graphql/mutation_generator.rb +7 -6
  7. data/lib/generators/graphql/object_generator.rb +52 -8
  8. data/lib/generators/graphql/relay.rb +55 -0
  9. data/lib/generators/graphql/relay_generator.rb +21 -0
  10. data/lib/generators/graphql/scalar_generator.rb +20 -0
  11. data/lib/generators/graphql/templates/base_argument.erb +6 -0
  12. data/lib/generators/graphql/templates/base_connection.erb +8 -0
  13. data/lib/generators/graphql/templates/base_edge.erb +8 -0
  14. data/lib/generators/graphql/templates/base_enum.erb +6 -0
  15. data/lib/generators/graphql/templates/base_field.erb +7 -0
  16. data/lib/generators/graphql/templates/base_input_object.erb +7 -0
  17. data/lib/generators/graphql/templates/base_interface.erb +9 -0
  18. data/lib/generators/graphql/templates/base_mutation.erb +10 -0
  19. data/lib/generators/graphql/templates/base_object.erb +7 -0
  20. data/lib/generators/graphql/templates/base_scalar.erb +6 -0
  21. data/lib/generators/graphql/templates/base_union.erb +6 -0
  22. data/lib/generators/graphql/templates/enum.erb +7 -4
  23. data/lib/generators/graphql/templates/graphql_controller.erb +28 -9
  24. data/lib/generators/graphql/templates/interface.erb +8 -4
  25. data/lib/generators/graphql/templates/loader.erb +16 -12
  26. data/lib/generators/graphql/templates/mutation.erb +13 -9
  27. data/lib/generators/graphql/templates/mutation_type.erb +10 -9
  28. data/lib/generators/graphql/templates/node_type.erb +9 -0
  29. data/lib/generators/graphql/templates/object.erb +8 -5
  30. data/lib/generators/graphql/templates/query_type.erb +12 -12
  31. data/lib/generators/graphql/templates/scalar.erb +15 -0
  32. data/lib/generators/graphql/templates/schema.erb +13 -30
  33. data/lib/generators/graphql/templates/union.erb +7 -4
  34. data/lib/generators/graphql/type_generator.rb +34 -18
  35. data/lib/generators/graphql/union_generator.rb +1 -1
  36. data/lib/graphql/analysis/analyze_query.rb +18 -2
  37. data/lib/graphql/analysis/ast/analyzer.rb +84 -0
  38. data/lib/graphql/analysis/ast/field_usage.rb +28 -0
  39. data/lib/graphql/analysis/ast/max_query_complexity.rb +23 -0
  40. data/lib/graphql/analysis/ast/max_query_depth.rb +22 -0
  41. data/lib/graphql/analysis/ast/query_complexity.rb +234 -0
  42. data/lib/graphql/analysis/ast/query_depth.rb +56 -0
  43. data/lib/graphql/analysis/ast/visitor.rb +268 -0
  44. data/lib/graphql/analysis/ast.rb +91 -0
  45. data/lib/graphql/analysis/query_depth.rb +4 -17
  46. data/lib/graphql/analysis.rb +1 -0
  47. data/lib/graphql/argument.rb +40 -39
  48. data/lib/graphql/authorization.rb +82 -0
  49. data/lib/graphql/backtrace/inspect_result.rb +0 -1
  50. data/lib/graphql/backtrace/legacy_tracer.rb +56 -0
  51. data/lib/graphql/backtrace/table.rb +44 -5
  52. data/lib/graphql/backtrace/traced_error.rb +0 -1
  53. data/lib/graphql/backtrace/tracer.rb +37 -9
  54. data/lib/graphql/backtrace.rb +28 -19
  55. data/lib/graphql/backwards_compatibility.rb +3 -2
  56. data/lib/graphql/base_type.rb +9 -4
  57. data/lib/graphql/boolean_type.rb +1 -8
  58. data/lib/graphql/coercion_error.rb +8 -0
  59. data/lib/graphql/compatibility/execution_specification/specification_schema.rb +3 -4
  60. data/lib/graphql/compatibility/execution_specification.rb +1 -0
  61. data/lib/graphql/compatibility/lazy_execution_specification/lazy_schema.rb +3 -2
  62. data/lib/graphql/compatibility/lazy_execution_specification.rb +2 -0
  63. data/lib/graphql/compatibility/query_parser_specification/parse_error_specification.rb +5 -9
  64. data/lib/graphql/compatibility/query_parser_specification.rb +2 -0
  65. data/lib/graphql/compatibility/schema_parser_specification.rb +443 -7
  66. data/lib/graphql/dataloader/null_dataloader.rb +22 -0
  67. data/lib/graphql/dataloader/request.rb +19 -0
  68. data/lib/graphql/dataloader/request_all.rb +19 -0
  69. data/lib/graphql/dataloader/source.rb +107 -0
  70. data/lib/graphql/dataloader.rb +252 -0
  71. data/lib/graphql/define/assign_enum_value.rb +1 -1
  72. data/lib/graphql/define/assign_global_id_field.rb +2 -2
  73. data/lib/graphql/define/assign_object_field.rb +3 -3
  74. data/lib/graphql/define/defined_object_proxy.rb +3 -0
  75. data/lib/graphql/define/instance_definable.rb +52 -110
  76. data/lib/graphql/define/type_definer.rb +5 -5
  77. data/lib/graphql/deprecated_dsl.rb +7 -2
  78. data/lib/graphql/deprecation.rb +13 -0
  79. data/lib/graphql/dig.rb +19 -0
  80. data/lib/graphql/directive/deprecated_directive.rb +1 -12
  81. data/lib/graphql/directive/include_directive.rb +1 -7
  82. data/lib/graphql/directive/skip_directive.rb +1 -8
  83. data/lib/graphql/directive.rb +21 -2
  84. data/lib/graphql/enum_type.rb +16 -71
  85. data/lib/graphql/execution/directive_checks.rb +2 -2
  86. data/lib/graphql/execution/errors.rb +162 -0
  87. data/lib/graphql/execution/execute.rb +112 -46
  88. data/lib/graphql/execution/instrumentation.rb +30 -20
  89. data/lib/graphql/execution/interpreter/argument_value.rb +28 -0
  90. data/lib/graphql/execution/interpreter/arguments.rb +88 -0
  91. data/lib/graphql/execution/interpreter/arguments_cache.rb +103 -0
  92. data/lib/graphql/execution/interpreter/execution_errors.rb +29 -0
  93. data/lib/graphql/execution/interpreter/handles_raw_value.rb +18 -0
  94. data/lib/graphql/execution/interpreter/resolve.rb +66 -0
  95. data/lib/graphql/execution/interpreter/runtime.rb +817 -0
  96. data/lib/graphql/execution/interpreter.rb +122 -0
  97. data/lib/graphql/execution/lazy/lazy_method_map.rb +4 -0
  98. data/lib/graphql/execution/lazy.rb +27 -3
  99. data/lib/graphql/execution/lookahead.rb +307 -0
  100. data/lib/graphql/execution/multiplex.rb +84 -50
  101. data/lib/graphql/execution.rb +3 -0
  102. data/lib/graphql/execution_error.rb +15 -2
  103. data/lib/graphql/field.rb +19 -123
  104. data/lib/graphql/filter.rb +1 -1
  105. data/lib/graphql/float_type.rb +1 -8
  106. data/lib/graphql/function.rb +6 -31
  107. data/lib/graphql/id_type.rb +1 -15
  108. data/lib/graphql/input_object_type.rb +12 -26
  109. data/lib/graphql/int_type.rb +1 -8
  110. data/lib/graphql/integer_decoding_error.rb +17 -0
  111. data/lib/graphql/integer_encoding_error.rb +20 -0
  112. data/lib/graphql/interface_type.rb +26 -22
  113. data/lib/graphql/internal_representation/document.rb +2 -2
  114. data/lib/graphql/internal_representation/rewrite.rb +127 -142
  115. data/lib/graphql/internal_representation/scope.rb +2 -2
  116. data/lib/graphql/internal_representation/visit.rb +3 -2
  117. data/lib/graphql/introspection/base_object.rb +2 -5
  118. data/lib/graphql/introspection/directive_type.rb +8 -4
  119. data/lib/graphql/introspection/dynamic_fields.rb +9 -3
  120. data/lib/graphql/introspection/entry_points.rb +15 -9
  121. data/lib/graphql/introspection/enum_value_type.rb +4 -0
  122. data/lib/graphql/introspection/field_type.rb +7 -3
  123. data/lib/graphql/introspection/input_value_type.rb +33 -5
  124. data/lib/graphql/introspection/introspection_query.rb +6 -92
  125. data/lib/graphql/introspection/schema_type.rb +6 -5
  126. data/lib/graphql/introspection/type_type.rb +14 -7
  127. data/lib/graphql/introspection.rb +96 -3
  128. data/lib/graphql/invalid_null_error.rb +19 -1
  129. data/lib/graphql/language/block_string.rb +63 -7
  130. data/lib/graphql/language/cache.rb +37 -0
  131. data/lib/graphql/language/definition_slice.rb +21 -10
  132. data/lib/graphql/language/document_from_schema_definition.rb +136 -71
  133. data/lib/graphql/language/lexer.rb +215 -153
  134. data/lib/graphql/language/lexer.rl +86 -53
  135. data/lib/graphql/language/nodes.rb +456 -301
  136. data/lib/graphql/language/parser.rb +1109 -861
  137. data/lib/graphql/language/parser.y +177 -98
  138. data/lib/graphql/language/printer.rb +4 -4
  139. data/lib/graphql/language/sanitized_printer.rb +222 -0
  140. data/lib/graphql/language/token.rb +6 -2
  141. data/lib/graphql/language/visitor.rb +168 -16
  142. data/lib/graphql/language.rb +3 -2
  143. data/lib/graphql/list_type.rb +1 -0
  144. data/lib/graphql/load_application_object_failed_error.rb +22 -0
  145. data/lib/graphql/name_validator.rb +6 -7
  146. data/lib/graphql/non_null_type.rb +1 -10
  147. data/lib/graphql/object_type.rb +52 -59
  148. data/lib/graphql/pagination/active_record_relation_connection.rb +48 -0
  149. data/lib/graphql/pagination/array_connection.rb +77 -0
  150. data/lib/graphql/pagination/connection.rb +226 -0
  151. data/lib/graphql/pagination/connections.rb +136 -0
  152. data/lib/graphql/pagination/mongoid_relation_connection.rb +25 -0
  153. data/lib/graphql/pagination/relation_connection.rb +196 -0
  154. data/lib/graphql/pagination/sequel_dataset_connection.rb +28 -0
  155. data/lib/graphql/pagination.rb +6 -0
  156. data/lib/graphql/parse_error.rb +0 -1
  157. data/lib/graphql/query/arguments.rb +33 -20
  158. data/lib/graphql/query/arguments_cache.rb +1 -2
  159. data/lib/graphql/query/context.rb +92 -23
  160. data/lib/graphql/query/executor.rb +1 -2
  161. data/lib/graphql/query/fingerprint.rb +26 -0
  162. data/lib/graphql/query/input_validation_result.rb +23 -6
  163. data/lib/graphql/query/literal_input.rb +30 -9
  164. data/lib/graphql/query/null_context.rb +18 -3
  165. data/lib/graphql/query/result.rb +1 -1
  166. data/lib/graphql/query/serial_execution.rb +1 -0
  167. data/lib/graphql/query/validation_pipeline.rb +45 -26
  168. data/lib/graphql/query/variable_validation_error.rb +25 -2
  169. data/lib/graphql/query/variables.rb +33 -27
  170. data/lib/graphql/query.rb +119 -29
  171. data/lib/graphql/railtie.rb +15 -7
  172. data/lib/graphql/rake_task/validate.rb +4 -1
  173. data/lib/graphql/rake_task.rb +12 -9
  174. data/lib/graphql/relay/array_connection.rb +11 -13
  175. data/lib/graphql/relay/base_connection.rb +33 -14
  176. data/lib/graphql/relay/connection_instrumentation.rb +24 -18
  177. data/lib/graphql/relay/connection_resolve.rb +7 -27
  178. data/lib/graphql/relay/connection_type.rb +4 -2
  179. data/lib/graphql/relay/edge_type.rb +2 -0
  180. data/lib/graphql/relay/edges_instrumentation.rb +9 -25
  181. data/lib/graphql/relay/mongo_relation_connection.rb +10 -0
  182. data/lib/graphql/relay/mutation/instrumentation.rb +1 -2
  183. data/lib/graphql/relay/mutation/resolve.rb +2 -4
  184. data/lib/graphql/relay/mutation.rb +4 -87
  185. data/lib/graphql/relay/node.rb +8 -36
  186. data/lib/graphql/relay/page_info.rb +1 -9
  187. data/lib/graphql/relay/range_add.rb +23 -9
  188. data/lib/graphql/relay/relation_connection.rb +18 -16
  189. data/lib/graphql/relay/type_extensions.rb +2 -0
  190. data/lib/graphql/relay.rb +0 -1
  191. data/lib/graphql/scalar_type.rb +17 -61
  192. data/lib/graphql/schema/addition.rb +238 -0
  193. data/lib/graphql/schema/argument.rb +263 -15
  194. data/lib/graphql/schema/base_64_bp.rb +26 -0
  195. data/lib/graphql/schema/base_64_encoder.rb +10 -4
  196. data/lib/graphql/schema/build_from_definition/resolve_map/default_resolve.rb +1 -1
  197. data/lib/graphql/schema/build_from_definition/resolve_map.rb +13 -5
  198. data/lib/graphql/schema/build_from_definition.rb +317 -206
  199. data/lib/graphql/schema/built_in_types.rb +12 -0
  200. data/lib/graphql/schema/default_type_error.rb +3 -1
  201. data/lib/graphql/schema/directive/deprecated.rb +18 -0
  202. data/lib/graphql/schema/directive/feature.rb +66 -0
  203. data/lib/graphql/schema/directive/flagged.rb +57 -0
  204. data/lib/graphql/schema/directive/include.rb +25 -0
  205. data/lib/graphql/schema/directive/skip.rb +25 -0
  206. data/lib/graphql/schema/directive/transform.rb +60 -0
  207. data/lib/graphql/schema/directive.rb +210 -0
  208. data/lib/graphql/schema/enum.rb +55 -4
  209. data/lib/graphql/schema/enum_value.rb +24 -5
  210. data/lib/graphql/schema/field/connection_extension.rb +76 -0
  211. data/lib/graphql/schema/field/scope_extension.rb +22 -0
  212. data/lib/graphql/schema/field.rb +548 -125
  213. data/lib/graphql/schema/field_extension.rb +69 -0
  214. data/lib/graphql/schema/find_inherited_value.rb +35 -0
  215. data/lib/graphql/schema/finder.rb +13 -11
  216. data/lib/graphql/schema/input_object.rb +190 -17
  217. data/lib/graphql/schema/interface.rb +49 -7
  218. data/lib/graphql/schema/introspection_system.rb +112 -36
  219. data/lib/graphql/schema/late_bound_type.rb +3 -2
  220. data/lib/graphql/schema/list.rb +55 -12
  221. data/lib/graphql/schema/loader.rb +164 -111
  222. data/lib/graphql/schema/member/base_dsl_methods.rb +59 -30
  223. data/lib/graphql/schema/member/build_type.rb +60 -14
  224. data/lib/graphql/schema/member/cached_graphql_definition.rb +5 -0
  225. data/lib/graphql/schema/member/has_arguments.rb +198 -4
  226. data/lib/graphql/schema/member/has_ast_node.rb +20 -0
  227. data/lib/graphql/schema/member/has_deprecation_reason.rb +25 -0
  228. data/lib/graphql/schema/member/has_directives.rb +98 -0
  229. data/lib/graphql/schema/member/has_fields.rb +51 -76
  230. data/lib/graphql/schema/member/has_path.rb +25 -0
  231. data/lib/graphql/schema/member/has_unresolved_type_error.rb +15 -0
  232. data/lib/graphql/schema/member/has_validators.rb +31 -0
  233. data/lib/graphql/schema/member/instrumentation.rb +42 -26
  234. data/lib/graphql/schema/member/relay_shortcuts.rb +47 -0
  235. data/lib/graphql/schema/member/scoped.rb +21 -0
  236. data/lib/graphql/schema/member/type_system_helpers.rb +7 -3
  237. data/lib/graphql/schema/member/validates_input.rb +33 -0
  238. data/lib/graphql/schema/member.rb +20 -4
  239. data/lib/graphql/schema/middleware_chain.rb +1 -1
  240. data/lib/graphql/schema/mutation.rb +13 -57
  241. data/lib/graphql/schema/non_null.rb +40 -11
  242. data/lib/graphql/schema/object.rb +145 -9
  243. data/lib/graphql/schema/possible_types.rb +14 -7
  244. data/lib/graphql/schema/printer.rb +7 -19
  245. data/lib/graphql/schema/relay_classic_mutation.rb +56 -9
  246. data/lib/graphql/schema/rescue_middleware.rb +7 -2
  247. data/lib/graphql/schema/resolver/has_payload_type.rb +71 -0
  248. data/lib/graphql/schema/resolver.rb +297 -6
  249. data/lib/graphql/schema/scalar.rb +37 -3
  250. data/lib/graphql/schema/subscription.rb +127 -0
  251. data/lib/graphql/schema/timeout.rb +123 -0
  252. data/lib/graphql/schema/timeout_middleware.rb +7 -4
  253. data/lib/graphql/schema/traversal.rb +14 -3
  254. data/lib/graphql/schema/type_expression.rb +21 -13
  255. data/lib/graphql/schema/type_membership.rb +34 -0
  256. data/lib/graphql/schema/union.rb +60 -6
  257. data/lib/graphql/schema/unique_within_type.rb +3 -1
  258. data/lib/graphql/schema/validation.rb +40 -13
  259. data/lib/graphql/schema/validator/exclusion_validator.rb +31 -0
  260. data/lib/graphql/schema/validator/format_validator.rb +49 -0
  261. data/lib/graphql/schema/validator/inclusion_validator.rb +33 -0
  262. data/lib/graphql/schema/validator/length_validator.rb +57 -0
  263. data/lib/graphql/schema/validator/numericality_validator.rb +71 -0
  264. data/lib/graphql/schema/validator/required_validator.rb +68 -0
  265. data/lib/graphql/schema/validator.rb +163 -0
  266. data/lib/graphql/schema/warden.rb +192 -25
  267. data/lib/graphql/schema/wrapper.rb +29 -0
  268. data/lib/graphql/schema.rb +1078 -205
  269. data/lib/graphql/static_validation/all_rules.rb +5 -2
  270. data/lib/graphql/static_validation/base_visitor.rb +214 -0
  271. data/lib/graphql/static_validation/default_visitor.rb +15 -0
  272. data/lib/graphql/static_validation/definition_dependencies.rb +74 -71
  273. data/lib/graphql/static_validation/error.rb +44 -0
  274. data/lib/graphql/static_validation/interpreter_visitor.rb +14 -0
  275. data/lib/graphql/static_validation/literal_validator.rb +87 -19
  276. data/lib/graphql/static_validation/no_validate_visitor.rb +10 -0
  277. data/lib/graphql/static_validation/rules/argument_literals_are_compatible.rb +55 -17
  278. data/lib/graphql/static_validation/rules/argument_literals_are_compatible_error.rb +48 -0
  279. data/lib/graphql/static_validation/rules/argument_names_are_unique.rb +31 -0
  280. data/lib/graphql/static_validation/rules/argument_names_are_unique_error.rb +30 -0
  281. data/lib/graphql/static_validation/rules/arguments_are_defined.rb +61 -8
  282. data/lib/graphql/static_validation/rules/arguments_are_defined_error.rb +37 -0
  283. data/lib/graphql/static_validation/rules/directives_are_defined.rb +12 -15
  284. data/lib/graphql/static_validation/rules/directives_are_defined_error.rb +29 -0
  285. data/lib/graphql/static_validation/rules/directives_are_in_valid_locations.rb +19 -14
  286. data/lib/graphql/static_validation/rules/directives_are_in_valid_locations_error.rb +31 -0
  287. data/lib/graphql/static_validation/rules/fields_are_defined_on_type.rb +18 -20
  288. data/lib/graphql/static_validation/rules/fields_are_defined_on_type_error.rb +32 -0
  289. data/lib/graphql/static_validation/rules/fields_have_appropriate_selections.rb +33 -17
  290. data/lib/graphql/static_validation/rules/fields_have_appropriate_selections_error.rb +31 -0
  291. data/lib/graphql/static_validation/rules/fields_will_merge.rb +381 -30
  292. data/lib/graphql/static_validation/rules/fields_will_merge_error.rb +32 -0
  293. data/lib/graphql/static_validation/rules/fragment_names_are_unique.rb +20 -13
  294. data/lib/graphql/static_validation/rules/fragment_names_are_unique_error.rb +29 -0
  295. data/lib/graphql/static_validation/rules/fragment_spreads_are_possible.rb +37 -29
  296. data/lib/graphql/static_validation/rules/fragment_spreads_are_possible_error.rb +35 -0
  297. data/lib/graphql/static_validation/rules/fragment_types_exist.rb +25 -17
  298. data/lib/graphql/static_validation/rules/fragment_types_exist_error.rb +29 -0
  299. data/lib/graphql/static_validation/rules/fragments_are_finite.rb +12 -10
  300. data/lib/graphql/static_validation/rules/fragments_are_finite_error.rb +29 -0
  301. data/lib/graphql/static_validation/rules/fragments_are_named.rb +7 -11
  302. data/lib/graphql/static_validation/rules/fragments_are_named_error.rb +26 -0
  303. data/lib/graphql/static_validation/rules/fragments_are_on_composite_types.rb +16 -16
  304. data/lib/graphql/static_validation/rules/fragments_are_on_composite_types_error.rb +30 -0
  305. data/lib/graphql/static_validation/rules/fragments_are_used.rb +21 -14
  306. data/lib/graphql/static_validation/rules/fragments_are_used_error.rb +29 -0
  307. data/lib/graphql/static_validation/rules/input_object_names_are_unique.rb +30 -0
  308. data/lib/graphql/static_validation/rules/input_object_names_are_unique_error.rb +30 -0
  309. data/lib/graphql/static_validation/rules/mutation_root_exists.rb +10 -14
  310. data/lib/graphql/static_validation/rules/mutation_root_exists_error.rb +26 -0
  311. data/lib/graphql/static_validation/rules/no_definitions_are_present.rb +31 -22
  312. data/lib/graphql/static_validation/rules/no_definitions_are_present_error.rb +25 -0
  313. data/lib/graphql/static_validation/rules/operation_names_are_valid.rb +25 -17
  314. data/lib/graphql/static_validation/rules/operation_names_are_valid_error.rb +28 -0
  315. data/lib/graphql/static_validation/rules/required_arguments_are_present.rb +19 -20
  316. data/lib/graphql/static_validation/rules/required_arguments_are_present_error.rb +35 -0
  317. data/lib/graphql/static_validation/rules/required_input_object_attributes_are_present.rb +59 -0
  318. data/lib/graphql/static_validation/rules/required_input_object_attributes_are_present_error.rb +35 -0
  319. data/lib/graphql/static_validation/rules/subscription_root_exists.rb +10 -14
  320. data/lib/graphql/static_validation/rules/subscription_root_exists_error.rb +26 -0
  321. data/lib/graphql/static_validation/rules/unique_directives_per_location.rb +28 -17
  322. data/lib/graphql/static_validation/rules/unique_directives_per_location_error.rb +29 -0
  323. data/lib/graphql/static_validation/rules/variable_default_values_are_correctly_typed.rb +35 -19
  324. data/lib/graphql/static_validation/rules/variable_default_values_are_correctly_typed_error.rb +39 -0
  325. data/lib/graphql/static_validation/rules/variable_names_are_unique.rb +15 -14
  326. data/lib/graphql/static_validation/rules/variable_names_are_unique_error.rb +29 -0
  327. data/lib/graphql/static_validation/rules/variable_usages_are_allowed.rb +46 -36
  328. data/lib/graphql/static_validation/rules/variable_usages_are_allowed_error.rb +38 -0
  329. data/lib/graphql/static_validation/rules/variables_are_input_types.rb +18 -14
  330. data/lib/graphql/static_validation/rules/variables_are_input_types_error.rb +32 -0
  331. data/lib/graphql/static_validation/rules/variables_are_used_and_defined.rb +76 -66
  332. data/lib/graphql/static_validation/rules/variables_are_used_and_defined_error.rb +37 -0
  333. data/lib/graphql/static_validation/type_stack.rb +2 -2
  334. data/lib/graphql/static_validation/validation_context.rb +9 -54
  335. data/lib/graphql/static_validation/validation_timeout_error.rb +25 -0
  336. data/lib/graphql/static_validation/validator.rb +56 -16
  337. data/lib/graphql/static_validation.rb +6 -3
  338. data/lib/graphql/string_type.rb +1 -17
  339. data/lib/graphql/subscriptions/action_cable_subscriptions.rb +116 -24
  340. data/lib/graphql/subscriptions/broadcast_analyzer.rb +81 -0
  341. data/lib/graphql/subscriptions/default_subscription_resolve_extension.rb +21 -0
  342. data/lib/graphql/subscriptions/event.rb +62 -8
  343. data/lib/graphql/subscriptions/instrumentation.rb +12 -5
  344. data/lib/graphql/subscriptions/serialize.rb +33 -6
  345. data/lib/graphql/subscriptions/subscription_root.rb +76 -0
  346. data/lib/graphql/subscriptions.rb +119 -35
  347. data/lib/graphql/tracing/active_support_notifications_tracing.rb +16 -12
  348. data/lib/graphql/tracing/appoptics_tracing.rb +173 -0
  349. data/lib/graphql/tracing/appsignal_tracing.rb +9 -1
  350. data/lib/graphql/tracing/data_dog_tracing.rb +28 -1
  351. data/lib/graphql/tracing/new_relic_tracing.rb +12 -15
  352. data/lib/graphql/tracing/platform_tracing.rb +70 -3
  353. data/lib/graphql/tracing/prometheus_tracing/graphql_collector.rb +32 -0
  354. data/lib/graphql/tracing/prometheus_tracing.rb +67 -0
  355. data/lib/graphql/tracing/scout_tracing.rb +20 -1
  356. data/lib/graphql/tracing/skylight_tracing.rb +33 -2
  357. data/lib/graphql/tracing/statsd_tracing.rb +42 -0
  358. data/lib/graphql/tracing.rb +26 -41
  359. data/lib/graphql/type_kinds.rb +41 -14
  360. data/lib/graphql/types/big_int.rb +19 -0
  361. data/lib/graphql/types/boolean.rb +18 -0
  362. data/lib/graphql/types/float.rb +19 -0
  363. data/lib/graphql/types/id.rb +24 -0
  364. data/lib/graphql/types/int.rb +36 -0
  365. data/lib/graphql/types/iso_8601_date.rb +34 -0
  366. data/lib/graphql/types/iso_8601_date_time.rb +65 -0
  367. data/lib/graphql/types/json.rb +25 -0
  368. data/lib/graphql/types/relay/base_connection.rb +39 -0
  369. data/lib/graphql/types/relay/base_edge.rb +29 -0
  370. data/lib/graphql/types/relay/connection_behaviors.rb +156 -0
  371. data/lib/graphql/types/relay/default_relay.rb +27 -0
  372. data/lib/graphql/types/relay/edge_behaviors.rb +53 -0
  373. data/lib/graphql/types/relay/has_node_field.rb +41 -0
  374. data/lib/graphql/types/relay/has_nodes_field.rb +41 -0
  375. data/lib/graphql/types/relay/node.rb +15 -0
  376. data/lib/graphql/types/relay/node_behaviors.rb +15 -0
  377. data/lib/graphql/types/relay/node_field.rb +25 -0
  378. data/lib/graphql/types/relay/nodes_field.rb +27 -0
  379. data/lib/graphql/types/relay/page_info.rb +11 -0
  380. data/lib/graphql/types/relay/page_info_behaviors.rb +25 -0
  381. data/lib/graphql/types/relay.rb +41 -0
  382. data/lib/graphql/types/string.rb +29 -0
  383. data/lib/graphql/types.rb +11 -0
  384. data/lib/graphql/unauthorized_error.rb +29 -0
  385. data/lib/graphql/unauthorized_field_error.rb +23 -0
  386. data/lib/graphql/union_type.rb +78 -45
  387. data/lib/graphql/unresolved_type_error.rb +2 -2
  388. data/lib/graphql/upgrader/member.rb +157 -114
  389. data/lib/graphql/upgrader/schema.rb +1 -0
  390. data/lib/graphql/version.rb +1 -1
  391. data/lib/graphql.rb +108 -20
  392. data/readme.md +8 -8
  393. metadata +213 -1157
  394. data/lib/generators/graphql/function_generator.rb +0 -18
  395. data/lib/generators/graphql/templates/function.erb +0 -17
  396. data/lib/graphql/introspection/schema_field.rb +0 -16
  397. data/lib/graphql/introspection/type_by_name_field.rb +0 -22
  398. data/lib/graphql/introspection/typename_field.rb +0 -12
  399. data/lib/graphql/language/comments.rb +0 -45
  400. data/lib/graphql/static_validation/arguments_validator.rb +0 -50
  401. data/lib/graphql/static_validation/message.rb +0 -40
  402. data/spec/dummy/Gemfile +0 -12
  403. data/spec/dummy/Gemfile.lock +0 -149
  404. data/spec/dummy/README.md +0 -24
  405. data/spec/dummy/Rakefile +0 -7
  406. data/spec/dummy/app/assets/config/manifest.js +0 -1
  407. data/spec/dummy/app/assets/javascripts/application.js +0 -66
  408. data/spec/dummy/app/channels/application_cable/channel.rb +0 -5
  409. data/spec/dummy/app/channels/application_cable/connection.rb +0 -5
  410. data/spec/dummy/app/channels/graphql_channel.rb +0 -105
  411. data/spec/dummy/app/controllers/application_controller.rb +0 -4
  412. data/spec/dummy/app/controllers/pages_controller.rb +0 -5
  413. data/spec/dummy/app/helpers/application_helper.rb +0 -3
  414. data/spec/dummy/app/jobs/application_job.rb +0 -3
  415. data/spec/dummy/app/views/layouts/application.html.erb +0 -12
  416. data/spec/dummy/app/views/pages/show.html +0 -16
  417. data/spec/dummy/bin/bundle +0 -4
  418. data/spec/dummy/bin/rails +0 -5
  419. data/spec/dummy/bin/rake +0 -5
  420. data/spec/dummy/bin/setup +0 -31
  421. data/spec/dummy/bin/update +0 -27
  422. data/spec/dummy/bin/yarn +0 -12
  423. data/spec/dummy/config/application.rb +0 -30
  424. data/spec/dummy/config/boot.rb +0 -4
  425. data/spec/dummy/config/cable.yml +0 -10
  426. data/spec/dummy/config/environment.rb +0 -6
  427. data/spec/dummy/config/environments/development.rb +0 -40
  428. data/spec/dummy/config/environments/production.rb +0 -76
  429. data/spec/dummy/config/environments/test.rb +0 -37
  430. data/spec/dummy/config/initializers/application_controller_renderer.rb +0 -9
  431. data/spec/dummy/config/initializers/backtrace_silencers.rb +0 -8
  432. data/spec/dummy/config/initializers/cookies_serializer.rb +0 -6
  433. data/spec/dummy/config/initializers/filter_parameter_logging.rb +0 -5
  434. data/spec/dummy/config/initializers/inflections.rb +0 -17
  435. data/spec/dummy/config/initializers/mime_types.rb +0 -5
  436. data/spec/dummy/config/initializers/wrap_parameters.rb +0 -10
  437. data/spec/dummy/config/locales/en.yml +0 -33
  438. data/spec/dummy/config/puma.rb +0 -57
  439. data/spec/dummy/config/routes.rb +0 -4
  440. data/spec/dummy/config/secrets.yml +0 -32
  441. data/spec/dummy/config.ru +0 -6
  442. data/spec/dummy/log/development.log +0 -599
  443. data/spec/dummy/log/test.log +0 -1220
  444. data/spec/dummy/package.json +0 -5
  445. data/spec/dummy/public/404.html +0 -67
  446. data/spec/dummy/public/422.html +0 -67
  447. data/spec/dummy/public/500.html +0 -66
  448. data/spec/dummy/public/apple-touch-icon-precomposed.png +0 -0
  449. data/spec/dummy/public/apple-touch-icon.png +0 -0
  450. data/spec/dummy/public/favicon.ico +0 -0
  451. data/spec/dummy/public/robots.txt +0 -1
  452. data/spec/dummy/test/application_system_test_case.rb +0 -6
  453. data/spec/dummy/test/system/action_cable_subscription_test.rb +0 -45
  454. data/spec/dummy/test/test_helper.rb +0 -3
  455. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/-5/-5OWGoO21F6_WNuECrXgkwH7NcKlWSSe2GjVanwsmUk.cache +0 -0
  456. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/-T/-TNJ0-j8HjZCYUE7EDQlhfGu64B8guOUPkXYO6HFhus.cache +0 -0
  457. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/-x/-xYZjAnuuzgR79fcznLTQtSdh6AARxu8FcQ_J6p7L3U.cache +0 -0
  458. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/09/09tM9-9HC9J7np7PawoxLz0YZYB_jmwdMFL4N4WBJdM.cache +0 -1
  459. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0H/0HR_baZ3Owzw1Gx5epPCDhsl0UXWGh73zDkQu08IHuc.cache +0 -1
  460. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/13/13HiV12xyoQvT-1L39ZzLwMZxjyaGMiENmfw7f-QTIc.cache +0 -0
  461. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1I/1IbYhe7oTUZvWCe0pIMBMp5bLq5pCuxuxlgnQV1TAno.cache +0 -2
  462. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1I/1i4n3ptJre3b2zbA9AvgzE-ThTU_1mqSX3AlMtS_Qxk.cache +0 -1
  463. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1L/1LQJg_vkfK3o2UCvJGQKuGjXydCfw7GerrpJCGiKw5k.cache +0 -1
  464. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1U/1U5446rsEAdkd13irJZX_XQoEKv9Ay8wSrKES_-gD8k.cache +0 -0
  465. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2c/2cKLFtRkYbS9lni4MJ8unG2jW0YmNgK6tdelamzjM30.cache +0 -0
  466. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2m/2mGtEm87jDbeppJBYdnCWjRDV5cQaosG-bKVwVN7_kE.cache +0 -1
  467. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2p/2pt2peFCVR6OoIrgufIQbrDGMcFLYwrJtHsLENF31jQ.cache +0 -0
  468. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2u/2uWP73mE8FRywvUKKT08RhFuNUlVUEopIKdt0Jtt8y8.cache +0 -1
  469. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3-/3-C6wEhMG8qKt4rLfzJzMlRBgxb5aDJIB2m5WS0WbAI.cache +0 -0
  470. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/33/33_yR0KysvUnUWvR5TzwELDqGApTbi2ex2o3vY-ybfU.cache +0 -1
  471. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3N/3NTAQ9mVEZbccGibE39JpeqlDw2L6zcUtlRsbPCT918.cache +0 -2
  472. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3V/3V8ZntS_gc1fums5LuLZK0a_nwPIjLXSD0JNF_3ScEk.cache +0 -0
  473. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3W/3Wtf5pCWdqq0AB-iB0Y9uUNrTkruRxIEf1XFn_BETU0.cache +0 -1
  474. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4U/4UAd9Le8LhEYS8mCovy_yQC_ofpTBWt1Q997x0hg6xY.cache +0 -0
  475. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4V/4VaOsvficwh2EmmuR-pEJTISpR9mbr8Cf7jYYyptEwY.cache +0 -2
  476. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/53/53WajXFPOCZVqMrL7nxYAYl90fSweya9XM4vrDJhU6c.cache +0 -1
  477. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/53/53oHiwCXSKokJPEWS6w53bGXkeZm-YAcDuXcBhNscEY.cache +0 -0
  478. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5Q/5QrnrmEh-kADCXW4bexyNOrjfDmlq_YHgPcEYcHtz28.cache +0 -0
  479. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5T/5ThW8FwEh4SPqrxD1RKHSc3o-vA_2ff5zKoly--6uuM.cache +0 -0
  480. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5d/5dGYuqW7Lp3oCc1lq8B9Uoa0lfgE4iOEiGvgwRf1JHA.cache +0 -0
  481. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5f/5fUAiOa1Zm-ove4HOeSLN1OQmEMHu0OYjHrYIK3-SGE.cache +0 -2
  482. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5f/5flfgUDFCRhrUbGifk2RfSEGWOBMubAcaWg4ZadI5PY.cache +0 -1
  483. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5i/5iW33HH6azj0ds2lqDaOB1666CY_uOHhVAQavgh7tYw.cache +0 -1
  484. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5i/5iguGafb4hOn8262Kn8Q37ogNN9MxxQKGKNzHAzUcvI.cache +0 -1
  485. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5m/5m0G50I6WuIDftOEFtJHjC0KmN1mnhe51wBZ2dq9la0.cache +0 -0
  486. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5m/5mzbQNNLQ1vmll1Azo5cAZpDY2Zc7C_CLYJH2zKtzYY.cache +0 -0
  487. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6K/6KeDYkyM_nd3JJSp2B4HtcpdeA3uHgJLSlRaEVpH328.cache +0 -1
  488. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6V/6Vgv7g9Uc08fiIpuLxlhqPTfx6tGo1yLedmmUvEL41A.cache +0 -2
  489. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6n/6nd7P_DUqcusZX7UkA5TILZyMrcu-AYfxnc2Kz_J0qQ.cache +0 -1
  490. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6x/6x8om3H3i1stGMEt1wnZ3OsVPGj-sxwE-eyd7A6hSi8.cache +0 -0
  491. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/70/7037jorQaO3wUpzYOJoDOd8cgJMeC2uTysojXmeaYzs.cache +0 -0
  492. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7p/7pN8wYS-6xc_x5BzT4gRgFAiVGhhcW9NHg_e6Ng5CDw.cache +0 -0
  493. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7r/7rgR5Gy_i08FxXwdCvtqSCXSghB7e5EXB2Vox4MQVUg.cache +0 -2
  494. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8Q/8Qz_ptqTPNDlaE2aAVgaFiIBByiF2fhNHKQJFggzJYA.cache +0 -0
  495. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8e/8ezXMOIySx7oyopI2nH1EXfCzPCFHTJiS3q2tvyEZjY.cache +0 -1
  496. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8m/8mj2T6yy847Mc2Z7k3Xzh8O91hhVJt3NrPe8ASNDlIA.cache +0 -1
  497. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8w/8wY_SKagj8wHuwGNAAf6JnQ8joMbC6cEYpHrTAI8Urc.cache +0 -1
  498. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/99/99m8UCKl4j8IpsVOK8ltLHyNh8Ae0nHw3GBkC34V_co.cache +0 -0
  499. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/9a/9abVi8XfoB8pGShaL5_-jzZGJIxKmedpFY0HQ5h24oE.cache +0 -1
  500. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/9g/9gsAnrIrurboVInpkI-XlUZdUGmshgVKXpdRCtXUt6U.cache +0 -2
  501. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/9l/9lUXwCLUk9jTC-3kZdXDSRo-klgJVL54qVOIQmKxlyo.cache +0 -1
  502. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/9z/9zFndwRgSOtYlsafWZK_zfCvnqMF4Vv9IqkVxn0gUbM.cache +0 -1
  503. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/A2/A2LHSq1LhqpUvGzPhj15d7c1Sj2RkYyajxf8ipO1x0A.cache +0 -1
  504. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/AO/AOgGJjES3shgkGKKaEb6GMfcfUm18alfRVbYsMJKFyc.cache +0 -0
  505. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ag/AgIFaB92zNMX4-Gy1uYelrx1pnszMI9CxP0aO62ismQ.cache +0 -1
  506. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ag/agBYa9WG7ZT869eaOCVQ4mfpe9AWU8oNjU0g9foJZxk.cache +0 -1
  507. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/B4/B43LeT9Wba4fLvXw-C_kKq-x9HwYZxnBBiltbIufzzQ.cache +0 -0
  508. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/B4/b4w856SSmGPJvZoawjQ63nUN1himU_z41nfZQNGvdag.cache +0 -0
  509. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Bg/BgLjB8mXnvRh9DrKcGI_KblFPuA84hjh4nJC50FDsWc.cache +0 -2
  510. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Bw/Bwb0DDjQm45Eqy64G2YHrm2eOj1PkqG51Hh3MWG0V40.cache +0 -1
  511. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/C4/C4hGtajZFD6B_bt3ow2qxPGLb1ycjE_7G8Ssi2q5HuA.cache +0 -1
  512. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/CA/CAI82me2PN_gR-kiw8xQDx9FQBiLj_cyO4HVfZfiqf8.cache +0 -0
  513. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/CR/CR85EGUmeGMQQR96qjUurW5HSk4vr5JgWDLQEFxhnAY.cache +0 -1
  514. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Cn/CniRwlPjVCW9FLyHc9oNHIvE-TdlvyAP-lAOrkSBsQg.cache +0 -1
  515. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/D1/D1ZVypz4A_qF0cewMs2YiW5uWi7MKEdPOoOXeBQKeL0.cache +0 -1
  516. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/D4/D4osajB0M3Tk4bo3qAkcpkXlGHReFCOJxlo20Deiqk4.cache +0 -0
  517. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/D9/D9cZjx3n4E4qKXoR9rROjaYWpm1nnip45O0Ubyqyho8.cache +0 -0
  518. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/DP/DPvPPYoq_7HYVvKapcWxWL0bSIyINU7Oc93He65SrAk.cache +0 -1
  519. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/DT/DTQyMpr4ABZYQetsdRJ5A7S4jf1r3ie4FGOR7GZBNSs.cache +0 -3
  520. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Df/Dfl0fgtV2z9SkiRUCnFBU6pD3TPmL0rI_lUqOVSglz8.cache +0 -0
  521. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Df/dfOhvqqzI4Yxr6VUUn6T5DARFk5SNeEasmpVaiBivxQ.cache +0 -1
  522. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Dl/DlaCy1X82C9F58mF2UUes54AZzBUIGyuFiZEc9PUW0U.cache +0 -1
  523. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Dq/DqJ5_yJPrP5iLlOQyTQsjAVI5FE5LCVDkED0f7GgsSo.cache +0 -3
  524. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Dy/DyHdMGh9NYCQ6KM4Cs6ySrmxIGQLcs3urJo2ni_GHeI.cache +0 -0
  525. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/E8/E84Qt1hM8br74RgXrkdGt8CGM8KnVROweUTPah6hpao.cache +0 -0
  526. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ea/Ea7ca7cxAj6u9A8UKN2ZVtAFE3GXgmTZtHiorPaUnTg.cache +0 -1
  527. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/F8/F8MUNRzORGFgr329fNM0xLaoWCXdv3BIalT7dsvLfjs.cache +0 -0
  528. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/FN/FNAoxlHjPOpzywpYUXo13-PLULLhE4lZ8jRmsdCpQ8s.cache +0 -2
  529. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/FS/FS-IBIwKNJB6ey4YiEJy3WQxdihlzqhn27zuXCPW3I4.cache +0 -0
  530. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/FS/fsx-7r5CnuEuuruO05WoCqUE7I7yHdsHFyufpAo9L_w.cache +0 -2
  531. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/FU/FU7chcPDGpikN_If4SNgCUiwKbAtWa-dV0x644C-R8A.cache +0 -0
  532. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/FZ/FZS5A8sTziH2yLSQsehYe2Lov6tTh7qddnYpUCOrSg8.cache +0 -0
  533. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/F_/F_wHSssqVgbtl2xnKiCAx8T1yXJcm6G6FFYyEQOM1vk.cache +0 -1
  534. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Gx/GxO9oxH-DZ8Vk1eqP17OKFSocWisT4gGJtcGM1t5Fio.cache +0 -2
  535. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/H6/H6QLQGIr0MZMFEBwWkJpjKCoSmnCM1d1b7Z2bT1pchI.cache +0 -0
  536. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/HC/HCDOUd7-S45aJ_PjVAC_Vmjyud3i1aQv4cE3t9_Z3Dw.cache +0 -2
  537. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/HN/HNBghWjxKPnFYO5L6fJf8R4AeZ0rdAOL6sUFWovnBwU.cache +0 -1
  538. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Hb/HbX5bR5UYD1vbffHD_0rvCrL9QARJ6bCpD00MQdR1g4.cache +0 -1
  539. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Hm/HmOkSBI1TuhJ1te9t-y9GHxMWn2FVl-RnFS8oWi7V_w.cache +0 -1
  540. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/IN/INJypnigTMfqqPOcC-b9F0Iye_HbwItx-5XDHLUtWDc.cache +0 -1
  541. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ig/IgW_xNyC9axLdFbnQLpkLYqhAzSgmdACo0mT8ai455Y.cache +0 -1
  542. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/JY/JYy-al-c4ButCglqQfY9a5PZV6XFNBjtHD9sWas7NbE.cache +0 -1
  543. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ja/Jah1OygWPoT6OkBv-5VE19u3b0vGJTHsGse68OBZmtQ.cache +0 -2
  544. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/K0/K0-nXg3QbjeMtvvRvPXZiL0kCh0YtyApX9XrJrj95Po.cache +0 -0
  545. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/KB/KB07ZaKNC5uXJ7TjLi-WqnY6g7dq8wWp_8N3HNjBNxg.cache +0 -3
  546. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/KI/KIVgv3yfi4fSugBTELntGMTgpB8JKD1c5_CxdEvkfaw.cache +0 -1
  547. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/KO/KOgbmY0o5uemlVX1FmoTnTDK6QDnydWoRF2Ht9TtN2U.cache +0 -1
  548. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/LI/LIHDRdjIBdKfW4tnKTESwsWFz4OeCV-sJZtEKUYaLiU.cache +0 -1
  549. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/La/LavB01ePIpCqyhy1AJu1V9piCEAYuTyS5bjdSEVqEoY.cache +0 -1
  550. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Lx/Lx6tpPxpS0hrFKiVXiv37Q4bFJjhDJJak7WUoOemLC8.cache +0 -0
  551. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Lx/LxRPPEO9CB_ckDd1jRPcKJjsm_Gc0CGMSmrdUXXpzjs.cache +0 -2
  552. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/M6/M6hnb_EIRICxNcrNSkV7ekfCpVo0O9U2XSSaLxDqONI.cache +0 -1
  553. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Mq/MqwfYiRcCBhwwS_cH5IyKUMsvSreSqmpD_WV3AHeZcw.cache +0 -0
  554. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/N-/N-bT7IhQ1pVoh_gTwxXqeK3dVlmJkxatBZyFP43Si3I.cache +0 -2
  555. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/N1/N1EMMEzwuRyuF1gWtXmBNA8MMh4jYud3NP4IQ4_6APY.cache +0 -1
  556. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/NV/NVd17BdcRmpEVFGZDHcRFIgNC2usd2N50atmE6dfOiI.cache +0 -1
  557. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/NV/NvHlFPeFw2ONsOqGrVoMfZKZNz-6Hio21cxECqHgZd4.cache +0 -0
  558. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ON/ONTTDNMWFhjcmhKbOP3KqbRtGvxLORP9OH6wMiCk_Ys.cache +0 -2
  559. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ol/Olkqarn5mhfEd6uRArgjaOA-B1ZXvvcXpuIFVyoDAXc.cache +0 -0
  560. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/P-/P-STcrlrr_UHY2DAzJOcMU2FOt1STMToqoJ3hYaAEEE.cache +0 -1
  561. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/PA/PAJgjBwkjHBCPPw8wWUsKsUR7TvgP4RK7PV8-Jdqluw.cache +0 -2
  562. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/PA/paWxJFaOGYb5g3bPUex7k8lTzXqbJ4F0Uw_zBZI8XxU.cache +0 -1
  563. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/PP/PPmjUfdcsG-U5YdKOGrvFGoDVweIuWHjIggt6U2rRIo.cache +0 -0
  564. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Pm/PmTiqVQJ4334Q0J-QCdlEdApesHyk8Lwuunb-_RivmU.cache +0 -1
  565. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/QY/QYJsCmNADCk6tDZF57r1lz6gqD88LSPkQXtY3Vm-uUI.cache +0 -1
  566. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Q_/Q_J_xCMNzLrUyke5pUNpWmyoVj_lW8yCigUKNE9FyXs.cache +0 -1
  567. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/RB/RBv3Nnh3mIqYx7YWNYxr9uuJlQKt0sISacYDiDkOJ3w.cache +0 -1
  568. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/RE/REff4oUdSjRZwuhZkynEkMbvKkAnflI5V3ti3ZCXtO0.cache +0 -2
  569. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Rw/RwDuCV-XpnCtjNkvhpJfBuxXMk0b5AD3L9eR6M-wcy0.cache +0 -3
  570. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/S2/S2ulcWK2u8bC-jxhkG5P2oDyoR91wKtZkw6I5RfTz24.cache +0 -0
  571. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/SD/SDQnsrLw-b0RFX481lQQF9x0HiZaefzuBAuOj3cwo9I.cache +0 -1
  572. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/SD/sDGKBkb0LsWWFOmHNgz4ahOe6iLlCfJ8Zy8iInv4teI.cache +0 -0
  573. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/SM/SMCVX47Gg93AptU_3a66VblIT3KLHqKrkHHuMhfPIxk.cache +0 -1
  574. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/SQ/SQPrFInSYpfPUMfXYJXnph6q8eAFQsL_plvmqSwAVEM.cache +0 -2
  575. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/SR/SRppQZkF9KwCpA8Ud3swxGKHJUSM5M75OTHlmfiTeAY.cache +0 -1
  576. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/TE/TEEzQHAX6KOPY3AIg2OPhwQPpIrKlcqGJnqKnvz9YDE.cache +0 -1
  577. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Tr/Tr5ExKD0jPytz0PJn0sVycLrI6t9y-4wGKO4MTwzi2U.cache +0 -2
  578. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Tr/TrY4Ml48luBYhVfMdvwlyB7zO-QQQaWIW7ORlLUnYRg.cache +0 -1
  579. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Tt/Tt0V7r8e-tdXVEGXDjN31D88EHb3z-Jo47tXWmAPCwA.cache +0 -0
  580. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Tx/TxxBMsRYAeLcndv5YuF1FkCV30qi1yhYI8AzTki0Zmo.cache +0 -2
  581. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/U9/U9dnnrqeoOE-mYHdH4XmicZAjMQbjhjXdiA8VlMGsHA.cache +0 -0
  582. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/UA/UA89Y066oW41G1gWoHWdEXcPU2JZ66j8dnXKwoc3yJc.cache +0 -2
  583. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/UK/UKklu-xV4ZGx7P5-zWqENrlHQUaedqEuUNTgezjc3g0.cache +0 -2
  584. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/UL/ULdjhhb0bRuqmaG7XSZlFYzGYCXTDnqZuJBTWRlzqgw.cache +0 -0
  585. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/US/USYEqEC54xCRgdxfID_BklmAl2jIXZAKJ9BhapbMqNg.cache +0 -1
  586. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Up/UpPNgh0yYoUsyMDh5zWqe_U6qJIyTC6-dxMMAs1vvlM.cache +0 -1
  587. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/V5/V5dKKdHyA7y6N44igdqPBARmoV0tYdUsUrmf2lJkF6M.cache +0 -1
  588. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/VJ/VJ9Lp37PnSDzVOvhSVhKc2eG-KOuv3bRFxar6M8LLnA.cache +0 -1
  589. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/VP/VPf8mKPeiYU53d-M_P60d-YL6wdTka1rTVRa4F5dB_k.cache +0 -0
  590. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/VY/VYJV9KoRx38NfAvSvXouEYF_0k-Su_KdFuSSXPOoSOg.cache +0 -1
  591. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/W2/W2nmNoF054n5uT-S7jhvUpaJqxHYWiJnHNP8fbjwjj0.cache +0 -1
  592. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/WA/WA0OKbW1ShDLWAbN4voLShkG6JaNjvWeSNF3ZpLcUqY.cache +0 -0
  593. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Wg/Wguh-szFGTI1gaL6npYwPekMXflugRei7F_mOyRucXg.cache +0 -0
  594. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Wr/WriMHycrWjgHpmRpAo9N4nvDB5T0lBL5EOTTUQUHwn4.cache +0 -1
  595. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ws/WsHB1qkchRYVF4JV0Yqtr-QiyZ26DiLFtKTrCRVc5kI.cache +0 -0
  596. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/X-/X-khLYMA9mqFRPg3zAi86mREDxpKl4bdKYp3uF6WHos.cache +0 -0
  597. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/XD/XDRDiP6A_Qz7pCCfZHYO6Xfob7trS4JQQoX_ByuWnRI.cache +0 -2
  598. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Xr/XrGClLu5lOe_6gWU_Nm-tCAC6tUCFpoTPwyKLHmrnNw.cache +0 -0
  599. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Xu/XU4k1OXnfMils5SrirorPvDSyDSqiOWLZNtmAH1HH8k.cache +0 -0
  600. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Xu/XupuIipXyzmZQIRfy2SfGTCS21Y-sBxWWjFWmnxYllM.cache +0 -1
  601. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Xx/XxkX9e-7J9By7nLHpwyUoOdUJ78twXYUefvXKie2WkA.cache +0 -1
  602. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Yf/YfGn3oqi1Sm1_rHBqpmph8QpfhWTITbEUWS9waD_HKg.cache +0 -0
  603. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Yf/yfhQwhH-ul-osfCM7_EXtSEeujd0TqsbqPoVgj7ehi0.cache +0 -0
  604. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Yl/YlIiT75oC_1vUeD7NoTHufIKf1Tdnjg82aJbfI79WGQ.cache +0 -2
  605. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Z-/Z--HP-BzybXzcZ6TPTFHonJqTM1B3B2g-5uUSi_EuSc.cache +0 -0
  606. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ZT/ZTVpqYlcQg-w8iygSuUB7UBreT5bxLOPDNlKjzg5kMY.cache +0 -0
  607. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ZT/ztYH9puOw0lwdIjwlH18IT68aY0KvTPEiAQTrxn4doQ.cache +0 -2
  608. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Za/ZaT_Lz8qe4rCd9sYS8dWxhl6MB_pWFUu7sqohGkRsAo.cache +0 -0
  609. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Zz/Zzsh2ASGqBSWLSWIU4fAyxS3iVuJDxdTCw8jOOsUNzA.cache +0 -1
  610. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_-/_-Y1fY6ejeTyiaDheuPSN_aPVwcvRdIlowBkfFxEY0c.cache +0 -0
  611. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_6/_61xcFfBTsk2JixNV1J-NP9FtW67n0Haapr-7H5toEU.cache +0 -2
  612. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_R/_RQaUmRUEEXsJ7wurDZfjh63xJqRWfkCTDSiA0pvOIg.cache +0 -2
  613. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_m/_mRvClvA9ew3lpKq5JBpjPY232J6bAj9K_XP3N2HFD8.cache +0 -0
  614. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_z/_zNZb_3SH_fXs-tDFm3LtWun9BlLzBVn3aDO9l6K-NQ.cache +0 -1
  615. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/a7/a7lacDViLUEaXFwV6UuZfTUood23K0X7_s2YYxP7dQw.cache +0 -1
  616. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/aV/aVdjJbgLyd5MLwvnXSaX_83wDD0zG8DQnKs4hlOXOJ0.cache +0 -1
  617. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/al/alJwyXpJHF8RaBpaslorYD4Et6PO_-7Jr1qQmR_Wtys.cache +0 -0
  618. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bC/bCSJnsDI4K9-Hwd7p_GC9M36gA2QbYgtfl-Guk1Ev80.cache +0 -1
  619. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bM/bMopwpsFeLUsi20J9L9mPnoi6ZMJMVHIzxbTHbWrBho.cache +0 -2
  620. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bd/bdikSDf26RlvOPFhOT9G-XHnMj8ptHrTYB3QUuABCUQ.cache +0 -0
  621. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bi/BIkdhfxsezxM4q-HZ4oCNTq97WEJTigcq0tpX2cDvbY.cache +0 -0
  622. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bi/biczy7hoa1_tzXKc6t2QU3WdkhkfdBfwwq66GVVz914.cache +0 -1
  623. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bq/bqRZ6xUe_GzjdFbiyk0iMQoNHY4xk1gccuw3l8KUJz8.cache +0 -2
  624. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bv/bvfgzCTJxyiwgFWSXthcO14iFDl_K1NuT0vWVXcI-WU.cache +0 -0
  625. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/cZ/cZw-zK9k1to5xz_hZ8FQB5wpR9Ks1-bhn7kJJVu9Ki0.cache +0 -1
  626. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ci/cipvvZ93wZHrDs_W1liu4PQTEJsKuPhbk6JG1DsMfxM.cache +0 -1
  627. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ck/ckLh5gBuqdrZ9fuxYz87cU_3hhZMI_7tcqNJ2EjtgpI.cache +0 -0
  628. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/dG/dGyq85wVf9waxk23R1VlUQQMflMpPSsiMOTM9TtZ1f0.cache +0 -0
  629. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/d_/d_Ckuu1Nlhrqje-LDVqGwCu8pLiyAX31uSdo7QCELeI.cache +0 -2
  630. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/db/db0UgKlp2vcgigF3FfR0UlilfVgDEJuew9qxLsuR374.cache +0 -0
  631. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/db/dbXmPOhlH1AKN08KRg0ow8KOe-_XKeBNOg0HJvnqQCs.cache +0 -0
  632. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/dr/drw7hbVGSDH0ujUo0r9Fmfbjvw8_eoOc6fCktj5IKak.cache +0 -2
  633. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/e7/e7SEwN9e5ctMuXdXSRM6IB2fFMiIP2UAmvXjDKktd5w.cache +0 -1
  634. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/eW/eWG0d21oPZQGuYiCLej8OsRayN0--zxnvn7KHFqrQus.cache +0 -1
  635. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/fA/fADdr9ULIrFxI-36hG3S8yfvCp2VHyR6WzSZNIPM3C0.cache +0 -1
  636. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/fE/fEt1GN3H2qJiB0PwX6Cd43UrRkzLxTRIeUyyrydPe_A.cache +0 -2
  637. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ff/FfxmA4CMHQZT7exx0G7NS1Wpcnny0vzp-Jhc2H36bp8.cache +0 -1
  638. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ff/ffguBp3lFlcLuH9rWtl1JJxs9dDTIfm-FCMONYpUdww.cache +0 -1
  639. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/gE/gEiiG4GZNy_djEjK2pHm_NgA-gyhLZhdQvo0Yt96GqE.cache +0 -0
  640. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/gn/gnA9ZSqpjccNL2m8pe_jBvY6SinXlCzXDWyop83Od8s.cache +0 -1
  641. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/he/hepQXqLZteSsVIUXJaeKnrpVYKb53gbWe1xr6tuFN3Y.cache +0 -1
  642. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/hy/hyMfoAGcpyTZYoedJT2E2u3X96FEwATK-lIPMFlN_bw.cache +0 -0
  643. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/i9/I9UL3IEpQ14Bi9EpF3TLd0P5Rabp6ulJbgz2f1o-neA.cache +0 -1
  644. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/i9/i9lFglNaFPcJgnmxvuMjrY_R8pXY0CN9SiUKFgVFPSM.cache +0 -0
  645. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/iE/iEzDISmI13GuIeJehYePCIVyUe7XZ-_q9pvIv0UzneM.cache +0 -1
  646. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/i_/i_hzz-9VlGYj7yvx9yYWRKRw2UwxqFHQrRZw6vzXsWc.cache +0 -0
  647. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ij/ijLUBXXLleeHIaUQp-SQmpq0HpH94rYlbW5OJbKpnsg.cache +0 -1
  648. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/iq/iqPK1x8VfJwa8KcViAxJc6WCCa1dqE_7ubcbyoyjecg.cache +0 -1
  649. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/iw/iw-6QMCNXnMzL5koGPyFgnCllIbeX88-V7N5GRRqxLA.cache +0 -0
  650. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/j2/j2NpPyjDjX23FPlgIi_Hf4oc4HH6a74elyfPP9wF0jU.cache +0 -2
  651. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/jK/jKof1JYBdCVS3OYs9Itw8Fbr1nIPR8DLSEB8WKSDLyw.cache +0 -2
  652. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/jS/jSnpKdnMVeeGtUODVf-9I1I3xvGWQr4uOtIB8Oul4Zw.cache +0 -1
  653. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/jn/jnwTDvpqs0w9VZpZ5GUZ60o6cpUhzgo69c_ooHHmNvM.cache +0 -0
  654. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/kU/kUok4qdkoYsQOP59lJgy9rPyE-T3sh8l0dVDE6KzfeI.cache +0 -1
  655. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/kv/KVJz4npl0nKN-Dp49qjcOml4Tpxq_AZ8RNO1Bi387Is.cache +0 -2
  656. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/kv/kvTGOzOr1lqLnY61yqldR_vtHpoCKFYDFpl7_fnCtcE.cache +0 -1
  657. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/kz/kz7lpLb0SoWDdaStz39DkoaQykVp0h3Jl4agZcEh6L4.cache +0 -1
  658. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/l8/l8UyUr0lncdtUUTZFwO0ulkW8Bl3z83viCwii7OewZk.cache +0 -1
  659. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lH/lHDGd3_dxi_xz9n5_wYFy7hKMxp78Q39u_XQKZWub_Y.cache +0 -0
  660. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lO/lOAan3cMwCE_Hli6gsDML88xFNfn0nxPmvrSkW7eEOw.cache +0 -1
  661. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lU/lUmP4mi3T8xmwS_odQgw8llzs35KCOMZCTv0DANy9dM.cache +0 -1
  662. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lY/lYdwx9C-FXcmiLA5bsEfQIBwpcg3twu1lz6rFXROyCI.cache +0 -0
  663. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lj/ljpGLuZae0hOTv1h7MGCiJ30O0qhPCuvEKLhD5zpV8Q.cache +0 -0
  664. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/m1/M1pv8MJEPLXGLvS8QxVh3DSO9cI4mRt5FHFWdrvUj6o.cache +0 -2
  665. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/m1/M1yW7a2h3VzoyhwmJIKGEXjCQN8GsQcnvcKaklurytE.cache +0 -1
  666. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/m1/m1jB-0OsQz_CCr-Q_KIlpfF7BsJBF8GXMfk9pZdJsdg.cache +0 -0
  667. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/m3/m3WJ72qtNo4wVe78N9YRArVH33D15hEwdVd67wJbvOQ.cache +0 -0
  668. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/m4/m4EE0-xa87oylMzux18a-d2pR0zDtF2GCbYzwdSvQH4.cache +0 -0
  669. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/m7/m77qH7ZqH0_0SmwJbiKGDd-aLau1Dav847DC6ge46zY.cache +0 -1
  670. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/mS/mSWxg1xZbGaeYGDXMe8nsYZC_LfhiNdjSTL2J2ELE0s.cache +0 -0
  671. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/mb/mb6HAyivnzHzDrkN35ifr4kL7MuksZYWamdJBUjhoHQ.cache +0 -0
  672. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/me/melFFxMi_bgtkEkztQhKusyFDqKEeVVzurk_1_TPt6A.cache +0 -1
  673. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/mm/mms9rxcyPm09RjefBI321LIRPUAobgQ1X4A8Uu4w9Fc.cache +0 -0
  674. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nA/nA0Bu-48plSRK0cxt2gE2-TXvwcDsTjvHLFR7KshbPY.cache +0 -0
  675. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nA/nAGwhUtXjENu4Jl3uTJFFRnDhJAOlMAmuju7JcllSRM.cache +0 -1
  676. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nN/nN4lOF8mi-IWkm3zsqohaHbvJS4uG-_tiFsB6h1PsFc.cache +0 -0
  677. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ne/neLH-4_-lhKrkmcWjkrdYAoT5xDuc9EzJ5-81ZXeeXc.cache +0 -2
  678. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nj/njVJUsm_4wugUz9SwMbITIhSGErMWqSZ16AEUFn2RHo.cache +0 -0
  679. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nq/nqz2Ja53LHhXhFb6ChNpDKnBMWNdp17ZtNhrn-9wdR0.cache +0 -0
  680. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/oY/oYHos9r6mwOX5jDyDTWjnpRR_SvWe4EX9gAl20Gqj8I.cache +0 -1
  681. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/oj/ojlR_0dl68-YErHzTDzB8lO8nKxQzG6x_Axc5oWIeBg.cache +0 -2
  682. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pE/pE7gO6pQ-z187Swb4hT554wmqsq-cNzgPWLrCz-LQQQ.cache +0 -0
  683. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pG/pGc_RfrP3RwCp5SBabj-nGnfyeSnUp1Ed1ajCG5Yx-A.cache +0 -1
  684. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pQ/PQZm6DUZqIXs_3Wo9ISeQRb0vYyB0XG7iGSHr9_TWlc.cache +0 -0
  685. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pQ/pQXlqH4DBItuAHNMXGnwQmnzYkwJ2m7kUgKQbdbZM1E.cache +0 -0
  686. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pj/pJtdFKizdxA_xBjuuXQWYnEvCcImUQtT5Rh-tGG6v48.cache +0 -2
  687. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pj/pjg7FTDRmEzqh8W3ijd1Y3GbffQuQwwSKEZ6ftoPnJE.cache +0 -2
  688. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ps/ps7w7RIcMoa1jxZu4r5mWxnZzl8qM4Bs9AietV5a9nU.cache +0 -0
  689. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/qU/qUif8_vci3i4xpLoHjkoVXT-baN2Z_qabhqo2Wl1KU4.cache +0 -2
  690. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/qf/qfMsgo__LLXJ_4thqBkUaDYPnaucsAJhMl6uN74w1GM.cache +0 -1
  691. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/qj/qjbZ2Uz7G_0aKEQT3Nmuu0k2FkDTmVTemeoG3gw3oSw.cache +0 -1
  692. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/qx/qxng7xwKb01YKazp0ij03cuEDbzSNSakHHwLx7XNEck.cache +0 -1
  693. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/r5/r5EpktDep6rAU9paabInRkyyMPudlyFSWlHRFmSKXcI.cache +0 -1
  694. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/rX/rX6desISJ78BGVzR2gPZKb2BiWY-N596DjfIgaTTkew.cache +0 -1
  695. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/r_/r_57OZEW0SEEUS9tJZwHYMvqjkbw3-3qfgomLAKJzoE.cache +0 -0
  696. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/rh/rhT44pxmkWo5fhkEb829kceOiGof5L5L55DT5Uv9LKQ.cache +0 -0
  697. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/s4/s4BZ5EXO5EOticOtqwWaw3qjnMod3t0AfgXahBpqSZA.cache +0 -0
  698. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/sj/sjRjnjRB37lH2vrgtkdJ8Cz84__IJ978IuKTM7HcztI.cache +0 -0
  699. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/tF/tFofktc3WRxmXDS1NTWdUstzycUbsShJBMHatxLvxqQ.cache +0 -2
  700. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/tL/tLQy_cVJ8R8R35MKxmAuxHklAoaJTyXFO-eL8dXcMKY.cache +0 -1
  701. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/um/um1JrirR4hJhK-1rE-HywlyCi5ibgxHVrReiujZBWJM.cache +0 -1
  702. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/v4/v4fwVytD7ITcE0_GDbslZEYud8a5Okm85fV1o7SDl6g.cache +0 -0
  703. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/vH/vHyq2njTP0fsOdOun0eFn07YnFCTmJJkD89-pJ9tKYA.cache +0 -0
  704. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/vK/vKDpBE4UJEuJjeJqLtVQSQ7wHxJ1ywxrRt8Y1XQBxtk.cache +0 -0
  705. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/vK/vk4eyljHSm11GcRNbA0QEqn13Y4bEfxOcBwiesL-XvQ.cache +0 -1
  706. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/v_/v_0PAQt0iipQjFP5zjgkkk9Stnpf4VzvnMv67d1Keuw.cache +0 -1
  707. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/w6/w6JBeSUs8dNJNtbRF-HVG3csGda2FlttAEBSpSHoqcE.cache +0 -0
  708. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wc/wcSdAX-yztEvzKx_xYHtqxT47ZyaLoLal_vKwPxEP08.cache +0 -2
  709. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wd/wdT9U4MKxe1PyqNjVuCKMpCl3dxGCIRJIlwUTfh2DQU.cache +0 -1
  710. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wh/whuY0tTNf66sTcgILzLfelCAHIBpDZZIiOIuI12HNQw.cache +0 -2
  711. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wi/wiKqSHxw-MJpM466KPFAcPyzBHxbpGGYW578TqFEJeg.cache +0 -1
  712. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wi/wixK89IvA4Xk2MyJxkyLg-2xRs2vRPzY_OIs37bi8XA.cache +0 -1
  713. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wz/wzY0ol5RRJK1j-hK9nckKoTMWK5TJDii5QSZMGTu5hk.cache +0 -0
  714. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/x3/x3jUhlqTEK-rA6zTC8_MWGyKD8tZRhz2nPu0nCBgEGI.cache +0 -1
  715. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xI/xIaxut_fEIhKBDqljTNwYaADK9kj3gG0ESrfHs-5_og.cache +0 -3
  716. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xL/xLZtF0WWBePfiVBWxxi6brXCLsEfcrj435b9xJupeeU.cache +0 -0
  717. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xL/xLktzniI5dkWKAifTMHzZvRHyRHOexsqV-ZRsdLXx0g.cache +0 -2
  718. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xv/xvoydM1zth53tauNTatJNfb-o44mAGDD9-85yRkpeqY.cache +0 -0
  719. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/y0/y0SJOqIx2fn1SKqOkAihsQow0trRJrSIyAswufVuoA8.cache +0 -0
  720. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yH/yHfd9J_SJGssjygyWK8-uLlvE6IlN6DIda7947QWVsI.cache +0 -1
  721. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yQ/yQP_20gvJZ1MfkfWE7nU-EFpqbMzANYy8OWuQuaDyLM.cache +0 -2
  722. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yv/yvOcRnWhg9dCjr1_rScAH4M8-rUQVY9oHFqBGVoMniI.cache +0 -0
  723. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/z2/z2ro57FqSGT_X2jnC68fS-HrFmCh7Wbrnrm45BceZoM.cache +0 -0
  724. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zJ/zJfViroVCTZxyBh0pLP8_QiOxemqmKRkiU7BHAf5HxA.cache +0 -0
  725. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zP/zPBLf0GnkvCm86BY_8PtGJRyawPWy-JxWZp25_yNRfk.cache +0 -2
  726. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zg/zgpzeaX-KZErHyGJ1aBH3ZusweNXMneVZule88XsIJI.cache +0 -1
  727. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zm/zmEmiHcLam0fJ2odLUV8n4hg9GN2gBDrJo7JCkkg8f4.cache +0 -1
  728. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zy/zYFltDy-8VC-uKq2BVEiJJyYXNFvVzAKuMlR3ZIYZsk.cache +0 -0
  729. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zy/zywotY5ANjNyE78CLDqC1eYRFwL1ZFzkT9J5LzNlI4M.cache +0 -1
  730. data/spec/dummy/tmp/restart.txt +0 -0
  731. data/spec/dummy/tmp/screenshots/failures_test_it_handles_subscriptions.png +0 -0
  732. data/spec/fixtures/upgrader/account.original.rb +0 -19
  733. data/spec/fixtures/upgrader/account.transformed.rb +0 -20
  734. data/spec/fixtures/upgrader/blame_range.original.rb +0 -43
  735. data/spec/fixtures/upgrader/blame_range.transformed.rb +0 -30
  736. data/spec/fixtures/upgrader/date_time.original.rb +0 -24
  737. data/spec/fixtures/upgrader/date_time.transformed.rb +0 -23
  738. data/spec/fixtures/upgrader/delete_project.original.rb +0 -28
  739. data/spec/fixtures/upgrader/delete_project.transformed.rb +0 -27
  740. data/spec/fixtures/upgrader/gist_order_field.original.rb +0 -14
  741. data/spec/fixtures/upgrader/gist_order_field.transformed.rb +0 -13
  742. data/spec/fixtures/upgrader/increment_count.original.rb +0 -59
  743. data/spec/fixtures/upgrader/increment_count.transformed.rb +0 -50
  744. data/spec/fixtures/upgrader/photo.original.rb +0 -10
  745. data/spec/fixtures/upgrader/photo.transformed.rb +0 -12
  746. data/spec/fixtures/upgrader/release_order.original.rb +0 -15
  747. data/spec/fixtures/upgrader/release_order.transformed.rb +0 -14
  748. data/spec/fixtures/upgrader/starrable.original.rb +0 -49
  749. data/spec/fixtures/upgrader/starrable.transformed.rb +0 -46
  750. data/spec/fixtures/upgrader/subscribable.original.rb +0 -55
  751. data/spec/fixtures/upgrader/subscribable.transformed.rb +0 -51
  752. data/spec/fixtures/upgrader/type_x.original.rb +0 -65
  753. data/spec/fixtures/upgrader/type_x.transformed.rb +0 -56
  754. data/spec/generators/graphql/enum_generator_spec.rb +0 -29
  755. data/spec/generators/graphql/function_generator_spec.rb +0 -59
  756. data/spec/generators/graphql/install_generator_spec.rb +0 -205
  757. data/spec/generators/graphql/interface_generator_spec.rb +0 -32
  758. data/spec/generators/graphql/loader_generator_spec.rb +0 -55
  759. data/spec/generators/graphql/mutation_generator_spec.rb +0 -65
  760. data/spec/generators/graphql/object_generator_spec.rb +0 -51
  761. data/spec/generators/graphql/union_generator_spec.rb +0 -64
  762. data/spec/graphql/analysis/analyze_query_spec.rb +0 -234
  763. data/spec/graphql/analysis/field_usage_spec.rb +0 -62
  764. data/spec/graphql/analysis/max_query_complexity_spec.rb +0 -102
  765. data/spec/graphql/analysis/max_query_depth_spec.rb +0 -101
  766. data/spec/graphql/analysis/query_complexity_spec.rb +0 -301
  767. data/spec/graphql/analysis/query_depth_spec.rb +0 -81
  768. data/spec/graphql/argument_spec.rb +0 -151
  769. data/spec/graphql/backtrace_spec.rb +0 -206
  770. data/spec/graphql/base_type_spec.rb +0 -169
  771. data/spec/graphql/boolean_type_spec.rb +0 -21
  772. data/spec/graphql/compatibility/execution_specification_spec.rb +0 -4
  773. data/spec/graphql/compatibility/lazy_execution_specification_spec.rb +0 -4
  774. data/spec/graphql/compatibility/query_parser_specification_spec.rb +0 -6
  775. data/spec/graphql/compatibility/schema_parser_specification_spec.rb +0 -6
  776. data/spec/graphql/define/assign_argument_spec.rb +0 -61
  777. data/spec/graphql/define/instance_definable_spec.rb +0 -203
  778. data/spec/graphql/directive/skip_directive_spec.rb +0 -9
  779. data/spec/graphql/directive_spec.rb +0 -253
  780. data/spec/graphql/enum_type_spec.rb +0 -153
  781. data/spec/graphql/execution/execute_spec.rb +0 -206
  782. data/spec/graphql/execution/instrumentation_spec.rb +0 -165
  783. data/spec/graphql/execution/lazy/lazy_method_map_spec.rb +0 -57
  784. data/spec/graphql/execution/lazy_spec.rb +0 -174
  785. data/spec/graphql/execution/multiplex_spec.rb +0 -183
  786. data/spec/graphql/execution/typecast_spec.rb +0 -47
  787. data/spec/graphql/execution_error_spec.rb +0 -292
  788. data/spec/graphql/field_spec.rb +0 -246
  789. data/spec/graphql/float_type_spec.rb +0 -16
  790. data/spec/graphql/function_spec.rb +0 -129
  791. data/spec/graphql/id_type_spec.rb +0 -33
  792. data/spec/graphql/input_object_type_spec.rb +0 -353
  793. data/spec/graphql/int_type_spec.rb +0 -16
  794. data/spec/graphql/interface_type_spec.rb +0 -152
  795. data/spec/graphql/internal_representation/print_spec.rb +0 -41
  796. data/spec/graphql/internal_representation/rewrite_spec.rb +0 -374
  797. data/spec/graphql/introspection/directive_type_spec.rb +0 -61
  798. data/spec/graphql/introspection/input_value_type_spec.rb +0 -105
  799. data/spec/graphql/introspection/introspection_query_spec.rb +0 -59
  800. data/spec/graphql/introspection/schema_type_spec.rb +0 -55
  801. data/spec/graphql/introspection/type_by_name_field_spec.rb +0 -38
  802. data/spec/graphql/introspection/type_type_spec.rb +0 -156
  803. data/spec/graphql/language/block_string_spec.rb +0 -70
  804. data/spec/graphql/language/definition_slice_spec.rb +0 -226
  805. data/spec/graphql/language/document_from_schema_definition_spec.rb +0 -770
  806. data/spec/graphql/language/equality_spec.rb +0 -84
  807. data/spec/graphql/language/generation_spec.rb +0 -36
  808. data/spec/graphql/language/lexer_spec.rb +0 -66
  809. data/spec/graphql/language/nodes_spec.rb +0 -45
  810. data/spec/graphql/language/parser_spec.rb +0 -90
  811. data/spec/graphql/language/printer_spec.rb +0 -203
  812. data/spec/graphql/language/visitor_spec.rb +0 -50
  813. data/spec/graphql/list_type_spec.rb +0 -57
  814. data/spec/graphql/non_null_type_spec.rb +0 -48
  815. data/spec/graphql/object_type_spec.rb +0 -192
  816. data/spec/graphql/query/arguments_spec.rb +0 -325
  817. data/spec/graphql/query/context_spec.rb +0 -264
  818. data/spec/graphql/query/executor_spec.rb +0 -310
  819. data/spec/graphql/query/literal_input_spec.rb +0 -91
  820. data/spec/graphql/query/result_spec.rb +0 -29
  821. data/spec/graphql/query/serial_execution/value_resolution_spec.rb +0 -109
  822. data/spec/graphql/query/variables_spec.rb +0 -355
  823. data/spec/graphql/query_spec.rb +0 -780
  824. data/spec/graphql/rake_task_spec.rb +0 -59
  825. data/spec/graphql/relay/array_connection_spec.rb +0 -290
  826. data/spec/graphql/relay/base_connection_spec.rb +0 -93
  827. data/spec/graphql/relay/connection_instrumentation_spec.rb +0 -83
  828. data/spec/graphql/relay/connection_resolve_spec.rb +0 -63
  829. data/spec/graphql/relay/connection_type_spec.rb +0 -81
  830. data/spec/graphql/relay/edge_spec.rb +0 -10
  831. data/spec/graphql/relay/mongo_relation_connection_spec.rb +0 -474
  832. data/spec/graphql/relay/mutation_spec.rb +0 -339
  833. data/spec/graphql/relay/node_spec.rb +0 -263
  834. data/spec/graphql/relay/page_info_spec.rb +0 -111
  835. data/spec/graphql/relay/range_add_spec.rb +0 -117
  836. data/spec/graphql/relay/relation_connection_spec.rb +0 -808
  837. data/spec/graphql/scalar_type_spec.rb +0 -66
  838. data/spec/graphql/schema/argument_spec.rb +0 -87
  839. data/spec/graphql/schema/build_from_definition_spec.rb +0 -1072
  840. data/spec/graphql/schema/catchall_middleware_spec.rb +0 -34
  841. data/spec/graphql/schema/enum_spec.rb +0 -74
  842. data/spec/graphql/schema/field_spec.rb +0 -225
  843. data/spec/graphql/schema/finder_spec.rb +0 -135
  844. data/spec/graphql/schema/input_object_spec.rb +0 -111
  845. data/spec/graphql/schema/instrumentation_spec.rb +0 -40
  846. data/spec/graphql/schema/interface_spec.rb +0 -185
  847. data/spec/graphql/schema/introspection_system_spec.rb +0 -39
  848. data/spec/graphql/schema/loader_spec.rb +0 -281
  849. data/spec/graphql/schema/member/accepts_definition_spec.rb +0 -111
  850. data/spec/graphql/schema/member/build_type_spec.rb +0 -17
  851. data/spec/graphql/schema/member/has_fields_spec.rb +0 -129
  852. data/spec/graphql/schema/member/type_system_helpers_spec.rb +0 -63
  853. data/spec/graphql/schema/middleware_chain_spec.rb +0 -57
  854. data/spec/graphql/schema/mutation_spec.rb +0 -148
  855. data/spec/graphql/schema/object_spec.rb +0 -175
  856. data/spec/graphql/schema/printer_spec.rb +0 -707
  857. data/spec/graphql/schema/relay_classic_mutation_spec.rb +0 -38
  858. data/spec/graphql/schema/rescue_middleware_spec.rb +0 -74
  859. data/spec/graphql/schema/resolver_spec.rb +0 -131
  860. data/spec/graphql/schema/scalar_spec.rb +0 -95
  861. data/spec/graphql/schema/timeout_middleware_spec.rb +0 -188
  862. data/spec/graphql/schema/traversal_spec.rb +0 -222
  863. data/spec/graphql/schema/type_expression_spec.rb +0 -39
  864. data/spec/graphql/schema/union_spec.rb +0 -65
  865. data/spec/graphql/schema/unique_within_type_spec.rb +0 -44
  866. data/spec/graphql/schema/validation_spec.rb +0 -355
  867. data/spec/graphql/schema/warden_spec.rb +0 -740
  868. data/spec/graphql/schema_spec.rb +0 -472
  869. data/spec/graphql/static_validation/rules/argument_literals_are_compatible_spec.rb +0 -272
  870. data/spec/graphql/static_validation/rules/arguments_are_defined_spec.rb +0 -69
  871. data/spec/graphql/static_validation/rules/directives_are_defined_spec.rb +0 -33
  872. data/spec/graphql/static_validation/rules/directives_are_in_valid_locations_spec.rb +0 -40
  873. data/spec/graphql/static_validation/rules/fields_are_defined_on_type_spec.rb +0 -162
  874. data/spec/graphql/static_validation/rules/fields_have_appropriate_selections_spec.rb +0 -53
  875. data/spec/graphql/static_validation/rules/fields_will_merge_spec.rb +0 -614
  876. data/spec/graphql/static_validation/rules/fragment_names_are_unique_spec.rb +0 -27
  877. data/spec/graphql/static_validation/rules/fragment_spreads_are_possible_spec.rb +0 -49
  878. data/spec/graphql/static_validation/rules/fragment_types_exist_spec.rb +0 -40
  879. data/spec/graphql/static_validation/rules/fragments_are_finite_spec.rb +0 -121
  880. data/spec/graphql/static_validation/rules/fragments_are_named_spec.rb +0 -23
  881. data/spec/graphql/static_validation/rules/fragments_are_on_composite_types_spec.rb +0 -53
  882. data/spec/graphql/static_validation/rules/fragments_are_used_spec.rb +0 -41
  883. data/spec/graphql/static_validation/rules/mutation_root_exists_spec.rb +0 -38
  884. data/spec/graphql/static_validation/rules/no_definitions_are_present_spec.rb +0 -28
  885. data/spec/graphql/static_validation/rules/operation_names_are_valid_spec.rb +0 -79
  886. data/spec/graphql/static_validation/rules/required_arguments_are_present_spec.rb +0 -64
  887. data/spec/graphql/static_validation/rules/subscription_root_exists_spec.rb +0 -33
  888. data/spec/graphql/static_validation/rules/unique_directives_per_location_spec.rb +0 -181
  889. data/spec/graphql/static_validation/rules/variable_default_values_are_correctly_typed_spec.rb +0 -137
  890. data/spec/graphql/static_validation/rules/variable_names_are_unique_spec.rb +0 -23
  891. data/spec/graphql/static_validation/rules/variable_usages_are_allowed_spec.rb +0 -232
  892. data/spec/graphql/static_validation/rules/variables_are_input_types_spec.rb +0 -74
  893. data/spec/graphql/static_validation/rules/variables_are_used_and_defined_spec.rb +0 -61
  894. data/spec/graphql/static_validation/type_stack_spec.rb +0 -38
  895. data/spec/graphql/static_validation/validator_spec.rb +0 -141
  896. data/spec/graphql/string_type_spec.rb +0 -80
  897. data/spec/graphql/subscriptions/serialize_spec.rb +0 -71
  898. data/spec/graphql/subscriptions_spec.rb +0 -483
  899. data/spec/graphql/tracing/active_support_notifications_tracing_spec.rb +0 -55
  900. data/spec/graphql/tracing/new_relic_tracing_spec.rb +0 -47
  901. data/spec/graphql/tracing/platform_tracing_spec.rb +0 -115
  902. data/spec/graphql/tracing/scout_tracing_spec.rb +0 -17
  903. data/spec/graphql/tracing_spec.rb +0 -52
  904. data/spec/graphql/union_type_spec.rb +0 -161
  905. data/spec/graphql/upgrader/member_spec.rb +0 -516
  906. data/spec/graphql/upgrader/schema_spec.rb +0 -82
  907. data/spec/rails_dependency_sanity_spec.rb +0 -14
  908. data/spec/spec_helper.rb +0 -113
  909. data/spec/support/base_generator_test.rb +0 -7
  910. data/spec/support/dummy/data.rb +0 -42
  911. data/spec/support/dummy/schema.rb +0 -459
  912. data/spec/support/jazz.rb +0 -544
  913. data/spec/support/lazy_helpers.rb +0 -150
  914. data/spec/support/magic_cards/schema.graphql +0 -33
  915. data/spec/support/minimum_input_object.rb +0 -21
  916. data/spec/support/new_relic.rb +0 -24
  917. data/spec/support/parser/filename_example.graphql +0 -5
  918. data/spec/support/parser/filename_example_error_1.graphql +0 -4
  919. data/spec/support/parser/filename_example_error_2.graphql +0 -5
  920. data/spec/support/star_trek/data.rb +0 -109
  921. data/spec/support/star_trek/schema.rb +0 -388
  922. data/spec/support/star_wars/data.rb +0 -109
  923. data/spec/support/star_wars/schema.rb +0 -392
  924. data/spec/support/static_validation_helpers.rb +0 -28
@@ -8,54 +8,65 @@ 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
12
+ module DefinitionNode
13
+ # This AST node's {#line} returns the first line, which may be the description.
14
+ # @return [Integer] The first line of the definition (not the description)
15
+ attr_reader :definition_line
16
+
17
+ def initialize(options = {})
18
+ @definition_line = options.delete(:definition_line)
19
+ super(options)
18
20
  end
19
21
  end
20
22
 
21
- attr_accessor :line, :col, :filename
23
+ attr_reader :line, :col, :filename
22
24
 
23
25
  # Initialize a node by extracting its position,
24
26
  # then calling the class's `initialize_node` method.
25
27
  # @param options [Hash] Initial attributes for this node
26
- def initialize(options={})
28
+ def initialize(options = {})
27
29
  if options.key?(:position_source)
28
30
  position_source = options.delete(:position_source)
29
- @line, @col = position_source.line_and_column
31
+ @line = position_source.line
32
+ @col = position_source.col
30
33
  end
31
34
 
32
35
  @filename = options.delete(:filename)
33
36
 
34
- initialize_node(options)
35
- end
36
-
37
- # This is called with node-specific options
38
- def initialize_node(options={})
39
- raise NotImplementedError
37
+ initialize_node(**options)
40
38
  end
41
39
 
42
40
  # Value equality
43
41
  # @return [Boolean] True if `self` is equivalent to `other`
44
- def eql?(other)
42
+ def ==(other)
45
43
  return true if equal?(other)
46
- other.is_a?(self.class) &&
47
- other.scalars.eql?(self.scalars) &&
48
- other.children.eql?(self.children)
44
+ other.kind_of?(self.class) &&
45
+ other.scalars == self.scalars &&
46
+ other.children == self.children
49
47
  end
50
48
 
49
+ NO_CHILDREN = [].freeze
50
+
51
51
  # @return [Array<GraphQL::Language::Nodes::AbstractNode>] all nodes in the tree below this one
52
52
  def children
53
- []
53
+ NO_CHILDREN
54
54
  end
55
55
 
56
56
  # @return [Array<Integer, Float, String, Boolean, Array>] Scalar values attached to this node
57
57
  def scalars
58
- []
58
+ NO_CHILDREN
59
+ end
60
+
61
+ # This might be unnecessary, but its easiest to add it here.
62
+ def initialize_copy(other)
63
+ @children = nil
64
+ @scalars = nil
65
+ @query_string = nil
66
+ end
67
+
68
+ def children_method_name
69
+ self.class.children_method_name
59
70
  end
60
71
 
61
72
  def position
@@ -63,37 +74,218 @@ module GraphQL
63
74
  end
64
75
 
65
76
  def to_query_string(printer: GraphQL::Language::Printer.new)
66
- printer.print(self)
77
+ if printer.is_a?(GraphQL::Language::Printer)
78
+ @query_string ||= printer.print(self)
79
+ else
80
+ printer.print(self)
81
+ end
67
82
  end
68
- end
69
83
 
70
- # Base class for non-null type names and list type names
71
- class WrapperType < AbstractNode
72
- attr_accessor :of_type
84
+ # This creates a copy of `self`, with `new_options` applied.
85
+ # @param new_options [Hash]
86
+ # @return [AbstractNode] a shallow copy of `self`
87
+ def merge(new_options)
88
+ dup.merge!(new_options)
89
+ end
90
+
91
+ # Copy `self`, but modify the copy so that `previous_child` is replaced by `new_child`
92
+ def replace_child(previous_child, new_child)
93
+ # Figure out which list `previous_child` may be found in
94
+ method_name = previous_child.children_method_name
95
+ # Get the value from this (original) node
96
+ prev_children = public_send(method_name)
97
+ if prev_children.is_a?(Array)
98
+ # Copy that list, and replace `previous_child` with `new_child`
99
+ # in the list.
100
+ new_children = prev_children.dup
101
+ prev_idx = new_children.index(previous_child)
102
+ new_children[prev_idx] = new_child
103
+ else
104
+ # Use the new value for the given attribute
105
+ new_children = new_child
106
+ end
107
+ # Copy this node, but with the new child value
108
+ copy_of_self = merge(method_name => new_children)
109
+ # Return the copy:
110
+ copy_of_self
111
+ end
112
+
113
+ # TODO DRY with `replace_child`
114
+ def delete_child(previous_child)
115
+ # Figure out which list `previous_child` may be found in
116
+ method_name = previous_child.children_method_name
117
+ # Copy that list, and delete previous_child
118
+ new_children = public_send(method_name).dup
119
+ new_children.delete(previous_child)
120
+ # Copy this node, but with the new list of children:
121
+ copy_of_self = merge(method_name => new_children)
122
+ # Return the copy:
123
+ copy_of_self
124
+ end
125
+
126
+ protected
127
+
128
+ def merge!(new_options)
129
+ new_options.each do |key, value|
130
+ instance_variable_set(:"@#{key}", value)
131
+ end
132
+ self
133
+ end
134
+
135
+ class << self
136
+ # Add a default `#visit_method` and `#children_method_name` using the class name
137
+ def inherited(child_class)
138
+ super
139
+ name_underscored = child_class.name
140
+ .split("::").last
141
+ .gsub(/([a-z])([A-Z])/,'\1_\2') # insert underscores
142
+ .downcase # remove caps
143
+
144
+ child_class.module_eval <<-RUBY
145
+ def visit_method
146
+ :on_#{name_underscored}
147
+ end
148
+
149
+ class << self
150
+ attr_accessor :children_method_name
151
+ end
152
+ self.children_method_name = :#{name_underscored}s
153
+ RUBY
154
+ end
73
155
 
74
- def initialize_node(of_type: nil)
75
- @of_type = of_type
76
- end
156
+ private
157
+
158
+ # Name accessors which return lists of nodes,
159
+ # along with the kind of node they return, if possible.
160
+ # - Add a reader for these children
161
+ # - Add a persistent update method to add a child
162
+ # - Generate a `#children` method
163
+ def children_methods(children_of_type)
164
+ if defined?(@children_methods)
165
+ raise "Can't re-call .children_methods for #{self} (already have: #{@children_methods})"
166
+ else
167
+ @children_methods = children_of_type
168
+ end
77
169
 
78
- def scalars
79
- [of_type]
170
+ if children_of_type == false
171
+ @children_methods = {}
172
+ # skip
173
+ else
174
+
175
+ children_of_type.each do |method_name, node_type|
176
+ module_eval <<-RUBY, __FILE__, __LINE__
177
+ # A reader for these children
178
+ attr_reader :#{method_name}
179
+ RUBY
180
+
181
+ if node_type
182
+ # Only generate a method if we know what kind of node to make
183
+ module_eval <<-RUBY, __FILE__, __LINE__
184
+ # Singular method: create a node with these options
185
+ # and return a new `self` which includes that node in this list.
186
+ def merge_#{method_name.to_s.sub(/s$/, "")}(node_opts)
187
+ merge(#{method_name}: #{method_name} + [#{node_type.name}.new(node_opts)])
188
+ end
189
+ RUBY
190
+ end
191
+ end
192
+
193
+ if children_of_type.size == 1
194
+ module_eval <<-RUBY, __FILE__, __LINE__
195
+ alias :children #{children_of_type.keys.first}
196
+ RUBY
197
+ else
198
+ module_eval <<-RUBY, __FILE__, __LINE__
199
+ def children
200
+ @children ||= (#{children_of_type.keys.map { |k| "@#{k}" }.join(" + ")}).freeze
201
+ end
202
+ RUBY
203
+ end
204
+ end
205
+
206
+ if defined?(@scalar_methods)
207
+ if !method_defined?(:initialize_node)
208
+ generate_initialize_node
209
+ else
210
+ # This method was defined manually
211
+ end
212
+ else
213
+ raise "Can't generate_initialize_node because scalar_methods wasn't called; call it before children_methods"
214
+ end
215
+ end
216
+
217
+ # These methods return a plain Ruby value, not another node
218
+ # - Add reader methods
219
+ # - Add a `#scalars` method
220
+ def scalar_methods(*method_names)
221
+ if defined?(@scalar_methods)
222
+ raise "Can't re-call .scalar_methods for #{self} (already have: #{@scalar_methods})"
223
+ else
224
+ @scalar_methods = method_names
225
+ end
226
+
227
+ if method_names == [false]
228
+ @scalar_methods = []
229
+ # skip it
230
+ else
231
+ module_eval <<-RUBY, __FILE__, __LINE__
232
+ # add readers for each scalar
233
+ attr_reader #{method_names.map { |m| ":#{m}"}.join(", ")}
234
+
235
+ def scalars
236
+ @scalars ||= [#{method_names.map { |k| "@#{k}" }.join(", ")}].freeze
237
+ end
238
+ RUBY
239
+ end
240
+ end
241
+
242
+ def generate_initialize_node
243
+ scalar_method_names = @scalar_methods
244
+ # TODO: These probably should be scalar methods, but `types` returns an array
245
+ [:types, :description].each do |extra_method|
246
+ if method_defined?(extra_method)
247
+ scalar_method_names += [extra_method]
248
+ end
249
+ end
250
+
251
+ all_method_names = scalar_method_names + @children_methods.keys
252
+ if all_method_names.include?(:alias)
253
+ # Rather than complicating this special case,
254
+ # let it be overridden (in field)
255
+ return
256
+ else
257
+ arguments = scalar_method_names.map { |m| "#{m}: nil"} +
258
+ @children_methods.keys.map { |m| "#{m}: NO_CHILDREN" }
259
+
260
+ assignments = scalar_method_names.map { |m| "@#{m} = #{m}"} +
261
+ @children_methods.keys.map { |m| "@#{m} = #{m}.freeze" }
262
+
263
+ module_eval <<-RUBY, __FILE__, __LINE__
264
+ def initialize_node #{arguments.join(", ")}
265
+ #{assignments.join("\n")}
266
+ end
267
+ RUBY
268
+ end
269
+ end
80
270
  end
81
271
  end
82
272
 
273
+ # Base class for non-null type names and list type names
274
+ class WrapperType < AbstractNode
275
+ scalar_methods :of_type
276
+ children_methods(false)
277
+ end
278
+
83
279
  # Base class for nodes whose only value is a name (no child nodes or other scalars)
84
280
  class NameOnlyNode < AbstractNode
85
- include Scalars::Name
86
-
87
- attr_accessor :name
88
-
89
- def initialize_node(name: nil)
90
- @name = name
91
- end
281
+ scalar_methods :name
282
+ children_methods(false)
92
283
  end
93
284
 
94
285
  # A key-value pair for a field's inputs
95
286
  class Argument < AbstractNode
96
- attr_accessor :name, :value
287
+ scalar_methods :name, :value
288
+ children_methods(false)
97
289
 
98
290
  # @!attribute name
99
291
  # @return [String] the key for this argument
@@ -101,47 +293,27 @@ module GraphQL
101
293
  # @!attribute value
102
294
  # @return [String, Float, Integer, Boolean, Array, InputObject] The value passed for this key
103
295
 
104
- def initialize_node(name: nil, value: nil)
105
- @name = name
106
- @value = value
107
- end
108
-
109
- def scalars
110
- [name, value]
111
- end
112
-
113
296
  def children
114
- [value].flatten.select { |v| v.is_a?(AbstractNode) }
297
+ @children ||= Array(value).flatten.select { |v| v.is_a?(AbstractNode) }
115
298
  end
116
299
  end
117
300
 
118
301
  class Directive < AbstractNode
119
- include Scalars::Name
120
-
121
- attr_accessor :name, :arguments
122
- alias :children :arguments
302
+ scalar_methods :name
303
+ children_methods(arguments: GraphQL::Language::Nodes::Argument)
304
+ end
123
305
 
124
- def initialize_node(name: nil, arguments: [])
125
- @name = name
126
- @arguments = arguments
127
- end
306
+ class DirectiveLocation < NameOnlyNode
128
307
  end
129
308
 
130
309
  class DirectiveDefinition < AbstractNode
131
- include Scalars::Name
132
-
133
- attr_accessor :name, :arguments, :locations, :description
134
-
135
- def initialize_node(name: nil, arguments: [], locations: [], description: nil)
136
- @name = name
137
- @arguments = arguments
138
- @locations = locations
139
- @description = description
140
- end
141
-
142
- def children
143
- arguments + locations
144
- end
310
+ include DefinitionNode
311
+ attr_reader :description
312
+ scalar_methods :name
313
+ children_methods(
314
+ locations: Nodes::DirectiveLocation,
315
+ arguments: Nodes::Argument,
316
+ )
145
317
  end
146
318
 
147
319
  # This is the AST root for normal queries
@@ -163,14 +335,10 @@ module GraphQL
163
335
  # document.to_query_string(printer: VariableSrubber.new)
164
336
  #
165
337
  class Document < AbstractNode
166
- attr_accessor :definitions
167
- alias :children :definitions
168
-
338
+ scalar_methods false
339
+ children_methods(definitions: nil)
169
340
  # @!attribute definitions
170
341
  # @return [Array<OperationDefinition, FragmentDefinition>] top-level GraphQL units: operations or fragments
171
- def initialize_node(definitions: [])
172
- @definitions = definitions
173
- end
174
342
 
175
343
  def slice_definition(name)
176
344
  GraphQL::Language::DefinitionSlice.slice(self, name)
@@ -178,40 +346,42 @@ module GraphQL
178
346
  end
179
347
 
180
348
  # An enum value. The string is available as {#name}.
181
- class Enum < NameOnlyNode; end
349
+ class Enum < NameOnlyNode
350
+ end
182
351
 
183
352
  # A null value literal.
184
- class NullValue < NameOnlyNode; end
353
+ class NullValue < NameOnlyNode
354
+ end
185
355
 
186
356
  # A single selection in a GraphQL query.
187
357
  class Field < AbstractNode
188
- attr_accessor :name, :alias, :arguments, :directives, :selections
358
+ NONE = [].freeze
359
+
360
+ scalar_methods :name, :alias
361
+ children_methods({
362
+ arguments: GraphQL::Language::Nodes::Argument,
363
+ selections: GraphQL::Language::Nodes::Field,
364
+ directives: GraphQL::Language::Nodes::Directive,
365
+ })
189
366
 
190
367
  # @!attribute selections
191
368
  # @return [Array<Nodes::Field>] Selections on this object (or empty array if this is a scalar field)
192
369
 
193
- def initialize_node(name: nil, arguments: [], directives: [], selections: [], **kwargs)
194
- @name = name
370
+ def initialize_node(attributes)
371
+ @name = attributes[:name]
372
+ @arguments = attributes[:arguments] || NONE
373
+ @directives = attributes[:directives] || NONE
374
+ @selections = attributes[:selections] || NONE
195
375
  # oops, alias is a keyword:
196
- @alias = kwargs.fetch(:alias, nil)
197
- @arguments = arguments
198
- @directives = directives
199
- @selections = selections
200
- end
201
-
202
- def scalars
203
- [name, self.alias]
376
+ @alias = attributes[:alias]
204
377
  end
205
378
 
206
- def children
207
- arguments + directives + selections
208
- end
379
+ # Override this because default is `:fields`
380
+ self.children_method_name = :selections
209
381
  end
210
382
 
211
383
  # A reusable fragment, defined at document-level.
212
384
  class FragmentDefinition < AbstractNode
213
- attr_accessor :name, :type, :directives, :selections
214
-
215
385
  # @!attribute name
216
386
  # @return [String] the identifier for this fragment, which may be applied with `...#{name}`
217
387
 
@@ -224,65 +394,48 @@ module GraphQL
224
394
  @selections = selections
225
395
  end
226
396
 
227
- def children
228
- directives + selections
229
- end
397
+ scalar_methods :name, :type
398
+ children_methods({
399
+ selections: GraphQL::Language::Nodes::Field,
400
+ directives: GraphQL::Language::Nodes::Directive,
401
+ })
230
402
 
231
- def scalars
232
- [name, type]
233
- end
403
+ self.children_method_name = :definitions
234
404
  end
235
405
 
236
406
  # Application of a named fragment in a selection
237
407
  class FragmentSpread < AbstractNode
238
- include Scalars::Name
408
+ scalar_methods :name
409
+ children_methods(directives: GraphQL::Language::Nodes::Directive)
239
410
 
240
- attr_accessor :name, :directives
241
- alias :children :directives
411
+ self.children_method_name = :selections
242
412
 
243
413
  # @!attribute name
244
414
  # @return [String] The identifier of the fragment to apply, corresponds with {FragmentDefinition#name}
245
-
246
- def initialize_node(name: nil, directives: [])
247
- @name = name
248
- @directives = directives
249
- end
250
415
  end
251
416
 
252
417
  # An unnamed fragment, defined directly in the query with `... { }`
253
418
  class InlineFragment < AbstractNode
254
- attr_accessor :type, :directives, :selections
419
+ scalar_methods :type
420
+ children_methods({
421
+ selections: GraphQL::Language::Nodes::Field,
422
+ directives: GraphQL::Language::Nodes::Directive,
423
+ })
424
+
425
+ self.children_method_name = :selections
255
426
 
256
427
  # @!attribute type
257
428
  # @return [String, nil] Name of the type this fragment applies to, or `nil` if this fragment applies to any type
258
-
259
- def initialize_node(type: nil, directives: [], selections: [])
260
- @type = type
261
- @directives = directives
262
- @selections = selections
263
- end
264
-
265
- def children
266
- directives + selections
267
- end
268
-
269
- def scalars
270
- [type]
271
- end
272
429
  end
273
430
 
274
431
  # A collection of key-value inputs which may be a field argument
275
432
  class InputObject < AbstractNode
276
- attr_accessor :arguments
277
- alias :children :arguments
433
+ scalar_methods(false)
434
+ children_methods(arguments: GraphQL::Language::Nodes::Argument)
278
435
 
279
436
  # @!attribute arguments
280
437
  # @return [Array<Nodes::Argument>] A list of key-value pairs inside this input object
281
438
 
282
- def initialize_node(arguments: [])
283
- @arguments = arguments
284
- end
285
-
286
439
  # @return [Hash<String, Any>] Recursively turn this input object into a Ruby Hash
287
440
  def to_h(options={})
288
441
  arguments.inject({}) do |memo, pair|
@@ -292,6 +445,8 @@ module GraphQL
292
445
  end
293
446
  end
294
447
 
448
+ self.children_method_name = :value
449
+
295
450
  private
296
451
 
297
452
  def serialize_value_for_hash(value)
@@ -314,19 +469,42 @@ module GraphQL
314
469
 
315
470
 
316
471
  # A list type definition, denoted with `[...]` (used for variable type definitions)
317
- class ListType < WrapperType; end
472
+ class ListType < WrapperType
473
+ end
318
474
 
319
475
  # A non-null type definition, denoted with `...!` (used for variable type definitions)
320
- class NonNullType < WrapperType; end
476
+ class NonNullType < WrapperType
477
+ end
478
+
479
+ # An operation-level query variable
480
+ class VariableDefinition < AbstractNode
481
+ scalar_methods :name, :type, :default_value
482
+ children_methods false
483
+ # @!attribute default_value
484
+ # @return [String, Integer, Float, Boolean, Array, NullValue] A Ruby value to use if no other value is provided
485
+
486
+ # @!attribute type
487
+ # @return [TypeName, NonNullType, ListType] The expected type of this value
488
+
489
+ # @!attribute name
490
+ # @return [String] The identifier for this variable, _without_ `$`
491
+
492
+ self.children_method_name = :variables
493
+ end
321
494
 
322
495
  # A query, mutation or subscription.
323
496
  # May be anonymous or named.
324
497
  # May be explicitly typed (eg `mutation { ... }`) or implicitly a query (eg `{ ... }`).
325
498
  class OperationDefinition < AbstractNode
326
- attr_accessor :operation_type, :name, :variables, :directives, :selections
499
+ scalar_methods :operation_type, :name
500
+ children_methods({
501
+ variables: GraphQL::Language::Nodes::VariableDefinition,
502
+ selections: GraphQL::Language::Nodes::Field,
503
+ directives: GraphQL::Language::Nodes::Directive,
504
+ })
327
505
 
328
506
  # @!attribute variables
329
- # @return [Array<VariableDefinition>] Variable definitions for this operation
507
+ # @return [Array<VariableDefinition>] Variable $definitions for this operation
330
508
 
331
509
  # @!attribute selections
332
510
  # @return [Array<Field>] Root-level fields on this operation
@@ -337,214 +515,191 @@ module GraphQL
337
515
  # @!attribute name
338
516
  # @return [String, nil] The name for this operation, or `nil` if unnamed
339
517
 
340
- def initialize_node(operation_type: nil, name: nil, variables: [], directives: [], selections: [])
341
- @operation_type = operation_type
342
- @name = name
343
- @variables = variables
344
- @directives = directives
345
- @selections = selections
346
- end
347
-
348
- def children
349
- variables + directives + selections
350
- end
351
-
352
- def scalars
353
- [operation_type, name]
354
- end
518
+ self.children_method_name = :definitions
355
519
  end
356
520
 
357
521
  # A type name, used for variable definitions
358
- class TypeName < NameOnlyNode; end
359
-
360
- # An operation-level query variable
361
- class VariableDefinition < AbstractNode
362
- attr_accessor :name, :type, :default_value
363
-
364
- # @!attribute default_value
365
- # @return [String, Integer, Float, Boolean, Array, NullValue] A Ruby value to use if no other value is provided
366
-
367
- # @!attribute type
368
- # @return [TypeName, NonNullType, ListType] The expected type of this value
369
-
370
- # @!attribute name
371
- # @return [String] The identifier for this variable, _without_ `$`
372
-
373
- def initialize_node(name: nil, type: nil, default_value: nil)
374
- @name = name
375
- @type = type
376
- @default_value = default_value
377
- end
378
-
379
- def scalars
380
- [name, type, default_value]
381
- end
522
+ class TypeName < NameOnlyNode
382
523
  end
383
524
 
384
525
  # Usage of a variable in a query. Name does _not_ include `$`.
385
- class VariableIdentifier < NameOnlyNode; end
526
+ class VariableIdentifier < NameOnlyNode
527
+ self.children_method_name = :value
528
+ end
386
529
 
387
530
  class SchemaDefinition < AbstractNode
388
- attr_accessor :query, :mutation, :subscription, :directives
389
-
390
- def initialize_node(query: nil, mutation: nil, subscription: nil, directives: [])
391
- @query = query
392
- @mutation = mutation
393
- @subscription = subscription
394
- @directives = directives
395
- end
396
-
397
- def scalars
398
- [query, mutation, subscription]
399
- end
531
+ include DefinitionNode
532
+ scalar_methods :query, :mutation, :subscription
533
+ children_methods({
534
+ directives: GraphQL::Language::Nodes::Directive,
535
+ })
536
+ self.children_method_name = :definitions
537
+ end
400
538
 
401
- alias :children :directives
539
+ class SchemaExtension < AbstractNode
540
+ scalar_methods :query, :mutation, :subscription
541
+ children_methods({
542
+ directives: GraphQL::Language::Nodes::Directive,
543
+ })
544
+ self.children_method_name = :definitions
402
545
  end
403
546
 
404
547
  class ScalarTypeDefinition < AbstractNode
405
- include Scalars::Name
406
-
407
- attr_accessor :name, :directives, :description
408
- alias :children :directives
409
-
410
- def initialize_node(name:, directives: [], description: nil)
411
- @name = name
412
- @directives = directives
413
- @description = description
414
- end
548
+ include DefinitionNode
549
+ attr_reader :description
550
+ scalar_methods :name
551
+ children_methods({
552
+ directives: GraphQL::Language::Nodes::Directive,
553
+ })
554
+ self.children_method_name = :definitions
415
555
  end
416
556
 
417
- class ObjectTypeDefinition < AbstractNode
418
- include Scalars::Name
419
-
420
- attr_accessor :name, :interfaces, :fields, :directives, :description
421
-
422
- def initialize_node(name:, interfaces:, fields:, directives: [], description: nil)
423
- @name = name
424
- @interfaces = interfaces || []
425
- @directives = directives
426
- @fields = fields
427
- @description = description
428
- end
429
-
430
- def children
431
- interfaces + fields + directives
432
- end
557
+ class ScalarTypeExtension < AbstractNode
558
+ scalar_methods :name
559
+ children_methods({
560
+ directives: GraphQL::Language::Nodes::Directive,
561
+ })
562
+ self.children_method_name = :definitions
433
563
  end
434
564
 
435
565
  class InputValueDefinition < AbstractNode
436
- attr_accessor :name, :type, :default_value, :directives,:description
437
- alias :children :directives
438
-
439
- def initialize_node(name:, type:, default_value: nil, directives: [], description: nil)
440
- @name = name
441
- @type = type
442
- @default_value = default_value
443
- @directives = directives
444
- @description = description
445
- end
446
-
447
- def scalars
448
- [name, type, default_value]
449
- end
566
+ include DefinitionNode
567
+ attr_reader :description
568
+ scalar_methods :name, :type, :default_value
569
+ children_methods({
570
+ directives: GraphQL::Language::Nodes::Directive,
571
+ })
572
+ self.children_method_name = :fields
450
573
  end
451
574
 
452
575
  class FieldDefinition < AbstractNode
453
- attr_accessor :name, :arguments, :type, :directives, :description
454
-
455
- def initialize_node(name:, arguments:, type:, directives: [], description: nil)
456
- @name = name
457
- @arguments = arguments
458
- @type = type
459
- @directives = directives
460
- @description = description
576
+ include DefinitionNode
577
+ attr_reader :description
578
+ scalar_methods :name, :type
579
+ children_methods({
580
+ directives: GraphQL::Language::Nodes::Directive,
581
+ arguments: GraphQL::Language::Nodes::InputValueDefinition,
582
+ })
583
+ self.children_method_name = :fields
584
+
585
+ # this is so that `children_method_name` of `InputValueDefinition` works properly
586
+ # with `#replace_child`
587
+ alias :fields :arguments
588
+ def merge(new_options)
589
+ if (f = new_options.delete(:fields))
590
+ new_options[:arguments] = f
591
+ end
592
+ super
461
593
  end
594
+ end
462
595
 
463
- def children
464
- arguments + directives
465
- end
596
+ class ObjectTypeDefinition < AbstractNode
597
+ include DefinitionNode
598
+ attr_reader :description
599
+ scalar_methods :name, :interfaces
600
+ children_methods({
601
+ directives: GraphQL::Language::Nodes::Directive,
602
+ fields: GraphQL::Language::Nodes::FieldDefinition,
603
+ })
604
+ self.children_method_name = :definitions
605
+ end
466
606
 
467
- def scalars
468
- [name, type]
469
- end
607
+ class ObjectTypeExtension < AbstractNode
608
+ scalar_methods :name, :interfaces
609
+ children_methods({
610
+ directives: GraphQL::Language::Nodes::Directive,
611
+ fields: GraphQL::Language::Nodes::FieldDefinition,
612
+ })
613
+ self.children_method_name = :definitions
470
614
  end
471
615
 
472
616
  class InterfaceTypeDefinition < AbstractNode
473
- include Scalars::Name
474
-
475
- attr_accessor :name, :fields, :directives, :description
476
-
477
- def initialize_node(name:, fields:, directives: [], description: nil)
478
- @name = name
479
- @fields = fields
480
- @directives = directives
481
- @description = description
482
- end
617
+ include DefinitionNode
618
+ attr_reader :description
619
+ scalar_methods :name
620
+ children_methods({
621
+ directives: GraphQL::Language::Nodes::Directive,
622
+ fields: GraphQL::Language::Nodes::FieldDefinition,
623
+ })
624
+ self.children_method_name = :definitions
625
+ end
483
626
 
484
- def children
485
- fields + directives
486
- end
627
+ class InterfaceTypeExtension < AbstractNode
628
+ scalar_methods :name
629
+ children_methods({
630
+ directives: GraphQL::Language::Nodes::Directive,
631
+ fields: GraphQL::Language::Nodes::FieldDefinition,
632
+ })
633
+ self.children_method_name = :definitions
487
634
  end
488
635
 
489
636
  class UnionTypeDefinition < AbstractNode
490
- include Scalars::Name
491
-
492
- attr_accessor :name, :types, :directives, :description
493
-
494
- def initialize_node(name:, types:, directives: [], description: nil)
495
- @name = name
496
- @types = types
497
- @directives = directives
498
- @description = description
499
- end
500
-
501
- def children
502
- types + directives
503
- end
637
+ include DefinitionNode
638
+ attr_reader :description, :types
639
+ scalar_methods :name
640
+ children_methods({
641
+ directives: GraphQL::Language::Nodes::Directive,
642
+ })
643
+ self.children_method_name = :definitions
504
644
  end
505
645
 
506
- class EnumTypeDefinition < AbstractNode
507
- include Scalars::Name
508
-
509
- attr_accessor :name, :values, :directives, :description
510
-
511
- def initialize_node(name:, values:, directives: [], description: nil)
512
- @name = name
513
- @values = values
514
- @directives = directives
515
- @description = description
516
- end
517
-
518
- def children
519
- values + directives
520
- end
646
+ class UnionTypeExtension < AbstractNode
647
+ attr_reader :types
648
+ scalar_methods :name
649
+ children_methods({
650
+ directives: GraphQL::Language::Nodes::Directive,
651
+ })
652
+ self.children_method_name = :definitions
521
653
  end
522
654
 
523
655
  class EnumValueDefinition < AbstractNode
524
- include Scalars::Name
656
+ include DefinitionNode
657
+ attr_reader :description
658
+ scalar_methods :name
659
+ children_methods({
660
+ directives: GraphQL::Language::Nodes::Directive,
661
+ })
662
+ self.children_method_name = :values
663
+ end
525
664
 
526
- attr_accessor :name, :directives, :description
527
- alias :children :directives
665
+ class EnumTypeDefinition < AbstractNode
666
+ include DefinitionNode
667
+ attr_reader :description
668
+ scalar_methods :name
669
+ children_methods({
670
+ directives: GraphQL::Language::Nodes::Directive,
671
+ values: GraphQL::Language::Nodes::EnumValueDefinition,
672
+ })
673
+ self.children_method_name = :definitions
674
+ end
528
675
 
529
- def initialize_node(name:, directives: [], description: nil)
530
- @name = name
531
- @directives = directives
532
- @description = description
533
- end
676
+ class EnumTypeExtension < AbstractNode
677
+ scalar_methods :name
678
+ children_methods({
679
+ directives: GraphQL::Language::Nodes::Directive,
680
+ values: GraphQL::Language::Nodes::EnumValueDefinition,
681
+ })
682
+ self.children_method_name = :definitions
534
683
  end
535
684
 
536
685
  class InputObjectTypeDefinition < AbstractNode
537
- include Scalars::Name
538
-
539
- attr_accessor :name, :fields, :directives, :description
540
- alias :children :fields
686
+ include DefinitionNode
687
+ attr_reader :description
688
+ scalar_methods :name
689
+ children_methods({
690
+ directives: GraphQL::Language::Nodes::Directive,
691
+ fields: GraphQL::Language::Nodes::InputValueDefinition,
692
+ })
693
+ self.children_method_name = :definitions
694
+ end
541
695
 
542
- def initialize_node(name:, fields:, directives: [], description: nil)
543
- @name = name
544
- @fields = fields
545
- @directives = directives
546
- @description = description
547
- end
696
+ class InputObjectTypeExtension < AbstractNode
697
+ scalar_methods :name
698
+ children_methods({
699
+ directives: GraphQL::Language::Nodes::Directive,
700
+ fields: GraphQL::Language::Nodes::InputValueDefinition,
701
+ })
702
+ self.children_method_name = :definitions
548
703
  end
549
704
  end
550
705
  end