@adonis-agora/payments 0.2.0 → 0.4.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 (346) hide show
  1. package/CHANGELOG.md +2375 -0
  2. package/dist/assets/spa/assets/index-B7rU8eIL.css +2 -0
  3. package/dist/assets/spa/assets/index-BcM2VH5k.js +10 -0
  4. package/dist/assets/spa/assets/index-BcM2VH5k.js.map +1 -0
  5. package/dist/assets/spa/index.html +20 -0
  6. package/dist/commands/main.d.ts +4 -3
  7. package/dist/commands/main.d.ts.map +1 -1
  8. package/dist/commands/main.js +9 -2
  9. package/dist/commands/main.js.map +1 -1
  10. package/dist/commands/make_billable.d.ts.map +1 -1
  11. package/dist/commands/make_billable.js +1 -1
  12. package/dist/commands/make_billable.js.map +1 -1
  13. package/dist/commands/make_webhook_handler.d.ts.map +1 -1
  14. package/dist/commands/make_webhook_handler.js +1 -1
  15. package/dist/commands/make_webhook_handler.js.map +1 -1
  16. package/dist/commands/payments_health.d.ts +31 -0
  17. package/dist/commands/payments_health.d.ts.map +1 -0
  18. package/dist/commands/payments_health.js +113 -0
  19. package/dist/commands/payments_health.js.map +1 -0
  20. package/dist/commands/payments_sync.d.ts +18 -4
  21. package/dist/commands/payments_sync.d.ts.map +1 -1
  22. package/dist/commands/payments_sync.js +136 -40
  23. package/dist/commands/payments_sync.js.map +1 -1
  24. package/dist/commands/payments_webhook.d.ts.map +1 -1
  25. package/dist/commands/payments_webhook.js.map +1 -1
  26. package/dist/configure.d.ts +12 -5
  27. package/dist/configure.d.ts.map +1 -1
  28. package/dist/configure.js +18 -5
  29. package/dist/configure.js.map +1 -1
  30. package/dist/providers/dashboard_provider.d.ts +97 -0
  31. package/dist/providers/dashboard_provider.d.ts.map +1 -0
  32. package/dist/providers/dashboard_provider.js +430 -0
  33. package/dist/providers/dashboard_provider.js.map +1 -0
  34. package/dist/providers/payments_client_provider.d.ts +41 -0
  35. package/dist/providers/payments_client_provider.d.ts.map +1 -0
  36. package/dist/providers/payments_client_provider.js +95 -0
  37. package/dist/providers/payments_client_provider.js.map +1 -0
  38. package/dist/providers/payments_provider.d.ts +35 -0
  39. package/dist/providers/payments_provider.d.ts.map +1 -1
  40. package/dist/providers/payments_provider.js +250 -36
  41. package/dist/providers/payments_provider.js.map +1 -1
  42. package/dist/src/billing/billing_health.d.ts +85 -0
  43. package/dist/src/billing/billing_health.d.ts.map +1 -0
  44. package/dist/src/billing/billing_health.js +155 -0
  45. package/dist/src/billing/billing_health.js.map +1 -0
  46. package/dist/src/billing/billing_overview.d.ts +4 -3
  47. package/dist/src/billing/billing_overview.d.ts.map +1 -1
  48. package/dist/src/billing/billing_overview.js +14 -5
  49. package/dist/src/billing/billing_overview.js.map +1 -1
  50. package/dist/src/billing/billing_store.d.ts +634 -5
  51. package/dist/src/billing/billing_store.d.ts.map +1 -1
  52. package/dist/src/billing/billing_store.js +18 -1
  53. package/dist/src/billing/billing_store.js.map +1 -1
  54. package/dist/src/billing/index.d.ts +4 -3
  55. package/dist/src/billing/index.d.ts.map +1 -1
  56. package/dist/src/billing/index.js +2 -1
  57. package/dist/src/billing/index.js.map +1 -1
  58. package/dist/src/billing/list_query.d.ts +16 -0
  59. package/dist/src/billing/list_query.d.ts.map +1 -0
  60. package/dist/src/billing/list_query.js +28 -0
  61. package/dist/src/billing/list_query.js.map +1 -0
  62. package/dist/src/billing/lucid_billing_store.d.ts +122 -4
  63. package/dist/src/billing/lucid_billing_store.d.ts.map +1 -1
  64. package/dist/src/billing/lucid_billing_store.js +811 -13
  65. package/dist/src/billing/lucid_billing_store.js.map +1 -1
  66. package/dist/src/billing/mixins/index.d.ts +5 -2
  67. package/dist/src/billing/mixins/index.d.ts.map +1 -1
  68. package/dist/src/billing/mixins/index.js +5 -2
  69. package/dist/src/billing/mixins/index.js.map +1 -1
  70. package/dist/src/billing/mixins/with_audit_event.d.ts +48 -0
  71. package/dist/src/billing/mixins/with_audit_event.d.ts.map +1 -0
  72. package/dist/src/billing/mixins/with_audit_event.js +77 -0
  73. package/dist/src/billing/mixins/with_audit_event.js.map +1 -0
  74. package/dist/src/billing/mixins/with_billable.d.ts.map +1 -1
  75. package/dist/src/billing/mixins/with_customer.d.ts +39 -0
  76. package/dist/src/billing/mixins/with_customer.d.ts.map +1 -0
  77. package/dist/src/billing/mixins/with_customer.js +68 -0
  78. package/dist/src/billing/mixins/with_customer.js.map +1 -0
  79. package/dist/src/billing/mixins/with_dispute.d.ts +68 -0
  80. package/dist/src/billing/mixins/with_dispute.d.ts.map +1 -0
  81. package/dist/src/billing/mixins/with_dispute.js +83 -0
  82. package/dist/src/billing/mixins/with_dispute.js.map +1 -0
  83. package/dist/src/billing/mixins/with_payment.d.ts +42 -0
  84. package/dist/src/billing/mixins/with_payment.d.ts.map +1 -1
  85. package/dist/src/billing/mixins/with_payment.js +29 -3
  86. package/dist/src/billing/mixins/with_payment.js.map +1 -1
  87. package/dist/src/billing/mixins/with_subscription.d.ts +7 -0
  88. package/dist/src/billing/mixins/with_subscription.d.ts.map +1 -1
  89. package/dist/src/billing/mixins/with_subscription.js +15 -1
  90. package/dist/src/billing/mixins/with_subscription.js.map +1 -1
  91. package/dist/src/billing/mixins/with_usage_event.d.ts +7 -0
  92. package/dist/src/billing/mixins/with_usage_event.d.ts.map +1 -1
  93. package/dist/src/billing/mixins/with_usage_event.js +15 -1
  94. package/dist/src/billing/mixins/with_usage_event.js.map +1 -1
  95. package/dist/src/billing/mixins/with_webhook_event.d.ts +18 -0
  96. package/dist/src/billing/mixins/with_webhook_event.d.ts.map +1 -1
  97. package/dist/src/billing/mixins/with_webhook_event.js +18 -1
  98. package/dist/src/billing/mixins/with_webhook_event.js.map +1 -1
  99. package/dist/src/billing/resolve_dispatch.d.ts +22 -0
  100. package/dist/src/billing/resolve_dispatch.d.ts.map +1 -0
  101. package/dist/src/billing/resolve_dispatch.js +44 -0
  102. package/dist/src/billing/resolve_dispatch.js.map +1 -0
  103. package/dist/src/billing/resolve_store.d.ts +18 -0
  104. package/dist/src/billing/resolve_store.d.ts.map +1 -0
  105. package/dist/src/billing/resolve_store.js +35 -0
  106. package/dist/src/billing/resolve_store.js.map +1 -0
  107. package/dist/src/billing/schema.d.ts +108 -0
  108. package/dist/src/billing/schema.d.ts.map +1 -0
  109. package/dist/src/billing/schema.js +350 -0
  110. package/dist/src/billing/schema.js.map +1 -0
  111. package/dist/src/billing/webhook_dispatcher.d.ts +95 -16
  112. package/dist/src/billing/webhook_dispatcher.d.ts.map +1 -1
  113. package/dist/src/billing/webhook_dispatcher.js +186 -33
  114. package/dist/src/billing/webhook_dispatcher.js.map +1 -1
  115. package/dist/src/billing/webhook_events.d.ts +67 -1
  116. package/dist/src/billing/webhook_events.d.ts.map +1 -1
  117. package/dist/src/billing/webhook_events.js +15 -0
  118. package/dist/src/billing/webhook_events.js.map +1 -1
  119. package/dist/src/billing/webhook_processor.d.ts.map +1 -1
  120. package/dist/src/billing/webhook_processor.js +325 -5
  121. package/dist/src/billing/webhook_processor.js.map +1 -1
  122. package/dist/src/client/define_config.d.ts +150 -0
  123. package/dist/src/client/define_config.d.ts.map +1 -0
  124. package/dist/src/client/define_config.js +98 -0
  125. package/dist/src/client/define_config.js.map +1 -0
  126. package/dist/src/client/handlers.d.ts +71 -0
  127. package/dist/src/client/handlers.d.ts.map +1 -0
  128. package/dist/src/client/handlers.js +119 -0
  129. package/dist/src/client/handlers.js.map +1 -0
  130. package/dist/src/client/index.d.ts +15 -0
  131. package/dist/src/client/index.d.ts.map +1 -0
  132. package/dist/src/client/index.js +12 -0
  133. package/dist/src/client/index.js.map +1 -0
  134. package/dist/src/client/statuses.d.ts +38 -0
  135. package/dist/src/client/statuses.d.ts.map +1 -0
  136. package/dist/src/client/statuses.js +42 -0
  137. package/dist/src/client/statuses.js.map +1 -0
  138. package/dist/src/dashboard/actions.d.ts +143 -0
  139. package/dist/src/dashboard/actions.d.ts.map +1 -0
  140. package/dist/src/dashboard/actions.js +112 -0
  141. package/dist/src/dashboard/actions.js.map +1 -0
  142. package/dist/src/dashboard/auth.d.ts +136 -0
  143. package/dist/src/dashboard/auth.d.ts.map +1 -0
  144. package/dist/src/dashboard/auth.js +152 -0
  145. package/dist/src/dashboard/auth.js.map +1 -0
  146. package/dist/src/dashboard/define_config.d.ts +80 -0
  147. package/dist/src/dashboard/define_config.d.ts.map +1 -0
  148. package/dist/src/dashboard/define_config.js +83 -0
  149. package/dist/src/dashboard/define_config.js.map +1 -0
  150. package/dist/src/dashboard/handlers.d.ts +281 -0
  151. package/dist/src/dashboard/handlers.d.ts.map +1 -0
  152. package/dist/src/dashboard/handlers.js +960 -0
  153. package/dist/src/dashboard/handlers.js.map +1 -0
  154. package/dist/src/dashboard/index.d.ts +17 -0
  155. package/dist/src/dashboard/index.d.ts.map +1 -0
  156. package/dist/src/dashboard/index.js +13 -0
  157. package/dist/src/dashboard/index.js.map +1 -0
  158. package/dist/src/dashboard/login_page.d.ts +23 -0
  159. package/dist/src/dashboard/login_page.d.ts.map +1 -0
  160. package/dist/src/dashboard/login_page.js +170 -0
  161. package/dist/src/dashboard/login_page.js.map +1 -0
  162. package/dist/src/dashboard/period.d.ts +31 -0
  163. package/dist/src/dashboard/period.d.ts.map +1 -0
  164. package/dist/src/dashboard/period.js +44 -0
  165. package/dist/src/dashboard/period.js.map +1 -0
  166. package/dist/src/dashboard/session_cookie.d.ts +42 -0
  167. package/dist/src/dashboard/session_cookie.d.ts.map +1 -0
  168. package/dist/src/dashboard/session_cookie.js +97 -0
  169. package/dist/src/dashboard/session_cookie.js.map +1 -0
  170. package/dist/src/dashboard/spa.d.ts +24 -0
  171. package/dist/src/dashboard/spa.d.ts.map +1 -0
  172. package/dist/src/dashboard/spa.js +52 -0
  173. package/dist/src/dashboard/spa.js.map +1 -0
  174. package/dist/src/define_config.d.ts +245 -10
  175. package/dist/src/define_config.d.ts.map +1 -1
  176. package/dist/src/define_config.js +97 -1
  177. package/dist/src/define_config.js.map +1 -1
  178. package/dist/src/diagnostics.d.ts +287 -7
  179. package/dist/src/diagnostics.d.ts.map +1 -1
  180. package/dist/src/diagnostics.js +317 -1
  181. package/dist/src/diagnostics.js.map +1 -1
  182. package/dist/src/driver.d.ts +139 -5
  183. package/dist/src/driver.d.ts.map +1 -1
  184. package/dist/src/drivers/abacate.d.ts +13 -3
  185. package/dist/src/drivers/abacate.d.ts.map +1 -1
  186. package/dist/src/drivers/abacate.js +112 -19
  187. package/dist/src/drivers/abacate.js.map +1 -1
  188. package/dist/src/drivers/adyen.d.ts +164 -0
  189. package/dist/src/drivers/adyen.d.ts.map +1 -0
  190. package/dist/src/drivers/adyen.js +678 -0
  191. package/dist/src/drivers/adyen.js.map +1 -0
  192. package/dist/src/drivers/asaas.d.ts +53 -3
  193. package/dist/src/drivers/asaas.d.ts.map +1 -1
  194. package/dist/src/drivers/asaas.js +364 -29
  195. package/dist/src/drivers/asaas.js.map +1 -1
  196. package/dist/src/drivers/dodo.d.ts +135 -0
  197. package/dist/src/drivers/dodo.d.ts.map +1 -0
  198. package/dist/src/drivers/dodo.js +864 -0
  199. package/dist/src/drivers/dodo.js.map +1 -0
  200. package/dist/src/drivers/efi.d.ts +98 -0
  201. package/dist/src/drivers/efi.d.ts.map +1 -0
  202. package/dist/src/drivers/efi.js +628 -0
  203. package/dist/src/drivers/efi.js.map +1 -0
  204. package/dist/src/drivers/infinitepay.d.ts +156 -0
  205. package/dist/src/drivers/infinitepay.d.ts.map +1 -0
  206. package/dist/src/drivers/infinitepay.js +321 -0
  207. package/dist/src/drivers/infinitepay.js.map +1 -0
  208. package/dist/src/drivers/lemonsqueezy.d.ts +125 -0
  209. package/dist/src/drivers/lemonsqueezy.d.ts.map +1 -0
  210. package/dist/src/drivers/lemonsqueezy.js +632 -0
  211. package/dist/src/drivers/lemonsqueezy.js.map +1 -0
  212. package/dist/src/drivers/mercadopago.d.ts +97 -0
  213. package/dist/src/drivers/mercadopago.d.ts.map +1 -0
  214. package/dist/src/drivers/mercadopago.js +844 -0
  215. package/dist/src/drivers/mercadopago.js.map +1 -0
  216. package/dist/src/drivers/mollie.d.ts +125 -0
  217. package/dist/src/drivers/mollie.d.ts.map +1 -0
  218. package/dist/src/drivers/mollie.js +812 -0
  219. package/dist/src/drivers/mollie.js.map +1 -0
  220. package/dist/src/drivers/paddle.d.ts +148 -0
  221. package/dist/src/drivers/paddle.d.ts.map +1 -0
  222. package/dist/src/drivers/paddle.js +738 -0
  223. package/dist/src/drivers/paddle.js.map +1 -0
  224. package/dist/src/drivers/pagarme.d.ts +97 -0
  225. package/dist/src/drivers/pagarme.d.ts.map +1 -0
  226. package/dist/src/drivers/pagarme.js +829 -0
  227. package/dist/src/drivers/pagarme.js.map +1 -0
  228. package/dist/src/drivers/pagbank.d.ts +57 -0
  229. package/dist/src/drivers/pagbank.d.ts.map +1 -0
  230. package/dist/src/drivers/pagbank.js +499 -0
  231. package/dist/src/drivers/pagbank.js.map +1 -0
  232. package/dist/src/drivers/paypal.d.ts +120 -0
  233. package/dist/src/drivers/paypal.d.ts.map +1 -0
  234. package/dist/src/drivers/paypal.js +891 -0
  235. package/dist/src/drivers/paypal.js.map +1 -0
  236. package/dist/src/drivers/polar.d.ts +118 -0
  237. package/dist/src/drivers/polar.d.ts.map +1 -0
  238. package/dist/src/drivers/polar.js +604 -0
  239. package/dist/src/drivers/polar.js.map +1 -0
  240. package/dist/src/drivers/razorpay.d.ts +103 -0
  241. package/dist/src/drivers/razorpay.d.ts.map +1 -0
  242. package/dist/src/drivers/razorpay.js +867 -0
  243. package/dist/src/drivers/razorpay.js.map +1 -0
  244. package/dist/src/drivers/shared.d.ts +33 -0
  245. package/dist/src/drivers/shared.d.ts.map +1 -0
  246. package/dist/src/drivers/shared.js +37 -0
  247. package/dist/src/drivers/shared.js.map +1 -0
  248. package/dist/src/drivers/square.d.ts +133 -0
  249. package/dist/src/drivers/square.d.ts.map +1 -0
  250. package/dist/src/drivers/square.js +905 -0
  251. package/dist/src/drivers/square.js.map +1 -0
  252. package/dist/src/drivers/stripe.d.ts +41 -4
  253. package/dist/src/drivers/stripe.d.ts.map +1 -1
  254. package/dist/src/drivers/stripe.js +823 -26
  255. package/dist/src/drivers/stripe.js.map +1 -1
  256. package/dist/src/drivers/woovi.d.ts +11 -4
  257. package/dist/src/drivers/woovi.d.ts.map +1 -1
  258. package/dist/src/drivers/woovi.js +162 -29
  259. package/dist/src/drivers/woovi.js.map +1 -1
  260. package/dist/src/ensure_customer.d.ts +34 -1
  261. package/dist/src/ensure_customer.d.ts.map +1 -1
  262. package/dist/src/ensure_customer.js +29 -4
  263. package/dist/src/ensure_customer.js.map +1 -1
  264. package/dist/src/hooks/webhook_handlers.d.ts.map +1 -1
  265. package/dist/src/hooks/webhook_handlers.js.map +1 -1
  266. package/dist/src/http.d.ts +37 -3
  267. package/dist/src/http.d.ts.map +1 -1
  268. package/dist/src/http.js +69 -5
  269. package/dist/src/http.js.map +1 -1
  270. package/dist/src/index.d.ts +54 -26
  271. package/dist/src/index.d.ts.map +1 -1
  272. package/dist/src/index.js +29 -12
  273. package/dist/src/index.js.map +1 -1
  274. package/dist/src/invoice/drivers/asaas.d.ts.map +1 -1
  275. package/dist/src/invoice/drivers/asaas.js.map +1 -1
  276. package/dist/src/invoice/drivers/enotas.d.ts.map +1 -1
  277. package/dist/src/invoice/drivers/enotas.js.map +1 -1
  278. package/dist/src/invoice/drivers/focus.d.ts.map +1 -1
  279. package/dist/src/invoice/drivers/focus.js.map +1 -1
  280. package/dist/src/invoice/drivers/plugnotas.d.ts.map +1 -1
  281. package/dist/src/invoice/drivers/plugnotas.js.map +1 -1
  282. package/dist/src/invoice/drivers/tecnospeed.d.ts.map +1 -1
  283. package/dist/src/invoice/drivers/tecnospeed.js.map +1 -1
  284. package/dist/src/invoice/emit_invoice.d.ts.map +1 -1
  285. package/dist/src/invoice/emit_invoice.js +31 -11
  286. package/dist/src/invoice/emit_invoice.js.map +1 -1
  287. package/dist/src/invoice/invoice_manager.d.ts.map +1 -1
  288. package/dist/src/money.d.ts +23 -5
  289. package/dist/src/money.d.ts.map +1 -1
  290. package/dist/src/money.js +72 -7
  291. package/dist/src/money.js.map +1 -1
  292. package/dist/src/payments_manager.d.ts +8 -1
  293. package/dist/src/payments_manager.d.ts.map +1 -1
  294. package/dist/src/payments_manager.js +168 -6
  295. package/dist/src/payments_manager.js.map +1 -1
  296. package/dist/src/services/main.d.ts +38 -0
  297. package/dist/src/services/main.d.ts.map +1 -1
  298. package/dist/src/services/main.js +130 -0
  299. package/dist/src/services/main.js.map +1 -1
  300. package/dist/src/telescope/index.d.ts +2 -0
  301. package/dist/src/telescope/index.d.ts.map +1 -1
  302. package/dist/src/telescope/index.js +1 -0
  303. package/dist/src/telescope/index.js.map +1 -1
  304. package/dist/src/telescope/payments_watcher.d.ts +10 -4
  305. package/dist/src/telescope/payments_watcher.d.ts.map +1 -1
  306. package/dist/src/telescope/payments_watcher.js +66 -14
  307. package/dist/src/telescope/payments_watcher.js.map +1 -1
  308. package/dist/src/telescope/register.d.ts +62 -0
  309. package/dist/src/telescope/register.d.ts.map +1 -0
  310. package/dist/src/telescope/register.js +48 -0
  311. package/dist/src/telescope/register.js.map +1 -0
  312. package/dist/src/testing/fake_payments.d.ts +62 -0
  313. package/dist/src/testing/fake_payments.d.ts.map +1 -0
  314. package/dist/src/testing/fake_payments.js +82 -0
  315. package/dist/src/testing/fake_payments.js.map +1 -0
  316. package/dist/src/testing/fake_payments_driver.d.ts +1 -1
  317. package/dist/src/testing/fake_payments_driver.d.ts.map +1 -1
  318. package/dist/src/testing/fake_payments_driver.js.map +1 -1
  319. package/dist/src/testing/in_memory_billing_store.d.ts +151 -2
  320. package/dist/src/testing/in_memory_billing_store.d.ts.map +1 -1
  321. package/dist/src/testing/in_memory_billing_store.js +517 -4
  322. package/dist/src/testing/in_memory_billing_store.js.map +1 -1
  323. package/dist/src/testing/index.d.ts +3 -2
  324. package/dist/src/testing/index.d.ts.map +1 -1
  325. package/dist/src/testing/index.js +1 -0
  326. package/dist/src/testing/index.js.map +1 -1
  327. package/dist/src/testing/mutable_clock.d.ts.map +1 -1
  328. package/dist/src/types.d.ts +161 -5
  329. package/dist/src/types.d.ts.map +1 -1
  330. package/dist/src/types.js +30 -1
  331. package/dist/src/types.js.map +1 -1
  332. package/dist/src/webhook_handlers.d.ts +96 -2
  333. package/dist/src/webhook_handlers.d.ts.map +1 -1
  334. package/dist/src/webhook_handlers.js +91 -10
  335. package/dist/src/webhook_handlers.js.map +1 -1
  336. package/dist/src/webhook_security.d.ts +94 -3
  337. package/dist/src/webhook_security.d.ts.map +1 -1
  338. package/dist/src/webhook_security.js +173 -9
  339. package/dist/src/webhook_security.js.map +1 -1
  340. package/dist/stubs/config/payments.stub +13 -0
  341. package/dist/stubs/config/payments_client.stub +42 -0
  342. package/dist/stubs/config/payments_dashboard.stub +38 -0
  343. package/dist/stubs/database/migrations/create_billing_tables.stub +35 -77
  344. package/dist/stubs/main.js.map +1 -1
  345. package/dist/stubs/make/webhook_handler/main.stub +29 -11
  346. package/package.json +67 -32
@@ -1,2 +1,3 @@
1
1
  export { PaymentsWatcher } from './payments_watcher.js';
2
+ export { registerPaymentsWatcher } from './register.js';
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/telescope/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/telescope/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC"}
@@ -1,10 +1,16 @@
1
1
  import type { WatcherContext } from './telescope-sdk.js';
2
2
  /**
3
3
  * A payments-specific Telescope watcher: records a typed `payments` entry for every
4
- * milestone `agora:payments:*` event the library emits (charges, refunds,
5
- * subscriptions, invoice emission, webhook lifecycle), flattening the event's payload
6
- * into structured content rather than storing the raw envelope like the generic
7
- * diagnostics bridge does.
4
+ * `agora:payments:*` event the library emits — the milestones (charges, refunds,
5
+ * subscriptions, invoice emission, webhook lifecycle) and the debug events
6
+ * (`gateway.request*`, `webhook.verification`) — flattening the event's payload into
7
+ * structured content rather than storing the raw envelope like the generic diagnostics
8
+ * bridge does.
9
+ *
10
+ * Entries are SHAPED, not spread blindly: the fields you scan a timeline by lead
11
+ * ({@link LEAD_KEYS} — who, which object, what happened, how long), then whatever else
12
+ * the payload carried, then `ts`. Same family as the other Agora watchers, which is why
13
+ * the `event` + flattened-payload envelope handling is identical to media's.
8
14
  *
9
15
  * Zero coupling: payments publishes via the structural `@adonis-agora/diagnostics`
10
16
  * emit slot; this subscribes to the same `node:diagnostics_channel` channels — neither
@@ -1 +1 @@
1
- {"version":3,"file":"payments_watcher.d.ts","sourceRoot":"","sources":["../../../src/telescope/payments_watcher.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAkBzD;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,eAAe;IAC1B,QAAQ,CAAC,IAAI,cAAc;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyB;IAEnD,0FAA0F;IAC1F,QAAQ,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI;IAuBnC,mFAAmF;IACnF,OAAO,IAAI,IAAI;CAGhB"}
1
+ {"version":3,"file":"payments_watcher.d.ts","sourceRoot":"","sources":["../../../src/telescope/payments_watcher.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAsEzD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,eAAe;IAC1B,QAAQ,CAAC,IAAI,cAAc;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyB;IAEnD,0FAA0F;IAC1F,QAAQ,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI,CAalC;IAED,mFAAmF;IACnF,OAAO,IAAI,IAAI,CAEd;CACF"}
@@ -1,17 +1,77 @@
1
1
  import { subscribe, unsubscribe } from 'node:diagnostics_channel';
2
- import { PAYMENTS_DIAGNOSTIC_EVENTS, claimPaymentsDiagnostics, } from '../diagnostics.js';
2
+ import { claimPaymentsDiagnostics, PAYMENTS_DIAGNOSTIC_EVENTS, } from '../diagnostics.js';
3
3
  /** All payments milestones are low-frequency — record every one of them. */
4
4
  const RECORDED_EVENTS = [...PAYMENTS_DIAGNOSTIC_EVENTS];
5
5
  /** The `agora:payments:<event>` `node:diagnostics_channel` name — the cross-repo wire contract, replicated structurally (payments never imports `@adonis-agora/diagnostics`). */
6
6
  function paymentsChannelName(event) {
7
7
  return `agora:payments:${event}`;
8
8
  }
9
+ /**
10
+ * The fields that lead an entry, in this order — the ones a developer scans a timeline
11
+ * by. Everything else in the payload follows, unreordered.
12
+ *
13
+ * `traceId` is handled separately (it can come from either the envelope or the payload)
14
+ * and always sits right after `event`.
15
+ */
16
+ const LEAD_KEYS = [
17
+ 'provider',
18
+ 'gatewayId',
19
+ 'id',
20
+ 'type',
21
+ 'method',
22
+ 'host',
23
+ 'path',
24
+ 'query',
25
+ 'status',
26
+ 'outcome',
27
+ 'scheme',
28
+ 'amount',
29
+ 'currency',
30
+ 'durationMs',
31
+ 'error',
32
+ 'reason',
33
+ ];
34
+ /**
35
+ * Build the entry content: `event`, the correlation id, the {@link LEAD_KEYS} that are
36
+ * present, then the rest of the payload, then `ts`.
37
+ *
38
+ * The trace id can arrive two ways. `@adonis-agora/diagnostics` fills the ENVELOPE's
39
+ * `traceId` from the host's request-context accessor; payments cannot set that field
40
+ * (the structural emit slot is `(lib, event, payload)`) so it puts its own webhook-chain
41
+ * id on the PAYLOAD. The envelope's wins when both are there — it is the host's real
42
+ * request trace, and correlating to it reaches other libraries too.
43
+ */
44
+ function shapeContent(envelope) {
45
+ const payload = envelope.payload ?? {};
46
+ const traceId = envelope.traceId ?? payload.traceId;
47
+ const content = { event: envelope.event };
48
+ if (traceId !== undefined)
49
+ content.traceId = traceId;
50
+ for (const key of LEAD_KEYS) {
51
+ if (payload[key] !== undefined)
52
+ content[key] = payload[key];
53
+ }
54
+ for (const [key, value] of Object.entries(payload)) {
55
+ if (key === 'traceId' || key in content)
56
+ continue;
57
+ content[key] = value;
58
+ }
59
+ if (envelope.ts !== undefined)
60
+ content.ts = envelope.ts;
61
+ return content;
62
+ }
9
63
  /**
10
64
  * A payments-specific Telescope watcher: records a typed `payments` entry for every
11
- * milestone `agora:payments:*` event the library emits (charges, refunds,
12
- * subscriptions, invoice emission, webhook lifecycle), flattening the event's payload
13
- * into structured content rather than storing the raw envelope like the generic
14
- * diagnostics bridge does.
65
+ * `agora:payments:*` event the library emits — the milestones (charges, refunds,
66
+ * subscriptions, invoice emission, webhook lifecycle) and the debug events
67
+ * (`gateway.request*`, `webhook.verification`) — flattening the event's payload into
68
+ * structured content rather than storing the raw envelope like the generic diagnostics
69
+ * bridge does.
70
+ *
71
+ * Entries are SHAPED, not spread blindly: the fields you scan a timeline by lead
72
+ * ({@link LEAD_KEYS} — who, which object, what happened, how long), then whatever else
73
+ * the payload carried, then `ts`. Same family as the other Agora watchers, which is why
74
+ * the `event` + flattened-payload envelope handling is identical to media's.
15
75
  *
16
76
  * Zero coupling: payments publishes via the structural `@adonis-agora/diagnostics`
17
77
  * emit slot; this subscribes to the same `node:diagnostics_channel` channels — neither
@@ -35,15 +95,7 @@ export class PaymentsWatcher {
35
95
  const envelope = message;
36
96
  if (envelope === null || typeof envelope !== 'object')
37
97
  return;
38
- ctx.record({
39
- type: this.type,
40
- content: {
41
- event: envelope.event,
42
- ...(envelope.ts !== undefined ? { ts: envelope.ts } : {}),
43
- ...(envelope.traceId !== undefined ? { traceId: envelope.traceId } : {}),
44
- ...(envelope.payload ?? {}),
45
- },
46
- });
98
+ ctx.record({ type: this.type, content: shapeContent(envelope) });
47
99
  };
48
100
  subscribe(channel, onMessage);
49
101
  this.disposers.push(() => unsubscribe(channel, onMessage));
@@ -1 +1 @@
1
- {"version":3,"file":"payments_watcher.js","sourceRoot":"","sources":["../../../src/telescope/payments_watcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EACL,0BAA0B,EAE1B,wBAAwB,GACzB,MAAM,mBAAmB,CAAC;AAG3B,4EAA4E;AAC5E,MAAM,eAAe,GAA8B,CAAC,GAAG,0BAA0B,CAAC,CAAC;AAEnF,iLAAiL;AACjL,SAAS,mBAAmB,CAAC,KAAa;IACxC,OAAO,kBAAkB,KAAK,EAAE,CAAC;AACnC,CAAC;AAUD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,eAAe;IACjB,IAAI,GAAG,UAAU,CAAC;IACV,SAAS,GAAsB,EAAE,CAAC;IAEnD,0FAA0F;IAC1F,QAAQ,CAAC,GAAmB;QAC1B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,wBAAwB,CAAC,eAAe,CAAC,CAAC,CAAC;QAE/D,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;YACpC,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;YAC3C,MAAM,SAAS,GAAG,CAAC,OAAgB,EAAE,EAAE;gBACrC,MAAM,QAAQ,GAAG,OAAqC,CAAC;gBACvD,IAAI,QAAQ,KAAK,IAAI,IAAI,OAAO,QAAQ,KAAK,QAAQ;oBAAE,OAAO;gBAC9D,GAAG,CAAC,MAAM,CAAC;oBACT,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,OAAO,EAAE;wBACP,KAAK,EAAE,QAAQ,CAAC,KAAK;wBACrB,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACzD,GAAG,CAAC,QAAQ,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACxE,GAAG,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC;qBAC5B;iBACF,CAAC,CAAC;YACL,CAAC,CAAC;YACF,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAC9B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,mFAAmF;IACnF,OAAO;QACL,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM;YAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC;IACzD,CAAC;CACF"}
1
+ {"version":3,"file":"payments_watcher.js","sourceRoot":"","sources":["../../../src/telescope/payments_watcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ import type { PaymentsWatcher } from './payments_watcher.js';
2
+ /**
3
+ * Wiring the typed `payments` Telescope watcher, extracted from the provider so it can be
4
+ * tested for what it promises without standing up an application — and without installing
5
+ * `@adonis-agora/telescope`, which is an optional peer this package deliberately does not
6
+ * depend on.
7
+ *
8
+ * This was six lines every app copied into `start/telescope.ts`, and until someone did, a
9
+ * payments timeline showed generic `diagnostic` entries with the payload buried rather than
10
+ * typed `payments` ones. The wiring never varied, so it moved here.
11
+ *
12
+ * **There is no configuration for this, on purpose.** Every option that was drafted turned
13
+ * out to describe a situation the code can just detect:
14
+ *
15
+ * - "off, because I wire my own" — the channel claims say so. An app that registered its own
16
+ * watcher has already claimed the payments channels, and this skips.
17
+ * - "off, because I do not want telescope" — then telescope is not in the app, and this
18
+ * skips.
19
+ * - "on, and fail if telescope is missing" — a missing telescope means an empty timeline,
20
+ * which is not a reason to refuse to take payments.
21
+ */
22
+ /** The slice of a telescope store the watcher records through. */
23
+ export interface TelescopeRecorder {
24
+ record(entry: {
25
+ type: string;
26
+ content: unknown;
27
+ }): Promise<unknown>;
28
+ }
29
+ /** The slice of the AdonisJS application container this needs. */
30
+ export interface WatcherHost {
31
+ container: {
32
+ make(token: never): Promise<unknown>;
33
+ };
34
+ }
35
+ /** A disposable registration — the provider holds it so `shutdown()` can release it. */
36
+ export interface RegisteredWatcher {
37
+ dispose(): void;
38
+ }
39
+ export interface RegisterWatcherOptions {
40
+ /**
41
+ * Seams, for tests only. The import is a seam because telescope is not installed here and
42
+ * a test must be able to describe both worlds — present and absent — without it.
43
+ */
44
+ importTelescope?: () => Promise<{
45
+ TelescopeService: unknown;
46
+ }>;
47
+ makeWatcher?: () => PaymentsWatcher;
48
+ alreadyClaimed?: () => boolean;
49
+ }
50
+ /**
51
+ * Register the watcher against the app's telescope store, unless there is nothing to do.
52
+ *
53
+ * Returns `undefined` when it did not register, which is a normal outcome and not an error:
54
+ * telescope may be absent, or the app may already have wired its own watcher.
55
+ *
56
+ * The provider calls this in `ready()`, not `boot()`, and the order is the whole reason the
57
+ * claim check works: `start/` files run before `ready`, so an app that wires its own watcher
58
+ * has already claimed the channels by the time this looks. Registering in `boot()` would
59
+ * race that and double-record for every app that followed the old documentation.
60
+ */
61
+ export declare function registerPaymentsWatcher(app: WatcherHost, options?: RegisterWatcherOptions): Promise<RegisteredWatcher | undefined>;
62
+ //# sourceMappingURL=register.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../src/telescope/register.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAI7D;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,kEAAkE;AAClE,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACrE;AAED,kEAAkE;AAClE,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE;QAAE,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;KAAE,CAAC;CACrD;AAED,wFAAwF;AACxF,MAAM,WAAW,iBAAiB;IAChC,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC;QAAE,gBAAgB,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC/D,WAAW,CAAC,EAAE,MAAM,eAAe,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC;CAChC;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,WAAW,EAChB,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAuCxC"}
@@ -0,0 +1,48 @@
1
+ import { isPaymentsDiagnosticClaimed } from '../diagnostics.js';
2
+ const TELESCOPE_PACKAGE = '@adonis-agora/telescope';
3
+ /**
4
+ * Register the watcher against the app's telescope store, unless there is nothing to do.
5
+ *
6
+ * Returns `undefined` when it did not register, which is a normal outcome and not an error:
7
+ * telescope may be absent, or the app may already have wired its own watcher.
8
+ *
9
+ * The provider calls this in `ready()`, not `boot()`, and the order is the whole reason the
10
+ * claim check works: `start/` files run before `ready`, so an app that wires its own watcher
11
+ * has already claimed the channels by the time this looks. Registering in `boot()` would
12
+ * race that and double-record for every app that followed the old documentation.
13
+ */
14
+ export async function registerPaymentsWatcher(app, options = {}) {
15
+ // Somebody already owns these channels — an app that wired `PaymentsWatcher` by hand, the
16
+ // way the docs used to say to. Registering a second one would record every payment event
17
+ // twice, and the app that followed the instructions would be the one it happened to.
18
+ const claimed = options.alreadyClaimed ?? (() => isPaymentsDiagnosticClaimed('charge.created'));
19
+ if (claimed())
20
+ return undefined;
21
+ try {
22
+ const telescope = options.importTelescope !== undefined
23
+ ? await options.importTelescope()
24
+ : // A non-literal specifier on purpose: `@adonis-agora/telescope` is an OPTIONAL peer
25
+ // and is not installed here, so a literal import would fail `tsc` in this repo even
26
+ // though it resolves fine in an app that has it.
27
+ (await import(TELESCOPE_PACKAGE));
28
+ const service = (await app.container.make(telescope.TelescopeService));
29
+ const store = service.telescopeStore;
30
+ const watcher = options.makeWatcher !== undefined
31
+ ? options.makeWatcher()
32
+ : new (await import('./payments_watcher.js')).PaymentsWatcher();
33
+ watcher.register({
34
+ // Recording is observability. A telescope store that is full, locked or briefly
35
+ // unreachable must not take a payment webhook down with it — so the promise is
36
+ // swallowed here rather than surfacing inside a diagnostics publish, which runs
37
+ // synchronously inside the charge that triggered it.
38
+ record: (entry) => void store.record(entry).catch(() => { }),
39
+ });
40
+ return watcher;
41
+ }
42
+ catch {
43
+ // Telescope is not in this app. Nothing to do, and nothing to say about it — an app
44
+ // without observability is a normal app, not a misconfigured one.
45
+ return undefined;
46
+ }
47
+ }
48
+ //# sourceMappingURL=register.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../../../src/telescope/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAGhE,MAAM,iBAAiB,GAAG,yBAAyB,CAAC;AAgDpD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,GAAgB,EAChB,OAAO,GAA2B,EAAE;IAEpC,0FAA0F;IAC1F,yFAAyF;IACzF,qFAAqF;IACrF,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,IAAI,CAAC,GAAG,EAAE,CAAC,2BAA2B,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAChG,IAAI,OAAO,EAAE;QAAE,OAAO,SAAS,CAAC;IAEhC,IAAI,CAAC;QACH,MAAM,SAAS,GACb,OAAO,CAAC,eAAe,KAAK,SAAS;YACnC,CAAC,CAAC,MAAM,OAAO,CAAC,eAAe,EAAE;YACjC,CAAC,CAAC,oFAAoF;gBACpF,oFAAoF;gBACpF,iDAAiD;gBAChD,CAAC,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAA8C,CAAC;QAEtF,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAyB,CAAC,CAE7E,CAAC;QACF,MAAM,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC;QAErC,MAAM,OAAO,GACX,OAAO,CAAC,WAAW,KAAK,SAAS;YAC/B,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE;YACvB,CAAC,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;QAEpE,OAAO,CAAC,QAAQ,CAAC;YACf,gFAAgF;YAChF,+EAA+E;YAC/E,gFAAgF;YAChF,qDAAqD;YACrD,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;SAC5D,CAAC,CAAC;QACH,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,oFAAoF;QACpF,kEAAkE;QAClE,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
@@ -0,0 +1,62 @@
1
+ import type { BillingStore } from '../billing/billing_store.js';
2
+ import { PaymentsManager } from '../payments_manager.js';
3
+ import { FakePaymentsDriver } from './fake_payments_driver.js';
4
+ /**
5
+ * A real {@link PaymentsManager} over a {@link FakePaymentsDriver}.
6
+ *
7
+ * Until this existed `./testing` shipped the fake DRIVER and no way to build a manager
8
+ * around it, so every app wrote the same line:
9
+ *
10
+ * ```ts
11
+ * setPayments({ driver: () => fake } as never)
12
+ * ```
13
+ *
14
+ * `as never` is the tell. That object is not a manager: it has no `invoice()` and no
15
+ * `assertCapability()`, so a charge with `invoice: true` and a refund against a gateway
16
+ * that cannot refund both took a path the test could not exercise — the cast erased exactly
17
+ * the two methods whose absence would have been caught.
18
+ *
19
+ * No `methods` routing is configured on purpose: with one driver and no routing, `driver()`
20
+ * returns it unbound, which is what a test wants. Route explicitly if the test is ABOUT
21
+ * routing.
22
+ */
23
+ export declare function fakePayments(driver?: FakePaymentsDriver): PaymentsManager;
24
+ /**
25
+ * Install a manager on the `services/main` singleton and hand back the restore.
26
+ *
27
+ * The restore works when NOTHING was set, which is the normal case in a test that never
28
+ * booted a provider — and the case the hand-rolled save/restore could not express, because
29
+ * saving meant calling a `getPayments()` that throws when nothing is set.
30
+ *
31
+ * ```ts
32
+ * const fake = new FakePaymentsDriver()
33
+ * const restore = swapPayments(fakePayments(fake))
34
+ * afterEach(restore)
35
+ * ```
36
+ */
37
+ export declare function swapPayments(manager: PaymentsManager): () => void;
38
+ /** The same, for the billing store — `InMemoryBillingStore` is the usual argument. */
39
+ export declare function swapBillingStore(store: BillingStore): () => void;
40
+ /**
41
+ * Wait until every webhook this process accepted has finished processing.
42
+ *
43
+ * The gap it closes: with `billing.dispatcher: 'durable'` the delivery resolves when the
44
+ * event is ACCEPTED, not processed, so `await request(...)` returns before anything has
45
+ * happened. Apps papered over it with polling `waitFor` helpers — and could then write a
46
+ * NEGATIVE assertion only as a timed sleep, which is slow when it passes and wrong when the
47
+ * machine is busy.
48
+ *
49
+ * ```ts
50
+ * await client.post('/payments/webhook/asaas').json(payload)
51
+ * await flushWebhooks()
52
+ * expect(await grants.count()).toBe(0) // an assertion, not a sleep
53
+ * ```
54
+ *
55
+ * No-op when the billing layer is off (nothing dispatched, nothing to wait for). Throws on
56
+ * timeout rather than hanging — including the honest case where a separate worker process
57
+ * runs the events and no in-process wait can ever see them.
58
+ */
59
+ export declare function flushWebhooks(options?: {
60
+ timeoutMs?: number;
61
+ }): Promise<void>;
62
+ //# sourceMappingURL=fake_payments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fake_payments.d.ts","sourceRoot":"","sources":["../../../src/testing/fake_payments.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAUzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAC1B,MAAM,GAAE,kBAA6C,GACpD,eAAe,CAEjB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,IAAI,CAOjE;AAED,sFAAsF;AACtF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,IAAI,CAOhE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,aAAa,CAAC,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvF"}
@@ -0,0 +1,82 @@
1
+ import { PaymentsManager } from '../payments_manager.js';
2
+ import { findBillingStore, findPayments, findWebhookDispatcher, resetBillingStore, resetPayments, setBillingStore, setPayments, } from '../services/main.js';
3
+ import { FakePaymentsDriver } from './fake_payments_driver.js';
4
+ /**
5
+ * A real {@link PaymentsManager} over a {@link FakePaymentsDriver}.
6
+ *
7
+ * Until this existed `./testing` shipped the fake DRIVER and no way to build a manager
8
+ * around it, so every app wrote the same line:
9
+ *
10
+ * ```ts
11
+ * setPayments({ driver: () => fake } as never)
12
+ * ```
13
+ *
14
+ * `as never` is the tell. That object is not a manager: it has no `invoice()` and no
15
+ * `assertCapability()`, so a charge with `invoice: true` and a refund against a gateway
16
+ * that cannot refund both took a path the test could not exercise — the cast erased exactly
17
+ * the two methods whose absence would have been caught.
18
+ *
19
+ * No `methods` routing is configured on purpose: with one driver and no routing, `driver()`
20
+ * returns it unbound, which is what a test wants. Route explicitly if the test is ABOUT
21
+ * routing.
22
+ */
23
+ export function fakePayments(driver = new FakePaymentsDriver()) {
24
+ return new PaymentsManager({ drivers: new Map([[driver.provider, driver]]) });
25
+ }
26
+ /**
27
+ * Install a manager on the `services/main` singleton and hand back the restore.
28
+ *
29
+ * The restore works when NOTHING was set, which is the normal case in a test that never
30
+ * booted a provider — and the case the hand-rolled save/restore could not express, because
31
+ * saving meant calling a `getPayments()` that throws when nothing is set.
32
+ *
33
+ * ```ts
34
+ * const fake = new FakePaymentsDriver()
35
+ * const restore = swapPayments(fakePayments(fake))
36
+ * afterEach(restore)
37
+ * ```
38
+ */
39
+ export function swapPayments(manager) {
40
+ const previous = findPayments();
41
+ setPayments(manager);
42
+ return () => {
43
+ if (previous === undefined)
44
+ resetPayments();
45
+ else
46
+ setPayments(previous);
47
+ };
48
+ }
49
+ /** The same, for the billing store — `InMemoryBillingStore` is the usual argument. */
50
+ export function swapBillingStore(store) {
51
+ const previous = findBillingStore();
52
+ setBillingStore(store);
53
+ return () => {
54
+ if (previous === undefined)
55
+ resetBillingStore();
56
+ else
57
+ setBillingStore(previous);
58
+ };
59
+ }
60
+ /**
61
+ * Wait until every webhook this process accepted has finished processing.
62
+ *
63
+ * The gap it closes: with `billing.dispatcher: 'durable'` the delivery resolves when the
64
+ * event is ACCEPTED, not processed, so `await request(...)` returns before anything has
65
+ * happened. Apps papered over it with polling `waitFor` helpers — and could then write a
66
+ * NEGATIVE assertion only as a timed sleep, which is slow when it passes and wrong when the
67
+ * machine is busy.
68
+ *
69
+ * ```ts
70
+ * await client.post('/payments/webhook/asaas').json(payload)
71
+ * await flushWebhooks()
72
+ * expect(await grants.count()).toBe(0) // an assertion, not a sleep
73
+ * ```
74
+ *
75
+ * No-op when the billing layer is off (nothing dispatched, nothing to wait for). Throws on
76
+ * timeout rather than hanging — including the honest case where a separate worker process
77
+ * runs the events and no in-process wait can ever see them.
78
+ */
79
+ export async function flushWebhooks(options = {}) {
80
+ await findWebhookDispatcher()?.flushWebhooks(options);
81
+ }
82
+ //# sourceMappingURL=fake_payments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fake_payments.js","sourceRoot":"","sources":["../../../src/testing/fake_payments.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,YAAY,CAC1B,MAAM,GAAuB,IAAI,kBAAkB,EAAE;IAErD,OAAO,IAAI,eAAe,CAAC,EAAE,OAAO,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAChF,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,YAAY,CAAC,OAAwB;IACnD,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,WAAW,CAAC,OAAO,CAAC,CAAC;IACrB,OAAO,GAAG,EAAE;QACV,IAAI,QAAQ,KAAK,SAAS;YAAE,aAAa,EAAE,CAAC;;YACvC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC,CAAC;AACJ,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,gBAAgB,CAAC,KAAmB;IAClD,MAAM,QAAQ,GAAG,gBAAgB,EAAE,CAAC;IACpC,eAAe,CAAC,KAAK,CAAC,CAAC;IACvB,OAAO,GAAG,EAAE;QACV,IAAI,QAAQ,KAAK,SAAS;YAAE,iBAAiB,EAAE,CAAC;;YAC3C,eAAe,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAO,GAA2B,EAAE;IACtE,MAAM,qBAAqB,EAAE,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;AACxD,CAAC"}
@@ -11,7 +11,7 @@ export interface FakePaymentsDriverOptions {
11
11
  */
12
12
  export declare class FakePaymentsDriver implements PaymentsDriver {
13
13
  readonly provider: string;
14
- readonly supportedMethods: readonly ["pix", "credit_card", "boleto", "debit_card", "undefined"];
14
+ readonly supportedMethods: readonly ['pix', 'credit_card', 'boleto', 'debit_card', 'undefined'];
15
15
  /** Canned webhook events returned by `parseWebhook`, in order. */
16
16
  webhookEvents: WebhookEvent[];
17
17
  createCustomerCalls: {
@@ -1 +1 @@
1
- {"version":3,"file":"fake_payments_driver.d.ts","sourceRoot":"","sources":["../../../src/testing/fake_payments_driver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fake_payments_driver.d.ts","sourceRoot":"","sources":["../../../src/testing/fake_payments_driver.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"fake_payments_driver.js","sourceRoot":"","sources":["../../../src/testing/fake_payments_driver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fake_payments_driver.js","sourceRoot":"","sources":["../../../src/testing/fake_payments_driver.ts"],"names":[],"mappings":"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"}