bluejay 0.1.0.alpha.2-aarch64-linux

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.
Files changed (55) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +21 -0
  3. data/README.md +411 -0
  4. data/lib/bluejay/3.1/bluejay_rb.so +0 -0
  5. data/lib/bluejay/3.2/bluejay_rb.so +0 -0
  6. data/lib/bluejay/base/custom_scalar_type.rb +25 -0
  7. data/lib/bluejay/base/directive.rb +25 -0
  8. data/lib/bluejay/base/enum_type.rb +25 -0
  9. data/lib/bluejay/base/input_object_type.rb +25 -0
  10. data/lib/bluejay/base/interface_type.rb +25 -0
  11. data/lib/bluejay/base/object_type.rb +25 -0
  12. data/lib/bluejay/base/query_root.rb +25 -0
  13. data/lib/bluejay/base/schema.rb +25 -0
  14. data/lib/bluejay/base/union_type.rb +25 -0
  15. data/lib/bluejay/base.rb +11 -0
  16. data/lib/bluejay/base_input_type.rb +13 -0
  17. data/lib/bluejay/base_output_type.rb +15 -0
  18. data/lib/bluejay/builtin/directives/deprecated.rb +34 -0
  19. data/lib/bluejay/builtin/directives/include.rb +35 -0
  20. data/lib/bluejay/builtin/directives/skip.rb +35 -0
  21. data/lib/bluejay/builtin/directives/specified_by.rb +33 -0
  22. data/lib/bluejay/builtin/enum_types/directive_location.rb +44 -0
  23. data/lib/bluejay/builtin/enum_types/type_kind.rb +33 -0
  24. data/lib/bluejay/builtin/object_types/directive.rb +34 -0
  25. data/lib/bluejay/builtin/object_types/enum_value.rb +33 -0
  26. data/lib/bluejay/builtin/object_types/field.rb +35 -0
  27. data/lib/bluejay/builtin/object_types/input_value.rb +29 -0
  28. data/lib/bluejay/builtin/object_types/schema.rb +31 -0
  29. data/lib/bluejay/builtin/object_types/type.rb +57 -0
  30. data/lib/bluejay/builtin.rb +25 -0
  31. data/lib/bluejay/custom_scalar_type.rb +69 -0
  32. data/lib/bluejay/directive.rb +71 -0
  33. data/lib/bluejay/enum_type.rb +48 -0
  34. data/lib/bluejay/errors.rb +20 -0
  35. data/lib/bluejay/finalize.rb +27 -0
  36. data/lib/bluejay/input_object_type.rb +73 -0
  37. data/lib/bluejay/input_type_shorthands.rb +28 -0
  38. data/lib/bluejay/interface_type.rb +74 -0
  39. data/lib/bluejay/json_value.rb +16 -0
  40. data/lib/bluejay/name_from_class.rb +18 -0
  41. data/lib/bluejay/object_type.rb +81 -0
  42. data/lib/bluejay/output_type_shorthands.rb +28 -0
  43. data/lib/bluejay/query_root.rb +64 -0
  44. data/lib/bluejay/schema.rb +91 -0
  45. data/lib/bluejay/union_type.rb +50 -0
  46. data/lib/bluejay/version.rb +5 -0
  47. data/lib/bluejay.rb +45 -0
  48. data/lib/rbi_ext/model.rb +64 -0
  49. data/lib/tapioca/dsl/compilers/directive.rb +42 -0
  50. data/lib/tapioca/dsl/compilers/input_object_type.rb +41 -0
  51. data/lib/tapioca/dsl/compilers/interface_type.rb +33 -0
  52. data/lib/tapioca/dsl/compilers/object_type.rb +53 -0
  53. data/lib/tapioca/dsl/compilers/schema.rb +51 -0
  54. data/rust-toolchain.toml +2 -0
  55. metadata +118 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 29288940c28d84de164d799c6e69f4b3abc91db0c54aa5460da355db24ace6bc
4
+ data.tar.gz: 67385e760ced9fa200243c23c6b008cb2378c0da2d14625364db428f47d4335f
5
+ SHA512:
6
+ metadata.gz: bc54024cdeba1d6e696bf77ecadd67d8085e30d7965197982b64aa3e63f11c486dcd01cdfa2da86b8efc92b6c7630392b2e967f5d36cc0377523ec39d36ad387
7
+ data.tar.gz: e7eeb34a73e6c2a2497207527e3b2d71140732209374d5b0554e297a332bec1dd00c55899b079a1d2194bfb56ee57ce3ab63b1a2c30f4a3f7715323502fa2b5c
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2023 Adam Petro
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,411 @@
1
+ # `bluejay-rb`
2
+
3
+ > **Warning**
4
+ > This project is still very early in its development and should be considered highly unstable and experimental. It is incomplete and not ready for production use.
5
+
6
+ > **Note**
7
+ > In an effort to get a working proof-of-concept, documentation and test coverage has been sacrificied. This will be corrected prior to a stable release.
8
+
9
+ `bluejay-rb` is a GraphQL engine for Ruby written primarily in Rust through the use of [`magnus`](https://github.com/matsadler/magnus).
10
+
11
+ ## Goal
12
+
13
+ `bluejay-rb`'s goal is to provide a lightning fast GraphQL engine with first-class integration with [Sorbet](https://sorbet.org/). If you do not care deeply about one or both of these goals, then you should seriously consider using the excellent [`graphql-ruby`](https://graphql-ruby.org) gem, which has many more features than `bluejay-rb` in addition to being production-ready and much more customizable.
14
+
15
+ ## Benchmarks
16
+
17
+ Some benchmarks comparing the performance of `bluejay-rb` against `graphql-ruby` (with C parser) are located at [`/bench`](/bench). The results of some of these benchmarks are included below.
18
+
19
+ <!---benchmark result start-->
20
+ <details>
21
+ <summary>Parse + Execute (Ruby 3.2, YJIT enabled)</summary>
22
+
23
+ ```
24
+ Profiling IPS:
25
+ Warming up --------------------------------------
26
+ graphql 158.000 i/100ms
27
+ bluejay 1.764k i/100ms
28
+ Calculating -------------------------------------
29
+ graphql 1.928k (± 2.7%) i/s - 9.638k in 5.003328s
30
+ bluejay 17.899k (± 2.7%) i/s - 89.964k in 5.029921s
31
+
32
+ Comparison:
33
+ bluejay: 17899.5 i/s
34
+ graphql: 1927.9 i/s - 9.28x slower
35
+
36
+ Profiling Ruby memory allocations:
37
+ Calculating -------------------------------------
38
+ graphql 45.944k memsize ( 2.736k retained)
39
+ 421.000 objects ( 41.000 retained)
40
+ 12.000 strings ( 11.000 retained)
41
+ bluejay 5.256k memsize ( 208.000 retained)
42
+ 40.000 objects ( 2.000 retained)
43
+ 0.000 strings ( 0.000 retained)
44
+
45
+ Comparison:
46
+ bluejay: 5256 allocated
47
+ graphql: 45944 allocated - 8.74x more
48
+ ```
49
+ </details>
50
+
51
+ <details>
52
+ <summary>Parse + Execute (Ruby 3.2, YJIT disabled)</summary>
53
+
54
+ ```
55
+ Profiling IPS:
56
+ Warming up --------------------------------------
57
+ graphql 79.000 i/100ms
58
+ bluejay 1.804k i/100ms
59
+ Calculating -------------------------------------
60
+ graphql 781.860 (± 2.2%) i/s - 3.950k in 5.054411s
61
+ bluejay 18.017k (± 1.6%) i/s - 90.200k in 5.007842s
62
+
63
+ Comparison:
64
+ bluejay: 18016.7 i/s
65
+ graphql: 781.9 i/s - 23.04x slower
66
+
67
+ Profiling Ruby memory allocations:
68
+ Calculating -------------------------------------
69
+ graphql 45.944k memsize ( 21.752k retained)
70
+ 421.000 objects ( 197.000 retained)
71
+ 12.000 strings ( 12.000 retained)
72
+ bluejay 5.256k memsize ( 5.056k retained)
73
+ 40.000 objects ( 35.000 retained)
74
+ 0.000 strings ( 0.000 retained)
75
+
76
+ Comparison:
77
+ bluejay: 5256 allocated
78
+ graphql: 45944 allocated - 8.74x more
79
+ ```
80
+ </details>
81
+
82
+ <details>
83
+ <summary>Parse + Execute with large variables (Ruby 3.2, YJIT enabled)</summary>
84
+
85
+ ```
86
+ Profiling IPS:
87
+ Warming up --------------------------------------
88
+ graphql 166.000 i/100ms
89
+ bluejay 1.101k i/100ms
90
+ Calculating -------------------------------------
91
+ graphql 1.642k (± 2.1%) i/s - 8.300k in 5.055691s
92
+ bluejay 10.876k (± 1.8%) i/s - 55.050k in 5.063054s
93
+
94
+ Comparison:
95
+ bluejay: 10876.3 i/s
96
+ graphql: 1642.4 i/s - 6.62x slower
97
+
98
+ Profiling Ruby memory allocations:
99
+ Calculating -------------------------------------
100
+ graphql 97.728k memsize ( 40.000 retained)
101
+ 885.000 objects ( 1.000 retained)
102
+ 6.000 strings ( 0.000 retained)
103
+ bluejay 15.640k memsize ( 80.000 retained)
104
+ 228.000 objects ( 2.000 retained)
105
+ 15.000 strings ( 1.000 retained)
106
+
107
+ Comparison:
108
+ bluejay: 15640 allocated
109
+ graphql: 97728 allocated - 6.25x more
110
+ ```
111
+ </details>
112
+
113
+ <details>
114
+ <summary>Parse + Execute with large variables (Ruby 3.2, YJIT disabled)</summary>
115
+
116
+ ```
117
+ Profiling IPS:
118
+ Warming up --------------------------------------
119
+ graphql 79.000 i/100ms
120
+ bluejay 1.009k i/100ms
121
+ Calculating -------------------------------------
122
+ graphql 841.882 (± 1.5%) i/s - 4.266k in 5.068484s
123
+ bluejay 10.163k (± 2.1%) i/s - 51.459k in 5.065688s
124
+
125
+ Comparison:
126
+ bluejay: 10163.2 i/s
127
+ graphql: 841.9 i/s - 12.07x slower
128
+
129
+ Profiling Ruby memory allocations:
130
+ Calculating -------------------------------------
131
+ graphql 97.688k memsize ( 30.736k retained)
132
+ 884.000 objects ( 319.000 retained)
133
+ 6.000 strings ( 5.000 retained)
134
+ bluejay 12.600k memsize ( 536.000 retained)
135
+ 152.000 objects ( 6.000 retained)
136
+ 8.000 strings ( 1.000 retained)
137
+
138
+ Comparison:
139
+ bluejay: 12600 allocated
140
+ graphql: 97688 allocated - 7.75x more
141
+ ```
142
+ </details>
143
+
144
+ <details>
145
+ <summary>Parse small (Ruby 3.2, YJIT enabled)</summary>
146
+
147
+ ```
148
+ Profiling IPS:
149
+ Warming up --------------------------------------
150
+ bluejay 39.288k i/100ms
151
+ graphql 6.906k i/100ms
152
+ Calculating -------------------------------------
153
+ bluejay 397.916k (± 1.4%) i/s - 2.004M in 5.036417s
154
+ graphql 67.671k (± 4.9%) i/s - 338.394k in 5.015897s
155
+
156
+ Comparison:
157
+ bluejay: 397915.9 i/s
158
+ graphql: 67671.2 i/s - 5.88x slower
159
+
160
+ Profiling Ruby memory allocations:
161
+ Calculating -------------------------------------
162
+ bluejay 0.000 memsize ( 0.000 retained)
163
+ 0.000 objects ( 0.000 retained)
164
+ 0.000 strings ( 0.000 retained)
165
+ graphql 6.192k memsize ( 2.816k retained)
166
+ 70.000 objects ( 37.000 retained)
167
+ 6.000 strings ( 6.000 retained)
168
+
169
+ Comparison:
170
+ bluejay: 0 allocated
171
+ graphql: 6192 allocated - Infx more
172
+ ```
173
+ </details>
174
+
175
+ <details>
176
+ <summary>Parse small (Ruby 3.2, YJIT disabled)</summary>
177
+
178
+ ```
179
+ Profiling IPS:
180
+ Warming up --------------------------------------
181
+ bluejay 37.618k i/100ms
182
+ graphql 6.034k i/100ms
183
+ Calculating -------------------------------------
184
+ bluejay 403.347k (± 2.1%) i/s - 2.031M in 5.038540s
185
+ graphql 59.928k (± 2.0%) i/s - 301.700k in 5.036461s
186
+
187
+ Comparison:
188
+ bluejay: 403347.5 i/s
189
+ graphql: 59928.3 i/s - 6.73x slower
190
+
191
+ Profiling Ruby memory allocations:
192
+ Calculating -------------------------------------
193
+ bluejay 0.000 memsize ( 0.000 retained)
194
+ 0.000 objects ( 0.000 retained)
195
+ 0.000 strings ( 0.000 retained)
196
+ graphql 6.192k memsize ( 0.000 retained)
197
+ 70.000 objects ( 0.000 retained)
198
+ 6.000 strings ( 0.000 retained)
199
+
200
+ Comparison:
201
+ bluejay: 0 allocated
202
+ graphql: 6192 allocated - Infx more
203
+ ```
204
+ </details>
205
+
206
+ <details>
207
+ <summary>Parse large (Ruby 3.2, YJIT enabled)</summary>
208
+
209
+ ```
210
+ Profiling IPS:
211
+ Warming up --------------------------------------
212
+ bluejay 203.000 i/100ms
213
+ graphql 30.000 i/100ms
214
+ Calculating -------------------------------------
215
+ bluejay 2.106k (± 1.4%) i/s - 10.556k in 5.014156s
216
+ graphql 308.161 (± 1.9%) i/s - 1.560k in 5.064324s
217
+
218
+ Comparison:
219
+ bluejay: 2105.7 i/s
220
+ graphql: 308.2 i/s - 6.83x slower
221
+
222
+ Profiling Ruby memory allocations:
223
+ Calculating -------------------------------------
224
+ bluejay 0.000 memsize ( 0.000 retained)
225
+ 0.000 objects ( 0.000 retained)
226
+ 0.000 strings ( 0.000 retained)
227
+ graphql 1.425M memsize ( 556.448k retained)
228
+ 16.001k objects ( 7.541k retained)
229
+ 50.000 strings ( 50.000 retained)
230
+
231
+ Comparison:
232
+ bluejay: 0 allocated
233
+ graphql: 1425400 allocated - Infx more
234
+ ```
235
+ </details>
236
+
237
+ <details>
238
+ <summary>Parse large (Ruby 3.2, YJIT disabled)</summary>
239
+
240
+ ```
241
+ Profiling IPS:
242
+ Warming up --------------------------------------
243
+ bluejay 208.000 i/100ms
244
+ graphql 27.000 i/100ms
245
+ Calculating -------------------------------------
246
+ bluejay 2.098k (± 1.6%) i/s - 10.608k in 5.057106s
247
+ graphql 274.835 (± 1.8%) i/s - 1.377k in 5.011880s
248
+
249
+ Comparison:
250
+ bluejay: 2098.2 i/s
251
+ graphql: 274.8 i/s - 7.63x slower
252
+
253
+ Profiling Ruby memory allocations:
254
+ Calculating -------------------------------------
255
+ bluejay 0.000 memsize ( 0.000 retained)
256
+ 0.000 objects ( 0.000 retained)
257
+ 0.000 strings ( 0.000 retained)
258
+ graphql 1.425M memsize ( 0.000 retained)
259
+ 16.001k objects ( 0.000 retained)
260
+ 50.000 strings ( 0.000 retained)
261
+
262
+ Comparison:
263
+ bluejay: 0 allocated
264
+ graphql: 1425400 allocated - Infx more
265
+ ```
266
+ </details>
267
+
268
+ <details>
269
+ <summary>Parse + Validate (Ruby 3.2, YJIT enabled)</summary>
270
+
271
+ ```
272
+ Profiling IPS:
273
+ Warming up --------------------------------------
274
+ graphql 504.000 i/100ms
275
+ bluejay 5.370k i/100ms
276
+ Calculating -------------------------------------
277
+ graphql 4.991k (± 6.2%) i/s - 25.200k in 5.073307s
278
+ bluejay 45.612k (±11.5%) i/s - 225.540k in 5.057627s
279
+
280
+ Comparison:
281
+ bluejay: 45612.5 i/s
282
+ graphql: 4991.1 i/s - 9.14x slower
283
+
284
+ Profiling Ruby memory allocations:
285
+ Calculating -------------------------------------
286
+ graphql 33.392k memsize ( 12.200k retained)
287
+ 383.000 objects ( 152.000 retained)
288
+ 17.000 strings ( 13.000 retained)
289
+ bluejay 40.000 memsize ( 40.000 retained)
290
+ 1.000 objects ( 1.000 retained)
291
+ 0.000 strings ( 0.000 retained)
292
+
293
+ Comparison:
294
+ bluejay: 40 allocated
295
+ graphql: 33392 allocated - 834.80x more
296
+ ```
297
+ </details>
298
+
299
+ <details>
300
+ <summary>Parse + Validate (Ruby 3.2, YJIT disabled)</summary>
301
+
302
+ ```
303
+ Profiling IPS:
304
+ Warming up --------------------------------------
305
+ graphql 299.000 i/100ms
306
+ bluejay 4.726k i/100ms
307
+ Calculating -------------------------------------
308
+ graphql 2.953k (± 5.0%) i/s - 14.950k in 5.075697s
309
+ bluejay 51.904k (± 4.0%) i/s - 259.930k in 5.016499s
310
+
311
+ Comparison:
312
+ bluejay: 51904.0 i/s
313
+ graphql: 2953.1 i/s - 17.58x slower
314
+
315
+ Profiling Ruby memory allocations:
316
+ Calculating -------------------------------------
317
+ graphql 33.304k memsize ( 12.320k retained)
318
+ 381.000 objects ( 155.000 retained)
319
+ 15.000 strings ( 13.000 retained)
320
+ bluejay 40.000 memsize ( 40.000 retained)
321
+ 1.000 objects ( 1.000 retained)
322
+ 0.000 strings ( 0.000 retained)
323
+
324
+ Comparison:
325
+ bluejay: 40 allocated
326
+ graphql: 33304 allocated - 832.60x more
327
+ ```
328
+ </details>
329
+
330
+ <details>
331
+ <summary>Schema dump (Ruby 3.2, YJIT enabled)</summary>
332
+
333
+ ```
334
+ Profiling IPS:
335
+ Warming up --------------------------------------
336
+ graphql 189.000 i/100ms
337
+ bluejay 4.228k i/100ms
338
+ Calculating -------------------------------------
339
+ graphql 1.929k (± 7.3%) i/s - 9.639k in 5.026688s
340
+ bluejay 43.632k (± 4.6%) i/s - 219.856k in 5.050598s
341
+
342
+ Comparison:
343
+ bluejay: 43631.9 i/s
344
+ graphql: 1929.2 i/s - 22.62x slower
345
+
346
+ Profiling Ruby memory allocations:
347
+ Calculating -------------------------------------
348
+ graphql 77.788k memsize ( 0.000 retained)
349
+ 755.000 objects ( 0.000 retained)
350
+ 50.000 strings ( 0.000 retained)
351
+ bluejay 699.000 memsize ( 0.000 retained)
352
+ 1.000 objects ( 0.000 retained)
353
+ 1.000 strings ( 0.000 retained)
354
+
355
+ Comparison:
356
+ bluejay: 699 allocated
357
+ graphql: 77788 allocated - 111.28x more
358
+ ```
359
+ </details>
360
+
361
+ <details>
362
+ <summary>Schema dump (Ruby 3.2, YJIT disabled)</summary>
363
+
364
+ ```
365
+ Profiling IPS:
366
+ Warming up --------------------------------------
367
+ graphql 157.000 i/100ms
368
+ bluejay 4.662k i/100ms
369
+ Calculating -------------------------------------
370
+ graphql 1.562k (± 1.7%) i/s - 7.850k in 5.027157s
371
+ bluejay 45.335k (± 3.3%) i/s - 228.438k in 5.044407s
372
+
373
+ Comparison:
374
+ bluejay: 45335.1 i/s
375
+ graphql: 1561.9 i/s - 29.02x slower
376
+
377
+ Profiling Ruby memory allocations:
378
+ Calculating -------------------------------------
379
+ graphql 77.884k memsize ( 675.000 retained)
380
+ 755.000 objects ( 10.000 retained)
381
+ 50.000 strings ( 7.000 retained)
382
+ bluejay 699.000 memsize ( 0.000 retained)
383
+ 1.000 objects ( 0.000 retained)
384
+ 1.000 strings ( 0.000 retained)
385
+
386
+ Comparison:
387
+ bluejay: 699 allocated
388
+ graphql: 77884 allocated - 111.42x more
389
+ ```
390
+ </details>
391
+ <!---benchmark result end-->
392
+
393
+ ## Installation
394
+
395
+ Install the gem and add to the application's Gemfile by executing:
396
+
397
+ $ bundle add bluejay
398
+
399
+ If bundler is not being used to manage dependencies, install the gem by executing:
400
+
401
+ $ gem install bluejay
402
+
403
+ ## Usage
404
+
405
+ See an example in the [`/example`](/example) directory. Note the usage of [Tapioca](https://github.com/Shopify/tapioca) RBI generation for the DSL at [`/example/sorbet/rbi/dsl/graph`](/example/sorbet/rbi/dsl/graph)
406
+
407
+ ## Development
408
+
409
+ After checking out the repo, run `bin/setup` to install dependencies and `rake compile` to compile the Rust extension. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
410
+
411
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
Binary file
Binary file
@@ -0,0 +1,25 @@
1
+ # typed: strict
2
+ # frozen_string_literal: true
3
+
4
+ module Bluejay
5
+ module Base
6
+ module CustomScalarType
7
+ extend(T::Sig)
8
+ extend(T::Helpers)
9
+
10
+ interface!
11
+
12
+ module ClassMethods
13
+ extend(T::Sig)
14
+ extend(T::Helpers)
15
+
16
+ abstract!
17
+
18
+ sig { abstract.returns(CustomScalarTypeDefinition) }
19
+ def definition; end
20
+ end
21
+
22
+ mixes_in_class_methods(ClassMethods)
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+ # typed: strict
2
+ # frozen_string_literal: true
3
+
4
+ module Bluejay
5
+ module Base
6
+ module Directive
7
+ extend(T::Sig)
8
+ extend(T::Helpers)
9
+
10
+ interface!
11
+
12
+ module ClassMethods
13
+ extend(T::Sig)
14
+ extend(T::Helpers)
15
+
16
+ abstract!
17
+
18
+ sig { abstract.returns(DirectiveDefinition) }
19
+ def definition; end
20
+ end
21
+
22
+ mixes_in_class_methods(ClassMethods)
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+ # typed: strict
2
+ # frozen_string_literal: true
3
+
4
+ module Bluejay
5
+ module Base
6
+ module EnumType
7
+ extend(T::Sig)
8
+ extend(T::Helpers)
9
+
10
+ interface!
11
+
12
+ module ClassMethods
13
+ extend(T::Sig)
14
+ extend(T::Helpers)
15
+
16
+ abstract!
17
+
18
+ sig { abstract.returns(EnumTypeDefinition) }
19
+ def definition; end
20
+ end
21
+
22
+ mixes_in_class_methods(ClassMethods)
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+ # typed: strict
2
+ # frozen_string_literal: true
3
+
4
+ module Bluejay
5
+ module Base
6
+ module InputObjectType
7
+ extend(T::Sig)
8
+ extend(T::Helpers)
9
+
10
+ interface!
11
+
12
+ module ClassMethods
13
+ extend(T::Sig)
14
+ extend(T::Helpers)
15
+
16
+ abstract!
17
+
18
+ sig { abstract.returns(InputObjectTypeDefinition) }
19
+ def definition; end
20
+ end
21
+
22
+ mixes_in_class_methods(ClassMethods)
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+ # typed: strict
2
+ # frozen_string_literal: true
3
+
4
+ module Bluejay
5
+ module Base
6
+ module InterfaceType
7
+ extend(T::Sig)
8
+ extend(T::Helpers)
9
+
10
+ interface!
11
+
12
+ module ClassMethods
13
+ extend(T::Sig)
14
+ extend(T::Helpers)
15
+
16
+ abstract!
17
+
18
+ sig { abstract.returns(InterfaceTypeDefinition) }
19
+ def definition; end
20
+ end
21
+
22
+ mixes_in_class_methods(ClassMethods)
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+ # typed: strict
2
+ # frozen_string_literal: true
3
+
4
+ module Bluejay
5
+ module Base
6
+ module ObjectType
7
+ extend(T::Sig)
8
+ extend(T::Helpers)
9
+
10
+ interface!
11
+
12
+ module ClassMethods
13
+ extend(T::Sig)
14
+ extend(T::Helpers)
15
+
16
+ abstract!
17
+
18
+ sig { abstract.returns(ObjectTypeDefinition) }
19
+ def definition; end
20
+ end
21
+
22
+ mixes_in_class_methods(ClassMethods)
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+ # typed: strict
2
+ # frozen_string_literal: true
3
+
4
+ module Bluejay
5
+ module Base
6
+ module QueryRoot
7
+ extend(T::Sig)
8
+ extend(T::Helpers)
9
+
10
+ requires_ancestor { ObjectType }
11
+ interface!
12
+
13
+ module ClassMethods
14
+ extend(T::Sig)
15
+ extend(T::Helpers)
16
+
17
+ abstract!
18
+
19
+ requires_ancestor { ObjectType::ClassMethods }
20
+ end
21
+
22
+ mixes_in_class_methods(ClassMethods)
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+ # typed: strict
2
+ # frozen_string_literal: true
3
+
4
+ module Bluejay
5
+ module Base
6
+ module Schema
7
+ extend(T::Sig)
8
+ extend(T::Helpers)
9
+
10
+ interface!
11
+
12
+ module ClassMethods
13
+ extend(T::Sig)
14
+ extend(T::Helpers)
15
+
16
+ abstract!
17
+
18
+ sig { abstract.returns(SchemaDefinition) }
19
+ def definition; end
20
+ end
21
+
22
+ mixes_in_class_methods(ClassMethods)
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+ # typed: strict
2
+ # frozen_string_literal: true
3
+
4
+ module Bluejay
5
+ module Base
6
+ module UnionType
7
+ extend(T::Sig)
8
+ extend(T::Helpers)
9
+
10
+ interface!
11
+
12
+ module ClassMethods
13
+ extend(T::Sig)
14
+ extend(T::Helpers)
15
+
16
+ abstract!
17
+
18
+ sig { abstract.returns(UnionTypeDefinition) }
19
+ def definition; end
20
+ end
21
+
22
+ mixes_in_class_methods(ClassMethods)
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "base/custom_scalar_type"
4
+ require_relative "base/directive"
5
+ require_relative "base/enum_type"
6
+ require_relative "base/input_object_type"
7
+ require_relative "base/interface_type"
8
+ require_relative "base/object_type"
9
+ require_relative "base/query_root"
10
+ require_relative "base/schema"
11
+ require_relative "base/union_type"