graphql 2.6.12 → 2.6.13
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.
- checksums.yaml +4 -4
- data/.rdoc_options +4 -0
- data/lib/generators/graphql/core.rb +1 -0
- data/lib/generators/graphql/detailed_trace_generator.rb +1 -0
- data/lib/generators/graphql/enum_generator.rb +1 -0
- data/lib/generators/graphql/field_extractor.rb +1 -0
- data/lib/generators/graphql/input_generator.rb +1 -0
- data/lib/generators/graphql/install/mutation_root_generator.rb +1 -0
- data/lib/generators/graphql/install_generator.rb +1 -0
- data/lib/generators/graphql/interface_generator.rb +1 -0
- data/lib/generators/graphql/loader_generator.rb +8 -2
- data/lib/generators/graphql/mutation_create_generator.rb +8 -2
- data/lib/generators/graphql/mutation_delete_generator.rb +8 -2
- data/lib/generators/graphql/mutation_generator.rb +8 -2
- data/lib/generators/graphql/mutation_update_generator.rb +8 -2
- data/lib/generators/graphql/object_generator.rb +1 -0
- data/lib/generators/graphql/orm_mutations_base.rb +8 -2
- data/lib/generators/graphql/relay.rb +1 -0
- data/lib/generators/graphql/relay_generator.rb +1 -0
- data/lib/generators/graphql/scalar_generator.rb +1 -0
- data/lib/generators/graphql/type_generator.rb +38 -8
- data/lib/generators/graphql/union_generator.rb +1 -0
- data/lib/graphql/analysis/analyzer.rb +35 -9
- data/lib/graphql/analysis/field_usage.rb +1 -0
- data/lib/graphql/analysis/max_query_complexity.rb +2 -1
- data/lib/graphql/analysis/max_query_depth.rb +1 -0
- data/lib/graphql/analysis/query_complexity.rb +57 -20
- data/lib/graphql/analysis/query_depth.rb +17 -12
- data/lib/graphql/analysis/visitor.rb +79 -16
- data/lib/graphql/analysis.rb +23 -6
- data/lib/graphql/analysis_error.rb +1 -0
- data/lib/graphql/autoload.rb +30 -7
- data/lib/graphql/backtrace/table.rb +21 -5
- data/lib/graphql/backtrace/traced_error.rb +8 -3
- data/lib/graphql/backtrace.rb +14 -9
- data/lib/graphql/coercion_error.rb +1 -0
- data/lib/graphql/current.rb +44 -19
- data/lib/graphql/dashboard/application_controller.rb +1 -0
- data/lib/graphql/dashboard/detailed_traces.rb +1 -0
- data/lib/graphql/dashboard/installable.rb +1 -0
- data/lib/graphql/dashboard/landings_controller.rb +1 -0
- data/lib/graphql/dashboard/limiters.rb +1 -0
- data/lib/graphql/dashboard/operation_store.rb +1 -0
- data/lib/graphql/dashboard/statics_controller.rb +1 -0
- data/lib/graphql/dashboard/subscriptions.rb +1 -0
- data/lib/graphql/dashboard.rb +36 -22
- data/lib/graphql/dataloader/active_record_association_source.rb +1 -0
- data/lib/graphql/dataloader/active_record_source.rb +1 -0
- data/lib/graphql/dataloader/async_dataloader.rb +8 -7
- data/lib/graphql/dataloader/null_dataloader.rb +4 -3
- data/lib/graphql/dataloader/request.rb +8 -2
- data/lib/graphql/dataloader/request_all.rb +8 -2
- data/lib/graphql/dataloader/source.rb +127 -35
- data/lib/graphql/dataloader.rb +91 -42
- data/lib/graphql/date_encoding_error.rb +2 -1
- data/lib/graphql/dig.rb +12 -3
- data/lib/graphql/duration_encoding_error.rb +2 -1
- data/lib/graphql/execution/directive_checks.rb +8 -3
- data/lib/graphql/execution/errors.rb +20 -6
- data/lib/graphql/execution/field_resolve_step.rb +22 -6
- data/lib/graphql/execution/finalize.rb +12 -6
- data/lib/graphql/execution/input_values.rb +2 -1
- data/lib/graphql/execution/interpreter/argument_value.rb +17 -5
- data/lib/graphql/execution/interpreter/arguments.rb +24 -9
- data/lib/graphql/execution/interpreter/arguments_cache.rb +2 -1
- data/lib/graphql/execution/interpreter/execution_errors.rb +1 -0
- data/lib/graphql/execution/interpreter/handles_raw_value.rb +1 -0
- data/lib/graphql/execution/interpreter/resolve.rb +18 -8
- data/lib/graphql/execution/interpreter/runtime/graphql_result.rb +4 -1
- data/lib/graphql/execution/interpreter/runtime.rb +66 -23
- data/lib/graphql/execution/interpreter.rb +15 -6
- data/lib/graphql/execution/lazy/lazy_method_map.rb +21 -8
- data/lib/graphql/execution/lazy.rb +34 -10
- data/lib/graphql/execution/load_argument_step.rb +1 -0
- data/lib/graphql/execution/lookahead.rb +137 -54
- data/lib/graphql/execution/multiplex.rb +4 -4
- data/lib/graphql/execution/next.rb +7 -0
- data/lib/graphql/execution/prepare_object_step.rb +1 -0
- data/lib/graphql/execution/resolve_type_step.rb +2 -1
- data/lib/graphql/execution/runner.rb +9 -3
- data/lib/graphql/execution/selections_step.rb +3 -2
- data/lib/graphql/execution.rb +2 -2
- data/lib/graphql/execution_error.rb +19 -10
- data/lib/graphql/float_decoding_error.rb +1 -0
- data/lib/graphql/float_encoding_error.rb +7 -2
- data/lib/graphql/integer_decoding_error.rb +2 -1
- data/lib/graphql/integer_encoding_error.rb +8 -3
- data/lib/graphql/introspection/base_object.rb +3 -1
- data/lib/graphql/introspection/directive_location_enum.rb +1 -0
- data/lib/graphql/introspection/directive_type.rb +1 -0
- data/lib/graphql/introspection/dynamic_fields.rb +1 -0
- data/lib/graphql/introspection/entry_points.rb +1 -0
- data/lib/graphql/introspection/enum_value_type.rb +1 -0
- data/lib/graphql/introspection/field_type.rb +1 -0
- data/lib/graphql/introspection/input_value_type.rb +1 -0
- data/lib/graphql/introspection/introspection_query.rb +1 -0
- data/lib/graphql/introspection/schema_type.rb +1 -0
- data/lib/graphql/introspection/type_kind_enum.rb +1 -0
- data/lib/graphql/introspection/type_type.rb +1 -0
- data/lib/graphql/introspection.rb +1 -0
- data/lib/graphql/invalid_name_error.rb +1 -0
- data/lib/graphql/invalid_null_error.rb +19 -6
- data/lib/graphql/language/block_string.rb +2 -1
- data/lib/graphql/language/cache.rb +10 -4
- data/lib/graphql/language/comment.rb +1 -0
- data/lib/graphql/language/definition_slice.rb +1 -0
- data/lib/graphql/language/document_from_schema_definition.rb +9 -10
- data/lib/graphql/language/generation.rb +23 -9
- data/lib/graphql/language/lexer.rb +5 -0
- data/lib/graphql/language/nodes.rb +2094 -419
- data/lib/graphql/language/parser.rb +17 -11
- data/lib/graphql/language/printer.rb +31 -16
- data/lib/graphql/language/sanitized_printer.rb +16 -5
- data/lib/graphql/language/static_visitor.rb +19 -4
- data/lib/graphql/language/visitor.rb +51 -29
- data/lib/graphql/language.rb +13 -7
- data/lib/graphql/load_application_object_failed_error.rb +14 -5
- data/lib/graphql/name_validator.rb +1 -0
- data/lib/graphql/pagination/active_record_relation_connection.rb +1 -0
- data/lib/graphql/pagination/array_connection.rb +20 -6
- data/lib/graphql/pagination/connection.rb +178 -48
- data/lib/graphql/pagination/connections.rb +21 -14
- data/lib/graphql/pagination/mongoid_relation_connection.rb +1 -0
- data/lib/graphql/pagination/relation_connection.rb +118 -21
- data/lib/graphql/pagination/sequel_dataset_connection.rb +1 -0
- data/lib/graphql/pagination.rb +1 -0
- data/lib/graphql/parse_error.rb +1 -0
- data/lib/graphql/query/context/scoped_context.rb +2 -1
- data/lib/graphql/query/context.rb +106 -35
- data/lib/graphql/query/fingerprint.rb +15 -7
- data/lib/graphql/query/input_validation_result.rb +1 -0
- data/lib/graphql/query/null_context.rb +1 -0
- data/lib/graphql/query/partial.rb +28 -15
- data/lib/graphql/query/result.rb +15 -5
- data/lib/graphql/query/validation_pipeline.rb +16 -6
- data/lib/graphql/query/variable_validation_error.rb +1 -0
- data/lib/graphql/query/variables.rb +4 -1
- data/lib/graphql/query.rb +193 -49
- data/lib/graphql/railtie.rb +7 -3
- data/lib/graphql/rake_task/validate.rb +72 -17
- data/lib/graphql/rake_task.rb +55 -23
- data/lib/graphql/relay/range_add.rb +32 -21
- data/lib/graphql/relay.rb +1 -0
- data/lib/graphql/rubocop/graphql/base_cop.rb +1 -0
- data/lib/graphql/rubocop/graphql/default_null_true.rb +9 -6
- data/lib/graphql/rubocop/graphql/default_required_true.rb +9 -6
- data/lib/graphql/rubocop/graphql/field_type_in_block.rb +12 -8
- data/lib/graphql/rubocop/graphql/root_types_in_block.rb +9 -5
- data/lib/graphql/rubocop.rb +1 -0
- data/lib/graphql/runtime_error.rb +1 -0
- data/lib/graphql/runtime_type_error.rb +1 -0
- data/lib/graphql/schema/addition.rb +18 -6
- data/lib/graphql/schema/always_visible.rb +1 -0
- data/lib/graphql/schema/argument.rb +265 -42
- data/lib/graphql/schema/base_64_encoder.rb +2 -2
- data/lib/graphql/schema/build_from_definition/resolve_map/default_resolve.rb +1 -0
- data/lib/graphql/schema/build_from_definition/resolve_map.rb +2 -2
- data/lib/graphql/schema/build_from_definition.rb +94 -27
- data/lib/graphql/schema/built_in_types.rb +1 -0
- data/lib/graphql/schema/directive/deprecated.rb +1 -0
- data/lib/graphql/schema/directive/feature.rb +39 -22
- data/lib/graphql/schema/directive/flagged.rb +6 -1
- data/lib/graphql/schema/directive/include.rb +1 -0
- data/lib/graphql/schema/directive/one_of.rb +1 -0
- data/lib/graphql/schema/directive/skip.rb +1 -0
- data/lib/graphql/schema/directive/specified_by.rb +1 -0
- data/lib/graphql/schema/directive/transform.rb +17 -8
- data/lib/graphql/schema/directive.rb +12 -7
- data/lib/graphql/schema/enum.rb +99 -38
- data/lib/graphql/schema/enum_value.rb +21 -13
- data/lib/graphql/schema/field/connection_extension.rb +10 -2
- data/lib/graphql/schema/field/scope_extension.rb +1 -0
- data/lib/graphql/schema/field.rb +621 -109
- data/lib/graphql/schema/field_extension.rb +89 -34
- data/lib/graphql/schema/find_inherited_value.rb +5 -3
- data/lib/graphql/schema/finder.rb +22 -8
- data/lib/graphql/schema/has_single_input_argument.rb +39 -6
- data/lib/graphql/schema/input_object.rb +40 -13
- data/lib/graphql/schema/interface.rb +33 -17
- data/lib/graphql/schema/introspection_system.rb +7 -3
- data/lib/graphql/schema/late_bound_type.rb +2 -2
- data/lib/graphql/schema/list.rb +15 -4
- data/lib/graphql/schema/loader.rb +23 -12
- data/lib/graphql/schema/member/base_dsl_methods.rb +58 -12
- data/lib/graphql/schema/member/build_type.rb +16 -5
- data/lib/graphql/schema/member/graphql_type_names.rb +10 -6
- data/lib/graphql/schema/member/has_arguments.rb +115 -48
- data/lib/graphql/schema/member/has_ast_node.rb +1 -0
- data/lib/graphql/schema/member/has_authorization.rb +5 -0
- data/lib/graphql/schema/member/has_dataloader.rb +91 -34
- data/lib/graphql/schema/member/has_deprecation_reason.rb +15 -2
- data/lib/graphql/schema/member/has_directives.rb +38 -10
- data/lib/graphql/schema/member/has_fields.rb +151 -70
- data/lib/graphql/schema/member/has_interfaces.rb +10 -2
- data/lib/graphql/schema/member/has_path.rb +14 -5
- data/lib/graphql/schema/member/has_unresolved_type_error.rb +1 -0
- data/lib/graphql/schema/member/has_validators.rb +19 -4
- data/lib/graphql/schema/member/relay_shortcuts.rb +10 -2
- data/lib/graphql/schema/member/scoped.rb +14 -3
- data/lib/graphql/schema/member/type_system_helpers.rb +36 -6
- data/lib/graphql/schema/member/validates_input.rb +1 -0
- data/lib/graphql/schema/member.rb +9 -2
- data/lib/graphql/schema/mutation.rb +50 -46
- data/lib/graphql/schema/non_null.rb +21 -5
- data/lib/graphql/schema/object.rb +33 -12
- data/lib/graphql/schema/printer.rb +52 -31
- data/lib/graphql/schema/ractor_shareable.rb +6 -2
- data/lib/graphql/schema/relay_classic_mutation.rb +3 -3
- data/lib/graphql/schema/resolver/has_payload_type.rb +29 -7
- data/lib/graphql/schema/resolver.rb +156 -45
- data/lib/graphql/schema/scalar.rb +1 -0
- data/lib/graphql/schema/subscription.rb +67 -28
- data/lib/graphql/schema/timeout.rb +65 -25
- data/lib/graphql/schema/type_expression.rb +14 -5
- data/lib/graphql/schema/type_membership.rb +29 -10
- data/lib/graphql/schema/union.rb +4 -2
- data/lib/graphql/schema/unique_within_type.rb +24 -5
- data/lib/graphql/schema/validator/all_validator.rb +17 -9
- data/lib/graphql/schema/validator/allow_blank_validator.rb +8 -2
- data/lib/graphql/schema/validator/allow_null_validator.rb +8 -2
- data/lib/graphql/schema/validator/exclusion_validator.rb +14 -5
- data/lib/graphql/schema/validator/format_validator.rb +21 -10
- data/lib/graphql/schema/validator/inclusion_validator.rb +15 -6
- data/lib/graphql/schema/validator/length_validator.rb +23 -12
- data/lib/graphql/schema/validator/numericality_validator.rb +29 -16
- data/lib/graphql/schema/validator/required_validator.rb +45 -31
- data/lib/graphql/schema/validator.rb +89 -25
- data/lib/graphql/schema/visibility/migration.rb +14 -7
- data/lib/graphql/schema/visibility/profile.rb +20 -17
- data/lib/graphql/schema/visibility/visit.rb +12 -10
- data/lib/graphql/schema/visibility.rb +24 -20
- data/lib/graphql/schema/warden.rb +117 -31
- data/lib/graphql/schema/wrapper.rb +4 -1
- data/lib/graphql/schema.rb +1046 -300
- data/lib/graphql/static_validation/all_rules.rb +2 -1
- data/lib/graphql/static_validation/base_visitor.rb +48 -8
- data/lib/graphql/static_validation/definition_dependencies.rb +27 -7
- data/lib/graphql/static_validation/error.rb +3 -0
- data/lib/graphql/static_validation/interpreter_visitor.rb +1 -0
- data/lib/graphql/static_validation/literal_validator.rb +1 -0
- data/lib/graphql/static_validation/rules/argument_literals_are_compatible.rb +4 -0
- data/lib/graphql/static_validation/rules/argument_literals_are_compatible_error.rb +1 -0
- data/lib/graphql/static_validation/rules/argument_names_are_unique.rb +3 -0
- data/lib/graphql/static_validation/rules/argument_names_are_unique_error.rb +1 -0
- data/lib/graphql/static_validation/rules/arguments_are_defined.rb +3 -0
- data/lib/graphql/static_validation/rules/arguments_are_defined_error.rb +1 -0
- data/lib/graphql/static_validation/rules/directives_are_defined.rb +3 -0
- data/lib/graphql/static_validation/rules/directives_are_defined_error.rb +1 -0
- data/lib/graphql/static_validation/rules/directives_are_in_valid_locations.rb +3 -0
- data/lib/graphql/static_validation/rules/directives_are_in_valid_locations_error.rb +1 -0
- data/lib/graphql/static_validation/rules/fields_are_defined_on_type.rb +3 -0
- data/lib/graphql/static_validation/rules/fields_are_defined_on_type_error.rb +1 -0
- data/lib/graphql/static_validation/rules/fields_have_appropriate_selections.rb +9 -1
- data/lib/graphql/static_validation/rules/fields_have_appropriate_selections_error.rb +1 -0
- data/lib/graphql/static_validation/rules/fields_will_merge.rb +295 -134
- data/lib/graphql/static_validation/rules/fields_will_merge_error.rb +14 -2
- data/lib/graphql/static_validation/rules/fragment_names_are_unique.rb +3 -0
- data/lib/graphql/static_validation/rules/fragment_names_are_unique_error.rb +1 -0
- data/lib/graphql/static_validation/rules/fragment_spreads_are_possible.rb +3 -0
- data/lib/graphql/static_validation/rules/fragment_spreads_are_possible_error.rb +1 -0
- data/lib/graphql/static_validation/rules/fragment_types_exist.rb +3 -0
- data/lib/graphql/static_validation/rules/fragment_types_exist_error.rb +1 -0
- data/lib/graphql/static_validation/rules/fragments_are_finite.rb +3 -0
- data/lib/graphql/static_validation/rules/fragments_are_finite_error.rb +1 -0
- data/lib/graphql/static_validation/rules/fragments_are_named.rb +3 -0
- data/lib/graphql/static_validation/rules/fragments_are_named_error.rb +1 -0
- data/lib/graphql/static_validation/rules/fragments_are_on_composite_types.rb +3 -0
- data/lib/graphql/static_validation/rules/fragments_are_on_composite_types_error.rb +1 -0
- data/lib/graphql/static_validation/rules/fragments_are_used.rb +3 -0
- data/lib/graphql/static_validation/rules/fragments_are_used_error.rb +1 -0
- data/lib/graphql/static_validation/rules/input_object_names_are_unique.rb +3 -0
- data/lib/graphql/static_validation/rules/input_object_names_are_unique_error.rb +1 -0
- data/lib/graphql/static_validation/rules/mutation_root_exists.rb +3 -0
- data/lib/graphql/static_validation/rules/mutation_root_exists_error.rb +1 -0
- data/lib/graphql/static_validation/rules/no_definitions_are_present.rb +3 -0
- data/lib/graphql/static_validation/rules/no_definitions_are_present_error.rb +1 -0
- data/lib/graphql/static_validation/rules/not_single_subscription_error.rb +1 -0
- data/lib/graphql/static_validation/rules/one_of_input_objects_are_valid.rb +4 -0
- data/lib/graphql/static_validation/rules/one_of_input_objects_are_valid_error.rb +1 -0
- data/lib/graphql/static_validation/rules/operation_names_are_valid.rb +3 -0
- data/lib/graphql/static_validation/rules/operation_names_are_valid_error.rb +1 -0
- data/lib/graphql/static_validation/rules/query_root_exists.rb +3 -0
- data/lib/graphql/static_validation/rules/query_root_exists_error.rb +1 -0
- data/lib/graphql/static_validation/rules/required_arguments_are_present.rb +4 -1
- data/lib/graphql/static_validation/rules/required_arguments_are_present_error.rb +1 -0
- data/lib/graphql/static_validation/rules/required_input_object_attributes_are_present.rb +4 -0
- data/lib/graphql/static_validation/rules/required_input_object_attributes_are_present_error.rb +1 -0
- data/lib/graphql/static_validation/rules/subscription_root_exists_and_single_subscription_selection.rb +4 -1
- data/lib/graphql/static_validation/rules/subscription_root_exists_error.rb +1 -0
- data/lib/graphql/static_validation/rules/unique_directives_per_location.rb +3 -0
- data/lib/graphql/static_validation/rules/unique_directives_per_location_error.rb +1 -0
- data/lib/graphql/static_validation/rules/variable_default_values_are_correctly_typed.rb +3 -0
- data/lib/graphql/static_validation/rules/variable_default_values_are_correctly_typed_error.rb +1 -0
- data/lib/graphql/static_validation/rules/variable_names_are_unique.rb +3 -0
- data/lib/graphql/static_validation/rules/variable_names_are_unique_error.rb +1 -0
- data/lib/graphql/static_validation/rules/variable_usages_are_allowed.rb +207 -51
- data/lib/graphql/static_validation/rules/variable_usages_are_allowed_error.rb +1 -0
- data/lib/graphql/static_validation/rules/variables_are_input_types.rb +3 -0
- data/lib/graphql/static_validation/rules/variables_are_input_types_error.rb +1 -0
- data/lib/graphql/static_validation/rules/variables_are_used_and_defined.rb +6 -3
- data/lib/graphql/static_validation/rules/variables_are_used_and_defined_error.rb +1 -0
- data/lib/graphql/static_validation/validation_context.rb +3 -2
- data/lib/graphql/static_validation/validation_timeout_error.rb +1 -0
- data/lib/graphql/static_validation/validator.rb +41 -16
- data/lib/graphql/static_validation.rb +1 -0
- data/lib/graphql/string_encoding_error.rb +1 -0
- data/lib/graphql/subscriptions/action_cable_subscriptions.rb +85 -65
- data/lib/graphql/subscriptions/broadcast_analyzer.rb +10 -4
- data/lib/graphql/subscriptions/default_subscription_resolve_extension.rb +1 -0
- data/lib/graphql/subscriptions/event.rb +25 -6
- data/lib/graphql/subscriptions/serialize.rb +58 -19
- data/lib/graphql/subscriptions.rb +172 -46
- data/lib/graphql/testing/helpers.rb +17 -4
- data/lib/graphql/testing/mock_action_cable.rb +55 -33
- data/lib/graphql/testing.rb +1 -0
- data/lib/graphql/tracing/active_support_notifications_trace.rb +17 -9
- data/lib/graphql/tracing/active_support_notifications_tracing.rb +2 -1
- data/lib/graphql/tracing/appoptics_trace.rb +2 -1
- data/lib/graphql/tracing/appoptics_tracing.rb +2 -1
- data/lib/graphql/tracing/appsignal_trace.rb +16 -7
- data/lib/graphql/tracing/appsignal_tracing.rb +7 -3
- data/lib/graphql/tracing/call_legacy_tracers.rb +1 -0
- data/lib/graphql/tracing/data_dog_trace.rb +17 -6
- data/lib/graphql/tracing/data_dog_tracing.rb +10 -3
- data/lib/graphql/tracing/detailed_trace/active_record_backend.rb +1 -0
- data/lib/graphql/tracing/detailed_trace/memory_backend.rb +1 -0
- data/lib/graphql/tracing/detailed_trace/redis_backend.rb +1 -0
- data/lib/graphql/tracing/detailed_trace.rb +105 -42
- data/lib/graphql/tracing/legacy_hooks_trace.rb +5 -0
- data/lib/graphql/tracing/legacy_trace.rb +1 -0
- data/lib/graphql/tracing/monitor_trace.rb +17 -11
- data/lib/graphql/tracing/new_relic_trace.rb +17 -8
- data/lib/graphql/tracing/new_relic_tracing.rb +7 -3
- data/lib/graphql/tracing/notifications_trace.rb +11 -8
- data/lib/graphql/tracing/notifications_tracing.rb +23 -7
- data/lib/graphql/tracing/null_trace.rb +1 -0
- data/lib/graphql/tracing/perfetto_trace/trace_pb.rb +1 -0
- data/lib/graphql/tracing/perfetto_trace.rb +41 -19
- data/lib/graphql/tracing/platform_trace.rb +3 -1
- data/lib/graphql/tracing/platform_tracing.rb +16 -7
- data/lib/graphql/tracing/prometheus_trace/graphql_collector.rb +1 -0
- data/lib/graphql/tracing/prometheus_trace.rb +22 -13
- data/lib/graphql/tracing/prometheus_tracing.rb +1 -0
- data/lib/graphql/tracing/scout_trace.rb +10 -4
- data/lib/graphql/tracing/scout_tracing.rb +7 -3
- data/lib/graphql/tracing/sentry_trace.rb +12 -5
- data/lib/graphql/tracing/statsd_trace.rb +12 -6
- data/lib/graphql/tracing/statsd_tracing.rb +7 -1
- data/lib/graphql/tracing/trace.rb +231 -58
- data/lib/graphql/tracing.rb +25 -9
- data/lib/graphql/type_kinds.rb +2 -1
- data/lib/graphql/types/big_int.rb +1 -0
- data/lib/graphql/types/boolean.rb +1 -0
- data/lib/graphql/types/float.rb +1 -0
- data/lib/graphql/types/id.rb +1 -0
- data/lib/graphql/types/int.rb +2 -1
- data/lib/graphql/types/iso_8601_date.rb +21 -4
- data/lib/graphql/types/iso_8601_date_time.rb +33 -6
- data/lib/graphql/types/iso_8601_duration.rb +42 -9
- data/lib/graphql/types/json.rb +1 -0
- data/lib/graphql/types/relay/base_connection.rb +38 -32
- data/lib/graphql/types/relay/base_edge.rb +15 -9
- data/lib/graphql/types/relay/connection_behaviors.rb +19 -3
- data/lib/graphql/types/relay/edge_behaviors.rb +17 -4
- data/lib/graphql/types/relay/has_node_field.rb +6 -1
- data/lib/graphql/types/relay/has_nodes_field.rb +6 -1
- data/lib/graphql/types/relay/node.rb +1 -0
- data/lib/graphql/types/relay/node_behaviors.rb +5 -1
- data/lib/graphql/types/relay/page_info.rb +1 -0
- data/lib/graphql/types/relay/page_info_behaviors.rb +1 -0
- data/lib/graphql/types/relay.rb +4 -3
- data/lib/graphql/types/string.rb +1 -0
- data/lib/graphql/types.rb +1 -0
- data/lib/graphql/unauthorized_enum_value_error.rb +4 -1
- data/lib/graphql/unauthorized_error.rb +11 -4
- data/lib/graphql/unauthorized_field_error.rb +4 -1
- data/lib/graphql/unresolved_type_error.rb +16 -5
- data/lib/graphql/version.rb +2 -1
- data/lib/graphql.rb +37 -9
- data/readme.md +1 -1
- metadata +89 -5
- data/.yardopts +0 -5
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
+
# typed: true
|
|
2
3
|
module GraphQL
|
|
3
4
|
module Language
|
|
4
5
|
module Nodes
|
|
5
6
|
NONE = GraphQL::EmptyObjects::EMPTY_ARRAY
|
|
6
|
-
#
|
|
7
|
+
# [AbstractNode](rdoc-ref:GraphQL::Language::Nodes::AbstractNode) is the base class for all nodes in a GraphQL AST.
|
|
7
8
|
#
|
|
8
9
|
# It provides some APIs for working with ASTs:
|
|
9
10
|
# - `children` returns all AST nodes attached to this one. Used for tree traversal.
|
|
@@ -12,8 +13,12 @@ module GraphQL
|
|
|
12
13
|
class AbstractNode
|
|
13
14
|
|
|
14
15
|
module DefinitionNode
|
|
15
|
-
# This AST node's
|
|
16
|
-
#
|
|
16
|
+
# This AST node's [line](rdoc-ref:GraphQL::Language::Nodes::AbstractNode#line) returns the first line, which may be the description.
|
|
17
|
+
#
|
|
18
|
+
# **Returns**
|
|
19
|
+
#
|
|
20
|
+
# - `Integer` — The first line of the definition (not the description)
|
|
21
|
+
#: Integer?
|
|
17
22
|
attr_reader :definition_line
|
|
18
23
|
|
|
19
24
|
def initialize(definition_line: nil, **_rest)
|
|
@@ -31,22 +36,32 @@ module GraphQL
|
|
|
31
36
|
end
|
|
32
37
|
end
|
|
33
38
|
|
|
39
|
+
#: String?
|
|
34
40
|
attr_reader :filename
|
|
35
41
|
|
|
42
|
+
#: -> Integer?
|
|
36
43
|
def line
|
|
37
44
|
@line ||= @source&.line_at(@pos)
|
|
38
45
|
end
|
|
39
46
|
|
|
47
|
+
#: -> Integer?
|
|
40
48
|
def col
|
|
41
49
|
@col ||= @source&.column_at(@pos)
|
|
42
50
|
end
|
|
43
51
|
|
|
52
|
+
#: -> Integer?
|
|
44
53
|
def definition_line
|
|
45
54
|
@definition_line ||= (@source && @definition_pos) ? @source.line_at(@definition_pos) : nil
|
|
46
55
|
end
|
|
47
56
|
|
|
48
57
|
# Value equality
|
|
49
|
-
#
|
|
58
|
+
#
|
|
59
|
+
# **Returns**
|
|
60
|
+
#
|
|
61
|
+
# - `Boolean` — True if `self` is equivalent to `other`
|
|
62
|
+
#
|
|
63
|
+
# :call-seq:
|
|
64
|
+
# ==(other) -> bool
|
|
50
65
|
def ==(other)
|
|
51
66
|
return true if equal?(other)
|
|
52
67
|
other.kind_of?(self.class) &&
|
|
@@ -56,12 +71,24 @@ module GraphQL
|
|
|
56
71
|
|
|
57
72
|
NO_CHILDREN = GraphQL::EmptyObjects::EMPTY_ARRAY
|
|
58
73
|
|
|
59
|
-
#
|
|
74
|
+
# **Returns**
|
|
75
|
+
#
|
|
76
|
+
# - `Array<GraphQL::Language::Nodes::AbstractNode>` — all nodes in the tree below this one
|
|
77
|
+
#
|
|
78
|
+
# :call-seq:
|
|
79
|
+
# children() -> Array[GraphQL::Language::Nodes::AbstractNode]
|
|
80
|
+
#: -> Array[AbstractNode]
|
|
60
81
|
def children
|
|
61
82
|
NO_CHILDREN
|
|
62
83
|
end
|
|
63
84
|
|
|
64
|
-
#
|
|
85
|
+
# **Returns**
|
|
86
|
+
#
|
|
87
|
+
# - `Array<Integer, Float, String, Boolean, Array>` — Scalar values attached to this node
|
|
88
|
+
#
|
|
89
|
+
# :call-seq:
|
|
90
|
+
# scalars() -> Array[Integer | Float | String | bool | Array]
|
|
91
|
+
#: -> Array[untyped]
|
|
65
92
|
def scalars
|
|
66
93
|
NO_CHILDREN
|
|
67
94
|
end
|
|
@@ -77,10 +104,24 @@ module GraphQL
|
|
|
77
104
|
self.class.children_method_name
|
|
78
105
|
end
|
|
79
106
|
|
|
107
|
+
# Built-in node classes override this with a literal Symbol.
|
|
108
|
+
#
|
|
109
|
+
# **Returns**
|
|
110
|
+
#
|
|
111
|
+
# - `Symbol` — the method that GraphQL::Language::Visitor calls for this node
|
|
112
|
+
#
|
|
113
|
+
# :call-seq:
|
|
114
|
+
# visit_method() -> Symbol
|
|
115
|
+
def visit_method
|
|
116
|
+
self.class.visit_method
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
#: -> [Integer?, Integer?]
|
|
80
120
|
def position
|
|
81
121
|
[line, col]
|
|
82
122
|
end
|
|
83
123
|
|
|
124
|
+
#: (?printer: untyped) -> String
|
|
84
125
|
def to_query_string(printer: GraphQL::Language::Printer.new)
|
|
85
126
|
if printer.is_a?(GraphQL::Language::Printer)
|
|
86
127
|
if frozen?
|
|
@@ -94,8 +135,17 @@ module GraphQL
|
|
|
94
135
|
end
|
|
95
136
|
|
|
96
137
|
# This creates a copy of `self`, with `new_options` applied.
|
|
97
|
-
#
|
|
98
|
-
#
|
|
138
|
+
#
|
|
139
|
+
# **Parameters**
|
|
140
|
+
#
|
|
141
|
+
# - `new_options` (`Hash`)
|
|
142
|
+
#
|
|
143
|
+
# **Returns**
|
|
144
|
+
#
|
|
145
|
+
# - `AbstractNode` — a shallow copy of `self`
|
|
146
|
+
#
|
|
147
|
+
# :call-seq:
|
|
148
|
+
# merge(Hash new_options) -> AbstractNode
|
|
99
149
|
def merge(new_options)
|
|
100
150
|
dup.merge!(new_options)
|
|
101
151
|
end
|
|
@@ -110,7 +160,7 @@ module GraphQL
|
|
|
110
160
|
# Copy that list, and replace `previous_child` with `new_child`
|
|
111
161
|
# in the list.
|
|
112
162
|
new_children = prev_children.dup
|
|
113
|
-
prev_idx = new_children.index(previous_child)
|
|
163
|
+
prev_idx = new_children.index(previous_child) #: as Integer
|
|
114
164
|
new_children[prev_idx] = new_child
|
|
115
165
|
else
|
|
116
166
|
# Use the new value for the given attribute
|
|
@@ -145,9 +195,15 @@ module GraphQL
|
|
|
145
195
|
end
|
|
146
196
|
|
|
147
197
|
class << self
|
|
148
|
-
#
|
|
198
|
+
# **Returns**
|
|
199
|
+
#
|
|
200
|
+
# - `Symbol` — the method that GraphQL::Language::Visitor calls for this kind of node
|
|
201
|
+
#: Symbol?
|
|
202
|
+
attr_reader :visit_method
|
|
149
203
|
|
|
150
|
-
|
|
204
|
+
attr_accessor :children_method_name
|
|
205
|
+
|
|
206
|
+
# Add a default `.visit_method` and `.children_method_name` using the class name
|
|
151
207
|
def inherited(child_class)
|
|
152
208
|
super
|
|
153
209
|
name_underscored = child_class.name
|
|
@@ -155,227 +211,157 @@ module GraphQL
|
|
|
155
211
|
.gsub(/([a-z])([A-Z])/,'\1_\2') # insert underscores
|
|
156
212
|
.downcase # remove caps
|
|
157
213
|
|
|
158
|
-
child_class.
|
|
159
|
-
|
|
160
|
-
:on_#{name_underscored}
|
|
161
|
-
end
|
|
162
|
-
|
|
163
|
-
class << self
|
|
164
|
-
attr_accessor :children_method_name
|
|
165
|
-
|
|
166
|
-
def visit_method
|
|
167
|
-
:on_#{name_underscored}
|
|
168
|
-
end
|
|
169
|
-
end
|
|
170
|
-
self.children_method_name = :#{name_underscored}s
|
|
171
|
-
RUBY
|
|
214
|
+
child_class.instance_variable_set(:@visit_method, :"on_#{name_underscored}")
|
|
215
|
+
child_class.children_method_name = :"#{name_underscored}s"
|
|
172
216
|
end
|
|
173
217
|
|
|
218
|
+
# **Returns**
|
|
219
|
+
#
|
|
220
|
+
# - `Hash{Symbol => Class, nil}, nil` — child reader methods and the kind of node each one returns, if known
|
|
221
|
+
#
|
|
222
|
+
# :call-seq:
|
|
223
|
+
# children_of_type() -> Hash[Symbol, Class | nil] | nil
|
|
174
224
|
def children_of_type
|
|
175
225
|
@children_methods
|
|
176
226
|
end
|
|
227
|
+
end
|
|
228
|
+
end
|
|
177
229
|
|
|
178
|
-
|
|
230
|
+
# Base class for non-null type names and list type names
|
|
231
|
+
class WrapperType < AbstractNode
|
|
232
|
+
def visit_method
|
|
233
|
+
:on_wrapper_type
|
|
234
|
+
end
|
|
179
235
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
# - Add a reader for these children
|
|
183
|
-
# - Add a persistent update method to add a child
|
|
184
|
-
# - Generate a `#children` method
|
|
185
|
-
def children_methods(children_of_type)
|
|
186
|
-
if defined?(@children_methods)
|
|
187
|
-
raise "Can't re-call .children_methods for #{self} (already have: #{@children_methods})"
|
|
188
|
-
else
|
|
189
|
-
@children_methods = children_of_type
|
|
190
|
-
end
|
|
236
|
+
#: TypeName | ListType | NonNullType
|
|
237
|
+
attr_reader :of_type
|
|
191
238
|
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
else
|
|
239
|
+
def scalars
|
|
240
|
+
@scalars ||= [@of_type].freeze
|
|
241
|
+
end
|
|
196
242
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
# Singular method: create a node with these options
|
|
207
|
-
# and return a new `self` which includes that node in this list.
|
|
208
|
-
def merge_#{method_name.to_s.sub(/s$/, "")}(**node_opts)
|
|
209
|
-
merge(#{method_name}: #{method_name} + [#{node_type.name}.new(**node_opts)])
|
|
210
|
-
end
|
|
211
|
-
RUBY
|
|
212
|
-
end
|
|
213
|
-
end
|
|
214
|
-
|
|
215
|
-
if children_of_type.size == 1
|
|
216
|
-
module_eval <<-RUBY, __FILE__, __LINE__
|
|
217
|
-
alias :children #{children_of_type.keys.first}
|
|
218
|
-
RUBY
|
|
219
|
-
else
|
|
220
|
-
module_eval <<-RUBY, __FILE__, __LINE__
|
|
221
|
-
def children
|
|
222
|
-
@children ||= begin
|
|
223
|
-
if #{children_of_type.keys.map { |k| "@#{k}.any?" }.join(" || ")}
|
|
224
|
-
new_children = []
|
|
225
|
-
#{children_of_type.keys.map { |k| "new_children.concat(@#{k})" }.join("; ")}
|
|
226
|
-
new_children.freeze
|
|
227
|
-
new_children
|
|
228
|
-
else
|
|
229
|
-
NO_CHILDREN
|
|
230
|
-
end
|
|
231
|
-
end
|
|
232
|
-
end
|
|
233
|
-
RUBY
|
|
234
|
-
end
|
|
235
|
-
end
|
|
243
|
+
#: (?of_type: untyped, ?line: Integer?, ?col: Integer?, ?pos: Integer?, ?filename: String?, ?source: untyped) -> void
|
|
244
|
+
def initialize(of_type: nil, line: nil, col: nil, pos: nil, filename: nil, source: nil)
|
|
245
|
+
@line = line
|
|
246
|
+
@col = col
|
|
247
|
+
@pos = pos
|
|
248
|
+
@filename = filename
|
|
249
|
+
@source = source
|
|
250
|
+
@of_type = of_type
|
|
251
|
+
end
|
|
236
252
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
generate_initialize
|
|
241
|
-
else
|
|
242
|
-
# This method was defined manually
|
|
243
|
-
end
|
|
244
|
-
else
|
|
245
|
-
raise "Can't generate_initialize because scalar_methods wasn't called; call it before children_methods"
|
|
246
|
-
end
|
|
247
|
-
end
|
|
253
|
+
def self.from_a(filename, line, col, of_type, comment: nil)
|
|
254
|
+
self.new(filename: filename, line: line, col: col, of_type: of_type)
|
|
255
|
+
end
|
|
248
256
|
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
@scalar_methods = method_names
|
|
257
|
-
end
|
|
257
|
+
def marshal_dump
|
|
258
|
+
[
|
|
259
|
+
line, col, # use methods here to force them to be calculated
|
|
260
|
+
@filename,
|
|
261
|
+
@of_type,
|
|
262
|
+
]
|
|
263
|
+
end
|
|
258
264
|
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
else
|
|
263
|
-
module_eval <<-RUBY, __FILE__, __LINE__
|
|
264
|
-
# add readers for each scalar
|
|
265
|
-
attr_reader #{method_names.map { |m| ":#{m}"}.join(", ")}
|
|
266
|
-
|
|
267
|
-
def scalars
|
|
268
|
-
@scalars ||= [#{method_names.map { |k| "@#{k}" }.join(", ")}].freeze
|
|
269
|
-
end
|
|
270
|
-
RUBY
|
|
271
|
-
end
|
|
272
|
-
end
|
|
265
|
+
def marshal_load(values)
|
|
266
|
+
@line, @col, @filename, @of_type = values
|
|
267
|
+
end
|
|
273
268
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
"col: nil",
|
|
277
|
-
"pos: nil",
|
|
278
|
-
"filename: nil",
|
|
279
|
-
"source: nil"
|
|
280
|
-
]
|
|
269
|
+
@children_methods = {}.freeze
|
|
270
|
+
end
|
|
281
271
|
|
|
282
|
-
|
|
272
|
+
# Base class for nodes whose only value is a name (no child nodes or other scalars)
|
|
273
|
+
class NameOnlyNode < AbstractNode
|
|
274
|
+
def visit_method
|
|
275
|
+
:on_name_only_node
|
|
276
|
+
end
|
|
283
277
|
|
|
284
|
-
|
|
285
|
-
|
|
278
|
+
#: String
|
|
279
|
+
attr_reader :name
|
|
286
280
|
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
if method_defined?(extra_method)
|
|
291
|
-
scalar_method_names += [extra_method]
|
|
292
|
-
end
|
|
293
|
-
end
|
|
281
|
+
def scalars
|
|
282
|
+
@scalars ||= [@name].freeze
|
|
283
|
+
end
|
|
294
284
|
|
|
295
|
-
|
|
285
|
+
#: (?name: untyped, ?line: Integer?, ?col: Integer?, ?pos: Integer?, ?filename: String?, ?source: untyped) -> void
|
|
286
|
+
def initialize(name: nil, line: nil, col: nil, pos: nil, filename: nil, source: nil)
|
|
287
|
+
@line = line
|
|
288
|
+
@col = col
|
|
289
|
+
@pos = pos
|
|
290
|
+
@filename = filename
|
|
291
|
+
@source = source
|
|
292
|
+
@name = name
|
|
293
|
+
end
|
|
296
294
|
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
# Rather than complicating this special case,
|
|
300
|
-
# let it be overridden (in field)
|
|
301
|
-
return
|
|
302
|
-
else
|
|
303
|
-
arguments = scalar_method_names.map { |m| "#{m}: nil"} +
|
|
304
|
-
children_method_names.map { |m| "#{m}: NO_CHILDREN" } +
|
|
305
|
-
DEFAULT_INITIALIZE_OPTIONS
|
|
306
|
-
|
|
307
|
-
# Intern descriptions so identical strings across SDL documents share one frozen object.
|
|
308
|
-
assignments = scalar_method_names.map { |m| m == :description ? "@#{m} = #{m} && -#{m}" : "@#{m} = #{m}" } +
|
|
309
|
-
children_method_names.map { |m| "@#{m} = #{m}.freeze" }
|
|
310
|
-
|
|
311
|
-
if name.end_with?("Definition") && name != "FragmentDefinition"
|
|
312
|
-
arguments << "definition_pos: nil"
|
|
313
|
-
assignments << "@definition_pos = definition_pos"
|
|
314
|
-
end
|
|
315
|
-
|
|
316
|
-
keywords = scalar_method_names.map { |m| "#{m}: #{m}"} +
|
|
317
|
-
children_method_names.map { |m| "#{m}: #{m}" }
|
|
318
|
-
|
|
319
|
-
ignored_keywords = IGNORED_MARSHALLING_KEYWORDS.map do |keyword|
|
|
320
|
-
"#{keyword.to_s}: nil"
|
|
321
|
-
end
|
|
322
|
-
|
|
323
|
-
marshalling_method_names = all_method_names - IGNORED_MARSHALLING_KEYWORDS
|
|
324
|
-
|
|
325
|
-
module_eval <<-RUBY, __FILE__, __LINE__
|
|
326
|
-
def initialize(#{arguments.join(", ")})
|
|
327
|
-
@line = line
|
|
328
|
-
@col = col
|
|
329
|
-
@pos = pos
|
|
330
|
-
@filename = filename
|
|
331
|
-
@source = source
|
|
332
|
-
#{assignments.join("\n")}
|
|
333
|
-
end
|
|
334
|
-
|
|
335
|
-
def self.from_a(filename, line, col, #{marshalling_method_names.join(", ")}, #{ignored_keywords.join(", ")})
|
|
336
|
-
self.new(filename: filename, line: line, col: col, #{keywords.join(", ")})
|
|
337
|
-
end
|
|
338
|
-
|
|
339
|
-
def marshal_dump
|
|
340
|
-
[
|
|
341
|
-
line, col, # use methods here to force them to be calculated
|
|
342
|
-
@filename,
|
|
343
|
-
#{marshalling_method_names.map { |n| "@#{n}," }.join}
|
|
344
|
-
]
|
|
345
|
-
end
|
|
346
|
-
|
|
347
|
-
def marshal_load(values)
|
|
348
|
-
@line, @col, @filename #{marshalling_method_names.map { |n| ", @#{n}"}.join} = values
|
|
349
|
-
end
|
|
350
|
-
RUBY
|
|
351
|
-
end
|
|
352
|
-
end
|
|
353
|
-
# rubocop:enable Development/NoEvalCop
|
|
295
|
+
def self.from_a(filename, line, col, name, comment: nil)
|
|
296
|
+
self.new(filename: filename, line: line, col: col, name: name)
|
|
354
297
|
end
|
|
355
|
-
end
|
|
356
298
|
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
299
|
+
def marshal_dump
|
|
300
|
+
[
|
|
301
|
+
line, col, # use methods here to force them to be calculated
|
|
302
|
+
@filename,
|
|
303
|
+
@name,
|
|
304
|
+
]
|
|
305
|
+
end
|
|
362
306
|
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
307
|
+
def marshal_load(values)
|
|
308
|
+
@line, @col, @filename, @name = values
|
|
309
|
+
end
|
|
310
|
+
|
|
311
|
+
@children_methods = {}.freeze
|
|
367
312
|
end
|
|
368
313
|
|
|
369
314
|
# A key-value pair for a field's inputs
|
|
370
315
|
class Argument < AbstractNode
|
|
371
|
-
|
|
372
|
-
|
|
316
|
+
def visit_method
|
|
317
|
+
:on_argument
|
|
318
|
+
end
|
|
319
|
+
|
|
320
|
+
# **Returns**
|
|
321
|
+
#
|
|
322
|
+
# - `String` — the key for this argument
|
|
323
|
+
#: String
|
|
324
|
+
attr_reader :name
|
|
325
|
+
|
|
326
|
+
# **Returns**
|
|
327
|
+
#
|
|
328
|
+
# - `String, Float, Integer, Boolean, Array, InputObject, VariableIdentifier, Enum, NullValue` — The value passed for this key
|
|
329
|
+
#: untyped
|
|
330
|
+
attr_reader :value
|
|
331
|
+
|
|
332
|
+
def scalars
|
|
333
|
+
@scalars ||= [@name, @value].freeze
|
|
334
|
+
end
|
|
335
|
+
|
|
336
|
+
#: (?name: untyped, ?value: untyped, ?line: Integer?, ?col: Integer?, ?pos: Integer?, ?filename: String?, ?source: untyped) -> void
|
|
337
|
+
def initialize(name: nil, value: nil, line: nil, col: nil, pos: nil, filename: nil, source: nil)
|
|
338
|
+
@line = line
|
|
339
|
+
@col = col
|
|
340
|
+
@pos = pos
|
|
341
|
+
@filename = filename
|
|
342
|
+
@source = source
|
|
343
|
+
@name = name
|
|
344
|
+
@value = value
|
|
345
|
+
end
|
|
373
346
|
|
|
374
|
-
|
|
375
|
-
|
|
347
|
+
def self.from_a(filename, line, col, name, value, comment: nil)
|
|
348
|
+
self.new(filename: filename, line: line, col: col, name: name, value: value)
|
|
349
|
+
end
|
|
350
|
+
|
|
351
|
+
def marshal_dump
|
|
352
|
+
[
|
|
353
|
+
line, col, # use methods here to force them to be calculated
|
|
354
|
+
@filename,
|
|
355
|
+
@name,
|
|
356
|
+
@value,
|
|
357
|
+
]
|
|
358
|
+
end
|
|
359
|
+
|
|
360
|
+
def marshal_load(values)
|
|
361
|
+
@line, @col, @filename, @name, @value = values
|
|
362
|
+
end
|
|
376
363
|
|
|
377
|
-
|
|
378
|
-
# @return [String, Float, Integer, Boolean, Array, InputObject, VariableIdentifier] The value passed for this key
|
|
364
|
+
@children_methods = {}.freeze
|
|
379
365
|
|
|
380
366
|
def children
|
|
381
367
|
@children ||= Array(value).flatten.tap { _1.select! { |v| v.is_a?(AbstractNode) } }
|
|
@@ -383,33 +369,171 @@ module GraphQL
|
|
|
383
369
|
end
|
|
384
370
|
|
|
385
371
|
class Directive < AbstractNode
|
|
386
|
-
|
|
387
|
-
|
|
372
|
+
def visit_method
|
|
373
|
+
:on_directive
|
|
374
|
+
end
|
|
375
|
+
|
|
376
|
+
#: String
|
|
377
|
+
attr_reader :name
|
|
378
|
+
|
|
379
|
+
def scalars
|
|
380
|
+
@scalars ||= [@name].freeze
|
|
381
|
+
end
|
|
382
|
+
|
|
383
|
+
#: Array[Argument]
|
|
384
|
+
attr_reader :arguments
|
|
385
|
+
|
|
386
|
+
def merge_argument(**node_opts)
|
|
387
|
+
merge(arguments: arguments + [GraphQL::Language::Nodes::Argument.new(**node_opts)])
|
|
388
|
+
end
|
|
389
|
+
|
|
390
|
+
alias :children arguments
|
|
391
|
+
|
|
392
|
+
#: (?name: untyped, ?arguments: Array[Argument], ?line: Integer?, ?col: Integer?, ?pos: Integer?, ?filename: String?, ?source: untyped) -> void
|
|
393
|
+
def initialize(name: nil, arguments: NO_CHILDREN, line: nil, col: nil, pos: nil, filename: nil, source: nil)
|
|
394
|
+
@line = line
|
|
395
|
+
@col = col
|
|
396
|
+
@pos = pos
|
|
397
|
+
@filename = filename
|
|
398
|
+
@source = source
|
|
399
|
+
@name = name
|
|
400
|
+
@arguments = arguments.freeze
|
|
401
|
+
end
|
|
402
|
+
|
|
403
|
+
def self.from_a(filename, line, col, name, arguments, comment: nil)
|
|
404
|
+
self.new(filename: filename, line: line, col: col, name: name, arguments: arguments)
|
|
405
|
+
end
|
|
406
|
+
|
|
407
|
+
def marshal_dump
|
|
408
|
+
[
|
|
409
|
+
line, col, # use methods here to force them to be calculated
|
|
410
|
+
@filename,
|
|
411
|
+
@name,
|
|
412
|
+
@arguments,
|
|
413
|
+
]
|
|
414
|
+
end
|
|
415
|
+
|
|
416
|
+
def marshal_load(values)
|
|
417
|
+
@line, @col, @filename, @name, @arguments = values
|
|
418
|
+
end
|
|
419
|
+
|
|
420
|
+
@children_methods = {
|
|
421
|
+
arguments: GraphQL::Language::Nodes::Argument,
|
|
422
|
+
}.freeze
|
|
388
423
|
end
|
|
389
424
|
|
|
390
425
|
class DirectiveLocation < NameOnlyNode
|
|
426
|
+
def visit_method
|
|
427
|
+
:on_directive_location
|
|
428
|
+
end
|
|
391
429
|
end
|
|
392
430
|
|
|
393
431
|
class DirectiveDefinition < AbstractNode
|
|
432
|
+
def visit_method
|
|
433
|
+
:on_directive_definition
|
|
434
|
+
end
|
|
435
|
+
|
|
436
|
+
#: String?
|
|
394
437
|
attr_reader :description
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
438
|
+
#: String
|
|
439
|
+
attr_reader :name
|
|
440
|
+
#: bool
|
|
441
|
+
attr_reader :repeatable
|
|
442
|
+
|
|
443
|
+
def scalars
|
|
444
|
+
@scalars ||= [@name, @repeatable].freeze
|
|
445
|
+
end
|
|
446
|
+
|
|
447
|
+
#: Array[InputValueDefinition]
|
|
448
|
+
attr_reader :arguments
|
|
449
|
+
#: Array[DirectiveLocation]
|
|
450
|
+
attr_reader :locations
|
|
451
|
+
|
|
452
|
+
def merge_argument(**node_opts)
|
|
453
|
+
merge(arguments: arguments + [GraphQL::Language::Nodes::Argument.new(**node_opts)])
|
|
454
|
+
end
|
|
455
|
+
|
|
456
|
+
def merge_location(**node_opts)
|
|
457
|
+
merge(locations: locations + [GraphQL::Language::Nodes::DirectiveLocation.new(**node_opts)])
|
|
458
|
+
end
|
|
459
|
+
|
|
460
|
+
def children
|
|
461
|
+
@children ||= begin
|
|
462
|
+
if !@arguments.empty? || !@locations.empty?
|
|
463
|
+
new_children = []
|
|
464
|
+
new_children.concat(@arguments)
|
|
465
|
+
new_children.concat(@locations)
|
|
466
|
+
new_children.freeze
|
|
467
|
+
new_children
|
|
468
|
+
else
|
|
469
|
+
NO_CHILDREN
|
|
470
|
+
end
|
|
471
|
+
end
|
|
472
|
+
end
|
|
473
|
+
|
|
474
|
+
#: (?name: untyped, ?repeatable: untyped, ?description: untyped, ?arguments: Array[InputValueDefinition], ?locations: Array[DirectiveLocation], ?line: Integer?, ?col: Integer?, ?pos: Integer?, ?filename: String?, ?source: untyped, ?definition_pos: Integer?) -> void
|
|
475
|
+
def initialize(name: nil, repeatable: nil, description: nil, arguments: NO_CHILDREN, locations: NO_CHILDREN, line: nil, col: nil, pos: nil, filename: nil, source: nil, definition_pos: nil)
|
|
476
|
+
@line = line
|
|
477
|
+
@col = col
|
|
478
|
+
@pos = pos
|
|
479
|
+
@filename = filename
|
|
480
|
+
@source = source
|
|
481
|
+
@name = name
|
|
482
|
+
@repeatable = repeatable
|
|
483
|
+
@description = description && -description
|
|
484
|
+
@arguments = arguments.freeze
|
|
485
|
+
@locations = locations.freeze
|
|
486
|
+
@definition_pos = definition_pos
|
|
487
|
+
end
|
|
488
|
+
|
|
489
|
+
def self.from_a(filename, line, col, name, repeatable, description, arguments, locations, comment: nil) # rubocop:disable Metrics/ParameterLists
|
|
490
|
+
self.new(filename: filename, line: line, col: col, name: name, repeatable: repeatable, description: description, arguments: arguments, locations: locations)
|
|
491
|
+
end
|
|
492
|
+
|
|
493
|
+
def marshal_dump
|
|
494
|
+
[
|
|
495
|
+
line, col, # use methods here to force them to be calculated
|
|
496
|
+
@filename,
|
|
497
|
+
@name,
|
|
498
|
+
@repeatable,
|
|
499
|
+
@description,
|
|
500
|
+
@arguments,
|
|
501
|
+
@locations,
|
|
502
|
+
]
|
|
503
|
+
end
|
|
504
|
+
|
|
505
|
+
def marshal_load(values)
|
|
506
|
+
@line, @col, @filename, @name, @repeatable, @description, @arguments, @locations = values
|
|
507
|
+
end
|
|
508
|
+
|
|
509
|
+
@children_methods = {
|
|
510
|
+
arguments: GraphQL::Language::Nodes::Argument,
|
|
511
|
+
locations: GraphQL::Language::Nodes::DirectiveLocation,
|
|
512
|
+
}.freeze
|
|
400
513
|
self.children_method_name = :definitions
|
|
401
514
|
end
|
|
402
515
|
|
|
403
|
-
# An enum value. The string is available as
|
|
516
|
+
# An enum value. The string is available as `name`.
|
|
404
517
|
class Enum < NameOnlyNode
|
|
518
|
+
def visit_method
|
|
519
|
+
:on_enum
|
|
520
|
+
end
|
|
405
521
|
end
|
|
406
522
|
|
|
407
523
|
# A null value literal.
|
|
408
524
|
class NullValue < NameOnlyNode
|
|
525
|
+
def visit_method
|
|
526
|
+
:on_null_value
|
|
527
|
+
end
|
|
409
528
|
end
|
|
410
529
|
|
|
411
530
|
# A single selection in a GraphQL query.
|
|
412
531
|
class Field < AbstractNode
|
|
532
|
+
def visit_method
|
|
533
|
+
:on_field
|
|
534
|
+
end
|
|
535
|
+
|
|
536
|
+
#: (?name: untyped, ?arguments: Array[Argument]?, ?directives: Array[Directive]?, ?selections: (Array[Field | FragmentSpread | InlineFragment])?, ?field_alias: String?, ?line: Integer?, ?col: Integer?, ?pos: Integer?, ?filename: String?, ?source: untyped) -> void
|
|
413
537
|
def initialize(name: nil, arguments: NONE, directives: NONE, selections: NONE, field_alias: nil, line: nil, col: nil, pos: nil, filename: nil, source: nil)
|
|
414
538
|
@name = name
|
|
415
539
|
@arguments = arguments || NONE
|
|
@@ -436,12 +560,54 @@ module GraphQL
|
|
|
436
560
|
@line, @col, @filename, @name, @arguments, @directives, @selections, @alias = values
|
|
437
561
|
end
|
|
438
562
|
|
|
439
|
-
|
|
440
|
-
|
|
563
|
+
#: String
|
|
564
|
+
attr_reader :name
|
|
565
|
+
#: String?
|
|
566
|
+
attr_reader :alias
|
|
567
|
+
|
|
568
|
+
def scalars
|
|
569
|
+
@scalars ||= [@name, @alias].freeze
|
|
570
|
+
end
|
|
571
|
+
|
|
572
|
+
#: Array[Argument]
|
|
573
|
+
attr_reader :arguments
|
|
574
|
+
#: Array[Field | FragmentSpread | InlineFragment]
|
|
575
|
+
attr_reader :selections
|
|
576
|
+
#: Array[Directive]
|
|
577
|
+
attr_reader :directives
|
|
578
|
+
|
|
579
|
+
def merge_argument(**node_opts)
|
|
580
|
+
merge(arguments: arguments + [GraphQL::Language::Nodes::Argument.new(**node_opts)])
|
|
581
|
+
end
|
|
582
|
+
|
|
583
|
+
def merge_selection(**node_opts)
|
|
584
|
+
merge(selections: selections + [GraphQL::Language::Nodes::Field.new(**node_opts)])
|
|
585
|
+
end
|
|
586
|
+
|
|
587
|
+
def merge_directive(**node_opts)
|
|
588
|
+
merge(directives: directives + [GraphQL::Language::Nodes::Directive.new(**node_opts)])
|
|
589
|
+
end
|
|
590
|
+
|
|
591
|
+
def children
|
|
592
|
+
@children ||= begin
|
|
593
|
+
if !@arguments.empty? || !@selections.empty? || !@directives.empty?
|
|
594
|
+
new_children = []
|
|
595
|
+
new_children.concat(@arguments)
|
|
596
|
+
new_children.concat(@selections)
|
|
597
|
+
new_children.concat(@directives)
|
|
598
|
+
new_children.freeze
|
|
599
|
+
new_children
|
|
600
|
+
else
|
|
601
|
+
NO_CHILDREN
|
|
602
|
+
end
|
|
603
|
+
end
|
|
604
|
+
end
|
|
605
|
+
|
|
606
|
+
@children_methods = {
|
|
441
607
|
arguments: GraphQL::Language::Nodes::Argument,
|
|
442
608
|
selections: GraphQL::Language::Nodes::Field,
|
|
443
609
|
directives: GraphQL::Language::Nodes::Directive,
|
|
444
|
-
}
|
|
610
|
+
}.freeze
|
|
445
611
|
|
|
446
612
|
# Override this because default is `:fields`
|
|
447
613
|
self.children_method_name = :selections
|
|
@@ -449,6 +615,11 @@ module GraphQL
|
|
|
449
615
|
|
|
450
616
|
# A reusable fragment, defined at document-level.
|
|
451
617
|
class FragmentDefinition < AbstractNode
|
|
618
|
+
def visit_method
|
|
619
|
+
:on_fragment_definition
|
|
620
|
+
end
|
|
621
|
+
|
|
622
|
+
#: (?name: untyped, ?type: untyped, ?directives: Array[Directive], ?selections: Array[Field | FragmentSpread | InlineFragment], ?filename: String?, ?pos: Integer?, ?source: untyped, ?line: Integer?, ?col: Integer?) -> void
|
|
452
623
|
def initialize(name: nil, type: nil, directives: NONE, selections: NONE, filename: nil, pos: nil, source: nil, line: nil, col: nil)
|
|
453
624
|
@name = name
|
|
454
625
|
@type = type
|
|
@@ -473,99 +644,362 @@ module GraphQL
|
|
|
473
644
|
@line, @col, @filename, @name, @type, @directives, @selections = values
|
|
474
645
|
end
|
|
475
646
|
|
|
476
|
-
|
|
477
|
-
|
|
647
|
+
#: String
|
|
648
|
+
attr_reader :name
|
|
649
|
+
#: TypeName
|
|
650
|
+
attr_reader :type
|
|
651
|
+
|
|
652
|
+
def scalars
|
|
653
|
+
@scalars ||= [@name, @type].freeze
|
|
654
|
+
end
|
|
655
|
+
|
|
656
|
+
#: Array[Field | FragmentSpread | InlineFragment]
|
|
657
|
+
attr_reader :selections
|
|
658
|
+
#: Array[Directive]
|
|
659
|
+
attr_reader :directives
|
|
660
|
+
|
|
661
|
+
def merge_selection(**node_opts)
|
|
662
|
+
merge(selections: selections + [GraphQL::Language::Nodes::Field.new(**node_opts)])
|
|
663
|
+
end
|
|
664
|
+
|
|
665
|
+
def merge_directive(**node_opts)
|
|
666
|
+
merge(directives: directives + [GraphQL::Language::Nodes::Directive.new(**node_opts)])
|
|
667
|
+
end
|
|
668
|
+
|
|
669
|
+
def children
|
|
670
|
+
@children ||= begin
|
|
671
|
+
if !@selections.empty? || !@directives.empty?
|
|
672
|
+
new_children = []
|
|
673
|
+
new_children.concat(@selections)
|
|
674
|
+
new_children.concat(@directives)
|
|
675
|
+
new_children.freeze
|
|
676
|
+
new_children
|
|
677
|
+
else
|
|
678
|
+
NO_CHILDREN
|
|
679
|
+
end
|
|
680
|
+
end
|
|
681
|
+
end
|
|
682
|
+
|
|
683
|
+
@children_methods = {
|
|
478
684
|
selections: GraphQL::Language::Nodes::Field,
|
|
479
685
|
directives: GraphQL::Language::Nodes::Directive,
|
|
480
|
-
}
|
|
686
|
+
}.freeze
|
|
481
687
|
|
|
482
688
|
self.children_method_name = :definitions
|
|
483
689
|
end
|
|
484
690
|
|
|
485
691
|
# Application of a named fragment in a selection
|
|
486
692
|
class FragmentSpread < AbstractNode
|
|
487
|
-
|
|
488
|
-
|
|
693
|
+
def visit_method
|
|
694
|
+
:on_fragment_spread
|
|
695
|
+
end
|
|
489
696
|
|
|
490
|
-
|
|
697
|
+
# **Returns**
|
|
698
|
+
#
|
|
699
|
+
# - `String` — The identifier of the fragment to apply, corresponds with [FragmentDefinition#name](rdoc-ref:FragmentDefinition#name)
|
|
700
|
+
#: String
|
|
701
|
+
attr_reader :name
|
|
491
702
|
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
703
|
+
def scalars
|
|
704
|
+
@scalars ||= [@name].freeze
|
|
705
|
+
end
|
|
495
706
|
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
scalar_methods :type
|
|
499
|
-
children_methods({
|
|
500
|
-
directives: GraphQL::Language::Nodes::Directive,
|
|
501
|
-
selections: GraphQL::Language::Nodes::Field,
|
|
502
|
-
})
|
|
707
|
+
#: Array[Directive]
|
|
708
|
+
attr_reader :directives
|
|
503
709
|
|
|
504
|
-
|
|
710
|
+
def merge_directive(**node_opts)
|
|
711
|
+
merge(directives: directives + [GraphQL::Language::Nodes::Directive.new(**node_opts)])
|
|
712
|
+
end
|
|
505
713
|
|
|
506
|
-
|
|
507
|
-
# @return [String, nil] Name of the type this fragment applies to, or `nil` if this fragment applies to any type
|
|
508
|
-
end
|
|
714
|
+
alias :children directives
|
|
509
715
|
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
716
|
+
#: (?name: untyped, ?directives: Array[Directive], ?line: Integer?, ?col: Integer?, ?pos: Integer?, ?filename: String?, ?source: untyped) -> void
|
|
717
|
+
def initialize(name: nil, directives: NO_CHILDREN, line: nil, col: nil, pos: nil, filename: nil, source: nil)
|
|
718
|
+
@line = line
|
|
719
|
+
@col = col
|
|
720
|
+
@pos = pos
|
|
721
|
+
@filename = filename
|
|
722
|
+
@source = source
|
|
723
|
+
@name = name
|
|
724
|
+
@directives = directives.freeze
|
|
725
|
+
end
|
|
514
726
|
|
|
515
|
-
|
|
516
|
-
|
|
727
|
+
def self.from_a(filename, line, col, name, directives, comment: nil)
|
|
728
|
+
self.new(filename: filename, line: line, col: col, name: name, directives: directives)
|
|
729
|
+
end
|
|
517
730
|
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
731
|
+
def marshal_dump
|
|
732
|
+
[
|
|
733
|
+
line, col, # use methods here to force them to be calculated
|
|
734
|
+
@filename,
|
|
735
|
+
@name,
|
|
736
|
+
@directives,
|
|
737
|
+
]
|
|
525
738
|
end
|
|
526
739
|
|
|
527
|
-
|
|
740
|
+
def marshal_load(values)
|
|
741
|
+
@line, @col, @filename, @name, @directives = values
|
|
742
|
+
end
|
|
528
743
|
|
|
529
|
-
|
|
744
|
+
@children_methods = {
|
|
745
|
+
directives: GraphQL::Language::Nodes::Directive,
|
|
746
|
+
}.freeze
|
|
530
747
|
|
|
531
|
-
|
|
532
|
-
case value
|
|
533
|
-
when InputObject
|
|
534
|
-
value.to_h
|
|
535
|
-
when Array
|
|
536
|
-
value.map do |v|
|
|
537
|
-
serialize_value_for_hash v
|
|
538
|
-
end
|
|
539
|
-
when Enum
|
|
540
|
-
value.name
|
|
541
|
-
when NullValue
|
|
542
|
-
nil
|
|
543
|
-
else
|
|
544
|
-
value
|
|
545
|
-
end
|
|
546
|
-
end
|
|
748
|
+
self.children_method_name = :selections
|
|
547
749
|
end
|
|
548
750
|
|
|
549
|
-
#
|
|
550
|
-
class
|
|
551
|
-
|
|
751
|
+
# An unnamed fragment, defined directly in the query with `... { }`
|
|
752
|
+
class InlineFragment < AbstractNode
|
|
753
|
+
def visit_method
|
|
754
|
+
:on_inline_fragment
|
|
755
|
+
end
|
|
552
756
|
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
757
|
+
# **Returns**
|
|
758
|
+
#
|
|
759
|
+
# - `TypeName, nil` — Name of the type this fragment applies to, or `nil` if this fragment applies to any type
|
|
760
|
+
#: TypeName?
|
|
761
|
+
attr_reader :type
|
|
556
762
|
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
children_methods(directives: Directive)
|
|
561
|
-
# @!attribute default_value
|
|
562
|
-
# @return [String, Integer, Float, Boolean, Array, NullValue] A Ruby value to use if no other value is provided
|
|
763
|
+
def scalars
|
|
764
|
+
@scalars ||= [@type].freeze
|
|
765
|
+
end
|
|
563
766
|
|
|
564
|
-
|
|
565
|
-
|
|
767
|
+
#: Array[Directive]
|
|
768
|
+
attr_reader :directives
|
|
769
|
+
#: Array[Field | FragmentSpread | InlineFragment]
|
|
770
|
+
attr_reader :selections
|
|
566
771
|
|
|
567
|
-
|
|
568
|
-
|
|
772
|
+
def merge_directive(**node_opts)
|
|
773
|
+
merge(directives: directives + [GraphQL::Language::Nodes::Directive.new(**node_opts)])
|
|
774
|
+
end
|
|
775
|
+
|
|
776
|
+
def merge_selection(**node_opts)
|
|
777
|
+
merge(selections: selections + [GraphQL::Language::Nodes::Field.new(**node_opts)])
|
|
778
|
+
end
|
|
779
|
+
|
|
780
|
+
def children
|
|
781
|
+
@children ||= begin
|
|
782
|
+
if !@directives.empty? || !@selections.empty?
|
|
783
|
+
new_children = []
|
|
784
|
+
new_children.concat(@directives)
|
|
785
|
+
new_children.concat(@selections)
|
|
786
|
+
new_children.freeze
|
|
787
|
+
new_children
|
|
788
|
+
else
|
|
789
|
+
NO_CHILDREN
|
|
790
|
+
end
|
|
791
|
+
end
|
|
792
|
+
end
|
|
793
|
+
|
|
794
|
+
#: (?type: untyped, ?directives: Array[Directive], ?selections: Array[Field | FragmentSpread | InlineFragment], ?line: Integer?, ?col: Integer?, ?pos: Integer?, ?filename: String?, ?source: untyped) -> void
|
|
795
|
+
def initialize(type: nil, directives: NO_CHILDREN, selections: NO_CHILDREN, line: nil, col: nil, pos: nil, filename: nil, source: nil)
|
|
796
|
+
@line = line
|
|
797
|
+
@col = col
|
|
798
|
+
@pos = pos
|
|
799
|
+
@filename = filename
|
|
800
|
+
@source = source
|
|
801
|
+
@type = type
|
|
802
|
+
@directives = directives.freeze
|
|
803
|
+
@selections = selections.freeze
|
|
804
|
+
end
|
|
805
|
+
|
|
806
|
+
def self.from_a(filename, line, col, type, directives, selections, comment: nil)
|
|
807
|
+
self.new(filename: filename, line: line, col: col, type: type, directives: directives, selections: selections)
|
|
808
|
+
end
|
|
809
|
+
|
|
810
|
+
def marshal_dump
|
|
811
|
+
[
|
|
812
|
+
line, col, # use methods here to force them to be calculated
|
|
813
|
+
@filename,
|
|
814
|
+
@type,
|
|
815
|
+
@directives,
|
|
816
|
+
@selections,
|
|
817
|
+
]
|
|
818
|
+
end
|
|
819
|
+
|
|
820
|
+
def marshal_load(values)
|
|
821
|
+
@line, @col, @filename, @type, @directives, @selections = values
|
|
822
|
+
end
|
|
823
|
+
|
|
824
|
+
@children_methods = {
|
|
825
|
+
directives: GraphQL::Language::Nodes::Directive,
|
|
826
|
+
selections: GraphQL::Language::Nodes::Field,
|
|
827
|
+
}.freeze
|
|
828
|
+
|
|
829
|
+
self.children_method_name = :selections
|
|
830
|
+
end
|
|
831
|
+
|
|
832
|
+
# A collection of key-value inputs which may be a field argument
|
|
833
|
+
class InputObject < AbstractNode
|
|
834
|
+
def visit_method
|
|
835
|
+
:on_input_object
|
|
836
|
+
end
|
|
837
|
+
|
|
838
|
+
# **Returns**
|
|
839
|
+
#
|
|
840
|
+
# - `Array<Nodes::Argument>` — A list of key-value pairs inside this input object
|
|
841
|
+
#: Array[Argument]
|
|
842
|
+
attr_reader :arguments
|
|
843
|
+
|
|
844
|
+
def merge_argument(**node_opts)
|
|
845
|
+
merge(arguments: arguments + [GraphQL::Language::Nodes::Argument.new(**node_opts)])
|
|
846
|
+
end
|
|
847
|
+
|
|
848
|
+
alias :children arguments
|
|
849
|
+
|
|
850
|
+
#: (?arguments: Array[Argument], ?line: Integer?, ?col: Integer?, ?pos: Integer?, ?filename: String?, ?source: untyped) -> void
|
|
851
|
+
def initialize(arguments: NO_CHILDREN, line: nil, col: nil, pos: nil, filename: nil, source: nil)
|
|
852
|
+
@line = line
|
|
853
|
+
@col = col
|
|
854
|
+
@pos = pos
|
|
855
|
+
@filename = filename
|
|
856
|
+
@source = source
|
|
857
|
+
@arguments = arguments.freeze
|
|
858
|
+
end
|
|
859
|
+
|
|
860
|
+
def self.from_a(filename, line, col, arguments, comment: nil)
|
|
861
|
+
self.new(filename: filename, line: line, col: col, arguments: arguments)
|
|
862
|
+
end
|
|
863
|
+
|
|
864
|
+
def marshal_dump
|
|
865
|
+
[
|
|
866
|
+
line, col, # use methods here to force them to be calculated
|
|
867
|
+
@filename,
|
|
868
|
+
@arguments,
|
|
869
|
+
]
|
|
870
|
+
end
|
|
871
|
+
|
|
872
|
+
def marshal_load(values)
|
|
873
|
+
@line, @col, @filename, @arguments = values
|
|
874
|
+
end
|
|
875
|
+
|
|
876
|
+
@children_methods = {
|
|
877
|
+
arguments: GraphQL::Language::Nodes::Argument,
|
|
878
|
+
}.freeze
|
|
879
|
+
|
|
880
|
+
# **Returns**
|
|
881
|
+
#
|
|
882
|
+
# - `Hash<String, Any>` — Recursively turn this input object into a Ruby Hash
|
|
883
|
+
#
|
|
884
|
+
# :call-seq:
|
|
885
|
+
# to_h(options=) -> Hash[String, Any]
|
|
886
|
+
def to_h(options={})
|
|
887
|
+
arguments.inject({}) do |memo, pair|
|
|
888
|
+
v = pair.value
|
|
889
|
+
memo[pair.name] = serialize_value_for_hash v
|
|
890
|
+
memo
|
|
891
|
+
end
|
|
892
|
+
end
|
|
893
|
+
|
|
894
|
+
self.children_method_name = :value
|
|
895
|
+
|
|
896
|
+
private
|
|
897
|
+
|
|
898
|
+
def serialize_value_for_hash(value)
|
|
899
|
+
case value
|
|
900
|
+
when InputObject
|
|
901
|
+
value.to_h
|
|
902
|
+
when Array
|
|
903
|
+
value.map do |v|
|
|
904
|
+
serialize_value_for_hash v
|
|
905
|
+
end
|
|
906
|
+
when Enum
|
|
907
|
+
value.name
|
|
908
|
+
when NullValue
|
|
909
|
+
nil
|
|
910
|
+
else
|
|
911
|
+
value
|
|
912
|
+
end
|
|
913
|
+
end
|
|
914
|
+
end
|
|
915
|
+
|
|
916
|
+
# A list type definition, denoted with `[...]` (used for variable type definitions)
|
|
917
|
+
class ListType < WrapperType
|
|
918
|
+
def visit_method
|
|
919
|
+
:on_list_type
|
|
920
|
+
end
|
|
921
|
+
end
|
|
922
|
+
|
|
923
|
+
# A non-null type definition, denoted with `...!` (used for variable type definitions)
|
|
924
|
+
class NonNullType < WrapperType
|
|
925
|
+
def visit_method
|
|
926
|
+
:on_non_null_type
|
|
927
|
+
end
|
|
928
|
+
end
|
|
929
|
+
|
|
930
|
+
# An operation-level query variable
|
|
931
|
+
class VariableDefinition < AbstractNode
|
|
932
|
+
def visit_method
|
|
933
|
+
:on_variable_definition
|
|
934
|
+
end
|
|
935
|
+
|
|
936
|
+
# **Returns**
|
|
937
|
+
#
|
|
938
|
+
# - `String` — The identifier for this variable, _without_ `$`
|
|
939
|
+
#: String
|
|
940
|
+
attr_reader :name
|
|
941
|
+
|
|
942
|
+
# **Returns**
|
|
943
|
+
#
|
|
944
|
+
# - `TypeName, NonNullType, ListType` — The expected type of this value
|
|
945
|
+
#: TypeName | ListType | NonNullType
|
|
946
|
+
attr_reader :type
|
|
947
|
+
|
|
948
|
+
# **Returns**
|
|
949
|
+
#
|
|
950
|
+
# - `String, Integer, Float, Boolean, Array, NullValue` — A Ruby value to use if no other value is provided
|
|
951
|
+
#: untyped
|
|
952
|
+
attr_reader :default_value
|
|
953
|
+
|
|
954
|
+
def scalars
|
|
955
|
+
@scalars ||= [@name, @type, @default_value].freeze
|
|
956
|
+
end
|
|
957
|
+
|
|
958
|
+
#: Array[Directive]
|
|
959
|
+
attr_reader :directives
|
|
960
|
+
|
|
961
|
+
def merge_directive(**node_opts)
|
|
962
|
+
merge(directives: directives + [GraphQL::Language::Nodes::Directive.new(**node_opts)])
|
|
963
|
+
end
|
|
964
|
+
|
|
965
|
+
alias :children directives
|
|
966
|
+
|
|
967
|
+
#: (?name: untyped, ?type: untyped, ?default_value: untyped, ?directives: Array[Directive], ?line: Integer?, ?col: Integer?, ?pos: Integer?, ?filename: String?, ?source: untyped, ?definition_pos: Integer?) -> void
|
|
968
|
+
def initialize(name: nil, type: nil, default_value: nil, directives: NO_CHILDREN, line: nil, col: nil, pos: nil, filename: nil, source: nil, definition_pos: nil)
|
|
969
|
+
@line = line
|
|
970
|
+
@col = col
|
|
971
|
+
@pos = pos
|
|
972
|
+
@filename = filename
|
|
973
|
+
@source = source
|
|
974
|
+
@name = name
|
|
975
|
+
@type = type
|
|
976
|
+
@default_value = default_value
|
|
977
|
+
@directives = directives.freeze
|
|
978
|
+
@definition_pos = definition_pos
|
|
979
|
+
end
|
|
980
|
+
|
|
981
|
+
def self.from_a(filename, line, col, name, type, default_value, directives, comment: nil) # rubocop:disable Metrics/ParameterLists
|
|
982
|
+
self.new(filename: filename, line: line, col: col, name: name, type: type, default_value: default_value, directives: directives)
|
|
983
|
+
end
|
|
984
|
+
|
|
985
|
+
def marshal_dump
|
|
986
|
+
[
|
|
987
|
+
line, col, # use methods here to force them to be calculated
|
|
988
|
+
@filename,
|
|
989
|
+
@name,
|
|
990
|
+
@type,
|
|
991
|
+
@default_value,
|
|
992
|
+
@directives,
|
|
993
|
+
]
|
|
994
|
+
end
|
|
995
|
+
|
|
996
|
+
def marshal_load(values)
|
|
997
|
+
@line, @col, @filename, @name, @type, @default_value, @directives = values
|
|
998
|
+
end
|
|
999
|
+
|
|
1000
|
+
@children_methods = {
|
|
1001
|
+
directives: GraphQL::Language::Nodes::Directive,
|
|
1002
|
+
}.freeze
|
|
569
1003
|
|
|
570
1004
|
self.children_method_name = :variables
|
|
571
1005
|
end
|
|
@@ -574,51 +1008,181 @@ module GraphQL
|
|
|
574
1008
|
# May be anonymous or named.
|
|
575
1009
|
# May be explicitly typed (eg `mutation { ... }`) or implicitly a query (eg `{ ... }`).
|
|
576
1010
|
class OperationDefinition < AbstractNode
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
1011
|
+
def visit_method
|
|
1012
|
+
:on_operation_definition
|
|
1013
|
+
end
|
|
1014
|
+
|
|
1015
|
+
# **Returns**
|
|
1016
|
+
#
|
|
1017
|
+
# - `String` — The root type for this operation: `"query"` (including implicit queries), `"mutation"` or `"subscription"`
|
|
1018
|
+
#: String
|
|
1019
|
+
attr_reader :operation_type
|
|
1020
|
+
|
|
1021
|
+
# **Returns**
|
|
1022
|
+
#
|
|
1023
|
+
# - `String, nil` — The name for this operation, or `nil` if unnamed
|
|
1024
|
+
#: String?
|
|
1025
|
+
attr_reader :name
|
|
1026
|
+
|
|
1027
|
+
def scalars
|
|
1028
|
+
@scalars ||= [@operation_type, @name].freeze
|
|
1029
|
+
end
|
|
1030
|
+
|
|
1031
|
+
# **Returns**
|
|
1032
|
+
#
|
|
1033
|
+
# - `Array<VariableDefinition>` — Variable $definitions for this operation
|
|
1034
|
+
#: Array[VariableDefinition]
|
|
1035
|
+
attr_reader :variables
|
|
1036
|
+
#: Array[Directive]
|
|
1037
|
+
attr_reader :directives
|
|
1038
|
+
|
|
1039
|
+
# **Returns**
|
|
1040
|
+
#
|
|
1041
|
+
# - `Array<Field, FragmentSpread, InlineFragment>` — Root-level fields on this operation
|
|
1042
|
+
#: Array[Field | FragmentSpread | InlineFragment]
|
|
1043
|
+
attr_reader :selections
|
|
1044
|
+
|
|
1045
|
+
def merge_variable(**node_opts)
|
|
1046
|
+
merge(variables: variables + [GraphQL::Language::Nodes::VariableDefinition.new(**node_opts)])
|
|
1047
|
+
end
|
|
1048
|
+
|
|
1049
|
+
def merge_directive(**node_opts)
|
|
1050
|
+
merge(directives: directives + [GraphQL::Language::Nodes::Directive.new(**node_opts)])
|
|
1051
|
+
end
|
|
1052
|
+
|
|
1053
|
+
def merge_selection(**node_opts)
|
|
1054
|
+
merge(selections: selections + [GraphQL::Language::Nodes::Field.new(**node_opts)])
|
|
1055
|
+
end
|
|
1056
|
+
|
|
1057
|
+
def children
|
|
1058
|
+
@children ||= begin
|
|
1059
|
+
if !@variables.empty? || !@directives.empty? || !@selections.empty?
|
|
1060
|
+
new_children = []
|
|
1061
|
+
new_children.concat(@variables)
|
|
1062
|
+
new_children.concat(@directives)
|
|
1063
|
+
new_children.concat(@selections)
|
|
1064
|
+
new_children.freeze
|
|
1065
|
+
new_children
|
|
1066
|
+
else
|
|
1067
|
+
NO_CHILDREN
|
|
1068
|
+
end
|
|
1069
|
+
end
|
|
1070
|
+
end
|
|
1071
|
+
|
|
1072
|
+
#: (?operation_type: untyped, ?name: untyped, ?variables: Array[VariableDefinition], ?directives: Array[Directive], ?selections: Array[Field | FragmentSpread | InlineFragment], ?line: Integer?, ?col: Integer?, ?pos: Integer?, ?filename: String?, ?source: untyped, ?definition_pos: Integer?) -> void
|
|
1073
|
+
def initialize(operation_type: nil, name: nil, variables: NO_CHILDREN, directives: NO_CHILDREN, selections: NO_CHILDREN, line: nil, col: nil, pos: nil, filename: nil, source: nil, definition_pos: nil)
|
|
1074
|
+
@line = line
|
|
1075
|
+
@col = col
|
|
1076
|
+
@pos = pos
|
|
1077
|
+
@filename = filename
|
|
1078
|
+
@source = source
|
|
1079
|
+
@operation_type = operation_type
|
|
1080
|
+
@name = name
|
|
1081
|
+
@variables = variables.freeze
|
|
1082
|
+
@directives = directives.freeze
|
|
1083
|
+
@selections = selections.freeze
|
|
1084
|
+
@definition_pos = definition_pos
|
|
1085
|
+
end
|
|
583
1086
|
|
|
584
|
-
#
|
|
585
|
-
|
|
1087
|
+
def self.from_a(filename, line, col, operation_type, name, variables, directives, selections, comment: nil) # rubocop:disable Metrics/ParameterLists
|
|
1088
|
+
self.new(filename: filename, line: line, col: col, operation_type: operation_type, name: name, variables: variables, directives: directives, selections: selections)
|
|
1089
|
+
end
|
|
586
1090
|
|
|
587
|
-
|
|
588
|
-
|
|
1091
|
+
def marshal_dump
|
|
1092
|
+
[
|
|
1093
|
+
line, col, # use methods here to force them to be calculated
|
|
1094
|
+
@filename,
|
|
1095
|
+
@operation_type,
|
|
1096
|
+
@name,
|
|
1097
|
+
@variables,
|
|
1098
|
+
@directives,
|
|
1099
|
+
@selections,
|
|
1100
|
+
]
|
|
1101
|
+
end
|
|
589
1102
|
|
|
590
|
-
|
|
591
|
-
|
|
1103
|
+
def marshal_load(values)
|
|
1104
|
+
@line, @col, @filename, @operation_type, @name, @variables, @directives, @selections = values
|
|
1105
|
+
end
|
|
592
1106
|
|
|
593
|
-
|
|
594
|
-
|
|
1107
|
+
@children_methods = {
|
|
1108
|
+
variables: GraphQL::Language::Nodes::VariableDefinition,
|
|
1109
|
+
directives: GraphQL::Language::Nodes::Directive,
|
|
1110
|
+
selections: GraphQL::Language::Nodes::Field,
|
|
1111
|
+
}.freeze
|
|
595
1112
|
|
|
596
1113
|
self.children_method_name = :definitions
|
|
597
1114
|
end
|
|
598
1115
|
|
|
599
1116
|
# This is the AST root for normal queries
|
|
600
1117
|
#
|
|
601
|
-
#
|
|
602
|
-
# document = GraphQL.parse(query_string)
|
|
1118
|
+
# **Examples**
|
|
603
1119
|
#
|
|
604
|
-
#
|
|
605
|
-
# document.to_query_string
|
|
606
|
-
# # { ... }
|
|
1120
|
+
# **Example: Deriving a document by parsing a string**
|
|
607
1121
|
#
|
|
608
|
-
#
|
|
609
|
-
#
|
|
610
|
-
#
|
|
611
|
-
# print_string("#{arg.name}: <HIDDEN>")
|
|
612
|
-
# end
|
|
613
|
-
# end
|
|
1122
|
+
# ```ruby
|
|
1123
|
+
# document = GraphQL.parse(query_string)
|
|
1124
|
+
# ```
|
|
614
1125
|
#
|
|
615
|
-
#
|
|
1126
|
+
# **Example: Creating a string from a document**
|
|
616
1127
|
#
|
|
1128
|
+
# ```ruby
|
|
1129
|
+
# document.to_query_string
|
|
1130
|
+
# # { ... }
|
|
1131
|
+
# ```
|
|
1132
|
+
#
|
|
1133
|
+
# **Example: Creating a custom string from a document**
|
|
1134
|
+
#
|
|
1135
|
+
# ```ruby
|
|
1136
|
+
# class VariableScrubber < GraphQL::Language::Printer
|
|
1137
|
+
# def print_argument(arg)
|
|
1138
|
+
# print_string("#{arg.name}: <HIDDEN>")
|
|
1139
|
+
# end
|
|
1140
|
+
# end
|
|
1141
|
+
#
|
|
1142
|
+
# document.to_query_string(printer: VariableScrubber.new)
|
|
1143
|
+
# ```
|
|
617
1144
|
class Document < AbstractNode
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
1145
|
+
def visit_method
|
|
1146
|
+
:on_document
|
|
1147
|
+
end
|
|
1148
|
+
|
|
1149
|
+
# **Returns**
|
|
1150
|
+
#
|
|
1151
|
+
# - `Array<OperationDefinition, FragmentDefinition, AbstractNode>` — top-level GraphQL units: operations or fragments
|
|
1152
|
+
#: Array[AbstractNode]
|
|
1153
|
+
attr_reader :definitions
|
|
1154
|
+
|
|
1155
|
+
alias :children definitions
|
|
1156
|
+
|
|
1157
|
+
#: (?definitions: Array[AbstractNode], ?line: Integer?, ?col: Integer?, ?pos: Integer?, ?filename: String?, ?source: untyped) -> void
|
|
1158
|
+
def initialize(definitions: NO_CHILDREN, line: nil, col: nil, pos: nil, filename: nil, source: nil)
|
|
1159
|
+
@line = line
|
|
1160
|
+
@col = col
|
|
1161
|
+
@pos = pos
|
|
1162
|
+
@filename = filename
|
|
1163
|
+
@source = source
|
|
1164
|
+
@definitions = definitions.freeze
|
|
1165
|
+
end
|
|
1166
|
+
|
|
1167
|
+
def self.from_a(filename, line, col, definitions, comment: nil)
|
|
1168
|
+
self.new(filename: filename, line: line, col: col, definitions: definitions)
|
|
1169
|
+
end
|
|
1170
|
+
|
|
1171
|
+
def marshal_dump
|
|
1172
|
+
[
|
|
1173
|
+
line, col, # use methods here to force them to be calculated
|
|
1174
|
+
@filename,
|
|
1175
|
+
@definitions,
|
|
1176
|
+
]
|
|
1177
|
+
end
|
|
1178
|
+
|
|
1179
|
+
def marshal_load(values)
|
|
1180
|
+
@line, @col, @filename, @definitions = values
|
|
1181
|
+
end
|
|
1182
|
+
|
|
1183
|
+
@children_methods = {
|
|
1184
|
+
definitions: nil,
|
|
1185
|
+
}.freeze
|
|
622
1186
|
|
|
623
1187
|
def slice_definition(name)
|
|
624
1188
|
GraphQL::Language::DefinitionSlice.slice(self, name)
|
|
@@ -627,177 +1191,1288 @@ module GraphQL
|
|
|
627
1191
|
|
|
628
1192
|
# A type name, used for variable definitions
|
|
629
1193
|
class TypeName < NameOnlyNode
|
|
1194
|
+
def visit_method
|
|
1195
|
+
:on_type_name
|
|
1196
|
+
end
|
|
630
1197
|
end
|
|
631
1198
|
|
|
632
1199
|
# Usage of a variable in a query. Name does _not_ include `$`.
|
|
633
1200
|
class VariableIdentifier < NameOnlyNode
|
|
1201
|
+
def visit_method
|
|
1202
|
+
:on_variable_identifier
|
|
1203
|
+
end
|
|
1204
|
+
|
|
634
1205
|
self.children_method_name = :value
|
|
635
1206
|
end
|
|
636
1207
|
|
|
637
1208
|
class SchemaDefinition < AbstractNode
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
})
|
|
642
|
-
self.children_method_name = :definitions
|
|
643
|
-
end
|
|
1209
|
+
def visit_method
|
|
1210
|
+
:on_schema_definition
|
|
1211
|
+
end
|
|
644
1212
|
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
end
|
|
1213
|
+
#: String?
|
|
1214
|
+
attr_reader :query
|
|
1215
|
+
#: String?
|
|
1216
|
+
attr_reader :mutation
|
|
1217
|
+
#: String?
|
|
1218
|
+
attr_reader :subscription
|
|
652
1219
|
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
children_methods({
|
|
657
|
-
directives: GraphQL::Language::Nodes::Directive,
|
|
658
|
-
})
|
|
659
|
-
self.children_method_name = :definitions
|
|
660
|
-
end
|
|
1220
|
+
def scalars
|
|
1221
|
+
@scalars ||= [@query, @mutation, @subscription].freeze
|
|
1222
|
+
end
|
|
661
1223
|
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
children_methods({
|
|
665
|
-
directives: GraphQL::Language::Nodes::Directive,
|
|
666
|
-
})
|
|
667
|
-
self.children_method_name = :definitions
|
|
668
|
-
end
|
|
1224
|
+
#: Array[Directive]
|
|
1225
|
+
attr_reader :directives
|
|
669
1226
|
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
children_methods({
|
|
674
|
-
directives: GraphQL::Language::Nodes::Directive,
|
|
675
|
-
})
|
|
676
|
-
self.children_method_name = :fields
|
|
677
|
-
end
|
|
1227
|
+
def merge_directive(**node_opts)
|
|
1228
|
+
merge(directives: directives + [GraphQL::Language::Nodes::Directive.new(**node_opts)])
|
|
1229
|
+
end
|
|
678
1230
|
|
|
679
|
-
|
|
680
|
-
attr_reader :description, :comment
|
|
681
|
-
scalar_methods :name, :type
|
|
682
|
-
children_methods({
|
|
683
|
-
arguments: GraphQL::Language::Nodes::InputValueDefinition,
|
|
684
|
-
directives: GraphQL::Language::Nodes::Directive,
|
|
685
|
-
})
|
|
686
|
-
self.children_method_name = :fields
|
|
1231
|
+
alias :children directives
|
|
687
1232
|
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
1233
|
+
#: (?query: untyped, ?mutation: untyped, ?subscription: untyped, ?directives: Array[Directive], ?line: Integer?, ?col: Integer?, ?pos: Integer?, ?filename: String?, ?source: untyped, ?definition_pos: Integer?) -> void
|
|
1234
|
+
def initialize(query: nil, mutation: nil, subscription: nil, directives: NO_CHILDREN, line: nil, col: nil, pos: nil, filename: nil, source: nil, definition_pos: nil)
|
|
1235
|
+
@line = line
|
|
1236
|
+
@col = col
|
|
1237
|
+
@pos = pos
|
|
1238
|
+
@filename = filename
|
|
1239
|
+
@source = source
|
|
1240
|
+
@query = query
|
|
1241
|
+
@mutation = mutation
|
|
1242
|
+
@subscription = subscription
|
|
1243
|
+
@directives = directives.freeze
|
|
1244
|
+
@definition_pos = definition_pos
|
|
696
1245
|
end
|
|
697
|
-
end
|
|
698
1246
|
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
children_methods({
|
|
703
|
-
directives: GraphQL::Language::Nodes::Directive,
|
|
704
|
-
fields: GraphQL::Language::Nodes::FieldDefinition,
|
|
705
|
-
})
|
|
706
|
-
self.children_method_name = :definitions
|
|
707
|
-
end
|
|
1247
|
+
def self.from_a(filename, line, col, query, mutation, subscription, directives, comment: nil) # rubocop:disable Metrics/ParameterLists
|
|
1248
|
+
self.new(filename: filename, line: line, col: col, query: query, mutation: mutation, subscription: subscription, directives: directives)
|
|
1249
|
+
end
|
|
708
1250
|
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
1251
|
+
def marshal_dump
|
|
1252
|
+
[
|
|
1253
|
+
line, col, # use methods here to force them to be calculated
|
|
1254
|
+
@filename,
|
|
1255
|
+
@query,
|
|
1256
|
+
@mutation,
|
|
1257
|
+
@subscription,
|
|
1258
|
+
@directives,
|
|
1259
|
+
]
|
|
1260
|
+
end
|
|
717
1261
|
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
1262
|
+
def marshal_load(values)
|
|
1263
|
+
@line, @col, @filename, @query, @mutation, @subscription, @directives = values
|
|
1264
|
+
end
|
|
1265
|
+
|
|
1266
|
+
@children_methods = {
|
|
723
1267
|
directives: GraphQL::Language::Nodes::Directive,
|
|
724
|
-
|
|
725
|
-
})
|
|
1268
|
+
}.freeze
|
|
726
1269
|
self.children_method_name = :definitions
|
|
727
1270
|
end
|
|
728
1271
|
|
|
729
|
-
class
|
|
730
|
-
|
|
731
|
-
|
|
1272
|
+
class SchemaExtension < AbstractNode
|
|
1273
|
+
def visit_method
|
|
1274
|
+
:on_schema_extension
|
|
1275
|
+
end
|
|
1276
|
+
|
|
1277
|
+
#: String?
|
|
1278
|
+
attr_reader :query
|
|
1279
|
+
#: String?
|
|
1280
|
+
attr_reader :mutation
|
|
1281
|
+
#: String?
|
|
1282
|
+
attr_reader :subscription
|
|
1283
|
+
|
|
1284
|
+
def scalars
|
|
1285
|
+
@scalars ||= [@query, @mutation, @subscription].freeze
|
|
1286
|
+
end
|
|
1287
|
+
|
|
1288
|
+
#: Array[Directive]
|
|
1289
|
+
attr_reader :directives
|
|
1290
|
+
|
|
1291
|
+
def merge_directive(**node_opts)
|
|
1292
|
+
merge(directives: directives + [GraphQL::Language::Nodes::Directive.new(**node_opts)])
|
|
1293
|
+
end
|
|
1294
|
+
|
|
1295
|
+
alias :children directives
|
|
1296
|
+
|
|
1297
|
+
#: (?query: untyped, ?mutation: untyped, ?subscription: untyped, ?directives: Array[Directive], ?line: Integer?, ?col: Integer?, ?pos: Integer?, ?filename: String?, ?source: untyped) -> void
|
|
1298
|
+
def initialize(query: nil, mutation: nil, subscription: nil, directives: NO_CHILDREN, line: nil, col: nil, pos: nil, filename: nil, source: nil)
|
|
1299
|
+
@line = line
|
|
1300
|
+
@col = col
|
|
1301
|
+
@pos = pos
|
|
1302
|
+
@filename = filename
|
|
1303
|
+
@source = source
|
|
1304
|
+
@query = query
|
|
1305
|
+
@mutation = mutation
|
|
1306
|
+
@subscription = subscription
|
|
1307
|
+
@directives = directives.freeze
|
|
1308
|
+
end
|
|
1309
|
+
|
|
1310
|
+
def self.from_a(filename, line, col, query, mutation, subscription, directives, comment: nil) # rubocop:disable Metrics/ParameterLists
|
|
1311
|
+
self.new(filename: filename, line: line, col: col, query: query, mutation: mutation, subscription: subscription, directives: directives)
|
|
1312
|
+
end
|
|
1313
|
+
|
|
1314
|
+
def marshal_dump
|
|
1315
|
+
[
|
|
1316
|
+
line, col, # use methods here to force them to be calculated
|
|
1317
|
+
@filename,
|
|
1318
|
+
@query,
|
|
1319
|
+
@mutation,
|
|
1320
|
+
@subscription,
|
|
1321
|
+
@directives,
|
|
1322
|
+
]
|
|
1323
|
+
end
|
|
1324
|
+
|
|
1325
|
+
def marshal_load(values)
|
|
1326
|
+
@line, @col, @filename, @query, @mutation, @subscription, @directives = values
|
|
1327
|
+
end
|
|
1328
|
+
|
|
1329
|
+
@children_methods = {
|
|
1330
|
+
directives: GraphQL::Language::Nodes::Directive,
|
|
1331
|
+
}.freeze
|
|
1332
|
+
self.children_method_name = :definitions
|
|
1333
|
+
end
|
|
1334
|
+
|
|
1335
|
+
class ScalarTypeDefinition < AbstractNode
|
|
1336
|
+
def visit_method
|
|
1337
|
+
:on_scalar_type_definition
|
|
1338
|
+
end
|
|
1339
|
+
|
|
1340
|
+
#: String?
|
|
1341
|
+
attr_reader :description
|
|
1342
|
+
#: String?
|
|
1343
|
+
attr_reader :comment
|
|
1344
|
+
#: String
|
|
1345
|
+
attr_reader :name
|
|
1346
|
+
|
|
1347
|
+
def scalars
|
|
1348
|
+
@scalars ||= [@name].freeze
|
|
1349
|
+
end
|
|
1350
|
+
|
|
1351
|
+
#: Array[Directive]
|
|
1352
|
+
attr_reader :directives
|
|
1353
|
+
|
|
1354
|
+
def merge_directive(**node_opts)
|
|
1355
|
+
merge(directives: directives + [GraphQL::Language::Nodes::Directive.new(**node_opts)])
|
|
1356
|
+
end
|
|
1357
|
+
|
|
1358
|
+
alias :children directives
|
|
1359
|
+
|
|
1360
|
+
#: (?name: untyped, ?description: untyped, ?comment: untyped, ?directives: Array[Directive], ?line: Integer?, ?col: Integer?, ?pos: Integer?, ?filename: String?, ?source: untyped, ?definition_pos: Integer?) -> void
|
|
1361
|
+
def initialize(name: nil, description: nil, comment: nil, directives: NO_CHILDREN, line: nil, col: nil, pos: nil, filename: nil, source: nil, definition_pos: nil)
|
|
1362
|
+
@line = line
|
|
1363
|
+
@col = col
|
|
1364
|
+
@pos = pos
|
|
1365
|
+
@filename = filename
|
|
1366
|
+
@source = source
|
|
1367
|
+
@name = name
|
|
1368
|
+
@description = description && -description
|
|
1369
|
+
@comment = comment
|
|
1370
|
+
@directives = directives.freeze
|
|
1371
|
+
@definition_pos = definition_pos
|
|
1372
|
+
end
|
|
1373
|
+
|
|
1374
|
+
def self.from_a(filename, line, col, name, description, directives, comment: nil)
|
|
1375
|
+
self.new(filename: filename, line: line, col: col, name: name, description: description, comment: comment, directives: directives)
|
|
1376
|
+
end
|
|
1377
|
+
|
|
1378
|
+
def marshal_dump
|
|
1379
|
+
[
|
|
1380
|
+
line, col, # use methods here to force them to be calculated
|
|
1381
|
+
@filename,
|
|
1382
|
+
@name,
|
|
1383
|
+
@description,
|
|
1384
|
+
@directives,
|
|
1385
|
+
]
|
|
1386
|
+
end
|
|
1387
|
+
|
|
1388
|
+
def marshal_load(values)
|
|
1389
|
+
@line, @col, @filename, @name, @description, @directives = values
|
|
1390
|
+
end
|
|
1391
|
+
|
|
1392
|
+
@children_methods = {
|
|
1393
|
+
directives: GraphQL::Language::Nodes::Directive,
|
|
1394
|
+
}.freeze
|
|
1395
|
+
self.children_method_name = :definitions
|
|
1396
|
+
end
|
|
1397
|
+
|
|
1398
|
+
class ScalarTypeExtension < AbstractNode
|
|
1399
|
+
def visit_method
|
|
1400
|
+
:on_scalar_type_extension
|
|
1401
|
+
end
|
|
1402
|
+
|
|
1403
|
+
#: String
|
|
1404
|
+
attr_reader :name
|
|
1405
|
+
|
|
1406
|
+
def scalars
|
|
1407
|
+
@scalars ||= [@name].freeze
|
|
1408
|
+
end
|
|
1409
|
+
|
|
1410
|
+
#: Array[Directive]
|
|
1411
|
+
attr_reader :directives
|
|
1412
|
+
|
|
1413
|
+
def merge_directive(**node_opts)
|
|
1414
|
+
merge(directives: directives + [GraphQL::Language::Nodes::Directive.new(**node_opts)])
|
|
1415
|
+
end
|
|
1416
|
+
|
|
1417
|
+
alias :children directives
|
|
1418
|
+
|
|
1419
|
+
#: (?name: untyped, ?directives: Array[Directive], ?line: Integer?, ?col: Integer?, ?pos: Integer?, ?filename: String?, ?source: untyped) -> void
|
|
1420
|
+
def initialize(name: nil, directives: NO_CHILDREN, line: nil, col: nil, pos: nil, filename: nil, source: nil)
|
|
1421
|
+
@line = line
|
|
1422
|
+
@col = col
|
|
1423
|
+
@pos = pos
|
|
1424
|
+
@filename = filename
|
|
1425
|
+
@source = source
|
|
1426
|
+
@name = name
|
|
1427
|
+
@directives = directives.freeze
|
|
1428
|
+
end
|
|
1429
|
+
|
|
1430
|
+
def self.from_a(filename, line, col, name, directives, comment: nil)
|
|
1431
|
+
self.new(filename: filename, line: line, col: col, name: name, directives: directives)
|
|
1432
|
+
end
|
|
1433
|
+
|
|
1434
|
+
def marshal_dump
|
|
1435
|
+
[
|
|
1436
|
+
line, col, # use methods here to force them to be calculated
|
|
1437
|
+
@filename,
|
|
1438
|
+
@name,
|
|
1439
|
+
@directives,
|
|
1440
|
+
]
|
|
1441
|
+
end
|
|
1442
|
+
|
|
1443
|
+
def marshal_load(values)
|
|
1444
|
+
@line, @col, @filename, @name, @directives = values
|
|
1445
|
+
end
|
|
1446
|
+
|
|
1447
|
+
@children_methods = {
|
|
1448
|
+
directives: GraphQL::Language::Nodes::Directive,
|
|
1449
|
+
}.freeze
|
|
1450
|
+
self.children_method_name = :definitions
|
|
1451
|
+
end
|
|
1452
|
+
|
|
1453
|
+
class InputValueDefinition < AbstractNode
|
|
1454
|
+
def visit_method
|
|
1455
|
+
:on_input_value_definition
|
|
1456
|
+
end
|
|
1457
|
+
|
|
1458
|
+
#: String?
|
|
1459
|
+
attr_reader :description
|
|
1460
|
+
#: String?
|
|
1461
|
+
attr_reader :comment
|
|
1462
|
+
#: String
|
|
1463
|
+
attr_reader :name
|
|
1464
|
+
#: TypeName | ListType | NonNullType
|
|
1465
|
+
attr_reader :type
|
|
1466
|
+
#: untyped
|
|
1467
|
+
attr_reader :default_value
|
|
1468
|
+
|
|
1469
|
+
def scalars
|
|
1470
|
+
@scalars ||= [@name, @type, @default_value].freeze
|
|
1471
|
+
end
|
|
1472
|
+
|
|
1473
|
+
#: Array[Directive]
|
|
1474
|
+
attr_reader :directives
|
|
1475
|
+
|
|
1476
|
+
def merge_directive(**node_opts)
|
|
1477
|
+
merge(directives: directives + [GraphQL::Language::Nodes::Directive.new(**node_opts)])
|
|
1478
|
+
end
|
|
1479
|
+
|
|
1480
|
+
alias :children directives
|
|
1481
|
+
|
|
1482
|
+
#: (?name: untyped, ?type: untyped, ?default_value: untyped, ?description: untyped, ?comment: untyped, ?directives: Array[Directive], ?line: Integer?, ?col: Integer?, ?pos: Integer?, ?filename: String?, ?source: untyped, ?definition_pos: Integer?) -> void
|
|
1483
|
+
def initialize(name: nil, type: nil, default_value: nil, description: nil, comment: nil, directives: NO_CHILDREN, line: nil, col: nil, pos: nil, filename: nil, source: nil, definition_pos: nil)
|
|
1484
|
+
@line = line
|
|
1485
|
+
@col = col
|
|
1486
|
+
@pos = pos
|
|
1487
|
+
@filename = filename
|
|
1488
|
+
@source = source
|
|
1489
|
+
@name = name
|
|
1490
|
+
@type = type
|
|
1491
|
+
@default_value = default_value
|
|
1492
|
+
@description = description && -description
|
|
1493
|
+
@comment = comment
|
|
1494
|
+
@directives = directives.freeze
|
|
1495
|
+
@definition_pos = definition_pos
|
|
1496
|
+
end
|
|
1497
|
+
|
|
1498
|
+
def self.from_a(filename, line, col, name, type, default_value, description, directives, comment: nil) # rubocop:disable Metrics/ParameterLists
|
|
1499
|
+
self.new(filename: filename, line: line, col: col, name: name, type: type, default_value: default_value, description: description, comment: comment, directives: directives)
|
|
1500
|
+
end
|
|
1501
|
+
|
|
1502
|
+
def marshal_dump
|
|
1503
|
+
[
|
|
1504
|
+
line, col, # use methods here to force them to be calculated
|
|
1505
|
+
@filename,
|
|
1506
|
+
@name,
|
|
1507
|
+
@type,
|
|
1508
|
+
@default_value,
|
|
1509
|
+
@description,
|
|
1510
|
+
@directives,
|
|
1511
|
+
]
|
|
1512
|
+
end
|
|
1513
|
+
|
|
1514
|
+
def marshal_load(values)
|
|
1515
|
+
@line, @col, @filename, @name, @type, @default_value, @description, @directives = values
|
|
1516
|
+
end
|
|
1517
|
+
|
|
1518
|
+
@children_methods = {
|
|
1519
|
+
directives: GraphQL::Language::Nodes::Directive,
|
|
1520
|
+
}.freeze
|
|
1521
|
+
self.children_method_name = :fields
|
|
1522
|
+
end
|
|
1523
|
+
|
|
1524
|
+
class FieldDefinition < AbstractNode
|
|
1525
|
+
def visit_method
|
|
1526
|
+
:on_field_definition
|
|
1527
|
+
end
|
|
1528
|
+
|
|
1529
|
+
#: String?
|
|
1530
|
+
attr_reader :description
|
|
1531
|
+
#: String?
|
|
1532
|
+
attr_reader :comment
|
|
1533
|
+
#: String
|
|
1534
|
+
attr_reader :name
|
|
1535
|
+
#: TypeName | ListType | NonNullType
|
|
1536
|
+
attr_reader :type
|
|
1537
|
+
|
|
1538
|
+
def scalars
|
|
1539
|
+
@scalars ||= [@name, @type].freeze
|
|
1540
|
+
end
|
|
1541
|
+
|
|
1542
|
+
#: Array[InputValueDefinition]
|
|
1543
|
+
attr_reader :arguments
|
|
1544
|
+
#: Array[Directive]
|
|
1545
|
+
attr_reader :directives
|
|
1546
|
+
|
|
1547
|
+
def merge_argument(**node_opts)
|
|
1548
|
+
merge(arguments: arguments + [GraphQL::Language::Nodes::InputValueDefinition.new(**node_opts)])
|
|
1549
|
+
end
|
|
1550
|
+
|
|
1551
|
+
def merge_directive(**node_opts)
|
|
1552
|
+
merge(directives: directives + [GraphQL::Language::Nodes::Directive.new(**node_opts)])
|
|
1553
|
+
end
|
|
1554
|
+
|
|
1555
|
+
def children
|
|
1556
|
+
@children ||= begin
|
|
1557
|
+
if !@arguments.empty? || !@directives.empty?
|
|
1558
|
+
new_children = []
|
|
1559
|
+
new_children.concat(@arguments)
|
|
1560
|
+
new_children.concat(@directives)
|
|
1561
|
+
new_children.freeze
|
|
1562
|
+
new_children
|
|
1563
|
+
else
|
|
1564
|
+
NO_CHILDREN
|
|
1565
|
+
end
|
|
1566
|
+
end
|
|
1567
|
+
end
|
|
1568
|
+
|
|
1569
|
+
#: (?name: untyped, ?type: untyped, ?description: untyped, ?comment: untyped, ?arguments: Array[InputValueDefinition], ?directives: Array[Directive], ?line: Integer?, ?col: Integer?, ?pos: Integer?, ?filename: String?, ?source: untyped, ?definition_pos: Integer?) -> void
|
|
1570
|
+
def initialize(name: nil, type: nil, description: nil, comment: nil, arguments: NO_CHILDREN, directives: NO_CHILDREN, line: nil, col: nil, pos: nil, filename: nil, source: nil, definition_pos: nil)
|
|
1571
|
+
@line = line
|
|
1572
|
+
@col = col
|
|
1573
|
+
@pos = pos
|
|
1574
|
+
@filename = filename
|
|
1575
|
+
@source = source
|
|
1576
|
+
@name = name
|
|
1577
|
+
@type = type
|
|
1578
|
+
@description = description && -description
|
|
1579
|
+
@comment = comment
|
|
1580
|
+
@arguments = arguments.freeze
|
|
1581
|
+
@directives = directives.freeze
|
|
1582
|
+
@definition_pos = definition_pos
|
|
1583
|
+
end
|
|
1584
|
+
|
|
1585
|
+
def self.from_a(filename, line, col, name, type, description, arguments, directives, comment: nil) # rubocop:disable Metrics/ParameterLists
|
|
1586
|
+
self.new(filename: filename, line: line, col: col, name: name, type: type, description: description, comment: comment, arguments: arguments, directives: directives)
|
|
1587
|
+
end
|
|
1588
|
+
|
|
1589
|
+
def marshal_dump
|
|
1590
|
+
[
|
|
1591
|
+
line, col, # use methods here to force them to be calculated
|
|
1592
|
+
@filename,
|
|
1593
|
+
@name,
|
|
1594
|
+
@type,
|
|
1595
|
+
@description,
|
|
1596
|
+
@arguments,
|
|
1597
|
+
@directives,
|
|
1598
|
+
]
|
|
1599
|
+
end
|
|
1600
|
+
|
|
1601
|
+
def marshal_load(values)
|
|
1602
|
+
@line, @col, @filename, @name, @type, @description, @arguments, @directives = values
|
|
1603
|
+
end
|
|
1604
|
+
|
|
1605
|
+
@children_methods = {
|
|
1606
|
+
arguments: GraphQL::Language::Nodes::InputValueDefinition,
|
|
1607
|
+
directives: GraphQL::Language::Nodes::Directive,
|
|
1608
|
+
}.freeze
|
|
1609
|
+
self.children_method_name = :fields
|
|
1610
|
+
|
|
1611
|
+
# this is so that `children_method_name` of `InputValueDefinition` works properly
|
|
1612
|
+
# with `#replace_child`
|
|
1613
|
+
alias :fields :arguments
|
|
1614
|
+
def merge(new_options)
|
|
1615
|
+
if (f = new_options.delete(:fields))
|
|
1616
|
+
new_options[:arguments] = f
|
|
1617
|
+
end
|
|
1618
|
+
super
|
|
1619
|
+
end
|
|
1620
|
+
end
|
|
1621
|
+
|
|
1622
|
+
class ObjectTypeDefinition < AbstractNode
|
|
1623
|
+
def visit_method
|
|
1624
|
+
:on_object_type_definition
|
|
1625
|
+
end
|
|
1626
|
+
|
|
1627
|
+
#: String?
|
|
1628
|
+
attr_reader :description
|
|
1629
|
+
#: String?
|
|
1630
|
+
attr_reader :comment
|
|
1631
|
+
#: String
|
|
1632
|
+
attr_reader :name
|
|
1633
|
+
#: Array[TypeName]
|
|
1634
|
+
attr_reader :interfaces
|
|
1635
|
+
|
|
1636
|
+
def scalars
|
|
1637
|
+
@scalars ||= [@name, @interfaces].freeze
|
|
1638
|
+
end
|
|
1639
|
+
|
|
1640
|
+
#: Array[Directive]
|
|
1641
|
+
attr_reader :directives
|
|
1642
|
+
#: Array[FieldDefinition]
|
|
1643
|
+
attr_reader :fields
|
|
1644
|
+
|
|
1645
|
+
def merge_directive(**node_opts)
|
|
1646
|
+
merge(directives: directives + [GraphQL::Language::Nodes::Directive.new(**node_opts)])
|
|
1647
|
+
end
|
|
1648
|
+
|
|
1649
|
+
def merge_field(**node_opts)
|
|
1650
|
+
merge(fields: fields + [GraphQL::Language::Nodes::FieldDefinition.new(**node_opts)])
|
|
1651
|
+
end
|
|
1652
|
+
|
|
1653
|
+
def children
|
|
1654
|
+
@children ||= begin
|
|
1655
|
+
if !@directives.empty? || !@fields.empty?
|
|
1656
|
+
new_children = []
|
|
1657
|
+
new_children.concat(@directives)
|
|
1658
|
+
new_children.concat(@fields)
|
|
1659
|
+
new_children.freeze
|
|
1660
|
+
new_children
|
|
1661
|
+
else
|
|
1662
|
+
NO_CHILDREN
|
|
1663
|
+
end
|
|
1664
|
+
end
|
|
1665
|
+
end
|
|
1666
|
+
|
|
1667
|
+
#: (?name: untyped, ?interfaces: untyped, ?description: untyped, ?comment: untyped, ?directives: Array[Directive], ?fields: Array[FieldDefinition], ?line: Integer?, ?col: Integer?, ?pos: Integer?, ?filename: String?, ?source: untyped, ?definition_pos: Integer?) -> void
|
|
1668
|
+
def initialize(name: nil, interfaces: nil, description: nil, comment: nil, directives: NO_CHILDREN, fields: NO_CHILDREN, line: nil, col: nil, pos: nil, filename: nil, source: nil, definition_pos: nil)
|
|
1669
|
+
@line = line
|
|
1670
|
+
@col = col
|
|
1671
|
+
@pos = pos
|
|
1672
|
+
@filename = filename
|
|
1673
|
+
@source = source
|
|
1674
|
+
@name = name
|
|
1675
|
+
@interfaces = interfaces
|
|
1676
|
+
@description = description && -description
|
|
1677
|
+
@comment = comment
|
|
1678
|
+
@directives = directives.freeze
|
|
1679
|
+
@fields = fields.freeze
|
|
1680
|
+
@definition_pos = definition_pos
|
|
1681
|
+
end
|
|
1682
|
+
|
|
1683
|
+
def self.from_a(filename, line, col, name, interfaces, description, directives, fields, comment: nil) # rubocop:disable Metrics/ParameterLists
|
|
1684
|
+
self.new(filename: filename, line: line, col: col, name: name, interfaces: interfaces, description: description, comment: comment, directives: directives, fields: fields)
|
|
1685
|
+
end
|
|
1686
|
+
|
|
1687
|
+
def marshal_dump
|
|
1688
|
+
[
|
|
1689
|
+
line, col, # use methods here to force them to be calculated
|
|
1690
|
+
@filename,
|
|
1691
|
+
@name,
|
|
1692
|
+
@interfaces,
|
|
1693
|
+
@description,
|
|
1694
|
+
@directives,
|
|
1695
|
+
@fields,
|
|
1696
|
+
]
|
|
1697
|
+
end
|
|
1698
|
+
|
|
1699
|
+
def marshal_load(values)
|
|
1700
|
+
@line, @col, @filename, @name, @interfaces, @description, @directives, @fields = values
|
|
1701
|
+
end
|
|
1702
|
+
|
|
1703
|
+
@children_methods = {
|
|
1704
|
+
directives: GraphQL::Language::Nodes::Directive,
|
|
1705
|
+
fields: GraphQL::Language::Nodes::FieldDefinition,
|
|
1706
|
+
}.freeze
|
|
1707
|
+
self.children_method_name = :definitions
|
|
1708
|
+
end
|
|
1709
|
+
|
|
1710
|
+
class ObjectTypeExtension < AbstractNode
|
|
1711
|
+
def visit_method
|
|
1712
|
+
:on_object_type_extension
|
|
1713
|
+
end
|
|
1714
|
+
|
|
1715
|
+
#: String
|
|
1716
|
+
attr_reader :name
|
|
1717
|
+
#: Array[TypeName]
|
|
1718
|
+
attr_reader :interfaces
|
|
1719
|
+
|
|
1720
|
+
def scalars
|
|
1721
|
+
@scalars ||= [@name, @interfaces].freeze
|
|
1722
|
+
end
|
|
1723
|
+
|
|
1724
|
+
#: Array[Directive]
|
|
1725
|
+
attr_reader :directives
|
|
1726
|
+
#: Array[FieldDefinition]
|
|
1727
|
+
attr_reader :fields
|
|
1728
|
+
|
|
1729
|
+
def merge_directive(**node_opts)
|
|
1730
|
+
merge(directives: directives + [GraphQL::Language::Nodes::Directive.new(**node_opts)])
|
|
1731
|
+
end
|
|
1732
|
+
|
|
1733
|
+
def merge_field(**node_opts)
|
|
1734
|
+
merge(fields: fields + [GraphQL::Language::Nodes::FieldDefinition.new(**node_opts)])
|
|
1735
|
+
end
|
|
1736
|
+
|
|
1737
|
+
def children
|
|
1738
|
+
@children ||= begin
|
|
1739
|
+
if !@directives.empty? || !@fields.empty?
|
|
1740
|
+
new_children = []
|
|
1741
|
+
new_children.concat(@directives)
|
|
1742
|
+
new_children.concat(@fields)
|
|
1743
|
+
new_children.freeze
|
|
1744
|
+
new_children
|
|
1745
|
+
else
|
|
1746
|
+
NO_CHILDREN
|
|
1747
|
+
end
|
|
1748
|
+
end
|
|
1749
|
+
end
|
|
1750
|
+
|
|
1751
|
+
#: (?name: untyped, ?interfaces: untyped, ?directives: Array[Directive], ?fields: Array[FieldDefinition], ?line: Integer?, ?col: Integer?, ?pos: Integer?, ?filename: String?, ?source: untyped) -> void
|
|
1752
|
+
def initialize(name: nil, interfaces: nil, directives: NO_CHILDREN, fields: NO_CHILDREN, line: nil, col: nil, pos: nil, filename: nil, source: nil)
|
|
1753
|
+
@line = line
|
|
1754
|
+
@col = col
|
|
1755
|
+
@pos = pos
|
|
1756
|
+
@filename = filename
|
|
1757
|
+
@source = source
|
|
1758
|
+
@name = name
|
|
1759
|
+
@interfaces = interfaces
|
|
1760
|
+
@directives = directives.freeze
|
|
1761
|
+
@fields = fields.freeze
|
|
1762
|
+
end
|
|
1763
|
+
|
|
1764
|
+
def self.from_a(filename, line, col, name, interfaces, directives, fields, comment: nil) # rubocop:disable Metrics/ParameterLists
|
|
1765
|
+
self.new(filename: filename, line: line, col: col, name: name, interfaces: interfaces, directives: directives, fields: fields)
|
|
1766
|
+
end
|
|
1767
|
+
|
|
1768
|
+
def marshal_dump
|
|
1769
|
+
[
|
|
1770
|
+
line, col, # use methods here to force them to be calculated
|
|
1771
|
+
@filename,
|
|
1772
|
+
@name,
|
|
1773
|
+
@interfaces,
|
|
1774
|
+
@directives,
|
|
1775
|
+
@fields,
|
|
1776
|
+
]
|
|
1777
|
+
end
|
|
1778
|
+
|
|
1779
|
+
def marshal_load(values)
|
|
1780
|
+
@line, @col, @filename, @name, @interfaces, @directives, @fields = values
|
|
1781
|
+
end
|
|
1782
|
+
|
|
1783
|
+
@children_methods = {
|
|
1784
|
+
directives: GraphQL::Language::Nodes::Directive,
|
|
1785
|
+
fields: GraphQL::Language::Nodes::FieldDefinition,
|
|
1786
|
+
}.freeze
|
|
1787
|
+
self.children_method_name = :definitions
|
|
1788
|
+
end
|
|
1789
|
+
|
|
1790
|
+
class InterfaceTypeDefinition < AbstractNode
|
|
1791
|
+
def visit_method
|
|
1792
|
+
:on_interface_type_definition
|
|
1793
|
+
end
|
|
1794
|
+
|
|
1795
|
+
#: String?
|
|
1796
|
+
attr_reader :description
|
|
1797
|
+
#: String?
|
|
1798
|
+
attr_reader :comment
|
|
1799
|
+
#: String
|
|
1800
|
+
attr_reader :name
|
|
1801
|
+
|
|
1802
|
+
def scalars
|
|
1803
|
+
@scalars ||= [@name].freeze
|
|
1804
|
+
end
|
|
1805
|
+
|
|
1806
|
+
#: Array[TypeName]
|
|
1807
|
+
attr_reader :interfaces
|
|
1808
|
+
#: Array[Directive]
|
|
1809
|
+
attr_reader :directives
|
|
1810
|
+
#: Array[FieldDefinition]
|
|
1811
|
+
attr_reader :fields
|
|
1812
|
+
|
|
1813
|
+
def merge_interface(**node_opts)
|
|
1814
|
+
merge(interfaces: interfaces + [GraphQL::Language::Nodes::TypeName.new(**node_opts)])
|
|
1815
|
+
end
|
|
1816
|
+
|
|
1817
|
+
def merge_directive(**node_opts)
|
|
1818
|
+
merge(directives: directives + [GraphQL::Language::Nodes::Directive.new(**node_opts)])
|
|
1819
|
+
end
|
|
1820
|
+
|
|
1821
|
+
def merge_field(**node_opts)
|
|
1822
|
+
merge(fields: fields + [GraphQL::Language::Nodes::FieldDefinition.new(**node_opts)])
|
|
1823
|
+
end
|
|
1824
|
+
|
|
1825
|
+
def children
|
|
1826
|
+
@children ||= begin
|
|
1827
|
+
if !@interfaces.empty? || !@directives.empty? || !@fields.empty?
|
|
1828
|
+
new_children = []
|
|
1829
|
+
new_children.concat(@interfaces)
|
|
1830
|
+
new_children.concat(@directives)
|
|
1831
|
+
new_children.concat(@fields)
|
|
1832
|
+
new_children.freeze
|
|
1833
|
+
new_children
|
|
1834
|
+
else
|
|
1835
|
+
NO_CHILDREN
|
|
1836
|
+
end
|
|
1837
|
+
end
|
|
1838
|
+
end
|
|
1839
|
+
|
|
1840
|
+
#: (?name: untyped, ?description: untyped, ?comment: untyped, ?interfaces: Array[TypeName], ?directives: Array[Directive], ?fields: Array[FieldDefinition], ?line: Integer?, ?col: Integer?, ?pos: Integer?, ?filename: String?, ?source: untyped, ?definition_pos: Integer?) -> void
|
|
1841
|
+
def initialize(name: nil, description: nil, comment: nil, interfaces: NO_CHILDREN, directives: NO_CHILDREN, fields: NO_CHILDREN, line: nil, col: nil, pos: nil, filename: nil, source: nil, definition_pos: nil)
|
|
1842
|
+
@line = line
|
|
1843
|
+
@col = col
|
|
1844
|
+
@pos = pos
|
|
1845
|
+
@filename = filename
|
|
1846
|
+
@source = source
|
|
1847
|
+
@name = name
|
|
1848
|
+
@description = description && -description
|
|
1849
|
+
@comment = comment
|
|
1850
|
+
@interfaces = interfaces.freeze
|
|
1851
|
+
@directives = directives.freeze
|
|
1852
|
+
@fields = fields.freeze
|
|
1853
|
+
@definition_pos = definition_pos
|
|
1854
|
+
end
|
|
1855
|
+
|
|
1856
|
+
def self.from_a(filename, line, col, name, description, interfaces, directives, fields, comment: nil) # rubocop:disable Metrics/ParameterLists
|
|
1857
|
+
self.new(filename: filename, line: line, col: col, name: name, description: description, comment: comment, interfaces: interfaces, directives: directives, fields: fields)
|
|
1858
|
+
end
|
|
1859
|
+
|
|
1860
|
+
def marshal_dump
|
|
1861
|
+
[
|
|
1862
|
+
line, col, # use methods here to force them to be calculated
|
|
1863
|
+
@filename,
|
|
1864
|
+
@name,
|
|
1865
|
+
@description,
|
|
1866
|
+
@interfaces,
|
|
1867
|
+
@directives,
|
|
1868
|
+
@fields,
|
|
1869
|
+
]
|
|
1870
|
+
end
|
|
1871
|
+
|
|
1872
|
+
def marshal_load(values)
|
|
1873
|
+
@line, @col, @filename, @name, @description, @interfaces, @directives, @fields = values
|
|
1874
|
+
end
|
|
1875
|
+
|
|
1876
|
+
@children_methods = {
|
|
1877
|
+
interfaces: GraphQL::Language::Nodes::TypeName,
|
|
1878
|
+
directives: GraphQL::Language::Nodes::Directive,
|
|
1879
|
+
fields: GraphQL::Language::Nodes::FieldDefinition,
|
|
1880
|
+
}.freeze
|
|
1881
|
+
self.children_method_name = :definitions
|
|
1882
|
+
end
|
|
1883
|
+
|
|
1884
|
+
class InterfaceTypeExtension < AbstractNode
|
|
1885
|
+
def visit_method
|
|
1886
|
+
:on_interface_type_extension
|
|
1887
|
+
end
|
|
1888
|
+
|
|
1889
|
+
#: String
|
|
1890
|
+
attr_reader :name
|
|
1891
|
+
|
|
1892
|
+
def scalars
|
|
1893
|
+
@scalars ||= [@name].freeze
|
|
1894
|
+
end
|
|
1895
|
+
|
|
1896
|
+
#: Array[TypeName]
|
|
1897
|
+
attr_reader :interfaces
|
|
1898
|
+
#: Array[Directive]
|
|
1899
|
+
attr_reader :directives
|
|
1900
|
+
#: Array[FieldDefinition]
|
|
1901
|
+
attr_reader :fields
|
|
1902
|
+
|
|
1903
|
+
def merge_interface(**node_opts)
|
|
1904
|
+
merge(interfaces: interfaces + [GraphQL::Language::Nodes::TypeName.new(**node_opts)])
|
|
1905
|
+
end
|
|
1906
|
+
|
|
1907
|
+
def merge_directive(**node_opts)
|
|
1908
|
+
merge(directives: directives + [GraphQL::Language::Nodes::Directive.new(**node_opts)])
|
|
1909
|
+
end
|
|
1910
|
+
|
|
1911
|
+
def merge_field(**node_opts)
|
|
1912
|
+
merge(fields: fields + [GraphQL::Language::Nodes::FieldDefinition.new(**node_opts)])
|
|
1913
|
+
end
|
|
1914
|
+
|
|
1915
|
+
def children
|
|
1916
|
+
@children ||= begin
|
|
1917
|
+
if !@interfaces.empty? || !@directives.empty? || !@fields.empty?
|
|
1918
|
+
new_children = []
|
|
1919
|
+
new_children.concat(@interfaces)
|
|
1920
|
+
new_children.concat(@directives)
|
|
1921
|
+
new_children.concat(@fields)
|
|
1922
|
+
new_children.freeze
|
|
1923
|
+
new_children
|
|
1924
|
+
else
|
|
1925
|
+
NO_CHILDREN
|
|
1926
|
+
end
|
|
1927
|
+
end
|
|
1928
|
+
end
|
|
1929
|
+
|
|
1930
|
+
#: (?name: untyped, ?interfaces: Array[TypeName], ?directives: Array[Directive], ?fields: Array[FieldDefinition], ?line: Integer?, ?col: Integer?, ?pos: Integer?, ?filename: String?, ?source: untyped) -> void
|
|
1931
|
+
def initialize(name: nil, interfaces: NO_CHILDREN, directives: NO_CHILDREN, fields: NO_CHILDREN, line: nil, col: nil, pos: nil, filename: nil, source: nil)
|
|
1932
|
+
@line = line
|
|
1933
|
+
@col = col
|
|
1934
|
+
@pos = pos
|
|
1935
|
+
@filename = filename
|
|
1936
|
+
@source = source
|
|
1937
|
+
@name = name
|
|
1938
|
+
@interfaces = interfaces.freeze
|
|
1939
|
+
@directives = directives.freeze
|
|
1940
|
+
@fields = fields.freeze
|
|
1941
|
+
end
|
|
1942
|
+
|
|
1943
|
+
def self.from_a(filename, line, col, name, interfaces, directives, fields, comment: nil) # rubocop:disable Metrics/ParameterLists
|
|
1944
|
+
self.new(filename: filename, line: line, col: col, name: name, interfaces: interfaces, directives: directives, fields: fields)
|
|
1945
|
+
end
|
|
1946
|
+
|
|
1947
|
+
def marshal_dump
|
|
1948
|
+
[
|
|
1949
|
+
line, col, # use methods here to force them to be calculated
|
|
1950
|
+
@filename,
|
|
1951
|
+
@name,
|
|
1952
|
+
@interfaces,
|
|
1953
|
+
@directives,
|
|
1954
|
+
@fields,
|
|
1955
|
+
]
|
|
1956
|
+
end
|
|
1957
|
+
|
|
1958
|
+
def marshal_load(values)
|
|
1959
|
+
@line, @col, @filename, @name, @interfaces, @directives, @fields = values
|
|
1960
|
+
end
|
|
1961
|
+
|
|
1962
|
+
@children_methods = {
|
|
732
1963
|
interfaces: GraphQL::Language::Nodes::TypeName,
|
|
733
1964
|
directives: GraphQL::Language::Nodes::Directive,
|
|
734
1965
|
fields: GraphQL::Language::Nodes::FieldDefinition,
|
|
735
|
-
}
|
|
1966
|
+
}.freeze
|
|
736
1967
|
self.children_method_name = :definitions
|
|
737
1968
|
end
|
|
738
1969
|
|
|
739
1970
|
class UnionTypeDefinition < AbstractNode
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
1971
|
+
def visit_method
|
|
1972
|
+
:on_union_type_definition
|
|
1973
|
+
end
|
|
1974
|
+
|
|
1975
|
+
#: String?
|
|
1976
|
+
attr_reader :description
|
|
1977
|
+
#: String?
|
|
1978
|
+
attr_reader :comment
|
|
1979
|
+
#: Array[TypeName]
|
|
1980
|
+
attr_reader :types
|
|
1981
|
+
#: String
|
|
1982
|
+
attr_reader :name
|
|
1983
|
+
|
|
1984
|
+
def scalars
|
|
1985
|
+
@scalars ||= [@name].freeze
|
|
1986
|
+
end
|
|
1987
|
+
|
|
1988
|
+
#: Array[Directive]
|
|
1989
|
+
attr_reader :directives
|
|
1990
|
+
|
|
1991
|
+
def merge_directive(**node_opts)
|
|
1992
|
+
merge(directives: directives + [GraphQL::Language::Nodes::Directive.new(**node_opts)])
|
|
1993
|
+
end
|
|
1994
|
+
|
|
1995
|
+
alias :children directives
|
|
1996
|
+
|
|
1997
|
+
#: (?name: untyped, ?types: untyped, ?description: untyped, ?comment: untyped, ?directives: Array[Directive], ?line: Integer?, ?col: Integer?, ?pos: Integer?, ?filename: String?, ?source: untyped, ?definition_pos: Integer?) -> void
|
|
1998
|
+
def initialize(name: nil, types: nil, description: nil, comment: nil, directives: NO_CHILDREN, line: nil, col: nil, pos: nil, filename: nil, source: nil, definition_pos: nil)
|
|
1999
|
+
@line = line
|
|
2000
|
+
@col = col
|
|
2001
|
+
@pos = pos
|
|
2002
|
+
@filename = filename
|
|
2003
|
+
@source = source
|
|
2004
|
+
@name = name
|
|
2005
|
+
@types = types
|
|
2006
|
+
@description = description && -description
|
|
2007
|
+
@comment = comment
|
|
2008
|
+
@directives = directives.freeze
|
|
2009
|
+
@definition_pos = definition_pos
|
|
2010
|
+
end
|
|
2011
|
+
|
|
2012
|
+
def self.from_a(filename, line, col, name, types, description, directives, comment: nil) # rubocop:disable Metrics/ParameterLists
|
|
2013
|
+
self.new(filename: filename, line: line, col: col, name: name, types: types, description: description, comment: comment, directives: directives)
|
|
2014
|
+
end
|
|
2015
|
+
|
|
2016
|
+
def marshal_dump
|
|
2017
|
+
[
|
|
2018
|
+
line, col, # use methods here to force them to be calculated
|
|
2019
|
+
@filename,
|
|
2020
|
+
@name,
|
|
2021
|
+
@types,
|
|
2022
|
+
@description,
|
|
2023
|
+
@directives,
|
|
2024
|
+
]
|
|
2025
|
+
end
|
|
2026
|
+
|
|
2027
|
+
def marshal_load(values)
|
|
2028
|
+
@line, @col, @filename, @name, @types, @description, @directives = values
|
|
2029
|
+
end
|
|
2030
|
+
|
|
2031
|
+
@children_methods = {
|
|
743
2032
|
directives: GraphQL::Language::Nodes::Directive,
|
|
744
|
-
}
|
|
2033
|
+
}.freeze
|
|
745
2034
|
self.children_method_name = :definitions
|
|
746
2035
|
end
|
|
747
2036
|
|
|
748
2037
|
class UnionTypeExtension < AbstractNode
|
|
2038
|
+
def visit_method
|
|
2039
|
+
:on_union_type_extension
|
|
2040
|
+
end
|
|
2041
|
+
|
|
2042
|
+
#: Array[TypeName]
|
|
749
2043
|
attr_reader :types
|
|
750
|
-
|
|
751
|
-
|
|
2044
|
+
#: String
|
|
2045
|
+
attr_reader :name
|
|
2046
|
+
|
|
2047
|
+
def scalars
|
|
2048
|
+
@scalars ||= [@name].freeze
|
|
2049
|
+
end
|
|
2050
|
+
|
|
2051
|
+
#: Array[Directive]
|
|
2052
|
+
attr_reader :directives
|
|
2053
|
+
|
|
2054
|
+
def merge_directive(**node_opts)
|
|
2055
|
+
merge(directives: directives + [GraphQL::Language::Nodes::Directive.new(**node_opts)])
|
|
2056
|
+
end
|
|
2057
|
+
|
|
2058
|
+
alias :children directives
|
|
2059
|
+
|
|
2060
|
+
#: (?name: untyped, ?types: untyped, ?directives: Array[Directive], ?line: Integer?, ?col: Integer?, ?pos: Integer?, ?filename: String?, ?source: untyped) -> void
|
|
2061
|
+
def initialize(name: nil, types: nil, directives: NO_CHILDREN, line: nil, col: nil, pos: nil, filename: nil, source: nil)
|
|
2062
|
+
@line = line
|
|
2063
|
+
@col = col
|
|
2064
|
+
@pos = pos
|
|
2065
|
+
@filename = filename
|
|
2066
|
+
@source = source
|
|
2067
|
+
@name = name
|
|
2068
|
+
@types = types
|
|
2069
|
+
@directives = directives.freeze
|
|
2070
|
+
end
|
|
2071
|
+
|
|
2072
|
+
def self.from_a(filename, line, col, name, types, directives, comment: nil)
|
|
2073
|
+
self.new(filename: filename, line: line, col: col, name: name, types: types, directives: directives)
|
|
2074
|
+
end
|
|
2075
|
+
|
|
2076
|
+
def marshal_dump
|
|
2077
|
+
[
|
|
2078
|
+
line, col, # use methods here to force them to be calculated
|
|
2079
|
+
@filename,
|
|
2080
|
+
@name,
|
|
2081
|
+
@types,
|
|
2082
|
+
@directives,
|
|
2083
|
+
]
|
|
2084
|
+
end
|
|
2085
|
+
|
|
2086
|
+
def marshal_load(values)
|
|
2087
|
+
@line, @col, @filename, @name, @types, @directives = values
|
|
2088
|
+
end
|
|
2089
|
+
|
|
2090
|
+
@children_methods = {
|
|
752
2091
|
directives: GraphQL::Language::Nodes::Directive,
|
|
753
|
-
}
|
|
2092
|
+
}.freeze
|
|
754
2093
|
self.children_method_name = :definitions
|
|
755
2094
|
end
|
|
756
2095
|
|
|
757
2096
|
class EnumValueDefinition < AbstractNode
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
2097
|
+
def visit_method
|
|
2098
|
+
:on_enum_value_definition
|
|
2099
|
+
end
|
|
2100
|
+
|
|
2101
|
+
#: String?
|
|
2102
|
+
attr_reader :description
|
|
2103
|
+
#: String?
|
|
2104
|
+
attr_reader :comment
|
|
2105
|
+
#: String
|
|
2106
|
+
attr_reader :name
|
|
2107
|
+
|
|
2108
|
+
def scalars
|
|
2109
|
+
@scalars ||= [@name].freeze
|
|
2110
|
+
end
|
|
2111
|
+
|
|
2112
|
+
#: Array[Directive]
|
|
2113
|
+
attr_reader :directives
|
|
2114
|
+
|
|
2115
|
+
def merge_directive(**node_opts)
|
|
2116
|
+
merge(directives: directives + [GraphQL::Language::Nodes::Directive.new(**node_opts)])
|
|
2117
|
+
end
|
|
2118
|
+
|
|
2119
|
+
alias :children directives
|
|
2120
|
+
|
|
2121
|
+
#: (?name: untyped, ?description: untyped, ?comment: untyped, ?directives: Array[Directive], ?line: Integer?, ?col: Integer?, ?pos: Integer?, ?filename: String?, ?source: untyped, ?definition_pos: Integer?) -> void
|
|
2122
|
+
def initialize(name: nil, description: nil, comment: nil, directives: NO_CHILDREN, line: nil, col: nil, pos: nil, filename: nil, source: nil, definition_pos: nil)
|
|
2123
|
+
@line = line
|
|
2124
|
+
@col = col
|
|
2125
|
+
@pos = pos
|
|
2126
|
+
@filename = filename
|
|
2127
|
+
@source = source
|
|
2128
|
+
@name = name
|
|
2129
|
+
@description = description && -description
|
|
2130
|
+
@comment = comment
|
|
2131
|
+
@directives = directives.freeze
|
|
2132
|
+
@definition_pos = definition_pos
|
|
2133
|
+
end
|
|
2134
|
+
|
|
2135
|
+
def self.from_a(filename, line, col, name, description, directives, comment: nil)
|
|
2136
|
+
self.new(filename: filename, line: line, col: col, name: name, description: description, comment: comment, directives: directives)
|
|
2137
|
+
end
|
|
2138
|
+
|
|
2139
|
+
def marshal_dump
|
|
2140
|
+
[
|
|
2141
|
+
line, col, # use methods here to force them to be calculated
|
|
2142
|
+
@filename,
|
|
2143
|
+
@name,
|
|
2144
|
+
@description,
|
|
2145
|
+
@directives,
|
|
2146
|
+
]
|
|
2147
|
+
end
|
|
2148
|
+
|
|
2149
|
+
def marshal_load(values)
|
|
2150
|
+
@line, @col, @filename, @name, @description, @directives = values
|
|
2151
|
+
end
|
|
2152
|
+
|
|
2153
|
+
@children_methods = {
|
|
761
2154
|
directives: GraphQL::Language::Nodes::Directive,
|
|
762
|
-
}
|
|
2155
|
+
}.freeze
|
|
763
2156
|
self.children_method_name = :values
|
|
764
2157
|
end
|
|
765
2158
|
|
|
766
2159
|
class EnumTypeDefinition < AbstractNode
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
2160
|
+
def visit_method
|
|
2161
|
+
:on_enum_type_definition
|
|
2162
|
+
end
|
|
2163
|
+
|
|
2164
|
+
#: String?
|
|
2165
|
+
attr_reader :description
|
|
2166
|
+
#: String?
|
|
2167
|
+
attr_reader :comment
|
|
2168
|
+
#: String
|
|
2169
|
+
attr_reader :name
|
|
2170
|
+
|
|
2171
|
+
def scalars
|
|
2172
|
+
@scalars ||= [@name].freeze
|
|
2173
|
+
end
|
|
2174
|
+
|
|
2175
|
+
#: Array[Directive]
|
|
2176
|
+
attr_reader :directives
|
|
2177
|
+
#: Array[EnumValueDefinition]
|
|
2178
|
+
attr_reader :values
|
|
2179
|
+
|
|
2180
|
+
def merge_directive(**node_opts)
|
|
2181
|
+
merge(directives: directives + [GraphQL::Language::Nodes::Directive.new(**node_opts)])
|
|
2182
|
+
end
|
|
2183
|
+
|
|
2184
|
+
def merge_value(**node_opts)
|
|
2185
|
+
merge(values: values + [GraphQL::Language::Nodes::EnumValueDefinition.new(**node_opts)])
|
|
2186
|
+
end
|
|
2187
|
+
|
|
2188
|
+
def children
|
|
2189
|
+
@children ||= begin
|
|
2190
|
+
if !@directives.empty? || !@values.empty?
|
|
2191
|
+
new_children = []
|
|
2192
|
+
new_children.concat(@directives)
|
|
2193
|
+
new_children.concat(@values)
|
|
2194
|
+
new_children.freeze
|
|
2195
|
+
new_children
|
|
2196
|
+
else
|
|
2197
|
+
NO_CHILDREN
|
|
2198
|
+
end
|
|
2199
|
+
end
|
|
2200
|
+
end
|
|
2201
|
+
|
|
2202
|
+
#: (?name: untyped, ?description: untyped, ?comment: untyped, ?directives: Array[Directive], ?values: Array[EnumValueDefinition], ?line: Integer?, ?col: Integer?, ?pos: Integer?, ?filename: String?, ?source: untyped, ?definition_pos: Integer?) -> void
|
|
2203
|
+
def initialize(name: nil, description: nil, comment: nil, directives: NO_CHILDREN, values: NO_CHILDREN, line: nil, col: nil, pos: nil, filename: nil, source: nil, definition_pos: nil)
|
|
2204
|
+
@line = line
|
|
2205
|
+
@col = col
|
|
2206
|
+
@pos = pos
|
|
2207
|
+
@filename = filename
|
|
2208
|
+
@source = source
|
|
2209
|
+
@name = name
|
|
2210
|
+
@description = description && -description
|
|
2211
|
+
@comment = comment
|
|
2212
|
+
@directives = directives.freeze
|
|
2213
|
+
@values = values.freeze
|
|
2214
|
+
@definition_pos = definition_pos
|
|
2215
|
+
end
|
|
2216
|
+
|
|
2217
|
+
def self.from_a(filename, line, col, name, description, directives, values, comment: nil) # rubocop:disable Metrics/ParameterLists
|
|
2218
|
+
self.new(filename: filename, line: line, col: col, name: name, description: description, comment: comment, directives: directives, values: values)
|
|
2219
|
+
end
|
|
2220
|
+
|
|
2221
|
+
def marshal_dump
|
|
2222
|
+
[
|
|
2223
|
+
line, col, # use methods here to force them to be calculated
|
|
2224
|
+
@filename,
|
|
2225
|
+
@name,
|
|
2226
|
+
@description,
|
|
2227
|
+
@directives,
|
|
2228
|
+
@values,
|
|
2229
|
+
]
|
|
2230
|
+
end
|
|
2231
|
+
|
|
2232
|
+
def marshal_load(values)
|
|
2233
|
+
@line, @col, @filename, @name, @description, @directives, @values = values
|
|
2234
|
+
end
|
|
2235
|
+
|
|
2236
|
+
@children_methods = {
|
|
770
2237
|
directives: GraphQL::Language::Nodes::Directive,
|
|
771
2238
|
values: GraphQL::Language::Nodes::EnumValueDefinition,
|
|
772
|
-
}
|
|
2239
|
+
}.freeze
|
|
773
2240
|
self.children_method_name = :definitions
|
|
774
2241
|
end
|
|
775
2242
|
|
|
776
2243
|
class EnumTypeExtension < AbstractNode
|
|
777
|
-
|
|
778
|
-
|
|
2244
|
+
def visit_method
|
|
2245
|
+
:on_enum_type_extension
|
|
2246
|
+
end
|
|
2247
|
+
|
|
2248
|
+
#: String
|
|
2249
|
+
attr_reader :name
|
|
2250
|
+
|
|
2251
|
+
def scalars
|
|
2252
|
+
@scalars ||= [@name].freeze
|
|
2253
|
+
end
|
|
2254
|
+
|
|
2255
|
+
#: Array[Directive]
|
|
2256
|
+
attr_reader :directives
|
|
2257
|
+
#: Array[EnumValueDefinition]
|
|
2258
|
+
attr_reader :values
|
|
2259
|
+
|
|
2260
|
+
def merge_directive(**node_opts)
|
|
2261
|
+
merge(directives: directives + [GraphQL::Language::Nodes::Directive.new(**node_opts)])
|
|
2262
|
+
end
|
|
2263
|
+
|
|
2264
|
+
def merge_value(**node_opts)
|
|
2265
|
+
merge(values: values + [GraphQL::Language::Nodes::EnumValueDefinition.new(**node_opts)])
|
|
2266
|
+
end
|
|
2267
|
+
|
|
2268
|
+
def children
|
|
2269
|
+
@children ||= begin
|
|
2270
|
+
if !@directives.empty? || !@values.empty?
|
|
2271
|
+
new_children = []
|
|
2272
|
+
new_children.concat(@directives)
|
|
2273
|
+
new_children.concat(@values)
|
|
2274
|
+
new_children.freeze
|
|
2275
|
+
new_children
|
|
2276
|
+
else
|
|
2277
|
+
NO_CHILDREN
|
|
2278
|
+
end
|
|
2279
|
+
end
|
|
2280
|
+
end
|
|
2281
|
+
|
|
2282
|
+
#: (?name: untyped, ?directives: Array[Directive], ?values: Array[EnumValueDefinition], ?line: Integer?, ?col: Integer?, ?pos: Integer?, ?filename: String?, ?source: untyped) -> void
|
|
2283
|
+
def initialize(name: nil, directives: NO_CHILDREN, values: NO_CHILDREN, line: nil, col: nil, pos: nil, filename: nil, source: nil)
|
|
2284
|
+
@line = line
|
|
2285
|
+
@col = col
|
|
2286
|
+
@pos = pos
|
|
2287
|
+
@filename = filename
|
|
2288
|
+
@source = source
|
|
2289
|
+
@name = name
|
|
2290
|
+
@directives = directives.freeze
|
|
2291
|
+
@values = values.freeze
|
|
2292
|
+
end
|
|
2293
|
+
|
|
2294
|
+
def self.from_a(filename, line, col, name, directives, values, comment: nil)
|
|
2295
|
+
self.new(filename: filename, line: line, col: col, name: name, directives: directives, values: values)
|
|
2296
|
+
end
|
|
2297
|
+
|
|
2298
|
+
def marshal_dump
|
|
2299
|
+
[
|
|
2300
|
+
line, col, # use methods here to force them to be calculated
|
|
2301
|
+
@filename,
|
|
2302
|
+
@name,
|
|
2303
|
+
@directives,
|
|
2304
|
+
@values,
|
|
2305
|
+
]
|
|
2306
|
+
end
|
|
2307
|
+
|
|
2308
|
+
def marshal_load(values)
|
|
2309
|
+
@line, @col, @filename, @name, @directives, @values = values
|
|
2310
|
+
end
|
|
2311
|
+
|
|
2312
|
+
@children_methods = {
|
|
779
2313
|
directives: GraphQL::Language::Nodes::Directive,
|
|
780
2314
|
values: GraphQL::Language::Nodes::EnumValueDefinition,
|
|
781
|
-
}
|
|
2315
|
+
}.freeze
|
|
782
2316
|
self.children_method_name = :definitions
|
|
783
2317
|
end
|
|
784
2318
|
|
|
785
2319
|
class InputObjectTypeDefinition < AbstractNode
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
2320
|
+
def visit_method
|
|
2321
|
+
:on_input_object_type_definition
|
|
2322
|
+
end
|
|
2323
|
+
|
|
2324
|
+
#: String?
|
|
2325
|
+
attr_reader :description
|
|
2326
|
+
#: String?
|
|
2327
|
+
attr_reader :comment
|
|
2328
|
+
#: String
|
|
2329
|
+
attr_reader :name
|
|
2330
|
+
|
|
2331
|
+
def scalars
|
|
2332
|
+
@scalars ||= [@name].freeze
|
|
2333
|
+
end
|
|
2334
|
+
|
|
2335
|
+
#: Array[Directive]
|
|
2336
|
+
attr_reader :directives
|
|
2337
|
+
#: Array[InputValueDefinition]
|
|
2338
|
+
attr_reader :fields
|
|
2339
|
+
|
|
2340
|
+
def merge_directive(**node_opts)
|
|
2341
|
+
merge(directives: directives + [GraphQL::Language::Nodes::Directive.new(**node_opts)])
|
|
2342
|
+
end
|
|
2343
|
+
|
|
2344
|
+
def merge_field(**node_opts)
|
|
2345
|
+
merge(fields: fields + [GraphQL::Language::Nodes::InputValueDefinition.new(**node_opts)])
|
|
2346
|
+
end
|
|
2347
|
+
|
|
2348
|
+
def children
|
|
2349
|
+
@children ||= begin
|
|
2350
|
+
if !@directives.empty? || !@fields.empty?
|
|
2351
|
+
new_children = []
|
|
2352
|
+
new_children.concat(@directives)
|
|
2353
|
+
new_children.concat(@fields)
|
|
2354
|
+
new_children.freeze
|
|
2355
|
+
new_children
|
|
2356
|
+
else
|
|
2357
|
+
NO_CHILDREN
|
|
2358
|
+
end
|
|
2359
|
+
end
|
|
2360
|
+
end
|
|
2361
|
+
|
|
2362
|
+
#: (?name: untyped, ?description: untyped, ?comment: untyped, ?directives: Array[Directive], ?fields: Array[InputValueDefinition], ?line: Integer?, ?col: Integer?, ?pos: Integer?, ?filename: String?, ?source: untyped, ?definition_pos: Integer?) -> void
|
|
2363
|
+
def initialize(name: nil, description: nil, comment: nil, directives: NO_CHILDREN, fields: NO_CHILDREN, line: nil, col: nil, pos: nil, filename: nil, source: nil, definition_pos: nil)
|
|
2364
|
+
@line = line
|
|
2365
|
+
@col = col
|
|
2366
|
+
@pos = pos
|
|
2367
|
+
@filename = filename
|
|
2368
|
+
@source = source
|
|
2369
|
+
@name = name
|
|
2370
|
+
@description = description && -description
|
|
2371
|
+
@comment = comment
|
|
2372
|
+
@directives = directives.freeze
|
|
2373
|
+
@fields = fields.freeze
|
|
2374
|
+
@definition_pos = definition_pos
|
|
2375
|
+
end
|
|
2376
|
+
|
|
2377
|
+
def self.from_a(filename, line, col, name, description, directives, fields, comment: nil) # rubocop:disable Metrics/ParameterLists
|
|
2378
|
+
self.new(filename: filename, line: line, col: col, name: name, description: description, comment: comment, directives: directives, fields: fields)
|
|
2379
|
+
end
|
|
2380
|
+
|
|
2381
|
+
def marshal_dump
|
|
2382
|
+
[
|
|
2383
|
+
line, col, # use methods here to force them to be calculated
|
|
2384
|
+
@filename,
|
|
2385
|
+
@name,
|
|
2386
|
+
@description,
|
|
2387
|
+
@directives,
|
|
2388
|
+
@fields,
|
|
2389
|
+
]
|
|
2390
|
+
end
|
|
2391
|
+
|
|
2392
|
+
def marshal_load(values)
|
|
2393
|
+
@line, @col, @filename, @name, @description, @directives, @fields = values
|
|
2394
|
+
end
|
|
2395
|
+
|
|
2396
|
+
@children_methods = {
|
|
789
2397
|
directives: GraphQL::Language::Nodes::Directive,
|
|
790
2398
|
fields: GraphQL::Language::Nodes::InputValueDefinition,
|
|
791
|
-
}
|
|
2399
|
+
}.freeze
|
|
792
2400
|
self.children_method_name = :definitions
|
|
793
2401
|
end
|
|
794
2402
|
|
|
795
2403
|
class InputObjectTypeExtension < AbstractNode
|
|
796
|
-
|
|
797
|
-
|
|
2404
|
+
def visit_method
|
|
2405
|
+
:on_input_object_type_extension
|
|
2406
|
+
end
|
|
2407
|
+
|
|
2408
|
+
#: String
|
|
2409
|
+
attr_reader :name
|
|
2410
|
+
|
|
2411
|
+
def scalars
|
|
2412
|
+
@scalars ||= [@name].freeze
|
|
2413
|
+
end
|
|
2414
|
+
|
|
2415
|
+
#: Array[Directive]
|
|
2416
|
+
attr_reader :directives
|
|
2417
|
+
#: Array[InputValueDefinition]
|
|
2418
|
+
attr_reader :fields
|
|
2419
|
+
|
|
2420
|
+
def merge_directive(**node_opts)
|
|
2421
|
+
merge(directives: directives + [GraphQL::Language::Nodes::Directive.new(**node_opts)])
|
|
2422
|
+
end
|
|
2423
|
+
|
|
2424
|
+
def merge_field(**node_opts)
|
|
2425
|
+
merge(fields: fields + [GraphQL::Language::Nodes::InputValueDefinition.new(**node_opts)])
|
|
2426
|
+
end
|
|
2427
|
+
|
|
2428
|
+
def children
|
|
2429
|
+
@children ||= begin
|
|
2430
|
+
if !@directives.empty? || !@fields.empty?
|
|
2431
|
+
new_children = []
|
|
2432
|
+
new_children.concat(@directives)
|
|
2433
|
+
new_children.concat(@fields)
|
|
2434
|
+
new_children.freeze
|
|
2435
|
+
new_children
|
|
2436
|
+
else
|
|
2437
|
+
NO_CHILDREN
|
|
2438
|
+
end
|
|
2439
|
+
end
|
|
2440
|
+
end
|
|
2441
|
+
|
|
2442
|
+
#: (?name: untyped, ?directives: Array[Directive], ?fields: Array[InputValueDefinition], ?line: Integer?, ?col: Integer?, ?pos: Integer?, ?filename: String?, ?source: untyped) -> void
|
|
2443
|
+
def initialize(name: nil, directives: NO_CHILDREN, fields: NO_CHILDREN, line: nil, col: nil, pos: nil, filename: nil, source: nil)
|
|
2444
|
+
@line = line
|
|
2445
|
+
@col = col
|
|
2446
|
+
@pos = pos
|
|
2447
|
+
@filename = filename
|
|
2448
|
+
@source = source
|
|
2449
|
+
@name = name
|
|
2450
|
+
@directives = directives.freeze
|
|
2451
|
+
@fields = fields.freeze
|
|
2452
|
+
end
|
|
2453
|
+
|
|
2454
|
+
def self.from_a(filename, line, col, name, directives, fields, comment: nil)
|
|
2455
|
+
self.new(filename: filename, line: line, col: col, name: name, directives: directives, fields: fields)
|
|
2456
|
+
end
|
|
2457
|
+
|
|
2458
|
+
def marshal_dump
|
|
2459
|
+
[
|
|
2460
|
+
line, col, # use methods here to force them to be calculated
|
|
2461
|
+
@filename,
|
|
2462
|
+
@name,
|
|
2463
|
+
@directives,
|
|
2464
|
+
@fields,
|
|
2465
|
+
]
|
|
2466
|
+
end
|
|
2467
|
+
|
|
2468
|
+
def marshal_load(values)
|
|
2469
|
+
@line, @col, @filename, @name, @directives, @fields = values
|
|
2470
|
+
end
|
|
2471
|
+
|
|
2472
|
+
@children_methods = {
|
|
798
2473
|
directives: GraphQL::Language::Nodes::Directive,
|
|
799
2474
|
fields: GraphQL::Language::Nodes::InputValueDefinition,
|
|
800
|
-
}
|
|
2475
|
+
}.freeze
|
|
801
2476
|
self.children_method_name = :definitions
|
|
802
2477
|
end
|
|
803
2478
|
end
|