elasticgraph-schema_definition 0.19.0.0.rc2 → 0.19.1.0

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: 566acd1285a0695abc958470fd5e44c3f899be795e8fe2d676d8248d36eadaed
4
- data.tar.gz: d8c11fcbadf68f590edd48bc98e7b71205b5b3c0d568ed472e2038327454b948
3
+ metadata.gz: 2bad8ee40e50f129a96e49bb037b85629e4fd447e85aec1c3ea2dc8aac1bf39b
4
+ data.tar.gz: aafa9a925ef1f34539655cf1328d26b563042b6f510e6956a669bcffb36f687c
5
5
  SHA512:
6
- metadata.gz: fae9efdac61ce3635aafd103ba90fad8f3752e8e36150e4099885ae92764f5bd16e5d0becbd97de75c99fc30a3d56840c0ba393fbaf3a7b6a30e4d9e06c46b4c
7
- data.tar.gz: 8bede22cfd83aa8fbf39b7a14b50967b9f1d97fa38039748788fe79675ffc827b9bf637a12328f4eda597c4cb8fa1fda6b93f2a0bb1bfe18d3a391184289a90a
6
+ metadata.gz: 42ab4e1236efe8d3abe27f3a362e738df0e9146f95fccb6019e74172ad03f898fb97af989cbbe01074ae16208f0ac16383afba4f465ec66defa73b622069b0d4
7
+ data.tar.gz: 389a20d94c06df1558b020e3a4c4779f82163519b58c1fa3a46c8d05dde469aa46e9a63fe797feb0a055ff1d4b37ac30cd803219ac509e284399f1359d5c5152
@@ -261,7 +261,7 @@ module ElasticGraph
261
261
  def deleted_type(name)
262
262
  @state.register_deleted_type(
263
263
  name,
264
- defined_at: caller_locations(1, 1).first, # : ::Thread::Backtrace::Location
264
+ defined_at: caller_locations(1, 1).to_a.first, # : ::Thread::Backtrace::Location
265
265
  defined_via: %(schema.deleted_type "#{name}")
266
266
  )
267
267
  nil
@@ -53,14 +53,16 @@ module ElasticGraph
53
53
 
54
54
  settings = DEFAULT_SETTINGS.merge(Support::HashUtil.flatten_and_stringify_keys(settings, prefix: "index"))
55
55
 
56
- super(name, [], settings, schema_def_state, indexed_type, [], nil)
57
-
58
- # `id` is the field Elasticsearch/OpenSearch use for routing by default:
59
- # https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-routing-field.html
60
- # By using it here, it will cause queries to pass a `routing` parameter when
61
- # searching with id filtering on an index that does not use custom shard routing, giving
62
- # us a nice efficiency boost.
63
- self.routing_field_path = public_field_path("id", explanation: "indexed types must have an `id` field")
56
+ super(name, [], settings, schema_def_state, indexed_type, nil, nil)
57
+
58
+ schema_def_state.after_user_definition_complete do
59
+ # `id` is the field Elasticsearch/OpenSearch use for routing by default:
60
+ # https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-routing-field.html
61
+ # By using it here, it will cause queries to pass a `routing` parameter when
62
+ # searching with id filtering on an index that does not use custom shard routing, giving
63
+ # us a nice efficiency boost.
64
+ self.routing_field_path = public_field_path("id", explanation: "indexed types must have an `id` field")
65
+ end
64
66
 
65
67
  yield self if block_given?
66
68
  end
@@ -120,23 +122,25 @@ module ElasticGraph
120
122
  # end
121
123
  # end
122
124
  def rollover(frequency, timestamp_field_path_name)
123
- timestamp_field_path = public_field_path(timestamp_field_path_name, explanation: "it is referenced as an index `rollover` field")
125
+ schema_def_state.after_user_definition_complete do
126
+ timestamp_field_path = public_field_path(timestamp_field_path_name, explanation: "it is referenced as an index `rollover` field")
124
127
 
125
- unless date_and_datetime_types.include?(timestamp_field_path.type.fully_unwrapped.name)
126
- date_or_datetime_description = date_and_datetime_types.map { |t| "`#{t}`" }.join(" or ")
127
- raise Errors::SchemaError, "rollover field `#{timestamp_field_path.full_description}` cannot be used for rollover since it is not a #{date_or_datetime_description} field."
128
- end
128
+ unless date_and_datetime_types.include?(timestamp_field_path.type.fully_unwrapped.name)
129
+ date_or_datetime_description = date_and_datetime_types.map { |t| "`#{t}`" }.join(" or ")
130
+ raise Errors::SchemaError, "rollover field `#{timestamp_field_path.full_description}` cannot be used for rollover since it is not a #{date_or_datetime_description} field."
131
+ end
129
132
 
130
- if timestamp_field_path.type.list?
131
- raise Errors::SchemaError, "rollover field `#{timestamp_field_path.full_description}` cannot be used for rollover since it is a list field."
132
- end
133
+ if timestamp_field_path.type.list?
134
+ raise Errors::SchemaError, "rollover field `#{timestamp_field_path.full_description}` cannot be used for rollover since it is a list field."
135
+ end
133
136
 
134
- timestamp_field_path.path_parts.each { |f| f.json_schema nullable: false }
137
+ timestamp_field_path.path_parts.each { |f| f.json_schema nullable: false }
135
138
 
136
- self.rollover_config = RolloverConfig.new(
137
- frequency: frequency,
138
- timestamp_field_path: timestamp_field_path
139
- )
139
+ self.rollover_config = RolloverConfig.new(
140
+ frequency: frequency,
141
+ timestamp_field_path: timestamp_field_path
142
+ )
143
+ end
140
144
  end
141
145
 
142
146
  # Configures the index to [route documents to shards](https://www.elastic.co/guide/en/elasticsearch/reference/8.15/mapping-routing-field.html)
@@ -169,17 +173,19 @@ module ElasticGraph
169
173
  # end
170
174
  # end
171
175
  def route_with(routing_field_path_name)
172
- routing_field_path = public_field_path(routing_field_path_name, explanation: "it is referenced as an index `route_with` field")
176
+ schema_def_state.after_user_definition_complete do
177
+ routing_field_path = public_field_path(routing_field_path_name, explanation: "it is referenced as an index `route_with` field")
173
178
 
174
- unless routing_field_path.type.leaf?
175
- raise Errors::SchemaError, "shard routing field `#{routing_field_path.full_description}` cannot be used for routing since it is not a leaf field."
176
- end
179
+ unless routing_field_path.type.leaf?
180
+ raise Errors::SchemaError, "shard routing field `#{routing_field_path.full_description}` cannot be used for routing since it is not a leaf field."
181
+ end
177
182
 
178
- self.routing_field_path = routing_field_path
183
+ self.routing_field_path = routing_field_path
179
184
 
180
- routing_field_path.path_parts[0..-2].each { |f| f.json_schema nullable: false }
181
- routing_field_path.last_part.json_schema nullable: false, pattern: HAS_NON_WHITE_SPACE_REGEX
182
- indexed_type.append_to_documentation "For more performant queries on this type, please filter on `#{routing_field_path_name}` if possible."
185
+ routing_field_path.path_parts[0..-2].each { |f| f.json_schema nullable: false }
186
+ routing_field_path.last_part.json_schema nullable: false, pattern: HAS_NON_WHITE_SPACE_REGEX
187
+ indexed_type.append_to_documentation "For more performant queries on this type, please filter on `#{routing_field_path_name}` if possible."
188
+ end
183
189
  end
184
190
 
185
191
  # @see #route_with
@@ -286,7 +292,7 @@ module ElasticGraph
286
292
 
287
293
  def public_field_path(public_path_string, explanation:)
288
294
  parent_is_not_list = ->(parent_field) { !parent_field.type.list? }
289
- resolver = SchemaElements::FieldPath::Resolver.new
295
+ resolver = schema_def_state.field_path_resolver
290
296
  resolved_path = resolver.resolve_public_path(indexed_type, public_path_string, &parent_is_not_list)
291
297
  return resolved_path if resolved_path
292
298
 
@@ -11,12 +11,11 @@ module ElasticGraph
11
11
  module Indexing
12
12
  # @private
13
13
  class RelationshipResolver
14
- def initialize(schema_def_state:, object_type:, relationship_name:, sourced_fields:, field_path_resolver:)
14
+ def initialize(schema_def_state:, object_type:, relationship_name:, sourced_fields:)
15
15
  @schema_def_state = schema_def_state
16
16
  @object_type = object_type
17
17
  @relationship_name = relationship_name
18
18
  @sourced_fields = sourced_fields
19
- @field_path_resolver = field_path_resolver
20
19
  end
21
20
 
22
21
  def resolve
@@ -51,8 +50,8 @@ module ElasticGraph
51
50
 
52
51
  private
53
52
 
54
- # @dynamic schema_def_state, object_type, relationship_name, sourced_fields, field_path_resolver
55
- attr_reader :schema_def_state, :object_type, :relationship_name, :sourced_fields, :field_path_resolver
53
+ # @dynamic schema_def_state, object_type, relationship_name, sourced_fields
54
+ attr_reader :schema_def_state, :object_type, :relationship_name, :sourced_fields
56
55
 
57
56
  # Helper method for building the prefix of relationship-related error messages.
58
57
  def relationship_error_prefix
@@ -67,7 +66,7 @@ module ElasticGraph
67
66
  end
68
67
 
69
68
  def validate_foreign_key(foreign_key_parent_type, relation_metadata)
70
- foreign_key_field = field_path_resolver.resolve_public_path(foreign_key_parent_type, relation_metadata.foreign_key) { true }
69
+ foreign_key_field = schema_def_state.field_path_resolver.resolve_public_path(foreign_key_parent_type, relation_metadata.foreign_key) { true }
71
70
  # If its an inbound foreign key, verify that the foreign key exists on the related type.
72
71
  # Note: we don't verify this for outbound foreign keys, because when we define a relationship with an outbound foreign
73
72
  # key, we automatically define an indexing only field for the foreign key (since it exists on the same type). We don't
@@ -50,7 +50,8 @@ module ElasticGraph
50
50
  derived_type_customizations_for_all_types << customization_block
51
51
  else
52
52
  type_names.each do |t|
53
- derived_type_customizations_by_name[t.to_s] << customization_block
53
+ derived_type_customizations = derived_type_customizations_by_name[t.to_s] # : ::Array[^(::ElasticGraph::SchemaDefinition::_Type) -> void]
54
+ derived_type_customizations << customization_block
54
55
  end
55
56
  end
56
57
  end
@@ -75,21 +76,23 @@ module ElasticGraph
75
76
  # end
76
77
  # end
77
78
  def customize_derived_type_fields(type_name, *field_names, &customization_block)
78
- customizations_by_field = derived_field_customizations_by_type_and_field_name[type_name]
79
+ customizations_by_field = derived_field_customizations_by_type_and_field_name[type_name] # : ::Hash[::String, ::Array[^(::ElasticGraph::SchemaDefinition::SchemaElements::Field) -> void]]
79
80
 
80
81
  field_names.each do |field_name|
81
- customizations_by_field[field_name] << customization_block
82
+ customizations = customizations_by_field[field_name] # : ::Array[^(::ElasticGraph::SchemaDefinition::SchemaElements::Field) -> void]
83
+ customizations << customization_block
82
84
  end
83
85
  end
84
86
 
85
87
  # @private
86
88
  def derived_type_customizations_for_type(type)
87
- derived_type_customizations_by_name[type.name] + derived_type_customizations_for_all_types
89
+ derived_type_customizations = derived_type_customizations_by_name[type.name] # : ::Array[^(::ElasticGraph::SchemaDefinition::_Type) -> void]
90
+ derived_type_customizations + derived_type_customizations_for_all_types
88
91
  end
89
92
 
90
93
  # @private
91
94
  def derived_field_customizations_by_name_for_type(type)
92
- derived_field_customizations_by_type_and_field_name[type.name]
95
+ derived_field_customizations_by_type_and_field_name[type.name] # : ::Hash[::String, ::Array[^(SchemaElements::Field) -> void]]
93
96
  end
94
97
 
95
98
  # @private
@@ -75,8 +75,9 @@ module ElasticGraph
75
75
  fields_by_name.merge(yield subtype) do |field_name, def1, def2|
76
76
  if (def1.name_in_index == def2.name_in_index && def1.resolve_mapping != def2.resolve_mapping) || (def1.type.unwrap_non_null != def2.type.unwrap_non_null)
77
77
  def_strings = resolved_subtypes.each_with_object([]) do |st, defs|
78
- field = st.graphql_fields_by_name[field_name]
79
- defs << "on #{st.name}:\n#{field.to_sdl.strip} mapping: #{field.resolve_mapping.inspect}" if st.graphql_fields_by_name.key?(field_name)
78
+ if (field = st.graphql_fields_by_name[field_name])
79
+ defs << "on #{st.name}:\n#{field.to_sdl.strip} mapping: #{field.resolve_mapping.inspect}"
80
+ end
80
81
  end
81
82
 
82
83
  raise Errors::SchemaError,
@@ -43,7 +43,8 @@ module ElasticGraph
43
43
  def implements(*interface_names)
44
44
  interface_refs = interface_names.map do |interface_name|
45
45
  schema_def_state.type_ref(interface_name).to_final_form.tap do |interface_ref|
46
- schema_def_state.implementations_by_interface_ref[interface_ref] << self
46
+ implementations = schema_def_state.implementations_by_interface_ref[interface_ref] # : ::Set[SchemaElements::TypeWithSubfields]
47
+ implementations << self
47
48
  end
48
49
  end
49
50
 
@@ -109,6 +109,7 @@ module ElasticGraph
109
109
  def after_initialize
110
110
  # Record that we are now generating results so that caching can kick in.
111
111
  state.user_definition_complete = true
112
+ state.user_definition_complete_callbacks.each(&:call)
112
113
  end
113
114
 
114
115
  def json_schema_with_metadata_merger
@@ -179,9 +180,6 @@ module ElasticGraph
179
180
  # Builds a map, keyed by object type name, of extra `update_targets` that have been generated
180
181
  # from any fields that use `sourced_from` on other types.
181
182
  def identify_extra_update_targets_by_object_type_name
182
- # The field_path_resolver memoizes some calculations, and we want the same instance to be
183
- # used by all UpdateTargetBuilders to maximize its effectiveness.
184
- field_path_resolver = SchemaElements::FieldPath::Resolver.new
185
183
  sourced_field_errors = [] # : ::Array[::String]
186
184
  relationship_errors = [] # : ::Array[::String]
187
185
 
@@ -209,8 +207,7 @@ module ElasticGraph
209
207
  schema_def_state: state,
210
208
  object_type: object_type,
211
209
  relationship_name: relationship_name,
212
- sourced_fields: sourced_fields,
213
- field_path_resolver: field_path_resolver
210
+ sourced_fields: sourced_fields
214
211
  )
215
212
 
216
213
  resolved_relationship, relationship_error = relationship_resolver.resolve
@@ -221,7 +218,7 @@ module ElasticGraph
221
218
  object_type: object_type,
222
219
  resolved_relationship: resolved_relationship,
223
220
  sourced_fields: sourced_fields,
224
- field_path_resolver: field_path_resolver
221
+ field_path_resolver: state.field_path_resolver
225
222
  )
226
223
 
227
224
  update_target, errors = update_target_resolver.resolve
@@ -329,7 +326,7 @@ module ElasticGraph
329
326
 
330
327
  def recursively_add_referenced_types_to(source_type_ref, references_cache)
331
328
  return unless (source_type = source_type_ref.as_object_type)
332
- references_set = references_cache[source_type_ref.name]
329
+ references_set = references_cache[source_type_ref.name] # : ::Set[::String]
333
330
 
334
331
  # Recursive references are allowed only when its a relation, so skip that case.
335
332
  source_type.graphql_fields_by_name.values.reject { |f| f.relationship }.each do |field|
@@ -339,7 +336,8 @@ module ElasticGraph
339
336
  recursively_add_referenced_types_to(field_type, references_cache)
340
337
  end
341
338
 
342
- references_set.merge(references_cache[field_type.name])
339
+ field_type_references_set = references_cache[field_type.name] # : ::Set[::String]
340
+ references_set.merge(field_type_references_set)
343
341
  end
344
342
  end
345
343
 
@@ -504,7 +504,8 @@ module ElasticGraph
504
504
 
505
505
  schema_def_api.factory.new_aggregated_values_type_for_index_leaf_type "NonNumeric" do |t|
506
506
  t.documentation "A return type used from aggregations to provided aggregated values over non-numeric fields."
507
- end.tap { |t| schema_def_api.state.register_object_interface_or_union_type(t) }
507
+ schema_def_api.state.register_object_interface_or_union_type(t)
508
+ end
508
509
 
509
510
  register_framework_object_type "AggregationCountDetail" do |t|
510
511
  t.documentation "Provides detail about an aggregation `#{names.count}`."
@@ -29,7 +29,8 @@ module ElasticGraph
29
29
 
30
30
  # Returns the name that should be used for the given `type_name` and `value_name`.
31
31
  def name_for(type_name, value_name)
32
- @used_value_names_by_type_name[type_name] << value_name
32
+ used_value_names = @used_value_names_by_type_name[type_name] # : ::Array[::String]
33
+ used_value_names << value_name
33
34
  overrides_by_type_name.dig(type_name, value_name) || value_name
34
35
  end
35
36
 
@@ -475,7 +475,7 @@ module ElasticGraph
475
475
  parent_type.name,
476
476
  from: old_name,
477
477
  to: name,
478
- defined_at: caller_locations(1, 1).first, # : ::Thread::Backtrace::Location
478
+ defined_at: caller_locations(1, 1).to_a.first, # : ::Thread::Backtrace::Location
479
479
  defined_via: %(field.renamed_from "#{old_name}")
480
480
  )
481
481
  end
@@ -51,13 +51,17 @@ module ElasticGraph
51
51
 
52
52
  # Responsible for resolving a particular field path (given as a string) into a `FieldPath` object.
53
53
  #
54
- # Important: this class optimizes performance by memoizing some things based on the current state
55
- # of the ElasticGraph schema. It's intended to be used AFTER the schema is fully defined (e.g.
56
- # as part of dumping schema artifacts). Using it before the schema has fully been defined requires
57
- # that you discard the instance after using it, as it won't be aware of additions to the schema
58
- # and may yield inaccurate results.
54
+ # Cannot be instantiated until the user has finished defining the schema.
55
+ # If we allowed it to be used before then, it creates a situation where the order of definition matters.
56
+ # In addition, this class optimizes performance by memoizing some things based on the current state, and
57
+ # if the state is updated after an instance is created, inaccurate results could be produced.
59
58
  class Resolver
60
- def initialize
59
+ def initialize(state)
60
+ unless state.user_definition_complete
61
+ raise Errors::SchemaError,
62
+ "A `FieldPath::Resolver` cannot be created before the user definition of the schema is complete."
63
+ end
64
+
61
65
  @indexing_fields_by_public_name_by_type = ::Hash.new do |hash, type|
62
66
  hash[type] = type
63
67
  .indexing_fields_by_name_in_index
@@ -140,7 +140,8 @@ module ElasticGraph
140
140
  def routing_value_source_for_index(index)
141
141
  return nil unless index.uses_custom_routing?
142
142
 
143
- @equivalent_field_paths_by_local_path.fetch(index.routing_field_path.path) do |local_need|
143
+ index_routing_field_path = index.routing_field_path # : FieldPath
144
+ @equivalent_field_paths_by_local_path.fetch(index_routing_field_path.path) do |local_need|
144
145
  yield local_need
145
146
  end
146
147
  end
@@ -191,11 +192,15 @@ module ElasticGraph
191
192
 
192
193
  # @private
193
194
  def runtime_metadata
194
- field_path_resolver = SchemaElements::FieldPath::Resolver.new
195
195
  resolved_related_type = (_ = related_type.unwrap_list.as_object_type) # : indexableType
196
- foreign_key_nested_paths = field_path_resolver.determine_nested_paths(resolved_related_type, @foreign_key)
196
+ foreign_key_nested_paths = schema_def_state.field_path_resolver.determine_nested_paths(resolved_related_type, @foreign_key)
197
197
  foreign_key_nested_paths ||= [] # : ::Array[::String]
198
- SchemaArtifacts::RuntimeMetadata::Relation.new(foreign_key: @foreign_key, direction: @direction, additional_filter: @additional_filter, foreign_key_nested_paths: foreign_key_nested_paths)
198
+ SchemaArtifacts::RuntimeMetadata::Relation.new(
199
+ foreign_key: @foreign_key,
200
+ direction: @direction,
201
+ additional_filter: @additional_filter,
202
+ foreign_key_nested_paths: foreign_key_nested_paths
203
+ )
199
204
  end
200
205
 
201
206
  private
@@ -239,7 +239,7 @@ module ElasticGraph
239
239
  schema_def_state.register_deleted_field(
240
240
  name,
241
241
  field_name,
242
- defined_at: caller_locations(2, 1).first, # : ::Thread::Backtrace::Location
242
+ defined_at: caller_locations(2, 1).to_a.first, # : ::Thread::Backtrace::Location
243
243
  defined_via: %(type.deleted_field "#{field_name}")
244
244
  )
245
245
  end
@@ -263,7 +263,7 @@ module ElasticGraph
263
263
  schema_def_state.register_renamed_type(
264
264
  name,
265
265
  from: old_name,
266
- defined_at: caller_locations(2, 1).first, # : ::Thread::Backtrace::Location
266
+ defined_at: caller_locations(2, 1).to_a.first, # : ::Thread::Backtrace::Location
267
267
  defined_via: %(type.renamed_from "#{old_name}")
268
268
  )
269
269
  end
@@ -11,6 +11,7 @@ require "elastic_graph/errors"
11
11
  require "elastic_graph/schema_definition/factory"
12
12
  require "elastic_graph/schema_definition/mixins/has_readable_to_s_and_inspect"
13
13
  require "elastic_graph/schema_definition/schema_elements/enum_value_namer"
14
+ require "elastic_graph/schema_definition/schema_elements/field_path"
14
15
  require "elastic_graph/schema_definition/schema_elements/type_namer"
15
16
  require "elastic_graph/schema_definition/schema_elements/sub_aggregation_path"
16
17
 
@@ -44,6 +45,7 @@ module ElasticGraph
44
45
  :initially_registered_built_in_types,
45
46
  :built_in_types_customization_blocks,
46
47
  :user_definition_complete,
48
+ :user_definition_complete_callbacks,
47
49
  :sub_aggregation_paths_by_type,
48
50
  :type_refs_by_name,
49
51
  :output,
@@ -86,6 +88,7 @@ module ElasticGraph
86
88
  initially_registered_built_in_types: ::Set.new,
87
89
  built_in_types_customization_blocks: [],
88
90
  user_definition_complete: false,
91
+ user_definition_complete_callbacks: [],
89
92
  sub_aggregation_paths_by_type: {},
90
93
  type_refs_by_name: {},
91
94
  type_namer: SchemaElements::TypeNamer.new(
@@ -139,7 +142,8 @@ module ElasticGraph
139
142
  end
140
143
 
141
144
  def register_renamed_field(type_name, from:, to:, defined_at:, defined_via:)
142
- renamed_fields_by_type_name_and_old_field_name[type_name][from] = factory.new_deprecated_element(
145
+ renamed_fields_by_old_field_name = renamed_fields_by_type_name_and_old_field_name[type_name] # : ::Hash[::String, SchemaElements::DeprecatedElement]
146
+ renamed_fields_by_old_field_name[from] = factory.new_deprecated_element(
143
147
  to,
144
148
  defined_at: defined_at,
145
149
  defined_via: defined_via
@@ -147,7 +151,8 @@ module ElasticGraph
147
151
  end
148
152
 
149
153
  def register_deleted_field(type_name, field_name, defined_at:, defined_via:)
150
- deleted_fields_by_type_name_and_old_field_name[type_name][field_name] = factory.new_deprecated_element(
154
+ deleted_fields_by_old_field_name = deleted_fields_by_type_name_and_old_field_name[type_name] # : ::Hash[::String, SchemaElements::DeprecatedElement]
155
+ deleted_fields_by_old_field_name[field_name] = factory.new_deprecated_element(
151
156
  field_name,
152
157
  defined_at: defined_at,
153
158
  defined_via: defined_via
@@ -189,6 +194,14 @@ module ElasticGraph
189
194
  end
190
195
  end
191
196
 
197
+ def after_user_definition_complete(&block)
198
+ user_definition_complete_callbacks << block
199
+ end
200
+
201
+ def field_path_resolver
202
+ @field_path_resolver ||= SchemaElements::FieldPath::Resolver.new(self)
203
+ end
204
+
192
205
  private
193
206
 
194
207
  RESERVED_TYPE_NAMES = [EVENT_ENVELOPE_JSON_SCHEMA_NAME].to_set
metadata CHANGED
@@ -1,323 +1,101 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elasticgraph-schema_definition
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.19.0.0.rc2
4
+ version: 0.19.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Myron Marston
8
8
  - Ben VandenBos
9
9
  - Block Engineering
10
- autorequire:
11
- bindir: exe
10
+ autorequire:
11
+ bindir: bin
12
12
  cert_chain: []
13
- date: 2024-12-03 00:00:00.000000000 Z
13
+ date: 2025-02-06 00:00:00.000000000 Z
14
14
  dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: rubocop-factory_bot
17
- requirement: !ruby/object:Gem::Requirement
18
- requirements:
19
- - - "~>"
20
- - !ruby/object:Gem::Version
21
- version: '2.26'
22
- type: :development
23
- prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- requirements:
26
- - - "~>"
27
- - !ruby/object:Gem::Version
28
- version: '2.26'
29
- - !ruby/object:Gem::Dependency
30
- name: rubocop-rake
31
- requirement: !ruby/object:Gem::Requirement
32
- requirements:
33
- - - "~>"
34
- - !ruby/object:Gem::Version
35
- version: '0.6'
36
- type: :development
37
- prerelease: false
38
- version_requirements: !ruby/object:Gem::Requirement
39
- requirements:
40
- - - "~>"
41
- - !ruby/object:Gem::Version
42
- version: '0.6'
43
- - !ruby/object:Gem::Dependency
44
- name: rubocop-rspec
45
- requirement: !ruby/object:Gem::Requirement
46
- requirements:
47
- - - "~>"
48
- - !ruby/object:Gem::Version
49
- version: '3.1'
50
- type: :development
51
- prerelease: false
52
- version_requirements: !ruby/object:Gem::Requirement
53
- requirements:
54
- - - "~>"
55
- - !ruby/object:Gem::Version
56
- version: '3.1'
57
- - !ruby/object:Gem::Dependency
58
- name: standard
59
- requirement: !ruby/object:Gem::Requirement
60
- requirements:
61
- - - "~>"
62
- - !ruby/object:Gem::Version
63
- version: 1.41.0
64
- type: :development
65
- prerelease: false
66
- version_requirements: !ruby/object:Gem::Requirement
67
- requirements:
68
- - - "~>"
69
- - !ruby/object:Gem::Version
70
- version: 1.41.0
71
- - !ruby/object:Gem::Dependency
72
- name: steep
73
- requirement: !ruby/object:Gem::Requirement
74
- requirements:
75
- - - "~>"
76
- - !ruby/object:Gem::Version
77
- version: '1.8'
78
- type: :development
79
- prerelease: false
80
- version_requirements: !ruby/object:Gem::Requirement
81
- requirements:
82
- - - "~>"
83
- - !ruby/object:Gem::Version
84
- version: '1.8'
85
- - !ruby/object:Gem::Dependency
86
- name: coderay
87
- requirement: !ruby/object:Gem::Requirement
88
- requirements:
89
- - - "~>"
90
- - !ruby/object:Gem::Version
91
- version: '1.1'
92
- type: :development
93
- prerelease: false
94
- version_requirements: !ruby/object:Gem::Requirement
95
- requirements:
96
- - - "~>"
97
- - !ruby/object:Gem::Version
98
- version: '1.1'
99
- - !ruby/object:Gem::Dependency
100
- name: flatware-rspec
101
- requirement: !ruby/object:Gem::Requirement
102
- requirements:
103
- - - "~>"
104
- - !ruby/object:Gem::Version
105
- version: '2.3'
106
- - - ">="
107
- - !ruby/object:Gem::Version
108
- version: 2.3.3
109
- type: :development
110
- prerelease: false
111
- version_requirements: !ruby/object:Gem::Requirement
112
- requirements:
113
- - - "~>"
114
- - !ruby/object:Gem::Version
115
- version: '2.3'
116
- - - ">="
117
- - !ruby/object:Gem::Version
118
- version: 2.3.3
119
- - !ruby/object:Gem::Dependency
120
- name: rspec
121
- requirement: !ruby/object:Gem::Requirement
122
- requirements:
123
- - - "~>"
124
- - !ruby/object:Gem::Version
125
- version: '3.13'
126
- type: :development
127
- prerelease: false
128
- version_requirements: !ruby/object:Gem::Requirement
129
- requirements:
130
- - - "~>"
131
- - !ruby/object:Gem::Version
132
- version: '3.13'
133
- - !ruby/object:Gem::Dependency
134
- name: super_diff
135
- requirement: !ruby/object:Gem::Requirement
136
- requirements:
137
- - - "~>"
138
- - !ruby/object:Gem::Version
139
- version: '0.13'
140
- type: :development
141
- prerelease: false
142
- version_requirements: !ruby/object:Gem::Requirement
143
- requirements:
144
- - - "~>"
145
- - !ruby/object:Gem::Version
146
- version: '0.13'
147
- - !ruby/object:Gem::Dependency
148
- name: simplecov
149
- requirement: !ruby/object:Gem::Requirement
150
- requirements:
151
- - - "~>"
152
- - !ruby/object:Gem::Version
153
- version: '0.22'
154
- type: :development
155
- prerelease: false
156
- version_requirements: !ruby/object:Gem::Requirement
157
- requirements:
158
- - - "~>"
159
- - !ruby/object:Gem::Version
160
- version: '0.22'
161
- - !ruby/object:Gem::Dependency
162
- name: simplecov-console
163
- requirement: !ruby/object:Gem::Requirement
164
- requirements:
165
- - - "~>"
166
- - !ruby/object:Gem::Version
167
- version: '0.9'
168
- type: :development
169
- prerelease: false
170
- version_requirements: !ruby/object:Gem::Requirement
171
- requirements:
172
- - - "~>"
173
- - !ruby/object:Gem::Version
174
- version: '0.9'
175
- - !ruby/object:Gem::Dependency
176
- name: httpx
177
- requirement: !ruby/object:Gem::Requirement
178
- requirements:
179
- - - "~>"
180
- - !ruby/object:Gem::Version
181
- version: '1.3'
182
- type: :development
183
- prerelease: false
184
- version_requirements: !ruby/object:Gem::Requirement
185
- requirements:
186
- - - "~>"
187
- - !ruby/object:Gem::Version
188
- version: '1.3'
189
- - !ruby/object:Gem::Dependency
190
- name: method_source
191
- requirement: !ruby/object:Gem::Requirement
192
- requirements:
193
- - - "~>"
194
- - !ruby/object:Gem::Version
195
- version: '1.1'
196
- type: :development
197
- prerelease: false
198
- version_requirements: !ruby/object:Gem::Requirement
199
- requirements:
200
- - - "~>"
201
- - !ruby/object:Gem::Version
202
- version: '1.1'
203
- - !ruby/object:Gem::Dependency
204
- name: rspec-retry
205
- requirement: !ruby/object:Gem::Requirement
206
- requirements:
207
- - - "~>"
208
- - !ruby/object:Gem::Version
209
- version: '0.6'
210
- type: :development
211
- prerelease: false
212
- version_requirements: !ruby/object:Gem::Requirement
213
- requirements:
214
- - - "~>"
215
- - !ruby/object:Gem::Version
216
- version: '0.6'
217
- - !ruby/object:Gem::Dependency
218
- name: vcr
219
- requirement: !ruby/object:Gem::Requirement
220
- requirements:
221
- - - "~>"
222
- - !ruby/object:Gem::Version
223
- version: '6.3'
224
- - - ">="
225
- - !ruby/object:Gem::Version
226
- version: 6.3.1
227
- type: :development
228
- prerelease: false
229
- version_requirements: !ruby/object:Gem::Requirement
230
- requirements:
231
- - - "~>"
232
- - !ruby/object:Gem::Version
233
- version: '6.3'
234
- - - ">="
235
- - !ruby/object:Gem::Version
236
- version: 6.3.1
237
15
  - !ruby/object:Gem::Dependency
238
16
  name: elasticgraph-graphql
239
17
  requirement: !ruby/object:Gem::Requirement
240
18
  requirements:
241
19
  - - '='
242
20
  - !ruby/object:Gem::Version
243
- version: 0.19.0.0.rc2
21
+ version: 0.19.1.0
244
22
  type: :runtime
245
23
  prerelease: false
246
24
  version_requirements: !ruby/object:Gem::Requirement
247
25
  requirements:
248
26
  - - '='
249
27
  - !ruby/object:Gem::Version
250
- version: 0.19.0.0.rc2
28
+ version: 0.19.1.0
251
29
  - !ruby/object:Gem::Dependency
252
30
  name: elasticgraph-indexer
253
31
  requirement: !ruby/object:Gem::Requirement
254
32
  requirements:
255
33
  - - '='
256
34
  - !ruby/object:Gem::Version
257
- version: 0.19.0.0.rc2
35
+ version: 0.19.1.0
258
36
  type: :runtime
259
37
  prerelease: false
260
38
  version_requirements: !ruby/object:Gem::Requirement
261
39
  requirements:
262
40
  - - '='
263
41
  - !ruby/object:Gem::Version
264
- version: 0.19.0.0.rc2
42
+ version: 0.19.1.0
265
43
  - !ruby/object:Gem::Dependency
266
44
  name: elasticgraph-json_schema
267
45
  requirement: !ruby/object:Gem::Requirement
268
46
  requirements:
269
47
  - - '='
270
48
  - !ruby/object:Gem::Version
271
- version: 0.19.0.0.rc2
49
+ version: 0.19.1.0
272
50
  type: :runtime
273
51
  prerelease: false
274
52
  version_requirements: !ruby/object:Gem::Requirement
275
53
  requirements:
276
54
  - - '='
277
55
  - !ruby/object:Gem::Version
278
- version: 0.19.0.0.rc2
56
+ version: 0.19.1.0
279
57
  - !ruby/object:Gem::Dependency
280
58
  name: elasticgraph-schema_artifacts
281
59
  requirement: !ruby/object:Gem::Requirement
282
60
  requirements:
283
61
  - - '='
284
62
  - !ruby/object:Gem::Version
285
- version: 0.19.0.0.rc2
63
+ version: 0.19.1.0
286
64
  type: :runtime
287
65
  prerelease: false
288
66
  version_requirements: !ruby/object:Gem::Requirement
289
67
  requirements:
290
68
  - - '='
291
69
  - !ruby/object:Gem::Version
292
- version: 0.19.0.0.rc2
70
+ version: 0.19.1.0
293
71
  - !ruby/object:Gem::Dependency
294
72
  name: elasticgraph-support
295
73
  requirement: !ruby/object:Gem::Requirement
296
74
  requirements:
297
75
  - - '='
298
76
  - !ruby/object:Gem::Version
299
- version: 0.19.0.0.rc2
77
+ version: 0.19.1.0
300
78
  type: :runtime
301
79
  prerelease: false
302
80
  version_requirements: !ruby/object:Gem::Requirement
303
81
  requirements:
304
82
  - - '='
305
83
  - !ruby/object:Gem::Version
306
- version: 0.19.0.0.rc2
84
+ version: 0.19.1.0
307
85
  - !ruby/object:Gem::Dependency
308
86
  name: graphql
309
87
  requirement: !ruby/object:Gem::Requirement
310
88
  requirements:
311
89
  - - "~>"
312
90
  - !ruby/object:Gem::Version
313
- version: 2.4.5
91
+ version: 2.4.8
314
92
  type: :runtime
315
93
  prerelease: false
316
94
  version_requirements: !ruby/object:Gem::Requirement
317
95
  requirements:
318
96
  - - "~>"
319
97
  - !ruby/object:Gem::Version
320
- version: 2.4.5
98
+ version: 2.4.8
321
99
  - !ruby/object:Gem::Dependency
322
100
  name: rake
323
101
  requirement: !ruby/object:Gem::Requirement
@@ -338,57 +116,57 @@ dependencies:
338
116
  requirements:
339
117
  - - '='
340
118
  - !ruby/object:Gem::Version
341
- version: 0.19.0.0.rc2
119
+ version: 0.19.1.0
342
120
  type: :development
343
121
  prerelease: false
344
122
  version_requirements: !ruby/object:Gem::Requirement
345
123
  requirements:
346
124
  - - '='
347
125
  - !ruby/object:Gem::Version
348
- version: 0.19.0.0.rc2
126
+ version: 0.19.1.0
349
127
  - !ruby/object:Gem::Dependency
350
128
  name: elasticgraph-datastore_core
351
129
  requirement: !ruby/object:Gem::Requirement
352
130
  requirements:
353
131
  - - '='
354
132
  - !ruby/object:Gem::Version
355
- version: 0.19.0.0.rc2
133
+ version: 0.19.1.0
356
134
  type: :development
357
135
  prerelease: false
358
136
  version_requirements: !ruby/object:Gem::Requirement
359
137
  requirements:
360
138
  - - '='
361
139
  - !ruby/object:Gem::Version
362
- version: 0.19.0.0.rc2
140
+ version: 0.19.1.0
363
141
  - !ruby/object:Gem::Dependency
364
142
  name: elasticgraph-elasticsearch
365
143
  requirement: !ruby/object:Gem::Requirement
366
144
  requirements:
367
145
  - - '='
368
146
  - !ruby/object:Gem::Version
369
- version: 0.19.0.0.rc2
147
+ version: 0.19.1.0
370
148
  type: :development
371
149
  prerelease: false
372
150
  version_requirements: !ruby/object:Gem::Requirement
373
151
  requirements:
374
152
  - - '='
375
153
  - !ruby/object:Gem::Version
376
- version: 0.19.0.0.rc2
154
+ version: 0.19.1.0
377
155
  - !ruby/object:Gem::Dependency
378
156
  name: elasticgraph-opensearch
379
157
  requirement: !ruby/object:Gem::Requirement
380
158
  requirements:
381
159
  - - '='
382
160
  - !ruby/object:Gem::Version
383
- version: 0.19.0.0.rc2
161
+ version: 0.19.1.0
384
162
  type: :development
385
163
  prerelease: false
386
164
  version_requirements: !ruby/object:Gem::Requirement
387
165
  requirements:
388
166
  - - '='
389
167
  - !ruby/object:Gem::Version
390
- version: 0.19.0.0.rc2
391
- description:
168
+ version: 0.19.1.0
169
+ description:
392
170
  email:
393
171
  - myron@squareup.com
394
172
  executables: []
@@ -397,7 +175,6 @@ extra_rdoc_files: []
397
175
  files:
398
176
  - LICENSE.txt
399
177
  - README.md
400
- - elasticgraph-schema_definition.gemspec
401
178
  - lib/elastic_graph/schema_definition/api.rb
402
179
  - lib/elastic_graph/schema_definition/factory.rb
403
180
  - lib/elastic_graph/schema_definition/indexing/derived_fields/append_only_set.rb
@@ -474,28 +251,31 @@ licenses:
474
251
  - MIT
475
252
  metadata:
476
253
  bug_tracker_uri: https://github.com/block/elasticgraph/issues
477
- changelog_uri: https://github.com/block/elasticgraph/releases/tag/v0.19.0.0.rc2
254
+ changelog_uri: https://github.com/block/elasticgraph/releases/tag/v0.19.1.0
478
255
  documentation_uri: https://block.github.io/elasticgraph/docs/main/
479
256
  homepage_uri: https://block.github.io/elasticgraph/
480
- source_code_uri: https://github.com/block/elasticgraph/tree/v0.19.0.0.rc2/elasticgraph-schema_definition
257
+ source_code_uri: https://github.com/block/elasticgraph/tree/v0.19.1.0/elasticgraph-schema_definition
481
258
  gem_category: local
482
- post_install_message:
259
+ post_install_message:
483
260
  rdoc_options: []
484
261
  require_paths:
485
262
  - lib
486
263
  required_ruby_version: !ruby/object:Gem::Requirement
487
264
  requirements:
488
- - - "~>"
265
+ - - ">="
489
266
  - !ruby/object:Gem::Version
490
267
  version: '3.2'
268
+ - - "<"
269
+ - !ruby/object:Gem::Version
270
+ version: '3.5'
491
271
  required_rubygems_version: !ruby/object:Gem::Requirement
492
272
  requirements:
493
273
  - - ">="
494
274
  - !ruby/object:Gem::Version
495
275
  version: '0'
496
276
  requirements: []
497
- rubygems_version: 3.5.9
498
- signing_key:
277
+ rubygems_version: 3.5.22
278
+ signing_key:
499
279
  specification_version: 4
500
280
  summary: ElasticGraph gem that provides the schema definition API and generates schema
501
281
  artifacts.
@@ -1,26 +0,0 @@
1
- # Copyright 2024 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_relative "../gemspec_helper"
10
-
11
- ElasticGraphGemspecHelper.define_elasticgraph_gem(gemspec_file: __FILE__, category: :local) do |spec, eg_version|
12
- spec.summary = "ElasticGraph gem that provides the schema definition API and generates schema artifacts."
13
-
14
- spec.add_dependency "elasticgraph-graphql", eg_version # needed since we validate that scalar `coerce_with` options are valid (which loads scalar coercion adapters)
15
- spec.add_dependency "elasticgraph-indexer", eg_version # needed since we validate that scalar `prepare_for_indexing_with` options are valid (which loads indexing preparer adapters)
16
- spec.add_dependency "elasticgraph-json_schema", eg_version
17
- spec.add_dependency "elasticgraph-schema_artifacts", eg_version
18
- spec.add_dependency "elasticgraph-support", eg_version
19
- spec.add_dependency "graphql", "~> 2.4.5"
20
- spec.add_dependency "rake", "~> 13.2"
21
-
22
- spec.add_development_dependency "elasticgraph-admin", eg_version
23
- spec.add_development_dependency "elasticgraph-datastore_core", eg_version
24
- spec.add_development_dependency "elasticgraph-elasticsearch", eg_version
25
- spec.add_development_dependency "elasticgraph-opensearch", eg_version
26
- end