graphql 1.12.12 → 2.2.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of graphql might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/lib/generators/graphql/core.rb +3 -8
- data/lib/generators/graphql/enum_generator.rb +4 -10
- data/lib/generators/graphql/field_extractor.rb +31 -0
- data/lib/generators/graphql/input_generator.rb +50 -0
- data/lib/generators/graphql/install/mutation_root_generator.rb +34 -0
- data/lib/generators/graphql/{templates → install/templates}/base_mutation.erb +2 -0
- data/lib/generators/graphql/{templates → install/templates}/mutation_type.erb +2 -0
- data/lib/generators/graphql/install_generator.rb +14 -4
- data/lib/generators/graphql/interface_generator.rb +7 -7
- data/lib/generators/graphql/mutation_create_generator.rb +22 -0
- data/lib/generators/graphql/mutation_delete_generator.rb +22 -0
- data/lib/generators/graphql/mutation_generator.rb +5 -30
- data/lib/generators/graphql/mutation_update_generator.rb +22 -0
- data/lib/generators/graphql/object_generator.rb +10 -38
- data/lib/generators/graphql/orm_mutations_base.rb +40 -0
- data/lib/generators/graphql/relay.rb +23 -12
- data/lib/generators/graphql/scalar_generator.rb +4 -2
- data/lib/generators/graphql/templates/base_argument.erb +2 -0
- data/lib/generators/graphql/templates/base_connection.erb +2 -0
- data/lib/generators/graphql/templates/base_edge.erb +2 -0
- data/lib/generators/graphql/templates/base_enum.erb +2 -0
- data/lib/generators/graphql/templates/base_field.erb +2 -0
- data/lib/generators/graphql/templates/base_input_object.erb +2 -0
- data/lib/generators/graphql/templates/base_interface.erb +2 -0
- data/lib/generators/graphql/templates/base_object.erb +2 -0
- data/lib/generators/graphql/templates/base_resolver.erb +6 -0
- data/lib/generators/graphql/templates/base_scalar.erb +2 -0
- data/lib/generators/graphql/templates/base_union.erb +2 -0
- data/lib/generators/graphql/templates/enum.erb +5 -1
- data/lib/generators/graphql/templates/graphql_controller.erb +2 -0
- data/lib/generators/graphql/templates/input.erb +9 -0
- data/lib/generators/graphql/templates/interface.erb +4 -2
- data/lib/generators/graphql/templates/loader.erb +2 -0
- data/lib/generators/graphql/templates/mutation.erb +3 -1
- data/lib/generators/graphql/templates/mutation_create.erb +20 -0
- data/lib/generators/graphql/templates/mutation_delete.erb +20 -0
- data/lib/generators/graphql/templates/mutation_update.erb +21 -0
- data/lib/generators/graphql/templates/node_type.erb +2 -0
- data/lib/generators/graphql/templates/object.erb +4 -2
- data/lib/generators/graphql/templates/query_type.erb +2 -0
- data/lib/generators/graphql/templates/scalar.erb +3 -1
- data/lib/generators/graphql/templates/schema.erb +19 -2
- data/lib/generators/graphql/templates/union.erb +4 -2
- data/lib/generators/graphql/type_generator.rb +46 -10
- data/lib/generators/graphql/union_generator.rb +5 -5
- data/lib/graphql/analysis/ast/analyzer.rb +7 -0
- data/lib/graphql/analysis/ast/field_usage.rb +55 -1
- data/lib/graphql/analysis/ast/max_query_complexity.rb +0 -1
- data/lib/graphql/analysis/ast/query_complexity.rb +88 -140
- data/lib/graphql/analysis/ast/query_depth.rb +7 -3
- data/lib/graphql/analysis/ast/visitor.rb +50 -42
- data/lib/graphql/analysis/ast.rb +26 -23
- data/lib/graphql/analysis.rb +0 -7
- data/lib/graphql/backtrace/table.rb +4 -22
- data/lib/graphql/backtrace/trace.rb +93 -0
- data/lib/graphql/backtrace/tracer.rb +8 -6
- data/lib/graphql/backtrace.rb +3 -8
- data/lib/graphql/coercion_error.rb +1 -9
- data/lib/graphql/dataloader/async_dataloader.rb +85 -0
- data/lib/graphql/dataloader/null_dataloader.rb +3 -1
- data/lib/graphql/dataloader/request.rb +5 -0
- data/lib/graphql/dataloader/source.rb +120 -31
- data/lib/graphql/dataloader.rb +168 -142
- data/lib/graphql/date_encoding_error.rb +16 -0
- data/lib/graphql/dig.rb +1 -1
- data/lib/graphql/duration_encoding_error.rb +16 -0
- data/lib/graphql/execution/errors.rb +12 -81
- data/lib/graphql/execution/interpreter/arguments.rb +2 -2
- data/lib/graphql/execution/interpreter/arguments_cache.rb +36 -34
- data/lib/graphql/execution/interpreter/resolve.rb +32 -2
- data/lib/graphql/execution/interpreter/runtime/graphql_result.rb +170 -0
- data/lib/graphql/execution/interpreter/runtime.rb +414 -341
- data/lib/graphql/execution/interpreter.rb +122 -80
- data/lib/graphql/execution/lazy.rb +11 -21
- data/lib/graphql/execution/lookahead.rb +125 -54
- data/lib/graphql/execution/multiplex.rb +4 -172
- data/lib/graphql/execution.rb +11 -4
- data/lib/graphql/integer_encoding_error.rb +18 -2
- data/lib/graphql/introspection/directive_location_enum.rb +2 -2
- data/lib/graphql/introspection/directive_type.rb +5 -3
- data/lib/graphql/introspection/dynamic_fields.rb +3 -8
- data/lib/graphql/introspection/entry_points.rb +11 -18
- data/lib/graphql/introspection/enum_value_type.rb +2 -2
- data/lib/graphql/introspection/field_type.rb +3 -3
- data/lib/graphql/introspection/input_value_type.rb +10 -4
- data/lib/graphql/introspection/schema_type.rb +12 -5
- data/lib/graphql/introspection/type_type.rb +25 -12
- data/lib/graphql/introspection.rb +6 -2
- data/lib/graphql/language/block_string.rb +37 -25
- data/lib/graphql/language/definition_slice.rb +1 -1
- data/lib/graphql/language/document_from_schema_definition.rb +78 -65
- data/lib/graphql/language/lexer.rb +345 -1467
- data/lib/graphql/language/nodes.rb +145 -91
- data/lib/graphql/language/parser.rb +701 -1921
- data/lib/graphql/language/printer.rb +351 -155
- data/lib/graphql/language/sanitized_printer.rb +25 -27
- data/lib/graphql/language/static_visitor.rb +167 -0
- data/lib/graphql/language/token.rb +0 -4
- data/lib/graphql/language/visitor.rb +188 -141
- data/lib/graphql/language.rb +1 -0
- data/lib/graphql/load_application_object_failed_error.rb +5 -1
- data/lib/graphql/name_validator.rb +0 -4
- data/lib/graphql/pagination/active_record_relation_connection.rb +37 -8
- data/lib/graphql/pagination/array_connection.rb +8 -6
- data/lib/graphql/pagination/connection.rb +61 -7
- data/lib/graphql/pagination/connections.rb +22 -23
- data/lib/graphql/pagination/mongoid_relation_connection.rb +1 -2
- data/lib/graphql/pagination/relation_connection.rb +60 -28
- data/lib/graphql/query/context/scoped_context.rb +101 -0
- data/lib/graphql/query/context.rb +109 -189
- data/lib/graphql/query/input_validation_result.rb +10 -1
- data/lib/graphql/query/null_context.rb +14 -29
- data/lib/graphql/query/validation_pipeline.rb +15 -39
- data/lib/graphql/query/variable_validation_error.rb +2 -2
- data/lib/graphql/query/variables.rb +35 -17
- data/lib/graphql/query.rb +78 -65
- data/lib/graphql/railtie.rb +8 -109
- data/lib/graphql/rake_task/validate.rb +1 -1
- data/lib/graphql/rake_task.rb +30 -11
- data/lib/graphql/relay/range_add.rb +9 -16
- data/lib/graphql/relay.rb +0 -15
- data/lib/graphql/rubocop/graphql/base_cop.rb +36 -0
- data/lib/graphql/rubocop/graphql/default_null_true.rb +43 -0
- data/lib/graphql/rubocop/graphql/default_required_true.rb +43 -0
- data/lib/graphql/rubocop.rb +4 -0
- data/lib/graphql/schema/addition.rb +78 -45
- data/lib/graphql/schema/always_visible.rb +10 -0
- data/lib/graphql/schema/argument.rb +134 -80
- data/lib/graphql/schema/base_64_encoder.rb +3 -5
- data/lib/graphql/schema/build_from_definition.rb +60 -38
- data/lib/graphql/schema/directive/feature.rb +1 -1
- data/lib/graphql/schema/directive/flagged.rb +2 -2
- data/lib/graphql/schema/directive/include.rb +1 -1
- data/lib/graphql/schema/directive/one_of.rb +24 -0
- data/lib/graphql/schema/directive/skip.rb +1 -1
- data/lib/graphql/schema/directive/specified_by.rb +14 -0
- data/lib/graphql/schema/directive/transform.rb +2 -2
- data/lib/graphql/schema/directive.rb +33 -21
- data/lib/graphql/schema/enum.rb +93 -46
- data/lib/graphql/schema/enum_value.rb +4 -21
- data/lib/graphql/schema/field/connection_extension.rb +6 -16
- data/lib/graphql/schema/field/scope_extension.rb +8 -1
- data/lib/graphql/schema/field.rb +432 -337
- data/lib/graphql/schema/field_extension.rb +86 -2
- data/lib/graphql/schema/find_inherited_value.rb +3 -7
- data/lib/graphql/schema/finder.rb +5 -5
- data/lib/graphql/schema/has_single_input_argument.rb +156 -0
- data/lib/graphql/schema/input_object.rb +88 -90
- data/lib/graphql/schema/interface.rb +19 -59
- data/lib/graphql/schema/introspection_system.rb +6 -9
- data/lib/graphql/schema/late_bound_type.rb +8 -2
- data/lib/graphql/schema/list.rb +18 -7
- data/lib/graphql/schema/loader.rb +3 -3
- data/lib/graphql/schema/member/base_dsl_methods.rb +18 -19
- data/lib/graphql/schema/member/build_type.rb +16 -13
- data/lib/graphql/schema/member/has_arguments.rb +288 -84
- data/lib/graphql/schema/member/has_ast_node.rb +12 -0
- data/lib/graphql/schema/member/has_deprecation_reason.rb +3 -4
- data/lib/graphql/schema/member/has_directives.rb +81 -61
- data/lib/graphql/schema/member/has_fields.rb +149 -31
- data/lib/graphql/schema/member/has_interfaces.rb +143 -0
- data/lib/graphql/schema/member/has_validators.rb +32 -6
- data/lib/graphql/schema/member/relay_shortcuts.rb +47 -2
- data/lib/graphql/schema/member/scoped.rb +19 -0
- data/lib/graphql/schema/member/type_system_helpers.rb +17 -0
- data/lib/graphql/schema/member/validates_input.rb +6 -6
- data/lib/graphql/schema/member.rb +1 -6
- data/lib/graphql/schema/mutation.rb +0 -9
- data/lib/graphql/schema/non_null.rb +7 -7
- data/lib/graphql/schema/object.rb +30 -119
- data/lib/graphql/schema/printer.rb +23 -25
- data/lib/graphql/schema/relay_classic_mutation.rb +13 -90
- data/lib/graphql/schema/resolver/has_payload_type.rb +46 -11
- data/lib/graphql/schema/resolver.rb +101 -102
- data/lib/graphql/schema/scalar.rb +20 -21
- data/lib/graphql/schema/subscription.rb +45 -17
- data/lib/graphql/schema/timeout.rb +25 -29
- data/lib/graphql/schema/type_expression.rb +1 -1
- data/lib/graphql/schema/type_membership.rb +21 -4
- data/lib/graphql/schema/union.rb +15 -15
- data/lib/graphql/schema/unique_within_type.rb +1 -1
- data/lib/graphql/schema/validator/allow_blank_validator.rb +29 -0
- data/lib/graphql/schema/validator/allow_null_validator.rb +26 -0
- data/lib/graphql/schema/validator/exclusion_validator.rb +3 -1
- data/lib/graphql/schema/validator/format_validator.rb +4 -5
- data/lib/graphql/schema/validator/inclusion_validator.rb +3 -1
- data/lib/graphql/schema/validator/length_validator.rb +5 -3
- data/lib/graphql/schema/validator/numericality_validator.rb +13 -2
- data/lib/graphql/schema/validator/required_validator.rb +29 -15
- data/lib/graphql/schema/validator.rb +35 -27
- data/lib/graphql/schema/warden.rb +259 -132
- data/lib/graphql/schema/wrapper.rb +0 -5
- data/lib/graphql/schema.rb +658 -989
- data/lib/graphql/static_validation/all_rules.rb +3 -1
- data/lib/graphql/static_validation/base_visitor.rb +14 -28
- data/lib/graphql/static_validation/definition_dependencies.rb +7 -2
- data/lib/graphql/static_validation/error.rb +3 -1
- data/lib/graphql/static_validation/literal_validator.rb +21 -4
- data/lib/graphql/static_validation/rules/argument_literals_are_compatible.rb +1 -1
- data/lib/graphql/static_validation/rules/arguments_are_defined.rb +1 -1
- data/lib/graphql/static_validation/rules/directives_are_defined.rb +11 -5
- data/lib/graphql/static_validation/rules/directives_are_in_valid_locations.rb +13 -13
- data/lib/graphql/static_validation/rules/fields_have_appropriate_selections.rb +12 -4
- data/lib/graphql/static_validation/rules/fields_will_merge.rb +54 -28
- data/lib/graphql/static_validation/rules/fields_will_merge_error.rb +25 -4
- data/lib/graphql/static_validation/rules/fragments_are_finite.rb +2 -2
- data/lib/graphql/static_validation/rules/one_of_input_objects_are_valid.rb +66 -0
- data/lib/graphql/static_validation/rules/one_of_input_objects_are_valid_error.rb +29 -0
- data/lib/graphql/static_validation/rules/query_root_exists.rb +17 -0
- data/lib/graphql/static_validation/rules/query_root_exists_error.rb +26 -0
- data/lib/graphql/static_validation/rules/required_arguments_are_present.rb +5 -3
- data/lib/graphql/static_validation/rules/required_input_object_attributes_are_present.rb +4 -4
- data/lib/graphql/static_validation/rules/unique_directives_per_location.rb +13 -7
- data/lib/graphql/static_validation/rules/variable_default_values_are_correctly_typed.rb +1 -1
- data/lib/graphql/static_validation/rules/variable_usages_are_allowed.rb +13 -7
- data/lib/graphql/static_validation/validation_context.rb +16 -6
- data/lib/graphql/static_validation/validator.rb +11 -27
- data/lib/graphql/static_validation.rb +0 -3
- data/lib/graphql/string_encoding_error.rb +13 -3
- data/lib/graphql/subscriptions/action_cable_subscriptions.rb +46 -9
- data/lib/graphql/subscriptions/default_subscription_resolve_extension.rb +38 -1
- data/lib/graphql/subscriptions/event.rb +75 -37
- data/lib/graphql/subscriptions/serialize.rb +25 -3
- data/lib/graphql/subscriptions.rb +59 -47
- data/lib/graphql/testing/helpers.rb +129 -0
- data/lib/graphql/testing.rb +2 -0
- data/lib/graphql/tracing/active_support_notifications_trace.rb +16 -0
- data/lib/graphql/tracing/active_support_notifications_tracing.rb +6 -20
- data/lib/graphql/tracing/appoptics_trace.rb +251 -0
- data/lib/graphql/tracing/appoptics_tracing.rb +2 -2
- data/lib/graphql/tracing/appsignal_trace.rb +77 -0
- data/lib/graphql/tracing/appsignal_tracing.rb +15 -0
- data/lib/graphql/tracing/data_dog_trace.rb +183 -0
- data/lib/graphql/tracing/data_dog_tracing.rb +25 -15
- data/lib/graphql/{execution/instrumentation.rb → tracing/legacy_hooks_trace.rb} +10 -28
- data/lib/graphql/tracing/legacy_trace.rb +69 -0
- data/lib/graphql/tracing/new_relic_trace.rb +75 -0
- data/lib/graphql/tracing/notifications_trace.rb +45 -0
- data/lib/graphql/tracing/notifications_tracing.rb +59 -0
- data/lib/graphql/tracing/platform_trace.rb +118 -0
- data/lib/graphql/tracing/platform_tracing.rb +46 -49
- data/lib/graphql/tracing/{prometheus_tracing → prometheus_trace}/graphql_collector.rb +4 -2
- data/lib/graphql/tracing/prometheus_trace.rb +89 -0
- data/lib/graphql/tracing/prometheus_tracing.rb +3 -3
- data/lib/graphql/tracing/scout_trace.rb +72 -0
- data/lib/graphql/tracing/sentry_trace.rb +112 -0
- data/lib/graphql/tracing/statsd_trace.rb +56 -0
- data/lib/graphql/tracing/trace.rb +76 -0
- data/lib/graphql/tracing.rb +20 -41
- data/lib/graphql/type_kinds.rb +6 -3
- data/lib/graphql/types/big_int.rb +5 -1
- data/lib/graphql/types/int.rb +1 -1
- data/lib/graphql/types/iso_8601_date.rb +17 -6
- data/lib/graphql/types/iso_8601_date_time.rb +12 -1
- data/lib/graphql/types/iso_8601_duration.rb +77 -0
- data/lib/graphql/types/relay/base_connection.rb +16 -6
- data/lib/graphql/types/relay/connection_behaviors.rb +82 -32
- data/lib/graphql/types/relay/edge_behaviors.rb +36 -7
- data/lib/graphql/types/relay/has_node_field.rb +2 -2
- data/lib/graphql/types/relay/has_nodes_field.rb +2 -2
- data/lib/graphql/types/relay/node_behaviors.rb +12 -2
- data/lib/graphql/types/relay/page_info_behaviors.rb +7 -2
- data/lib/graphql/types/relay.rb +0 -3
- data/lib/graphql/types/string.rb +2 -2
- data/lib/graphql/types.rb +1 -0
- data/lib/graphql/unauthorized_error.rb +1 -1
- data/lib/graphql/version.rb +1 -1
- data/lib/graphql.rb +33 -95
- data/readme.md +13 -6
- metadata +102 -185
- data/lib/graphql/analysis/analyze_query.rb +0 -98
- data/lib/graphql/analysis/field_usage.rb +0 -45
- data/lib/graphql/analysis/max_query_complexity.rb +0 -26
- data/lib/graphql/analysis/max_query_depth.rb +0 -26
- data/lib/graphql/analysis/query_complexity.rb +0 -88
- data/lib/graphql/analysis/query_depth.rb +0 -43
- data/lib/graphql/analysis/reducer_state.rb +0 -48
- data/lib/graphql/argument.rb +0 -131
- data/lib/graphql/authorization.rb +0 -82
- data/lib/graphql/backtrace/legacy_tracer.rb +0 -56
- data/lib/graphql/backwards_compatibility.rb +0 -61
- data/lib/graphql/base_type.rb +0 -230
- data/lib/graphql/boolean_type.rb +0 -2
- data/lib/graphql/compatibility/execution_specification/counter_schema.rb +0 -53
- data/lib/graphql/compatibility/execution_specification/specification_schema.rb +0 -200
- data/lib/graphql/compatibility/execution_specification.rb +0 -436
- data/lib/graphql/compatibility/lazy_execution_specification/lazy_schema.rb +0 -111
- data/lib/graphql/compatibility/lazy_execution_specification.rb +0 -215
- data/lib/graphql/compatibility/query_parser_specification/parse_error_specification.rb +0 -87
- data/lib/graphql/compatibility/query_parser_specification/query_assertions.rb +0 -79
- data/lib/graphql/compatibility/query_parser_specification.rb +0 -266
- data/lib/graphql/compatibility/schema_parser_specification.rb +0 -682
- data/lib/graphql/compatibility.rb +0 -5
- data/lib/graphql/define/assign_argument.rb +0 -12
- data/lib/graphql/define/assign_connection.rb +0 -13
- data/lib/graphql/define/assign_enum_value.rb +0 -18
- data/lib/graphql/define/assign_global_id_field.rb +0 -11
- data/lib/graphql/define/assign_mutation_function.rb +0 -34
- data/lib/graphql/define/assign_object_field.rb +0 -42
- data/lib/graphql/define/defined_object_proxy.rb +0 -53
- data/lib/graphql/define/instance_definable.rb +0 -240
- data/lib/graphql/define/no_definition_error.rb +0 -7
- data/lib/graphql/define/non_null_with_bang.rb +0 -16
- data/lib/graphql/define/type_definer.rb +0 -31
- data/lib/graphql/define.rb +0 -31
- data/lib/graphql/deprecated_dsl.rb +0 -47
- data/lib/graphql/deprecation.rb +0 -13
- data/lib/graphql/directive/deprecated_directive.rb +0 -2
- data/lib/graphql/directive/include_directive.rb +0 -2
- data/lib/graphql/directive/skip_directive.rb +0 -2
- data/lib/graphql/directive.rb +0 -111
- data/lib/graphql/enum_type.rb +0 -129
- data/lib/graphql/execution/execute.rb +0 -333
- data/lib/graphql/execution/flatten.rb +0 -40
- data/lib/graphql/execution/lazy/resolve.rb +0 -91
- data/lib/graphql/execution/typecast.rb +0 -50
- data/lib/graphql/field/resolve.rb +0 -59
- data/lib/graphql/field.rb +0 -226
- data/lib/graphql/filter.rb +0 -53
- data/lib/graphql/float_type.rb +0 -2
- data/lib/graphql/function.rb +0 -128
- data/lib/graphql/id_type.rb +0 -2
- data/lib/graphql/input_object_type.rb +0 -138
- data/lib/graphql/int_type.rb +0 -2
- data/lib/graphql/interface_type.rb +0 -72
- data/lib/graphql/internal_representation/document.rb +0 -27
- data/lib/graphql/internal_representation/node.rb +0 -206
- data/lib/graphql/internal_representation/print.rb +0 -51
- data/lib/graphql/internal_representation/rewrite.rb +0 -184
- data/lib/graphql/internal_representation/scope.rb +0 -88
- data/lib/graphql/internal_representation/visit.rb +0 -36
- data/lib/graphql/internal_representation.rb +0 -7
- data/lib/graphql/language/lexer.rl +0 -262
- data/lib/graphql/language/parser.y +0 -543
- data/lib/graphql/list_type.rb +0 -80
- data/lib/graphql/non_null_type.rb +0 -71
- data/lib/graphql/object_type.rb +0 -130
- data/lib/graphql/query/arguments.rb +0 -189
- data/lib/graphql/query/arguments_cache.rb +0 -24
- data/lib/graphql/query/executor.rb +0 -52
- data/lib/graphql/query/literal_input.rb +0 -136
- data/lib/graphql/query/serial_execution/field_resolution.rb +0 -92
- data/lib/graphql/query/serial_execution/operation_resolution.rb +0 -19
- data/lib/graphql/query/serial_execution/selection_resolution.rb +0 -23
- data/lib/graphql/query/serial_execution/value_resolution.rb +0 -87
- data/lib/graphql/query/serial_execution.rb +0 -40
- data/lib/graphql/relay/array_connection.rb +0 -83
- data/lib/graphql/relay/base_connection.rb +0 -189
- data/lib/graphql/relay/connection_instrumentation.rb +0 -54
- data/lib/graphql/relay/connection_resolve.rb +0 -43
- data/lib/graphql/relay/connection_type.rb +0 -41
- data/lib/graphql/relay/edge.rb +0 -27
- data/lib/graphql/relay/edge_type.rb +0 -19
- data/lib/graphql/relay/edges_instrumentation.rb +0 -40
- data/lib/graphql/relay/global_id_resolve.rb +0 -18
- data/lib/graphql/relay/mongo_relation_connection.rb +0 -50
- data/lib/graphql/relay/mutation/instrumentation.rb +0 -23
- data/lib/graphql/relay/mutation/resolve.rb +0 -56
- data/lib/graphql/relay/mutation/result.rb +0 -38
- data/lib/graphql/relay/mutation.rb +0 -106
- data/lib/graphql/relay/node.rb +0 -39
- data/lib/graphql/relay/page_info.rb +0 -7
- data/lib/graphql/relay/relation_connection.rb +0 -188
- data/lib/graphql/relay/type_extensions.rb +0 -32
- data/lib/graphql/scalar_type.rb +0 -91
- data/lib/graphql/schema/base_64_bp.rb +0 -26
- data/lib/graphql/schema/catchall_middleware.rb +0 -35
- data/lib/graphql/schema/default_parse_error.rb +0 -10
- data/lib/graphql/schema/default_type_error.rb +0 -17
- data/lib/graphql/schema/member/accepts_definition.rb +0 -152
- data/lib/graphql/schema/member/cached_graphql_definition.rb +0 -31
- data/lib/graphql/schema/member/instrumentation.rb +0 -131
- data/lib/graphql/schema/middleware_chain.rb +0 -82
- data/lib/graphql/schema/possible_types.rb +0 -44
- data/lib/graphql/schema/rescue_middleware.rb +0 -60
- data/lib/graphql/schema/timeout_middleware.rb +0 -88
- data/lib/graphql/schema/traversal.rb +0 -228
- data/lib/graphql/schema/validation.rb +0 -313
- data/lib/graphql/static_validation/default_visitor.rb +0 -15
- data/lib/graphql/static_validation/no_validate_visitor.rb +0 -10
- data/lib/graphql/static_validation/type_stack.rb +0 -216
- data/lib/graphql/string_type.rb +0 -2
- data/lib/graphql/subscriptions/instrumentation.rb +0 -79
- data/lib/graphql/subscriptions/subscription_root.rb +0 -76
- data/lib/graphql/tracing/skylight_tracing.rb +0 -70
- data/lib/graphql/types/relay/default_relay.rb +0 -27
- data/lib/graphql/types/relay/node_field.rb +0 -25
- data/lib/graphql/types/relay/nodes_field.rb +0 -27
- data/lib/graphql/union_type.rb +0 -115
- data/lib/graphql/upgrader/member.rb +0 -937
- data/lib/graphql/upgrader/schema.rb +0 -38
@@ -2,6 +2,7 @@
|
|
2
2
|
module GraphQL
|
3
3
|
module Language
|
4
4
|
module Nodes
|
5
|
+
NONE = GraphQL::EmptyObjects::EMPTY_ARRAY
|
5
6
|
# {AbstractNode} is the base class for all nodes in a GraphQL AST.
|
6
7
|
#
|
7
8
|
# It provides some APIs for working with ASTs:
|
@@ -9,32 +10,36 @@ module GraphQL
|
|
9
10
|
# - `scalars` returns all scalar (Ruby) values attached to this one. Used for comparing nodes.
|
10
11
|
# - `to_query_string` turns an AST node into a GraphQL string
|
11
12
|
class AbstractNode
|
13
|
+
|
12
14
|
module DefinitionNode
|
13
15
|
# This AST node's {#line} returns the first line, which may be the description.
|
14
16
|
# @return [Integer] The first line of the definition (not the description)
|
15
17
|
attr_reader :definition_line
|
16
18
|
|
17
|
-
def initialize(
|
18
|
-
@definition_line =
|
19
|
-
super(
|
19
|
+
def initialize(definition_line: nil, **_rest)
|
20
|
+
@definition_line = definition_line
|
21
|
+
super(**_rest)
|
20
22
|
end
|
21
23
|
end
|
22
24
|
|
23
|
-
attr_reader :
|
25
|
+
attr_reader :filename
|
24
26
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
def initialize(options = {})
|
29
|
-
if options.key?(:position_source)
|
30
|
-
position_source = options.delete(:position_source)
|
31
|
-
@line = position_source.line
|
32
|
-
@col = position_source.col
|
33
|
-
end
|
27
|
+
def line
|
28
|
+
@line ||= (@source_string && @pos) ? @source_string[0..@pos].count("\n") + 1 : nil
|
29
|
+
end
|
34
30
|
|
35
|
-
|
31
|
+
def col
|
32
|
+
@col ||= if @source_string && @pos
|
33
|
+
if @pos == 0
|
34
|
+
1
|
35
|
+
else
|
36
|
+
@source_string[0..@pos].split("\n").last.length
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
36
40
|
|
37
|
-
|
41
|
+
def definition_line
|
42
|
+
@definition_line ||= (@source_string && @definition_pos) ? @source_string[0..@definition_pos].count("\n") + 1 : nil
|
38
43
|
end
|
39
44
|
|
40
45
|
# Value equality
|
@@ -46,7 +51,7 @@ module GraphQL
|
|
46
51
|
other.children == self.children
|
47
52
|
end
|
48
53
|
|
49
|
-
NO_CHILDREN =
|
54
|
+
NO_CHILDREN = GraphQL::EmptyObjects::EMPTY_ARRAY
|
50
55
|
|
51
56
|
# @return [Array<GraphQL::Language::Nodes::AbstractNode>] all nodes in the tree below this one
|
52
57
|
def children
|
@@ -141,18 +146,26 @@ module GraphQL
|
|
141
146
|
.gsub(/([a-z])([A-Z])/,'\1_\2') # insert underscores
|
142
147
|
.downcase # remove caps
|
143
148
|
|
144
|
-
child_class.module_eval <<-RUBY
|
149
|
+
child_class.module_eval <<-RUBY, __FILE__, __LINE__
|
145
150
|
def visit_method
|
146
151
|
:on_#{name_underscored}
|
147
152
|
end
|
148
153
|
|
149
154
|
class << self
|
150
155
|
attr_accessor :children_method_name
|
156
|
+
|
157
|
+
def visit_method
|
158
|
+
:on_#{name_underscored}
|
159
|
+
end
|
151
160
|
end
|
152
161
|
self.children_method_name = :#{name_underscored}s
|
153
162
|
RUBY
|
154
163
|
end
|
155
164
|
|
165
|
+
def children_of_type
|
166
|
+
@children_methods
|
167
|
+
end
|
168
|
+
|
156
169
|
private
|
157
170
|
|
158
171
|
# Name accessors which return lists of nodes,
|
@@ -183,8 +196,8 @@ module GraphQL
|
|
183
196
|
module_eval <<-RUBY, __FILE__, __LINE__
|
184
197
|
# Singular method: create a node with these options
|
185
198
|
# and return a new `self` which includes that node in this list.
|
186
|
-
def merge_#{method_name.to_s.sub(/s$/, "")}(node_opts)
|
187
|
-
merge(#{method_name}: #{method_name} + [#{node_type.name}.new(node_opts)])
|
199
|
+
def merge_#{method_name.to_s.sub(/s$/, "")}(**node_opts)
|
200
|
+
merge(#{method_name}: #{method_name} + [#{node_type.name}.new(**node_opts)])
|
188
201
|
end
|
189
202
|
RUBY
|
190
203
|
end
|
@@ -197,20 +210,30 @@ module GraphQL
|
|
197
210
|
else
|
198
211
|
module_eval <<-RUBY, __FILE__, __LINE__
|
199
212
|
def children
|
200
|
-
@children ||=
|
213
|
+
@children ||= begin
|
214
|
+
if #{children_of_type.keys.map { |k| "@#{k}.any?" }.join(" || ")}
|
215
|
+
new_children = []
|
216
|
+
#{children_of_type.keys.map { |k| "new_children.concat(@#{k})" }.join("; ")}
|
217
|
+
new_children.freeze
|
218
|
+
new_children
|
219
|
+
else
|
220
|
+
NO_CHILDREN
|
221
|
+
end
|
222
|
+
end
|
201
223
|
end
|
202
224
|
RUBY
|
203
225
|
end
|
204
226
|
end
|
205
227
|
|
206
228
|
if defined?(@scalar_methods)
|
207
|
-
if
|
208
|
-
|
229
|
+
if !@initialize_was_generated
|
230
|
+
@initialize_was_generated = true
|
231
|
+
generate_initialize
|
209
232
|
else
|
210
233
|
# This method was defined manually
|
211
234
|
end
|
212
235
|
else
|
213
|
-
raise "Can't
|
236
|
+
raise "Can't generate_initialize because scalar_methods wasn't called; call it before children_methods"
|
214
237
|
end
|
215
238
|
end
|
216
239
|
|
@@ -239,7 +262,15 @@ module GraphQL
|
|
239
262
|
end
|
240
263
|
end
|
241
264
|
|
242
|
-
|
265
|
+
DEFAULT_INITIALIZE_OPTIONS = [
|
266
|
+
"line: nil",
|
267
|
+
"col: nil",
|
268
|
+
"pos: nil",
|
269
|
+
"filename: nil",
|
270
|
+
"source_string: nil",
|
271
|
+
]
|
272
|
+
|
273
|
+
def generate_initialize
|
243
274
|
scalar_method_names = @scalar_methods
|
244
275
|
# TODO: These probably should be scalar methods, but `types` returns an array
|
245
276
|
[:types, :description].each do |extra_method|
|
@@ -255,15 +286,33 @@ module GraphQL
|
|
255
286
|
return
|
256
287
|
else
|
257
288
|
arguments = scalar_method_names.map { |m| "#{m}: nil"} +
|
258
|
-
@children_methods.keys.map { |m| "#{m}: NO_CHILDREN" }
|
289
|
+
@children_methods.keys.map { |m| "#{m}: NO_CHILDREN" } +
|
290
|
+
DEFAULT_INITIALIZE_OPTIONS
|
259
291
|
|
260
292
|
assignments = scalar_method_names.map { |m| "@#{m} = #{m}"} +
|
261
293
|
@children_methods.keys.map { |m| "@#{m} = #{m}.freeze" }
|
262
294
|
|
295
|
+
if name.end_with?("Definition") && name != "FragmentDefinition"
|
296
|
+
arguments << "definition_pos: nil"
|
297
|
+
assignments << "@definition_pos = definition_pos"
|
298
|
+
end
|
299
|
+
|
300
|
+
keywords = scalar_method_names.map { |m| "#{m}: #{m}"} +
|
301
|
+
@children_methods.keys.map { |m| "#{m}: #{m}" }
|
302
|
+
|
263
303
|
module_eval <<-RUBY, __FILE__, __LINE__
|
264
|
-
def
|
304
|
+
def initialize(#{arguments.join(", ")})
|
305
|
+
@line = line
|
306
|
+
@col = col
|
307
|
+
@pos = pos
|
308
|
+
@filename = filename
|
309
|
+
@source_string = source_string
|
265
310
|
#{assignments.join("\n")}
|
266
311
|
end
|
312
|
+
|
313
|
+
def self.from_a(filename, line, col, #{(scalar_method_names + @children_methods.keys).join(", ")})
|
314
|
+
self.new(filename: filename, line: line, col: col, #{keywords.join(", ")})
|
315
|
+
end
|
267
316
|
RUBY
|
268
317
|
end
|
269
318
|
end
|
@@ -291,10 +340,10 @@ module GraphQL
|
|
291
340
|
# @return [String] the key for this argument
|
292
341
|
|
293
342
|
# @!attribute value
|
294
|
-
# @return [String, Float, Integer, Boolean, Array, InputObject] The value passed for this key
|
343
|
+
# @return [String, Float, Integer, Boolean, Array, InputObject, VariableIdentifier] The value passed for this key
|
295
344
|
|
296
345
|
def children
|
297
|
-
@children ||= Array(value).flatten.select { |v| v.is_a?(AbstractNode) }
|
346
|
+
@children ||= Array(value).flatten.tap { _1.select! { |v| v.is_a?(AbstractNode) } }
|
298
347
|
end
|
299
348
|
end
|
300
349
|
|
@@ -307,44 +356,14 @@ module GraphQL
|
|
307
356
|
end
|
308
357
|
|
309
358
|
class DirectiveDefinition < AbstractNode
|
310
|
-
include DefinitionNode
|
311
359
|
attr_reader :description
|
312
|
-
scalar_methods :name
|
360
|
+
scalar_methods :name, :repeatable
|
313
361
|
children_methods(
|
314
|
-
locations: Nodes::DirectiveLocation,
|
315
362
|
arguments: Nodes::Argument,
|
363
|
+
locations: Nodes::DirectiveLocation,
|
316
364
|
)
|
317
365
|
end
|
318
366
|
|
319
|
-
# This is the AST root for normal queries
|
320
|
-
#
|
321
|
-
# @example Deriving a document by parsing a string
|
322
|
-
# document = GraphQL.parse(query_string)
|
323
|
-
#
|
324
|
-
# @example Creating a string from a document
|
325
|
-
# document.to_query_string
|
326
|
-
# # { ... }
|
327
|
-
#
|
328
|
-
# @example Creating a custom string from a document
|
329
|
-
# class VariableScrubber < GraphQL::Language::Printer
|
330
|
-
# def print_argument(arg)
|
331
|
-
# "#{arg.name}: <HIDDEN>"
|
332
|
-
# end
|
333
|
-
# end
|
334
|
-
#
|
335
|
-
# document.to_query_string(printer: VariableSrubber.new)
|
336
|
-
#
|
337
|
-
class Document < AbstractNode
|
338
|
-
scalar_methods false
|
339
|
-
children_methods(definitions: nil)
|
340
|
-
# @!attribute definitions
|
341
|
-
# @return [Array<OperationDefinition, FragmentDefinition>] top-level GraphQL units: operations or fragments
|
342
|
-
|
343
|
-
def slice_definition(name)
|
344
|
-
GraphQL::Language::DefinitionSlice.slice(self, name)
|
345
|
-
end
|
346
|
-
end
|
347
|
-
|
348
367
|
# An enum value. The string is available as {#name}.
|
349
368
|
class Enum < NameOnlyNode
|
350
369
|
end
|
@@ -355,8 +374,6 @@ module GraphQL
|
|
355
374
|
|
356
375
|
# A single selection in a GraphQL query.
|
357
376
|
class Field < AbstractNode
|
358
|
-
NONE = [].freeze
|
359
|
-
|
360
377
|
scalar_methods :name, :alias
|
361
378
|
children_methods({
|
362
379
|
arguments: GraphQL::Language::Nodes::Argument,
|
@@ -367,13 +384,22 @@ module GraphQL
|
|
367
384
|
# @!attribute selections
|
368
385
|
# @return [Array<Nodes::Field>] Selections on this object (or empty array if this is a scalar field)
|
369
386
|
|
370
|
-
def
|
371
|
-
@name =
|
372
|
-
@arguments =
|
373
|
-
@directives =
|
374
|
-
@selections =
|
387
|
+
def initialize(name: nil, arguments: NONE, directives: NONE, selections: NONE, field_alias: nil, line: nil, col: nil, pos: nil, filename: nil, source_string: nil)
|
388
|
+
@name = name
|
389
|
+
@arguments = arguments || NONE
|
390
|
+
@directives = directives || NONE
|
391
|
+
@selections = selections || NONE
|
375
392
|
# oops, alias is a keyword:
|
376
|
-
@alias =
|
393
|
+
@alias = field_alias
|
394
|
+
@line = line
|
395
|
+
@col = col
|
396
|
+
@pos = pos
|
397
|
+
@filename = filename
|
398
|
+
@source_string = source_string
|
399
|
+
end
|
400
|
+
|
401
|
+
def self.from_a(filename, line, col, field_alias, name, arguments, directives, selections) # rubocop:disable Metrics/ParameterLists
|
402
|
+
self.new(filename: filename, line: line, col: col, field_alias: field_alias, name: name, arguments: arguments, directives: directives, selections: selections)
|
377
403
|
end
|
378
404
|
|
379
405
|
# Override this because default is `:fields`
|
@@ -382,25 +408,33 @@ module GraphQL
|
|
382
408
|
|
383
409
|
# A reusable fragment, defined at document-level.
|
384
410
|
class FragmentDefinition < AbstractNode
|
411
|
+
scalar_methods :name, :type
|
412
|
+
children_methods({
|
413
|
+
selections: GraphQL::Language::Nodes::Field,
|
414
|
+
directives: GraphQL::Language::Nodes::Directive,
|
415
|
+
})
|
416
|
+
|
417
|
+
self.children_method_name = :definitions
|
385
418
|
# @!attribute name
|
386
419
|
# @return [String] the identifier for this fragment, which may be applied with `...#{name}`
|
387
420
|
|
388
421
|
# @!attribute type
|
389
422
|
# @return [String] the type condition for this fragment (name of type which it may apply to)
|
390
|
-
def
|
423
|
+
def initialize(name: nil, type: nil, directives: NONE, selections: NONE, filename: nil, pos: nil, source_string: nil, line: nil, col: nil)
|
391
424
|
@name = name
|
392
425
|
@type = type
|
393
426
|
@directives = directives
|
394
427
|
@selections = selections
|
428
|
+
@filename = filename
|
429
|
+
@pos = pos
|
430
|
+
@source_string = source_string
|
431
|
+
@line = line
|
432
|
+
@col = col
|
395
433
|
end
|
396
434
|
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
directives: GraphQL::Language::Nodes::Directive,
|
401
|
-
})
|
402
|
-
|
403
|
-
self.children_method_name = :definitions
|
435
|
+
def self.from_a(filename, line, col, name, type, directives, selections)
|
436
|
+
self.new(filename: filename, line: line, col: col, name: name, type: type, directives: directives, selections: selections)
|
437
|
+
end
|
404
438
|
end
|
405
439
|
|
406
440
|
# Application of a named fragment in a selection
|
@@ -418,8 +452,8 @@ module GraphQL
|
|
418
452
|
class InlineFragment < AbstractNode
|
419
453
|
scalar_methods :type
|
420
454
|
children_methods({
|
421
|
-
selections: GraphQL::Language::Nodes::Field,
|
422
455
|
directives: GraphQL::Language::Nodes::Directive,
|
456
|
+
selections: GraphQL::Language::Nodes::Field,
|
423
457
|
})
|
424
458
|
|
425
459
|
self.children_method_name = :selections
|
@@ -467,7 +501,6 @@ module GraphQL
|
|
467
501
|
end
|
468
502
|
end
|
469
503
|
|
470
|
-
|
471
504
|
# A list type definition, denoted with `[...]` (used for variable type definitions)
|
472
505
|
class ListType < WrapperType
|
473
506
|
end
|
@@ -479,7 +512,7 @@ module GraphQL
|
|
479
512
|
# An operation-level query variable
|
480
513
|
class VariableDefinition < AbstractNode
|
481
514
|
scalar_methods :name, :type, :default_value
|
482
|
-
children_methods
|
515
|
+
children_methods(directives: Directive)
|
483
516
|
# @!attribute default_value
|
484
517
|
# @return [String, Integer, Float, Boolean, Array, NullValue] A Ruby value to use if no other value is provided
|
485
518
|
|
@@ -499,8 +532,8 @@ module GraphQL
|
|
499
532
|
scalar_methods :operation_type, :name
|
500
533
|
children_methods({
|
501
534
|
variables: GraphQL::Language::Nodes::VariableDefinition,
|
502
|
-
selections: GraphQL::Language::Nodes::Field,
|
503
535
|
directives: GraphQL::Language::Nodes::Directive,
|
536
|
+
selections: GraphQL::Language::Nodes::Field,
|
504
537
|
})
|
505
538
|
|
506
539
|
# @!attribute variables
|
@@ -518,6 +551,35 @@ module GraphQL
|
|
518
551
|
self.children_method_name = :definitions
|
519
552
|
end
|
520
553
|
|
554
|
+
# This is the AST root for normal queries
|
555
|
+
#
|
556
|
+
# @example Deriving a document by parsing a string
|
557
|
+
# document = GraphQL.parse(query_string)
|
558
|
+
#
|
559
|
+
# @example Creating a string from a document
|
560
|
+
# document.to_query_string
|
561
|
+
# # { ... }
|
562
|
+
#
|
563
|
+
# @example Creating a custom string from a document
|
564
|
+
# class VariableScrubber < GraphQL::Language::Printer
|
565
|
+
# def print_argument(arg)
|
566
|
+
# print_string("#{arg.name}: <HIDDEN>")
|
567
|
+
# end
|
568
|
+
# end
|
569
|
+
#
|
570
|
+
# document.to_query_string(printer: VariableScrubber.new)
|
571
|
+
#
|
572
|
+
class Document < AbstractNode
|
573
|
+
scalar_methods false
|
574
|
+
children_methods(definitions: nil)
|
575
|
+
# @!attribute definitions
|
576
|
+
# @return [Array<OperationDefinition, FragmentDefinition>] top-level GraphQL units: operations or fragments
|
577
|
+
|
578
|
+
def slice_definition(name)
|
579
|
+
GraphQL::Language::DefinitionSlice.slice(self, name)
|
580
|
+
end
|
581
|
+
end
|
582
|
+
|
521
583
|
# A type name, used for variable definitions
|
522
584
|
class TypeName < NameOnlyNode
|
523
585
|
end
|
@@ -528,7 +590,6 @@ module GraphQL
|
|
528
590
|
end
|
529
591
|
|
530
592
|
class SchemaDefinition < AbstractNode
|
531
|
-
include DefinitionNode
|
532
593
|
scalar_methods :query, :mutation, :subscription
|
533
594
|
children_methods({
|
534
595
|
directives: GraphQL::Language::Nodes::Directive,
|
@@ -545,7 +606,6 @@ module GraphQL
|
|
545
606
|
end
|
546
607
|
|
547
608
|
class ScalarTypeDefinition < AbstractNode
|
548
|
-
include DefinitionNode
|
549
609
|
attr_reader :description
|
550
610
|
scalar_methods :name
|
551
611
|
children_methods({
|
@@ -563,7 +623,6 @@ module GraphQL
|
|
563
623
|
end
|
564
624
|
|
565
625
|
class InputValueDefinition < AbstractNode
|
566
|
-
include DefinitionNode
|
567
626
|
attr_reader :description
|
568
627
|
scalar_methods :name, :type, :default_value
|
569
628
|
children_methods({
|
@@ -573,12 +632,11 @@ module GraphQL
|
|
573
632
|
end
|
574
633
|
|
575
634
|
class FieldDefinition < AbstractNode
|
576
|
-
include DefinitionNode
|
577
635
|
attr_reader :description
|
578
636
|
scalar_methods :name, :type
|
579
637
|
children_methods({
|
580
|
-
directives: GraphQL::Language::Nodes::Directive,
|
581
638
|
arguments: GraphQL::Language::Nodes::InputValueDefinition,
|
639
|
+
directives: GraphQL::Language::Nodes::Directive,
|
582
640
|
})
|
583
641
|
self.children_method_name = :fields
|
584
642
|
|
@@ -594,7 +652,6 @@ module GraphQL
|
|
594
652
|
end
|
595
653
|
|
596
654
|
class ObjectTypeDefinition < AbstractNode
|
597
|
-
include DefinitionNode
|
598
655
|
attr_reader :description
|
599
656
|
scalar_methods :name, :interfaces
|
600
657
|
children_methods({
|
@@ -614,10 +671,10 @@ module GraphQL
|
|
614
671
|
end
|
615
672
|
|
616
673
|
class InterfaceTypeDefinition < AbstractNode
|
617
|
-
include DefinitionNode
|
618
674
|
attr_reader :description
|
619
675
|
scalar_methods :name
|
620
676
|
children_methods({
|
677
|
+
interfaces: GraphQL::Language::Nodes::TypeName,
|
621
678
|
directives: GraphQL::Language::Nodes::Directive,
|
622
679
|
fields: GraphQL::Language::Nodes::FieldDefinition,
|
623
680
|
})
|
@@ -627,6 +684,7 @@ module GraphQL
|
|
627
684
|
class InterfaceTypeExtension < AbstractNode
|
628
685
|
scalar_methods :name
|
629
686
|
children_methods({
|
687
|
+
interfaces: GraphQL::Language::Nodes::TypeName,
|
630
688
|
directives: GraphQL::Language::Nodes::Directive,
|
631
689
|
fields: GraphQL::Language::Nodes::FieldDefinition,
|
632
690
|
})
|
@@ -634,7 +692,6 @@ module GraphQL
|
|
634
692
|
end
|
635
693
|
|
636
694
|
class UnionTypeDefinition < AbstractNode
|
637
|
-
include DefinitionNode
|
638
695
|
attr_reader :description, :types
|
639
696
|
scalar_methods :name
|
640
697
|
children_methods({
|
@@ -653,7 +710,6 @@ module GraphQL
|
|
653
710
|
end
|
654
711
|
|
655
712
|
class EnumValueDefinition < AbstractNode
|
656
|
-
include DefinitionNode
|
657
713
|
attr_reader :description
|
658
714
|
scalar_methods :name
|
659
715
|
children_methods({
|
@@ -663,7 +719,6 @@ module GraphQL
|
|
663
719
|
end
|
664
720
|
|
665
721
|
class EnumTypeDefinition < AbstractNode
|
666
|
-
include DefinitionNode
|
667
722
|
attr_reader :description
|
668
723
|
scalar_methods :name
|
669
724
|
children_methods({
|
@@ -683,7 +738,6 @@ module GraphQL
|
|
683
738
|
end
|
684
739
|
|
685
740
|
class InputObjectTypeDefinition < AbstractNode
|
686
|
-
include DefinitionNode
|
687
741
|
attr_reader :description
|
688
742
|
scalar_methods :name
|
689
743
|
children_methods({
|