elasticgraph-graphql 0.18.0.0 → 0.18.0.2

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: b19df00bc750f39aa2cbccab58af18c6cb2a2329017e9d0aa8f889dce5b1c377
4
- data.tar.gz: 8308fce167bd7cf625bb7b82f2f717c174ffa12655b1df77e58e37369b8d6294
3
+ metadata.gz: 3b80c95effea6c96d77f52275854dcf2ef14fa9b56c56cbca44fef5b5e34da5d
4
+ data.tar.gz: 6af6c4269f7d9b4822a16e0007c24574593261a585cc7de9227ec3584c50a5ed
5
5
  SHA512:
6
- metadata.gz: c983f82a5da8da47c2f8146337b9425623d1ebfacf0e2f93db706cd53e465725f12cc43fe4e49d2b7885422a428e7744ae61642264941d3d497eb4d4fd3bc9f6
7
- data.tar.gz: 277958b0fee144f62342f2e3081f4ebbb9a7529456e62a2b5183ad8fe93f2cca7fd5013cbe9bf461fceee46d5f42cea8149d40b624410fbb9498267e78d1dedb
6
+ metadata.gz: 33c540e6691fa35958a4b8c01984909f36a12092e05bb78e4cf91424a555d2932b79cdb50e8007756c2bd7d4a44bc176b36a7363cf5e5b2be75f3d5475d616d7
7
+ data.tar.gz: 9ee9a9790c301d17f6467413d2ad02f6e01fd2305b5989eaed5fcbd78fdd8d84b9b8f21ef14cdd109444675a6e63df737555be7eb34be988bb44359a834ab0ea
@@ -13,7 +13,7 @@ ElasticGraphGemspecHelper.define_elasticgraph_gem(gemspec_file: __FILE__, catego
13
13
 
14
14
  spec.add_dependency "elasticgraph-datastore_core", eg_version
15
15
  spec.add_dependency "elasticgraph-schema_artifacts", eg_version
16
- spec.add_dependency "graphql", ">= 2.3.7", "< 2.4"
16
+ spec.add_dependency "graphql", "~> 2.3.14"
17
17
 
18
18
  spec.add_development_dependency "elasticgraph-admin", eg_version
19
19
  spec.add_development_dependency "elasticgraph-elasticsearch", eg_version
@@ -7,6 +7,7 @@
7
7
  # frozen_string_literal: true
8
8
 
9
9
  require "elastic_graph/graphql/aggregation/field_path_encoder"
10
+ require "elastic_graph/support/memoizable_data"
10
11
 
11
12
  module ElasticGraph
12
13
  class GraphQL
@@ -14,14 +15,23 @@ module ElasticGraph
14
15
  # Represents a sub-aggregation on a `nested` field.
15
16
  # For the relevant Elasticsearch docs, see:
16
17
  # https://www.elastic.co/guide/en/elasticsearch/reference/8.10/search-aggregations-bucket-nested-aggregation.html
17
- class NestedSubAggregation < ::Data.define(:nested_path, :query)
18
+ class NestedSubAggregation < Support::MemoizableData.define(:nested_path, :query)
19
+ # The nested path in the GraphQL query from the parent aggregation to this-subaggregation, encoded
20
+ # for use as a hash key.
21
+ #
22
+ # This key will be unique in the scope of the parent aggregation query, and thus suitable as a key
23
+ # in a sub-aggregations hash.
24
+ def nested_path_key
25
+ @nested_path_key ||= FieldPathEncoder.encode(nested_path.map(&:name_in_graphql_query))
26
+ end
27
+
18
28
  def build_agg_hash(filter_interpreter, parent_queries:)
19
29
  detail = query.build_agg_detail(filter_interpreter, field_path: nested_path, parent_queries: parent_queries)
20
30
  return {} if detail.nil?
21
31
 
22
- query_names = parent_queries.map(&:name) + [query.name]
32
+ parent_query_names = parent_queries.map(&:name)
23
33
  {
24
- Key.encode(query_names) => {
34
+ Key.encode(parent_query_names + [nested_path_key]) => {
25
35
  "nested" => {"path" => FieldPathEncoder.encode(nested_path.filter_map(&:name_in_index))},
26
36
  "aggs" => detail.clauses,
27
37
  "meta" => detail.meta.merge({
@@ -9,6 +9,7 @@
9
9
  require "elastic_graph/graphql/aggregation/key"
10
10
  require "elastic_graph/graphql/datastore_query"
11
11
  require "elastic_graph/graphql/filtering/field_path"
12
+ require "elastic_graph/support/hash_util"
12
13
 
13
14
  module ElasticGraph
14
15
  class GraphQL
@@ -62,7 +63,7 @@ module ElasticGraph
62
63
 
63
64
  filter_detail(filter_interpreter, field_path) do
64
65
  grouping_adapter.grouping_detail_for(self) do
65
- computations_detail.merge(sub_aggregation_detail(filter_interpreter, queries))
66
+ Support::HashUtil.disjoint_merge(computations_detail, sub_aggregation_detail(filter_interpreter, queries))
66
67
  end
67
68
  end
68
69
  end
@@ -114,7 +115,10 @@ module ElasticGraph
114
115
  end
115
116
 
116
117
  def build_inner_aggregation_detail(collection, &block)
117
- collection.map(&block).reduce({}, :merge)
118
+ initial = {} # : ::Hash[::String, untyped]
119
+ collection.map(&block).reduce(initial) do |accum, hash|
120
+ Support::HashUtil.disjoint_merge(accum, hash)
121
+ end
118
122
  end
119
123
  end
120
124
 
@@ -15,6 +15,7 @@ require "elastic_graph/graphql/aggregation/path_segment"
15
15
  require "elastic_graph/graphql/aggregation/query"
16
16
  require "elastic_graph/graphql/aggregation/script_term_grouping"
17
17
  require "elastic_graph/graphql/schema/arguments"
18
+ require "elastic_graph/support/hash_util"
18
19
  require "elastic_graph/support/memoizable_data"
19
20
 
20
21
  module ElasticGraph
@@ -303,22 +304,25 @@ module ElasticGraph
303
304
  end
304
305
 
305
306
  def build_sub_aggregations_from(node_node, parent_nested_path: [])
306
- build_clauses_from(node_node.selection(element_names.sub_aggregations)) do |node, field, field_path|
307
- if field.type.elasticgraph_category == :nested_sub_aggregation_connection
308
- nested_path = parent_nested_path + field_path
309
- nested_sub_agg = NestedSubAggregation.new(
310
- nested_path: nested_path,
311
- query: build_aggregation_query_for(
312
- node,
313
- field: field,
314
- grouping_adapter: sub_aggregation_grouping_adapter,
315
- nested_path: nested_path
307
+ key_sub_agg_pairs =
308
+ build_clauses_from(node_node.selection(element_names.sub_aggregations)) do |node, field, field_path|
309
+ if field.type.elasticgraph_category == :nested_sub_aggregation_connection
310
+ nested_path = parent_nested_path + field_path
311
+ nested_sub_agg = NestedSubAggregation.new(
312
+ nested_path: nested_path,
313
+ query: build_aggregation_query_for(
314
+ node,
315
+ field: field,
316
+ grouping_adapter: sub_aggregation_grouping_adapter,
317
+ nested_path: nested_path
318
+ )
316
319
  )
317
- )
318
320
 
319
- [[nested_sub_agg.query.name, nested_sub_agg]]
321
+ [[nested_sub_agg.nested_path_key, nested_sub_agg]] # : ::Array[[::String, NestedSubAggregation]]
322
+ end
320
323
  end
321
- end.to_h
324
+
325
+ Support::HashUtil.strict_to_h(key_sub_agg_pairs)
322
326
  end
323
327
 
324
328
  def build_paginator_for(node)
@@ -8,6 +8,7 @@
8
8
 
9
9
  require "elastic_graph/graphql/aggregation/key"
10
10
  require "elastic_graph/graphql/aggregation/path_segment"
11
+ require "elastic_graph/support/hash_util"
11
12
 
12
13
  module ElasticGraph
13
14
  class GraphQL
@@ -27,7 +28,7 @@ module ElasticGraph
27
28
  function_name: field.name_in_index.to_s
28
29
  )
29
30
 
30
- result = bucket.fetch(key.encode)
31
+ result = Support::HashUtil.verbose_fetch(bucket, key.encode)
31
32
 
32
33
  # Aggregated value results always have a `value` key; in addition, for `date` field, they also have a `value_as_string`.
33
34
  # In that case, `value` is a number (e.g. ms since epoch) whereas `value_as_string` is a formatted value. ElasticGraph
@@ -7,6 +7,7 @@
7
7
  # frozen_string_literal: true
8
8
 
9
9
  require "elastic_graph/graphql/aggregation/field_path_encoder"
10
+ require "elastic_graph/support/hash_util"
10
11
 
11
12
  module ElasticGraph
12
13
  class GraphQL
@@ -21,7 +22,8 @@ module ElasticGraph
21
22
  new_field_path = field_path + [PathSegment.for(field: field, lookahead: lookahead)]
22
23
  return with(field_path: new_field_path) if field.type.object?
23
24
 
24
- bucket.fetch("key").fetch(FieldPathEncoder.encode(new_field_path.map(&:name_in_graphql_query)))
25
+ bucket_entry = Support::HashUtil.verbose_fetch(bucket, "key")
26
+ Support::HashUtil.verbose_fetch(bucket_entry, FieldPathEncoder.encode(new_field_path.map(&:name_in_graphql_query)))
25
27
  end
26
28
  end
27
29
  end
@@ -7,17 +7,19 @@
7
7
  # frozen_string_literal: true
8
8
 
9
9
  require "elastic_graph/graphql/aggregation/composite_grouping_adapter"
10
+ require "elastic_graph/graphql/aggregation/field_path_encoder"
10
11
  require "elastic_graph/graphql/aggregation/key"
11
12
  require "elastic_graph/graphql/aggregation/non_composite_grouping_adapter"
12
13
  require "elastic_graph/graphql/aggregation/resolvers/count_detail"
13
14
  require "elastic_graph/graphql/decoded_cursor"
14
15
  require "elastic_graph/graphql/resolvers/resolvable_value"
16
+ require "elastic_graph/support/hash_util"
15
17
 
16
18
  module ElasticGraph
17
19
  class GraphQL
18
20
  module Aggregation
19
21
  module Resolvers
20
- class SubAggregations < ::Data.define(:schema_element_names, :sub_aggregations, :parent_queries, :sub_aggs_by_name, :field_path)
22
+ class SubAggregations < ::Data.define(:schema_element_names, :sub_aggregations, :parent_queries, :sub_aggs_by_agg_key, :field_path)
21
23
  def can_resolve?(field:, object:)
22
24
  true
23
25
  end
@@ -27,25 +29,26 @@ module ElasticGraph
27
29
  new_field_path = field_path + [path_segment]
28
30
  return with(field_path: new_field_path) unless field.type.elasticgraph_category == :nested_sub_aggregation_connection
29
31
 
30
- aggregation_name = path_segment.name_in_graphql_query
31
- sub_agg_query = sub_aggregations.fetch(aggregation_name).query
32
+ sub_agg_key = FieldPathEncoder.encode(new_field_path.map(&:name_in_graphql_query))
33
+ sub_agg_query = Support::HashUtil.verbose_fetch(sub_aggregations, sub_agg_key).query
32
34
 
33
35
  RelayConnectionBuilder.build_from_buckets(
34
36
  query: sub_agg_query,
35
37
  parent_queries: parent_queries,
36
38
  schema_element_names: schema_element_names,
37
39
  field_path: new_field_path
38
- ) { extract_buckets(aggregation_name, args) }
40
+ ) { extract_buckets(sub_agg_key, args) }
39
41
  end
40
42
 
41
43
  private
42
44
 
43
- def extract_buckets(aggregation_name, args)
45
+ def extract_buckets(aggregation_field_path, args)
44
46
  # When the client passes `first: 0`, we omit the sub-aggregation from the query body entirely,
45
- # and it wont' be in `sub_aggs_by_name`. Instead, we can just return an empty list of buckets.
47
+ # and it wont' be in `sub_aggs_by_agg_key`. Instead, we can just return an empty list of buckets.
46
48
  return [] if args[schema_element_names.first] == 0
47
49
 
48
- sub_agg = sub_aggs_by_name.fetch(Key.encode(parent_queries.map(&:name) + [aggregation_name]))
50
+ sub_agg_key = Key.encode(parent_queries.map(&:name) + [aggregation_field_path])
51
+ sub_agg = Support::HashUtil.verbose_fetch(sub_aggs_by_agg_key, sub_agg_key)
49
52
  meta = sub_agg.fetch("meta")
50
53
 
51
54
  # When the sub-aggregation node of the GraphQL query has a `filter` argument, the direct sub-aggregation returned by
@@ -62,6 +62,11 @@ module ElasticGraph
62
62
 
63
63
  def process_filter_hash(bool_node, filter_hash, field_path)
64
64
  filter_hash.each do |field_or_op, expression|
65
+ # `nil` filter predicates should be ignored, so we can safely `compact` them out.
66
+ # It also is simpler to handle them once here instead of the different branches
67
+ # below having to be aware of possible `nil` predicates.
68
+ expression = expression.compact if expression.is_a?(::Hash)
69
+
65
70
  case identify_expression_type(field_or_op, expression)
66
71
  when :empty
67
72
  # This is an "empty" filter predicate and we can ignore it.
@@ -86,7 +91,7 @@ module ElasticGraph
86
91
  end
87
92
 
88
93
  def identify_expression_type(field_or_op, expression)
89
- return :empty if expression.nil?
94
+ return :empty if expression.nil? || expression == {}
90
95
  return :not if field_or_op == schema_names.not
91
96
  return :list_any_filter if field_or_op == schema_names.any_satisfy
92
97
  return :all_of if field_or_op == schema_names.all_of
@@ -160,9 +165,7 @@ module ElasticGraph
160
165
  process_filter_hash(inner_node, filter, field_path.nested)
161
166
  end
162
167
 
163
- if sub_filter
164
- bool_node[:filter] << {nested: {path: field_path.from_root.join("."), query: sub_filter}}
165
- end
168
+ bool_node[:filter] << {nested: {path: field_path.from_root.join("."), query: sub_filter}}
166
169
  end
167
170
 
168
171
  # On a list-of-leaf-values field, `any_satisfy` doesn't _do_ anything: it just expresses
@@ -302,7 +305,7 @@ module ElasticGraph
302
305
  process_filter_hash(inner_node, expression, field_path)
303
306
  end
304
307
 
305
- bool_node[:filter] << sub_filter if sub_filter
308
+ bool_node[:filter] << sub_filter
306
309
  else
307
310
  process_filter_hash(bool_node, expression, field_path)
308
311
  end
@@ -33,7 +33,7 @@ module ElasticGraph
33
33
  [arg_name, args[schema_element_names.public_send(arg_name)]]
34
34
  end.compact
35
35
 
36
- graphql_impl = ::GraphQL::Pagination::ArrayConnection.new(nodes, context: context, **relay_args)
36
+ graphql_impl = ::GraphQL::Pagination::ArrayConnection.new(nodes || [], context: context, **relay_args)
37
37
  new(schema_element_names, graphql_impl)
38
38
  end
39
39
 
@@ -8,6 +8,7 @@
8
8
 
9
9
  require "elastic_graph/graphql/aggregation/resolvers/relay_connection_builder"
10
10
  require "elastic_graph/graphql/resolvers/relay_connection/search_response_adapter_builder"
11
+ require "elastic_graph/support/hash_util"
11
12
 
12
13
  module ElasticGraph
13
14
  class GraphQL
@@ -33,7 +34,7 @@ module ElasticGraph
33
34
  Aggregation::Resolvers::RelayConnectionBuilder.build_from_search_response(
34
35
  schema_element_names: schema_element_names,
35
36
  search_response: search_response,
36
- query: query.aggregations.fetch(agg_name)
37
+ query: Support::HashUtil.verbose_fetch(query.aggregations, agg_name)
37
38
  )
38
39
  end
39
40
  end
@@ -171,7 +171,6 @@ module ElasticGraph
171
171
  # @private
172
172
  def datastore_query_adapters
173
173
  @datastore_query_adapters ||= begin
174
- require "elastic_graph/graphql/aggregation/non_composite_grouping_adapter"
175
174
  require "elastic_graph/graphql/aggregation/query_adapter"
176
175
  require "elastic_graph/graphql/query_adapter/filters"
177
176
  require "elastic_graph/graphql/query_adapter/pagination"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elasticgraph-graphql
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.18.0.0
4
+ version: 0.18.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Myron Marston
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-08-27 00:00:00.000000000 Z
11
+ date: 2024-09-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubocop-factory_bot
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 1.39.0
61
+ version: 1.40.0
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 1.39.0
68
+ version: 1.40.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: steep
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -98,22 +98,22 @@ dependencies:
98
98
  name: flatware-rspec
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">="
101
+ - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 2.3.2
104
- - - "<"
103
+ version: '2.3'
104
+ - - ">="
105
105
  - !ruby/object:Gem::Version
106
- version: '3.0'
106
+ version: 2.3.3
107
107
  type: :development
108
108
  prerelease: false
109
109
  version_requirements: !ruby/object:Gem::Requirement
110
110
  requirements:
111
- - - ">="
111
+ - - "~>"
112
112
  - !ruby/object:Gem::Version
113
- version: 2.3.2
114
- - - "<"
113
+ version: '2.3'
114
+ - - ">="
115
115
  - !ruby/object:Gem::Version
116
- version: '3.0'
116
+ version: 2.3.3
117
117
  - !ruby/object:Gem::Dependency
118
118
  name: rspec
119
119
  requirement: !ruby/object:Gem::Requirement
@@ -132,16 +132,16 @@ dependencies:
132
132
  name: super_diff
133
133
  requirement: !ruby/object:Gem::Requirement
134
134
  requirements:
135
- - - ">="
135
+ - - "~>"
136
136
  - !ruby/object:Gem::Version
137
- version: 0.12.1
137
+ version: '0.12'
138
138
  type: :development
139
139
  prerelease: false
140
140
  version_requirements: !ruby/object:Gem::Requirement
141
141
  requirements:
142
- - - ">="
142
+ - - "~>"
143
143
  - !ruby/object:Gem::Version
144
- version: 0.12.1
144
+ version: '0.12'
145
145
  - !ruby/object:Gem::Dependency
146
146
  name: simplecov
147
147
  requirement: !ruby/object:Gem::Requirement
@@ -160,42 +160,30 @@ dependencies:
160
160
  name: simplecov-console
161
161
  requirement: !ruby/object:Gem::Requirement
162
162
  requirements:
163
- - - ">="
164
- - !ruby/object:Gem::Version
165
- version: 0.9.1
166
- - - "<"
163
+ - - "~>"
167
164
  - !ruby/object:Gem::Version
168
- version: '1.0'
165
+ version: '0.9'
169
166
  type: :development
170
167
  prerelease: false
171
168
  version_requirements: !ruby/object:Gem::Requirement
172
169
  requirements:
173
- - - ">="
174
- - !ruby/object:Gem::Version
175
- version: 0.9.1
176
- - - "<"
170
+ - - "~>"
177
171
  - !ruby/object:Gem::Version
178
- version: '1.0'
172
+ version: '0.9'
179
173
  - !ruby/object:Gem::Dependency
180
174
  name: httpx
181
175
  requirement: !ruby/object:Gem::Requirement
182
176
  requirements:
183
- - - ">="
184
- - !ruby/object:Gem::Version
185
- version: 1.2.6
186
- - - "<"
177
+ - - "~>"
187
178
  - !ruby/object:Gem::Version
188
- version: '2.0'
179
+ version: '1.3'
189
180
  type: :development
190
181
  prerelease: false
191
182
  version_requirements: !ruby/object:Gem::Requirement
192
183
  requirements:
193
- - - ">="
194
- - !ruby/object:Gem::Version
195
- version: 1.2.6
196
- - - "<"
184
+ - - "~>"
197
185
  - !ruby/object:Gem::Version
198
- version: '2.0'
186
+ version: '1.3'
199
187
  - !ruby/object:Gem::Dependency
200
188
  name: method_source
201
189
  requirement: !ruby/object:Gem::Requirement
@@ -228,22 +216,22 @@ dependencies:
228
216
  name: vcr
229
217
  requirement: !ruby/object:Gem::Requirement
230
218
  requirements:
219
+ - - "~>"
220
+ - !ruby/object:Gem::Version
221
+ version: '6.3'
231
222
  - - ">="
232
223
  - !ruby/object:Gem::Version
233
224
  version: 6.3.1
234
- - - "<"
235
- - !ruby/object:Gem::Version
236
- version: 7.0.0
237
225
  type: :development
238
226
  prerelease: false
239
227
  version_requirements: !ruby/object:Gem::Requirement
240
228
  requirements:
229
+ - - "~>"
230
+ - !ruby/object:Gem::Version
231
+ version: '6.3'
241
232
  - - ">="
242
233
  - !ruby/object:Gem::Version
243
234
  version: 6.3.1
244
- - - "<"
245
- - !ruby/object:Gem::Version
246
- version: 7.0.0
247
235
  - !ruby/object:Gem::Dependency
248
236
  name: factory_bot
249
237
  requirement: !ruby/object:Gem::Requirement
@@ -278,118 +266,112 @@ dependencies:
278
266
  requirements:
279
267
  - - '='
280
268
  - !ruby/object:Gem::Version
281
- version: 0.18.0.0
269
+ version: 0.18.0.2
282
270
  type: :runtime
283
271
  prerelease: false
284
272
  version_requirements: !ruby/object:Gem::Requirement
285
273
  requirements:
286
274
  - - '='
287
275
  - !ruby/object:Gem::Version
288
- version: 0.18.0.0
276
+ version: 0.18.0.2
289
277
  - !ruby/object:Gem::Dependency
290
278
  name: elasticgraph-schema_artifacts
291
279
  requirement: !ruby/object:Gem::Requirement
292
280
  requirements:
293
281
  - - '='
294
282
  - !ruby/object:Gem::Version
295
- version: 0.18.0.0
283
+ version: 0.18.0.2
296
284
  type: :runtime
297
285
  prerelease: false
298
286
  version_requirements: !ruby/object:Gem::Requirement
299
287
  requirements:
300
288
  - - '='
301
289
  - !ruby/object:Gem::Version
302
- version: 0.18.0.0
290
+ version: 0.18.0.2
303
291
  - !ruby/object:Gem::Dependency
304
292
  name: graphql
305
293
  requirement: !ruby/object:Gem::Requirement
306
294
  requirements:
307
- - - ">="
308
- - !ruby/object:Gem::Version
309
- version: 2.3.7
310
- - - "<"
295
+ - - "~>"
311
296
  - !ruby/object:Gem::Version
312
- version: '2.4'
297
+ version: 2.3.14
313
298
  type: :runtime
314
299
  prerelease: false
315
300
  version_requirements: !ruby/object:Gem::Requirement
316
301
  requirements:
317
- - - ">="
318
- - !ruby/object:Gem::Version
319
- version: 2.3.7
320
- - - "<"
302
+ - - "~>"
321
303
  - !ruby/object:Gem::Version
322
- version: '2.4'
304
+ version: 2.3.14
323
305
  - !ruby/object:Gem::Dependency
324
306
  name: elasticgraph-admin
325
307
  requirement: !ruby/object:Gem::Requirement
326
308
  requirements:
327
309
  - - '='
328
310
  - !ruby/object:Gem::Version
329
- version: 0.18.0.0
311
+ version: 0.18.0.2
330
312
  type: :development
331
313
  prerelease: false
332
314
  version_requirements: !ruby/object:Gem::Requirement
333
315
  requirements:
334
316
  - - '='
335
317
  - !ruby/object:Gem::Version
336
- version: 0.18.0.0
318
+ version: 0.18.0.2
337
319
  - !ruby/object:Gem::Dependency
338
320
  name: elasticgraph-elasticsearch
339
321
  requirement: !ruby/object:Gem::Requirement
340
322
  requirements:
341
323
  - - '='
342
324
  - !ruby/object:Gem::Version
343
- version: 0.18.0.0
325
+ version: 0.18.0.2
344
326
  type: :development
345
327
  prerelease: false
346
328
  version_requirements: !ruby/object:Gem::Requirement
347
329
  requirements:
348
330
  - - '='
349
331
  - !ruby/object:Gem::Version
350
- version: 0.18.0.0
332
+ version: 0.18.0.2
351
333
  - !ruby/object:Gem::Dependency
352
334
  name: elasticgraph-opensearch
353
335
  requirement: !ruby/object:Gem::Requirement
354
336
  requirements:
355
337
  - - '='
356
338
  - !ruby/object:Gem::Version
357
- version: 0.18.0.0
339
+ version: 0.18.0.2
358
340
  type: :development
359
341
  prerelease: false
360
342
  version_requirements: !ruby/object:Gem::Requirement
361
343
  requirements:
362
344
  - - '='
363
345
  - !ruby/object:Gem::Version
364
- version: 0.18.0.0
346
+ version: 0.18.0.2
365
347
  - !ruby/object:Gem::Dependency
366
348
  name: elasticgraph-indexer
367
349
  requirement: !ruby/object:Gem::Requirement
368
350
  requirements:
369
351
  - - '='
370
352
  - !ruby/object:Gem::Version
371
- version: 0.18.0.0
353
+ version: 0.18.0.2
372
354
  type: :development
373
355
  prerelease: false
374
356
  version_requirements: !ruby/object:Gem::Requirement
375
357
  requirements:
376
358
  - - '='
377
359
  - !ruby/object:Gem::Version
378
- version: 0.18.0.0
360
+ version: 0.18.0.2
379
361
  - !ruby/object:Gem::Dependency
380
362
  name: elasticgraph-schema_definition
381
363
  requirement: !ruby/object:Gem::Requirement
382
364
  requirements:
383
365
  - - '='
384
366
  - !ruby/object:Gem::Version
385
- version: 0.18.0.0
367
+ version: 0.18.0.2
386
368
  type: :development
387
369
  prerelease: false
388
370
  version_requirements: !ruby/object:Gem::Requirement
389
371
  requirements:
390
372
  - - '='
391
373
  - !ruby/object:Gem::Version
392
- version: 0.18.0.0
374
+ version: 0.18.0.2
393
375
  description:
394
376
  email:
395
377
  - myron@squareup.com