elasticgraph-graphql 0.18.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +21 -0
  3. data/README.md +3 -0
  4. data/elasticgraph-graphql.gemspec +23 -0
  5. data/lib/elastic_graph/graphql/aggregation/composite_grouping_adapter.rb +79 -0
  6. data/lib/elastic_graph/graphql/aggregation/computation.rb +39 -0
  7. data/lib/elastic_graph/graphql/aggregation/date_histogram_grouping.rb +83 -0
  8. data/lib/elastic_graph/graphql/aggregation/field_path_encoder.rb +47 -0
  9. data/lib/elastic_graph/graphql/aggregation/field_term_grouping.rb +26 -0
  10. data/lib/elastic_graph/graphql/aggregation/key.rb +87 -0
  11. data/lib/elastic_graph/graphql/aggregation/nested_sub_aggregation.rb +37 -0
  12. data/lib/elastic_graph/graphql/aggregation/non_composite_grouping_adapter.rb +129 -0
  13. data/lib/elastic_graph/graphql/aggregation/path_segment.rb +31 -0
  14. data/lib/elastic_graph/graphql/aggregation/query.rb +172 -0
  15. data/lib/elastic_graph/graphql/aggregation/query_adapter.rb +345 -0
  16. data/lib/elastic_graph/graphql/aggregation/query_optimizer.rb +187 -0
  17. data/lib/elastic_graph/graphql/aggregation/resolvers/aggregated_values.rb +41 -0
  18. data/lib/elastic_graph/graphql/aggregation/resolvers/count_detail.rb +44 -0
  19. data/lib/elastic_graph/graphql/aggregation/resolvers/grouped_by.rb +30 -0
  20. data/lib/elastic_graph/graphql/aggregation/resolvers/node.rb +64 -0
  21. data/lib/elastic_graph/graphql/aggregation/resolvers/relay_connection_builder.rb +83 -0
  22. data/lib/elastic_graph/graphql/aggregation/resolvers/sub_aggregations.rb +82 -0
  23. data/lib/elastic_graph/graphql/aggregation/script_term_grouping.rb +32 -0
  24. data/lib/elastic_graph/graphql/aggregation/term_grouping.rb +118 -0
  25. data/lib/elastic_graph/graphql/client.rb +43 -0
  26. data/lib/elastic_graph/graphql/config.rb +81 -0
  27. data/lib/elastic_graph/graphql/datastore_query/document_paginator.rb +100 -0
  28. data/lib/elastic_graph/graphql/datastore_query/index_expression_builder.rb +142 -0
  29. data/lib/elastic_graph/graphql/datastore_query/paginator.rb +199 -0
  30. data/lib/elastic_graph/graphql/datastore_query/routing_picker.rb +239 -0
  31. data/lib/elastic_graph/graphql/datastore_query.rb +372 -0
  32. data/lib/elastic_graph/graphql/datastore_response/document.rb +78 -0
  33. data/lib/elastic_graph/graphql/datastore_response/search_response.rb +79 -0
  34. data/lib/elastic_graph/graphql/datastore_search_router.rb +151 -0
  35. data/lib/elastic_graph/graphql/decoded_cursor.rb +120 -0
  36. data/lib/elastic_graph/graphql/filtering/boolean_query.rb +45 -0
  37. data/lib/elastic_graph/graphql/filtering/field_path.rb +81 -0
  38. data/lib/elastic_graph/graphql/filtering/filter_args_translator.rb +58 -0
  39. data/lib/elastic_graph/graphql/filtering/filter_interpreter.rb +526 -0
  40. data/lib/elastic_graph/graphql/filtering/filter_value_set_extractor.rb +148 -0
  41. data/lib/elastic_graph/graphql/filtering/range_query.rb +56 -0
  42. data/lib/elastic_graph/graphql/http_endpoint.rb +229 -0
  43. data/lib/elastic_graph/graphql/monkey_patches/schema_field.rb +56 -0
  44. data/lib/elastic_graph/graphql/monkey_patches/schema_object.rb +48 -0
  45. data/lib/elastic_graph/graphql/query_adapter/filters.rb +161 -0
  46. data/lib/elastic_graph/graphql/query_adapter/pagination.rb +27 -0
  47. data/lib/elastic_graph/graphql/query_adapter/requested_fields.rb +124 -0
  48. data/lib/elastic_graph/graphql/query_adapter/sort.rb +32 -0
  49. data/lib/elastic_graph/graphql/query_details_tracker.rb +60 -0
  50. data/lib/elastic_graph/graphql/query_executor.rb +200 -0
  51. data/lib/elastic_graph/graphql/resolvers/get_record_field_value.rb +49 -0
  52. data/lib/elastic_graph/graphql/resolvers/graphql_adapter.rb +114 -0
  53. data/lib/elastic_graph/graphql/resolvers/list_records.rb +29 -0
  54. data/lib/elastic_graph/graphql/resolvers/nested_relationships.rb +74 -0
  55. data/lib/elastic_graph/graphql/resolvers/query_adapter.rb +85 -0
  56. data/lib/elastic_graph/graphql/resolvers/query_source.rb +46 -0
  57. data/lib/elastic_graph/graphql/resolvers/relay_connection/array_adapter.rb +71 -0
  58. data/lib/elastic_graph/graphql/resolvers/relay_connection/generic_adapter.rb +65 -0
  59. data/lib/elastic_graph/graphql/resolvers/relay_connection/page_info.rb +82 -0
  60. data/lib/elastic_graph/graphql/resolvers/relay_connection/search_response_adapter_builder.rb +40 -0
  61. data/lib/elastic_graph/graphql/resolvers/relay_connection.rb +42 -0
  62. data/lib/elastic_graph/graphql/resolvers/resolvable_value.rb +56 -0
  63. data/lib/elastic_graph/graphql/scalar_coercion_adapters/cursor.rb +35 -0
  64. data/lib/elastic_graph/graphql/scalar_coercion_adapters/date.rb +64 -0
  65. data/lib/elastic_graph/graphql/scalar_coercion_adapters/date_time.rb +60 -0
  66. data/lib/elastic_graph/graphql/scalar_coercion_adapters/local_time.rb +30 -0
  67. data/lib/elastic_graph/graphql/scalar_coercion_adapters/longs.rb +47 -0
  68. data/lib/elastic_graph/graphql/scalar_coercion_adapters/no_op.rb +24 -0
  69. data/lib/elastic_graph/graphql/scalar_coercion_adapters/time_zone.rb +44 -0
  70. data/lib/elastic_graph/graphql/scalar_coercion_adapters/untyped.rb +32 -0
  71. data/lib/elastic_graph/graphql/scalar_coercion_adapters/valid_time_zones.rb +634 -0
  72. data/lib/elastic_graph/graphql/schema/arguments.rb +78 -0
  73. data/lib/elastic_graph/graphql/schema/enum_value.rb +30 -0
  74. data/lib/elastic_graph/graphql/schema/field.rb +147 -0
  75. data/lib/elastic_graph/graphql/schema/relation_join.rb +103 -0
  76. data/lib/elastic_graph/graphql/schema/type.rb +263 -0
  77. data/lib/elastic_graph/graphql/schema.rb +164 -0
  78. data/lib/elastic_graph/graphql.rb +253 -0
  79. data/script/dump_time_zones +81 -0
  80. data/script/dump_time_zones.java +17 -0
  81. metadata +503 -0
@@ -0,0 +1,634 @@
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
+ module ElasticGraph
10
+ class GraphQL
11
+ module ScalarCoercionAdapters
12
+ # The set of all valid time zones. We expect this set to align with the official IANA
13
+ # list[^1][^2][^3], but ultimately we pass these time zones to the datastore and need
14
+ # to enumerate all time zones it supports. Since Elasticsearch and OpenSearch run on the JVM and the
15
+ # date format docs[^4] link to Java's `java.time.format.DateTimeFormatter` class, we
16
+ # can conclude that they support the time zones that the java class supports. This set
17
+ # is generated by `script/dump_time_zones`, which queries Java's `java.time.ZoneId`[^5]
18
+ # class to get the set of time zones supported on the JVM.
19
+ #
20
+ # DO NOT EDIT BY HAND.
21
+ #
22
+ # [^1]: https://www.iana.org/time-zones
23
+ # [^2]: https://en.wikipedia.org/wiki/Tz_database
24
+ # [^3]: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
25
+ # [^4]: https://www.elastic.co/guide/en/elasticsearch/reference/7.10/mapping-date-format.html#custom-date-formats
26
+ # [^5]: https://docs.oracle.com/javase/8/docs/api/java/time/ZoneId.html
27
+ VALID_TIME_ZONES = %w[
28
+ Africa/Abidjan
29
+ Africa/Accra
30
+ Africa/Addis_Ababa
31
+ Africa/Algiers
32
+ Africa/Asmara
33
+ Africa/Asmera
34
+ Africa/Bamako
35
+ Africa/Bangui
36
+ Africa/Banjul
37
+ Africa/Bissau
38
+ Africa/Blantyre
39
+ Africa/Brazzaville
40
+ Africa/Bujumbura
41
+ Africa/Cairo
42
+ Africa/Casablanca
43
+ Africa/Ceuta
44
+ Africa/Conakry
45
+ Africa/Dakar
46
+ Africa/Dar_es_Salaam
47
+ Africa/Djibouti
48
+ Africa/Douala
49
+ Africa/El_Aaiun
50
+ Africa/Freetown
51
+ Africa/Gaborone
52
+ Africa/Harare
53
+ Africa/Johannesburg
54
+ Africa/Juba
55
+ Africa/Kampala
56
+ Africa/Khartoum
57
+ Africa/Kigali
58
+ Africa/Kinshasa
59
+ Africa/Lagos
60
+ Africa/Libreville
61
+ Africa/Lome
62
+ Africa/Luanda
63
+ Africa/Lubumbashi
64
+ Africa/Lusaka
65
+ Africa/Malabo
66
+ Africa/Maputo
67
+ Africa/Maseru
68
+ Africa/Mbabane
69
+ Africa/Mogadishu
70
+ Africa/Monrovia
71
+ Africa/Nairobi
72
+ Africa/Ndjamena
73
+ Africa/Niamey
74
+ Africa/Nouakchott
75
+ Africa/Ouagadougou
76
+ Africa/Porto-Novo
77
+ Africa/Sao_Tome
78
+ Africa/Timbuktu
79
+ Africa/Tripoli
80
+ Africa/Tunis
81
+ Africa/Windhoek
82
+ America/Adak
83
+ America/Anchorage
84
+ America/Anguilla
85
+ America/Antigua
86
+ America/Araguaina
87
+ America/Argentina/Buenos_Aires
88
+ America/Argentina/Catamarca
89
+ America/Argentina/ComodRivadavia
90
+ America/Argentina/Cordoba
91
+ America/Argentina/Jujuy
92
+ America/Argentina/La_Rioja
93
+ America/Argentina/Mendoza
94
+ America/Argentina/Rio_Gallegos
95
+ America/Argentina/Salta
96
+ America/Argentina/San_Juan
97
+ America/Argentina/San_Luis
98
+ America/Argentina/Tucuman
99
+ America/Argentina/Ushuaia
100
+ America/Aruba
101
+ America/Asuncion
102
+ America/Atikokan
103
+ America/Atka
104
+ America/Bahia
105
+ America/Bahia_Banderas
106
+ America/Barbados
107
+ America/Belem
108
+ America/Belize
109
+ America/Blanc-Sablon
110
+ America/Boa_Vista
111
+ America/Bogota
112
+ America/Boise
113
+ America/Buenos_Aires
114
+ America/Cambridge_Bay
115
+ America/Campo_Grande
116
+ America/Cancun
117
+ America/Caracas
118
+ America/Catamarca
119
+ America/Cayenne
120
+ America/Cayman
121
+ America/Chicago
122
+ America/Chihuahua
123
+ America/Ciudad_Juarez
124
+ America/Coral_Harbour
125
+ America/Cordoba
126
+ America/Costa_Rica
127
+ America/Creston
128
+ America/Cuiaba
129
+ America/Curacao
130
+ America/Danmarkshavn
131
+ America/Dawson
132
+ America/Dawson_Creek
133
+ America/Denver
134
+ America/Detroit
135
+ America/Dominica
136
+ America/Edmonton
137
+ America/Eirunepe
138
+ America/El_Salvador
139
+ America/Ensenada
140
+ America/Fort_Nelson
141
+ America/Fort_Wayne
142
+ America/Fortaleza
143
+ America/Glace_Bay
144
+ America/Godthab
145
+ America/Goose_Bay
146
+ America/Grand_Turk
147
+ America/Grenada
148
+ America/Guadeloupe
149
+ America/Guatemala
150
+ America/Guayaquil
151
+ America/Guyana
152
+ America/Halifax
153
+ America/Havana
154
+ America/Hermosillo
155
+ America/Indiana/Indianapolis
156
+ America/Indiana/Knox
157
+ America/Indiana/Marengo
158
+ America/Indiana/Petersburg
159
+ America/Indiana/Tell_City
160
+ America/Indiana/Vevay
161
+ America/Indiana/Vincennes
162
+ America/Indiana/Winamac
163
+ America/Indianapolis
164
+ America/Inuvik
165
+ America/Iqaluit
166
+ America/Jamaica
167
+ America/Jujuy
168
+ America/Juneau
169
+ America/Kentucky/Louisville
170
+ America/Kentucky/Monticello
171
+ America/Knox_IN
172
+ America/Kralendijk
173
+ America/La_Paz
174
+ America/Lima
175
+ America/Los_Angeles
176
+ America/Louisville
177
+ America/Lower_Princes
178
+ America/Maceio
179
+ America/Managua
180
+ America/Manaus
181
+ America/Marigot
182
+ America/Martinique
183
+ America/Matamoros
184
+ America/Mazatlan
185
+ America/Mendoza
186
+ America/Menominee
187
+ America/Merida
188
+ America/Metlakatla
189
+ America/Mexico_City
190
+ America/Miquelon
191
+ America/Moncton
192
+ America/Monterrey
193
+ America/Montevideo
194
+ America/Montreal
195
+ America/Montserrat
196
+ America/Nassau
197
+ America/New_York
198
+ America/Nipigon
199
+ America/Nome
200
+ America/Noronha
201
+ America/North_Dakota/Beulah
202
+ America/North_Dakota/Center
203
+ America/North_Dakota/New_Salem
204
+ America/Nuuk
205
+ America/Ojinaga
206
+ America/Panama
207
+ America/Pangnirtung
208
+ America/Paramaribo
209
+ America/Phoenix
210
+ America/Port-au-Prince
211
+ America/Port_of_Spain
212
+ America/Porto_Acre
213
+ America/Porto_Velho
214
+ America/Puerto_Rico
215
+ America/Punta_Arenas
216
+ America/Rainy_River
217
+ America/Rankin_Inlet
218
+ America/Recife
219
+ America/Regina
220
+ America/Resolute
221
+ America/Rio_Branco
222
+ America/Rosario
223
+ America/Santa_Isabel
224
+ America/Santarem
225
+ America/Santiago
226
+ America/Santo_Domingo
227
+ America/Sao_Paulo
228
+ America/Scoresbysund
229
+ America/Shiprock
230
+ America/Sitka
231
+ America/St_Barthelemy
232
+ America/St_Johns
233
+ America/St_Kitts
234
+ America/St_Lucia
235
+ America/St_Thomas
236
+ America/St_Vincent
237
+ America/Swift_Current
238
+ America/Tegucigalpa
239
+ America/Thule
240
+ America/Thunder_Bay
241
+ America/Tijuana
242
+ America/Toronto
243
+ America/Tortola
244
+ America/Vancouver
245
+ America/Virgin
246
+ America/Whitehorse
247
+ America/Winnipeg
248
+ America/Yakutat
249
+ America/Yellowknife
250
+ Antarctica/Casey
251
+ Antarctica/Davis
252
+ Antarctica/DumontDUrville
253
+ Antarctica/Macquarie
254
+ Antarctica/Mawson
255
+ Antarctica/McMurdo
256
+ Antarctica/Palmer
257
+ Antarctica/Rothera
258
+ Antarctica/South_Pole
259
+ Antarctica/Syowa
260
+ Antarctica/Troll
261
+ Antarctica/Vostok
262
+ Arctic/Longyearbyen
263
+ Asia/Aden
264
+ Asia/Almaty
265
+ Asia/Amman
266
+ Asia/Anadyr
267
+ Asia/Aqtau
268
+ Asia/Aqtobe
269
+ Asia/Ashgabat
270
+ Asia/Ashkhabad
271
+ Asia/Atyrau
272
+ Asia/Baghdad
273
+ Asia/Bahrain
274
+ Asia/Baku
275
+ Asia/Bangkok
276
+ Asia/Barnaul
277
+ Asia/Beirut
278
+ Asia/Bishkek
279
+ Asia/Brunei
280
+ Asia/Calcutta
281
+ Asia/Chita
282
+ Asia/Choibalsan
283
+ Asia/Chongqing
284
+ Asia/Chungking
285
+ Asia/Colombo
286
+ Asia/Dacca
287
+ Asia/Damascus
288
+ Asia/Dhaka
289
+ Asia/Dili
290
+ Asia/Dubai
291
+ Asia/Dushanbe
292
+ Asia/Famagusta
293
+ Asia/Gaza
294
+ Asia/Harbin
295
+ Asia/Hebron
296
+ Asia/Ho_Chi_Minh
297
+ Asia/Hong_Kong
298
+ Asia/Hovd
299
+ Asia/Irkutsk
300
+ Asia/Istanbul
301
+ Asia/Jakarta
302
+ Asia/Jayapura
303
+ Asia/Jerusalem
304
+ Asia/Kabul
305
+ Asia/Kamchatka
306
+ Asia/Karachi
307
+ Asia/Kashgar
308
+ Asia/Kathmandu
309
+ Asia/Katmandu
310
+ Asia/Khandyga
311
+ Asia/Kolkata
312
+ Asia/Krasnoyarsk
313
+ Asia/Kuala_Lumpur
314
+ Asia/Kuching
315
+ Asia/Kuwait
316
+ Asia/Macao
317
+ Asia/Macau
318
+ Asia/Magadan
319
+ Asia/Makassar
320
+ Asia/Manila
321
+ Asia/Muscat
322
+ Asia/Nicosia
323
+ Asia/Novokuznetsk
324
+ Asia/Novosibirsk
325
+ Asia/Omsk
326
+ Asia/Oral
327
+ Asia/Phnom_Penh
328
+ Asia/Pontianak
329
+ Asia/Pyongyang
330
+ Asia/Qatar
331
+ Asia/Qostanay
332
+ Asia/Qyzylorda
333
+ Asia/Rangoon
334
+ Asia/Riyadh
335
+ Asia/Saigon
336
+ Asia/Sakhalin
337
+ Asia/Samarkand
338
+ Asia/Seoul
339
+ Asia/Shanghai
340
+ Asia/Singapore
341
+ Asia/Srednekolymsk
342
+ Asia/Taipei
343
+ Asia/Tashkent
344
+ Asia/Tbilisi
345
+ Asia/Tehran
346
+ Asia/Tel_Aviv
347
+ Asia/Thimbu
348
+ Asia/Thimphu
349
+ Asia/Tokyo
350
+ Asia/Tomsk
351
+ Asia/Ujung_Pandang
352
+ Asia/Ulaanbaatar
353
+ Asia/Ulan_Bator
354
+ Asia/Urumqi
355
+ Asia/Ust-Nera
356
+ Asia/Vientiane
357
+ Asia/Vladivostok
358
+ Asia/Yakutsk
359
+ Asia/Yangon
360
+ Asia/Yekaterinburg
361
+ Asia/Yerevan
362
+ Atlantic/Azores
363
+ Atlantic/Bermuda
364
+ Atlantic/Canary
365
+ Atlantic/Cape_Verde
366
+ Atlantic/Faeroe
367
+ Atlantic/Faroe
368
+ Atlantic/Jan_Mayen
369
+ Atlantic/Madeira
370
+ Atlantic/Reykjavik
371
+ Atlantic/South_Georgia
372
+ Atlantic/St_Helena
373
+ Atlantic/Stanley
374
+ Australia/ACT
375
+ Australia/Adelaide
376
+ Australia/Brisbane
377
+ Australia/Broken_Hill
378
+ Australia/Canberra
379
+ Australia/Currie
380
+ Australia/Darwin
381
+ Australia/Eucla
382
+ Australia/Hobart
383
+ Australia/LHI
384
+ Australia/Lindeman
385
+ Australia/Lord_Howe
386
+ Australia/Melbourne
387
+ Australia/NSW
388
+ Australia/North
389
+ Australia/Perth
390
+ Australia/Queensland
391
+ Australia/South
392
+ Australia/Sydney
393
+ Australia/Tasmania
394
+ Australia/Victoria
395
+ Australia/West
396
+ Australia/Yancowinna
397
+ Brazil/Acre
398
+ Brazil/DeNoronha
399
+ Brazil/East
400
+ Brazil/West
401
+ CET
402
+ CST6CDT
403
+ Canada/Atlantic
404
+ Canada/Central
405
+ Canada/Eastern
406
+ Canada/Mountain
407
+ Canada/Newfoundland
408
+ Canada/Pacific
409
+ Canada/Saskatchewan
410
+ Canada/Yukon
411
+ Chile/Continental
412
+ Chile/EasterIsland
413
+ Cuba
414
+ EET
415
+ EST5EDT
416
+ Egypt
417
+ Eire
418
+ Etc/GMT
419
+ Etc/GMT+0
420
+ Etc/GMT+1
421
+ Etc/GMT+10
422
+ Etc/GMT+11
423
+ Etc/GMT+12
424
+ Etc/GMT+2
425
+ Etc/GMT+3
426
+ Etc/GMT+4
427
+ Etc/GMT+5
428
+ Etc/GMT+6
429
+ Etc/GMT+7
430
+ Etc/GMT+8
431
+ Etc/GMT+9
432
+ Etc/GMT-0
433
+ Etc/GMT-1
434
+ Etc/GMT-10
435
+ Etc/GMT-11
436
+ Etc/GMT-12
437
+ Etc/GMT-13
438
+ Etc/GMT-14
439
+ Etc/GMT-2
440
+ Etc/GMT-3
441
+ Etc/GMT-4
442
+ Etc/GMT-5
443
+ Etc/GMT-6
444
+ Etc/GMT-7
445
+ Etc/GMT-8
446
+ Etc/GMT-9
447
+ Etc/GMT0
448
+ Etc/Greenwich
449
+ Etc/UCT
450
+ Etc/UTC
451
+ Etc/Universal
452
+ Etc/Zulu
453
+ Europe/Amsterdam
454
+ Europe/Andorra
455
+ Europe/Astrakhan
456
+ Europe/Athens
457
+ Europe/Belfast
458
+ Europe/Belgrade
459
+ Europe/Berlin
460
+ Europe/Bratislava
461
+ Europe/Brussels
462
+ Europe/Bucharest
463
+ Europe/Budapest
464
+ Europe/Busingen
465
+ Europe/Chisinau
466
+ Europe/Copenhagen
467
+ Europe/Dublin
468
+ Europe/Gibraltar
469
+ Europe/Guernsey
470
+ Europe/Helsinki
471
+ Europe/Isle_of_Man
472
+ Europe/Istanbul
473
+ Europe/Jersey
474
+ Europe/Kaliningrad
475
+ Europe/Kiev
476
+ Europe/Kirov
477
+ Europe/Kyiv
478
+ Europe/Lisbon
479
+ Europe/Ljubljana
480
+ Europe/London
481
+ Europe/Luxembourg
482
+ Europe/Madrid
483
+ Europe/Malta
484
+ Europe/Mariehamn
485
+ Europe/Minsk
486
+ Europe/Monaco
487
+ Europe/Moscow
488
+ Europe/Nicosia
489
+ Europe/Oslo
490
+ Europe/Paris
491
+ Europe/Podgorica
492
+ Europe/Prague
493
+ Europe/Riga
494
+ Europe/Rome
495
+ Europe/Samara
496
+ Europe/San_Marino
497
+ Europe/Sarajevo
498
+ Europe/Saratov
499
+ Europe/Simferopol
500
+ Europe/Skopje
501
+ Europe/Sofia
502
+ Europe/Stockholm
503
+ Europe/Tallinn
504
+ Europe/Tirane
505
+ Europe/Tiraspol
506
+ Europe/Ulyanovsk
507
+ Europe/Uzhgorod
508
+ Europe/Vaduz
509
+ Europe/Vatican
510
+ Europe/Vienna
511
+ Europe/Vilnius
512
+ Europe/Volgograd
513
+ Europe/Warsaw
514
+ Europe/Zagreb
515
+ Europe/Zaporozhye
516
+ Europe/Zurich
517
+ GB
518
+ GB-Eire
519
+ GMT
520
+ GMT0
521
+ Greenwich
522
+ Hongkong
523
+ Iceland
524
+ Indian/Antananarivo
525
+ Indian/Chagos
526
+ Indian/Christmas
527
+ Indian/Cocos
528
+ Indian/Comoro
529
+ Indian/Kerguelen
530
+ Indian/Mahe
531
+ Indian/Maldives
532
+ Indian/Mauritius
533
+ Indian/Mayotte
534
+ Indian/Reunion
535
+ Iran
536
+ Israel
537
+ Jamaica
538
+ Japan
539
+ Kwajalein
540
+ Libya
541
+ MET
542
+ MST7MDT
543
+ Mexico/BajaNorte
544
+ Mexico/BajaSur
545
+ Mexico/General
546
+ NZ
547
+ NZ-CHAT
548
+ Navajo
549
+ PRC
550
+ PST8PDT
551
+ Pacific/Apia
552
+ Pacific/Auckland
553
+ Pacific/Bougainville
554
+ Pacific/Chatham
555
+ Pacific/Chuuk
556
+ Pacific/Easter
557
+ Pacific/Efate
558
+ Pacific/Enderbury
559
+ Pacific/Fakaofo
560
+ Pacific/Fiji
561
+ Pacific/Funafuti
562
+ Pacific/Galapagos
563
+ Pacific/Gambier
564
+ Pacific/Guadalcanal
565
+ Pacific/Guam
566
+ Pacific/Honolulu
567
+ Pacific/Johnston
568
+ Pacific/Kanton
569
+ Pacific/Kiritimati
570
+ Pacific/Kosrae
571
+ Pacific/Kwajalein
572
+ Pacific/Majuro
573
+ Pacific/Marquesas
574
+ Pacific/Midway
575
+ Pacific/Nauru
576
+ Pacific/Niue
577
+ Pacific/Norfolk
578
+ Pacific/Noumea
579
+ Pacific/Pago_Pago
580
+ Pacific/Palau
581
+ Pacific/Pitcairn
582
+ Pacific/Pohnpei
583
+ Pacific/Ponape
584
+ Pacific/Port_Moresby
585
+ Pacific/Rarotonga
586
+ Pacific/Saipan
587
+ Pacific/Samoa
588
+ Pacific/Tahiti
589
+ Pacific/Tarawa
590
+ Pacific/Tongatapu
591
+ Pacific/Truk
592
+ Pacific/Wake
593
+ Pacific/Wallis
594
+ Pacific/Yap
595
+ Poland
596
+ Portugal
597
+ ROK
598
+ Singapore
599
+ SystemV/AST4
600
+ SystemV/AST4ADT
601
+ SystemV/CST6
602
+ SystemV/CST6CDT
603
+ SystemV/EST5
604
+ SystemV/EST5EDT
605
+ SystemV/HST10
606
+ SystemV/MST7
607
+ SystemV/MST7MDT
608
+ SystemV/PST8
609
+ SystemV/PST8PDT
610
+ SystemV/YST9
611
+ SystemV/YST9YDT
612
+ Turkey
613
+ UCT
614
+ US/Alaska
615
+ US/Aleutian
616
+ US/Arizona
617
+ US/Central
618
+ US/East-Indiana
619
+ US/Eastern
620
+ US/Hawaii
621
+ US/Indiana-Starke
622
+ US/Michigan
623
+ US/Mountain
624
+ US/Pacific
625
+ US/Samoa
626
+ UTC
627
+ Universal
628
+ W-SU
629
+ WET
630
+ Zulu
631
+ ].to_set
632
+ end
633
+ end
634
+ end
@@ -0,0 +1,78 @@
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
+ module ElasticGraph
10
+ class GraphQL
11
+ class Schema
12
+ # A utility module for working with GraphQL schema arguments.
13
+ module Arguments
14
+ # A utility method to convert the given `args_hash` to its schema form.
15
+ # The schema form is the casing of the arguments according to the GraphQL
16
+ # schema definition. For example, consider a case like:
17
+ #
18
+ # type Query {
19
+ # widgets(orderBy: [WidgetSort!]): [Widget!]!
20
+ # }
21
+ #
22
+ # The GraphQL gem converts all arguments to ruby keyword args style (symbolized,
23
+ # snake_case keys) before passing the args to us, but the `orderBy` argument in
24
+ # the schema definition uses camelCase. ElasticGraph was designed to flexibly
25
+ # support whatever casing the schema developer chooses to use but the GraphQL
26
+ # gem's conversion to keyword args style gets in the way. ElasticGraph needs to
27
+ # receive the arguments in the casing form defined in the schema so that, for example,
28
+ # when it creates a datastore query, it correctly filters on fields according
29
+ # to the casing of the fields in the index.
30
+ #
31
+ # This utility method converts an args hash back to its schema form (string keys,
32
+ # with the casing from the schema) by using the arg definitions themselves to get
33
+ # the arg names from the GraphQL schema.
34
+ #
35
+ # Example:
36
+ #
37
+ # to_schema_form({ order_by: ["size"] }, widgets_field)
38
+ # # => { "orderBy" => ["size"] }
39
+ #
40
+ # The implementation here was taken from a code snippet provided by the maintainer of
41
+ # the GraphQL gem: https://github.com/rmosolgo/graphql-ruby/issues/2869
42
+ def self.to_schema_form(args_value, args_owner)
43
+ # For custom scalar types (such as `_Any` for apollo federation), `args_owner` won't
44
+ # response to `arguments`.
45
+ return args_value unless args_owner.respond_to?(:arguments)
46
+
47
+ __skip__ = case args_value
48
+ when Hash, ::GraphQL::Schema::InputObject
49
+ arg_defns = args_owner.arguments.values
50
+
51
+ {}.tap do |accumulator|
52
+ args_value.each do |key, value|
53
+ # Note: we could build `arg_defns` into a hash keyed by `keyword`
54
+ # outside of this loop, to give us an O(1) lookup here. However,
55
+ # usually there are a small number of args (e.g 1 or 2, maybe up
56
+ # to 6 in extreme cases) so it's probably likely to be ultimately
57
+ # slower to build the hash, particularly when you account for the
58
+ # extra memory allocation and GC for the hash.
59
+ arg_defn = arg_defns.find do |a|
60
+ a.keyword == key
61
+ end || raise(SchemaError, "Cannot find an argument definition for #{key.inspect} on `#{args_owner.name}`")
62
+
63
+ next_owner = arg_defn.type.unwrap
64
+ accumulator[arg_defn.name] = to_schema_form(value, next_owner)
65
+ end
66
+ end
67
+ when Array
68
+ args_value.map { |arg_value| to_schema_form(arg_value, args_owner) }
69
+ else
70
+ # :nocov: -- not sure how to cover this but we want this default branch.
71
+ args_value
72
+ # :nocov:
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end