graphql 1.13.14 → 2.0.0

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 (187) hide show
  1. checksums.yaml +4 -4
  2. data/lib/graphql/analysis/ast/query_complexity.rb +1 -1
  3. data/lib/graphql/analysis/ast/query_depth.rb +0 -1
  4. data/lib/graphql/analysis/ast/visitor.rb +1 -1
  5. data/lib/graphql/analysis/ast.rb +0 -10
  6. data/lib/graphql/analysis.rb +0 -7
  7. data/lib/graphql/backtrace/table.rb +0 -18
  8. data/lib/graphql/backtrace/tracer.rb +1 -2
  9. data/lib/graphql/backtrace.rb +2 -8
  10. data/lib/graphql/dig.rb +1 -1
  11. data/lib/graphql/execution/errors.rb +1 -9
  12. data/lib/graphql/execution/interpreter/runtime.rb +2 -9
  13. data/lib/graphql/execution/interpreter.rb +0 -22
  14. data/lib/graphql/execution/lazy.rb +1 -1
  15. data/lib/graphql/execution/lookahead.rb +6 -13
  16. data/lib/graphql/execution/multiplex.rb +50 -107
  17. data/lib/graphql/execution.rb +11 -3
  18. data/lib/graphql/introspection/dynamic_fields.rb +3 -8
  19. data/lib/graphql/introspection/entry_points.rb +2 -15
  20. data/lib/graphql/language/document_from_schema_definition.rb +0 -17
  21. data/lib/graphql/pagination/connections.rb +2 -28
  22. data/lib/graphql/query/context.rb +1 -185
  23. data/lib/graphql/query/literal_input.rb +8 -13
  24. data/lib/graphql/query/validation_pipeline.rb +8 -37
  25. data/lib/graphql/query/variables.rb +22 -18
  26. data/lib/graphql/query.rb +5 -35
  27. data/lib/graphql/railtie.rb +0 -104
  28. data/lib/graphql/relay/range_add.rb +0 -4
  29. data/lib/graphql/relay.rb +0 -15
  30. data/lib/graphql/schema/addition.rb +1 -8
  31. data/lib/graphql/schema/argument.rb +1 -25
  32. data/lib/graphql/schema/build_from_definition.rb +0 -1
  33. data/lib/graphql/schema/directive.rb +0 -21
  34. data/lib/graphql/schema/enum.rb +1 -18
  35. data/lib/graphql/schema/enum_value.rb +0 -22
  36. data/lib/graphql/schema/field.rb +2 -185
  37. data/lib/graphql/schema/input_object.rb +9 -56
  38. data/lib/graphql/schema/interface.rb +0 -25
  39. data/lib/graphql/schema/introspection_system.rb +3 -8
  40. data/lib/graphql/schema/late_bound_type.rb +2 -2
  41. data/lib/graphql/schema/list.rb +0 -6
  42. data/lib/graphql/schema/loader.rb +0 -1
  43. data/lib/graphql/schema/member/base_dsl_methods.rb +0 -5
  44. data/lib/graphql/schema/member/build_type.rb +4 -6
  45. data/lib/graphql/schema/member/has_arguments.rb +14 -18
  46. data/lib/graphql/schema/member/has_fields.rb +2 -2
  47. data/lib/graphql/schema/member/has_interfaces.rb +0 -2
  48. data/lib/graphql/schema/member.rb +0 -6
  49. data/lib/graphql/schema/mutation.rb +0 -9
  50. data/lib/graphql/schema/non_null.rb +1 -7
  51. data/lib/graphql/schema/object.rb +0 -40
  52. data/lib/graphql/schema/relay_classic_mutation.rb +17 -28
  53. data/lib/graphql/schema/scalar.rb +0 -15
  54. data/lib/graphql/schema/union.rb +0 -16
  55. data/lib/graphql/schema/warden.rb +1 -1
  56. data/lib/graphql/schema/wrapper.rb +0 -5
  57. data/lib/graphql/schema.rb +106 -945
  58. data/lib/graphql/static_validation/base_visitor.rb +4 -21
  59. data/lib/graphql/static_validation/rules/directives_are_in_valid_locations.rb +12 -12
  60. data/lib/graphql/static_validation/validator.rb +2 -24
  61. data/lib/graphql/static_validation.rb +0 -2
  62. data/lib/graphql/subscriptions/default_subscription_resolve_extension.rb +38 -1
  63. data/lib/graphql/subscriptions/event.rb +1 -1
  64. data/lib/graphql/subscriptions/instrumentation.rb +0 -51
  65. data/lib/graphql/subscriptions.rb +4 -13
  66. data/lib/graphql/tracing/data_dog_tracing.rb +2 -19
  67. data/lib/graphql/tracing/platform_tracing.rb +4 -31
  68. data/lib/graphql/tracing.rb +0 -2
  69. data/lib/graphql/types/relay/connection_behaviors.rb +2 -6
  70. data/lib/graphql/types/relay/default_relay.rb +0 -10
  71. data/lib/graphql/types/relay/node_behaviors.rb +5 -1
  72. data/lib/graphql/types/relay.rb +0 -2
  73. data/lib/graphql/version.rb +1 -1
  74. data/lib/graphql.rb +1 -65
  75. metadata +6 -132
  76. data/lib/graphql/analysis/analyze_query.rb +0 -98
  77. data/lib/graphql/analysis/field_usage.rb +0 -45
  78. data/lib/graphql/analysis/max_query_complexity.rb +0 -26
  79. data/lib/graphql/analysis/max_query_depth.rb +0 -26
  80. data/lib/graphql/analysis/query_complexity.rb +0 -88
  81. data/lib/graphql/analysis/query_depth.rb +0 -43
  82. data/lib/graphql/analysis/reducer_state.rb +0 -48
  83. data/lib/graphql/argument.rb +0 -131
  84. data/lib/graphql/authorization.rb +0 -82
  85. data/lib/graphql/backtrace/legacy_tracer.rb +0 -56
  86. data/lib/graphql/backwards_compatibility.rb +0 -61
  87. data/lib/graphql/base_type.rb +0 -232
  88. data/lib/graphql/boolean_type.rb +0 -2
  89. data/lib/graphql/compatibility/execution_specification/counter_schema.rb +0 -53
  90. data/lib/graphql/compatibility/execution_specification/specification_schema.rb +0 -200
  91. data/lib/graphql/compatibility/execution_specification.rb +0 -436
  92. data/lib/graphql/compatibility/lazy_execution_specification/lazy_schema.rb +0 -111
  93. data/lib/graphql/compatibility/lazy_execution_specification.rb +0 -215
  94. data/lib/graphql/compatibility/query_parser_specification/parse_error_specification.rb +0 -87
  95. data/lib/graphql/compatibility/query_parser_specification/query_assertions.rb +0 -79
  96. data/lib/graphql/compatibility/query_parser_specification.rb +0 -266
  97. data/lib/graphql/compatibility/schema_parser_specification.rb +0 -682
  98. data/lib/graphql/compatibility.rb +0 -5
  99. data/lib/graphql/define/assign_argument.rb +0 -12
  100. data/lib/graphql/define/assign_connection.rb +0 -13
  101. data/lib/graphql/define/assign_enum_value.rb +0 -18
  102. data/lib/graphql/define/assign_global_id_field.rb +0 -11
  103. data/lib/graphql/define/assign_mutation_function.rb +0 -34
  104. data/lib/graphql/define/assign_object_field.rb +0 -42
  105. data/lib/graphql/define/defined_object_proxy.rb +0 -53
  106. data/lib/graphql/define/instance_definable.rb +0 -255
  107. data/lib/graphql/define/no_definition_error.rb +0 -7
  108. data/lib/graphql/define/non_null_with_bang.rb +0 -16
  109. data/lib/graphql/define/type_definer.rb +0 -31
  110. data/lib/graphql/define.rb +0 -31
  111. data/lib/graphql/deprecated_dsl.rb +0 -55
  112. data/lib/graphql/directive/deprecated_directive.rb +0 -2
  113. data/lib/graphql/directive/include_directive.rb +0 -2
  114. data/lib/graphql/directive/skip_directive.rb +0 -2
  115. data/lib/graphql/directive.rb +0 -107
  116. data/lib/graphql/enum_type.rb +0 -133
  117. data/lib/graphql/execution/execute.rb +0 -333
  118. data/lib/graphql/execution/flatten.rb +0 -40
  119. data/lib/graphql/execution/typecast.rb +0 -50
  120. data/lib/graphql/field/resolve.rb +0 -59
  121. data/lib/graphql/field.rb +0 -226
  122. data/lib/graphql/float_type.rb +0 -2
  123. data/lib/graphql/function.rb +0 -128
  124. data/lib/graphql/id_type.rb +0 -2
  125. data/lib/graphql/input_object_type.rb +0 -138
  126. data/lib/graphql/int_type.rb +0 -2
  127. data/lib/graphql/interface_type.rb +0 -72
  128. data/lib/graphql/internal_representation/document.rb +0 -27
  129. data/lib/graphql/internal_representation/node.rb +0 -206
  130. data/lib/graphql/internal_representation/print.rb +0 -51
  131. data/lib/graphql/internal_representation/rewrite.rb +0 -184
  132. data/lib/graphql/internal_representation/scope.rb +0 -88
  133. data/lib/graphql/internal_representation/visit.rb +0 -36
  134. data/lib/graphql/internal_representation.rb +0 -7
  135. data/lib/graphql/list_type.rb +0 -80
  136. data/lib/graphql/non_null_type.rb +0 -71
  137. data/lib/graphql/object_type.rb +0 -130
  138. data/lib/graphql/query/arguments.rb +0 -189
  139. data/lib/graphql/query/arguments_cache.rb +0 -24
  140. data/lib/graphql/query/executor.rb +0 -52
  141. data/lib/graphql/query/serial_execution/field_resolution.rb +0 -92
  142. data/lib/graphql/query/serial_execution/operation_resolution.rb +0 -19
  143. data/lib/graphql/query/serial_execution/selection_resolution.rb +0 -23
  144. data/lib/graphql/query/serial_execution/value_resolution.rb +0 -87
  145. data/lib/graphql/query/serial_execution.rb +0 -40
  146. data/lib/graphql/relay/array_connection.rb +0 -83
  147. data/lib/graphql/relay/base_connection.rb +0 -189
  148. data/lib/graphql/relay/connection_instrumentation.rb +0 -54
  149. data/lib/graphql/relay/connection_resolve.rb +0 -43
  150. data/lib/graphql/relay/connection_type.rb +0 -54
  151. data/lib/graphql/relay/edge.rb +0 -27
  152. data/lib/graphql/relay/edge_type.rb +0 -19
  153. data/lib/graphql/relay/edges_instrumentation.rb +0 -39
  154. data/lib/graphql/relay/global_id_resolve.rb +0 -17
  155. data/lib/graphql/relay/mongo_relation_connection.rb +0 -50
  156. data/lib/graphql/relay/mutation/instrumentation.rb +0 -23
  157. data/lib/graphql/relay/mutation/resolve.rb +0 -56
  158. data/lib/graphql/relay/mutation/result.rb +0 -38
  159. data/lib/graphql/relay/mutation.rb +0 -106
  160. data/lib/graphql/relay/node.rb +0 -39
  161. data/lib/graphql/relay/page_info.rb +0 -7
  162. data/lib/graphql/relay/relation_connection.rb +0 -188
  163. data/lib/graphql/relay/type_extensions.rb +0 -32
  164. data/lib/graphql/scalar_type.rb +0 -91
  165. data/lib/graphql/schema/catchall_middleware.rb +0 -35
  166. data/lib/graphql/schema/default_parse_error.rb +0 -10
  167. data/lib/graphql/schema/default_type_error.rb +0 -17
  168. data/lib/graphql/schema/member/accepts_definition.rb +0 -164
  169. data/lib/graphql/schema/member/cached_graphql_definition.rb +0 -58
  170. data/lib/graphql/schema/member/instrumentation.rb +0 -131
  171. data/lib/graphql/schema/middleware_chain.rb +0 -82
  172. data/lib/graphql/schema/possible_types.rb +0 -44
  173. data/lib/graphql/schema/rescue_middleware.rb +0 -60
  174. data/lib/graphql/schema/timeout_middleware.rb +0 -88
  175. data/lib/graphql/schema/traversal.rb +0 -228
  176. data/lib/graphql/schema/validation.rb +0 -313
  177. data/lib/graphql/static_validation/default_visitor.rb +0 -15
  178. data/lib/graphql/static_validation/no_validate_visitor.rb +0 -10
  179. data/lib/graphql/string_type.rb +0 -2
  180. data/lib/graphql/subscriptions/subscription_root.rb +0 -76
  181. data/lib/graphql/tracing/opentelemetry_tracing.rb +0 -101
  182. data/lib/graphql/tracing/skylight_tracing.rb +0 -70
  183. data/lib/graphql/types/relay/node_field.rb +0 -24
  184. data/lib/graphql/types/relay/nodes_field.rb +0 -43
  185. data/lib/graphql/union_type.rb +0 -115
  186. data/lib/graphql/upgrader/member.rb +0 -937
  187. data/lib/graphql/upgrader/schema.rb +0 -38
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: graphql
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.13.14
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Mosolgo
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-06-20 00:00:00.000000000 Z
11
+ date: 2022-02-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: benchmark-ips
@@ -136,20 +136,6 @@ dependencies:
136
136
  - - '='
137
137
  - !ruby/object:Gem::Version
138
138
  version: '1.12'
139
- - !ruby/object:Gem::Dependency
140
- name: parser
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - ">="
144
- - !ruby/object:Gem::Version
145
- version: '0'
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - ">="
151
- - !ruby/object:Gem::Version
152
- version: '0'
153
139
  - !ruby/object:Gem::Dependency
154
140
  name: jekyll
155
141
  requirement: !ruby/object:Gem::Requirement
@@ -291,7 +277,6 @@ files:
291
277
  - lib/generators/graphql/union_generator.rb
292
278
  - lib/graphql.rb
293
279
  - lib/graphql/analysis.rb
294
- - lib/graphql/analysis/analyze_query.rb
295
280
  - lib/graphql/analysis/ast.rb
296
281
  - lib/graphql/analysis/ast/analyzer.rb
297
282
  - lib/graphql/analysis/ast/field_usage.rb
@@ -300,66 +285,24 @@ files:
300
285
  - lib/graphql/analysis/ast/query_complexity.rb
301
286
  - lib/graphql/analysis/ast/query_depth.rb
302
287
  - lib/graphql/analysis/ast/visitor.rb
303
- - lib/graphql/analysis/field_usage.rb
304
- - lib/graphql/analysis/max_query_complexity.rb
305
- - lib/graphql/analysis/max_query_depth.rb
306
- - lib/graphql/analysis/query_complexity.rb
307
- - lib/graphql/analysis/query_depth.rb
308
- - lib/graphql/analysis/reducer_state.rb
309
288
  - lib/graphql/analysis_error.rb
310
- - lib/graphql/argument.rb
311
- - lib/graphql/authorization.rb
312
289
  - lib/graphql/backtrace.rb
313
290
  - lib/graphql/backtrace/inspect_result.rb
314
- - lib/graphql/backtrace/legacy_tracer.rb
315
291
  - lib/graphql/backtrace/table.rb
316
292
  - lib/graphql/backtrace/traced_error.rb
317
293
  - lib/graphql/backtrace/tracer.rb
318
- - lib/graphql/backwards_compatibility.rb
319
- - lib/graphql/base_type.rb
320
- - lib/graphql/boolean_type.rb
321
294
  - lib/graphql/coercion_error.rb
322
- - lib/graphql/compatibility.rb
323
- - lib/graphql/compatibility/execution_specification.rb
324
- - lib/graphql/compatibility/execution_specification/counter_schema.rb
325
- - lib/graphql/compatibility/execution_specification/specification_schema.rb
326
- - lib/graphql/compatibility/lazy_execution_specification.rb
327
- - lib/graphql/compatibility/lazy_execution_specification/lazy_schema.rb
328
- - lib/graphql/compatibility/query_parser_specification.rb
329
- - lib/graphql/compatibility/query_parser_specification/parse_error_specification.rb
330
- - lib/graphql/compatibility/query_parser_specification/query_assertions.rb
331
- - lib/graphql/compatibility/schema_parser_specification.rb
332
295
  - lib/graphql/dataloader.rb
333
296
  - lib/graphql/dataloader/null_dataloader.rb
334
297
  - lib/graphql/dataloader/request.rb
335
298
  - lib/graphql/dataloader/request_all.rb
336
299
  - lib/graphql/dataloader/source.rb
337
300
  - lib/graphql/date_encoding_error.rb
338
- - lib/graphql/define.rb
339
- - lib/graphql/define/assign_argument.rb
340
- - lib/graphql/define/assign_connection.rb
341
- - lib/graphql/define/assign_enum_value.rb
342
- - lib/graphql/define/assign_global_id_field.rb
343
- - lib/graphql/define/assign_mutation_function.rb
344
- - lib/graphql/define/assign_object_field.rb
345
- - lib/graphql/define/defined_object_proxy.rb
346
- - lib/graphql/define/instance_definable.rb
347
- - lib/graphql/define/no_definition_error.rb
348
- - lib/graphql/define/non_null_with_bang.rb
349
- - lib/graphql/define/type_definer.rb
350
- - lib/graphql/deprecated_dsl.rb
351
301
  - lib/graphql/deprecation.rb
352
302
  - lib/graphql/dig.rb
353
- - lib/graphql/directive.rb
354
- - lib/graphql/directive/deprecated_directive.rb
355
- - lib/graphql/directive/include_directive.rb
356
- - lib/graphql/directive/skip_directive.rb
357
- - lib/graphql/enum_type.rb
358
303
  - lib/graphql/execution.rb
359
304
  - lib/graphql/execution/directive_checks.rb
360
305
  - lib/graphql/execution/errors.rb
361
- - lib/graphql/execution/execute.rb
362
- - lib/graphql/execution/flatten.rb
363
306
  - lib/graphql/execution/instrumentation.rb
364
307
  - lib/graphql/execution/interpreter.rb
365
308
  - lib/graphql/execution/interpreter/argument_value.rb
@@ -374,26 +317,10 @@ files:
374
317
  - lib/graphql/execution/lazy/resolve.rb
375
318
  - lib/graphql/execution/lookahead.rb
376
319
  - lib/graphql/execution/multiplex.rb
377
- - lib/graphql/execution/typecast.rb
378
320
  - lib/graphql/execution_error.rb
379
- - lib/graphql/field.rb
380
- - lib/graphql/field/resolve.rb
381
321
  - lib/graphql/filter.rb
382
- - lib/graphql/float_type.rb
383
- - lib/graphql/function.rb
384
- - lib/graphql/id_type.rb
385
- - lib/graphql/input_object_type.rb
386
- - lib/graphql/int_type.rb
387
322
  - lib/graphql/integer_decoding_error.rb
388
323
  - lib/graphql/integer_encoding_error.rb
389
- - lib/graphql/interface_type.rb
390
- - lib/graphql/internal_representation.rb
391
- - lib/graphql/internal_representation/document.rb
392
- - lib/graphql/internal_representation/node.rb
393
- - lib/graphql/internal_representation/print.rb
394
- - lib/graphql/internal_representation/rewrite.rb
395
- - lib/graphql/internal_representation/scope.rb
396
- - lib/graphql/internal_representation/visit.rb
397
324
  - lib/graphql/introspection.rb
398
325
  - lib/graphql/introspection/base_object.rb
399
326
  - lib/graphql/introspection/directive_location_enum.rb
@@ -424,11 +351,8 @@ files:
424
351
  - lib/graphql/language/sanitized_printer.rb
425
352
  - lib/graphql/language/token.rb
426
353
  - lib/graphql/language/visitor.rb
427
- - lib/graphql/list_type.rb
428
354
  - lib/graphql/load_application_object_failed_error.rb
429
355
  - lib/graphql/name_validator.rb
430
- - lib/graphql/non_null_type.rb
431
- - lib/graphql/object_type.rb
432
356
  - lib/graphql/pagination.rb
433
357
  - lib/graphql/pagination/active_record_relation_connection.rb
434
358
  - lib/graphql/pagination/array_connection.rb
@@ -439,20 +363,12 @@ files:
439
363
  - lib/graphql/pagination/sequel_dataset_connection.rb
440
364
  - lib/graphql/parse_error.rb
441
365
  - lib/graphql/query.rb
442
- - lib/graphql/query/arguments.rb
443
- - lib/graphql/query/arguments_cache.rb
444
366
  - lib/graphql/query/context.rb
445
- - lib/graphql/query/executor.rb
446
367
  - lib/graphql/query/fingerprint.rb
447
368
  - lib/graphql/query/input_validation_result.rb
448
369
  - lib/graphql/query/literal_input.rb
449
370
  - lib/graphql/query/null_context.rb
450
371
  - lib/graphql/query/result.rb
451
- - lib/graphql/query/serial_execution.rb
452
- - lib/graphql/query/serial_execution/field_resolution.rb
453
- - lib/graphql/query/serial_execution/operation_resolution.rb
454
- - lib/graphql/query/serial_execution/selection_resolution.rb
455
- - lib/graphql/query/serial_execution/value_resolution.rb
456
372
  - lib/graphql/query/validation_pipeline.rb
457
373
  - lib/graphql/query/variable_validation_error.rb
458
374
  - lib/graphql/query/variables.rb
@@ -460,31 +376,12 @@ files:
460
376
  - lib/graphql/rake_task.rb
461
377
  - lib/graphql/rake_task/validate.rb
462
378
  - lib/graphql/relay.rb
463
- - lib/graphql/relay/array_connection.rb
464
- - lib/graphql/relay/base_connection.rb
465
- - lib/graphql/relay/connection_instrumentation.rb
466
- - lib/graphql/relay/connection_resolve.rb
467
- - lib/graphql/relay/connection_type.rb
468
- - lib/graphql/relay/edge.rb
469
- - lib/graphql/relay/edge_type.rb
470
- - lib/graphql/relay/edges_instrumentation.rb
471
- - lib/graphql/relay/global_id_resolve.rb
472
- - lib/graphql/relay/mongo_relation_connection.rb
473
- - lib/graphql/relay/mutation.rb
474
- - lib/graphql/relay/mutation/instrumentation.rb
475
- - lib/graphql/relay/mutation/resolve.rb
476
- - lib/graphql/relay/mutation/result.rb
477
- - lib/graphql/relay/node.rb
478
- - lib/graphql/relay/page_info.rb
479
379
  - lib/graphql/relay/range_add.rb
480
- - lib/graphql/relay/relation_connection.rb
481
- - lib/graphql/relay/type_extensions.rb
482
380
  - lib/graphql/rubocop.rb
483
381
  - lib/graphql/rubocop/graphql/base_cop.rb
484
382
  - lib/graphql/rubocop/graphql/default_null_true.rb
485
383
  - lib/graphql/rubocop/graphql/default_required_true.rb
486
384
  - lib/graphql/runtime_type_error.rb
487
- - lib/graphql/scalar_type.rb
488
385
  - lib/graphql/schema.rb
489
386
  - lib/graphql/schema/addition.rb
490
387
  - lib/graphql/schema/argument.rb
@@ -494,9 +391,6 @@ files:
494
391
  - lib/graphql/schema/build_from_definition/resolve_map.rb
495
392
  - lib/graphql/schema/build_from_definition/resolve_map/default_resolve.rb
496
393
  - lib/graphql/schema/built_in_types.rb
497
- - lib/graphql/schema/catchall_middleware.rb
498
- - lib/graphql/schema/default_parse_error.rb
499
- - lib/graphql/schema/default_type_error.rb
500
394
  - lib/graphql/schema/directive.rb
501
395
  - lib/graphql/schema/directive/deprecated.rb
502
396
  - lib/graphql/schema/directive/feature.rb
@@ -520,10 +414,8 @@ files:
520
414
  - lib/graphql/schema/list.rb
521
415
  - lib/graphql/schema/loader.rb
522
416
  - lib/graphql/schema/member.rb
523
- - lib/graphql/schema/member/accepts_definition.rb
524
417
  - lib/graphql/schema/member/base_dsl_methods.rb
525
418
  - lib/graphql/schema/member/build_type.rb
526
- - lib/graphql/schema/member/cached_graphql_definition.rb
527
419
  - lib/graphql/schema/member/graphql_type_names.rb
528
420
  - lib/graphql/schema/member/has_arguments.rb
529
421
  - lib/graphql/schema/member/has_ast_node.rb
@@ -534,32 +426,25 @@ files:
534
426
  - lib/graphql/schema/member/has_path.rb
535
427
  - lib/graphql/schema/member/has_unresolved_type_error.rb
536
428
  - lib/graphql/schema/member/has_validators.rb
537
- - lib/graphql/schema/member/instrumentation.rb
538
429
  - lib/graphql/schema/member/relay_shortcuts.rb
539
430
  - lib/graphql/schema/member/scoped.rb
540
431
  - lib/graphql/schema/member/type_system_helpers.rb
541
432
  - lib/graphql/schema/member/validates_input.rb
542
- - lib/graphql/schema/middleware_chain.rb
543
433
  - lib/graphql/schema/mutation.rb
544
434
  - lib/graphql/schema/non_null.rb
545
435
  - lib/graphql/schema/null_mask.rb
546
436
  - lib/graphql/schema/object.rb
547
- - lib/graphql/schema/possible_types.rb
548
437
  - lib/graphql/schema/printer.rb
549
438
  - lib/graphql/schema/relay_classic_mutation.rb
550
- - lib/graphql/schema/rescue_middleware.rb
551
439
  - lib/graphql/schema/resolver.rb
552
440
  - lib/graphql/schema/resolver/has_payload_type.rb
553
441
  - lib/graphql/schema/scalar.rb
554
442
  - lib/graphql/schema/subscription.rb
555
443
  - lib/graphql/schema/timeout.rb
556
- - lib/graphql/schema/timeout_middleware.rb
557
- - lib/graphql/schema/traversal.rb
558
444
  - lib/graphql/schema/type_expression.rb
559
445
  - lib/graphql/schema/type_membership.rb
560
446
  - lib/graphql/schema/union.rb
561
447
  - lib/graphql/schema/unique_within_type.rb
562
- - lib/graphql/schema/validation.rb
563
448
  - lib/graphql/schema/validator.rb
564
449
  - lib/graphql/schema/validator/allow_blank_validator.rb
565
450
  - lib/graphql/schema/validator/allow_null_validator.rb
@@ -574,12 +459,10 @@ files:
574
459
  - lib/graphql/static_validation.rb
575
460
  - lib/graphql/static_validation/all_rules.rb
576
461
  - lib/graphql/static_validation/base_visitor.rb
577
- - lib/graphql/static_validation/default_visitor.rb
578
462
  - lib/graphql/static_validation/definition_dependencies.rb
579
463
  - lib/graphql/static_validation/error.rb
580
464
  - lib/graphql/static_validation/interpreter_visitor.rb
581
465
  - lib/graphql/static_validation/literal_validator.rb
582
- - lib/graphql/static_validation/no_validate_visitor.rb
583
466
  - lib/graphql/static_validation/rules/argument_literals_are_compatible.rb
584
467
  - lib/graphql/static_validation/rules/argument_literals_are_compatible_error.rb
585
468
  - lib/graphql/static_validation/rules/argument_names_are_unique.rb
@@ -643,7 +526,6 @@ files:
643
526
  - lib/graphql/static_validation/validation_timeout_error.rb
644
527
  - lib/graphql/static_validation/validator.rb
645
528
  - lib/graphql/string_encoding_error.rb
646
- - lib/graphql/string_type.rb
647
529
  - lib/graphql/subscriptions.rb
648
530
  - lib/graphql/subscriptions/action_cable_subscriptions.rb
649
531
  - lib/graphql/subscriptions/broadcast_analyzer.rb
@@ -651,7 +533,6 @@ files:
651
533
  - lib/graphql/subscriptions/event.rb
652
534
  - lib/graphql/subscriptions/instrumentation.rb
653
535
  - lib/graphql/subscriptions/serialize.rb
654
- - lib/graphql/subscriptions/subscription_root.rb
655
536
  - lib/graphql/tracing.rb
656
537
  - lib/graphql/tracing/active_support_notifications_tracing.rb
657
538
  - lib/graphql/tracing/appoptics_tracing.rb
@@ -659,12 +540,10 @@ files:
659
540
  - lib/graphql/tracing/data_dog_tracing.rb
660
541
  - lib/graphql/tracing/new_relic_tracing.rb
661
542
  - lib/graphql/tracing/notifications_tracing.rb
662
- - lib/graphql/tracing/opentelemetry_tracing.rb
663
543
  - lib/graphql/tracing/platform_tracing.rb
664
544
  - lib/graphql/tracing/prometheus_tracing.rb
665
545
  - lib/graphql/tracing/prometheus_tracing/graphql_collector.rb
666
546
  - lib/graphql/tracing/scout_tracing.rb
667
- - lib/graphql/tracing/skylight_tracing.rb
668
547
  - lib/graphql/tracing/statsd_tracing.rb
669
548
  - lib/graphql/type_kinds.rb
670
549
  - lib/graphql/types.rb
@@ -686,17 +565,12 @@ files:
686
565
  - lib/graphql/types/relay/has_nodes_field.rb
687
566
  - lib/graphql/types/relay/node.rb
688
567
  - lib/graphql/types/relay/node_behaviors.rb
689
- - lib/graphql/types/relay/node_field.rb
690
- - lib/graphql/types/relay/nodes_field.rb
691
568
  - lib/graphql/types/relay/page_info.rb
692
569
  - lib/graphql/types/relay/page_info_behaviors.rb
693
570
  - lib/graphql/types/string.rb
694
571
  - lib/graphql/unauthorized_error.rb
695
572
  - lib/graphql/unauthorized_field_error.rb
696
- - lib/graphql/union_type.rb
697
573
  - lib/graphql/unresolved_type_error.rb
698
- - lib/graphql/upgrader/member.rb
699
- - lib/graphql/upgrader/schema.rb
700
574
  - lib/graphql/version.rb
701
575
  - readme.md
702
576
  homepage: https://github.com/rmosolgo/graphql-ruby
@@ -708,7 +582,7 @@ metadata:
708
582
  source_code_uri: https://github.com/rmosolgo/graphql-ruby
709
583
  bug_tracker_uri: https://github.com/rmosolgo/graphql-ruby/issues
710
584
  mailing_list_uri: https://tinyletter.com/graphql-ruby
711
- post_install_message:
585
+ post_install_message:
712
586
  rdoc_options: []
713
587
  require_paths:
714
588
  - lib
@@ -723,8 +597,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
723
597
  - !ruby/object:Gem::Version
724
598
  version: '0'
725
599
  requirements: []
726
- rubygems_version: 3.2.22
727
- signing_key:
600
+ rubygems_version: 3.1.6
601
+ signing_key:
728
602
  specification_version: 4
729
603
  summary: A GraphQL language and runtime for Ruby
730
604
  test_files: []
@@ -1,98 +0,0 @@
1
- # frozen_string_literal: true
2
- module GraphQL
3
- module Analysis
4
- module_function
5
-
6
- def use(schema_class)
7
- schema = schema_class.is_a?(Class) ? schema_class : schema_class.target
8
- schema.analysis_engine = self
9
- end
10
-
11
- # @return [void]
12
- def analyze_multiplex(multiplex, analyzers)
13
- multiplex.trace("analyze_multiplex", { multiplex: multiplex }) do
14
- reducer_states = analyzers.map { |r| ReducerState.new(r, multiplex) }
15
- query_results = multiplex.queries.map do |query|
16
- if query.valid?
17
- analyze_query(query, query.analyzers, multiplex_states: reducer_states)
18
- else
19
- []
20
- end
21
- end
22
-
23
- multiplex_results = reducer_states.map(&:finalize_reducer)
24
- multiplex_errors = analysis_errors(multiplex_results)
25
-
26
- multiplex.queries.each_with_index do |query, idx|
27
- query.analysis_errors = multiplex_errors + analysis_errors(query_results[idx])
28
- end
29
- end
30
- nil
31
- end
32
-
33
- # Visit `query`'s internal representation, calling `analyzers` along the way.
34
- #
35
- # - First, query analyzers are filtered down by calling `.analyze?(query)`, if they respond to that method
36
- # - Then, query analyzers are initialized by calling `.initial_value(query)`, if they respond to that method.
37
- # - Then, they receive `.call(memo, visit_type, irep_node)`, where visit type is `:enter` or `:leave`.
38
- # - Last, they receive `.final_value(memo)`, if they respond to that method.
39
- #
40
- # It returns an array of final `memo` values in the order that `analyzers` were passed in.
41
- #
42
- # @param query [GraphQL::Query]
43
- # @param analyzers [Array<#call>] Objects that respond to `#call(memo, visit_type, irep_node)`
44
- # @return [Array<Any>] Results from those analyzers
45
- def analyze_query(query, analyzers, multiplex_states: [])
46
- GraphQL::Deprecation.warn "Legacy analysis will be removed in GraphQL-Ruby 2.0, please upgrade to AST Analysis: https://graphql-ruby.org/queries/ast_analysis.html (schema: #{query.schema})"
47
-
48
- query.trace("analyze_query", { query: query }) do
49
- analyzers_to_run = analyzers.select do |analyzer|
50
- if analyzer.respond_to?(:analyze?)
51
- analyzer.analyze?(query)
52
- else
53
- true
54
- end
55
- end
56
-
57
- reducer_states = analyzers_to_run.map { |r| ReducerState.new(r, query) } + multiplex_states
58
-
59
- irep = query.internal_representation
60
-
61
- irep.operation_definitions.each do |name, op_node|
62
- reduce_node(op_node, reducer_states)
63
- end
64
-
65
- reducer_states.map(&:finalize_reducer)
66
- end
67
- end
68
-
69
- private
70
-
71
- module_function
72
-
73
- # Enter the node, visit its children, then leave the node.
74
- def reduce_node(irep_node, reducer_states)
75
- visit_analyzers(:enter, irep_node, reducer_states)
76
-
77
- irep_node.typed_children.each do |type_defn, children|
78
- children.each do |name, child_irep_node|
79
- reduce_node(child_irep_node, reducer_states)
80
- end
81
- end
82
-
83
- visit_analyzers(:leave, irep_node, reducer_states)
84
- end
85
-
86
- def visit_analyzers(visit_type, irep_node, reducer_states)
87
- reducer_states.each do |reducer_state|
88
- next_memo = reducer_state.call(visit_type, irep_node)
89
-
90
- reducer_state.memo = next_memo
91
- end
92
- end
93
-
94
- def analysis_errors(results)
95
- results.flatten.select { |r| r.is_a?(GraphQL::AnalysisError) }
96
- end
97
- end
98
- end
@@ -1,45 +0,0 @@
1
- # frozen_string_literal: true
2
- module GraphQL
3
- module Analysis
4
- # A query reducer for tracking both field usage and deprecated field usage.
5
- #
6
- # @example Logging field usage and deprecated field usage
7
- # Schema.query_analyzers << GraphQL::Analysis::FieldUsage.new { |query, used_fields, used_deprecated_fields|
8
- # puts "Used GraphQL fields: #{used_fields.join(', ')}"
9
- # puts "Used deprecated GraphQL fields: #{used_deprecated_fields.join(', ')}"
10
- # }
11
- # Schema.execute(query_str)
12
- # # Used GraphQL fields: Cheese.id, Cheese.fatContent, Query.cheese
13
- # # Used deprecated GraphQL fields: Cheese.fatContent
14
- #
15
- class FieldUsage
16
- def initialize(&block)
17
- @field_usage_handler = block
18
- end
19
-
20
- def initial_value(query)
21
- {
22
- query: query,
23
- used_fields: Set.new,
24
- used_deprecated_fields: Set.new
25
- }
26
- end
27
-
28
- def call(memo, visit_type, irep_node)
29
- if irep_node.ast_node.is_a?(GraphQL::Language::Nodes::Field) && visit_type == :leave
30
- field = "#{irep_node.owner_type.name}.#{irep_node.definition.name}"
31
- memo[:used_fields] << field
32
- if irep_node.definition.deprecation_reason
33
- memo[:used_deprecated_fields] << field
34
- end
35
- end
36
-
37
- memo
38
- end
39
-
40
- def final_value(memo)
41
- @field_usage_handler.call(memo[:query], memo[:used_fields].to_a, memo[:used_deprecated_fields].to_a)
42
- end
43
- end
44
- end
45
- end
@@ -1,26 +0,0 @@
1
- # frozen_string_literal: true
2
- require_relative "./query_complexity"
3
- module GraphQL
4
- module Analysis
5
- # Used under the hood to implement complexity validation,
6
- # see {Schema#max_complexity} and {Query#max_complexity}
7
- #
8
- # @example Assert max complexity of 10
9
- # # DON'T actually do this, graphql-ruby
10
- # # Does this for you based on your `max_complexity` setting
11
- # MySchema.query_analyzers << GraphQL::Analysis::MaxQueryComplexity.new(10)
12
- #
13
- class MaxQueryComplexity < GraphQL::Analysis::QueryComplexity
14
- def initialize(max_complexity)
15
- disallow_excessive_complexity = ->(query, complexity) {
16
- if complexity > max_complexity
17
- GraphQL::AnalysisError.new("Query has complexity of #{complexity}, which exceeds max complexity of #{max_complexity}")
18
- else
19
- nil
20
- end
21
- }
22
- super(&disallow_excessive_complexity)
23
- end
24
- end
25
- end
26
- end
@@ -1,26 +0,0 @@
1
- # frozen_string_literal: true
2
- require_relative "./query_depth"
3
- module GraphQL
4
- module Analysis
5
- # Used under the hood to implement depth validation,
6
- # see {Schema#max_depth} and {Query#max_depth}
7
- #
8
- # @example Assert max depth of 10
9
- # # DON'T actually do this, graphql-ruby
10
- # # Does this for you based on your `max_depth` setting
11
- # MySchema.query_analyzers << GraphQL::Analysis::MaxQueryDepth.new(10)
12
- #
13
- class MaxQueryDepth < GraphQL::Analysis::QueryDepth
14
- def initialize(max_depth)
15
- disallow_excessive_depth = ->(query, depth) {
16
- if depth > max_depth
17
- GraphQL::AnalysisError.new("Query has depth of #{depth}, which exceeds max depth of #{max_depth}")
18
- else
19
- nil
20
- end
21
- }
22
- super(&disallow_excessive_depth)
23
- end
24
- end
25
- end
26
- end
@@ -1,88 +0,0 @@
1
- # frozen_string_literal: true
2
- module GraphQL
3
- module Analysis
4
- # Calculate the complexity of a query, using {Field#complexity} values.
5
- #
6
- # @example Log the complexity of incoming queries
7
- # MySchema.query_analyzers << GraphQL::Analysis::QueryComplexity.new do |query, complexity|
8
- # Rails.logger.info("Complexity: #{complexity}")
9
- # end
10
- #
11
- class QueryComplexity
12
- # @yield [query, complexity] Called for each query analyzed by the schema, before executing it
13
- # @yieldparam query [GraphQL::Query] The query that was analyzed
14
- # @yieldparam complexity [Numeric] The complexity for this query
15
- def initialize(&block)
16
- @complexity_handler = block
17
- end
18
-
19
- # State for the query complexity calcuation:
20
- # - `target` is passed to handler
21
- # - `complexities_on_type` holds complexity scores for each type in an IRep node
22
- def initial_value(target)
23
- {
24
- target: target,
25
- complexities_on_type: [TypeComplexity.new],
26
- }
27
- end
28
-
29
- # Implement the query analyzer API
30
- def call(memo, visit_type, irep_node)
31
- if irep_node.ast_node.is_a?(GraphQL::Language::Nodes::Field)
32
- if visit_type == :enter
33
- memo[:complexities_on_type].push(TypeComplexity.new)
34
- else
35
- type_complexities = memo[:complexities_on_type].pop
36
- child_complexity = type_complexities.max_possible_complexity
37
- own_complexity = get_complexity(irep_node, child_complexity)
38
- memo[:complexities_on_type].last.merge(irep_node.owner_type, own_complexity)
39
- end
40
- end
41
- memo
42
- end
43
-
44
- # Send the query and complexity to the block
45
- # @return [Object, GraphQL::AnalysisError] Whatever the handler returns
46
- def final_value(reduced_value)
47
- total_complexity = reduced_value[:complexities_on_type].last.max_possible_complexity
48
- @complexity_handler.call(reduced_value[:target], total_complexity)
49
- end
50
-
51
- private
52
-
53
- # Get a complexity value for a field,
54
- # by getting the number or calling its proc
55
- def get_complexity(irep_node, child_complexity)
56
- field_defn = irep_node.definition
57
- defined_complexity = field_defn.complexity
58
- case defined_complexity
59
- when Proc
60
- defined_complexity.call(irep_node.query.context, irep_node.arguments, child_complexity)
61
- when Numeric
62
- defined_complexity + (child_complexity || 0)
63
- else
64
- raise("Invalid complexity: #{defined_complexity.inspect} on #{field_defn.name}")
65
- end
66
- end
67
-
68
- # Selections on an object may apply differently depending on what is _actually_ returned by the resolve function.
69
- # Find the maximum possible complexity among those combinations.
70
- class TypeComplexity
71
- def initialize
72
- @types = Hash.new(0)
73
- end
74
-
75
- # Return the max possible complexity for types in this selection
76
- def max_possible_complexity
77
- @types.each_value.max || 0
78
- end
79
-
80
- # Store the complexity for the branch on `type_defn`.
81
- # Later we will see if this is the max complexity among branches.
82
- def merge(type_defn, complexity)
83
- @types[type_defn] += complexity
84
- end
85
- end
86
- end
87
- end
88
- end
@@ -1,43 +0,0 @@
1
- # frozen_string_literal: true
2
- module GraphQL
3
- module Analysis
4
- # A query reducer for measuring the depth of a given query.
5
- #
6
- # @example Logging the depth of a query
7
- # Schema.query_analyzers << GraphQL::Analysis::QueryDepth.new { |query, depth| puts "GraphQL query depth: #{depth}" }
8
- # Schema.execute(query_str)
9
- # # GraphQL query depth: 8
10
- #
11
- class QueryDepth
12
- def initialize(&block)
13
- @depth_handler = block
14
- end
15
-
16
- def initial_value(query)
17
- {
18
- max_depth: 0,
19
- current_depth: 0,
20
- query: query,
21
- }
22
- end
23
-
24
- def call(memo, visit_type, irep_node)
25
- if irep_node.ast_node.is_a?(GraphQL::Language::Nodes::Field)
26
- if visit_type == :enter
27
- memo[:current_depth] += 1
28
- else
29
- if memo[:max_depth] < memo[:current_depth]
30
- memo[:max_depth] = memo[:current_depth]
31
- end
32
- memo[:current_depth] -= 1
33
- end
34
- end
35
- memo
36
- end
37
-
38
- def final_value(memo)
39
- @depth_handler.call(memo[:query], memo[:max_depth])
40
- end
41
- end
42
- end
43
- end