graphql 1.13.16 → 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.
- checksums.yaml +4 -4
- data/lib/graphql/analysis/ast/query_complexity.rb +1 -1
- data/lib/graphql/analysis/ast/query_depth.rb +0 -1
- data/lib/graphql/analysis/ast/visitor.rb +1 -1
- data/lib/graphql/analysis/ast.rb +0 -10
- data/lib/graphql/analysis.rb +0 -7
- data/lib/graphql/backtrace/table.rb +0 -18
- data/lib/graphql/backtrace/tracer.rb +1 -2
- data/lib/graphql/backtrace.rb +2 -8
- data/lib/graphql/dig.rb +1 -1
- data/lib/graphql/execution/errors.rb +1 -9
- data/lib/graphql/execution/interpreter/runtime.rb +2 -9
- data/lib/graphql/execution/interpreter.rb +0 -22
- data/lib/graphql/execution/lazy.rb +1 -1
- data/lib/graphql/execution/lookahead.rb +6 -13
- data/lib/graphql/execution/multiplex.rb +50 -107
- data/lib/graphql/execution.rb +11 -3
- data/lib/graphql/introspection/dynamic_fields.rb +3 -8
- data/lib/graphql/introspection/entry_points.rb +2 -15
- data/lib/graphql/language/document_from_schema_definition.rb +0 -17
- data/lib/graphql/pagination/connections.rb +2 -28
- data/lib/graphql/query/context.rb +1 -185
- data/lib/graphql/query/input_validation_result.rb +0 -9
- data/lib/graphql/query/literal_input.rb +8 -13
- data/lib/graphql/query/validation_pipeline.rb +6 -34
- data/lib/graphql/query/variable_validation_error.rb +2 -2
- data/lib/graphql/query/variables.rb +8 -31
- data/lib/graphql/query.rb +5 -34
- data/lib/graphql/railtie.rb +0 -104
- data/lib/graphql/relay/range_add.rb +0 -4
- data/lib/graphql/relay.rb +0 -15
- data/lib/graphql/schema/addition.rb +1 -8
- data/lib/graphql/schema/argument.rb +1 -25
- data/lib/graphql/schema/build_from_definition.rb +0 -1
- data/lib/graphql/schema/directive.rb +0 -21
- data/lib/graphql/schema/enum.rb +3 -19
- data/lib/graphql/schema/enum_value.rb +0 -22
- data/lib/graphql/schema/field.rb +2 -185
- data/lib/graphql/schema/input_object.rb +11 -57
- data/lib/graphql/schema/interface.rb +0 -25
- data/lib/graphql/schema/introspection_system.rb +3 -8
- data/lib/graphql/schema/late_bound_type.rb +2 -2
- data/lib/graphql/schema/list.rb +3 -24
- data/lib/graphql/schema/loader.rb +0 -1
- data/lib/graphql/schema/member/base_dsl_methods.rb +0 -5
- data/lib/graphql/schema/member/build_type.rb +4 -6
- data/lib/graphql/schema/member/has_arguments.rb +14 -18
- data/lib/graphql/schema/member/has_fields.rb +2 -2
- data/lib/graphql/schema/member/has_interfaces.rb +0 -2
- data/lib/graphql/schema/member/validates_input.rb +2 -2
- data/lib/graphql/schema/member.rb +0 -6
- data/lib/graphql/schema/mutation.rb +0 -9
- data/lib/graphql/schema/non_null.rb +3 -9
- data/lib/graphql/schema/object.rb +0 -40
- data/lib/graphql/schema/relay_classic_mutation.rb +17 -28
- data/lib/graphql/schema/scalar.rb +1 -16
- data/lib/graphql/schema/union.rb +0 -16
- data/lib/graphql/schema/warden.rb +1 -1
- data/lib/graphql/schema/wrapper.rb +0 -5
- data/lib/graphql/schema.rb +106 -945
- data/lib/graphql/static_validation/base_visitor.rb +4 -21
- data/lib/graphql/static_validation/rules/directives_are_in_valid_locations.rb +12 -12
- data/lib/graphql/static_validation/validator.rb +2 -24
- data/lib/graphql/static_validation.rb +0 -2
- data/lib/graphql/subscriptions/default_subscription_resolve_extension.rb +38 -1
- data/lib/graphql/subscriptions/event.rb +1 -1
- data/lib/graphql/subscriptions/instrumentation.rb +0 -51
- data/lib/graphql/subscriptions.rb +4 -13
- data/lib/graphql/tracing/data_dog_tracing.rb +2 -19
- data/lib/graphql/tracing/platform_tracing.rb +4 -31
- data/lib/graphql/tracing.rb +0 -1
- data/lib/graphql/types/relay/connection_behaviors.rb +2 -6
- data/lib/graphql/types/relay/default_relay.rb +0 -10
- data/lib/graphql/types/relay/node_behaviors.rb +5 -1
- data/lib/graphql/types/relay.rb +0 -2
- data/lib/graphql/version.rb +1 -1
- data/lib/graphql.rb +1 -65
- metadata +6 -131
- data/lib/graphql/analysis/analyze_query.rb +0 -98
- data/lib/graphql/analysis/field_usage.rb +0 -45
- data/lib/graphql/analysis/max_query_complexity.rb +0 -26
- data/lib/graphql/analysis/max_query_depth.rb +0 -26
- data/lib/graphql/analysis/query_complexity.rb +0 -88
- data/lib/graphql/analysis/query_depth.rb +0 -43
- data/lib/graphql/analysis/reducer_state.rb +0 -48
- data/lib/graphql/argument.rb +0 -131
- data/lib/graphql/authorization.rb +0 -82
- data/lib/graphql/backtrace/legacy_tracer.rb +0 -56
- data/lib/graphql/backwards_compatibility.rb +0 -61
- data/lib/graphql/base_type.rb +0 -232
- data/lib/graphql/boolean_type.rb +0 -2
- data/lib/graphql/compatibility/execution_specification/counter_schema.rb +0 -53
- data/lib/graphql/compatibility/execution_specification/specification_schema.rb +0 -200
- data/lib/graphql/compatibility/execution_specification.rb +0 -436
- data/lib/graphql/compatibility/lazy_execution_specification/lazy_schema.rb +0 -111
- data/lib/graphql/compatibility/lazy_execution_specification.rb +0 -215
- data/lib/graphql/compatibility/query_parser_specification/parse_error_specification.rb +0 -87
- data/lib/graphql/compatibility/query_parser_specification/query_assertions.rb +0 -79
- data/lib/graphql/compatibility/query_parser_specification.rb +0 -266
- data/lib/graphql/compatibility/schema_parser_specification.rb +0 -682
- data/lib/graphql/compatibility.rb +0 -5
- data/lib/graphql/define/assign_argument.rb +0 -12
- data/lib/graphql/define/assign_connection.rb +0 -13
- data/lib/graphql/define/assign_enum_value.rb +0 -18
- data/lib/graphql/define/assign_global_id_field.rb +0 -11
- data/lib/graphql/define/assign_mutation_function.rb +0 -34
- data/lib/graphql/define/assign_object_field.rb +0 -42
- data/lib/graphql/define/defined_object_proxy.rb +0 -53
- data/lib/graphql/define/instance_definable.rb +0 -255
- data/lib/graphql/define/no_definition_error.rb +0 -7
- data/lib/graphql/define/non_null_with_bang.rb +0 -16
- data/lib/graphql/define/type_definer.rb +0 -31
- data/lib/graphql/define.rb +0 -31
- data/lib/graphql/deprecated_dsl.rb +0 -55
- data/lib/graphql/directive/deprecated_directive.rb +0 -2
- data/lib/graphql/directive/include_directive.rb +0 -2
- data/lib/graphql/directive/skip_directive.rb +0 -2
- data/lib/graphql/directive.rb +0 -107
- data/lib/graphql/enum_type.rb +0 -133
- data/lib/graphql/execution/execute.rb +0 -333
- data/lib/graphql/execution/flatten.rb +0 -40
- data/lib/graphql/execution/typecast.rb +0 -50
- data/lib/graphql/field/resolve.rb +0 -59
- data/lib/graphql/field.rb +0 -226
- data/lib/graphql/float_type.rb +0 -2
- data/lib/graphql/function.rb +0 -128
- data/lib/graphql/id_type.rb +0 -2
- data/lib/graphql/input_object_type.rb +0 -138
- data/lib/graphql/int_type.rb +0 -2
- data/lib/graphql/interface_type.rb +0 -72
- data/lib/graphql/internal_representation/document.rb +0 -27
- data/lib/graphql/internal_representation/node.rb +0 -206
- data/lib/graphql/internal_representation/print.rb +0 -51
- data/lib/graphql/internal_representation/rewrite.rb +0 -184
- data/lib/graphql/internal_representation/scope.rb +0 -88
- data/lib/graphql/internal_representation/visit.rb +0 -36
- data/lib/graphql/internal_representation.rb +0 -7
- data/lib/graphql/list_type.rb +0 -80
- data/lib/graphql/non_null_type.rb +0 -71
- data/lib/graphql/object_type.rb +0 -130
- data/lib/graphql/query/arguments.rb +0 -189
- data/lib/graphql/query/arguments_cache.rb +0 -24
- data/lib/graphql/query/executor.rb +0 -52
- data/lib/graphql/query/serial_execution/field_resolution.rb +0 -92
- data/lib/graphql/query/serial_execution/operation_resolution.rb +0 -19
- data/lib/graphql/query/serial_execution/selection_resolution.rb +0 -23
- data/lib/graphql/query/serial_execution/value_resolution.rb +0 -87
- data/lib/graphql/query/serial_execution.rb +0 -40
- data/lib/graphql/relay/array_connection.rb +0 -83
- data/lib/graphql/relay/base_connection.rb +0 -189
- data/lib/graphql/relay/connection_instrumentation.rb +0 -54
- data/lib/graphql/relay/connection_resolve.rb +0 -43
- data/lib/graphql/relay/connection_type.rb +0 -54
- data/lib/graphql/relay/edge.rb +0 -27
- data/lib/graphql/relay/edge_type.rb +0 -19
- data/lib/graphql/relay/edges_instrumentation.rb +0 -39
- data/lib/graphql/relay/global_id_resolve.rb +0 -17
- data/lib/graphql/relay/mongo_relation_connection.rb +0 -50
- data/lib/graphql/relay/mutation/instrumentation.rb +0 -23
- data/lib/graphql/relay/mutation/resolve.rb +0 -56
- data/lib/graphql/relay/mutation/result.rb +0 -38
- data/lib/graphql/relay/mutation.rb +0 -106
- data/lib/graphql/relay/node.rb +0 -39
- data/lib/graphql/relay/page_info.rb +0 -7
- data/lib/graphql/relay/relation_connection.rb +0 -188
- data/lib/graphql/relay/type_extensions.rb +0 -32
- data/lib/graphql/scalar_type.rb +0 -91
- data/lib/graphql/schema/catchall_middleware.rb +0 -35
- data/lib/graphql/schema/default_parse_error.rb +0 -10
- data/lib/graphql/schema/default_type_error.rb +0 -17
- data/lib/graphql/schema/member/accepts_definition.rb +0 -164
- data/lib/graphql/schema/member/cached_graphql_definition.rb +0 -58
- data/lib/graphql/schema/member/instrumentation.rb +0 -131
- data/lib/graphql/schema/middleware_chain.rb +0 -82
- data/lib/graphql/schema/possible_types.rb +0 -44
- data/lib/graphql/schema/rescue_middleware.rb +0 -60
- data/lib/graphql/schema/timeout_middleware.rb +0 -88
- data/lib/graphql/schema/traversal.rb +0 -228
- data/lib/graphql/schema/validation.rb +0 -313
- data/lib/graphql/static_validation/default_visitor.rb +0 -15
- data/lib/graphql/static_validation/no_validate_visitor.rb +0 -10
- data/lib/graphql/string_type.rb +0 -2
- data/lib/graphql/subscriptions/subscription_root.rb +0 -76
- data/lib/graphql/tracing/skylight_tracing.rb +0 -70
- data/lib/graphql/types/relay/node_field.rb +0 -24
- data/lib/graphql/types/relay/nodes_field.rb +0 -43
- data/lib/graphql/union_type.rb +0 -115
- data/lib/graphql/upgrader/member.rb +0 -937
- 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:
|
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-
|
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
|
@@ -663,7 +544,6 @@ files:
|
|
663
544
|
- lib/graphql/tracing/prometheus_tracing.rb
|
664
545
|
- lib/graphql/tracing/prometheus_tracing/graphql_collector.rb
|
665
546
|
- lib/graphql/tracing/scout_tracing.rb
|
666
|
-
- lib/graphql/tracing/skylight_tracing.rb
|
667
547
|
- lib/graphql/tracing/statsd_tracing.rb
|
668
548
|
- lib/graphql/type_kinds.rb
|
669
549
|
- lib/graphql/types.rb
|
@@ -685,17 +565,12 @@ files:
|
|
685
565
|
- lib/graphql/types/relay/has_nodes_field.rb
|
686
566
|
- lib/graphql/types/relay/node.rb
|
687
567
|
- lib/graphql/types/relay/node_behaviors.rb
|
688
|
-
- lib/graphql/types/relay/node_field.rb
|
689
|
-
- lib/graphql/types/relay/nodes_field.rb
|
690
568
|
- lib/graphql/types/relay/page_info.rb
|
691
569
|
- lib/graphql/types/relay/page_info_behaviors.rb
|
692
570
|
- lib/graphql/types/string.rb
|
693
571
|
- lib/graphql/unauthorized_error.rb
|
694
572
|
- lib/graphql/unauthorized_field_error.rb
|
695
|
-
- lib/graphql/union_type.rb
|
696
573
|
- lib/graphql/unresolved_type_error.rb
|
697
|
-
- lib/graphql/upgrader/member.rb
|
698
|
-
- lib/graphql/upgrader/schema.rb
|
699
574
|
- lib/graphql/version.rb
|
700
575
|
- readme.md
|
701
576
|
homepage: https://github.com/rmosolgo/graphql-ruby
|
@@ -707,7 +582,7 @@ metadata:
|
|
707
582
|
source_code_uri: https://github.com/rmosolgo/graphql-ruby
|
708
583
|
bug_tracker_uri: https://github.com/rmosolgo/graphql-ruby/issues
|
709
584
|
mailing_list_uri: https://tinyletter.com/graphql-ruby
|
710
|
-
post_install_message:
|
585
|
+
post_install_message:
|
711
586
|
rdoc_options: []
|
712
587
|
require_paths:
|
713
588
|
- lib
|
@@ -722,8 +597,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
722
597
|
- !ruby/object:Gem::Version
|
723
598
|
version: '0'
|
724
599
|
requirements: []
|
725
|
-
rubygems_version: 3.
|
726
|
-
signing_key:
|
600
|
+
rubygems_version: 3.1.6
|
601
|
+
signing_key:
|
727
602
|
specification_version: 4
|
728
603
|
summary: A GraphQL language and runtime for Ruby
|
729
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
|