@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.
Files changed (654) hide show
  1. package/CHANGELOG.md +4529 -0
  2. package/LICENSE +20 -0
  3. package/OPENAPI_VERSION +1 -0
  4. package/README.md +25 -0
  5. package/VERSION +1 -0
  6. package/changes.json +5 -0
  7. package/cjs/Decimal.js +854 -0
  8. package/cjs/Error.js +284 -0
  9. package/cjs/RequestSender.js +469 -0
  10. package/cjs/ResourceNamespace.js +21 -0
  11. package/cjs/StripeContext.js +56 -0
  12. package/cjs/StripeEmitter.js +46 -0
  13. package/cjs/StripeMethod.js +36 -0
  14. package/cjs/StripeResource.js +188 -0
  15. package/cjs/V2Coercion.js +109 -0
  16. package/cjs/Webhooks.js +225 -0
  17. package/cjs/apiVersion.js +6 -0
  18. package/cjs/autoPagination.js +294 -0
  19. package/cjs/crypto/CryptoProvider.js +51 -0
  20. package/cjs/crypto/NodeCryptoProvider.js +30 -0
  21. package/cjs/crypto/SubtleCryptoProvider.js +51 -0
  22. package/cjs/multipart.js +61 -0
  23. package/cjs/net/FetchHttpClient.js +145 -0
  24. package/cjs/net/HttpClient.js +53 -0
  25. package/cjs/net/NodeHttpClient.js +108 -0
  26. package/cjs/package.json +1 -0
  27. package/cjs/platform/NodePlatformFunctions.js +98 -0
  28. package/cjs/platform/PlatformFunctions.js +98 -0
  29. package/cjs/platform/WebPlatformFunctions.js +38 -0
  30. package/cjs/resources/AccountLinks.js +9 -0
  31. package/cjs/resources/AccountSessions.js +9 -0
  32. package/cjs/resources/Accounts.js +101 -0
  33. package/cjs/resources/ApplePayDomains.js +22 -0
  34. package/cjs/resources/ApplicationFees.js +34 -0
  35. package/cjs/resources/Apps/Secrets.js +19 -0
  36. package/cjs/resources/Balance.js +9 -0
  37. package/cjs/resources/BalanceSettings.js +10 -0
  38. package/cjs/resources/BalanceTransactions.js +17 -0
  39. package/cjs/resources/Billing/Alerts.js +27 -0
  40. package/cjs/resources/Billing/CreditBalanceSummary.js +12 -0
  41. package/cjs/resources/Billing/CreditBalanceTransactions.js +17 -0
  42. package/cjs/resources/Billing/CreditGrants.js +30 -0
  43. package/cjs/resources/Billing/MeterEventAdjustments.js +12 -0
  44. package/cjs/resources/Billing/MeterEvents.js +9 -0
  45. package/cjs/resources/Billing/Meters.js +29 -0
  46. package/cjs/resources/BillingPortal/Configurations.js +25 -0
  47. package/cjs/resources/BillingPortal/Sessions.js +12 -0
  48. package/cjs/resources/Charges.js +25 -0
  49. package/cjs/resources/Checkout/Sessions.js +538 -0
  50. package/cjs/resources/Climate/Orders.js +61 -0
  51. package/cjs/resources/Climate/Products.js +33 -0
  52. package/cjs/resources/Climate/Suppliers.js +17 -0
  53. package/cjs/resources/ConfirmationTokens.js +12 -0
  54. package/cjs/resources/CountrySpecs.js +17 -0
  55. package/cjs/resources/Coupons.js +17 -0
  56. package/cjs/resources/CreditNotes.js +253 -0
  57. package/cjs/resources/CustomerSessions.js +9 -0
  58. package/cjs/resources/Customers.js +581 -0
  59. package/cjs/resources/Disputes.js +19 -0
  60. package/cjs/resources/Entitlements/ActiveEntitlements.js +17 -0
  61. package/cjs/resources/Entitlements/Features.js +22 -0
  62. package/cjs/resources/EphemeralKeys.js +18 -0
  63. package/cjs/resources/Events.js +14 -0
  64. package/cjs/resources/ExchangeRates.js +17 -0
  65. package/cjs/resources/FileLinks.js +16 -0
  66. package/cjs/resources/Files.js +24 -0
  67. package/cjs/resources/FinancialConnections/Accounts.js +38 -0
  68. package/cjs/resources/FinancialConnections/Sessions.js +16 -0
  69. package/cjs/resources/FinancialConnections/Transactions.js +17 -0
  70. package/cjs/resources/Forwarding/Requests.js +18 -0
  71. package/cjs/resources/Identity/VerificationReports.js +17 -0
  72. package/cjs/resources/Identity/VerificationSessions.js +33 -0
  73. package/cjs/resources/InvoiceItems.js +131 -0
  74. package/cjs/resources/InvoicePayments.js +17 -0
  75. package/cjs/resources/InvoiceRenderingTemplates.js +25 -0
  76. package/cjs/resources/Invoices.js +776 -0
  77. package/cjs/resources/Issuing/Authorizations.js +847 -0
  78. package/cjs/resources/Issuing/Cardholders.js +22 -0
  79. package/cjs/resources/Issuing/Cards.js +16 -0
  80. package/cjs/resources/Issuing/Disputes.js +26 -0
  81. package/cjs/resources/Issuing/PersonalizationDesigns.js +25 -0
  82. package/cjs/resources/Issuing/PhysicalBundles.js +17 -0
  83. package/cjs/resources/Issuing/Tokens.js +21 -0
  84. package/cjs/resources/Issuing/Transactions.js +275 -0
  85. package/cjs/resources/Mandates.js +9 -0
  86. package/cjs/resources/OAuth.js +44 -0
  87. package/cjs/resources/PaymentAttemptRecords.js +17 -0
  88. package/cjs/resources/PaymentIntents.js +56 -0
  89. package/cjs/resources/PaymentLinks.js +420 -0
  90. package/cjs/resources/PaymentMethodConfigurations.js +25 -0
  91. package/cjs/resources/PaymentMethodDomains.js +29 -0
  92. package/cjs/resources/PaymentMethods.js +30 -0
  93. package/cjs/resources/PaymentRecords.js +37 -0
  94. package/cjs/resources/Payouts.js +24 -0
  95. package/cjs/resources/Plans.js +141 -0
  96. package/cjs/resources/Prices.js +346 -0
  97. package/cjs/resources/Products.js +72 -0
  98. package/cjs/resources/PromotionCodes.js +22 -0
  99. package/cjs/resources/Quotes.js +825 -0
  100. package/cjs/resources/Radar/EarlyFraudWarnings.js +17 -0
  101. package/cjs/resources/Radar/PaymentEvaluations.js +12 -0
  102. package/cjs/resources/Radar/ValueListItems.js +25 -0
  103. package/cjs/resources/Radar/ValueLists.js +26 -0
  104. package/cjs/resources/Refunds.js +20 -0
  105. package/cjs/resources/Reporting/ReportRuns.js +18 -0
  106. package/cjs/resources/Reporting/ReportTypes.js +17 -0
  107. package/cjs/resources/Reviews.js +18 -0
  108. package/cjs/resources/SetupAttempts.js +13 -0
  109. package/cjs/resources/SetupIntents.js +34 -0
  110. package/cjs/resources/ShippingRates.js +22 -0
  111. package/cjs/resources/Sigma/ScheduledQueryRuns.js +17 -0
  112. package/cjs/resources/Sources.js +20 -0
  113. package/cjs/resources/SubscriptionItems.js +378 -0
  114. package/cjs/resources/SubscriptionSchedules.js +107 -0
  115. package/cjs/resources/Subscriptions.js +888 -0
  116. package/cjs/resources/Tax/Associations.js +9 -0
  117. package/cjs/resources/Tax/Calculations.js +18 -0
  118. package/cjs/resources/Tax/Registrations.js +22 -0
  119. package/cjs/resources/Tax/Settings.js +10 -0
  120. package/cjs/resources/Tax/Transactions.js +25 -0
  121. package/cjs/resources/TaxCodes.js +14 -0
  122. package/cjs/resources/TaxIds.js +16 -0
  123. package/cjs/resources/TaxRates.js +16 -0
  124. package/cjs/resources/Terminal/Configurations.js +29 -0
  125. package/cjs/resources/Terminal/ConnectionTokens.js +12 -0
  126. package/cjs/resources/Terminal/Locations.js +26 -0
  127. package/cjs/resources/Terminal/OnboardingLinks.js +12 -0
  128. package/cjs/resources/Terminal/Readers.js +58 -0
  129. package/cjs/resources/TestHelpers/ConfirmationTokens.js +12 -0
  130. package/cjs/resources/TestHelpers/Customers.js +12 -0
  131. package/cjs/resources/TestHelpers/Issuing/Authorizations.js +1293 -0
  132. package/cjs/resources/TestHelpers/Issuing/Cards.js +28 -0
  133. package/cjs/resources/TestHelpers/Issuing/PersonalizationDesigns.js +20 -0
  134. package/cjs/resources/TestHelpers/Issuing/Transactions.js +364 -0
  135. package/cjs/resources/TestHelpers/Refunds.js +12 -0
  136. package/cjs/resources/TestHelpers/Terminal/Readers.js +20 -0
  137. package/cjs/resources/TestHelpers/TestClocks.js +29 -0
  138. package/cjs/resources/TestHelpers/Treasury/InboundTransfers.js +20 -0
  139. package/cjs/resources/TestHelpers/Treasury/OutboundPayments.js +24 -0
  140. package/cjs/resources/TestHelpers/Treasury/OutboundTransfers.js +24 -0
  141. package/cjs/resources/TestHelpers/Treasury/ReceivedCredits.js +12 -0
  142. package/cjs/resources/TestHelpers/Treasury/ReceivedDebits.js +12 -0
  143. package/cjs/resources/Tokens.js +10 -0
  144. package/cjs/resources/Topups.js +17 -0
  145. package/cjs/resources/Transfers.js +33 -0
  146. package/cjs/resources/Treasury/CreditReversals.js +21 -0
  147. package/cjs/resources/Treasury/DebitReversals.js +21 -0
  148. package/cjs/resources/Treasury/FinancialAccounts.js +37 -0
  149. package/cjs/resources/Treasury/InboundTransfers.js +25 -0
  150. package/cjs/resources/Treasury/OutboundPayments.js +25 -0
  151. package/cjs/resources/Treasury/OutboundTransfers.js +25 -0
  152. package/cjs/resources/Treasury/ReceivedCredits.js +17 -0
  153. package/cjs/resources/Treasury/ReceivedDebits.js +17 -0
  154. package/cjs/resources/Treasury/TransactionEntries.js +393 -0
  155. package/cjs/resources/Treasury/Transactions.js +447 -0
  156. package/cjs/resources/V2/Billing/MeterEventAdjustments.js +12 -0
  157. package/cjs/resources/V2/Billing/MeterEventSession.js +12 -0
  158. package/cjs/resources/V2/Billing/MeterEventStream.js +13 -0
  159. package/cjs/resources/V2/Billing/MeterEvents.js +9 -0
  160. package/cjs/resources/V2/Core/AccountLinks.js +9 -0
  161. package/cjs/resources/V2/Core/AccountTokens.js +35 -0
  162. package/cjs/resources/V2/Core/Accounts/PersonTokens.js +25 -0
  163. package/cjs/resources/V2/Core/Accounts/Persons.js +91 -0
  164. package/cjs/resources/V2/Core/Accounts.js +177 -0
  165. package/cjs/resources/V2/Core/EventDestinations.js +41 -0
  166. package/cjs/resources/V2/Core/Events.js +66 -0
  167. package/cjs/resources/WebhookEndpoints.js +26 -0
  168. package/cjs/resources.js +324 -0
  169. package/cjs/stripe.cjs.node.js +13 -0
  170. package/cjs/stripe.cjs.worker.js +13 -0
  171. package/cjs/stripe.core.js +412 -0
  172. package/cjs/utils.js +477 -0
  173. package/esm/Decimal.js +850 -0
  174. package/esm/Error.js +259 -0
  175. package/esm/RequestSender.js +465 -0
  176. package/esm/ResourceNamespace.js +17 -0
  177. package/esm/StripeContext.js +52 -0
  178. package/esm/StripeEmitter.js +42 -0
  179. package/esm/StripeMethod.js +32 -0
  180. package/esm/StripeResource.js +185 -0
  181. package/esm/V2Coercion.js +104 -0
  182. package/esm/Webhooks.js +221 -0
  183. package/esm/apiVersion.js +3 -0
  184. package/esm/autoPagination.js +290 -0
  185. package/esm/crypto/CryptoProvider.js +46 -0
  186. package/esm/crypto/NodeCryptoProvider.js +26 -0
  187. package/esm/crypto/SubtleCryptoProvider.js +47 -0
  188. package/esm/multipart.js +57 -0
  189. package/esm/net/FetchHttpClient.js +140 -0
  190. package/esm/net/HttpClient.js +48 -0
  191. package/esm/net/NodeHttpClient.js +103 -0
  192. package/esm/package.json +1 -0
  193. package/esm/platform/NodePlatformFunctions.js +94 -0
  194. package/esm/platform/PlatformFunctions.js +94 -0
  195. package/esm/platform/WebPlatformFunctions.js +34 -0
  196. package/esm/resources/AccountLinks.js +6 -0
  197. package/esm/resources/AccountSessions.js +6 -0
  198. package/esm/resources/Accounts.js +98 -0
  199. package/esm/resources/ApplePayDomains.js +19 -0
  200. package/esm/resources/ApplicationFees.js +31 -0
  201. package/esm/resources/Apps/Secrets.js +16 -0
  202. package/esm/resources/Balance.js +6 -0
  203. package/esm/resources/BalanceSettings.js +7 -0
  204. package/esm/resources/BalanceTransactions.js +14 -0
  205. package/esm/resources/Billing/Alerts.js +24 -0
  206. package/esm/resources/Billing/CreditBalanceSummary.js +9 -0
  207. package/esm/resources/Billing/CreditBalanceTransactions.js +14 -0
  208. package/esm/resources/Billing/CreditGrants.js +27 -0
  209. package/esm/resources/Billing/MeterEventAdjustments.js +9 -0
  210. package/esm/resources/Billing/MeterEvents.js +6 -0
  211. package/esm/resources/Billing/Meters.js +26 -0
  212. package/esm/resources/BillingPortal/Configurations.js +22 -0
  213. package/esm/resources/BillingPortal/Sessions.js +9 -0
  214. package/esm/resources/Charges.js +22 -0
  215. package/esm/resources/Checkout/Sessions.js +535 -0
  216. package/esm/resources/Climate/Orders.js +58 -0
  217. package/esm/resources/Climate/Products.js +30 -0
  218. package/esm/resources/Climate/Suppliers.js +14 -0
  219. package/esm/resources/ConfirmationTokens.js +9 -0
  220. package/esm/resources/CountrySpecs.js +14 -0
  221. package/esm/resources/Coupons.js +14 -0
  222. package/esm/resources/CreditNotes.js +250 -0
  223. package/esm/resources/CustomerSessions.js +6 -0
  224. package/esm/resources/Customers.js +578 -0
  225. package/esm/resources/Disputes.js +16 -0
  226. package/esm/resources/Entitlements/ActiveEntitlements.js +14 -0
  227. package/esm/resources/Entitlements/Features.js +19 -0
  228. package/esm/resources/EphemeralKeys.js +15 -0
  229. package/esm/resources/Events.js +11 -0
  230. package/esm/resources/ExchangeRates.js +14 -0
  231. package/esm/resources/FileLinks.js +13 -0
  232. package/esm/resources/Files.js +21 -0
  233. package/esm/resources/FinancialConnections/Accounts.js +35 -0
  234. package/esm/resources/FinancialConnections/Sessions.js +13 -0
  235. package/esm/resources/FinancialConnections/Transactions.js +14 -0
  236. package/esm/resources/Forwarding/Requests.js +15 -0
  237. package/esm/resources/Identity/VerificationReports.js +14 -0
  238. package/esm/resources/Identity/VerificationSessions.js +30 -0
  239. package/esm/resources/InvoiceItems.js +128 -0
  240. package/esm/resources/InvoicePayments.js +14 -0
  241. package/esm/resources/InvoiceRenderingTemplates.js +22 -0
  242. package/esm/resources/Invoices.js +773 -0
  243. package/esm/resources/Issuing/Authorizations.js +844 -0
  244. package/esm/resources/Issuing/Cardholders.js +19 -0
  245. package/esm/resources/Issuing/Cards.js +13 -0
  246. package/esm/resources/Issuing/Disputes.js +23 -0
  247. package/esm/resources/Issuing/PersonalizationDesigns.js +22 -0
  248. package/esm/resources/Issuing/PhysicalBundles.js +14 -0
  249. package/esm/resources/Issuing/Tokens.js +18 -0
  250. package/esm/resources/Issuing/Transactions.js +272 -0
  251. package/esm/resources/Mandates.js +6 -0
  252. package/esm/resources/OAuth.js +42 -0
  253. package/esm/resources/PaymentAttemptRecords.js +14 -0
  254. package/esm/resources/PaymentIntents.js +53 -0
  255. package/esm/resources/PaymentLinks.js +417 -0
  256. package/esm/resources/PaymentMethodConfigurations.js +22 -0
  257. package/esm/resources/PaymentMethodDomains.js +26 -0
  258. package/esm/resources/PaymentMethods.js +27 -0
  259. package/esm/resources/PaymentRecords.js +34 -0
  260. package/esm/resources/Payouts.js +21 -0
  261. package/esm/resources/Plans.js +138 -0
  262. package/esm/resources/Prices.js +343 -0
  263. package/esm/resources/Products.js +69 -0
  264. package/esm/resources/PromotionCodes.js +19 -0
  265. package/esm/resources/Quotes.js +822 -0
  266. package/esm/resources/Radar/EarlyFraudWarnings.js +14 -0
  267. package/esm/resources/Radar/PaymentEvaluations.js +9 -0
  268. package/esm/resources/Radar/ValueListItems.js +22 -0
  269. package/esm/resources/Radar/ValueLists.js +23 -0
  270. package/esm/resources/Refunds.js +17 -0
  271. package/esm/resources/Reporting/ReportRuns.js +15 -0
  272. package/esm/resources/Reporting/ReportTypes.js +14 -0
  273. package/esm/resources/Reviews.js +15 -0
  274. package/esm/resources/SetupAttempts.js +10 -0
  275. package/esm/resources/SetupIntents.js +31 -0
  276. package/esm/resources/ShippingRates.js +19 -0
  277. package/esm/resources/Sigma/ScheduledQueryRuns.js +14 -0
  278. package/esm/resources/Sources.js +17 -0
  279. package/esm/resources/SubscriptionItems.js +375 -0
  280. package/esm/resources/SubscriptionSchedules.js +104 -0
  281. package/esm/resources/Subscriptions.js +885 -0
  282. package/esm/resources/Tax/Associations.js +6 -0
  283. package/esm/resources/Tax/Calculations.js +15 -0
  284. package/esm/resources/Tax/Registrations.js +19 -0
  285. package/esm/resources/Tax/Settings.js +7 -0
  286. package/esm/resources/Tax/Transactions.js +22 -0
  287. package/esm/resources/TaxCodes.js +11 -0
  288. package/esm/resources/TaxIds.js +13 -0
  289. package/esm/resources/TaxRates.js +13 -0
  290. package/esm/resources/Terminal/Configurations.js +26 -0
  291. package/esm/resources/Terminal/ConnectionTokens.js +9 -0
  292. package/esm/resources/Terminal/Locations.js +23 -0
  293. package/esm/resources/Terminal/OnboardingLinks.js +9 -0
  294. package/esm/resources/Terminal/Readers.js +55 -0
  295. package/esm/resources/TestHelpers/ConfirmationTokens.js +9 -0
  296. package/esm/resources/TestHelpers/Customers.js +9 -0
  297. package/esm/resources/TestHelpers/Issuing/Authorizations.js +1290 -0
  298. package/esm/resources/TestHelpers/Issuing/Cards.js +25 -0
  299. package/esm/resources/TestHelpers/Issuing/PersonalizationDesigns.js +17 -0
  300. package/esm/resources/TestHelpers/Issuing/Transactions.js +361 -0
  301. package/esm/resources/TestHelpers/Refunds.js +9 -0
  302. package/esm/resources/TestHelpers/Terminal/Readers.js +17 -0
  303. package/esm/resources/TestHelpers/TestClocks.js +26 -0
  304. package/esm/resources/TestHelpers/Treasury/InboundTransfers.js +17 -0
  305. package/esm/resources/TestHelpers/Treasury/OutboundPayments.js +21 -0
  306. package/esm/resources/TestHelpers/Treasury/OutboundTransfers.js +21 -0
  307. package/esm/resources/TestHelpers/Treasury/ReceivedCredits.js +9 -0
  308. package/esm/resources/TestHelpers/Treasury/ReceivedDebits.js +9 -0
  309. package/esm/resources/Tokens.js +7 -0
  310. package/esm/resources/Topups.js +14 -0
  311. package/esm/resources/Transfers.js +30 -0
  312. package/esm/resources/Treasury/CreditReversals.js +18 -0
  313. package/esm/resources/Treasury/DebitReversals.js +18 -0
  314. package/esm/resources/Treasury/FinancialAccounts.js +34 -0
  315. package/esm/resources/Treasury/InboundTransfers.js +22 -0
  316. package/esm/resources/Treasury/OutboundPayments.js +22 -0
  317. package/esm/resources/Treasury/OutboundTransfers.js +22 -0
  318. package/esm/resources/Treasury/ReceivedCredits.js +14 -0
  319. package/esm/resources/Treasury/ReceivedDebits.js +14 -0
  320. package/esm/resources/Treasury/TransactionEntries.js +390 -0
  321. package/esm/resources/Treasury/Transactions.js +444 -0
  322. package/esm/resources/V2/Billing/MeterEventAdjustments.js +9 -0
  323. package/esm/resources/V2/Billing/MeterEventSession.js +9 -0
  324. package/esm/resources/V2/Billing/MeterEventStream.js +10 -0
  325. package/esm/resources/V2/Billing/MeterEvents.js +6 -0
  326. package/esm/resources/V2/Core/AccountLinks.js +6 -0
  327. package/esm/resources/V2/Core/AccountTokens.js +32 -0
  328. package/esm/resources/V2/Core/Accounts/PersonTokens.js +22 -0
  329. package/esm/resources/V2/Core/Accounts/Persons.js +88 -0
  330. package/esm/resources/V2/Core/Accounts.js +174 -0
  331. package/esm/resources/V2/Core/EventDestinations.js +38 -0
  332. package/esm/resources/V2/Core/Events.js +63 -0
  333. package/esm/resources/WebhookEndpoints.js +23 -0
  334. package/esm/resources.js +263 -0
  335. package/esm/stripe.core.js +408 -0
  336. package/esm/stripe.esm.node.js +5 -0
  337. package/esm/stripe.esm.worker.js +5 -0
  338. package/esm/utils.js +450 -0
  339. package/package.json +110 -0
  340. package/types/.eslintrc.js +22 -0
  341. package/types/AccountLinks.d.ts +33 -0
  342. package/types/AccountLinksResource.d.ts +78 -0
  343. package/types/AccountSessions.d.ts +578 -0
  344. package/types/AccountSessionsResource.d.ts +677 -0
  345. package/types/Accounts.d.ts +1736 -0
  346. package/types/AccountsResource.d.ts +5312 -0
  347. package/types/ApplePayDomains.d.ts +57 -0
  348. package/types/ApplePayDomainsResource.d.ts +77 -0
  349. package/types/ApplicationFees.d.ts +108 -0
  350. package/types/ApplicationFeesResource.d.ts +162 -0
  351. package/types/Applications.d.ts +55 -0
  352. package/types/Apps/Secrets.d.ts +80 -0
  353. package/types/Apps/SecretsResource.d.ts +186 -0
  354. package/types/Balance.d.ts +343 -0
  355. package/types/BalanceResource.d.ts +26 -0
  356. package/types/BalanceSettings.d.ts +103 -0
  357. package/types/BalanceSettingsResource.d.ts +124 -0
  358. package/types/BalanceTransactionSources.d.ts +23 -0
  359. package/types/BalanceTransactions.d.ts +176 -0
  360. package/types/BalanceTransactionsResource.d.ts +72 -0
  361. package/types/BankAccounts.d.ts +433 -0
  362. package/types/Billing/AlertTriggereds.d.ts +42 -0
  363. package/types/Billing/Alerts.d.ts +84 -0
  364. package/types/Billing/AlertsResource.d.ts +183 -0
  365. package/types/Billing/CreditBalanceSummary.d.ts +99 -0
  366. package/types/Billing/CreditBalanceSummaryResource.d.ts +83 -0
  367. package/types/Billing/CreditBalanceTransactions.d.ts +178 -0
  368. package/types/Billing/CreditBalanceTransactionsResource.d.ts +62 -0
  369. package/types/Billing/CreditGrants.d.ts +150 -0
  370. package/types/Billing/CreditGrantsResource.d.ts +248 -0
  371. package/types/Billing/MeterEventAdjustments.d.ts +53 -0
  372. package/types/Billing/MeterEventAdjustmentsResource.d.ts +48 -0
  373. package/types/Billing/MeterEventSummaries.d.ts +50 -0
  374. package/types/Billing/MeterEvents.d.ts +49 -0
  375. package/types/Billing/MeterEventsResource.d.ts +46 -0
  376. package/types/Billing/Meters.d.ts +110 -0
  377. package/types/Billing/MetersResource.d.ts +234 -0
  378. package/types/BillingPortal/Configurations.d.ts +319 -0
  379. package/types/BillingPortal/ConfigurationsResource.d.ts +679 -0
  380. package/types/BillingPortal/Sessions.d.ts +293 -0
  381. package/types/BillingPortal/SessionsResource.d.ts +273 -0
  382. package/types/Capabilities.d.ts +422 -0
  383. package/types/Cards.d.ts +225 -0
  384. package/types/CashBalances.d.ts +57 -0
  385. package/types/Charges.d.ts +2646 -0
  386. package/types/ChargesResource.d.ts +426 -0
  387. package/types/Checkout/Sessions.d.ts +2878 -0
  388. package/types/Checkout/SessionsResource.d.ts +4027 -0
  389. package/types/Climate/Orders.d.ts +197 -0
  390. package/types/Climate/OrdersResource.d.ts +159 -0
  391. package/types/Climate/Products.d.ts +81 -0
  392. package/types/Climate/ProductsResource.d.ts +45 -0
  393. package/types/Climate/Suppliers.d.ts +82 -0
  394. package/types/Climate/SuppliersResource.d.ts +45 -0
  395. package/types/ConfirmationTokens.d.ts +1755 -0
  396. package/types/ConfirmationTokensResource.d.ts +27 -0
  397. package/types/ConnectCollectionTransfers.d.ts +40 -0
  398. package/types/CountrySpecs.d.ts +88 -0
  399. package/types/CountrySpecsResource.d.ts +43 -0
  400. package/types/Coupons.d.ts +139 -0
  401. package/types/CouponsResource.d.ts +203 -0
  402. package/types/CreditNoteLineItems.d.ts +195 -0
  403. package/types/CreditNotes.d.ts +408 -0
  404. package/types/CreditNotesResource.d.ts +765 -0
  405. package/types/CustomerBalanceTransactions.d.ts +106 -0
  406. package/types/CustomerCashBalanceTransactions.d.ts +230 -0
  407. package/types/CustomerSessions.d.ts +283 -0
  408. package/types/CustomerSessionsResource.d.ts +263 -0
  409. package/types/CustomerSources.d.ts +9 -0
  410. package/types/Customers.d.ts +326 -0
  411. package/types/CustomersResource.d.ts +1554 -0
  412. package/types/Discounts.d.ts +175 -0
  413. package/types/Disputes.d.ts +519 -0
  414. package/types/DisputesResource.d.ts +384 -0
  415. package/types/Entitlements/ActiveEntitlementSummaries.d.ts +32 -0
  416. package/types/Entitlements/ActiveEntitlements.d.ts +37 -0
  417. package/types/Entitlements/ActiveEntitlementsResource.d.ts +49 -0
  418. package/types/Entitlements/Features.d.ts +48 -0
  419. package/types/Entitlements/FeaturesResource.d.ts +118 -0
  420. package/types/EphemeralKeys.d.ts +40 -0
  421. package/types/EphemeralKeysResource.d.ts +65 -0
  422. package/types/Errors.d.ts +356 -0
  423. package/types/EventTypes.d.ts +4443 -0
  424. package/types/Events.d.ts +373 -0
  425. package/types/EventsResource.d.ts +63 -0
  426. package/types/ExchangeRates.d.ts +54 -0
  427. package/types/ExchangeRatesResource.d.ts +49 -0
  428. package/types/ExternalAccounts.d.ts +9 -0
  429. package/types/FeeRefunds.d.ts +54 -0
  430. package/types/FileLinks.d.ts +57 -0
  431. package/types/FileLinksResource.d.ts +114 -0
  432. package/types/Files.d.ts +96 -0
  433. package/types/FilesResource.d.ts +146 -0
  434. package/types/FinancialConnections/AccountOwners.d.ts +52 -0
  435. package/types/FinancialConnections/AccountOwnerships.d.ts +32 -0
  436. package/types/FinancialConnections/Accounts.d.ts +325 -0
  437. package/types/FinancialConnections/AccountsResource.d.ts +184 -0
  438. package/types/FinancialConnections/Sessions.d.ts +113 -0
  439. package/types/FinancialConnections/SessionsResource.d.ts +128 -0
  440. package/types/FinancialConnections/Transactions.d.ts +85 -0
  441. package/types/FinancialConnections/TransactionsResource.d.ts +68 -0
  442. package/types/Forwarding/Requests.d.ts +165 -0
  443. package/types/Forwarding/RequestsResource.d.ts +127 -0
  444. package/types/FundingInstructions.d.ts +297 -0
  445. package/types/Identity/VerificationReports.d.ts +487 -0
  446. package/types/Identity/VerificationReportsResource.d.ts +71 -0
  447. package/types/Identity/VerificationSessions.d.ts +352 -0
  448. package/types/Identity/VerificationSessionsResource.d.ts +366 -0
  449. package/types/InvoiceItems.d.ts +240 -0
  450. package/types/InvoiceItemsResource.d.ts +424 -0
  451. package/types/InvoiceLineItems.d.ts +366 -0
  452. package/types/InvoicePayments.d.ts +111 -0
  453. package/types/InvoicePaymentsResource.d.ts +88 -0
  454. package/types/InvoiceRenderingTemplates.d.ts +55 -0
  455. package/types/InvoiceRenderingTemplatesResource.d.ts +93 -0
  456. package/types/Invoices.d.ts +1650 -0
  457. package/types/InvoicesResource.d.ts +4196 -0
  458. package/types/Issuing/Authorizations.d.ts +689 -0
  459. package/types/Issuing/AuthorizationsResource.d.ts +151 -0
  460. package/types/Issuing/Cardholders.d.ts +1184 -0
  461. package/types/Issuing/CardholdersResource.d.ts +2411 -0
  462. package/types/Issuing/Cards.d.ts +1312 -0
  463. package/types/Issuing/CardsResource.d.ts +2371 -0
  464. package/types/Issuing/Disputes.d.ts +383 -0
  465. package/types/Issuing/DisputesResource.d.ts +776 -0
  466. package/types/Issuing/PersonalizationDesigns.d.ts +142 -0
  467. package/types/Issuing/PersonalizationDesignsResource.d.ts +253 -0
  468. package/types/Issuing/PhysicalBundles.d.ts +75 -0
  469. package/types/Issuing/PhysicalBundlesResource.d.ts +63 -0
  470. package/types/Issuing/Tokens.d.ts +273 -0
  471. package/types/Issuing/TokensResource.d.ts +88 -0
  472. package/types/Issuing/Transactions.d.ts +479 -0
  473. package/types/Issuing/TransactionsResource.d.ts +92 -0
  474. package/types/LineItems.d.ts +145 -0
  475. package/types/LoginLinks.d.ts +26 -0
  476. package/types/Mandates.d.ts +373 -0
  477. package/types/MandatesResource.d.ts +27 -0
  478. package/types/OAuth.d.ts +355 -0
  479. package/types/PaymentAttemptRecords.d.ts +2438 -0
  480. package/types/PaymentAttemptRecordsResource.d.ts +57 -0
  481. package/types/PaymentIntentAmountDetailsLineItems.d.ts +126 -0
  482. package/types/PaymentIntents.d.ts +3162 -0
  483. package/types/PaymentIntentsResource.d.ts +11473 -0
  484. package/types/PaymentLinks.d.ts +1051 -0
  485. package/types/PaymentLinksResource.d.ts +2334 -0
  486. package/types/PaymentMethodConfigurations.d.ts +2045 -0
  487. package/types/PaymentMethodConfigurationsResource.d.ts +2958 -0
  488. package/types/PaymentMethodDomains.d.ts +213 -0
  489. package/types/PaymentMethodDomainsResource.d.ts +126 -0
  490. package/types/PaymentMethods.d.ts +1645 -0
  491. package/types/PaymentMethodsResource.d.ts +1223 -0
  492. package/types/PaymentRecords.d.ts +2438 -0
  493. package/types/PaymentRecordsResource.d.ts +657 -0
  494. package/types/Payouts.d.ts +177 -0
  495. package/types/PayoutsResource.d.ts +201 -0
  496. package/types/Persons.d.ts +824 -0
  497. package/types/Plans.d.ts +195 -0
  498. package/types/PlansResource.d.ts +303 -0
  499. package/types/Prices.d.ts +325 -0
  500. package/types/PricesResource.d.ts +607 -0
  501. package/types/ProductFeatures.d.ts +57 -0
  502. package/types/Products.d.ts +170 -0
  503. package/types/ProductsResource.d.ts +616 -0
  504. package/types/PromotionCodes.d.ts +125 -0
  505. package/types/PromotionCodesResource.d.ts +233 -0
  506. package/types/Quotes.d.ts +690 -0
  507. package/types/QuotesResource.d.ts +898 -0
  508. package/types/Radar/EarlyFraudWarnings.d.ts +55 -0
  509. package/types/Radar/EarlyFraudWarningsResource.d.ts +64 -0
  510. package/types/Radar/PaymentEvaluations.d.ts +580 -0
  511. package/types/Radar/PaymentEvaluationsResource.d.ts +208 -0
  512. package/types/Radar/ValueListItems.d.ts +74 -0
  513. package/types/Radar/ValueListItemsResource.d.ts +99 -0
  514. package/types/Radar/ValueLists.d.ts +104 -0
  515. package/types/Radar/ValueListsResource.d.ts +156 -0
  516. package/types/Refunds.d.ts +487 -0
  517. package/types/RefundsResource.d.ts +187 -0
  518. package/types/Reporting/ReportRuns.d.ts +115 -0
  519. package/types/Reporting/ReportRunsResource.d.ts +763 -0
  520. package/types/Reporting/ReportTypes.d.ts +64 -0
  521. package/types/Reporting/ReportTypesResource.d.ts +47 -0
  522. package/types/Reserve/Holds.d.ts +104 -0
  523. package/types/Reserve/Plans.d.ts +103 -0
  524. package/types/Reserve/Releases.d.ts +105 -0
  525. package/types/ReserveTransactions.d.ts +32 -0
  526. package/types/Reviews.d.ts +146 -0
  527. package/types/ReviewsResource.d.ts +68 -0
  528. package/types/SetupAttempts.d.ts +878 -0
  529. package/types/SetupAttemptsResource.d.ts +35 -0
  530. package/types/SetupIntents.d.ts +1105 -0
  531. package/types/SetupIntentsResource.d.ts +5251 -0
  532. package/types/ShippingRates.d.ts +155 -0
  533. package/types/ShippingRatesResource.d.ts +262 -0
  534. package/types/Sigma/ScheduledQueryRuns.d.ts +76 -0
  535. package/types/Sigma/ScheduledQueryRunsResource.d.ts +47 -0
  536. package/types/SourceMandateNotifications.d.ts +105 -0
  537. package/types/SourceTransactions.d.ts +203 -0
  538. package/types/Sources.d.ts +746 -0
  539. package/types/SourcesResource.d.ts +611 -0
  540. package/types/SubscriptionItems.d.ts +122 -0
  541. package/types/SubscriptionItemsResource.d.ts +441 -0
  542. package/types/SubscriptionSchedules.d.ts +687 -0
  543. package/types/SubscriptionSchedulesResource.d.ts +1565 -0
  544. package/types/Subscriptions.d.ts +852 -0
  545. package/types/SubscriptionsResource.d.ts +2326 -0
  546. package/types/Tax/Associations.d.ts +82 -0
  547. package/types/Tax/AssociationsResource.d.ts +29 -0
  548. package/types/Tax/CalculationLineItems.d.ts +187 -0
  549. package/types/Tax/Calculations.d.ts +511 -0
  550. package/types/Tax/CalculationsResource.d.ts +406 -0
  551. package/types/Tax/Registrations.d.ts +1710 -0
  552. package/types/Tax/RegistrationsResource.d.ts +2583 -0
  553. package/types/Tax/Settings.d.ts +86 -0
  554. package/types/Tax/SettingsResource.d.ts +77 -0
  555. package/types/Tax/TransactionLineItems.d.ts +90 -0
  556. package/types/Tax/Transactions.d.ts +418 -0
  557. package/types/Tax/TransactionsResource.d.ts +182 -0
  558. package/types/TaxCodes.d.ts +30 -0
  559. package/types/TaxCodesResource.d.ts +43 -0
  560. package/types/TaxDeductedAtSources.d.ts +35 -0
  561. package/types/TaxIds.d.ts +262 -0
  562. package/types/TaxIdsResource.d.ts +263 -0
  563. package/types/TaxRates.d.ts +144 -0
  564. package/types/TaxRatesResource.d.ts +215 -0
  565. package/types/Terminal/Configurations.d.ts +630 -0
  566. package/types/Terminal/ConfigurationsResource.d.ts +1469 -0
  567. package/types/Terminal/ConnectionTokens.d.ts +29 -0
  568. package/types/Terminal/ConnectionTokensResource.d.ts +32 -0
  569. package/types/Terminal/Locations.d.ts +166 -0
  570. package/types/Terminal/LocationsResource.d.ts +233 -0
  571. package/types/Terminal/OnboardingLinks.d.ts +57 -0
  572. package/types/Terminal/OnboardingLinksResource.d.ts +62 -0
  573. package/types/Terminal/Readers.d.ts +676 -0
  574. package/types/Terminal/ReadersResource.d.ts +665 -0
  575. package/types/TestHelpers/ConfirmationTokensResource.d.ts +936 -0
  576. package/types/TestHelpers/CustomersResource.d.ts +40 -0
  577. package/types/TestHelpers/Issuing/AuthorizationsResource.d.ts +1404 -0
  578. package/types/TestHelpers/Issuing/CardsResource.d.ts +121 -0
  579. package/types/TestHelpers/Issuing/PersonalizationDesignsResource.d.ts +113 -0
  580. package/types/TestHelpers/Issuing/TransactionsResource.d.ts +1354 -0
  581. package/types/TestHelpers/RefundsResource.d.ts +29 -0
  582. package/types/TestHelpers/Terminal/ReadersResource.d.ts +151 -0
  583. package/types/TestHelpers/TestClocks.d.ts +98 -0
  584. package/types/TestHelpers/TestClocksResource.d.ts +108 -0
  585. package/types/TestHelpers/Treasury/InboundTransfersResource.d.ts +108 -0
  586. package/types/TestHelpers/Treasury/OutboundPaymentsResource.d.ts +175 -0
  587. package/types/TestHelpers/Treasury/OutboundTransfersResource.d.ts +175 -0
  588. package/types/TestHelpers/Treasury/ReceivedCreditsResource.d.ts +93 -0
  589. package/types/TestHelpers/Treasury/ReceivedDebitsResource.d.ts +91 -0
  590. package/types/Tokens.d.ts +84 -0
  591. package/types/TokensResource.d.ts +1086 -0
  592. package/types/Topups.d.ts +103 -0
  593. package/types/TopupsResource.d.ts +158 -0
  594. package/types/TransferReversals.d.ts +72 -0
  595. package/types/Transfers.d.ts +104 -0
  596. package/types/TransfersResource.d.ts +260 -0
  597. package/types/Treasury/CreditReversals.d.ts +92 -0
  598. package/types/Treasury/CreditReversalsResource.d.ts +88 -0
  599. package/types/Treasury/DebitReversals.d.ts +104 -0
  600. package/types/Treasury/DebitReversalsResource.d.ts +95 -0
  601. package/types/Treasury/FinancialAccountFeatures.d.ts +623 -0
  602. package/types/Treasury/FinancialAccounts.d.ts +250 -0
  603. package/types/Treasury/FinancialAccountsResource.d.ts +733 -0
  604. package/types/Treasury/InboundTransfers.d.ts +235 -0
  605. package/types/Treasury/InboundTransfersResource.d.ts +128 -0
  606. package/types/Treasury/OutboundPayments.d.ts +324 -0
  607. package/types/Treasury/OutboundPaymentsResource.d.ts +285 -0
  608. package/types/Treasury/OutboundTransfers.d.ts +299 -0
  609. package/types/Treasury/OutboundTransfersResource.d.ts +179 -0
  610. package/types/Treasury/ReceivedCredits.d.ts +279 -0
  611. package/types/Treasury/ReceivedCreditsResource.d.ts +79 -0
  612. package/types/Treasury/ReceivedDebits.d.ts +227 -0
  613. package/types/Treasury/ReceivedDebitsResource.d.ts +58 -0
  614. package/types/Treasury/TransactionEntries.d.ts +203 -0
  615. package/types/Treasury/TransactionEntriesResource.d.ts +70 -0
  616. package/types/Treasury/Transactions.d.ts +202 -0
  617. package/types/Treasury/TransactionsResource.d.ts +82 -0
  618. package/types/UpcomingInvoices.d.ts +5 -0
  619. package/types/V2/Billing/MeterEventAdjustments.d.ts +65 -0
  620. package/types/V2/Billing/MeterEventAdjustmentsResource.d.ts +47 -0
  621. package/types/V2/Billing/MeterEventSessionResource.d.ts +26 -0
  622. package/types/V2/Billing/MeterEventSessions.d.ts +45 -0
  623. package/types/V2/Billing/MeterEventStreamResource.d.ts +62 -0
  624. package/types/V2/Billing/MeterEvents.d.ts +55 -0
  625. package/types/V2/Billing/MeterEventsResource.d.ts +52 -0
  626. package/types/V2/Core/AccountLinks.d.ts +160 -0
  627. package/types/V2/Core/AccountLinksResource.d.ts +145 -0
  628. package/types/V2/Core/AccountPersonTokens.d.ts +44 -0
  629. package/types/V2/Core/AccountPersons.d.ts +661 -0
  630. package/types/V2/Core/AccountTokens.d.ts +44 -0
  631. package/types/V2/Core/AccountTokensResource.d.ts +1149 -0
  632. package/types/V2/Core/Accounts/PersonTokensResource.d.ts +556 -0
  633. package/types/V2/Core/Accounts/PersonsResource.d.ts +1260 -0
  634. package/types/V2/Core/Accounts.d.ts +5422 -0
  635. package/types/V2/Core/AccountsResource.d.ts +5042 -0
  636. package/types/V2/Core/EventDestinations.d.ts +168 -0
  637. package/types/V2/Core/EventDestinationsResource.d.ts +278 -0
  638. package/types/V2/Core/EventTypes.d.ts +798 -0
  639. package/types/V2/Core/Events.d.ts +86 -0
  640. package/types/V2/Core/EventsResource.d.ts +63 -0
  641. package/types/V2/DeletedObject.d.ts +22 -0
  642. package/types/V2/EventMisc.d.ts +80 -0
  643. package/types/WebhookEndpoints.d.ts +101 -0
  644. package/types/WebhookEndpointsResource.d.ts +798 -0
  645. package/types/Webhooks.d.ts +164 -0
  646. package/types/apiVersion.d.ts +4 -0
  647. package/types/crypto/crypto.d.ts +59 -0
  648. package/types/index.d.ts +596 -0
  649. package/types/lib.d.ts +420 -0
  650. package/types/net/net.d.ts +99 -0
  651. package/types/shared.d.ts +178 -0
  652. package/types/test/.eslintrc.js +6 -0
  653. package/types/test/tsconfig.json +67 -0
  654. package/types/test/typescriptTest.ts +357 -0
@@ -0,0 +1,465 @@
1
+ import { StripeAPIError, StripeConnectionError, StripeError, generateOAuthError, generateV1Error, generateV2Error, } from './Error.js';
2
+ import { HttpClient } from './net/HttpClient.js';
3
+ import { emitWarning, jsonStringifyRequestData, normalizeHeaders, queryStringifyRequestData, removeNullish, getAPIMode, getOptionsFromArgs, getDataFromArgs, parseHttpHeaderAsString, parseHttpHeaderAsNumber, } from './utils.js';
4
+ const MAX_RETRY_AFTER_WAIT = 60;
5
+ export class RequestSender {
6
+ constructor(stripe, maxBufferedRequestMetric) {
7
+ this._stripe = stripe;
8
+ this._maxBufferedRequestMetric = maxBufferedRequestMetric;
9
+ }
10
+ _normalizeStripeContext(optsContext, clientContext) {
11
+ if (optsContext) {
12
+ return optsContext.toString() || null; // return null for empty strings
13
+ }
14
+ return clientContext?.toString() || null; // return null for empty strings
15
+ }
16
+ _addHeadersDirectlyToObject(obj, headers) {
17
+ // For convenience, make some headers easily accessible on
18
+ // lastResponse.
19
+ // NOTE: Stripe responds with lowercase header names/keys.
20
+ obj.requestId = headers['request-id'];
21
+ obj.stripeAccount = obj.stripeAccount || headers['stripe-account'];
22
+ obj.apiVersion = obj.apiVersion || headers['stripe-version'];
23
+ obj.idempotencyKey = obj.idempotencyKey || headers['idempotency-key'];
24
+ }
25
+ _makeResponseEvent(requestEvent, statusCode, headers) {
26
+ const requestEndTime = Date.now();
27
+ const requestDurationMs = requestEndTime - requestEvent.request_start_time;
28
+ return removeNullish({
29
+ api_version: headers['stripe-version'],
30
+ account: headers['stripe-account'],
31
+ idempotency_key: headers['idempotency-key'],
32
+ method: requestEvent.method,
33
+ path: requestEvent.path,
34
+ status: statusCode,
35
+ request_id: this._getRequestId(headers),
36
+ elapsed: requestDurationMs,
37
+ request_start_time: requestEvent.request_start_time,
38
+ request_end_time: requestEndTime,
39
+ });
40
+ }
41
+ _getRequestId(headers) {
42
+ return headers['request-id'];
43
+ }
44
+ /**
45
+ * Used by methods with spec.streaming === true. For these methods, we do not
46
+ * buffer successful responses into memory or do parse them into stripe
47
+ * objects, we delegate that all of that to the user and pass back the raw
48
+ * http.Response object to the callback.
49
+ *
50
+ * (Unsuccessful responses shouldn't make it here, they should
51
+ * still be buffered/parsed and handled by _jsonResponseHandler -- see
52
+ * makeRequest)
53
+ */
54
+ _streamingResponseHandler(requestEvent, usage, callback) {
55
+ return (res) => {
56
+ const headers = res.getHeaders();
57
+ const streamCompleteCallback = () => {
58
+ const responseEvent = this._makeResponseEvent(requestEvent, res.getStatusCode(), headers);
59
+ this._stripe._emitter.emit('response', responseEvent);
60
+ this._recordRequestMetrics(this._getRequestId(headers), responseEvent.elapsed, usage);
61
+ };
62
+ const stream = res.toStream(streamCompleteCallback);
63
+ // This is here for backwards compatibility, as the stream is a raw
64
+ // HTTP response in Node and the legacy behavior was to mutate this
65
+ // response.
66
+ this._addHeadersDirectlyToObject(stream, headers);
67
+ return callback(null, stream);
68
+ };
69
+ }
70
+ /**
71
+ * Default handler for Stripe responses. Buffers the response into memory,
72
+ * parses the JSON and returns it (i.e. passes it to the callback) if there
73
+ * is no "error" field. Otherwise constructs/passes an appropriate Error.
74
+ */
75
+ _jsonResponseHandler(requestEvent, apiMode, usage, callback) {
76
+ return (res) => {
77
+ const headers = res.getHeaders();
78
+ const requestId = this._getRequestId(headers);
79
+ const statusCode = res.getStatusCode();
80
+ const responseEvent = this._makeResponseEvent(requestEvent, statusCode, headers);
81
+ this._stripe._emitter.emit('response', responseEvent);
82
+ res
83
+ .toJSON()
84
+ .then((jsonResponse) => {
85
+ if (jsonResponse.error) {
86
+ const isOAuth = typeof jsonResponse.error === 'string';
87
+ if (isOAuth) {
88
+ jsonResponse.error = {
89
+ type: jsonResponse.error,
90
+ message: jsonResponse.error_description,
91
+ };
92
+ }
93
+ jsonResponse.error.headers = headers;
94
+ jsonResponse.error.statusCode = statusCode;
95
+ jsonResponse.error.requestId = requestId;
96
+ let err;
97
+ if (isOAuth) {
98
+ err = generateOAuthError(jsonResponse.error);
99
+ }
100
+ else if (apiMode === 'v2') {
101
+ err = generateV2Error(jsonResponse.error);
102
+ }
103
+ else {
104
+ err = generateV1Error(jsonResponse.error);
105
+ }
106
+ throw err;
107
+ }
108
+ return jsonResponse;
109
+ }, (e) => {
110
+ throw new StripeAPIError({
111
+ message: 'Invalid JSON received from the Stripe API',
112
+ exception: e,
113
+ requestId: headers['request-id'],
114
+ });
115
+ })
116
+ .then((jsonResponse) => {
117
+ this._recordRequestMetrics(requestId, responseEvent.elapsed, usage);
118
+ // Expose raw response object.
119
+ const rawResponse = res.getRawResponse();
120
+ this._addHeadersDirectlyToObject(rawResponse, headers);
121
+ Object.defineProperty(jsonResponse, 'lastResponse', {
122
+ enumerable: false,
123
+ writable: false,
124
+ value: rawResponse,
125
+ });
126
+ callback(null, jsonResponse);
127
+ }, (e) => callback(e, null));
128
+ };
129
+ }
130
+ static _generateConnectionErrorMessage(requestRetries) {
131
+ return `An error occurred with our connection to Stripe.${requestRetries > 0 ? ` Request was retried ${requestRetries} times.` : ''}`;
132
+ }
133
+ // For more on when and how to retry API requests, see https://stripe.com/docs/error-handling#safely-retrying-requests-with-idempotency
134
+ static _shouldRetry(res, numRetries, maxRetries, error) {
135
+ if (error &&
136
+ numRetries === 0 &&
137
+ HttpClient.CONNECTION_CLOSED_ERROR_CODES.includes(error.code)) {
138
+ return true;
139
+ }
140
+ // Do not retry if we are out of retries.
141
+ if (numRetries >= maxRetries) {
142
+ return false;
143
+ }
144
+ // Retry on connection error.
145
+ if (!res) {
146
+ return true;
147
+ }
148
+ // The API may ask us not to retry (e.g., if doing so would be a no-op)
149
+ // or advise us to retry (e.g., in cases of lock timeouts); we defer to that.
150
+ if (res.getHeaders()['stripe-should-retry'] === 'false') {
151
+ return false;
152
+ }
153
+ if (res.getHeaders()['stripe-should-retry'] === 'true') {
154
+ return true;
155
+ }
156
+ // Retry on conflict errors.
157
+ if (res.getStatusCode() === 409) {
158
+ return true;
159
+ }
160
+ // Retry on 500, 503, and other internal errors.
161
+ //
162
+ // Note that we expect the stripe-should-retry header to be false
163
+ // in most cases when a 500 is returned, since our idempotency framework
164
+ // would typically replay it anyway.
165
+ if (res.getStatusCode() >= 500) {
166
+ return true;
167
+ }
168
+ return false;
169
+ }
170
+ _getSleepTimeInMS(numRetries, retryAfter = null) {
171
+ const initialNetworkRetryDelay = this._stripe.getInitialNetworkRetryDelay();
172
+ const maxNetworkRetryDelay = this._stripe.getMaxNetworkRetryDelay();
173
+ // Apply exponential backoff with initialNetworkRetryDelay on the
174
+ // number of numRetries so far as inputs. Do not allow the number to exceed
175
+ // maxNetworkRetryDelay.
176
+ let sleepSeconds = Math.min(initialNetworkRetryDelay * Math.pow(2, numRetries - 1), maxNetworkRetryDelay);
177
+ // Apply some jitter by randomizing the value in the range of
178
+ // (sleepSeconds / 2) to (sleepSeconds).
179
+ sleepSeconds *= 0.5 * (1 + Math.random());
180
+ // But never sleep less than the base sleep seconds.
181
+ sleepSeconds = Math.max(initialNetworkRetryDelay, sleepSeconds);
182
+ // And never sleep less than the time the API asks us to wait, assuming it's a reasonable ask.
183
+ if (Number.isInteger(retryAfter) && retryAfter <= MAX_RETRY_AFTER_WAIT) {
184
+ sleepSeconds = Math.max(sleepSeconds, retryAfter);
185
+ }
186
+ return sleepSeconds * 1000;
187
+ }
188
+ // Max retries can be set on a per request basis. Favor those over the global setting
189
+ _getMaxNetworkRetries(settings = {}) {
190
+ return settings.maxNetworkRetries !== undefined &&
191
+ Number.isInteger(settings.maxNetworkRetries)
192
+ ? settings.maxNetworkRetries
193
+ : this._stripe.getMaxNetworkRetries();
194
+ }
195
+ _defaultIdempotencyKey(method, settings, apiMode) {
196
+ // If this is a POST and we allow multiple retries, ensure an idempotency key.
197
+ const maxRetries = this._getMaxNetworkRetries(settings);
198
+ const genKey = () => `stripe-node-retry-${this._stripe._platformFunctions.uuid4()}`;
199
+ // more verbose than it needs to be, but gives clear separation between V1 and V2 behavior
200
+ if (apiMode === 'v2') {
201
+ if (method === 'POST' || method === 'DELETE') {
202
+ return genKey();
203
+ }
204
+ }
205
+ else if (apiMode === 'v1') {
206
+ if (method === 'POST' && maxRetries > 0) {
207
+ return genKey();
208
+ }
209
+ }
210
+ return null;
211
+ }
212
+ _makeHeaders({ contentType, contentLength, apiVersion, clientUserAgent, method, userSuppliedHeaders, userSuppliedSettings, stripeAccount, stripeContext, apiMode, }) {
213
+ const defaultHeaders = {
214
+ Accept: 'application/json',
215
+ 'Content-Type': contentType,
216
+ 'User-Agent': this._getUserAgentString(apiMode),
217
+ 'X-Stripe-Client-User-Agent': clientUserAgent,
218
+ 'X-Stripe-Client-Telemetry': this._getTelemetryHeader(),
219
+ 'Stripe-Version': apiVersion,
220
+ 'Stripe-Account': stripeAccount,
221
+ 'Stripe-Context': stripeContext,
222
+ 'Idempotency-Key': this._defaultIdempotencyKey(method, userSuppliedSettings, apiMode),
223
+ };
224
+ // As per https://datatracker.ietf.org/doc/html/rfc7230#section-3.3.2:
225
+ // A user agent SHOULD send a Content-Length in a request message when
226
+ // no Transfer-Encoding is sent and the request method defines a meaning
227
+ // for an enclosed payload body. For example, a Content-Length header
228
+ // field is normally sent in a POST request even when the value is 0
229
+ // (indicating an empty payload body). A user agent SHOULD NOT send a
230
+ // Content-Length header field when the request message does not contain
231
+ // a payload body and the method semantics do not anticipate such a
232
+ // body.
233
+ //
234
+ // These method types are expected to have bodies and so we should always
235
+ // include a Content-Length.
236
+ const methodHasPayload = method == 'POST' || method == 'PUT' || method == 'PATCH';
237
+ // If a content length was specified, we always include it regardless of
238
+ // whether the method semantics anticipate such a body. This keeps us
239
+ // consistent with historical behavior. We do however want to warn on this
240
+ // and fix these cases as they are semantically incorrect.
241
+ if (methodHasPayload || contentLength) {
242
+ if (!methodHasPayload) {
243
+ emitWarning(`${method} method had non-zero contentLength but no payload is expected for this verb`);
244
+ }
245
+ defaultHeaders['Content-Length'] = contentLength;
246
+ }
247
+ return Object.assign(removeNullish(defaultHeaders),
248
+ // If the user supplied, say 'idempotency-key', override instead of appending by ensuring caps are the same.
249
+ normalizeHeaders(userSuppliedHeaders));
250
+ }
251
+ _getUserAgentString(apiMode) {
252
+ const packageVersion = this._stripe.getConstant('PACKAGE_VERSION');
253
+ const appInfo = this._stripe._appInfo
254
+ ? this._stripe.getAppInfoAsString()
255
+ : '';
256
+ const aiAgent = this._stripe.getConstant('AI_AGENT');
257
+ let uaString = `Stripe/${apiMode} NodeBindings/${packageVersion}`;
258
+ if (appInfo) {
259
+ uaString += ` ${appInfo}`;
260
+ }
261
+ if (aiAgent) {
262
+ uaString += ` AIAgent/${aiAgent}`;
263
+ }
264
+ return uaString;
265
+ }
266
+ _getTelemetryHeader() {
267
+ if (this._stripe.getTelemetryEnabled() &&
268
+ this._stripe._prevRequestMetrics.length > 0) {
269
+ const metrics = this._stripe._prevRequestMetrics.shift();
270
+ return JSON.stringify({
271
+ last_request_metrics: metrics,
272
+ });
273
+ }
274
+ }
275
+ _recordRequestMetrics(requestId, requestDurationMs, usage) {
276
+ if (this._stripe.getTelemetryEnabled() && requestId) {
277
+ if (this._stripe._prevRequestMetrics.length > this._maxBufferedRequestMetric) {
278
+ emitWarning('Request metrics buffer is full, dropping telemetry message.');
279
+ }
280
+ else {
281
+ const m = {
282
+ request_id: requestId,
283
+ request_duration_ms: requestDurationMs,
284
+ };
285
+ if (usage && usage.length > 0) {
286
+ m.usage = usage;
287
+ }
288
+ this._stripe._prevRequestMetrics.push(m);
289
+ }
290
+ }
291
+ }
292
+ _rawRequest(method, path, params, options, usage) {
293
+ const requestPromise = new Promise((resolve, reject) => {
294
+ let opts;
295
+ try {
296
+ const requestMethod = method.toUpperCase();
297
+ if (requestMethod !== 'POST' &&
298
+ params &&
299
+ Object.keys(params).length !== 0) {
300
+ throw new Error('rawRequest only supports params on POST requests. Please pass null and add your parameters to path.');
301
+ }
302
+ const args = [].slice.call([params, options]);
303
+ // Pull request data and options (headers, auth) from args.
304
+ const dataFromArgs = getDataFromArgs(args);
305
+ const data = requestMethod === 'POST' ? Object.assign({}, dataFromArgs) : null;
306
+ const calculatedOptions = getOptionsFromArgs(args);
307
+ const headers = calculatedOptions.headers;
308
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
309
+ const authenticator = calculatedOptions.authenticator;
310
+ opts = {
311
+ requestMethod,
312
+ requestPath: path,
313
+ bodyData: data,
314
+ queryData: {},
315
+ authenticator,
316
+ headers,
317
+ host: calculatedOptions.host,
318
+ streaming: !!calculatedOptions.streaming,
319
+ settings: {},
320
+ // We use this for thin event internals, so we should record the more specific `usage`, when available
321
+ usage: usage || ['raw_request'],
322
+ };
323
+ }
324
+ catch (err) {
325
+ reject(err);
326
+ return;
327
+ }
328
+ function requestCallback(err, response) {
329
+ if (err) {
330
+ reject(err);
331
+ }
332
+ else {
333
+ resolve(response);
334
+ }
335
+ }
336
+ const { headers, settings } = opts;
337
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
338
+ const authenticator = opts.authenticator;
339
+ this._request(opts.requestMethod, opts.host, path, opts.bodyData, authenticator, { headers, settings, streaming: opts.streaming }, opts.usage, requestCallback);
340
+ });
341
+ return requestPromise;
342
+ }
343
+ _getContentLength(data) {
344
+ // if we calculate this wrong, the server treats it as invalid json
345
+ // or if content length is too big, the request never finishes and it
346
+ // times out.
347
+ return typeof data === 'string'
348
+ ? new TextEncoder().encode(data).length
349
+ : data.length;
350
+ }
351
+ _request(method, host, path, data, authenticator, options, usage = [], callback, requestDataProcessor = null) {
352
+ let requestData;
353
+ authenticator = authenticator ?? this._stripe._authenticator ?? null;
354
+ const apiMode = getAPIMode(path);
355
+ const retryRequest = (requestFn, apiVersion, headers, requestRetries, retryAfter) => {
356
+ return setTimeout(requestFn, this._getSleepTimeInMS(requestRetries, retryAfter), apiVersion, headers, requestRetries + 1);
357
+ };
358
+ const makeRequest = (apiVersion, headers, numRetries) => {
359
+ // timeout can be set on a per-request basis. Favor that over the global setting
360
+ const timeout = options.settings &&
361
+ options.settings.timeout &&
362
+ Number.isInteger(options.settings.timeout) &&
363
+ options.settings.timeout >= 0
364
+ ? options.settings.timeout
365
+ : this._stripe.getApiField('timeout');
366
+ const request = {
367
+ host: host || this._stripe.getApiField('host'),
368
+ port: this._stripe.getApiField('port'),
369
+ path: path,
370
+ method: method,
371
+ headers: Object.assign({}, headers),
372
+ body: requestData,
373
+ protocol: this._stripe.getApiField('protocol'),
374
+ };
375
+ authenticator(request)
376
+ .then(() => {
377
+ const req = this._stripe
378
+ .getApiField('httpClient')
379
+ .makeRequest(request.host, request.port, request.path, request.method, request.headers, request.body, request.protocol, timeout);
380
+ const requestStartTime = Date.now();
381
+ const requestEvent = removeNullish({
382
+ api_version: apiVersion,
383
+ account: parseHttpHeaderAsString(headers['Stripe-Account']),
384
+ idempotency_key: parseHttpHeaderAsString(headers['Idempotency-Key']),
385
+ method,
386
+ path,
387
+ request_start_time: requestStartTime,
388
+ });
389
+ const requestRetries = numRetries || 0;
390
+ const maxRetries = this._getMaxNetworkRetries(options.settings || {});
391
+ this._stripe._emitter.emit('request', requestEvent);
392
+ req
393
+ .then((res) => {
394
+ if (RequestSender._shouldRetry(res, requestRetries, maxRetries)) {
395
+ return retryRequest(makeRequest, apiVersion, headers, requestRetries, parseHttpHeaderAsNumber(res.getHeaders()['retry-after']));
396
+ }
397
+ else if (options.streaming && res.getStatusCode() < 400) {
398
+ return this._streamingResponseHandler(requestEvent, usage, callback)(res);
399
+ }
400
+ else {
401
+ return this._jsonResponseHandler(requestEvent, apiMode, usage, callback)(res);
402
+ }
403
+ })
404
+ .catch((error) => {
405
+ if (RequestSender._shouldRetry(null, requestRetries, maxRetries, error)) {
406
+ return retryRequest(makeRequest, apiVersion, headers, requestRetries, null);
407
+ }
408
+ else {
409
+ const isTimeoutError = error.code && error.code === HttpClient.TIMEOUT_ERROR_CODE;
410
+ return callback(new StripeConnectionError({
411
+ message: isTimeoutError
412
+ ? `Request aborted due to timeout being reached (${timeout}ms)`
413
+ : RequestSender._generateConnectionErrorMessage(requestRetries),
414
+ detail: error,
415
+ }));
416
+ }
417
+ });
418
+ })
419
+ .catch((e) => {
420
+ throw new StripeError({
421
+ message: 'Unable to authenticate the request',
422
+ exception: e,
423
+ });
424
+ });
425
+ };
426
+ const prepareAndMakeRequest = (error, data) => {
427
+ if (error) {
428
+ return callback(error);
429
+ }
430
+ requestData = data;
431
+ this._stripe.getClientUserAgent((clientUserAgent) => {
432
+ const apiVersion = this._stripe.getApiField('version');
433
+ const headers = this._makeHeaders({
434
+ contentType: apiMode == 'v2'
435
+ ? 'application/json'
436
+ : 'application/x-www-form-urlencoded',
437
+ contentLength: this._getContentLength(data),
438
+ apiVersion: apiVersion,
439
+ clientUserAgent,
440
+ method,
441
+ // other callers expect null, but .headers being optional means it's undefined if not supplied. So we normalize to null.
442
+ userSuppliedHeaders: options.headers ?? null,
443
+ userSuppliedSettings: options.settings ?? {},
444
+ stripeAccount: options.stripeAccount ?? this._stripe.getApiField('stripeAccount'),
445
+ stripeContext: this._normalizeStripeContext(options.stripeContext, this._stripe.getApiField('stripeContext')),
446
+ apiMode: apiMode,
447
+ });
448
+ makeRequest(apiVersion, headers, 0);
449
+ });
450
+ };
451
+ if (requestDataProcessor) {
452
+ requestDataProcessor(method, data, options.headers, prepareAndMakeRequest);
453
+ }
454
+ else {
455
+ let stringifiedData;
456
+ if (apiMode == 'v2') {
457
+ stringifiedData = data ? jsonStringifyRequestData(data) : '';
458
+ }
459
+ else {
460
+ stringifiedData = queryStringifyRequestData(data || {});
461
+ }
462
+ prepareAndMakeRequest(null, stringifiedData);
463
+ }
464
+ }
465
+ }
@@ -0,0 +1,17 @@
1
+ // ResourceNamespace allows you to create nested resources, i.e. `stripe.issuing.cards`.
2
+ // It also works recursively, so you could do i.e. `stripe.billing.invoicing.pay`.
3
+ function ResourceNamespace(stripe, resources) {
4
+ for (const name in resources) {
5
+ if (!Object.prototype.hasOwnProperty.call(resources, name)) {
6
+ continue;
7
+ }
8
+ const camelCaseName = name[0].toLowerCase() + name.substring(1);
9
+ const resource = new resources[name](stripe);
10
+ this[camelCaseName] = resource;
11
+ }
12
+ }
13
+ export function resourceNamespace(namespace, resources) {
14
+ return function (stripe) {
15
+ return new ResourceNamespace(stripe, resources);
16
+ };
17
+ }
@@ -0,0 +1,52 @@
1
+ /**
2
+ * The StripeContext class provides an immutable container and convenience methods for interacting with the `Stripe-Context` header. All methods return a new instance of StripeContext.
3
+ * You can use it whenever you're initializing a `Stripe` instance or sending `stripeContext` with a request. It's also found in the `EventNotification.context` property.
4
+ */
5
+ export class StripeContext {
6
+ /**
7
+ * Creates a new StripeContext with the given segments.
8
+ */
9
+ constructor(segments = []) {
10
+ this._segments = [...segments];
11
+ }
12
+ /**
13
+ * Gets a copy of the segments of this Context.
14
+ */
15
+ get segments() {
16
+ return [...this._segments];
17
+ }
18
+ /**
19
+ * Creates a new StripeContext with an additional segment appended.
20
+ */
21
+ push(segment) {
22
+ if (!segment) {
23
+ throw new Error('Segment cannot be null or undefined');
24
+ }
25
+ return new StripeContext([...this._segments, segment]);
26
+ }
27
+ /**
28
+ * Creates a new StripeContext with the last segment removed.
29
+ * If there are no segments, throws an error.
30
+ */
31
+ pop() {
32
+ if (this._segments.length === 0) {
33
+ throw new Error('Cannot pop from an empty context');
34
+ }
35
+ return new StripeContext(this._segments.slice(0, -1));
36
+ }
37
+ /**
38
+ * Converts this context to its string representation.
39
+ */
40
+ toString() {
41
+ return this._segments.join('/');
42
+ }
43
+ /**
44
+ * Parses a context string into a StripeContext instance.
45
+ */
46
+ static parse(contextStr) {
47
+ if (!contextStr) {
48
+ return new StripeContext([]);
49
+ }
50
+ return new StripeContext(contextStr.split('/'));
51
+ }
52
+ }
@@ -0,0 +1,42 @@
1
+ /**
2
+ * @private
3
+ * (For internal use in stripe-node.)
4
+ * Wrapper around the Event Web API.
5
+ */
6
+ class _StripeEvent extends Event {
7
+ constructor(eventName, data) {
8
+ super(eventName);
9
+ this.data = data;
10
+ }
11
+ }
12
+ /** Minimal EventEmitter wrapper around EventTarget. */
13
+ export class StripeEmitter {
14
+ constructor() {
15
+ this.eventTarget = new EventTarget();
16
+ this.listenerMapping = new Map();
17
+ }
18
+ on(eventName, listener) {
19
+ const listenerWrapper = (event) => {
20
+ listener(event.data);
21
+ };
22
+ this.listenerMapping.set(listener, listenerWrapper);
23
+ return this.eventTarget.addEventListener(eventName, listenerWrapper);
24
+ }
25
+ removeListener(eventName, listener) {
26
+ const listenerWrapper = this.listenerMapping.get(listener);
27
+ this.listenerMapping.delete(listener);
28
+ return this.eventTarget.removeEventListener(eventName, listenerWrapper);
29
+ }
30
+ once(eventName, listener) {
31
+ const listenerWrapper = (event) => {
32
+ listener(event.data);
33
+ };
34
+ this.listenerMapping.set(listener, listenerWrapper);
35
+ return this.eventTarget.addEventListener(eventName, listenerWrapper, {
36
+ once: true,
37
+ });
38
+ }
39
+ emit(eventName, data) {
40
+ return this.eventTarget.dispatchEvent(new _StripeEvent(eventName, data));
41
+ }
42
+ }
@@ -0,0 +1,32 @@
1
+ import { callbackifyPromiseWithTimeout, extractUrlParams } from './utils.js';
2
+ import { makeAutoPaginationMethods } from './autoPagination.js';
3
+ /**
4
+ * Create an API method from the declared spec.
5
+ *
6
+ * @param [spec.method='GET'] Request Method (POST, GET, DELETE, PUT)
7
+ * @param [spec.path=''] Path to be appended to the API BASE_PATH, joined with
8
+ * the instance's path (e.g. 'charges' or 'customers')
9
+ * @param [spec.fullPath=''] Fully qualified path to the method (eg. /v1/a/b/c).
10
+ * If this is specified, path should not be specified.
11
+ * @param [spec.urlParams=[]] Array of required arguments in the order that they
12
+ * must be passed by the consumer of the API. Subsequent optional arguments are
13
+ * optionally passed through a hash (Object) as the penultimate argument
14
+ * (preceding the also-optional callback argument
15
+ * @param [spec.encode] Function for mutating input parameters to a method.
16
+ * Usefully for applying transforms to data on a per-method basis.
17
+ * @param [spec.host] Hostname for the request.
18
+ *
19
+ * <!-- Public API accessible via Stripe.StripeResource.method -->
20
+ */
21
+ export function stripeMethod(spec) {
22
+ if (spec.path !== undefined && spec.fullPath !== undefined) {
23
+ throw new Error(`Method spec specified both a 'path' (${spec.path}) and a 'fullPath' (${spec.fullPath}).`);
24
+ }
25
+ return function (...args) {
26
+ const callback = typeof args[args.length - 1] == 'function' && args.pop();
27
+ spec.urlParams = extractUrlParams(spec.fullPath || this.createResourcePathWithSymbols(spec.path || ''));
28
+ const requestPromise = callbackifyPromiseWithTimeout(this._makeRequest(args, spec, {}), callback);
29
+ Object.assign(requestPromise, makeAutoPaginationMethods(this, args, spec, requestPromise));
30
+ return requestPromise;
31
+ };
32
+ }