graphql 1.13.19 → 2.0.19
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/install_generator.rb +1 -1
- data/lib/generators/graphql/relay.rb +3 -17
- data/lib/generators/graphql/templates/schema.erb +3 -0
- data/lib/graphql/analysis/ast/field_usage.rb +3 -1
- data/lib/graphql/analysis/ast/max_query_complexity.rb +0 -1
- data/lib/graphql/analysis/ast/query_complexity.rb +1 -1
- data/lib/graphql/analysis/ast/query_depth.rb +0 -1
- data/lib/graphql/analysis/ast/visitor.rb +43 -36
- data/lib/graphql/analysis/ast.rb +2 -12
- data/lib/graphql/analysis.rb +0 -7
- data/lib/graphql/backtrace/table.rb +2 -20
- data/lib/graphql/backtrace/tracer.rb +2 -3
- data/lib/graphql/backtrace.rb +2 -8
- data/lib/graphql/dataloader/null_dataloader.rb +3 -1
- data/lib/graphql/dataloader/source.rb +9 -0
- data/lib/graphql/dataloader.rb +4 -1
- data/lib/graphql/dig.rb +1 -1
- data/lib/graphql/execution/errors.rb +12 -82
- data/lib/graphql/execution/interpreter/resolve.rb +26 -0
- data/lib/graphql/execution/interpreter/runtime.rb +162 -119
- data/lib/graphql/execution/interpreter.rb +187 -78
- data/lib/graphql/execution/lazy.rb +7 -21
- data/lib/graphql/execution/lookahead.rb +44 -40
- data/lib/graphql/execution/multiplex.rb +3 -174
- data/lib/graphql/execution.rb +11 -4
- data/lib/graphql/introspection/dynamic_fields.rb +3 -8
- data/lib/graphql/introspection/entry_points.rb +2 -15
- data/lib/graphql/introspection/type_type.rb +8 -1
- data/lib/graphql/introspection.rb +4 -3
- data/lib/graphql/language/document_from_schema_definition.rb +18 -35
- data/lib/graphql/language/lexer.rb +216 -1488
- data/lib/graphql/language/lexer.ri +744 -0
- data/lib/graphql/language/nodes.rb +41 -33
- data/lib/graphql/language/parser.rb +375 -363
- data/lib/graphql/language/parser.y +48 -43
- data/lib/graphql/language/printer.rb +37 -21
- data/lib/graphql/language/visitor.rb +191 -83
- data/lib/graphql/pagination/active_record_relation_connection.rb +0 -8
- data/lib/graphql/pagination/array_connection.rb +4 -2
- data/lib/graphql/pagination/connection.rb +31 -4
- data/lib/graphql/pagination/connections.rb +3 -28
- data/lib/graphql/pagination/relation_connection.rb +2 -0
- data/lib/graphql/query/context.rb +155 -196
- data/lib/graphql/query/input_validation_result.rb +1 -1
- data/lib/graphql/query/null_context.rb +0 -3
- data/lib/graphql/query/validation_pipeline.rb +10 -34
- data/lib/graphql/query/variables.rb +7 -20
- data/lib/graphql/query.rb +32 -42
- data/lib/graphql/railtie.rb +0 -104
- data/lib/graphql/rake_task/validate.rb +1 -1
- data/lib/graphql/rake_task.rb +29 -1
- data/lib/graphql/relay/range_add.rb +9 -20
- data/lib/graphql/relay.rb +0 -15
- data/lib/graphql/schema/addition.rb +7 -9
- data/lib/graphql/schema/argument.rb +36 -43
- data/lib/graphql/schema/build_from_definition.rb +32 -18
- data/lib/graphql/schema/directive/one_of.rb +12 -0
- data/lib/graphql/schema/directive/transform.rb +1 -1
- data/lib/graphql/schema/directive.rb +11 -22
- data/lib/graphql/schema/enum.rb +28 -39
- data/lib/graphql/schema/enum_value.rb +5 -25
- data/lib/graphql/schema/field/connection_extension.rb +4 -0
- data/lib/graphql/schema/field.rb +214 -327
- data/lib/graphql/schema/input_object.rb +56 -67
- data/lib/graphql/schema/interface.rb +0 -35
- data/lib/graphql/schema/introspection_system.rb +3 -8
- data/lib/graphql/schema/late_bound_type.rb +8 -2
- data/lib/graphql/schema/list.rb +0 -6
- data/lib/graphql/schema/loader.rb +1 -2
- data/lib/graphql/schema/member/base_dsl_methods.rb +15 -19
- data/lib/graphql/schema/member/build_type.rb +5 -7
- data/lib/graphql/schema/member/has_arguments.rb +144 -53
- data/lib/graphql/schema/member/has_deprecation_reason.rb +3 -4
- data/lib/graphql/schema/member/has_directives.rb +71 -56
- data/lib/graphql/schema/member/has_fields.rb +15 -3
- data/lib/graphql/schema/member/has_interfaces.rb +47 -18
- data/lib/graphql/schema/member/has_validators.rb +31 -5
- data/lib/graphql/schema/member/relay_shortcuts.rb +28 -2
- data/lib/graphql/schema/member/type_system_helpers.rb +17 -0
- data/lib/graphql/schema/member/validates_input.rb +1 -1
- data/lib/graphql/schema/member.rb +0 -6
- data/lib/graphql/schema/mutation.rb +0 -9
- data/lib/graphql/schema/non_null.rb +1 -7
- data/lib/graphql/schema/object.rb +15 -52
- data/lib/graphql/schema/relay_classic_mutation.rb +53 -42
- data/lib/graphql/schema/resolver/has_payload_type.rb +20 -10
- data/lib/graphql/schema/resolver.rb +41 -42
- data/lib/graphql/schema/scalar.rb +7 -22
- data/lib/graphql/schema/subscription.rb +0 -7
- data/lib/graphql/schema/timeout.rb +24 -28
- data/lib/graphql/schema/type_membership.rb +3 -0
- data/lib/graphql/schema/union.rb +10 -17
- data/lib/graphql/schema/warden.rb +23 -6
- data/lib/graphql/schema/wrapper.rb +0 -5
- data/lib/graphql/schema.rb +240 -968
- data/lib/graphql/static_validation/all_rules.rb +1 -0
- data/lib/graphql/static_validation/base_visitor.rb +4 -21
- data/lib/graphql/static_validation/definition_dependencies.rb +7 -1
- data/lib/graphql/static_validation/error.rb +2 -2
- data/lib/graphql/static_validation/literal_validator.rb +19 -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 +12 -12
- 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/unique_directives_per_location.rb +12 -6
- data/lib/graphql/static_validation/rules/variable_default_values_are_correctly_typed.rb +1 -1
- data/lib/graphql/static_validation/validator.rb +3 -25
- data/lib/graphql/static_validation.rb +0 -2
- data/lib/graphql/subscriptions/action_cable_subscriptions.rb +7 -1
- data/lib/graphql/subscriptions/default_subscription_resolve_extension.rb +38 -1
- data/lib/graphql/subscriptions/event.rb +3 -8
- data/lib/graphql/subscriptions/instrumentation.rb +0 -51
- data/lib/graphql/subscriptions.rb +32 -20
- data/lib/graphql/tracing/active_support_notifications_trace.rb +16 -0
- data/lib/graphql/tracing/appoptics_trace.rb +231 -0
- data/lib/graphql/tracing/appsignal_trace.rb +66 -0
- data/lib/graphql/tracing/data_dog_trace.rb +148 -0
- data/lib/graphql/tracing/data_dog_tracing.rb +2 -0
- data/lib/graphql/tracing/new_relic_trace.rb +75 -0
- data/lib/graphql/tracing/notifications_trace.rb +41 -0
- data/lib/graphql/tracing/platform_trace.rb +107 -0
- data/lib/graphql/tracing/platform_tracing.rb +26 -41
- 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/statsd_trace.rb +56 -0
- data/lib/graphql/tracing.rb +136 -40
- data/lib/graphql/type_kinds.rb +6 -3
- data/lib/graphql/types/iso_8601_date.rb +4 -1
- data/lib/graphql/types/iso_8601_date_time.rb +4 -0
- data/lib/graphql/types/relay/base_connection.rb +16 -6
- data/lib/graphql/types/relay/connection_behaviors.rb +5 -25
- data/lib/graphql/types/relay/default_relay.rb +5 -9
- data/lib/graphql/types/relay/edge_behaviors.rb +1 -4
- data/lib/graphql/types/relay/node_behaviors.rb +5 -1
- data/lib/graphql/types/relay.rb +0 -2
- data/lib/graphql/types/string.rb +1 -1
- data/lib/graphql/version.rb +1 -1
- data/lib/graphql.rb +11 -72
- metadata +31 -132
- data/lib/graphql/analysis/analyze_query.rb +0 -98
- data/lib/graphql/analysis/field_usage.rb +0 -45
- data/lib/graphql/analysis/max_query_complexity.rb +0 -26
- data/lib/graphql/analysis/max_query_depth.rb +0 -26
- data/lib/graphql/analysis/query_complexity.rb +0 -88
- data/lib/graphql/analysis/query_depth.rb +0 -43
- data/lib/graphql/analysis/reducer_state.rb +0 -48
- data/lib/graphql/argument.rb +0 -131
- data/lib/graphql/authorization.rb +0 -82
- data/lib/graphql/backtrace/legacy_tracer.rb +0 -56
- data/lib/graphql/backwards_compatibility.rb +0 -61
- data/lib/graphql/base_type.rb +0 -232
- data/lib/graphql/boolean_type.rb +0 -2
- data/lib/graphql/compatibility/execution_specification/counter_schema.rb +0 -53
- data/lib/graphql/compatibility/execution_specification/specification_schema.rb +0 -200
- data/lib/graphql/compatibility/execution_specification.rb +0 -436
- data/lib/graphql/compatibility/lazy_execution_specification/lazy_schema.rb +0 -111
- data/lib/graphql/compatibility/lazy_execution_specification.rb +0 -215
- data/lib/graphql/compatibility/query_parser_specification/parse_error_specification.rb +0 -87
- data/lib/graphql/compatibility/query_parser_specification/query_assertions.rb +0 -79
- data/lib/graphql/compatibility/query_parser_specification.rb +0 -266
- data/lib/graphql/compatibility/schema_parser_specification.rb +0 -682
- data/lib/graphql/compatibility.rb +0 -5
- data/lib/graphql/define/assign_argument.rb +0 -12
- data/lib/graphql/define/assign_connection.rb +0 -13
- data/lib/graphql/define/assign_enum_value.rb +0 -18
- data/lib/graphql/define/assign_global_id_field.rb +0 -11
- data/lib/graphql/define/assign_mutation_function.rb +0 -34
- data/lib/graphql/define/assign_object_field.rb +0 -42
- data/lib/graphql/define/defined_object_proxy.rb +0 -53
- data/lib/graphql/define/instance_definable.rb +0 -255
- data/lib/graphql/define/no_definition_error.rb +0 -7
- data/lib/graphql/define/non_null_with_bang.rb +0 -16
- data/lib/graphql/define/type_definer.rb +0 -31
- data/lib/graphql/define.rb +0 -31
- data/lib/graphql/deprecated_dsl.rb +0 -55
- data/lib/graphql/directive/deprecated_directive.rb +0 -2
- data/lib/graphql/directive/include_directive.rb +0 -2
- data/lib/graphql/directive/skip_directive.rb +0 -2
- data/lib/graphql/directive.rb +0 -107
- data/lib/graphql/enum_type.rb +0 -133
- data/lib/graphql/execution/execute.rb +0 -333
- data/lib/graphql/execution/flatten.rb +0 -40
- data/lib/graphql/execution/instrumentation.rb +0 -92
- 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/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 -260
- 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 -54
- data/lib/graphql/relay/edge.rb +0 -27
- data/lib/graphql/relay/edge_type.rb +0 -19
- data/lib/graphql/relay/edges_instrumentation.rb +0 -39
- data/lib/graphql/relay/global_id_resolve.rb +0 -17
- data/lib/graphql/relay/mongo_relation_connection.rb +0 -50
- data/lib/graphql/relay/mutation/instrumentation.rb +0 -23
- data/lib/graphql/relay/mutation/resolve.rb +0 -56
- data/lib/graphql/relay/mutation/result.rb +0 -38
- data/lib/graphql/relay/mutation.rb +0 -106
- data/lib/graphql/relay/node.rb +0 -39
- data/lib/graphql/relay/page_info.rb +0 -7
- data/lib/graphql/relay/relation_connection.rb +0 -188
- data/lib/graphql/relay/type_extensions.rb +0 -32
- data/lib/graphql/scalar_type.rb +0 -91
- data/lib/graphql/schema/catchall_middleware.rb +0 -35
- data/lib/graphql/schema/default_parse_error.rb +0 -10
- data/lib/graphql/schema/default_type_error.rb +0 -17
- data/lib/graphql/schema/member/accepts_definition.rb +0 -164
- data/lib/graphql/schema/member/cached_graphql_definition.rb +0 -58
- data/lib/graphql/schema/member/instrumentation.rb +0 -131
- data/lib/graphql/schema/middleware_chain.rb +0 -82
- data/lib/graphql/schema/possible_types.rb +0 -44
- data/lib/graphql/schema/rescue_middleware.rb +0 -60
- data/lib/graphql/schema/timeout_middleware.rb +0 -88
- data/lib/graphql/schema/traversal.rb +0 -228
- data/lib/graphql/schema/validation.rb +0 -313
- data/lib/graphql/static_validation/default_visitor.rb +0 -15
- data/lib/graphql/static_validation/no_validate_visitor.rb +0 -10
- data/lib/graphql/string_type.rb +0 -2
- data/lib/graphql/subscriptions/subscription_root.rb +0 -76
- data/lib/graphql/tracing/skylight_tracing.rb +0 -70
- data/lib/graphql/types/relay/node_field.rb +0 -24
- data/lib/graphql/types/relay/nodes_field.rb +0 -43
- data/lib/graphql/union_type.rb +0 -115
- data/lib/graphql/upgrader/member.rb +0 -937
- data/lib/graphql/upgrader/schema.rb +0 -38
data/lib/graphql/type_kinds.rb
CHANGED
@@ -5,12 +5,13 @@ module GraphQL
|
|
5
5
|
# These objects are singletons, eg `GraphQL::TypeKinds::UNION`, `GraphQL::TypeKinds::SCALAR`.
|
6
6
|
class TypeKind
|
7
7
|
attr_reader :name, :description
|
8
|
-
def initialize(name, abstract: false, fields: false, wraps: false, input: false, description: nil)
|
8
|
+
def initialize(name, abstract: false, leaf: false, fields: false, wraps: false, input: false, description: nil)
|
9
9
|
@name = name
|
10
10
|
@abstract = abstract
|
11
11
|
@fields = fields
|
12
12
|
@wraps = wraps
|
13
13
|
@input = input
|
14
|
+
@leaf = leaf
|
14
15
|
@composite = fields? || abstract?
|
15
16
|
@description = description
|
16
17
|
end
|
@@ -27,6 +28,8 @@ module GraphQL
|
|
27
28
|
# Is this TypeKind a valid query input?
|
28
29
|
def input?; @input; end
|
29
30
|
def to_s; @name; end
|
31
|
+
# Is this TypeKind a primitive value?
|
32
|
+
def leaf?; @leaf; end
|
30
33
|
# Is this TypeKind composed of many values?
|
31
34
|
def composite?; @composite; end
|
32
35
|
|
@@ -64,11 +67,11 @@ module GraphQL
|
|
64
67
|
end
|
65
68
|
|
66
69
|
TYPE_KINDS = [
|
67
|
-
SCALAR = TypeKind.new("SCALAR", input: true, description: 'Indicates this type is a scalar.'),
|
70
|
+
SCALAR = TypeKind.new("SCALAR", input: true, leaf: true, description: 'Indicates this type is a scalar.'),
|
68
71
|
OBJECT = TypeKind.new("OBJECT", fields: true, description: 'Indicates this type is an object. `fields` and `interfaces` are valid fields.'),
|
69
72
|
INTERFACE = TypeKind.new("INTERFACE", abstract: true, fields: true, description: 'Indicates this type is an interface. `fields` and `possibleTypes` are valid fields.'),
|
70
73
|
UNION = TypeKind.new("UNION", abstract: true, description: 'Indicates this type is a union. `possibleTypes` is a valid field.'),
|
71
|
-
ENUM = TypeKind.new("ENUM", input: true, description: 'Indicates this type is an enum. `enumValues` is a valid field.'),
|
74
|
+
ENUM = TypeKind.new("ENUM", input: true, leaf: true, description: 'Indicates this type is an enum. `enumValues` is a valid field.'),
|
72
75
|
INPUT_OBJECT = TypeKind.new("INPUT_OBJECT", input: true, description: 'Indicates this type is an input object. `inputFields` is a valid field.'),
|
73
76
|
LIST = TypeKind.new("LIST", wraps: true, description: 'Indicates this type is a list. `ofType` is a valid field.'),
|
74
77
|
NON_NULL = TypeKind.new("NON_NULL", wraps: true, description: 'Indicates this type is a non-null. `ofType` is a valid field.'),
|
@@ -14,6 +14,7 @@ module GraphQL
|
|
14
14
|
# own Date type.
|
15
15
|
class ISO8601Date < GraphQL::Schema::Scalar
|
16
16
|
description "An ISO 8601-encoded date"
|
17
|
+
specified_by_url "https://tools.ietf.org/html/rfc3339"
|
17
18
|
|
18
19
|
# @param value [Date,Time,DateTime,String]
|
19
20
|
# @return [String]
|
@@ -22,7 +23,7 @@ module GraphQL
|
|
22
23
|
end
|
23
24
|
|
24
25
|
# @param str_value [String, Date, DateTime, Time]
|
25
|
-
# @return [Date]
|
26
|
+
# @return [Date, nil]
|
26
27
|
def self.coerce_input(value, ctx)
|
27
28
|
if value.is_a?(::Date)
|
28
29
|
value
|
@@ -30,6 +31,8 @@ module GraphQL
|
|
30
31
|
value.to_date
|
31
32
|
elsif value.is_a?(::Time)
|
32
33
|
value.to_date
|
34
|
+
elsif value.nil?
|
35
|
+
nil
|
33
36
|
else
|
34
37
|
Date.iso8601(value)
|
35
38
|
end
|
@@ -17,6 +17,7 @@ module GraphQL
|
|
17
17
|
# own DateTime type.
|
18
18
|
class ISO8601DateTime < GraphQL::Schema::Scalar
|
19
19
|
description "An ISO 8601-encoded datetime"
|
20
|
+
specified_by_url "https://tools.ietf.org/html/rfc3339"
|
20
21
|
|
21
22
|
# It's not compatible with Rails' default,
|
22
23
|
# i.e. ActiveSupport::JSON::Encoder.time_precision (3 by default)
|
@@ -59,6 +60,9 @@ module GraphQL
|
|
59
60
|
# But without this, it would zero out given any time part of `str_value` (hours and/or minutes)
|
60
61
|
if dt.iso8601.start_with?(str_value)
|
61
62
|
dt
|
63
|
+
elsif str_value.length == 8 && str_value.match?(/\A\d{8}\Z/)
|
64
|
+
# Allow dates that are missing the "-". eg. "20220404"
|
65
|
+
dt
|
62
66
|
else
|
63
67
|
nil
|
64
68
|
end
|
@@ -10,6 +10,8 @@ module GraphQL
|
|
10
10
|
# so you can extend your own `BaseObject` instead of `GraphQL::Schema::Object`.
|
11
11
|
#
|
12
12
|
# @example Implementation a connection and edge
|
13
|
+
# class BaseObject < GraphQL::Schema::Object; end
|
14
|
+
#
|
13
15
|
# # Given some object in your app ...
|
14
16
|
# class Types::Post < BaseObject
|
15
17
|
# end
|
@@ -20,14 +22,22 @@ module GraphQL
|
|
20
22
|
#
|
21
23
|
# # Then extend them for the object in your app
|
22
24
|
# class Types::PostEdge < Types::BaseEdge
|
23
|
-
# node_type
|
25
|
+
# node_type Types::Post
|
24
26
|
# end
|
27
|
+
#
|
25
28
|
# class Types::PostConnection < Types::BaseConnection
|
26
|
-
# edge_type
|
27
|
-
#
|
28
|
-
#
|
29
|
-
#
|
30
|
-
#
|
29
|
+
# edge_type Types::PostEdge,
|
30
|
+
# edges_nullable: true,
|
31
|
+
# edge_nullable: true,
|
32
|
+
# node_nullable: true,
|
33
|
+
# nodes_field: true
|
34
|
+
#
|
35
|
+
# # Alternatively, you can call the class methods followed by your edge type
|
36
|
+
# # edges_nullable true
|
37
|
+
# # edge_nullable true
|
38
|
+
# # node_nullable true
|
39
|
+
# # has_nodes_field true
|
40
|
+
# # edge_type Types::PostEdge
|
31
41
|
# end
|
32
42
|
#
|
33
43
|
# @see Relay::BaseEdge for edge types
|
@@ -36,7 +36,7 @@ module GraphQL
|
|
36
36
|
# class name to set defaults. You can call it again in the class definition
|
37
37
|
# to override the default (or provide a value, if the default lookup failed).
|
38
38
|
# @param field_options [Hash] Any extra keyword arguments to pass to the `field :edges, ...` and `field :nodes, ...` configurations
|
39
|
-
def edge_type(edge_type_class, edge_class: GraphQL::
|
39
|
+
def edge_type(edge_type_class, edge_class: GraphQL::Pagination::Connection::Edge, node_type: edge_type_class.node_type, nodes_field: self.has_nodes_field, node_nullable: self.node_nullable, edges_nullable: self.edges_nullable, edge_nullable: self.edge_nullable, field_options: nil)
|
40
40
|
# Set this connection's graphql name
|
41
41
|
node_type_name = node_type.graphql_name
|
42
42
|
|
@@ -49,8 +49,9 @@ module GraphQL
|
|
49
49
|
type: [edge_type_class, null: edge_nullable],
|
50
50
|
null: edges_nullable,
|
51
51
|
description: "A list of edges.",
|
52
|
-
legacy_edge_class: edge_class, # This is used by the old runtime only, for EdgesInstrumentation
|
53
52
|
connection: false,
|
53
|
+
# Assume that the connection was scoped before this step:
|
54
|
+
scope: false,
|
54
55
|
}
|
55
56
|
|
56
57
|
if field_options
|
@@ -78,10 +79,6 @@ module GraphQL
|
|
78
79
|
true # Let nodes be filtered out
|
79
80
|
end
|
80
81
|
|
81
|
-
def accessible?(ctx)
|
82
|
-
node_type.accessible?(ctx)
|
83
|
-
end
|
84
|
-
|
85
82
|
def visible?(ctx)
|
86
83
|
# if this is an abstract base class, there may be no `node_type`
|
87
84
|
node_type ? node_type.visible?(ctx) : super
|
@@ -136,6 +133,8 @@ module GraphQL
|
|
136
133
|
null: nullable,
|
137
134
|
description: "A list of nodes.",
|
138
135
|
connection: false,
|
136
|
+
# Assume that the connection was scoped before this step:
|
137
|
+
scope: false,
|
139
138
|
}
|
140
139
|
if field_options
|
141
140
|
base_field_options.merge!(field_options)
|
@@ -149,25 +148,6 @@ module GraphQL
|
|
149
148
|
obj_type.field :page_info, GraphQL::Types::Relay::PageInfo, null: false, description: "Information to aid in pagination."
|
150
149
|
end
|
151
150
|
end
|
152
|
-
|
153
|
-
# By default this calls through to the ConnectionWrapper's edge nodes method,
|
154
|
-
# but sometimes you need to override it to support the `nodes` field
|
155
|
-
def nodes
|
156
|
-
@object.edge_nodes
|
157
|
-
end
|
158
|
-
|
159
|
-
def edges
|
160
|
-
if @object.is_a?(GraphQL::Pagination::Connection)
|
161
|
-
@object.edges
|
162
|
-
elsif context.interpreter?
|
163
|
-
context.schema.after_lazy(object.edge_nodes) do |nodes|
|
164
|
-
nodes.map { |n| self.class.edge_class.new(n, object) }
|
165
|
-
end
|
166
|
-
else
|
167
|
-
# This is done by edges_instrumentation
|
168
|
-
@object.edge_nodes
|
169
|
-
end
|
170
|
-
end
|
171
151
|
end
|
172
152
|
end
|
173
153
|
end
|
@@ -13,17 +13,13 @@ module GraphQL
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def default_relay?
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
type_defn = if method(:to_graphql).super_method.arity
|
21
|
-
super(silence_deprecation_warning: true)
|
16
|
+
if defined?(@default_relay)
|
17
|
+
@default_relay
|
18
|
+
elsif self.is_a?(Class)
|
19
|
+
superclass.respond_to?(:default_relay?) && superclass.default_relay?
|
22
20
|
else
|
23
|
-
|
21
|
+
false
|
24
22
|
end
|
25
|
-
type_defn.default_relay = default_relay?
|
26
|
-
type_defn
|
27
23
|
end
|
28
24
|
end
|
29
25
|
end
|
@@ -8,6 +8,7 @@ module GraphQL
|
|
8
8
|
child_class.description("An edge in a connection.")
|
9
9
|
child_class.field(:cursor, String, null: false, description: "A cursor for use in pagination.")
|
10
10
|
child_class.extend(ClassMethods)
|
11
|
+
child_class.extend(GraphQL::Types::Relay::DefaultRelay)
|
11
12
|
child_class.node_nullable(true)
|
12
13
|
end
|
13
14
|
|
@@ -40,10 +41,6 @@ module GraphQL
|
|
40
41
|
true
|
41
42
|
end
|
42
43
|
|
43
|
-
def accessible?(ctx)
|
44
|
-
node_type.accessible?(ctx)
|
45
|
-
end
|
46
|
-
|
47
44
|
def visible?(ctx)
|
48
45
|
node_type.visible?(ctx)
|
49
46
|
end
|
@@ -7,7 +7,11 @@ module GraphQL
|
|
7
7
|
def self.included(child_module)
|
8
8
|
child_module.extend(DefaultRelay)
|
9
9
|
child_module.description("An object with an ID.")
|
10
|
-
child_module.field(:id, ID, null: false, description: "ID of the object.")
|
10
|
+
child_module.field(:id, ID, null: false, description: "ID of the object.", resolver_method: :default_global_id)
|
11
|
+
end
|
12
|
+
|
13
|
+
def default_global_id
|
14
|
+
context.schema.id_from_object(object, self.class, context)
|
11
15
|
end
|
12
16
|
end
|
13
17
|
end
|
data/lib/graphql/types/relay.rb
CHANGED
@@ -14,8 +14,6 @@ require "graphql/types/relay/page_info"
|
|
14
14
|
require "graphql/types/relay/base_connection"
|
15
15
|
require "graphql/types/relay/base_edge"
|
16
16
|
require "graphql/types/relay/node"
|
17
|
-
require "graphql/types/relay/node_field"
|
18
|
-
require "graphql/types/relay/nodes_field"
|
19
17
|
|
20
18
|
module GraphQL
|
21
19
|
module Types
|
data/lib/graphql/types/string.rb
CHANGED
data/lib/graphql/version.rb
CHANGED
data/lib/graphql.rb
CHANGED
@@ -42,8 +42,8 @@ This is probably a bug in GraphQL-Ruby, please report this error on GitHub: http
|
|
42
42
|
# Turn a query string or schema definition into an AST
|
43
43
|
# @param graphql_string [String] a GraphQL query string or schema definition
|
44
44
|
# @return [GraphQL::Language::Nodes::Document]
|
45
|
-
def self.parse(graphql_string,
|
46
|
-
parse_with_racc(graphql_string,
|
45
|
+
def self.parse(graphql_string, trace: GraphQL::Tracing::NullTrace)
|
46
|
+
parse_with_racc(graphql_string, trace: trace)
|
47
47
|
end
|
48
48
|
|
49
49
|
# Read the contents of `filename` and parse them as GraphQL
|
@@ -54,18 +54,21 @@ This is probably a bug in GraphQL-Ruby, please report this error on GitHub: http
|
|
54
54
|
parse_with_racc(content, filename: filename)
|
55
55
|
end
|
56
56
|
|
57
|
-
def self.parse_with_racc(string, filename: nil,
|
58
|
-
GraphQL::Language::Parser.parse(string, filename: filename,
|
57
|
+
def self.parse_with_racc(string, filename: nil, trace: GraphQL::Tracing::NullTrace)
|
58
|
+
GraphQL::Language::Parser.parse(string, filename: filename, trace: trace)
|
59
59
|
end
|
60
60
|
|
61
|
-
# @return [Array<
|
61
|
+
# @return [Array<Array>]
|
62
62
|
def self.scan(graphql_string)
|
63
|
-
|
63
|
+
scan_with_ruby(graphql_string)
|
64
64
|
end
|
65
65
|
|
66
|
-
def self.
|
66
|
+
def self.scan_with_ruby(graphql_string)
|
67
67
|
GraphQL::Language::Lexer.tokenize(graphql_string)
|
68
68
|
end
|
69
|
+
|
70
|
+
NOT_CONFIGURED = Object.new
|
71
|
+
private_constant :NOT_CONFIGURED
|
69
72
|
end
|
70
73
|
|
71
74
|
# Order matters for these:
|
@@ -81,27 +84,8 @@ require "graphql/integer_decoding_error"
|
|
81
84
|
require "graphql/integer_encoding_error"
|
82
85
|
require "graphql/string_encoding_error"
|
83
86
|
require "graphql/date_encoding_error"
|
84
|
-
|
85
|
-
require "graphql/define"
|
86
|
-
require "graphql/deprecation"
|
87
|
-
require "graphql/base_type"
|
88
|
-
require "graphql/object_type"
|
89
|
-
require "graphql/enum_type"
|
90
|
-
require "graphql/input_object_type"
|
91
|
-
require "graphql/interface_type"
|
92
|
-
require "graphql/list_type"
|
93
|
-
require "graphql/non_null_type"
|
94
|
-
require "graphql/union_type"
|
95
|
-
|
96
|
-
require "graphql/argument"
|
97
|
-
require "graphql/field"
|
98
87
|
require "graphql/type_kinds"
|
99
|
-
|
100
|
-
require "graphql/backwards_compatibility"
|
101
|
-
require "graphql/scalar_type"
|
102
|
-
|
103
88
|
require "graphql/name_validator"
|
104
|
-
|
105
89
|
require "graphql/language"
|
106
90
|
|
107
91
|
require_relative "./graphql/railtie" if defined? Rails::Railtie
|
@@ -116,15 +100,8 @@ require "graphql/query"
|
|
116
100
|
require "graphql/types"
|
117
101
|
require "graphql/dataloader"
|
118
102
|
require "graphql/filter"
|
119
|
-
require "graphql/internal_representation"
|
120
|
-
require "graphql/directive"
|
121
103
|
require "graphql/static_validation"
|
122
104
|
require "graphql/execution"
|
123
|
-
require "graphql/boolean_type"
|
124
|
-
require "graphql/float_type"
|
125
|
-
require "graphql/id_type"
|
126
|
-
require "graphql/int_type"
|
127
|
-
require "graphql/string_type"
|
128
105
|
require "graphql/schema/built_in_types"
|
129
106
|
require "graphql/schema/loader"
|
130
107
|
require "graphql/schema/printer"
|
@@ -132,49 +109,11 @@ require "graphql/introspection"
|
|
132
109
|
require "graphql/relay"
|
133
110
|
|
134
111
|
require "graphql/version"
|
135
|
-
require "graphql/compatibility"
|
136
|
-
require "graphql/function"
|
137
112
|
require "graphql/subscriptions"
|
138
113
|
require "graphql/parse_error"
|
139
114
|
require "graphql/backtrace"
|
140
115
|
|
141
|
-
require "graphql/deprecated_dsl"
|
142
|
-
require "graphql/authorization"
|
143
116
|
require "graphql/unauthorized_error"
|
144
117
|
require "graphql/unauthorized_field_error"
|
145
118
|
require "graphql/load_application_object_failed_error"
|
146
|
-
require "graphql/
|
147
|
-
require "graphql/directive/skip_directive"
|
148
|
-
require "graphql/directive/deprecated_directive"
|
149
|
-
|
150
|
-
module GraphQL
|
151
|
-
# Ruby has `deprecate_constant`,
|
152
|
-
# but I don't see a way to give a nice error message in that case,
|
153
|
-
# so I'm doing this instead.
|
154
|
-
DEPRECATED_INT_TYPE = INT_TYPE
|
155
|
-
DEPRECATED_FLOAT_TYPE = FLOAT_TYPE
|
156
|
-
DEPRECATED_STRING_TYPE = STRING_TYPE
|
157
|
-
DEPRECATED_BOOLEAN_TYPE = BOOLEAN_TYPE
|
158
|
-
DEPRECATED_ID_TYPE = ID_TYPE
|
159
|
-
|
160
|
-
remove_const :INT_TYPE
|
161
|
-
remove_const :FLOAT_TYPE
|
162
|
-
remove_const :STRING_TYPE
|
163
|
-
remove_const :BOOLEAN_TYPE
|
164
|
-
remove_const :ID_TYPE
|
165
|
-
|
166
|
-
def self.const_missing(const_name)
|
167
|
-
deprecated_const_name = :"DEPRECATED_#{const_name}"
|
168
|
-
if const_defined?(deprecated_const_name)
|
169
|
-
deprecated_type = const_get(deprecated_const_name)
|
170
|
-
deprecated_caller = caller(1, 1).first
|
171
|
-
# Don't warn about internal uses, like `types.Int`
|
172
|
-
if !deprecated_caller.include?("lib/graphql")
|
173
|
-
warn "GraphQL::#{const_name} is deprecated and will be removed in GraphQL-Ruby 2.0, use GraphQL::Types::#{deprecated_type.graphql_name} instead. (from #{deprecated_caller})"
|
174
|
-
end
|
175
|
-
deprecated_type
|
176
|
-
else
|
177
|
-
super
|
178
|
-
end
|
179
|
-
end
|
180
|
-
end
|
119
|
+
require "graphql/deprecation"
|