graphql 1.13.19 → 1.13.24

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c21327429549138738debab2d522197133548eb4b275a5f67086154e08469149
4
- data.tar.gz: ec61107f4f45aaf1de25c6674d7fcf3b8e19b1245fdbf2a1bd1b0f7f1dd9b0aa
3
+ metadata.gz: e6d252cf12d6c3f2ccd6f20a139e0c2f3c460a6c25b8c1cb663e3cacf5e12855
4
+ data.tar.gz: 0d6eda9b7e23c0c58677b44ed1de968c6d60acd4a5f5a49883935ea6e326d691
5
5
  SHA512:
6
- metadata.gz: 5b56c3aaa86b6d758b53d49a7906de483375c54f40db9126b96d791f41c7bba6407d9b59205a4d47215cef1391cd5ebbc03d5eb76825747cbfc1d0f6baf1f0ef
7
- data.tar.gz: 7f7cb3b2e4fa8c26b355ea4adf01803ab32e2d97036475469071e2cf67d06431ab0486f0daf8ab28433deb95bb8642ea0a2b52739abe6d0ad06bb22b4fdcb2cc
6
+ metadata.gz: 302f1e1fe6e7a31ede6c3eb4e3f63f3a2818b47286e4b2482e5109b47c8fcd1e229815c964fdd11ceed8084db4ccac9578f8374e53b2080bbb8cc03473a50ffb
7
+ data.tar.gz: 85daddd620840df2718f2730b475f3c2f9df7b318145044c7fb1aada43c4dee1a00c503440953d8711e58265a7f6eb768f58ac8d1af60fe6e50bf7078d7c86b5
@@ -133,6 +133,8 @@ module GraphQL
133
133
  end
134
134
 
135
135
  class << self
136
+ # rubocop:disable Development/NoEvalCop This eval takes static inputs at load-time
137
+
136
138
  # Add a default `#visit_method` and `#children_method_name` using the class name
137
139
  def inherited(child_class)
138
140
  super
@@ -276,6 +278,7 @@ module GraphQL
276
278
  RUBY
277
279
  end
278
280
  end
281
+ # rubocop:enable Development/NoEvalCop
279
282
  end
280
283
  end
281
284
 
@@ -52,6 +52,7 @@ module GraphQL
52
52
  def initialize(arg_name = nil, type_expr = nil, desc = nil, required: true, type: nil, name: nil, loads: nil, description: nil, ast_node: nil, default_value: NO_DEFAULT, as: nil, from_resolver: false, camelize: true, prepare: nil, method_access: true, owner:, validates: nil, directives: nil, deprecation_reason: nil, replace_null_with_default: false, &definition_block)
53
53
  arg_name ||= name
54
54
  @name = -(camelize ? Member::BuildType.camelize(arg_name.to_s) : arg_name.to_s)
55
+ NameValidator.validate!(@name)
55
56
  @type_expr = type_expr || type
56
57
  @description = desc || description
57
58
  @null = required != true
@@ -85,11 +86,8 @@ module GraphQL
85
86
  end
86
87
 
87
88
  if definition_block
88
- if definition_block.arity == 1
89
- instance_exec(self, &definition_block)
90
- else
91
- instance_eval(&definition_block)
92
- end
89
+ # `self` will still be self, it will also be the first argument to the block:
90
+ instance_exec(self, &definition_block)
93
91
  end
94
92
  end
95
93
 
@@ -427,17 +427,18 @@ module GraphQL
427
427
 
428
428
  # Don't do this for interfaces
429
429
  if default_resolve
430
- owner.class_eval <<-RUBY, __FILE__, __LINE__
431
- # frozen_string_literal: true
432
- def #{resolve_method_name}(**args)
433
- field_instance = self.class.get_field("#{field_definition.name}")
434
- context.schema.definition_default_resolve.call(self.class, field_instance, object, args, context)
435
- end
436
- RUBY
430
+ define_field_resolve_method(owner, resolve_method_name, field_definition.name)
437
431
  end
438
432
  end
439
433
  end
440
434
 
435
+ def define_field_resolve_method(owner, method_name, field_name)
436
+ owner.define_method(method_name) { |**args|
437
+ field_instance = self.class.get_field(field_name)
438
+ context.schema.definition_default_resolve.call(self.class, field_instance, object, args, context)
439
+ }
440
+ end
441
+
441
442
  def build_resolve_type(lookup_hash, directives, missing_type_handler)
442
443
  resolve_type_proc = nil
443
444
  resolve_type_proc = ->(ast_node) {
@@ -55,7 +55,7 @@ module GraphQL
55
55
  end
56
56
 
57
57
  if block_given?
58
- instance_eval(&block)
58
+ instance_exec(self, &block)
59
59
  end
60
60
  end
61
61
 
@@ -232,6 +232,7 @@ module GraphQL
232
232
 
233
233
  @underscored_name = -Member::BuildType.underscore(name_s)
234
234
  @name = -(camelize ? Member::BuildType.camelize(name_s) : name_s)
235
+ NameValidator.validate!(@name)
235
236
  @description = description
236
237
  if field.is_a?(GraphQL::Schema::Field)
237
238
  raise ArgumentError, "Instead of passing a field as `field:`, use `add_field(field)` to add an already-defined field."
@@ -138,12 +138,7 @@ module GraphQL
138
138
  def argument(*args, **kwargs, &block)
139
139
  argument_defn = super(*args, **kwargs, &block)
140
140
  # Add a method access
141
- method_name = argument_defn.keyword
142
- class_eval <<-RUBY, __FILE__, __LINE__
143
- def #{method_name}
144
- self[#{method_name.inspect}]
145
- end
146
- RUBY
141
+ define_accessor_method(argument_defn.keyword)
147
142
  argument_defn
148
143
  end
149
144
 
@@ -253,6 +248,13 @@ module GraphQL
253
248
 
254
249
  result
255
250
  end
251
+
252
+ private
253
+
254
+ def define_accessor_method(method_name)
255
+ define_method(method_name) { self[method_name] }
256
+ alias_method(method_name, method_name)
257
+ end
256
258
  end
257
259
 
258
260
  private
@@ -81,7 +81,11 @@ module GraphQL
81
81
  end
82
82
  elsif child_class < GraphQL::Schema::Object
83
83
  # This is being included into an object type, make sure it's using `implements(...)`
84
- backtrace_line = caller(0, 10).find { |line| line.include?("schema/member/has_interfaces.rb") && line.include?("in `implements'")}
84
+ backtrace_line = caller_locations(0, 10).find do |location|
85
+ location.base_label == "implements" &&
86
+ location.path.end_with?("schema/member/has_interfaces.rb")
87
+ end
88
+
85
89
  if !backtrace_line
86
90
  raise "Attach interfaces using `implements(#{self})`, not `include(#{self})`"
87
91
  end
@@ -502,7 +502,7 @@ module GraphQL
502
502
  # @param field_name [String]
503
503
  # @return [GraphQL::Field, nil] The field named `field_name` on `parent_type`
504
504
  # @see [GraphQL::Schema::Warden] Restricted access to members of a schema
505
- def get_field(parent_type, field_name)
505
+ def get_field(parent_type, field_name, _context = GraphQL::Query::NullContext)
506
506
  with_definition_error_check do
507
507
  parent_type_name = case parent_type
508
508
  when GraphQL::BaseType, Class, Module
@@ -15,12 +15,9 @@ module GraphQL
15
15
  }
16
16
 
17
17
  def platform_trace(platform_key, key, data)
18
- tracer.trace(platform_key, service: service_name) do |span|
19
- span.span_type = 'custom'
20
- if defined?(Datadog::Tracing::Metadata::Ext) # Introduced in ddtrace 1.0
21
- span.set_tag(Datadog::Tracing::Metadata::Ext::TAG_COMPONENT, 'graphql')
22
- span.set_tag(Datadog::Tracing::Metadata::Ext::TAG_OPERATION, key)
23
- end
18
+ tracer.trace(platform_key, service: options[:service], type: 'custom') do |span|
19
+ span.set_tag('component', 'graphql')
20
+ span.set_tag('operation', key)
24
21
 
25
22
  if key == 'execute_multiplex'
26
23
  operations = data[:multiplex].queries.map(&:selected_operation_name).join(', ')
@@ -33,10 +30,8 @@ module GraphQL
33
30
  end
34
31
  span.resource = resource if resource
35
32
 
36
- # For top span of query, set the analytics sample rate tag, if available.
37
- if analytics_enabled?
38
- Datadog::Contrib::Analytics.set_sample_rate(span, analytics_sample_rate)
39
- end
33
+ # [Deprecated] will be removed in the future
34
+ span.set_metric('_dd1.sr.eausr', analytics_sample_rate) if analytics_enabled?
40
35
  end
41
36
 
42
37
  if key == 'execute_query'
@@ -51,10 +46,6 @@ module GraphQL
51
46
  end
52
47
  end
53
48
 
54
- def service_name
55
- options.fetch(:service, 'ruby-graphql')
56
- end
57
-
58
49
  # Implement this method in a subclass to apply custom tags to datadog spans
59
50
  # @param key [String] The event being traced
60
51
  # @param data [Hash] The runtime data for this event (@see GraphQL::Tracing for keys for each event)
@@ -65,17 +56,13 @@ module GraphQL
65
56
  def tracer
66
57
  default_tracer = defined?(Datadog::Tracing) ? Datadog::Tracing : Datadog.tracer
67
58
 
59
+ # [Deprecated] options[:tracer] will be removed in the future
68
60
  options.fetch(:tracer, default_tracer)
69
61
  end
70
62
 
71
- def analytics_available?
72
- defined?(Datadog::Contrib::Analytics) \
73
- && Datadog::Contrib::Analytics.respond_to?(:enabled?) \
74
- && Datadog::Contrib::Analytics.respond_to?(:set_sample_rate)
75
- end
76
-
77
63
  def analytics_enabled?
78
- analytics_available? && Datadog::Contrib::Analytics.enabled?(options.fetch(:analytics_enabled, false))
64
+ # [Deprecated] options[:analytics_enabled] will be removed in the future
65
+ options.fetch(:analytics_enabled, false)
79
66
  end
80
67
 
81
68
  def analytics_sample_rate
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module GraphQL
3
- VERSION = "1.13.19"
3
+ VERSION = "1.13.24"
4
4
  end
data/lib/graphql.rb CHANGED
@@ -4,6 +4,7 @@ require "json"
4
4
  require "set"
5
5
  require "singleton"
6
6
  require "forwardable"
7
+ require "ostruct"
7
8
 
8
9
  module GraphQL
9
10
  # forwards-compat for argument handling
metadata CHANGED
@@ -1,15 +1,28 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: graphql
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.13.19
4
+ version: 1.13.24
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Mosolgo
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2023-02-02 00:00:00.000000000 Z
10
+ date: 2025-03-12 00:00:00.000000000 Z
12
11
  dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: base64
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '0'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: '0'
13
26
  - !ruby/object:Gem::Dependency
14
27
  name: benchmark-ips
15
28
  requirement: !ruby/object:Gem::Requirement
@@ -56,72 +69,72 @@ dependencies:
56
69
  name: minitest
57
70
  requirement: !ruby/object:Gem::Requirement
58
71
  requirements:
59
- - - "~>"
72
+ - - ">="
60
73
  - !ruby/object:Gem::Version
61
- version: 5.9.0
74
+ version: '0'
62
75
  type: :development
63
76
  prerelease: false
64
77
  version_requirements: !ruby/object:Gem::Requirement
65
78
  requirements:
66
- - - "~>"
79
+ - - ">="
67
80
  - !ruby/object:Gem::Version
68
- version: 5.9.0
81
+ version: '0'
69
82
  - !ruby/object:Gem::Dependency
70
83
  name: minitest-focus
71
84
  requirement: !ruby/object:Gem::Requirement
72
85
  requirements:
73
- - - "~>"
86
+ - - ">="
74
87
  - !ruby/object:Gem::Version
75
- version: '1.1'
88
+ version: '0'
76
89
  type: :development
77
90
  prerelease: false
78
91
  version_requirements: !ruby/object:Gem::Requirement
79
92
  requirements:
80
- - - "~>"
93
+ - - ">="
81
94
  - !ruby/object:Gem::Version
82
- version: '1.1'
95
+ version: '0'
83
96
  - !ruby/object:Gem::Dependency
84
97
  name: minitest-reporters
85
98
  requirement: !ruby/object:Gem::Requirement
86
99
  requirements:
87
- - - "~>"
100
+ - - ">="
88
101
  - !ruby/object:Gem::Version
89
- version: '1.0'
102
+ version: '0'
90
103
  type: :development
91
104
  prerelease: false
92
105
  version_requirements: !ruby/object:Gem::Requirement
93
106
  requirements:
94
- - - "~>"
107
+ - - ">="
95
108
  - !ruby/object:Gem::Version
96
- version: '1.0'
109
+ version: '0'
97
110
  - !ruby/object:Gem::Dependency
98
- name: racc
111
+ name: rake
99
112
  requirement: !ruby/object:Gem::Requirement
100
113
  requirements:
101
- - - "~>"
114
+ - - ">="
102
115
  - !ruby/object:Gem::Version
103
- version: '1.4'
116
+ version: '0'
104
117
  type: :development
105
118
  prerelease: false
106
119
  version_requirements: !ruby/object:Gem::Requirement
107
120
  requirements:
108
- - - "~>"
121
+ - - ">="
109
122
  - !ruby/object:Gem::Version
110
- version: '1.4'
123
+ version: '0'
111
124
  - !ruby/object:Gem::Dependency
112
- name: rake
125
+ name: rake-compiler
113
126
  requirement: !ruby/object:Gem::Requirement
114
127
  requirements:
115
- - - "~>"
128
+ - - ">="
116
129
  - !ruby/object:Gem::Version
117
- version: '12'
130
+ version: '0'
118
131
  type: :development
119
132
  prerelease: false
120
133
  version_requirements: !ruby/object:Gem::Requirement
121
134
  requirements:
122
- - - "~>"
135
+ - - ">="
123
136
  - !ruby/object:Gem::Version
124
- version: '12'
137
+ version: '0'
125
138
  - !ruby/object:Gem::Dependency
126
139
  name: rubocop
127
140
  requirement: !ruby/object:Gem::Requirement
@@ -707,7 +720,6 @@ metadata:
707
720
  source_code_uri: https://github.com/rmosolgo/graphql-ruby
708
721
  bug_tracker_uri: https://github.com/rmosolgo/graphql-ruby/issues
709
722
  mailing_list_uri: https://tinyletter.com/graphql-ruby
710
- post_install_message:
711
723
  rdoc_options: []
712
724
  require_paths:
713
725
  - lib
@@ -722,8 +734,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
722
734
  - !ruby/object:Gem::Version
723
735
  version: '0'
724
736
  requirements: []
725
- rubygems_version: 3.3.3
726
- signing_key:
737
+ rubygems_version: 3.6.3
727
738
  specification_version: 4
728
739
  summary: A GraphQL language and runtime for Ruby
729
740
  test_files: []