graphql-client 0.19.0 → 0.23.0
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 +4 -4
- data/README.md +1 -1
- data/lib/graphql/client/collocated_enforcement.rb +1 -1
- data/lib/graphql/client/errors.rb +1 -1
- data/lib/graphql/client/log_subscriber.rb +14 -2
- data/lib/graphql/client/response.rb +1 -0
- data/lib/graphql/client/schema/enum_type.rb +17 -2
- data/lib/graphql/client/schema/object_type.rb +4 -4
- data/lib/graphql/client/schema.rb +3 -2
- data/lib/graphql/client.rb +8 -4
- metadata +13 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9ab40176a982910f10885b2c56a3d3ad867937ee4f824a4af06e75993236f1f0
|
4
|
+
data.tar.gz: 291c8ed2700b79bf5b41c2f799899dac7316d000b04e9cdeaae87cea0519e411
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8a5a4cc5b341c302c1c2b20a12d10b59907a34ca9d50871e1e48c2984dbdf8562eb40eab123f6474eb96024ca6eeaa08f4ebf3c043dacb0e46f3211a3c00b921
|
7
|
+
data.tar.gz: 6cba9520177116c4d332578bee01f98a42adff2cba51ca123f7083a6980826725db7f090fcd8c37debdb3c654b7cac4b27b21e7f1f86d6a76b4e8676340d8f08
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# graphql-client [](https://badge.fury.io/rb/graphql-client) [](https://github.com/github/graphql-client/actions?query=workflow)
|
1
|
+
# graphql-client [](https://badge.fury.io/rb/graphql-client) [](https://github.com/github-community-projects/graphql-client/actions?query=workflow)
|
2
2
|
|
3
3
|
GraphQL Client is a Ruby library for declaring, composing and executing GraphQL queries.
|
4
4
|
|
@@ -26,7 +26,7 @@ module GraphQL
|
|
26
26
|
return yield if Thread.current[:query_result_caller_location_ignore]
|
27
27
|
|
28
28
|
if (location.path != path) && !(WHITELISTED_GEM_NAMES.any? { |g| location.path.include?("gems/#{g}") })
|
29
|
-
error = NonCollocatedCallerError.new("#{method} was called outside of '#{path}' https://
|
29
|
+
error = NonCollocatedCallerError.new("#{method} was called outside of '#{path}' https://github.com/github-community-projects/graphql-client/blob/master/guides/collocated-call-sites.md")
|
30
30
|
error.set_backtrace(caller(2))
|
31
31
|
raise error
|
32
32
|
end
|
@@ -16,11 +16,18 @@ module GraphQL
|
|
16
16
|
# GraphQL::Client::LogSubscriber.attach_to :graphql
|
17
17
|
#
|
18
18
|
class LogSubscriber < ActiveSupport::LogSubscriber
|
19
|
+
SHOULD_USE_KWARGS = private_instance_methods.include?(:mode_from)
|
20
|
+
|
19
21
|
def query(event)
|
20
22
|
logger.info do
|
21
23
|
name = event.payload[:operation_name].gsub("__", "::")
|
22
24
|
type = event.payload[:operation_type].upcase
|
23
|
-
|
25
|
+
|
26
|
+
if SHOULD_USE_KWARGS
|
27
|
+
color("#{name} #{type} (#{event.duration.round(1)}ms)", nil, bold: true)
|
28
|
+
else
|
29
|
+
color("#{name} #{type} (#{event.duration.round(1)}ms)", nil, true)
|
30
|
+
end
|
24
31
|
end
|
25
32
|
|
26
33
|
logger.debug do
|
@@ -32,7 +39,12 @@ module GraphQL
|
|
32
39
|
logger.error do
|
33
40
|
name = event.payload[:operation_name].gsub("__", "::")
|
34
41
|
message = event.payload[:message]
|
35
|
-
|
42
|
+
|
43
|
+
if SHOULD_USE_KWARGS
|
44
|
+
color("#{name} ERROR: #{message}", nil, bold: true)
|
45
|
+
else
|
46
|
+
color("#{name} ERROR: #{message}", nil, true)
|
47
|
+
end
|
36
48
|
end
|
37
49
|
end
|
38
50
|
end
|
@@ -16,6 +16,10 @@ module GraphQL
|
|
16
16
|
@enum = enum
|
17
17
|
end
|
18
18
|
|
19
|
+
def unknown_enum_value?
|
20
|
+
false
|
21
|
+
end
|
22
|
+
|
19
23
|
def respond_to_missing?(method_name, include_private = false)
|
20
24
|
if method_name[-1] == "?" && @enum.include?(method_name[0..-2])
|
21
25
|
true
|
@@ -37,6 +41,12 @@ module GraphQL
|
|
37
41
|
end
|
38
42
|
end
|
39
43
|
|
44
|
+
class UnexpectedEnumValue < String
|
45
|
+
def unknown_enum_value?
|
46
|
+
true
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
40
50
|
# Internal: Construct enum wrapper from another GraphQL::EnumType.
|
41
51
|
#
|
42
52
|
# type - GraphQL::EnumType instance
|
@@ -78,8 +88,13 @@ module GraphQL
|
|
78
88
|
def cast(value, _errors = nil)
|
79
89
|
case value
|
80
90
|
when String
|
81
|
-
|
82
|
-
|
91
|
+
if @values.key?(value)
|
92
|
+
@values[value]
|
93
|
+
elsif schema_module.raise_on_unknown_enum_value
|
94
|
+
raise Error, "unexpected enum value #{value}"
|
95
|
+
else
|
96
|
+
UnexpectedEnumValue.new(value).freeze
|
97
|
+
end
|
83
98
|
when NilClass
|
84
99
|
value
|
85
100
|
else
|
@@ -3,7 +3,6 @@ require "active_support/inflector"
|
|
3
3
|
require "graphql/client/error"
|
4
4
|
require "graphql/client/errors"
|
5
5
|
require "graphql/client/schema/base_type"
|
6
|
-
require "graphql/client/schema/possible_types"
|
7
6
|
|
8
7
|
module GraphQL
|
9
8
|
class Client
|
@@ -192,6 +191,7 @@ module GraphQL
|
|
192
191
|
def to_h
|
193
192
|
@data
|
194
193
|
end
|
194
|
+
alias :to_hash :to_h
|
195
195
|
|
196
196
|
def _definer
|
197
197
|
@definer
|
@@ -255,13 +255,13 @@ module GraphQL
|
|
255
255
|
end
|
256
256
|
|
257
257
|
unless field
|
258
|
-
raise UnimplementedFieldError, "undefined field `#{e.name}' on #{type.graphql_name} type. https://
|
258
|
+
raise UnimplementedFieldError, "undefined field `#{e.name}' on #{type.graphql_name} type. https://github.com/github-community-projects/graphql-client/blob/master/guides/unimplemented-field-error.md"
|
259
259
|
end
|
260
260
|
|
261
261
|
if @data.key?(field.name)
|
262
|
-
raise ImplicitlyFetchedFieldError, "implicitly fetched field `#{field.name}' on #{type} type. https://
|
262
|
+
raise ImplicitlyFetchedFieldError, "implicitly fetched field `#{field.name}' on #{type} type. https://github.com/github-community-projects/graphql-client/blob/master/guides/implicitly-fetched-field-error.md"
|
263
263
|
else
|
264
|
-
raise UnfetchedFieldError, "unfetched field `#{field.name}' on #{type} type. https://
|
264
|
+
raise UnfetchedFieldError, "unfetched field `#{field.name}' on #{type} type. https://github.com/github-community-projects/graphql-client/blob/master/guides/unfetched-field-error.md"
|
265
265
|
end
|
266
266
|
end
|
267
267
|
end
|
@@ -43,7 +43,7 @@ module GraphQL
|
|
43
43
|
def set_class(type_name, klass)
|
44
44
|
class_name = normalize_type_name(type_name)
|
45
45
|
|
46
|
-
if
|
46
|
+
if const_defined?(class_name, false)
|
47
47
|
raise ArgumentError,
|
48
48
|
"Can't define #{class_name} to represent type #{type_name} " \
|
49
49
|
"because it's already defined"
|
@@ -66,9 +66,10 @@ module GraphQL
|
|
66
66
|
end
|
67
67
|
end
|
68
68
|
|
69
|
-
def self.generate(schema)
|
69
|
+
def self.generate(schema, raise_on_unknown_enum_value: true)
|
70
70
|
mod = Module.new
|
71
71
|
mod.extend ClassMethods
|
72
|
+
mod.define_singleton_method(:raise_on_unknown_enum_value) { raise_on_unknown_enum_value }
|
72
73
|
|
73
74
|
cache = {}
|
74
75
|
schema.types.each do |name, type|
|
data/lib/graphql/client.rb
CHANGED
@@ -91,7 +91,7 @@ module GraphQL
|
|
91
91
|
result
|
92
92
|
end
|
93
93
|
|
94
|
-
def initialize(schema:, execute: nil, enforce_collocated_callers: false)
|
94
|
+
def initialize(schema:, execute: nil, enforce_collocated_callers: false, raise_on_unknown_enum_value: true)
|
95
95
|
@schema = self.class.load_schema(schema)
|
96
96
|
@execute = execute
|
97
97
|
@document = GraphQL::Language::Nodes::Document.new(definitions: [])
|
@@ -100,8 +100,13 @@ module GraphQL
|
|
100
100
|
@enforce_collocated_callers = enforce_collocated_callers
|
101
101
|
if schema.is_a?(Class)
|
102
102
|
@possible_types = schema.possible_types
|
103
|
+
key, _types = @possible_types.first
|
104
|
+
# GraphQL-Ruby 2.3.5+ has classes here instead of strings
|
105
|
+
if key.is_a?(Module)
|
106
|
+
@possible_types = @possible_types.transform_keys(&:graphql_name)
|
107
|
+
end
|
103
108
|
end
|
104
|
-
@types = Schema.generate(@schema)
|
109
|
+
@types = Schema.generate(@schema, raise_on_unknown_enum_value: raise_on_unknown_enum_value)
|
105
110
|
end
|
106
111
|
|
107
112
|
# A cache of the schema's merged possible types
|
@@ -338,7 +343,7 @@ module GraphQL
|
|
338
343
|
end
|
339
344
|
|
340
345
|
if allow_dynamic_queries == false && definition.name.nil?
|
341
|
-
raise DynamicQueryError, "expected definition to be assigned to a static constant https://
|
346
|
+
raise DynamicQueryError, "expected definition to be assigned to a static constant https://github.com/github-community-projects/graphql-client/blob/master/guides/dynamic-query-error.md"
|
342
347
|
end
|
343
348
|
|
344
349
|
variables = deep_stringify_keys(variables)
|
@@ -403,7 +408,6 @@ module GraphQL
|
|
403
408
|
|
404
409
|
doc.definitions.map do |node|
|
405
410
|
deps = Set.new
|
406
|
-
definitions = document_dependencies.definitions.map { |x| [x.name, x] }.to_h
|
407
411
|
|
408
412
|
queue = [node.name]
|
409
413
|
while name = queue.shift
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: graphql-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.23.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- GitHub
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-06-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 1.13.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 1.13.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: actionpack
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -128,14 +128,14 @@ dependencies:
|
|
128
128
|
requirements:
|
129
129
|
- - "~>"
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version: 1.
|
131
|
+
version: 1.64.1
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
136
|
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version: 1.
|
138
|
+
version: 1.64.1
|
139
139
|
description: A Ruby library for declaring, composing and executing GraphQL queries
|
140
140
|
email: engineering@github.com
|
141
141
|
executables: []
|
@@ -180,11 +180,12 @@ files:
|
|
180
180
|
- lib/graphql/client/view_module.rb
|
181
181
|
- lib/rubocop/cop/graphql/heredoc.rb
|
182
182
|
- lib/rubocop/cop/graphql/overfetch.rb
|
183
|
-
homepage: https://github.com/github/graphql-client
|
183
|
+
homepage: https://github.com/github-community-projects/graphql-client
|
184
184
|
licenses:
|
185
185
|
- MIT
|
186
|
-
metadata:
|
187
|
-
|
186
|
+
metadata:
|
187
|
+
rubygems_mfa_required: 'true'
|
188
|
+
post_install_message:
|
188
189
|
rdoc_options: []
|
189
190
|
require_paths:
|
190
191
|
- lib
|
@@ -199,8 +200,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
199
200
|
- !ruby/object:Gem::Version
|
200
201
|
version: '0'
|
201
202
|
requirements: []
|
202
|
-
rubygems_version: 3.
|
203
|
-
signing_key:
|
203
|
+
rubygems_version: 3.5.9
|
204
|
+
signing_key:
|
204
205
|
specification_version: 4
|
205
206
|
summary: GraphQL Client
|
206
207
|
test_files: []
|