elasticgraph-local 1.0.0.rc4 → 1.0.1

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: 539d80a430c8bd39cec5bfb1a6f69d4cf817cd0562025a4ed66f45a7d91428cc
4
- data.tar.gz: bfd3ffd9592a8dea52e0d2f789fc0e234c7bf947ef8369fd0796c42289e76a24
3
+ metadata.gz: 5db3551c8cb7a26221f84490e13d32efe98440a5ecf889d5845023fbdd132bf0
4
+ data.tar.gz: e63e4a7a0c295635293e3fac7a4b9b058e3beb07d678a5323be4f232ff2f1803
5
5
  SHA512:
6
- metadata.gz: 2ff8f780e08fdaf3614f18a7df38508f1f78c5034331907404e2dd8dfb48a6de2f519b4afd9faca0d2cc2ba2f92b1010b71a2c34ce03968a16a0c2375d9b441c
7
- data.tar.gz: ec4bb6c1472ecec84fb8efaeab60e564f7c14e678b2ab7def359355d87c7d0583b63500abe7d74324e34f7ac4fa492ab329cb93ef700b2e20eb1033424a9356c
6
+ metadata.gz: '009fffb0231e765a6f229912b9f2f384fb6e32828d83bd26563a6a06477681d2eb0ebd87ae436440564b0f20fa13913a950f929c54f5092b713cc1b603ad2187'
7
+ data.tar.gz: c5c0d13753f4943bc002172041f7aaab411d07e5010553a8d59c4d75bf1d24a664b541c940b6d14220bbdd7f39962566458f2cf1c9de1f92265d464b4f9a7731
@@ -11,7 +11,9 @@ require "elastic_graph/graphql"
11
11
  require "elastic_graph/indexer"
12
12
  require "elastic_graph/indexer/test_support/converters"
13
13
  require "elastic_graph/indexer/spec_support/event_matcher"
14
+ require "elastic_graph/support/json_schema/validator"
14
15
  require "factory_bot"
16
+ require "json_schemer"
15
17
 
16
18
  RSpec.shared_examples "an ElasticGraph project" do |repo_root: Dir.pwd,
17
19
  settings_dir: "config/settings",
@@ -42,8 +44,22 @@ RSpec.shared_examples "an ElasticGraph project" do |repo_root: Dir.pwd,
42
44
  expect(settings_files).not_to be_empty
43
45
  end
44
46
 
47
+ config_schema = ::YAML.load_file(::File.join(__dir__, "config_schema.yaml"))
48
+
49
+ validator = ::ElasticGraph::Support::JSONSchema::Validator.new(
50
+ schema: ::JSONSchemer.schema(config_schema, meta_schema: config_schema.fetch("$schema")),
51
+ sanitize_pii: false
52
+ )
53
+
45
54
  settings_files.each do |file_name|
46
55
  describe "the `#{file_name}` settings file" do
56
+ it "valid according to ElasticGraph's configuration JSON schema" do
57
+ settings = ::YAML.safe_load_file(file_name, aliases: true)
58
+ error = validator.validate_with_error_message(settings)
59
+
60
+ expect(error).to eq(nil), error
61
+ end
62
+
47
63
  it "can boot each part of ElasticGraph and has `number_of_shards` configured on every index definition" do
48
64
  all_components = [::ElasticGraph::Admin, ::ElasticGraph::GraphQL, ::ElasticGraph::Indexer].map do |klass|
49
65
  klass.from_yaml_file(file_name)
@@ -89,10 +105,10 @@ RSpec.shared_examples "an ElasticGraph project" do |repo_root: Dir.pwd,
89
105
  end
90
106
  end.to_h
91
107
 
92
- indexer, all_type_names, event_types = Dir.chdir(repo_root) do
93
- indexer = ::ElasticGraph::Indexer.from_yaml_file(settings_yaml_file_to_use)
94
- all_defs = indexer.schema_artifacts
95
- .json_schemas_for(indexer.schema_artifacts.latest_json_schema_version)
108
+ all_type_names, event_types = Dir.chdir(repo_root) do
109
+ schema_artifacts = ::ElasticGraph::SchemaArtifacts.from_yaml_file(settings_yaml_file_to_use)
110
+ all_defs = schema_artifacts
111
+ .json_schemas_for(schema_artifacts.latest_json_schema_version)
96
112
  .fetch("$defs")
97
113
 
98
114
  event_types = all_defs
@@ -102,10 +118,12 @@ RSpec.shared_examples "an ElasticGraph project" do |repo_root: Dir.pwd,
102
118
  .fetch("enum")
103
119
  .to_set
104
120
 
105
- [indexer, all_defs.keys.to_set, event_types]
121
+ [all_defs.keys.to_set, event_types]
106
122
  end
107
123
 
108
124
  describe "Factories" do
125
+ let(:indexer) { ::ElasticGraph::Indexer.from_yaml_file(settings_yaml_file_to_use) }
126
+
109
127
  specify "all factories have valid `__typename` values" do
110
128
  unknown_type_names_by_factory_name = typenames_by_factory_name.reject { |k, v| all_type_names.include?(v) }
111
129
 
@@ -0,0 +1,688 @@
1
+ ---
2
+ "$schema": http://json-schema.org/draft-07/schema#
3
+ title: ElasticGraph Configuration
4
+ description: Complete configuration schema for ElasticGraph applications
5
+ type: object
6
+ required:
7
+ - datastore
8
+ - graphql
9
+ - indexer
10
+ - schema_artifacts
11
+ - logger
12
+ properties:
13
+ datastore:
14
+ description: Configuration for datastore connections and index definitions used
15
+ by all parts of ElasticGraph.
16
+ properties:
17
+ client_faraday_adapter:
18
+ type: object
19
+ description: Configuration of the faraday adapter to use with the datastore
20
+ client.
21
+ properties:
22
+ name:
23
+ type:
24
+ - string
25
+ - 'null'
26
+ minLength: 1
27
+ description: The faraday adapter to use with the datastore client, such
28
+ as `httpx` or `typhoeus`.
29
+ examples:
30
+ - net_http
31
+ - httpx
32
+ - typhoeus
33
+ -
34
+ default:
35
+ require:
36
+ type:
37
+ - string
38
+ - 'null'
39
+ minLength: 1
40
+ description: A Ruby library to require which provides the named adapter
41
+ (optional).
42
+ examples:
43
+ - httpx/adapters/faraday
44
+ default:
45
+ default:
46
+ name:
47
+ require:
48
+ examples:
49
+ - name: net_http
50
+ - name: httpx
51
+ require: httpx/adapters/faraday
52
+ additionalProperties: false
53
+ clusters:
54
+ type: object
55
+ description: Map of datastore cluster definitions, keyed by cluster name.
56
+ The names will be referenced within `index_definitions` by `query_cluster`
57
+ and `index_into_clusters` to identify datastore clusters.
58
+ patternProperties:
59
+ ".+":
60
+ type: object
61
+ description: Configuration for a specific datastore cluster.
62
+ examples:
63
+ - url: http://localhost:9200
64
+ backend: elasticsearch
65
+ settings:
66
+ cluster.max_shards_per_node: 2000
67
+ properties:
68
+ url:
69
+ type: string
70
+ minLength: 1
71
+ description: The URL of the datastore cluster.
72
+ examples:
73
+ - http://localhost:9200
74
+ - https://my-cluster.example.com:9200
75
+ backend:
76
+ enum:
77
+ - elasticsearch
78
+ - opensearch
79
+ description: Determines whether `elasticgraph-elasticsearch` or `elasticgraph-opensearch`
80
+ is used for the datastore client.
81
+ examples:
82
+ - elasticsearch
83
+ - opensearch
84
+ settings:
85
+ type: object
86
+ description: Datastore settings in flattened (i.e. dot-separated)
87
+ name form.
88
+ patternProperties:
89
+ ".+":
90
+ type:
91
+ - array
92
+ - string
93
+ - number
94
+ - boolean
95
+ - object
96
+ - 'null'
97
+ examples:
98
+ - cluster.max_shards_per_node: 2000
99
+ default: {}
100
+ required:
101
+ - url
102
+ - backend
103
+ additionalProperties: false
104
+ examples:
105
+ - main:
106
+ url: http://localhost:9200
107
+ backend: elasticsearch
108
+ settings:
109
+ cluster.max_shards_per_node: 2000
110
+ index_definitions:
111
+ type: object
112
+ description: Map of index definition names to `IndexDefinition` objects containing
113
+ customizations for the named index definitions for this environment.
114
+ patternProperties:
115
+ ".+":
116
+ type: object
117
+ description: Configuration for a specific index definition.
118
+ examples:
119
+ - query_cluster: main
120
+ index_into_clusters:
121
+ - main
122
+ ignore_routing_values:
123
+ - ABC1234567
124
+ setting_overrides:
125
+ number_of_shards: 256
126
+ setting_overrides_by_timestamp:
127
+ '2022-01-01T00:00:00Z':
128
+ number_of_shards: 64
129
+ '2023-01-01T00:00:00Z':
130
+ number_of_shards: 96
131
+ '2024-01-01T00:00:00Z':
132
+ number_of_shards: 128
133
+ custom_timestamp_ranges:
134
+ - index_name_suffix: before_2022
135
+ lt: '2022-01-01T00:00:00Z'
136
+ setting_overrides:
137
+ number_of_shards: 32
138
+ - index_name_suffix: after_2026
139
+ gte: '2027-01-01T00:00:00Z'
140
+ setting_overrides:
141
+ number_of_shards: 32
142
+ properties:
143
+ query_cluster:
144
+ type: string
145
+ description: Named search cluster to be used for queries on this index.
146
+ The value must match be a key in the `clusters` map.
147
+ examples:
148
+ - main
149
+ - search_cluster
150
+ index_into_clusters:
151
+ type: array
152
+ items:
153
+ type: string
154
+ minLength: 1
155
+ description: Named search clusters to index data into. The values
156
+ must match keys in the `clusters` map.
157
+ examples:
158
+ - - main
159
+ - - cluster1
160
+ - cluster2
161
+ ignore_routing_values:
162
+ type: array
163
+ items:
164
+ type: string
165
+ description: Shard routing values for which the data should be spread
166
+ across all shards instead of concentrating it on a single shard.
167
+ This is intended to be used when a handful of known routing value
168
+ contain such a large portion of the dataset that it extremely lopsided
169
+ shards would result. Spreading the data across all shards may perform
170
+ better.
171
+ default: []
172
+ examples:
173
+ - []
174
+ - - mega_tenant1
175
+ - mega_tenant2
176
+ setting_overrides:
177
+ type: object
178
+ description: Overrides for index (or index template) settings. The
179
+ settings specified here will override any settings specified on
180
+ the Ruby schema definition. This is commonly used to configure a
181
+ different `number_of_shards` in each environment. An `index.` prefix
182
+ will be added to the names of all settings before submitting them
183
+ to the datastore.
184
+ patternProperties:
185
+ ".+":
186
+ type:
187
+ - array
188
+ - string
189
+ - number
190
+ - boolean
191
+ - object
192
+ - 'null'
193
+ default: {}
194
+ examples:
195
+ - number_of_shards: 5
196
+ setting_overrides_by_timestamp:
197
+ type: object
198
+ description: Overrides for index template settings for specific dates,
199
+ allowing variation of settings for different rollover indices. This
200
+ is commonly used to configure a different `number_of_shards` for
201
+ each year or month when using yearly or monthly rollover.
202
+ propertyNames:
203
+ type: string
204
+ format: date-time
205
+ additionalProperties:
206
+ type: object
207
+ patternProperties:
208
+ ".+":
209
+ type:
210
+ - array
211
+ - string
212
+ - number
213
+ - boolean
214
+ - object
215
+ - 'null'
216
+ default: {}
217
+ examples:
218
+ - '2025-01-01T00:00:00Z':
219
+ number_of_shards: 10
220
+ custom_timestamp_ranges:
221
+ type: array
222
+ description: Array of custom timestamp ranges that allow different
223
+ index settings for specific time periods.
224
+ items:
225
+ type: object
226
+ properties:
227
+ index_name_suffix:
228
+ type: string
229
+ description: Suffix to append to the index name for this custom
230
+ range.
231
+ examples:
232
+ - before_2020
233
+ - after_2027
234
+ setting_overrides:
235
+ type: object
236
+ description: Setting overrides for this custom timestamp range.
237
+ patternProperties:
238
+ ".+":
239
+ type:
240
+ - array
241
+ - string
242
+ - number
243
+ - boolean
244
+ - object
245
+ - 'null'
246
+ examples:
247
+ - number_of_shards: 17
248
+ - number_of_replicas: 2
249
+ lt:
250
+ type:
251
+ - string
252
+ - 'null'
253
+ format: date-time
254
+ description: Less than timestamp boundary (ISO 8601 format).
255
+ examples:
256
+ - '2015-01-01T00:00:00Z'
257
+ - '2020-12-31T23:59:59Z'
258
+ default:
259
+ lte:
260
+ type:
261
+ - string
262
+ - 'null'
263
+ format: date-time
264
+ description: Less than or equal timestamp boundary (ISO 8601
265
+ format).
266
+ examples:
267
+ - '2015-01-01T00:00:00Z'
268
+ - '2020-12-31T23:59:59Z'
269
+ default:
270
+ gt:
271
+ type:
272
+ - string
273
+ - 'null'
274
+ format: date-time
275
+ description: Greater than timestamp boundary (ISO 8601 format).
276
+ examples:
277
+ - '2015-01-01T00:00:00Z'
278
+ - '2020-01-01T00:00:00Z'
279
+ default:
280
+ gte:
281
+ type:
282
+ - string
283
+ - 'null'
284
+ format: date-time
285
+ description: Greater than or equal timestamp boundary (ISO 8601
286
+ format).
287
+ examples:
288
+ - '2015-01-01T00:00:00Z'
289
+ - '2020-01-01T00:00:00Z'
290
+ default:
291
+ required:
292
+ - index_name_suffix
293
+ - setting_overrides
294
+ anyOf:
295
+ - required:
296
+ - lt
297
+ - required:
298
+ - lte
299
+ - required:
300
+ - gt
301
+ - required:
302
+ - gte
303
+ additionalProperties: false
304
+ default: []
305
+ examples:
306
+ - - index_name_suffix: before_2015
307
+ lt: '2015-01-01T00:00:00Z'
308
+ setting_overrides:
309
+ number_of_shards: 17
310
+ required:
311
+ - query_cluster
312
+ - index_into_clusters
313
+ additionalProperties: false
314
+ examples:
315
+ - widgets:
316
+ query_cluster: main
317
+ index_into_clusters:
318
+ - main
319
+ ignore_routing_values:
320
+ - ABC1234567
321
+ setting_overrides:
322
+ number_of_shards: 256
323
+ setting_overrides_by_timestamp:
324
+ '2022-01-01T00:00:00Z':
325
+ number_of_shards: 64
326
+ '2023-01-01T00:00:00Z':
327
+ number_of_shards: 96
328
+ '2024-01-01T00:00:00Z':
329
+ number_of_shards: 128
330
+ custom_timestamp_ranges:
331
+ - index_name_suffix: before_2022
332
+ lt: '2022-01-01T00:00:00Z'
333
+ setting_overrides:
334
+ number_of_shards: 32
335
+ - index_name_suffix: after_2026
336
+ gte: '2027-01-01T00:00:00Z'
337
+ setting_overrides:
338
+ number_of_shards: 32
339
+ log_traffic:
340
+ type: boolean
341
+ description: Determines if we log requests/responses to/from the datastore.
342
+ default: false
343
+ examples:
344
+ - false
345
+ - true
346
+ max_client_retries:
347
+ type: integer
348
+ description: Passed down to the datastore client. Controls the number of times
349
+ ElasticGraph attempts a call against the datastore before failing. Retrying
350
+ a handful of times is generally advantageous, since some sporadic failures
351
+ are expected during the course of operation, and better to retry than fail
352
+ the entire call.
353
+ default: 3
354
+ minimum: 0
355
+ examples:
356
+ - 3
357
+ - 5
358
+ - 10
359
+ required:
360
+ - clusters
361
+ - index_definitions
362
+ additionalProperties: false
363
+ graphql:
364
+ description: Configuration for GraphQL behavior used by `elasticgraph-graphql`.
365
+ properties:
366
+ default_page_size:
367
+ description: Determines the `size` of our datastore search requests if the
368
+ query does not specify via `first` or `last`.
369
+ type: integer
370
+ minimum: 1
371
+ default: 50
372
+ examples:
373
+ - 25
374
+ - 50
375
+ - 100
376
+ max_page_size:
377
+ description: Determines the maximum size of a requested page. If the client
378
+ requests a page larger than this value, the `size` will be capped by this
379
+ value.
380
+ type: integer
381
+ minimum: 1
382
+ default: 500
383
+ examples:
384
+ - 100
385
+ - 500
386
+ - 1000
387
+ slow_query_latency_warning_threshold_in_ms:
388
+ description: Queries that take longer than this configured threshold will
389
+ have a sanitized version logged so that they can be investigated.
390
+ type: integer
391
+ minimum: 0
392
+ default: 5000
393
+ examples:
394
+ - 3000
395
+ - 5000
396
+ - 10000
397
+ client_resolver:
398
+ description: Object used to identify the client of a GraphQL query based on
399
+ the HTTP request.
400
+ type: object
401
+ properties:
402
+ name:
403
+ description: Name of the client resolver class.
404
+ type:
405
+ - string
406
+ - 'null'
407
+ minLength: 1
408
+ default:
409
+ examples:
410
+ -
411
+ - MyCompany::ElasticGraphClientResolver
412
+ require_path:
413
+ description: The path to require to load the client resolver class.
414
+ type:
415
+ - string
416
+ - 'null'
417
+ minLength: 1
418
+ default:
419
+ examples:
420
+ -
421
+ - "./lib/my_company/elastic_graph/client_resolver"
422
+ patternProperties:
423
+ ".+":
424
+ type:
425
+ - array
426
+ - string
427
+ - number
428
+ - boolean
429
+ - object
430
+ - 'null'
431
+ default: {}
432
+ examples:
433
+ - {}
434
+ - name: ElasticGraph::GraphQL::ClientResolvers::ViaHTTPHeader
435
+ require_path: support/client_resolvers
436
+ header_name: X-Client-Name
437
+ additionalProperties: false
438
+ extension_modules:
439
+ description: Array of modules that will be extended onto the `GraphQL` instance
440
+ to support extension libraries.
441
+ type: array
442
+ items:
443
+ type: object
444
+ properties:
445
+ name:
446
+ type: string
447
+ minLength: 1
448
+ description: The name of the extension module class to load.
449
+ examples:
450
+ - MyExtensionModule
451
+ - ElasticGraph::MyExtension
452
+ require_path:
453
+ type: string
454
+ minLength: 1
455
+ description: The path to require to load the extension module.
456
+ examples:
457
+ - "./my_extension_module"
458
+ - elastic_graph/my_extension
459
+ required:
460
+ - name
461
+ - require_path
462
+ additionalProperties: false
463
+ default: []
464
+ examples:
465
+ - []
466
+ - - name: MyExtensionModule
467
+ require_path: "./my_extension_module"
468
+ additionalProperties: false
469
+ indexer:
470
+ description: Configuration for indexing operations and metrics used by `elasticgraph-indexer`.
471
+ properties:
472
+ latency_slo_thresholds_by_timestamp_in_ms:
473
+ description: Map of indexing latency thresholds (in milliseconds), keyed by
474
+ the name of the indexing latency metric. When an event is indexed with an
475
+ indexing latency exceeding the threshold, a warning with the event type,
476
+ id, and version will be logged, so the issue can be investigated.
477
+ type: object
478
+ patternProperties:
479
+ ".+":
480
+ type: integer
481
+ minimum: 0
482
+ default: {}
483
+ examples:
484
+ - {}
485
+ - ingested_from_topic_at: 10000
486
+ entity_updated_at: 15000
487
+ skip_derived_indexing_type_updates:
488
+ description: Setting that can be used to specify some derived indexing type
489
+ updates that should be skipped. This setting should be a map keyed by the
490
+ name of the derived indexing type, and the values should be sets of ids.
491
+ This can be useful when you have a "hot spot" of a single derived document
492
+ that is receiving a ton of updates. During a backfill (or whatever) you
493
+ may want to skip the derived type updates.
494
+ type: object
495
+ patternProperties:
496
+ "^[A-Z]\\w*$":
497
+ type: array
498
+ items:
499
+ type: string
500
+ minLength: 1
501
+ default: {}
502
+ examples:
503
+ - {}
504
+ - WidgetWorkspace:
505
+ - ABC12345678
506
+ additionalProperties: false
507
+ logger:
508
+ description: Configuration for logging used by all parts of ElasticGraph.
509
+ properties:
510
+ level:
511
+ description: Determines what severity level we log.
512
+ examples:
513
+ - INFO
514
+ - WARN
515
+ enum:
516
+ - DEBUG
517
+ - debug
518
+ - INFO
519
+ - info
520
+ - WARN
521
+ - warn
522
+ - ERROR
523
+ - error
524
+ - FATAL
525
+ - fatal
526
+ - UNKNOWN
527
+ - unknown
528
+ default: INFO
529
+ device:
530
+ description: Determines where we log to. "stdout" or "stderr" are interpreted
531
+ as being those output streams; any other value is assumed to be a file path.
532
+ examples:
533
+ - stdout
534
+ - logs/development.log
535
+ default: stdout
536
+ type: string
537
+ minLength: 1
538
+ formatter:
539
+ description: Class used to format log messages.
540
+ examples:
541
+ - ElasticGraph::Support::Logger::JSONAwareFormatter
542
+ - MyAlternateFormatter
543
+ type: string
544
+ pattern: "^[A-Z]\\w+(::[A-Z]\\w+)*$"
545
+ default: ElasticGraph::Support::Logger::JSONAwareFormatter
546
+ additionalProperties: false
547
+ schema_artifacts:
548
+ description: Configuration for schema artifact management used by all parts of
549
+ ElasticGraph.
550
+ properties:
551
+ directory:
552
+ description: Path to the directory where schema artifacts are stored.
553
+ examples:
554
+ - config/schema/artifacts
555
+ default: config/schema/artifacts
556
+ type: string
557
+ minLength: 1
558
+ additionalProperties: false
559
+ health_check:
560
+ description: Configuration for health checks used by `elasticgraph-health_check`.
561
+ properties:
562
+ clusters_to_consider:
563
+ description: The list of clusters to perform datastore status health checks
564
+ on. A `green` status maps to `healthy`, a `yellow` status maps to `degraded`,
565
+ and a `red` status maps to `unhealthy`. The returned status is the minimum
566
+ status from all clusters in the list (a `yellow` cluster and a `green` cluster
567
+ will result in a `degraded` status).
568
+ type: array
569
+ items:
570
+ type: string
571
+ minLength: 1
572
+ default: []
573
+ examples:
574
+ - []
575
+ - - cluster-one
576
+ - cluster-two
577
+ data_recency_checks:
578
+ description: A map of types to perform recency checks on. If no new records
579
+ for that type have been indexed within the specified period, a `degraded`
580
+ status will be returned.
581
+ type: object
582
+ patternProperties:
583
+ "^[A-Z]\\w*$":
584
+ type: object
585
+ description: Configuration for data recency checks on a specific type.
586
+ examples:
587
+ - timestamp_field: createdAt
588
+ expected_max_recency_seconds: 30
589
+ properties:
590
+ expected_max_recency_seconds:
591
+ type: integer
592
+ minimum: 0
593
+ description: The maximum number of seconds since the last record was
594
+ indexed for this type before considering it stale.
595
+ examples:
596
+ - 30
597
+ - 300
598
+ - 3600
599
+ timestamp_field:
600
+ type: string
601
+ minLength: 1
602
+ description: The name of the timestamp field to use for recency checks.
603
+ examples:
604
+ - createdAt
605
+ - updatedAt
606
+ required:
607
+ - expected_max_recency_seconds
608
+ - timestamp_field
609
+ additionalProperties: false
610
+ default: {}
611
+ examples:
612
+ - {}
613
+ - Widget:
614
+ timestamp_field: createdAt
615
+ expected_max_recency_seconds: 30
616
+ additionalProperties: false
617
+ query_interceptor:
618
+ description: Configuration of datastore query interceptors used by `elasticgraph-query_interceptor`.
619
+ properties:
620
+ interceptors:
621
+ description: List of query interceptors to apply to datastore queries before
622
+ they are executed.
623
+ type: array
624
+ items:
625
+ type: object
626
+ properties:
627
+ name:
628
+ description: The name of the interceptor extension class.
629
+ type: string
630
+ pattern: "^[A-Z]\\w+(::[A-Z]\\w+)*$"
631
+ examples:
632
+ - HideInternalRecordsInterceptor
633
+ require_path:
634
+ description: The path to require to load the interceptor extension.
635
+ This should be a relative path from a directory on the Ruby `$LOAD_PATH`
636
+ or a a relative path from the ElasticGraph application root.
637
+ type: string
638
+ minLength: 1
639
+ examples:
640
+ - "./lib/interceptors/hide_internal_records_interceptor"
641
+ config:
642
+ description: Configuration for the interceptor. Will be passed into
643
+ the interceptors `#initialize` method.
644
+ type: object
645
+ examples:
646
+ - {}
647
+ - timeout: 30
648
+ default: {}
649
+ required:
650
+ - name
651
+ - require_path
652
+ additionalProperties: false
653
+ examples:
654
+ - []
655
+ - - name: HideInternalRecordsInterceptor
656
+ require_path: "./lib/interceptors/hide_internal_records_interceptor"
657
+ default: []
658
+ additionalProperties: false
659
+ query_registry:
660
+ description: Configuration for client and query registration used by `elasticgraph-query_registry`.
661
+ properties:
662
+ path_to_registry:
663
+ description: Path to the directory containing the query registry files.
664
+ type: string
665
+ examples:
666
+ - config/queries
667
+ allow_unregistered_clients:
668
+ description: Whether to allow clients that are not registered in the registry.
669
+ type: boolean
670
+ examples:
671
+ - true
672
+ - false
673
+ default: true
674
+ allow_any_query_for_clients:
675
+ description: List of client names that are allowed to execute any query, even
676
+ if not registered.
677
+ type: array
678
+ items:
679
+ type: string
680
+ examples:
681
+ - []
682
+ - - admin
683
+ - internal
684
+ default: []
685
+ required:
686
+ - path_to_registry
687
+ additionalProperties: false
688
+ additionalProperties: true
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elasticgraph-local
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.rc4
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Myron Marston
@@ -17,70 +17,70 @@ dependencies:
17
17
  requirements:
18
18
  - - '='
19
19
  - !ruby/object:Gem::Version
20
- version: 1.0.0.rc4
20
+ version: 1.0.1
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: 1.0.0.rc4
27
+ version: 1.0.1
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: elasticgraph-graphql
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - '='
33
33
  - !ruby/object:Gem::Version
34
- version: 1.0.0.rc4
34
+ version: 1.0.1
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: 1.0.0.rc4
41
+ version: 1.0.1
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: elasticgraph-graphiql
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
46
  - - '='
47
47
  - !ruby/object:Gem::Version
48
- version: 1.0.0.rc4
48
+ version: 1.0.1
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - '='
54
54
  - !ruby/object:Gem::Version
55
- version: 1.0.0.rc4
55
+ version: 1.0.1
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: elasticgraph-indexer
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
60
  - - '='
61
61
  - !ruby/object:Gem::Version
62
- version: 1.0.0.rc4
62
+ version: 1.0.1
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
67
  - - '='
68
68
  - !ruby/object:Gem::Version
69
- version: 1.0.0.rc4
69
+ version: 1.0.1
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: elasticgraph-schema_definition
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
74
  - - '='
75
75
  - !ruby/object:Gem::Version
76
- version: 1.0.0.rc4
76
+ version: 1.0.1
77
77
  type: :runtime
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
81
  - - '='
82
82
  - !ruby/object:Gem::Version
83
- version: 1.0.0.rc4
83
+ version: 1.0.1
84
84
  - !ruby/object:Gem::Dependency
85
85
  name: rackup
86
86
  requirement: !ruby/object:Gem::Requirement
@@ -141,42 +141,42 @@ dependencies:
141
141
  requirements:
142
142
  - - '='
143
143
  - !ruby/object:Gem::Version
144
- version: 1.0.0.rc4
144
+ version: 1.0.1
145
145
  type: :development
146
146
  prerelease: false
147
147
  version_requirements: !ruby/object:Gem::Requirement
148
148
  requirements:
149
149
  - - '='
150
150
  - !ruby/object:Gem::Version
151
- version: 1.0.0.rc4
151
+ version: 1.0.1
152
152
  - !ruby/object:Gem::Dependency
153
153
  name: elasticgraph-elasticsearch
154
154
  requirement: !ruby/object:Gem::Requirement
155
155
  requirements:
156
156
  - - '='
157
157
  - !ruby/object:Gem::Version
158
- version: 1.0.0.rc4
158
+ version: 1.0.1
159
159
  type: :development
160
160
  prerelease: false
161
161
  version_requirements: !ruby/object:Gem::Requirement
162
162
  requirements:
163
163
  - - '='
164
164
  - !ruby/object:Gem::Version
165
- version: 1.0.0.rc4
165
+ version: 1.0.1
166
166
  - !ruby/object:Gem::Dependency
167
167
  name: elasticgraph-opensearch
168
168
  requirement: !ruby/object:Gem::Requirement
169
169
  requirements:
170
170
  - - '='
171
171
  - !ruby/object:Gem::Version
172
- version: 1.0.0.rc4
172
+ version: 1.0.1
173
173
  type: :development
174
174
  prerelease: false
175
175
  version_requirements: !ruby/object:Gem::Requirement
176
176
  requirements:
177
177
  - - '='
178
178
  - !ruby/object:Gem::Version
179
- version: 1.0.0.rc4
179
+ version: 1.0.1
180
180
  email:
181
181
  - myron@squareup.com
182
182
  executables: []
@@ -197,16 +197,17 @@ files:
197
197
  - lib/elastic_graph/local/opensearch/docker-compose.yaml
198
198
  - lib/elastic_graph/local/rake_tasks.rb
199
199
  - lib/elastic_graph/local/spec_support/common_project_specs.rb
200
+ - lib/elastic_graph/local/spec_support/config_schema.yaml
200
201
  - lib/elastic_graph/local/tested_datastore_versions.yaml
201
202
  homepage: https://block.github.io/elasticgraph/
202
203
  licenses:
203
204
  - MIT
204
205
  metadata:
205
206
  bug_tracker_uri: https://github.com/block/elasticgraph/issues
206
- changelog_uri: https://github.com/block/elasticgraph/releases/tag/v1.0.0.rc4
207
- documentation_uri: https://block.github.io/elasticgraph/api-docs/v1.0.0.rc4/
207
+ changelog_uri: https://github.com/block/elasticgraph/releases/tag/v1.0.1
208
+ documentation_uri: https://block.github.io/elasticgraph/api-docs/v1.0.1/
208
209
  homepage_uri: https://block.github.io/elasticgraph/
209
- source_code_uri: https://github.com/block/elasticgraph/tree/v1.0.0.rc4/elasticgraph-local
210
+ source_code_uri: https://github.com/block/elasticgraph/tree/v1.0.1/elasticgraph-local
210
211
  gem_category: local
211
212
  rdoc_options: []
212
213
  require_paths: