elasticgraph-apollo 0.19.2.2 → 0.19.3.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: 6a89d0d8c14d66d5f0d1a71f25ebbc109dba6b947d95ca069e92b5947fd7be67
4
- data.tar.gz: 99c12beaf57306b6275101adc2f8fce7e7ebbf64a6ba4fe85128ef5e891f098f
3
+ metadata.gz: 9dfc6d3665fbade9f03f4f45fe835c4ed77a136eedc26b0540ee35f2d7e9de49
4
+ data.tar.gz: 53356460e361d3c3438b2991f9455507cb7019228caafbffb5f577aa7245cf1f
5
5
  SHA512:
6
- metadata.gz: 6238eb71edfdbb751ca6a9209f47a5824d4060e79bba8a60e52e8765fc7205a02a224386765001438ccbf7ec6d6a5bd63aabb355438973ba14b4046a55cbde2e
7
- data.tar.gz: f3861d30cec381e2c00da57e63dd0fd0e9de1c86c0911a7bffd2f7cd9f7159c932be4483dadeff2f8e47a1811e6d27c7f930939a799e87c4e05e9f36eb4c001d
6
+ metadata.gz: de7a3784bf12bd0bd880e144bbd3022208a1d2f07277700a9b64b67fbd10314b4cdf9daf974661fa478e0ceffead64f6b610db8212a0cb365a529135693b00a8
7
+ data.tar.gz: f2e5c81cb0b62c3d51e7c44ad7018e4d9b6b44b9c0b070297dd85c62836fc5b3cb70dd3f47a4612959f786c4837b3db61cbc4e0550a5b2ff6488b170542a9d91
@@ -48,14 +48,14 @@ module ApolloTestImpl
48
48
  schema.on_root_query_type do |type|
49
49
  type.field "product", "Product" do |f|
50
50
  f.argument "id", "ID!"
51
- f.resolver = :product
51
+ f.resolve_with :product
52
52
  end
53
53
 
54
54
  type.field "deprecatedProduct", "DeprecatedProduct" do |f|
55
55
  f.argument "sku", "String!"
56
56
  f.argument "package", "String!"
57
57
  f.directive "deprecated", reason: "Use product query instead"
58
- f.resolver = :product
58
+ f.resolve_with :product
59
59
  end
60
60
  end
61
61
 
@@ -26,13 +26,7 @@ class ProductResolver
26
26
  monotonic_clock_deadline: context[:monotonic_clock_deadline],
27
27
  filters: [{"id" => {"equalToAnyOf" => [args.fetch("id")]}}],
28
28
  individual_docs_needed: true,
29
- requested_fields: %w[
30
- id sku package notes
31
- variation.id
32
- dimensions.size dimensions.weight dimensions.unit
33
- createdBy.averageProductsCreatedPerYear createdBy.email createdBy.name createdBy.totalProductsCreated createdBy.yearsOfEmployment
34
- research.study.caseNumber research.study.description research.outcome
35
- ]
29
+ request_all_fields: true
36
30
  )
37
31
 
38
32
  @datastore_router.msearch([query]).fetch(query).documents.first
@@ -0,0 +1,72 @@
1
+ # Copyright 2024 - 2025 Block, Inc.
2
+ #
3
+ # Use of this source code is governed by an MIT-style
4
+ # license that can be found in the LICENSE file or at
5
+ # https://opensource.org/licenses/MIT.
6
+ #
7
+ # frozen_string_literal: true
8
+
9
+ require "elastic_graph/graphql/resolvers/relay_connection/array_adapter"
10
+
11
+ module ElasticGraph
12
+ module Apollo
13
+ module GraphQL
14
+ # Namespace for resolvers which provide Apollo entity references from ids.
15
+ #
16
+ # @private
17
+ module ApolloEntityRefResolver
18
+ # GraphQL resolver for fields defined with `apollo_entity_ref_field` that are backed by a single id.
19
+ #
20
+ # @private
21
+ class ForSingleId
22
+ def initialize(elasticgraph_graphql:, config:)
23
+ @source_id_field = config.fetch(:source_id_field)
24
+ @exposed_id_field = config.fetch(:exposed_id_field)
25
+ end
26
+
27
+ def resolve(field:, object:, args:, context:)
28
+ if (id = object.fetch(@source_id_field))
29
+ {@exposed_id_field => id}
30
+ end
31
+ end
32
+ end
33
+
34
+ # GraphQL resolver for fields defined with `apollo_entity_ref_field` that are backed by an list of ids.
35
+ #
36
+ # @private
37
+ class ForIdList
38
+ def initialize(elasticgraph_graphql:, config:)
39
+ @source_ids_field = config.fetch(:source_ids_field)
40
+ @exposed_id_field = config.fetch(:exposed_id_field)
41
+ end
42
+
43
+ def resolve(field:, object:, args:, context:)
44
+ object
45
+ .fetch(@source_ids_field)
46
+ .map { |id| {@exposed_id_field => id} }
47
+ end
48
+ end
49
+
50
+ # GraphQL resolver for paginated fields defined with `apollo_entity_ref_paginated_collection_field`.
51
+ #
52
+ # @private
53
+ class ForPaginatedList
54
+ def initialize(elasticgraph_graphql:, config:)
55
+ @for_id_list = ForIdList.new(elasticgraph_graphql:, config:)
56
+ end
57
+
58
+ def resolve(field:, object:, args:, context:)
59
+ array = @for_id_list.resolve(field:, object:, args:, context:)
60
+
61
+ ::ElasticGraph::GraphQL::Resolvers::RelayConnection::ArrayAdapter.build(
62
+ array,
63
+ args,
64
+ context.fetch(:elastic_graph_schema).element_names,
65
+ context
66
+ )
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
72
+ end
@@ -8,7 +8,6 @@
8
8
 
9
9
  require "elastic_graph/errors"
10
10
  require "elastic_graph/version"
11
- require "elastic_graph/apollo/graphql/engine_extension"
12
11
  require "elastic_graph/apollo/schema_definition/entity_type_extension"
13
12
  require "elastic_graph/apollo/schema_definition/factory_extension"
14
13
  require "elastic_graph/apollo/schema_definition/state_extension"
@@ -125,7 +124,6 @@ module ElasticGraph
125
124
  end
126
125
  end
127
126
 
128
- api.register_graphql_extension GraphQL::EngineExtension, defined_at: "elastic_graph/apollo/graphql/engine_extension"
129
127
  api.state.after_user_definition_complete do
130
128
  api.send(:define_apollo_schema_elements)
131
129
  end
@@ -380,11 +378,19 @@ module ElasticGraph
380
378
  end
381
379
  end
382
380
 
381
+ require(require_path = "elastic_graph/apollo/graphql/engine_extension")
382
+ register_graphql_extension GraphQL::EngineExtension, defined_at: require_path
383
+
383
384
  require(require_path = "elastic_graph/apollo/graphql/entities_field_resolver")
384
385
  register_graphql_resolver :apollo_entities, GraphQL::EntitiesFieldResolver, defined_at: require_path
385
386
 
386
387
  require(require_path = "elastic_graph/apollo/graphql/service_field_resolver")
387
388
  register_graphql_resolver :apollo_service, GraphQL::ServiceFieldResolver, defined_at: require_path
389
+
390
+ require(require_path = "elastic_graph/apollo/graphql/apollo_entity_ref_resolver")
391
+ register_graphql_resolver :apollo_entity_ref, GraphQL::ApolloEntityRefResolver::ForSingleId, defined_at: require_path
392
+ register_graphql_resolver :apollo_entity_ref_list, GraphQL::ApolloEntityRefResolver::ForIdList, defined_at: require_path
393
+ register_graphql_resolver :apollo_entity_ref_paginated, GraphQL::ApolloEntityRefResolver::ForPaginatedList, defined_at: require_path
388
394
  end
389
395
 
390
396
  def apollo_object_type(name, &block)
@@ -487,7 +493,7 @@ module ElasticGraph
487
493
  EOS
488
494
  end
489
495
 
490
- f.resolver = :apollo_entities
496
+ f.resolve_with :apollo_entities
491
497
  end
492
498
  end
493
499
 
@@ -503,7 +509,7 @@ module ElasticGraph
503
509
  Not intended for use by clients other than Apollo.
504
510
  EOS
505
511
 
506
- f.resolver = :apollo_service
512
+ f.resolve_with :apollo_service
507
513
  end
508
514
  end
509
515
  end
@@ -7,6 +7,7 @@
7
7
  # frozen_string_literal: true
8
8
 
9
9
  require "elastic_graph/apollo/schema_definition/apollo_directives"
10
+ require "elastic_graph/apollo/schema_definition/object_and_interface_extension"
10
11
 
11
12
  module ElasticGraph
12
13
  module Apollo
@@ -20,6 +21,7 @@ module ElasticGraph
20
21
  include ApolloDirectives::Policy
21
22
  include ApolloDirectives::RequiresScopes
22
23
  include ApolloDirectives::Tag
24
+ include ObjectAndInterfaceExtension
23
25
  end
24
26
  end
25
27
  end
@@ -0,0 +1,218 @@
1
+ # Copyright 2024 - 2025 Block, Inc.
2
+ #
3
+ # Use of this source code is governed by an MIT-style
4
+ # license that can be found in the LICENSE file or at
5
+ # https://opensource.org/licenses/MIT.
6
+ #
7
+ # frozen_string_literal: true
8
+
9
+ require "elastic_graph/apollo/schema_definition/apollo_directives"
10
+
11
+ module ElasticGraph
12
+ module Apollo
13
+ module SchemaDefinition
14
+ # Extends {ElasticGraph::SchemaDefinition::SchemaElements::ObjectType} and
15
+ # {ElasticGraph::SchemaDefinition::SchemaElements::InterfaceType} to offer some Apollo-specific APIs.
16
+ module ObjectAndInterfaceExtension
17
+ # Exposes an Apollo entity reference as a new field, backed by an `ID` field.
18
+ #
19
+ # When integrating an ElasticGraph project as a subgraph into a larger Apollo supergraph, it's useful to be able
20
+ # to reference entities owned by other subgraphs. The most straightforward way to do this is to define an
21
+ # _entity reference_ type (e.g. a type containing just the `@key` fields such as `id: ID` and marked as
22
+ # `resolvable: false` in the `@key` directive), and then define fields using that type. This approach works
23
+ # particularly well when you plan ahead and know which `ID` fields to model with entity reference types.
24
+ #
25
+ # However, on an existing schema where you've got some raw `ID` fields of external entities, it can be quite
26
+ # difficult to replace the `ID` fields with full-blown entity reference types, as doing so would require migrating
27
+ # clients and running a full backfill.
28
+ #
29
+ # This API provides an alternate solution for this situation: it defines a GraphQL-only field which returns an entity
30
+ # reference type using a custom GraphQL resolver.
31
+ #
32
+ # See the [Apollo docs on referencing an entity without contributing
33
+ # fields](https://www.apollographql.com/docs/graphos/schema-design/federated-schemas/entities/contribute-fields#referencing-an-entity-without-contributing-fields)
34
+ # for more information.
35
+ #
36
+ # @param name [String] Name of the field
37
+ # @param type [String] Name of the entity reference type (which must be defined separately)
38
+ # @param id_field_name_in_index [String] Name of the backing ID field in the datastore index
39
+ # @return [void]
40
+ # @note This can be used for either a singleton or list reference, based on if `type` is a list.
41
+ # @note The resulting field will be only be available for clients to request as a return field. It will not support filtering,
42
+ # sorting, grouping, aggregated values, or highlights.
43
+ # @see #apollo_entity_ref_paginated_collection_field
44
+ #
45
+ # @example Expose `Review.product` and `Review.comments` entity reference fields
46
+ # ElasticGraph.define_schema do |schema|
47
+ # schema.object_type "Product" do |t|
48
+ # t.field "id", "ID"
49
+ # t.apollo_key fields: "id", resolvable: false
50
+ # end
51
+ #
52
+ # schema.object_type "Comment" do |t|
53
+ # t.field "id", "ID"
54
+ # t.apollo_key fields: "id", resolvable: false
55
+ # end
56
+ #
57
+ # schema.object_type "Review" do |t|
58
+ # t.field "id", "ID"
59
+ # t.field "score", "Int"
60
+ #
61
+ # # Fields originally defined in the first version of the schema
62
+ # t.field "productId", "ID"
63
+ # t.field "commentIds", "[ID!]!"
64
+ #
65
+ # # New field we're adding to expose the existing `productId` field as a `Product` entity reference.
66
+ # t.apollo_entity_ref_field "product", "Product", id_field_name_in_index: "productId"
67
+ #
68
+ # # New field we're adding to expose the existing `commentIds` field as a list of `Comment` entity references.
69
+ # t.apollo_entity_ref_field "comments", "[Comment!]!", id_field_name_in_index: "commentIds"
70
+ #
71
+ # t.index "reviews"
72
+ # end
73
+ # end
74
+ def apollo_entity_ref_field(name, type, id_field_name_in_index:)
75
+ field(
76
+ name,
77
+ type,
78
+ name_in_index: id_field_name_in_index,
79
+ **LIMITED_GRAPHQL_ONLY_FIELD_OPTIONS
80
+ ) do |f|
81
+ validate_entity_ref_options(__method__.to_s, f, id_field_name_in_index, type) do |exposed_id_field|
82
+ if f.type.list?
83
+ f.resolve_with :apollo_entity_ref_list, source_ids_field: id_field_name_in_index, exposed_id_field: exposed_id_field
84
+ else
85
+ f.resolve_with :apollo_entity_ref, source_id_field: id_field_name_in_index, exposed_id_field: exposed_id_field
86
+ end
87
+ end
88
+
89
+ yield f if block_given?
90
+ end
91
+ end
92
+
93
+ # Exposes a collection of Apollo entity references as a new paginated field, backed by an `ID` field.
94
+ #
95
+ # When integrating an ElasticGraph project as a subgraph into a larger Apollo supergraph, it's useful to be able
96
+ # to reference entities owned by other subgraphs. The most straightforward way to do this is to define an
97
+ # _entity reference_ type (e.g. a type containing just the `@key` fields such as `id: ID` and marked as
98
+ # `resolvable: false` in the `@key` directive), and then define fields using that type. This approach works
99
+ # particularly well when you plan ahead and know which `ID` fields to model with entity reference types.
100
+ #
101
+ # However, on an existing schema where you've got some raw `ID` fields of external entities, it can be quite
102
+ # difficult to replace the `ID` fields with full-blown entity reference types, as doing so would require migrating
103
+ # clients and running a full backfill.
104
+ #
105
+ # This API provides an alternate solution for this situation: it defines a GraphQL-only field which returns an entity
106
+ # reference type using a custom GraphQL resolver. In contrast to {#apollo_entity_ref_field}, this defines a field as
107
+ # a [paginated Relay connection](https://relay.dev/graphql/connections.htm) rather than a simple list.
108
+ #
109
+ # See the [Apollo docs on referencing an entity without contributing
110
+ # fields](https://www.apollographql.com/docs/graphos/schema-design/federated-schemas/entities/contribute-fields#referencing-an-entity-without-contributing-fields)
111
+ # for more information.
112
+ #
113
+ # @param name [String] Name of the field
114
+ # @param element_type [String] Name of the entity reference type (which must be defined separately)
115
+ # @param id_field_name_in_index [String] Name of the backing ID field in the datastore index
116
+ # @return [void]
117
+ # @note This requires `id_field_name_in_index` to be a list or paginated collection field.
118
+ # @note The resulting field will be only be available for clients to request as a return field. It will not support filtering,
119
+ # sorting, grouping, aggregated values, or highlights.
120
+ # @see #apollo_entity_ref_field
121
+ # @see ElasticGraph::SchemaDefinition::SchemaElements::TypeWithSubfields#paginated_collection_field
122
+ #
123
+ # @example Expose `Review.product` and `Review.comments` entity reference fields
124
+ # ElasticGraph.define_schema do |schema|
125
+ # schema.object_type "Comment" do |t|
126
+ # t.field "id", "ID"
127
+ # t.apollo_key fields: "id", resolvable: false
128
+ # end
129
+ #
130
+ # schema.object_type "Review" do |t|
131
+ # t.field "id", "ID"
132
+ # t.field "score", "Int"
133
+ #
134
+ # # Field originally defined in the first version of the schema
135
+ # t.field "commentIds", "[ID!]!"
136
+ #
137
+ # # New field we're adding to expose the existing `commentIds` field as a list of `Comment` entity references.
138
+ # t.apollo_entity_ref_paginated_collection_field "comments", "Comment", id_field_name_in_index: "commentIds"
139
+ #
140
+ # t.index "reviews"
141
+ # end
142
+ # end
143
+ def apollo_entity_ref_paginated_collection_field(name, element_type, id_field_name_in_index:)
144
+ paginated_collection_field(
145
+ name,
146
+ element_type,
147
+ name_in_index: id_field_name_in_index,
148
+ **LIMITED_GRAPHQL_ONLY_PAGINATED_FIELD_OPTIONS
149
+ ) do |f|
150
+ validate_entity_ref_options(__method__.to_s, f, id_field_name_in_index, element_type) do |exposed_id_field|
151
+ backing_indexing_field = f.backing_indexing_field # : ::ElasticGraph::SchemaDefinition::SchemaElements::Field
152
+ unless backing_indexing_field.type.list?
153
+ raise Errors::SchemaError, "`#{f.parent_type.name}.#{f.name}` is invalid: `id_field_name_in_index` must reference an " \
154
+ "id collection field, but the type of `#{id_field_name_in_index}` is `#{backing_indexing_field.type.name}`."
155
+ end
156
+
157
+ f.resolve_with :apollo_entity_ref_paginated, source_ids_field: id_field_name_in_index, exposed_id_field: exposed_id_field
158
+
159
+ yield f if block_given?
160
+ end
161
+ end
162
+ end
163
+
164
+ private
165
+
166
+ # The set of options for a GraphQL-only field that has all abilities disabled. A field defined with these options
167
+ # is available to be returned, but cannot be used for anything else (filtering, grouping, sorting, etc.).
168
+ LIMITED_GRAPHQL_ONLY_FIELD_OPTIONS = {
169
+ graphql_only: true,
170
+ filterable: false,
171
+ groupable: false,
172
+ aggregatable: false,
173
+ sortable: false
174
+ }
175
+
176
+ # Like {LIMITED_GRAPHQL_ONLY_FIELD_OPTIONS} but for
177
+ # {ElasticGraph::SchemaDefinition::SchemaElements::TypeWithSubfields#paginated_collection_field}.
178
+ # It does not support the `sortable` option.
179
+ LIMITED_GRAPHQL_ONLY_PAGINATED_FIELD_OPTIONS = LIMITED_GRAPHQL_ONLY_FIELD_OPTIONS.except(:sortable)
180
+
181
+ def validate_entity_ref_options(method_name, field, id_field_name_in_index, entity_ref_type_name)
182
+ # Defer validation since it depends on the definition of the entity ref type, which may be as yet undefined.
183
+ schema_def_state.after_user_definition_complete do
184
+ backing_indexing_field = field.backing_indexing_field # : ::ElasticGraph::SchemaDefinition::SchemaElements::Field
185
+ backing_indexing_field_type = backing_indexing_field.type.fully_unwrapped.name
186
+
187
+ unless backing_indexing_field_type == "ID"
188
+ raise Errors::SchemaError, "`#{field.parent_type.name}.#{field.name}` is invalid: `id_field_name_in_index` must " \
189
+ "reference an `ID` field, but the type of `#{id_field_name_in_index}` is `#{backing_indexing_field_type}`."
190
+ end
191
+
192
+ entity_ref_type = schema_def_state.type_ref(entity_ref_type_name).fully_unwrapped.as_object_type
193
+ unless entity_ref_type
194
+ raise Errors::SchemaError, "`#{field.parent_type.name}.#{field.name}` is invalid: the referenced type " \
195
+ "(`#{entity_ref_type_name}`) is not an object type as required by `#{method_name}`."
196
+ end
197
+
198
+ entity_ref_type_fields = entity_ref_type.graphql_fields_by_name.keys
199
+
200
+ unless entity_ref_type_fields.size == 1
201
+ raise Errors::SchemaError, "`#{field.parent_type.name}.#{field.name}` is invalid: `#{method_name}` can only be used " \
202
+ "for types with a single field, but `#{entity_ref_type.name}` has #{entity_ref_type_fields.size} fields."
203
+ end
204
+
205
+ exposed_id_field = entity_ref_type_fields.first
206
+ exposed_id_field_type = entity_ref_type.graphql_fields_by_name.fetch(exposed_id_field).type
207
+ unless exposed_id_field_type.unwrap_non_null.name == "ID"
208
+ raise Errors::SchemaError, "`#{field.parent_type.name}.#{field.name}` is invalid: `#{method_name}` can only be used for " \
209
+ "types with a single `ID` field, but the type of `#{entity_ref_type.name}.#{exposed_id_field}` is `#{exposed_id_field_type.name}`."
210
+ end
211
+
212
+ yield exposed_id_field
213
+ end
214
+ end
215
+ end
216
+ end
217
+ end
218
+ end
@@ -7,6 +7,7 @@
7
7
  # frozen_string_literal: true
8
8
 
9
9
  require "elastic_graph/apollo/schema_definition/apollo_directives"
10
+ require "elastic_graph/apollo/schema_definition/object_and_interface_extension"
10
11
 
11
12
  module ElasticGraph
12
13
  module Apollo
@@ -23,6 +24,7 @@ module ElasticGraph
23
24
  include ApolloDirectives::RequiresScopes
24
25
  include ApolloDirectives::Shareable
25
26
  include ApolloDirectives::Tag
27
+ include ObjectAndInterfaceExtension
26
28
  end
27
29
  end
28
30
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elasticgraph-apollo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.19.2.2
4
+ version: 0.19.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Myron Marston
@@ -9,7 +9,7 @@ authors:
9
9
  - Block Engineering
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2025-05-05 00:00:00.000000000 Z
12
+ date: 2025-06-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: elasticgraph-graphql
@@ -17,28 +17,28 @@ dependencies:
17
17
  requirements:
18
18
  - - '='
19
19
  - !ruby/object:Gem::Version
20
- version: 0.19.2.2
20
+ version: 0.19.3.0
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - '='
26
26
  - !ruby/object:Gem::Version
27
- version: 0.19.2.2
27
+ version: 0.19.3.0
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: elasticgraph-support
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - '='
33
33
  - !ruby/object:Gem::Version
34
- version: 0.19.2.2
34
+ version: 0.19.3.0
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - '='
40
40
  - !ruby/object:Gem::Version
41
- version: 0.19.2.2
41
+ version: 0.19.3.0
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: graphql
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -79,70 +79,70 @@ dependencies:
79
79
  requirements:
80
80
  - - '='
81
81
  - !ruby/object:Gem::Version
82
- version: 0.19.2.2
82
+ version: 0.19.3.0
83
83
  type: :development
84
84
  prerelease: false
85
85
  version_requirements: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - '='
88
88
  - !ruby/object:Gem::Version
89
- version: 0.19.2.2
89
+ version: 0.19.3.0
90
90
  - !ruby/object:Gem::Dependency
91
91
  name: elasticgraph-admin
92
92
  requirement: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - '='
95
95
  - !ruby/object:Gem::Version
96
- version: 0.19.2.2
96
+ version: 0.19.3.0
97
97
  type: :development
98
98
  prerelease: false
99
99
  version_requirements: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - '='
102
102
  - !ruby/object:Gem::Version
103
- version: 0.19.2.2
103
+ version: 0.19.3.0
104
104
  - !ruby/object:Gem::Dependency
105
105
  name: elasticgraph-elasticsearch
106
106
  requirement: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - '='
109
109
  - !ruby/object:Gem::Version
110
- version: 0.19.2.2
110
+ version: 0.19.3.0
111
111
  type: :development
112
112
  prerelease: false
113
113
  version_requirements: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - '='
116
116
  - !ruby/object:Gem::Version
117
- version: 0.19.2.2
117
+ version: 0.19.3.0
118
118
  - !ruby/object:Gem::Dependency
119
119
  name: elasticgraph-opensearch
120
120
  requirement: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - '='
123
123
  - !ruby/object:Gem::Version
124
- version: 0.19.2.2
124
+ version: 0.19.3.0
125
125
  type: :development
126
126
  prerelease: false
127
127
  version_requirements: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - '='
130
130
  - !ruby/object:Gem::Version
131
- version: 0.19.2.2
131
+ version: 0.19.3.0
132
132
  - !ruby/object:Gem::Dependency
133
133
  name: elasticgraph-indexer
134
134
  requirement: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - '='
137
137
  - !ruby/object:Gem::Version
138
- version: 0.19.2.2
138
+ version: 0.19.3.0
139
139
  type: :development
140
140
  prerelease: false
141
141
  version_requirements: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - '='
144
144
  - !ruby/object:Gem::Version
145
- version: 0.19.2.2
145
+ version: 0.19.3.0
146
146
  email:
147
147
  - myron@squareup.com
148
148
  executables: []
@@ -160,6 +160,7 @@ files:
160
160
  - apollo_tests_implementation/docker-compose.yaml
161
161
  - apollo_tests_implementation/lib/product_resolver.rb
162
162
  - apollo_tests_implementation/wait_for_datastore.sh
163
+ - lib/elastic_graph/apollo/graphql/apollo_entity_ref_resolver.rb
163
164
  - lib/elastic_graph/apollo/graphql/engine_extension.rb
164
165
  - lib/elastic_graph/apollo/graphql/entities_field_resolver.rb
165
166
  - lib/elastic_graph/apollo/graphql/http_endpoint_extension.rb
@@ -174,6 +175,7 @@ files:
174
175
  - lib/elastic_graph/apollo/schema_definition/field_extension.rb
175
176
  - lib/elastic_graph/apollo/schema_definition/input_type_extension.rb
176
177
  - lib/elastic_graph/apollo/schema_definition/interface_type_extension.rb
178
+ - lib/elastic_graph/apollo/schema_definition/object_and_interface_extension.rb
177
179
  - lib/elastic_graph/apollo/schema_definition/object_type_extension.rb
178
180
  - lib/elastic_graph/apollo/schema_definition/scalar_type_extension.rb
179
181
  - lib/elastic_graph/apollo/schema_definition/state_extension.rb
@@ -186,10 +188,10 @@ licenses:
186
188
  - MIT
187
189
  metadata:
188
190
  bug_tracker_uri: https://github.com/block/elasticgraph/issues
189
- changelog_uri: https://github.com/block/elasticgraph/releases/tag/v0.19.2.2
190
- documentation_uri: https://block.github.io/elasticgraph/api-docs/v0.19.2.2/
191
+ changelog_uri: https://github.com/block/elasticgraph/releases/tag/v0.19.3.0
192
+ documentation_uri: https://block.github.io/elasticgraph/api-docs/v0.19.3.0/
191
193
  homepage_uri: https://block.github.io/elasticgraph/
192
- source_code_uri: https://github.com/block/elasticgraph/tree/v0.19.2.2/elasticgraph-apollo
194
+ source_code_uri: https://github.com/block/elasticgraph/tree/v0.19.3.0/elasticgraph-apollo
193
195
  gem_category: extension
194
196
  rdoc_options: []
195
197
  require_paths: