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 +4 -4
- data/lib/graphql/stitching/composer.rb +39 -22
- data/lib/graphql/stitching/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ccc67e1b52f1a0688d25958d1955580c7f88a8115dc6b6b6905f785da94089db
|
4
|
+
data.tar.gz: 8e0925fb1ad0584bce11672be24868dc261cf680f8f88acdff87a7ca3819d9f8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
12
|
-
|
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 ||
|
30
|
-
@deprecation_merger = deprecation_merger ||
|
31
|
-
@
|
32
|
-
@
|
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
|
-
|
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.
|
220
|
-
memo[enum_value_candidate.
|
221
|
-
memo[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,
|
227
|
-
|
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
|
-
|
238
|
-
enum_value = value(
|
239
|
-
value:
|
240
|
-
description: builder.merge_descriptions(type_name, enum_values_by_location, enum_value:
|
241
|
-
deprecation_reason: builder.merge_deprecations(type_name, enum_values_by_location, enum_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:
|
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
|
-
|
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
|
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.
|
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-
|
11
|
+
date: 2023-11-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: graphql
|