apollo-federation 0.4.0 → 0.4.1

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: 72d35c557f29e6039362b933cbaa55847b0d359f8d9da703b0a26615598d1642
4
- data.tar.gz: be611b3e1516a3dfc91b08f0c2c44473efac2f49508e53482a3fff277aa0bb42
3
+ metadata.gz: 92f976bf624ea2dc6d01ddc126f2fd83d8e6f4f4ff8100aaa8d19f7121b55ac8
4
+ data.tar.gz: e6a6b9db376504172050286130adf835276021fadfd74801f69cde81717d8c1a
5
5
  SHA512:
6
- metadata.gz: 79ab490f10fdd9faec720d447f76e4c12d63acb974087d22d8f61fb1cb8fbbf5f56f89d7f7edb4bf995c6313bff734e291d4ed6e726d01a9ab7f8548309150b9
7
- data.tar.gz: 4ea53d9aee497cd334ecbeaf486db7514b6e6499f76641b6e8150deae73824eff725765ca38adbbaabe3576d46f63bad8c8a728575801dd1bfbf7eac9f16a1e6
6
+ metadata.gz: 7457cd2e513cbfb792a484e6bba2aace79aef7c79d0aebdb1f5323fa37e99ea7ba7ad3a1be42702bc5058713fd468dbd3c57b0891e27dbc4d5690b20fb6dce5d
7
+ data.tar.gz: 64f79b2ee040273c0304886f3ed025485db08c33077d101bbcb721a36f6ea71b51e255cfdd8422720a1370046100c358eefe1d5c2424c7332ba69c23a76a8f45
@@ -1,3 +1,10 @@
1
+ ## [0.4.1](https://github.com/Gusto/apollo-federation-ruby/compare/v0.4.0...v0.4.1) (2019-10-12)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * Support lazy objects ([#17](https://github.com/Gusto/apollo-federation-ruby/issues/17)) ([68b0b9a](https://github.com/Gusto/apollo-federation-ruby/commit/68b0b9a))
7
+
1
8
  # [0.4.0](https://github.com/Gusto/apollo-federation-ruby/compare/v0.3.2...v0.4.0) (2019-09-10)
2
9
 
3
10
 
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'graphql'
4
4
  require 'apollo-federation/any'
5
+ require 'apollo-federation/entity_type_resolution_extension'
5
6
 
6
7
  module ApolloFederation
7
8
  module EntitiesField
@@ -15,6 +16,7 @@ module ApolloFederation
15
16
  def define_entities_field(entity_type)
16
17
  field(:_entities, [entity_type, null: true], null: false) do
17
18
  argument :representations, [Any], required: true
19
+ extension(EntityTypeResolutionExtension)
18
20
  end
19
21
  end
20
22
  end
@@ -38,13 +40,7 @@ module ApolloFederation
38
40
  result = reference
39
41
  end
40
42
 
41
- # TODO: This isn't 100% correct: if (for some reason) 2 different resolve_reference calls
42
- # return the same object, it might not have the right type
43
- # Right now, apollo-federation just adds a __typename property to the result,
44
- # but I don't really like the idea of modifying the resolved object
45
- context[result] = type
46
- # TODO: Handle lazy objects?
47
- result
43
+ [type, result]
48
44
  end
49
45
  end
50
46
  end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ class EntityTypeResolutionExtension < GraphQL::Schema::FieldExtension
4
+ def after_resolve(value:, context:, **_rest)
5
+ synced_value =
6
+ value.map do |type, result|
7
+ [type, context.query.schema.sync_lazy(result)]
8
+ end
9
+
10
+ # TODO: This isn't 100% correct: if (for some reason) 2 different resolve_reference calls
11
+ # return the same object, it might not have the right type
12
+ # Right now, apollo-federation just adds a __typename property to the result,
13
+ # but I don't really like the idea of modifying the resolved object
14
+ synced_value.each { |type, result| context[result] = type }
15
+
16
+ synced_value.map { |_, result| result }
17
+ end
18
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ApolloFederation
4
- VERSION = '0.4.0'
4
+ VERSION = '0.4.1'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: apollo-federation
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Noa Elad
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-09-10 00:00:00.000000000 Z
12
+ date: 2019-10-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: graphql
@@ -155,6 +155,7 @@ files:
155
155
  - lib/apollo-federation/any.rb
156
156
  - lib/apollo-federation/entities_field.rb
157
157
  - lib/apollo-federation/entity.rb
158
+ - lib/apollo-federation/entity_type_resolution_extension.rb
158
159
  - lib/apollo-federation/federated_document_from_schema_definition.rb
159
160
  - lib/apollo-federation/field.rb
160
161
  - lib/apollo-federation/has_directives.rb