graphql 2.3.13 → 2.3.15
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/orm_mutations_base.rb +1 -1
- data/lib/generators/graphql/templates/base_resolver.erb +2 -0
- data/lib/generators/graphql/type_generator.rb +1 -1
- data/lib/graphql/analysis.rb +1 -1
- data/lib/graphql/execution/interpreter/resolve.rb +10 -6
- data/lib/graphql/language/comment.rb +18 -0
- data/lib/graphql/language/document_from_schema_definition.rb +38 -4
- data/lib/graphql/language/lexer.rb +15 -12
- data/lib/graphql/language/nodes.rb +22 -14
- data/lib/graphql/language/parser.rb +5 -0
- data/lib/graphql/language/printer.rb +23 -7
- data/lib/graphql/language.rb +6 -5
- data/lib/graphql/query.rb +1 -1
- data/lib/graphql/schema/argument.rb +13 -1
- data/lib/graphql/schema/enum.rb +1 -0
- data/lib/graphql/schema/enum_value.rb +9 -1
- data/lib/graphql/schema/field.rb +23 -3
- data/lib/graphql/schema/interface.rb +1 -0
- data/lib/graphql/schema/member/base_dsl_methods.rb +15 -0
- data/lib/graphql/schema/member/has_arguments.rb +2 -2
- data/lib/graphql/schema/member/has_fields.rb +2 -2
- data/lib/graphql/schema/resolver.rb +3 -4
- data/lib/graphql/schema/visibility/migration.rb +188 -0
- data/lib/graphql/schema/visibility/subset.rb +509 -0
- data/lib/graphql/schema/visibility.rb +30 -0
- data/lib/graphql/schema.rb +48 -41
- data/lib/graphql/static_validation/rules/directives_are_in_valid_locations.rb +2 -0
- data/lib/graphql/testing/helpers.rb +1 -1
- data/lib/graphql/tracing/notifications_trace.rb +2 -2
- data/lib/graphql/version.rb +1 -1
- metadata +6 -4
- data/lib/graphql/schema/subset.rb +0 -509
- data/lib/graphql/schema/types_migration.rb +0 -187
data/lib/graphql/schema.rb
CHANGED
@@ -45,8 +45,7 @@ require "graphql/schema/mutation"
|
|
45
45
|
require "graphql/schema/has_single_input_argument"
|
46
46
|
require "graphql/schema/relay_classic_mutation"
|
47
47
|
require "graphql/schema/subscription"
|
48
|
-
require "graphql/schema/
|
49
|
-
require "graphql/schema/types_migration"
|
48
|
+
require "graphql/schema/visibility"
|
50
49
|
|
51
50
|
module GraphQL
|
52
51
|
# A GraphQL schema which may be queried with {GraphQL::Query}.
|
@@ -205,24 +204,19 @@ module GraphQL
|
|
205
204
|
@own_trace_modes ||= {}
|
206
205
|
end
|
207
206
|
|
208
|
-
module DefaultTraceClass
|
209
|
-
end
|
210
|
-
|
211
|
-
private_constant :DefaultTraceClass
|
212
|
-
|
213
207
|
def build_trace_mode(mode)
|
214
208
|
case mode
|
215
209
|
when :default
|
216
210
|
# Use the superclass's default mode if it has one, or else start an inheritance chain at the built-in base class.
|
217
|
-
base_class = (superclass.respond_to?(:trace_class_for) && superclass.trace_class_for(mode)) || GraphQL::Tracing::Trace
|
218
|
-
Class.new(base_class) do
|
211
|
+
base_class = (superclass.respond_to?(:trace_class_for) && superclass.trace_class_for(mode, build: true)) || GraphQL::Tracing::Trace
|
212
|
+
const_set(:DefaultTrace, Class.new(base_class) do
|
219
213
|
include DefaultTraceClass
|
220
|
-
end
|
214
|
+
end)
|
221
215
|
when :default_backtrace
|
222
216
|
schema_base_class = trace_class_for(:default, build: true)
|
223
|
-
Class.new(schema_base_class) do
|
217
|
+
const_set(:DefaultTraceBacktrace, Class.new(schema_base_class) do
|
224
218
|
include(GraphQL::Backtrace::Trace)
|
225
|
-
end
|
219
|
+
end)
|
226
220
|
else
|
227
221
|
# First, see if the superclass has a custom-defined class for this.
|
228
222
|
# Then, if it doesn't, use this class's default trace
|
@@ -339,8 +333,8 @@ module GraphQL
|
|
339
333
|
# @return [Hash<String => Class>] A dictionary of type classes by their GraphQL name
|
340
334
|
# @see get_type Which is more efficient for finding _one type_ by name, because it doesn't merge hashes.
|
341
335
|
def types(context = GraphQL::Query::NullContext.instance)
|
342
|
-
if
|
343
|
-
return Subset.from_context(context, self).all_types_h
|
336
|
+
if use_schema_visibility?
|
337
|
+
return Visibility::Subset.from_context(context, self).all_types_h
|
344
338
|
end
|
345
339
|
all_types = non_introspection_types.merge(introspection_system.types)
|
346
340
|
visible_types = {}
|
@@ -369,15 +363,15 @@ module GraphQL
|
|
369
363
|
# @param type_name [String]
|
370
364
|
# @return [Module, nil] A type, or nil if there's no type called `type_name`
|
371
365
|
def get_type(type_name, context = GraphQL::Query::NullContext.instance)
|
372
|
-
if
|
373
|
-
return Subset.from_context(context, self).type(type_name)
|
366
|
+
if use_schema_visibility?
|
367
|
+
return Visibility::Subset.from_context(context, self).type(type_name)
|
374
368
|
end
|
375
369
|
local_entry = own_types[type_name]
|
376
370
|
type_defn = case local_entry
|
377
371
|
when nil
|
378
372
|
nil
|
379
373
|
when Array
|
380
|
-
if context.respond_to?(:types) && context.types.is_a?(GraphQL::Schema::Subset)
|
374
|
+
if context.respond_to?(:types) && context.types.is_a?(GraphQL::Schema::Visibility::Subset)
|
381
375
|
local_entry
|
382
376
|
else
|
383
377
|
visible_t = nil
|
@@ -435,7 +429,7 @@ module GraphQL
|
|
435
429
|
if @query_object
|
436
430
|
dup_defn = new_query_object || yield
|
437
431
|
raise GraphQL::Error, "Second definition of `query(...)` (#{dup_defn.inspect}) is invalid, already configured with #{@query_object.inspect}"
|
438
|
-
elsif
|
432
|
+
elsif use_schema_visibility?
|
439
433
|
@query_object = block_given? ? lazy_load_block : new_query_object
|
440
434
|
else
|
441
435
|
@query_object = new_query_object || lazy_load_block.call
|
@@ -454,7 +448,7 @@ module GraphQL
|
|
454
448
|
if @mutation_object
|
455
449
|
dup_defn = new_mutation_object || yield
|
456
450
|
raise GraphQL::Error, "Second definition of `mutation(...)` (#{dup_defn.inspect}) is invalid, already configured with #{@mutation_object.inspect}"
|
457
|
-
elsif
|
451
|
+
elsif use_schema_visibility?
|
458
452
|
@mutation_object = block_given? ? lazy_load_block : new_mutation_object
|
459
453
|
else
|
460
454
|
@mutation_object = new_mutation_object || lazy_load_block.call
|
@@ -473,10 +467,12 @@ module GraphQL
|
|
473
467
|
if @subscription_object
|
474
468
|
dup_defn = new_subscription_object || yield
|
475
469
|
raise GraphQL::Error, "Second definition of `subscription(...)` (#{dup_defn.inspect}) is invalid, already configured with #{@subscription_object.inspect}"
|
476
|
-
elsif
|
470
|
+
elsif use_schema_visibility?
|
477
471
|
@subscription_object = block_given? ? lazy_load_block : new_subscription_object
|
472
|
+
add_subscription_extension_if_necessary
|
478
473
|
else
|
479
474
|
@subscription_object = new_subscription_object || lazy_load_block.call
|
475
|
+
add_subscription_extension_if_necessary
|
480
476
|
add_type_and_traverse(@subscription_object, root: true)
|
481
477
|
end
|
482
478
|
nil
|
@@ -505,7 +501,7 @@ module GraphQL
|
|
505
501
|
end
|
506
502
|
|
507
503
|
def root_types
|
508
|
-
if
|
504
|
+
if use_schema_visibility?
|
509
505
|
[query, mutation, subscription].compact
|
510
506
|
else
|
511
507
|
@root_types
|
@@ -530,17 +526,17 @@ module GraphQL
|
|
530
526
|
elsif superclass.respond_to?(:subset_class)
|
531
527
|
superclass.subset_class
|
532
528
|
else
|
533
|
-
GraphQL::Schema::Subset
|
529
|
+
GraphQL::Schema::Visibility::Subset
|
534
530
|
end
|
535
531
|
end
|
536
532
|
|
537
|
-
attr_writer :subset_class, :
|
533
|
+
attr_writer :subset_class, :use_schema_visibility, :visibility
|
538
534
|
|
539
|
-
def
|
540
|
-
if defined?(@
|
541
|
-
@
|
542
|
-
elsif superclass.respond_to?(:
|
543
|
-
superclass.
|
535
|
+
def use_schema_visibility?
|
536
|
+
if defined?(@use_schema_visibility)
|
537
|
+
@use_schema_visibility
|
538
|
+
elsif superclass.respond_to?(:use_schema_visibility?)
|
539
|
+
superclass.use_schema_visibility?
|
544
540
|
else
|
545
541
|
false
|
546
542
|
end
|
@@ -550,11 +546,11 @@ module GraphQL
|
|
550
546
|
# @return [Hash<String, Module>] All possible types, if no `type` is given.
|
551
547
|
# @return [Array<Module>] Possible types for `type`, if it's given.
|
552
548
|
def possible_types(type = nil, context = GraphQL::Query::NullContext.instance)
|
553
|
-
if
|
549
|
+
if use_schema_visibility?
|
554
550
|
if type
|
555
|
-
return Subset.from_context(context, self).possible_types(type)
|
551
|
+
return Visibility::Subset.from_context(context, self).possible_types(type)
|
556
552
|
else
|
557
|
-
raise "Schema.possible_types is not implemented for `
|
553
|
+
raise "Schema.possible_types is not implemented for `use_schema_visibility?`"
|
558
554
|
end
|
559
555
|
end
|
560
556
|
if type
|
@@ -787,13 +783,11 @@ module GraphQL
|
|
787
783
|
|
788
784
|
attr_writer :validate_max_errors
|
789
785
|
|
790
|
-
def validate_max_errors(new_validate_max_errors =
|
791
|
-
if new_validate_max_errors
|
792
|
-
@validate_max_errors
|
793
|
-
elsif defined?(@validate_max_errors)
|
794
|
-
@validate_max_errors
|
786
|
+
def validate_max_errors(new_validate_max_errors = NOT_CONFIGURED)
|
787
|
+
if NOT_CONFIGURED.equal?(new_validate_max_errors)
|
788
|
+
defined?(@validate_max_errors) ? @validate_max_errors : find_inherited_value(:validate_max_errors)
|
795
789
|
else
|
796
|
-
|
790
|
+
@validate_max_errors = new_validate_max_errors
|
797
791
|
end
|
798
792
|
end
|
799
793
|
|
@@ -932,7 +926,7 @@ module GraphQL
|
|
932
926
|
To add other types to your schema, you might want `extra_types`: https://graphql-ruby.org/schema/definition.html#extra-types
|
933
927
|
ERR
|
934
928
|
end
|
935
|
-
add_type_and_traverse(new_orphan_types, root: false) unless
|
929
|
+
add_type_and_traverse(new_orphan_types, root: false) unless use_schema_visibility?
|
936
930
|
own_orphan_types.concat(new_orphan_types.flatten)
|
937
931
|
end
|
938
932
|
|
@@ -1191,7 +1185,7 @@ module GraphQL
|
|
1191
1185
|
# @param new_directive [Class]
|
1192
1186
|
# @return void
|
1193
1187
|
def directive(new_directive)
|
1194
|
-
if
|
1188
|
+
if use_schema_visibility?
|
1195
1189
|
own_directives[new_directive.graphql_name] = new_directive
|
1196
1190
|
else
|
1197
1191
|
add_type_and_traverse(new_directive, root: false)
|
@@ -1461,8 +1455,17 @@ module GraphQL
|
|
1461
1455
|
private
|
1462
1456
|
|
1463
1457
|
def add_trace_options_for(mode, new_options)
|
1464
|
-
|
1465
|
-
|
1458
|
+
if mode == :default
|
1459
|
+
own_trace_modes.each do |mode_name, t_class|
|
1460
|
+
if t_class <= DefaultTraceClass
|
1461
|
+
t_opts = trace_options_for(mode_name)
|
1462
|
+
t_opts.merge!(new_options)
|
1463
|
+
end
|
1464
|
+
end
|
1465
|
+
else
|
1466
|
+
t_opts = trace_options_for(mode)
|
1467
|
+
t_opts.merge!(new_options)
|
1468
|
+
end
|
1466
1469
|
nil
|
1467
1470
|
end
|
1468
1471
|
|
@@ -1606,5 +1609,9 @@ module GraphQL
|
|
1606
1609
|
|
1607
1610
|
# Install these here so that subclasses will also install it.
|
1608
1611
|
self.connections = GraphQL::Pagination::Connections.new(schema: self)
|
1612
|
+
|
1613
|
+
# @api private
|
1614
|
+
module DefaultTraceClass
|
1615
|
+
end
|
1609
1616
|
end
|
1610
1617
|
end
|
@@ -19,6 +19,7 @@ module GraphQL
|
|
19
19
|
GraphQL::Schema::Directive::FRAGMENT_DEFINITION => "fragment definitions",
|
20
20
|
GraphQL::Schema::Directive::FRAGMENT_SPREAD => "fragment spreads",
|
21
21
|
GraphQL::Schema::Directive::INLINE_FRAGMENT => "inline fragments",
|
22
|
+
GraphQL::Schema::Directive::VARIABLE_DEFINITION => "variable definitions",
|
22
23
|
}
|
23
24
|
|
24
25
|
SIMPLE_LOCATIONS = {
|
@@ -26,6 +27,7 @@ module GraphQL
|
|
26
27
|
Nodes::InlineFragment => GraphQL::Schema::Directive::INLINE_FRAGMENT,
|
27
28
|
Nodes::FragmentSpread => GraphQL::Schema::Directive::FRAGMENT_SPREAD,
|
28
29
|
Nodes::FragmentDefinition => GraphQL::Schema::Directive::FRAGMENT_DEFINITION,
|
30
|
+
Nodes::VariableDefinition => GraphQL::Schema::Directive::VARIABLE_DEFINITION,
|
29
31
|
}
|
30
32
|
|
31
33
|
SIMPLE_LOCATION_NODES = SIMPLE_LOCATIONS.keys
|
@@ -91,7 +91,7 @@ module GraphQL
|
|
91
91
|
end
|
92
92
|
graphql_result
|
93
93
|
else
|
94
|
-
unfiltered_type = Schema::Subset.pass_thru(schema: schema, context: context).type(type_name)
|
94
|
+
unfiltered_type = Schema::Visibility::Subset.pass_thru(schema: schema, context: context).type(type_name)
|
95
95
|
if unfiltered_type
|
96
96
|
raise TypeNotVisibleError.new(type_name: type_name)
|
97
97
|
else
|
@@ -33,8 +33,8 @@ module GraphQL
|
|
33
33
|
"resolve_type_lazy" => "resolve_type.graphql",
|
34
34
|
}.each do |trace_method, platform_key|
|
35
35
|
module_eval <<-RUBY, __FILE__, __LINE__
|
36
|
-
def #{trace_method}(**metadata, &
|
37
|
-
@notifications_engine.instrument("#{platform_key}", metadata, &
|
36
|
+
def #{trace_method}(**metadata, &block)
|
37
|
+
@notifications_engine.instrument("#{platform_key}", metadata) { super(**metadata, &block) }
|
38
38
|
end
|
39
39
|
RUBY
|
40
40
|
end
|
data/lib/graphql/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: graphql
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.3.
|
4
|
+
version: 2.3.15
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Mosolgo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-09-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: base64
|
@@ -382,6 +382,7 @@ files:
|
|
382
382
|
- lib/graphql/language.rb
|
383
383
|
- lib/graphql/language/block_string.rb
|
384
384
|
- lib/graphql/language/cache.rb
|
385
|
+
- lib/graphql/language/comment.rb
|
385
386
|
- lib/graphql/language/definition_slice.rb
|
386
387
|
- lib/graphql/language/document_from_schema_definition.rb
|
387
388
|
- lib/graphql/language/generation.rb
|
@@ -485,11 +486,9 @@ files:
|
|
485
486
|
- lib/graphql/schema/resolver/has_payload_type.rb
|
486
487
|
- lib/graphql/schema/scalar.rb
|
487
488
|
- lib/graphql/schema/subscription.rb
|
488
|
-
- lib/graphql/schema/subset.rb
|
489
489
|
- lib/graphql/schema/timeout.rb
|
490
490
|
- lib/graphql/schema/type_expression.rb
|
491
491
|
- lib/graphql/schema/type_membership.rb
|
492
|
-
- lib/graphql/schema/types_migration.rb
|
493
492
|
- lib/graphql/schema/union.rb
|
494
493
|
- lib/graphql/schema/unique_within_type.rb
|
495
494
|
- lib/graphql/schema/validator.rb
|
@@ -502,6 +501,9 @@ files:
|
|
502
501
|
- lib/graphql/schema/validator/length_validator.rb
|
503
502
|
- lib/graphql/schema/validator/numericality_validator.rb
|
504
503
|
- lib/graphql/schema/validator/required_validator.rb
|
504
|
+
- lib/graphql/schema/visibility.rb
|
505
|
+
- lib/graphql/schema/visibility/migration.rb
|
506
|
+
- lib/graphql/schema/visibility/subset.rb
|
505
507
|
- lib/graphql/schema/warden.rb
|
506
508
|
- lib/graphql/schema/wrapper.rb
|
507
509
|
- lib/graphql/static_validation.rb
|