@volter/twin-stripe 2.0.38 → 3.0.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 (442) hide show
  1. package/README.md +82 -207
  2. package/dist/generated/pack-facts.json +94 -0
  3. package/dist/spec/SOURCE.md +14 -0
  4. package/dist/spec/fixtures3.json.gz +0 -0
  5. package/dist/spec/openapi.json.gz +0 -0
  6. package/dist/spec/patches.json +34 -0
  7. package/dist/spec/sources.json +378 -0
  8. package/dist/src/cli.js +12 -30
  9. package/dist/src/engine/after-payment.d.ts +9 -0
  10. package/dist/src/engine/after-payment.js +28 -0
  11. package/dist/src/engine/apps-secrets.d.ts +1 -0
  12. package/dist/src/engine/apps-secrets.js +3 -0
  13. package/dist/src/engine/balance.d.ts +5 -0
  14. package/dist/src/engine/balance.js +15 -0
  15. package/dist/src/engine/billing.d.ts +5 -0
  16. package/dist/src/engine/billing.js +6 -0
  17. package/dist/src/engine/charges.d.ts +6 -0
  18. package/dist/src/engine/charges.js +13 -0
  19. package/dist/src/engine/checkout.d.ts +24 -0
  20. package/dist/src/engine/checkout.js +30 -0
  21. package/dist/src/engine/common.d.ts +19 -0
  22. package/dist/src/engine/common.js +32 -0
  23. package/dist/src/{screens → engine}/connect-settings.d.ts +1 -7
  24. package/dist/src/engine/connect-settings.js +26 -0
  25. package/dist/src/engine/connect.d.ts +66 -0
  26. package/dist/src/engine/connect.js +189 -0
  27. package/dist/src/engine/coupons.d.ts +0 -0
  28. package/dist/src/engine/coupons.js +5 -0
  29. package/dist/src/engine/credit-notes.d.ts +1 -0
  30. package/dist/src/engine/credit-notes.js +5 -0
  31. package/dist/src/engine/customers.d.ts +12 -0
  32. package/dist/src/engine/customers.js +30 -0
  33. package/dist/src/engine/display.d.ts +14 -0
  34. package/dist/src/engine/display.js +16 -0
  35. package/dist/src/engine/disputes.d.ts +0 -0
  36. package/dist/src/engine/disputes.js +9 -0
  37. package/dist/src/engine/entitlements.d.ts +1 -0
  38. package/dist/src/engine/entitlements.js +4 -0
  39. package/dist/src/engine/ephemeral-keys.d.ts +0 -0
  40. package/dist/src/engine/ephemeral-keys.js +4 -0
  41. package/dist/src/engine/files.d.ts +18 -0
  42. package/dist/src/engine/files.js +33 -0
  43. package/dist/src/engine/front.d.ts +5 -0
  44. package/dist/src/engine/front.js +25 -0
  45. package/dist/src/engine/invoices.d.ts +24 -0
  46. package/dist/src/engine/invoices.js +57 -0
  47. package/dist/src/engine/issuing.d.ts +35 -0
  48. package/dist/src/engine/issuing.js +45 -0
  49. package/dist/src/engine/ledger.d.ts +9 -0
  50. package/dist/src/engine/ledger.js +9 -0
  51. package/dist/src/engine/oauth.d.ts +4 -0
  52. package/dist/src/engine/oauth.js +25 -0
  53. package/dist/src/engine/onboarding.d.ts +13 -0
  54. package/dist/src/engine/onboarding.js +42 -0
  55. package/dist/src/{stripe-params.d.ts → engine/params.d.ts} +20 -3
  56. package/dist/src/{stripe-params.js → engine/params.js} +7 -60
  57. package/dist/src/engine/payment-intents.d.ts +10 -0
  58. package/dist/src/engine/payment-intents.js +27 -0
  59. package/dist/src/engine/payment-links.d.ts +1 -0
  60. package/dist/src/engine/payment-links.js +5 -0
  61. package/dist/src/engine/payment-methods.d.ts +16 -0
  62. package/dist/src/engine/payment-methods.js +22 -0
  63. package/dist/src/engine/plans.d.ts +6 -0
  64. package/dist/src/engine/plans.js +26 -0
  65. package/dist/src/engine/platform.d.ts +39 -0
  66. package/dist/src/engine/platform.js +34 -0
  67. package/dist/src/engine/products.d.ts +0 -0
  68. package/dist/src/engine/products.js +4 -0
  69. package/dist/src/engine/radar.d.ts +2 -0
  70. package/dist/src/engine/radar.js +5 -0
  71. package/dist/src/engine/refunds.d.ts +1 -0
  72. package/dist/src/engine/refunds.js +28 -0
  73. package/dist/src/engine/renewals.d.ts +36 -0
  74. package/dist/src/engine/renewals.js +65 -0
  75. package/dist/src/engine/setup-intents.d.ts +1 -0
  76. package/dist/src/engine/setup-intents.js +4 -0
  77. package/dist/src/{stripe-twin.d.ts → engine/stripe.d.ts} +11 -39
  78. package/dist/src/{stripe-twin.js → engine/stripe.js} +25 -310
  79. package/dist/src/engine/subscription-schedules.d.ts +3 -0
  80. package/dist/src/engine/subscription-schedules.js +1 -0
  81. package/dist/src/engine/subscriptions.d.ts +12 -0
  82. package/dist/src/engine/subscriptions.js +31 -0
  83. package/dist/src/engine/tax.d.ts +7 -0
  84. package/dist/src/engine/tax.js +28 -0
  85. package/dist/src/engine/terminal.d.ts +4 -0
  86. package/dist/src/engine/terminal.js +20 -0
  87. package/dist/src/engine/test-clocks.d.ts +5 -0
  88. package/dist/src/engine/test-clocks.js +9 -0
  89. package/dist/src/engine/tokens.d.ts +7 -0
  90. package/dist/src/engine/tokens.js +20 -0
  91. package/dist/src/engine/transfers.d.ts +2 -0
  92. package/dist/src/engine/transfers.js +1 -0
  93. package/dist/src/engine/treasury.d.ts +23 -0
  94. package/dist/src/engine/treasury.js +45 -0
  95. package/dist/src/{stripe-version.js → engine/version.js} +4 -3
  96. package/dist/src/engine/webhook-endpoints.d.ts +1 -0
  97. package/dist/src/engine/webhook-endpoints.js +12 -0
  98. package/dist/src/engine/webhooks.d.ts +31 -0
  99. package/dist/src/engine/webhooks.js +68 -0
  100. package/dist/src/fetch.d.ts +2 -0
  101. package/dist/src/fetch.js +26 -0
  102. package/dist/src/generated/surface.gen.json +1 -1
  103. package/dist/src/generated/ui.gen.json +1 -1
  104. package/dist/src/index.d.ts +5 -14
  105. package/dist/src/index.js +8 -75
  106. package/dist/src/manifest.js +232 -758
  107. package/dist/src/screens/billing-portal.d.ts +3 -0
  108. package/dist/src/screens/{portal.js → billing-portal.js} +28 -54
  109. package/dist/src/screens/checkout.d.ts +2 -31
  110. package/dist/src/screens/checkout.js +32 -121
  111. package/dist/src/screens/connect-oauth.d.ts +3 -27
  112. package/dist/src/screens/connect-oauth.js +51 -132
  113. package/dist/src/screens/connect-onboarding.d.ts +3 -0
  114. package/dist/src/screens/{onboarding.js → connect-onboarding.js} +36 -102
  115. package/dist/src/screens/dashboard.d.ts +3 -0
  116. package/dist/src/screens/dashboard.js +117 -0
  117. package/dist/src/screens/shared.d.ts +27 -0
  118. package/dist/src/screens/shared.js +87 -0
  119. package/dist/src/screens/stripe-js.d.ts +3 -0
  120. package/dist/src/screens/stripe-js.js +135 -0
  121. package/dist/src/semantics/account_links.d.ts +2 -0
  122. package/dist/src/semantics/account_links.js +22 -0
  123. package/dist/src/semantics/accounts.d.ts +4 -0
  124. package/dist/src/semantics/accounts.js +38 -0
  125. package/dist/src/semantics/apps.d.ts +4 -0
  126. package/dist/src/semantics/{apps-secrets.js → apps.js} +14 -26
  127. package/dist/src/semantics/around.d.ts +2 -0
  128. package/dist/src/semantics/around.js +16 -0
  129. package/dist/src/semantics/balance.d.ts +2 -11
  130. package/dist/src/semantics/balance.js +3 -194
  131. package/dist/src/semantics/balance_transactions.d.ts +2 -0
  132. package/dist/src/semantics/balance_transactions.js +15 -0
  133. package/dist/src/semantics/billing_portal.d.ts +5 -0
  134. package/dist/src/semantics/billing_portal.js +42 -0
  135. package/dist/src/semantics/charges.d.ts +3 -28
  136. package/dist/src/semantics/charges.js +5 -202
  137. package/dist/src/semantics/checkout.d.ts +3 -20
  138. package/dist/src/semantics/checkout.js +8 -261
  139. package/dist/src/semantics/clock.d.ts +2 -0
  140. package/dist/src/semantics/clock.js +21 -0
  141. package/dist/src/semantics/coupons.d.ts +2 -6
  142. package/dist/src/semantics/coupons.js +2 -60
  143. package/dist/src/semantics/customers.d.ts +6 -6
  144. package/dist/src/semantics/customers.js +27 -387
  145. package/dist/src/semantics/disputes.d.ts +2 -2
  146. package/dist/src/semantics/disputes.js +3 -49
  147. package/dist/src/semantics/doors.d.ts +23 -0
  148. package/dist/src/semantics/doors.js +73 -0
  149. package/dist/src/semantics/entitlements.d.ts +2 -2
  150. package/dist/src/semantics/entitlements.js +5 -50
  151. package/dist/src/semantics/events.d.ts +12 -0
  152. package/dist/src/semantics/events.js +36 -0
  153. package/dist/src/semantics/index.d.ts +2 -0
  154. package/dist/src/semantics/index.js +107 -0
  155. package/dist/src/semantics/invoice_payments.d.ts +2 -0
  156. package/dist/src/semantics/invoice_payments.js +12 -0
  157. package/dist/src/semantics/invoiceitems.d.ts +3 -0
  158. package/dist/src/semantics/invoiceitems.js +59 -0
  159. package/dist/src/semantics/invoices.d.ts +16 -18
  160. package/dist/src/semantics/invoices.js +118 -444
  161. package/dist/src/semantics/payment_intents.d.ts +4 -0
  162. package/dist/src/semantics/payment_intents.js +79 -0
  163. package/dist/src/semantics/payment_methods.d.ts +5 -0
  164. package/dist/src/semantics/payment_methods.js +39 -0
  165. package/dist/src/semantics/payouts.d.ts +2 -0
  166. package/dist/src/semantics/payouts.js +21 -0
  167. package/dist/src/semantics/prices.d.ts +4 -0
  168. package/dist/src/semantics/prices.js +37 -0
  169. package/dist/src/semantics/products.d.ts +6 -2
  170. package/dist/src/semantics/products.js +15 -130
  171. package/dist/src/semantics/promotion_codes.d.ts +3 -0
  172. package/dist/src/semantics/promotion_codes.js +35 -0
  173. package/dist/src/semantics/radar.d.ts +2 -2
  174. package/dist/src/semantics/radar.js +5 -74
  175. package/dist/src/semantics/refunds.d.ts +3 -9
  176. package/dist/src/semantics/refunds.js +6 -192
  177. package/dist/src/semantics/setup_intents.d.ts +3 -0
  178. package/dist/src/semantics/{setup-intents.js → setup_intents.js} +10 -53
  179. package/dist/src/semantics/shared.d.ts +822 -47
  180. package/dist/src/semantics/shared.js +3044 -78
  181. package/dist/src/semantics/states.d.ts +531 -0
  182. package/dist/src/semantics/states.js +852 -0
  183. package/dist/src/semantics/subscription_items.d.ts +5 -0
  184. package/dist/src/semantics/subscription_items.js +55 -0
  185. package/dist/src/semantics/subscription_schedules.d.ts +4 -0
  186. package/dist/src/semantics/subscription_schedules.js +60 -0
  187. package/dist/src/semantics/subscriptions.d.ts +7 -11
  188. package/dist/src/semantics/subscriptions.js +44 -415
  189. package/dist/src/semantics/test_helpers.d.ts +6 -0
  190. package/dist/src/semantics/{test-clocks.js → test_helpers.js} +14 -40
  191. package/dist/src/semantics/transfers.d.ts +2 -2
  192. package/dist/src/semantics/transfers.js +6 -101
  193. package/dist/src/server.d.ts +7 -0
  194. package/dist/src/server.js +7 -0
  195. package/generated/pack-facts.json +94 -0
  196. package/package.json +10 -20
  197. package/spec/SOURCE.md +14 -0
  198. package/spec/fixtures3.json.gz +0 -0
  199. package/spec/openapi.json.gz +0 -0
  200. package/spec/patches.json +34 -0
  201. package/spec/sources.json +378 -0
  202. package/src/cli.ts +12 -26
  203. package/src/engine/after-payment.ts +31 -0
  204. package/src/engine/apps-secrets.ts +4 -0
  205. package/src/engine/balance.ts +33 -0
  206. package/src/engine/billing.ts +16 -0
  207. package/src/engine/charges.ts +19 -0
  208. package/src/engine/checkout.ts +40 -0
  209. package/src/engine/common.ts +47 -0
  210. package/src/engine/connect-settings.ts +23 -0
  211. package/src/engine/connect.ts +184 -0
  212. package/src/engine/coupons.ts +5 -0
  213. package/src/engine/credit-notes.ts +6 -0
  214. package/src/engine/customers.ts +35 -0
  215. package/src/engine/display.ts +19 -0
  216. package/src/engine/disputes.ts +9 -0
  217. package/src/engine/entitlements.ts +5 -0
  218. package/src/engine/ephemeral-keys.ts +3 -0
  219. package/src/engine/files.ts +41 -0
  220. package/src/engine/front.ts +31 -0
  221. package/src/engine/invoices.ts +71 -0
  222. package/src/engine/issuing.ts +61 -0
  223. package/src/engine/ledger.ts +50 -0
  224. package/src/engine/oauth.ts +19 -0
  225. package/src/engine/onboarding.ts +54 -0
  226. package/src/{stripe-params.ts → engine/params.ts} +8 -56
  227. package/src/engine/payment-intents.ts +33 -0
  228. package/src/engine/payment-links.ts +6 -0
  229. package/src/engine/payment-methods.ts +25 -0
  230. package/src/engine/plans.ts +42 -0
  231. package/src/engine/platform.ts +47 -0
  232. package/src/engine/products.ts +3 -0
  233. package/src/engine/radar.ts +6 -0
  234. package/src/engine/refunds.ts +29 -0
  235. package/src/engine/renewals.ts +73 -0
  236. package/src/engine/setup-intents.ts +5 -0
  237. package/src/{stripe-twin.ts → engine/stripe.ts} +28 -323
  238. package/src/engine/subscription-schedules.ts +10 -0
  239. package/src/engine/subscriptions.ts +40 -0
  240. package/src/engine/tax.ts +39 -0
  241. package/src/engine/terminal.ts +23 -0
  242. package/src/engine/test-clocks.ts +11 -0
  243. package/src/engine/tokens.ts +22 -0
  244. package/src/engine/transfers.ts +23 -0
  245. package/src/engine/treasury.ts +47 -0
  246. package/src/{stripe-version.ts → engine/version.ts} +4 -3
  247. package/src/engine/webhook-endpoints.ts +14 -0
  248. package/src/engine/webhooks.ts +72 -0
  249. package/src/fetch.ts +27 -0
  250. package/src/generated/surface.gen.json +1 -1
  251. package/src/generated/ui.gen.json +1 -1
  252. package/src/index.ts +8 -116
  253. package/src/manifest.ts +234 -786
  254. package/src/screens/{portal.tsx → billing-portal.tsx} +32 -37
  255. package/src/screens/checkout.tsx +33 -95
  256. package/src/screens/connect-oauth.tsx +64 -88
  257. package/src/screens/{onboarding.tsx → connect-onboarding.tsx} +38 -82
  258. package/src/screens/dashboard.tsx +198 -0
  259. package/src/screens/shared.tsx +84 -0
  260. package/src/screens/stripe-js.ts +170 -0
  261. package/src/semantics/account_links.ts +21 -0
  262. package/src/semantics/accounts.ts +43 -0
  263. package/src/semantics/{apps-secrets.ts → apps.ts} +17 -32
  264. package/src/semantics/around.ts +20 -0
  265. package/src/semantics/balance.ts +6 -207
  266. package/src/semantics/balance_transactions.ts +20 -0
  267. package/src/semantics/billing_portal.ts +51 -0
  268. package/src/semantics/charges.ts +12 -211
  269. package/src/semantics/checkout.ts +13 -268
  270. package/src/semantics/clock.ts +26 -0
  271. package/src/semantics/coupons.ts +5 -67
  272. package/src/semantics/customers.ts +29 -392
  273. package/src/semantics/disputes.ts +9 -59
  274. package/src/semantics/doors.ts +80 -0
  275. package/src/semantics/entitlements.ts +9 -56
  276. package/src/semantics/events.ts +44 -0
  277. package/src/semantics/index.ts +111 -0
  278. package/src/semantics/invoice_payments.ts +18 -0
  279. package/src/semantics/invoiceitems.ts +59 -0
  280. package/src/semantics/invoices.ts +109 -443
  281. package/src/semantics/payment_intents.ts +83 -0
  282. package/src/semantics/payment_methods.ts +43 -0
  283. package/src/semantics/payouts.ts +23 -0
  284. package/src/semantics/prices.ts +42 -0
  285. package/src/semantics/products.ts +18 -142
  286. package/src/semantics/promotion_codes.ts +39 -0
  287. package/src/semantics/radar.ts +8 -77
  288. package/src/semantics/refunds.ts +9 -212
  289. package/src/semantics/setup_intents.ts +45 -0
  290. package/src/semantics/shared.ts +3092 -106
  291. package/src/semantics/states.ts +883 -0
  292. package/src/semantics/subscription_items.ts +54 -0
  293. package/src/semantics/subscription_schedules.ts +66 -0
  294. package/src/semantics/subscriptions.ts +49 -432
  295. package/src/semantics/{test-clocks.ts → test_helpers.ts} +23 -47
  296. package/src/semantics/transfers.ts +11 -131
  297. package/src/server.ts +8 -0
  298. package/client/dashboard-api.ts +0 -286
  299. package/client/stripe-mirror.css +0 -277
  300. package/client/stripe-mirror.tsx +0 -1559
  301. package/dist/client/dashboard-api.d.ts +0 -107
  302. package/dist/client/dashboard-api.js +0 -238
  303. package/dist/client/dashboard-api.ts +0 -286
  304. package/dist/client/stripe-mirror.bundle.js +0 -236
  305. package/dist/client/stripe-mirror.css +0 -277
  306. package/dist/client/stripe-mirror.d.ts +0 -134
  307. package/dist/client/stripe-mirror.js +0 -859
  308. package/dist/client/stripe-mirror.tsx +0 -1559
  309. package/dist/src/screens/connect-settings.js +0 -103
  310. package/dist/src/screens/consent-skin.d.ts +0 -4
  311. package/dist/src/screens/consent-skin.js +0 -18
  312. package/dist/src/screens/financial-connections.d.ts +0 -5
  313. package/dist/src/screens/financial-connections.js +0 -90
  314. package/dist/src/screens/identity.d.ts +0 -5
  315. package/dist/src/screens/identity.js +0 -86
  316. package/dist/src/screens/onboarding.d.ts +0 -13
  317. package/dist/src/screens/portal.d.ts +0 -5
  318. package/dist/src/screens/public-details.d.ts +0 -5
  319. package/dist/src/screens/public-details.js +0 -90
  320. package/dist/src/semantics/after-payment.d.ts +0 -22
  321. package/dist/src/semantics/after-payment.js +0 -99
  322. package/dist/src/semantics/apps-secrets.d.ts +0 -2
  323. package/dist/src/semantics/billing.d.ts +0 -2
  324. package/dist/src/semantics/billing.js +0 -220
  325. package/dist/src/semantics/connect.d.ts +0 -5
  326. package/dist/src/semantics/connect.js +0 -493
  327. package/dist/src/semantics/credit-notes.d.ts +0 -2
  328. package/dist/src/semantics/credit-notes.js +0 -172
  329. package/dist/src/semantics/ephemeral-keys.d.ts +0 -2
  330. package/dist/src/semantics/ephemeral-keys.js +0 -34
  331. package/dist/src/semantics/files.d.ts +0 -2
  332. package/dist/src/semantics/files.js +0 -125
  333. package/dist/src/semantics/issuing.d.ts +0 -13
  334. package/dist/src/semantics/issuing.js +0 -575
  335. package/dist/src/semantics/ledger.d.ts +0 -59
  336. package/dist/src/semantics/ledger.js +0 -200
  337. package/dist/src/semantics/payment-intents.d.ts +0 -18
  338. package/dist/src/semantics/payment-intents.js +0 -452
  339. package/dist/src/semantics/payment-links.d.ts +0 -2
  340. package/dist/src/semantics/payment-links.js +0 -133
  341. package/dist/src/semantics/payment-methods.d.ts +0 -20
  342. package/dist/src/semantics/payment-methods.js +0 -140
  343. package/dist/src/semantics/plans.d.ts +0 -5
  344. package/dist/src/semantics/plans.js +0 -121
  345. package/dist/src/semantics/platform.d.ts +0 -9
  346. package/dist/src/semantics/platform.js +0 -206
  347. package/dist/src/semantics/renewals.d.ts +0 -47
  348. package/dist/src/semantics/renewals.js +0 -281
  349. package/dist/src/semantics/setup-intents.d.ts +0 -2
  350. package/dist/src/semantics/subscription-schedules.d.ts +0 -2
  351. package/dist/src/semantics/subscription-schedules.js +0 -119
  352. package/dist/src/semantics/tax.d.ts +0 -2
  353. package/dist/src/semantics/tax.js +0 -197
  354. package/dist/src/semantics/terminal.d.ts +0 -5
  355. package/dist/src/semantics/terminal.js +0 -182
  356. package/dist/src/semantics/test-clocks.d.ts +0 -6
  357. package/dist/src/semantics/tokens.d.ts +0 -4
  358. package/dist/src/semantics/tokens.js +0 -44
  359. package/dist/src/semantics/treasury.d.ts +0 -2
  360. package/dist/src/semantics/treasury.js +0 -377
  361. package/dist/src/semantics/webhook-endpoints.d.ts +0 -3
  362. package/dist/src/semantics/webhook-endpoints.js +0 -85
  363. package/dist/src/stripe-budget.d.ts +0 -55
  364. package/dist/src/stripe-budget.js +0 -155
  365. package/dist/src/stripe-capabilities.d.ts +0 -3
  366. package/dist/src/stripe-capabilities.js +0 -5836
  367. package/dist/src/stripe-conformance.d.ts +0 -43
  368. package/dist/src/stripe-conformance.js +0 -105
  369. package/dist/src/stripe-connector.d.ts +0 -161
  370. package/dist/src/stripe-connector.js +0 -414
  371. package/dist/src/stripe-emit.d.ts +0 -2
  372. package/dist/src/stripe-emit.js +0 -145
  373. package/dist/src/stripe-events.d.ts +0 -93
  374. package/dist/src/stripe-events.js +0 -392
  375. package/dist/src/stripe-js.d.ts +0 -4
  376. package/dist/src/stripe-js.js +0 -70
  377. package/dist/src/stripe-mirror-ui.d.ts +0 -15
  378. package/dist/src/stripe-mirror-ui.js +0 -87
  379. package/dist/src/stripe-perform-harness.d.ts +0 -9
  380. package/dist/src/stripe-perform-harness.js +0 -26
  381. package/dist/src/stripe-server.d.ts +0 -33
  382. package/dist/src/stripe-server.js +0 -429
  383. package/dist/src/stripe-shared.d.ts +0 -109
  384. package/dist/src/stripe-shared.js +0 -276
  385. package/dist/src/stripe-ui-conformance.d.ts +0 -5
  386. package/dist/src/stripe-ui-conformance.js +0 -79
  387. package/dist/src/stripe-ui-structure.d.ts +0 -3
  388. package/dist/src/stripe-ui-structure.js +0 -168
  389. package/dist/test-fixtures/stripe-known-deviations.json +0 -110
  390. package/dist/test-fixtures/stripe-openapi-operations.SOURCE.md +0 -14
  391. package/dist/test-fixtures/stripe-openapi-operations.json +0 -4717
  392. package/dist/test-fixtures/stripe-schemas.SOURCE.md +0 -35
  393. package/dist/test-fixtures/stripe-schemas.json +0 -3813
  394. package/src/screens/connect-settings.tsx +0 -121
  395. package/src/screens/consent-skin.ts +0 -20
  396. package/src/screens/financial-connections.tsx +0 -101
  397. package/src/screens/identity.tsx +0 -96
  398. package/src/screens/public-details.tsx +0 -105
  399. package/src/semantics/after-payment.ts +0 -118
  400. package/src/semantics/billing.ts +0 -216
  401. package/src/semantics/connect.ts +0 -487
  402. package/src/semantics/credit-notes.ts +0 -168
  403. package/src/semantics/ephemeral-keys.ts +0 -34
  404. package/src/semantics/files.ts +0 -143
  405. package/src/semantics/issuing.ts +0 -590
  406. package/src/semantics/ledger.ts +0 -253
  407. package/src/semantics/payment-intents.ts +0 -463
  408. package/src/semantics/payment-links.ts +0 -148
  409. package/src/semantics/payment-methods.ts +0 -145
  410. package/src/semantics/plans.ts +0 -131
  411. package/src/semantics/platform.ts +0 -220
  412. package/src/semantics/renewals.ts +0 -279
  413. package/src/semantics/setup-intents.ts +0 -87
  414. package/src/semantics/subscription-schedules.ts +0 -129
  415. package/src/semantics/tax.ts +0 -220
  416. package/src/semantics/terminal.ts +0 -195
  417. package/src/semantics/tokens.ts +0 -52
  418. package/src/semantics/treasury.ts +0 -383
  419. package/src/semantics/webhook-endpoints.ts +0 -87
  420. package/src/stripe-budget.ts +0 -181
  421. package/src/stripe-capabilities.ts +0 -5651
  422. package/src/stripe-conformance.ts +0 -124
  423. package/src/stripe-connector.ts +0 -462
  424. package/src/stripe-emit.ts +0 -157
  425. package/src/stripe-events.ts +0 -434
  426. package/src/stripe-js.ts +0 -70
  427. package/src/stripe-mirror-ui.ts +0 -90
  428. package/src/stripe-perform-harness.ts +0 -29
  429. package/src/stripe-server.ts +0 -393
  430. package/src/stripe-shared.ts +0 -297
  431. package/src/stripe-ui-conformance.ts +0 -88
  432. package/src/stripe-ui-structure.ts +0 -182
  433. package/test-fixtures/stripe-known-deviations.json +0 -110
  434. package/test-fixtures/stripe-openapi-operations.json +0 -4717
  435. package/test-fixtures/stripe-schemas.json +0 -3813
  436. /package/dist/src/{screens → engine}/industries.d.ts +0 -0
  437. /package/dist/src/{screens → engine}/industries.js +0 -0
  438. /package/dist/src/{semantics → engine}/test-cards.d.ts +0 -0
  439. /package/dist/src/{semantics → engine}/test-cards.js +0 -0
  440. /package/dist/src/{stripe-version.d.ts → engine/version.d.ts} +0 -0
  441. /package/src/{screens → engine}/industries.ts +0 -0
  442. /package/src/{semantics → engine}/test-cards.ts +0 -0
@@ -0,0 +1,2 @@
1
+ import type { HandlerContext } from '@volter/world-core';
2
+ export declare function GetBalanceTransactions(ctx: HandlerContext): Promise<Response>;
@@ -0,0 +1,15 @@
1
+ import { inRange } from "../engine/common.js";
2
+ import { BT } from "../engine/ledger.js";
3
+ import { commonAsOf, kept, list, mine, newest, where } from "./shared.js";
4
+ export async function GetBalanceTransactions(ctx) {
5
+ const own = mine(ctx);
6
+ return list(ctx, BT, where(ctx, newest(ctx, BT).filter((t) => own.has(t.id)).map((t) => commonAsOf(ctx, t)), {
7
+ type: (t, v) => t.type === v,
8
+ currency: (t, v) => t.currency === v,
9
+ source: (t, v) => t.source === v,
10
+ // an automatic payout lists the entries it paid out, its own debit among them
11
+ payout: (t, v) => t.source === v || kept(ctx, BT, t, '_payout') === v,
12
+ // a range of creation times (docs.stripe.com/api/balance_transactions/list#balance_transaction_list-created)
13
+ created: (t, v) => inRange(t.created, v),
14
+ }));
15
+ }
@@ -0,0 +1,5 @@
1
+ import type { HandlerContext } from '@volter/world-core';
2
+ export declare function GetBillingPortalConfigurations(ctx: HandlerContext): Promise<Response>;
3
+ export declare function PostBillingPortalConfigurations(ctx: HandlerContext): Promise<Response>;
4
+ export declare function PostBillingPortalConfigurationsConfiguration(ctx: HandlerContext): Promise<Response>;
5
+ export declare function PostBillingPortalSessions(ctx: HandlerContext): Promise<Response>;
@@ -0,0 +1,42 @@
1
+ import { filled, PBC, PORTAL_FEATURES } from "../engine/files.js";
2
+ import { asBool, nowUnix } from "../engine/stripe.js";
3
+ import { actingAccount, at, created, fail, list, mergeUpdate, newest, where } from "./shared.js";
4
+ export async function GetBillingPortalConfigurations(ctx) {
5
+ return list(ctx, PBC, where(ctx, newest(ctx, PBC), {
6
+ active: (c, v) => asBool(c.active) === asBool(v),
7
+ is_default: (c, v) => asBool(c.is_default) === asBool(v),
8
+ }));
9
+ }
10
+ export async function PostBillingPortalConfigurations(ctx) {
11
+ return ctx.reply(await created(ctx, PBC, { ...ctx.params, business_profile: filled({ headline: null, privacy_policy_url: null, terms_of_service_url: null }, ctx.params.business_profile), features: filled(PORTAL_FEATURES, ctx.params.features) }, {
12
+ active: true, is_default: false, livemode: false,
13
+ login_page: { enabled: false, url: null },
14
+ metadata: {}, default_return_url: ctx.params.default_return_url ?? null,
15
+ updated: nowUnix(ctx.occurredAt),
16
+ }));
17
+ }
18
+ export async function PostBillingPortalConfigurationsConfiguration(ctx) {
19
+ const id = at(ctx, 'configuration');
20
+ if (!ctx.get(PBC, id))
21
+ return ctx.notFound(PBC, id);
22
+ return ctx.reply(await ctx.write(PBC, id, mergeUpdate(ctx, PBC, id, { ...ctx.params, updated: nowUnix(ctx.occurredAt) }), 'billing_portal.configuration.update'));
23
+ }
24
+ // ── the customer portal ──
25
+ // the configuration defaults to the account's default one
26
+ export async function PostBillingPortalSessions(ctx) {
27
+ const customer = typeof ctx.params.customer === 'string' ? ctx.params.customer : '';
28
+ if (!customer)
29
+ return fail(ctx, 'Missing required param: customer.', 400, 'parameter_missing');
30
+ if (!ctx.row('customer', customer, { withDeleted: true }))
31
+ return fail(ctx, `No such customer: '${customer}'`, 404, 'resource_missing');
32
+ const configuration = typeof ctx.params.configuration === 'string' && ctx.params.configuration
33
+ ? ctx.params.configuration
34
+ : (ctx.rowsRaw('billing_portal.configuration', { withDeleted: true }).find((c) => c.is_default)?.id ?? 'bpc_twin_default');
35
+ const id = ctx.mint('billing_portal.session');
36
+ return ctx.reply(await created(ctx, 'billing_portal.session', {
37
+ id, customer, configuration, return_url: ctx.params.return_url ?? null, url: `https://billing.stripe.com/p/session/${id}`,
38
+ locale: ctx.params.locale ?? null, on_behalf_of: ctx.params.on_behalf_of ?? null, livemode: false,
39
+ // the account the session was made on (Stripe-Account), whose name the portal shows (screens/billing-portal.tsx)
40
+ ...(actingAccount(ctx) ? { _brand_account: actingAccount(ctx) } : {}),
41
+ }, {}));
42
+ }
@@ -1,28 +1,3 @@
1
- import type { Semantics, SemanticsContext } from '@volter/world-core';
2
- import { type Row } from './shared.js';
3
- /** Every egress of a charge carries its refunds, derived from the refund rows in list order. */
4
- export declare function chargeBody(ctx: SemanticsContext, c: Row): Row;
5
- /** A capture=false charge refunded while uncaptured: its authorization is released by the refund, as it would be
6
- * "automatically refunded if uncaptured" (spec/openapi.json.gz, `capture_before`). The charge stays uncaptured and
7
- * becomes refunded in full, a Refund records the release, and no money moves: none was ever received. Written as
8
- * charge.refunded. Where the documentation stops and the twin decides: Stripe's basil change ("Partially capturing or
9
- * canceling payments no longer creates a Refund", docs.stripe.com/changelog/basil/2025-03-31/remove-refund-from-partial-
10
- * capture-and-payment-cancellation-flow) names partial capture and cancellation, not a refund asked for, so a refund
11
- * still makes one; its reason is null and it has no balance transaction. Answers the Refund. */
12
- export declare function releaseAuthorization(ctx: SemanticsContext, ch: Row, operationId: string, given?: Row): Promise<Row>;
13
- /** A PaymentIntent's authorization released by its cancel: "For PaymentIntents with a `status` of `requires_capture`, the
14
- * remaining `amount_capturable` is automatically refunded" (docs.stripe.com/api/payment_intents/cancel), and since basil
15
- * a cancellation makes no Refund: "`amount_captured` will be 0 instead of `nil` in payment cancellation flows",
16
- * "`amount_refunded` will no longer be updated by these actions", "`refunded` will no longer be `true` for payment
17
- * cancellation flows", and no charge.refunded is sent (docs.stripe.com/changelog/basil/2025-03-31/remove-refund-from-
18
- * partial-capture-and-payment-cancellation-flow). The charge stays uncaptured; nothing is written as an event. */
19
- export declare function cancelAuthorization(ctx: SemanticsContext, ch: Row): Promise<Row>;
20
- /** An authorized charge captured, by the charge's capture or its PaymentIntent's: what is captured credits the balance.
21
- * Written as charge.captured, "Occurs whenever a previously uncaptured charge is captured" (docs.stripe.com/api/events/types).
22
- * A partial capture releases the rest with no Refund and leaves amount_refunded and refunded as they were: "The following
23
- * flows no longer result in a `Refund` object created and linked to the payment: Partial capture", "`amount_refunded`
24
- * will no longer be updated by these actions", and "There will only be a single balance transaction for partial captures"
25
- * (docs.stripe.com/changelog/basil/2025-03-31/remove-refund-from-partial-capture-and-payment-cancellation-flow).
26
- * The caller has asked the machine whether it may capture. */
27
- export declare function captureAuthorization(ctx: SemanticsContext, ch: Row, toCapture: number, _operationId: string): Promise<Row>;
28
- export declare const charges: Record<string, Semantics>;
1
+ import type { HandlerContext } from '@volter/world-core';
2
+ export declare function GetCharges(ctx: HandlerContext): Promise<Response>;
3
+ export declare function GetChargesCharge(ctx: HandlerContext): Promise<Response>;
@@ -1,209 +1,12 @@
1
- import { asBool, cardError, chargeDefaults, declineFor, searchOver, validateMoney } from "../stripe-twin.js";
2
- import { afterCharge } from "./after-payment.js";
3
- import { settleCharge } from "./ledger.js";
4
- import { paymentMethodDetails } from "./payment-methods.js";
5
- import { refundCharge } from "./refunds.js";
6
- import { at, created, expanded, fail, finder, list, newest, path, refundDestination, send, where } from "./shared.js";
7
- const chargeMissing = (ctx, id) => fail(ctx, `No such charge: '${id}'`, 404, 'resource_missing');
8
- /** Every egress of a charge carries its refunds, derived from the refund rows in list order. */
9
- export function chargeBody(ctx, c) {
10
- const data = newest(ctx, 'refund').filter((r) => r.charge === c.id);
11
- return { ...c, refunds: { object: 'list', data, has_more: false, total_count: data.length, url: `/v1/charges/${String(c.id)}/refunds` } };
12
- }
13
- // A charge is written as the event Stripe sends for it (docs.stripe.com/api/events/types; Stripe has no
14
- // `charge.created`): charge.succeeded, "Occurs whenever a charge is successful", for one made or authorized
15
- // (capture=false: its status is succeeded, captured false), and charge.failed, "Occurs whenever a failed charge attempt
16
- // occurs", for a declined attempt. The twin makes no pending charge (charge.pending, "Occurs whenever a pending charge is
17
- // created"): its charges settle when made.
18
- /** The create's parameters as the charge keeps them: without `card`, the request's card details ("A token, like the ones
19
- * returned by Stripe.js", or a hash of the number, expiry and CVC). The Charge object has no `card` property (served
20
- * spec, charge); the card it was made with is its payment_method_details. Kept, it answered the card's full number and
21
- * CVC back on every read of the charge. */
22
- function withoutCard(params) {
23
- const { card: _card, ...rest } = params;
24
- return rest;
25
- }
26
- /** A Charges-API charge a declining test card refuses: a 402 card_error naming the failed charge Stripe records for the
27
- * attempt (docs.stripe.com/declines). */
28
- async function declinedCharge(ctx, decline) {
29
- const params = ctx.params;
30
- const failedId = ctx.mint('charge');
31
- const amount = Number(params.amount) || 0;
32
- await created(ctx, 'charge', { ...withoutCard(params), id: failedId }, {
33
- ...chargeDefaults(failedId, amount, false, ctx.occurredAt), status: 'failed', paid: false, captured: false, capture_before: null,
34
- failure_code: decline.code, failure_message: decline.message, balance_transaction: null,
35
- outcome: { type: 'issuer_declined', network_status: 'declined_by_network', reason: decline.decline_code ?? decline.code, risk_level: 'normal', seller_message: 'The bank did not return any further details with this decline.' },
36
- payment_method_details: paymentMethodDetails(ctx, params.payment_method ?? params.source ?? params.card) ?? null,
37
- }, { operation: 'charge.failed' });
38
- return send(ctx, cardError(decline, { charge: failedId }));
39
- }
40
- /** A charge's fraud report: "user_report … Assessments reported by you. If set, possible values of are `safe` and
41
- * `fraudulent`" (docs.stripe.com/api/charges/object, fraud_details). */
42
- function fraudReport(ctx, existing, fd) {
43
- const report = String(fd.user_report);
44
- if (report !== 'safe' && report !== 'fraudulent')
45
- return fail(ctx, "Invalid fraud_details[user_report]: must be 'safe' or 'fraudulent'.", 400, 'parameter_invalid_string_enum');
46
- const prior = existing.fraud_details && typeof existing.fraud_details === 'object' ? existing.fraud_details : {};
47
- return { user_report: report, stripe_report: prior.stripe_report ?? null };
48
- }
49
- const create = async (ctx) => {
50
- const params = ctx.params;
51
- const bad = validateMoney(params);
52
- if (bad)
53
- return send(ctx, bad);
54
- // a declining test card answers a 402 card_error naming the failed charge Stripe records for the attempt
55
- const decline = declineFor(finder(ctx), params);
56
- if (decline)
57
- return declinedCharge(ctx, decline);
58
- // capture=false authorizes only: succeeded and paid, but not captured, with a capture deadline
59
- const captured = !(params.capture !== undefined && !asBool(params.capture));
60
- // the id comes first so the charge's own `refunds` list can carry its URL
61
- const id = typeof params.id === 'string' && params.id ? params.id : ctx.mint('charge');
62
- const amount = Number(params.amount) || 0;
63
- // a captured charge credits the balance; an authorization does when it is captured
64
- const card = String(params.source ?? params.payment_method ?? params.card?.number ?? '');
65
- const bt = captured ? await settleCharge(ctx, id, amount, String(params.currency ?? 'usd'), card) : null;
66
- const details = paymentMethodDetails(ctx, params.payment_method ?? params.source ?? params.card);
67
- await created(ctx, 'charge', { ...withoutCard(params), id }, { ...chargeDefaults(id, amount, captured, ctx.occurredAt), balance_transaction: bt, payment_method_details: details ?? null }, { operation: 'charge.succeeded' });
68
- await afterCharge(ctx, id, { amount, currency: String(params.currency ?? 'usd'), application_fee_amount: params.application_fee_amount, destination: params.transfer_data?.destination }, params.payment_method ?? params.source ?? params.card);
69
- return ctx.reply(chargeBody(ctx, ctx.get('charge', id)));
70
- };
71
- // capture takes `amount` (the whole authorization by default; docs.stripe.com/api/charges/capture); the rest of a
72
- // partial capture is released with no Refund (captureAuthorization). `amount_to_capture` is the
73
- // PaymentIntent capture's parameter, which a charge's capture does not know.
74
- const capture = async (ctx) => {
75
- const id = at(ctx, 'charge');
76
- const ch = ctx.get('charge', id);
77
- if (!ch)
78
- return chargeMissing(ctx, id);
79
- const refused = ctx.legal('charge', 'captured', 'PostChargesChargeCapture', ch.captured === true ? 'true' : 'false', undefined, id);
80
- if (refused)
81
- return ctx.refuse(refused);
82
- // "Capturing a charge will always succeed, unless the charge is already refunded, expired, captured, or an invalid
83
- // capture amount is specified" (docs.stripe.com/api/charges/capture): a released authorization is refunded
84
- if (ch.refunded === true)
85
- return fail(ctx, `Charge ${id} has already been refunded.`, 400, 'charge_already_refunded');
86
- // a canceled PaymentIntent's authorization is released: "After it's canceled, no additional charges are made by the
87
- // PaymentIntent and any operations on the PaymentIntent fail with an error" (docs.stripe.com/api/payment_intents/cancel).
88
- // Where the documentation stops and the twin decides: its charge's capture answers payment_intent_unexpected_state
89
- // ("The PaymentIntent's state was incompatible with the operation", docs.stripe.com/error-codes), in the twin's words.
90
- const intent = typeof ch.payment_intent === 'string' ? ctx.get('payment_intent', ch.payment_intent) : undefined;
91
- if (intent?.status === 'canceled')
92
- return fail(ctx, `Charge ${id} belongs to PaymentIntent ${String(intent.id)}, which is canceled; its authorization was released.`, 400, 'payment_intent_unexpected_state');
93
- const full = Number(ch.amount) || 0;
94
- const toCapture = ctx.params.amount !== undefined ? Math.min(full, Math.max(0, Math.trunc(Number(ctx.params.amount) || 0))) : full;
95
- return ctx.reply(chargeBody(ctx, await captureAuthorization(ctx, ch, toCapture, 'PostChargesChargeCapture')));
96
- };
97
- /** A capture=false charge refunded while uncaptured: its authorization is released by the refund, as it would be
98
- * "automatically refunded if uncaptured" (spec/openapi.json.gz, `capture_before`). The charge stays uncaptured and
99
- * becomes refunded in full, a Refund records the release, and no money moves: none was ever received. Written as
100
- * charge.refunded. Where the documentation stops and the twin decides: Stripe's basil change ("Partially capturing or
101
- * canceling payments no longer creates a Refund", docs.stripe.com/changelog/basil/2025-03-31/remove-refund-from-partial-
102
- * capture-and-payment-cancellation-flow) names partial capture and cancellation, not a refund asked for, so a refund
103
- * still makes one; its reason is null and it has no balance transaction. Answers the Refund. */
104
- export async function releaseAuthorization(ctx, ch, operationId, given = {}) {
105
- const id = String(ch.id);
106
- const full = Number(ch.amount) || 0;
107
- if (ch.refunded !== true)
108
- ctx.legal('charge', 'refunded', operationId, 'false', 'true', id);
109
- const refund = await created(ctx, 'refund', { ...given, charge: id, amount: full - (Number(ch.amount_refunded) || 0), currency: String(ch.currency ?? 'usd') }, {
110
- status: 'succeeded', metadata: {}, reason: null, receipt_number: null,
111
- balance_transaction: null, source_transfer_reversal: null, transfer_reversal: null, ...refundDestination(ch, 'reversal'),
112
- ...(typeof ch.payment_intent === 'string' ? { payment_intent: ch.payment_intent } : {}),
113
- });
114
- await ctx.write('charge', id, { amount_refunded: full, refunded: true }, 'charge.refunded');
115
- return refund;
116
- }
117
- /** A PaymentIntent's authorization released by its cancel: "For PaymentIntents with a `status` of `requires_capture`, the
118
- * remaining `amount_capturable` is automatically refunded" (docs.stripe.com/api/payment_intents/cancel), and since basil
119
- * a cancellation makes no Refund: "`amount_captured` will be 0 instead of `nil` in payment cancellation flows",
120
- * "`amount_refunded` will no longer be updated by these actions", "`refunded` will no longer be `true` for payment
121
- * cancellation flows", and no charge.refunded is sent (docs.stripe.com/changelog/basil/2025-03-31/remove-refund-from-
122
- * partial-capture-and-payment-cancellation-flow). The charge stays uncaptured; nothing is written as an event. */
123
- export async function cancelAuthorization(ctx, ch) {
124
- return ctx.write('charge', String(ch.id), { amount_captured: 0 }, 'charge.authorization_released');
125
- }
126
- /** An authorized charge captured, by the charge's capture or its PaymentIntent's: what is captured credits the balance.
127
- * Written as charge.captured, "Occurs whenever a previously uncaptured charge is captured" (docs.stripe.com/api/events/types).
128
- * A partial capture releases the rest with no Refund and leaves amount_refunded and refunded as they were: "The following
129
- * flows no longer result in a `Refund` object created and linked to the payment: Partial capture", "`amount_refunded`
130
- * will no longer be updated by these actions", and "There will only be a single balance transaction for partial captures"
131
- * (docs.stripe.com/changelog/basil/2025-03-31/remove-refund-from-partial-capture-and-payment-cancellation-flow).
132
- * The caller has asked the machine whether it may capture. */
133
- export async function captureAuthorization(ctx, ch, toCapture, _operationId) {
134
- const id = String(ch.id);
135
- const bt = toCapture > 0 ? await settleCharge(ctx, id, toCapture, String(ch.currency ?? 'usd'), String(ch.source ?? ch.payment_method ?? '')) : null;
136
- return ctx.write('charge', id, { captured: true, amount_captured: toCapture, balance_transaction: bt }, 'charge.captured');
137
- }
138
- const listCharges = async (ctx) => {
1
+ import { at, chargeBody, chargeMissing, expanded, list, newest, where } from "./shared.js";
2
+ export async function GetCharges(ctx) {
139
3
  const items = where(ctx, newest(ctx, 'charge'), {
140
4
  customer: (c, v) => c.customer === v,
141
5
  payment_intent: (c, v) => c.payment_intent === v,
142
6
  });
143
7
  return list(ctx, 'charge', items.map((c) => chargeBody(ctx, c)));
144
- };
145
- const searchCharges = async (ctx) => {
146
- const found = searchOver(newest(ctx, 'charge'), ctx.params, path(ctx));
147
- const body = found.body;
148
- if (found.status === 200 && Array.isArray(body.data))
149
- body.data = body.data.map((c) => chargeBody(ctx, c));
150
- return send(ctx, found);
151
- };
152
- const retrieve = async (ctx) => {
8
+ }
9
+ export async function GetChargesCharge(ctx) {
153
10
  const c = ctx.get('charge', at(ctx, 'charge'));
154
11
  return c ? ctx.reply(expanded(ctx, 'charge', chargeBody(ctx, c))) : chargeMissing(ctx, at(ctx, 'charge'));
155
- };
156
- // fraud_details[user_report] marks a charge safe or fraudulent; Stripe keeps its own stripe_report
157
- const update = async (ctx) => {
158
- const id = at(ctx, 'charge');
159
- const existing = ctx.get('charge', id);
160
- if (!existing)
161
- return chargeMissing(ctx, id);
162
- const fields = { ...ctx.params };
163
- const fd = ctx.params.fraud_details;
164
- const fraud = fd && typeof fd === 'object' && 'user_report' in fd ? fraudReport(ctx, existing, fd) : undefined;
165
- if (fraud instanceof Response)
166
- return fraud;
167
- if (fraud)
168
- fields.fraud_details = fraud;
169
- return ctx.reply(chargeBody(ctx, await ctx.write('charge', id, fields, 'charge.update')));
170
- };
171
- // ── the charge's own refunds: listed, created and read through it; another charge's refund is not found ──
172
- const refunds = async (ctx) => {
173
- const id = at(ctx, 'charge');
174
- if (!ctx.get('charge', id))
175
- return chargeMissing(ctx, id);
176
- return list(ctx, 'refund', newest(ctx, 'refund').filter((r) => r.charge === id));
177
- };
178
- const createRefund = async (ctx) => {
179
- const ch = ctx.get('charge', at(ctx, 'charge'));
180
- if (!ch)
181
- return chargeMissing(ctx, at(ctx, 'charge'));
182
- return refundCharge(ctx, ch, ctx.params);
183
- };
184
- const chargeRefund = (ctx) => {
185
- if (!ctx.get('charge', at(ctx, 'charge')))
186
- return chargeMissing(ctx, at(ctx, 'charge'));
187
- const r = ctx.get('refund', at(ctx, 'refund'));
188
- return r && r.charge === at(ctx, 'charge') ? r : fail(ctx, `No such refund: '${at(ctx, 'refund')}'`, 404, 'resource_missing');
189
- };
190
- const refund = async (ctx) => {
191
- const r = chargeRefund(ctx);
192
- return r instanceof Response ? r : ctx.reply(r);
193
- };
194
- const updateRefund = async (ctx) => {
195
- const r = chargeRefund(ctx);
196
- return r instanceof Response ? r : ctx.reply(await ctx.write('refund', at(ctx, 'refund'), ctx.params, 'refund.update'));
197
- };
198
- export const charges = {
199
- PostCharges: create,
200
- PostChargesChargeCapture: capture,
201
- GetCharges: listCharges,
202
- GetChargesSearch: searchCharges,
203
- GetChargesCharge: retrieve,
204
- PostChargesCharge: update,
205
- GetChargesChargeRefunds: refunds,
206
- PostChargesChargeRefunds: createRefund,
207
- GetChargesChargeRefundsRefund: refund,
208
- PostChargesChargeRefundsRefund: updateRefund,
209
- };
12
+ }
@@ -1,20 +1,3 @@
1
- import type { Semantics, SemanticsContext } from '@volter/world-core';
2
- import { type Row } from './shared.js';
3
- /** Metadata passed on to what a session makes (payment_intent_data[metadata], subscription_data[metadata]) as a
4
- * create's own is kept: "Individual keys can be unset by posting an empty value to them. All keys can be unset by
5
- * posting an empty value to `metadata`" (every metadata parameter, docs.stripe.com/api/metadata), so a key posted
6
- * empty is not set, and metadata posted empty is {} (stripe-server.ts createMetadata, the top-level case). */
7
- export declare function nestedMetadata(given: unknown): Row | undefined;
8
- /** The card the customer entered on the page. */
9
- export type EnteredCard = {
10
- number: string;
11
- exp_month: number;
12
- exp_year: number;
13
- };
14
- /** A line item of a one-time Price: a stored Price, or an inline `price_data`, without `recurring` ("Line items with
15
- * one-time Prices will be on the initial invoice only", docs.stripe.com/api/checkout/sessions/create). */
16
- export declare function isOneTime(item: Row, priceData?: Row | null): boolean;
17
- /** The customer paying on the hosted page (src/screens/checkout.tsx): the external actor's move on the
18
- * session's machine, then what the payment made, linked, and the session stored complete. */
19
- export declare function completeSession(ctx: SemanticsContext, id: string, existing: Row, details?: Row, card?: EnteredCard): Promise<Row | Response>;
20
- export declare const checkout: Record<string, Semantics>;
1
+ import type { HandlerContext } from '@volter/world-core';
2
+ export declare function PostCheckoutSessions(ctx: HandlerContext): Promise<Response>;
3
+ export declare function PostCheckoutSessionsSessionExpire(ctx: HandlerContext): Promise<Response>;