graphql 1.10.2 → 2.0.21

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 (402) hide show
  1. checksums.yaml +4 -4
  2. data/lib/generators/graphql/core.rb +21 -10
  3. data/lib/generators/graphql/enum_generator.rb +4 -10
  4. data/lib/generators/graphql/field_extractor.rb +31 -0
  5. data/lib/generators/graphql/input_generator.rb +50 -0
  6. data/lib/generators/graphql/install/mutation_root_generator.rb +34 -0
  7. data/lib/generators/graphql/{templates → install/templates}/base_mutation.erb +2 -0
  8. data/lib/generators/graphql/{templates → install/templates}/mutation_type.erb +2 -0
  9. data/lib/generators/graphql/install_generator.rb +45 -8
  10. data/lib/generators/graphql/interface_generator.rb +7 -7
  11. data/lib/generators/graphql/loader_generator.rb +1 -0
  12. data/lib/generators/graphql/mutation_create_generator.rb +22 -0
  13. data/lib/generators/graphql/mutation_delete_generator.rb +22 -0
  14. data/lib/generators/graphql/mutation_generator.rb +6 -30
  15. data/lib/generators/graphql/mutation_update_generator.rb +22 -0
  16. data/lib/generators/graphql/object_generator.rb +28 -12
  17. data/lib/generators/graphql/orm_mutations_base.rb +40 -0
  18. data/lib/generators/graphql/relay.rb +49 -0
  19. data/lib/generators/graphql/relay_generator.rb +21 -0
  20. data/lib/generators/graphql/scalar_generator.rb +4 -2
  21. data/lib/generators/graphql/templates/base_argument.erb +2 -0
  22. data/lib/generators/graphql/templates/base_connection.erb +8 -0
  23. data/lib/generators/graphql/templates/base_edge.erb +8 -0
  24. data/lib/generators/graphql/templates/base_enum.erb +2 -0
  25. data/lib/generators/graphql/templates/base_field.erb +2 -0
  26. data/lib/generators/graphql/templates/base_input_object.erb +2 -0
  27. data/lib/generators/graphql/templates/base_interface.erb +2 -0
  28. data/lib/generators/graphql/templates/base_object.erb +2 -0
  29. data/lib/generators/graphql/templates/base_scalar.erb +2 -0
  30. data/lib/generators/graphql/templates/base_union.erb +2 -0
  31. data/lib/generators/graphql/templates/enum.erb +7 -1
  32. data/lib/generators/graphql/templates/graphql_controller.erb +16 -12
  33. data/lib/generators/graphql/templates/input.erb +9 -0
  34. data/lib/generators/graphql/templates/interface.erb +6 -2
  35. data/lib/generators/graphql/templates/loader.erb +2 -0
  36. data/lib/generators/graphql/templates/mutation.erb +3 -1
  37. data/lib/generators/graphql/templates/mutation_create.erb +20 -0
  38. data/lib/generators/graphql/templates/mutation_delete.erb +20 -0
  39. data/lib/generators/graphql/templates/mutation_update.erb +21 -0
  40. data/lib/generators/graphql/templates/node_type.erb +9 -0
  41. data/lib/generators/graphql/templates/object.erb +7 -3
  42. data/lib/generators/graphql/templates/query_type.erb +3 -3
  43. data/lib/generators/graphql/templates/scalar.erb +5 -1
  44. data/lib/generators/graphql/templates/schema.erb +24 -33
  45. data/lib/generators/graphql/templates/union.erb +6 -2
  46. data/lib/generators/graphql/type_generator.rb +47 -10
  47. data/lib/generators/graphql/union_generator.rb +5 -5
  48. data/lib/graphql/analysis/ast/field_usage.rb +30 -1
  49. data/lib/graphql/analysis/ast/max_query_complexity.rb +0 -1
  50. data/lib/graphql/analysis/ast/query_complexity.rb +125 -117
  51. data/lib/graphql/analysis/ast/query_depth.rb +0 -1
  52. data/lib/graphql/analysis/ast/visitor.rb +52 -36
  53. data/lib/graphql/analysis/ast.rb +7 -8
  54. data/lib/graphql/analysis.rb +0 -7
  55. data/lib/graphql/backtrace/inspect_result.rb +0 -1
  56. data/lib/graphql/backtrace/table.rb +31 -18
  57. data/lib/graphql/backtrace/trace.rb +96 -0
  58. data/lib/graphql/backtrace/traced_error.rb +0 -1
  59. data/lib/graphql/backtrace/tracer.rb +39 -9
  60. data/lib/graphql/backtrace.rb +26 -18
  61. data/lib/graphql/dataloader/null_dataloader.rb +24 -0
  62. data/lib/graphql/dataloader/request.rb +19 -0
  63. data/lib/graphql/dataloader/request_all.rb +19 -0
  64. data/lib/graphql/dataloader/source.rb +164 -0
  65. data/lib/graphql/dataloader.rb +311 -0
  66. data/lib/graphql/date_encoding_error.rb +16 -0
  67. data/lib/graphql/deprecation.rb +9 -0
  68. data/lib/graphql/dig.rb +1 -1
  69. data/lib/graphql/execution/errors.rb +77 -44
  70. data/lib/graphql/execution/interpreter/argument_value.rb +28 -0
  71. data/lib/graphql/execution/interpreter/arguments.rb +88 -0
  72. data/lib/graphql/execution/interpreter/arguments_cache.rb +104 -0
  73. data/lib/graphql/execution/interpreter/handles_raw_value.rb +18 -0
  74. data/lib/graphql/execution/interpreter/resolve.rb +62 -24
  75. data/lib/graphql/execution/interpreter/runtime.rb +826 -464
  76. data/lib/graphql/execution/interpreter.rb +206 -68
  77. data/lib/graphql/execution/lazy.rb +11 -21
  78. data/lib/graphql/execution/lookahead.rb +55 -136
  79. data/lib/graphql/execution/multiplex.rb +6 -162
  80. data/lib/graphql/execution.rb +11 -4
  81. data/lib/graphql/filter.rb +7 -2
  82. data/lib/graphql/integer_decoding_error.rb +17 -0
  83. data/lib/graphql/integer_encoding_error.rb +18 -2
  84. data/lib/graphql/introspection/directive_location_enum.rb +2 -2
  85. data/lib/graphql/introspection/directive_type.rb +11 -5
  86. data/lib/graphql/introspection/dynamic_fields.rb +3 -8
  87. data/lib/graphql/introspection/entry_points.rb +4 -17
  88. data/lib/graphql/introspection/enum_value_type.rb +2 -2
  89. data/lib/graphql/introspection/field_type.rb +9 -5
  90. data/lib/graphql/introspection/input_value_type.rb +15 -3
  91. data/lib/graphql/introspection/introspection_query.rb +6 -92
  92. data/lib/graphql/introspection/schema_type.rb +11 -6
  93. data/lib/graphql/introspection/type_type.rb +31 -14
  94. data/lib/graphql/introspection.rb +100 -0
  95. data/lib/graphql/invalid_null_error.rb +18 -0
  96. data/lib/graphql/language/block_string.rb +20 -5
  97. data/lib/graphql/language/cache.rb +37 -0
  98. data/lib/graphql/language/document_from_schema_definition.rb +96 -44
  99. data/lib/graphql/language/lexer.rb +216 -1462
  100. data/lib/graphql/language/nodes.rb +126 -129
  101. data/lib/graphql/language/parser.rb +997 -933
  102. data/lib/graphql/language/parser.y +148 -118
  103. data/lib/graphql/language/printer.rb +48 -23
  104. data/lib/graphql/language/sanitized_printer.rb +222 -0
  105. data/lib/graphql/language/token.rb +0 -4
  106. data/lib/graphql/language/visitor.rb +192 -84
  107. data/lib/graphql/language.rb +2 -0
  108. data/lib/graphql/name_validator.rb +2 -7
  109. data/lib/graphql/pagination/active_record_relation_connection.rb +45 -3
  110. data/lib/graphql/pagination/array_connection.rb +6 -4
  111. data/lib/graphql/pagination/connection.rb +105 -23
  112. data/lib/graphql/pagination/connections.rb +62 -35
  113. data/lib/graphql/pagination/relation_connection.rb +88 -36
  114. data/lib/graphql/parse_error.rb +0 -1
  115. data/lib/graphql/query/context.rb +203 -198
  116. data/lib/graphql/query/fingerprint.rb +26 -0
  117. data/lib/graphql/query/input_validation_result.rb +33 -7
  118. data/lib/graphql/query/null_context.rb +22 -9
  119. data/lib/graphql/query/validation_pipeline.rb +16 -38
  120. data/lib/graphql/query/variable_validation_error.rb +3 -3
  121. data/lib/graphql/query/variables.rb +36 -12
  122. data/lib/graphql/query.rb +92 -44
  123. data/lib/graphql/railtie.rb +6 -102
  124. data/lib/graphql/rake_task/validate.rb +1 -1
  125. data/lib/graphql/rake_task.rb +41 -10
  126. data/lib/graphql/relay/range_add.rb +17 -10
  127. data/lib/graphql/relay.rb +0 -15
  128. data/lib/graphql/rubocop/graphql/base_cop.rb +36 -0
  129. data/lib/graphql/rubocop/graphql/default_null_true.rb +43 -0
  130. data/lib/graphql/rubocop/graphql/default_required_true.rb +43 -0
  131. data/lib/graphql/rubocop.rb +4 -0
  132. data/lib/graphql/schema/addition.rb +245 -0
  133. data/lib/graphql/schema/argument.rb +250 -46
  134. data/lib/graphql/schema/base_64_encoder.rb +2 -0
  135. data/lib/graphql/schema/build_from_definition/resolve_map.rb +3 -1
  136. data/lib/graphql/schema/build_from_definition.rb +243 -89
  137. data/lib/graphql/schema/directive/deprecated.rb +1 -1
  138. data/lib/graphql/schema/directive/feature.rb +1 -1
  139. data/lib/graphql/schema/directive/flagged.rb +57 -0
  140. data/lib/graphql/schema/directive/include.rb +1 -1
  141. data/lib/graphql/schema/directive/one_of.rb +12 -0
  142. data/lib/graphql/schema/directive/skip.rb +1 -1
  143. data/lib/graphql/schema/directive/transform.rb +14 -2
  144. data/lib/graphql/schema/directive.rb +108 -20
  145. data/lib/graphql/schema/enum.rb +105 -44
  146. data/lib/graphql/schema/enum_value.rb +15 -25
  147. data/lib/graphql/schema/field/connection_extension.rb +50 -30
  148. data/lib/graphql/schema/field/scope_extension.rb +1 -1
  149. data/lib/graphql/schema/field.rb +476 -331
  150. data/lib/graphql/schema/field_extension.rb +86 -2
  151. data/lib/graphql/schema/find_inherited_value.rb +6 -8
  152. data/lib/graphql/schema/finder.rb +5 -5
  153. data/lib/graphql/schema/input_object.rb +133 -121
  154. data/lib/graphql/schema/interface.rb +17 -45
  155. data/lib/graphql/schema/introspection_system.rb +3 -8
  156. data/lib/graphql/schema/late_bound_type.rb +8 -2
  157. data/lib/graphql/schema/list.rb +25 -8
  158. data/lib/graphql/schema/loader.rb +139 -103
  159. data/lib/graphql/schema/member/base_dsl_methods.rb +29 -35
  160. data/lib/graphql/schema/member/build_type.rb +19 -14
  161. data/lib/graphql/schema/member/has_arguments.rb +310 -26
  162. data/lib/graphql/schema/member/has_ast_node.rb +16 -1
  163. data/lib/graphql/schema/member/has_deprecation_reason.rb +24 -0
  164. data/lib/graphql/schema/member/has_directives.rb +118 -0
  165. data/lib/graphql/schema/member/has_fields.rb +164 -42
  166. data/lib/graphql/schema/member/has_interfaces.rb +129 -0
  167. data/lib/graphql/schema/member/has_unresolved_type_error.rb +15 -0
  168. data/lib/graphql/schema/member/has_validators.rb +57 -0
  169. data/lib/graphql/schema/member/relay_shortcuts.rb +47 -2
  170. data/lib/graphql/schema/member/type_system_helpers.rb +20 -3
  171. data/lib/graphql/schema/member/validates_input.rb +3 -3
  172. data/lib/graphql/schema/member.rb +6 -6
  173. data/lib/graphql/schema/mutation.rb +4 -9
  174. data/lib/graphql/schema/non_null.rb +12 -7
  175. data/lib/graphql/schema/object.rb +35 -69
  176. data/lib/graphql/schema/printer.rb +16 -34
  177. data/lib/graphql/schema/relay_classic_mutation.rb +90 -43
  178. data/lib/graphql/schema/resolver/has_payload_type.rb +51 -11
  179. data/lib/graphql/schema/resolver.rb +144 -79
  180. data/lib/graphql/schema/scalar.rb +27 -18
  181. data/lib/graphql/schema/subscription.rb +55 -26
  182. data/lib/graphql/schema/timeout.rb +45 -35
  183. data/lib/graphql/schema/type_expression.rb +1 -1
  184. data/lib/graphql/schema/type_membership.rb +21 -4
  185. data/lib/graphql/schema/union.rb +48 -13
  186. data/lib/graphql/schema/unique_within_type.rb +1 -2
  187. data/lib/graphql/schema/validator/allow_blank_validator.rb +29 -0
  188. data/lib/graphql/schema/validator/allow_null_validator.rb +26 -0
  189. data/lib/graphql/schema/validator/exclusion_validator.rb +33 -0
  190. data/lib/graphql/schema/validator/format_validator.rb +48 -0
  191. data/lib/graphql/schema/validator/inclusion_validator.rb +35 -0
  192. data/lib/graphql/schema/validator/length_validator.rb +59 -0
  193. data/lib/graphql/schema/validator/numericality_validator.rb +82 -0
  194. data/lib/graphql/schema/validator/required_validator.rb +82 -0
  195. data/lib/graphql/schema/validator.rb +171 -0
  196. data/lib/graphql/schema/warden.rb +185 -32
  197. data/lib/graphql/schema/wrapper.rb +0 -5
  198. data/lib/graphql/schema.rb +471 -1116
  199. data/lib/graphql/static_validation/all_rules.rb +3 -0
  200. data/lib/graphql/static_validation/base_visitor.rb +13 -27
  201. data/lib/graphql/static_validation/definition_dependencies.rb +7 -2
  202. data/lib/graphql/static_validation/error.rb +3 -1
  203. data/lib/graphql/static_validation/literal_validator.rb +69 -26
  204. data/lib/graphql/static_validation/rules/argument_literals_are_compatible.rb +44 -87
  205. data/lib/graphql/static_validation/rules/argument_literals_are_compatible_error.rb +22 -6
  206. data/lib/graphql/static_validation/rules/arguments_are_defined.rb +28 -22
  207. data/lib/graphql/static_validation/rules/arguments_are_defined_error.rb +4 -2
  208. data/lib/graphql/static_validation/rules/directives_are_defined.rb +12 -6
  209. data/lib/graphql/static_validation/rules/directives_are_in_valid_locations.rb +13 -13
  210. data/lib/graphql/static_validation/rules/fields_have_appropriate_selections.rb +12 -4
  211. data/lib/graphql/static_validation/rules/fields_will_merge.rb +92 -49
  212. data/lib/graphql/static_validation/rules/fields_will_merge_error.rb +25 -4
  213. data/lib/graphql/static_validation/rules/fragments_are_finite.rb +2 -2
  214. data/lib/graphql/static_validation/rules/input_object_names_are_unique.rb +30 -0
  215. data/lib/graphql/static_validation/rules/input_object_names_are_unique_error.rb +30 -0
  216. data/lib/graphql/static_validation/rules/one_of_input_objects_are_valid.rb +66 -0
  217. data/lib/graphql/static_validation/rules/one_of_input_objects_are_valid_error.rb +29 -0
  218. data/lib/graphql/static_validation/rules/query_root_exists.rb +17 -0
  219. data/lib/graphql/static_validation/rules/query_root_exists_error.rb +26 -0
  220. data/lib/graphql/static_validation/rules/required_arguments_are_present.rb +4 -2
  221. data/lib/graphql/static_validation/rules/required_input_object_attributes_are_present.rb +6 -7
  222. data/lib/graphql/static_validation/rules/unique_directives_per_location.rb +13 -7
  223. data/lib/graphql/static_validation/rules/variable_default_values_are_correctly_typed.rb +9 -10
  224. data/lib/graphql/static_validation/rules/variable_usages_are_allowed.rb +14 -8
  225. data/lib/graphql/static_validation/rules/variables_are_used_and_defined.rb +4 -2
  226. data/lib/graphql/static_validation/validation_context.rb +13 -3
  227. data/lib/graphql/static_validation/validation_timeout_error.rb +25 -0
  228. data/lib/graphql/static_validation/validator.rb +32 -20
  229. data/lib/graphql/static_validation.rb +1 -2
  230. data/lib/graphql/string_encoding_error.rb +13 -3
  231. data/lib/graphql/subscriptions/action_cable_subscriptions.rb +126 -19
  232. data/lib/graphql/subscriptions/broadcast_analyzer.rb +81 -0
  233. data/lib/graphql/subscriptions/default_subscription_resolve_extension.rb +58 -0
  234. data/lib/graphql/subscriptions/event.rb +81 -35
  235. data/lib/graphql/subscriptions/instrumentation.rb +0 -52
  236. data/lib/graphql/subscriptions/serialize.rb +53 -6
  237. data/lib/graphql/subscriptions.rb +113 -58
  238. data/lib/graphql/tracing/active_support_notifications_trace.rb +16 -0
  239. data/lib/graphql/tracing/active_support_notifications_tracing.rb +8 -21
  240. data/lib/graphql/tracing/appoptics_trace.rb +231 -0
  241. data/lib/graphql/tracing/appoptics_tracing.rb +173 -0
  242. data/lib/graphql/tracing/appsignal_trace.rb +77 -0
  243. data/lib/graphql/tracing/appsignal_tracing.rb +15 -0
  244. data/lib/graphql/tracing/data_dog_trace.rb +148 -0
  245. data/lib/graphql/tracing/data_dog_tracing.rb +26 -2
  246. data/lib/graphql/tracing/legacy_trace.rb +65 -0
  247. data/lib/graphql/tracing/new_relic_trace.rb +75 -0
  248. data/lib/graphql/tracing/new_relic_tracing.rb +1 -12
  249. data/lib/graphql/tracing/notifications_trace.rb +42 -0
  250. data/lib/graphql/tracing/notifications_tracing.rb +59 -0
  251. data/lib/graphql/tracing/platform_trace.rb +109 -0
  252. data/lib/graphql/tracing/platform_tracing.rb +64 -43
  253. data/lib/graphql/tracing/prometheus_trace.rb +89 -0
  254. data/lib/graphql/tracing/prometheus_tracing/graphql_collector.rb +5 -2
  255. data/lib/graphql/tracing/prometheus_tracing.rb +3 -3
  256. data/lib/graphql/tracing/scout_trace.rb +72 -0
  257. data/lib/graphql/tracing/scout_tracing.rb +11 -0
  258. data/lib/graphql/tracing/statsd_trace.rb +56 -0
  259. data/lib/graphql/tracing/statsd_tracing.rb +42 -0
  260. data/lib/graphql/tracing/trace.rb +75 -0
  261. data/lib/graphql/tracing.rb +23 -71
  262. data/lib/graphql/type_kinds.rb +6 -3
  263. data/lib/graphql/types/big_int.rb +5 -1
  264. data/lib/graphql/types/int.rb +10 -3
  265. data/lib/graphql/types/iso_8601_date.rb +20 -9
  266. data/lib/graphql/types/iso_8601_date_time.rb +36 -10
  267. data/lib/graphql/types/relay/base_connection.rb +18 -92
  268. data/lib/graphql/types/relay/base_edge.rb +2 -34
  269. data/lib/graphql/types/relay/connection_behaviors.rb +176 -0
  270. data/lib/graphql/types/relay/edge_behaviors.rb +75 -0
  271. data/lib/graphql/types/relay/has_node_field.rb +41 -0
  272. data/lib/graphql/types/relay/has_nodes_field.rb +41 -0
  273. data/lib/graphql/types/relay/node.rb +2 -4
  274. data/lib/graphql/types/relay/node_behaviors.rb +25 -0
  275. data/lib/graphql/types/relay/page_info.rb +2 -14
  276. data/lib/graphql/types/relay/page_info_behaviors.rb +30 -0
  277. data/lib/graphql/types/relay.rb +10 -5
  278. data/lib/graphql/types/string.rb +8 -2
  279. data/lib/graphql/unauthorized_error.rb +2 -2
  280. data/lib/graphql/version.rb +1 -1
  281. data/lib/graphql.rb +54 -65
  282. data/readme.md +3 -6
  283. metadata +116 -236
  284. data/lib/graphql/analysis/analyze_query.rb +0 -91
  285. data/lib/graphql/analysis/field_usage.rb +0 -45
  286. data/lib/graphql/analysis/max_query_complexity.rb +0 -26
  287. data/lib/graphql/analysis/max_query_depth.rb +0 -26
  288. data/lib/graphql/analysis/query_complexity.rb +0 -88
  289. data/lib/graphql/analysis/query_depth.rb +0 -43
  290. data/lib/graphql/analysis/reducer_state.rb +0 -48
  291. data/lib/graphql/argument.rb +0 -131
  292. data/lib/graphql/authorization.rb +0 -82
  293. data/lib/graphql/backwards_compatibility.rb +0 -60
  294. data/lib/graphql/base_type.rb +0 -230
  295. data/lib/graphql/boolean_type.rb +0 -2
  296. data/lib/graphql/compatibility/execution_specification/counter_schema.rb +0 -53
  297. data/lib/graphql/compatibility/execution_specification/specification_schema.rb +0 -200
  298. data/lib/graphql/compatibility/execution_specification.rb +0 -435
  299. data/lib/graphql/compatibility/lazy_execution_specification/lazy_schema.rb +0 -111
  300. data/lib/graphql/compatibility/lazy_execution_specification.rb +0 -213
  301. data/lib/graphql/compatibility/query_parser_specification/parse_error_specification.rb +0 -87
  302. data/lib/graphql/compatibility/query_parser_specification/query_assertions.rb +0 -79
  303. data/lib/graphql/compatibility/query_parser_specification.rb +0 -264
  304. data/lib/graphql/compatibility/schema_parser_specification.rb +0 -680
  305. data/lib/graphql/compatibility.rb +0 -5
  306. data/lib/graphql/define/assign_argument.rb +0 -12
  307. data/lib/graphql/define/assign_connection.rb +0 -13
  308. data/lib/graphql/define/assign_enum_value.rb +0 -18
  309. data/lib/graphql/define/assign_global_id_field.rb +0 -11
  310. data/lib/graphql/define/assign_mutation_function.rb +0 -34
  311. data/lib/graphql/define/assign_object_field.rb +0 -42
  312. data/lib/graphql/define/defined_object_proxy.rb +0 -53
  313. data/lib/graphql/define/instance_definable.rb +0 -210
  314. data/lib/graphql/define/no_definition_error.rb +0 -7
  315. data/lib/graphql/define/non_null_with_bang.rb +0 -16
  316. data/lib/graphql/define/type_definer.rb +0 -31
  317. data/lib/graphql/define.rb +0 -31
  318. data/lib/graphql/deprecated_dsl.rb +0 -42
  319. data/lib/graphql/directive/deprecated_directive.rb +0 -2
  320. data/lib/graphql/directive/include_directive.rb +0 -2
  321. data/lib/graphql/directive/skip_directive.rb +0 -2
  322. data/lib/graphql/directive.rb +0 -107
  323. data/lib/graphql/enum_type.rb +0 -127
  324. data/lib/graphql/execution/execute.rb +0 -326
  325. data/lib/graphql/execution/flatten.rb +0 -40
  326. data/lib/graphql/execution/instrumentation.rb +0 -92
  327. data/lib/graphql/execution/interpreter/hash_response.rb +0 -46
  328. data/lib/graphql/execution/lazy/resolve.rb +0 -91
  329. data/lib/graphql/execution/typecast.rb +0 -50
  330. data/lib/graphql/field/resolve.rb +0 -59
  331. data/lib/graphql/field.rb +0 -222
  332. data/lib/graphql/float_type.rb +0 -2
  333. data/lib/graphql/function.rb +0 -124
  334. data/lib/graphql/id_type.rb +0 -2
  335. data/lib/graphql/input_object_type.rb +0 -132
  336. data/lib/graphql/int_type.rb +0 -2
  337. data/lib/graphql/interface_type.rb +0 -65
  338. data/lib/graphql/internal_representation/document.rb +0 -27
  339. data/lib/graphql/internal_representation/node.rb +0 -206
  340. data/lib/graphql/internal_representation/print.rb +0 -51
  341. data/lib/graphql/internal_representation/rewrite.rb +0 -184
  342. data/lib/graphql/internal_representation/scope.rb +0 -88
  343. data/lib/graphql/internal_representation/visit.rb +0 -36
  344. data/lib/graphql/internal_representation.rb +0 -7
  345. data/lib/graphql/language/lexer.rl +0 -258
  346. data/lib/graphql/list_type.rb +0 -80
  347. data/lib/graphql/literal_validation_error.rb +0 -6
  348. data/lib/graphql/non_null_type.rb +0 -71
  349. data/lib/graphql/object_type.rb +0 -121
  350. data/lib/graphql/query/arguments.rb +0 -188
  351. data/lib/graphql/query/arguments_cache.rb +0 -25
  352. data/lib/graphql/query/executor.rb +0 -53
  353. data/lib/graphql/query/literal_input.rb +0 -136
  354. data/lib/graphql/query/serial_execution/field_resolution.rb +0 -92
  355. data/lib/graphql/query/serial_execution/operation_resolution.rb +0 -19
  356. data/lib/graphql/query/serial_execution/selection_resolution.rb +0 -23
  357. data/lib/graphql/query/serial_execution/value_resolution.rb +0 -87
  358. data/lib/graphql/query/serial_execution.rb +0 -39
  359. data/lib/graphql/relay/array_connection.rb +0 -85
  360. data/lib/graphql/relay/base_connection.rb +0 -176
  361. data/lib/graphql/relay/connection_instrumentation.rb +0 -54
  362. data/lib/graphql/relay/connection_resolve.rb +0 -43
  363. data/lib/graphql/relay/connection_type.rb +0 -41
  364. data/lib/graphql/relay/edge.rb +0 -27
  365. data/lib/graphql/relay/edge_type.rb +0 -19
  366. data/lib/graphql/relay/edges_instrumentation.rb +0 -40
  367. data/lib/graphql/relay/global_id_resolve.rb +0 -18
  368. data/lib/graphql/relay/mongo_relation_connection.rb +0 -50
  369. data/lib/graphql/relay/mutation/instrumentation.rb +0 -23
  370. data/lib/graphql/relay/mutation/resolve.rb +0 -56
  371. data/lib/graphql/relay/mutation/result.rb +0 -38
  372. data/lib/graphql/relay/mutation.rb +0 -105
  373. data/lib/graphql/relay/node.rb +0 -36
  374. data/lib/graphql/relay/page_info.rb +0 -7
  375. data/lib/graphql/relay/relation_connection.rb +0 -190
  376. data/lib/graphql/relay/type_extensions.rb +0 -30
  377. data/lib/graphql/scalar_type.rb +0 -76
  378. data/lib/graphql/schema/catchall_middleware.rb +0 -35
  379. data/lib/graphql/schema/default_parse_error.rb +0 -10
  380. data/lib/graphql/schema/default_type_error.rb +0 -15
  381. data/lib/graphql/schema/member/accepts_definition.rb +0 -152
  382. data/lib/graphql/schema/member/cached_graphql_definition.rb +0 -31
  383. data/lib/graphql/schema/member/instrumentation.rb +0 -132
  384. data/lib/graphql/schema/middleware_chain.rb +0 -82
  385. data/lib/graphql/schema/possible_types.rb +0 -39
  386. data/lib/graphql/schema/rescue_middleware.rb +0 -60
  387. data/lib/graphql/schema/timeout_middleware.rb +0 -86
  388. data/lib/graphql/schema/traversal.rb +0 -228
  389. data/lib/graphql/schema/validation.rb +0 -303
  390. data/lib/graphql/static_validation/default_visitor.rb +0 -15
  391. data/lib/graphql/static_validation/no_validate_visitor.rb +0 -10
  392. data/lib/graphql/string_type.rb +0 -2
  393. data/lib/graphql/subscriptions/subscription_root.rb +0 -65
  394. data/lib/graphql/tracing/skylight_tracing.rb +0 -70
  395. data/lib/graphql/types/relay/base_field.rb +0 -22
  396. data/lib/graphql/types/relay/base_interface.rb +0 -29
  397. data/lib/graphql/types/relay/base_object.rb +0 -26
  398. data/lib/graphql/types/relay/node_field.rb +0 -43
  399. data/lib/graphql/types/relay/nodes_field.rb +0 -45
  400. data/lib/graphql/union_type.rb +0 -113
  401. data/lib/graphql/upgrader/member.rb +0 -936
  402. data/lib/graphql/upgrader/schema.rb +0 -37
@@ -1,12 +0,0 @@
1
- # frozen_string_literal: true
2
- module GraphQL
3
- module Define
4
- # Turn argument configs into a {GraphQL::Argument}.
5
- module AssignArgument
6
- def self.call(target, *args, **kwargs, &block)
7
- argument = GraphQL::Argument.from_dsl(*args, **kwargs, &block)
8
- target.arguments[argument.name] = argument
9
- end
10
- end
11
- end
12
- end
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
- module GraphQL
3
- module Define
4
- module AssignConnection
5
- def self.call(type_defn, *field_args, max_page_size: nil, **field_kwargs, &field_block)
6
- underlying_field = GraphQL::Define::AssignObjectField.call(type_defn, *field_args, **field_kwargs, &field_block)
7
- underlying_field.connection_max_page_size = max_page_size
8
- underlying_field.connection = true
9
- type_defn.fields[underlying_field.name] = underlying_field
10
- end
11
- end
12
- end
13
- end
@@ -1,18 +0,0 @@
1
- # frozen_string_literal: true
2
- module GraphQL
3
- module Define
4
- # @api deprecated
5
- module AssignEnumValue
6
- def self.call(enum_type, name, desc = nil, deprecation_reason: nil, value: name, &block)
7
- enum_value = GraphQL::EnumType::EnumValue.define(
8
- name: name.to_s,
9
- description: desc,
10
- deprecation_reason: deprecation_reason,
11
- value: value,
12
- &block
13
- )
14
- enum_type.add_value(enum_value)
15
- end
16
- end
17
- end
18
- end
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
- module GraphQL
3
- module Define
4
- module AssignGlobalIdField
5
- def self.call(type_defn, field_name)
6
- resolve = GraphQL::Relay::GlobalIdResolve.new(type: type_defn)
7
- GraphQL::Define::AssignObjectField.call(type_defn, field_name, type: GraphQL::ID_TYPE.to_non_null_type, resolve: resolve)
8
- end
9
- end
10
- end
11
- end
@@ -1,34 +0,0 @@
1
- # frozen_string_literal: true
2
- module GraphQL
3
- module Define
4
- module AssignMutationFunction
5
- def self.call(target, function)
6
- # TODO: get all this logic somewhere easier to test
7
-
8
- if !function.type.is_a?(GraphQL::ObjectType)
9
- raise "Mutation functions must return object types (not #{function.type.unwrap})"
10
- end
11
-
12
- target.return_type = function.type.redefine {
13
- name(target.name + "Payload")
14
- field :clientMutationId, types.String, "A unique identifier for the client performing the mutation.", property: :client_mutation_id
15
- }
16
-
17
- target.arguments = function.arguments
18
- target.description = function.description
19
- target.resolve = ->(o, a, c) {
20
- res = function.call(o, a, c)
21
- ResultProxy.new(res, a[:clientMutationId])
22
- }
23
- end
24
-
25
- class ResultProxy < SimpleDelegator
26
- attr_reader :client_mutation_id
27
- def initialize(target, client_mutation_id)
28
- @client_mutation_id = client_mutation_id
29
- super(target)
30
- end
31
- end
32
- end
33
- end
34
- end
@@ -1,42 +0,0 @@
1
- # frozen_string_literal: true
2
- module GraphQL
3
- module Define
4
- # @api deprecated
5
- module AssignObjectField
6
- def self.call(owner_type, name, type_or_field = nil, desc = nil, function: nil, field: nil, relay_mutation_function: nil, **kwargs, &block)
7
- name_s = name.to_s
8
-
9
- # Move some positional args into keywords if they're present
10
- desc && kwargs[:description] ||= desc
11
- name && kwargs[:name] ||= name_s
12
-
13
- if !type_or_field.nil? && !type_or_field.is_a?(GraphQL::Field)
14
- # Maybe a string, proc or BaseType
15
- kwargs[:type] = type_or_field
16
- end
17
-
18
- base_field = if type_or_field.is_a?(GraphQL::Field)
19
- type_or_field.redefine(name: name_s)
20
- elsif function
21
- func_field = GraphQL::Function.build_field(function)
22
- func_field.name = name_s
23
- func_field
24
- elsif field.is_a?(GraphQL::Field)
25
- field.redefine(name: name_s)
26
- else
27
- nil
28
- end
29
-
30
- obj_field = if base_field
31
- base_field.redefine(**kwargs, &block)
32
- else
33
- GraphQL::Field.define(**kwargs, &block)
34
- end
35
-
36
-
37
- # Attach the field to the type
38
- owner_type.fields[name_s] = obj_field
39
- end
40
- end
41
- end
42
- end
@@ -1,53 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module GraphQL
4
- module Define
5
- # This object delegates most methods to a dictionary of functions, {@dictionary}.
6
- # {@target} is passed to the specified function, along with any arguments and block.
7
- # This allows a method-based DSL without adding methods to the defined class.
8
- class DefinedObjectProxy
9
- extend GraphQL::Ruby2Keywords
10
- # The object which will be defined by definition functions
11
- attr_reader :target
12
-
13
- def initialize(target)
14
- @target = target
15
- @dictionary = target.class.dictionary
16
- end
17
-
18
- # Provides shorthand access to GraphQL's built-in types
19
- def types
20
- GraphQL::Define::TypeDefiner.instance
21
- end
22
-
23
- # Allow `plugin` to perform complex initialization on the definition.
24
- # Calls `plugin.use(defn, **kwargs)`.
25
- # @param plugin [<#use(defn, **kwargs)>] A plugin object
26
- # @param kwargs [Hash] Any options for the plugin
27
- def use(plugin, **kwargs)
28
- # https://bugs.ruby-lang.org/issues/10708
29
- if kwargs == {}
30
- plugin.use(self)
31
- else
32
- plugin.use(self, **kwargs)
33
- end
34
- end
35
-
36
- # Lookup a function from the dictionary and call it if it's found.
37
- ruby2_keywords
38
- def method_missing(name, *args, &block)
39
- definition = @dictionary[name]
40
- if definition
41
- definition.call(@target, *args, &block)
42
- else
43
- msg = "#{@target.class.name} can't define '#{name}'"
44
- raise NoDefinitionError, msg, caller
45
- end
46
- end
47
-
48
- def respond_to_missing?(name, include_private = false)
49
- @dictionary[name] || super
50
- end
51
- end
52
- end
53
- end
@@ -1,210 +0,0 @@
1
- # frozen_string_literal: true
2
- module GraphQL
3
- module Define
4
- # @api deprecated
5
- module InstanceDefinable
6
- def self.included(base)
7
- base.extend(ClassMethods)
8
- base.ensure_defined(:metadata)
9
- end
10
-
11
- # @api deprecated
12
- def metadata
13
- @metadata ||= {}
14
- end
15
-
16
- # @api deprecated
17
- def define(**kwargs, &block)
18
- # make sure the previous definition_proc was executed:
19
- ensure_defined
20
- stash_dependent_methods
21
- @pending_definition = Definition.new(kwargs, block)
22
- nil
23
- end
24
-
25
- # @api deprecated
26
- def redefine(**kwargs, &block)
27
- ensure_defined
28
- new_inst = self.dup
29
- new_inst.define(**kwargs, &block)
30
- new_inst
31
- end
32
-
33
- def initialize_copy(other)
34
- super
35
- @metadata = other.metadata.dup
36
- end
37
-
38
- private
39
-
40
- # Run the definition block if it hasn't been run yet.
41
- # This can only be run once: the block is deleted after it's used.
42
- # You have to call this before using any value which could
43
- # come from the definition block.
44
- # @return [void]
45
- def ensure_defined
46
- if @pending_definition
47
- defn = @pending_definition
48
- @pending_definition = nil
49
-
50
- revive_dependent_methods
51
-
52
- begin
53
- defn_proxy = DefinedObjectProxy.new(self)
54
- # Apply definition from `define(...)` kwargs
55
- defn.define_keywords.each do |keyword, value|
56
- # Don't splat string hashes, which blows up on Rubies before 2.7
57
- if value.is_a?(Hash) && value.each_key.all? { |k| k.is_a?(Symbol) }
58
- defn_proxy.public_send(keyword, **value)
59
- else
60
- defn_proxy.public_send(keyword, value)
61
- end
62
- end
63
- # and/or apply definition from `define { ... }` block
64
- if defn.define_proc
65
- defn_proxy.instance_eval(&defn.define_proc)
66
- end
67
- rescue StandardError
68
- # The definition block failed to run, so make this object pending again:
69
- stash_dependent_methods
70
- @pending_definition = defn
71
- raise
72
- end
73
- end
74
- nil
75
- end
76
-
77
- # Take the pending methods and put them back on this object's singleton class.
78
- # This reverts the process done by {#stash_dependent_methods}
79
- # @return [void]
80
- def revive_dependent_methods
81
- pending_methods = @pending_methods
82
- self.singleton_class.class_eval {
83
- pending_methods.each do |method|
84
- undef_method(method.name) if method_defined?(method.name)
85
- define_method(method.name, method)
86
- end
87
- }
88
- @pending_methods = nil
89
- end
90
-
91
- # Find the method names which were declared as definition-dependent,
92
- # then grab the method definitions off of this object's class
93
- # and store them for later.
94
- #
95
- # Then make a dummy method for each of those method names which:
96
- #
97
- # - Triggers the pending definition, if there is one
98
- # - Calls the same method again.
99
- #
100
- # It's assumed that {#ensure_defined} will put the original method definitions
101
- # back in place with {#revive_dependent_methods}.
102
- # @return [void]
103
- def stash_dependent_methods
104
- method_names = self.class.ensure_defined_method_names
105
- @pending_methods = method_names.map { |n| self.class.instance_method(n) }
106
- self.singleton_class.class_eval do
107
- method_names.each do |method_name|
108
- undef_method(method_name) if method_defined?(method_name)
109
- define_method(method_name) { |*args, &block|
110
- ensure_defined
111
- self.send(method_name, *args, &block)
112
- }
113
- end
114
- end
115
- end
116
-
117
- class Definition
118
- attr_reader :define_keywords, :define_proc
119
- def initialize(define_keywords, define_proc)
120
- @define_keywords = define_keywords
121
- @define_proc = define_proc
122
- end
123
- end
124
-
125
- module ClassMethods
126
- # Create a new instance
127
- # and prepare a definition using its {.definitions}.
128
- # @param kwargs [Hash] Key-value pairs corresponding to defininitions from `accepts_definitions`
129
- # @param block [Proc] Block which calls helper methods from `accepts_definitions`
130
- def define(**kwargs, &block)
131
- instance = self.new
132
- instance.define(**kwargs, &block)
133
- instance
134
- end
135
-
136
- # Attach definitions to this class.
137
- # Each symbol in `accepts` will be assigned with `{key}=`.
138
- # The last entry in accepts may be a hash of name-proc pairs for custom definitions.
139
- def accepts_definitions(*accepts)
140
- new_assignments = if accepts.last.is_a?(Hash)
141
- accepts.pop.dup
142
- else
143
- {}
144
- end
145
-
146
- accepts.each do |key|
147
- new_assignments[key] = AssignAttribute.new(key)
148
- end
149
-
150
- @own_dictionary = own_dictionary.merge(new_assignments)
151
- end
152
-
153
- def ensure_defined(*method_names)
154
- @ensure_defined_method_names ||= []
155
- @ensure_defined_method_names.concat(method_names)
156
- nil
157
- end
158
-
159
- def ensure_defined_method_names
160
- own_method_names = @ensure_defined_method_names || []
161
- if superclass.respond_to?(:ensure_defined_method_names)
162
- superclass.ensure_defined_method_names + own_method_names
163
- else
164
- own_method_names
165
- end
166
- end
167
-
168
- # @return [Hash] combined definitions for self and ancestors
169
- def dictionary
170
- if superclass.respond_to?(:dictionary)
171
- own_dictionary.merge(superclass.dictionary)
172
- else
173
- own_dictionary
174
- end
175
- end
176
-
177
- # @return [Hash] definitions for this class only
178
- def own_dictionary
179
- @own_dictionary ||= {}
180
- end
181
- end
182
-
183
- class AssignMetadataKey
184
- def initialize(key)
185
- @key = key
186
- end
187
-
188
- def call(defn, value = true)
189
- defn.metadata[@key] = value
190
- end
191
- end
192
-
193
- class AssignAttribute
194
- extend GraphQL::Ruby2Keywords
195
-
196
- def initialize(attr_name)
197
- @attr_assign_method = :"#{attr_name}="
198
- end
199
-
200
- # Even though we're just using the first value here,
201
- # We have to add a splat here to use `ruby2_keywords`,
202
- # so that it will accept a `[{}]` input from the caller.
203
- ruby2_keywords
204
- def call(defn, *value)
205
- defn.public_send(@attr_assign_method, value.first)
206
- end
207
- end
208
- end
209
- end
210
- end
@@ -1,7 +0,0 @@
1
- # frozen_string_literal: true
2
- module GraphQL
3
- module Define
4
- class NoDefinitionError < GraphQL::Error
5
- end
6
- end
7
- end
@@ -1,16 +0,0 @@
1
- # frozen_string_literal: true
2
- module GraphQL
3
- module Define
4
- # Wrap the object in NonNullType in response to `!`
5
- # @example required Int type
6
- # !GraphQL::INT_TYPE
7
- #
8
- module NonNullWithBang
9
- # Make the type non-null
10
- # @return [GraphQL::NonNullType] a non-null type which wraps the original type
11
- def !
12
- to_non_null_type
13
- end
14
- end
15
- end
16
- end
@@ -1,31 +0,0 @@
1
- # frozen_string_literal: true
2
- module GraphQL
3
- module Define
4
- # Some conveniences for definining return & argument types.
5
- #
6
- # Passed into initialization blocks, eg {ObjectType#initialize}, {Field#initialize}
7
- class TypeDefiner
8
- include Singleton
9
- # rubocop:disable Naming/MethodName
10
- def Int; GraphQL::INT_TYPE; end
11
- def String; GraphQL::STRING_TYPE; end
12
- def Float; GraphQL::FLOAT_TYPE; end
13
- def Boolean; GraphQL::BOOLEAN_TYPE; end
14
- def ID; GraphQL::ID_TYPE; end
15
- # rubocop:enable Naming/MethodName
16
-
17
- # Make a {ListType} which wraps the input type
18
- #
19
- # @example making a list type
20
- # list_of_strings = types[types.String]
21
- # list_of_strings.inspect
22
- # # => "[String]"
23
- #
24
- # @param type [Type] A type to be wrapped in a ListType
25
- # @return [GraphQL::ListType] A ListType wrapping `type`
26
- def [](type)
27
- type.to_list_type
28
- end
29
- end
30
- end
31
- end
@@ -1,31 +0,0 @@
1
- # frozen_string_literal: true
2
- require "graphql/define/assign_argument"
3
- require "graphql/define/assign_connection"
4
- require "graphql/define/assign_enum_value"
5
- require "graphql/define/assign_global_id_field"
6
- require "graphql/define/assign_mutation_function"
7
- require "graphql/define/assign_object_field"
8
- require "graphql/define/defined_object_proxy"
9
- require "graphql/define/instance_definable"
10
- require "graphql/define/no_definition_error"
11
- require "graphql/define/non_null_with_bang"
12
- require "graphql/define/type_definer"
13
-
14
- module GraphQL
15
- module Define
16
- # A helper for definitions that store their value in `#metadata`.
17
- #
18
- # @example Storing application classes with GraphQL types
19
- # # Make a custom definition
20
- # GraphQL::ObjectType.accepts_definitions(resolves_to_class_names: GraphQL::Define.assign_metadata_key(:resolves_to_class_names))
21
- #
22
- # # After definition, read the key from metadata
23
- # PostType.metadata[:resolves_to_class_names] # => [...]
24
- #
25
- # @param key [Object] the key to assign in metadata
26
- # @return [#call(defn, value)] an assignment for `.accepts_definitions` which writes `key` to `#metadata`
27
- def self.assign_metadata_key(key)
28
- GraphQL::Define::InstanceDefinable::AssignMetadataKey.new(key)
29
- end
30
- end
31
- end
@@ -1,42 +0,0 @@
1
- # frozen_string_literal: true
2
- module GraphQL
3
- # There are two ways to apply the deprecated `!` DSL to class-style schema definitions:
4
- #
5
- # 1. Scoped by file (CRuby only), add to the top of the file:
6
- #
7
- # using GraphQL::DeprecatedDSL
8
- #
9
- # (This is a "refinement", there are also other ways to scope it.)
10
- #
11
- # 2. Global application, add before schema definition:
12
- #
13
- # GraphQL::DeprecatedDSL.activate
14
- #
15
- module DeprecatedDSL
16
- TYPE_CLASSES = [
17
- GraphQL::Schema::Scalar,
18
- GraphQL::Schema::Enum,
19
- GraphQL::Schema::InputObject,
20
- GraphQL::Schema::Union,
21
- GraphQL::Schema::Interface,
22
- GraphQL::Schema::Object,
23
- ]
24
-
25
- def self.activate
26
- TYPE_CLASSES.each { |c| c.extend(Methods) }
27
- GraphQL::Schema::List.include(Methods)
28
- GraphQL::Schema::NonNull.include(Methods)
29
- end
30
- module Methods
31
- def !
32
- to_non_null_type
33
- end
34
- end
35
-
36
- TYPE_CLASSES.each do |type_class|
37
- refine type_class.singleton_class do
38
- include Methods
39
- end
40
- end
41
- end
42
- end
@@ -1,2 +0,0 @@
1
- # frozen_string_literal: true
2
- GraphQL::Directive::DeprecatedDirective = GraphQL::Schema::Directive::Deprecated.graphql_definition
@@ -1,2 +0,0 @@
1
- # frozen_string_literal: true
2
- GraphQL::Directive::IncludeDirective = GraphQL::Schema::Directive::Include.graphql_definition
@@ -1,2 +0,0 @@
1
- # frozen_string_literal: true
2
- GraphQL::Directive::SkipDirective = GraphQL::Schema::Directive::Skip.graphql_definition
@@ -1,107 +0,0 @@
1
- # frozen_string_literal: true
2
- module GraphQL
3
- # Directives are server-defined hooks for modifying execution.
4
- #
5
- # Two directives are included out-of-the-box:
6
- # - `@skip(if: ...)` Skips the tagged field if the value of `if` is true
7
- # - `@include(if: ...)` Includes the tagged field _only_ if `if` is true
8
- #
9
- class Directive
10
- include GraphQL::Define::InstanceDefinable
11
- accepts_definitions :locations, :name, :description, :arguments, :default_directive, argument: GraphQL::Define::AssignArgument
12
-
13
- attr_accessor :locations, :arguments, :name, :description, :arguments_class
14
- attr_accessor :ast_node
15
- # @api private
16
- attr_writer :default_directive
17
- ensure_defined(:locations, :arguments, :graphql_name, :name, :description, :default_directive?)
18
-
19
- # Future-compatible alias
20
- # @see {GraphQL::SchemaMember}
21
- alias :graphql_name :name
22
-
23
- # Future-compatible alias
24
- # @see {GraphQL::SchemaMember}
25
- alias :graphql_definition :itself
26
-
27
- LOCATIONS = [
28
- QUERY = :QUERY,
29
- MUTATION = :MUTATION,
30
- SUBSCRIPTION = :SUBSCRIPTION,
31
- FIELD = :FIELD,
32
- FRAGMENT_DEFINITION = :FRAGMENT_DEFINITION,
33
- FRAGMENT_SPREAD = :FRAGMENT_SPREAD,
34
- INLINE_FRAGMENT = :INLINE_FRAGMENT,
35
- SCHEMA = :SCHEMA,
36
- SCALAR = :SCALAR,
37
- OBJECT = :OBJECT,
38
- FIELD_DEFINITION = :FIELD_DEFINITION,
39
- ARGUMENT_DEFINITION = :ARGUMENT_DEFINITION,
40
- INTERFACE = :INTERFACE,
41
- UNION = :UNION,
42
- ENUM = :ENUM,
43
- ENUM_VALUE = :ENUM_VALUE,
44
- INPUT_OBJECT = :INPUT_OBJECT,
45
- INPUT_FIELD_DEFINITION = :INPUT_FIELD_DEFINITION,
46
- ]
47
-
48
- LOCATION_DESCRIPTIONS = {
49
- QUERY: 'Location adjacent to a query operation.',
50
- MUTATION: 'Location adjacent to a mutation operation.',
51
- SUBSCRIPTION: 'Location adjacent to a subscription operation.',
52
- FIELD: 'Location adjacent to a field.',
53
- FRAGMENT_DEFINITION: 'Location adjacent to a fragment definition.',
54
- FRAGMENT_SPREAD: 'Location adjacent to a fragment spread.',
55
- INLINE_FRAGMENT: 'Location adjacent to an inline fragment.',
56
- SCHEMA: 'Location adjacent to a schema definition.',
57
- SCALAR: 'Location adjacent to a scalar definition.',
58
- OBJECT: 'Location adjacent to an object type definition.',
59
- FIELD_DEFINITION: 'Location adjacent to a field definition.',
60
- ARGUMENT_DEFINITION: 'Location adjacent to an argument definition.',
61
- INTERFACE: 'Location adjacent to an interface definition.',
62
- UNION: 'Location adjacent to a union definition.',
63
- ENUM: 'Location adjacent to an enum definition.',
64
- ENUM_VALUE: 'Location adjacent to an enum value definition.',
65
- INPUT_OBJECT: 'Location adjacent to an input object type definition.',
66
- INPUT_FIELD_DEFINITION: 'Location adjacent to an input object field definition.',
67
- }
68
-
69
- def initialize
70
- @arguments = {}
71
- @default_directive = false
72
- end
73
-
74
- def to_s
75
- "<GraphQL::Directive #{name}>"
76
- end
77
-
78
- def on_field?
79
- locations.include?(FIELD)
80
- end
81
-
82
- def on_fragment?
83
- locations.include?(FRAGMENT_SPREAD) && locations.include?(INLINE_FRAGMENT)
84
- end
85
-
86
- def on_operation?
87
- locations.include?(QUERY) && locations.include?(MUTATION) && locations.include?(SUBSCRIPTION)
88
- end
89
-
90
- # @return [Boolean] Is this directive supplied by default? (eg `@skip`)
91
- def default_directive?
92
- @default_directive
93
- end
94
-
95
- def inspect
96
- "#<GraphQL::Directive #{name}>"
97
- end
98
-
99
- def type_class
100
- metadata[:type_class]
101
- end
102
- end
103
- end
104
-
105
- require "graphql/directive/include_directive"
106
- require "graphql/directive/skip_directive"
107
- require "graphql/directive/deprecated_directive"