graphql 1.12.12 → 2.4.8
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 +60 -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 +8 -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 +22 -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/analyzer.rb +89 -0
- data/lib/graphql/analysis/field_usage.rb +65 -28
- data/lib/graphql/analysis/max_query_complexity.rb +11 -17
- data/lib/graphql/analysis/max_query_depth.rb +13 -19
- data/lib/graphql/analysis/query_complexity.rb +156 -61
- data/lib/graphql/analysis/query_depth.rb +38 -23
- data/lib/graphql/analysis/visitor.rb +283 -0
- data/lib/graphql/analysis.rb +90 -6
- data/lib/graphql/autoload.rb +38 -0
- data/lib/graphql/backtrace/inspect_result.rb +0 -12
- 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/current.rb +52 -0
- data/lib/graphql/dataloader/async_dataloader.rb +89 -0
- data/lib/graphql/dataloader/null_dataloader.rb +4 -2
- data/lib/graphql/dataloader/request.rb +5 -0
- data/lib/graphql/dataloader/source.rb +125 -33
- data/lib/graphql/dataloader.rb +193 -143
- 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/argument_value.rb +5 -1
- data/lib/graphql/execution/interpreter/arguments.rb +2 -2
- data/lib/graphql/execution/interpreter/arguments_cache.rb +33 -36
- data/lib/graphql/execution/interpreter/resolve.rb +38 -4
- data/lib/graphql/execution/interpreter/runtime/graphql_result.rb +175 -0
- data/lib/graphql/execution/interpreter/runtime.rb +447 -403
- data/lib/graphql/execution/interpreter.rb +126 -80
- data/lib/graphql/execution/lazy.rb +11 -21
- data/lib/graphql/execution/lookahead.rb +133 -55
- 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 +6 -4
- 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 +4 -4
- data/lib/graphql/introspection/input_value_type.rb +10 -4
- data/lib/graphql/introspection/schema_type.rb +17 -15
- data/lib/graphql/introspection/type_type.rb +29 -16
- data/lib/graphql/introspection.rb +6 -2
- data/lib/graphql/invalid_null_error.rb +1 -1
- data/lib/graphql/language/block_string.rb +37 -25
- data/lib/graphql/language/cache.rb +13 -0
- data/lib/graphql/language/comment.rb +18 -0
- data/lib/graphql/language/definition_slice.rb +1 -1
- data/lib/graphql/language/document_from_schema_definition.rb +122 -81
- data/lib/graphql/language/lexer.rb +364 -1467
- data/lib/graphql/language/nodes.rb +197 -106
- data/lib/graphql/language/parser.rb +799 -1920
- data/lib/graphql/language/printer.rb +372 -160
- data/lib/graphql/language/sanitized_printer.rb +25 -27
- data/lib/graphql/language/static_visitor.rb +167 -0
- data/lib/graphql/language/visitor.rb +188 -141
- data/lib/graphql/language.rb +62 -1
- 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 +146 -222
- data/lib/graphql/query/input_validation_result.rb +10 -1
- data/lib/graphql/query/null_context.rb +15 -32
- data/lib/graphql/query/validation_pipeline.rb +15 -39
- data/lib/graphql/query/variable_validation_error.rb +3 -3
- data/lib/graphql/query/variables.rb +35 -17
- data/lib/graphql/query.rb +149 -82
- data/lib/graphql/railtie.rb +15 -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/graphql/field_type_in_block.rb +144 -0
- data/lib/graphql/rubocop/graphql/root_types_in_block.rb +38 -0
- data/lib/graphql/rubocop.rb +6 -0
- data/lib/graphql/schema/addition.rb +98 -54
- data/lib/graphql/schema/always_visible.rb +14 -0
- data/lib/graphql/schema/argument.rb +179 -82
- data/lib/graphql/schema/base_64_encoder.rb +3 -5
- data/lib/graphql/schema/build_from_definition.rb +77 -39
- data/lib/graphql/schema/directive/feature.rb +1 -1
- data/lib/graphql/schema/directive/flagged.rb +4 -4
- 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 +36 -22
- data/lib/graphql/schema/enum.rb +158 -63
- data/lib/graphql/schema/enum_value.rb +12 -21
- data/lib/graphql/schema/field/connection_extension.rb +7 -17
- data/lib/graphql/schema/field/scope_extension.rb +8 -1
- data/lib/graphql/schema/field.rb +521 -359
- 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 +160 -0
- data/lib/graphql/schema/input_object.rb +148 -99
- data/lib/graphql/schema/interface.rb +41 -64
- data/lib/graphql/schema/introspection_system.rb +12 -26
- data/lib/graphql/schema/late_bound_type.rb +12 -2
- data/lib/graphql/schema/list.rb +18 -7
- data/lib/graphql/schema/loader.rb +6 -5
- data/lib/graphql/schema/member/base_dsl_methods.rb +32 -18
- data/lib/graphql/schema/member/build_type.rb +16 -13
- data/lib/graphql/schema/member/has_arguments.rb +270 -86
- 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 +169 -31
- data/lib/graphql/schema/member/has_interfaces.rb +143 -0
- data/lib/graphql/schema/member/has_unresolved_type_error.rb +5 -1
- 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 +16 -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 +7 -9
- data/lib/graphql/schema/non_null.rb +7 -7
- data/lib/graphql/schema/object.rb +38 -119
- data/lib/graphql/schema/printer.rb +24 -25
- data/lib/graphql/schema/relay_classic_mutation.rb +13 -91
- data/lib/graphql/schema/resolver/has_payload_type.rb +46 -11
- data/lib/graphql/schema/resolver.rb +118 -115
- data/lib/graphql/schema/scalar.rb +20 -21
- data/lib/graphql/schema/subscription.rb +95 -21
- data/lib/graphql/schema/timeout.rb +25 -29
- data/lib/graphql/schema/type_expression.rb +2 -2
- data/lib/graphql/schema/type_membership.rb +21 -4
- data/lib/graphql/schema/union.rb +16 -16
- data/lib/graphql/schema/unique_within_type.rb +1 -1
- data/lib/graphql/schema/validator/all_validator.rb +62 -0
- 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 +56 -18
- data/lib/graphql/schema/validator.rb +38 -28
- data/lib/graphql/schema/visibility/migration.rb +188 -0
- data/lib/graphql/schema/visibility/profile.rb +359 -0
- data/lib/graphql/schema/visibility/visit.rb +190 -0
- data/lib/graphql/schema/visibility.rb +294 -0
- data/lib/graphql/schema/warden.rb +423 -134
- data/lib/graphql/schema/wrapper.rb +0 -5
- data/lib/graphql/schema.rb +1015 -1057
- data/lib/graphql/static_validation/all_rules.rb +3 -1
- data/lib/graphql/static_validation/base_visitor.rb +15 -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 +24 -7
- data/lib/graphql/static_validation/rules/argument_literals_are_compatible.rb +1 -1
- data/lib/graphql/static_validation/rules/argument_names_are_unique.rb +1 -1
- data/lib/graphql/static_validation/rules/arguments_are_defined.rb +4 -3
- data/lib/graphql/static_validation/rules/directives_are_defined.rb +13 -7
- data/lib/graphql/static_validation/rules/directives_are_in_valid_locations.rb +15 -13
- data/lib/graphql/static_validation/rules/fields_are_defined_on_type.rb +12 -2
- data/lib/graphql/static_validation/rules/fields_have_appropriate_selections.rb +13 -5
- data/lib/graphql/static_validation/rules/fields_will_merge.rb +62 -35
- data/lib/graphql/static_validation/rules/fields_will_merge_error.rb +25 -4
- data/lib/graphql/static_validation/rules/fragment_spreads_are_possible.rb +3 -3
- data/lib/graphql/static_validation/rules/fragment_types_exist.rb +12 -2
- data/lib/graphql/static_validation/rules/fragments_are_finite.rb +2 -2
- data/lib/graphql/static_validation/rules/fragments_are_on_composite_types.rb +1 -1
- data/lib/graphql/static_validation/rules/mutation_root_exists.rb +1 -1
- data/lib/graphql/static_validation/rules/no_definitions_are_present.rb +1 -1
- 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 +7 -5
- data/lib/graphql/static_validation/rules/required_input_object_attributes_are_present.rb +5 -5
- data/lib/graphql/static_validation/rules/subscription_root_exists.rb +1 -1
- data/lib/graphql/static_validation/rules/unique_directives_per_location.rb +14 -8
- data/lib/graphql/static_validation/rules/variable_default_values_are_correctly_typed.rb +18 -27
- data/lib/graphql/static_validation/rules/variable_names_are_unique.rb +1 -1
- data/lib/graphql/static_validation/rules/variable_usages_are_allowed.rb +14 -8
- data/lib/graphql/static_validation/rules/variables_are_input_types.rb +11 -2
- data/lib/graphql/static_validation/validation_context.rb +32 -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 +49 -11
- data/lib/graphql/subscriptions/broadcast_analyzer.rb +11 -5
- data/lib/graphql/subscriptions/default_subscription_resolve_extension.rb +40 -1
- data/lib/graphql/subscriptions/event.rb +87 -38
- data/lib/graphql/subscriptions/serialize.rb +27 -3
- data/lib/graphql/subscriptions.rb +63 -49
- data/lib/graphql/testing/helpers.rb +155 -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 +253 -0
- data/lib/graphql/tracing/appoptics_tracing.rb +4 -2
- data/lib/graphql/tracing/appsignal_trace.rb +79 -0
- data/lib/graphql/tracing/appsignal_tracing.rb +17 -0
- data/lib/graphql/tracing/call_legacy_tracers.rb +66 -0
- data/lib/graphql/tracing/data_dog_trace.rb +185 -0
- data/lib/graphql/tracing/data_dog_tracing.rb +27 -15
- data/lib/graphql/{execution/instrumentation.rb → tracing/legacy_hooks_trace.rb} +11 -28
- data/lib/graphql/tracing/legacy_trace.rb +12 -0
- data/lib/graphql/tracing/new_relic_trace.rb +77 -0
- data/lib/graphql/tracing/new_relic_tracing.rb +2 -0
- data/lib/graphql/tracing/notifications_trace.rb +45 -0
- data/lib/graphql/tracing/notifications_tracing.rb +61 -0
- data/lib/graphql/tracing/null_trace.rb +9 -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 +6 -2
- data/lib/graphql/tracing/prometheus_trace.rb +94 -0
- data/lib/graphql/tracing/prometheus_tracing.rb +5 -3
- data/lib/graphql/tracing/scout_trace.rb +74 -0
- data/lib/graphql/tracing/scout_tracing.rb +2 -0
- data/lib/graphql/tracing/sentry_trace.rb +114 -0
- data/lib/graphql/tracing/statsd_trace.rb +58 -0
- data/lib/graphql/tracing/statsd_tracing.rb +2 -0
- data/lib/graphql/tracing/trace.rb +79 -0
- data/lib/graphql/tracing.rb +29 -52
- data/lib/graphql/type_kinds.rb +7 -4
- 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 +92 -32
- data/lib/graphql/types/relay/edge_behaviors.rb +46 -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 +11 -2
- data/lib/graphql/types/relay.rb +0 -3
- data/lib/graphql/types/string.rb +2 -2
- data/lib/graphql/types.rb +18 -10
- data/lib/graphql/unauthorized_enum_value_error.rb +13 -0
- data/lib/graphql/unauthorized_error.rb +1 -1
- data/lib/graphql/version.rb +1 -1
- data/lib/graphql.rb +82 -137
- data/readme.md +13 -6
- metadata +127 -186
- data/lib/graphql/analysis/analyze_query.rb +0 -98
- data/lib/graphql/analysis/ast/analyzer.rb +0 -84
- data/lib/graphql/analysis/ast/field_usage.rb +0 -28
- data/lib/graphql/analysis/ast/max_query_complexity.rb +0 -23
- data/lib/graphql/analysis/ast/max_query_depth.rb +0 -22
- data/lib/graphql/analysis/ast/query_complexity.rb +0 -234
- data/lib/graphql/analysis/ast/query_depth.rb +0 -56
- data/lib/graphql/analysis/ast/visitor.rb +0 -268
- data/lib/graphql/analysis/ast.rb +0 -91
- 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/language/token.rb +0 -38
- 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/invalid_type_error.rb +0 -7
- 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
@@ -4,8 +4,6 @@ module GraphQL
|
|
4
4
|
module Interface
|
5
5
|
include GraphQL::Schema::Member::GraphQLTypeNames
|
6
6
|
module DefinitionMethods
|
7
|
-
include GraphQL::Schema::Member::CachedGraphQLDefinition
|
8
|
-
include GraphQL::Relay::TypeExtensions
|
9
7
|
include GraphQL::Schema::Member::BaseDSLMethods
|
10
8
|
# ConfigurationExtension's responsibilities are in `def included` below
|
11
9
|
include GraphQL::Schema::Member::TypeSystemHelpers
|
@@ -16,11 +14,21 @@ module GraphQL
|
|
16
14
|
include GraphQL::Schema::Member::HasAstNode
|
17
15
|
include GraphQL::Schema::Member::HasUnresolvedTypeError
|
18
16
|
include GraphQL::Schema::Member::HasDirectives
|
17
|
+
include GraphQL::Schema::Member::HasInterfaces
|
19
18
|
|
20
19
|
# Methods defined in this block will be:
|
21
20
|
# - Added as class methods to this interface
|
22
21
|
# - Added as class methods to all child interfaces
|
23
22
|
def definition_methods(&block)
|
23
|
+
# Use an instance variable to tell whether it's been included previously or not;
|
24
|
+
# You can't use constant detection because constants are brought into scope
|
25
|
+
# by `include`, which has already happened at this point.
|
26
|
+
if !defined?(@_definition_methods)
|
27
|
+
defn_methods_module = Module.new
|
28
|
+
@_definition_methods = defn_methods_module
|
29
|
+
const_set(:DefinitionMethods, defn_methods_module)
|
30
|
+
extend(self::DefinitionMethods)
|
31
|
+
end
|
24
32
|
self::DefinitionMethods.module_eval(&block)
|
25
33
|
end
|
26
34
|
|
@@ -29,16 +37,6 @@ module GraphQL
|
|
29
37
|
true
|
30
38
|
end
|
31
39
|
|
32
|
-
# The interface is accessible if any of its possible types are accessible
|
33
|
-
def accessible?(context)
|
34
|
-
context.schema.possible_types(self, context).each do |type|
|
35
|
-
if context.schema.accessible?(type, context)
|
36
|
-
return true
|
37
|
-
end
|
38
|
-
end
|
39
|
-
false
|
40
|
-
end
|
41
|
-
|
42
40
|
def type_membership_class(membership_class = nil)
|
43
41
|
if membership_class
|
44
42
|
@type_membership_class = membership_class
|
@@ -57,32 +55,26 @@ module GraphQL
|
|
57
55
|
child_class.extend(Schema::Interface::DefinitionMethods)
|
58
56
|
|
59
57
|
child_class.type_membership_class(self.type_membership_class)
|
60
|
-
child_class.
|
61
|
-
|
62
|
-
|
58
|
+
child_class.ancestors.reverse_each do |ancestor|
|
59
|
+
if ancestor.const_defined?(:DefinitionMethods) && ancestor != child_class
|
60
|
+
child_class.extend(ancestor::DefinitionMethods)
|
61
|
+
end
|
63
62
|
end
|
64
63
|
|
65
|
-
# Use an instance variable to tell whether it's been included previously or not;
|
66
|
-
# You can't use constant detection because constants are brought into scope
|
67
|
-
# by `include`, which has already happened at this point.
|
68
|
-
if !child_class.instance_variable_defined?(:@_definition_methods)
|
69
|
-
defn_methods_module = Module.new
|
70
|
-
child_class.instance_variable_set(:@_definition_methods, defn_methods_module)
|
71
|
-
child_class.const_set(:DefinitionMethods, defn_methods_module)
|
72
|
-
child_class.extend(child_class::DefinitionMethods)
|
73
|
-
end
|
74
64
|
child_class.introspection(introspection)
|
75
65
|
child_class.description(description)
|
76
|
-
|
77
|
-
child_class.graphql_name(overridden_graphql_name)
|
78
|
-
end
|
66
|
+
child_class.comment(nil)
|
79
67
|
# If interfaces are mixed into each other, only define this class once
|
80
68
|
if !child_class.const_defined?(:UnresolvedTypeError, false)
|
81
69
|
add_unresolved_type_error(child_class)
|
82
70
|
end
|
83
71
|
elsif child_class < GraphQL::Schema::Object
|
84
72
|
# This is being included into an object type, make sure it's using `implements(...)`
|
85
|
-
backtrace_line =
|
73
|
+
backtrace_line = caller_locations(0, 10).find do |location|
|
74
|
+
location.base_label == "implements" &&
|
75
|
+
location.path.end_with?("schema/member/has_interfaces.rb")
|
76
|
+
end
|
77
|
+
|
86
78
|
if !backtrace_line
|
87
79
|
raise "Attach interfaces using `implements(#{self})`, not `include(#{self})`"
|
88
80
|
end
|
@@ -91,52 +83,37 @@ module GraphQL
|
|
91
83
|
super
|
92
84
|
end
|
93
85
|
|
86
|
+
# Register other Interface or Object types as implementers of this Interface.
|
87
|
+
#
|
88
|
+
# When those Interfaces or Objects aren't used as the return values of fields,
|
89
|
+
# they may have to be registered using this method so that GraphQL-Ruby can find them.
|
90
|
+
# @param types [Class, Module]
|
91
|
+
# @return [Array<Module, Class>] Implementers of this interface, if they're registered
|
94
92
|
def orphan_types(*types)
|
95
|
-
if types.
|
96
|
-
@orphan_types
|
93
|
+
if !types.empty?
|
94
|
+
@orphan_types ||= []
|
95
|
+
@orphan_types.concat(types)
|
97
96
|
else
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
type_defn.ast_node = ast_node
|
111
|
-
fields.each do |field_name, field_inst|
|
112
|
-
field_defn = field_inst.graphql_definition
|
113
|
-
type_defn.fields[field_defn.name] = field_defn
|
114
|
-
end
|
115
|
-
type_defn.metadata[:type_class] = self
|
116
|
-
if respond_to?(:resolve_type)
|
117
|
-
type_defn.resolve_type = method(:resolve_type)
|
97
|
+
if defined?(@orphan_types)
|
98
|
+
all_orphan_types = @orphan_types.dup
|
99
|
+
if defined?(super)
|
100
|
+
all_orphan_types += super
|
101
|
+
all_orphan_types.uniq!
|
102
|
+
end
|
103
|
+
all_orphan_types
|
104
|
+
elsif defined?(super)
|
105
|
+
super
|
106
|
+
else
|
107
|
+
EmptyObjects::EMPTY_ARRAY
|
108
|
+
end
|
118
109
|
end
|
119
|
-
type_defn
|
120
110
|
end
|
121
111
|
|
122
112
|
def kind
|
123
113
|
GraphQL::TypeKinds::INTERFACE
|
124
114
|
end
|
125
|
-
|
126
|
-
protected
|
127
|
-
|
128
|
-
def own_interfaces
|
129
|
-
@own_interfaces ||= []
|
130
|
-
end
|
131
|
-
|
132
|
-
def interfaces
|
133
|
-
own_interfaces + (own_interfaces.map { |i| i.own_interfaces }).flatten
|
134
|
-
end
|
135
115
|
end
|
136
116
|
|
137
|
-
# Extend this _after_ `DefinitionMethods` is defined, so it will be used
|
138
|
-
extend GraphQL::Schema::Member::AcceptsDefinition
|
139
|
-
|
140
117
|
extend DefinitionMethods
|
141
118
|
|
142
119
|
def unwrap
|
@@ -25,10 +25,10 @@ module GraphQL
|
|
25
25
|
load_constant(:DirectiveLocationEnum)
|
26
26
|
]
|
27
27
|
@types = {}
|
28
|
-
@possible_types = {}
|
28
|
+
@possible_types = {}.compare_by_identity
|
29
29
|
type_defns.each do |t|
|
30
30
|
@types[t.graphql_name] = t
|
31
|
-
@possible_types[t
|
31
|
+
@possible_types[t] = [t]
|
32
32
|
end
|
33
33
|
@entry_point_fields =
|
34
34
|
if schema.disable_introspection_entry_points?
|
@@ -39,7 +39,9 @@ module GraphQL
|
|
39
39
|
entry_point_fields.delete('__type') if schema.disable_type_introspection_entry_point?
|
40
40
|
entry_point_fields
|
41
41
|
end
|
42
|
+
@entry_point_fields.each { |k, v| v.dynamic_introspection = true }
|
42
43
|
@dynamic_fields = get_fields_from_class(class_sym: :DynamicFields)
|
44
|
+
@dynamic_fields.each { |k, v| v.dynamic_introspection = true }
|
43
45
|
end
|
44
46
|
|
45
47
|
def entry_points
|
@@ -67,7 +69,7 @@ module GraphQL
|
|
67
69
|
def resolve_late_bindings
|
68
70
|
@types.each do |name, t|
|
69
71
|
if t.kind.fields?
|
70
|
-
t.
|
72
|
+
t.all_field_definitions.each do |field_defn|
|
71
73
|
field_defn.type = resolve_late_binding(field_defn.type)
|
72
74
|
end
|
73
75
|
end
|
@@ -88,10 +90,11 @@ module GraphQL
|
|
88
90
|
def resolve_late_binding(late_bound_type)
|
89
91
|
case late_bound_type
|
90
92
|
when GraphQL::Schema::LateBoundType
|
91
|
-
|
92
|
-
|
93
|
+
type_name = late_bound_type.name
|
94
|
+
@types[type_name] || @schema.get_type(type_name)
|
95
|
+
when GraphQL::Schema::List
|
93
96
|
resolve_late_binding(late_bound_type.of_type).to_list_type
|
94
|
-
when GraphQL::Schema::NonNull
|
97
|
+
when GraphQL::Schema::NonNull
|
95
98
|
resolve_late_binding(late_bound_type.of_type).to_non_null_type
|
96
99
|
when Module
|
97
100
|
# It's a normal type -- no change required
|
@@ -103,12 +106,7 @@ module GraphQL
|
|
103
106
|
|
104
107
|
def load_constant(class_name)
|
105
108
|
const = @custom_namespace.const_get(class_name)
|
106
|
-
|
107
|
-
dup_type_class(const)
|
108
|
-
else
|
109
|
-
# Use `.to_graphql` to get a freshly-made version, not shared between schemas
|
110
|
-
const.to_graphql
|
111
|
-
end
|
109
|
+
dup_type_class(const)
|
112
110
|
rescue NameError
|
113
111
|
# Dup the built-in so that the cached fields aren't shared
|
114
112
|
dup_type_class(@built_in_namespace.const_get(class_name))
|
@@ -116,19 +114,7 @@ module GraphQL
|
|
116
114
|
|
117
115
|
def get_fields_from_class(class_sym:)
|
118
116
|
object_type_defn = load_constant(class_sym)
|
119
|
-
|
120
|
-
if object_type_defn.is_a?(Module)
|
121
|
-
object_type_defn.fields
|
122
|
-
else
|
123
|
-
extracted_field_defns = {}
|
124
|
-
object_class = object_type_defn.metadata[:type_class]
|
125
|
-
object_type_defn.all_fields.each do |field_defn|
|
126
|
-
inner_resolve = field_defn.resolve_proc
|
127
|
-
resolve_with_instantiate = PerFieldProxyResolve.new(object_class: object_class, inner_resolve: inner_resolve)
|
128
|
-
extracted_field_defns[field_defn.name] = field_defn.redefine(resolve: resolve_with_instantiate)
|
129
|
-
end
|
130
|
-
extracted_field_defns
|
131
|
-
end
|
117
|
+
object_type_defn.fields
|
132
118
|
end
|
133
119
|
|
134
120
|
# This is probably not 100% robust -- but it has to be good enough to avoid modifying the built-in introspection types
|
@@ -160,7 +146,7 @@ module GraphQL
|
|
160
146
|
if obj.is_a?(GraphQL::Schema::Object)
|
161
147
|
obj = obj.object
|
162
148
|
end
|
163
|
-
wrapped_object = @object_class.
|
149
|
+
wrapped_object = @object_class.wrap(obj, query_ctx)
|
164
150
|
@inner_resolve.call(wrapped_object, args, ctx)
|
165
151
|
end
|
166
152
|
end
|
@@ -9,6 +9,8 @@ module GraphQL
|
|
9
9
|
alias :graphql_name :name
|
10
10
|
def initialize(local_name)
|
11
11
|
@name = local_name
|
12
|
+
@to_non_null_type = nil
|
13
|
+
@to_list_type = nil
|
12
14
|
end
|
13
15
|
|
14
16
|
def unwrap
|
@@ -16,17 +18,25 @@ module GraphQL
|
|
16
18
|
end
|
17
19
|
|
18
20
|
def to_non_null_type
|
19
|
-
@to_non_null_type ||= GraphQL::
|
21
|
+
@to_non_null_type ||= GraphQL::Schema::NonNull.new(self)
|
20
22
|
end
|
21
23
|
|
22
24
|
def to_list_type
|
23
|
-
@to_list_type ||= GraphQL::
|
25
|
+
@to_list_type ||= GraphQL::Schema::List.new(self)
|
26
|
+
end
|
27
|
+
|
28
|
+
def to_type_signature
|
29
|
+
name
|
24
30
|
end
|
25
31
|
|
26
32
|
def inspect
|
27
33
|
"#<LateBoundType @name=#{name}>"
|
28
34
|
end
|
29
35
|
|
36
|
+
def non_null?
|
37
|
+
false
|
38
|
+
end
|
39
|
+
|
30
40
|
alias :to_s :inspect
|
31
41
|
end
|
32
42
|
end
|
data/lib/graphql/schema/list.rb
CHANGED
@@ -8,10 +8,6 @@ module GraphQL
|
|
8
8
|
class List < GraphQL::Schema::Wrapper
|
9
9
|
include Schema::Member::ValidatesInput
|
10
10
|
|
11
|
-
def to_graphql
|
12
|
-
@of_type.graphql_definition.to_list_type
|
13
|
-
end
|
14
|
-
|
15
11
|
# @return [GraphQL::TypeKinds::LIST]
|
16
12
|
def kind
|
17
13
|
GraphQL::TypeKinds::LIST
|
@@ -49,15 +45,24 @@ module GraphQL
|
|
49
45
|
end
|
50
46
|
end
|
51
47
|
|
52
|
-
def validate_non_null_input(value, ctx)
|
48
|
+
def validate_non_null_input(value, ctx, max_errors: nil)
|
53
49
|
result = GraphQL::Query::InputValidationResult.new
|
54
50
|
ensure_array(value).each_with_index do |item, index|
|
55
51
|
item_result = of_type.validate_input(item, ctx)
|
56
|
-
|
52
|
+
unless item_result.valid?
|
53
|
+
if max_errors
|
54
|
+
if max_errors == 0
|
55
|
+
add_max_errors_reached_message(result)
|
56
|
+
break
|
57
|
+
end
|
58
|
+
|
59
|
+
max_errors -= 1
|
60
|
+
end
|
61
|
+
|
57
62
|
result.merge_result!(index, item_result)
|
58
63
|
end
|
59
64
|
end
|
60
|
-
result
|
65
|
+
result.valid? ? nil : result
|
61
66
|
end
|
62
67
|
|
63
68
|
private
|
@@ -70,6 +75,12 @@ module GraphQL
|
|
70
75
|
[value]
|
71
76
|
end
|
72
77
|
end
|
78
|
+
|
79
|
+
def add_max_errors_reached_message(result)
|
80
|
+
message = "Too many errors processing list variable, max validation error limit reached. Execution aborted"
|
81
|
+
item_result = GraphQL::Query::InputValidationResult.from_problem(message)
|
82
|
+
result.merge_result!(nil, item_result)
|
83
|
+
end
|
73
84
|
end
|
74
85
|
end
|
75
86
|
end
|
@@ -32,8 +32,10 @@ module GraphQL
|
|
32
32
|
end
|
33
33
|
|
34
34
|
Class.new(GraphQL::Schema) do
|
35
|
-
|
35
|
+
add_type_and_traverse(types.values, root: false)
|
36
|
+
orphan_types(types.values.select { |t| t.kind.object? })
|
36
37
|
directives(directives)
|
38
|
+
description(schema["description"])
|
37
39
|
|
38
40
|
def self.resolve_type(*)
|
39
41
|
raise(GraphQL::RequiredImplementationMissingError, "This schema was loaded from string, so it can't resolve types for objects")
|
@@ -141,6 +143,7 @@ module GraphQL
|
|
141
143
|
Class.new(GraphQL::Schema::Scalar) do
|
142
144
|
graphql_name(type["name"])
|
143
145
|
description(type["description"])
|
146
|
+
specified_by_url(type["specifiedByURL"])
|
144
147
|
end
|
145
148
|
end
|
146
149
|
when "UNION"
|
@@ -160,6 +163,7 @@ module GraphQL
|
|
160
163
|
graphql_name(directive["name"])
|
161
164
|
description(directive["description"])
|
162
165
|
locations(*directive["locations"].map(&:to_sym))
|
166
|
+
repeatable(directive["isRepeatable"])
|
163
167
|
loader.build_arguments(self, directive["args"], type_resolver)
|
164
168
|
end
|
165
169
|
end
|
@@ -173,7 +177,6 @@ module GraphQL
|
|
173
177
|
while (of_type = unwrapped_field_hash["ofType"])
|
174
178
|
unwrapped_field_hash = of_type
|
175
179
|
end
|
176
|
-
type_name = unwrapped_field_hash["name"]
|
177
180
|
|
178
181
|
type_defn.field(
|
179
182
|
field_hash["name"],
|
@@ -183,9 +186,8 @@ module GraphQL
|
|
183
186
|
null: true,
|
184
187
|
camelize: false,
|
185
188
|
connection_extension: nil,
|
186
|
-
connection: type_name.end_with?("Connection"),
|
187
189
|
) do
|
188
|
-
if field_hash["args"].
|
190
|
+
if !field_hash["args"].empty?
|
189
191
|
loader.build_arguments(self, field_hash["args"], type_resolver)
|
190
192
|
end
|
191
193
|
end
|
@@ -199,7 +201,6 @@ module GraphQL
|
|
199
201
|
description: arg["description"],
|
200
202
|
deprecation_reason: arg["deprecationReason"],
|
201
203
|
required: false,
|
202
|
-
method_access: false,
|
203
204
|
camelize: false,
|
204
205
|
}
|
205
206
|
|
@@ -22,14 +22,10 @@ module GraphQL
|
|
22
22
|
GraphQL::NameValidator.validate!(new_name)
|
23
23
|
@graphql_name = new_name
|
24
24
|
else
|
25
|
-
|
25
|
+
@graphql_name ||= default_graphql_name
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
|
-
def overridden_graphql_name
|
30
|
-
defined?(@graphql_name) ? @graphql_name : nil
|
31
|
-
end
|
32
|
-
|
33
29
|
# Just a convenience method to point out that people should use graphql_name instead
|
34
30
|
def name(new_name = nil)
|
35
31
|
return super() if new_name.nil?
|
@@ -49,6 +45,20 @@ module GraphQL
|
|
49
45
|
@description = new_description
|
50
46
|
elsif defined?(@description)
|
51
47
|
@description
|
48
|
+
else
|
49
|
+
@description = nil
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
# Call this method to provide a new comment; OR
|
54
|
+
# call it without an argument to get the comment
|
55
|
+
# @param new_comment [String]
|
56
|
+
# @return [String, nil]
|
57
|
+
def comment(new_comment = NOT_CONFIGURED)
|
58
|
+
if !NOT_CONFIGURED.equal?(new_comment)
|
59
|
+
@comment = new_comment
|
60
|
+
elsif defined?(@comment)
|
61
|
+
@comment
|
52
62
|
else
|
53
63
|
nil
|
54
64
|
end
|
@@ -60,8 +70,13 @@ module GraphQL
|
|
60
70
|
def inherited(child_class)
|
61
71
|
child_class.introspection(introspection)
|
62
72
|
child_class.description(description)
|
63
|
-
|
64
|
-
|
73
|
+
child_class.comment(nil)
|
74
|
+
child_class.default_graphql_name = nil
|
75
|
+
|
76
|
+
if defined?(@graphql_name) && @graphql_name && (self.name.nil? || graphql_name != default_graphql_name)
|
77
|
+
child_class.graphql_name(graphql_name)
|
78
|
+
else
|
79
|
+
child_class.graphql_name = nil
|
65
80
|
end
|
66
81
|
super
|
67
82
|
end
|
@@ -79,7 +94,7 @@ module GraphQL
|
|
79
94
|
end
|
80
95
|
|
81
96
|
def introspection?
|
82
|
-
introspection
|
97
|
+
!!@introspection
|
83
98
|
end
|
84
99
|
|
85
100
|
# The mutation this type was derived from, if it was derived from a mutation
|
@@ -94,11 +109,6 @@ module GraphQL
|
|
94
109
|
end
|
95
110
|
end
|
96
111
|
|
97
|
-
# @return [GraphQL::BaseType] Convert this type to a legacy-style object.
|
98
|
-
def to_graphql
|
99
|
-
raise GraphQL::RequiredImplementationMissingError
|
100
|
-
end
|
101
|
-
|
102
112
|
alias :unwrap :itself
|
103
113
|
|
104
114
|
# Creates the default name for a schema member.
|
@@ -107,8 +117,8 @@ module GraphQL
|
|
107
117
|
def default_graphql_name
|
108
118
|
@default_graphql_name ||= begin
|
109
119
|
raise GraphQL::RequiredImplementationMissingError, 'Anonymous class should declare a `graphql_name`' if name.nil?
|
110
|
-
|
111
|
-
|
120
|
+
g_name = -name.split("::").last
|
121
|
+
g_name.end_with?("Type") ? g_name.sub(/Type\Z/, "") : g_name
|
112
122
|
end
|
113
123
|
end
|
114
124
|
|
@@ -116,13 +126,17 @@ module GraphQL
|
|
116
126
|
true
|
117
127
|
end
|
118
128
|
|
119
|
-
def
|
129
|
+
def authorized?(object, context)
|
120
130
|
true
|
121
131
|
end
|
122
132
|
|
123
|
-
def
|
124
|
-
|
133
|
+
def default_relay
|
134
|
+
false
|
125
135
|
end
|
136
|
+
|
137
|
+
protected
|
138
|
+
|
139
|
+
attr_writer :default_graphql_name, :graphql_name
|
126
140
|
end
|
127
141
|
end
|
128
142
|
end
|
@@ -4,10 +4,6 @@ module GraphQL
|
|
4
4
|
class Member
|
5
5
|
# @api private
|
6
6
|
module BuildType
|
7
|
-
if !String.method_defined?(:match?)
|
8
|
-
using GraphQL::StringMatchBackport
|
9
|
-
end
|
10
|
-
|
11
7
|
LIST_TYPE_ERROR = "Use an array of [T] or [T, null: true] for list types; other arrays are not supported"
|
12
8
|
|
13
9
|
module_function
|
@@ -39,18 +35,16 @@ module GraphQL
|
|
39
35
|
else
|
40
36
|
maybe_type = constantize(type_expr)
|
41
37
|
case maybe_type
|
42
|
-
when GraphQL::BaseType
|
43
|
-
maybe_type
|
44
38
|
when Module
|
45
39
|
# This is a way to check that it's the right kind of module:
|
46
|
-
if maybe_type.respond_to?(:
|
40
|
+
if maybe_type.respond_to?(:kind)
|
47
41
|
maybe_type
|
48
42
|
else
|
49
43
|
raise ArgumentError, "Unexpected class/module found for GraphQL type: #{type_expr} (must be type definition class/module)"
|
50
44
|
end
|
51
45
|
end
|
52
46
|
end
|
53
|
-
when GraphQL::
|
47
|
+
when GraphQL::Schema::LateBoundType
|
54
48
|
type_expr
|
55
49
|
when Array
|
56
50
|
case type_expr.length
|
@@ -72,7 +66,7 @@ module GraphQL
|
|
72
66
|
type_expr
|
73
67
|
when Module
|
74
68
|
# This is a way to check that it's the right kind of module:
|
75
|
-
if type_expr.respond_to?(:
|
69
|
+
if type_expr.respond_to?(:kind)
|
76
70
|
type_expr
|
77
71
|
else
|
78
72
|
# Eg `String` => GraphQL::Types::String
|
@@ -104,7 +98,7 @@ module GraphQL
|
|
104
98
|
|
105
99
|
def to_type_name(something)
|
106
100
|
case something
|
107
|
-
when GraphQL::
|
101
|
+
when GraphQL::Schema::LateBoundType
|
108
102
|
something.unwrap.name
|
109
103
|
when Array
|
110
104
|
to_type_name(something.first)
|
@@ -115,7 +109,14 @@ module GraphQL
|
|
115
109
|
to_type_name(something.name)
|
116
110
|
end
|
117
111
|
when String
|
118
|
-
something.
|
112
|
+
if something.include?("]") ||
|
113
|
+
something.include?("[") ||
|
114
|
+
something.include?("!") ||
|
115
|
+
something.include?("::")
|
116
|
+
something.gsub(/\]\[\!/, "").split("::").last
|
117
|
+
else
|
118
|
+
something
|
119
|
+
end
|
119
120
|
when GraphQL::Schema::NonNull, GraphQL::Schema::List
|
120
121
|
to_type_name(something.unwrap)
|
121
122
|
else
|
@@ -124,10 +125,12 @@ module GraphQL
|
|
124
125
|
end
|
125
126
|
|
126
127
|
def camelize(string)
|
128
|
+
return string if string == '_'
|
127
129
|
return string unless string.include?("_")
|
128
|
-
camelized = string.split('_').
|
130
|
+
camelized = string.split('_').each(&:capitalize!).join
|
129
131
|
camelized[0] = camelized[0].downcase
|
130
|
-
if
|
132
|
+
if string.start_with?("_")
|
133
|
+
match_data = string.match(/\A(_+)/)
|
131
134
|
camelized = "#{match_data[0]}#{camelized}"
|
132
135
|
end
|
133
136
|
camelized
|