finch-api 0.1.0.pre.alpha.16 → 0.1.0.pre.alpha.17

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 (163) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +30 -0
  3. data/README.md +92 -53
  4. data/lib/finch_api/client.rb +4 -4
  5. data/lib/finch_api/errors.rb +1 -1
  6. data/lib/finch_api/internal/transport/base_client.rb +77 -5
  7. data/lib/finch_api/internal/transport/pooled_net_requester.rb +17 -1
  8. data/lib/finch_api/internal/type/array_of.rb +1 -1
  9. data/lib/finch_api/internal/type/base_model.rb +70 -30
  10. data/lib/finch_api/internal/type/converter.rb +18 -0
  11. data/lib/finch_api/internal/type/enum.rb +1 -0
  12. data/lib/finch_api/internal/type/hash_of.rb +1 -1
  13. data/lib/finch_api/internal/type/union.rb +1 -0
  14. data/lib/finch_api/internal/util.rb +56 -0
  15. data/lib/finch_api/internal.rb +6 -0
  16. data/lib/finch_api/models/hris/document_retreive_response.rb +4 -0
  17. data/lib/finch_api/models/hris/employment_data.rb +10 -0
  18. data/lib/finch_api/models/hris/individual.rb +6 -0
  19. data/lib/finch_api/models/hris/pay_statement.rb +1 -0
  20. data/lib/finch_api/models/sandbox/payment_create_params.rb +1 -0
  21. data/lib/finch_api/models/webhook_event.rb +15 -0
  22. data/lib/finch_api/models.rb +27 -0
  23. data/lib/finch_api/request_options.rb +4 -0
  24. data/lib/finch_api/version.rb +1 -1
  25. data/lib/finch_api.rb +2 -0
  26. data/rbi/finch_api/internal/transport/base_client.rbi +31 -16
  27. data/rbi/finch_api/internal/transport/pooled_net_requester.rbi +10 -5
  28. data/rbi/finch_api/internal/type/base_model.rbi +33 -15
  29. data/rbi/finch_api/internal/type/base_page.rbi +1 -2
  30. data/rbi/finch_api/internal/type/converter.rbi +2 -0
  31. data/rbi/finch_api/internal/type/enum.rbi +1 -0
  32. data/rbi/finch_api/internal/type/union.rbi +1 -0
  33. data/rbi/finch_api/internal/util.rbi +28 -5
  34. data/rbi/finch_api/internal.rbi +2 -0
  35. data/rbi/finch_api/models/access_token_create_params.rbi +4 -1
  36. data/rbi/finch_api/models/account_disconnect_params.rbi +4 -1
  37. data/rbi/finch_api/models/account_introspect_params.rbi +4 -1
  38. data/rbi/finch_api/models/account_update_event.rbi +156 -34
  39. data/rbi/finch_api/models/base_webhook_event.rbi +4 -1
  40. data/rbi/finch_api/models/company_event.rbi +4 -1
  41. data/rbi/finch_api/models/connect/session_new_params.rbi +12 -2
  42. data/rbi/finch_api/models/connect/session_new_response.rbi +6 -1
  43. data/rbi/finch_api/models/connect/session_reauthenticate_params.rbi +6 -1
  44. data/rbi/finch_api/models/connect/session_reauthenticate_response.rbi +6 -1
  45. data/rbi/finch_api/models/create_access_token_response.rbi +7 -1
  46. data/rbi/finch_api/models/directory_event.rbi +7 -2
  47. data/rbi/finch_api/models/disconnect_response.rbi +4 -1
  48. data/rbi/finch_api/models/employment_event.rbi +7 -2
  49. data/rbi/finch_api/models/hris/benefit_contribution.rbi +6 -1
  50. data/rbi/finch_api/models/hris/benefit_create_params.rbi +18 -3
  51. data/rbi/finch_api/models/hris/benefit_features_and_operations.rbi +12 -2
  52. data/rbi/finch_api/models/hris/benefit_list_params.rbi +6 -1
  53. data/rbi/finch_api/models/hris/benefit_list_supported_benefits_params.rbi +6 -1
  54. data/rbi/finch_api/models/hris/benefit_list_supported_benefits_response.rbi +6 -1
  55. data/rbi/finch_api/models/hris/benefit_retrieve_params.rbi +6 -1
  56. data/rbi/finch_api/models/hris/benefit_update_params.rbi +6 -1
  57. data/rbi/finch_api/models/hris/benefits/enrolled_individual_benefit_response.rbi +6 -1
  58. data/rbi/finch_api/models/hris/benefits/individual_benefit.rbi +12 -2
  59. data/rbi/finch_api/models/hris/benefits/individual_enroll_many_params.rbi +26 -5
  60. data/rbi/finch_api/models/hris/benefits/individual_enrolled_ids_params.rbi +6 -1
  61. data/rbi/finch_api/models/hris/benefits/individual_enrolled_ids_response.rbi +6 -1
  62. data/rbi/finch_api/models/hris/benefits/individual_retrieve_many_benefits_params.rbi +6 -1
  63. data/rbi/finch_api/models/hris/benefits/individual_unenroll_many_params.rbi +6 -1
  64. data/rbi/finch_api/models/hris/benefits/unenrolled_individual_benefit_response.rbi +6 -1
  65. data/rbi/finch_api/models/hris/benefits_support.rbi +3 -1
  66. data/rbi/finch_api/models/hris/company/pay_statement_item/rule_create_params.rbi +18 -3
  67. data/rbi/finch_api/models/hris/company/pay_statement_item/rule_create_response.rbi +18 -3
  68. data/rbi/finch_api/models/hris/company/pay_statement_item/rule_delete_params.rbi +6 -1
  69. data/rbi/finch_api/models/hris/company/pay_statement_item/rule_delete_response.rbi +18 -3
  70. data/rbi/finch_api/models/hris/company/pay_statement_item/rule_list_params.rbi +6 -1
  71. data/rbi/finch_api/models/hris/company/pay_statement_item/rule_list_response.rbi +18 -3
  72. data/rbi/finch_api/models/hris/company/pay_statement_item/rule_update_params.rbi +6 -1
  73. data/rbi/finch_api/models/hris/company/pay_statement_item/rule_update_response.rbi +18 -3
  74. data/rbi/finch_api/models/hris/company/pay_statement_item_list_params.rbi +6 -1
  75. data/rbi/finch_api/models/hris/company/pay_statement_item_list_response.rbi +12 -2
  76. data/rbi/finch_api/models/hris/company.rbi +27 -5
  77. data/rbi/finch_api/models/hris/company_benefit.rbi +15 -3
  78. data/rbi/finch_api/models/hris/company_retrieve_params.rbi +6 -1
  79. data/rbi/finch_api/models/hris/create_company_benefits_response.rbi +6 -1
  80. data/rbi/finch_api/models/hris/directory_list_individuals_params.rbi +6 -1
  81. data/rbi/finch_api/models/hris/directory_list_params.rbi +6 -1
  82. data/rbi/finch_api/models/hris/document_list_params.rbi +6 -1
  83. data/rbi/finch_api/models/hris/document_list_response.rbi +6 -1
  84. data/rbi/finch_api/models/hris/document_response.rbi +3 -1
  85. data/rbi/finch_api/models/hris/document_retreive_params.rbi +6 -1
  86. data/rbi/finch_api/models/hris/employment_data.rbi +36 -6
  87. data/rbi/finch_api/models/hris/employment_data_response.rbi +6 -1
  88. data/rbi/finch_api/models/hris/employment_retrieve_many_params.rbi +12 -2
  89. data/rbi/finch_api/models/hris/individual.rbi +24 -4
  90. data/rbi/finch_api/models/hris/individual_in_directory.rbi +18 -3
  91. data/rbi/finch_api/models/hris/individual_response.rbi +6 -1
  92. data/rbi/finch_api/models/hris/individual_retrieve_many_params.rbi +18 -3
  93. data/rbi/finch_api/models/hris/pay_statement.rbi +80 -13
  94. data/rbi/finch_api/models/hris/pay_statement_response.rbi +6 -1
  95. data/rbi/finch_api/models/hris/pay_statement_response_body.rbi +6 -1
  96. data/rbi/finch_api/models/hris/pay_statement_retrieve_many_params.rbi +12 -2
  97. data/rbi/finch_api/models/hris/payment.rbi +9 -2
  98. data/rbi/finch_api/models/hris/payment_list_params.rbi +6 -1
  99. data/rbi/finch_api/models/hris/support_per_benefit_type.rbi +6 -1
  100. data/rbi/finch_api/models/hris/supported_benefit.rbi +3 -1
  101. data/rbi/finch_api/models/hris/update_company_benefit_response.rbi +6 -1
  102. data/rbi/finch_api/models/hris/w42005.rbi +6 -2
  103. data/rbi/finch_api/models/hris/w42020.rbi +6 -2
  104. data/rbi/finch_api/models/income.rbi +2 -1
  105. data/rbi/finch_api/models/individual_event.rbi +7 -2
  106. data/rbi/finch_api/models/introspection.rbi +22 -4
  107. data/rbi/finch_api/models/job_completion_event.rbi +10 -2
  108. data/rbi/finch_api/models/jobs/automated_async_job.rbi +12 -2
  109. data/rbi/finch_api/models/jobs/automated_create_params.rbi +12 -2
  110. data/rbi/finch_api/models/jobs/automated_create_response.rbi +6 -1
  111. data/rbi/finch_api/models/jobs/automated_list_params.rbi +6 -1
  112. data/rbi/finch_api/models/jobs/automated_list_response.rbi +24 -4
  113. data/rbi/finch_api/models/jobs/automated_retrieve_params.rbi +6 -1
  114. data/rbi/finch_api/models/jobs/manual_async_job.rbi +3 -1
  115. data/rbi/finch_api/models/jobs/manual_retrieve_params.rbi +6 -1
  116. data/rbi/finch_api/models/location.rbi +2 -1
  117. data/rbi/finch_api/models/money.rbi +2 -1
  118. data/rbi/finch_api/models/operation_support_matrix.rbi +4 -1
  119. data/rbi/finch_api/models/paging.rbi +2 -1
  120. data/rbi/finch_api/models/pay_statement_event.rbi +10 -2
  121. data/rbi/finch_api/models/payment_event.rbi +7 -2
  122. data/rbi/finch_api/models/payroll/pay_group_list_params.rbi +6 -1
  123. data/rbi/finch_api/models/payroll/pay_group_list_response.rbi +6 -1
  124. data/rbi/finch_api/models/payroll/pay_group_retrieve_params.rbi +6 -1
  125. data/rbi/finch_api/models/payroll/pay_group_retrieve_response.rbi +6 -1
  126. data/rbi/finch_api/models/provider.rbi +182 -33
  127. data/rbi/finch_api/models/provider_list_params.rbi +4 -1
  128. data/rbi/finch_api/models/request_forwarding_forward_params.rbi +7 -1
  129. data/rbi/finch_api/models/request_forwarding_forward_response.rbi +13 -2
  130. data/rbi/finch_api/models/sandbox/company_update_params.rbi +30 -5
  131. data/rbi/finch_api/models/sandbox/company_update_response.rbi +30 -5
  132. data/rbi/finch_api/models/sandbox/connection_create_params.rbi +6 -1
  133. data/rbi/finch_api/models/sandbox/connection_create_response.rbi +6 -1
  134. data/rbi/finch_api/models/sandbox/connections/account_create_params.rbi +6 -1
  135. data/rbi/finch_api/models/sandbox/connections/account_create_response.rbi +6 -1
  136. data/rbi/finch_api/models/sandbox/connections/account_update_params.rbi +6 -1
  137. data/rbi/finch_api/models/sandbox/connections/account_update_response.rbi +6 -1
  138. data/rbi/finch_api/models/sandbox/directory_create_params.rbi +48 -8
  139. data/rbi/finch_api/models/sandbox/employment_update_params.rbi +30 -5
  140. data/rbi/finch_api/models/sandbox/employment_update_response.rbi +30 -5
  141. data/rbi/finch_api/models/sandbox/individual_update_params.rbi +18 -3
  142. data/rbi/finch_api/models/sandbox/individual_update_response.rbi +18 -3
  143. data/rbi/finch_api/models/sandbox/job_create_params.rbi +6 -1
  144. data/rbi/finch_api/models/sandbox/job_create_response.rbi +6 -1
  145. data/rbi/finch_api/models/sandbox/jobs/configuration_retrieve_params.rbi +6 -1
  146. data/rbi/finch_api/models/sandbox/jobs/configuration_update_params.rbi +6 -1
  147. data/rbi/finch_api/models/sandbox/jobs/sandbox_job_configuration.rbi +6 -1
  148. data/rbi/finch_api/models/sandbox/payment_create_params.rbi +81 -14
  149. data/rbi/finch_api/models/sandbox/payment_create_response.rbi +6 -1
  150. data/rbi/finch_api/request_options.rbi +4 -1
  151. data/sig/finch_api/internal/single_page.rbs +1 -1
  152. data/sig/finch_api/internal/transport/base_client.rbs +16 -1
  153. data/sig/finch_api/internal/transport/pooled_net_requester.rbs +4 -0
  154. data/sig/finch_api/internal/type/base_model.rbs +11 -5
  155. data/sig/finch_api/internal/type/base_page.rbs +1 -1
  156. data/sig/finch_api/internal/type/converter.rbs +2 -0
  157. data/sig/finch_api/internal/type/enum.rbs +1 -0
  158. data/sig/finch_api/internal/type/union.rbs +1 -0
  159. data/sig/finch_api/internal/util.rbs +13 -0
  160. data/sig/finch_api/internal.rbs +2 -0
  161. data/sig/finch_api/models/hris/pay_statement.rbs +2 -1
  162. data/sig/finch_api/models/sandbox/payment_create_params.rbs +2 -1
  163. metadata +2 -2
@@ -42,6 +42,7 @@ module FinchAPI
42
42
  # end
43
43
  module Enum
44
44
  include FinchAPI::Internal::Type::Converter
45
+ include FinchAPI::Internal::Util::SorbetRuntimeSupport
45
46
 
46
47
  # All of the valid Symbol values for this enum.
47
48
  #
@@ -29,7 +29,7 @@ module FinchAPI
29
29
  #
30
30
  # @option spec [Boolean] :"nil?"
31
31
  #
32
- # @return [FinchAPI::Internal::Type::HashOf]
32
+ # @return [self]
33
33
  def self.[](...) = new(...)
34
34
 
35
35
  # @api public
@@ -27,6 +27,7 @@ module FinchAPI
27
27
  # end
28
28
  module Union
29
29
  include FinchAPI::Internal::Type::Converter
30
+ include FinchAPI::Internal::Util::SorbetRuntimeSupport
30
31
 
31
32
  # @api private
32
33
  #
@@ -801,6 +801,62 @@ module FinchAPI
801
801
  end
802
802
  end
803
803
  end
804
+
805
+ # @api private
806
+ module SorbetRuntimeSupport
807
+ class MissingSorbetRuntimeError < ::RuntimeError
808
+ end
809
+
810
+ # @api private
811
+ #
812
+ # @return [Hash{Symbol=>Object}]
813
+ private def sorbet_runtime_constants = @sorbet_runtime_constants ||= {}
814
+
815
+ # @api private
816
+ #
817
+ # @param name [Symbol]
818
+ def const_missing(name)
819
+ super unless sorbet_runtime_constants.key?(name)
820
+
821
+ unless Object.const_defined?(:T)
822
+ message = "Trying to access a Sorbet constant #{name.inspect} without `sorbet-runtime`."
823
+ raise MissingSorbetRuntimeError.new(message)
824
+ end
825
+
826
+ sorbet_runtime_constants.fetch(name).call
827
+ end
828
+
829
+ # @api private
830
+ #
831
+ # @param name [Symbol]
832
+ # @param blk [Proc]
833
+ def define_sorbet_constant!(name, &blk) = sorbet_runtime_constants.store(name, blk)
834
+ end
835
+
836
+ extend FinchAPI::Internal::Util::SorbetRuntimeSupport
837
+
838
+ define_sorbet_constant!(:ParsedUri) do
839
+ T.type_alias do
840
+ {
841
+ scheme: T.nilable(String),
842
+ host: T.nilable(String),
843
+ port: T.nilable(Integer),
844
+ path: T.nilable(String),
845
+ query: T::Hash[String, T::Array[String]]
846
+ }
847
+ end
848
+ end
849
+
850
+ define_sorbet_constant!(:ServerSentEvent) do
851
+ T.type_alias do
852
+ {
853
+ event: T.nilable(String),
854
+ data: T.nilable(String),
855
+ id: T.nilable(String),
856
+ retry: T.nilable(Integer)
857
+ }
858
+ end
859
+ end
804
860
  end
805
861
  end
806
862
  end
@@ -2,10 +2,16 @@
2
2
 
3
3
  module FinchAPI
4
4
  module Internal
5
+ extend FinchAPI::Internal::Util::SorbetRuntimeSupport
6
+
5
7
  OMIT =
6
8
  Object.new.tap do
7
9
  _1.define_singleton_method(:inspect) { "#<#{FinchAPI::Internal}::OMIT>" }
8
10
  end
9
11
  .freeze
12
+
13
+ define_sorbet_constant!(:AnyHash) do
14
+ T.type_alias { T::Hash[Symbol, T.anything] }
15
+ end
10
16
  end
11
17
  end
@@ -20,6 +20,10 @@ module FinchAPI
20
20
 
21
21
  # @!method self.variants
22
22
  # @return [Array(FinchAPI::HRIS::W42020, FinchAPI::HRIS::W42005)]
23
+
24
+ define_sorbet_constant!(:Variants) do
25
+ T.type_alias { T.any(FinchAPI::HRIS::W42020, FinchAPI::HRIS::W42005) }
26
+ end
23
27
  end
24
28
  end
25
29
  end
@@ -221,6 +221,10 @@ module FinchAPI
221
221
  # @!method self.variants
222
222
  # @return [Array(String, Array<Object>, Object, Float, Boolean)]
223
223
 
224
+ define_sorbet_constant!(:Variants) do
225
+ T.type_alias { T.any(String, T::Array[T.anything], T.anything, Float, T::Boolean) }
226
+ end
227
+
224
228
  # @type [FinchAPI::Internal::Type::Converter]
225
229
  UnionMember1Array = FinchAPI::Internal::Type::ArrayOf[FinchAPI::Internal::Type::Unknown]
226
230
  end
@@ -367,6 +371,12 @@ module FinchAPI
367
371
 
368
372
  # @!method self.variants
369
373
  # @return [Array(FinchAPI::HRIS::EmploymentData::UnionMember0, FinchAPI::HRIS::EmploymentData::BatchError)]
374
+
375
+ define_sorbet_constant!(:Variants) do
376
+ T.type_alias do
377
+ T.any(FinchAPI::HRIS::EmploymentData::UnionMember0, FinchAPI::HRIS::EmploymentData::BatchError)
378
+ end
379
+ end
370
380
  end
371
381
  end
372
382
  end
@@ -250,6 +250,12 @@ module FinchAPI
250
250
 
251
251
  # @!method self.variants
252
252
  # @return [Array(FinchAPI::HRIS::Individual::UnionMember0, FinchAPI::HRIS::Individual::BatchError)]
253
+
254
+ define_sorbet_constant!(:Variants) do
255
+ T.type_alias do
256
+ T.any(FinchAPI::HRIS::Individual::UnionMember0, FinchAPI::HRIS::Individual::BatchError)
257
+ end
258
+ end
253
259
  end
254
260
  end
255
261
  end
@@ -370,6 +370,7 @@ module FinchAPI
370
370
 
371
371
  CHECK = :check
372
372
  DIRECT_DEPOSIT = :direct_deposit
373
+ OTHER = :other
373
374
 
374
375
  # @!method self.values
375
376
  # @return [Array<Symbol>]
@@ -423,6 +423,7 @@ module FinchAPI
423
423
 
424
424
  CHECK = :check
425
425
  DIRECT_DEPOSIT = :direct_deposit
426
+ OTHER = :other
426
427
 
427
428
  # @!method self.values
428
429
  # @return [Array<Symbol>]
@@ -25,6 +25,21 @@ module FinchAPI
25
25
 
26
26
  # @!method self.variants
27
27
  # @return [Array(FinchAPI::AccountUpdateEvent, FinchAPI::CompanyEvent, FinchAPI::JobCompletionEvent, FinchAPI::DirectoryEvent, FinchAPI::EmploymentEvent, FinchAPI::IndividualEvent, FinchAPI::PaymentEvent, FinchAPI::PayStatementEvent)]
28
+
29
+ define_sorbet_constant!(:Variants) do
30
+ T.type_alias do
31
+ T.any(
32
+ FinchAPI::AccountUpdateEvent,
33
+ FinchAPI::CompanyEvent,
34
+ FinchAPI::JobCompletionEvent,
35
+ FinchAPI::DirectoryEvent,
36
+ FinchAPI::EmploymentEvent,
37
+ FinchAPI::IndividualEvent,
38
+ FinchAPI::PaymentEvent,
39
+ FinchAPI::PayStatementEvent
40
+ )
41
+ end
42
+ end
28
43
  end
29
44
  end
30
45
  end
@@ -1,6 +1,33 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module FinchAPI
4
+ [FinchAPI::Internal::Type::BaseModel, *FinchAPI::Internal::Type::BaseModel.subclasses].each do |cls|
5
+ cls.define_sorbet_constant!(:OrHash) { T.type_alias { T.any(cls, FinchAPI::Internal::AnyHash) } }
6
+ end
7
+
8
+ [
9
+ *FinchAPI::Internal::Type::Enum.included_modules,
10
+ *FinchAPI::Internal::Type::Union.included_modules
11
+ ].each do |cls|
12
+ cls.constants.each do |name|
13
+ case cls.const_get(name)
14
+ in true | false
15
+ cls.define_sorbet_constant!(:TaggedBoolean) { T.type_alias { T.all(T::Boolean, cls) } }
16
+ cls.define_sorbet_constant!(:OrBoolean) { T.type_alias { T::Boolean } }
17
+ in Integer
18
+ cls.define_sorbet_constant!(:TaggedInteger) { T.type_alias { T.all(Integer, cls) } }
19
+ cls.define_sorbet_constant!(:OrInteger) { T.type_alias { Integer } }
20
+ in Float
21
+ cls.define_sorbet_constant!(:TaggedFloat) { T.type_alias { T.all(Float, cls) } }
22
+ cls.define_sorbet_constant!(:OrFloat) { T.type_alias { Float } }
23
+ in Symbol
24
+ cls.define_sorbet_constant!(:TaggedSymbol) { T.type_alias { T.all(Symbol, cls) } }
25
+ cls.define_sorbet_constant!(:OrSymbol) { T.type_alias { T.any(Symbol, String) } }
26
+ else
27
+ end
28
+ end
29
+ end
30
+
4
31
  AccessTokenCreateParams = FinchAPI::Models::AccessTokenCreateParams
5
32
 
6
33
  AccountDisconnectParams = FinchAPI::Models::AccountDisconnectParams
@@ -69,5 +69,9 @@ module FinchAPI
69
69
  # Returns a new instance of RequestOptions.
70
70
  #
71
71
  # @param values [Hash{Symbol=>Object}]
72
+
73
+ define_sorbet_constant!(:OrHash) do
74
+ T.type_alias { T.any(FinchAPI::RequestOptions, FinchAPI::Internal::AnyHash) }
75
+ end
72
76
  end
73
77
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module FinchAPI
4
- VERSION = "0.1.0.pre.alpha.16"
4
+ VERSION = "0.1.0.pre.alpha.17"
5
5
  end
data/lib/finch_api.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Standard libraries.
4
+ # rubocop:disable Lint/RedundantRequireStatement
4
5
  require "English"
5
6
  require "cgi"
6
7
  require "date"
@@ -15,6 +16,7 @@ require "set"
15
16
  require "stringio"
16
17
  require "time"
17
18
  require "uri"
19
+ # rubocop:enable Lint/RedundantRequireStatement
18
20
 
19
21
  # We already ship the preferred sorbet manifests in the package itself.
20
22
  # `tapioca` currently does not offer us a way to opt out of unnecessary compilation.
@@ -5,9 +5,11 @@ module FinchAPI
5
5
  module Transport
6
6
  # @api private
7
7
  class BaseClient
8
+ extend FinchAPI::Internal::Util::SorbetRuntimeSupport
9
+
8
10
  abstract!
9
11
 
10
- RequestComponentsShape =
12
+ RequestComponents =
11
13
  T.type_alias do
12
14
  {
13
15
  method: Symbol,
@@ -53,7 +55,7 @@ module FinchAPI
53
55
  }
54
56
  end
55
57
 
56
- RequestInputShape =
58
+ RequestInput =
57
59
  T.type_alias do
58
60
  {
59
61
  method: Symbol,
@@ -74,8 +76,7 @@ module FinchAPI
74
76
  # @api private
75
77
  sig do
76
78
  params(
77
- req:
78
- FinchAPI::Internal::Transport::BaseClient::RequestComponentsShape
79
+ req: FinchAPI::Internal::Transport::BaseClient::RequestComponents
79
80
  ).void
80
81
  end
81
82
  def validate!(req)
@@ -94,13 +95,10 @@ module FinchAPI
94
95
  # @api private
95
96
  sig do
96
97
  params(
97
- request:
98
- FinchAPI::Internal::Transport::BaseClient::RequestInputShape,
98
+ request: FinchAPI::Internal::Transport::BaseClient::RequestInput,
99
99
  status: Integer,
100
100
  response_headers: T.any(T::Hash[String, String], Net::HTTPHeader)
101
- ).returns(
102
- FinchAPI::Internal::Transport::BaseClient::RequestInputShape
103
- )
101
+ ).returns(FinchAPI::Internal::Transport::BaseClient::RequestInput)
104
102
  end
105
103
  def follow_redirect(request, status:, response_headers:)
106
104
  end
@@ -116,6 +114,27 @@ module FinchAPI
116
114
  end
117
115
  end
118
116
 
117
+ sig { returns(URI::Generic) }
118
+ attr_reader :base_url
119
+
120
+ sig { returns(Float) }
121
+ attr_reader :timeout
122
+
123
+ sig { returns(Integer) }
124
+ attr_reader :max_retries
125
+
126
+ sig { returns(Float) }
127
+ attr_reader :initial_retry_delay
128
+
129
+ sig { returns(Float) }
130
+ attr_reader :max_retry_delay
131
+
132
+ sig { returns(T::Hash[String, String]) }
133
+ attr_reader :headers
134
+
135
+ sig { returns(T.nilable(String)) }
136
+ attr_reader :idempotency_header
137
+
119
138
  # @api private
120
139
  sig { returns(FinchAPI::Internal::Transport::PooledNetRequester) }
121
140
  attr_reader :requester
@@ -167,13 +186,10 @@ module FinchAPI
167
186
  sig do
168
187
  overridable
169
188
  .params(
170
- req:
171
- FinchAPI::Internal::Transport::BaseClient::RequestComponentsShape,
189
+ req: FinchAPI::Internal::Transport::BaseClient::RequestComponents,
172
190
  opts: FinchAPI::Internal::AnyHash
173
191
  )
174
- .returns(
175
- FinchAPI::Internal::Transport::BaseClient::RequestInputShape
176
- )
192
+ .returns(FinchAPI::Internal::Transport::BaseClient::RequestInput)
177
193
  end
178
194
  private def build_request(req, opts)
179
195
  end
@@ -191,8 +207,7 @@ module FinchAPI
191
207
  # @api private
192
208
  sig do
193
209
  params(
194
- request:
195
- FinchAPI::Internal::Transport::BaseClient::RequestInputShape,
210
+ request: FinchAPI::Internal::Transport::BaseClient::RequestInput,
196
211
  redirect_count: Integer,
197
212
  retry_count: Integer,
198
213
  send_retry_header: T::Boolean
@@ -5,7 +5,9 @@ module FinchAPI
5
5
  module Transport
6
6
  # @api private
7
7
  class PooledNetRequester
8
- RequestShape =
8
+ extend FinchAPI::Internal::Util::SorbetRuntimeSupport
9
+
10
+ Request =
9
11
  T.type_alias do
10
12
  {
11
13
  method: Symbol,
@@ -20,6 +22,8 @@ module FinchAPI
20
22
  # https://github.com/golang/go/blob/c8eced8580028328fde7c03cbfcb720ce15b2358/src/net/http/transport.go#L49
21
23
  KEEP_ALIVE_TIMEOUT = 30
22
24
 
25
+ DEFAULT_MAX_CONNECTIONS = T.let(T.unsafe(nil), Integer)
26
+
23
27
  class << self
24
28
  # @api private
25
29
  sig { params(url: URI::Generic).returns(Net::HTTP) }
@@ -35,7 +39,7 @@ module FinchAPI
35
39
  sig do
36
40
  params(
37
41
  request:
38
- FinchAPI::Internal::Transport::PooledNetRequester::RequestShape,
42
+ FinchAPI::Internal::Transport::PooledNetRequester::Request,
39
43
  blk: T.proc.params(arg0: String).void
40
44
  ).returns([Net::HTTPGenericRequest, T.proc.void])
41
45
  end
@@ -57,8 +61,7 @@ module FinchAPI
57
61
  # @api private
58
62
  sig do
59
63
  params(
60
- request:
61
- FinchAPI::Internal::Transport::PooledNetRequester::RequestShape
64
+ request: FinchAPI::Internal::Transport::PooledNetRequester::Request
62
65
  ).returns([Integer, Net::HTTPResponse, T::Enumerable[String]])
63
66
  end
64
67
  def execute(request)
@@ -66,7 +69,9 @@ module FinchAPI
66
69
 
67
70
  # @api private
68
71
  sig { params(size: Integer).returns(T.attached_class) }
69
- def self.new(size: Etc.nprocessors)
72
+ def self.new(
73
+ size: FinchAPI::Internal::Transport::PooledNetRequester::DEFAULT_MAX_CONNECTIONS
74
+ )
70
75
  end
71
76
  end
72
77
  end
@@ -5,10 +5,11 @@ module FinchAPI
5
5
  module Type
6
6
  class BaseModel
7
7
  extend FinchAPI::Internal::Type::Converter
8
+ extend FinchAPI::Internal::Util::SorbetRuntimeSupport
8
9
 
9
10
  abstract!
10
11
 
11
- KnownFieldShape =
12
+ KnownField =
12
13
  T.type_alias do
13
14
  {
14
15
  mode: T.nilable(Symbol),
@@ -18,19 +19,29 @@ module FinchAPI
18
19
  end
19
20
 
20
21
  OrHash =
21
- T.type_alias { T.any(T.self_type, FinchAPI::Internal::AnyHash) }
22
+ T.type_alias do
23
+ T.any(
24
+ FinchAPI::Internal::Type::BaseModel,
25
+ FinchAPI::Internal::AnyHash
26
+ )
27
+ end
22
28
 
23
29
  class << self
24
30
  # @api private
25
31
  #
26
32
  # Assumes superclass fields are totally defined before fields are accessed /
27
33
  # defined on subclasses.
34
+ sig { params(child: T.self_type).void }
35
+ def inherited(child)
36
+ end
37
+
38
+ # @api private
28
39
  sig do
29
40
  returns(
30
41
  T::Hash[
31
42
  Symbol,
32
43
  T.all(
33
- FinchAPI::Internal::Type::BaseModel::KnownFieldShape,
44
+ FinchAPI::Internal::Type::BaseModel::KnownField,
34
45
  {
35
46
  type_fn:
36
47
  T.proc.returns(FinchAPI::Internal::Type::Converter::Input)
@@ -48,7 +59,7 @@ module FinchAPI
48
59
  T::Hash[
49
60
  Symbol,
50
61
  T.all(
51
- FinchAPI::Internal::Type::BaseModel::KnownFieldShape,
62
+ FinchAPI::Internal::Type::BaseModel::KnownField,
52
63
  { type: FinchAPI::Internal::Type::Converter::Input }
53
64
  )
54
65
  ]
@@ -188,6 +199,18 @@ module FinchAPI
188
199
  end
189
200
  end
190
201
 
202
+ class << self
203
+ # @api private
204
+ sig do
205
+ params(
206
+ model: FinchAPI::Internal::Type::BaseModel,
207
+ convert: T::Boolean
208
+ ).returns(FinchAPI::Internal::AnyHash)
209
+ end
210
+ def recursively_to_h(model, convert:)
211
+ end
212
+ end
213
+
191
214
  # Returns the raw value associated with the given key, if found. Otherwise, nil is
192
215
  # returned.
193
216
  #
@@ -222,6 +245,12 @@ module FinchAPI
222
245
  def to_hash
223
246
  end
224
247
 
248
+ # In addition to the behaviour of `#to_h`, this method will recursively call
249
+ # `#to_h` on nested models.
250
+ sig { overridable.returns(FinchAPI::Internal::AnyHash) }
251
+ def deep_to_h
252
+ end
253
+
225
254
  sig do
226
255
  params(keys: T.nilable(T::Array[Symbol])).returns(
227
256
  FinchAPI::Internal::AnyHash
@@ -230,17 +259,6 @@ module FinchAPI
230
259
  def deconstruct_keys(keys)
231
260
  end
232
261
 
233
- class << self
234
- # @api private
235
- sig do
236
- params(model: FinchAPI::Internal::Type::BaseModel).returns(
237
- FinchAPI::Internal::AnyHash
238
- )
239
- end
240
- def walk(model)
241
- end
242
- end
243
-
244
262
  sig { params(a: T.anything).returns(String) }
245
263
  def to_json(*a)
246
264
  end
@@ -29,8 +29,7 @@ module FinchAPI
29
29
  sig do
30
30
  params(
31
31
  client: FinchAPI::Internal::Transport::BaseClient,
32
- req:
33
- FinchAPI::Internal::Transport::BaseClient::RequestComponentsShape,
32
+ req: FinchAPI::Internal::Transport::BaseClient::RequestComponents,
34
33
  headers: T.any(T::Hash[String, String], Net::HTTPHeader),
35
34
  page_data: T.anything
36
35
  ).void
@@ -5,6 +5,8 @@ module FinchAPI
5
5
  module Type
6
6
  # @api private
7
7
  module Converter
8
+ extend FinchAPI::Internal::Util::SorbetRuntimeSupport
9
+
8
10
  Input =
9
11
  T.type_alias do
10
12
  T.any(FinchAPI::Internal::Type::Converter, T::Class[T.anything])
@@ -17,6 +17,7 @@ module FinchAPI
17
17
  # values safely.
18
18
  module Enum
19
19
  include FinchAPI::Internal::Type::Converter
20
+ include FinchAPI::Internal::Util::SorbetRuntimeSupport
20
21
 
21
22
  # All of the valid Symbol values for this enum.
22
23
  sig do
@@ -6,6 +6,7 @@ module FinchAPI
6
6
  # @api private
7
7
  module Union
8
8
  include FinchAPI::Internal::Type::Converter
9
+ include FinchAPI::Internal::Util::SorbetRuntimeSupport
9
10
 
10
11
  # @api private
11
12
  #
@@ -4,6 +4,8 @@ module FinchAPI
4
4
  module Internal
5
5
  # @api private
6
6
  module Util
7
+ extend FinchAPI::Internal::Util::SorbetRuntimeSupport
8
+
7
9
  # @api private
8
10
  sig { returns(Float) }
9
11
  def self.monotonic_secs
@@ -172,7 +174,7 @@ module FinchAPI
172
174
  end
173
175
  end
174
176
 
175
- ParsedUriShape =
177
+ ParsedUri =
176
178
  T.type_alias do
177
179
  {
178
180
  scheme: T.nilable(String),
@@ -187,7 +189,7 @@ module FinchAPI
187
189
  # @api private
188
190
  sig do
189
191
  params(url: T.any(URI::Generic, String)).returns(
190
- FinchAPI::Internal::Util::ParsedUriShape
192
+ FinchAPI::Internal::Util::ParsedUri
191
193
  )
192
194
  end
193
195
  def parse_uri(url)
@@ -195,7 +197,7 @@ module FinchAPI
195
197
 
196
198
  # @api private
197
199
  sig do
198
- params(parsed: FinchAPI::Internal::Util::ParsedUriShape).returns(
200
+ params(parsed: FinchAPI::Internal::Util::ParsedUri).returns(
199
201
  URI::Generic
200
202
  )
201
203
  end
@@ -205,8 +207,8 @@ module FinchAPI
205
207
  # @api private
206
208
  sig do
207
209
  params(
208
- lhs: FinchAPI::Internal::Util::ParsedUriShape,
209
- rhs: FinchAPI::Internal::Util::ParsedUriShape
210
+ lhs: FinchAPI::Internal::Util::ParsedUri,
211
+ rhs: FinchAPI::Internal::Util::ParsedUri
210
212
  ).returns(URI::Generic)
211
213
  end
212
214
  def join_parsed_uri(lhs, rhs)
@@ -423,6 +425,27 @@ module FinchAPI
423
425
  def decode_sse(lines)
424
426
  end
425
427
  end
428
+
429
+ # @api private
430
+ module SorbetRuntimeSupport
431
+ class MissingSorbetRuntimeError < ::RuntimeError
432
+ end
433
+
434
+ # @api private
435
+ sig { returns(T::Hash[Symbol, T.anything]) }
436
+ private def sorbet_runtime_constants
437
+ end
438
+
439
+ # @api private
440
+ sig { params(name: Symbol).void }
441
+ def const_missing(name)
442
+ end
443
+
444
+ # @api private
445
+ sig { params(name: Symbol, blk: T.proc.returns(T.anything)).void }
446
+ def define_sorbet_constant!(name, &blk)
447
+ end
448
+ end
426
449
  end
427
450
  end
428
451
  end
@@ -2,6 +2,8 @@
2
2
 
3
3
  module FinchAPI
4
4
  module Internal
5
+ extend FinchAPI::Internal::Util::SorbetRuntimeSupport
6
+
5
7
  # Due to the current WIP status of Shapes support in Sorbet, types referencing
6
8
  # this alias might be refined in the future.
7
9
  AnyHash = T.type_alias { T::Hash[Symbol, T.anything] }
@@ -6,7 +6,10 @@ module FinchAPI
6
6
  extend FinchAPI::Internal::Type::RequestParameters::Converter
7
7
  include FinchAPI::Internal::Type::RequestParameters
8
8
 
9
- OrHash = T.type_alias { T.any(T.self_type, FinchAPI::Internal::AnyHash) }
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(FinchAPI::AccessTokenCreateParams, FinchAPI::Internal::AnyHash)
12
+ end
10
13
 
11
14
  sig { returns(String) }
12
15
  attr_accessor :code
@@ -6,7 +6,10 @@ module FinchAPI
6
6
  extend FinchAPI::Internal::Type::RequestParameters::Converter
7
7
  include FinchAPI::Internal::Type::RequestParameters
8
8
 
9
- OrHash = T.type_alias { T.any(T.self_type, FinchAPI::Internal::AnyHash) }
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(FinchAPI::AccountDisconnectParams, FinchAPI::Internal::AnyHash)
12
+ end
10
13
 
11
14
  sig do
12
15
  params(request_options: FinchAPI::RequestOptions::OrHash).returns(
@@ -6,7 +6,10 @@ module FinchAPI
6
6
  extend FinchAPI::Internal::Type::RequestParameters::Converter
7
7
  include FinchAPI::Internal::Type::RequestParameters
8
8
 
9
- OrHash = T.type_alias { T.any(T.self_type, FinchAPI::Internal::AnyHash) }
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(FinchAPI::AccountIntrospectParams, FinchAPI::Internal::AnyHash)
12
+ end
10
13
 
11
14
  sig do
12
15
  params(request_options: FinchAPI::RequestOptions::OrHash).returns(