@depup/stripe 21.0.0-depup.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.
- package/CHANGELOG.md +4529 -0
- package/LICENSE +20 -0
- package/OPENAPI_VERSION +1 -0
- package/README.md +25 -0
- package/VERSION +1 -0
- package/changes.json +5 -0
- package/cjs/Decimal.js +854 -0
- package/cjs/Error.js +284 -0
- package/cjs/RequestSender.js +469 -0
- package/cjs/ResourceNamespace.js +21 -0
- package/cjs/StripeContext.js +56 -0
- package/cjs/StripeEmitter.js +46 -0
- package/cjs/StripeMethod.js +36 -0
- package/cjs/StripeResource.js +188 -0
- package/cjs/V2Coercion.js +109 -0
- package/cjs/Webhooks.js +225 -0
- package/cjs/apiVersion.js +6 -0
- package/cjs/autoPagination.js +294 -0
- package/cjs/crypto/CryptoProvider.js +51 -0
- package/cjs/crypto/NodeCryptoProvider.js +30 -0
- package/cjs/crypto/SubtleCryptoProvider.js +51 -0
- package/cjs/multipart.js +61 -0
- package/cjs/net/FetchHttpClient.js +145 -0
- package/cjs/net/HttpClient.js +53 -0
- package/cjs/net/NodeHttpClient.js +108 -0
- package/cjs/package.json +1 -0
- package/cjs/platform/NodePlatformFunctions.js +98 -0
- package/cjs/platform/PlatformFunctions.js +98 -0
- package/cjs/platform/WebPlatformFunctions.js +38 -0
- package/cjs/resources/AccountLinks.js +9 -0
- package/cjs/resources/AccountSessions.js +9 -0
- package/cjs/resources/Accounts.js +101 -0
- package/cjs/resources/ApplePayDomains.js +22 -0
- package/cjs/resources/ApplicationFees.js +34 -0
- package/cjs/resources/Apps/Secrets.js +19 -0
- package/cjs/resources/Balance.js +9 -0
- package/cjs/resources/BalanceSettings.js +10 -0
- package/cjs/resources/BalanceTransactions.js +17 -0
- package/cjs/resources/Billing/Alerts.js +27 -0
- package/cjs/resources/Billing/CreditBalanceSummary.js +12 -0
- package/cjs/resources/Billing/CreditBalanceTransactions.js +17 -0
- package/cjs/resources/Billing/CreditGrants.js +30 -0
- package/cjs/resources/Billing/MeterEventAdjustments.js +12 -0
- package/cjs/resources/Billing/MeterEvents.js +9 -0
- package/cjs/resources/Billing/Meters.js +29 -0
- package/cjs/resources/BillingPortal/Configurations.js +25 -0
- package/cjs/resources/BillingPortal/Sessions.js +12 -0
- package/cjs/resources/Charges.js +25 -0
- package/cjs/resources/Checkout/Sessions.js +538 -0
- package/cjs/resources/Climate/Orders.js +61 -0
- package/cjs/resources/Climate/Products.js +33 -0
- package/cjs/resources/Climate/Suppliers.js +17 -0
- package/cjs/resources/ConfirmationTokens.js +12 -0
- package/cjs/resources/CountrySpecs.js +17 -0
- package/cjs/resources/Coupons.js +17 -0
- package/cjs/resources/CreditNotes.js +253 -0
- package/cjs/resources/CustomerSessions.js +9 -0
- package/cjs/resources/Customers.js +581 -0
- package/cjs/resources/Disputes.js +19 -0
- package/cjs/resources/Entitlements/ActiveEntitlements.js +17 -0
- package/cjs/resources/Entitlements/Features.js +22 -0
- package/cjs/resources/EphemeralKeys.js +18 -0
- package/cjs/resources/Events.js +14 -0
- package/cjs/resources/ExchangeRates.js +17 -0
- package/cjs/resources/FileLinks.js +16 -0
- package/cjs/resources/Files.js +24 -0
- package/cjs/resources/FinancialConnections/Accounts.js +38 -0
- package/cjs/resources/FinancialConnections/Sessions.js +16 -0
- package/cjs/resources/FinancialConnections/Transactions.js +17 -0
- package/cjs/resources/Forwarding/Requests.js +18 -0
- package/cjs/resources/Identity/VerificationReports.js +17 -0
- package/cjs/resources/Identity/VerificationSessions.js +33 -0
- package/cjs/resources/InvoiceItems.js +131 -0
- package/cjs/resources/InvoicePayments.js +17 -0
- package/cjs/resources/InvoiceRenderingTemplates.js +25 -0
- package/cjs/resources/Invoices.js +776 -0
- package/cjs/resources/Issuing/Authorizations.js +847 -0
- package/cjs/resources/Issuing/Cardholders.js +22 -0
- package/cjs/resources/Issuing/Cards.js +16 -0
- package/cjs/resources/Issuing/Disputes.js +26 -0
- package/cjs/resources/Issuing/PersonalizationDesigns.js +25 -0
- package/cjs/resources/Issuing/PhysicalBundles.js +17 -0
- package/cjs/resources/Issuing/Tokens.js +21 -0
- package/cjs/resources/Issuing/Transactions.js +275 -0
- package/cjs/resources/Mandates.js +9 -0
- package/cjs/resources/OAuth.js +44 -0
- package/cjs/resources/PaymentAttemptRecords.js +17 -0
- package/cjs/resources/PaymentIntents.js +56 -0
- package/cjs/resources/PaymentLinks.js +420 -0
- package/cjs/resources/PaymentMethodConfigurations.js +25 -0
- package/cjs/resources/PaymentMethodDomains.js +29 -0
- package/cjs/resources/PaymentMethods.js +30 -0
- package/cjs/resources/PaymentRecords.js +37 -0
- package/cjs/resources/Payouts.js +24 -0
- package/cjs/resources/Plans.js +141 -0
- package/cjs/resources/Prices.js +346 -0
- package/cjs/resources/Products.js +72 -0
- package/cjs/resources/PromotionCodes.js +22 -0
- package/cjs/resources/Quotes.js +825 -0
- package/cjs/resources/Radar/EarlyFraudWarnings.js +17 -0
- package/cjs/resources/Radar/PaymentEvaluations.js +12 -0
- package/cjs/resources/Radar/ValueListItems.js +25 -0
- package/cjs/resources/Radar/ValueLists.js +26 -0
- package/cjs/resources/Refunds.js +20 -0
- package/cjs/resources/Reporting/ReportRuns.js +18 -0
- package/cjs/resources/Reporting/ReportTypes.js +17 -0
- package/cjs/resources/Reviews.js +18 -0
- package/cjs/resources/SetupAttempts.js +13 -0
- package/cjs/resources/SetupIntents.js +34 -0
- package/cjs/resources/ShippingRates.js +22 -0
- package/cjs/resources/Sigma/ScheduledQueryRuns.js +17 -0
- package/cjs/resources/Sources.js +20 -0
- package/cjs/resources/SubscriptionItems.js +378 -0
- package/cjs/resources/SubscriptionSchedules.js +107 -0
- package/cjs/resources/Subscriptions.js +888 -0
- package/cjs/resources/Tax/Associations.js +9 -0
- package/cjs/resources/Tax/Calculations.js +18 -0
- package/cjs/resources/Tax/Registrations.js +22 -0
- package/cjs/resources/Tax/Settings.js +10 -0
- package/cjs/resources/Tax/Transactions.js +25 -0
- package/cjs/resources/TaxCodes.js +14 -0
- package/cjs/resources/TaxIds.js +16 -0
- package/cjs/resources/TaxRates.js +16 -0
- package/cjs/resources/Terminal/Configurations.js +29 -0
- package/cjs/resources/Terminal/ConnectionTokens.js +12 -0
- package/cjs/resources/Terminal/Locations.js +26 -0
- package/cjs/resources/Terminal/OnboardingLinks.js +12 -0
- package/cjs/resources/Terminal/Readers.js +58 -0
- package/cjs/resources/TestHelpers/ConfirmationTokens.js +12 -0
- package/cjs/resources/TestHelpers/Customers.js +12 -0
- package/cjs/resources/TestHelpers/Issuing/Authorizations.js +1293 -0
- package/cjs/resources/TestHelpers/Issuing/Cards.js +28 -0
- package/cjs/resources/TestHelpers/Issuing/PersonalizationDesigns.js +20 -0
- package/cjs/resources/TestHelpers/Issuing/Transactions.js +364 -0
- package/cjs/resources/TestHelpers/Refunds.js +12 -0
- package/cjs/resources/TestHelpers/Terminal/Readers.js +20 -0
- package/cjs/resources/TestHelpers/TestClocks.js +29 -0
- package/cjs/resources/TestHelpers/Treasury/InboundTransfers.js +20 -0
- package/cjs/resources/TestHelpers/Treasury/OutboundPayments.js +24 -0
- package/cjs/resources/TestHelpers/Treasury/OutboundTransfers.js +24 -0
- package/cjs/resources/TestHelpers/Treasury/ReceivedCredits.js +12 -0
- package/cjs/resources/TestHelpers/Treasury/ReceivedDebits.js +12 -0
- package/cjs/resources/Tokens.js +10 -0
- package/cjs/resources/Topups.js +17 -0
- package/cjs/resources/Transfers.js +33 -0
- package/cjs/resources/Treasury/CreditReversals.js +21 -0
- package/cjs/resources/Treasury/DebitReversals.js +21 -0
- package/cjs/resources/Treasury/FinancialAccounts.js +37 -0
- package/cjs/resources/Treasury/InboundTransfers.js +25 -0
- package/cjs/resources/Treasury/OutboundPayments.js +25 -0
- package/cjs/resources/Treasury/OutboundTransfers.js +25 -0
- package/cjs/resources/Treasury/ReceivedCredits.js +17 -0
- package/cjs/resources/Treasury/ReceivedDebits.js +17 -0
- package/cjs/resources/Treasury/TransactionEntries.js +393 -0
- package/cjs/resources/Treasury/Transactions.js +447 -0
- package/cjs/resources/V2/Billing/MeterEventAdjustments.js +12 -0
- package/cjs/resources/V2/Billing/MeterEventSession.js +12 -0
- package/cjs/resources/V2/Billing/MeterEventStream.js +13 -0
- package/cjs/resources/V2/Billing/MeterEvents.js +9 -0
- package/cjs/resources/V2/Core/AccountLinks.js +9 -0
- package/cjs/resources/V2/Core/AccountTokens.js +35 -0
- package/cjs/resources/V2/Core/Accounts/PersonTokens.js +25 -0
- package/cjs/resources/V2/Core/Accounts/Persons.js +91 -0
- package/cjs/resources/V2/Core/Accounts.js +177 -0
- package/cjs/resources/V2/Core/EventDestinations.js +41 -0
- package/cjs/resources/V2/Core/Events.js +66 -0
- package/cjs/resources/WebhookEndpoints.js +26 -0
- package/cjs/resources.js +324 -0
- package/cjs/stripe.cjs.node.js +13 -0
- package/cjs/stripe.cjs.worker.js +13 -0
- package/cjs/stripe.core.js +412 -0
- package/cjs/utils.js +477 -0
- package/esm/Decimal.js +850 -0
- package/esm/Error.js +259 -0
- package/esm/RequestSender.js +465 -0
- package/esm/ResourceNamespace.js +17 -0
- package/esm/StripeContext.js +52 -0
- package/esm/StripeEmitter.js +42 -0
- package/esm/StripeMethod.js +32 -0
- package/esm/StripeResource.js +185 -0
- package/esm/V2Coercion.js +104 -0
- package/esm/Webhooks.js +221 -0
- package/esm/apiVersion.js +3 -0
- package/esm/autoPagination.js +290 -0
- package/esm/crypto/CryptoProvider.js +46 -0
- package/esm/crypto/NodeCryptoProvider.js +26 -0
- package/esm/crypto/SubtleCryptoProvider.js +47 -0
- package/esm/multipart.js +57 -0
- package/esm/net/FetchHttpClient.js +140 -0
- package/esm/net/HttpClient.js +48 -0
- package/esm/net/NodeHttpClient.js +103 -0
- package/esm/package.json +1 -0
- package/esm/platform/NodePlatformFunctions.js +94 -0
- package/esm/platform/PlatformFunctions.js +94 -0
- package/esm/platform/WebPlatformFunctions.js +34 -0
- package/esm/resources/AccountLinks.js +6 -0
- package/esm/resources/AccountSessions.js +6 -0
- package/esm/resources/Accounts.js +98 -0
- package/esm/resources/ApplePayDomains.js +19 -0
- package/esm/resources/ApplicationFees.js +31 -0
- package/esm/resources/Apps/Secrets.js +16 -0
- package/esm/resources/Balance.js +6 -0
- package/esm/resources/BalanceSettings.js +7 -0
- package/esm/resources/BalanceTransactions.js +14 -0
- package/esm/resources/Billing/Alerts.js +24 -0
- package/esm/resources/Billing/CreditBalanceSummary.js +9 -0
- package/esm/resources/Billing/CreditBalanceTransactions.js +14 -0
- package/esm/resources/Billing/CreditGrants.js +27 -0
- package/esm/resources/Billing/MeterEventAdjustments.js +9 -0
- package/esm/resources/Billing/MeterEvents.js +6 -0
- package/esm/resources/Billing/Meters.js +26 -0
- package/esm/resources/BillingPortal/Configurations.js +22 -0
- package/esm/resources/BillingPortal/Sessions.js +9 -0
- package/esm/resources/Charges.js +22 -0
- package/esm/resources/Checkout/Sessions.js +535 -0
- package/esm/resources/Climate/Orders.js +58 -0
- package/esm/resources/Climate/Products.js +30 -0
- package/esm/resources/Climate/Suppliers.js +14 -0
- package/esm/resources/ConfirmationTokens.js +9 -0
- package/esm/resources/CountrySpecs.js +14 -0
- package/esm/resources/Coupons.js +14 -0
- package/esm/resources/CreditNotes.js +250 -0
- package/esm/resources/CustomerSessions.js +6 -0
- package/esm/resources/Customers.js +578 -0
- package/esm/resources/Disputes.js +16 -0
- package/esm/resources/Entitlements/ActiveEntitlements.js +14 -0
- package/esm/resources/Entitlements/Features.js +19 -0
- package/esm/resources/EphemeralKeys.js +15 -0
- package/esm/resources/Events.js +11 -0
- package/esm/resources/ExchangeRates.js +14 -0
- package/esm/resources/FileLinks.js +13 -0
- package/esm/resources/Files.js +21 -0
- package/esm/resources/FinancialConnections/Accounts.js +35 -0
- package/esm/resources/FinancialConnections/Sessions.js +13 -0
- package/esm/resources/FinancialConnections/Transactions.js +14 -0
- package/esm/resources/Forwarding/Requests.js +15 -0
- package/esm/resources/Identity/VerificationReports.js +14 -0
- package/esm/resources/Identity/VerificationSessions.js +30 -0
- package/esm/resources/InvoiceItems.js +128 -0
- package/esm/resources/InvoicePayments.js +14 -0
- package/esm/resources/InvoiceRenderingTemplates.js +22 -0
- package/esm/resources/Invoices.js +773 -0
- package/esm/resources/Issuing/Authorizations.js +844 -0
- package/esm/resources/Issuing/Cardholders.js +19 -0
- package/esm/resources/Issuing/Cards.js +13 -0
- package/esm/resources/Issuing/Disputes.js +23 -0
- package/esm/resources/Issuing/PersonalizationDesigns.js +22 -0
- package/esm/resources/Issuing/PhysicalBundles.js +14 -0
- package/esm/resources/Issuing/Tokens.js +18 -0
- package/esm/resources/Issuing/Transactions.js +272 -0
- package/esm/resources/Mandates.js +6 -0
- package/esm/resources/OAuth.js +42 -0
- package/esm/resources/PaymentAttemptRecords.js +14 -0
- package/esm/resources/PaymentIntents.js +53 -0
- package/esm/resources/PaymentLinks.js +417 -0
- package/esm/resources/PaymentMethodConfigurations.js +22 -0
- package/esm/resources/PaymentMethodDomains.js +26 -0
- package/esm/resources/PaymentMethods.js +27 -0
- package/esm/resources/PaymentRecords.js +34 -0
- package/esm/resources/Payouts.js +21 -0
- package/esm/resources/Plans.js +138 -0
- package/esm/resources/Prices.js +343 -0
- package/esm/resources/Products.js +69 -0
- package/esm/resources/PromotionCodes.js +19 -0
- package/esm/resources/Quotes.js +822 -0
- package/esm/resources/Radar/EarlyFraudWarnings.js +14 -0
- package/esm/resources/Radar/PaymentEvaluations.js +9 -0
- package/esm/resources/Radar/ValueListItems.js +22 -0
- package/esm/resources/Radar/ValueLists.js +23 -0
- package/esm/resources/Refunds.js +17 -0
- package/esm/resources/Reporting/ReportRuns.js +15 -0
- package/esm/resources/Reporting/ReportTypes.js +14 -0
- package/esm/resources/Reviews.js +15 -0
- package/esm/resources/SetupAttempts.js +10 -0
- package/esm/resources/SetupIntents.js +31 -0
- package/esm/resources/ShippingRates.js +19 -0
- package/esm/resources/Sigma/ScheduledQueryRuns.js +14 -0
- package/esm/resources/Sources.js +17 -0
- package/esm/resources/SubscriptionItems.js +375 -0
- package/esm/resources/SubscriptionSchedules.js +104 -0
- package/esm/resources/Subscriptions.js +885 -0
- package/esm/resources/Tax/Associations.js +6 -0
- package/esm/resources/Tax/Calculations.js +15 -0
- package/esm/resources/Tax/Registrations.js +19 -0
- package/esm/resources/Tax/Settings.js +7 -0
- package/esm/resources/Tax/Transactions.js +22 -0
- package/esm/resources/TaxCodes.js +11 -0
- package/esm/resources/TaxIds.js +13 -0
- package/esm/resources/TaxRates.js +13 -0
- package/esm/resources/Terminal/Configurations.js +26 -0
- package/esm/resources/Terminal/ConnectionTokens.js +9 -0
- package/esm/resources/Terminal/Locations.js +23 -0
- package/esm/resources/Terminal/OnboardingLinks.js +9 -0
- package/esm/resources/Terminal/Readers.js +55 -0
- package/esm/resources/TestHelpers/ConfirmationTokens.js +9 -0
- package/esm/resources/TestHelpers/Customers.js +9 -0
- package/esm/resources/TestHelpers/Issuing/Authorizations.js +1290 -0
- package/esm/resources/TestHelpers/Issuing/Cards.js +25 -0
- package/esm/resources/TestHelpers/Issuing/PersonalizationDesigns.js +17 -0
- package/esm/resources/TestHelpers/Issuing/Transactions.js +361 -0
- package/esm/resources/TestHelpers/Refunds.js +9 -0
- package/esm/resources/TestHelpers/Terminal/Readers.js +17 -0
- package/esm/resources/TestHelpers/TestClocks.js +26 -0
- package/esm/resources/TestHelpers/Treasury/InboundTransfers.js +17 -0
- package/esm/resources/TestHelpers/Treasury/OutboundPayments.js +21 -0
- package/esm/resources/TestHelpers/Treasury/OutboundTransfers.js +21 -0
- package/esm/resources/TestHelpers/Treasury/ReceivedCredits.js +9 -0
- package/esm/resources/TestHelpers/Treasury/ReceivedDebits.js +9 -0
- package/esm/resources/Tokens.js +7 -0
- package/esm/resources/Topups.js +14 -0
- package/esm/resources/Transfers.js +30 -0
- package/esm/resources/Treasury/CreditReversals.js +18 -0
- package/esm/resources/Treasury/DebitReversals.js +18 -0
- package/esm/resources/Treasury/FinancialAccounts.js +34 -0
- package/esm/resources/Treasury/InboundTransfers.js +22 -0
- package/esm/resources/Treasury/OutboundPayments.js +22 -0
- package/esm/resources/Treasury/OutboundTransfers.js +22 -0
- package/esm/resources/Treasury/ReceivedCredits.js +14 -0
- package/esm/resources/Treasury/ReceivedDebits.js +14 -0
- package/esm/resources/Treasury/TransactionEntries.js +390 -0
- package/esm/resources/Treasury/Transactions.js +444 -0
- package/esm/resources/V2/Billing/MeterEventAdjustments.js +9 -0
- package/esm/resources/V2/Billing/MeterEventSession.js +9 -0
- package/esm/resources/V2/Billing/MeterEventStream.js +10 -0
- package/esm/resources/V2/Billing/MeterEvents.js +6 -0
- package/esm/resources/V2/Core/AccountLinks.js +6 -0
- package/esm/resources/V2/Core/AccountTokens.js +32 -0
- package/esm/resources/V2/Core/Accounts/PersonTokens.js +22 -0
- package/esm/resources/V2/Core/Accounts/Persons.js +88 -0
- package/esm/resources/V2/Core/Accounts.js +174 -0
- package/esm/resources/V2/Core/EventDestinations.js +38 -0
- package/esm/resources/V2/Core/Events.js +63 -0
- package/esm/resources/WebhookEndpoints.js +23 -0
- package/esm/resources.js +263 -0
- package/esm/stripe.core.js +408 -0
- package/esm/stripe.esm.node.js +5 -0
- package/esm/stripe.esm.worker.js +5 -0
- package/esm/utils.js +450 -0
- package/package.json +110 -0
- package/types/.eslintrc.js +22 -0
- package/types/AccountLinks.d.ts +33 -0
- package/types/AccountLinksResource.d.ts +78 -0
- package/types/AccountSessions.d.ts +578 -0
- package/types/AccountSessionsResource.d.ts +677 -0
- package/types/Accounts.d.ts +1736 -0
- package/types/AccountsResource.d.ts +5312 -0
- package/types/ApplePayDomains.d.ts +57 -0
- package/types/ApplePayDomainsResource.d.ts +77 -0
- package/types/ApplicationFees.d.ts +108 -0
- package/types/ApplicationFeesResource.d.ts +162 -0
- package/types/Applications.d.ts +55 -0
- package/types/Apps/Secrets.d.ts +80 -0
- package/types/Apps/SecretsResource.d.ts +186 -0
- package/types/Balance.d.ts +343 -0
- package/types/BalanceResource.d.ts +26 -0
- package/types/BalanceSettings.d.ts +103 -0
- package/types/BalanceSettingsResource.d.ts +124 -0
- package/types/BalanceTransactionSources.d.ts +23 -0
- package/types/BalanceTransactions.d.ts +176 -0
- package/types/BalanceTransactionsResource.d.ts +72 -0
- package/types/BankAccounts.d.ts +433 -0
- package/types/Billing/AlertTriggereds.d.ts +42 -0
- package/types/Billing/Alerts.d.ts +84 -0
- package/types/Billing/AlertsResource.d.ts +183 -0
- package/types/Billing/CreditBalanceSummary.d.ts +99 -0
- package/types/Billing/CreditBalanceSummaryResource.d.ts +83 -0
- package/types/Billing/CreditBalanceTransactions.d.ts +178 -0
- package/types/Billing/CreditBalanceTransactionsResource.d.ts +62 -0
- package/types/Billing/CreditGrants.d.ts +150 -0
- package/types/Billing/CreditGrantsResource.d.ts +248 -0
- package/types/Billing/MeterEventAdjustments.d.ts +53 -0
- package/types/Billing/MeterEventAdjustmentsResource.d.ts +48 -0
- package/types/Billing/MeterEventSummaries.d.ts +50 -0
- package/types/Billing/MeterEvents.d.ts +49 -0
- package/types/Billing/MeterEventsResource.d.ts +46 -0
- package/types/Billing/Meters.d.ts +110 -0
- package/types/Billing/MetersResource.d.ts +234 -0
- package/types/BillingPortal/Configurations.d.ts +319 -0
- package/types/BillingPortal/ConfigurationsResource.d.ts +679 -0
- package/types/BillingPortal/Sessions.d.ts +293 -0
- package/types/BillingPortal/SessionsResource.d.ts +273 -0
- package/types/Capabilities.d.ts +422 -0
- package/types/Cards.d.ts +225 -0
- package/types/CashBalances.d.ts +57 -0
- package/types/Charges.d.ts +2646 -0
- package/types/ChargesResource.d.ts +426 -0
- package/types/Checkout/Sessions.d.ts +2878 -0
- package/types/Checkout/SessionsResource.d.ts +4027 -0
- package/types/Climate/Orders.d.ts +197 -0
- package/types/Climate/OrdersResource.d.ts +159 -0
- package/types/Climate/Products.d.ts +81 -0
- package/types/Climate/ProductsResource.d.ts +45 -0
- package/types/Climate/Suppliers.d.ts +82 -0
- package/types/Climate/SuppliersResource.d.ts +45 -0
- package/types/ConfirmationTokens.d.ts +1755 -0
- package/types/ConfirmationTokensResource.d.ts +27 -0
- package/types/ConnectCollectionTransfers.d.ts +40 -0
- package/types/CountrySpecs.d.ts +88 -0
- package/types/CountrySpecsResource.d.ts +43 -0
- package/types/Coupons.d.ts +139 -0
- package/types/CouponsResource.d.ts +203 -0
- package/types/CreditNoteLineItems.d.ts +195 -0
- package/types/CreditNotes.d.ts +408 -0
- package/types/CreditNotesResource.d.ts +765 -0
- package/types/CustomerBalanceTransactions.d.ts +106 -0
- package/types/CustomerCashBalanceTransactions.d.ts +230 -0
- package/types/CustomerSessions.d.ts +283 -0
- package/types/CustomerSessionsResource.d.ts +263 -0
- package/types/CustomerSources.d.ts +9 -0
- package/types/Customers.d.ts +326 -0
- package/types/CustomersResource.d.ts +1554 -0
- package/types/Discounts.d.ts +175 -0
- package/types/Disputes.d.ts +519 -0
- package/types/DisputesResource.d.ts +384 -0
- package/types/Entitlements/ActiveEntitlementSummaries.d.ts +32 -0
- package/types/Entitlements/ActiveEntitlements.d.ts +37 -0
- package/types/Entitlements/ActiveEntitlementsResource.d.ts +49 -0
- package/types/Entitlements/Features.d.ts +48 -0
- package/types/Entitlements/FeaturesResource.d.ts +118 -0
- package/types/EphemeralKeys.d.ts +40 -0
- package/types/EphemeralKeysResource.d.ts +65 -0
- package/types/Errors.d.ts +356 -0
- package/types/EventTypes.d.ts +4443 -0
- package/types/Events.d.ts +373 -0
- package/types/EventsResource.d.ts +63 -0
- package/types/ExchangeRates.d.ts +54 -0
- package/types/ExchangeRatesResource.d.ts +49 -0
- package/types/ExternalAccounts.d.ts +9 -0
- package/types/FeeRefunds.d.ts +54 -0
- package/types/FileLinks.d.ts +57 -0
- package/types/FileLinksResource.d.ts +114 -0
- package/types/Files.d.ts +96 -0
- package/types/FilesResource.d.ts +146 -0
- package/types/FinancialConnections/AccountOwners.d.ts +52 -0
- package/types/FinancialConnections/AccountOwnerships.d.ts +32 -0
- package/types/FinancialConnections/Accounts.d.ts +325 -0
- package/types/FinancialConnections/AccountsResource.d.ts +184 -0
- package/types/FinancialConnections/Sessions.d.ts +113 -0
- package/types/FinancialConnections/SessionsResource.d.ts +128 -0
- package/types/FinancialConnections/Transactions.d.ts +85 -0
- package/types/FinancialConnections/TransactionsResource.d.ts +68 -0
- package/types/Forwarding/Requests.d.ts +165 -0
- package/types/Forwarding/RequestsResource.d.ts +127 -0
- package/types/FundingInstructions.d.ts +297 -0
- package/types/Identity/VerificationReports.d.ts +487 -0
- package/types/Identity/VerificationReportsResource.d.ts +71 -0
- package/types/Identity/VerificationSessions.d.ts +352 -0
- package/types/Identity/VerificationSessionsResource.d.ts +366 -0
- package/types/InvoiceItems.d.ts +240 -0
- package/types/InvoiceItemsResource.d.ts +424 -0
- package/types/InvoiceLineItems.d.ts +366 -0
- package/types/InvoicePayments.d.ts +111 -0
- package/types/InvoicePaymentsResource.d.ts +88 -0
- package/types/InvoiceRenderingTemplates.d.ts +55 -0
- package/types/InvoiceRenderingTemplatesResource.d.ts +93 -0
- package/types/Invoices.d.ts +1650 -0
- package/types/InvoicesResource.d.ts +4196 -0
- package/types/Issuing/Authorizations.d.ts +689 -0
- package/types/Issuing/AuthorizationsResource.d.ts +151 -0
- package/types/Issuing/Cardholders.d.ts +1184 -0
- package/types/Issuing/CardholdersResource.d.ts +2411 -0
- package/types/Issuing/Cards.d.ts +1312 -0
- package/types/Issuing/CardsResource.d.ts +2371 -0
- package/types/Issuing/Disputes.d.ts +383 -0
- package/types/Issuing/DisputesResource.d.ts +776 -0
- package/types/Issuing/PersonalizationDesigns.d.ts +142 -0
- package/types/Issuing/PersonalizationDesignsResource.d.ts +253 -0
- package/types/Issuing/PhysicalBundles.d.ts +75 -0
- package/types/Issuing/PhysicalBundlesResource.d.ts +63 -0
- package/types/Issuing/Tokens.d.ts +273 -0
- package/types/Issuing/TokensResource.d.ts +88 -0
- package/types/Issuing/Transactions.d.ts +479 -0
- package/types/Issuing/TransactionsResource.d.ts +92 -0
- package/types/LineItems.d.ts +145 -0
- package/types/LoginLinks.d.ts +26 -0
- package/types/Mandates.d.ts +373 -0
- package/types/MandatesResource.d.ts +27 -0
- package/types/OAuth.d.ts +355 -0
- package/types/PaymentAttemptRecords.d.ts +2438 -0
- package/types/PaymentAttemptRecordsResource.d.ts +57 -0
- package/types/PaymentIntentAmountDetailsLineItems.d.ts +126 -0
- package/types/PaymentIntents.d.ts +3162 -0
- package/types/PaymentIntentsResource.d.ts +11473 -0
- package/types/PaymentLinks.d.ts +1051 -0
- package/types/PaymentLinksResource.d.ts +2334 -0
- package/types/PaymentMethodConfigurations.d.ts +2045 -0
- package/types/PaymentMethodConfigurationsResource.d.ts +2958 -0
- package/types/PaymentMethodDomains.d.ts +213 -0
- package/types/PaymentMethodDomainsResource.d.ts +126 -0
- package/types/PaymentMethods.d.ts +1645 -0
- package/types/PaymentMethodsResource.d.ts +1223 -0
- package/types/PaymentRecords.d.ts +2438 -0
- package/types/PaymentRecordsResource.d.ts +657 -0
- package/types/Payouts.d.ts +177 -0
- package/types/PayoutsResource.d.ts +201 -0
- package/types/Persons.d.ts +824 -0
- package/types/Plans.d.ts +195 -0
- package/types/PlansResource.d.ts +303 -0
- package/types/Prices.d.ts +325 -0
- package/types/PricesResource.d.ts +607 -0
- package/types/ProductFeatures.d.ts +57 -0
- package/types/Products.d.ts +170 -0
- package/types/ProductsResource.d.ts +616 -0
- package/types/PromotionCodes.d.ts +125 -0
- package/types/PromotionCodesResource.d.ts +233 -0
- package/types/Quotes.d.ts +690 -0
- package/types/QuotesResource.d.ts +898 -0
- package/types/Radar/EarlyFraudWarnings.d.ts +55 -0
- package/types/Radar/EarlyFraudWarningsResource.d.ts +64 -0
- package/types/Radar/PaymentEvaluations.d.ts +580 -0
- package/types/Radar/PaymentEvaluationsResource.d.ts +208 -0
- package/types/Radar/ValueListItems.d.ts +74 -0
- package/types/Radar/ValueListItemsResource.d.ts +99 -0
- package/types/Radar/ValueLists.d.ts +104 -0
- package/types/Radar/ValueListsResource.d.ts +156 -0
- package/types/Refunds.d.ts +487 -0
- package/types/RefundsResource.d.ts +187 -0
- package/types/Reporting/ReportRuns.d.ts +115 -0
- package/types/Reporting/ReportRunsResource.d.ts +763 -0
- package/types/Reporting/ReportTypes.d.ts +64 -0
- package/types/Reporting/ReportTypesResource.d.ts +47 -0
- package/types/Reserve/Holds.d.ts +104 -0
- package/types/Reserve/Plans.d.ts +103 -0
- package/types/Reserve/Releases.d.ts +105 -0
- package/types/ReserveTransactions.d.ts +32 -0
- package/types/Reviews.d.ts +146 -0
- package/types/ReviewsResource.d.ts +68 -0
- package/types/SetupAttempts.d.ts +878 -0
- package/types/SetupAttemptsResource.d.ts +35 -0
- package/types/SetupIntents.d.ts +1105 -0
- package/types/SetupIntentsResource.d.ts +5251 -0
- package/types/ShippingRates.d.ts +155 -0
- package/types/ShippingRatesResource.d.ts +262 -0
- package/types/Sigma/ScheduledQueryRuns.d.ts +76 -0
- package/types/Sigma/ScheduledQueryRunsResource.d.ts +47 -0
- package/types/SourceMandateNotifications.d.ts +105 -0
- package/types/SourceTransactions.d.ts +203 -0
- package/types/Sources.d.ts +746 -0
- package/types/SourcesResource.d.ts +611 -0
- package/types/SubscriptionItems.d.ts +122 -0
- package/types/SubscriptionItemsResource.d.ts +441 -0
- package/types/SubscriptionSchedules.d.ts +687 -0
- package/types/SubscriptionSchedulesResource.d.ts +1565 -0
- package/types/Subscriptions.d.ts +852 -0
- package/types/SubscriptionsResource.d.ts +2326 -0
- package/types/Tax/Associations.d.ts +82 -0
- package/types/Tax/AssociationsResource.d.ts +29 -0
- package/types/Tax/CalculationLineItems.d.ts +187 -0
- package/types/Tax/Calculations.d.ts +511 -0
- package/types/Tax/CalculationsResource.d.ts +406 -0
- package/types/Tax/Registrations.d.ts +1710 -0
- package/types/Tax/RegistrationsResource.d.ts +2583 -0
- package/types/Tax/Settings.d.ts +86 -0
- package/types/Tax/SettingsResource.d.ts +77 -0
- package/types/Tax/TransactionLineItems.d.ts +90 -0
- package/types/Tax/Transactions.d.ts +418 -0
- package/types/Tax/TransactionsResource.d.ts +182 -0
- package/types/TaxCodes.d.ts +30 -0
- package/types/TaxCodesResource.d.ts +43 -0
- package/types/TaxDeductedAtSources.d.ts +35 -0
- package/types/TaxIds.d.ts +262 -0
- package/types/TaxIdsResource.d.ts +263 -0
- package/types/TaxRates.d.ts +144 -0
- package/types/TaxRatesResource.d.ts +215 -0
- package/types/Terminal/Configurations.d.ts +630 -0
- package/types/Terminal/ConfigurationsResource.d.ts +1469 -0
- package/types/Terminal/ConnectionTokens.d.ts +29 -0
- package/types/Terminal/ConnectionTokensResource.d.ts +32 -0
- package/types/Terminal/Locations.d.ts +166 -0
- package/types/Terminal/LocationsResource.d.ts +233 -0
- package/types/Terminal/OnboardingLinks.d.ts +57 -0
- package/types/Terminal/OnboardingLinksResource.d.ts +62 -0
- package/types/Terminal/Readers.d.ts +676 -0
- package/types/Terminal/ReadersResource.d.ts +665 -0
- package/types/TestHelpers/ConfirmationTokensResource.d.ts +936 -0
- package/types/TestHelpers/CustomersResource.d.ts +40 -0
- package/types/TestHelpers/Issuing/AuthorizationsResource.d.ts +1404 -0
- package/types/TestHelpers/Issuing/CardsResource.d.ts +121 -0
- package/types/TestHelpers/Issuing/PersonalizationDesignsResource.d.ts +113 -0
- package/types/TestHelpers/Issuing/TransactionsResource.d.ts +1354 -0
- package/types/TestHelpers/RefundsResource.d.ts +29 -0
- package/types/TestHelpers/Terminal/ReadersResource.d.ts +151 -0
- package/types/TestHelpers/TestClocks.d.ts +98 -0
- package/types/TestHelpers/TestClocksResource.d.ts +108 -0
- package/types/TestHelpers/Treasury/InboundTransfersResource.d.ts +108 -0
- package/types/TestHelpers/Treasury/OutboundPaymentsResource.d.ts +175 -0
- package/types/TestHelpers/Treasury/OutboundTransfersResource.d.ts +175 -0
- package/types/TestHelpers/Treasury/ReceivedCreditsResource.d.ts +93 -0
- package/types/TestHelpers/Treasury/ReceivedDebitsResource.d.ts +91 -0
- package/types/Tokens.d.ts +84 -0
- package/types/TokensResource.d.ts +1086 -0
- package/types/Topups.d.ts +103 -0
- package/types/TopupsResource.d.ts +158 -0
- package/types/TransferReversals.d.ts +72 -0
- package/types/Transfers.d.ts +104 -0
- package/types/TransfersResource.d.ts +260 -0
- package/types/Treasury/CreditReversals.d.ts +92 -0
- package/types/Treasury/CreditReversalsResource.d.ts +88 -0
- package/types/Treasury/DebitReversals.d.ts +104 -0
- package/types/Treasury/DebitReversalsResource.d.ts +95 -0
- package/types/Treasury/FinancialAccountFeatures.d.ts +623 -0
- package/types/Treasury/FinancialAccounts.d.ts +250 -0
- package/types/Treasury/FinancialAccountsResource.d.ts +733 -0
- package/types/Treasury/InboundTransfers.d.ts +235 -0
- package/types/Treasury/InboundTransfersResource.d.ts +128 -0
- package/types/Treasury/OutboundPayments.d.ts +324 -0
- package/types/Treasury/OutboundPaymentsResource.d.ts +285 -0
- package/types/Treasury/OutboundTransfers.d.ts +299 -0
- package/types/Treasury/OutboundTransfersResource.d.ts +179 -0
- package/types/Treasury/ReceivedCredits.d.ts +279 -0
- package/types/Treasury/ReceivedCreditsResource.d.ts +79 -0
- package/types/Treasury/ReceivedDebits.d.ts +227 -0
- package/types/Treasury/ReceivedDebitsResource.d.ts +58 -0
- package/types/Treasury/TransactionEntries.d.ts +203 -0
- package/types/Treasury/TransactionEntriesResource.d.ts +70 -0
- package/types/Treasury/Transactions.d.ts +202 -0
- package/types/Treasury/TransactionsResource.d.ts +82 -0
- package/types/UpcomingInvoices.d.ts +5 -0
- package/types/V2/Billing/MeterEventAdjustments.d.ts +65 -0
- package/types/V2/Billing/MeterEventAdjustmentsResource.d.ts +47 -0
- package/types/V2/Billing/MeterEventSessionResource.d.ts +26 -0
- package/types/V2/Billing/MeterEventSessions.d.ts +45 -0
- package/types/V2/Billing/MeterEventStreamResource.d.ts +62 -0
- package/types/V2/Billing/MeterEvents.d.ts +55 -0
- package/types/V2/Billing/MeterEventsResource.d.ts +52 -0
- package/types/V2/Core/AccountLinks.d.ts +160 -0
- package/types/V2/Core/AccountLinksResource.d.ts +145 -0
- package/types/V2/Core/AccountPersonTokens.d.ts +44 -0
- package/types/V2/Core/AccountPersons.d.ts +661 -0
- package/types/V2/Core/AccountTokens.d.ts +44 -0
- package/types/V2/Core/AccountTokensResource.d.ts +1149 -0
- package/types/V2/Core/Accounts/PersonTokensResource.d.ts +556 -0
- package/types/V2/Core/Accounts/PersonsResource.d.ts +1260 -0
- package/types/V2/Core/Accounts.d.ts +5422 -0
- package/types/V2/Core/AccountsResource.d.ts +5042 -0
- package/types/V2/Core/EventDestinations.d.ts +168 -0
- package/types/V2/Core/EventDestinationsResource.d.ts +278 -0
- package/types/V2/Core/EventTypes.d.ts +798 -0
- package/types/V2/Core/Events.d.ts +86 -0
- package/types/V2/Core/EventsResource.d.ts +63 -0
- package/types/V2/DeletedObject.d.ts +22 -0
- package/types/V2/EventMisc.d.ts +80 -0
- package/types/WebhookEndpoints.d.ts +101 -0
- package/types/WebhookEndpointsResource.d.ts +798 -0
- package/types/Webhooks.d.ts +164 -0
- package/types/apiVersion.d.ts +4 -0
- package/types/crypto/crypto.d.ts +59 -0
- package/types/index.d.ts +596 -0
- package/types/lib.d.ts +420 -0
- package/types/net/net.d.ts +99 -0
- package/types/shared.d.ts +178 -0
- package/types/test/.eslintrc.js +6 -0
- package/types/test/tsconfig.json +67 -0
- package/types/test/typescriptTest.ts +357 -0
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeAutoPaginationMethods = void 0;
|
|
4
|
+
const utils_js_1 = require("./utils.js");
|
|
5
|
+
class V1Iterator {
|
|
6
|
+
constructor(firstPagePromise, requestArgs, spec, stripeResource) {
|
|
7
|
+
this.index = 0;
|
|
8
|
+
this.pagePromise = firstPagePromise;
|
|
9
|
+
this.promiseCache = { currentPromise: null };
|
|
10
|
+
this.requestArgs = requestArgs;
|
|
11
|
+
this.spec = spec;
|
|
12
|
+
this.stripeResource = stripeResource;
|
|
13
|
+
}
|
|
14
|
+
async iterate(pageResult) {
|
|
15
|
+
if (!(pageResult &&
|
|
16
|
+
pageResult.data &&
|
|
17
|
+
typeof pageResult.data.length === 'number')) {
|
|
18
|
+
throw Error('Unexpected: Stripe API response does not have a well-formed `data` array.');
|
|
19
|
+
}
|
|
20
|
+
const reverseIteration = isReverseIteration(this.requestArgs);
|
|
21
|
+
if (this.index < pageResult.data.length) {
|
|
22
|
+
const idx = reverseIteration
|
|
23
|
+
? pageResult.data.length - 1 - this.index
|
|
24
|
+
: this.index;
|
|
25
|
+
const value = pageResult.data[idx];
|
|
26
|
+
this.index += 1;
|
|
27
|
+
return { value, done: false };
|
|
28
|
+
}
|
|
29
|
+
else if (pageResult.has_more) {
|
|
30
|
+
// Reset counter, request next page, and recurse.
|
|
31
|
+
this.index = 0;
|
|
32
|
+
this.pagePromise = this.getNextPage(pageResult);
|
|
33
|
+
const nextPageResult = await this.pagePromise;
|
|
34
|
+
return this.iterate(nextPageResult);
|
|
35
|
+
}
|
|
36
|
+
return { done: true, value: undefined };
|
|
37
|
+
}
|
|
38
|
+
/** @abstract */
|
|
39
|
+
getNextPage(_pageResult) {
|
|
40
|
+
throw new Error('Unimplemented');
|
|
41
|
+
}
|
|
42
|
+
async _next() {
|
|
43
|
+
return this.iterate(await this.pagePromise);
|
|
44
|
+
}
|
|
45
|
+
next() {
|
|
46
|
+
/**
|
|
47
|
+
* If a user calls `.next()` multiple times in parallel,
|
|
48
|
+
* return the same result until something has resolved
|
|
49
|
+
* to prevent page-turning race conditions.
|
|
50
|
+
*/
|
|
51
|
+
if (this.promiseCache.currentPromise) {
|
|
52
|
+
return this.promiseCache.currentPromise;
|
|
53
|
+
}
|
|
54
|
+
const nextPromise = (async () => {
|
|
55
|
+
const ret = await this._next();
|
|
56
|
+
this.promiseCache.currentPromise = null;
|
|
57
|
+
return ret;
|
|
58
|
+
})();
|
|
59
|
+
this.promiseCache.currentPromise = nextPromise;
|
|
60
|
+
return nextPromise;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
class V1ListIterator extends V1Iterator {
|
|
64
|
+
getNextPage(pageResult) {
|
|
65
|
+
const reverseIteration = isReverseIteration(this.requestArgs);
|
|
66
|
+
const lastId = getLastId(pageResult, reverseIteration);
|
|
67
|
+
return this.stripeResource._makeRequest(this.requestArgs, this.spec, {
|
|
68
|
+
[reverseIteration ? 'ending_before' : 'starting_after']: lastId,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
class V1SearchIterator extends V1Iterator {
|
|
73
|
+
getNextPage(pageResult) {
|
|
74
|
+
if (!pageResult.next_page) {
|
|
75
|
+
throw Error('Unexpected: Stripe API response does not have a well-formed `next_page` field, but `has_more` was true.');
|
|
76
|
+
}
|
|
77
|
+
return this.stripeResource._makeRequest(this.requestArgs, this.spec, {
|
|
78
|
+
page: pageResult.next_page,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
class V2ListIterator {
|
|
83
|
+
constructor(firstPagePromise, requestArgs, spec, stripeResource) {
|
|
84
|
+
this.firstPagePromise = firstPagePromise;
|
|
85
|
+
this.currentPageIterator = null;
|
|
86
|
+
this.nextPageUrl = null;
|
|
87
|
+
this.requestArgs = requestArgs;
|
|
88
|
+
this.spec = spec;
|
|
89
|
+
this.stripeResource = stripeResource;
|
|
90
|
+
}
|
|
91
|
+
async initFirstPage() {
|
|
92
|
+
if (this.firstPagePromise) {
|
|
93
|
+
const page = await this.firstPagePromise;
|
|
94
|
+
this.firstPagePromise = null;
|
|
95
|
+
this.currentPageIterator = page.data[Symbol.iterator]();
|
|
96
|
+
this.nextPageUrl = page.next_page_url || null;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
async turnPage() {
|
|
100
|
+
if (!this.nextPageUrl)
|
|
101
|
+
return null;
|
|
102
|
+
this.spec.fullPath = this.nextPageUrl;
|
|
103
|
+
const page = await this.stripeResource._makeRequest([], this.spec, {});
|
|
104
|
+
this.nextPageUrl = page.next_page_url || null;
|
|
105
|
+
this.currentPageIterator = page.data[Symbol.iterator]();
|
|
106
|
+
return this.currentPageIterator;
|
|
107
|
+
}
|
|
108
|
+
async next() {
|
|
109
|
+
await this.initFirstPage();
|
|
110
|
+
if (this.currentPageIterator) {
|
|
111
|
+
const result = this.currentPageIterator.next();
|
|
112
|
+
if (!result.done)
|
|
113
|
+
return { done: false, value: result.value };
|
|
114
|
+
}
|
|
115
|
+
const nextPageIterator = await this.turnPage();
|
|
116
|
+
if (!nextPageIterator) {
|
|
117
|
+
return { done: true, value: undefined };
|
|
118
|
+
}
|
|
119
|
+
const result = nextPageIterator.next();
|
|
120
|
+
if (!result.done)
|
|
121
|
+
return { done: false, value: result.value };
|
|
122
|
+
return { done: true, value: undefined };
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
const makeAutoPaginationMethods = (stripeResource, requestArgs, spec, firstPagePromise) => {
|
|
126
|
+
const apiMode = (0, utils_js_1.getAPIMode)(spec.fullPath || spec.path);
|
|
127
|
+
if (apiMode !== 'v2' && spec.methodType === 'search') {
|
|
128
|
+
return makeAutoPaginationMethodsFromIterator(new V1SearchIterator(firstPagePromise, requestArgs, spec, stripeResource));
|
|
129
|
+
}
|
|
130
|
+
if (apiMode !== 'v2' && spec.methodType === 'list') {
|
|
131
|
+
return makeAutoPaginationMethodsFromIterator(new V1ListIterator(firstPagePromise, requestArgs, spec, stripeResource));
|
|
132
|
+
}
|
|
133
|
+
if (apiMode === 'v2' && spec.methodType === 'list') {
|
|
134
|
+
return makeAutoPaginationMethodsFromIterator(new V2ListIterator(firstPagePromise, requestArgs, spec, stripeResource));
|
|
135
|
+
}
|
|
136
|
+
return null;
|
|
137
|
+
};
|
|
138
|
+
exports.makeAutoPaginationMethods = makeAutoPaginationMethods;
|
|
139
|
+
const makeAutoPaginationMethodsFromIterator = (iterator) => {
|
|
140
|
+
const autoPagingEach = makeAutoPagingEach((...args) => iterator.next(...args));
|
|
141
|
+
const autoPagingToArray = makeAutoPagingToArray(autoPagingEach);
|
|
142
|
+
const autoPaginationMethods = {
|
|
143
|
+
autoPagingEach,
|
|
144
|
+
autoPagingToArray,
|
|
145
|
+
// Async iterator functions:
|
|
146
|
+
next: () => iterator.next(),
|
|
147
|
+
return: () => {
|
|
148
|
+
// This is required for `break`.
|
|
149
|
+
return {};
|
|
150
|
+
},
|
|
151
|
+
[getAsyncIteratorSymbol()]: () => {
|
|
152
|
+
return autoPaginationMethods;
|
|
153
|
+
},
|
|
154
|
+
};
|
|
155
|
+
return autoPaginationMethods;
|
|
156
|
+
};
|
|
157
|
+
/**
|
|
158
|
+
* ----------------
|
|
159
|
+
* Private Helpers:
|
|
160
|
+
* ----------------
|
|
161
|
+
*/
|
|
162
|
+
function getAsyncIteratorSymbol() {
|
|
163
|
+
if (typeof Symbol !== 'undefined' && Symbol.asyncIterator) {
|
|
164
|
+
return Symbol.asyncIterator;
|
|
165
|
+
}
|
|
166
|
+
// Follow the convention from libraries like iterall: https://github.com/leebyron/iterall#asynciterator-1
|
|
167
|
+
return '@@asyncIterator';
|
|
168
|
+
}
|
|
169
|
+
function getDoneCallback(args) {
|
|
170
|
+
if (args.length < 2) {
|
|
171
|
+
return null;
|
|
172
|
+
}
|
|
173
|
+
const onDone = args[1];
|
|
174
|
+
if (typeof onDone !== 'function') {
|
|
175
|
+
throw Error(`The second argument to autoPagingEach, if present, must be a callback function; received ${typeof onDone}`);
|
|
176
|
+
}
|
|
177
|
+
return onDone;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* We allow four forms of the `onItem` callback (the middle two being equivalent),
|
|
181
|
+
*
|
|
182
|
+
* 1. `.autoPagingEach((item) => { doSomething(item); return false; });`
|
|
183
|
+
* 2. `.autoPagingEach(async (item) => { await doSomething(item); return false; });`
|
|
184
|
+
* 3. `.autoPagingEach((item) => doSomething(item).then(() => false));`
|
|
185
|
+
* 4. `.autoPagingEach((item, next) => { doSomething(item); next(false); });`
|
|
186
|
+
*
|
|
187
|
+
* In addition to standard validation, this helper
|
|
188
|
+
* coalesces the former forms into the latter form.
|
|
189
|
+
*/
|
|
190
|
+
function getItemCallback(args) {
|
|
191
|
+
if (args.length === 0) {
|
|
192
|
+
return undefined;
|
|
193
|
+
}
|
|
194
|
+
const onItem = args[0];
|
|
195
|
+
if (typeof onItem !== 'function') {
|
|
196
|
+
throw Error(`The first argument to autoPagingEach, if present, must be a callback function; received ${typeof onItem}`);
|
|
197
|
+
}
|
|
198
|
+
// 4. `.autoPagingEach((item, next) => { doSomething(item); next(false); });`
|
|
199
|
+
if (onItem.length === 2) {
|
|
200
|
+
return onItem;
|
|
201
|
+
}
|
|
202
|
+
if (onItem.length > 2) {
|
|
203
|
+
throw Error(`The \`onItem\` callback function passed to autoPagingEach must accept at most two arguments; got ${onItem}`);
|
|
204
|
+
}
|
|
205
|
+
// This magically handles all three of these usecases (the latter two being functionally identical):
|
|
206
|
+
// 1. `.autoPagingEach((item) => { doSomething(item); return false; });`
|
|
207
|
+
// 2. `.autoPagingEach(async (item) => { await doSomething(item); return false; });`
|
|
208
|
+
// 3. `.autoPagingEach((item) => doSomething(item).then(() => false));`
|
|
209
|
+
return function _onItem(item, next) {
|
|
210
|
+
const shouldContinue = onItem(item);
|
|
211
|
+
next(shouldContinue);
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
function getLastId(listResult, reverseIteration) {
|
|
215
|
+
const lastIdx = reverseIteration ? 0 : listResult.data.length - 1;
|
|
216
|
+
const lastItem = listResult.data[lastIdx];
|
|
217
|
+
const lastId = lastItem && lastItem.id;
|
|
218
|
+
if (!lastId) {
|
|
219
|
+
throw Error('Unexpected: No `id` found on the last item while auto-paging a list.');
|
|
220
|
+
}
|
|
221
|
+
return lastId;
|
|
222
|
+
}
|
|
223
|
+
function makeAutoPagingEach(asyncIteratorNext) {
|
|
224
|
+
return function autoPagingEach( /* onItem?, onDone? */) {
|
|
225
|
+
const args = [].slice.call(arguments);
|
|
226
|
+
const onItem = getItemCallback(args);
|
|
227
|
+
const onDone = getDoneCallback(args);
|
|
228
|
+
if (args.length > 2) {
|
|
229
|
+
throw Error(`autoPagingEach takes up to two arguments; received ${args}`);
|
|
230
|
+
}
|
|
231
|
+
const autoPagePromise = wrapAsyncIteratorWithCallback(asyncIteratorNext,
|
|
232
|
+
// @ts-ignore we might need a null check
|
|
233
|
+
onItem);
|
|
234
|
+
return (0, utils_js_1.callbackifyPromiseWithTimeout)(autoPagePromise, onDone);
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
function makeAutoPagingToArray(autoPagingEach) {
|
|
238
|
+
return function autoPagingToArray(opts, onDone) {
|
|
239
|
+
const limit = opts && opts.limit;
|
|
240
|
+
if (!limit) {
|
|
241
|
+
throw Error('You must pass a `limit` option to autoPagingToArray, e.g., `autoPagingToArray({limit: 1000});`.');
|
|
242
|
+
}
|
|
243
|
+
if (limit > 10000) {
|
|
244
|
+
throw Error('You cannot specify a limit of more than 10,000 items to fetch in `autoPagingToArray`; use `autoPagingEach` to iterate through longer lists.');
|
|
245
|
+
}
|
|
246
|
+
const promise = new Promise((resolve, reject) => {
|
|
247
|
+
const items = [];
|
|
248
|
+
autoPagingEach((item) => {
|
|
249
|
+
items.push(item);
|
|
250
|
+
if (items.length >= limit) {
|
|
251
|
+
return false;
|
|
252
|
+
}
|
|
253
|
+
})
|
|
254
|
+
.then(() => {
|
|
255
|
+
resolve(items);
|
|
256
|
+
})
|
|
257
|
+
.catch(reject);
|
|
258
|
+
});
|
|
259
|
+
// @ts-ignore
|
|
260
|
+
return (0, utils_js_1.callbackifyPromiseWithTimeout)(promise, onDone);
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
function wrapAsyncIteratorWithCallback(asyncIteratorNext, onItem) {
|
|
264
|
+
return new Promise((resolve, reject) => {
|
|
265
|
+
function handleIteration(iterResult) {
|
|
266
|
+
if (iterResult.done) {
|
|
267
|
+
resolve();
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
270
|
+
const item = iterResult.value;
|
|
271
|
+
return new Promise((next) => {
|
|
272
|
+
// Bit confusing, perhaps; we pass a `resolve` fn
|
|
273
|
+
// to the user, so they can decide when and if to continue.
|
|
274
|
+
// They can return false, or a promise which resolves to false, to break.
|
|
275
|
+
onItem(item, next);
|
|
276
|
+
}).then((shouldContinue) => {
|
|
277
|
+
if (shouldContinue === false) {
|
|
278
|
+
return handleIteration({ done: true, value: undefined });
|
|
279
|
+
}
|
|
280
|
+
else {
|
|
281
|
+
return asyncIteratorNext().then(handleIteration);
|
|
282
|
+
}
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
asyncIteratorNext()
|
|
286
|
+
.then(handleIteration)
|
|
287
|
+
.catch(reject);
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
function isReverseIteration(requestArgs) {
|
|
291
|
+
const args = [].slice.call(requestArgs);
|
|
292
|
+
const dataFromArgs = (0, utils_js_1.getDataFromArgs)(args);
|
|
293
|
+
return !!dataFromArgs.ending_before;
|
|
294
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CryptoProviderOnlySupportsAsyncError = exports.CryptoProvider = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Interface encapsulating the various crypto computations used by the library,
|
|
6
|
+
* allowing pluggable underlying crypto implementations.
|
|
7
|
+
*/
|
|
8
|
+
class CryptoProvider {
|
|
9
|
+
/**
|
|
10
|
+
* Computes a SHA-256 HMAC given a secret and a payload (encoded in UTF-8).
|
|
11
|
+
* The output HMAC should be encoded in hexadecimal.
|
|
12
|
+
*
|
|
13
|
+
* Sample values for implementations:
|
|
14
|
+
* - computeHMACSignature('', 'test_secret') => 'f7f9bd47fb987337b5796fdc1fdb9ba221d0d5396814bfcaf9521f43fd8927fd'
|
|
15
|
+
* - computeHMACSignature('\ud83d\ude00', 'test_secret') => '837da296d05c4fe31f61d5d7ead035099d9585a5bcde87de952012a78f0b0c43
|
|
16
|
+
*/
|
|
17
|
+
computeHMACSignature(payload, secret) {
|
|
18
|
+
throw new Error('computeHMACSignature not implemented.');
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Asynchronous version of `computeHMACSignature`. Some implementations may
|
|
22
|
+
* only allow support async signature computation.
|
|
23
|
+
*
|
|
24
|
+
* Computes a SHA-256 HMAC given a secret and a payload (encoded in UTF-8).
|
|
25
|
+
* The output HMAC should be encoded in hexadecimal.
|
|
26
|
+
*
|
|
27
|
+
* Sample values for implementations:
|
|
28
|
+
* - computeHMACSignature('', 'test_secret') => 'f7f9bd47fb987337b5796fdc1fdb9ba221d0d5396814bfcaf9521f43fd8927fd'
|
|
29
|
+
* - computeHMACSignature('\ud83d\ude00', 'test_secret') => '837da296d05c4fe31f61d5d7ead035099d9585a5bcde87de952012a78f0b0c43
|
|
30
|
+
*/
|
|
31
|
+
computeHMACSignatureAsync(payload, secret) {
|
|
32
|
+
throw new Error('computeHMACSignatureAsync not implemented.');
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Computes a SHA-256 hash of the data.
|
|
36
|
+
*/
|
|
37
|
+
computeSHA256Async(data) {
|
|
38
|
+
throw new Error('computeSHA256 not implemented.');
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.CryptoProvider = CryptoProvider;
|
|
42
|
+
/**
|
|
43
|
+
* If the crypto provider only supports asynchronous operations,
|
|
44
|
+
* throw CryptoProviderOnlySupportsAsyncError instead of
|
|
45
|
+
* a generic error so that the caller can choose to provide
|
|
46
|
+
* a more helpful error message to direct the user to use
|
|
47
|
+
* an asynchronous pathway.
|
|
48
|
+
*/
|
|
49
|
+
class CryptoProviderOnlySupportsAsyncError extends Error {
|
|
50
|
+
}
|
|
51
|
+
exports.CryptoProviderOnlySupportsAsyncError = CryptoProviderOnlySupportsAsyncError;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NodeCryptoProvider = void 0;
|
|
4
|
+
const crypto = require("crypto");
|
|
5
|
+
const CryptoProvider_js_1 = require("./CryptoProvider.js");
|
|
6
|
+
/**
|
|
7
|
+
* `CryptoProvider which uses the Node `crypto` package for its computations.
|
|
8
|
+
*/
|
|
9
|
+
class NodeCryptoProvider extends CryptoProvider_js_1.CryptoProvider {
|
|
10
|
+
/** @override */
|
|
11
|
+
computeHMACSignature(payload, secret) {
|
|
12
|
+
return crypto
|
|
13
|
+
.createHmac('sha256', secret)
|
|
14
|
+
.update(payload, 'utf8')
|
|
15
|
+
.digest('hex');
|
|
16
|
+
}
|
|
17
|
+
/** @override */
|
|
18
|
+
async computeHMACSignatureAsync(payload, secret) {
|
|
19
|
+
const signature = await this.computeHMACSignature(payload, secret);
|
|
20
|
+
return signature;
|
|
21
|
+
}
|
|
22
|
+
/** @override */
|
|
23
|
+
async computeSHA256Async(data) {
|
|
24
|
+
return new Uint8Array(await crypto
|
|
25
|
+
.createHash('sha256')
|
|
26
|
+
.update(data)
|
|
27
|
+
.digest());
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.NodeCryptoProvider = NodeCryptoProvider;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SubtleCryptoProvider = void 0;
|
|
4
|
+
const CryptoProvider_js_1 = require("./CryptoProvider.js");
|
|
5
|
+
/**
|
|
6
|
+
* `CryptoProvider which uses the SubtleCrypto interface of the Web Crypto API.
|
|
7
|
+
*
|
|
8
|
+
* This only supports asynchronous operations.
|
|
9
|
+
*/
|
|
10
|
+
class SubtleCryptoProvider extends CryptoProvider_js_1.CryptoProvider {
|
|
11
|
+
constructor(subtleCrypto) {
|
|
12
|
+
super();
|
|
13
|
+
// If no subtle crypto is interface, default to the global namespace. This
|
|
14
|
+
// is to allow custom interfaces (eg. using the Node webcrypto interface in
|
|
15
|
+
// tests).
|
|
16
|
+
this.subtleCrypto = subtleCrypto || crypto.subtle;
|
|
17
|
+
}
|
|
18
|
+
/** @override */
|
|
19
|
+
computeHMACSignature(payload, secret) {
|
|
20
|
+
throw new CryptoProvider_js_1.CryptoProviderOnlySupportsAsyncError('SubtleCryptoProvider cannot be used in a synchronous context.');
|
|
21
|
+
}
|
|
22
|
+
/** @override */
|
|
23
|
+
async computeHMACSignatureAsync(payload, secret) {
|
|
24
|
+
const encoder = new TextEncoder();
|
|
25
|
+
const key = await this.subtleCrypto.importKey('raw', encoder.encode(secret), {
|
|
26
|
+
name: 'HMAC',
|
|
27
|
+
hash: { name: 'SHA-256' },
|
|
28
|
+
}, false, ['sign']);
|
|
29
|
+
const signatureBuffer = await this.subtleCrypto.sign('hmac', key, encoder.encode(payload));
|
|
30
|
+
// crypto.subtle returns the signature in base64 format. This must be
|
|
31
|
+
// encoded in hex to match the CryptoProvider contract. We map each byte in
|
|
32
|
+
// the buffer to its corresponding hex octet and then combine into a string.
|
|
33
|
+
const signatureBytes = new Uint8Array(signatureBuffer);
|
|
34
|
+
const signatureHexCodes = new Array(signatureBytes.length);
|
|
35
|
+
for (let i = 0; i < signatureBytes.length; i++) {
|
|
36
|
+
signatureHexCodes[i] = byteHexMapping[signatureBytes[i]];
|
|
37
|
+
}
|
|
38
|
+
return signatureHexCodes.join('');
|
|
39
|
+
}
|
|
40
|
+
/** @override */
|
|
41
|
+
async computeSHA256Async(data) {
|
|
42
|
+
return new Uint8Array(await this.subtleCrypto.digest('SHA-256', data));
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
exports.SubtleCryptoProvider = SubtleCryptoProvider;
|
|
46
|
+
// Cached mapping of byte to hex representation. We do this once to avoid re-
|
|
47
|
+
// computing every time we need to convert the result of a signature to hex.
|
|
48
|
+
const byteHexMapping = new Array(256);
|
|
49
|
+
for (let i = 0; i < byteHexMapping.length; i++) {
|
|
50
|
+
byteHexMapping[i] = i.toString(16).padStart(2, '0');
|
|
51
|
+
}
|
package/cjs/multipart.js
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.multipartRequestDataProcessor = void 0;
|
|
4
|
+
const utils_js_1 = require("./utils.js");
|
|
5
|
+
// Method for formatting HTTP body for the multipart/form-data specification
|
|
6
|
+
// Mostly taken from Fermata.js
|
|
7
|
+
// https://github.com/natevw/fermata/blob/5d9732a33d776ce925013a265935facd1626cc88/fermata.js#L315-L343
|
|
8
|
+
const multipartDataGenerator = (method, data, headers) => {
|
|
9
|
+
const segno = (Math.round(Math.random() * 1e16) + Math.round(Math.random() * 1e16)).toString();
|
|
10
|
+
headers['Content-Type'] = `multipart/form-data; boundary=${segno}`;
|
|
11
|
+
const textEncoder = new TextEncoder();
|
|
12
|
+
let buffer = new Uint8Array(0);
|
|
13
|
+
const endBuffer = textEncoder.encode('\r\n');
|
|
14
|
+
function push(l) {
|
|
15
|
+
const prevBuffer = buffer;
|
|
16
|
+
const newBuffer = l instanceof Uint8Array ? l : new Uint8Array(textEncoder.encode(l));
|
|
17
|
+
buffer = new Uint8Array(prevBuffer.length + newBuffer.length + 2);
|
|
18
|
+
buffer.set(prevBuffer);
|
|
19
|
+
buffer.set(newBuffer, prevBuffer.length);
|
|
20
|
+
buffer.set(endBuffer, buffer.length - 2);
|
|
21
|
+
}
|
|
22
|
+
function q(s) {
|
|
23
|
+
return `"${s.replace(/"|"/g, '%22').replace(/\r\n|\r|\n/g, ' ')}"`;
|
|
24
|
+
}
|
|
25
|
+
const flattenedData = (0, utils_js_1.flattenAndStringify)(data);
|
|
26
|
+
for (const k in flattenedData) {
|
|
27
|
+
if (!Object.prototype.hasOwnProperty.call(flattenedData, k)) {
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
const v = flattenedData[k];
|
|
31
|
+
push(`--${segno}`);
|
|
32
|
+
if (Object.prototype.hasOwnProperty.call(v, 'data')) {
|
|
33
|
+
const typedEntry = v;
|
|
34
|
+
push(`Content-Disposition: form-data; name=${q(k)}; filename=${q(typedEntry.name || 'blob')}`);
|
|
35
|
+
push(`Content-Type: ${typedEntry.type || 'application/octet-stream'}`);
|
|
36
|
+
push('');
|
|
37
|
+
push(typedEntry.data);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
push(`Content-Disposition: form-data; name=${q(k)}`);
|
|
41
|
+
push('');
|
|
42
|
+
push(v);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
push(`--${segno}--`);
|
|
46
|
+
return buffer;
|
|
47
|
+
};
|
|
48
|
+
function multipartRequestDataProcessor(method, data, headers, callback) {
|
|
49
|
+
data = data || {};
|
|
50
|
+
if (method !== 'POST') {
|
|
51
|
+
return callback(null, (0, utils_js_1.queryStringifyRequestData)(data));
|
|
52
|
+
}
|
|
53
|
+
this._stripe._platformFunctions
|
|
54
|
+
.tryBufferData(data)
|
|
55
|
+
.then((bufferedData) => {
|
|
56
|
+
const buffer = multipartDataGenerator(method, bufferedData, headers);
|
|
57
|
+
return callback(null, buffer);
|
|
58
|
+
})
|
|
59
|
+
.catch((err) => callback(err, null));
|
|
60
|
+
}
|
|
61
|
+
exports.multipartRequestDataProcessor = multipartRequestDataProcessor;
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FetchHttpClientResponse = exports.FetchHttpClient = void 0;
|
|
4
|
+
const utils_js_1 = require("../utils.js");
|
|
5
|
+
const HttpClient_js_1 = require("./HttpClient.js");
|
|
6
|
+
/**
|
|
7
|
+
* HTTP client which uses a `fetch` function to issue requests.
|
|
8
|
+
*
|
|
9
|
+
* By default relies on the global `fetch` function, but an optional function
|
|
10
|
+
* can be passed in. If passing in a function, it is expected to match the Web
|
|
11
|
+
* Fetch API. As an example, this could be the function provided by the
|
|
12
|
+
* node-fetch package (https://github.com/node-fetch/node-fetch).
|
|
13
|
+
*/
|
|
14
|
+
class FetchHttpClient extends HttpClient_js_1.HttpClient {
|
|
15
|
+
constructor(fetchFn) {
|
|
16
|
+
super();
|
|
17
|
+
// Default to global fetch if available
|
|
18
|
+
if (!fetchFn) {
|
|
19
|
+
if (!globalThis.fetch) {
|
|
20
|
+
throw new Error('fetch() function not provided and is not defined in the global scope. ' +
|
|
21
|
+
'You must provide a fetch implementation.');
|
|
22
|
+
}
|
|
23
|
+
fetchFn = globalThis.fetch;
|
|
24
|
+
}
|
|
25
|
+
// Both timeout behaviors differs from Node:
|
|
26
|
+
// - Fetch uses a single timeout for the entire length of the request.
|
|
27
|
+
// - Node is more fine-grained and resets the timeout after each stage of the request.
|
|
28
|
+
if (globalThis.AbortController) {
|
|
29
|
+
// Utilise native AbortController if available
|
|
30
|
+
// AbortController was added in Node v15.0.0, v14.17.0
|
|
31
|
+
this._fetchFn = FetchHttpClient.makeFetchWithAbortTimeout(fetchFn);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
// Fall back to racing against a timeout promise if not available in the runtime
|
|
35
|
+
// This does not actually cancel the underlying fetch operation or resources
|
|
36
|
+
this._fetchFn = FetchHttpClient.makeFetchWithRaceTimeout(fetchFn);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
static makeFetchWithRaceTimeout(fetchFn) {
|
|
40
|
+
return (url, init, timeout) => {
|
|
41
|
+
let pendingTimeoutId;
|
|
42
|
+
const timeoutPromise = new Promise((_, reject) => {
|
|
43
|
+
pendingTimeoutId = setTimeout(() => {
|
|
44
|
+
pendingTimeoutId = null;
|
|
45
|
+
reject(HttpClient_js_1.HttpClient.makeTimeoutError());
|
|
46
|
+
}, timeout);
|
|
47
|
+
});
|
|
48
|
+
const fetchPromise = fetchFn(url, init);
|
|
49
|
+
return Promise.race([fetchPromise, timeoutPromise]).finally(() => {
|
|
50
|
+
if (pendingTimeoutId) {
|
|
51
|
+
clearTimeout(pendingTimeoutId);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
static makeFetchWithAbortTimeout(fetchFn) {
|
|
57
|
+
return async (url, init, timeout) => {
|
|
58
|
+
// Use AbortController because AbortSignal.timeout() was added later in Node v17.3.0, v16.14.0
|
|
59
|
+
const abort = new AbortController();
|
|
60
|
+
let timeoutId = setTimeout(() => {
|
|
61
|
+
timeoutId = null;
|
|
62
|
+
abort.abort(HttpClient_js_1.HttpClient.makeTimeoutError());
|
|
63
|
+
}, timeout);
|
|
64
|
+
try {
|
|
65
|
+
return await fetchFn(url, {
|
|
66
|
+
...init,
|
|
67
|
+
signal: abort.signal,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
catch (err) {
|
|
71
|
+
// Some implementations, like node-fetch, do not respect the reason passed to AbortController.abort()
|
|
72
|
+
// and instead it always throws an AbortError
|
|
73
|
+
// We catch this case to normalise all timeout errors
|
|
74
|
+
if (err.name === 'AbortError') {
|
|
75
|
+
throw HttpClient_js_1.HttpClient.makeTimeoutError();
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
throw err;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
finally {
|
|
82
|
+
if (timeoutId) {
|
|
83
|
+
clearTimeout(timeoutId);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
/** @override. */
|
|
89
|
+
getClientName() {
|
|
90
|
+
return 'fetch';
|
|
91
|
+
}
|
|
92
|
+
async makeRequest(host, port, path, method, headers, requestData, protocol, timeout) {
|
|
93
|
+
const isInsecureConnection = protocol === 'http';
|
|
94
|
+
const url = new URL(path, `${isInsecureConnection ? 'http' : 'https'}://${host}`);
|
|
95
|
+
url.port = port;
|
|
96
|
+
// For methods which expect payloads, we should always pass a body value
|
|
97
|
+
// even when it is empty. Without this, some JS runtimes (eg. Deno) will
|
|
98
|
+
// inject a second Content-Length header. See https://github.com/stripe/stripe-node/issues/1519
|
|
99
|
+
// for more details.
|
|
100
|
+
const methodHasPayload = method == 'POST' || method == 'PUT' || method == 'PATCH';
|
|
101
|
+
const body = requestData || (methodHasPayload ? '' : undefined);
|
|
102
|
+
const res = await this._fetchFn(url.toString(), {
|
|
103
|
+
method,
|
|
104
|
+
headers: (0, utils_js_1.parseHeadersForFetch)(headers),
|
|
105
|
+
body: body,
|
|
106
|
+
}, timeout);
|
|
107
|
+
return new FetchHttpClientResponse(res);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
exports.FetchHttpClient = FetchHttpClient;
|
|
111
|
+
class FetchHttpClientResponse extends HttpClient_js_1.HttpClientResponse {
|
|
112
|
+
constructor(res) {
|
|
113
|
+
super(res.status, FetchHttpClientResponse._transformHeadersToObject(res.headers));
|
|
114
|
+
this._res = res;
|
|
115
|
+
}
|
|
116
|
+
getRawResponse() {
|
|
117
|
+
return this._res;
|
|
118
|
+
}
|
|
119
|
+
toStream(streamCompleteCallback) {
|
|
120
|
+
// Unfortunately `fetch` does not have event handlers for when the stream is
|
|
121
|
+
// completely read. We therefore invoke the streamCompleteCallback right
|
|
122
|
+
// away. This callback emits a response event with metadata and completes
|
|
123
|
+
// metrics, so it's ok to do this without waiting for the stream to be
|
|
124
|
+
// completely read.
|
|
125
|
+
streamCompleteCallback();
|
|
126
|
+
// Fetch's `body` property is expected to be a readable stream of the body.
|
|
127
|
+
return this._res.body;
|
|
128
|
+
}
|
|
129
|
+
toJSON() {
|
|
130
|
+
return this._res.json();
|
|
131
|
+
}
|
|
132
|
+
static _transformHeadersToObject(headers) {
|
|
133
|
+
// Fetch uses a Headers instance so this must be converted to a barebones
|
|
134
|
+
// JS object to meet the HttpClient interface.
|
|
135
|
+
const headersObj = {};
|
|
136
|
+
for (const entry of headers) {
|
|
137
|
+
if (!Array.isArray(entry) || entry.length != 2) {
|
|
138
|
+
throw new Error('Response objects produced by the fetch function given to FetchHttpClient do not have an iterable headers map. Response#headers should be an iterable object.');
|
|
139
|
+
}
|
|
140
|
+
headersObj[entry[0]] = entry[1];
|
|
141
|
+
}
|
|
142
|
+
return headersObj;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
exports.FetchHttpClientResponse = FetchHttpClientResponse;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HttpClientResponse = exports.HttpClient = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Encapsulates the logic for issuing a request to the Stripe API.
|
|
6
|
+
*
|
|
7
|
+
* A custom HTTP client should should implement:
|
|
8
|
+
* 1. A response class which extends HttpClientResponse and wraps around their
|
|
9
|
+
* own internal representation of a response.
|
|
10
|
+
* 2. A client class which extends HttpClient and implements all methods,
|
|
11
|
+
* returning their own response class when making requests.
|
|
12
|
+
*/
|
|
13
|
+
class HttpClient {
|
|
14
|
+
/** The client name used for diagnostics. */
|
|
15
|
+
getClientName() {
|
|
16
|
+
throw new Error('getClientName not implemented.');
|
|
17
|
+
}
|
|
18
|
+
makeRequest(host, port, path, method, headers, requestData, protocol, timeout) {
|
|
19
|
+
throw new Error('makeRequest not implemented.');
|
|
20
|
+
}
|
|
21
|
+
/** Helper to make a consistent timeout error across implementations. */
|
|
22
|
+
static makeTimeoutError() {
|
|
23
|
+
const timeoutErr = new TypeError(HttpClient.TIMEOUT_ERROR_CODE);
|
|
24
|
+
timeoutErr.code = HttpClient.TIMEOUT_ERROR_CODE;
|
|
25
|
+
return timeoutErr;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.HttpClient = HttpClient;
|
|
29
|
+
// Public API accessible via Stripe.HttpClient
|
|
30
|
+
HttpClient.CONNECTION_CLOSED_ERROR_CODES = ['ECONNRESET', 'EPIPE'];
|
|
31
|
+
HttpClient.TIMEOUT_ERROR_CODE = 'ETIMEDOUT';
|
|
32
|
+
class HttpClientResponse {
|
|
33
|
+
constructor(statusCode, headers) {
|
|
34
|
+
this._statusCode = statusCode;
|
|
35
|
+
this._headers = headers;
|
|
36
|
+
}
|
|
37
|
+
getStatusCode() {
|
|
38
|
+
return this._statusCode;
|
|
39
|
+
}
|
|
40
|
+
getHeaders() {
|
|
41
|
+
return this._headers;
|
|
42
|
+
}
|
|
43
|
+
getRawResponse() {
|
|
44
|
+
throw new Error('getRawResponse not implemented.');
|
|
45
|
+
}
|
|
46
|
+
toStream(streamCompleteCallback) {
|
|
47
|
+
throw new Error('toStream not implemented.');
|
|
48
|
+
}
|
|
49
|
+
toJSON() {
|
|
50
|
+
throw new Error('toJSON not implemented.');
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
exports.HttpClientResponse = HttpClientResponse;
|