graphql-stitching 1.0.2 → 1.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4a0b6a79a253614edadb1151490e42e32164e9f10c8e110806978160efd8b482
4
- data.tar.gz: ff9d5a50b4bc41392a2777fc7bbdf401820a0fea899ef43736047f0efb196742
3
+ metadata.gz: ccc67e1b52f1a0688d25958d1955580c7f88a8115dc6b6b6905f785da94089db
4
+ data.tar.gz: 8e0925fb1ad0584bce11672be24868dc261cf680f8f88acdff87a7ca3819d9f8
5
5
  SHA512:
6
- metadata.gz: ffb8d232df37ff5b858f95344566774c314132c89bd4353b84ad603d54f1242581df452aef50db0ec4193428a6de72179063bf1213cd74ce0038b0a5cd5aad9b
7
- data.tar.gz: 585e94aaaf146a642f36cb184c91e69aacd8ed9988fd4c4cfc350feb83662b4955cb72d5efe2bdf7606f198a5f03b51d0f809fade8ba8e25367479d3d5902c44
6
+ metadata.gz: 9213dbd90d0fc0caf10a09b9ba68bfbfe072c3cce9d51c47623b0d5edabb9bfe1eac849fb3135bade04863c2ca9b62c42c2f67b469f1fc268f039fab15f17372
7
+ data.tar.gz: c62c51fda4c9210ba71c9be894e7a31fe3346c0e4d49ac57632efa32b8db9809174b6d0fb048eddc1437584c57d7f2bd748e4fab3f1e1440c2d5c6f3647657dd
@@ -8,8 +8,8 @@ module GraphQL
8
8
 
9
9
  attr_reader :query_name, :mutation_name, :candidate_types_by_name_and_location, :schema_directives
10
10
 
11
- DEFAULT_VALUE_MERGER = ->(values_by_location, _info) { values_by_location.values.find { !_1.nil? } }
12
- DEFAULT_ROOT_FIELD_LOCATION_SELECTOR = ->(locations, _info) { locations.last }
11
+ BASIC_VALUE_MERGER = ->(values_by_location, _info) { values_by_location.values.find { !_1.nil? } }
12
+ BASIC_ROOT_FIELD_LOCATION_SELECTOR = ->(locations, _info) { locations.last }
13
13
 
14
14
  VALIDATORS = [
15
15
  "ValidateInterfaces",
@@ -21,15 +21,17 @@ module GraphQL
21
21
  mutation_name: "Mutation",
22
22
  description_merger: nil,
23
23
  deprecation_merger: nil,
24
+ default_value_merger: nil,
24
25
  directive_kwarg_merger: nil,
25
26
  root_field_location_selector: nil
26
27
  )
27
28
  @query_name = query_name
28
29
  @mutation_name = mutation_name
29
- @description_merger = description_merger || DEFAULT_VALUE_MERGER
30
- @deprecation_merger = deprecation_merger || DEFAULT_VALUE_MERGER
31
- @directive_kwarg_merger = directive_kwarg_merger || DEFAULT_VALUE_MERGER
32
- @root_field_location_selector = root_field_location_selector || DEFAULT_ROOT_FIELD_LOCATION_SELECTOR
30
+ @description_merger = description_merger || BASIC_VALUE_MERGER
31
+ @deprecation_merger = deprecation_merger || BASIC_VALUE_MERGER
32
+ @default_value_merger = default_value_merger || BASIC_VALUE_MERGER
33
+ @directive_kwarg_merger = directive_kwarg_merger || BASIC_VALUE_MERGER
34
+ @root_field_location_selector = root_field_location_selector || BASIC_ROOT_FIELD_LOCATION_SELECTOR
33
35
  @stitch_directives = {}
34
36
  end
35
37
 
@@ -214,17 +216,17 @@ module GraphQL
214
216
  builder = self
215
217
 
216
218
  # "value" => "location" => enum_value
217
- enum_values_by_value_location = types_by_location.each_with_object({}) do |(location, type_candidate), memo|
219
+ enum_values_by_name_location = types_by_location.each_with_object({}) do |(location, type_candidate), memo|
218
220
  type_candidate.enum_values.each do |enum_value_candidate|
219
- memo[enum_value_candidate.value] ||= {}
220
- memo[enum_value_candidate.value][location] ||= {}
221
- memo[enum_value_candidate.value][location] = enum_value_candidate
221
+ memo[enum_value_candidate.graphql_name] ||= {}
222
+ memo[enum_value_candidate.graphql_name][location] ||= {}
223
+ memo[enum_value_candidate.graphql_name][location] = enum_value_candidate
222
224
  end
223
225
  end
224
226
 
225
227
  # intersect input enum types
226
- if enum_usage.fetch(type_name, []).include?(:write)
227
- enum_values_by_value_location.reject! do |value, enum_values_by_location|
228
+ if enum_usage.fetch(type_name, EMPTY_ARRAY).include?(:write)
229
+ enum_values_by_name_location.reject! do |value, enum_values_by_location|
228
230
  types_by_location.keys.length != enum_values_by_location.keys.length
229
231
  end
230
232
  end
@@ -234,14 +236,14 @@ module GraphQL
234
236
  description(builder.merge_descriptions(type_name, types_by_location))
235
237
  builder.build_merged_directives(type_name, types_by_location, self)
236
238
 
237
- enum_values_by_value_location.each do |value, enum_values_by_location|
238
- enum_value = value(value,
239
- value: value,
240
- description: builder.merge_descriptions(type_name, enum_values_by_location, enum_value: value),
241
- deprecation_reason: builder.merge_deprecations(type_name, enum_values_by_location, enum_value: value),
239
+ enum_values_by_name_location.each do |value_name, enum_values_by_location|
240
+ enum_value = value(value_name,
241
+ value: value_name,
242
+ description: builder.merge_descriptions(type_name, enum_values_by_location, enum_value: value_name),
243
+ deprecation_reason: builder.merge_deprecations(type_name, enum_values_by_location, enum_value: value_name),
242
244
  )
243
245
 
244
- builder.build_merged_directives(type_name, enum_values_by_location, enum_value, enum_value: value)
246
+ builder.build_merged_directives(type_name, enum_values_by_location, enum_value, enum_value: value_name)
245
247
  end
246
248
  end
247
249
  end
@@ -362,8 +364,22 @@ module GraphQL
362
364
  next
363
365
  end
364
366
 
365
- # Getting double args sometimes... why?
366
- return if owner.arguments.any? { _1.first == argument_name }
367
+ # Getting double args sometimes on auto-generated connection types... why?
368
+ next if owner.arguments.any? { _1.first == argument_name }
369
+
370
+ kwargs = {}
371
+ default_values_by_location = arguments_by_location.each_with_object({}) do |(location, argument), memo|
372
+ next if argument.default_value.class == Object # << pass on NOT_CONFIGURED (todo: improve this check)
373
+ memo[location] = argument.default_value
374
+ end
375
+
376
+ if default_values_by_location.any?
377
+ kwargs[:default_value] = @default_value_merger.call(default_values_by_location, {
378
+ type_name: type_name,
379
+ field_name: field_name,
380
+ argument_name: argument_name,
381
+ })
382
+ end
367
383
 
368
384
  type = merge_value_types(type_name, value_types, argument_name: argument_name, field_name: field_name)
369
385
  schema_argument = owner.argument(
@@ -373,6 +389,7 @@ module GraphQL
373
389
  type: Util.unwrap_non_null(type),
374
390
  required: type.non_null?,
375
391
  camelize: false,
392
+ **kwargs,
376
393
  )
377
394
 
378
395
  build_merged_directives(type_name, arguments_by_location, schema_argument, field_name: field_name, argument_name: argument_name)
@@ -583,11 +600,11 @@ module GraphQL
583
600
  end
584
601
  end
585
602
 
586
- usage = reads.uniq.each_with_object({}) do |enum_name, memo|
603
+ usage = reads.tap(&:uniq!).each_with_object({}) do |enum_name, memo|
587
604
  memo[enum_name] ||= []
588
605
  memo[enum_name] << :read
589
606
  end
590
- writes.uniq.each_with_object(usage) do |enum_name, memo|
607
+ writes.tap(&:uniq!).each_with_object(usage) do |enum_name, memo|
591
608
  memo[enum_name] ||= []
592
609
  memo[enum_name] << :write
593
610
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module GraphQL
4
4
  module Stitching
5
- VERSION = "1.0.2"
5
+ VERSION = "1.0.4"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: graphql-stitching
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Greg MacWilliam
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-10-16 00:00:00.000000000 Z
11
+ date: 2023-11-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: graphql