elasticgraph-graphql 0.18.0.0 → 0.18.0.2

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