graphql 1.13.8 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (190) 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/dataloader/null_dataloader.rb +3 -1
  11. data/lib/graphql/dig.rb +1 -1
  12. data/lib/graphql/execution/errors.rb +1 -9
  13. data/lib/graphql/execution/interpreter/runtime.rb +17 -31
  14. data/lib/graphql/execution/interpreter.rb +0 -22
  15. data/lib/graphql/execution/lazy.rb +1 -1
  16. data/lib/graphql/execution/lookahead.rb +6 -13
  17. data/lib/graphql/execution/multiplex.rb +50 -107
  18. data/lib/graphql/execution.rb +11 -3
  19. data/lib/graphql/introspection/dynamic_fields.rb +3 -8
  20. data/lib/graphql/introspection/entry_points.rb +2 -15
  21. data/lib/graphql/language/document_from_schema_definition.rb +0 -17
  22. data/lib/graphql/pagination/connections.rb +2 -28
  23. data/lib/graphql/query/context.rb +97 -194
  24. data/lib/graphql/query/input_validation_result.rb +10 -1
  25. data/lib/graphql/query/validation_pipeline.rb +8 -37
  26. data/lib/graphql/query/variables.rb +22 -18
  27. data/lib/graphql/query.rb +5 -36
  28. data/lib/graphql/railtie.rb +0 -104
  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 +4 -21
  34. data/lib/graphql/schema/enum.rb +4 -23
  35. data/lib/graphql/schema/enum_value.rb +0 -22
  36. data/lib/graphql/schema/field.rb +75 -234
  37. data/lib/graphql/schema/input_object.rb +22 -69
  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 +2 -7
  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 +50 -24
  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/validates_input.rb +2 -2
  49. data/lib/graphql/schema/member.rb +0 -6
  50. data/lib/graphql/schema/mutation.rb +0 -9
  51. data/lib/graphql/schema/non_null.rb +1 -7
  52. data/lib/graphql/schema/object.rb +0 -40
  53. data/lib/graphql/schema/relay_classic_mutation.rb +49 -42
  54. data/lib/graphql/schema/resolver/has_payload_type.rb +1 -1
  55. data/lib/graphql/schema/resolver.rb +23 -45
  56. data/lib/graphql/schema/scalar.rb +4 -19
  57. data/lib/graphql/schema/subscription.rb +0 -7
  58. data/lib/graphql/schema/union.rb +0 -16
  59. data/lib/graphql/schema/warden.rb +2 -2
  60. data/lib/graphql/schema/wrapper.rb +0 -5
  61. data/lib/graphql/schema.rb +106 -944
  62. data/lib/graphql/static_validation/base_visitor.rb +4 -21
  63. data/lib/graphql/static_validation/rules/directives_are_in_valid_locations.rb +12 -12
  64. data/lib/graphql/static_validation/validator.rb +2 -24
  65. data/lib/graphql/static_validation.rb +0 -2
  66. data/lib/graphql/subscriptions/default_subscription_resolve_extension.rb +38 -1
  67. data/lib/graphql/subscriptions/event.rb +1 -1
  68. data/lib/graphql/subscriptions/instrumentation.rb +0 -51
  69. data/lib/graphql/subscriptions.rb +14 -16
  70. data/lib/graphql/tracing/platform_tracing.rb +0 -23
  71. data/lib/graphql/tracing.rb +0 -1
  72. data/lib/graphql/types/relay/connection_behaviors.rb +2 -6
  73. data/lib/graphql/types/relay/default_relay.rb +0 -10
  74. data/lib/graphql/types/relay/node_behaviors.rb +5 -1
  75. data/lib/graphql/types/relay.rb +0 -2
  76. data/lib/graphql/version.rb +1 -1
  77. data/lib/graphql.rb +1 -65
  78. metadata +6 -132
  79. data/lib/graphql/analysis/analyze_query.rb +0 -98
  80. data/lib/graphql/analysis/field_usage.rb +0 -45
  81. data/lib/graphql/analysis/max_query_complexity.rb +0 -26
  82. data/lib/graphql/analysis/max_query_depth.rb +0 -26
  83. data/lib/graphql/analysis/query_complexity.rb +0 -88
  84. data/lib/graphql/analysis/query_depth.rb +0 -43
  85. data/lib/graphql/analysis/reducer_state.rb +0 -48
  86. data/lib/graphql/argument.rb +0 -131
  87. data/lib/graphql/authorization.rb +0 -82
  88. data/lib/graphql/backtrace/legacy_tracer.rb +0 -56
  89. data/lib/graphql/backwards_compatibility.rb +0 -61
  90. data/lib/graphql/base_type.rb +0 -232
  91. data/lib/graphql/boolean_type.rb +0 -2
  92. data/lib/graphql/compatibility/execution_specification/counter_schema.rb +0 -53
  93. data/lib/graphql/compatibility/execution_specification/specification_schema.rb +0 -200
  94. data/lib/graphql/compatibility/execution_specification.rb +0 -436
  95. data/lib/graphql/compatibility/lazy_execution_specification/lazy_schema.rb +0 -111
  96. data/lib/graphql/compatibility/lazy_execution_specification.rb +0 -215
  97. data/lib/graphql/compatibility/query_parser_specification/parse_error_specification.rb +0 -87
  98. data/lib/graphql/compatibility/query_parser_specification/query_assertions.rb +0 -79
  99. data/lib/graphql/compatibility/query_parser_specification.rb +0 -266
  100. data/lib/graphql/compatibility/schema_parser_specification.rb +0 -682
  101. data/lib/graphql/compatibility.rb +0 -5
  102. data/lib/graphql/define/assign_argument.rb +0 -12
  103. data/lib/graphql/define/assign_connection.rb +0 -13
  104. data/lib/graphql/define/assign_enum_value.rb +0 -18
  105. data/lib/graphql/define/assign_global_id_field.rb +0 -11
  106. data/lib/graphql/define/assign_mutation_function.rb +0 -34
  107. data/lib/graphql/define/assign_object_field.rb +0 -42
  108. data/lib/graphql/define/defined_object_proxy.rb +0 -53
  109. data/lib/graphql/define/instance_definable.rb +0 -240
  110. data/lib/graphql/define/no_definition_error.rb +0 -7
  111. data/lib/graphql/define/non_null_with_bang.rb +0 -16
  112. data/lib/graphql/define/type_definer.rb +0 -31
  113. data/lib/graphql/define.rb +0 -31
  114. data/lib/graphql/deprecated_dsl.rb +0 -55
  115. data/lib/graphql/directive/deprecated_directive.rb +0 -2
  116. data/lib/graphql/directive/include_directive.rb +0 -2
  117. data/lib/graphql/directive/skip_directive.rb +0 -2
  118. data/lib/graphql/directive.rb +0 -107
  119. data/lib/graphql/enum_type.rb +0 -133
  120. data/lib/graphql/execution/execute.rb +0 -333
  121. data/lib/graphql/execution/flatten.rb +0 -40
  122. data/lib/graphql/execution/typecast.rb +0 -50
  123. data/lib/graphql/field/resolve.rb +0 -59
  124. data/lib/graphql/field.rb +0 -226
  125. data/lib/graphql/float_type.rb +0 -2
  126. data/lib/graphql/function.rb +0 -128
  127. data/lib/graphql/id_type.rb +0 -2
  128. data/lib/graphql/input_object_type.rb +0 -138
  129. data/lib/graphql/int_type.rb +0 -2
  130. data/lib/graphql/interface_type.rb +0 -72
  131. data/lib/graphql/internal_representation/document.rb +0 -27
  132. data/lib/graphql/internal_representation/node.rb +0 -206
  133. data/lib/graphql/internal_representation/print.rb +0 -51
  134. data/lib/graphql/internal_representation/rewrite.rb +0 -184
  135. data/lib/graphql/internal_representation/scope.rb +0 -88
  136. data/lib/graphql/internal_representation/visit.rb +0 -36
  137. data/lib/graphql/internal_representation.rb +0 -7
  138. data/lib/graphql/list_type.rb +0 -80
  139. data/lib/graphql/non_null_type.rb +0 -71
  140. data/lib/graphql/object_type.rb +0 -130
  141. data/lib/graphql/query/arguments.rb +0 -189
  142. data/lib/graphql/query/arguments_cache.rb +0 -24
  143. data/lib/graphql/query/executor.rb +0 -52
  144. data/lib/graphql/query/literal_input.rb +0 -136
  145. data/lib/graphql/query/serial_execution/field_resolution.rb +0 -92
  146. data/lib/graphql/query/serial_execution/operation_resolution.rb +0 -19
  147. data/lib/graphql/query/serial_execution/selection_resolution.rb +0 -23
  148. data/lib/graphql/query/serial_execution/value_resolution.rb +0 -87
  149. data/lib/graphql/query/serial_execution.rb +0 -40
  150. data/lib/graphql/relay/array_connection.rb +0 -83
  151. data/lib/graphql/relay/base_connection.rb +0 -189
  152. data/lib/graphql/relay/connection_instrumentation.rb +0 -54
  153. data/lib/graphql/relay/connection_resolve.rb +0 -43
  154. data/lib/graphql/relay/connection_type.rb +0 -41
  155. data/lib/graphql/relay/edge.rb +0 -27
  156. data/lib/graphql/relay/edge_type.rb +0 -19
  157. data/lib/graphql/relay/edges_instrumentation.rb +0 -39
  158. data/lib/graphql/relay/global_id_resolve.rb +0 -18
  159. data/lib/graphql/relay/mongo_relation_connection.rb +0 -50
  160. data/lib/graphql/relay/mutation/instrumentation.rb +0 -23
  161. data/lib/graphql/relay/mutation/resolve.rb +0 -56
  162. data/lib/graphql/relay/mutation/result.rb +0 -38
  163. data/lib/graphql/relay/mutation.rb +0 -106
  164. data/lib/graphql/relay/node.rb +0 -39
  165. data/lib/graphql/relay/page_info.rb +0 -7
  166. data/lib/graphql/relay/relation_connection.rb +0 -188
  167. data/lib/graphql/relay/type_extensions.rb +0 -32
  168. data/lib/graphql/scalar_type.rb +0 -91
  169. data/lib/graphql/schema/catchall_middleware.rb +0 -35
  170. data/lib/graphql/schema/default_parse_error.rb +0 -10
  171. data/lib/graphql/schema/default_type_error.rb +0 -17
  172. data/lib/graphql/schema/member/accepts_definition.rb +0 -164
  173. data/lib/graphql/schema/member/cached_graphql_definition.rb +0 -58
  174. data/lib/graphql/schema/member/instrumentation.rb +0 -131
  175. data/lib/graphql/schema/middleware_chain.rb +0 -82
  176. data/lib/graphql/schema/possible_types.rb +0 -44
  177. data/lib/graphql/schema/rescue_middleware.rb +0 -60
  178. data/lib/graphql/schema/timeout_middleware.rb +0 -88
  179. data/lib/graphql/schema/traversal.rb +0 -228
  180. data/lib/graphql/schema/validation.rb +0 -313
  181. data/lib/graphql/static_validation/default_visitor.rb +0 -15
  182. data/lib/graphql/static_validation/no_validate_visitor.rb +0 -10
  183. data/lib/graphql/string_type.rb +0 -2
  184. data/lib/graphql/subscriptions/subscription_root.rb +0 -76
  185. data/lib/graphql/tracing/skylight_tracing.rb +0 -70
  186. data/lib/graphql/types/relay/node_field.rb +0 -24
  187. data/lib/graphql/types/relay/nodes_field.rb +0 -43
  188. data/lib/graphql/union_type.rb +0 -115
  189. data/lib/graphql/upgrader/member.rb +0 -937
  190. 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.8
4
+ version: 2.0.1
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-01-31 00:00:00.000000000 Z
11
+ date: 2022-02-21 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,11 @@ 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
- - lib/graphql/query/literal_input.rb
449
369
  - lib/graphql/query/null_context.rb
450
370
  - 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
371
  - lib/graphql/query/validation_pipeline.rb
457
372
  - lib/graphql/query/variable_validation_error.rb
458
373
  - lib/graphql/query/variables.rb
@@ -460,31 +375,12 @@ files:
460
375
  - lib/graphql/rake_task.rb
461
376
  - lib/graphql/rake_task/validate.rb
462
377
  - 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
378
  - lib/graphql/relay/range_add.rb
480
- - lib/graphql/relay/relation_connection.rb
481
- - lib/graphql/relay/type_extensions.rb
482
379
  - lib/graphql/rubocop.rb
483
380
  - lib/graphql/rubocop/graphql/base_cop.rb
484
381
  - lib/graphql/rubocop/graphql/default_null_true.rb
485
382
  - lib/graphql/rubocop/graphql/default_required_true.rb
486
383
  - lib/graphql/runtime_type_error.rb
487
- - lib/graphql/scalar_type.rb
488
384
  - lib/graphql/schema.rb
489
385
  - lib/graphql/schema/addition.rb
490
386
  - lib/graphql/schema/argument.rb
@@ -494,9 +390,6 @@ files:
494
390
  - lib/graphql/schema/build_from_definition/resolve_map.rb
495
391
  - lib/graphql/schema/build_from_definition/resolve_map/default_resolve.rb
496
392
  - 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
393
  - lib/graphql/schema/directive.rb
501
394
  - lib/graphql/schema/directive/deprecated.rb
502
395
  - lib/graphql/schema/directive/feature.rb
@@ -520,10 +413,8 @@ files:
520
413
  - lib/graphql/schema/list.rb
521
414
  - lib/graphql/schema/loader.rb
522
415
  - lib/graphql/schema/member.rb
523
- - lib/graphql/schema/member/accepts_definition.rb
524
416
  - lib/graphql/schema/member/base_dsl_methods.rb
525
417
  - lib/graphql/schema/member/build_type.rb
526
- - lib/graphql/schema/member/cached_graphql_definition.rb
527
418
  - lib/graphql/schema/member/graphql_type_names.rb
528
419
  - lib/graphql/schema/member/has_arguments.rb
529
420
  - lib/graphql/schema/member/has_ast_node.rb
@@ -534,32 +425,25 @@ files:
534
425
  - lib/graphql/schema/member/has_path.rb
535
426
  - lib/graphql/schema/member/has_unresolved_type_error.rb
536
427
  - lib/graphql/schema/member/has_validators.rb
537
- - lib/graphql/schema/member/instrumentation.rb
538
428
  - lib/graphql/schema/member/relay_shortcuts.rb
539
429
  - lib/graphql/schema/member/scoped.rb
540
430
  - lib/graphql/schema/member/type_system_helpers.rb
541
431
  - lib/graphql/schema/member/validates_input.rb
542
- - lib/graphql/schema/middleware_chain.rb
543
432
  - lib/graphql/schema/mutation.rb
544
433
  - lib/graphql/schema/non_null.rb
545
434
  - lib/graphql/schema/null_mask.rb
546
435
  - lib/graphql/schema/object.rb
547
- - lib/graphql/schema/possible_types.rb
548
436
  - lib/graphql/schema/printer.rb
549
437
  - lib/graphql/schema/relay_classic_mutation.rb
550
- - lib/graphql/schema/rescue_middleware.rb
551
438
  - lib/graphql/schema/resolver.rb
552
439
  - lib/graphql/schema/resolver/has_payload_type.rb
553
440
  - lib/graphql/schema/scalar.rb
554
441
  - lib/graphql/schema/subscription.rb
555
442
  - lib/graphql/schema/timeout.rb
556
- - lib/graphql/schema/timeout_middleware.rb
557
- - lib/graphql/schema/traversal.rb
558
443
  - lib/graphql/schema/type_expression.rb
559
444
  - lib/graphql/schema/type_membership.rb
560
445
  - lib/graphql/schema/union.rb
561
446
  - lib/graphql/schema/unique_within_type.rb
562
- - lib/graphql/schema/validation.rb
563
447
  - lib/graphql/schema/validator.rb
564
448
  - lib/graphql/schema/validator/allow_blank_validator.rb
565
449
  - lib/graphql/schema/validator/allow_null_validator.rb
@@ -574,12 +458,10 @@ files:
574
458
  - lib/graphql/static_validation.rb
575
459
  - lib/graphql/static_validation/all_rules.rb
576
460
  - lib/graphql/static_validation/base_visitor.rb
577
- - lib/graphql/static_validation/default_visitor.rb
578
461
  - lib/graphql/static_validation/definition_dependencies.rb
579
462
  - lib/graphql/static_validation/error.rb
580
463
  - lib/graphql/static_validation/interpreter_visitor.rb
581
464
  - lib/graphql/static_validation/literal_validator.rb
582
- - lib/graphql/static_validation/no_validate_visitor.rb
583
465
  - lib/graphql/static_validation/rules/argument_literals_are_compatible.rb
584
466
  - lib/graphql/static_validation/rules/argument_literals_are_compatible_error.rb
585
467
  - lib/graphql/static_validation/rules/argument_names_are_unique.rb
@@ -643,7 +525,6 @@ files:
643
525
  - lib/graphql/static_validation/validation_timeout_error.rb
644
526
  - lib/graphql/static_validation/validator.rb
645
527
  - lib/graphql/string_encoding_error.rb
646
- - lib/graphql/string_type.rb
647
528
  - lib/graphql/subscriptions.rb
648
529
  - lib/graphql/subscriptions/action_cable_subscriptions.rb
649
530
  - lib/graphql/subscriptions/broadcast_analyzer.rb
@@ -651,7 +532,6 @@ files:
651
532
  - lib/graphql/subscriptions/event.rb
652
533
  - lib/graphql/subscriptions/instrumentation.rb
653
534
  - lib/graphql/subscriptions/serialize.rb
654
- - lib/graphql/subscriptions/subscription_root.rb
655
535
  - lib/graphql/tracing.rb
656
536
  - lib/graphql/tracing/active_support_notifications_tracing.rb
657
537
  - lib/graphql/tracing/appoptics_tracing.rb
@@ -663,7 +543,6 @@ files:
663
543
  - lib/graphql/tracing/prometheus_tracing.rb
664
544
  - lib/graphql/tracing/prometheus_tracing/graphql_collector.rb
665
545
  - lib/graphql/tracing/scout_tracing.rb
666
- - lib/graphql/tracing/skylight_tracing.rb
667
546
  - lib/graphql/tracing/statsd_tracing.rb
668
547
  - lib/graphql/type_kinds.rb
669
548
  - lib/graphql/types.rb
@@ -685,17 +564,12 @@ files:
685
564
  - lib/graphql/types/relay/has_nodes_field.rb
686
565
  - lib/graphql/types/relay/node.rb
687
566
  - lib/graphql/types/relay/node_behaviors.rb
688
- - lib/graphql/types/relay/node_field.rb
689
- - lib/graphql/types/relay/nodes_field.rb
690
567
  - lib/graphql/types/relay/page_info.rb
691
568
  - lib/graphql/types/relay/page_info_behaviors.rb
692
569
  - lib/graphql/types/string.rb
693
570
  - lib/graphql/unauthorized_error.rb
694
571
  - lib/graphql/unauthorized_field_error.rb
695
- - lib/graphql/union_type.rb
696
572
  - lib/graphql/unresolved_type_error.rb
697
- - lib/graphql/upgrader/member.rb
698
- - lib/graphql/upgrader/schema.rb
699
573
  - lib/graphql/version.rb
700
574
  - readme.md
701
575
  homepage: https://github.com/rmosolgo/graphql-ruby
@@ -707,7 +581,7 @@ metadata:
707
581
  source_code_uri: https://github.com/rmosolgo/graphql-ruby
708
582
  bug_tracker_uri: https://github.com/rmosolgo/graphql-ruby/issues
709
583
  mailing_list_uri: https://tinyletter.com/graphql-ruby
710
- post_install_message:
584
+ post_install_message:
711
585
  rdoc_options: []
712
586
  require_paths:
713
587
  - lib
@@ -722,8 +596,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
722
596
  - !ruby/object:Gem::Version
723
597
  version: '0'
724
598
  requirements: []
725
- rubygems_version: 3.3.3
726
- signing_key:
599
+ rubygems_version: 3.1.6
600
+ signing_key:
727
601
  specification_version: 4
728
602
  summary: A GraphQL language and runtime for Ruby
729
603
  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