graphql 1.8.0 → 1.12.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of graphql might be problematic. Click here for more details.

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