@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
@@ -0,0 +1,333 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.HostedFlowController = exports.DEFAULT_READY_TIMEOUT_MS = void 0;
7
+ var _bankRedirect = require("../../internal/bank-redirect.js");
8
+ var _bridgeMessage = require("../../internal/hosted/bridge-message.js");
9
+ var _logger = require("../../internal/logger.js");
10
+ var _paymentReturnParams = require("../models/payment-return-params.js");
11
+ var _hostedFlowState = require("./hosted-flow-state.js");
12
+ const log = (0, _logger.createLogger)('HostedFlowController');
13
+
14
+ /** Opens a bank authorization URL outside the WebView. */
15
+
16
+ /**
17
+ * How long the page has to become interactive, measured from when the webview
18
+ * mounts.
19
+ *
20
+ * A page can load and still never speak: its script can fail to fetch, or throw
21
+ * before it posts `spare.ready`. Nothing else would notice, and the payer would
22
+ * hold a blank frame for as long as they were willing to.
23
+ *
24
+ * Measured from the webview rather than from this controller, because a
25
+ * controller is built before the screen is: the sheet's animation and whatever
26
+ * the host waits on before rendering would otherwise be charged against the
27
+ * page's budget, and a page that merely loads slowly would be called unreachable.
28
+ */
29
+ const DEFAULT_READY_TIMEOUT_MS = exports.DEFAULT_READY_TIMEOUT_MS = 20_000;
30
+ /**
31
+ * Drives a hosted payment from the messages the page sends and the deep link
32
+ * the OS delivers when the payer comes back.
33
+ *
34
+ * The SDK makes no API calls of its own: the page creates the consent, and the
35
+ * merchant's backend reads the result. So this controller only ever reacts —
36
+ * which is why every transition here is guarded against arriving after the flow
37
+ * has already resolved.
38
+ */
39
+ class HostedFlowController {
40
+ listeners = new Set();
41
+ constructor(options) {
42
+ this.reference = options.reference;
43
+ this.bankLauncher = options.bankLauncher ?? (url => (0, _bankRedirect.launchBankRedirect)({
44
+ authorizationUrl: url
45
+ }));
46
+ this.readyTimeoutMs = options.readyTimeoutMs ?? DEFAULT_READY_TIMEOUT_MS;
47
+ this.currentState = _hostedFlowState.HostedFlowStates.loading(options.reference);
48
+ }
49
+
50
+ /**
51
+ * Records that the webview carrying the page is on screen.
52
+ *
53
+ * Starts the clock the page has to become interactive. Called on mount rather
54
+ * than on load, so a document that never finishes arriving is covered too.
55
+ */
56
+ reportPageMounted() {
57
+ if (this.currentState.phase !== 'loading') return;
58
+ this.watchForReadiness();
59
+ }
60
+ get state() {
61
+ return this.currentState;
62
+ }
63
+
64
+ /** Subscribe to state changes. Returns an unsubscribe function. */
65
+ subscribe(listener) {
66
+ this.listeners.add(listener);
67
+ return () => {
68
+ this.listeners.delete(listener);
69
+ };
70
+ }
71
+
72
+ /**
73
+ * Reacts to a message from the hosted page.
74
+ *
75
+ * Resolves to whether the message was understood, so a caller can log what it
76
+ * dropped. An unrecognised message is not a failure: the page keeps working
77
+ * and the payer is unaffected.
78
+ */
79
+ async handleBridgeMessage(raw) {
80
+ const message = (0, _bridgeMessage.parseHostedBridgeMessage)(raw);
81
+ if (!message) {
82
+ log.info('dropped an unrecognised message from the hosted page');
83
+ return false;
84
+ }
85
+
86
+ // Only a page still on screen may drive the flow. The page posts on render,
87
+ // and a webview left behind a payer who has moved on can post again: a `ready`
88
+ // accepted while they are at their bank would drag the flow back to `hosted`,
89
+ // and the `openUrl` after it would open a second bank browser for a payment
90
+ // whose first authorization is already under way.
91
+ if (!this.isPagePresented()) {
92
+ log.info(`ignoring a '${message.type}' message from a page no longer on screen`);
93
+ return false;
94
+ }
95
+ switch (message.type) {
96
+ case 'ready':
97
+ this.stopWatchingForReadiness();
98
+ this.moveTo(_hostedFlowState.HostedFlowStates.hosted(this.reference, this.currentState.attempt));
99
+ break;
100
+ case 'openUrl':
101
+ await this.openBank(message.url);
102
+ break;
103
+ case 'cancel':
104
+ // The page spoke, so it is not unreachable whatever it went on to say.
105
+ this.stopWatchingForReadiness();
106
+ this.moveTo(_hostedFlowState.HostedFlowStates.cancelled(this.reference, this.currentState.attempt));
107
+ break;
108
+ case 'error':
109
+ this.stopWatchingForReadiness();
110
+ this.moveTo(_hostedFlowState.HostedFlowStates.failed({
111
+ reference: this.reference,
112
+ errorCode: message.code,
113
+ attempt: this.currentState.attempt
114
+ }));
115
+ break;
116
+ }
117
+ return true;
118
+ }
119
+
120
+ /**
121
+ * Resolves the flow from the deep link the payer returned through.
122
+ *
123
+ * The outcome is read from the link rather than inferred: it is the only
124
+ * report of what the bank and the payment actually did.
125
+ */
126
+ /** Whether the page is still the thing on screen and may still be believed. */
127
+ isPagePresented() {
128
+ const phase = this.currentState.phase;
129
+ return phase === 'loading' || phase === 'hosted';
130
+ }
131
+ handleReturn(uri) {
132
+ const {
133
+ outcome,
134
+ report
135
+ } = (0, _paymentReturnParams.readPaymentReturn)(uri);
136
+
137
+ // A return that names a different payment is not this payment's business. The
138
+ // link is handed over by the OS and any app can send one, and a delayed
139
+ // callback for an earlier payment would otherwise resolve whichever one is
140
+ // open — with the wrong outcome attached to the wrong reference.
141
+ if (report.reference !== undefined && report.reference !== this.reference) {
142
+ log.warning('ignoring a return that names a different payment');
143
+ return;
144
+ }
145
+ this.stopWatchingForReadiness();
146
+ if (outcome === 'processed') {
147
+ this.moveTo(_hostedFlowState.HostedFlowStates.succeeded({
148
+ reference: this.reference,
149
+ attempt: this.currentState.attempt,
150
+ report
151
+ }));
152
+ return;
153
+ }
154
+
155
+ // `unknown` is not a failure. The service has statuses this version has not
156
+ // been taught, and a payment still being decided must not be reported as one
157
+ // that failed — abandoned says "ask your backend", which is the truth.
158
+ if (outcome === 'unknown') {
159
+ log.info('the return did not say what happened — reporting it as unresolved');
160
+ this.moveTo(_hostedFlowState.HostedFlowStates.abandoned(this.reference, this.currentState.attempt));
161
+ return;
162
+ }
163
+ this.moveTo(_hostedFlowState.HostedFlowStates.failed({
164
+ reference: this.reference,
165
+ errorCode: report.errorCode ?? 'authorize_failed',
166
+ attempt: this.currentState.attempt,
167
+ report
168
+ }));
169
+ }
170
+
171
+ /**
172
+ * Records that the payment page could not be loaded.
173
+ *
174
+ * Only meaningful before the bank is opened. Once the payer is away, a load
175
+ * error is the WebView behind them and says nothing about their payment.
176
+ *
177
+ * Before the page has spoken this does not resolve the flow: nothing has been
178
+ * attempted, so the payer is offered the page again rather than told their
179
+ * payment failed.
180
+ *
181
+ * After it has spoken, it does. By then the payer may have chosen a bank and
182
+ * the page may have created a consent for it, and reloading from the start
183
+ * could create a second one while silently discarding what they entered.
184
+ */
185
+ failToLoad() {
186
+ const phase = this.currentState.phase;
187
+ if (phase !== 'loading' && phase !== 'hosted') {
188
+ log.info('ignoring a page load error raised behind the payer');
189
+ return;
190
+ }
191
+ this.stopWatchingForReadiness();
192
+ if (phase === 'hosted') {
193
+ log.severe('the page failed after it had already started — not offering a reload');
194
+ this.moveTo(_hostedFlowState.HostedFlowStates.failed({
195
+ reference: this.reference,
196
+ // Not `page_unavailable`: that means the page was never reached and
197
+ // nothing was attempted. This page was working, and the payer may have
198
+ // got as far as a consent before its frame died — a different thing for
199
+ // a merchant to look into, and a different thing to show the payer.
200
+ errorCode: 'page_lost',
201
+ attempt: this.currentState.attempt
202
+ }));
203
+ return;
204
+ }
205
+ this.moveTo(_hostedFlowState.HostedFlowStates.unreachable(this.reference, this.currentState.attempt));
206
+ }
207
+
208
+ /**
209
+ * Asks for the page again after it could not be reached.
210
+ *
211
+ * The attempt is counted so the screen mounts a fresh webview: reusing the one
212
+ * that failed would show the payer the same dead frame.
213
+ */
214
+ retry() {
215
+ if (this.currentState.phase !== 'unreachable') {
216
+ log.info('ignoring a retry for a payment that is not waiting on the page');
217
+ return;
218
+ }
219
+ const attempt = this.currentState.attempt + 1;
220
+ log.info(`asking for the payment page again (attempt ${attempt})`);
221
+ // The fresh webview reports itself mounted, which restarts the clock.
222
+ this.moveTo(_hostedFlowState.HostedFlowStates.loading(this.reference, attempt));
223
+ }
224
+
225
+ /**
226
+ * Records that the payer gave up on a page that could not be reached.
227
+ *
228
+ * Reported as a failure rather than abandonment: the payer did not leave a
229
+ * payment in progress, the SDK never managed to present one.
230
+ */
231
+ giveUp() {
232
+ if (this.currentState.phase !== 'unreachable') {
233
+ log.info('ignoring a give-up for a payment that is not waiting on the page');
234
+ return;
235
+ }
236
+ this.stopWatchingForReadiness();
237
+ this.moveTo(_hostedFlowState.HostedFlowStates.failed({
238
+ reference: this.reference,
239
+ errorCode: 'page_unavailable',
240
+ attempt: this.currentState.attempt
241
+ }));
242
+ }
243
+
244
+ /**
245
+ * Records that the payer left before the flow resolved.
246
+ *
247
+ * A payment already at the bank may still complete after this, so it is
248
+ * reported as abandoned rather than failed: the merchant's backend, not the
249
+ * app, is what knows.
250
+ */
251
+ abandon() {
252
+ this.stopWatchingForReadiness();
253
+ if (this.currentState.phase === 'unreachable') {
254
+ // Nothing was ever presented, so there is no payment that might still
255
+ // complete at the bank — which is what abandonment promises the merchant.
256
+ this.moveTo(_hostedFlowState.HostedFlowStates.failed({
257
+ reference: this.reference,
258
+ errorCode: 'page_unavailable',
259
+ attempt: this.currentState.attempt
260
+ }));
261
+ return;
262
+ }
263
+ this.moveTo(_hostedFlowState.HostedFlowStates.abandoned(this.reference, this.currentState.attempt));
264
+ }
265
+ dispose() {
266
+ this.stopWatchingForReadiness();
267
+ this.listeners.clear();
268
+ }
269
+ watchForReadiness() {
270
+ this.stopWatchingForReadiness();
271
+ this.readyTimer = setTimeout(() => {
272
+ this.readyTimer = undefined;
273
+ if (this.currentState.phase !== 'loading') return;
274
+ log.severe('the payment page never became interactive — treating it as unreachable');
275
+ this.moveTo(_hostedFlowState.HostedFlowStates.unreachable(this.reference, this.currentState.attempt));
276
+ }, this.readyTimeoutMs);
277
+ }
278
+ stopWatchingForReadiness() {
279
+ if (this.readyTimer === undefined) return;
280
+ clearTimeout(this.readyTimer);
281
+ this.readyTimer = undefined;
282
+ }
283
+
284
+ /**
285
+ * Opens the bank and waits for the payer to be sent back.
286
+ *
287
+ * The URL is opened exactly once, and never once the flow has resolved. The
288
+ * page posts on render, so a rebuild can repeat the message; opening a second
289
+ * browser — or one for a payment the payer has already left — would leave them
290
+ * authorizing in a window whose return nobody is waiting for.
291
+ */
292
+ async openBank(url) {
293
+ if ((0, _hostedFlowState.isTerminalPhase)(this.currentState.phase)) {
294
+ log.info('not opening the bank for a payment that already resolved');
295
+ return;
296
+ }
297
+ if (this.currentState.phase === 'redirecting' || this.currentState.phase === 'awaitingCallback') {
298
+ log.info('bank already opened for this payment — ignoring');
299
+ return;
300
+ }
301
+ this.stopWatchingForReadiness();
302
+ this.moveTo(_hostedFlowState.HostedFlowStates.redirecting(this.reference, this.currentState.attempt));
303
+ try {
304
+ await this.bankLauncher(url);
305
+ this.moveTo(_hostedFlowState.HostedFlowStates.awaitingCallback(this.reference, this.currentState.attempt));
306
+ } catch {
307
+ // The platform's message is not logged: a native launcher's error can carry
308
+ // the whole authorize URL back, `request_uri` and state included.
309
+ log.severe('could not open the bank');
310
+ this.moveTo(_hostedFlowState.HostedFlowStates.failed({
311
+ reference: this.reference,
312
+ errorCode: 'redirect_failed',
313
+ attempt: this.currentState.attempt
314
+ }));
315
+ }
316
+ }
317
+ moveTo(next) {
318
+ if ((0, _hostedFlowState.isTerminalPhase)(this.currentState.phase)) {
319
+ log.info('ignoring transition after the flow already resolved');
320
+ return;
321
+ }
322
+ this.currentState = next;
323
+ for (const listener of this.listeners) {
324
+ try {
325
+ listener();
326
+ } catch {
327
+ /* a listener that throws must not stop the others from hearing */
328
+ }
329
+ }
330
+ }
331
+ }
332
+ exports.HostedFlowController = HostedFlowController;
333
+ //# sourceMappingURL=hosted-flow-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_bankRedirect","require","_bridgeMessage","_logger","_paymentReturnParams","_hostedFlowState","log","createLogger","DEFAULT_READY_TIMEOUT_MS","exports","HostedFlowController","listeners","Set","constructor","options","reference","bankLauncher","url","defaultLaunchBankRedirect","authorizationUrl","readyTimeoutMs","currentState","HostedFlowStates","loading","reportPageMounted","phase","watchForReadiness","state","subscribe","listener","add","delete","handleBridgeMessage","raw","message","parseHostedBridgeMessage","info","isPagePresented","type","stopWatchingForReadiness","moveTo","hosted","attempt","openBank","cancelled","failed","errorCode","code","handleReturn","uri","outcome","report","readPaymentReturn","undefined","warning","succeeded","abandoned","failToLoad","severe","unreachable","retry","giveUp","abandon","dispose","clear","readyTimer","setTimeout","clearTimeout","isTerminalPhase","redirecting","awaitingCallback","next"],"sourceRoot":"../../../../src","sources":["core/services/hosted-flow-controller.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.HostedFlowStates = void 0;
7
+ exports.isTerminalPhase = isTerminalPhase;
8
+ /**
9
+ * Where a hosted payment has got to.
10
+ *
11
+ * The phases the payer spends most of their time in — choosing a bank, reading
12
+ * the consent, confirming the payee — are all `hosted`: they happen inside the
13
+ * page, which does not report them, and the SDK has nothing to decide there.
14
+ */
15
+
16
+ /** Immutable snapshot of a hosted payment. */
17
+
18
+ const TERMINAL_PHASES = new Set(['succeeded', 'failed', 'cancelled', 'abandoned']);
19
+ function isTerminalPhase(phase) {
20
+ return TERMINAL_PHASES.has(phase);
21
+ }
22
+
23
+ /** Factories for each phase, so no caller assembles a state by hand. */
24
+ const HostedFlowStates = exports.HostedFlowStates = {
25
+ loading(reference, attempt = 1) {
26
+ return {
27
+ phase: 'loading',
28
+ reference,
29
+ attempt
30
+ };
31
+ },
32
+ hosted(reference, attempt = 1) {
33
+ return {
34
+ phase: 'hosted',
35
+ reference,
36
+ attempt
37
+ };
38
+ },
39
+ unreachable(reference, attempt = 1) {
40
+ return {
41
+ phase: 'unreachable',
42
+ reference,
43
+ attempt
44
+ };
45
+ },
46
+ redirecting(reference, attempt = 1) {
47
+ return {
48
+ phase: 'redirecting',
49
+ reference,
50
+ attempt
51
+ };
52
+ },
53
+ awaitingCallback(reference, attempt = 1) {
54
+ return {
55
+ phase: 'awaitingCallback',
56
+ reference,
57
+ attempt
58
+ };
59
+ },
60
+ succeeded(args) {
61
+ return {
62
+ phase: 'succeeded',
63
+ reference: args.reference,
64
+ attempt: args.attempt ?? 1,
65
+ ...(args.report ? {
66
+ report: args.report
67
+ } : {})
68
+ };
69
+ },
70
+ failed(args) {
71
+ return {
72
+ phase: 'failed',
73
+ reference: args.reference,
74
+ errorCode: args.errorCode,
75
+ attempt: args.attempt ?? 1,
76
+ ...(args.report ? {
77
+ report: args.report
78
+ } : {})
79
+ };
80
+ },
81
+ cancelled(reference, attempt = 1) {
82
+ return {
83
+ phase: 'cancelled',
84
+ reference,
85
+ attempt
86
+ };
87
+ },
88
+ abandoned(reference, attempt = 1) {
89
+ return {
90
+ phase: 'abandoned',
91
+ reference,
92
+ attempt
93
+ };
94
+ }
95
+ };
96
+ //# sourceMappingURL=hosted-flow-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TERMINAL_PHASES","Set","isTerminalPhase","phase","has","HostedFlowStates","exports","loading","reference","attempt","hosted","unreachable","redirecting","awaitingCallback","succeeded","args","report","failed","errorCode","cancelled","abandoned"],"sourceRoot":"../../../../src","sources":["core/services/hosted-flow-state.ts"],"mappings":";;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAwBA;;AA8BA,MAAMA,eAA6C,GAAG,IAAIC,GAAG,CAAkB,CAC7E,WAAW,EACX,QAAQ,EACR,WAAW,EACX,WAAW,CACZ,CAAC;AAEK,SAASC,eAAeA,CAACC,KAAsB,EAAW;EAC/D,OAAOH,eAAe,CAACI,GAAG,CAACD,KAAK,CAAC;AACnC;;AAEA;AACO,MAAME,gBAAgB,GAAAC,OAAA,CAAAD,gBAAA,GAAG;EAC9BE,OAAOA,CAACC,SAAiB,EAAEC,OAAO,GAAG,CAAC,EAAmB;IACvD,OAAO;MAAEN,KAAK,EAAE,SAAS;MAAEK,SAAS;MAAEC;IAAQ,CAAC;EACjD,CAAC;EACDC,MAAMA,CAACF,SAAiB,EAAEC,OAAO,GAAG,CAAC,EAAmB;IACtD,OAAO;MAAEN,KAAK,EAAE,QAAQ;MAAEK,SAAS;MAAEC;IAAQ,CAAC;EAChD,CAAC;EACDE,WAAWA,CAACH,SAAiB,EAAEC,OAAO,GAAG,CAAC,EAAmB;IAC3D,OAAO;MAAEN,KAAK,EAAE,aAAa;MAAEK,SAAS;MAAEC;IAAQ,CAAC;EACrD,CAAC;EACDG,WAAWA,CAACJ,SAAiB,EAAEC,OAAO,GAAG,CAAC,EAAmB;IAC3D,OAAO;MAAEN,KAAK,EAAE,aAAa;MAAEK,SAAS;MAAEC;IAAQ,CAAC;EACrD,CAAC;EACDI,gBAAgBA,CAACL,SAAiB,EAAEC,OAAO,GAAG,CAAC,EAAmB;IAChE,OAAO;MAAEN,KAAK,EAAE,kBAAkB;MAAEK,SAAS;MAAEC;IAAQ,CAAC;EAC1D,CAAC;EACDK,SAASA,CAACC,IAIT,EAAmB;IAClB,OAAO;MACLZ,KAAK,EAAE,WAAW;MAClBK,SAAS,EAAEO,IAAI,CAACP,SAAS;MACzBC,OAAO,EAAEM,IAAI,CAACN,OAAO,IAAI,CAAC;MAC1B,IAAIM,IAAI,CAACC,MAAM,GAAG;QAAEA,MAAM,EAAED,IAAI,CAACC;MAAO,CAAC,GAAG,CAAC,CAAC;IAChD,CAAC;EACH,CAAC;EACDC,MAAMA,CAACF,IAKN,EAAmB;IAClB,OAAO;MACLZ,KAAK,EAAE,QAAQ;MACfK,SAAS,EAAEO,IAAI,CAACP,SAAS;MACzBU,SAAS,EAAEH,IAAI,CAACG,SAAS;MACzBT,OAAO,EAAEM,IAAI,CAACN,OAAO,IAAI,CAAC;MAC1B,IAAIM,IAAI,CAACC,MAAM,GAAG;QAAEA,MAAM,EAAED,IAAI,CAACC;MAAO,CAAC,GAAG,CAAC,CAAC;IAChD,CAAC;EACH,CAAC;EACDG,SAASA,CAACX,SAAiB,EAAEC,OAAO,GAAG,CAAC,EAAmB;IACzD,OAAO;MAAEN,KAAK,EAAE,WAAW;MAAEK,SAAS;MAAEC;IAAQ,CAAC;EACnD,CAAC;EACDW,SAASA,CAACZ,SAAiB,EAAEC,OAAO,GAAG,CAAC,EAAmB;IACzD,OAAO;MAAEN,KAAK,EAAE,WAAW;MAAEK,SAAS;MAAEC;IAAQ,CAAC;EACnD;AACF,CAAU","ignoreList":[]}