graphql 1.13.23 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/graphql/analysis/ast/query_complexity.rb +1 -1
- data/lib/graphql/analysis/ast/query_depth.rb +0 -1
- data/lib/graphql/analysis/ast/visitor.rb +1 -1
- data/lib/graphql/analysis/ast.rb +0 -10
- data/lib/graphql/analysis.rb +0 -7
- data/lib/graphql/backtrace/table.rb +0 -18
- data/lib/graphql/backtrace/tracer.rb +1 -2
- data/lib/graphql/backtrace.rb +2 -8
- data/lib/graphql/dig.rb +1 -1
- data/lib/graphql/execution/errors.rb +1 -9
- data/lib/graphql/execution/interpreter/runtime.rb +6 -13
- data/lib/graphql/execution/interpreter.rb +0 -22
- data/lib/graphql/execution/lazy.rb +1 -1
- data/lib/graphql/execution/lookahead.rb +6 -13
- data/lib/graphql/execution/multiplex.rb +50 -107
- data/lib/graphql/execution.rb +11 -3
- data/lib/graphql/introspection/directive_type.rb +2 -2
- data/lib/graphql/introspection/dynamic_fields.rb +3 -8
- data/lib/graphql/introspection/entry_points.rb +2 -15
- data/lib/graphql/introspection/field_type.rb +1 -1
- data/lib/graphql/introspection/schema_type.rb +2 -2
- data/lib/graphql/introspection/type_type.rb +5 -5
- data/lib/graphql/language/document_from_schema_definition.rb +0 -17
- data/lib/graphql/pagination/connections.rb +2 -28
- data/lib/graphql/query/context.rb +1 -185
- data/lib/graphql/query/input_validation_result.rb +0 -9
- data/lib/graphql/query/literal_input.rb +8 -13
- data/lib/graphql/query/validation_pipeline.rb +6 -34
- data/lib/graphql/query/variable_validation_error.rb +2 -2
- data/lib/graphql/query/variables.rb +8 -31
- data/lib/graphql/query.rb +5 -34
- data/lib/graphql/railtie.rb +0 -104
- data/lib/graphql/relay/range_add.rb +0 -4
- data/lib/graphql/relay.rb +0 -15
- data/lib/graphql/schema/addition.rb +1 -8
- data/lib/graphql/schema/argument.rb +1 -25
- data/lib/graphql/schema/build_from_definition.rb +0 -1
- data/lib/graphql/schema/directive.rb +1 -22
- data/lib/graphql/schema/enum.rb +3 -19
- data/lib/graphql/schema/enum_value.rb +0 -22
- data/lib/graphql/schema/field.rb +22 -220
- data/lib/graphql/schema/input_object.rb +11 -57
- data/lib/graphql/schema/interface.rb +1 -30
- data/lib/graphql/schema/introspection_system.rb +3 -8
- data/lib/graphql/schema/late_bound_type.rb +2 -2
- data/lib/graphql/schema/list.rb +3 -24
- data/lib/graphql/schema/loader.rb +0 -1
- data/lib/graphql/schema/member/base_dsl_methods.rb +1 -6
- data/lib/graphql/schema/member/build_type.rb +4 -6
- data/lib/graphql/schema/member/has_arguments.rb +16 -20
- data/lib/graphql/schema/member/has_fields.rb +3 -3
- data/lib/graphql/schema/member/has_interfaces.rb +1 -13
- data/lib/graphql/schema/member/validates_input.rb +2 -2
- data/lib/graphql/schema/member.rb +0 -6
- data/lib/graphql/schema/mutation.rb +0 -9
- data/lib/graphql/schema/non_null.rb +3 -9
- data/lib/graphql/schema/object.rb +0 -40
- data/lib/graphql/schema/relay_classic_mutation.rb +17 -28
- data/lib/graphql/schema/scalar.rb +1 -16
- data/lib/graphql/schema/union.rb +0 -16
- data/lib/graphql/schema/warden.rb +3 -12
- data/lib/graphql/schema/wrapper.rb +0 -5
- data/lib/graphql/schema.rb +106 -945
- data/lib/graphql/static_validation/base_visitor.rb +4 -21
- data/lib/graphql/static_validation/rules/directives_are_in_valid_locations.rb +12 -12
- data/lib/graphql/static_validation/validator.rb +2 -24
- data/lib/graphql/static_validation.rb +0 -2
- data/lib/graphql/subscriptions/default_subscription_resolve_extension.rb +38 -1
- data/lib/graphql/subscriptions/event.rb +1 -1
- data/lib/graphql/subscriptions/instrumentation.rb +0 -51
- data/lib/graphql/subscriptions.rb +4 -13
- data/lib/graphql/tracing/data_dog_tracing.rb +16 -20
- data/lib/graphql/tracing/platform_tracing.rb +4 -32
- data/lib/graphql/tracing.rb +0 -1
- data/lib/graphql/types/relay/connection_behaviors.rb +2 -6
- data/lib/graphql/types/relay/default_relay.rb +0 -10
- data/lib/graphql/types/relay/node_behaviors.rb +5 -1
- data/lib/graphql/types/relay.rb +0 -2
- data/lib/graphql/types/string.rb +1 -1
- data/lib/graphql/version.rb +1 -1
- data/lib/graphql.rb +1 -66
- metadata +28 -167
- data/lib/graphql/analysis/analyze_query.rb +0 -98
- data/lib/graphql/analysis/field_usage.rb +0 -45
- data/lib/graphql/analysis/max_query_complexity.rb +0 -26
- data/lib/graphql/analysis/max_query_depth.rb +0 -26
- data/lib/graphql/analysis/query_complexity.rb +0 -88
- data/lib/graphql/analysis/query_depth.rb +0 -43
- data/lib/graphql/analysis/reducer_state.rb +0 -48
- data/lib/graphql/argument.rb +0 -131
- data/lib/graphql/authorization.rb +0 -82
- data/lib/graphql/backtrace/legacy_tracer.rb +0 -56
- data/lib/graphql/backwards_compatibility.rb +0 -61
- data/lib/graphql/base_type.rb +0 -232
- data/lib/graphql/boolean_type.rb +0 -2
- data/lib/graphql/compatibility/execution_specification/counter_schema.rb +0 -53
- data/lib/graphql/compatibility/execution_specification/specification_schema.rb +0 -200
- data/lib/graphql/compatibility/execution_specification.rb +0 -436
- data/lib/graphql/compatibility/lazy_execution_specification/lazy_schema.rb +0 -111
- data/lib/graphql/compatibility/lazy_execution_specification.rb +0 -215
- data/lib/graphql/compatibility/query_parser_specification/parse_error_specification.rb +0 -87
- data/lib/graphql/compatibility/query_parser_specification/query_assertions.rb +0 -79
- data/lib/graphql/compatibility/query_parser_specification.rb +0 -266
- data/lib/graphql/compatibility/schema_parser_specification.rb +0 -682
- data/lib/graphql/compatibility.rb +0 -5
- data/lib/graphql/define/assign_argument.rb +0 -12
- data/lib/graphql/define/assign_connection.rb +0 -13
- data/lib/graphql/define/assign_enum_value.rb +0 -18
- data/lib/graphql/define/assign_global_id_field.rb +0 -11
- data/lib/graphql/define/assign_mutation_function.rb +0 -34
- data/lib/graphql/define/assign_object_field.rb +0 -42
- data/lib/graphql/define/defined_object_proxy.rb +0 -53
- data/lib/graphql/define/instance_definable.rb +0 -255
- data/lib/graphql/define/no_definition_error.rb +0 -7
- data/lib/graphql/define/non_null_with_bang.rb +0 -16
- data/lib/graphql/define/type_definer.rb +0 -31
- data/lib/graphql/define.rb +0 -31
- data/lib/graphql/deprecated_dsl.rb +0 -55
- data/lib/graphql/directive/deprecated_directive.rb +0 -2
- data/lib/graphql/directive/include_directive.rb +0 -2
- data/lib/graphql/directive/skip_directive.rb +0 -2
- data/lib/graphql/directive.rb +0 -107
- data/lib/graphql/enum_type.rb +0 -133
- data/lib/graphql/execution/execute.rb +0 -333
- data/lib/graphql/execution/flatten.rb +0 -40
- data/lib/graphql/execution/typecast.rb +0 -50
- data/lib/graphql/field/resolve.rb +0 -59
- data/lib/graphql/field.rb +0 -226
- data/lib/graphql/float_type.rb +0 -2
- data/lib/graphql/function.rb +0 -128
- data/lib/graphql/id_type.rb +0 -2
- data/lib/graphql/input_object_type.rb +0 -138
- data/lib/graphql/int_type.rb +0 -2
- data/lib/graphql/interface_type.rb +0 -72
- data/lib/graphql/internal_representation/document.rb +0 -27
- data/lib/graphql/internal_representation/node.rb +0 -206
- data/lib/graphql/internal_representation/print.rb +0 -51
- data/lib/graphql/internal_representation/rewrite.rb +0 -184
- data/lib/graphql/internal_representation/scope.rb +0 -88
- data/lib/graphql/internal_representation/visit.rb +0 -36
- data/lib/graphql/internal_representation.rb +0 -7
- data/lib/graphql/list_type.rb +0 -80
- data/lib/graphql/non_null_type.rb +0 -71
- data/lib/graphql/object_type.rb +0 -130
- data/lib/graphql/query/arguments.rb +0 -189
- data/lib/graphql/query/arguments_cache.rb +0 -24
- data/lib/graphql/query/executor.rb +0 -52
- data/lib/graphql/query/serial_execution/field_resolution.rb +0 -92
- data/lib/graphql/query/serial_execution/operation_resolution.rb +0 -19
- data/lib/graphql/query/serial_execution/selection_resolution.rb +0 -23
- data/lib/graphql/query/serial_execution/value_resolution.rb +0 -87
- data/lib/graphql/query/serial_execution.rb +0 -40
- data/lib/graphql/relay/array_connection.rb +0 -83
- data/lib/graphql/relay/base_connection.rb +0 -189
- data/lib/graphql/relay/connection_instrumentation.rb +0 -54
- data/lib/graphql/relay/connection_resolve.rb +0 -43
- data/lib/graphql/relay/connection_type.rb +0 -54
- data/lib/graphql/relay/edge.rb +0 -27
- data/lib/graphql/relay/edge_type.rb +0 -19
- data/lib/graphql/relay/edges_instrumentation.rb +0 -39
- data/lib/graphql/relay/global_id_resolve.rb +0 -17
- data/lib/graphql/relay/mongo_relation_connection.rb +0 -50
- data/lib/graphql/relay/mutation/instrumentation.rb +0 -23
- data/lib/graphql/relay/mutation/resolve.rb +0 -56
- data/lib/graphql/relay/mutation/result.rb +0 -38
- data/lib/graphql/relay/mutation.rb +0 -106
- data/lib/graphql/relay/node.rb +0 -39
- data/lib/graphql/relay/page_info.rb +0 -7
- data/lib/graphql/relay/relation_connection.rb +0 -188
- data/lib/graphql/relay/type_extensions.rb +0 -32
- data/lib/graphql/scalar_type.rb +0 -91
- data/lib/graphql/schema/catchall_middleware.rb +0 -35
- data/lib/graphql/schema/default_parse_error.rb +0 -10
- data/lib/graphql/schema/default_type_error.rb +0 -17
- data/lib/graphql/schema/member/accepts_definition.rb +0 -164
- data/lib/graphql/schema/member/cached_graphql_definition.rb +0 -58
- data/lib/graphql/schema/member/instrumentation.rb +0 -131
- data/lib/graphql/schema/middleware_chain.rb +0 -82
- data/lib/graphql/schema/possible_types.rb +0 -44
- data/lib/graphql/schema/rescue_middleware.rb +0 -60
- data/lib/graphql/schema/timeout_middleware.rb +0 -88
- data/lib/graphql/schema/traversal.rb +0 -228
- data/lib/graphql/schema/validation.rb +0 -313
- data/lib/graphql/static_validation/default_visitor.rb +0 -15
- data/lib/graphql/static_validation/no_validate_visitor.rb +0 -10
- data/lib/graphql/string_type.rb +0 -2
- data/lib/graphql/subscriptions/subscription_root.rb +0 -76
- data/lib/graphql/tracing/skylight_tracing.rb +0 -70
- data/lib/graphql/types/relay/node_field.rb +0 -24
- data/lib/graphql/types/relay/nodes_field.rb +0 -43
- data/lib/graphql/union_type.rb +0 -115
- data/lib/graphql/upgrader/member.rb +0 -937
- data/lib/graphql/upgrader/schema.rb +0 -38
data/lib/graphql.rb
CHANGED
@@ -4,7 +4,6 @@ require "json"
|
|
4
4
|
require "set"
|
5
5
|
require "singleton"
|
6
6
|
require "forwardable"
|
7
|
-
require "ostruct"
|
8
7
|
|
9
8
|
module GraphQL
|
10
9
|
# forwards-compat for argument handling
|
@@ -82,27 +81,8 @@ require "graphql/integer_decoding_error"
|
|
82
81
|
require "graphql/integer_encoding_error"
|
83
82
|
require "graphql/string_encoding_error"
|
84
83
|
require "graphql/date_encoding_error"
|
85
|
-
|
86
|
-
require "graphql/define"
|
87
|
-
require "graphql/deprecation"
|
88
|
-
require "graphql/base_type"
|
89
|
-
require "graphql/object_type"
|
90
|
-
require "graphql/enum_type"
|
91
|
-
require "graphql/input_object_type"
|
92
|
-
require "graphql/interface_type"
|
93
|
-
require "graphql/list_type"
|
94
|
-
require "graphql/non_null_type"
|
95
|
-
require "graphql/union_type"
|
96
|
-
|
97
|
-
require "graphql/argument"
|
98
|
-
require "graphql/field"
|
99
84
|
require "graphql/type_kinds"
|
100
|
-
|
101
|
-
require "graphql/backwards_compatibility"
|
102
|
-
require "graphql/scalar_type"
|
103
|
-
|
104
85
|
require "graphql/name_validator"
|
105
|
-
|
106
86
|
require "graphql/language"
|
107
87
|
|
108
88
|
require_relative "./graphql/railtie" if defined? Rails::Railtie
|
@@ -117,15 +97,8 @@ require "graphql/query"
|
|
117
97
|
require "graphql/types"
|
118
98
|
require "graphql/dataloader"
|
119
99
|
require "graphql/filter"
|
120
|
-
require "graphql/internal_representation"
|
121
|
-
require "graphql/directive"
|
122
100
|
require "graphql/static_validation"
|
123
101
|
require "graphql/execution"
|
124
|
-
require "graphql/boolean_type"
|
125
|
-
require "graphql/float_type"
|
126
|
-
require "graphql/id_type"
|
127
|
-
require "graphql/int_type"
|
128
|
-
require "graphql/string_type"
|
129
102
|
require "graphql/schema/built_in_types"
|
130
103
|
require "graphql/schema/loader"
|
131
104
|
require "graphql/schema/printer"
|
@@ -133,49 +106,11 @@ require "graphql/introspection"
|
|
133
106
|
require "graphql/relay"
|
134
107
|
|
135
108
|
require "graphql/version"
|
136
|
-
require "graphql/compatibility"
|
137
|
-
require "graphql/function"
|
138
109
|
require "graphql/subscriptions"
|
139
110
|
require "graphql/parse_error"
|
140
111
|
require "graphql/backtrace"
|
141
112
|
|
142
|
-
require "graphql/deprecated_dsl"
|
143
|
-
require "graphql/authorization"
|
144
113
|
require "graphql/unauthorized_error"
|
145
114
|
require "graphql/unauthorized_field_error"
|
146
115
|
require "graphql/load_application_object_failed_error"
|
147
|
-
require "graphql/
|
148
|
-
require "graphql/directive/skip_directive"
|
149
|
-
require "graphql/directive/deprecated_directive"
|
150
|
-
|
151
|
-
module GraphQL
|
152
|
-
# Ruby has `deprecate_constant`,
|
153
|
-
# but I don't see a way to give a nice error message in that case,
|
154
|
-
# so I'm doing this instead.
|
155
|
-
DEPRECATED_INT_TYPE = INT_TYPE
|
156
|
-
DEPRECATED_FLOAT_TYPE = FLOAT_TYPE
|
157
|
-
DEPRECATED_STRING_TYPE = STRING_TYPE
|
158
|
-
DEPRECATED_BOOLEAN_TYPE = BOOLEAN_TYPE
|
159
|
-
DEPRECATED_ID_TYPE = ID_TYPE
|
160
|
-
|
161
|
-
remove_const :INT_TYPE
|
162
|
-
remove_const :FLOAT_TYPE
|
163
|
-
remove_const :STRING_TYPE
|
164
|
-
remove_const :BOOLEAN_TYPE
|
165
|
-
remove_const :ID_TYPE
|
166
|
-
|
167
|
-
def self.const_missing(const_name)
|
168
|
-
deprecated_const_name = :"DEPRECATED_#{const_name}"
|
169
|
-
if const_defined?(deprecated_const_name)
|
170
|
-
deprecated_type = const_get(deprecated_const_name)
|
171
|
-
deprecated_caller = caller(1, 1).first
|
172
|
-
# Don't warn about internal uses, like `types.Int`
|
173
|
-
if !deprecated_caller.include?("lib/graphql")
|
174
|
-
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})"
|
175
|
-
end
|
176
|
-
deprecated_type
|
177
|
-
else
|
178
|
-
super
|
179
|
-
end
|
180
|
-
end
|
181
|
-
end
|
116
|
+
require "graphql/deprecation"
|
metadata
CHANGED
@@ -1,29 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: graphql
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Mosolgo
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-02-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: base64
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ">="
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: benchmark-ips
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -70,72 +56,72 @@ dependencies:
|
|
70
56
|
name: minitest
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
72
58
|
requirements:
|
73
|
-
- - "
|
59
|
+
- - "~>"
|
74
60
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
61
|
+
version: 5.9.0
|
76
62
|
type: :development
|
77
63
|
prerelease: false
|
78
64
|
version_requirements: !ruby/object:Gem::Requirement
|
79
65
|
requirements:
|
80
|
-
- - "
|
66
|
+
- - "~>"
|
81
67
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
68
|
+
version: 5.9.0
|
83
69
|
- !ruby/object:Gem::Dependency
|
84
70
|
name: minitest-focus
|
85
71
|
requirement: !ruby/object:Gem::Requirement
|
86
72
|
requirements:
|
87
|
-
- - "
|
73
|
+
- - "~>"
|
88
74
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
75
|
+
version: '1.1'
|
90
76
|
type: :development
|
91
77
|
prerelease: false
|
92
78
|
version_requirements: !ruby/object:Gem::Requirement
|
93
79
|
requirements:
|
94
|
-
- - "
|
80
|
+
- - "~>"
|
95
81
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
82
|
+
version: '1.1'
|
97
83
|
- !ruby/object:Gem::Dependency
|
98
84
|
name: minitest-reporters
|
99
85
|
requirement: !ruby/object:Gem::Requirement
|
100
86
|
requirements:
|
101
|
-
- - "
|
87
|
+
- - "~>"
|
102
88
|
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
89
|
+
version: '1.0'
|
104
90
|
type: :development
|
105
91
|
prerelease: false
|
106
92
|
version_requirements: !ruby/object:Gem::Requirement
|
107
93
|
requirements:
|
108
|
-
- - "
|
94
|
+
- - "~>"
|
109
95
|
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
96
|
+
version: '1.0'
|
111
97
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
98
|
+
name: racc
|
113
99
|
requirement: !ruby/object:Gem::Requirement
|
114
100
|
requirements:
|
115
|
-
- - "
|
101
|
+
- - "~>"
|
116
102
|
- !ruby/object:Gem::Version
|
117
|
-
version: '
|
103
|
+
version: '1.4'
|
118
104
|
type: :development
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
107
|
requirements:
|
122
|
-
- - "
|
108
|
+
- - "~>"
|
123
109
|
- !ruby/object:Gem::Version
|
124
|
-
version: '
|
110
|
+
version: '1.4'
|
125
111
|
- !ruby/object:Gem::Dependency
|
126
|
-
name: rake
|
112
|
+
name: rake
|
127
113
|
requirement: !ruby/object:Gem::Requirement
|
128
114
|
requirements:
|
129
|
-
- - "
|
115
|
+
- - "~>"
|
130
116
|
- !ruby/object:Gem::Version
|
131
|
-
version: '
|
117
|
+
version: '12'
|
132
118
|
type: :development
|
133
119
|
prerelease: false
|
134
120
|
version_requirements: !ruby/object:Gem::Requirement
|
135
121
|
requirements:
|
136
|
-
- - "
|
122
|
+
- - "~>"
|
137
123
|
- !ruby/object:Gem::Version
|
138
|
-
version: '
|
124
|
+
version: '12'
|
139
125
|
- !ruby/object:Gem::Dependency
|
140
126
|
name: rubocop
|
141
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -150,20 +136,6 @@ dependencies:
|
|
150
136
|
- - '='
|
151
137
|
- !ruby/object:Gem::Version
|
152
138
|
version: '1.12'
|
153
|
-
- !ruby/object:Gem::Dependency
|
154
|
-
name: parser
|
155
|
-
requirement: !ruby/object:Gem::Requirement
|
156
|
-
requirements:
|
157
|
-
- - ">="
|
158
|
-
- !ruby/object:Gem::Version
|
159
|
-
version: '0'
|
160
|
-
type: :development
|
161
|
-
prerelease: false
|
162
|
-
version_requirements: !ruby/object:Gem::Requirement
|
163
|
-
requirements:
|
164
|
-
- - ">="
|
165
|
-
- !ruby/object:Gem::Version
|
166
|
-
version: '0'
|
167
139
|
- !ruby/object:Gem::Dependency
|
168
140
|
name: jekyll
|
169
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -305,7 +277,6 @@ files:
|
|
305
277
|
- lib/generators/graphql/union_generator.rb
|
306
278
|
- lib/graphql.rb
|
307
279
|
- lib/graphql/analysis.rb
|
308
|
-
- lib/graphql/analysis/analyze_query.rb
|
309
280
|
- lib/graphql/analysis/ast.rb
|
310
281
|
- lib/graphql/analysis/ast/analyzer.rb
|
311
282
|
- lib/graphql/analysis/ast/field_usage.rb
|
@@ -314,66 +285,24 @@ files:
|
|
314
285
|
- lib/graphql/analysis/ast/query_complexity.rb
|
315
286
|
- lib/graphql/analysis/ast/query_depth.rb
|
316
287
|
- lib/graphql/analysis/ast/visitor.rb
|
317
|
-
- lib/graphql/analysis/field_usage.rb
|
318
|
-
- lib/graphql/analysis/max_query_complexity.rb
|
319
|
-
- lib/graphql/analysis/max_query_depth.rb
|
320
|
-
- lib/graphql/analysis/query_complexity.rb
|
321
|
-
- lib/graphql/analysis/query_depth.rb
|
322
|
-
- lib/graphql/analysis/reducer_state.rb
|
323
288
|
- lib/graphql/analysis_error.rb
|
324
|
-
- lib/graphql/argument.rb
|
325
|
-
- lib/graphql/authorization.rb
|
326
289
|
- lib/graphql/backtrace.rb
|
327
290
|
- lib/graphql/backtrace/inspect_result.rb
|
328
|
-
- lib/graphql/backtrace/legacy_tracer.rb
|
329
291
|
- lib/graphql/backtrace/table.rb
|
330
292
|
- lib/graphql/backtrace/traced_error.rb
|
331
293
|
- lib/graphql/backtrace/tracer.rb
|
332
|
-
- lib/graphql/backwards_compatibility.rb
|
333
|
-
- lib/graphql/base_type.rb
|
334
|
-
- lib/graphql/boolean_type.rb
|
335
294
|
- lib/graphql/coercion_error.rb
|
336
|
-
- lib/graphql/compatibility.rb
|
337
|
-
- lib/graphql/compatibility/execution_specification.rb
|
338
|
-
- lib/graphql/compatibility/execution_specification/counter_schema.rb
|
339
|
-
- lib/graphql/compatibility/execution_specification/specification_schema.rb
|
340
|
-
- lib/graphql/compatibility/lazy_execution_specification.rb
|
341
|
-
- lib/graphql/compatibility/lazy_execution_specification/lazy_schema.rb
|
342
|
-
- lib/graphql/compatibility/query_parser_specification.rb
|
343
|
-
- lib/graphql/compatibility/query_parser_specification/parse_error_specification.rb
|
344
|
-
- lib/graphql/compatibility/query_parser_specification/query_assertions.rb
|
345
|
-
- lib/graphql/compatibility/schema_parser_specification.rb
|
346
295
|
- lib/graphql/dataloader.rb
|
347
296
|
- lib/graphql/dataloader/null_dataloader.rb
|
348
297
|
- lib/graphql/dataloader/request.rb
|
349
298
|
- lib/graphql/dataloader/request_all.rb
|
350
299
|
- lib/graphql/dataloader/source.rb
|
351
300
|
- lib/graphql/date_encoding_error.rb
|
352
|
-
- lib/graphql/define.rb
|
353
|
-
- lib/graphql/define/assign_argument.rb
|
354
|
-
- lib/graphql/define/assign_connection.rb
|
355
|
-
- lib/graphql/define/assign_enum_value.rb
|
356
|
-
- lib/graphql/define/assign_global_id_field.rb
|
357
|
-
- lib/graphql/define/assign_mutation_function.rb
|
358
|
-
- lib/graphql/define/assign_object_field.rb
|
359
|
-
- lib/graphql/define/defined_object_proxy.rb
|
360
|
-
- lib/graphql/define/instance_definable.rb
|
361
|
-
- lib/graphql/define/no_definition_error.rb
|
362
|
-
- lib/graphql/define/non_null_with_bang.rb
|
363
|
-
- lib/graphql/define/type_definer.rb
|
364
|
-
- lib/graphql/deprecated_dsl.rb
|
365
301
|
- lib/graphql/deprecation.rb
|
366
302
|
- lib/graphql/dig.rb
|
367
|
-
- lib/graphql/directive.rb
|
368
|
-
- lib/graphql/directive/deprecated_directive.rb
|
369
|
-
- lib/graphql/directive/include_directive.rb
|
370
|
-
- lib/graphql/directive/skip_directive.rb
|
371
|
-
- lib/graphql/enum_type.rb
|
372
303
|
- lib/graphql/execution.rb
|
373
304
|
- lib/graphql/execution/directive_checks.rb
|
374
305
|
- lib/graphql/execution/errors.rb
|
375
|
-
- lib/graphql/execution/execute.rb
|
376
|
-
- lib/graphql/execution/flatten.rb
|
377
306
|
- lib/graphql/execution/instrumentation.rb
|
378
307
|
- lib/graphql/execution/interpreter.rb
|
379
308
|
- lib/graphql/execution/interpreter/argument_value.rb
|
@@ -388,26 +317,10 @@ files:
|
|
388
317
|
- lib/graphql/execution/lazy/resolve.rb
|
389
318
|
- lib/graphql/execution/lookahead.rb
|
390
319
|
- lib/graphql/execution/multiplex.rb
|
391
|
-
- lib/graphql/execution/typecast.rb
|
392
320
|
- lib/graphql/execution_error.rb
|
393
|
-
- lib/graphql/field.rb
|
394
|
-
- lib/graphql/field/resolve.rb
|
395
321
|
- lib/graphql/filter.rb
|
396
|
-
- lib/graphql/float_type.rb
|
397
|
-
- lib/graphql/function.rb
|
398
|
-
- lib/graphql/id_type.rb
|
399
|
-
- lib/graphql/input_object_type.rb
|
400
|
-
- lib/graphql/int_type.rb
|
401
322
|
- lib/graphql/integer_decoding_error.rb
|
402
323
|
- lib/graphql/integer_encoding_error.rb
|
403
|
-
- lib/graphql/interface_type.rb
|
404
|
-
- lib/graphql/internal_representation.rb
|
405
|
-
- lib/graphql/internal_representation/document.rb
|
406
|
-
- lib/graphql/internal_representation/node.rb
|
407
|
-
- lib/graphql/internal_representation/print.rb
|
408
|
-
- lib/graphql/internal_representation/rewrite.rb
|
409
|
-
- lib/graphql/internal_representation/scope.rb
|
410
|
-
- lib/graphql/internal_representation/visit.rb
|
411
324
|
- lib/graphql/introspection.rb
|
412
325
|
- lib/graphql/introspection/base_object.rb
|
413
326
|
- lib/graphql/introspection/directive_location_enum.rb
|
@@ -438,11 +351,8 @@ files:
|
|
438
351
|
- lib/graphql/language/sanitized_printer.rb
|
439
352
|
- lib/graphql/language/token.rb
|
440
353
|
- lib/graphql/language/visitor.rb
|
441
|
-
- lib/graphql/list_type.rb
|
442
354
|
- lib/graphql/load_application_object_failed_error.rb
|
443
355
|
- lib/graphql/name_validator.rb
|
444
|
-
- lib/graphql/non_null_type.rb
|
445
|
-
- lib/graphql/object_type.rb
|
446
356
|
- lib/graphql/pagination.rb
|
447
357
|
- lib/graphql/pagination/active_record_relation_connection.rb
|
448
358
|
- lib/graphql/pagination/array_connection.rb
|
@@ -453,20 +363,12 @@ files:
|
|
453
363
|
- lib/graphql/pagination/sequel_dataset_connection.rb
|
454
364
|
- lib/graphql/parse_error.rb
|
455
365
|
- lib/graphql/query.rb
|
456
|
-
- lib/graphql/query/arguments.rb
|
457
|
-
- lib/graphql/query/arguments_cache.rb
|
458
366
|
- lib/graphql/query/context.rb
|
459
|
-
- lib/graphql/query/executor.rb
|
460
367
|
- lib/graphql/query/fingerprint.rb
|
461
368
|
- lib/graphql/query/input_validation_result.rb
|
462
369
|
- lib/graphql/query/literal_input.rb
|
463
370
|
- lib/graphql/query/null_context.rb
|
464
371
|
- lib/graphql/query/result.rb
|
465
|
-
- lib/graphql/query/serial_execution.rb
|
466
|
-
- lib/graphql/query/serial_execution/field_resolution.rb
|
467
|
-
- lib/graphql/query/serial_execution/operation_resolution.rb
|
468
|
-
- lib/graphql/query/serial_execution/selection_resolution.rb
|
469
|
-
- lib/graphql/query/serial_execution/value_resolution.rb
|
470
372
|
- lib/graphql/query/validation_pipeline.rb
|
471
373
|
- lib/graphql/query/variable_validation_error.rb
|
472
374
|
- lib/graphql/query/variables.rb
|
@@ -474,31 +376,12 @@ files:
|
|
474
376
|
- lib/graphql/rake_task.rb
|
475
377
|
- lib/graphql/rake_task/validate.rb
|
476
378
|
- lib/graphql/relay.rb
|
477
|
-
- lib/graphql/relay/array_connection.rb
|
478
|
-
- lib/graphql/relay/base_connection.rb
|
479
|
-
- lib/graphql/relay/connection_instrumentation.rb
|
480
|
-
- lib/graphql/relay/connection_resolve.rb
|
481
|
-
- lib/graphql/relay/connection_type.rb
|
482
|
-
- lib/graphql/relay/edge.rb
|
483
|
-
- lib/graphql/relay/edge_type.rb
|
484
|
-
- lib/graphql/relay/edges_instrumentation.rb
|
485
|
-
- lib/graphql/relay/global_id_resolve.rb
|
486
|
-
- lib/graphql/relay/mongo_relation_connection.rb
|
487
|
-
- lib/graphql/relay/mutation.rb
|
488
|
-
- lib/graphql/relay/mutation/instrumentation.rb
|
489
|
-
- lib/graphql/relay/mutation/resolve.rb
|
490
|
-
- lib/graphql/relay/mutation/result.rb
|
491
|
-
- lib/graphql/relay/node.rb
|
492
|
-
- lib/graphql/relay/page_info.rb
|
493
379
|
- lib/graphql/relay/range_add.rb
|
494
|
-
- lib/graphql/relay/relation_connection.rb
|
495
|
-
- lib/graphql/relay/type_extensions.rb
|
496
380
|
- lib/graphql/rubocop.rb
|
497
381
|
- lib/graphql/rubocop/graphql/base_cop.rb
|
498
382
|
- lib/graphql/rubocop/graphql/default_null_true.rb
|
499
383
|
- lib/graphql/rubocop/graphql/default_required_true.rb
|
500
384
|
- lib/graphql/runtime_type_error.rb
|
501
|
-
- lib/graphql/scalar_type.rb
|
502
385
|
- lib/graphql/schema.rb
|
503
386
|
- lib/graphql/schema/addition.rb
|
504
387
|
- lib/graphql/schema/argument.rb
|
@@ -508,9 +391,6 @@ files:
|
|
508
391
|
- lib/graphql/schema/build_from_definition/resolve_map.rb
|
509
392
|
- lib/graphql/schema/build_from_definition/resolve_map/default_resolve.rb
|
510
393
|
- lib/graphql/schema/built_in_types.rb
|
511
|
-
- lib/graphql/schema/catchall_middleware.rb
|
512
|
-
- lib/graphql/schema/default_parse_error.rb
|
513
|
-
- lib/graphql/schema/default_type_error.rb
|
514
394
|
- lib/graphql/schema/directive.rb
|
515
395
|
- lib/graphql/schema/directive/deprecated.rb
|
516
396
|
- lib/graphql/schema/directive/feature.rb
|
@@ -534,10 +414,8 @@ files:
|
|
534
414
|
- lib/graphql/schema/list.rb
|
535
415
|
- lib/graphql/schema/loader.rb
|
536
416
|
- lib/graphql/schema/member.rb
|
537
|
-
- lib/graphql/schema/member/accepts_definition.rb
|
538
417
|
- lib/graphql/schema/member/base_dsl_methods.rb
|
539
418
|
- lib/graphql/schema/member/build_type.rb
|
540
|
-
- lib/graphql/schema/member/cached_graphql_definition.rb
|
541
419
|
- lib/graphql/schema/member/graphql_type_names.rb
|
542
420
|
- lib/graphql/schema/member/has_arguments.rb
|
543
421
|
- lib/graphql/schema/member/has_ast_node.rb
|
@@ -548,32 +426,25 @@ files:
|
|
548
426
|
- lib/graphql/schema/member/has_path.rb
|
549
427
|
- lib/graphql/schema/member/has_unresolved_type_error.rb
|
550
428
|
- lib/graphql/schema/member/has_validators.rb
|
551
|
-
- lib/graphql/schema/member/instrumentation.rb
|
552
429
|
- lib/graphql/schema/member/relay_shortcuts.rb
|
553
430
|
- lib/graphql/schema/member/scoped.rb
|
554
431
|
- lib/graphql/schema/member/type_system_helpers.rb
|
555
432
|
- lib/graphql/schema/member/validates_input.rb
|
556
|
-
- lib/graphql/schema/middleware_chain.rb
|
557
433
|
- lib/graphql/schema/mutation.rb
|
558
434
|
- lib/graphql/schema/non_null.rb
|
559
435
|
- lib/graphql/schema/null_mask.rb
|
560
436
|
- lib/graphql/schema/object.rb
|
561
|
-
- lib/graphql/schema/possible_types.rb
|
562
437
|
- lib/graphql/schema/printer.rb
|
563
438
|
- lib/graphql/schema/relay_classic_mutation.rb
|
564
|
-
- lib/graphql/schema/rescue_middleware.rb
|
565
439
|
- lib/graphql/schema/resolver.rb
|
566
440
|
- lib/graphql/schema/resolver/has_payload_type.rb
|
567
441
|
- lib/graphql/schema/scalar.rb
|
568
442
|
- lib/graphql/schema/subscription.rb
|
569
443
|
- lib/graphql/schema/timeout.rb
|
570
|
-
- lib/graphql/schema/timeout_middleware.rb
|
571
|
-
- lib/graphql/schema/traversal.rb
|
572
444
|
- lib/graphql/schema/type_expression.rb
|
573
445
|
- lib/graphql/schema/type_membership.rb
|
574
446
|
- lib/graphql/schema/union.rb
|
575
447
|
- lib/graphql/schema/unique_within_type.rb
|
576
|
-
- lib/graphql/schema/validation.rb
|
577
448
|
- lib/graphql/schema/validator.rb
|
578
449
|
- lib/graphql/schema/validator/allow_blank_validator.rb
|
579
450
|
- lib/graphql/schema/validator/allow_null_validator.rb
|
@@ -588,12 +459,10 @@ files:
|
|
588
459
|
- lib/graphql/static_validation.rb
|
589
460
|
- lib/graphql/static_validation/all_rules.rb
|
590
461
|
- lib/graphql/static_validation/base_visitor.rb
|
591
|
-
- lib/graphql/static_validation/default_visitor.rb
|
592
462
|
- lib/graphql/static_validation/definition_dependencies.rb
|
593
463
|
- lib/graphql/static_validation/error.rb
|
594
464
|
- lib/graphql/static_validation/interpreter_visitor.rb
|
595
465
|
- lib/graphql/static_validation/literal_validator.rb
|
596
|
-
- lib/graphql/static_validation/no_validate_visitor.rb
|
597
466
|
- lib/graphql/static_validation/rules/argument_literals_are_compatible.rb
|
598
467
|
- lib/graphql/static_validation/rules/argument_literals_are_compatible_error.rb
|
599
468
|
- lib/graphql/static_validation/rules/argument_names_are_unique.rb
|
@@ -657,7 +526,6 @@ files:
|
|
657
526
|
- lib/graphql/static_validation/validation_timeout_error.rb
|
658
527
|
- lib/graphql/static_validation/validator.rb
|
659
528
|
- lib/graphql/string_encoding_error.rb
|
660
|
-
- lib/graphql/string_type.rb
|
661
529
|
- lib/graphql/subscriptions.rb
|
662
530
|
- lib/graphql/subscriptions/action_cable_subscriptions.rb
|
663
531
|
- lib/graphql/subscriptions/broadcast_analyzer.rb
|
@@ -665,7 +533,6 @@ files:
|
|
665
533
|
- lib/graphql/subscriptions/event.rb
|
666
534
|
- lib/graphql/subscriptions/instrumentation.rb
|
667
535
|
- lib/graphql/subscriptions/serialize.rb
|
668
|
-
- lib/graphql/subscriptions/subscription_root.rb
|
669
536
|
- lib/graphql/tracing.rb
|
670
537
|
- lib/graphql/tracing/active_support_notifications_tracing.rb
|
671
538
|
- lib/graphql/tracing/appoptics_tracing.rb
|
@@ -677,7 +544,6 @@ files:
|
|
677
544
|
- lib/graphql/tracing/prometheus_tracing.rb
|
678
545
|
- lib/graphql/tracing/prometheus_tracing/graphql_collector.rb
|
679
546
|
- lib/graphql/tracing/scout_tracing.rb
|
680
|
-
- lib/graphql/tracing/skylight_tracing.rb
|
681
547
|
- lib/graphql/tracing/statsd_tracing.rb
|
682
548
|
- lib/graphql/type_kinds.rb
|
683
549
|
- lib/graphql/types.rb
|
@@ -699,17 +565,12 @@ files:
|
|
699
565
|
- lib/graphql/types/relay/has_nodes_field.rb
|
700
566
|
- lib/graphql/types/relay/node.rb
|
701
567
|
- lib/graphql/types/relay/node_behaviors.rb
|
702
|
-
- lib/graphql/types/relay/node_field.rb
|
703
|
-
- lib/graphql/types/relay/nodes_field.rb
|
704
568
|
- lib/graphql/types/relay/page_info.rb
|
705
569
|
- lib/graphql/types/relay/page_info_behaviors.rb
|
706
570
|
- lib/graphql/types/string.rb
|
707
571
|
- lib/graphql/unauthorized_error.rb
|
708
572
|
- lib/graphql/unauthorized_field_error.rb
|
709
|
-
- lib/graphql/union_type.rb
|
710
573
|
- lib/graphql/unresolved_type_error.rb
|
711
|
-
- lib/graphql/upgrader/member.rb
|
712
|
-
- lib/graphql/upgrader/schema.rb
|
713
574
|
- lib/graphql/version.rb
|
714
575
|
- readme.md
|
715
576
|
homepage: https://github.com/rmosolgo/graphql-ruby
|
@@ -721,7 +582,7 @@ metadata:
|
|
721
582
|
source_code_uri: https://github.com/rmosolgo/graphql-ruby
|
722
583
|
bug_tracker_uri: https://github.com/rmosolgo/graphql-ruby/issues
|
723
584
|
mailing_list_uri: https://tinyletter.com/graphql-ruby
|
724
|
-
post_install_message:
|
585
|
+
post_install_message:
|
725
586
|
rdoc_options: []
|
726
587
|
require_paths:
|
727
588
|
- lib
|
@@ -736,8 +597,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
736
597
|
- !ruby/object:Gem::Version
|
737
598
|
version: '0'
|
738
599
|
requirements: []
|
739
|
-
rubygems_version: 3.
|
740
|
-
signing_key:
|
600
|
+
rubygems_version: 3.1.6
|
601
|
+
signing_key:
|
741
602
|
specification_version: 4
|
742
603
|
summary: A GraphQL language and runtime for Ruby
|
743
604
|
test_files: []
|
@@ -1,98 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module GraphQL
|
3
|
-
module Analysis
|
4
|
-
module_function
|
5
|
-
|
6
|
-
def use(schema_class)
|
7
|
-
schema = schema_class.is_a?(Class) ? schema_class : schema_class.target
|
8
|
-
schema.analysis_engine = self
|
9
|
-
end
|
10
|
-
|
11
|
-
# @return [void]
|
12
|
-
def analyze_multiplex(multiplex, analyzers)
|
13
|
-
multiplex.trace("analyze_multiplex", { multiplex: multiplex }) do
|
14
|
-
reducer_states = analyzers.map { |r| ReducerState.new(r, multiplex) }
|
15
|
-
query_results = multiplex.queries.map do |query|
|
16
|
-
if query.valid?
|
17
|
-
analyze_query(query, query.analyzers, multiplex_states: reducer_states)
|
18
|
-
else
|
19
|
-
[]
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
multiplex_results = reducer_states.map(&:finalize_reducer)
|
24
|
-
multiplex_errors = analysis_errors(multiplex_results)
|
25
|
-
|
26
|
-
multiplex.queries.each_with_index do |query, idx|
|
27
|
-
query.analysis_errors = multiplex_errors + analysis_errors(query_results[idx])
|
28
|
-
end
|
29
|
-
end
|
30
|
-
nil
|
31
|
-
end
|
32
|
-
|
33
|
-
# Visit `query`'s internal representation, calling `analyzers` along the way.
|
34
|
-
#
|
35
|
-
# - First, query analyzers are filtered down by calling `.analyze?(query)`, if they respond to that method
|
36
|
-
# - Then, query analyzers are initialized by calling `.initial_value(query)`, if they respond to that method.
|
37
|
-
# - Then, they receive `.call(memo, visit_type, irep_node)`, where visit type is `:enter` or `:leave`.
|
38
|
-
# - Last, they receive `.final_value(memo)`, if they respond to that method.
|
39
|
-
#
|
40
|
-
# It returns an array of final `memo` values in the order that `analyzers` were passed in.
|
41
|
-
#
|
42
|
-
# @param query [GraphQL::Query]
|
43
|
-
# @param analyzers [Array<#call>] Objects that respond to `#call(memo, visit_type, irep_node)`
|
44
|
-
# @return [Array<Any>] Results from those analyzers
|
45
|
-
def analyze_query(query, analyzers, multiplex_states: [])
|
46
|
-
GraphQL::Deprecation.warn "Legacy analysis will be removed in GraphQL-Ruby 2.0, please upgrade to AST Analysis: https://graphql-ruby.org/queries/ast_analysis.html (schema: #{query.schema})"
|
47
|
-
|
48
|
-
query.trace("analyze_query", { query: query }) do
|
49
|
-
analyzers_to_run = analyzers.select do |analyzer|
|
50
|
-
if analyzer.respond_to?(:analyze?)
|
51
|
-
analyzer.analyze?(query)
|
52
|
-
else
|
53
|
-
true
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
reducer_states = analyzers_to_run.map { |r| ReducerState.new(r, query) } + multiplex_states
|
58
|
-
|
59
|
-
irep = query.internal_representation
|
60
|
-
|
61
|
-
irep.operation_definitions.each do |name, op_node|
|
62
|
-
reduce_node(op_node, reducer_states)
|
63
|
-
end
|
64
|
-
|
65
|
-
reducer_states.map(&:finalize_reducer)
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
private
|
70
|
-
|
71
|
-
module_function
|
72
|
-
|
73
|
-
# Enter the node, visit its children, then leave the node.
|
74
|
-
def reduce_node(irep_node, reducer_states)
|
75
|
-
visit_analyzers(:enter, irep_node, reducer_states)
|
76
|
-
|
77
|
-
irep_node.typed_children.each do |type_defn, children|
|
78
|
-
children.each do |name, child_irep_node|
|
79
|
-
reduce_node(child_irep_node, reducer_states)
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
visit_analyzers(:leave, irep_node, reducer_states)
|
84
|
-
end
|
85
|
-
|
86
|
-
def visit_analyzers(visit_type, irep_node, reducer_states)
|
87
|
-
reducer_states.each do |reducer_state|
|
88
|
-
next_memo = reducer_state.call(visit_type, irep_node)
|
89
|
-
|
90
|
-
reducer_state.memo = next_memo
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
def analysis_errors(results)
|
95
|
-
results.flatten.select { |r| r.is_a?(GraphQL::AnalysisError) }
|
96
|
-
end
|
97
|
-
end
|
98
|
-
end
|
@@ -1,45 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module GraphQL
|
3
|
-
module Analysis
|
4
|
-
# A query reducer for tracking both field usage and deprecated field usage.
|
5
|
-
#
|
6
|
-
# @example Logging field usage and deprecated field usage
|
7
|
-
# Schema.query_analyzers << GraphQL::Analysis::FieldUsage.new { |query, used_fields, used_deprecated_fields|
|
8
|
-
# puts "Used GraphQL fields: #{used_fields.join(', ')}"
|
9
|
-
# puts "Used deprecated GraphQL fields: #{used_deprecated_fields.join(', ')}"
|
10
|
-
# }
|
11
|
-
# Schema.execute(query_str)
|
12
|
-
# # Used GraphQL fields: Cheese.id, Cheese.fatContent, Query.cheese
|
13
|
-
# # Used deprecated GraphQL fields: Cheese.fatContent
|
14
|
-
#
|
15
|
-
class FieldUsage
|
16
|
-
def initialize(&block)
|
17
|
-
@field_usage_handler = block
|
18
|
-
end
|
19
|
-
|
20
|
-
def initial_value(query)
|
21
|
-
{
|
22
|
-
query: query,
|
23
|
-
used_fields: Set.new,
|
24
|
-
used_deprecated_fields: Set.new
|
25
|
-
}
|
26
|
-
end
|
27
|
-
|
28
|
-
def call(memo, visit_type, irep_node)
|
29
|
-
if irep_node.ast_node.is_a?(GraphQL::Language::Nodes::Field) && visit_type == :leave
|
30
|
-
field = "#{irep_node.owner_type.name}.#{irep_node.definition.name}"
|
31
|
-
memo[:used_fields] << field
|
32
|
-
if irep_node.definition.deprecation_reason
|
33
|
-
memo[:used_deprecated_fields] << field
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
memo
|
38
|
-
end
|
39
|
-
|
40
|
-
def final_value(memo)
|
41
|
-
@field_usage_handler.call(memo[:query], memo[:used_fields].to_a, memo[:used_deprecated_fields].to_a)
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|