alchemrest 3.1.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 (245) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +3 -0
  3. data/.rubocop.yml +22 -0
  4. data/.rubocop_todo.yml +242 -0
  5. data/.ruby-version +1 -0
  6. data/Appraisals +19 -0
  7. data/Gemfile +6 -0
  8. data/Gemfile.lock +378 -0
  9. data/Rakefile +29 -0
  10. data/alchemrest.gemspec +71 -0
  11. data/coach.yml +5 -0
  12. data/examples/bank_api/client.rb +31 -0
  13. data/examples/bank_api/data/account.rb +21 -0
  14. data/examples/bank_api/data/ach.rb +16 -0
  15. data/examples/bank_api/data/business_account.rb +22 -0
  16. data/examples/bank_api/data/card.rb +21 -0
  17. data/examples/bank_api/data/check.rb +19 -0
  18. data/examples/bank_api/data/product.rb +20 -0
  19. data/examples/bank_api/data/transaction.rb +49 -0
  20. data/examples/bank_api/data/user.rb +27 -0
  21. data/examples/bank_api/factories.rb +68 -0
  22. data/examples/bank_api/graph_visualization.rb +45 -0
  23. data/examples/bank_api/positive_interest_string.rb +33 -0
  24. data/examples/bank_api/requests/delete_user.rb +17 -0
  25. data/examples/bank_api/requests/get_business_account.rb +24 -0
  26. data/examples/bank_api/requests/get_products.rb +12 -0
  27. data/examples/bank_api/requests/get_transactions.rb +34 -0
  28. data/examples/bank_api/requests/get_user.rb +19 -0
  29. data/examples/bank_api/requests/post_transaction.rb +20 -0
  30. data/examples/bank_api/requests/update_user.rb +28 -0
  31. data/examples/bank_api/root.rb +52 -0
  32. data/examples/bank_api.rb +33 -0
  33. data/gemfiles/faraday_2.gemfile +9 -0
  34. data/gemfiles/faraday_2.gemfile.lock +363 -0
  35. data/gemfiles/rails_7_0.gemfile.lock +341 -0
  36. data/gemfiles/rails_7_2.gemfile +9 -0
  37. data/gemfiles/rails_7_2.gemfile.lock +384 -0
  38. data/gemfiles/rails_8_0.gemfile +9 -0
  39. data/gemfiles/rails_8_0.gemfile.lock +385 -0
  40. data/lib/alchemrest/circuit_breaker.rb +84 -0
  41. data/lib/alchemrest/client/configuration/connection.rb +83 -0
  42. data/lib/alchemrest/client/configuration.rb +89 -0
  43. data/lib/alchemrest/client.rb +48 -0
  44. data/lib/alchemrest/cop.rb +8 -0
  45. data/lib/alchemrest/data/capture_configuration.rb +77 -0
  46. data/lib/alchemrest/data/field.rb +36 -0
  47. data/lib/alchemrest/data/graph.rb +40 -0
  48. data/lib/alchemrest/data/record.rb +60 -0
  49. data/lib/alchemrest/data/schema.rb +80 -0
  50. data/lib/alchemrest/data.rb +9 -0
  51. data/lib/alchemrest/endpoint_definition.rb +47 -0
  52. data/lib/alchemrest/error.rb +122 -0
  53. data/lib/alchemrest/factory_bot.rb +64 -0
  54. data/lib/alchemrest/faraday_middleware/external_api_instrumentation.rb +24 -0
  55. data/lib/alchemrest/faraday_middleware/json_parser.rb +30 -0
  56. data/lib/alchemrest/faraday_middleware/kill_switch.rb +22 -0
  57. data/lib/alchemrest/faraday_middleware/underscore_response.rb +24 -0
  58. data/lib/alchemrest/hash_path.rb +81 -0
  59. data/lib/alchemrest/http_request.rb +75 -0
  60. data/lib/alchemrest/kill_switch/adapters.rb +88 -0
  61. data/lib/alchemrest/kill_switch.rb +31 -0
  62. data/lib/alchemrest/railtie.rb +25 -0
  63. data/lib/alchemrest/request/endpoint.rb +29 -0
  64. data/lib/alchemrest/request/returns.rb +46 -0
  65. data/lib/alchemrest/request.rb +80 -0
  66. data/lib/alchemrest/request_definition/builder.rb +13 -0
  67. data/lib/alchemrest/request_definition.rb +26 -0
  68. data/lib/alchemrest/response/pipeline/extract_payload.rb +64 -0
  69. data/lib/alchemrest/response/pipeline/final.rb +11 -0
  70. data/lib/alchemrest/response/pipeline/omit.rb +46 -0
  71. data/lib/alchemrest/response/pipeline/sanitize.rb +59 -0
  72. data/lib/alchemrest/response/pipeline/transform.rb +26 -0
  73. data/lib/alchemrest/response/pipeline/was_successful.rb +29 -0
  74. data/lib/alchemrest/response/pipeline.rb +71 -0
  75. data/lib/alchemrest/response.rb +73 -0
  76. data/lib/alchemrest/response_captured_handler.rb +68 -0
  77. data/lib/alchemrest/result/halt.rb +15 -0
  78. data/lib/alchemrest/result/try_helpers.rb +16 -0
  79. data/lib/alchemrest/result.rb +128 -0
  80. data/lib/alchemrest/root.rb +77 -0
  81. data/lib/alchemrest/transforms/base_to_type_transform_registry.rb +42 -0
  82. data/lib/alchemrest/transforms/constrainable.rb +41 -0
  83. data/lib/alchemrest/transforms/constraint/block.rb +22 -0
  84. data/lib/alchemrest/transforms/constraint/greater_than.rb +19 -0
  85. data/lib/alchemrest/transforms/constraint/greater_than_or_eq.rb +19 -0
  86. data/lib/alchemrest/transforms/constraint/in_list.rb +19 -0
  87. data/lib/alchemrest/transforms/constraint/is_instance_of.rb +19 -0
  88. data/lib/alchemrest/transforms/constraint/is_uuid.rb +19 -0
  89. data/lib/alchemrest/transforms/constraint/less_than.rb +19 -0
  90. data/lib/alchemrest/transforms/constraint/less_than_or_eq.rb +19 -0
  91. data/lib/alchemrest/transforms/constraint/matches_regex.rb +19 -0
  92. data/lib/alchemrest/transforms/constraint/max_length.rb +19 -0
  93. data/lib/alchemrest/transforms/constraint/min_length.rb +19 -0
  94. data/lib/alchemrest/transforms/constraint.rb +17 -0
  95. data/lib/alchemrest/transforms/constraint_builder/for_number.rb +25 -0
  96. data/lib/alchemrest/transforms/constraint_builder/for_string.rb +21 -0
  97. data/lib/alchemrest/transforms/constraint_builder.rb +15 -0
  98. data/lib/alchemrest/transforms/date_transform.rb +30 -0
  99. data/lib/alchemrest/transforms/enum.rb +52 -0
  100. data/lib/alchemrest/transforms/epoch_time.rb +32 -0
  101. data/lib/alchemrest/transforms/from_chain.rb +15 -0
  102. data/lib/alchemrest/transforms/from_number/to_type_transform_registry.rb +18 -0
  103. data/lib/alchemrest/transforms/from_number.rb +47 -0
  104. data/lib/alchemrest/transforms/from_string/to_type_transform_registry.rb +17 -0
  105. data/lib/alchemrest/transforms/from_string.rb +36 -0
  106. data/lib/alchemrest/transforms/from_type/empty_to_type_transform_registry.rb +14 -0
  107. data/lib/alchemrest/transforms/from_type.rb +64 -0
  108. data/lib/alchemrest/transforms/iso_time.rb +58 -0
  109. data/lib/alchemrest/transforms/json_number.rb +26 -0
  110. data/lib/alchemrest/transforms/loose_hash.rb +96 -0
  111. data/lib/alchemrest/transforms/money_transform.rb +42 -0
  112. data/lib/alchemrest/transforms/number.rb +27 -0
  113. data/lib/alchemrest/transforms/output_type.rb +65 -0
  114. data/lib/alchemrest/transforms/to_decimal.rb +22 -0
  115. data/lib/alchemrest/transforms/to_type/from_string_to_time_selector.rb +29 -0
  116. data/lib/alchemrest/transforms/to_type/transforms_selector.rb +61 -0
  117. data/lib/alchemrest/transforms/to_type.rb +86 -0
  118. data/lib/alchemrest/transforms/typed.rb +32 -0
  119. data/lib/alchemrest/transforms/union.rb +44 -0
  120. data/lib/alchemrest/transforms/with_constraint.rb +26 -0
  121. data/lib/alchemrest/transforms.rb +93 -0
  122. data/lib/alchemrest/url_builder/encoders.rb +39 -0
  123. data/lib/alchemrest/url_builder/options.rb +33 -0
  124. data/lib/alchemrest/url_builder.rb +31 -0
  125. data/lib/alchemrest/version.rb +5 -0
  126. data/lib/alchemrest/webmock_helpers.rb +27 -0
  127. data/lib/alchemrest.rb +159 -0
  128. data/lib/generators/alchemrest/kill_switch_migration_generator.rb +27 -0
  129. data/lib/generators/alchemrest/templates/kill_switch_migration.rb.erb +17 -0
  130. data/lib/rubocop/cop/alchemrest/define_request_using_with_params.rb +53 -0
  131. data/lib/rubocop/cop/alchemrest/endpoint_definition_using_generic_params.rb +55 -0
  132. data/lib/rubocop/cop/alchemrest/request_hash_returning_block.rb +54 -0
  133. data/lib/rubocop/cop/alchemrest/time_transform_with_no_zone.rb +56 -0
  134. data/lib/tapioca/dsl/compilers/alchemrest_data.rb +84 -0
  135. data/lib/tapioca/dsl/compilers/alchemrest_root.rb +68 -0
  136. data/mutant.yml +16 -0
  137. data/rbi/alchemrest/result.rbi +80 -0
  138. data/rbi/alchemrest.rbi +246 -0
  139. data/sorbet/config +5 -0
  140. data/sorbet/rbi/gems/.gitattributes +1 -0
  141. data/sorbet/rbi/gems/abstract_type@0.0.7.rbi +41 -0
  142. data/sorbet/rbi/gems/actionpack@8.0.4.rbi +11733 -0
  143. data/sorbet/rbi/gems/actionview@8.0.4.rbi +6560 -0
  144. data/sorbet/rbi/gems/activemodel@8.0.4.rbi +2891 -0
  145. data/sorbet/rbi/gems/activesupport@8.0.4.rbi +9621 -0
  146. data/sorbet/rbi/gems/adamantium@0.2.0.rbi +144 -0
  147. data/sorbet/rbi/gems/addressable@2.8.7.rbi +779 -0
  148. data/sorbet/rbi/gems/anima@0.3.2.rbi +103 -0
  149. data/sorbet/rbi/gems/ast@2.4.2.rbi +107 -0
  150. data/sorbet/rbi/gems/base64@0.3.0.rbi +52 -0
  151. data/sorbet/rbi/gems/benchmark@0.5.0.rbi +153 -0
  152. data/sorbet/rbi/gems/bigdecimal@3.3.1.rbi +77 -0
  153. data/sorbet/rbi/gems/builder@3.3.0.rbi +9 -0
  154. data/sorbet/rbi/gems/circuitbox@2.0.0.rbi +297 -0
  155. data/sorbet/rbi/gems/concord@0.1.6.rbi +51 -0
  156. data/sorbet/rbi/gems/concurrent-ruby@1.3.5.rbi +4716 -0
  157. data/sorbet/rbi/gems/connection_pool@2.5.4.rbi +9 -0
  158. data/sorbet/rbi/gems/crack@1.0.0.rbi +110 -0
  159. data/sorbet/rbi/gems/crass@1.0.6.rbi +294 -0
  160. data/sorbet/rbi/gems/date@3.4.1.rbi +58 -0
  161. data/sorbet/rbi/gems/drb@2.2.3.rbi +639 -0
  162. data/sorbet/rbi/gems/equalizer@0.0.11.rbi +38 -0
  163. data/sorbet/rbi/gems/erubi@1.13.1.rbi +85 -0
  164. data/sorbet/rbi/gems/factory_bot@6.5.0.rbi +1529 -0
  165. data/sorbet/rbi/gems/faraday-em_http@1.0.0.rbi +181 -0
  166. data/sorbet/rbi/gems/faraday-em_synchrony@1.0.1.rbi +120 -0
  167. data/sorbet/rbi/gems/faraday-excon@1.1.0.rbi +128 -0
  168. data/sorbet/rbi/gems/faraday-httpclient@1.0.1.rbi +123 -0
  169. data/sorbet/rbi/gems/faraday-multipart@1.2.0.rbi +190 -0
  170. data/sorbet/rbi/gems/faraday-net_http@1.0.2.rbi +140 -0
  171. data/sorbet/rbi/gems/faraday-net_http_persistent@1.2.0.rbi +116 -0
  172. data/sorbet/rbi/gems/faraday-patron@1.0.0.rbi +119 -0
  173. data/sorbet/rbi/gems/faraday-rack@1.0.0.rbi +113 -0
  174. data/sorbet/rbi/gems/faraday-retry@1.0.3.rbi +149 -0
  175. data/sorbet/rbi/gems/faraday@1.10.5.rbi +1620 -0
  176. data/sorbet/rbi/gems/hansi@0.2.1.rbi +9 -0
  177. data/sorbet/rbi/gems/hashdiff@1.1.2.rbi +174 -0
  178. data/sorbet/rbi/gems/i18n@1.14.7.rbi +1328 -0
  179. data/sorbet/rbi/gems/ice_nine@0.11.2.rbi +145 -0
  180. data/sorbet/rbi/gems/io-console@0.8.0.rbi +9 -0
  181. data/sorbet/rbi/gems/json@2.9.1.rbi +282 -0
  182. data/sorbet/rbi/gems/language_server-protocol@3.17.0.3.rbi +8057 -0
  183. data/sorbet/rbi/gems/logger@1.7.0.rbi +260 -0
  184. data/sorbet/rbi/gems/loofah@2.24.0.rbi +571 -0
  185. data/sorbet/rbi/gems/memoizable@0.4.2.rbi +131 -0
  186. data/sorbet/rbi/gems/memosa@0.8.2.rbi +185 -0
  187. data/sorbet/rbi/gems/minitest@5.26.0.rbi +824 -0
  188. data/sorbet/rbi/gems/money@6.19.0.rbi +815 -0
  189. data/sorbet/rbi/gems/morpher@0.4.2.rbi +388 -0
  190. data/sorbet/rbi/gems/mprelude@0.1.0.rbi +140 -0
  191. data/sorbet/rbi/gems/multi_json@1.15.0.rbi +180 -0
  192. data/sorbet/rbi/gems/multipart-post@2.4.1.rbi +154 -0
  193. data/sorbet/rbi/gems/mustermann-contrib@3.0.3.rbi +9 -0
  194. data/sorbet/rbi/gems/mustermann@3.0.3.rbi +809 -0
  195. data/sorbet/rbi/gems/netrc@0.11.0.rbi +112 -0
  196. data/sorbet/rbi/gems/nokogiri@1.19.1.rbi +3412 -0
  197. data/sorbet/rbi/gems/parallel@1.26.3.rbi +234 -0
  198. data/sorbet/rbi/gems/parser@3.3.7.0.rbi +4877 -0
  199. data/sorbet/rbi/gems/pp@0.6.2.rbi +176 -0
  200. data/sorbet/rbi/gems/prettyprint@0.2.0.rbi +155 -0
  201. data/sorbet/rbi/gems/prism@1.5.1.rbi +26368 -0
  202. data/sorbet/rbi/gems/procto@0.0.3.rbi +9 -0
  203. data/sorbet/rbi/gems/psych@5.2.3.rbi +806 -0
  204. data/sorbet/rbi/gems/public_suffix@6.0.1.rbi +267 -0
  205. data/sorbet/rbi/gems/racc@1.8.1.rbi +120 -0
  206. data/sorbet/rbi/gems/rack-session@2.1.1.rbi +458 -0
  207. data/sorbet/rbi/gems/rack-test@2.2.0.rbi +405 -0
  208. data/sorbet/rbi/gems/rack@3.1.14.rbi +2774 -0
  209. data/sorbet/rbi/gems/rackup@2.2.1.rbi +132 -0
  210. data/sorbet/rbi/gems/rails-dom-testing@2.2.0.rbi +266 -0
  211. data/sorbet/rbi/gems/rails-html-sanitizer@1.6.2.rbi +545 -0
  212. data/sorbet/rbi/gems/railties@8.0.4.rbi +2150 -0
  213. data/sorbet/rbi/gems/rainbow@3.1.1.rbi +333 -0
  214. data/sorbet/rbi/gems/rake@13.2.1.rbi +2054 -0
  215. data/sorbet/rbi/gems/rbi@0.2.3.rbi +3961 -0
  216. data/sorbet/rbi/gems/rdoc@6.13.1.rbi +6784 -0
  217. data/sorbet/rbi/gems/regexp_parser@2.11.3.rbi +3020 -0
  218. data/sorbet/rbi/gems/reline@0.6.0.rbi +9 -0
  219. data/sorbet/rbi/gems/rexml@3.4.2.rbi +1777 -0
  220. data/sorbet/rbi/gems/rubocop-ast@1.38.0.rbi +5293 -0
  221. data/sorbet/rbi/gems/rubocop@1.71.1.rbi +31846 -0
  222. data/sorbet/rbi/gems/ruby-progressbar@1.13.0.rbi +980 -0
  223. data/sorbet/rbi/gems/ruby2_keywords@0.0.5.rbi +9 -0
  224. data/sorbet/rbi/gems/securerandom@0.4.1.rbi +33 -0
  225. data/sorbet/rbi/gems/sentry-ruby@5.22.1.rbi +3782 -0
  226. data/sorbet/rbi/gems/spoom@1.5.1.rbi +4321 -0
  227. data/sorbet/rbi/gems/stringio@3.1.2.rbi +9 -0
  228. data/sorbet/rbi/gems/tapioca@0.16.8.rbi +3399 -0
  229. data/sorbet/rbi/gems/thor@1.3.2.rbi +2012 -0
  230. data/sorbet/rbi/gems/thread_safe@0.3.6.rbi +711 -0
  231. data/sorbet/rbi/gems/timeout@0.4.4.rbi +80 -0
  232. data/sorbet/rbi/gems/tsort@0.2.0.rbi +50 -0
  233. data/sorbet/rbi/gems/tzinfo@2.0.6.rbi +1677 -0
  234. data/sorbet/rbi/gems/unicode-display_width@2.6.0.rbi +62 -0
  235. data/sorbet/rbi/gems/uri@1.1.0.rbi +760 -0
  236. data/sorbet/rbi/gems/useragent@0.16.11.rbi +9 -0
  237. data/sorbet/rbi/gems/webmock@3.24.0.rbi +1362 -0
  238. data/sorbet/rbi/gems/yard-sorbet@0.9.0.rbi +345 -0
  239. data/sorbet/rbi/gems/yard@0.9.37.rbi +8795 -0
  240. data/sorbet/rbi/gems/zeitwerk@2.7.1.rbi +589 -0
  241. data/sorbet/tapioca/config.yml +45 -0
  242. data/sorbet/tapioca/require.rb +8 -0
  243. data/sorbet/tapioca/sorbet/rbi/dsl/.gitattributes +1 -0
  244. data/sorbet/tapioca/sorbet/rbi/dsl/active_support/callbacks.rbi +23 -0
  245. metadata +737 -0
data/mutant.yml ADDED
@@ -0,0 +1,16 @@
1
+ ---
2
+ integration:
3
+ name: rspec
4
+ requires:
5
+ - alchemrest
6
+ matcher:
7
+ subjects:
8
+ - Alchemrest*
9
+ mutation:
10
+ timeout: 1.0
11
+ coverage_criteria:
12
+ timeout: true
13
+ environment_variables:
14
+ # we need to include this to avoid segfault when working with psql
15
+ PGGSSENCMODE: disable
16
+ usage: opensource
@@ -0,0 +1,80 @@
1
+ # typed: true
2
+
3
+ class Alchemrest::Result
4
+ extend T::Generic
5
+
6
+ ValueType = type_member(:out)
7
+
8
+ sealed!
9
+ abstract!
10
+
11
+ sig do
12
+ type_parameters(:Value)
13
+ .params(value: T.type_parameter(:Value))
14
+ .returns(Alchemrest::Result::Ok[T.type_parameter(:Value)])
15
+ end
16
+ def self.Ok(value); end
17
+
18
+ sig { params(error: T.any(Exception, String)).returns(Alchemrest::Result::Error) }
19
+ def self.Error(error); end
20
+
21
+ sig do
22
+ type_parameters(:ValueType)
23
+ .params(
24
+ block: T.proc.params(try: T.class_of(Alchemrest::Result::TryHelpers)).returns(
25
+ T.any(Alchemrest::Result[T.type_parameter(:ValueType)], T.type_parameter(:ValueType)),
26
+ ),
27
+ )
28
+ .returns(Alchemrest::Result[T.type_parameter(:ValueType)])
29
+ end
30
+ def self.for(&block); end
31
+
32
+ sig { returns(T::Boolean) }
33
+ def ok?; end
34
+
35
+ sig { params(other: T.untyped).returns(T::Boolean) }
36
+ def ==(other); end
37
+
38
+ sig do
39
+ type_parameters(:Result)
40
+ .params(block: T.proc.params(value: ValueType).returns(T.type_parameter(:Result)))
41
+ .returns(Alchemrest::Result[T.type_parameter(:Result)])
42
+ end
43
+ def transform(&block); end
44
+
45
+ sig { returns(ValueType) }
46
+ def unwrap_or_raise!; end
47
+
48
+ sig do
49
+ type_parameters(:Fallback)
50
+ .params(block: T.proc.returns(T.type_parameter(:Fallback)))
51
+ .returns(T.any(ValueType, T.type_parameter(:Fallback)))
52
+ end
53
+ def unwrap_or_rescue(&block); end
54
+ end
55
+
56
+ class Alchemrest::Result::Ok < Alchemrest::Result
57
+ ValueType = type_member
58
+
59
+ sig { params(value: ValueType).void }
60
+ def initialize(value); end
61
+
62
+ sig { returns([ValueType]) }
63
+ def deconstruct; end
64
+
65
+ sig { params(_keys: T.untyped).returns({ value: ValueType }) }
66
+ def deconstruct_keys(_keys); end
67
+ end
68
+
69
+ class Alchemrest::Result::Error < Alchemrest::Result
70
+ ValueType = type_member { { fixed: T.noreturn } }
71
+
72
+ sig { params(error: T.any(String, Exception)).void }
73
+ def initialize(error); end
74
+
75
+ sig { returns([Exception]) }
76
+ def deconstruct; end
77
+
78
+ sig { params(_keys: T.untyped).returns({ error: Exception }) }
79
+ def deconstruct_keys(_keys); end
80
+ end
@@ -0,0 +1,246 @@
1
+ # typed: true
2
+
3
+ module Alchemrest
4
+
5
+ sig { returns(Logger) }
6
+ def self.logger; end
7
+
8
+ end
9
+
10
+ class Alchemrest::Data::CaptureConfiguration
11
+
12
+ sig { params(keys: Symbol).void }
13
+ def safe(*keys); end
14
+
15
+ sig { params(keys: Symbol).void }
16
+ def omitted(*keys); end
17
+ end
18
+
19
+ class Alchemrest::Data
20
+ sig { params(hash: T::Hash[T.any(Symbol, String), T.untyped]).returns(T.attached_class) }
21
+ def self.from_hash(hash); end
22
+
23
+ sig { returns(Alchemrest::Data::Graph) }
24
+ def self.graph; end
25
+
26
+ sig { returns(T.class_of(Alchemrest::Data)) }
27
+ def self.[]; end
28
+
29
+ sig { params(blk: T.proc.bind(Alchemrest::Data::CaptureConfiguration).void).void }
30
+ def self.configure_response_capture(&blk); end
31
+
32
+ sig { void }
33
+ def self.schema; end
34
+
35
+ sig { params(attributes: T.untyped).void }
36
+ def initialize(**attributes); end
37
+
38
+ sig { returns(T::Hash[T.untyped, T.untyped]) }
39
+ def to_h; end
40
+ end
41
+
42
+ class Alchemrest::Data::Graph
43
+ sig { returns(T::Hash[Symbol, Alchemrest::Data::Field]) }
44
+ def fields; end
45
+
46
+ sig { returns(T.class_of(Alchemrest::Data)) }
47
+ def type; end
48
+
49
+ sig { returns(T::Hash[Symbol, Alchemrest::Data::Graph]) }
50
+ def sub_graphs; end
51
+ end
52
+
53
+ class Alchemrest::Data::Field
54
+ sig { returns(T::Array[Alchemrest::Transforms::Constraint]) }
55
+ def constraints; end
56
+
57
+ sig { returns(T.nilable(Alchemrest::Transforms::OutputType)) }
58
+ def output_type; end
59
+ end
60
+
61
+ class Alchemrest::UrlBuilder::Options
62
+ sig { params(values: T::Hash[Symbol, T.untyped]).void }
63
+ def query=(values); end
64
+
65
+ sig { params(values: T::Hash[Symbol, T.untyped]).void }
66
+ def values=(values); end
67
+
68
+ sig { params(name: Symbol).void }
69
+ def encode_query_with=(name); end
70
+
71
+ sig { params(block: T.proc.params(query: T::Hash[Symbol, T.untyped]).returns(String)).void }
72
+ def encode_query_with(&block); end
73
+ end
74
+
75
+ class Alchemrest::EndpointDefinition
76
+ end
77
+
78
+ class Alchemrest::Transforms::OutputType
79
+ sig { returns(T.nilable(Alchemrest::Data::Graph)) }
80
+ def graph; end
81
+
82
+ sig { returns(T.untyped) }
83
+ def sorbet_type; end
84
+
85
+ sig { returns(T::Array[Alchemrest::Transforms::Constraint]) }
86
+ def constraints; end
87
+ end
88
+
89
+ class Alchemrest::Transforms::Constraint
90
+ sig { returns(String) }
91
+ def description; end
92
+ end
93
+
94
+
95
+ class Alchemrest::Request
96
+ class << self
97
+ sig do
98
+ params(
99
+ http_method: Symbol,
100
+ template: String,
101
+ block: T.nilable(T.proc.bind(T.attached_class).params(url: Alchemrest::UrlBuilder::Options).void),
102
+ ).void
103
+ end
104
+ def endpoint(http_method, template, &block); end
105
+
106
+ sig do
107
+ params(
108
+ domain_type: T.class_of(Alchemrest::Data),
109
+ path_to_payload: T::Array[T.any(Symbol, String)],
110
+ allow_empty_response: T::Boolean
111
+ ).void
112
+ end
113
+ def returns(domain_type, path_to_payload: nil, allow_empty_response: false); end
114
+
115
+ sig { void }
116
+ def enable_response_capture; end
117
+ end
118
+ end
119
+
120
+ class Alchemrest::Response < SimpleDelegator
121
+ sig { returns(Integer) }
122
+ def status; end
123
+
124
+ sig { returns(T.untyped) }
125
+ def body; end
126
+
127
+ sig { returns(T::Hash[T.untyped, T.untyped]) }
128
+ def headers; end
129
+
130
+ sig { returns(String) }
131
+ def reason_phrase; end
132
+
133
+ sig { returns(T::Boolean) }
134
+ def success?; end
135
+ end
136
+
137
+ class Alchemrest::Response::Pipeline
138
+ end
139
+
140
+ class Alchemrest::Response::Pipeline::Transform
141
+ end
142
+
143
+ class Alchemrest::Response::Pipeline::ExtractPayload
144
+ end
145
+
146
+ class Alchemrest::Client
147
+
148
+ sig { params(block: T.proc.params(config: Alchemrest::Client::Configuration).bind(T.attached_class).void).void }
149
+ def self.configure(&block); end
150
+
151
+ end
152
+
153
+ class Alchemrest::CircuitBreaker; end
154
+
155
+ class Alchemrest::Client::Configuration
156
+
157
+ sig { returns(Alchemrest::Client::Configuration::Connection) }
158
+ def connection; end
159
+
160
+ sig { params(service_name: String).void }
161
+ def service_name=(service_name); end
162
+
163
+ sig do
164
+ params(
165
+ value: T.any(
166
+ T::Boolean, Alchemrest::CircuitBreaker,
167
+ {
168
+ disabled_when: T.nilable(T.proc.returns(T::Boolean)),
169
+ sleep_window: Integer,
170
+ time_window: Integer,
171
+ error_threshold: Integer,
172
+ volume_threshold: Integer,
173
+ }
174
+ )
175
+ ).void
176
+ end
177
+ def use_circuit_breaker(value); end
178
+
179
+ sig { params(value: T::Boolean).void }
180
+ def use_kill_switch(value); end
181
+ end
182
+
183
+ class Alchemrest::Client::Configuration::Connection
184
+
185
+ sig { params(url: String).void }
186
+ def url=(url); end
187
+
188
+ sig { params(block: T.proc.params(connection: Faraday::Connection).void).void }
189
+ def customize(&block); end
190
+ end
191
+
192
+
193
+ class Alchemrest::RequestDefinition
194
+ end
195
+
196
+ class Alchemrest::RequestDefinition::Builder
197
+ sig { params(value: T::Hash[Symbol, T.untyped]).void }
198
+ def defaults=(value); end
199
+ end
200
+
201
+ class Alchemrest::Root
202
+ WithParams = T.type_alias { T.proc.returns(T::Hash[Symbol, T.untyped]) }
203
+
204
+ sig { returns(T::Hash[Symbol, Alchemrest::RequestDefinition]) }
205
+ def self.request_definitions; end
206
+
207
+ sig { params(client_class: T.class_of(Alchemrest::Client)).void }
208
+ def self.use_client(client_class); end
209
+
210
+ sig do
211
+ params(
212
+ name: Symbol,
213
+ request_class: T.class_of(Alchemrest::Request),
214
+ block: T.nilable(
215
+ T.proc
216
+ .params(request: Alchemrest::RequestDefinition::Builder)
217
+ .bind(T.attached_class)
218
+ .void,
219
+ ),
220
+ ).void
221
+ end
222
+ def self.define_request(name, request_class, &block); end
223
+
224
+ sig { params(block: T.proc.bind(T.attached_class).params(error: Exception).void).void }
225
+ def self.on_alchemrest_error(&block); end
226
+
227
+ sig { params(name: Symbol, params: T::Hash[Symbol, T.untyped]).returns(Alchemrest::Request) }
228
+ def build_request(name, params = nil); end
229
+
230
+ sig { returns(Alchemrest::Client) }
231
+ def client; end
232
+ end
233
+
234
+ module Alchemrest::Result::TryHelpers
235
+ class << self
236
+ sig do
237
+ type_parameters(:Value)
238
+ .params(result: Alchemrest::Result[T.type_parameter(:Value)])
239
+ .returns(T.type_parameter(:Value))
240
+ end
241
+ def unwrap(result); end
242
+ end
243
+ end
244
+
245
+ module Alchemrest::FactoryBot
246
+ end
data/sorbet/config ADDED
@@ -0,0 +1,5 @@
1
+ --dir=.
2
+ --ignore=lib/
3
+ --ignore=spec/
4
+ --ignore=vendor/
5
+ --ignore=alchemrest.gemspec
@@ -0,0 +1 @@
1
+ **/*.rbi linguist-generated=true
@@ -0,0 +1,41 @@
1
+ # typed: true
2
+
3
+ # DO NOT EDIT MANUALLY
4
+ # This is an autogenerated file for types exported from the `abstract_type` gem.
5
+ # Please instead update this file by running `bin/tapioca gem abstract_type`.
6
+
7
+
8
+ # source://abstract_type//lib/abstract_type.rb#4
9
+ module AbstractType
10
+ mixes_in_class_methods ::AbstractType::AbstractMethodDeclarations
11
+
12
+ class << self
13
+ private
14
+
15
+ # source://abstract_type//lib/abstract_type.rb#32
16
+ def create_new_method(abstract_class); end
17
+
18
+ # source://abstract_type//lib/abstract_type.rb#14
19
+ def included(descendant); end
20
+ end
21
+ end
22
+
23
+ # source://abstract_type//lib/abstract_type.rb#44
24
+ module AbstractType::AbstractMethodDeclarations
25
+ # source://abstract_type//lib/abstract_type.rb#61
26
+ def abstract_method(*names); end
27
+
28
+ # source://abstract_type//lib/abstract_type.rb#81
29
+ def abstract_singleton_method(*names); end
30
+
31
+ private
32
+
33
+ # source://abstract_type//lib/abstract_type.rb#110
34
+ def create_abstract_instance_method(name); end
35
+
36
+ # source://abstract_type//lib/abstract_type.rb#96
37
+ def create_abstract_singleton_method(name); end
38
+ end
39
+
40
+ # source://abstract_type//lib/abstract_type/version.rb#6
41
+ AbstractType::VERSION = T.let(T.unsafe(nil), String)