graphql-stitching 1.0.2 → 1.0.4

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: 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