graphql-client 0.20.0 → 0.21.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d645f13f9acd753d166f82ceea2e8a19fe8695ff2e00ac7ae505a2b0f784560e
4
- data.tar.gz: ffa8a0bf2a8264314395494cac66960d7ade04e5eae650d57e19c76c9f64d5f8
3
+ metadata.gz: 701013be051b65eb45137df51b2cff9ea320252872d39229179f4fc25530ed44
4
+ data.tar.gz: 72c632eae9478ceb269955e50a6f0636c54672713905f55cea7b965997fdadb7
5
5
  SHA512:
6
- metadata.gz: 73836d82fe18274ac579b2426c1625a76248cba2ae04dd51bdea84baecaeb550197958a8359ffcce5bcec8016f2d874751ac5fbe28ca509ddc0c49eaa22d356e
7
- data.tar.gz: c3f3e78d79d2147ec051569ff807c75740ed3b92407ca18c3c1d4b11b7af557782b26acdf0207892e10ae8e65c572bb08d1ba1b611c883291f71befca55d47be
6
+ metadata.gz: b863aa17a14fb51f2957cc4a0bb30a741ed55babdbce7f32aa76bd4db9a0fdb3764f11c1402b23bdd94c7a547ce7dc37bfad778c4b0c31edf0c5ea0f16b7111a
7
+ data.tar.gz: d629b3047219db9bc9805bd39a59ea7f4540540905b9cda2d9d84aaddfd8044b2517bc25c4a3af6c7c9a9dc2eddb2daff3baeed5eb9a8342c7278c6e272999fb
@@ -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://git.io/v1syX")
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
@@ -12,6 +12,7 @@ module GraphQL
12
12
  # Returns Hash.
13
13
  attr_reader :original_hash
14
14
  alias_method :to_h, :original_hash
15
+ alias_method :to_hash, :original_hash
15
16
 
16
17
  # Public: Wrapped ObjectType of data returned from the server.
17
18
  #
@@ -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
- raise Error, "unexpected enum value #{value}" unless @values.key?(value)
82
- @values[value]
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
@@ -192,6 +192,7 @@ module GraphQL
192
192
  def to_h
193
193
  @data
194
194
  end
195
+ alias :to_hash :to_h
195
196
 
196
197
  def _definer
197
198
  @definer
@@ -255,13 +256,13 @@ module GraphQL
255
256
  end
256
257
 
257
258
  unless field
258
- raise UnimplementedFieldError, "undefined field `#{e.name}' on #{type.graphql_name} type. https://git.io/v1y3m"
259
+ 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
260
  end
260
261
 
261
262
  if @data.key?(field.name)
262
- raise ImplicitlyFetchedFieldError, "implicitly fetched field `#{field.name}' on #{type} type. https://git.io/v1yGL"
263
+ 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
264
  else
264
- raise UnfetchedFieldError, "unfetched field `#{field.name}' on #{type} type. https://git.io/v1y3U"
265
+ 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
266
  end
266
267
  end
267
268
  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 constants.include?(class_name.to_sym)
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|
@@ -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: [])
@@ -101,7 +101,7 @@ module GraphQL
101
101
  if schema.is_a?(Class)
102
102
  @possible_types = schema.possible_types
103
103
  end
104
- @types = Schema.generate(@schema)
104
+ @types = Schema.generate(@schema, raise_on_unknown_enum_value: raise_on_unknown_enum_value)
105
105
  end
106
106
 
107
107
  # A cache of the schema's merged possible types
@@ -338,7 +338,7 @@ module GraphQL
338
338
  end
339
339
 
340
340
  if allow_dynamic_queries == false && definition.name.nil?
341
- raise DynamicQueryError, "expected definition to be assigned to a static constant https://git.io/vXXSE"
341
+ 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
342
  end
343
343
 
344
344
  variables = deep_stringify_keys(variables)
@@ -403,7 +403,6 @@ module GraphQL
403
403
 
404
404
  doc.definitions.map do |node|
405
405
  deps = Set.new
406
- definitions = document_dependencies.definitions.map { |x| [x.name, x] }.to_h
407
406
 
408
407
  queue = [node.name]
409
408
  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.20.0
4
+ version: 0.21.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - GitHub
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-02-08 00:00:00.000000000 Z
11
+ date: 2024-03-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport