@spare-technologies/spare-link 0.1.0-beta.1 → 1.0.1

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 (568) hide show
  1. package/README.md +119 -63
  2. package/lib/commonjs/core/models/payment-return-params.js +245 -20
  3. package/lib/commonjs/core/models/payment-return-params.js.map +1 -1
  4. package/lib/commonjs/core/models/pending-session-record.js +2 -0
  5. package/lib/commonjs/core/models/pending-session-record.js.map +1 -0
  6. package/lib/commonjs/core/services/hosted-flow-controller.js +333 -0
  7. package/lib/commonjs/core/services/hosted-flow-controller.js.map +1 -0
  8. package/lib/commonjs/core/services/hosted-flow-state.js +96 -0
  9. package/lib/commonjs/core/services/hosted-flow-state.js.map +1 -0
  10. package/lib/commonjs/index.js +42 -164
  11. package/lib/commonjs/index.js.map +1 -1
  12. package/lib/commonjs/internal/bank-redirect.js +20 -9
  13. package/lib/commonjs/internal/bank-redirect.js.map +1 -1
  14. package/lib/commonjs/internal/hosted/bridge-message.js +107 -0
  15. package/lib/commonjs/internal/hosted/bridge-message.js.map +1 -0
  16. package/lib/commonjs/internal/hosted/hosted-url.js +41 -0
  17. package/lib/commonjs/internal/hosted/hosted-url.js.map +1 -0
  18. package/lib/commonjs/internal/index.js +0 -7
  19. package/lib/commonjs/internal/index.js.map +1 -1
  20. package/lib/commonjs/internal/redact-uri.js +59 -15
  21. package/lib/commonjs/internal/redact-uri.js.map +1 -1
  22. package/lib/commonjs/internal/secure-store-pending-session-store.js +20 -25
  23. package/lib/commonjs/internal/secure-store-pending-session-store.js.map +1 -1
  24. package/lib/commonjs/internal/url-parts.js +145 -0
  25. package/lib/commonjs/internal/url-parts.js.map +1 -0
  26. package/lib/commonjs/public/index.js +0 -37
  27. package/lib/commonjs/public/index.js.map +1 -1
  28. package/lib/commonjs/public/payment-result.js +16 -4
  29. package/lib/commonjs/public/payment-result.js.map +1 -1
  30. package/lib/commonjs/public/recovery-result.js +7 -18
  31. package/lib/commonjs/public/recovery-result.js.map +1 -1
  32. package/lib/commonjs/public/spare-link-config.js +41 -16
  33. package/lib/commonjs/public/spare-link-config.js.map +1 -1
  34. package/lib/commonjs/public/spare-link-event.js +27 -33
  35. package/lib/commonjs/public/spare-link-event.js.map +1 -1
  36. package/lib/commonjs/public/spare-link-instance.js +67 -77
  37. package/lib/commonjs/public/spare-link-instance.js.map +1 -1
  38. package/lib/commonjs/public/spare-link-session.js +2 -9
  39. package/lib/commonjs/public/spare-link-session.js.map +1 -1
  40. package/lib/commonjs/public/spare-link.js +0 -12
  41. package/lib/commonjs/public/spare-link.js.map +1 -1
  42. package/lib/commonjs/ui/hooks/{use-payment-flow-state.js → use-hosted-flow-state.js} +4 -4
  43. package/lib/commonjs/ui/hooks/use-hosted-flow-state.js.map +1 -0
  44. package/lib/commonjs/ui/hosted/hosted-payment-page.js +177 -0
  45. package/lib/commonjs/ui/hosted/hosted-payment-page.js.map +1 -0
  46. package/lib/commonjs/ui/hosted/hosted-payment-webview.js +168 -0
  47. package/lib/commonjs/ui/hosted/hosted-payment-webview.js.map +1 -0
  48. package/lib/commonjs/ui/screens/index.js +3 -17
  49. package/lib/commonjs/ui/screens/index.js.map +1 -1
  50. package/lib/commonjs/ui/screens/page-unavailable-screen.js +101 -0
  51. package/lib/commonjs/ui/screens/page-unavailable-screen.js.map +1 -0
  52. package/lib/commonjs/ui/spare-link-host.js +220 -234
  53. package/lib/commonjs/ui/spare-link-host.js.map +1 -1
  54. package/lib/commonjs/ui/widgets/index.js +3 -10
  55. package/lib/commonjs/ui/widgets/index.js.map +1 -1
  56. package/lib/commonjs/version.js +1 -1
  57. package/lib/commonjs/version.js.map +1 -1
  58. package/lib/module/core/models/payment-return-params.js +235 -20
  59. package/lib/module/core/models/payment-return-params.js.map +1 -1
  60. package/lib/module/core/models/pending-session-record.js +2 -0
  61. package/lib/module/core/models/pending-session-record.js.map +1 -0
  62. package/lib/module/core/services/hosted-flow-controller.js +328 -0
  63. package/lib/module/core/services/hosted-flow-controller.js.map +1 -0
  64. package/lib/module/core/services/hosted-flow-state.js +91 -0
  65. package/lib/module/core/services/hosted-flow-state.js.map +1 -0
  66. package/lib/module/index.js +8 -22
  67. package/lib/module/index.js.map +1 -1
  68. package/lib/module/internal/bank-redirect.js +20 -9
  69. package/lib/module/internal/bank-redirect.js.map +1 -1
  70. package/lib/module/internal/hosted/bridge-message.js +104 -0
  71. package/lib/module/internal/hosted/bridge-message.js.map +1 -0
  72. package/lib/module/internal/hosted/hosted-url.js +36 -0
  73. package/lib/module/internal/hosted/hosted-url.js.map +1 -0
  74. package/lib/module/internal/index.js +0 -1
  75. package/lib/module/internal/index.js.map +1 -1
  76. package/lib/module/internal/redact-uri.js +59 -15
  77. package/lib/module/internal/redact-uri.js.map +1 -1
  78. package/lib/module/internal/secure-store-pending-session-store.js +20 -25
  79. package/lib/module/internal/secure-store-pending-session-store.js.map +1 -1
  80. package/lib/module/internal/url-parts.js +139 -0
  81. package/lib/module/internal/url-parts.js.map +1 -0
  82. package/lib/module/public/index.js +2 -3
  83. package/lib/module/public/index.js.map +1 -1
  84. package/lib/module/public/payment-result.js +16 -4
  85. package/lib/module/public/payment-result.js.map +1 -1
  86. package/lib/module/public/recovery-result.js +7 -17
  87. package/lib/module/public/recovery-result.js.map +1 -1
  88. package/lib/module/public/spare-link-config.js +42 -15
  89. package/lib/module/public/spare-link-config.js.map +1 -1
  90. package/lib/module/public/spare-link-event.js +27 -33
  91. package/lib/module/public/spare-link-event.js.map +1 -1
  92. package/lib/module/public/spare-link-instance.js +68 -72
  93. package/lib/module/public/spare-link-instance.js.map +1 -1
  94. package/lib/module/public/spare-link-session.js +2 -9
  95. package/lib/module/public/spare-link-session.js.map +1 -1
  96. package/lib/module/public/spare-link.js +1 -1
  97. package/lib/module/public/spare-link.js.map +1 -1
  98. package/lib/module/ui/hooks/{use-payment-flow-state.js → use-hosted-flow-state.js} +3 -3
  99. package/lib/module/ui/hooks/use-hosted-flow-state.js.map +1 -0
  100. package/lib/module/ui/hosted/hosted-payment-page.js +175 -0
  101. package/lib/module/ui/hosted/hosted-payment-page.js.map +1 -0
  102. package/lib/module/ui/hosted/hosted-payment-webview.js +163 -0
  103. package/lib/module/ui/hosted/hosted-payment-webview.js.map +1 -0
  104. package/lib/module/ui/screens/index.js +1 -3
  105. package/lib/module/ui/screens/index.js.map +1 -1
  106. package/lib/module/ui/screens/page-unavailable-screen.js +97 -0
  107. package/lib/module/ui/screens/page-unavailable-screen.js.map +1 -0
  108. package/lib/module/ui/spare-link-host.js +221 -236
  109. package/lib/module/ui/spare-link-host.js.map +1 -1
  110. package/lib/module/ui/widgets/index.js +1 -2
  111. package/lib/module/ui/widgets/index.js.map +1 -1
  112. package/lib/module/version.js +1 -1
  113. package/lib/module/version.js.map +1 -1
  114. package/lib/typescript/commonjs/core/models/index.d.ts +1 -123
  115. package/lib/typescript/commonjs/core/models/index.d.ts.map +1 -1
  116. package/lib/typescript/commonjs/core/models/payment-return-params.d.ts +91 -8
  117. package/lib/typescript/commonjs/core/models/payment-return-params.d.ts.map +1 -1
  118. package/lib/typescript/commonjs/core/models/pending-session-record.d.ts +11 -0
  119. package/lib/typescript/commonjs/core/models/pending-session-record.d.ts.map +1 -0
  120. package/lib/typescript/commonjs/core/services/hosted-flow-controller.d.ts +119 -0
  121. package/lib/typescript/commonjs/core/services/hosted-flow-controller.d.ts.map +1 -0
  122. package/lib/typescript/commonjs/core/services/hosted-flow-state.d.ts +75 -0
  123. package/lib/typescript/commonjs/core/services/hosted-flow-state.d.ts.map +1 -0
  124. package/lib/typescript/commonjs/index.d.ts +5 -14
  125. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  126. package/lib/typescript/commonjs/internal/bank-redirect.d.ts.map +1 -1
  127. package/lib/typescript/commonjs/internal/hosted/bridge-message.d.ts +44 -0
  128. package/lib/typescript/commonjs/internal/hosted/bridge-message.d.ts.map +1 -0
  129. package/lib/typescript/commonjs/internal/hosted/hosted-url.d.ts +30 -0
  130. package/lib/typescript/commonjs/internal/hosted/hosted-url.d.ts.map +1 -0
  131. package/lib/typescript/commonjs/internal/index.d.ts +0 -1
  132. package/lib/typescript/commonjs/internal/index.d.ts.map +1 -1
  133. package/lib/typescript/commonjs/internal/redact-uri.d.ts +21 -1
  134. package/lib/typescript/commonjs/internal/redact-uri.d.ts.map +1 -1
  135. package/lib/typescript/commonjs/internal/secure-store-pending-session-store.d.ts +3 -2
  136. package/lib/typescript/commonjs/internal/secure-store-pending-session-store.d.ts.map +1 -1
  137. package/lib/typescript/commonjs/internal/url-parts.d.ts +46 -0
  138. package/lib/typescript/commonjs/internal/url-parts.d.ts.map +1 -0
  139. package/lib/typescript/commonjs/public/index.d.ts +4 -6
  140. package/lib/typescript/commonjs/public/index.d.ts.map +1 -1
  141. package/lib/typescript/commonjs/public/payment-result.d.ts +50 -12
  142. package/lib/typescript/commonjs/public/payment-result.d.ts.map +1 -1
  143. package/lib/typescript/commonjs/public/recovery-result.d.ts +11 -20
  144. package/lib/typescript/commonjs/public/recovery-result.d.ts.map +1 -1
  145. package/lib/typescript/commonjs/public/spare-link-config.d.ts +13 -31
  146. package/lib/typescript/commonjs/public/spare-link-config.d.ts.map +1 -1
  147. package/lib/typescript/commonjs/public/spare-link-event.d.ts +29 -31
  148. package/lib/typescript/commonjs/public/spare-link-event.d.ts.map +1 -1
  149. package/lib/typescript/commonjs/public/spare-link-host-api.d.ts +1 -12
  150. package/lib/typescript/commonjs/public/spare-link-host-api.d.ts.map +1 -1
  151. package/lib/typescript/commonjs/public/spare-link-instance.d.ts +26 -20
  152. package/lib/typescript/commonjs/public/spare-link-instance.d.ts.map +1 -1
  153. package/lib/typescript/commonjs/public/spare-link-session.d.ts +3 -8
  154. package/lib/typescript/commonjs/public/spare-link-session.d.ts.map +1 -1
  155. package/lib/typescript/commonjs/public/spare-link.d.ts +1 -1
  156. package/lib/typescript/commonjs/public/spare-link.d.ts.map +1 -1
  157. package/lib/typescript/commonjs/ui/hooks/use-hosted-flow-state.d.ts +9 -0
  158. package/lib/typescript/commonjs/ui/hooks/use-hosted-flow-state.d.ts.map +1 -0
  159. package/lib/typescript/commonjs/ui/hosted/hosted-payment-page.d.ts +17 -0
  160. package/lib/typescript/commonjs/ui/hosted/hosted-payment-page.d.ts.map +1 -0
  161. package/lib/typescript/commonjs/ui/hosted/hosted-payment-webview.d.ts +43 -0
  162. package/lib/typescript/commonjs/ui/hosted/hosted-payment-webview.d.ts.map +1 -0
  163. package/lib/typescript/commonjs/ui/screens/index.d.ts +1 -3
  164. package/lib/typescript/commonjs/ui/screens/index.d.ts.map +1 -1
  165. package/lib/typescript/commonjs/ui/screens/page-unavailable-screen.d.ts +18 -0
  166. package/lib/typescript/commonjs/ui/screens/page-unavailable-screen.d.ts.map +1 -0
  167. package/lib/typescript/commonjs/ui/spare-link-host.d.ts +4 -5
  168. package/lib/typescript/commonjs/ui/spare-link-host.d.ts.map +1 -1
  169. package/lib/typescript/commonjs/ui/widgets/index.d.ts +1 -2
  170. package/lib/typescript/commonjs/ui/widgets/index.d.ts.map +1 -1
  171. package/lib/typescript/commonjs/version.d.ts +1 -1
  172. package/lib/typescript/commonjs/version.d.ts.map +1 -1
  173. package/lib/typescript/module/core/models/index.d.ts +1 -123
  174. package/lib/typescript/module/core/models/index.d.ts.map +1 -1
  175. package/lib/typescript/module/core/models/payment-return-params.d.ts +91 -8
  176. package/lib/typescript/module/core/models/payment-return-params.d.ts.map +1 -1
  177. package/lib/typescript/module/core/models/pending-session-record.d.ts +11 -0
  178. package/lib/typescript/module/core/models/pending-session-record.d.ts.map +1 -0
  179. package/lib/typescript/module/core/services/hosted-flow-controller.d.ts +119 -0
  180. package/lib/typescript/module/core/services/hosted-flow-controller.d.ts.map +1 -0
  181. package/lib/typescript/module/core/services/hosted-flow-state.d.ts +75 -0
  182. package/lib/typescript/module/core/services/hosted-flow-state.d.ts.map +1 -0
  183. package/lib/typescript/module/index.d.ts +5 -14
  184. package/lib/typescript/module/index.d.ts.map +1 -1
  185. package/lib/typescript/module/internal/bank-redirect.d.ts.map +1 -1
  186. package/lib/typescript/module/internal/hosted/bridge-message.d.ts +44 -0
  187. package/lib/typescript/module/internal/hosted/bridge-message.d.ts.map +1 -0
  188. package/lib/typescript/module/internal/hosted/hosted-url.d.ts +30 -0
  189. package/lib/typescript/module/internal/hosted/hosted-url.d.ts.map +1 -0
  190. package/lib/typescript/module/internal/index.d.ts +0 -1
  191. package/lib/typescript/module/internal/index.d.ts.map +1 -1
  192. package/lib/typescript/module/internal/redact-uri.d.ts +21 -1
  193. package/lib/typescript/module/internal/redact-uri.d.ts.map +1 -1
  194. package/lib/typescript/module/internal/secure-store-pending-session-store.d.ts +3 -2
  195. package/lib/typescript/module/internal/secure-store-pending-session-store.d.ts.map +1 -1
  196. package/lib/typescript/module/internal/url-parts.d.ts +46 -0
  197. package/lib/typescript/module/internal/url-parts.d.ts.map +1 -0
  198. package/lib/typescript/module/public/index.d.ts +4 -6
  199. package/lib/typescript/module/public/index.d.ts.map +1 -1
  200. package/lib/typescript/module/public/payment-result.d.ts +50 -12
  201. package/lib/typescript/module/public/payment-result.d.ts.map +1 -1
  202. package/lib/typescript/module/public/recovery-result.d.ts +11 -20
  203. package/lib/typescript/module/public/recovery-result.d.ts.map +1 -1
  204. package/lib/typescript/module/public/spare-link-config.d.ts +13 -31
  205. package/lib/typescript/module/public/spare-link-config.d.ts.map +1 -1
  206. package/lib/typescript/module/public/spare-link-event.d.ts +29 -31
  207. package/lib/typescript/module/public/spare-link-event.d.ts.map +1 -1
  208. package/lib/typescript/module/public/spare-link-host-api.d.ts +1 -12
  209. package/lib/typescript/module/public/spare-link-host-api.d.ts.map +1 -1
  210. package/lib/typescript/module/public/spare-link-instance.d.ts +26 -20
  211. package/lib/typescript/module/public/spare-link-instance.d.ts.map +1 -1
  212. package/lib/typescript/module/public/spare-link-session.d.ts +3 -8
  213. package/lib/typescript/module/public/spare-link-session.d.ts.map +1 -1
  214. package/lib/typescript/module/public/spare-link.d.ts +1 -1
  215. package/lib/typescript/module/public/spare-link.d.ts.map +1 -1
  216. package/lib/typescript/module/ui/hooks/use-hosted-flow-state.d.ts +9 -0
  217. package/lib/typescript/module/ui/hooks/use-hosted-flow-state.d.ts.map +1 -0
  218. package/lib/typescript/module/ui/hosted/hosted-payment-page.d.ts +17 -0
  219. package/lib/typescript/module/ui/hosted/hosted-payment-page.d.ts.map +1 -0
  220. package/lib/typescript/module/ui/hosted/hosted-payment-webview.d.ts +43 -0
  221. package/lib/typescript/module/ui/hosted/hosted-payment-webview.d.ts.map +1 -0
  222. package/lib/typescript/module/ui/screens/index.d.ts +1 -3
  223. package/lib/typescript/module/ui/screens/index.d.ts.map +1 -1
  224. package/lib/typescript/module/ui/screens/page-unavailable-screen.d.ts +18 -0
  225. package/lib/typescript/module/ui/screens/page-unavailable-screen.d.ts.map +1 -0
  226. package/lib/typescript/module/ui/spare-link-host.d.ts +4 -5
  227. package/lib/typescript/module/ui/spare-link-host.d.ts.map +1 -1
  228. package/lib/typescript/module/ui/widgets/index.d.ts +1 -2
  229. package/lib/typescript/module/ui/widgets/index.d.ts.map +1 -1
  230. package/lib/typescript/module/version.d.ts +1 -1
  231. package/lib/typescript/module/version.d.ts.map +1 -1
  232. package/package.json +24 -22
  233. package/plugins/with-spare-link.js +6 -26
  234. package/src/core/models/index.ts +1 -139
  235. package/src/core/models/payment-return-params.ts +269 -21
  236. package/src/core/models/pending-session-record.ts +10 -0
  237. package/src/core/services/hosted-flow-controller.ts +374 -0
  238. package/src/core/services/hosted-flow-state.ts +123 -0
  239. package/src/index.ts +20 -89
  240. package/src/internal/bank-redirect.ts +23 -9
  241. package/src/internal/hosted/bridge-message.ts +106 -0
  242. package/src/internal/hosted/hosted-url.ts +33 -0
  243. package/src/internal/index.ts +0 -1
  244. package/src/internal/redact-uri.ts +69 -15
  245. package/src/internal/secure-store-pending-session-store.ts +28 -49
  246. package/src/internal/url-parts.ts +134 -0
  247. package/src/public/index.ts +2 -24
  248. package/src/public/payment-result.ts +50 -12
  249. package/src/public/recovery-result.ts +16 -25
  250. package/src/public/spare-link-config.ts +56 -43
  251. package/src/public/spare-link-event.ts +33 -42
  252. package/src/public/spare-link-host-api.ts +1 -14
  253. package/src/public/spare-link-instance.ts +57 -65
  254. package/src/public/spare-link-session.ts +4 -16
  255. package/src/public/spare-link.ts +1 -1
  256. package/src/ui/hooks/use-hosted-flow-state.ts +16 -0
  257. package/src/ui/hosted/hosted-payment-page.tsx +178 -0
  258. package/src/ui/hosted/hosted-payment-webview.tsx +164 -0
  259. package/src/ui/screens/index.ts +4 -6
  260. package/src/ui/screens/page-unavailable-screen.tsx +94 -0
  261. package/src/ui/spare-link-host.tsx +227 -247
  262. package/src/ui/widgets/index.ts +1 -2
  263. package/src/version.ts +1 -1
  264. package/CHANGELOG.md +0 -25
  265. package/lib/commonjs/core/client/link-api-client.js +0 -297
  266. package/lib/commonjs/core/client/link-api-client.js.map +0 -1
  267. package/lib/commonjs/core/errors/payment-api-error.js +0 -35
  268. package/lib/commonjs/core/errors/payment-api-error.js.map +0 -1
  269. package/lib/commonjs/core/models/link-session-status.js +0 -14
  270. package/lib/commonjs/core/models/link-session-status.js.map +0 -1
  271. package/lib/commonjs/core/models/payment-type.js +0 -45
  272. package/lib/commonjs/core/models/payment-type.js.map +0 -1
  273. package/lib/commonjs/core/models/wire-mappers.js +0 -277
  274. package/lib/commonjs/core/models/wire-mappers.js.map +0 -1
  275. package/lib/commonjs/core/services/consent-presenter.js +0 -150
  276. package/lib/commonjs/core/services/consent-presenter.js.map +0 -1
  277. package/lib/commonjs/core/services/execute-resume-if-needed.js +0 -216
  278. package/lib/commonjs/core/services/execute-resume-if-needed.js.map +0 -1
  279. package/lib/commonjs/core/services/multi-payment-rules-presenter.js +0 -151
  280. package/lib/commonjs/core/services/multi-payment-rules-presenter.js.map +0 -1
  281. package/lib/commonjs/core/services/payment-flow-controller.js +0 -547
  282. package/lib/commonjs/core/services/payment-flow-controller.js.map +0 -1
  283. package/lib/commonjs/core/services/payment-flow-state.js +0 -110
  284. package/lib/commonjs/core/services/payment-flow-state.js.map +0 -1
  285. package/lib/commonjs/core/services/payment-result-mapper.js +0 -49
  286. package/lib/commonjs/core/services/payment-result-mapper.js.map +0 -1
  287. package/lib/commonjs/core/services/presentation-utils.js +0 -11
  288. package/lib/commonjs/core/services/presentation-utils.js.map +0 -1
  289. package/lib/commonjs/core/services/redirect-buffer.js +0 -40
  290. package/lib/commonjs/core/services/redirect-buffer.js.map +0 -1
  291. package/lib/commonjs/core/services/user-friendly-messages.js +0 -46
  292. package/lib/commonjs/core/services/user-friendly-messages.js.map +0 -1
  293. package/lib/commonjs/internal/telemetry-collector.js +0 -80
  294. package/lib/commonjs/internal/telemetry-collector.js.map +0 -1
  295. package/lib/commonjs/public/constants.js +0 -21
  296. package/lib/commonjs/public/constants.js.map +0 -1
  297. package/lib/commonjs/public/spare-link-callbacks.js +0 -6
  298. package/lib/commonjs/public/spare-link-callbacks.js.map +0 -1
  299. package/lib/commonjs/ui/consent/charge-bearer-display.js +0 -99
  300. package/lib/commonjs/ui/consent/charge-bearer-display.js.map +0 -1
  301. package/lib/commonjs/ui/consent/consent-accordion.js +0 -94
  302. package/lib/commonjs/ui/consent/consent-accordion.js.map +0 -1
  303. package/lib/commonjs/ui/consent/consent-summary-section.js +0 -27
  304. package/lib/commonjs/ui/consent/consent-summary-section.js.map +0 -1
  305. package/lib/commonjs/ui/consent/cop-information.js +0 -168
  306. package/lib/commonjs/ui/consent/cop-information.js.map +0 -1
  307. package/lib/commonjs/ui/consent/international-payment-summary.js +0 -98
  308. package/lib/commonjs/ui/consent/international-payment-summary.js.map +0 -1
  309. package/lib/commonjs/ui/consent/label-value-rows.js +0 -59
  310. package/lib/commonjs/ui/consent/label-value-rows.js.map +0 -1
  311. package/lib/commonjs/ui/consent/multi-payment-rules-list.js +0 -130
  312. package/lib/commonjs/ui/consent/multi-payment-rules-list.js.map +0 -1
  313. package/lib/commonjs/ui/consent/multi-payment-summary.js +0 -99
  314. package/lib/commonjs/ui/consent/multi-payment-summary.js.map +0 -1
  315. package/lib/commonjs/ui/consent/single-payment-summary.js +0 -158
  316. package/lib/commonjs/ui/consent/single-payment-summary.js.map +0 -1
  317. package/lib/commonjs/ui/consent/terms-link.js +0 -35
  318. package/lib/commonjs/ui/consent/terms-link.js.map +0 -1
  319. package/lib/commonjs/ui/hooks/use-payment-flow-state.js.map +0 -1
  320. package/lib/commonjs/ui/payment-flow-page.js +0 -235
  321. package/lib/commonjs/ui/payment-flow-page.js.map +0 -1
  322. package/lib/commonjs/ui/screens/bank-selection-screen.js +0 -215
  323. package/lib/commonjs/ui/screens/bank-selection-screen.js.map +0 -1
  324. package/lib/commonjs/ui/screens/consent-details-screen.js +0 -124
  325. package/lib/commonjs/ui/screens/consent-details-screen.js.map +0 -1
  326. package/lib/commonjs/ui/screens/mandate-setup-success-screen.js +0 -79
  327. package/lib/commonjs/ui/screens/mandate-setup-success-screen.js.map +0 -1
  328. package/lib/commonjs/ui/widgets/layout-w-header.js +0 -106
  329. package/lib/commonjs/ui/widgets/layout-w-header.js.map +0 -1
  330. package/lib/commonjs/ui/widgets/stepper.js +0 -124
  331. package/lib/commonjs/ui/widgets/stepper.js.map +0 -1
  332. package/lib/module/core/client/link-api-client.js +0 -292
  333. package/lib/module/core/client/link-api-client.js.map +0 -1
  334. package/lib/module/core/errors/payment-api-error.js +0 -29
  335. package/lib/module/core/errors/payment-api-error.js.map +0 -1
  336. package/lib/module/core/models/link-session-status.js +0 -10
  337. package/lib/module/core/models/link-session-status.js.map +0 -1
  338. package/lib/module/core/models/payment-type.js +0 -36
  339. package/lib/module/core/models/payment-type.js.map +0 -1
  340. package/lib/module/core/models/wire-mappers.js +0 -263
  341. package/lib/module/core/models/wire-mappers.js.map +0 -1
  342. package/lib/module/core/services/consent-presenter.js +0 -140
  343. package/lib/module/core/services/consent-presenter.js.map +0 -1
  344. package/lib/module/core/services/execute-resume-if-needed.js +0 -211
  345. package/lib/module/core/services/execute-resume-if-needed.js.map +0 -1
  346. package/lib/module/core/services/multi-payment-rules-presenter.js +0 -146
  347. package/lib/module/core/services/multi-payment-rules-presenter.js.map +0 -1
  348. package/lib/module/core/services/payment-flow-controller.js +0 -544
  349. package/lib/module/core/services/payment-flow-controller.js.map +0 -1
  350. package/lib/module/core/services/payment-flow-state.js +0 -106
  351. package/lib/module/core/services/payment-flow-state.js.map +0 -1
  352. package/lib/module/core/services/payment-result-mapper.js +0 -45
  353. package/lib/module/core/services/payment-result-mapper.js.map +0 -1
  354. package/lib/module/core/services/presentation-utils.js +0 -7
  355. package/lib/module/core/services/presentation-utils.js.map +0 -1
  356. package/lib/module/core/services/redirect-buffer.js +0 -33
  357. package/lib/module/core/services/redirect-buffer.js.map +0 -1
  358. package/lib/module/core/services/user-friendly-messages.js +0 -42
  359. package/lib/module/core/services/user-friendly-messages.js.map +0 -1
  360. package/lib/module/internal/telemetry-collector.js +0 -75
  361. package/lib/module/internal/telemetry-collector.js.map +0 -1
  362. package/lib/module/public/constants.js +0 -17
  363. package/lib/module/public/constants.js.map +0 -1
  364. package/lib/module/public/spare-link-callbacks.js +0 -4
  365. package/lib/module/public/spare-link-callbacks.js.map +0 -1
  366. package/lib/module/ui/consent/charge-bearer-display.js +0 -95
  367. package/lib/module/ui/consent/charge-bearer-display.js.map +0 -1
  368. package/lib/module/ui/consent/consent-accordion.js +0 -90
  369. package/lib/module/ui/consent/consent-accordion.js.map +0 -1
  370. package/lib/module/ui/consent/consent-summary-section.js +0 -23
  371. package/lib/module/ui/consent/consent-summary-section.js.map +0 -1
  372. package/lib/module/ui/consent/cop-information.js +0 -165
  373. package/lib/module/ui/consent/cop-information.js.map +0 -1
  374. package/lib/module/ui/consent/international-payment-summary.js +0 -94
  375. package/lib/module/ui/consent/international-payment-summary.js.map +0 -1
  376. package/lib/module/ui/consent/label-value-rows.js +0 -55
  377. package/lib/module/ui/consent/label-value-rows.js.map +0 -1
  378. package/lib/module/ui/consent/multi-payment-rules-list.js +0 -125
  379. package/lib/module/ui/consent/multi-payment-rules-list.js.map +0 -1
  380. package/lib/module/ui/consent/multi-payment-summary.js +0 -95
  381. package/lib/module/ui/consent/multi-payment-summary.js.map +0 -1
  382. package/lib/module/ui/consent/single-payment-summary.js +0 -154
  383. package/lib/module/ui/consent/single-payment-summary.js.map +0 -1
  384. package/lib/module/ui/consent/terms-link.js +0 -31
  385. package/lib/module/ui/consent/terms-link.js.map +0 -1
  386. package/lib/module/ui/hooks/use-payment-flow-state.js.map +0 -1
  387. package/lib/module/ui/payment-flow-page.js +0 -232
  388. package/lib/module/ui/payment-flow-page.js.map +0 -1
  389. package/lib/module/ui/screens/bank-selection-screen.js +0 -211
  390. package/lib/module/ui/screens/bank-selection-screen.js.map +0 -1
  391. package/lib/module/ui/screens/consent-details-screen.js +0 -120
  392. package/lib/module/ui/screens/consent-details-screen.js.map +0 -1
  393. package/lib/module/ui/screens/mandate-setup-success-screen.js +0 -75
  394. package/lib/module/ui/screens/mandate-setup-success-screen.js.map +0 -1
  395. package/lib/module/ui/widgets/layout-w-header.js +0 -102
  396. package/lib/module/ui/widgets/layout-w-header.js.map +0 -1
  397. package/lib/module/ui/widgets/stepper.js +0 -120
  398. package/lib/module/ui/widgets/stepper.js.map +0 -1
  399. package/lib/typescript/commonjs/core/client/link-api-client.d.ts +0 -70
  400. package/lib/typescript/commonjs/core/client/link-api-client.d.ts.map +0 -1
  401. package/lib/typescript/commonjs/core/errors/payment-api-error.d.ts +0 -15
  402. package/lib/typescript/commonjs/core/errors/payment-api-error.d.ts.map +0 -1
  403. package/lib/typescript/commonjs/core/models/link-session-status.d.ts +0 -6
  404. package/lib/typescript/commonjs/core/models/link-session-status.d.ts.map +0 -1
  405. package/lib/typescript/commonjs/core/models/payment-type.d.ts +0 -18
  406. package/lib/typescript/commonjs/core/models/payment-type.d.ts.map +0 -1
  407. package/lib/typescript/commonjs/core/models/wire-mappers.d.ts +0 -19
  408. package/lib/typescript/commonjs/core/models/wire-mappers.d.ts.map +0 -1
  409. package/lib/typescript/commonjs/core/services/consent-presenter.d.ts +0 -67
  410. package/lib/typescript/commonjs/core/services/consent-presenter.d.ts.map +0 -1
  411. package/lib/typescript/commonjs/core/services/execute-resume-if-needed.d.ts +0 -32
  412. package/lib/typescript/commonjs/core/services/execute-resume-if-needed.d.ts.map +0 -1
  413. package/lib/typescript/commonjs/core/services/multi-payment-rules-presenter.d.ts +0 -9
  414. package/lib/typescript/commonjs/core/services/multi-payment-rules-presenter.d.ts.map +0 -1
  415. package/lib/typescript/commonjs/core/services/payment-flow-controller.d.ts +0 -146
  416. package/lib/typescript/commonjs/core/services/payment-flow-controller.d.ts.map +0 -1
  417. package/lib/typescript/commonjs/core/services/payment-flow-state.d.ts +0 -64
  418. package/lib/typescript/commonjs/core/services/payment-flow-state.d.ts.map +0 -1
  419. package/lib/typescript/commonjs/core/services/payment-result-mapper.d.ts +0 -5
  420. package/lib/typescript/commonjs/core/services/payment-result-mapper.d.ts.map +0 -1
  421. package/lib/typescript/commonjs/core/services/presentation-utils.d.ts +0 -5
  422. package/lib/typescript/commonjs/core/services/presentation-utils.d.ts.map +0 -1
  423. package/lib/typescript/commonjs/core/services/redirect-buffer.d.ts +0 -6
  424. package/lib/typescript/commonjs/core/services/redirect-buffer.d.ts.map +0 -1
  425. package/lib/typescript/commonjs/core/services/user-friendly-messages.d.ts +0 -6
  426. package/lib/typescript/commonjs/core/services/user-friendly-messages.d.ts.map +0 -1
  427. package/lib/typescript/commonjs/internal/telemetry-collector.d.ts +0 -2
  428. package/lib/typescript/commonjs/internal/telemetry-collector.d.ts.map +0 -1
  429. package/lib/typescript/commonjs/public/constants.d.ts +0 -12
  430. package/lib/typescript/commonjs/public/constants.d.ts.map +0 -1
  431. package/lib/typescript/commonjs/public/spare-link-callbacks.d.ts +0 -14
  432. package/lib/typescript/commonjs/public/spare-link-callbacks.d.ts.map +0 -1
  433. package/lib/typescript/commonjs/ui/consent/charge-bearer-display.d.ts +0 -5
  434. package/lib/typescript/commonjs/ui/consent/charge-bearer-display.d.ts.map +0 -1
  435. package/lib/typescript/commonjs/ui/consent/consent-accordion.d.ts +0 -10
  436. package/lib/typescript/commonjs/ui/consent/consent-accordion.d.ts.map +0 -1
  437. package/lib/typescript/commonjs/ui/consent/consent-summary-section.d.ts +0 -6
  438. package/lib/typescript/commonjs/ui/consent/consent-summary-section.d.ts.map +0 -1
  439. package/lib/typescript/commonjs/ui/consent/cop-information.d.ts +0 -6
  440. package/lib/typescript/commonjs/ui/consent/cop-information.d.ts.map +0 -1
  441. package/lib/typescript/commonjs/ui/consent/international-payment-summary.d.ts +0 -6
  442. package/lib/typescript/commonjs/ui/consent/international-payment-summary.d.ts.map +0 -1
  443. package/lib/typescript/commonjs/ui/consent/label-value-rows.d.ts +0 -10
  444. package/lib/typescript/commonjs/ui/consent/label-value-rows.d.ts.map +0 -1
  445. package/lib/typescript/commonjs/ui/consent/multi-payment-rules-list.d.ts +0 -15
  446. package/lib/typescript/commonjs/ui/consent/multi-payment-rules-list.d.ts.map +0 -1
  447. package/lib/typescript/commonjs/ui/consent/multi-payment-summary.d.ts +0 -6
  448. package/lib/typescript/commonjs/ui/consent/multi-payment-summary.d.ts.map +0 -1
  449. package/lib/typescript/commonjs/ui/consent/single-payment-summary.d.ts +0 -6
  450. package/lib/typescript/commonjs/ui/consent/single-payment-summary.d.ts.map +0 -1
  451. package/lib/typescript/commonjs/ui/consent/terms-link.d.ts +0 -2
  452. package/lib/typescript/commonjs/ui/consent/terms-link.d.ts.map +0 -1
  453. package/lib/typescript/commonjs/ui/hooks/use-payment-flow-state.d.ts +0 -9
  454. package/lib/typescript/commonjs/ui/hooks/use-payment-flow-state.d.ts.map +0 -1
  455. package/lib/typescript/commonjs/ui/payment-flow-page.d.ts +0 -20
  456. package/lib/typescript/commonjs/ui/payment-flow-page.d.ts.map +0 -1
  457. package/lib/typescript/commonjs/ui/screens/bank-selection-screen.d.ts +0 -15
  458. package/lib/typescript/commonjs/ui/screens/bank-selection-screen.d.ts.map +0 -1
  459. package/lib/typescript/commonjs/ui/screens/consent-details-screen.d.ts +0 -13
  460. package/lib/typescript/commonjs/ui/screens/consent-details-screen.d.ts.map +0 -1
  461. package/lib/typescript/commonjs/ui/screens/mandate-setup-success-screen.d.ts +0 -10
  462. package/lib/typescript/commonjs/ui/screens/mandate-setup-success-screen.d.ts.map +0 -1
  463. package/lib/typescript/commonjs/ui/widgets/layout-w-header.d.ts +0 -20
  464. package/lib/typescript/commonjs/ui/widgets/layout-w-header.d.ts.map +0 -1
  465. package/lib/typescript/commonjs/ui/widgets/stepper.d.ts +0 -15
  466. package/lib/typescript/commonjs/ui/widgets/stepper.d.ts.map +0 -1
  467. package/lib/typescript/module/core/client/link-api-client.d.ts +0 -70
  468. package/lib/typescript/module/core/client/link-api-client.d.ts.map +0 -1
  469. package/lib/typescript/module/core/errors/payment-api-error.d.ts +0 -15
  470. package/lib/typescript/module/core/errors/payment-api-error.d.ts.map +0 -1
  471. package/lib/typescript/module/core/models/link-session-status.d.ts +0 -6
  472. package/lib/typescript/module/core/models/link-session-status.d.ts.map +0 -1
  473. package/lib/typescript/module/core/models/payment-type.d.ts +0 -18
  474. package/lib/typescript/module/core/models/payment-type.d.ts.map +0 -1
  475. package/lib/typescript/module/core/models/wire-mappers.d.ts +0 -19
  476. package/lib/typescript/module/core/models/wire-mappers.d.ts.map +0 -1
  477. package/lib/typescript/module/core/services/consent-presenter.d.ts +0 -67
  478. package/lib/typescript/module/core/services/consent-presenter.d.ts.map +0 -1
  479. package/lib/typescript/module/core/services/execute-resume-if-needed.d.ts +0 -32
  480. package/lib/typescript/module/core/services/execute-resume-if-needed.d.ts.map +0 -1
  481. package/lib/typescript/module/core/services/multi-payment-rules-presenter.d.ts +0 -9
  482. package/lib/typescript/module/core/services/multi-payment-rules-presenter.d.ts.map +0 -1
  483. package/lib/typescript/module/core/services/payment-flow-controller.d.ts +0 -146
  484. package/lib/typescript/module/core/services/payment-flow-controller.d.ts.map +0 -1
  485. package/lib/typescript/module/core/services/payment-flow-state.d.ts +0 -64
  486. package/lib/typescript/module/core/services/payment-flow-state.d.ts.map +0 -1
  487. package/lib/typescript/module/core/services/payment-result-mapper.d.ts +0 -5
  488. package/lib/typescript/module/core/services/payment-result-mapper.d.ts.map +0 -1
  489. package/lib/typescript/module/core/services/presentation-utils.d.ts +0 -5
  490. package/lib/typescript/module/core/services/presentation-utils.d.ts.map +0 -1
  491. package/lib/typescript/module/core/services/redirect-buffer.d.ts +0 -6
  492. package/lib/typescript/module/core/services/redirect-buffer.d.ts.map +0 -1
  493. package/lib/typescript/module/core/services/user-friendly-messages.d.ts +0 -6
  494. package/lib/typescript/module/core/services/user-friendly-messages.d.ts.map +0 -1
  495. package/lib/typescript/module/internal/telemetry-collector.d.ts +0 -2
  496. package/lib/typescript/module/internal/telemetry-collector.d.ts.map +0 -1
  497. package/lib/typescript/module/public/constants.d.ts +0 -12
  498. package/lib/typescript/module/public/constants.d.ts.map +0 -1
  499. package/lib/typescript/module/public/spare-link-callbacks.d.ts +0 -14
  500. package/lib/typescript/module/public/spare-link-callbacks.d.ts.map +0 -1
  501. package/lib/typescript/module/ui/consent/charge-bearer-display.d.ts +0 -5
  502. package/lib/typescript/module/ui/consent/charge-bearer-display.d.ts.map +0 -1
  503. package/lib/typescript/module/ui/consent/consent-accordion.d.ts +0 -10
  504. package/lib/typescript/module/ui/consent/consent-accordion.d.ts.map +0 -1
  505. package/lib/typescript/module/ui/consent/consent-summary-section.d.ts +0 -6
  506. package/lib/typescript/module/ui/consent/consent-summary-section.d.ts.map +0 -1
  507. package/lib/typescript/module/ui/consent/cop-information.d.ts +0 -6
  508. package/lib/typescript/module/ui/consent/cop-information.d.ts.map +0 -1
  509. package/lib/typescript/module/ui/consent/international-payment-summary.d.ts +0 -6
  510. package/lib/typescript/module/ui/consent/international-payment-summary.d.ts.map +0 -1
  511. package/lib/typescript/module/ui/consent/label-value-rows.d.ts +0 -10
  512. package/lib/typescript/module/ui/consent/label-value-rows.d.ts.map +0 -1
  513. package/lib/typescript/module/ui/consent/multi-payment-rules-list.d.ts +0 -15
  514. package/lib/typescript/module/ui/consent/multi-payment-rules-list.d.ts.map +0 -1
  515. package/lib/typescript/module/ui/consent/multi-payment-summary.d.ts +0 -6
  516. package/lib/typescript/module/ui/consent/multi-payment-summary.d.ts.map +0 -1
  517. package/lib/typescript/module/ui/consent/single-payment-summary.d.ts +0 -6
  518. package/lib/typescript/module/ui/consent/single-payment-summary.d.ts.map +0 -1
  519. package/lib/typescript/module/ui/consent/terms-link.d.ts +0 -2
  520. package/lib/typescript/module/ui/consent/terms-link.d.ts.map +0 -1
  521. package/lib/typescript/module/ui/hooks/use-payment-flow-state.d.ts +0 -9
  522. package/lib/typescript/module/ui/hooks/use-payment-flow-state.d.ts.map +0 -1
  523. package/lib/typescript/module/ui/payment-flow-page.d.ts +0 -20
  524. package/lib/typescript/module/ui/payment-flow-page.d.ts.map +0 -1
  525. package/lib/typescript/module/ui/screens/bank-selection-screen.d.ts +0 -15
  526. package/lib/typescript/module/ui/screens/bank-selection-screen.d.ts.map +0 -1
  527. package/lib/typescript/module/ui/screens/consent-details-screen.d.ts +0 -13
  528. package/lib/typescript/module/ui/screens/consent-details-screen.d.ts.map +0 -1
  529. package/lib/typescript/module/ui/screens/mandate-setup-success-screen.d.ts +0 -10
  530. package/lib/typescript/module/ui/screens/mandate-setup-success-screen.d.ts.map +0 -1
  531. package/lib/typescript/module/ui/widgets/layout-w-header.d.ts +0 -20
  532. package/lib/typescript/module/ui/widgets/layout-w-header.d.ts.map +0 -1
  533. package/lib/typescript/module/ui/widgets/stepper.d.ts +0 -15
  534. package/lib/typescript/module/ui/widgets/stepper.d.ts.map +0 -1
  535. package/src/core/client/link-api-client.ts +0 -414
  536. package/src/core/errors/payment-api-error.ts +0 -35
  537. package/src/core/models/link-session-status.ts +0 -7
  538. package/src/core/models/payment-type.ts +0 -54
  539. package/src/core/models/wire-mappers.ts +0 -315
  540. package/src/core/services/consent-presenter.ts +0 -213
  541. package/src/core/services/execute-resume-if-needed.ts +0 -243
  542. package/src/core/services/multi-payment-rules-presenter.ts +0 -158
  543. package/src/core/services/payment-flow-controller.ts +0 -607
  544. package/src/core/services/payment-flow-state.ts +0 -124
  545. package/src/core/services/payment-result-mapper.ts +0 -41
  546. package/src/core/services/presentation-utils.ts +0 -4
  547. package/src/core/services/redirect-buffer.ts +0 -34
  548. package/src/core/services/user-friendly-messages.ts +0 -39
  549. package/src/internal/telemetry-collector.ts +0 -90
  550. package/src/public/constants.ts +0 -14
  551. package/src/public/spare-link-callbacks.ts +0 -20
  552. package/src/ui/consent/charge-bearer-display.tsx +0 -68
  553. package/src/ui/consent/consent-accordion.tsx +0 -89
  554. package/src/ui/consent/consent-summary-section.tsx +0 -19
  555. package/src/ui/consent/cop-information.tsx +0 -121
  556. package/src/ui/consent/international-payment-summary.tsx +0 -83
  557. package/src/ui/consent/label-value-rows.tsx +0 -50
  558. package/src/ui/consent/multi-payment-rules-list.tsx +0 -138
  559. package/src/ui/consent/multi-payment-summary.tsx +0 -82
  560. package/src/ui/consent/single-payment-summary.tsx +0 -123
  561. package/src/ui/consent/terms-link.tsx +0 -27
  562. package/src/ui/hooks/use-payment-flow-state.ts +0 -16
  563. package/src/ui/payment-flow-page.tsx +0 -254
  564. package/src/ui/screens/bank-selection-screen.tsx +0 -209
  565. package/src/ui/screens/consent-details-screen.tsx +0 -106
  566. package/src/ui/screens/mandate-setup-success-screen.tsx +0 -72
  567. package/src/ui/widgets/layout-w-header.tsx +0 -89
  568. package/src/ui/widgets/stepper.tsx +0 -126
@@ -1,124 +0,0 @@
1
- import type { ConsentResponse, CopResponse, LinkSessionResponse, ProviderSummary } from '../models';
2
-
3
- /** Phases the payment flow controller transitions through. */
4
- export type PaymentFlowPhase =
5
- | 'idle'
6
- | 'hydrating'
7
- | 'bankSelection'
8
- | 'consentDetails'
9
- | 'redirecting'
10
- | 'awaitingCallback'
11
- | 'succeeded'
12
- | 'failed'
13
- | 'cancelled';
14
-
15
- export interface PaymentFlowState {
16
- phase: PaymentFlowPhase;
17
- session?: LinkSessionResponse;
18
- providers: ProviderSummary[];
19
- selectedProvider?: ProviderSummary;
20
- consent?: ConsentResponse;
21
- /** Confirmation-of-Payee result, threaded into the consentDetails phase. */
22
- copResponse?: CopResponse;
23
- /** True while Confirmation-of-Payee is loading for domestic SIP. */
24
- isCopLoading?: boolean;
25
- /**
26
- * True when this session was actually eligible for Confirmation-of-Payee
27
- * (UAE tenant, unverified, payment type supports it) — as opposed to
28
- * merely supporting it by payment type. Lets the presenter distinguish
29
- * "not applicable" from "was attempted but the response never arrived".
30
- */
31
- copApplicable?: boolean;
32
- exchangeCode?: string;
33
- linkSessionId?: string;
34
- merchantRef?: string;
35
- errorCode?: string;
36
- errorMessage?: string;
37
- providerName?: string;
38
- }
39
-
40
- const EMPTY_PROVIDERS: ProviderSummary[] = [];
41
-
42
- export const PaymentFlowStates = {
43
- idle(): PaymentFlowState {
44
- return { phase: 'idle', providers: EMPTY_PROVIDERS };
45
- },
46
- hydrating(): PaymentFlowState {
47
- return { phase: 'hydrating', providers: EMPTY_PROVIDERS };
48
- },
49
- bankSelection(args: {
50
- session: LinkSessionResponse;
51
- providers: ProviderSummary[];
52
- }): PaymentFlowState {
53
- return { phase: 'bankSelection', session: args.session, providers: args.providers };
54
- },
55
- consentDetails(args: {
56
- session: LinkSessionResponse;
57
- selectedProvider: ProviderSummary;
58
- copResponse?: CopResponse;
59
- isCopLoading?: boolean;
60
- copApplicable?: boolean;
61
- }): PaymentFlowState {
62
- return {
63
- phase: 'consentDetails',
64
- session: args.session,
65
- providers: EMPTY_PROVIDERS,
66
- selectedProvider: args.selectedProvider,
67
- ...(args.copResponse ? { copResponse: args.copResponse } : {}),
68
- ...(args.isCopLoading !== undefined ? { isCopLoading: args.isCopLoading } : {}),
69
- ...(args.copApplicable !== undefined ? { copApplicable: args.copApplicable } : {}),
70
- };
71
- },
72
- redirecting(args: {
73
- consent: ConsentResponse;
74
- selectedProvider?: ProviderSummary;
75
- }): PaymentFlowState {
76
- return {
77
- phase: 'redirecting',
78
- providers: EMPTY_PROVIDERS,
79
- consent: args.consent,
80
- ...(args.selectedProvider ? { selectedProvider: args.selectedProvider } : {}),
81
- };
82
- },
83
- awaitingCallback(args: {
84
- providerName?: string;
85
- session?: LinkSessionResponse;
86
- selectedProvider?: ProviderSummary;
87
- }): PaymentFlowState {
88
- return {
89
- phase: 'awaitingCallback',
90
- providers: EMPTY_PROVIDERS,
91
- ...(args.providerName ? { providerName: args.providerName } : {}),
92
- ...(args.session ? { session: args.session } : {}),
93
- ...(args.selectedProvider ? { selectedProvider: args.selectedProvider } : {}),
94
- };
95
- },
96
- succeeded(args: {
97
- exchangeCode?: string;
98
- linkSessionId?: string;
99
- merchantRef?: string;
100
- selectedProvider?: ProviderSummary;
101
- session?: LinkSessionResponse;
102
- }): PaymentFlowState {
103
- return {
104
- phase: 'succeeded',
105
- providers: EMPTY_PROVIDERS,
106
- ...(args.exchangeCode ? { exchangeCode: args.exchangeCode } : {}),
107
- ...(args.linkSessionId ? { linkSessionId: args.linkSessionId } : {}),
108
- ...(args.merchantRef ? { merchantRef: args.merchantRef } : {}),
109
- ...(args.selectedProvider ? { selectedProvider: args.selectedProvider } : {}),
110
- ...(args.session ? { session: args.session } : {}),
111
- };
112
- },
113
- failed(args: { errorCode: string; errorMessage?: string }): PaymentFlowState {
114
- return {
115
- phase: 'failed',
116
- providers: EMPTY_PROVIDERS,
117
- errorCode: args.errorCode,
118
- ...(args.errorMessage ? { errorMessage: args.errorMessage } : {}),
119
- };
120
- },
121
- cancelled(): PaymentFlowState {
122
- return { phase: 'cancelled', providers: EMPTY_PROVIDERS };
123
- },
124
- } as const;
@@ -1,41 +0,0 @@
1
- import type { PaymentResult } from '../../public/payment-result';
2
- import {
3
- paymentAbandoned,
4
- paymentCancelled,
5
- paymentFailed,
6
- paymentSuccess,
7
- } from '../../public/payment-result';
8
- import type { PaymentFlowState } from './payment-flow-state';
9
-
10
- /** Map a terminal controller state to a {@link PaymentResult}. */
11
- export function paymentResultFromFlowState(
12
- state: PaymentFlowState,
13
- linkToken: string,
14
- bankId?: string,
15
- ): PaymentResult | null {
16
- const resolvedBankId = bankId ?? state.selectedProvider?.id;
17
- switch (state.phase) {
18
- case 'succeeded':
19
- return paymentSuccess({
20
- linkToken,
21
- ...(state.exchangeCode ? { exchangeCode: state.exchangeCode } : {}),
22
- ...(state.linkSessionId ? { linkSessionId: state.linkSessionId } : {}),
23
- ...(state.merchantRef ? { merchantRef: state.merchantRef } : {}),
24
- ...(resolvedBankId ? { bankId: resolvedBankId } : {}),
25
- resolvedAtMs: Date.now(),
26
- });
27
- case 'failed':
28
- return paymentFailed({
29
- linkToken,
30
- errorCode: state.errorCode ?? 'unknown_error',
31
- resolvedAtMs: Date.now(),
32
- });
33
- case 'cancelled':
34
- return paymentCancelled({
35
- linkToken,
36
- ...(resolvedBankId ? { bankId: resolvedBankId } : {}),
37
- resolvedAtMs: Date.now(),
38
- });
39
- }
40
- return paymentAbandoned({ linkToken, resolvedAtMs: Date.now() });
41
- }
@@ -1,4 +0,0 @@
1
- export function formatAmount(value: { amount: string; currency: string } | undefined): string {
2
- if (!value) return '—';
3
- return `${value.amount} ${value.currency}`;
4
- }
@@ -1,34 +0,0 @@
1
- /** Module-level buffer for a bank-return URI received before a flow is active. */
2
- interface BufferedRedirect {
3
- uri: string;
4
- }
5
-
6
- let buffered: BufferedRedirect | null = null;
7
- /** Fingerprint of the last consumed URI — blocks re-buffer after consume / double-delivery. */
8
- let lastHandledUri: string | null = null;
9
-
10
- export function setBufferedRedirect(uri: string): void {
11
- if (uri === buffered?.uri || uri === lastHandledUri) {
12
- return;
13
- }
14
- buffered = { uri };
15
- }
16
-
17
- export function peekBufferedRedirect(): string | null {
18
- return buffered?.uri ?? null;
19
- }
20
-
21
- export function consumeBufferedRedirect(): string | null {
22
- const value = buffered?.uri ?? null;
23
- buffered = null;
24
- if (value) {
25
- lastHandledUri = value;
26
- }
27
- return value;
28
- }
29
-
30
- /** @internal Clears buffer state between tests. */
31
- export function resetRedirectBufferForTests(): void {
32
- buffered = null;
33
- lastHandledUri = null;
34
- }
@@ -1,39 +0,0 @@
1
- /**
2
- * Maps machine-readable error codes to safe user-facing copy.
3
- * Raw backend or bank messages must never be shown directly.
4
- */
5
- export function userFriendlyMessageFor(errorCode: string): string {
6
- switch (errorCode) {
7
- case 'network_timeout':
8
- return 'Connection timed out. Please check your connection and try again.';
9
- case 'session_expired':
10
- return 'Your payment session has expired. Please start again.';
11
- case 'session_cancelled':
12
- return 'The payment was cancelled.';
13
- case 'session_already_completed':
14
- return 'This payment has already been completed.';
15
- case 'invalid_token':
16
- return 'The payment link is invalid or has expired.';
17
- case 'bank_unavailable':
18
- return 'Your bank is temporarily unavailable. Please try again later.';
19
- case 'consent_creation_failed':
20
- return 'Unable to initiate the payment. Please try again.';
21
- case 'rate_limit_exceeded':
22
- return 'Too many attempts. Please wait a moment and try again.';
23
- case 'redirect_failed':
24
- case 'bank_launch_failed':
25
- return 'Unable to open your bank app. Please try again.';
26
- case 'session_timeout':
27
- return 'The payment timed out waiting for your bank. Please try again.';
28
- case 'recovery_exhausted':
29
- return 'This payment session could not be recovered. Please start again.';
30
- case 'hydration_error':
31
- case 'network_error':
32
- case 'SP500':
33
- return 'Your bank could not complete the payment. Please try again.';
34
- case 'authorize_failed':
35
- return 'Payment could not be completed. Please try again.';
36
- default:
37
- return 'Something went wrong. Please try again.';
38
- }
39
- }
@@ -1,90 +0,0 @@
1
- /**
2
- * Best-effort device + geolocation telemetry collector. Each call site catches
3
- * runtime failures so a permission denial or missing native module degrades
4
- * to a partial payload instead of throwing.
5
- */
6
- import { Platform } from 'react-native';
7
- import { SDK_VERSION } from '../version';
8
- import { createLogger } from './logger';
9
-
10
- const log = createLogger('TelemetryCollector');
11
-
12
- const LOCATION_TIMEOUT_MS = 5_000;
13
-
14
- interface DeviceLike {
15
- modelName?: string | null;
16
- osVersion?: string | null;
17
- }
18
-
19
- interface LocationLike {
20
- requestForegroundPermissionsAsync(): Promise<{ status: 'granted' | 'denied' | 'undetermined' }>;
21
- getCurrentPositionAsync(opts: { accuracy?: number }): Promise<{
22
- coords: { latitude: number; longitude: number; accuracy: number | null };
23
- }>;
24
- }
25
-
26
- async function loadDevice(): Promise<DeviceLike | null> {
27
- try {
28
- // eslint-disable-next-line @typescript-eslint/no-require-imports
29
- return require('expo-device') as DeviceLike;
30
- } catch {
31
- return null;
32
- }
33
- }
34
-
35
- async function loadLocation(): Promise<LocationLike | null> {
36
- try {
37
- // eslint-disable-next-line @typescript-eslint/no-require-imports
38
- return require('expo-location') as LocationLike;
39
- } catch {
40
- return null;
41
- }
42
- }
43
-
44
- export async function collectTelemetry(): Promise<Record<string, unknown>> {
45
- log.fine('collect: gathering device telemetry');
46
- const [deviceMod, locationMod] = await Promise.all([loadDevice(), loadLocation()]);
47
-
48
- const payload: Record<string, unknown> = {
49
- platform: 'react_native',
50
- sdk_version: SDK_VERSION,
51
- os: Platform.OS,
52
- };
53
-
54
- const model = deviceMod?.modelName ?? null;
55
- const osVersion = deviceMod?.osVersion ?? null;
56
- if (model && osVersion) {
57
- payload.device_fingerprint = `${model}_${osVersion}`;
58
- }
59
-
60
- if (locationMod) {
61
- try {
62
- const permission = await locationMod.requestForegroundPermissionsAsync();
63
- if (permission.status === 'granted') {
64
- const position = await Promise.race<{
65
- coords: { latitude: number; longitude: number; accuracy: number | null };
66
- } | null>([
67
- locationMod.getCurrentPositionAsync({ accuracy: 3 }),
68
- new Promise((resolve) => setTimeout(() => resolve(null), LOCATION_TIMEOUT_MS)),
69
- ]);
70
- if (position) {
71
- payload.geolocation = {
72
- latitude: position.coords.latitude,
73
- longitude: position.coords.longitude,
74
- accuracy_m: position.coords.accuracy,
75
- };
76
- } else {
77
- payload.geolocation = { unavailable: 'timeout' };
78
- }
79
- } else {
80
- payload.geolocation = { unavailable: 'permission_denied' };
81
- }
82
- } catch (e) {
83
- log.warning(`collect: geolocation failed — ${e instanceof Error ? e.message : String(e)}`);
84
- payload.geolocation = { unavailable: 'error' };
85
- }
86
- }
87
-
88
- log.fine(`collect: payload keys=${Object.keys(payload).join(',')}`);
89
- return payload;
90
- }
@@ -1,14 +0,0 @@
1
- /**
2
- * Max non-terminal `resumeIfNeeded` recovery attempts before the SDK gives up
3
- * and resolves the flow as failed with code `recovery_exhausted`.
4
- */
5
- export const kMaxRecoveryAttempts = 3 as const;
6
-
7
- /** Default per-request HTTP timeout in milliseconds (15s). */
8
- export const DEFAULT_REQUEST_TIMEOUT_MS = 15_000 as const;
9
-
10
- /** How long the SDK waits for a bank callback before auto-failing with `session_timeout`. */
11
- export const DEFAULT_AWAITING_CALLBACK_TIMEOUT_MS = 5 * 60 * 1000;
12
-
13
- /** Polling interval while the flow is in awaitingCallback (status endpoint). */
14
- export const DEFAULT_AWAITING_CALLBACK_POLL_MS = 10_000;
@@ -1,20 +0,0 @@
1
- import type { PaymentResult } from './payment-result';
2
- import type { SpareLinkEventType } from './spare-link-event';
3
-
4
- /** Called on successful payment. Both args may be null when recovered. */
5
- export type SpareLinkSuccessCallback = (
6
- exchangeCode: string | undefined,
7
- linkSessionId: string | undefined,
8
- ) => void;
9
-
10
- /** Called when the flow resolves to any terminal state (success or failure). */
11
- export type SpareLinkExitCallback = (result: PaymentResult) => void;
12
-
13
- /** Called for intermediate lifecycle events (string tag). Best-effort — exceptions are caught. */
14
- export type SpareLinkEventCallback = (event: SpareLinkEventType) => void;
15
-
16
- export interface SpareLinkCallbacks {
17
- onSuccess?: SpareLinkSuccessCallback;
18
- onExit?: SpareLinkExitCallback;
19
- onEvent?: SpareLinkEventCallback;
20
- }
@@ -1,68 +0,0 @@
1
- import { Ionicons } from '@expo/vector-icons';
2
- import { StyleSheet, Text, View } from 'react-native';
3
- import { Colors, FONT_FAMILY } from '../theme';
4
-
5
- export interface ChargeBearerDisplayProps {
6
- chargeBearer: string | undefined;
7
- }
8
-
9
- const OPTIONS = [
10
- { label: 'Shared', apiValue: 'Shared' },
11
- { label: 'Debtor', apiValue: 'BorneByDebtor' },
12
- { label: 'Creditor', apiValue: 'BorneByCreditor' },
13
- ] as const;
14
-
15
- export function ChargeBearerDisplay(props: ChargeBearerDisplayProps): JSX.Element {
16
- const bearer = props.chargeBearer?.trim();
17
- return (
18
- <View style={styles.card} testID="charge-bearer-display">
19
- <Text style={styles.title}>Charges model</Text>
20
- <View style={styles.options}>
21
- {OPTIONS.map((option) => {
22
- const selected = bearer === option.apiValue;
23
- return (
24
- <View key={option.apiValue} style={styles.option}>
25
- {selected ? (
26
- <Ionicons name="checkmark-circle" size={20} color={Colors.spareBlue} />
27
- ) : (
28
- <View style={styles.unselectedMarker} />
29
- )}
30
- <Text style={[styles.optionLabel, selected && styles.optionLabelSelected]}>
31
- {option.label}
32
- </Text>
33
- </View>
34
- );
35
- })}
36
- </View>
37
- </View>
38
- );
39
- }
40
-
41
- const styles = StyleSheet.create({
42
- card: {
43
- backgroundColor: Colors.surfaceCard,
44
- borderRadius: 16,
45
- paddingVertical: 14,
46
- paddingHorizontal: 20,
47
- marginBottom: 14,
48
- gap: 16,
49
- borderWidth: StyleSheet.hairlineWidth,
50
- borderColor: Colors.divider,
51
- shadowColor: '#000000',
52
- shadowOpacity: 0.06,
53
- shadowRadius: 6,
54
- shadowOffset: { width: 0, height: 2 },
55
- elevation: 2,
56
- },
57
- title: {
58
- fontFamily: FONT_FAMILY,
59
- fontSize: 14,
60
- fontWeight: '700',
61
- color: Colors.textPrimary,
62
- },
63
- options: { flexDirection: 'row', flexWrap: 'wrap', gap: 24 },
64
- option: { flexDirection: 'row', alignItems: 'center', gap: 4 },
65
- unselectedMarker: { width: 20, height: 20 },
66
- optionLabel: { fontFamily: FONT_FAMILY, fontSize: 14, color: Colors.textMuted },
67
- optionLabelSelected: { color: Colors.textPrimary, fontWeight: '600' },
68
- });
@@ -1,89 +0,0 @@
1
- import { Ionicons } from '@expo/vector-icons';
2
- import { useState } from 'react';
3
- import { Pressable, StyleSheet, Text, View } from 'react-native';
4
- import { Colors } from '../theme';
5
- import { linkFontFamilyForWeight } from '../theme/fonts';
6
-
7
- export interface ConsentAccordionItem {
8
- header: string;
9
- children: React.ReactNode;
10
- initiallyExpanded?: boolean;
11
- }
12
-
13
- export interface ConsentAccordionProps {
14
- items: ConsentAccordionItem[];
15
- }
16
-
17
- export function ConsentAccordion(props: ConsentAccordionProps): JSX.Element {
18
- return (
19
- <View style={styles.wrap} testID="consent-accordion">
20
- {props.items.map((item, index) => (
21
- <View key={item.header}>
22
- <AccordionSection {...item} />
23
- {index < props.items.length - 1 ? (
24
- <View style={styles.divider} testID="consent-accordion-divider" />
25
- ) : null}
26
- </View>
27
- ))}
28
- </View>
29
- );
30
- }
31
-
32
- function AccordionSection(props: ConsentAccordionItem): JSX.Element {
33
- const [expanded, setExpanded] = useState(props.initiallyExpanded ?? true);
34
- return (
35
- <View style={styles.section}>
36
- <Pressable
37
- accessibilityRole="button"
38
- onPress={() => setExpanded((e) => !e)}
39
- style={styles.header}
40
- >
41
- <Text style={styles.headerText}>{props.header}</Text>
42
- <Ionicons
43
- name={expanded ? 'chevron-up' : 'chevron-down'}
44
- size={18}
45
- color={Colors.spareBlue}
46
- />
47
- </Pressable>
48
- {expanded ? <View style={styles.body}>{props.children}</View> : null}
49
- </View>
50
- );
51
- }
52
-
53
- const styles = StyleSheet.create({
54
- wrap: {
55
- backgroundColor: Colors.cardMutedBg,
56
- borderRadius: 16,
57
- paddingVertical: 8,
58
- paddingHorizontal: 0,
59
- marginBottom: 14,
60
- borderWidth: StyleSheet.hairlineWidth,
61
- borderColor: Colors.divider,
62
- shadowColor: '#404029',
63
- shadowOpacity: 0.08,
64
- shadowRadius: 4,
65
- shadowOffset: { width: 0, height: 1 },
66
- elevation: 2,
67
- },
68
- section: { paddingVertical: 8 },
69
- header: {
70
- flexDirection: 'row',
71
- justifyContent: 'space-between',
72
- alignItems: 'center',
73
- paddingHorizontal: 20,
74
- minHeight: 48,
75
- },
76
- headerText: {
77
- fontFamily: linkFontFamilyForWeight('700'),
78
- fontSize: 16,
79
- fontWeight: '700',
80
- color: Colors.textPrimary,
81
- },
82
- body: { paddingTop: 4, paddingBottom: 12 },
83
- divider: {
84
- height: StyleSheet.hairlineWidth,
85
- backgroundColor: Colors.divider,
86
- marginHorizontal: 20,
87
- marginVertical: 4,
88
- },
89
- });
@@ -1,19 +0,0 @@
1
- import type { ConsentSummaryData } from '../../core/services/consent-presenter';
2
- import { InternationalPaymentSummary } from './international-payment-summary';
3
- import { MultiPaymentSummary } from './multi-payment-summary';
4
- import { SinglePaymentSummary } from './single-payment-summary';
5
-
6
- export interface ConsentSummarySectionProps {
7
- data: ConsentSummaryData;
8
- }
9
-
10
- export function ConsentSummarySection(props: ConsentSummarySectionProps): JSX.Element {
11
- switch (props.data.variant) {
12
- case 'singlePayment':
13
- return <SinglePaymentSummary data={props.data} />;
14
- case 'international':
15
- return <InternationalPaymentSummary data={props.data} />;
16
- case 'multiPayment':
17
- return <MultiPaymentSummary data={props.data} />;
18
- }
19
- }
@@ -1,121 +0,0 @@
1
- import { Ionicons } from '@expo/vector-icons';
2
- import { useEffect, useRef } from 'react';
3
- import { Animated, StyleSheet, Text, View } from 'react-native';
4
- import type { CopDisplayData, CopMatchIndicator } from '../../core/services/consent-presenter';
5
- import { Colors, FONT_FAMILY } from '../theme';
6
-
7
- /** Matches {@link LabelValueRows} default horizontal inset inside accordions. */
8
- const ACCORDION_BODY_INSET = 20;
9
-
10
- const COP_COLORS: Record<CopMatchIndicator, string> = {
11
- match: '#81C784',
12
- partialMatch: '#E57373',
13
- noMatch: '#FFB74D',
14
- unknown: Colors.textMuted,
15
- };
16
-
17
- const COP_ICONS: Record<CopMatchIndicator, keyof typeof Ionicons.glyphMap> = {
18
- match: 'checkmark-circle-outline',
19
- partialMatch: 'warning-outline',
20
- noMatch: 'close-circle-outline',
21
- unknown: 'information-circle-outline',
22
- };
23
-
24
- export function CopLoadingPlaceholder(): JSX.Element {
25
- const opacity = useRef(new Animated.Value(0.35)).current;
26
-
27
- useEffect(() => {
28
- const animation = Animated.loop(
29
- Animated.sequence([
30
- Animated.timing(opacity, { toValue: 1, duration: 450, useNativeDriver: true }),
31
- Animated.timing(opacity, { toValue: 0.35, duration: 450, useNativeDriver: true }),
32
- ]),
33
- );
34
- animation.start();
35
- return () => animation.stop();
36
- }, [opacity]);
37
-
38
- return (
39
- <View style={styles.loadingRow} testID="consent-cop-loading">
40
- <Animated.View style={[styles.loadingBar, styles.loadingBarWide, { opacity }]} />
41
- <Animated.View style={[styles.loadingBar, styles.loadingBarNarrow, { opacity }]} />
42
- </View>
43
- );
44
- }
45
-
46
- export function CopInformation(props: { display: CopDisplayData }): JSX.Element {
47
- const { display } = props;
48
- const color = COP_COLORS[display.indicator];
49
- const icon = COP_ICONS[display.indicator];
50
-
51
- if (display.indicator === 'match') {
52
- return (
53
- <View style={styles.matchRow} testID="consent-cop-information">
54
- <Text style={[styles.statusLabel, { color }]}>{display.statusLabel}</Text>
55
- <Ionicons name={icon} size={18} color={color} />
56
- </View>
57
- );
58
- }
59
-
60
- return (
61
- <View style={styles.column} testID="consent-cop-information">
62
- <View style={styles.statusRow}>
63
- <View style={styles.statusLeft}>
64
- <Ionicons name={icon} size={18} color={color} />
65
- <Text style={[styles.statusLabel, { color }]}>{display.statusLabel}</Text>
66
- </View>
67
- {display.maskedName ? <Text style={styles.maskedName}>{display.maskedName}</Text> : null}
68
- </View>
69
- {display.paragraphs.map((paragraph) => (
70
- <Text key={paragraph} style={[styles.paragraph, { color }]}>
71
- {paragraph}
72
- </Text>
73
- ))}
74
- </View>
75
- );
76
- }
77
-
78
- const styles = StyleSheet.create({
79
- loadingRow: {
80
- flexDirection: 'row',
81
- justifyContent: 'space-between',
82
- alignItems: 'center',
83
- paddingTop: 4,
84
- paddingHorizontal: ACCORDION_BODY_INSET,
85
- },
86
- loadingBar: {
87
- height: 12,
88
- backgroundColor: '#E5E7EB',
89
- borderRadius: 4,
90
- },
91
- loadingBarWide: { width: 96 },
92
- loadingBarNarrow: { width: 48 },
93
- matchRow: {
94
- flexDirection: 'row',
95
- justifyContent: 'space-between',
96
- alignItems: 'center',
97
- paddingTop: 4,
98
- paddingHorizontal: ACCORDION_BODY_INSET,
99
- },
100
- column: {
101
- gap: 8,
102
- paddingTop: 4,
103
- paddingHorizontal: ACCORDION_BODY_INSET,
104
- },
105
- statusRow: {
106
- flexDirection: 'row',
107
- alignItems: 'flex-start',
108
- justifyContent: 'space-between',
109
- gap: 8,
110
- },
111
- statusLeft: { flexDirection: 'row', alignItems: 'center', gap: 4, flex: 1 },
112
- statusLabel: { fontFamily: FONT_FAMILY, fontSize: 14, fontWeight: '500' },
113
- maskedName: {
114
- fontFamily: FONT_FAMILY,
115
- fontSize: 14,
116
- color: Colors.textMuted,
117
- textAlign: 'right',
118
- flex: 1,
119
- },
120
- paragraph: { fontFamily: FONT_FAMILY, fontSize: 14, lineHeight: 22, fontWeight: '400' },
121
- });