spikard 0.12.0 → 0.15.2

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 (206) hide show
  1. checksums.yaml +4 -4
  2. data/Steepfile +6 -0
  3. data/ext/spikard_rb/extconf.rb +1 -2
  4. data/ext/spikard_rb/{Cargo.lock → native/Cargo.lock} +897 -451
  5. data/ext/spikard_rb/native/Cargo.toml +24 -0
  6. data/ext/spikard_rb/src/lib.rs +5366 -3
  7. data/lib/spikard/native.rb +86 -0
  8. data/lib/spikard/version.rb +6 -1
  9. data/lib/spikard.rb +8 -45
  10. data/lib/spikard_rb.so +0 -0
  11. data/sig/types.rbs +427 -0
  12. metadata +14 -242
  13. data/LICENSE +0 -1
  14. data/README.md +0 -267
  15. data/ext/spikard_rb/Cargo.toml +0 -17
  16. data/lib/spikard/app.rb +0 -428
  17. data/lib/spikard/background.rb +0 -58
  18. data/lib/spikard/config.rb +0 -506
  19. data/lib/spikard/converters.rb +0 -13
  20. data/lib/spikard/grpc.rb +0 -182
  21. data/lib/spikard/handler_wrapper.rb +0 -113
  22. data/lib/spikard/provide.rb +0 -214
  23. data/lib/spikard/response.rb +0 -173
  24. data/lib/spikard/schema.rb +0 -243
  25. data/lib/spikard/sse.rb +0 -111
  26. data/lib/spikard/streaming_response.rb +0 -44
  27. data/lib/spikard/testing.rb +0 -432
  28. data/lib/spikard/upload_file.rb +0 -131
  29. data/lib/spikard/websocket.rb +0 -59
  30. data/sig/spikard.rbs +0 -719
  31. data/vendor/crates/spikard-bindings-shared/Cargo.toml +0 -80
  32. data/vendor/crates/spikard-bindings-shared/examples/config_extraction.rs +0 -132
  33. data/vendor/crates/spikard-bindings-shared/src/config_extractor.rs +0 -905
  34. data/vendor/crates/spikard-bindings-shared/src/conversion_traits.rs +0 -210
  35. data/vendor/crates/spikard-bindings-shared/src/di_traits.rs +0 -252
  36. data/vendor/crates/spikard-bindings-shared/src/error_response.rs +0 -404
  37. data/vendor/crates/spikard-bindings-shared/src/grpc_metadata.rs +0 -199
  38. data/vendor/crates/spikard-bindings-shared/src/handler_base.rs +0 -252
  39. data/vendor/crates/spikard-bindings-shared/src/json_conversion.rs +0 -829
  40. data/vendor/crates/spikard-bindings-shared/src/lazy_cache.rs +0 -587
  41. data/vendor/crates/spikard-bindings-shared/src/lib.rs +0 -33
  42. data/vendor/crates/spikard-bindings-shared/src/lifecycle_base.rs +0 -298
  43. data/vendor/crates/spikard-bindings-shared/src/lifecycle_executor.rs +0 -594
  44. data/vendor/crates/spikard-bindings-shared/src/response_builder.rs +0 -743
  45. data/vendor/crates/spikard-bindings-shared/src/response_interpreter.rs +0 -944
  46. data/vendor/crates/spikard-bindings-shared/src/test_client_base.rs +0 -260
  47. data/vendor/crates/spikard-bindings-shared/src/validation_helpers.rs +0 -369
  48. data/vendor/crates/spikard-bindings-shared/tests/config_extractor_behavior.rs +0 -192
  49. data/vendor/crates/spikard-bindings-shared/tests/error_response_edge_cases.rs +0 -383
  50. data/vendor/crates/spikard-bindings-shared/tests/full_coverage.rs +0 -459
  51. data/vendor/crates/spikard-bindings-shared/tests/handler_base_integration.rs +0 -280
  52. data/vendor/crates/spikard-bindings-shared/tests/integration_tests.rs +0 -669
  53. data/vendor/crates/spikard-core/Cargo.toml +0 -60
  54. data/vendor/crates/spikard-core/src/bindings/mod.rs +0 -3
  55. data/vendor/crates/spikard-core/src/bindings/response.rs +0 -130
  56. data/vendor/crates/spikard-core/src/debug.rs +0 -127
  57. data/vendor/crates/spikard-core/src/di/container.rs +0 -702
  58. data/vendor/crates/spikard-core/src/di/dependency.rs +0 -273
  59. data/vendor/crates/spikard-core/src/di/error.rs +0 -118
  60. data/vendor/crates/spikard-core/src/di/factory.rs +0 -538
  61. data/vendor/crates/spikard-core/src/di/graph.rs +0 -507
  62. data/vendor/crates/spikard-core/src/di/mod.rs +0 -192
  63. data/vendor/crates/spikard-core/src/di/resolved.rs +0 -428
  64. data/vendor/crates/spikard-core/src/di/value.rs +0 -282
  65. data/vendor/crates/spikard-core/src/errors.rs +0 -72
  66. data/vendor/crates/spikard-core/src/http.rs +0 -492
  67. data/vendor/crates/spikard-core/src/lib.rs +0 -29
  68. data/vendor/crates/spikard-core/src/lifecycle.rs +0 -1273
  69. data/vendor/crates/spikard-core/src/metadata.rs +0 -378
  70. data/vendor/crates/spikard-core/src/parameters.rs +0 -2546
  71. data/vendor/crates/spikard-core/src/problem.rs +0 -358
  72. data/vendor/crates/spikard-core/src/request_data.rs +0 -1146
  73. data/vendor/crates/spikard-core/src/router.rs +0 -530
  74. data/vendor/crates/spikard-core/src/schema_registry.rs +0 -197
  75. data/vendor/crates/spikard-core/src/type_hints.rs +0 -311
  76. data/vendor/crates/spikard-core/src/validation/error_mapper.rs +0 -710
  77. data/vendor/crates/spikard-core/src/validation/mod.rs +0 -470
  78. data/vendor/crates/spikard-core/tests/bindings_response_tests.rs +0 -136
  79. data/vendor/crates/spikard-core/tests/di_dependency_defaults.rs +0 -37
  80. data/vendor/crates/spikard-core/tests/error_mapper.rs +0 -761
  81. data/vendor/crates/spikard-core/tests/parameters_edge_cases.rs +0 -106
  82. data/vendor/crates/spikard-core/tests/parameters_full.rs +0 -701
  83. data/vendor/crates/spikard-core/tests/parameters_schema_and_formats.rs +0 -301
  84. data/vendor/crates/spikard-core/tests/request_data_roundtrip.rs +0 -67
  85. data/vendor/crates/spikard-core/tests/validation_coverage.rs +0 -250
  86. data/vendor/crates/spikard-core/tests/validation_error_paths.rs +0 -45
  87. data/vendor/crates/spikard-http/Cargo.toml +0 -87
  88. data/vendor/crates/spikard-http/examples/sse-notifications.rs +0 -148
  89. data/vendor/crates/spikard-http/examples/websocket-chat.rs +0 -92
  90. data/vendor/crates/spikard-http/src/auth.rs +0 -301
  91. data/vendor/crates/spikard-http/src/background.rs +0 -1860
  92. data/vendor/crates/spikard-http/src/bindings/mod.rs +0 -3
  93. data/vendor/crates/spikard-http/src/bindings/response.rs +0 -1
  94. data/vendor/crates/spikard-http/src/body_metadata.rs +0 -8
  95. data/vendor/crates/spikard-http/src/cors.rs +0 -1026
  96. data/vendor/crates/spikard-http/src/debug.rs +0 -128
  97. data/vendor/crates/spikard-http/src/di_handler.rs +0 -1672
  98. data/vendor/crates/spikard-http/src/grpc/framing.rs +0 -469
  99. data/vendor/crates/spikard-http/src/grpc/handler.rs +0 -1122
  100. data/vendor/crates/spikard-http/src/grpc/mod.rs +0 -434
  101. data/vendor/crates/spikard-http/src/grpc/service.rs +0 -622
  102. data/vendor/crates/spikard-http/src/grpc/streaming.rs +0 -319
  103. data/vendor/crates/spikard-http/src/handler_response.rs +0 -901
  104. data/vendor/crates/spikard-http/src/handler_trait.rs +0 -1015
  105. data/vendor/crates/spikard-http/src/handler_trait_tests.rs +0 -290
  106. data/vendor/crates/spikard-http/src/jsonrpc/http_handler.rs +0 -502
  107. data/vendor/crates/spikard-http/src/jsonrpc/method_registry.rs +0 -648
  108. data/vendor/crates/spikard-http/src/jsonrpc/mod.rs +0 -58
  109. data/vendor/crates/spikard-http/src/jsonrpc/protocol.rs +0 -1207
  110. data/vendor/crates/spikard-http/src/jsonrpc/router.rs +0 -2262
  111. data/vendor/crates/spikard-http/src/lib.rs +0 -548
  112. data/vendor/crates/spikard-http/src/lifecycle/adapter.rs +0 -230
  113. data/vendor/crates/spikard-http/src/lifecycle.rs +0 -1193
  114. data/vendor/crates/spikard-http/src/middleware/mod.rs +0 -560
  115. data/vendor/crates/spikard-http/src/middleware/multipart.rs +0 -912
  116. data/vendor/crates/spikard-http/src/middleware/urlencoded.rs +0 -513
  117. data/vendor/crates/spikard-http/src/middleware/validation.rs +0 -768
  118. data/vendor/crates/spikard-http/src/openapi/mod.rs +0 -309
  119. data/vendor/crates/spikard-http/src/openapi/parameter_extraction.rs +0 -535
  120. data/vendor/crates/spikard-http/src/openapi/schema_conversion.rs +0 -1363
  121. data/vendor/crates/spikard-http/src/openapi/spec_generation.rs +0 -667
  122. data/vendor/crates/spikard-http/src/query_parser.rs +0 -793
  123. data/vendor/crates/spikard-http/src/response.rs +0 -720
  124. data/vendor/crates/spikard-http/src/server/fast_router.rs +0 -186
  125. data/vendor/crates/spikard-http/src/server/grpc_routing.rs +0 -858
  126. data/vendor/crates/spikard-http/src/server/handler.rs +0 -1661
  127. data/vendor/crates/spikard-http/src/server/lifecycle_execution.rs +0 -253
  128. data/vendor/crates/spikard-http/src/server/mod.rs +0 -1649
  129. data/vendor/crates/spikard-http/src/server/request_extraction.rs +0 -871
  130. data/vendor/crates/spikard-http/src/server/routing_factory.rs +0 -618
  131. data/vendor/crates/spikard-http/src/sse.rs +0 -1409
  132. data/vendor/crates/spikard-http/src/testing/form.rs +0 -52
  133. data/vendor/crates/spikard-http/src/testing/multipart.rs +0 -64
  134. data/vendor/crates/spikard-http/src/testing/test_client.rs +0 -787
  135. data/vendor/crates/spikard-http/src/testing.rs +0 -617
  136. data/vendor/crates/spikard-http/src/websocket.rs +0 -1477
  137. data/vendor/crates/spikard-http/tests/auth_integration.rs +0 -645
  138. data/vendor/crates/spikard-http/tests/background_behavior.rs +0 -832
  139. data/vendor/crates/spikard-http/tests/common/grpc_helpers.rs +0 -1012
  140. data/vendor/crates/spikard-http/tests/common/handlers.rs +0 -309
  141. data/vendor/crates/spikard-http/tests/common/mod.rs +0 -33
  142. data/vendor/crates/spikard-http/tests/common/test_builders.rs +0 -628
  143. data/vendor/crates/spikard-http/tests/di_handler_error_responses.rs +0 -162
  144. data/vendor/crates/spikard-http/tests/di_integration.rs +0 -192
  145. data/vendor/crates/spikard-http/tests/doc_snippets.rs +0 -5
  146. data/vendor/crates/spikard-http/tests/grpc_bidirectional_streaming.rs +0 -430
  147. data/vendor/crates/spikard-http/tests/grpc_client_streaming.rs +0 -738
  148. data/vendor/crates/spikard-http/tests/grpc_error_handling_test.rs +0 -652
  149. data/vendor/crates/spikard-http/tests/grpc_integration_test.rs +0 -334
  150. data/vendor/crates/spikard-http/tests/grpc_metadata_test.rs +0 -532
  151. data/vendor/crates/spikard-http/tests/grpc_server_integration.rs +0 -495
  152. data/vendor/crates/spikard-http/tests/grpc_server_streaming.rs +0 -974
  153. data/vendor/crates/spikard-http/tests/lifecycle_execution.rs +0 -1093
  154. data/vendor/crates/spikard-http/tests/middleware_stack_integration.rs +0 -389
  155. data/vendor/crates/spikard-http/tests/multipart_behavior.rs +0 -656
  156. data/vendor/crates/spikard-http/tests/request_extraction_full.rs +0 -513
  157. data/vendor/crates/spikard-http/tests/server_auth_middleware_behavior.rs +0 -328
  158. data/vendor/crates/spikard-http/tests/server_config_builder.rs +0 -314
  159. data/vendor/crates/spikard-http/tests/server_configured_router_behavior.rs +0 -200
  160. data/vendor/crates/spikard-http/tests/server_cors_preflight.rs +0 -83
  161. data/vendor/crates/spikard-http/tests/server_handler_wrappers.rs +0 -464
  162. data/vendor/crates/spikard-http/tests/server_method_router_additional_behavior.rs +0 -286
  163. data/vendor/crates/spikard-http/tests/server_method_router_coverage.rs +0 -118
  164. data/vendor/crates/spikard-http/tests/server_middleware_behavior.rs +0 -99
  165. data/vendor/crates/spikard-http/tests/server_middleware_branches.rs +0 -204
  166. data/vendor/crates/spikard-http/tests/server_openapi_jsonrpc_static.rs +0 -421
  167. data/vendor/crates/spikard-http/tests/server_router_behavior.rs +0 -121
  168. data/vendor/crates/spikard-http/tests/sse_behavior.rs +0 -620
  169. data/vendor/crates/spikard-http/tests/sse_full_behavior.rs +0 -584
  170. data/vendor/crates/spikard-http/tests/sse_handler_behavior.rs +0 -130
  171. data/vendor/crates/spikard-http/tests/test_client_requests.rs +0 -167
  172. data/vendor/crates/spikard-http/tests/testing_helpers.rs +0 -87
  173. data/vendor/crates/spikard-http/tests/testing_module_coverage.rs +0 -155
  174. data/vendor/crates/spikard-http/tests/urlencoded_content_type.rs +0 -82
  175. data/vendor/crates/spikard-http/tests/websocket_behavior.rs +0 -663
  176. data/vendor/crates/spikard-http/tests/websocket_full_behavior.rs +0 -440
  177. data/vendor/crates/spikard-http/tests/websocket_integration.rs +0 -150
  178. data/vendor/crates/spikard-rb/Cargo.toml +0 -68
  179. data/vendor/crates/spikard-rb/build.rs +0 -200
  180. data/vendor/crates/spikard-rb/src/background.rs +0 -63
  181. data/vendor/crates/spikard-rb/src/config/mod.rs +0 -5
  182. data/vendor/crates/spikard-rb/src/config/server_config.rs +0 -401
  183. data/vendor/crates/spikard-rb/src/conversion.rs +0 -688
  184. data/vendor/crates/spikard-rb/src/di/builder.rs +0 -100
  185. data/vendor/crates/spikard-rb/src/di/mod.rs +0 -375
  186. data/vendor/crates/spikard-rb/src/grpc/handler.rs +0 -834
  187. data/vendor/crates/spikard-rb/src/grpc/mod.rs +0 -13
  188. data/vendor/crates/spikard-rb/src/gvl.rs +0 -80
  189. data/vendor/crates/spikard-rb/src/handler.rs +0 -699
  190. data/vendor/crates/spikard-rb/src/integration/mod.rs +0 -3
  191. data/vendor/crates/spikard-rb/src/lib.rs +0 -2264
  192. data/vendor/crates/spikard-rb/src/lifecycle.rs +0 -303
  193. data/vendor/crates/spikard-rb/src/metadata/mod.rs +0 -5
  194. data/vendor/crates/spikard-rb/src/metadata/route_extraction.rs +0 -507
  195. data/vendor/crates/spikard-rb/src/request.rs +0 -439
  196. data/vendor/crates/spikard-rb/src/runtime/mod.rs +0 -5
  197. data/vendor/crates/spikard-rb/src/runtime/server_runner.rs +0 -344
  198. data/vendor/crates/spikard-rb/src/server.rs +0 -307
  199. data/vendor/crates/spikard-rb/src/sse.rs +0 -231
  200. data/vendor/crates/spikard-rb/src/testing/client.rs +0 -698
  201. data/vendor/crates/spikard-rb/src/testing/mod.rs +0 -7
  202. data/vendor/crates/spikard-rb/src/testing/sse.rs +0 -108
  203. data/vendor/crates/spikard-rb/src/testing/websocket.rs +0 -573
  204. data/vendor/crates/spikard-rb/src/websocket.rs +0 -475
  205. data/vendor/crates/spikard-rb-macros/Cargo.toml +0 -25
  206. data/vendor/crates/spikard-rb-macros/src/lib.rs +0 -51
@@ -0,0 +1,86 @@
1
+ # This file is auto-generated by alef — DO NOT EDIT.
2
+ # alef:hash:5edec17b527ff92ce6cce13114f42972a434edf40e174a174cbb292c5f29567f
3
+ # To regenerate: alef generate
4
+ # To verify freshness: alef verify --exit-code
5
+ # Issues & docs: https://github.com/kreuzberg-dev/alef
6
+ # frozen_string_literal: true
7
+
8
+ require 'json'
9
+ require 'sorbet-runtime'
10
+ require 'spikard_rb'
11
+ module Spikard
12
+ # Security scheme types
13
+ module SecuritySchemeInfo
14
+ extend T::Helpers
15
+ extend T::Sig
16
+
17
+ interface!
18
+
19
+ # Dispatch from a Hash to the appropriate variant constructor.
20
+ # @param hash [Hash] with discriminator field and variant-specific fields
21
+ # @return [variant_class] an instance of the appropriate variant
22
+ sig { params(hash: T::Hash[T.untyped, T.untyped]).returns(T.untyped) }
23
+ def self.from_hash(hash)
24
+ discriminator = hash[:type] || hash['type']
25
+ case discriminator
26
+ when 'http' then SecuritySchemeInfoHttp.from_hash(hash)
27
+ when 'apiKey' then SecuritySchemeInfoApiKey.from_hash(hash)
28
+ else raise "Unknown discriminator: #{discriminator}"
29
+ end
30
+ end
31
+ end
32
+
33
+ # Variant SecuritySchemeInfoHttp of the SecuritySchemeInfo sum type.
34
+ SecuritySchemeInfoHttp = Data.define(:scheme, :bearer_format) do
35
+ include SecuritySchemeInfo
36
+ extend T::Sig
37
+
38
+ # @return [String]
39
+ sig { returns(String) }
40
+ def scheme = super # rubocop:disable Lint/UselessMethodDefinition
41
+
42
+ # @return [T.nilable(String)]
43
+ sig { returns(T.nilable(String)) }
44
+ def bearer_format = super # rubocop:disable Lint/UselessMethodDefinition
45
+
46
+ sig { returns(T::Boolean) }
47
+ def http? = true
48
+
49
+ sig { returns(T::Boolean) }
50
+ def api_key? = false
51
+
52
+ # @param hash [Hash] deserialized from the native extension
53
+ # @return [self]
54
+ sig { params(hash: T::Hash[T.untyped, T.untyped]).returns(T.attached_class) }
55
+ def self.from_hash(hash)
56
+ new(scheme: hash[:scheme] || hash['scheme'], bearer_format: hash[:bearer_format] || hash['bearer_format'])
57
+ end
58
+ end
59
+
60
+ # Variant SecuritySchemeInfoApiKey of the SecuritySchemeInfo sum type.
61
+ SecuritySchemeInfoApiKey = Data.define(:location, :name) do
62
+ include SecuritySchemeInfo
63
+ extend T::Sig
64
+
65
+ # @return [String]
66
+ sig { returns(String) }
67
+ def location = super # rubocop:disable Lint/UselessMethodDefinition
68
+
69
+ # @return [String]
70
+ sig { returns(String) }
71
+ def name = super # rubocop:disable Lint/UselessMethodDefinition
72
+
73
+ sig { returns(T::Boolean) }
74
+ def http? = false
75
+
76
+ sig { returns(T::Boolean) }
77
+ def api_key? = true
78
+
79
+ # @param hash [Hash] deserialized from the native extension
80
+ # @return [self]
81
+ sig { params(hash: T::Hash[T.untyped, T.untyped]).returns(T.attached_class) }
82
+ def self.from_hash(hash)
83
+ new(location: hash[:location] || hash['location'], name: hash[:name] || hash['name'])
84
+ end
85
+ end
86
+ end
@@ -1,5 +1,10 @@
1
+ # This file is auto-generated by alef — DO NOT EDIT.
2
+ # alef:hash:b932cf5bbab2afa468a806bd6f35e67b31fd996f59dcc6892972efd4b844eca6
3
+ # To regenerate: alef generate
4
+ # To verify freshness: alef verify --exit-code
5
+ # Issues & docs: https://github.com/kreuzberg-dev/alef
1
6
  # frozen_string_literal: true
2
7
 
3
8
  module Spikard
4
- VERSION = '0.12.0'
9
+ VERSION = '0.15.2'
5
10
  end
data/lib/spikard.rb CHANGED
@@ -1,50 +1,13 @@
1
+ # This file is auto-generated by alef — DO NOT EDIT.
2
+ # alef:hash:5c62d312ae2c1f0cd7d066ce8b2986e3e074ad0372813b665ae9cd9525b62162
3
+ # To regenerate: alef generate
4
+ # To verify freshness: alef verify --exit-code
5
+ # Issues & docs: https://github.com/kreuzberg-dev/alef
1
6
  # frozen_string_literal: true
2
7
 
3
- # Main Ruby namespace for the Spikard bindings.
4
- module Spikard
5
- end
6
-
7
- begin
8
- require 'json'
9
- rescue LoadError
10
- # Fallback to pure-Ruby implementation when native JSON extension is unavailable
11
- require 'json/pure'
12
- end
13
8
  require_relative 'spikard/version'
14
- require_relative 'spikard/config'
15
- require_relative 'spikard/response'
16
- require_relative 'spikard/background'
17
- require_relative 'spikard/schema'
18
- require_relative 'spikard/websocket'
19
- require_relative 'spikard/sse'
20
- require_relative 'spikard/grpc'
21
- require_relative 'spikard/upload_file'
22
- require_relative 'spikard/converters'
23
- require_relative 'spikard/provide'
24
- require_relative 'spikard/handler_wrapper'
25
- require_relative 'spikard/app'
26
- require_relative 'spikard/testing'
9
+ require_relative 'spikard/native'
27
10
 
28
- begin
29
- require 'spikard_rb'
30
- rescue LoadError => e
31
- raise LoadError, <<~MSG, e.backtrace
32
- Failed to load the Spikard native extension (spikard_rb). Run `bundle exec rake ext:build` to compile it before executing tests.
33
- Original error: #{e.message}
34
- MSG
35
- end
36
-
37
- if defined?(Spikard::Native::TestClient) && !Spikard::Native::TestClient.method_defined?(:__spikard_native_request,
38
- false)
39
- Spikard::Native::TestClient.class_eval do
40
- alias_method :__spikard_native_request, :request
41
-
42
- def request(method, path, options = nil)
43
- __spikard_native_request(method, path, options)
44
- end
45
- end
11
+ module Spikard
12
+ # Re-export all types and functions from native extension
46
13
  end
47
-
48
- # Convenience aliases and methods
49
- Spikard::TestClient = Spikard::Testing::TestClient
50
- Spikard.extend Spikard::HandlerWrapper
data/lib/spikard_rb.so ADDED
Binary file
data/sig/types.rbs ADDED
@@ -0,0 +1,427 @@
1
+ # This file is auto-generated by alef — DO NOT EDIT.
2
+ # alef:hash:dbf8bf90f99d68da22b871df1d242fee8be43b6b6779f41c132936c3df22a1fd
3
+ # To regenerate: alef generate
4
+ # To verify freshness: alef verify --exit-code
5
+ # Issues & docs: https://github.com/kreuzberg-dev/alef
6
+
7
+ module Spikard
8
+
9
+ VERSION: String
10
+
11
+ type json_value = Hash[String, untyped] | Array[untyped] | String | Integer | Float | bool | nil
12
+ type JsonValue = json_value
13
+
14
+ class UploadFile
15
+ attr_reader filename: String
16
+ attr_reader content_type: String
17
+ attr_reader size: Integer
18
+ attr_reader content: String
19
+ attr_reader content_encoding: String
20
+
21
+ def initialize: (filename: String, ?content_type: String, ?size: Integer, content: String, ?content_encoding: String) -> void
22
+ def as_bytes: () -> String
23
+ def read_to_string: () -> String
24
+ def content_type_or_default: () -> String
25
+ end
26
+
27
+ class ResponseSnapshot
28
+ attr_reader status: Integer
29
+ attr_reader headers: Hash[String, String]
30
+ attr_reader body: String
31
+
32
+ def initialize: (status: Integer, headers: Hash[String, String], body: String) -> void
33
+ def text: () -> String
34
+ def header: (String name) -> String?
35
+ end
36
+
37
+ class CorsConfig
38
+ attr_accessor allowed_origins: Array[String]?
39
+ attr_accessor allowed_methods: Array[String]?
40
+ attr_accessor allowed_headers: Array[String]?
41
+ attr_accessor expose_headers: Array[String]?
42
+ attr_accessor max_age: Integer?
43
+ attr_accessor allow_credentials: bool?
44
+
45
+ def initialize: (?allowed_origins: Array[String], ?allowed_methods: Array[String], ?allowed_headers: Array[String], ?expose_headers: Array[String], ?max_age: Integer, ?allow_credentials: bool) -> void
46
+ def allowed_methods_joined: () -> String
47
+ def allowed_headers_joined: () -> String
48
+ def is_origin_allowed: (String origin) -> bool
49
+ def is_method_allowed: (String method) -> bool
50
+ def are_headers_allowed: (Array[String] requested) -> bool
51
+ def self.default: () -> CorsConfig
52
+ end
53
+
54
+ class CompressionConfig
55
+ attr_accessor gzip: bool?
56
+ attr_accessor brotli: bool?
57
+ attr_accessor min_size: Integer?
58
+ attr_accessor quality: Integer?
59
+
60
+ def initialize: (?gzip: bool, ?brotli: bool, ?min_size: Integer, ?quality: Integer) -> void
61
+ def self.default: () -> CompressionConfig
62
+ end
63
+
64
+ class RateLimitConfig
65
+ attr_accessor per_second: Integer?
66
+ attr_accessor burst: Integer?
67
+ attr_accessor ip_based: bool?
68
+
69
+ def initialize: (?per_second: Integer, ?burst: Integer, ?ip_based: bool) -> void
70
+ def self.default: () -> RateLimitConfig
71
+ end
72
+
73
+ class JsonRpcMethodInfo
74
+ attr_reader method_name: String
75
+ attr_reader description: String
76
+ attr_reader params_schema: JsonValue
77
+ attr_reader result_schema: JsonValue
78
+ attr_reader deprecated: bool
79
+ attr_reader tags: Array[String]
80
+
81
+ def initialize: (method_name: String, ?description: String, ?params_schema: JsonValue, ?result_schema: JsonValue, deprecated: bool, tags: Array[String]) -> void
82
+ end
83
+
84
+ class ProblemDetails
85
+ attr_reader type_uri: String
86
+ attr_reader title: String
87
+ attr_reader status: Integer
88
+ attr_reader detail: String
89
+ attr_reader instance: String
90
+ attr_reader extensions: Hash[String, JsonValue]
91
+
92
+ def initialize: (type_uri: String, title: String, status: Integer, ?detail: String, ?instance: String, extensions: Hash[String, JsonValue]) -> void
93
+ def with_detail: (String detail) -> ProblemDetails
94
+ def with_instance: (String instance) -> ProblemDetails
95
+ def to_json: () -> String
96
+ def to_json_pretty: () -> String
97
+ def self.not_found: (String detail) -> ProblemDetails
98
+ def self.method_not_allowed: (String detail) -> ProblemDetails
99
+ def self.internal_server_error: (String detail) -> ProblemDetails
100
+ def self.bad_request: (String detail) -> ProblemDetails
101
+ end
102
+
103
+ class GraphQLRouteConfig
104
+ def path: (String path) -> GraphQLRouteConfig
105
+ def method: (String method) -> GraphQLRouteConfig
106
+ def enable_playground: (bool enable) -> GraphQLRouteConfig
107
+ def description: (String description) -> GraphQLRouteConfig
108
+ def get_path: () -> String
109
+ def get_method: () -> String
110
+ def is_playground_enabled: () -> bool
111
+ def get_description: () -> String?
112
+ def self.default: () -> GraphQLRouteConfig
113
+ end
114
+
115
+ class SchemaConfig
116
+ attr_accessor introspection_enabled: bool?
117
+ attr_accessor complexity_limit: Integer?
118
+ attr_accessor depth_limit: Integer?
119
+
120
+ def initialize: (?introspection_enabled: bool, ?complexity_limit: Integer, ?depth_limit: Integer) -> void
121
+ def self.default: () -> SchemaConfig
122
+ end
123
+
124
+ class QueryOnlyConfig
125
+ attr_accessor introspection_enabled: bool?
126
+ attr_accessor complexity_limit: Integer?
127
+ attr_accessor depth_limit: Integer?
128
+
129
+ def initialize: (?introspection_enabled: bool, ?complexity_limit: Integer, ?depth_limit: Integer) -> void
130
+ def self.default: () -> QueryOnlyConfig
131
+ end
132
+
133
+ class QueryMutationConfig
134
+ attr_accessor introspection_enabled: bool?
135
+ attr_accessor complexity_limit: Integer?
136
+ attr_accessor depth_limit: Integer?
137
+
138
+ def initialize: (?introspection_enabled: bool, ?complexity_limit: Integer, ?depth_limit: Integer) -> void
139
+ def self.default: () -> QueryMutationConfig
140
+ end
141
+
142
+ class FullSchemaConfig
143
+ attr_accessor introspection_enabled: bool?
144
+ attr_accessor complexity_limit: Integer?
145
+ attr_accessor depth_limit: Integer?
146
+
147
+ def initialize: (?introspection_enabled: bool, ?complexity_limit: Integer, ?depth_limit: Integer) -> void
148
+ def self.default: () -> FullSchemaConfig
149
+ end
150
+
151
+ class AsyncApiConfig
152
+ attr_accessor enabled: bool?
153
+ attr_accessor spec: JsonValue?
154
+
155
+ def initialize: (?enabled: bool, ?spec: JsonValue) -> void
156
+ end
157
+
158
+ class ParsedChannel
159
+ attr_reader name: String
160
+ attr_reader address: String
161
+ attr_reader messages: Array[String]
162
+ attr_reader bindings: JsonValue
163
+
164
+ def initialize: (name: String, address: String, messages: Array[String], ?bindings: JsonValue) -> void
165
+ end
166
+
167
+ class ParsedOperation
168
+ attr_reader name: String
169
+ attr_reader action: String
170
+ attr_reader channel: String
171
+
172
+ def initialize: (name: String, action: String, channel: String) -> void
173
+ end
174
+
175
+ class ParsedMessage
176
+ attr_reader name: String
177
+ attr_reader schema: JsonValue
178
+
179
+ def initialize: (name: String, ?schema: JsonValue) -> void
180
+ end
181
+
182
+ class ParseResult
183
+ attr_reader spec_version: String
184
+ attr_reader title: String
185
+ attr_reader api_version: String
186
+ attr_reader channels: Array[ParsedChannel]
187
+ attr_reader operations: Array[ParsedOperation]
188
+ attr_reader messages: Array[ParsedMessage]
189
+
190
+ def initialize: (spec_version: String, title: String, api_version: String, channels: Array[ParsedChannel], operations: Array[ParsedOperation], messages: Array[ParsedMessage]) -> void
191
+ end
192
+
193
+ class ParseRequest
194
+ attr_reader spec: JsonValue
195
+
196
+ def initialize: (spec: JsonValue) -> void
197
+ end
198
+
199
+ class ValidationResponse
200
+ attr_reader valid: bool
201
+ attr_reader errors: Array[String]
202
+
203
+ def initialize: (valid: bool, errors: Array[String]) -> void
204
+ end
205
+
206
+ class ValidateRequest
207
+ attr_reader spec: JsonValue
208
+ attr_reader channel: String
209
+ attr_reader message: String
210
+ attr_reader payload: JsonValue
211
+
212
+ def initialize: (spec: JsonValue, channel: String, message: String, payload: JsonValue) -> void
213
+ end
214
+
215
+ class BackgroundTaskConfig
216
+ attr_accessor max_queue_size: Integer?
217
+ attr_accessor max_concurrent_tasks: Integer?
218
+ attr_accessor drain_timeout_secs: Integer?
219
+
220
+ def initialize: (?max_queue_size: Integer, ?max_concurrent_tasks: Integer, ?drain_timeout_secs: Integer) -> void
221
+ def self.default: () -> BackgroundTaskConfig
222
+ end
223
+
224
+ class BackgroundJobMetadata
225
+ attr_accessor name: String?
226
+ attr_accessor request_id: String?
227
+
228
+ def initialize: (?name: String, ?request_id: String) -> void
229
+ def self.default: () -> BackgroundJobMetadata
230
+ end
231
+
232
+ class GrpcConfig
233
+ attr_accessor enabled: bool?
234
+ attr_accessor max_message_size: Integer?
235
+ attr_accessor enable_compression: bool?
236
+ attr_accessor request_timeout: Integer?
237
+ attr_accessor max_concurrent_streams: Integer?
238
+ attr_accessor enable_keepalive: bool?
239
+ attr_accessor keepalive_interval: Integer?
240
+ attr_accessor keepalive_timeout: Integer?
241
+ attr_accessor max_stream_response_bytes: Integer?
242
+
243
+ def initialize: (?enabled: bool, ?max_message_size: Integer, ?enable_compression: bool, ?request_timeout: Integer, ?max_concurrent_streams: Integer, ?enable_keepalive: bool, ?keepalive_interval: Integer, ?keepalive_timeout: Integer, ?max_stream_response_bytes: Integer) -> void
244
+ def self.default: () -> GrpcConfig
245
+ end
246
+
247
+ class JsonRpcConfig
248
+ attr_accessor enabled: bool?
249
+ attr_accessor endpoint_path: String?
250
+ attr_accessor enable_batch: bool?
251
+ attr_accessor max_batch_size: Integer?
252
+
253
+ def initialize: (?enabled: bool, ?endpoint_path: String, ?enable_batch: bool, ?max_batch_size: Integer) -> void
254
+ def self.default: () -> JsonRpcConfig
255
+ end
256
+
257
+ class OpenApiConfig
258
+ attr_accessor enabled: bool?
259
+ attr_accessor title: String?
260
+ attr_accessor version: String?
261
+ attr_accessor description: String?
262
+ attr_accessor swagger_ui_path: String?
263
+ attr_accessor redoc_path: String?
264
+ attr_accessor openapi_json_path: String?
265
+ attr_accessor contact: ContactInfo?
266
+ attr_accessor license: LicenseInfo?
267
+ attr_accessor servers: Array[ServerInfo]?
268
+ attr_accessor security_schemes: Hash[String, SecuritySchemeInfo]?
269
+
270
+ def initialize: (?enabled: bool, ?title: String, ?version: String, ?description: String, ?swagger_ui_path: String, ?redoc_path: String, ?openapi_json_path: String, ?contact: ContactInfo, ?license: LicenseInfo, ?servers: Array[ServerInfo], ?security_schemes: Hash[String, SecuritySchemeInfo]) -> void
271
+ def self.default: () -> OpenApiConfig
272
+ end
273
+
274
+ class ContactInfo
275
+ attr_reader name: String
276
+ attr_reader email: String
277
+ attr_reader url: String
278
+
279
+ def initialize: (?name: String, ?email: String, ?url: String) -> void
280
+ end
281
+
282
+ class LicenseInfo
283
+ attr_reader name: String
284
+ attr_reader url: String
285
+
286
+ def initialize: (name: String, ?url: String) -> void
287
+ end
288
+
289
+ class ServerInfo
290
+ attr_reader url: String
291
+ attr_reader description: String
292
+
293
+ def initialize: (url: String, ?description: String) -> void
294
+ end
295
+
296
+ class Response
297
+ attr_accessor content: JsonValue?
298
+ attr_accessor status_code: Integer?
299
+ attr_accessor headers: Hash[String, String]?
300
+
301
+ def initialize: (?content: JsonValue, ?status_code: Integer, ?headers: Hash[String, String]) -> void
302
+ def set_header: (String key, String value) -> void
303
+ def set_cookie: (String key, String value, bool secure, bool http_only, ?Integer max_age, ?String domain, ?String path, ?String same_site) -> void
304
+ def self.default: () -> Response
305
+ end
306
+
307
+ class SseEvent
308
+ attr_reader event_type: String
309
+ attr_reader data: JsonValue
310
+ attr_reader id: String
311
+ attr_reader retry: Integer
312
+
313
+ def initialize: (?event_type: String, data: JsonValue, ?id: String, ?retry: Integer) -> void
314
+ def with_id: (String id) -> SseEvent
315
+ def with_retry: (Integer retry_ms) -> SseEvent
316
+ end
317
+
318
+ class TestingSseEvent
319
+ attr_reader data: String
320
+
321
+ def initialize: (data: String) -> void
322
+ end
323
+
324
+ class JwtConfig
325
+ attr_reader secret: String
326
+ attr_reader algorithm: String
327
+ attr_reader audience: Array[String]
328
+ attr_reader issuer: String
329
+ attr_reader leeway: Integer
330
+
331
+ def initialize: (secret: String, algorithm: String, ?audience: Array[String], ?issuer: String, leeway: Integer) -> void
332
+ end
333
+
334
+ class ApiKeyConfig
335
+ attr_reader keys: Array[String]
336
+ attr_reader header_name: String
337
+
338
+ def initialize: (keys: Array[String], header_name: String) -> void
339
+ end
340
+
341
+ class StaticFilesConfig
342
+ attr_reader directory: String
343
+ attr_reader route_prefix: String
344
+ attr_reader index_file: bool
345
+ attr_reader cache_control: String
346
+
347
+ def initialize: (directory: String, route_prefix: String, index_file: bool, ?cache_control: String) -> void
348
+ end
349
+
350
+ class ServerConfig
351
+ attr_accessor host: String?
352
+ attr_accessor port: Integer?
353
+ attr_accessor workers: Integer?
354
+ attr_accessor enable_request_id: bool?
355
+ attr_accessor max_body_size: Integer?
356
+ attr_accessor request_timeout: Integer?
357
+ attr_accessor compression: CompressionConfig?
358
+ attr_accessor rate_limit: RateLimitConfig?
359
+ attr_accessor jwt_auth: JwtConfig?
360
+ attr_accessor api_key_auth: ApiKeyConfig?
361
+ attr_accessor static_files: Array[StaticFilesConfig]?
362
+ attr_accessor graceful_shutdown: bool?
363
+ attr_accessor shutdown_timeout: Integer?
364
+ attr_accessor asyncapi: AsyncApiConfig?
365
+ attr_accessor openapi: OpenApiConfig?
366
+ attr_accessor jsonrpc: JsonRpcConfig?
367
+ attr_accessor grpc: GrpcConfig?
368
+ attr_accessor background_tasks: BackgroundTaskConfig?
369
+ attr_accessor enable_http_trace: bool?
370
+
371
+ def initialize: (?host: String, ?port: Integer, ?workers: Integer, ?enable_request_id: bool, ?max_body_size: Integer, ?request_timeout: Integer, ?compression: CompressionConfig, ?rate_limit: RateLimitConfig, ?jwt_auth: JwtConfig, ?api_key_auth: ApiKeyConfig, ?static_files: Array[StaticFilesConfig], ?graceful_shutdown: bool, ?shutdown_timeout: Integer, ?asyncapi: AsyncApiConfig, ?openapi: OpenApiConfig, ?jsonrpc: JsonRpcConfig, ?grpc: GrpcConfig, ?background_tasks: BackgroundTaskConfig, ?enable_http_trace: bool) -> void
372
+ def self.default: () -> ServerConfig
373
+ end
374
+
375
+ class GraphQLSubscriptionSnapshot
376
+ attr_reader operation_id: String
377
+ attr_reader acknowledged: bool
378
+ attr_reader event: JsonValue
379
+ attr_reader errors: Array[JsonValue]
380
+ attr_reader complete_received: bool
381
+
382
+ def initialize: (operation_id: String, acknowledged: bool, ?event: JsonValue, errors: Array[JsonValue], complete_received: bool) -> void
383
+ end
384
+
385
+ class TestClient
386
+ def get: (String path, ?Array[String] query_params, ?Array[String] headers) -> ResponseSnapshot
387
+ def post: (String path, ?JsonValue json, ?Array[String] form_data, String multipart, ?Array[String] query_params, ?Array[String] headers) -> ResponseSnapshot
388
+ def request_raw: (Method method, String path, String body, ?Array[String] query_params, ?Array[String] headers) -> ResponseSnapshot
389
+ def put: (String path, ?JsonValue json, ?Array[String] query_params, ?Array[String] headers) -> ResponseSnapshot
390
+ def patch: (String path, ?JsonValue json, ?Array[String] query_params, ?Array[String] headers) -> ResponseSnapshot
391
+ def delete: (String path, ?Array[String] query_params, ?Array[String] headers) -> ResponseSnapshot
392
+ def options: (String path, ?Array[String] query_params, ?Array[String] headers) -> ResponseSnapshot
393
+ def head: (String path, ?Array[String] query_params, ?Array[String] headers) -> ResponseSnapshot
394
+ def trace: (String path, ?Array[String] query_params, ?Array[String] headers) -> ResponseSnapshot
395
+ def graphql_at: (String endpoint, String query, ?JsonValue variables, ?String operation_name) -> ResponseSnapshot
396
+ def graphql: (String query, ?JsonValue variables, ?String operation_name) -> ResponseSnapshot
397
+ def graphql_with_status: (String query, ?JsonValue variables, ?String operation_name) -> String
398
+ def graphql_subscription_at: (String endpoint, String query, ?JsonValue variables, ?String operation_name) -> GraphQLSubscriptionSnapshot
399
+ def graphql_subscription: (String query, ?JsonValue variables, ?String operation_name) -> GraphQLSubscriptionSnapshot
400
+ end
401
+
402
+ class SnapshotError
403
+ end
404
+
405
+ class WebSocketMessage
406
+ end
407
+
408
+ class Method
409
+ type value = :get | :post | :put | :patch | :delete | :head | :options | :trace
410
+ end
411
+
412
+ class SecuritySchemeInfo
413
+ end
414
+
415
+ def self.schema_query_only: () -> QueryOnlyConfig
416
+
417
+ def self.schema_query_mutation: () -> QueryMutationConfig
418
+
419
+ def self.schema_full: () -> FullSchemaConfig
420
+
421
+ class GraphQLErrorInfo
422
+ def status_code: () -> Integer
423
+ def transient?: () -> bool
424
+ def error_type: () -> String
425
+ end
426
+
427
+ end