graphql 1.8.0 → 1.12.12

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -1,22 +1,23 @@
1
1
  # frozen_string_literal: true
2
2
  module GraphQL
3
3
  module StaticValidation
4
- class VariableNamesAreUnique
5
- include GraphQL::StaticValidation::Message::MessageHelper
6
-
7
- def validate(context)
8
- context.visitor[GraphQL::Language::Nodes::OperationDefinition] << ->(node, parent) {
9
- var_defns = node.variables
10
- if var_defns.any?
11
- vars_by_name = Hash.new { |h, k| h[k] = [] }
12
- var_defns.each { |v| vars_by_name[v.name] << v }
13
- vars_by_name.each do |name, defns|
14
- if defns.size > 1
15
- context.errors << message("There can only be one variable named \"#{name}\"", defns, context: context)
16
- end
4
+ module VariableNamesAreUnique
5
+ def on_operation_definition(node, parent)
6
+ var_defns = node.variables
7
+ if var_defns.any?
8
+ vars_by_name = Hash.new { |h, k| h[k] = [] }
9
+ var_defns.each { |v| vars_by_name[v.name] << v }
10
+ vars_by_name.each do |name, defns|
11
+ if defns.size > 1
12
+ add_error(GraphQL::StaticValidation::VariableNamesAreUniqueError.new(
13
+ "There can only be one variable named \"#{name}\"",
14
+ nodes: defns,
15
+ name: name
16
+ ))
17
17
  end
18
18
  end
19
- }
19
+ end
20
+ super
20
21
  end
21
22
  end
22
23
  end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+ module GraphQL
3
+ module StaticValidation
4
+ class VariableNamesAreUniqueError < StaticValidation::Error
5
+ attr_reader :variable_name
6
+
7
+ def initialize(message, path: nil, nodes: [], name:)
8
+ super(message, path: path, nodes: nodes)
9
+ @variable_name = name
10
+ end
11
+
12
+ # A hash representation of this Message
13
+ def to_h
14
+ extensions = {
15
+ "code" => code,
16
+ "variableName" => variable_name
17
+ }
18
+
19
+ super.merge({
20
+ "extensions" => extensions
21
+ })
22
+ end
23
+
24
+ def code
25
+ "variableNotUnique"
26
+ end
27
+ end
28
+ end
29
+ end
@@ -1,64 +1,67 @@
1
1
  # frozen_string_literal: true
2
2
  module GraphQL
3
3
  module StaticValidation
4
- class VariableUsagesAreAllowed
5
- include GraphQL::StaticValidation::Message::MessageHelper
6
-
7
- def validate(context)
4
+ module VariableUsagesAreAllowed
5
+ def initialize(*)
6
+ super
8
7
  # holds { name => ast_node } pairs
9
- declared_variables = {}
10
- context.visitor[GraphQL::Language::Nodes::OperationDefinition] << ->(node, parent) {
11
- declared_variables = node.variables.each_with_object({}) { |var, memo| memo[var.name] = var }
12
- }
13
-
14
- context.visitor[GraphQL::Language::Nodes::Argument] << ->(node, parent) {
15
- node_values = if node.value.is_a?(Array)
16
- node.value
17
- else
18
- [node.value]
19
- end
20
- node_values = node_values.select { |value| value.is_a? GraphQL::Language::Nodes::VariableIdentifier }
8
+ @declared_variables = {}
9
+ end
10
+
11
+ def on_operation_definition(node, parent)
12
+ @declared_variables = node.variables.each_with_object({}) { |var, memo| memo[var.name] = var }
13
+ super
14
+ end
21
15
 
22
- return if node_values.none?
16
+ def on_argument(node, parent)
17
+ node_values = if node.value.is_a?(Array)
18
+ node.value
19
+ else
20
+ [node.value]
21
+ end
22
+ node_values = node_values.select { |value| value.is_a? GraphQL::Language::Nodes::VariableIdentifier }
23
23
 
24
- arguments = nil
25
- case parent
24
+ if node_values.any?
25
+ arguments = case parent
26
26
  when GraphQL::Language::Nodes::Field
27
- arguments = context.field_definition.arguments
27
+ context.field_definition.arguments
28
28
  when GraphQL::Language::Nodes::Directive
29
- arguments = context.directive_definition.arguments
29
+ context.directive_definition.arguments
30
30
  when GraphQL::Language::Nodes::InputObject
31
31
  arg_type = context.argument_definition.type.unwrap
32
- if arg_type.is_a?(GraphQL::InputObjectType)
33
- arguments = arg_type.input_fields
32
+ if arg_type.kind.input_object?
33
+ arguments = arg_type.arguments
34
+ else
35
+ # This is some kind of error
36
+ nil
34
37
  end
35
38
  else
36
39
  raise("Unexpected argument parent: #{parent}")
37
40
  end
38
41
 
39
42
  node_values.each do |node_value|
40
- var_defn_ast = declared_variables[node_value.name]
43
+ var_defn_ast = @declared_variables[node_value.name]
41
44
  # Might be undefined :(
42
45
  # VariablesAreUsedAndDefined can't finalize its search until the end of the document.
43
- var_defn_ast && arguments && validate_usage(arguments, node, var_defn_ast, context)
46
+ var_defn_ast && arguments && validate_usage(arguments, node, var_defn_ast)
44
47
  end
45
- }
48
+ end
49
+ super
46
50
  end
47
51
 
48
52
  private
49
53
 
50
- def validate_usage(arguments, arg_node, ast_var, context)
51
- var_type = context.schema.type_from_ast(ast_var.type)
54
+ def validate_usage(arguments, arg_node, ast_var)
55
+ var_type = context.schema.type_from_ast(ast_var.type, context: context)
52
56
  if var_type.nil?
53
57
  return
54
58
  end
55
59
  if !ast_var.default_value.nil?
56
- unless var_type.is_a?(GraphQL::NonNullType)
60
+ unless var_type.kind.non_null?
57
61
  # If the value is required, but the argument is not,
58
62
  # and yet there's a non-nil default, then we impliclty
59
63
  # make the argument also a required type.
60
-
61
- var_type = GraphQL::NonNullType.new(of_type: var_type)
64
+ var_type = var_type.to_non_null_type
62
65
  end
63
66
  end
64
67
 
@@ -71,16 +74,23 @@ module GraphQL
71
74
  var_type = wrap_var_type_with_depth_of_arg(var_type, arg_node)
72
75
 
73
76
  if var_inner_type != arg_inner_type
74
- context.errors << create_error("Type mismatch", var_type, ast_var, arg_defn, arg_node, context)
77
+ create_error("Type mismatch", var_type, ast_var, arg_defn, arg_node)
75
78
  elsif list_dimension(var_type) != list_dimension(arg_defn_type)
76
- context.errors << create_error("List dimension mismatch", var_type, ast_var, arg_defn, arg_node, context)
79
+ create_error("List dimension mismatch", var_type, ast_var, arg_defn, arg_node)
77
80
  elsif !non_null_levels_match(arg_defn_type, var_type)
78
- context.errors << create_error("Nullability mismatch", var_type, ast_var, arg_defn, arg_node, context)
81
+ create_error("Nullability mismatch", var_type, ast_var, arg_defn, arg_node)
79
82
  end
80
83
  end
81
84
 
82
- def create_error(error_message, var_type, ast_var, arg_defn, arg_node, context)
83
- message("#{error_message} on variable $#{ast_var.name} and argument #{arg_node.name} (#{var_type.to_s} / #{arg_defn.type.to_s})", arg_node, context: context)
85
+ def create_error(error_message, var_type, ast_var, arg_defn, arg_node)
86
+ add_error(GraphQL::StaticValidation::VariableUsagesAreAllowedError.new(
87
+ "#{error_message} on variable $#{ast_var.name} and argument #{arg_node.name} (#{var_type.to_type_signature} / #{arg_defn.type.to_type_signature})",
88
+ nodes: arg_node,
89
+ name: ast_var.name,
90
+ type: var_type.to_type_signature,
91
+ argument: arg_node.name,
92
+ error: error_message
93
+ ))
84
94
  end
85
95
 
86
96
  def wrap_var_type_with_depth_of_arg(var_type, arg_node)
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+ module GraphQL
3
+ module StaticValidation
4
+ class VariableUsagesAreAllowedError < StaticValidation::Error
5
+ attr_reader :type_name
6
+ attr_reader :variable_name
7
+ attr_reader :argument_name
8
+ attr_reader :error_message
9
+
10
+ def initialize(message, path: nil, nodes: [], type:, name:, argument:, error:)
11
+ super(message, path: path, nodes: nodes)
12
+ @type_name = type
13
+ @variable_name = name
14
+ @argument_name = argument
15
+ @error_message = error
16
+ end
17
+
18
+ # A hash representation of this Message
19
+ def to_h
20
+ extensions = {
21
+ "code" => code,
22
+ "variableName" => variable_name,
23
+ "typeName" => type_name,
24
+ "argumentName" => argument_name,
25
+ "errorMessage" => error_message
26
+ }
27
+
28
+ super.merge({
29
+ "extensions" => extensions
30
+ })
31
+ end
32
+
33
+ def code
34
+ "variableMismatch"
35
+ end
36
+ end
37
+ end
38
+ end
@@ -1,28 +1,32 @@
1
1
  # frozen_string_literal: true
2
2
  module GraphQL
3
3
  module StaticValidation
4
- class VariablesAreInputTypes
5
- include GraphQL::StaticValidation::Message::MessageHelper
6
-
7
- def validate(context)
8
- context.visitor[GraphQL::Language::Nodes::VariableDefinition] << ->(node, parent) {
9
- validate_is_input_type(node, context)
10
- }
11
- end
12
-
13
- private
14
-
15
- def validate_is_input_type(node, context)
4
+ module VariablesAreInputTypes
5
+ def on_variable_definition(node, parent)
16
6
  type_name = get_type_name(node.type)
17
7
  type = context.warden.get_type(type_name)
18
8
 
19
9
  if type.nil?
20
- context.errors << message("#{type_name} isn't a defined input type (on $#{node.name})", node, context: context)
10
+ add_error(GraphQL::StaticValidation::VariablesAreInputTypesError.new(
11
+ "#{type_name} isn't a defined input type (on $#{node.name})",
12
+ nodes: node,
13
+ name: node.name,
14
+ type: type_name
15
+ ))
21
16
  elsif !type.kind.input?
22
- context.errors << message("#{type.name} isn't a valid input type (on $#{node.name})", node, context: context)
17
+ add_error(GraphQL::StaticValidation::VariablesAreInputTypesError.new(
18
+ "#{type.graphql_name} isn't a valid input type (on $#{node.name})",
19
+ nodes: node,
20
+ name: node.name,
21
+ type: type_name
22
+ ))
23
23
  end
24
+
25
+ super
24
26
  end
25
27
 
28
+ private
29
+
26
30
  def get_type_name(ast_type)
27
31
  if ast_type.respond_to?(:of_type)
28
32
  get_type_name(ast_type.of_type)
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+ module GraphQL
3
+ module StaticValidation
4
+ class VariablesAreInputTypesError < StaticValidation::Error
5
+ attr_reader :type_name
6
+ attr_reader :variable_name
7
+
8
+ def initialize(message, path: nil, nodes: [], type:, name:)
9
+ super(message, path: path, nodes: nodes)
10
+ @type_name = type
11
+ @variable_name = name
12
+ end
13
+
14
+ # A hash representation of this Message
15
+ def to_h
16
+ extensions = {
17
+ "code" => code,
18
+ "typeName" => type_name,
19
+ "variableName" => variable_name
20
+ }
21
+
22
+ super.merge({
23
+ "extensions" => extensions
24
+ })
25
+ end
26
+
27
+ def code
28
+ "variableRequiresValidType"
29
+ end
30
+ end
31
+ end
32
+ end
@@ -2,7 +2,7 @@
2
2
  module GraphQL
3
3
  module StaticValidation
4
4
  # The problem is
5
- # - Variable usage must be determined at the OperationDefinition level
5
+ # - Variable $usage must be determined at the OperationDefinition level
6
6
  # - You can't tell how fragments use variables until you visit FragmentDefinitions (which may be at the end of the document)
7
7
  #
8
8
  # So, this validator includes some crazy logic to follow fragment spreads recursively, while avoiding infinite loops.
@@ -11,9 +11,7 @@ module GraphQL
11
11
  # - re-visiting the AST for each validator
12
12
  # - allowing validators to say `followSpreads: true`
13
13
  #
14
- class VariablesAreUsedAndDefined
15
- include GraphQL::StaticValidation::Message::MessageHelper
16
-
14
+ module VariablesAreUsedAndDefined
17
15
  class VariableUsage
18
16
  attr_accessor :ast_node, :used_by, :declared_by, :path
19
17
  def used?
@@ -25,73 +23,67 @@ module GraphQL
25
23
  end
26
24
  end
27
25
 
28
- def variable_hash
29
- Hash.new {|h, k| h[k] = VariableUsage.new }
26
+ def initialize(*)
27
+ super
28
+ @variable_usages_for_context = Hash.new {|hash, key| hash[key] = Hash.new {|h, k| h[k] = VariableUsage.new } }
29
+ @spreads_for_context = Hash.new {|hash, key| hash[key] = [] }
30
+ @variable_context_stack = []
30
31
  end
31
32
 
32
- def validate(context)
33
- variable_usages_for_context = Hash.new {|hash, key| hash[key] = variable_hash }
34
- spreads_for_context = Hash.new {|hash, key| hash[key] = [] }
35
- variable_context_stack = []
36
-
37
- # OperationDefinitions and FragmentDefinitions
38
- # both push themselves onto the context stack (and pop themselves off)
39
- push_variable_context_stack = ->(node, parent) {
40
- # initialize the hash of vars for this context:
41
- variable_usages_for_context[node]
42
- variable_context_stack.push(node)
43
- }
44
-
45
- pop_variable_context_stack = ->(node, parent) {
46
- variable_context_stack.pop
47
- }
48
-
49
-
50
- context.visitor[GraphQL::Language::Nodes::OperationDefinition] << push_variable_context_stack
51
- context.visitor[GraphQL::Language::Nodes::OperationDefinition] << ->(node, parent) {
52
- # mark variables as defined:
53
- var_hash = variable_usages_for_context[node]
54
- node.variables.each { |var|
55
- var_usage = var_hash[var.name]
56
- var_usage.declared_by = node
57
- var_usage.path = context.path
58
- }
33
+ def on_operation_definition(node, parent)
34
+ # initialize the hash of vars for this context:
35
+ @variable_usages_for_context[node]
36
+ @variable_context_stack.push(node)
37
+ # mark variables as defined:
38
+ var_hash = @variable_usages_for_context[node]
39
+ node.variables.each { |var|
40
+ var_usage = var_hash[var.name]
41
+ var_usage.declared_by = node
42
+ var_usage.path = context.path
59
43
  }
60
- context.visitor[GraphQL::Language::Nodes::OperationDefinition].leave << pop_variable_context_stack
61
-
62
- context.visitor[GraphQL::Language::Nodes::FragmentDefinition] << push_variable_context_stack
63
- context.visitor[GraphQL::Language::Nodes::FragmentDefinition].leave << pop_variable_context_stack
44
+ super
45
+ @variable_context_stack.pop
46
+ end
64
47
 
65
- # For FragmentSpreads:
66
- # - find the context on the stack
67
- # - mark the context as containing this spread
68
- context.visitor[GraphQL::Language::Nodes::FragmentSpread] << ->(node, parent) {
69
- variable_context = variable_context_stack.last
70
- spreads_for_context[variable_context] << node.name
71
- }
48
+ def on_fragment_definition(node, parent)
49
+ # initialize the hash of vars for this context:
50
+ @variable_usages_for_context[node]
51
+ @variable_context_stack.push(node)
52
+ super
53
+ @variable_context_stack.pop
54
+ end
72
55
 
73
- # For VariableIdentifiers:
74
- # - mark the variable as used
75
- # - assign its AST node
76
- context.visitor[GraphQL::Language::Nodes::VariableIdentifier] << ->(node, parent) {
77
- usage_context = variable_context_stack.last
78
- declared_variables = variable_usages_for_context[usage_context]
79
- usage = declared_variables[node.name]
80
- usage.used_by = usage_context
81
- usage.ast_node = node
82
- usage.path = context.path
83
- }
56
+ # For FragmentSpreads:
57
+ # - find the context on the stack
58
+ # - mark the context as containing this spread
59
+ def on_fragment_spread(node, parent)
60
+ variable_context = @variable_context_stack.last
61
+ @spreads_for_context[variable_context] << node.name
62
+ super
63
+ end
84
64
 
65
+ # For VariableIdentifiers:
66
+ # - mark the variable as used
67
+ # - assign its AST node
68
+ def on_variable_identifier(node, parent)
69
+ usage_context = @variable_context_stack.last
70
+ declared_variables = @variable_usages_for_context[usage_context]
71
+ usage = declared_variables[node.name]
72
+ usage.used_by = usage_context
73
+ usage.ast_node = node
74
+ usage.path = context.path
75
+ super
76
+ end
85
77
 
86
- context.visitor[GraphQL::Language::Nodes::Document].leave << ->(node, parent) {
87
- fragment_definitions = variable_usages_for_context.select { |key, value| key.is_a?(GraphQL::Language::Nodes::FragmentDefinition) }
88
- operation_definitions = variable_usages_for_context.select { |key, value| key.is_a?(GraphQL::Language::Nodes::OperationDefinition) }
78
+ def on_document(node, parent)
79
+ super
80
+ fragment_definitions = @variable_usages_for_context.select { |key, value| key.is_a?(GraphQL::Language::Nodes::FragmentDefinition) }
81
+ operation_definitions = @variable_usages_for_context.select { |key, value| key.is_a?(GraphQL::Language::Nodes::OperationDefinition) }
89
82
 
90
- operation_definitions.each do |node, node_variables|
91
- follow_spreads(node, node_variables, spreads_for_context, fragment_definitions, [])
92
- create_errors(node_variables, context)
93
- end
94
- }
83
+ operation_definitions.each do |node, node_variables|
84
+ follow_spreads(node, node_variables, @spreads_for_context, fragment_definitions, [])
85
+ create_errors(node_variables)
86
+ end
95
87
  end
96
88
 
97
89
  private
@@ -129,16 +121,34 @@ module GraphQL
129
121
 
130
122
  # Determine all the error messages,
131
123
  # Then push messages into the validation context
132
- def create_errors(node_variables, context)
124
+ def create_errors(node_variables)
133
125
  # Declared but not used:
134
126
  node_variables
135
127
  .select { |name, usage| usage.declared? && !usage.used? }
136
- .each { |var_name, usage| context.errors << message("Variable $#{var_name} is declared by #{usage.declared_by.name} but not used", usage.declared_by, path: usage.path) }
128
+ .each { |var_name, usage|
129
+ declared_by_error_name = usage.declared_by.name || "anonymous #{usage.declared_by.operation_type}"
130
+ add_error(GraphQL::StaticValidation::VariablesAreUsedAndDefinedError.new(
131
+ "Variable $#{var_name} is declared by #{declared_by_error_name} but not used",
132
+ nodes: usage.declared_by,
133
+ path: usage.path,
134
+ name: var_name,
135
+ error_type: VariablesAreUsedAndDefinedError::VIOLATIONS[:VARIABLE_NOT_USED]
136
+ ))
137
+ }
137
138
 
138
139
  # Used but not declared:
139
140
  node_variables
140
141
  .select { |name, usage| usage.used? && !usage.declared? }
141
- .each { |var_name, usage| context.errors << message("Variable $#{var_name} is used by #{usage.used_by.name} but not declared", usage.ast_node, path: usage.path) }
142
+ .each { |var_name, usage|
143
+ used_by_error_name = usage.used_by.name || "anonymous #{usage.used_by.operation_type}"
144
+ add_error(GraphQL::StaticValidation::VariablesAreUsedAndDefinedError.new(
145
+ "Variable $#{var_name} is used by #{used_by_error_name} but not declared",
146
+ nodes: usage.ast_node,
147
+ path: usage.path,
148
+ name: var_name,
149
+ error_type: VariablesAreUsedAndDefinedError::VIOLATIONS[:VARIABLE_NOT_DEFINED]
150
+ ))
151
+ }
142
152
  end
143
153
  end
144
154
  end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+ module GraphQL
3
+ module StaticValidation
4
+ class VariablesAreUsedAndDefinedError < StaticValidation::Error
5
+ attr_reader :variable_name
6
+ attr_reader :violation
7
+
8
+ VIOLATIONS = {
9
+ :VARIABLE_NOT_USED => "variableNotUsed",
10
+ :VARIABLE_NOT_DEFINED => "variableNotDefined",
11
+ }
12
+
13
+ def initialize(message, path: nil, nodes: [], name:, error_type:)
14
+ super(message, path: path, nodes: nodes)
15
+ @variable_name = name
16
+ raise("Unexpected error type: #{error_type}") if !VIOLATIONS.values.include?(error_type)
17
+ @violation = error_type
18
+ end
19
+
20
+ # A hash representation of this Message
21
+ def to_h
22
+ extensions = {
23
+ "code" => code,
24
+ "variableName" => variable_name
25
+ }
26
+
27
+ super.merge({
28
+ "extensions" => extensions
29
+ })
30
+ end
31
+
32
+ def code
33
+ @violation
34
+ end
35
+ end
36
+ end
37
+ end
@@ -55,7 +55,7 @@ module GraphQL
55
55
  module FragmentWithTypeStrategy
56
56
  def push(stack, node)
57
57
  object_type = if node.type
58
- stack.schema.types.fetch(node.type.name, nil)
58
+ stack.schema.get_type(node.type.name)
59
59
  else
60
60
  stack.object_types.last
61
61
  end
@@ -148,7 +148,7 @@ module GraphQL
148
148
  if stack.argument_definitions.last
149
149
  arg_type = stack.argument_definitions.last.type.unwrap
150
150
  if arg_type.kind.input_object?
151
- argument_defn = arg_type.input_fields[node.name]
151
+ argument_defn = arg_type.arguments[node.name]
152
152
  else
153
153
  argument_defn = nil
154
154
  end
@@ -14,73 +14,28 @@ module GraphQL
14
14
  class ValidationContext
15
15
  extend Forwardable
16
16
 
17
- attr_reader :query, :schema,
18
- :document, :errors, :visitor,
19
- :warden, :dependencies, :each_irep_node_handlers
17
+ attr_reader :query, :errors, :visitor,
18
+ :on_dependency_resolve_handlers
20
19
 
21
20
  def_delegators :@query, :schema, :document, :fragments, :operations, :warden
22
21
 
23
- def initialize(query)
22
+ def initialize(query, visitor_class)
24
23
  @query = query
25
24
  @literal_validator = LiteralValidator.new(context: query.context)
26
25
  @errors = []
27
- @visitor = GraphQL::Language::Visitor.new(document)
28
- @type_stack = GraphQL::StaticValidation::TypeStack.new(schema, visitor)
29
- definition_dependencies = DefinitionDependencies.mount(self)
30
26
  @on_dependency_resolve_handlers = []
31
- @each_irep_node_handlers = []
32
- visitor[GraphQL::Language::Nodes::Document].leave << ->(_n, _p) {
33
- @dependencies = definition_dependencies.dependency_map { |defn, spreads, frag|
34
- @on_dependency_resolve_handlers.each { |h| h.call(defn, spreads, frag) }
35
- }
36
- }
27
+ @visitor = visitor_class.new(document, self)
37
28
  end
38
29
 
30
+ def_delegators :@visitor,
31
+ :path, :type_definition, :field_definition, :argument_definition,
32
+ :parent_type_definition, :directive_definition, :object_types, :dependencies
33
+
39
34
  def on_dependency_resolve(&handler)
40
35
  @on_dependency_resolve_handlers << handler
41
36
  end
42
37
 
43
- def object_types
44
- @type_stack.object_types
45
- end
46
-
47
- def each_irep_node(&handler)
48
- @each_irep_node_handlers << handler
49
- end
50
-
51
- # @return [GraphQL::BaseType] The current object type
52
- def type_definition
53
- object_types.last
54
- end
55
-
56
- # @return [GraphQL::BaseType] The type which the current type came from
57
- def parent_type_definition
58
- object_types[-2]
59
- end
60
-
61
- # @return [GraphQL::Field, nil] The most-recently-entered GraphQL::Field, if currently inside one
62
- def field_definition
63
- @type_stack.field_definitions.last
64
- end
65
-
66
- # @return [Array<String>] Field names to get to the current field
67
- def path
68
- @type_stack.path.dup
69
- end
70
-
71
- # @return [GraphQL::Directive, nil] The most-recently-entered GraphQL::Directive, if currently inside one
72
- def directive_definition
73
- @type_stack.directive_definitions.last
74
- end
75
-
76
- # @return [GraphQL::Argument, nil] The most-recently-entered GraphQL::Argument, if currently inside one
77
- def argument_definition
78
- # Don't get the _last_ one because that's the current one.
79
- # Get the second-to-last one, which is the parent of the current one.
80
- @type_stack.argument_definitions[-2]
81
- end
82
-
83
- def valid_literal?(ast_value, type)
38
+ def validate_literal(ast_value, type)
84
39
  @literal_validator.validate(ast_value, type)
85
40
  end
86
41
  end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+ module GraphQL
3
+ module StaticValidation
4
+ class ValidationTimeoutError < StaticValidation::Error
5
+ def initialize(message, path: nil, nodes: [])
6
+ super(message, path: path, nodes: nodes)
7
+ end
8
+
9
+ # A hash representation of this Message
10
+ def to_h
11
+ extensions = {
12
+ "code" => code
13
+ }
14
+
15
+ super.merge({
16
+ "extensions" => extensions
17
+ })
18
+ end
19
+
20
+ def code
21
+ "validationTimeout"
22
+ end
23
+ end
24
+ end
25
+ end