sorbet-baml 0.2.0 → 0.3.0

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 (77) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +123 -2
  3. data/Rakefile +2 -2
  4. data/docs-site/.gitignore +48 -0
  5. data/docs-site/Gemfile +5 -0
  6. data/docs-site/Gemfile.lock +140 -0
  7. data/docs-site/Rakefile +3 -0
  8. data/docs-site/bridgetown.config.yml +15 -0
  9. data/docs-site/config/initializers.rb +9 -0
  10. data/docs-site/config/puma.rb +9 -0
  11. data/docs-site/config.ru +5 -0
  12. data/docs-site/esbuild.config.js +11 -0
  13. data/docs-site/frontend/javascript/index.js +22 -0
  14. data/docs-site/frontend/styles/index.css +61 -0
  15. data/docs-site/package.json +18 -0
  16. data/docs-site/postcss.config.js +6 -0
  17. data/docs-site/server/roda_app.rb +9 -0
  18. data/docs-site/src/_components/head.liquid +26 -0
  19. data/docs-site/src/_components/nav.liquid +68 -0
  20. data/docs-site/src/_layouts/default.liquid +27 -0
  21. data/docs-site/src/_layouts/doc.liquid +39 -0
  22. data/docs-site/src/advanced-usage.md +598 -0
  23. data/docs-site/src/getting-started.md +170 -0
  24. data/docs-site/src/index.md +183 -0
  25. data/docs-site/src/troubleshooting.md +317 -0
  26. data/docs-site/src/type-mapping.md +236 -0
  27. data/docs-site/tailwind.config.js +85 -0
  28. data/examples/description_parameters.rb +16 -16
  29. data/lib/sorbet_baml/comment_extractor.rb +31 -39
  30. data/lib/sorbet_baml/converter.rb +66 -32
  31. data/lib/sorbet_baml/dependency_resolver.rb +11 -11
  32. data/lib/sorbet_baml/description_extension.rb +5 -5
  33. data/lib/sorbet_baml/description_extractor.rb +8 -10
  34. data/lib/sorbet_baml/dspy_tool_converter.rb +97 -0
  35. data/lib/sorbet_baml/dspy_tool_extensions.rb +23 -0
  36. data/lib/sorbet_baml/enum_extensions.rb +2 -2
  37. data/lib/sorbet_baml/struct_extensions.rb +2 -2
  38. data/lib/sorbet_baml/tool_extensions.rb +23 -0
  39. data/lib/sorbet_baml/type_mapper.rb +35 -37
  40. data/lib/sorbet_baml/version.rb +1 -1
  41. data/lib/sorbet_baml.rb +41 -13
  42. data/sorbet/config +2 -0
  43. data/sorbet/rbi/gems/anthropic@1.5.0.rbi +21252 -0
  44. data/sorbet/rbi/gems/async@2.27.3.rbi +9 -0
  45. data/sorbet/rbi/gems/bigdecimal@3.2.2.rbi +9 -0
  46. data/sorbet/rbi/gems/concurrent-ruby@1.3.5.rbi +424 -0
  47. data/sorbet/rbi/gems/connection_pool@2.5.3.rbi +9 -0
  48. data/sorbet/rbi/gems/console@1.33.0.rbi +9 -0
  49. data/sorbet/rbi/gems/dry-configurable@1.3.0.rbi +672 -0
  50. data/sorbet/rbi/gems/dry-core@1.1.0.rbi +1729 -0
  51. data/sorbet/rbi/gems/dry-logger@1.1.0.rbi +1317 -0
  52. data/sorbet/rbi/gems/dspy@0.19.1.rbi +6677 -0
  53. data/sorbet/rbi/gems/ffi@1.17.2.rbi +2174 -0
  54. data/sorbet/rbi/gems/fiber-annotation@0.2.0.rbi +9 -0
  55. data/sorbet/rbi/gems/fiber-local@1.1.0.rbi +9 -0
  56. data/sorbet/rbi/gems/fiber-storage@1.0.1.rbi +9 -0
  57. data/sorbet/rbi/gems/google-protobuf@4.32.0.rbi +9 -0
  58. data/sorbet/rbi/gems/googleapis-common-protos-types@1.20.0.rbi +9 -0
  59. data/sorbet/rbi/gems/informers@1.2.1.rbi +1875 -0
  60. data/sorbet/rbi/gems/io-event@1.12.1.rbi +9 -0
  61. data/sorbet/rbi/gems/metrics@0.13.0.rbi +9 -0
  62. data/sorbet/rbi/gems/onnxruntime@0.10.0.rbi +304 -0
  63. data/sorbet/rbi/gems/openai@0.16.0.rbi +68055 -0
  64. data/sorbet/rbi/gems/opentelemetry-api@1.6.0.rbi +9 -0
  65. data/sorbet/rbi/gems/opentelemetry-common@0.22.0.rbi +9 -0
  66. data/sorbet/rbi/gems/opentelemetry-exporter-otlp@0.30.0.rbi +9 -0
  67. data/sorbet/rbi/gems/opentelemetry-registry@0.4.0.rbi +9 -0
  68. data/sorbet/rbi/gems/opentelemetry-sdk@1.8.1.rbi +9 -0
  69. data/sorbet/rbi/gems/opentelemetry-semantic_conventions@1.11.0.rbi +9 -0
  70. data/sorbet/rbi/gems/polars-df@0.20.0.rbi +9 -0
  71. data/sorbet/rbi/gems/sorbet-result@1.4.0.rbi +242 -0
  72. data/sorbet/rbi/gems/sorbet-schema@0.9.2.rbi +743 -0
  73. data/sorbet/rbi/gems/sorbet-struct-comparable@1.3.0.rbi +48 -0
  74. data/sorbet/rbi/gems/tokenizers@0.5.5.rbi +754 -0
  75. data/sorbet/rbi/gems/traces@0.17.0.rbi +9 -0
  76. data/sorbet/rbi/gems/zeitwerk@2.7.3.rbi +1429 -0
  77. metadata +63 -2
@@ -0,0 +1,743 @@
1
+ # typed: true
2
+
3
+ # DO NOT EDIT MANUALLY
4
+ # This is an autogenerated file for types exported from the `sorbet-schema` gem.
5
+ # Please instead update this file by running `bin/tapioca gem sorbet-schema`.
6
+
7
+
8
+ # typed: strict
9
+
10
+ # We don't want a dependency on ActiveSupport.
11
+ # This is a simplified version of ActiveSupport's Key Hash extension
12
+ # https://github.com/rails/rails/blob/main/activesupport/lib/active_support/core_ext/hash/keys.rb
13
+ #
14
+ # source://sorbet-schema//lib/sorbet-schema/hash_transformer.rb#6
15
+ class HashTransformer
16
+ class << self
17
+ # source://sorbet-schema//lib/sorbet-schema/hash_transformer.rb#18
18
+ sig { params(hash: T::Hash[T.untyped, T.untyped]).returns(T::Hash[T.untyped, T.untyped]) }
19
+ def serialize_values(hash); end
20
+
21
+ # source://sorbet-schema//lib/sorbet-schema/hash_transformer.rb#11
22
+ sig { params(hash: T::Hash[T.untyped, T.untyped]).returns(T::Hash[::Symbol, T.untyped]) }
23
+ def symbolize_keys(hash); end
24
+ end
25
+ end
26
+
27
+ # source://sorbet-schema//lib/sorbet-schema/serialize_value.rb#3
28
+ class SerializeValue
29
+ class << self
30
+ # source://sorbet-schema//lib/sorbet-schema/serialize_value.rb#7
31
+ sig { params(value: T.untyped).returns(T.untyped) }
32
+ def serialize(value); end
33
+ end
34
+ end
35
+
36
+ class T::InexactStruct
37
+ include ::T::Props
38
+ include ::T::Props::Plugin
39
+ include ::T::Props::Optional
40
+ include ::T::Props::PrettyPrintable
41
+ include ::T::Props::Serializable
42
+ include ::T::Props::WeakConstructor
43
+ include ::T::Props::Constructor
44
+ extend ::T::Props::ClassMethods
45
+ extend ::T::Props::Plugin::ClassMethods
46
+ extend ::T::Props::Serializable::ClassMethods
47
+ end
48
+
49
+ # source://sorbet-schema//lib/sorbet-schema/t/struct.rb#4
50
+ class T::Struct < ::T::InexactStruct
51
+ # source://sorbet-schema//lib/sorbet-schema/t/struct.rb#26
52
+ sig do
53
+ params(
54
+ serializer_type: Symbol,
55
+ options: T::Hash[Symbol, T.untyped]
56
+ ).returns(Typed::Result[T.untyped, Typed::SerializeError])
57
+ end
58
+ def serialize_to(serializer_type, options: T.unsafe(nil)); end
59
+
60
+ class << self
61
+ # source://sorbet-schema//lib/sorbet-schema/t/struct.rb#21
62
+ sig do
63
+ params(
64
+ serializer_type: Symbol,
65
+ source: T.untyped,
66
+ options: T::Hash[Symbol, T.untyped]
67
+ ).returns(Typed::Result[T.attached_class, Typed::DeserializeError])
68
+ end
69
+ def deserialize_from(serializer_type, source, options: T.unsafe(nil)); end
70
+
71
+ # source://sorbet-schema//lib/sorbet-schema/t/struct.rb#6
72
+ sig { overridable.returns(Typed::Schema) }
73
+ def schema; end
74
+
75
+ # source://sorbet-schema//lib/sorbet-schema/t/struct.rb#10
76
+ sig { params(type: Symbol, options: T::Hash[Symbol, T.untyped]).returns(Typed::Serializer[T.untyped, T.untyped]) }
77
+ def serializer(type, options: T.unsafe(nil)); end
78
+ end
79
+ end
80
+
81
+ # source://sorbet-schema//lib/sorbet-schema.rb#32
82
+ module Typed
83
+ class << self
84
+ # source://sorbet-result/1.4.0/lib/typed/result.rb#159
85
+ sig { type_parameters(:T).params(error: T.type_parameter(:T)).returns(Typed::Failure[T.type_parameter(:T)]) }
86
+ def Failure(error); end
87
+
88
+ # source://sorbet-result/1.4.0/lib/typed/result.rb#150
89
+ sig { type_parameters(:T).params(payload: T.type_parameter(:T)).returns(Typed::Success[T.type_parameter(:T)]) }
90
+ def Success(payload); end
91
+ end
92
+ end
93
+
94
+ # source://sorbet-schema//lib/typed/coercion.rb#4
95
+ module Typed::Coercion
96
+ class << self
97
+ # source://sorbet-schema//lib/typed/coercion.rb#13
98
+ sig do
99
+ params(
100
+ type: ::T::Types::Base,
101
+ value: T.untyped
102
+ ).returns(Typed::Result[T.untyped, ::Typed::Coercion::CoercionError])
103
+ end
104
+ def coerce(type:, value:); end
105
+
106
+ # source://sorbet-schema//lib/typed/coercion.rb#8
107
+ sig { params(coercer: T.class_of(Typed::Coercion::Coercer)).void }
108
+ def register_coercer(coercer); end
109
+ end
110
+ end
111
+
112
+ # source://sorbet-schema//lib/typed/coercion/boolean_coercer.rb#5
113
+ class Typed::Coercion::BooleanCoercer < ::Typed::Coercion::Coercer
114
+ extend T::Generic
115
+
116
+ Target = type_member { { fixed: T::Boolean } }
117
+
118
+ # source://sorbet-schema//lib/typed/coercion/boolean_coercer.rb#16
119
+ sig do
120
+ override
121
+ .params(
122
+ type: ::T::Types::Base,
123
+ value: T.untyped
124
+ ).returns(Typed::Result[Target, ::Typed::Coercion::CoercionError])
125
+ end
126
+ def coerce(type:, value:); end
127
+
128
+ # source://sorbet-schema//lib/typed/coercion/boolean_coercer.rb#11
129
+ sig { override.params(type: ::T::Types::Base).returns(T::Boolean) }
130
+ def used_for_type?(type); end
131
+ end
132
+
133
+ # @abstract It cannot be directly instantiated. Subclasses must implement the `abstract` methods below.
134
+ #
135
+ # source://sorbet-schema//lib/typed/coercion/coercer.rb#5
136
+ class Typed::Coercion::Coercer
137
+ extend T::Generic
138
+
139
+ abstract!
140
+
141
+ Target = type_member(:out)
142
+
143
+ # @abstract
144
+ #
145
+ # source://sorbet-schema//lib/typed/coercion/coercer.rb#18
146
+ sig do
147
+ abstract
148
+ .params(
149
+ type: ::T::Types::Base,
150
+ value: T.untyped
151
+ ).returns(Typed::Result[Target, ::Typed::Coercion::CoercionError])
152
+ end
153
+ def coerce(type:, value:); end
154
+
155
+ # @abstract
156
+ #
157
+ # source://sorbet-schema//lib/typed/coercion/coercer.rb#14
158
+ sig { abstract.params(type: ::T::Types::Base).returns(T::Boolean) }
159
+ def used_for_type?(type); end
160
+ end
161
+
162
+ # source://sorbet-schema//lib/typed/coercion/coercer_registry.rb#7
163
+ class Typed::Coercion::CoercerRegistry
164
+ include ::Singleton
165
+ extend ::Singleton::SingletonClassMethods
166
+
167
+ # source://sorbet-schema//lib/typed/coercion/coercer_registry.rb#32
168
+ sig { void }
169
+ def initialize; end
170
+
171
+ # source://sorbet-schema//lib/typed/coercion/coercer_registry.rb#37
172
+ sig { params(coercer: T.class_of(Typed::Coercion::Coercer)).void }
173
+ def register(coercer); end
174
+
175
+ # source://sorbet-schema//lib/typed/coercion/coercer_registry.rb#42
176
+ sig { void }
177
+ def reset!; end
178
+
179
+ # source://sorbet-schema//lib/typed/coercion/coercer_registry.rb#47
180
+ sig { params(type: ::T::Types::Base).returns(T.nilable(T.class_of(Typed::Coercion::Coercer))) }
181
+ def select_coercer_by(type:); end
182
+
183
+ class << self
184
+ private
185
+
186
+ def allocate; end
187
+ def new(*_arg0); end
188
+ end
189
+ end
190
+
191
+ # source://sorbet-schema//lib/typed/coercion/coercer_registry.rb#14
192
+ Typed::Coercion::CoercerRegistry::DEFAULT_COERCERS = T.let(T.unsafe(nil), Array)
193
+
194
+ # source://sorbet-schema//lib/typed/coercion/coercer_registry.rb#12
195
+ Typed::Coercion::CoercerRegistry::Registry = T.type_alias { T::Array[T.class_of(Typed::Coercion::Coercer)] }
196
+
197
+ # source://sorbet-schema//lib/typed/coercion/coercion_error.rb#5
198
+ class Typed::Coercion::CoercionError < ::StandardError; end
199
+
200
+ # source://sorbet-schema//lib/typed/coercion/coercion_not_supported_error.rb#5
201
+ class Typed::Coercion::CoercionNotSupportedError < ::Typed::Coercion::CoercionError
202
+ # source://sorbet-schema//lib/typed/coercion/coercion_not_supported_error.rb#9
203
+ sig { params(type: ::T::Types::Base).void }
204
+ def initialize(type:); end
205
+ end
206
+
207
+ # source://sorbet-schema//lib/typed/coercion/date_coercer.rb#7
208
+ class Typed::Coercion::DateCoercer < ::Typed::Coercion::Coercer
209
+ extend T::Generic
210
+
211
+ Target = type_member { { fixed: Date } }
212
+
213
+ # source://sorbet-schema//lib/typed/coercion/date_coercer.rb#18
214
+ sig do
215
+ override
216
+ .params(
217
+ type: ::T::Types::Base,
218
+ value: T.untyped
219
+ ).returns(Typed::Result[Target, ::Typed::Coercion::CoercionError])
220
+ end
221
+ def coerce(type:, value:); end
222
+
223
+ # source://sorbet-schema//lib/typed/coercion/date_coercer.rb#13
224
+ sig { override.params(type: ::T::Types::Base).returns(T::Boolean) }
225
+ def used_for_type?(type); end
226
+ end
227
+
228
+ # source://sorbet-schema//lib/typed/coercion/date_time_coercer.rb#7
229
+ class Typed::Coercion::DateTimeCoercer < ::Typed::Coercion::Coercer
230
+ extend T::Generic
231
+
232
+ Target = type_member { { fixed: DateTime } }
233
+
234
+ # source://sorbet-schema//lib/typed/coercion/date_time_coercer.rb#18
235
+ sig do
236
+ override
237
+ .params(
238
+ type: ::T::Types::Base,
239
+ value: T.untyped
240
+ ).returns(Typed::Result[Target, ::Typed::Coercion::CoercionError])
241
+ end
242
+ def coerce(type:, value:); end
243
+
244
+ # source://sorbet-schema//lib/typed/coercion/date_time_coercer.rb#13
245
+ sig { override.params(type: ::T::Types::Base).returns(T::Boolean) }
246
+ def used_for_type?(type); end
247
+ end
248
+
249
+ # source://sorbet-schema//lib/typed/coercion/enum_coercer.rb#5
250
+ class Typed::Coercion::EnumCoercer < ::Typed::Coercion::Coercer
251
+ extend T::Generic
252
+
253
+ Target = type_member { { fixed: T::Enum } }
254
+
255
+ # source://sorbet-schema//lib/typed/coercion/enum_coercer.rb#18
256
+ sig do
257
+ override
258
+ .params(
259
+ type: ::T::Types::Base,
260
+ value: T.untyped
261
+ ).returns(Typed::Result[Target, ::Typed::Coercion::CoercionError])
262
+ end
263
+ def coerce(type:, value:); end
264
+
265
+ # source://sorbet-schema//lib/typed/coercion/enum_coercer.rb#11
266
+ sig { override.params(type: ::T::Types::Base).returns(T::Boolean) }
267
+ def used_for_type?(type); end
268
+ end
269
+
270
+ # source://sorbet-schema//lib/typed/coercion/float_coercer.rb#5
271
+ class Typed::Coercion::FloatCoercer < ::Typed::Coercion::Coercer
272
+ extend T::Generic
273
+
274
+ Target = type_member { { fixed: Float } }
275
+
276
+ # source://sorbet-schema//lib/typed/coercion/float_coercer.rb#16
277
+ sig do
278
+ override
279
+ .params(
280
+ type: ::T::Types::Base,
281
+ value: T.untyped
282
+ ).returns(Typed::Result[Target, ::Typed::Coercion::CoercionError])
283
+ end
284
+ def coerce(type:, value:); end
285
+
286
+ # source://sorbet-schema//lib/typed/coercion/float_coercer.rb#11
287
+ sig { override.params(type: ::T::Types::Base).returns(T::Boolean) }
288
+ def used_for_type?(type); end
289
+ end
290
+
291
+ # source://sorbet-schema//lib/typed/coercion/integer_coercer.rb#5
292
+ class Typed::Coercion::IntegerCoercer < ::Typed::Coercion::Coercer
293
+ extend T::Generic
294
+
295
+ Target = type_member { { fixed: Integer } }
296
+
297
+ # source://sorbet-schema//lib/typed/coercion/integer_coercer.rb#16
298
+ sig do
299
+ override
300
+ .params(
301
+ type: ::T::Types::Base,
302
+ value: T.untyped
303
+ ).returns(Typed::Result[Target, ::Typed::Coercion::CoercionError])
304
+ end
305
+ def coerce(type:, value:); end
306
+
307
+ # source://sorbet-schema//lib/typed/coercion/integer_coercer.rb#11
308
+ sig { override.params(type: ::T::Types::Base).returns(T::Boolean) }
309
+ def used_for_type?(type); end
310
+ end
311
+
312
+ # source://sorbet-schema//lib/typed/coercion/string_coercer.rb#5
313
+ class Typed::Coercion::StringCoercer < ::Typed::Coercion::Coercer
314
+ extend T::Generic
315
+
316
+ Target = type_member { { fixed: String } }
317
+
318
+ # source://sorbet-schema//lib/typed/coercion/string_coercer.rb#16
319
+ sig do
320
+ override
321
+ .params(
322
+ type: ::T::Types::Base,
323
+ value: T.untyped
324
+ ).returns(Typed::Result[Target, ::Typed::Coercion::CoercionError])
325
+ end
326
+ def coerce(type:, value:); end
327
+
328
+ # source://sorbet-schema//lib/typed/coercion/string_coercer.rb#11
329
+ sig { override.params(type: ::T::Types::Base).returns(T::Boolean) }
330
+ def used_for_type?(type); end
331
+ end
332
+
333
+ # source://sorbet-schema//lib/typed/coercion/struct_coercer.rb#5
334
+ class Typed::Coercion::StructCoercer < ::Typed::Coercion::Coercer
335
+ extend T::Generic
336
+
337
+ Target = type_member { { fixed: T::Struct } }
338
+
339
+ # source://sorbet-schema//lib/typed/coercion/struct_coercer.rb#18
340
+ sig do
341
+ override
342
+ .params(
343
+ type: ::T::Types::Base,
344
+ value: T.untyped
345
+ ).returns(Typed::Result[Target, ::Typed::Coercion::CoercionError])
346
+ end
347
+ def coerce(type:, value:); end
348
+
349
+ # source://sorbet-schema//lib/typed/coercion/struct_coercer.rb#11
350
+ sig { override.params(type: ::T::Types::Base).returns(T::Boolean) }
351
+ def used_for_type?(type); end
352
+ end
353
+
354
+ # source://sorbet-schema//lib/typed/coercion/symbol_coercer.rb#5
355
+ class Typed::Coercion::SymbolCoercer < ::Typed::Coercion::Coercer
356
+ extend T::Generic
357
+
358
+ Target = type_member { { fixed: Symbol } }
359
+
360
+ # source://sorbet-schema//lib/typed/coercion/symbol_coercer.rb#16
361
+ sig do
362
+ override
363
+ .params(
364
+ type: ::T::Types::Base,
365
+ value: T.untyped
366
+ ).returns(Typed::Result[Target, ::Typed::Coercion::CoercionError])
367
+ end
368
+ def coerce(type:, value:); end
369
+
370
+ # source://sorbet-schema//lib/typed/coercion/symbol_coercer.rb#11
371
+ sig { override.params(type: ::T::Types::Base).returns(T::Boolean) }
372
+ def used_for_type?(type); end
373
+ end
374
+
375
+ # source://sorbet-schema//lib/typed/coercion/typed_array_coercer.rb#5
376
+ class Typed::Coercion::TypedArrayCoercer < ::Typed::Coercion::Coercer
377
+ extend T::Generic
378
+
379
+ Target = type_member { { fixed: T::Array[T.untyped] } }
380
+
381
+ # source://sorbet-schema//lib/typed/coercion/typed_array_coercer.rb#16
382
+ sig do
383
+ override
384
+ .params(
385
+ type: ::T::Types::Base,
386
+ value: T.untyped
387
+ ).returns(Typed::Result[Target, ::Typed::Coercion::CoercionError])
388
+ end
389
+ def coerce(type:, value:); end
390
+
391
+ # source://sorbet-schema//lib/typed/coercion/typed_array_coercer.rb#11
392
+ sig { override.params(type: ::T::Types::Base).returns(T::Boolean) }
393
+ def used_for_type?(type); end
394
+ end
395
+
396
+ # source://sorbet-schema//lib/typed/coercion/typed_hash_coercer.rb#5
397
+ class Typed::Coercion::TypedHashCoercer < ::Typed::Coercion::Coercer
398
+ extend T::Generic
399
+
400
+ Target = type_member { { fixed: T::Hash[T.untyped, T.untyped] } }
401
+
402
+ # source://sorbet-schema//lib/typed/coercion/typed_hash_coercer.rb#16
403
+ sig do
404
+ override
405
+ .params(
406
+ type: ::T::Types::Base,
407
+ value: T.untyped
408
+ ).returns(Typed::Result[Target, ::Typed::Coercion::CoercionError])
409
+ end
410
+ def coerce(type:, value:); end
411
+
412
+ # source://sorbet-schema//lib/typed/coercion/typed_hash_coercer.rb#11
413
+ sig { override.params(type: ::T::Types::Base).returns(T::Boolean) }
414
+ def used_for_type?(type); end
415
+ end
416
+
417
+ # source://sorbet-schema//lib/typed/deserialize_error.rb#4
418
+ class Typed::DeserializeError < ::Typed::SerializationError
419
+ # source://sorbet-schema//lib/typed/deserialize_error.rb#8
420
+ sig { returns({error: ::String}) }
421
+ def to_h; end
422
+
423
+ # source://sorbet-schema//lib/typed/deserialize_error.rb#13
424
+ sig { params(_options: T::Hash[T.untyped, T.untyped]).returns(::String) }
425
+ def to_json(_options = T.unsafe(nil)); end
426
+ end
427
+
428
+ # source://sorbet-schema//lib/typed/field.rb#4
429
+ class Typed::Field
430
+ # source://sorbet-schema//lib/typed/field.rb#33
431
+ sig do
432
+ params(
433
+ name: ::Symbol,
434
+ type: T.any(::T::Types::Base, T::Class[T.anything]),
435
+ optional: T::Boolean,
436
+ default: T.untyped,
437
+ inline_serializer: T.nilable(T.proc.params(arg0: T.untyped).returns(T.untyped))
438
+ ).void
439
+ end
440
+ def initialize(name:, type:, optional: T.unsafe(nil), default: T.unsafe(nil), inline_serializer: T.unsafe(nil)); end
441
+
442
+ # source://sorbet-schema//lib/typed/field.rb#61
443
+ sig { params(other: ::Typed::Field).returns(T.nilable(T::Boolean)) }
444
+ def ==(other); end
445
+
446
+ # source://sorbet-schema//lib/typed/field.rb#16
447
+ sig { returns(T.untyped) }
448
+ def default; end
449
+
450
+ # source://sorbet-schema//lib/typed/field.rb#22
451
+ sig { returns(T.nilable(T.proc.params(arg0: T.untyped).returns(T.untyped))) }
452
+ def inline_serializer; end
453
+
454
+ # source://sorbet-schema//lib/typed/field.rb#10
455
+ sig { returns(::Symbol) }
456
+ def name; end
457
+
458
+ # source://sorbet-schema//lib/typed/field.rb#75
459
+ sig { returns(T::Boolean) }
460
+ def optional?; end
461
+
462
+ # source://sorbet-schema//lib/typed/field.rb#19
463
+ sig { returns(T::Boolean) }
464
+ def required; end
465
+
466
+ # source://sorbet-schema//lib/typed/field.rb#70
467
+ sig { returns(T::Boolean) }
468
+ def required?; end
469
+
470
+ # source://sorbet-schema//lib/typed/field.rb#80
471
+ sig { params(value: T.untyped).returns(T.untyped) }
472
+ def serialize(value); end
473
+
474
+ # source://sorbet-schema//lib/typed/field.rb#13
475
+ sig { returns(::T::Types::Base) }
476
+ def type; end
477
+
478
+ # source://sorbet-schema//lib/typed/field.rb#89
479
+ sig do
480
+ params(
481
+ value: T.untyped
482
+ ).returns(Typed::Result[::Typed::Validations::ValidatedValue, ::Typed::Validations::ValidationError])
483
+ end
484
+ def validate(value); end
485
+
486
+ # source://sorbet-schema//lib/typed/field.rb#94
487
+ sig { params(value: T.untyped).returns(T::Boolean) }
488
+ def works_with?(value); end
489
+ end
490
+
491
+ # source://sorbet-schema//lib/typed/field.rb#7
492
+ Typed::Field::InlineSerializer = T.type_alias { T.proc.params(arg0: T.untyped).returns(T.untyped) }
493
+
494
+ # source://sorbet-schema//lib/typed/hash_serializer.rb#4
495
+ class Typed::HashSerializer < ::Typed::Serializer
496
+ extend T::Generic
497
+
498
+ Input = type_member { { fixed: T::Hash[T.any(::String, ::Symbol), T.untyped] } }
499
+ Output = type_member { { fixed: T::Hash[::Symbol, T.untyped] } }
500
+
501
+ # source://sorbet-schema//lib/typed/hash_serializer.rb#13
502
+ sig { params(schema: ::Typed::Schema, should_serialize_values: T::Boolean).void }
503
+ def initialize(schema:, should_serialize_values: T.unsafe(nil)); end
504
+
505
+ # source://sorbet-schema//lib/typed/hash_serializer.rb#20
506
+ sig { override.params(source: Input).returns(Typed::Result[::T::Struct, ::Typed::DeserializeError]) }
507
+ def deserialize(source); end
508
+
509
+ # source://sorbet-schema//lib/typed/hash_serializer.rb#25
510
+ sig { override.params(struct: ::T::Struct).returns(Typed::Result[Output, ::Typed::SerializeError]) }
511
+ def serialize(struct); end
512
+
513
+ # source://sorbet-schema//lib/typed/hash_serializer.rb#10
514
+ sig { returns(T::Boolean) }
515
+ def should_serialize_values; end
516
+ end
517
+
518
+ # source://sorbet-schema//lib/typed/hash_serializer.rb#5
519
+ Typed::HashSerializer::InputHash = T.type_alias { T::Hash[T.any(::String, ::Symbol), T.untyped] }
520
+
521
+ # source://sorbet-schema//lib/typed/json_serializer.rb#6
522
+ class Typed::JSONSerializer < ::Typed::Serializer
523
+ extend T::Generic
524
+
525
+ Input = type_member { { fixed: String } }
526
+ Output = type_member { { fixed: String } }
527
+
528
+ # source://sorbet-schema//lib/typed/json_serializer.rb#11
529
+ sig { override.params(source: Input).returns(Typed::Result[::T::Struct, ::Typed::DeserializeError]) }
530
+ def deserialize(source); end
531
+
532
+ # source://sorbet-schema//lib/typed/json_serializer.rb#24
533
+ sig { override.params(struct: ::T::Struct).returns(Typed::Result[Output, ::Typed::SerializeError]) }
534
+ def serialize(struct); end
535
+ end
536
+
537
+ # source://sorbet-schema//lib/typed/parse_error.rb#4
538
+ class Typed::ParseError < ::Typed::DeserializeError
539
+ # source://sorbet-schema//lib/typed/parse_error.rb#8
540
+ sig { params(format: ::Symbol).void }
541
+ def initialize(format:); end
542
+ end
543
+
544
+ # source://sorbet-schema//lib/typed/schema.rb#4
545
+ class Typed::Schema < ::T::Struct
546
+ include ::Comparable
547
+
548
+ const :fields, T::Array[::Typed::Field], default: T.unsafe(nil)
549
+ const :target, T.class_of(T::Struct)
550
+
551
+ # source://sorbet-schema//lib/typed/schema.rb#32
552
+ sig do
553
+ params(
554
+ field_name: ::Symbol,
555
+ serializer: T.proc.params(arg0: T.untyped).returns(T.untyped)
556
+ ).returns(::Typed::Schema)
557
+ end
558
+ def add_serializer(field_name, serializer); end
559
+
560
+ # source://sorbet-schema//lib/typed/schema.rb#22
561
+ sig do
562
+ params(
563
+ hash: T::Hash[T.any(::String, ::Symbol), T.untyped]
564
+ ).returns(Typed::Result[::T::Struct, ::Typed::DeserializeError])
565
+ end
566
+ def from_hash(hash); end
567
+
568
+ # source://sorbet-schema//lib/typed/schema.rb#27
569
+ sig { params(json: ::String).returns(Typed::Result[::T::Struct, ::Typed::DeserializeError]) }
570
+ def from_json(json); end
571
+
572
+ class << self
573
+ # source://sorbet-schema//lib/typed/schema.rb#12
574
+ sig { params(struct: T.class_of(T::Struct)).returns(::Typed::Schema) }
575
+ def from_struct(struct); end
576
+
577
+ # source://sorbet-runtime/0.5.12414/lib/types/struct.rb#13
578
+ def inherited(s); end
579
+ end
580
+ end
581
+
582
+ # source://sorbet-schema//lib/typed/serialization_error.rb#4
583
+ class Typed::SerializationError < ::StandardError
584
+ # source://sorbet-schema//lib/typed/serialization_error.rb#8
585
+ sig { returns({error: ::String}) }
586
+ def to_h; end
587
+
588
+ # source://sorbet-schema//lib/typed/serialization_error.rb#13
589
+ sig { params(_options: T::Hash[T.untyped, T.untyped]).returns(::String) }
590
+ def to_json(_options = T.unsafe(nil)); end
591
+ end
592
+
593
+ # source://sorbet-schema//lib/typed/serialize_error.rb#4
594
+ class Typed::SerializeError < ::Typed::SerializationError; end
595
+
596
+ # @abstract It cannot be directly instantiated. Subclasses must implement the `abstract` methods below.
597
+ #
598
+ # source://sorbet-schema//lib/typed/serializer.rb#4
599
+ class Typed::Serializer
600
+ extend T::Generic
601
+
602
+ abstract!
603
+
604
+ Input = type_member
605
+ Output = type_member
606
+
607
+ # source://sorbet-schema//lib/typed/serializer.rb#19
608
+ sig { params(schema: ::Typed::Schema).void }
609
+ def initialize(schema:); end
610
+
611
+ # @abstract
612
+ #
613
+ # source://sorbet-schema//lib/typed/serializer.rb#24
614
+ sig { abstract.params(source: Input).returns(Typed::Result[::T::Struct, ::Typed::DeserializeError]) }
615
+ def deserialize(source); end
616
+
617
+ # source://sorbet-schema//lib/typed/serializer.rb#16
618
+ sig { returns(::Typed::Schema) }
619
+ def schema; end
620
+
621
+ # @abstract
622
+ #
623
+ # source://sorbet-schema//lib/typed/serializer.rb#28
624
+ sig { abstract.params(struct: ::T::Struct).returns(Typed::Result[Output, ::Typed::SerializeError]) }
625
+ def serialize(struct); end
626
+
627
+ private
628
+
629
+ # source://sorbet-schema//lib/typed/serializer.rb#34
630
+ sig do
631
+ params(
632
+ creation_params: T::Hash[::Symbol, T.untyped]
633
+ ).returns(Typed::Result[::T::Struct, ::Typed::DeserializeError])
634
+ end
635
+ def deserialize_from_creation_params(creation_params); end
636
+
637
+ # source://sorbet-schema//lib/typed/serializer.rb#84
638
+ sig { params(struct: ::T::Struct, should_serialize_values: T::Boolean).returns(T::Hash[::Symbol, T.untyped]) }
639
+ def serialize_from_struct(struct:, should_serialize_values: T.unsafe(nil)); end
640
+ end
641
+
642
+ # source://sorbet-schema//lib/typed/serializer.rb#13
643
+ Typed::Serializer::DeserializeResult = T.type_alias { Typed::Result[::T::Struct, ::Typed::DeserializeError] }
644
+
645
+ # source://sorbet-schema//lib/typed/serializer.rb#12
646
+ Typed::Serializer::Params = T.type_alias { T::Hash[::Symbol, T.untyped] }
647
+
648
+ # source://sorbet-schema//lib/typed/validations.rb#4
649
+ module Typed::Validations; end
650
+
651
+ # source://sorbet-schema//lib/typed/validations/field_type_validator.rb#5
652
+ class Typed::Validations::FieldTypeValidator
653
+ include ::Typed::Validations::FieldValidator
654
+
655
+ # source://sorbet-schema//lib/typed/validations/field_type_validator.rb#11
656
+ sig do
657
+ override
658
+ .params(
659
+ field: ::Typed::Field,
660
+ value: T.untyped
661
+ ).returns(Typed::Result[::Typed::Validations::ValidatedValue, ::Typed::Validations::ValidationError])
662
+ end
663
+ def validate(field:, value:); end
664
+ end
665
+
666
+ # @abstract Subclasses must implement the `abstract` methods below.
667
+ #
668
+ # source://sorbet-schema//lib/typed/validations/field_validator.rb#5
669
+ module Typed::Validations::FieldValidator
670
+ interface!
671
+
672
+ # @abstract
673
+ #
674
+ # source://sorbet-schema//lib/typed/validations/field_validator.rb#11
675
+ sig do
676
+ abstract
677
+ .params(
678
+ field: ::Typed::Field,
679
+ value: T.untyped
680
+ ).returns(Typed::Result[::Typed::Validations::ValidatedValue, ::Typed::Validations::ValidationError])
681
+ end
682
+ def validate(field:, value:); end
683
+ end
684
+
685
+ # source://sorbet-schema//lib/typed/validations/multiple_validation_error.rb#5
686
+ class Typed::Validations::MultipleValidationError < ::Typed::Validations::ValidationError
687
+ # source://sorbet-schema//lib/typed/validations/multiple_validation_error.rb#9
688
+ sig { params(errors: T::Array[::Typed::Validations::ValidationError]).void }
689
+ def initialize(errors:); end
690
+ end
691
+
692
+ # source://sorbet-schema//lib/typed/validations/required_field_error.rb#5
693
+ class Typed::Validations::RequiredFieldError < ::Typed::Validations::ValidationError
694
+ # source://sorbet-schema//lib/typed/validations/required_field_error.rb#9
695
+ sig { params(field_name: ::Symbol).void }
696
+ def initialize(field_name:); end
697
+ end
698
+
699
+ # source://sorbet-schema//lib/typed/validations/type_mismatch_error.rb#5
700
+ class Typed::Validations::TypeMismatchError < ::Typed::Validations::ValidationError
701
+ # source://sorbet-schema//lib/typed/validations/type_mismatch_error.rb#9
702
+ sig { params(field_name: ::Symbol, field_type: ::T::Types::Base, given_type: T::Class[T.anything]).void }
703
+ def initialize(field_name:, field_type:, given_type:); end
704
+ end
705
+
706
+ # source://sorbet-schema//lib/typed/validations.rb#6
707
+ Typed::Validations::ValidatedParams = T.type_alias { T::Hash[::Symbol, T.untyped] }
708
+
709
+ # source://sorbet-schema//lib/typed/validations/validated_value.rb#5
710
+ class Typed::Validations::ValidatedValue < ::T::Struct
711
+ include ::Comparable
712
+
713
+ const :name, ::Symbol
714
+ const :value, T.untyped
715
+
716
+ class << self
717
+ # source://sorbet-runtime/0.5.12414/lib/types/struct.rb#13
718
+ def inherited(s); end
719
+ end
720
+ end
721
+
722
+ # source://sorbet-schema//lib/typed/validations/validation_error.rb#5
723
+ class Typed::Validations::ValidationError < ::Typed::DeserializeError; end
724
+
725
+ # source://sorbet-schema//lib/typed/validations.rb#5
726
+ Typed::Validations::ValidationResult = T.type_alias { Typed::Result[::Typed::Validations::ValidatedValue, ::Typed::Validations::ValidationError] }
727
+
728
+ # source://sorbet-schema//lib/typed/validations/validation_results.rb#5
729
+ class Typed::Validations::ValidationResults < ::T::Struct
730
+ const :results, T::Array[Typed::Result[::Typed::Validations::ValidatedValue, ::Typed::Validations::ValidationError]]
731
+
732
+ # source://sorbet-schema//lib/typed/validations/validation_results.rb#11
733
+ sig { returns(Typed::Result[T::Hash[::Symbol, T.untyped], ::Typed::Validations::ValidationError]) }
734
+ def combine; end
735
+
736
+ class << self
737
+ # source://sorbet-runtime/0.5.12414/lib/types/struct.rb#13
738
+ def inherited(s); end
739
+ end
740
+ end
741
+
742
+ # source://sorbet-schema//lib/sorbet-schema.rb#33
743
+ Typed::Value = T.type_alias { T.untyped }