finch-api 0.1.0.pre.alpha.18 → 0.1.0.pre.alpha.20

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 (293) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +50 -0
  3. data/README.md +4 -4
  4. data/SECURITY.md +2 -2
  5. data/lib/finch_api/errors.rb +22 -0
  6. data/lib/finch_api/internal/individuals_page.rb +1 -1
  7. data/lib/finch_api/internal/page.rb +1 -1
  8. data/lib/finch_api/internal/type/array_of.rb +14 -1
  9. data/lib/finch_api/internal/type/base_model.rb +84 -25
  10. data/lib/finch_api/internal/type/boolean.rb +15 -1
  11. data/lib/finch_api/internal/type/converter.rb +42 -34
  12. data/lib/finch_api/internal/type/enum.rb +25 -2
  13. data/lib/finch_api/internal/type/file_input.rb +13 -1
  14. data/lib/finch_api/internal/type/hash_of.rb +14 -1
  15. data/lib/finch_api/internal/type/union.rb +27 -7
  16. data/lib/finch_api/internal/type/unknown.rb +15 -1
  17. data/lib/finch_api/internal/util.rb +62 -10
  18. data/lib/finch_api/internal.rb +3 -0
  19. data/lib/finch_api/models/account_update_event.rb +110 -109
  20. data/lib/finch_api/models/base_webhook_event.rb +1 -1
  21. data/lib/finch_api/models/company_event.rb +2 -2
  22. data/lib/finch_api/models/connect/session_new_params.rb +12 -12
  23. data/lib/finch_api/models/connect/session_reauthenticate_params.rb +2 -2
  24. data/lib/finch_api/models/create_access_token_response.rb +7 -7
  25. data/lib/finch_api/models/directory_event.rb +4 -4
  26. data/lib/finch_api/models/employment_event.rb +4 -4
  27. data/lib/finch_api/models/hris/benefit_contribution.rb +3 -3
  28. data/lib/finch_api/models/hris/benefit_create_params.rb +11 -11
  29. data/lib/finch_api/models/hris/benefit_features_and_operations.rb +5 -120
  30. data/lib/finch_api/models/hris/benefit_type.rb +10 -10
  31. data/lib/finch_api/models/hris/benefits/individual_benefit.rb +11 -11
  32. data/lib/finch_api/models/hris/benefits/individual_enroll_many_params.rb +23 -23
  33. data/lib/finch_api/models/hris/benefits_support.rb +24 -24
  34. data/lib/finch_api/models/hris/company/pay_statement_item/rule_create_params.rb +11 -11
  35. data/lib/finch_api/models/hris/company/pay_statement_item_list_params.rb +2 -2
  36. data/lib/finch_api/models/hris/company/pay_statement_item_list_response.rb +18 -18
  37. data/lib/finch_api/models/hris/company.rb +23 -23
  38. data/lib/finch_api/models/hris/company_benefit.rb +12 -12
  39. data/lib/finch_api/models/hris/document_list_params.rb +2 -2
  40. data/lib/finch_api/models/hris/document_list_response.rb +4 -4
  41. data/lib/finch_api/models/hris/document_response.rb +4 -4
  42. data/lib/finch_api/models/hris/document_retreive_response.rb +1 -5
  43. data/lib/finch_api/models/hris/employment_data.rb +89 -99
  44. data/lib/finch_api/models/hris/employment_data_response.rb +2 -2
  45. data/lib/finch_api/models/hris/employment_retrieve_many_params.rb +4 -3
  46. data/lib/finch_api/models/hris/individual.rb +20 -26
  47. data/lib/finch_api/models/hris/individual_in_directory.rb +6 -6
  48. data/lib/finch_api/models/hris/individual_response.rb +2 -2
  49. data/lib/finch_api/models/hris/individual_retrieve_many_params.rb +4 -4
  50. data/lib/finch_api/models/hris/pay_statement.rb +184 -182
  51. data/lib/finch_api/models/hris/pay_statement_data_sync_in_progress.rb +76 -0
  52. data/lib/finch_api/models/hris/pay_statement_response.rb +50 -8
  53. data/lib/finch_api/models/hris/pay_statement_response_body.rb +27 -9
  54. data/lib/finch_api/models/hris/pay_statement_retrieve_many_params.rb +2 -2
  55. data/lib/finch_api/models/hris/payment.rb +37 -37
  56. data/lib/finch_api/models/hris/support_per_benefit_type.rb +4 -4
  57. data/lib/finch_api/models/hris/supported_benefit.rb +10 -9
  58. data/lib/finch_api/models/hris/w42005.rb +12 -12
  59. data/lib/finch_api/models/hris/w42020.rb +10 -10
  60. data/lib/finch_api/models/income.rb +8 -8
  61. data/lib/finch_api/models/individual_event.rb +4 -4
  62. data/lib/finch_api/models/introspection.rb +23 -23
  63. data/lib/finch_api/models/job_completion_event.rb +4 -4
  64. data/lib/finch_api/models/jobs/automated_async_job.rb +10 -10
  65. data/lib/finch_api/models/jobs/automated_create_params.rb +4 -4
  66. data/lib/finch_api/models/jobs/automated_list_response.rb +2 -2
  67. data/lib/finch_api/models/jobs/manual_async_job.rb +3 -3
  68. data/lib/finch_api/models/money.rb +4 -4
  69. data/lib/finch_api/models/operation_support_matrix.rb +9 -9
  70. data/lib/finch_api/models/pay_statement_event.rb +4 -4
  71. data/lib/finch_api/models/payment_event.rb +4 -4
  72. data/lib/finch_api/models/payroll/pay_group_list_response.rb +12 -12
  73. data/lib/finch_api/models/payroll/pay_group_retrieve_response.rb +5 -5
  74. data/lib/finch_api/models/provider.rb +104 -104
  75. data/lib/finch_api/models/sandbox/company_update_params.rb +21 -21
  76. data/lib/finch_api/models/sandbox/company_update_response.rb +2 -2
  77. data/lib/finch_api/models/sandbox/connection_create_params.rb +2 -2
  78. data/lib/finch_api/models/sandbox/connections/account_create_params.rb +2 -2
  79. data/lib/finch_api/models/sandbox/connections/account_update_params.rb +2 -2
  80. data/lib/finch_api/models/sandbox/directory_create_params.rb +57 -53
  81. data/lib/finch_api/models/sandbox/employment_update_params.rb +32 -28
  82. data/lib/finch_api/models/sandbox/employment_update_response.rb +17 -14
  83. data/lib/finch_api/models/sandbox/individual_update_params.rb +16 -16
  84. data/lib/finch_api/models/sandbox/individual_update_response.rb +2 -2
  85. data/lib/finch_api/models/sandbox/job_create_params.rb +2 -2
  86. data/lib/finch_api/models/sandbox/jobs/sandbox_job_configuration.rb +6 -6
  87. data/lib/finch_api/models/sandbox/payment_create_params.rb +160 -367
  88. data/lib/finch_api/models/webhook_event.rb +1 -16
  89. data/lib/finch_api/models.rb +30 -19
  90. data/lib/finch_api/resources/access_tokens.rb +1 -1
  91. data/lib/finch_api/resources/account.rb +2 -2
  92. data/lib/finch_api/resources/connect/sessions.rb +5 -5
  93. data/lib/finch_api/resources/hris/benefits/individuals.rb +4 -4
  94. data/lib/finch_api/resources/hris/benefits.rb +9 -9
  95. data/lib/finch_api/resources/hris/company/pay_statement_item/rules.rb +3 -3
  96. data/lib/finch_api/resources/hris/company/pay_statement_item.rb +1 -1
  97. data/lib/finch_api/resources/hris/company.rb +1 -1
  98. data/lib/finch_api/resources/hris/directory.rb +1 -1
  99. data/lib/finch_api/resources/hris/documents.rb +2 -2
  100. data/lib/finch_api/resources/hris/employments.rb +2 -2
  101. data/lib/finch_api/resources/hris/individuals.rb +3 -3
  102. data/lib/finch_api/resources/hris/pay_statements.rb +2 -2
  103. data/lib/finch_api/resources/hris/payments.rb +1 -1
  104. data/lib/finch_api/resources/jobs/automated.rb +3 -3
  105. data/lib/finch_api/resources/jobs/manual.rb +1 -1
  106. data/lib/finch_api/resources/providers.rb +1 -1
  107. data/lib/finch_api/resources/sandbox/company.rb +4 -4
  108. data/lib/finch_api/resources/sandbox/connections/accounts.rb +2 -2
  109. data/lib/finch_api/resources/sandbox/connections.rb +1 -1
  110. data/lib/finch_api/resources/sandbox/directory.rb +1 -1
  111. data/lib/finch_api/resources/sandbox/employment.rb +9 -9
  112. data/lib/finch_api/resources/sandbox/individual.rb +5 -5
  113. data/lib/finch_api/resources/sandbox/jobs/configuration.rb +4 -4
  114. data/lib/finch_api/resources/sandbox/jobs.rb +1 -1
  115. data/lib/finch_api/resources/sandbox/payment.rb +6 -3
  116. data/lib/finch_api/version.rb +1 -1
  117. data/lib/finch_api.rb +4 -2
  118. data/rbi/finch_api/errors.rbi +16 -0
  119. data/rbi/finch_api/internal/type/array_of.rbi +6 -0
  120. data/rbi/finch_api/internal/type/base_model.rbi +5 -0
  121. data/rbi/finch_api/internal/type/boolean.rbi +8 -0
  122. data/rbi/finch_api/internal/type/converter.rbi +15 -15
  123. data/rbi/finch_api/internal/type/enum.rbi +5 -0
  124. data/rbi/finch_api/internal/type/file_input.rbi +5 -0
  125. data/rbi/finch_api/internal/type/hash_of.rbi +6 -0
  126. data/rbi/finch_api/internal/type/union.rbi +10 -0
  127. data/rbi/finch_api/internal/type/unknown.rbi +8 -0
  128. data/rbi/finch_api/internal/util.rbi +36 -0
  129. data/rbi/finch_api/internal.rbi +3 -0
  130. data/rbi/finch_api/models/connect/session_new_params.rbi +4 -4
  131. data/rbi/finch_api/models/hris/benefit_features_and_operations.rbi +4 -296
  132. data/rbi/finch_api/models/hris/benefit_type.rbi +16 -16
  133. data/rbi/finch_api/models/hris/company/pay_statement_item_list_response.rbi +18 -33
  134. data/rbi/finch_api/models/hris/employment_data.rbi +123 -140
  135. data/rbi/finch_api/models/hris/employment_data_response.rbi +2 -13
  136. data/rbi/finch_api/models/hris/individual_response.rbi +2 -13
  137. data/rbi/finch_api/models/hris/pay_statement.rbi +275 -307
  138. data/rbi/finch_api/models/hris/pay_statement_data_sync_in_progress.rbi +188 -0
  139. data/rbi/finch_api/models/hris/pay_statement_response.rbi +84 -20
  140. data/rbi/finch_api/models/hris/pay_statement_response_body.rbi +45 -17
  141. data/rbi/finch_api/models/hris/payment.rbi +27 -30
  142. data/rbi/finch_api/models/hris/supported_benefit.rbi +12 -8
  143. data/rbi/finch_api/models/income.rbi +3 -3
  144. data/rbi/finch_api/models/money.rbi +4 -7
  145. data/rbi/finch_api/models/payroll/pay_group_list_response.rbi +25 -43
  146. data/rbi/finch_api/models/payroll/pay_group_retrieve_response.rbi +14 -14
  147. data/rbi/finch_api/models/sandbox/directory_create_params.rbi +20 -26
  148. data/rbi/finch_api/models/sandbox/employment_update_params.rbi +20 -26
  149. data/rbi/finch_api/models/sandbox/employment_update_response.rbi +20 -26
  150. data/rbi/finch_api/models/sandbox/payment_create_params.rbi +463 -727
  151. data/rbi/finch_api/resources/connect/sessions.rbi +2 -2
  152. data/rbi/finch_api/resources/hris/benefits.rbi +1 -3
  153. data/rbi/finch_api/resources/hris/documents.rbi +1 -1
  154. data/rbi/finch_api/resources/sandbox/employment.rbi +8 -5
  155. data/rbi/finch_api/resources/sandbox/payment.rbi +3 -2
  156. data/sig/finch_api/errors.rbs +9 -0
  157. data/sig/finch_api/internal/type/array_of.rbs +3 -0
  158. data/sig/finch_api/internal/type/base_model.rbs +2 -0
  159. data/sig/finch_api/internal/type/boolean.rbs +3 -0
  160. data/sig/finch_api/internal/type/converter.rbs +7 -1
  161. data/sig/finch_api/internal/type/enum.rbs +2 -0
  162. data/sig/finch_api/internal/type/file_input.rbs +2 -0
  163. data/sig/finch_api/internal/type/hash_of.rbs +3 -0
  164. data/sig/finch_api/internal/type/union.rbs +2 -0
  165. data/sig/finch_api/internal/type/unknown.rbs +3 -0
  166. data/sig/finch_api/internal/util.rbs +12 -0
  167. data/sig/finch_api/internal.rbs +2 -0
  168. data/sig/finch_api/models/access_token_create_params.rbs +8 -0
  169. data/sig/finch_api/models/account_disconnect_params.rbs +2 -0
  170. data/sig/finch_api/models/account_introspect_params.rbs +2 -0
  171. data/sig/finch_api/models/account_update_event.rbs +230 -12
  172. data/sig/finch_api/models/base_webhook_event.rbs +6 -0
  173. data/sig/finch_api/models/company_event.rbs +11 -6
  174. data/sig/finch_api/models/connect/session_new_params.rbs +26 -8
  175. data/sig/finch_api/models/connect/session_new_response.rbs +2 -0
  176. data/sig/finch_api/models/connect/session_reauthenticate_params.rbs +12 -4
  177. data/sig/finch_api/models/connect/session_reauthenticate_response.rbs +2 -0
  178. data/sig/finch_api/models/create_access_token_response.rbs +21 -8
  179. data/sig/finch_api/models/directory_event.rbs +13 -6
  180. data/sig/finch_api/models/disconnect_response.rbs +2 -0
  181. data/sig/finch_api/models/employment_event.rbs +13 -6
  182. data/sig/finch_api/models/hris/benefit_contribution.rbs +12 -4
  183. data/sig/finch_api/models/hris/benefit_create_params.rbs +21 -6
  184. data/sig/finch_api/models/hris/benefit_features_and_operations.rbs +9 -78
  185. data/sig/finch_api/models/hris/benefit_list_params.rbs +2 -0
  186. data/sig/finch_api/models/hris/benefit_list_supported_benefits_params.rbs +2 -0
  187. data/sig/finch_api/models/hris/benefit_retrieve_params.rbs +2 -0
  188. data/sig/finch_api/models/hris/benefit_type.rbs +21 -21
  189. data/sig/finch_api/models/hris/benefit_update_params.rbs +5 -0
  190. data/sig/finch_api/models/hris/benefits/enrolled_individual_benefit_response.rbs +2 -0
  191. data/sig/finch_api/models/hris/benefits/individual_benefit.rbs +18 -4
  192. data/sig/finch_api/models/hris/benefits/individual_enroll_many_params.rbs +47 -18
  193. data/sig/finch_api/models/hris/benefits/individual_enrolled_ids_params.rbs +2 -0
  194. data/sig/finch_api/models/hris/benefits/individual_enrolled_ids_response.rbs +5 -0
  195. data/sig/finch_api/models/hris/benefits/individual_retrieve_many_benefits_params.rbs +5 -0
  196. data/sig/finch_api/models/hris/benefits/individual_unenroll_many_params.rbs +5 -0
  197. data/sig/finch_api/models/hris/benefits/unenrolled_individual_benefit_response.rbs +2 -0
  198. data/sig/finch_api/models/hris/benefits_support.rbs +15 -0
  199. data/sig/finch_api/models/hris/company/pay_statement_item/rule_create_params.rbs +23 -6
  200. data/sig/finch_api/models/hris/company/pay_statement_item/rule_create_response.rbs +20 -0
  201. data/sig/finch_api/models/hris/company/pay_statement_item/rule_delete_params.rbs +2 -0
  202. data/sig/finch_api/models/hris/company/pay_statement_item/rule_delete_response.rbs +21 -0
  203. data/sig/finch_api/models/hris/company/pay_statement_item/rule_list_params.rbs +2 -0
  204. data/sig/finch_api/models/hris/company/pay_statement_item/rule_list_response.rbs +20 -0
  205. data/sig/finch_api/models/hris/company/pay_statement_item/rule_update_params.rbs +5 -0
  206. data/sig/finch_api/models/hris/company/pay_statement_item/rule_update_response.rbs +20 -0
  207. data/sig/finch_api/models/hris/company/pay_statement_item_list_params.rbs +15 -6
  208. data/sig/finch_api/models/hris/company/pay_statement_item_list_response.rbs +23 -20
  209. data/sig/finch_api/models/hris/company.rbs +44 -12
  210. data/sig/finch_api/models/hris/company_benefit.rbs +21 -6
  211. data/sig/finch_api/models/hris/company_retrieve_params.rbs +2 -0
  212. data/sig/finch_api/models/hris/create_company_benefits_response.rbs +2 -0
  213. data/sig/finch_api/models/hris/directory_list_individuals_params.rbs +6 -0
  214. data/sig/finch_api/models/hris/directory_list_params.rbs +6 -0
  215. data/sig/finch_api/models/hris/document_list_params.rbs +14 -6
  216. data/sig/finch_api/models/hris/document_list_response.rbs +5 -0
  217. data/sig/finch_api/models/hris/document_response.rbs +14 -6
  218. data/sig/finch_api/models/hris/document_retreive_params.rbs +2 -0
  219. data/sig/finch_api/models/hris/employment_data.rbs +91 -49
  220. data/sig/finch_api/models/hris/employment_data_response.rbs +6 -0
  221. data/sig/finch_api/models/hris/employment_retrieve_many_params.rbs +7 -0
  222. data/sig/finch_api/models/hris/individual.rbs +49 -16
  223. data/sig/finch_api/models/hris/individual_in_directory.rbs +14 -0
  224. data/sig/finch_api/models/hris/individual_response.rbs +6 -0
  225. data/sig/finch_api/models/hris/individual_retrieve_many_params.rbs +10 -0
  226. data/sig/finch_api/models/hris/pay_statement.rbs +179 -133
  227. data/sig/finch_api/models/hris/pay_statement_data_sync_in_progress.rbs +78 -0
  228. data/sig/finch_api/models/hris/pay_statement_response.rbs +51 -13
  229. data/sig/finch_api/models/hris/pay_statement_response_body.rbs +24 -11
  230. data/sig/finch_api/models/hris/pay_statement_retrieve_many_params.rbs +11 -0
  231. data/sig/finch_api/models/hris/payment.rbs +44 -29
  232. data/sig/finch_api/models/hris/payment_list_params.rbs +6 -0
  233. data/sig/finch_api/models/hris/support_per_benefit_type.rbs +5 -0
  234. data/sig/finch_api/models/hris/supported_benefit.rbs +22 -12
  235. data/sig/finch_api/models/hris/update_company_benefit_response.rbs +2 -0
  236. data/sig/finch_api/models/hris/w42005.rbs +30 -16
  237. data/sig/finch_api/models/hris/w42020.rbs +27 -10
  238. data/sig/finch_api/models/income.rbs +14 -7
  239. data/sig/finch_api/models/individual_event.rbs +13 -6
  240. data/sig/finch_api/models/introspection.rbs +51 -14
  241. data/sig/finch_api/models/job_completion_event.rbs +13 -6
  242. data/sig/finch_api/models/jobs/automated_async_job.rbs +22 -8
  243. data/sig/finch_api/models/jobs/automated_create_params.rbs +8 -0
  244. data/sig/finch_api/models/jobs/automated_create_response.rbs +7 -0
  245. data/sig/finch_api/models/jobs/automated_list_params.rbs +6 -0
  246. data/sig/finch_api/models/jobs/automated_list_response.rbs +18 -0
  247. data/sig/finch_api/models/jobs/automated_retrieve_params.rbs +2 -0
  248. data/sig/finch_api/models/jobs/manual_async_job.rbs +10 -4
  249. data/sig/finch_api/models/jobs/manual_retrieve_params.rbs +2 -0
  250. data/sig/finch_api/models/location.rbs +11 -0
  251. data/sig/finch_api/models/money.rbs +3 -3
  252. data/sig/finch_api/models/operation_support_matrix.rbs +7 -0
  253. data/sig/finch_api/models/paging.rbs +2 -0
  254. data/sig/finch_api/models/pay_statement_event.rbs +13 -6
  255. data/sig/finch_api/models/payment_event.rbs +13 -6
  256. data/sig/finch_api/models/payroll/pay_group_list_params.rbs +6 -0
  257. data/sig/finch_api/models/payroll/pay_group_list_response.rbs +22 -24
  258. data/sig/finch_api/models/payroll/pay_group_retrieve_params.rbs +2 -0
  259. data/sig/finch_api/models/payroll/pay_group_retrieve_response.rbs +17 -10
  260. data/sig/finch_api/models/provider.rbs +227 -6
  261. data/sig/finch_api/models/provider_list_params.rbs +2 -0
  262. data/sig/finch_api/models/request_forwarding_forward_params.rbs +9 -0
  263. data/sig/finch_api/models/request_forwarding_forward_response.rbs +15 -0
  264. data/sig/finch_api/models/sandbox/company_update_params.rbs +44 -12
  265. data/sig/finch_api/models/sandbox/company_update_response.rbs +31 -0
  266. data/sig/finch_api/models/sandbox/connection_create_params.rbs +8 -0
  267. data/sig/finch_api/models/sandbox/connection_create_response.rbs +11 -0
  268. data/sig/finch_api/models/sandbox/connections/account_create_params.rbs +8 -0
  269. data/sig/finch_api/models/sandbox/connections/account_create_response.rbs +10 -0
  270. data/sig/finch_api/models/sandbox/connections/account_update_params.rbs +5 -0
  271. data/sig/finch_api/models/sandbox/connections/account_update_response.rbs +9 -0
  272. data/sig/finch_api/models/sandbox/directory_create_params.rbs +90 -40
  273. data/sig/finch_api/models/sandbox/employment_update_params.rbs +47 -20
  274. data/sig/finch_api/models/sandbox/employment_update_response.rbs +39 -12
  275. data/sig/finch_api/models/sandbox/individual_update_params.rbs +34 -8
  276. data/sig/finch_api/models/sandbox/individual_update_response.rbs +26 -0
  277. data/sig/finch_api/models/sandbox/job_create_params.rbs +5 -0
  278. data/sig/finch_api/models/sandbox/job_create_response.rbs +7 -0
  279. data/sig/finch_api/models/sandbox/jobs/configuration_retrieve_params.rbs +2 -0
  280. data/sig/finch_api/models/sandbox/jobs/configuration_update_params.rbs +2 -0
  281. data/sig/finch_api/models/sandbox/jobs/sandbox_job_configuration.rbs +13 -8
  282. data/sig/finch_api/models/sandbox/payment_create_params.rbs +287 -228
  283. data/sig/finch_api/models/sandbox/payment_create_response.rbs +2 -0
  284. data/sig/finch_api/resources/connect/sessions.rbs +2 -2
  285. data/sig/finch_api/resources/hris/benefits.rbs +1 -1
  286. data/sig/finch_api/resources/hris/company/pay_statement_item.rbs +1 -1
  287. data/sig/finch_api/resources/hris/documents.rbs +1 -1
  288. data/sig/finch_api/resources/sandbox/employment.rbs +2 -2
  289. data/sig/finch_api/resources/sandbox/payment.rbs +2 -2
  290. metadata +5 -5
  291. data/lib/finch_api/models/hris/benefit_list_supported_benefits_response.rb +0 -110
  292. data/rbi/finch_api/models/hris/benefit_list_supported_benefits_response.rbi +0 -290
  293. data/sig/finch_api/models/hris/benefit_list_supported_benefits_response.rbs +0 -79
@@ -45,10 +45,14 @@ module FinchAPI
45
45
  #
46
46
  # @param state [Hash{Symbol=>Object}] .
47
47
  #
48
- # @option state [Boolean, :strong] :strictness
48
+ # @option state [Boolean] :translate_names
49
+ #
50
+ # @option state [Boolean] :strictness
49
51
  #
50
52
  # @option state [Hash{Symbol=>Object}] :exactness
51
53
  #
54
+ # @option state [Class<StandardError>] :error
55
+ #
52
56
  # @option state [Integer] :branched
53
57
  #
54
58
  # @return [StringIO, Object]
@@ -62,6 +66,7 @@ module FinchAPI
62
66
  exactness[:yes] += 1
63
67
  value
64
68
  else
69
+ state[:error] = TypeError.new("#{value.class} can't be coerced into #{StringIO}")
65
70
  exactness[:no] += 1
66
71
  value
67
72
  end
@@ -89,6 +94,13 @@ module FinchAPI
89
94
 
90
95
  value
91
96
  end
97
+
98
+ # @api private
99
+ #
100
+ # @return [Object]
101
+ def to_sorbet_type
102
+ T.any(Pathname, StringIO, IO, String, FinchAPI::FilePart)
103
+ end
92
104
  end
93
105
  end
94
106
  end
@@ -12,6 +12,7 @@ module FinchAPI
12
12
  # Hash of items of a given type.
13
13
  class HashOf
14
14
  include FinchAPI::Internal::Type::Converter
15
+ include FinchAPI::Internal::Util::SorbetRuntimeSupport
15
16
 
16
17
  private_class_method :new
17
18
 
@@ -76,10 +77,14 @@ module FinchAPI
76
77
  #
77
78
  # @param state [Hash{Symbol=>Object}] .
78
79
  #
79
- # @option state [Boolean, :strong] :strictness
80
+ # @option state [Boolean] :translate_names
81
+ #
82
+ # @option state [Boolean] :strictness
80
83
  #
81
84
  # @option state [Hash{Symbol=>Object}] :exactness
82
85
  #
86
+ # @option state [Class<StandardError>] :error
87
+ #
83
88
  # @option state [Integer] :branched
84
89
  #
85
90
  # @return [Hash{Symbol=>Object}, Object]
@@ -88,6 +93,7 @@ module FinchAPI
88
93
 
89
94
  unless value.is_a?(Hash)
90
95
  exactness[:no] += 1
96
+ state[:error] = TypeError.new("#{value.class} can't be coerced into #{Hash}")
91
97
  return value
92
98
  end
93
99
 
@@ -130,6 +136,13 @@ module FinchAPI
130
136
  end
131
137
  end
132
138
 
139
+ # @api private
140
+ #
141
+ # @return [Object]
142
+ def to_sorbet_type
143
+ T::Hash[FinchAPI::Internal::Util::SorbetRuntimeSupport.to_sorbet_type(item_type)]
144
+ end
145
+
133
146
  # @api private
134
147
  #
135
148
  # @return [generic<Elem>]
@@ -136,14 +136,23 @@ module FinchAPI
136
136
 
137
137
  # @api private
138
138
  #
139
+ # Tries to efficiently coerce the given value to one of the known variants.
140
+ #
141
+ # If the value cannot match any of the known variants, the coercion is considered
142
+ # non-viable and returns the original value.
143
+ #
139
144
  # @param value [Object]
140
145
  #
141
146
  # @param state [Hash{Symbol=>Object}] .
142
147
  #
143
- # @option state [Boolean, :strong] :strictness
148
+ # @option state [Boolean] :translate_names
149
+ #
150
+ # @option state [Boolean] :strictness
144
151
  #
145
152
  # @option state [Hash{Symbol=>Object}] :exactness
146
153
  #
154
+ # @option state [Class<StandardError>] :error
155
+ #
147
156
  # @option state [Integer] :branched
148
157
  #
149
158
  # @return [Object]
@@ -154,7 +163,6 @@ module FinchAPI
154
163
 
155
164
  strictness = state.fetch(:strictness)
156
165
  exactness = state.fetch(:exactness)
157
- state[:strictness] = strictness == :strong ? true : strictness
158
166
 
159
167
  alternatives = []
160
168
  known_variants.each do |_, variant_fn|
@@ -173,13 +181,10 @@ module FinchAPI
173
181
  end
174
182
  end
175
183
 
176
- case alternatives.sort_by(&:first)
184
+ case alternatives.sort_by!(&:first)
177
185
  in []
178
186
  exactness[:no] += 1
179
- if strictness == :strong
180
- message = "no possible conversion of #{value.class} into a variant of #{target.inspect}"
181
- raise ArgumentError.new(message)
182
- end
187
+ state[:error] = ArgumentError.new("no matching variant for #{value.inspect}")
183
188
  value
184
189
  in [[_, exact, coerced], *]
185
190
  exact.each { exactness[_1] += _2 }
@@ -212,6 +217,21 @@ module FinchAPI
212
217
  super
213
218
  end
214
219
 
220
+ # @api private
221
+ #
222
+ # @return [Object]
223
+ def to_sorbet_type
224
+ types = variants.map { FinchAPI::Internal::Util::SorbetRuntimeSupport.to_sorbet_type(_1) }.uniq
225
+ case types
226
+ in []
227
+ T.noreturn
228
+ in [type]
229
+ type
230
+ else
231
+ T.any(*types)
232
+ end
233
+ end
234
+
215
235
  # rubocop:enable Style/CaseEquality
216
236
  # rubocop:enable Style/HashEachMethods
217
237
 
@@ -10,6 +10,7 @@ module FinchAPI
10
10
  # When we don't know what to expect for the value.
11
11
  class Unknown
12
12
  extend FinchAPI::Internal::Type::Converter
13
+ extend FinchAPI::Internal::Util::SorbetRuntimeSupport
13
14
 
14
15
  # rubocop:disable Lint/UnusedMethodArgument
15
16
 
@@ -32,14 +33,20 @@ module FinchAPI
32
33
  class << self
33
34
  # @api private
34
35
  #
36
+ # No coercion needed for Unknown type.
37
+ #
35
38
  # @param value [Object]
36
39
  #
37
40
  # @param state [Hash{Symbol=>Object}] .
38
41
  #
39
- # @option state [Boolean, :strong] :strictness
42
+ # @option state [Boolean] :translate_names
43
+ #
44
+ # @option state [Boolean] :strictness
40
45
  #
41
46
  # @option state [Hash{Symbol=>Object}] :exactness
42
47
  #
48
+ # @option state [Class<StandardError>] :error
49
+ #
43
50
  # @option state [Integer] :branched
44
51
  #
45
52
  # @return [Object]
@@ -58,6 +65,13 @@ module FinchAPI
58
65
  # @option state [Boolean] :can_retry
59
66
  #
60
67
  # @return [Object]
68
+
69
+ # @api private
70
+ #
71
+ # @return [Object]
72
+ def to_sorbet_type
73
+ T.anything
74
+ end
61
75
  end
62
76
 
63
77
  # rubocop:enable Lint/UnusedMethodArgument
@@ -9,6 +9,23 @@ module FinchAPI
9
9
  # @return [Float]
10
10
  def self.monotonic_secs = Process.clock_gettime(Process::CLOCK_MONOTONIC)
11
11
 
12
+ # @api private
13
+ #
14
+ # @param ns [Module, Class]
15
+ #
16
+ # @return [Enumerable<Module, Class>]
17
+ def self.walk_namespaces(ns)
18
+ ns.constants(false).lazy.flat_map do
19
+ case (c = ns.const_get(_1, false))
20
+ in Module | Class
21
+ walk_namespaces(c)
22
+ else
23
+ []
24
+ end
25
+ end
26
+ .chain([ns])
27
+ end
28
+
12
29
  class << self
13
30
  # @api private
14
31
  #
@@ -480,7 +497,7 @@ module FinchAPI
480
497
  # @param closing [Array<Proc>]
481
498
  # @param content_type [String, nil]
482
499
  private def write_multipart_content(y, val:, closing:, content_type: nil)
483
- content_type ||= "application/octet-stream"
500
+ content_line = "Content-Type: %s\r\n\r\n"
484
501
 
485
502
  case val
486
503
  in FinchAPI::FilePart
@@ -491,24 +508,21 @@ module FinchAPI
491
508
  content_type: val.content_type
492
509
  )
493
510
  in Pathname
494
- y << "Content-Type: #{content_type}\r\n\r\n"
511
+ y << format(content_line, content_type || "application/octet-stream")
495
512
  io = val.open(binmode: true)
496
513
  closing << io.method(:close)
497
514
  IO.copy_stream(io, y)
498
515
  in IO
499
- y << "Content-Type: #{content_type}\r\n\r\n"
516
+ y << format(content_line, content_type || "application/octet-stream")
500
517
  IO.copy_stream(val, y)
501
518
  in StringIO
502
- y << "Content-Type: #{content_type}\r\n\r\n"
519
+ y << format(content_line, content_type || "application/octet-stream")
503
520
  y << val.string
504
- in String
505
- y << "Content-Type: #{content_type}\r\n\r\n"
506
- y << val.to_s
507
521
  in -> { primitive?(_1) }
508
- y << "Content-Type: text/plain\r\n\r\n"
522
+ y << format(content_line, content_type || "text/plain")
509
523
  y << val.to_s
510
524
  else
511
- y << "Content-Type: application/json\r\n\r\n"
525
+ y << format(content_line, content_type || "application/json")
512
526
  y << JSON.generate(val)
513
527
  end
514
528
  y << "\r\n"
@@ -546,6 +560,8 @@ module FinchAPI
546
560
 
547
561
  # @api private
548
562
  #
563
+ # https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.1.md#special-considerations-for-multipart-content
564
+ #
549
565
  # @param body [Object]
550
566
  #
551
567
  # @return [Array(String, Enumerable<String>)]
@@ -583,11 +599,13 @@ module FinchAPI
583
599
  #
584
600
  # @return [Object]
585
601
  def encode_content(headers, body)
602
+ # rubocop:disable Style/CaseEquality
603
+ # rubocop:disable Layout/LineLength
586
604
  content_type = headers["content-type"]
587
605
  case [content_type, body]
588
606
  in [FinchAPI::Internal::Util::JSON_CONTENT, Hash | Array | -> { primitive?(_1) }]
589
607
  [headers, JSON.generate(body)]
590
- in [FinchAPI::Internal::Util::JSONL_CONTENT, Enumerable] unless body.is_a?(FinchAPI::Internal::Type::FileInput)
608
+ in [FinchAPI::Internal::Util::JSONL_CONTENT, Enumerable] unless FinchAPI::Internal::Type::FileInput === body
591
609
  [headers, body.lazy.map { JSON.generate(_1) }]
592
610
  in [%r{^multipart/form-data}, Hash | FinchAPI::Internal::Type::FileInput]
593
611
  boundary, strio = encode_multipart_streaming(body)
@@ -602,6 +620,8 @@ module FinchAPI
602
620
  else
603
621
  [headers, body]
604
622
  end
623
+ # rubocop:enable Layout/LineLength
624
+ # rubocop:enable Style/CaseEquality
605
625
  end
606
626
 
607
627
  # @api private
@@ -826,11 +846,43 @@ module FinchAPI
826
846
  sorbet_runtime_constants.fetch(name).call
827
847
  end
828
848
 
849
+ # @api private
850
+ #
851
+ # @param name [Symbol]
852
+ #
853
+ # @return [Boolean]
854
+ def sorbet_constant_defined?(name) = sorbet_runtime_constants.key?(name)
855
+
829
856
  # @api private
830
857
  #
831
858
  # @param name [Symbol]
832
859
  # @param blk [Proc]
833
860
  def define_sorbet_constant!(name, &blk) = sorbet_runtime_constants.store(name, blk)
861
+
862
+ # @api private
863
+ #
864
+ # @return [Object]
865
+ def to_sorbet_type = raise NotImplementedError
866
+
867
+ class << self
868
+ # @api private
869
+ #
870
+ # @param type [FinchAPI::Internal::Util::SorbetRuntimeSupport, Object]
871
+ #
872
+ # @return [Object]
873
+ def to_sorbet_type(type)
874
+ case type
875
+ in FinchAPI::Internal::Util::SorbetRuntimeSupport
876
+ type.to_sorbet_type
877
+ in Class | Module
878
+ type
879
+ in true | false
880
+ T::Boolean
881
+ else
882
+ type.class
883
+ end
884
+ end
885
+ end
834
886
  end
835
887
 
836
888
  extend FinchAPI::Internal::Util::SorbetRuntimeSupport
@@ -13,5 +13,8 @@ module FinchAPI
13
13
  define_sorbet_constant!(:AnyHash) do
14
14
  T.type_alias { T::Hash[Symbol, T.anything] }
15
15
  end
16
+ define_sorbet_constant!(:FileInput) do
17
+ T.type_alias { T.any(Pathname, StringIO, IO, String, FinchAPI::FilePart) }
18
+ end
16
19
  end
17
20
  end