finch-api 0.1.0.pre.alpha.19 → 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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +37 -0
- data/README.md +4 -4
- data/SECURITY.md +2 -2
- data/lib/finch_api/errors.rb +22 -0
- data/lib/finch_api/internal/individuals_page.rb +1 -1
- data/lib/finch_api/internal/page.rb +1 -1
- data/lib/finch_api/internal/type/array_of.rb +14 -1
- data/lib/finch_api/internal/type/base_model.rb +84 -25
- data/lib/finch_api/internal/type/boolean.rb +15 -1
- data/lib/finch_api/internal/type/converter.rb +42 -34
- data/lib/finch_api/internal/type/enum.rb +25 -2
- data/lib/finch_api/internal/type/file_input.rb +13 -1
- data/lib/finch_api/internal/type/hash_of.rb +14 -1
- data/lib/finch_api/internal/type/union.rb +27 -7
- data/lib/finch_api/internal/type/unknown.rb +15 -1
- data/lib/finch_api/internal/util.rb +62 -10
- data/lib/finch_api/internal.rb +3 -0
- data/lib/finch_api/models/account_update_event.rb +110 -109
- data/lib/finch_api/models/base_webhook_event.rb +1 -1
- data/lib/finch_api/models/company_event.rb +2 -2
- data/lib/finch_api/models/connect/session_new_params.rb +12 -12
- data/lib/finch_api/models/connect/session_reauthenticate_params.rb +2 -2
- data/lib/finch_api/models/create_access_token_response.rb +7 -7
- data/lib/finch_api/models/directory_event.rb +4 -4
- data/lib/finch_api/models/employment_event.rb +4 -4
- data/lib/finch_api/models/hris/benefit_contribution.rb +3 -3
- data/lib/finch_api/models/hris/benefit_create_params.rb +11 -11
- data/lib/finch_api/models/hris/benefit_features_and_operations.rb +5 -120
- data/lib/finch_api/models/hris/benefit_type.rb +10 -10
- data/lib/finch_api/models/hris/benefits/individual_benefit.rb +11 -11
- data/lib/finch_api/models/hris/benefits/individual_enroll_many_params.rb +23 -23
- data/lib/finch_api/models/hris/benefits_support.rb +24 -24
- data/lib/finch_api/models/hris/company/pay_statement_item/rule_create_params.rb +11 -11
- data/lib/finch_api/models/hris/company/pay_statement_item_list_params.rb +2 -2
- data/lib/finch_api/models/hris/company/pay_statement_item_list_response.rb +18 -18
- data/lib/finch_api/models/hris/company.rb +23 -23
- data/lib/finch_api/models/hris/company_benefit.rb +12 -12
- data/lib/finch_api/models/hris/document_list_params.rb +2 -2
- data/lib/finch_api/models/hris/document_list_response.rb +4 -4
- data/lib/finch_api/models/hris/document_response.rb +4 -4
- data/lib/finch_api/models/hris/document_retreive_response.rb +1 -5
- data/lib/finch_api/models/hris/employment_data.rb +89 -100
- data/lib/finch_api/models/hris/employment_data_response.rb +2 -2
- data/lib/finch_api/models/hris/employment_retrieve_many_params.rb +4 -3
- data/lib/finch_api/models/hris/individual.rb +20 -26
- data/lib/finch_api/models/hris/individual_in_directory.rb +6 -6
- data/lib/finch_api/models/hris/individual_response.rb +2 -2
- data/lib/finch_api/models/hris/individual_retrieve_many_params.rb +4 -4
- data/lib/finch_api/models/hris/pay_statement.rb +184 -182
- data/lib/finch_api/models/hris/pay_statement_data_sync_in_progress.rb +76 -0
- data/lib/finch_api/models/hris/pay_statement_response.rb +50 -8
- data/lib/finch_api/models/hris/pay_statement_response_body.rb +27 -9
- data/lib/finch_api/models/hris/pay_statement_retrieve_many_params.rb +2 -2
- data/lib/finch_api/models/hris/payment.rb +37 -37
- data/lib/finch_api/models/hris/support_per_benefit_type.rb +4 -4
- data/lib/finch_api/models/hris/supported_benefit.rb +10 -9
- data/lib/finch_api/models/hris/w42005.rb +12 -12
- data/lib/finch_api/models/hris/w42020.rb +10 -10
- data/lib/finch_api/models/income.rb +8 -8
- data/lib/finch_api/models/individual_event.rb +4 -4
- data/lib/finch_api/models/introspection.rb +23 -23
- data/lib/finch_api/models/job_completion_event.rb +4 -4
- data/lib/finch_api/models/jobs/automated_async_job.rb +10 -10
- data/lib/finch_api/models/jobs/automated_create_params.rb +4 -4
- data/lib/finch_api/models/jobs/automated_list_response.rb +2 -2
- data/lib/finch_api/models/jobs/manual_async_job.rb +3 -3
- data/lib/finch_api/models/money.rb +4 -4
- data/lib/finch_api/models/operation_support_matrix.rb +9 -9
- data/lib/finch_api/models/pay_statement_event.rb +4 -4
- data/lib/finch_api/models/payment_event.rb +4 -4
- data/lib/finch_api/models/payroll/pay_group_list_response.rb +12 -12
- data/lib/finch_api/models/payroll/pay_group_retrieve_response.rb +5 -5
- data/lib/finch_api/models/provider.rb +104 -104
- data/lib/finch_api/models/sandbox/company_update_params.rb +21 -21
- data/lib/finch_api/models/sandbox/company_update_response.rb +2 -2
- data/lib/finch_api/models/sandbox/connection_create_params.rb +2 -2
- data/lib/finch_api/models/sandbox/connections/account_create_params.rb +2 -2
- data/lib/finch_api/models/sandbox/connections/account_update_params.rb +2 -2
- data/lib/finch_api/models/sandbox/directory_create_params.rb +49 -48
- data/lib/finch_api/models/sandbox/employment_update_params.rb +24 -23
- data/lib/finch_api/models/sandbox/employment_update_response.rb +6 -6
- data/lib/finch_api/models/sandbox/individual_update_params.rb +16 -16
- data/lib/finch_api/models/sandbox/individual_update_response.rb +2 -2
- data/lib/finch_api/models/sandbox/job_create_params.rb +2 -2
- data/lib/finch_api/models/sandbox/jobs/sandbox_job_configuration.rb +6 -6
- data/lib/finch_api/models/sandbox/payment_create_params.rb +160 -367
- data/lib/finch_api/models/webhook_event.rb +1 -16
- data/lib/finch_api/models.rb +30 -19
- data/lib/finch_api/resources/access_tokens.rb +1 -1
- data/lib/finch_api/resources/account.rb +2 -2
- data/lib/finch_api/resources/connect/sessions.rb +5 -5
- data/lib/finch_api/resources/hris/benefits/individuals.rb +4 -4
- data/lib/finch_api/resources/hris/benefits.rb +9 -9
- data/lib/finch_api/resources/hris/company/pay_statement_item/rules.rb +3 -3
- data/lib/finch_api/resources/hris/company/pay_statement_item.rb +1 -1
- data/lib/finch_api/resources/hris/company.rb +1 -1
- data/lib/finch_api/resources/hris/directory.rb +1 -1
- data/lib/finch_api/resources/hris/documents.rb +2 -2
- data/lib/finch_api/resources/hris/employments.rb +2 -2
- data/lib/finch_api/resources/hris/individuals.rb +3 -3
- data/lib/finch_api/resources/hris/pay_statements.rb +2 -2
- data/lib/finch_api/resources/hris/payments.rb +1 -1
- data/lib/finch_api/resources/jobs/automated.rb +3 -3
- data/lib/finch_api/resources/jobs/manual.rb +1 -1
- data/lib/finch_api/resources/providers.rb +1 -1
- data/lib/finch_api/resources/sandbox/company.rb +4 -4
- data/lib/finch_api/resources/sandbox/connections/accounts.rb +2 -2
- data/lib/finch_api/resources/sandbox/connections.rb +1 -1
- data/lib/finch_api/resources/sandbox/directory.rb +1 -1
- data/lib/finch_api/resources/sandbox/employment.rb +8 -8
- data/lib/finch_api/resources/sandbox/individual.rb +5 -5
- data/lib/finch_api/resources/sandbox/jobs/configuration.rb +4 -4
- data/lib/finch_api/resources/sandbox/jobs.rb +1 -1
- data/lib/finch_api/resources/sandbox/payment.rb +6 -3
- data/lib/finch_api/version.rb +1 -1
- data/lib/finch_api.rb +4 -2
- data/rbi/finch_api/errors.rbi +16 -0
- data/rbi/finch_api/internal/type/array_of.rbi +6 -0
- data/rbi/finch_api/internal/type/base_model.rbi +5 -0
- data/rbi/finch_api/internal/type/boolean.rbi +8 -0
- data/rbi/finch_api/internal/type/converter.rbi +15 -15
- data/rbi/finch_api/internal/type/enum.rbi +5 -0
- data/rbi/finch_api/internal/type/file_input.rbi +5 -0
- data/rbi/finch_api/internal/type/hash_of.rbi +6 -0
- data/rbi/finch_api/internal/type/union.rbi +10 -0
- data/rbi/finch_api/internal/type/unknown.rbi +8 -0
- data/rbi/finch_api/internal/util.rbi +36 -0
- data/rbi/finch_api/internal.rbi +3 -0
- data/rbi/finch_api/models/connect/session_new_params.rbi +4 -4
- data/rbi/finch_api/models/hris/benefit_features_and_operations.rbi +4 -296
- data/rbi/finch_api/models/hris/benefit_type.rbi +16 -16
- data/rbi/finch_api/models/hris/company/pay_statement_item_list_response.rbi +18 -33
- data/rbi/finch_api/models/hris/employment_data.rbi +123 -141
- data/rbi/finch_api/models/hris/employment_data_response.rbi +2 -13
- data/rbi/finch_api/models/hris/individual_response.rbi +2 -13
- data/rbi/finch_api/models/hris/pay_statement.rbi +275 -307
- data/rbi/finch_api/models/hris/pay_statement_data_sync_in_progress.rbi +188 -0
- data/rbi/finch_api/models/hris/pay_statement_response.rbi +84 -20
- data/rbi/finch_api/models/hris/pay_statement_response_body.rbi +45 -17
- data/rbi/finch_api/models/hris/payment.rbi +27 -30
- data/rbi/finch_api/models/hris/supported_benefit.rbi +12 -8
- data/rbi/finch_api/models/income.rbi +3 -3
- data/rbi/finch_api/models/money.rbi +4 -7
- data/rbi/finch_api/models/payroll/pay_group_list_response.rbi +25 -43
- data/rbi/finch_api/models/payroll/pay_group_retrieve_response.rbi +14 -14
- data/rbi/finch_api/models/sandbox/payment_create_params.rbi +463 -727
- data/rbi/finch_api/resources/connect/sessions.rbi +2 -2
- data/rbi/finch_api/resources/hris/benefits.rbi +1 -3
- data/rbi/finch_api/resources/hris/documents.rbi +1 -1
- data/rbi/finch_api/resources/sandbox/payment.rbi +3 -2
- data/sig/finch_api/errors.rbs +9 -0
- data/sig/finch_api/internal/type/array_of.rbs +3 -0
- data/sig/finch_api/internal/type/base_model.rbs +2 -0
- data/sig/finch_api/internal/type/boolean.rbs +3 -0
- data/sig/finch_api/internal/type/converter.rbs +7 -1
- data/sig/finch_api/internal/type/enum.rbs +2 -0
- data/sig/finch_api/internal/type/file_input.rbs +2 -0
- data/sig/finch_api/internal/type/hash_of.rbs +3 -0
- data/sig/finch_api/internal/type/union.rbs +2 -0
- data/sig/finch_api/internal/type/unknown.rbs +3 -0
- data/sig/finch_api/internal/util.rbs +12 -0
- data/sig/finch_api/internal.rbs +2 -0
- data/sig/finch_api/models/access_token_create_params.rbs +8 -0
- data/sig/finch_api/models/account_disconnect_params.rbs +2 -0
- data/sig/finch_api/models/account_introspect_params.rbs +2 -0
- data/sig/finch_api/models/account_update_event.rbs +230 -12
- data/sig/finch_api/models/base_webhook_event.rbs +6 -0
- data/sig/finch_api/models/company_event.rbs +11 -6
- data/sig/finch_api/models/connect/session_new_params.rbs +26 -8
- data/sig/finch_api/models/connect/session_new_response.rbs +2 -0
- data/sig/finch_api/models/connect/session_reauthenticate_params.rbs +12 -4
- data/sig/finch_api/models/connect/session_reauthenticate_response.rbs +2 -0
- data/sig/finch_api/models/create_access_token_response.rbs +21 -8
- data/sig/finch_api/models/directory_event.rbs +13 -6
- data/sig/finch_api/models/disconnect_response.rbs +2 -0
- data/sig/finch_api/models/employment_event.rbs +13 -6
- data/sig/finch_api/models/hris/benefit_contribution.rbs +12 -4
- data/sig/finch_api/models/hris/benefit_create_params.rbs +21 -6
- data/sig/finch_api/models/hris/benefit_features_and_operations.rbs +9 -78
- data/sig/finch_api/models/hris/benefit_list_params.rbs +2 -0
- data/sig/finch_api/models/hris/benefit_list_supported_benefits_params.rbs +2 -0
- data/sig/finch_api/models/hris/benefit_retrieve_params.rbs +2 -0
- data/sig/finch_api/models/hris/benefit_type.rbs +21 -21
- data/sig/finch_api/models/hris/benefit_update_params.rbs +5 -0
- data/sig/finch_api/models/hris/benefits/enrolled_individual_benefit_response.rbs +2 -0
- data/sig/finch_api/models/hris/benefits/individual_benefit.rbs +18 -4
- data/sig/finch_api/models/hris/benefits/individual_enroll_many_params.rbs +47 -18
- data/sig/finch_api/models/hris/benefits/individual_enrolled_ids_params.rbs +2 -0
- data/sig/finch_api/models/hris/benefits/individual_enrolled_ids_response.rbs +5 -0
- data/sig/finch_api/models/hris/benefits/individual_retrieve_many_benefits_params.rbs +5 -0
- data/sig/finch_api/models/hris/benefits/individual_unenroll_many_params.rbs +5 -0
- data/sig/finch_api/models/hris/benefits/unenrolled_individual_benefit_response.rbs +2 -0
- data/sig/finch_api/models/hris/benefits_support.rbs +15 -0
- data/sig/finch_api/models/hris/company/pay_statement_item/rule_create_params.rbs +23 -6
- data/sig/finch_api/models/hris/company/pay_statement_item/rule_create_response.rbs +20 -0
- data/sig/finch_api/models/hris/company/pay_statement_item/rule_delete_params.rbs +2 -0
- data/sig/finch_api/models/hris/company/pay_statement_item/rule_delete_response.rbs +21 -0
- data/sig/finch_api/models/hris/company/pay_statement_item/rule_list_params.rbs +2 -0
- data/sig/finch_api/models/hris/company/pay_statement_item/rule_list_response.rbs +20 -0
- data/sig/finch_api/models/hris/company/pay_statement_item/rule_update_params.rbs +5 -0
- data/sig/finch_api/models/hris/company/pay_statement_item/rule_update_response.rbs +20 -0
- data/sig/finch_api/models/hris/company/pay_statement_item_list_params.rbs +15 -6
- data/sig/finch_api/models/hris/company/pay_statement_item_list_response.rbs +23 -20
- data/sig/finch_api/models/hris/company.rbs +44 -12
- data/sig/finch_api/models/hris/company_benefit.rbs +21 -6
- data/sig/finch_api/models/hris/company_retrieve_params.rbs +2 -0
- data/sig/finch_api/models/hris/create_company_benefits_response.rbs +2 -0
- data/sig/finch_api/models/hris/directory_list_individuals_params.rbs +6 -0
- data/sig/finch_api/models/hris/directory_list_params.rbs +6 -0
- data/sig/finch_api/models/hris/document_list_params.rbs +14 -6
- data/sig/finch_api/models/hris/document_list_response.rbs +5 -0
- data/sig/finch_api/models/hris/document_response.rbs +14 -6
- data/sig/finch_api/models/hris/document_retreive_params.rbs +2 -0
- data/sig/finch_api/models/hris/employment_data.rbs +91 -47
- data/sig/finch_api/models/hris/employment_data_response.rbs +6 -0
- data/sig/finch_api/models/hris/employment_retrieve_many_params.rbs +7 -0
- data/sig/finch_api/models/hris/individual.rbs +49 -16
- data/sig/finch_api/models/hris/individual_in_directory.rbs +14 -0
- data/sig/finch_api/models/hris/individual_response.rbs +6 -0
- data/sig/finch_api/models/hris/individual_retrieve_many_params.rbs +10 -0
- data/sig/finch_api/models/hris/pay_statement.rbs +179 -133
- data/sig/finch_api/models/hris/pay_statement_data_sync_in_progress.rbs +78 -0
- data/sig/finch_api/models/hris/pay_statement_response.rbs +51 -13
- data/sig/finch_api/models/hris/pay_statement_response_body.rbs +24 -11
- data/sig/finch_api/models/hris/pay_statement_retrieve_many_params.rbs +11 -0
- data/sig/finch_api/models/hris/payment.rbs +44 -29
- data/sig/finch_api/models/hris/payment_list_params.rbs +6 -0
- data/sig/finch_api/models/hris/support_per_benefit_type.rbs +5 -0
- data/sig/finch_api/models/hris/supported_benefit.rbs +22 -12
- data/sig/finch_api/models/hris/update_company_benefit_response.rbs +2 -0
- data/sig/finch_api/models/hris/w42005.rbs +30 -16
- data/sig/finch_api/models/hris/w42020.rbs +27 -10
- data/sig/finch_api/models/income.rbs +14 -7
- data/sig/finch_api/models/individual_event.rbs +13 -6
- data/sig/finch_api/models/introspection.rbs +51 -14
- data/sig/finch_api/models/job_completion_event.rbs +13 -6
- data/sig/finch_api/models/jobs/automated_async_job.rbs +22 -8
- data/sig/finch_api/models/jobs/automated_create_params.rbs +8 -0
- data/sig/finch_api/models/jobs/automated_create_response.rbs +7 -0
- data/sig/finch_api/models/jobs/automated_list_params.rbs +6 -0
- data/sig/finch_api/models/jobs/automated_list_response.rbs +18 -0
- data/sig/finch_api/models/jobs/automated_retrieve_params.rbs +2 -0
- data/sig/finch_api/models/jobs/manual_async_job.rbs +10 -4
- data/sig/finch_api/models/jobs/manual_retrieve_params.rbs +2 -0
- data/sig/finch_api/models/location.rbs +11 -0
- data/sig/finch_api/models/money.rbs +3 -3
- data/sig/finch_api/models/operation_support_matrix.rbs +7 -0
- data/sig/finch_api/models/paging.rbs +2 -0
- data/sig/finch_api/models/pay_statement_event.rbs +13 -6
- data/sig/finch_api/models/payment_event.rbs +13 -6
- data/sig/finch_api/models/payroll/pay_group_list_params.rbs +6 -0
- data/sig/finch_api/models/payroll/pay_group_list_response.rbs +22 -24
- data/sig/finch_api/models/payroll/pay_group_retrieve_params.rbs +2 -0
- data/sig/finch_api/models/payroll/pay_group_retrieve_response.rbs +17 -10
- data/sig/finch_api/models/provider.rbs +227 -6
- data/sig/finch_api/models/provider_list_params.rbs +2 -0
- data/sig/finch_api/models/request_forwarding_forward_params.rbs +9 -0
- data/sig/finch_api/models/request_forwarding_forward_response.rbs +15 -0
- data/sig/finch_api/models/sandbox/company_update_params.rbs +44 -12
- data/sig/finch_api/models/sandbox/company_update_response.rbs +31 -0
- data/sig/finch_api/models/sandbox/connection_create_params.rbs +8 -0
- data/sig/finch_api/models/sandbox/connection_create_response.rbs +11 -0
- data/sig/finch_api/models/sandbox/connections/account_create_params.rbs +8 -0
- data/sig/finch_api/models/sandbox/connections/account_create_response.rbs +10 -0
- data/sig/finch_api/models/sandbox/connections/account_update_params.rbs +5 -0
- data/sig/finch_api/models/sandbox/connections/account_update_response.rbs +9 -0
- data/sig/finch_api/models/sandbox/directory_create_params.rbs +84 -28
- data/sig/finch_api/models/sandbox/employment_update_params.rbs +41 -8
- data/sig/finch_api/models/sandbox/employment_update_response.rbs +33 -0
- data/sig/finch_api/models/sandbox/individual_update_params.rbs +34 -8
- data/sig/finch_api/models/sandbox/individual_update_response.rbs +26 -0
- data/sig/finch_api/models/sandbox/job_create_params.rbs +5 -0
- data/sig/finch_api/models/sandbox/job_create_response.rbs +7 -0
- data/sig/finch_api/models/sandbox/jobs/configuration_retrieve_params.rbs +2 -0
- data/sig/finch_api/models/sandbox/jobs/configuration_update_params.rbs +2 -0
- data/sig/finch_api/models/sandbox/jobs/sandbox_job_configuration.rbs +13 -8
- data/sig/finch_api/models/sandbox/payment_create_params.rbs +287 -228
- data/sig/finch_api/models/sandbox/payment_create_response.rbs +2 -0
- data/sig/finch_api/resources/connect/sessions.rbs +2 -2
- data/sig/finch_api/resources/hris/benefits.rbs +1 -1
- data/sig/finch_api/resources/hris/company/pay_statement_item.rbs +1 -1
- data/sig/finch_api/resources/hris/documents.rbs +1 -1
- data/sig/finch_api/resources/sandbox/payment.rbs +2 -2
- metadata +5 -5
- data/lib/finch_api/models/hris/benefit_list_supported_benefits_response.rb +0 -110
- data/rbi/finch_api/models/hris/benefit_list_supported_benefits_response.rbi +0 -290
- 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
|
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
|
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
|
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
|
-
|
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
|
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
|
-
|
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 <<
|
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 <<
|
516
|
+
y << format(content_line, content_type || "application/octet-stream")
|
500
517
|
IO.copy_stream(val, y)
|
501
518
|
in StringIO
|
502
|
-
y <<
|
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 << "
|
522
|
+
y << format(content_line, content_type || "text/plain")
|
509
523
|
y << val.to_s
|
510
524
|
else
|
511
|
-
y << "
|
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
|
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
|
data/lib/finch_api/internal.rb
CHANGED