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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (561) 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/hosted/bridge-message.js +107 -0
  13. package/lib/commonjs/internal/hosted/bridge-message.js.map +1 -0
  14. package/lib/commonjs/internal/hosted/hosted-url.js +41 -0
  15. package/lib/commonjs/internal/hosted/hosted-url.js.map +1 -0
  16. package/lib/commonjs/internal/index.js +0 -7
  17. package/lib/commonjs/internal/index.js.map +1 -1
  18. package/lib/commonjs/internal/redact-uri.js +59 -15
  19. package/lib/commonjs/internal/redact-uri.js.map +1 -1
  20. package/lib/commonjs/internal/secure-store-pending-session-store.js +20 -25
  21. package/lib/commonjs/internal/secure-store-pending-session-store.js.map +1 -1
  22. package/lib/commonjs/internal/url-parts.js +145 -0
  23. package/lib/commonjs/internal/url-parts.js.map +1 -0
  24. package/lib/commonjs/public/index.js +0 -37
  25. package/lib/commonjs/public/index.js.map +1 -1
  26. package/lib/commonjs/public/payment-result.js +16 -4
  27. package/lib/commonjs/public/payment-result.js.map +1 -1
  28. package/lib/commonjs/public/recovery-result.js +7 -18
  29. package/lib/commonjs/public/recovery-result.js.map +1 -1
  30. package/lib/commonjs/public/spare-link-config.js +41 -16
  31. package/lib/commonjs/public/spare-link-config.js.map +1 -1
  32. package/lib/commonjs/public/spare-link-event.js +27 -33
  33. package/lib/commonjs/public/spare-link-event.js.map +1 -1
  34. package/lib/commonjs/public/spare-link-instance.js +67 -77
  35. package/lib/commonjs/public/spare-link-instance.js.map +1 -1
  36. package/lib/commonjs/public/spare-link-session.js +2 -9
  37. package/lib/commonjs/public/spare-link-session.js.map +1 -1
  38. package/lib/commonjs/public/spare-link.js +0 -12
  39. package/lib/commonjs/public/spare-link.js.map +1 -1
  40. package/lib/commonjs/ui/hooks/{use-payment-flow-state.js → use-hosted-flow-state.js} +4 -4
  41. package/lib/commonjs/ui/hooks/use-hosted-flow-state.js.map +1 -0
  42. package/lib/commonjs/ui/hosted/hosted-payment-page.js +177 -0
  43. package/lib/commonjs/ui/hosted/hosted-payment-page.js.map +1 -0
  44. package/lib/commonjs/ui/hosted/hosted-payment-webview.js +168 -0
  45. package/lib/commonjs/ui/hosted/hosted-payment-webview.js.map +1 -0
  46. package/lib/commonjs/ui/screens/index.js +3 -17
  47. package/lib/commonjs/ui/screens/index.js.map +1 -1
  48. package/lib/commonjs/ui/screens/page-unavailable-screen.js +101 -0
  49. package/lib/commonjs/ui/screens/page-unavailable-screen.js.map +1 -0
  50. package/lib/commonjs/ui/spare-link-host.js +220 -234
  51. package/lib/commonjs/ui/spare-link-host.js.map +1 -1
  52. package/lib/commonjs/ui/widgets/index.js +3 -10
  53. package/lib/commonjs/ui/widgets/index.js.map +1 -1
  54. package/lib/commonjs/version.js +1 -1
  55. package/lib/commonjs/version.js.map +1 -1
  56. package/lib/module/core/models/payment-return-params.js +235 -20
  57. package/lib/module/core/models/payment-return-params.js.map +1 -1
  58. package/lib/module/core/models/pending-session-record.js +2 -0
  59. package/lib/module/core/models/pending-session-record.js.map +1 -0
  60. package/lib/module/core/services/hosted-flow-controller.js +328 -0
  61. package/lib/module/core/services/hosted-flow-controller.js.map +1 -0
  62. package/lib/module/core/services/hosted-flow-state.js +91 -0
  63. package/lib/module/core/services/hosted-flow-state.js.map +1 -0
  64. package/lib/module/index.js +8 -22
  65. package/lib/module/index.js.map +1 -1
  66. package/lib/module/internal/hosted/bridge-message.js +104 -0
  67. package/lib/module/internal/hosted/bridge-message.js.map +1 -0
  68. package/lib/module/internal/hosted/hosted-url.js +36 -0
  69. package/lib/module/internal/hosted/hosted-url.js.map +1 -0
  70. package/lib/module/internal/index.js +0 -1
  71. package/lib/module/internal/index.js.map +1 -1
  72. package/lib/module/internal/redact-uri.js +59 -15
  73. package/lib/module/internal/redact-uri.js.map +1 -1
  74. package/lib/module/internal/secure-store-pending-session-store.js +20 -25
  75. package/lib/module/internal/secure-store-pending-session-store.js.map +1 -1
  76. package/lib/module/internal/url-parts.js +139 -0
  77. package/lib/module/internal/url-parts.js.map +1 -0
  78. package/lib/module/public/index.js +2 -3
  79. package/lib/module/public/index.js.map +1 -1
  80. package/lib/module/public/payment-result.js +16 -4
  81. package/lib/module/public/payment-result.js.map +1 -1
  82. package/lib/module/public/recovery-result.js +7 -17
  83. package/lib/module/public/recovery-result.js.map +1 -1
  84. package/lib/module/public/spare-link-config.js +42 -15
  85. package/lib/module/public/spare-link-config.js.map +1 -1
  86. package/lib/module/public/spare-link-event.js +27 -33
  87. package/lib/module/public/spare-link-event.js.map +1 -1
  88. package/lib/module/public/spare-link-instance.js +68 -72
  89. package/lib/module/public/spare-link-instance.js.map +1 -1
  90. package/lib/module/public/spare-link-session.js +2 -9
  91. package/lib/module/public/spare-link-session.js.map +1 -1
  92. package/lib/module/public/spare-link.js +1 -1
  93. package/lib/module/public/spare-link.js.map +1 -1
  94. package/lib/module/ui/hooks/{use-payment-flow-state.js → use-hosted-flow-state.js} +3 -3
  95. package/lib/module/ui/hooks/use-hosted-flow-state.js.map +1 -0
  96. package/lib/module/ui/hosted/hosted-payment-page.js +175 -0
  97. package/lib/module/ui/hosted/hosted-payment-page.js.map +1 -0
  98. package/lib/module/ui/hosted/hosted-payment-webview.js +163 -0
  99. package/lib/module/ui/hosted/hosted-payment-webview.js.map +1 -0
  100. package/lib/module/ui/screens/index.js +1 -3
  101. package/lib/module/ui/screens/index.js.map +1 -1
  102. package/lib/module/ui/screens/page-unavailable-screen.js +97 -0
  103. package/lib/module/ui/screens/page-unavailable-screen.js.map +1 -0
  104. package/lib/module/ui/spare-link-host.js +221 -236
  105. package/lib/module/ui/spare-link-host.js.map +1 -1
  106. package/lib/module/ui/widgets/index.js +1 -2
  107. package/lib/module/ui/widgets/index.js.map +1 -1
  108. package/lib/module/version.js +1 -1
  109. package/lib/module/version.js.map +1 -1
  110. package/lib/typescript/commonjs/core/models/index.d.ts +1 -123
  111. package/lib/typescript/commonjs/core/models/index.d.ts.map +1 -1
  112. package/lib/typescript/commonjs/core/models/payment-return-params.d.ts +91 -8
  113. package/lib/typescript/commonjs/core/models/payment-return-params.d.ts.map +1 -1
  114. package/lib/typescript/commonjs/core/models/pending-session-record.d.ts +11 -0
  115. package/lib/typescript/commonjs/core/models/pending-session-record.d.ts.map +1 -0
  116. package/lib/typescript/commonjs/core/services/hosted-flow-controller.d.ts +119 -0
  117. package/lib/typescript/commonjs/core/services/hosted-flow-controller.d.ts.map +1 -0
  118. package/lib/typescript/commonjs/core/services/hosted-flow-state.d.ts +75 -0
  119. package/lib/typescript/commonjs/core/services/hosted-flow-state.d.ts.map +1 -0
  120. package/lib/typescript/commonjs/index.d.ts +5 -14
  121. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  122. package/lib/typescript/commonjs/internal/hosted/bridge-message.d.ts +44 -0
  123. package/lib/typescript/commonjs/internal/hosted/bridge-message.d.ts.map +1 -0
  124. package/lib/typescript/commonjs/internal/hosted/hosted-url.d.ts +30 -0
  125. package/lib/typescript/commonjs/internal/hosted/hosted-url.d.ts.map +1 -0
  126. package/lib/typescript/commonjs/internal/index.d.ts +0 -1
  127. package/lib/typescript/commonjs/internal/index.d.ts.map +1 -1
  128. package/lib/typescript/commonjs/internal/redact-uri.d.ts +21 -1
  129. package/lib/typescript/commonjs/internal/redact-uri.d.ts.map +1 -1
  130. package/lib/typescript/commonjs/internal/secure-store-pending-session-store.d.ts +3 -2
  131. package/lib/typescript/commonjs/internal/secure-store-pending-session-store.d.ts.map +1 -1
  132. package/lib/typescript/commonjs/internal/url-parts.d.ts +46 -0
  133. package/lib/typescript/commonjs/internal/url-parts.d.ts.map +1 -0
  134. package/lib/typescript/commonjs/public/index.d.ts +4 -6
  135. package/lib/typescript/commonjs/public/index.d.ts.map +1 -1
  136. package/lib/typescript/commonjs/public/payment-result.d.ts +50 -12
  137. package/lib/typescript/commonjs/public/payment-result.d.ts.map +1 -1
  138. package/lib/typescript/commonjs/public/recovery-result.d.ts +11 -20
  139. package/lib/typescript/commonjs/public/recovery-result.d.ts.map +1 -1
  140. package/lib/typescript/commonjs/public/spare-link-config.d.ts +13 -31
  141. package/lib/typescript/commonjs/public/spare-link-config.d.ts.map +1 -1
  142. package/lib/typescript/commonjs/public/spare-link-event.d.ts +29 -31
  143. package/lib/typescript/commonjs/public/spare-link-event.d.ts.map +1 -1
  144. package/lib/typescript/commonjs/public/spare-link-host-api.d.ts +1 -12
  145. package/lib/typescript/commonjs/public/spare-link-host-api.d.ts.map +1 -1
  146. package/lib/typescript/commonjs/public/spare-link-instance.d.ts +26 -20
  147. package/lib/typescript/commonjs/public/spare-link-instance.d.ts.map +1 -1
  148. package/lib/typescript/commonjs/public/spare-link-session.d.ts +3 -8
  149. package/lib/typescript/commonjs/public/spare-link-session.d.ts.map +1 -1
  150. package/lib/typescript/commonjs/public/spare-link.d.ts +1 -1
  151. package/lib/typescript/commonjs/public/spare-link.d.ts.map +1 -1
  152. package/lib/typescript/commonjs/ui/hooks/use-hosted-flow-state.d.ts +9 -0
  153. package/lib/typescript/commonjs/ui/hooks/use-hosted-flow-state.d.ts.map +1 -0
  154. package/lib/typescript/commonjs/ui/hosted/hosted-payment-page.d.ts +17 -0
  155. package/lib/typescript/commonjs/ui/hosted/hosted-payment-page.d.ts.map +1 -0
  156. package/lib/typescript/commonjs/ui/hosted/hosted-payment-webview.d.ts +43 -0
  157. package/lib/typescript/commonjs/ui/hosted/hosted-payment-webview.d.ts.map +1 -0
  158. package/lib/typescript/commonjs/ui/screens/index.d.ts +1 -3
  159. package/lib/typescript/commonjs/ui/screens/index.d.ts.map +1 -1
  160. package/lib/typescript/commonjs/ui/screens/page-unavailable-screen.d.ts +18 -0
  161. package/lib/typescript/commonjs/ui/screens/page-unavailable-screen.d.ts.map +1 -0
  162. package/lib/typescript/commonjs/ui/spare-link-host.d.ts +4 -5
  163. package/lib/typescript/commonjs/ui/spare-link-host.d.ts.map +1 -1
  164. package/lib/typescript/commonjs/ui/widgets/index.d.ts +1 -2
  165. package/lib/typescript/commonjs/ui/widgets/index.d.ts.map +1 -1
  166. package/lib/typescript/commonjs/version.d.ts +1 -1
  167. package/lib/typescript/commonjs/version.d.ts.map +1 -1
  168. package/lib/typescript/module/core/models/index.d.ts +1 -123
  169. package/lib/typescript/module/core/models/index.d.ts.map +1 -1
  170. package/lib/typescript/module/core/models/payment-return-params.d.ts +91 -8
  171. package/lib/typescript/module/core/models/payment-return-params.d.ts.map +1 -1
  172. package/lib/typescript/module/core/models/pending-session-record.d.ts +11 -0
  173. package/lib/typescript/module/core/models/pending-session-record.d.ts.map +1 -0
  174. package/lib/typescript/module/core/services/hosted-flow-controller.d.ts +119 -0
  175. package/lib/typescript/module/core/services/hosted-flow-controller.d.ts.map +1 -0
  176. package/lib/typescript/module/core/services/hosted-flow-state.d.ts +75 -0
  177. package/lib/typescript/module/core/services/hosted-flow-state.d.ts.map +1 -0
  178. package/lib/typescript/module/index.d.ts +5 -14
  179. package/lib/typescript/module/index.d.ts.map +1 -1
  180. package/lib/typescript/module/internal/hosted/bridge-message.d.ts +44 -0
  181. package/lib/typescript/module/internal/hosted/bridge-message.d.ts.map +1 -0
  182. package/lib/typescript/module/internal/hosted/hosted-url.d.ts +30 -0
  183. package/lib/typescript/module/internal/hosted/hosted-url.d.ts.map +1 -0
  184. package/lib/typescript/module/internal/index.d.ts +0 -1
  185. package/lib/typescript/module/internal/index.d.ts.map +1 -1
  186. package/lib/typescript/module/internal/redact-uri.d.ts +21 -1
  187. package/lib/typescript/module/internal/redact-uri.d.ts.map +1 -1
  188. package/lib/typescript/module/internal/secure-store-pending-session-store.d.ts +3 -2
  189. package/lib/typescript/module/internal/secure-store-pending-session-store.d.ts.map +1 -1
  190. package/lib/typescript/module/internal/url-parts.d.ts +46 -0
  191. package/lib/typescript/module/internal/url-parts.d.ts.map +1 -0
  192. package/lib/typescript/module/public/index.d.ts +4 -6
  193. package/lib/typescript/module/public/index.d.ts.map +1 -1
  194. package/lib/typescript/module/public/payment-result.d.ts +50 -12
  195. package/lib/typescript/module/public/payment-result.d.ts.map +1 -1
  196. package/lib/typescript/module/public/recovery-result.d.ts +11 -20
  197. package/lib/typescript/module/public/recovery-result.d.ts.map +1 -1
  198. package/lib/typescript/module/public/spare-link-config.d.ts +13 -31
  199. package/lib/typescript/module/public/spare-link-config.d.ts.map +1 -1
  200. package/lib/typescript/module/public/spare-link-event.d.ts +29 -31
  201. package/lib/typescript/module/public/spare-link-event.d.ts.map +1 -1
  202. package/lib/typescript/module/public/spare-link-host-api.d.ts +1 -12
  203. package/lib/typescript/module/public/spare-link-host-api.d.ts.map +1 -1
  204. package/lib/typescript/module/public/spare-link-instance.d.ts +26 -20
  205. package/lib/typescript/module/public/spare-link-instance.d.ts.map +1 -1
  206. package/lib/typescript/module/public/spare-link-session.d.ts +3 -8
  207. package/lib/typescript/module/public/spare-link-session.d.ts.map +1 -1
  208. package/lib/typescript/module/public/spare-link.d.ts +1 -1
  209. package/lib/typescript/module/public/spare-link.d.ts.map +1 -1
  210. package/lib/typescript/module/ui/hooks/use-hosted-flow-state.d.ts +9 -0
  211. package/lib/typescript/module/ui/hooks/use-hosted-flow-state.d.ts.map +1 -0
  212. package/lib/typescript/module/ui/hosted/hosted-payment-page.d.ts +17 -0
  213. package/lib/typescript/module/ui/hosted/hosted-payment-page.d.ts.map +1 -0
  214. package/lib/typescript/module/ui/hosted/hosted-payment-webview.d.ts +43 -0
  215. package/lib/typescript/module/ui/hosted/hosted-payment-webview.d.ts.map +1 -0
  216. package/lib/typescript/module/ui/screens/index.d.ts +1 -3
  217. package/lib/typescript/module/ui/screens/index.d.ts.map +1 -1
  218. package/lib/typescript/module/ui/screens/page-unavailable-screen.d.ts +18 -0
  219. package/lib/typescript/module/ui/screens/page-unavailable-screen.d.ts.map +1 -0
  220. package/lib/typescript/module/ui/spare-link-host.d.ts +4 -5
  221. package/lib/typescript/module/ui/spare-link-host.d.ts.map +1 -1
  222. package/lib/typescript/module/ui/widgets/index.d.ts +1 -2
  223. package/lib/typescript/module/ui/widgets/index.d.ts.map +1 -1
  224. package/lib/typescript/module/version.d.ts +1 -1
  225. package/lib/typescript/module/version.d.ts.map +1 -1
  226. package/package.json +24 -22
  227. package/plugins/with-spare-link.js +6 -26
  228. package/src/core/models/index.ts +1 -139
  229. package/src/core/models/payment-return-params.ts +269 -21
  230. package/src/core/models/pending-session-record.ts +10 -0
  231. package/src/core/services/hosted-flow-controller.ts +374 -0
  232. package/src/core/services/hosted-flow-state.ts +123 -0
  233. package/src/index.ts +20 -89
  234. package/src/internal/hosted/bridge-message.ts +106 -0
  235. package/src/internal/hosted/hosted-url.ts +33 -0
  236. package/src/internal/index.ts +0 -1
  237. package/src/internal/redact-uri.ts +69 -15
  238. package/src/internal/secure-store-pending-session-store.ts +28 -49
  239. package/src/internal/url-parts.ts +134 -0
  240. package/src/public/index.ts +2 -24
  241. package/src/public/payment-result.ts +50 -12
  242. package/src/public/recovery-result.ts +16 -25
  243. package/src/public/spare-link-config.ts +56 -43
  244. package/src/public/spare-link-event.ts +33 -42
  245. package/src/public/spare-link-host-api.ts +1 -14
  246. package/src/public/spare-link-instance.ts +57 -65
  247. package/src/public/spare-link-session.ts +4 -16
  248. package/src/public/spare-link.ts +1 -1
  249. package/src/ui/hooks/use-hosted-flow-state.ts +16 -0
  250. package/src/ui/hosted/hosted-payment-page.tsx +178 -0
  251. package/src/ui/hosted/hosted-payment-webview.tsx +164 -0
  252. package/src/ui/screens/index.ts +4 -6
  253. package/src/ui/screens/page-unavailable-screen.tsx +94 -0
  254. package/src/ui/spare-link-host.tsx +227 -247
  255. package/src/ui/widgets/index.ts +1 -2
  256. package/src/version.ts +1 -1
  257. package/CHANGELOG.md +0 -25
  258. package/lib/commonjs/core/client/link-api-client.js +0 -297
  259. package/lib/commonjs/core/client/link-api-client.js.map +0 -1
  260. package/lib/commonjs/core/errors/payment-api-error.js +0 -35
  261. package/lib/commonjs/core/errors/payment-api-error.js.map +0 -1
  262. package/lib/commonjs/core/models/link-session-status.js +0 -14
  263. package/lib/commonjs/core/models/link-session-status.js.map +0 -1
  264. package/lib/commonjs/core/models/payment-type.js +0 -45
  265. package/lib/commonjs/core/models/payment-type.js.map +0 -1
  266. package/lib/commonjs/core/models/wire-mappers.js +0 -277
  267. package/lib/commonjs/core/models/wire-mappers.js.map +0 -1
  268. package/lib/commonjs/core/services/consent-presenter.js +0 -150
  269. package/lib/commonjs/core/services/consent-presenter.js.map +0 -1
  270. package/lib/commonjs/core/services/execute-resume-if-needed.js +0 -216
  271. package/lib/commonjs/core/services/execute-resume-if-needed.js.map +0 -1
  272. package/lib/commonjs/core/services/multi-payment-rules-presenter.js +0 -151
  273. package/lib/commonjs/core/services/multi-payment-rules-presenter.js.map +0 -1
  274. package/lib/commonjs/core/services/payment-flow-controller.js +0 -547
  275. package/lib/commonjs/core/services/payment-flow-controller.js.map +0 -1
  276. package/lib/commonjs/core/services/payment-flow-state.js +0 -110
  277. package/lib/commonjs/core/services/payment-flow-state.js.map +0 -1
  278. package/lib/commonjs/core/services/payment-result-mapper.js +0 -49
  279. package/lib/commonjs/core/services/payment-result-mapper.js.map +0 -1
  280. package/lib/commonjs/core/services/presentation-utils.js +0 -11
  281. package/lib/commonjs/core/services/presentation-utils.js.map +0 -1
  282. package/lib/commonjs/core/services/redirect-buffer.js +0 -40
  283. package/lib/commonjs/core/services/redirect-buffer.js.map +0 -1
  284. package/lib/commonjs/core/services/user-friendly-messages.js +0 -46
  285. package/lib/commonjs/core/services/user-friendly-messages.js.map +0 -1
  286. package/lib/commonjs/internal/telemetry-collector.js +0 -80
  287. package/lib/commonjs/internal/telemetry-collector.js.map +0 -1
  288. package/lib/commonjs/public/constants.js +0 -21
  289. package/lib/commonjs/public/constants.js.map +0 -1
  290. package/lib/commonjs/public/spare-link-callbacks.js +0 -6
  291. package/lib/commonjs/public/spare-link-callbacks.js.map +0 -1
  292. package/lib/commonjs/ui/consent/charge-bearer-display.js +0 -99
  293. package/lib/commonjs/ui/consent/charge-bearer-display.js.map +0 -1
  294. package/lib/commonjs/ui/consent/consent-accordion.js +0 -94
  295. package/lib/commonjs/ui/consent/consent-accordion.js.map +0 -1
  296. package/lib/commonjs/ui/consent/consent-summary-section.js +0 -27
  297. package/lib/commonjs/ui/consent/consent-summary-section.js.map +0 -1
  298. package/lib/commonjs/ui/consent/cop-information.js +0 -168
  299. package/lib/commonjs/ui/consent/cop-information.js.map +0 -1
  300. package/lib/commonjs/ui/consent/international-payment-summary.js +0 -98
  301. package/lib/commonjs/ui/consent/international-payment-summary.js.map +0 -1
  302. package/lib/commonjs/ui/consent/label-value-rows.js +0 -59
  303. package/lib/commonjs/ui/consent/label-value-rows.js.map +0 -1
  304. package/lib/commonjs/ui/consent/multi-payment-rules-list.js +0 -130
  305. package/lib/commonjs/ui/consent/multi-payment-rules-list.js.map +0 -1
  306. package/lib/commonjs/ui/consent/multi-payment-summary.js +0 -99
  307. package/lib/commonjs/ui/consent/multi-payment-summary.js.map +0 -1
  308. package/lib/commonjs/ui/consent/single-payment-summary.js +0 -158
  309. package/lib/commonjs/ui/consent/single-payment-summary.js.map +0 -1
  310. package/lib/commonjs/ui/consent/terms-link.js +0 -35
  311. package/lib/commonjs/ui/consent/terms-link.js.map +0 -1
  312. package/lib/commonjs/ui/hooks/use-payment-flow-state.js.map +0 -1
  313. package/lib/commonjs/ui/payment-flow-page.js +0 -235
  314. package/lib/commonjs/ui/payment-flow-page.js.map +0 -1
  315. package/lib/commonjs/ui/screens/bank-selection-screen.js +0 -215
  316. package/lib/commonjs/ui/screens/bank-selection-screen.js.map +0 -1
  317. package/lib/commonjs/ui/screens/consent-details-screen.js +0 -124
  318. package/lib/commonjs/ui/screens/consent-details-screen.js.map +0 -1
  319. package/lib/commonjs/ui/screens/mandate-setup-success-screen.js +0 -79
  320. package/lib/commonjs/ui/screens/mandate-setup-success-screen.js.map +0 -1
  321. package/lib/commonjs/ui/widgets/layout-w-header.js +0 -106
  322. package/lib/commonjs/ui/widgets/layout-w-header.js.map +0 -1
  323. package/lib/commonjs/ui/widgets/stepper.js +0 -124
  324. package/lib/commonjs/ui/widgets/stepper.js.map +0 -1
  325. package/lib/module/core/client/link-api-client.js +0 -292
  326. package/lib/module/core/client/link-api-client.js.map +0 -1
  327. package/lib/module/core/errors/payment-api-error.js +0 -29
  328. package/lib/module/core/errors/payment-api-error.js.map +0 -1
  329. package/lib/module/core/models/link-session-status.js +0 -10
  330. package/lib/module/core/models/link-session-status.js.map +0 -1
  331. package/lib/module/core/models/payment-type.js +0 -36
  332. package/lib/module/core/models/payment-type.js.map +0 -1
  333. package/lib/module/core/models/wire-mappers.js +0 -263
  334. package/lib/module/core/models/wire-mappers.js.map +0 -1
  335. package/lib/module/core/services/consent-presenter.js +0 -140
  336. package/lib/module/core/services/consent-presenter.js.map +0 -1
  337. package/lib/module/core/services/execute-resume-if-needed.js +0 -211
  338. package/lib/module/core/services/execute-resume-if-needed.js.map +0 -1
  339. package/lib/module/core/services/multi-payment-rules-presenter.js +0 -146
  340. package/lib/module/core/services/multi-payment-rules-presenter.js.map +0 -1
  341. package/lib/module/core/services/payment-flow-controller.js +0 -544
  342. package/lib/module/core/services/payment-flow-controller.js.map +0 -1
  343. package/lib/module/core/services/payment-flow-state.js +0 -106
  344. package/lib/module/core/services/payment-flow-state.js.map +0 -1
  345. package/lib/module/core/services/payment-result-mapper.js +0 -45
  346. package/lib/module/core/services/payment-result-mapper.js.map +0 -1
  347. package/lib/module/core/services/presentation-utils.js +0 -7
  348. package/lib/module/core/services/presentation-utils.js.map +0 -1
  349. package/lib/module/core/services/redirect-buffer.js +0 -33
  350. package/lib/module/core/services/redirect-buffer.js.map +0 -1
  351. package/lib/module/core/services/user-friendly-messages.js +0 -42
  352. package/lib/module/core/services/user-friendly-messages.js.map +0 -1
  353. package/lib/module/internal/telemetry-collector.js +0 -75
  354. package/lib/module/internal/telemetry-collector.js.map +0 -1
  355. package/lib/module/public/constants.js +0 -17
  356. package/lib/module/public/constants.js.map +0 -1
  357. package/lib/module/public/spare-link-callbacks.js +0 -4
  358. package/lib/module/public/spare-link-callbacks.js.map +0 -1
  359. package/lib/module/ui/consent/charge-bearer-display.js +0 -95
  360. package/lib/module/ui/consent/charge-bearer-display.js.map +0 -1
  361. package/lib/module/ui/consent/consent-accordion.js +0 -90
  362. package/lib/module/ui/consent/consent-accordion.js.map +0 -1
  363. package/lib/module/ui/consent/consent-summary-section.js +0 -23
  364. package/lib/module/ui/consent/consent-summary-section.js.map +0 -1
  365. package/lib/module/ui/consent/cop-information.js +0 -165
  366. package/lib/module/ui/consent/cop-information.js.map +0 -1
  367. package/lib/module/ui/consent/international-payment-summary.js +0 -94
  368. package/lib/module/ui/consent/international-payment-summary.js.map +0 -1
  369. package/lib/module/ui/consent/label-value-rows.js +0 -55
  370. package/lib/module/ui/consent/label-value-rows.js.map +0 -1
  371. package/lib/module/ui/consent/multi-payment-rules-list.js +0 -125
  372. package/lib/module/ui/consent/multi-payment-rules-list.js.map +0 -1
  373. package/lib/module/ui/consent/multi-payment-summary.js +0 -95
  374. package/lib/module/ui/consent/multi-payment-summary.js.map +0 -1
  375. package/lib/module/ui/consent/single-payment-summary.js +0 -154
  376. package/lib/module/ui/consent/single-payment-summary.js.map +0 -1
  377. package/lib/module/ui/consent/terms-link.js +0 -31
  378. package/lib/module/ui/consent/terms-link.js.map +0 -1
  379. package/lib/module/ui/hooks/use-payment-flow-state.js.map +0 -1
  380. package/lib/module/ui/payment-flow-page.js +0 -232
  381. package/lib/module/ui/payment-flow-page.js.map +0 -1
  382. package/lib/module/ui/screens/bank-selection-screen.js +0 -211
  383. package/lib/module/ui/screens/bank-selection-screen.js.map +0 -1
  384. package/lib/module/ui/screens/consent-details-screen.js +0 -120
  385. package/lib/module/ui/screens/consent-details-screen.js.map +0 -1
  386. package/lib/module/ui/screens/mandate-setup-success-screen.js +0 -75
  387. package/lib/module/ui/screens/mandate-setup-success-screen.js.map +0 -1
  388. package/lib/module/ui/widgets/layout-w-header.js +0 -102
  389. package/lib/module/ui/widgets/layout-w-header.js.map +0 -1
  390. package/lib/module/ui/widgets/stepper.js +0 -120
  391. package/lib/module/ui/widgets/stepper.js.map +0 -1
  392. package/lib/typescript/commonjs/core/client/link-api-client.d.ts +0 -70
  393. package/lib/typescript/commonjs/core/client/link-api-client.d.ts.map +0 -1
  394. package/lib/typescript/commonjs/core/errors/payment-api-error.d.ts +0 -15
  395. package/lib/typescript/commonjs/core/errors/payment-api-error.d.ts.map +0 -1
  396. package/lib/typescript/commonjs/core/models/link-session-status.d.ts +0 -6
  397. package/lib/typescript/commonjs/core/models/link-session-status.d.ts.map +0 -1
  398. package/lib/typescript/commonjs/core/models/payment-type.d.ts +0 -18
  399. package/lib/typescript/commonjs/core/models/payment-type.d.ts.map +0 -1
  400. package/lib/typescript/commonjs/core/models/wire-mappers.d.ts +0 -19
  401. package/lib/typescript/commonjs/core/models/wire-mappers.d.ts.map +0 -1
  402. package/lib/typescript/commonjs/core/services/consent-presenter.d.ts +0 -67
  403. package/lib/typescript/commonjs/core/services/consent-presenter.d.ts.map +0 -1
  404. package/lib/typescript/commonjs/core/services/execute-resume-if-needed.d.ts +0 -32
  405. package/lib/typescript/commonjs/core/services/execute-resume-if-needed.d.ts.map +0 -1
  406. package/lib/typescript/commonjs/core/services/multi-payment-rules-presenter.d.ts +0 -9
  407. package/lib/typescript/commonjs/core/services/multi-payment-rules-presenter.d.ts.map +0 -1
  408. package/lib/typescript/commonjs/core/services/payment-flow-controller.d.ts +0 -146
  409. package/lib/typescript/commonjs/core/services/payment-flow-controller.d.ts.map +0 -1
  410. package/lib/typescript/commonjs/core/services/payment-flow-state.d.ts +0 -64
  411. package/lib/typescript/commonjs/core/services/payment-flow-state.d.ts.map +0 -1
  412. package/lib/typescript/commonjs/core/services/payment-result-mapper.d.ts +0 -5
  413. package/lib/typescript/commonjs/core/services/payment-result-mapper.d.ts.map +0 -1
  414. package/lib/typescript/commonjs/core/services/presentation-utils.d.ts +0 -5
  415. package/lib/typescript/commonjs/core/services/presentation-utils.d.ts.map +0 -1
  416. package/lib/typescript/commonjs/core/services/redirect-buffer.d.ts +0 -6
  417. package/lib/typescript/commonjs/core/services/redirect-buffer.d.ts.map +0 -1
  418. package/lib/typescript/commonjs/core/services/user-friendly-messages.d.ts +0 -6
  419. package/lib/typescript/commonjs/core/services/user-friendly-messages.d.ts.map +0 -1
  420. package/lib/typescript/commonjs/internal/telemetry-collector.d.ts +0 -2
  421. package/lib/typescript/commonjs/internal/telemetry-collector.d.ts.map +0 -1
  422. package/lib/typescript/commonjs/public/constants.d.ts +0 -12
  423. package/lib/typescript/commonjs/public/constants.d.ts.map +0 -1
  424. package/lib/typescript/commonjs/public/spare-link-callbacks.d.ts +0 -14
  425. package/lib/typescript/commonjs/public/spare-link-callbacks.d.ts.map +0 -1
  426. package/lib/typescript/commonjs/ui/consent/charge-bearer-display.d.ts +0 -5
  427. package/lib/typescript/commonjs/ui/consent/charge-bearer-display.d.ts.map +0 -1
  428. package/lib/typescript/commonjs/ui/consent/consent-accordion.d.ts +0 -10
  429. package/lib/typescript/commonjs/ui/consent/consent-accordion.d.ts.map +0 -1
  430. package/lib/typescript/commonjs/ui/consent/consent-summary-section.d.ts +0 -6
  431. package/lib/typescript/commonjs/ui/consent/consent-summary-section.d.ts.map +0 -1
  432. package/lib/typescript/commonjs/ui/consent/cop-information.d.ts +0 -6
  433. package/lib/typescript/commonjs/ui/consent/cop-information.d.ts.map +0 -1
  434. package/lib/typescript/commonjs/ui/consent/international-payment-summary.d.ts +0 -6
  435. package/lib/typescript/commonjs/ui/consent/international-payment-summary.d.ts.map +0 -1
  436. package/lib/typescript/commonjs/ui/consent/label-value-rows.d.ts +0 -10
  437. package/lib/typescript/commonjs/ui/consent/label-value-rows.d.ts.map +0 -1
  438. package/lib/typescript/commonjs/ui/consent/multi-payment-rules-list.d.ts +0 -15
  439. package/lib/typescript/commonjs/ui/consent/multi-payment-rules-list.d.ts.map +0 -1
  440. package/lib/typescript/commonjs/ui/consent/multi-payment-summary.d.ts +0 -6
  441. package/lib/typescript/commonjs/ui/consent/multi-payment-summary.d.ts.map +0 -1
  442. package/lib/typescript/commonjs/ui/consent/single-payment-summary.d.ts +0 -6
  443. package/lib/typescript/commonjs/ui/consent/single-payment-summary.d.ts.map +0 -1
  444. package/lib/typescript/commonjs/ui/consent/terms-link.d.ts +0 -2
  445. package/lib/typescript/commonjs/ui/consent/terms-link.d.ts.map +0 -1
  446. package/lib/typescript/commonjs/ui/hooks/use-payment-flow-state.d.ts +0 -9
  447. package/lib/typescript/commonjs/ui/hooks/use-payment-flow-state.d.ts.map +0 -1
  448. package/lib/typescript/commonjs/ui/payment-flow-page.d.ts +0 -20
  449. package/lib/typescript/commonjs/ui/payment-flow-page.d.ts.map +0 -1
  450. package/lib/typescript/commonjs/ui/screens/bank-selection-screen.d.ts +0 -15
  451. package/lib/typescript/commonjs/ui/screens/bank-selection-screen.d.ts.map +0 -1
  452. package/lib/typescript/commonjs/ui/screens/consent-details-screen.d.ts +0 -13
  453. package/lib/typescript/commonjs/ui/screens/consent-details-screen.d.ts.map +0 -1
  454. package/lib/typescript/commonjs/ui/screens/mandate-setup-success-screen.d.ts +0 -10
  455. package/lib/typescript/commonjs/ui/screens/mandate-setup-success-screen.d.ts.map +0 -1
  456. package/lib/typescript/commonjs/ui/widgets/layout-w-header.d.ts +0 -20
  457. package/lib/typescript/commonjs/ui/widgets/layout-w-header.d.ts.map +0 -1
  458. package/lib/typescript/commonjs/ui/widgets/stepper.d.ts +0 -15
  459. package/lib/typescript/commonjs/ui/widgets/stepper.d.ts.map +0 -1
  460. package/lib/typescript/module/core/client/link-api-client.d.ts +0 -70
  461. package/lib/typescript/module/core/client/link-api-client.d.ts.map +0 -1
  462. package/lib/typescript/module/core/errors/payment-api-error.d.ts +0 -15
  463. package/lib/typescript/module/core/errors/payment-api-error.d.ts.map +0 -1
  464. package/lib/typescript/module/core/models/link-session-status.d.ts +0 -6
  465. package/lib/typescript/module/core/models/link-session-status.d.ts.map +0 -1
  466. package/lib/typescript/module/core/models/payment-type.d.ts +0 -18
  467. package/lib/typescript/module/core/models/payment-type.d.ts.map +0 -1
  468. package/lib/typescript/module/core/models/wire-mappers.d.ts +0 -19
  469. package/lib/typescript/module/core/models/wire-mappers.d.ts.map +0 -1
  470. package/lib/typescript/module/core/services/consent-presenter.d.ts +0 -67
  471. package/lib/typescript/module/core/services/consent-presenter.d.ts.map +0 -1
  472. package/lib/typescript/module/core/services/execute-resume-if-needed.d.ts +0 -32
  473. package/lib/typescript/module/core/services/execute-resume-if-needed.d.ts.map +0 -1
  474. package/lib/typescript/module/core/services/multi-payment-rules-presenter.d.ts +0 -9
  475. package/lib/typescript/module/core/services/multi-payment-rules-presenter.d.ts.map +0 -1
  476. package/lib/typescript/module/core/services/payment-flow-controller.d.ts +0 -146
  477. package/lib/typescript/module/core/services/payment-flow-controller.d.ts.map +0 -1
  478. package/lib/typescript/module/core/services/payment-flow-state.d.ts +0 -64
  479. package/lib/typescript/module/core/services/payment-flow-state.d.ts.map +0 -1
  480. package/lib/typescript/module/core/services/payment-result-mapper.d.ts +0 -5
  481. package/lib/typescript/module/core/services/payment-result-mapper.d.ts.map +0 -1
  482. package/lib/typescript/module/core/services/presentation-utils.d.ts +0 -5
  483. package/lib/typescript/module/core/services/presentation-utils.d.ts.map +0 -1
  484. package/lib/typescript/module/core/services/redirect-buffer.d.ts +0 -6
  485. package/lib/typescript/module/core/services/redirect-buffer.d.ts.map +0 -1
  486. package/lib/typescript/module/core/services/user-friendly-messages.d.ts +0 -6
  487. package/lib/typescript/module/core/services/user-friendly-messages.d.ts.map +0 -1
  488. package/lib/typescript/module/internal/telemetry-collector.d.ts +0 -2
  489. package/lib/typescript/module/internal/telemetry-collector.d.ts.map +0 -1
  490. package/lib/typescript/module/public/constants.d.ts +0 -12
  491. package/lib/typescript/module/public/constants.d.ts.map +0 -1
  492. package/lib/typescript/module/public/spare-link-callbacks.d.ts +0 -14
  493. package/lib/typescript/module/public/spare-link-callbacks.d.ts.map +0 -1
  494. package/lib/typescript/module/ui/consent/charge-bearer-display.d.ts +0 -5
  495. package/lib/typescript/module/ui/consent/charge-bearer-display.d.ts.map +0 -1
  496. package/lib/typescript/module/ui/consent/consent-accordion.d.ts +0 -10
  497. package/lib/typescript/module/ui/consent/consent-accordion.d.ts.map +0 -1
  498. package/lib/typescript/module/ui/consent/consent-summary-section.d.ts +0 -6
  499. package/lib/typescript/module/ui/consent/consent-summary-section.d.ts.map +0 -1
  500. package/lib/typescript/module/ui/consent/cop-information.d.ts +0 -6
  501. package/lib/typescript/module/ui/consent/cop-information.d.ts.map +0 -1
  502. package/lib/typescript/module/ui/consent/international-payment-summary.d.ts +0 -6
  503. package/lib/typescript/module/ui/consent/international-payment-summary.d.ts.map +0 -1
  504. package/lib/typescript/module/ui/consent/label-value-rows.d.ts +0 -10
  505. package/lib/typescript/module/ui/consent/label-value-rows.d.ts.map +0 -1
  506. package/lib/typescript/module/ui/consent/multi-payment-rules-list.d.ts +0 -15
  507. package/lib/typescript/module/ui/consent/multi-payment-rules-list.d.ts.map +0 -1
  508. package/lib/typescript/module/ui/consent/multi-payment-summary.d.ts +0 -6
  509. package/lib/typescript/module/ui/consent/multi-payment-summary.d.ts.map +0 -1
  510. package/lib/typescript/module/ui/consent/single-payment-summary.d.ts +0 -6
  511. package/lib/typescript/module/ui/consent/single-payment-summary.d.ts.map +0 -1
  512. package/lib/typescript/module/ui/consent/terms-link.d.ts +0 -2
  513. package/lib/typescript/module/ui/consent/terms-link.d.ts.map +0 -1
  514. package/lib/typescript/module/ui/hooks/use-payment-flow-state.d.ts +0 -9
  515. package/lib/typescript/module/ui/hooks/use-payment-flow-state.d.ts.map +0 -1
  516. package/lib/typescript/module/ui/payment-flow-page.d.ts +0 -20
  517. package/lib/typescript/module/ui/payment-flow-page.d.ts.map +0 -1
  518. package/lib/typescript/module/ui/screens/bank-selection-screen.d.ts +0 -15
  519. package/lib/typescript/module/ui/screens/bank-selection-screen.d.ts.map +0 -1
  520. package/lib/typescript/module/ui/screens/consent-details-screen.d.ts +0 -13
  521. package/lib/typescript/module/ui/screens/consent-details-screen.d.ts.map +0 -1
  522. package/lib/typescript/module/ui/screens/mandate-setup-success-screen.d.ts +0 -10
  523. package/lib/typescript/module/ui/screens/mandate-setup-success-screen.d.ts.map +0 -1
  524. package/lib/typescript/module/ui/widgets/layout-w-header.d.ts +0 -20
  525. package/lib/typescript/module/ui/widgets/layout-w-header.d.ts.map +0 -1
  526. package/lib/typescript/module/ui/widgets/stepper.d.ts +0 -15
  527. package/lib/typescript/module/ui/widgets/stepper.d.ts.map +0 -1
  528. package/src/core/client/link-api-client.ts +0 -414
  529. package/src/core/errors/payment-api-error.ts +0 -35
  530. package/src/core/models/link-session-status.ts +0 -7
  531. package/src/core/models/payment-type.ts +0 -54
  532. package/src/core/models/wire-mappers.ts +0 -315
  533. package/src/core/services/consent-presenter.ts +0 -213
  534. package/src/core/services/execute-resume-if-needed.ts +0 -243
  535. package/src/core/services/multi-payment-rules-presenter.ts +0 -158
  536. package/src/core/services/payment-flow-controller.ts +0 -607
  537. package/src/core/services/payment-flow-state.ts +0 -124
  538. package/src/core/services/payment-result-mapper.ts +0 -41
  539. package/src/core/services/presentation-utils.ts +0 -4
  540. package/src/core/services/redirect-buffer.ts +0 -34
  541. package/src/core/services/user-friendly-messages.ts +0 -39
  542. package/src/internal/telemetry-collector.ts +0 -90
  543. package/src/public/constants.ts +0 -14
  544. package/src/public/spare-link-callbacks.ts +0 -20
  545. package/src/ui/consent/charge-bearer-display.tsx +0 -68
  546. package/src/ui/consent/consent-accordion.tsx +0 -89
  547. package/src/ui/consent/consent-summary-section.tsx +0 -19
  548. package/src/ui/consent/cop-information.tsx +0 -121
  549. package/src/ui/consent/international-payment-summary.tsx +0 -83
  550. package/src/ui/consent/label-value-rows.tsx +0 -50
  551. package/src/ui/consent/multi-payment-rules-list.tsx +0 -138
  552. package/src/ui/consent/multi-payment-summary.tsx +0 -82
  553. package/src/ui/consent/single-payment-summary.tsx +0 -123
  554. package/src/ui/consent/terms-link.tsx +0 -27
  555. package/src/ui/hooks/use-payment-flow-state.ts +0 -16
  556. package/src/ui/payment-flow-page.tsx +0 -254
  557. package/src/ui/screens/bank-selection-screen.tsx +0 -209
  558. package/src/ui/screens/consent-details-screen.tsx +0 -106
  559. package/src/ui/screens/mandate-setup-success-screen.tsx +0 -72
  560. package/src/ui/widgets/layout-w-header.tsx +0 -89
  561. package/src/ui/widgets/stepper.tsx +0 -126
@@ -6,18 +6,21 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.SecureStorePendingSessionStore = void 0;
7
7
  var _logger = require("./logger.js");
8
8
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); } /**
9
- * Production `PendingSessionStore` backed by expo-secure-store. Persists a
10
- * single in-flight payment session so the SDK can recover after cold start.
9
+ * Production `PendingSessionStore` backed by expo-secure-store. Persists the
10
+ * reference of a single in-flight payment so a cold start knows which payment
11
+ * was under way.
11
12
  */
12
13
  const log = (0, _logger.createLogger)('SecureStorePendingSessionStore');
13
- const KEYS = {
14
- sessionId: 'spare_link_session_id',
15
- bankId: 'spare_link_bank_id',
16
- authUrl: 'spare_link_auth_url',
17
- consentAt: 'spare_link_consent_at',
18
- recoveryAttempts: 'spare_link_recovery_attempts',
19
- merchantRef: 'spare_link_merchant_ref'
20
- };
14
+ const KEY_REFERENCE = 'spare_link_reference';
15
+
16
+ /**
17
+ * Keys earlier versions wrote, cleared alongside our own.
18
+ *
19
+ * An app upgrading mid-payment would otherwise keep a token and session it can
20
+ * never resolve — the endpoints they addressed are gone — and the secure store
21
+ * outlives the version that wrote to it.
22
+ */
23
+ const RETIRED_KEYS = ['spare_link_token', 'spare_link_session_id', 'spare_link_bank_id', 'spare_link_auth_url', 'spare_link_consent_at', 'spare_link_recovery_attempts', 'spare_link_merchant_ref'];
21
24
  async function defaultLoader() {
22
25
  try {
23
26
  return await Promise.resolve().then(() => _interopRequireWildcard(require('expo-secure-store')));
@@ -57,34 +60,26 @@ class SecureStorePendingSessionStore {
57
60
  save(record) {
58
61
  return this.enqueueWrite(async () => {
59
62
  const s = await this.module;
60
- await Promise.all([s.setItemAsync(KEYS.sessionId, record.sessionId), s.setItemAsync(KEYS.bankId, record.selectedBankId), s.setItemAsync(KEYS.authUrl, record.authorizationUrl), record.consentAt !== undefined ? s.setItemAsync(KEYS.consentAt, String(record.consentAt)) : s.deleteItemAsync(KEYS.consentAt), s.setItemAsync(KEYS.recoveryAttempts, String(record.recoveryAttempts)), record.merchantRef ? s.setItemAsync(KEYS.merchantRef, record.merchantRef) : s.deleteItemAsync(KEYS.merchantRef)]);
63
+ await s.setItemAsync(KEY_REFERENCE, record.reference);
61
64
  });
62
65
  }
63
66
  async load() {
64
67
  // Wait for any pending writes to settle so we read a consistent snapshot.
65
68
  await this.writeQueue.catch(() => undefined);
66
69
  const s = await this.module;
67
- const [sessionId, bankId, authUrl, consentAtRaw, attemptsRaw, merchantRef] = await Promise.all([s.getItemAsync(KEYS.sessionId), s.getItemAsync(KEYS.bankId), s.getItemAsync(KEYS.authUrl), s.getItemAsync(KEYS.consentAt), s.getItemAsync(KEYS.recoveryAttempts), s.getItemAsync(KEYS.merchantRef)]);
68
- if (!sessionId || !bankId || !authUrl) {
69
- log.fine('load: no pending session found');
70
+ const reference = await s.getItemAsync(KEY_REFERENCE);
71
+ if (!reference) {
72
+ log.fine('load: no pending payment found');
70
73
  return null;
71
74
  }
72
- const consentAt = consentAtRaw ? Number(consentAtRaw) : undefined;
73
- const recoveryAttempts = attemptsRaw ? Number(attemptsRaw) : 0;
74
- const record = {
75
- sessionId,
76
- selectedBankId: bankId,
77
- authorizationUrl: authUrl,
78
- recoveryAttempts: Number.isFinite(recoveryAttempts) ? recoveryAttempts : 0
75
+ return {
76
+ reference
79
77
  };
80
- if (consentAt !== undefined && Number.isFinite(consentAt)) record.consentAt = consentAt;
81
- if (merchantRef) record.merchantRef = merchantRef;
82
- return record;
83
78
  }
84
79
  clear() {
85
80
  return this.enqueueWrite(async () => {
86
81
  const s = await this.module;
87
- await Promise.all([s.deleteItemAsync(KEYS.sessionId), s.deleteItemAsync(KEYS.bankId), s.deleteItemAsync(KEYS.authUrl), s.deleteItemAsync(KEYS.consentAt), s.deleteItemAsync(KEYS.recoveryAttempts), s.deleteItemAsync(KEYS.merchantRef)]);
82
+ await Promise.all([s.deleteItemAsync(KEY_REFERENCE), ...RETIRED_KEYS.map(key => s.deleteItemAsync(key))]);
88
83
  });
89
84
  }
90
85
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_logger","require","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","log","createLogger","KEYS","sessionId","bankId","authUrl","consentAt","recoveryAttempts","merchantRef","defaultLoader","Promise","resolve","then","err","Error","message","String","SecureStorePendingSessionStore","secureStore","writeQueue","constructor","moduleLoader","loader","module","enqueueWrite","op","next","catch","save","record","s","all","setItemAsync","selectedBankId","authorizationUrl","undefined","deleteItemAsync","load","consentAtRaw","attemptsRaw","getItemAsync","fine","Number","isFinite","clear","exports"],"sourceRoot":"../../../src","sources":["internal/secure-store-pending-session-store.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_logger","require","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","log","createLogger","KEY_REFERENCE","RETIRED_KEYS","defaultLoader","Promise","resolve","then","err","Error","message","String","SecureStorePendingSessionStore","secureStore","writeQueue","constructor","moduleLoader","loader","module","enqueueWrite","op","next","catch","save","record","s","setItemAsync","reference","load","undefined","getItemAsync","fine","clear","all","deleteItemAsync","map","key","exports"],"sourceRoot":"../../../src","sources":["internal/secure-store-pending-session-store.ts"],"mappings":";;;;;;AAQA,IAAAA,OAAA,GAAAC,OAAA;AAAwC,SAAAC,wBAAAC,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAH,uBAAA,YAAAA,CAAAC,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA,KARxC;AACA;AACA;AACA;AACA;AAMA,MAAMkB,GAAG,GAAG,IAAAC,oBAAY,EAAC,gCAAgC,CAAC;AAE1D,MAAMC,aAAa,GAAG,sBAAsB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,YAAY,GAAG,CACnB,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,8BAA8B,EAC9B,yBAAyB,CACjB;AAQV,eAAeC,aAAaA,CAAA,EAA+B;EACzD,IAAI;IACF,OAAQ,MAAAC,OAAA,CAAAC,OAAA,GAAAC,IAAA,OAAA3B,uBAAA,CAAAD,OAAA,CAAa,mBAAmB,GAAC;EAC3C,CAAC,CAAC,OAAO6B,GAAG,EAAE;IACZ,MAAM,IAAIC,KAAK,CACb,0FACED,GAAG,YAAYC,KAAK,GAAGD,GAAG,CAACE,OAAO,GAAGC,MAAM,CAACH,GAAG,CAAC,GAEpD,CAAC;EACH;AACF;AAEO,MAAMI,8BAA8B,CAAgC;EACjEC,WAAW,GAAsC,IAAI;EAE7D;AACF;AACA;AACA;EACUC,UAAU,GAAkBT,OAAO,CAACC,OAAO,CAAC,CAAC;;EAErD;AACF;AACA;AACA;AACA;EACES,WAAWA,CAACC,YAA8C,GAAGZ,aAAa,EAAE;IAC1E,IAAI,CAACa,MAAM,GAAGD,YAAY;EAC5B;EAEA,IAAYE,MAAMA,CAAA,EAA+B;IAC/C,IAAI,CAAC,IAAI,CAACL,WAAW,EAAE,IAAI,CAACA,WAAW,GAAG,IAAI,CAACI,MAAM,CAAC,CAAC;IACvD,OAAO,IAAI,CAACJ,WAAW;EACzB;;EAEA;EACQM,YAAYA,CAACC,EAAuB,EAAiB;IAC3D,MAAMC,IAAI,GAAG,IAAI,CAACP,UAAU,CAACP,IAAI,CAACa,EAAE,EAAEA,EAAE,CAAC;IACzC,IAAI,CAACN,UAAU,GAAGO,IAAI,CAACC,KAAK,CAAC,MAAM;MACjC;IAAA,CACD,CAAC;IACF,OAAOD,IAAI;EACb;EAEAE,IAAIA,CAACC,MAA4B,EAAiB;IAChD,OAAO,IAAI,CAACL,YAAY,CAAC,YAAY;MACnC,MAAMM,CAAC,GAAG,MAAM,IAAI,CAACP,MAAM;MAC3B,MAAMO,CAAC,CAACC,YAAY,CAACxB,aAAa,EAAEsB,MAAM,CAACG,SAAS,CAAC;IACvD,CAAC,CAAC;EACJ;EAEA,MAAMC,IAAIA,CAAA,EAAyC;IACjD;IACA,MAAM,IAAI,CAACd,UAAU,CAACQ,KAAK,CAAC,MAAMO,SAAS,CAAC;IAC5C,MAAMJ,CAAC,GAAG,MAAM,IAAI,CAACP,MAAM;IAC3B,MAAMS,SAAS,GAAG,MAAMF,CAAC,CAACK,YAAY,CAAC5B,aAAa,CAAC;IACrD,IAAI,CAACyB,SAAS,EAAE;MACd3B,GAAG,CAAC+B,IAAI,CAAC,gCAAgC,CAAC;MAC1C,OAAO,IAAI;IACb;IACA,OAAO;MAAEJ;IAAU,CAAC;EACtB;EAEAK,KAAKA,CAAA,EAAkB;IACrB,OAAO,IAAI,CAACb,YAAY,CAAC,YAAY;MACnC,MAAMM,CAAC,GAAG,MAAM,IAAI,CAACP,MAAM;MAC3B,MAAMb,OAAO,CAAC4B,GAAG,CAAC,CAChBR,CAAC,CAACS,eAAe,CAAChC,aAAa,CAAC,EAChC,GAAGC,YAAY,CAACgC,GAAG,CAAEC,GAAG,IAAKX,CAAC,CAACS,eAAe,CAACE,GAAG,CAAC,CAAC,CACrD,CAAC;IACJ,CAAC,CAAC;EACJ;AACF;AAACC,OAAA,CAAAzB,8BAAA,GAAAA,8BAAA","ignoreList":[]}
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.isSameOrigin = isSameOrigin;
7
+ exports.parseQueryParams = parseQueryParams;
8
+ exports.parseUrlParts = parseUrlParts;
9
+ /**
10
+ * Minimal URL parsing that does not go through the global `URL`.
11
+ *
12
+ * React Native ships a stub: every component accessor — `protocol`, `hostname`,
13
+ * `port`, `origin`, `search`, `pathname` — throws "not implemented", and
14
+ * `searchParams` returns a fresh empty instance that never reads the URL it was
15
+ * constructed from (`react-native/Libraries/Blob/URL.js`, installed globally by
16
+ * `setUpXHR.js`). Code written against the standard therefore behaves correctly
17
+ * under Jest, which runs on Node's real `URL`, and silently reads nothing on a
18
+ * device.
19
+ *
20
+ * The SDK parses what it needs itself rather than asking the host app to install
21
+ * a polyfill whose presence it cannot verify — an origin check that quietly
22
+ * stops comparing hosts is worse than one that was never written.
23
+ */
24
+
25
+ /** The parts of a URL this SDK compares origins on. */
26
+
27
+ /** Scheme plus authority. Anything without an authority has no origin to compare. */
28
+ const SCHEME_AND_AUTHORITY = /^([A-Za-z][A-Za-z0-9+.-]*):\/\/([^/?#]*)/;
29
+ const DEFAULT_PORTS = {
30
+ http: 80,
31
+ https: 443
32
+ };
33
+
34
+ /**
35
+ * Splits [url] into the parts an origin comparison needs, or null if it has no
36
+ * authority to compare.
37
+ */
38
+ function parseUrlParts(url) {
39
+ const match = SCHEME_AND_AUTHORITY.exec(url.trim());
40
+ if (!match?.[1] || match[2] === undefined) return null;
41
+ const scheme = match[1].toLowerCase();
42
+
43
+ // Everything up to the last `@` is userinfo, not host. `https://api.real.example@evil.example`
44
+ // is a request to evil.example, and reading the left half would accept it as the real one.
45
+ const authority = match[2].slice(match[2].lastIndexOf('@') + 1);
46
+ const hostAndPort = splitHostAndPort(authority);
47
+ if (!hostAndPort) return null;
48
+ const {
49
+ host,
50
+ portText
51
+ } = hostAndPort;
52
+ if (host.length === 0) return null;
53
+
54
+ // An empty port (`https://host:/x`) means the scheme's default, as does no port.
55
+ if (portText === undefined || portText.length === 0) {
56
+ return {
57
+ scheme,
58
+ host: host.toLowerCase(),
59
+ port: DEFAULT_PORTS[scheme]
60
+ };
61
+ }
62
+ if (!/^\d+$/.test(portText)) return null;
63
+ const port = Number.parseInt(portText, 10);
64
+ if (port > 65535) return null;
65
+ return {
66
+ scheme,
67
+ host: host.toLowerCase(),
68
+ port
69
+ };
70
+ }
71
+
72
+ /**
73
+ * Whether two URLs share a scheme, host and port.
74
+ *
75
+ * Both must carry an authority, so a relative path never matches an absolute
76
+ * URL: `/link/payment/x` names no origin and must not be read as naming this one.
77
+ */
78
+ function isSameOrigin(a, b) {
79
+ const left = parseUrlParts(a);
80
+ const right = parseUrlParts(b);
81
+ if (!left || !right) return false;
82
+ return left.scheme === right.scheme && left.host === right.host && left.port === right.port;
83
+ }
84
+
85
+ /**
86
+ * Reads the query string of [url] into a plain object.
87
+ *
88
+ * The first occurrence of a repeated key wins, matching `URLSearchParams.get`.
89
+ * A value the SDK cannot decode is kept in its raw form rather than dropping the
90
+ * parameter: callers compare against known literals, and a mangled value should
91
+ * fail that comparison rather than read as absent.
92
+ */
93
+ function parseQueryParams(url) {
94
+ const params = {};
95
+ const start = url.indexOf('?');
96
+ if (start === -1) return params;
97
+ const fragment = url.indexOf('#', start);
98
+ const query = fragment === -1 ? url.slice(start + 1) : url.slice(start + 1, fragment);
99
+ for (const pair of query.split('&')) {
100
+ if (pair.length === 0) continue;
101
+ const eq = pair.indexOf('=');
102
+ const rawKey = eq === -1 ? pair : pair.slice(0, eq);
103
+ const rawValue = eq === -1 ? '' : pair.slice(eq + 1);
104
+ const key = decodeFormComponent(rawKey);
105
+ if (key.length === 0 || Object.hasOwn(params, key)) continue;
106
+ params[key] = decodeFormComponent(rawValue);
107
+ }
108
+ return params;
109
+ }
110
+ function splitHostAndPort(authority) {
111
+ // An IPv6 literal carries colons of its own, so its brackets close the host.
112
+ if (authority.startsWith('[')) {
113
+ const close = authority.indexOf(']');
114
+ if (close === -1) return null;
115
+ const host = authority.slice(0, close + 1);
116
+ const rest = authority.slice(close + 1);
117
+ if (rest.length === 0) return {
118
+ host,
119
+ portText: undefined
120
+ };
121
+ if (!rest.startsWith(':')) return null;
122
+ return {
123
+ host,
124
+ portText: rest.slice(1)
125
+ };
126
+ }
127
+ const colon = authority.indexOf(':');
128
+ if (colon === -1) return {
129
+ host: authority,
130
+ portText: undefined
131
+ };
132
+ return {
133
+ host: authority.slice(0, colon),
134
+ portText: authority.slice(colon + 1)
135
+ };
136
+ }
137
+ function decodeFormComponent(value) {
138
+ const plusesAsSpaces = value.replace(/\+/g, ' ');
139
+ try {
140
+ return decodeURIComponent(plusesAsSpaces);
141
+ } catch {
142
+ return plusesAsSpaces;
143
+ }
144
+ }
145
+ //# sourceMappingURL=url-parts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["SCHEME_AND_AUTHORITY","DEFAULT_PORTS","http","https","parseUrlParts","url","match","exec","trim","undefined","scheme","toLowerCase","authority","slice","lastIndexOf","hostAndPort","splitHostAndPort","host","portText","length","port","test","Number","parseInt","isSameOrigin","a","b","left","right","parseQueryParams","params","start","indexOf","fragment","query","pair","split","eq","rawKey","rawValue","key","decodeFormComponent","Object","hasOwn","startsWith","close","rest","colon","value","plusesAsSpaces","replace","decodeURIComponent"],"sourceRoot":"../../../src","sources":["internal/url-parts.ts"],"mappings":"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","ignoreList":[]}
@@ -3,24 +3,6 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- Object.defineProperty(exports, "DEFAULT_AWAITING_CALLBACK_POLL_MS", {
7
- enumerable: true,
8
- get: function () {
9
- return _constants.DEFAULT_AWAITING_CALLBACK_POLL_MS;
10
- }
11
- });
12
- Object.defineProperty(exports, "DEFAULT_AWAITING_CALLBACK_TIMEOUT_MS", {
13
- enumerable: true,
14
- get: function () {
15
- return _constants.DEFAULT_AWAITING_CALLBACK_TIMEOUT_MS;
16
- }
17
- });
18
- Object.defineProperty(exports, "DEFAULT_REQUEST_TIMEOUT_MS", {
19
- enumerable: true,
20
- get: function () {
21
- return _constants.DEFAULT_REQUEST_TIMEOUT_MS;
22
- }
23
- });
24
6
  Object.defineProperty(exports, "SPARE_LINK_EVENT_TYPES", {
25
7
  enumerable: true,
26
8
  get: function () {
@@ -75,12 +57,6 @@ Object.defineProperty(exports, "isNoRecoveryNeeded", {
75
57
  return _recoveryResult.isNoRecoveryNeeded;
76
58
  }
77
59
  });
78
- Object.defineProperty(exports, "isRecoveryAwaitingUser", {
79
- enumerable: true,
80
- get: function () {
81
- return _recoveryResult.isRecoveryAwaitingUser;
82
- }
83
- });
84
60
  Object.defineProperty(exports, "isSessionRecovered", {
85
61
  enumerable: true,
86
62
  get: function () {
@@ -93,12 +69,6 @@ Object.defineProperty(exports, "isSpareLinkEvent", {
93
69
  return _spareLinkEvent.isSpareLinkEvent;
94
70
  }
95
71
  });
96
- Object.defineProperty(exports, "kMaxRecoveryAttempts", {
97
- enumerable: true,
98
- get: function () {
99
- return _constants.kMaxRecoveryAttempts;
100
- }
101
- });
102
72
  Object.defineProperty(exports, "paymentAbandoned", {
103
73
  enumerable: true,
104
74
  get: function () {
@@ -129,12 +99,6 @@ Object.defineProperty(exports, "resolvedBaseUrl", {
129
99
  return _spareLinkConfig.resolvedBaseUrl;
130
100
  }
131
101
  });
132
- Object.defineProperty(exports, "resolvedResumeBaseUrl", {
133
- enumerable: true,
134
- get: function () {
135
- return _spareLinkConfig.resolvedResumeBaseUrl;
136
- }
137
- });
138
102
  Object.defineProperty(exports, "tenantCountryCode", {
139
103
  enumerable: true,
140
104
  get: function () {
@@ -147,6 +111,5 @@ var _paymentResult = require("./payment-result.js");
147
111
  var _recoveryResult = require("./recovery-result.js");
148
112
  var _spareLinkSession = require("./spare-link-session.js");
149
113
  var _spareLinkInstance = require("./spare-link-instance.js");
150
- var _constants = require("./constants.js");
151
114
  var _logger = require("../internal/logger.js");
152
115
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_spareLinkConfig","require","_spareLinkEvent","_paymentResult","_recoveryResult","_spareLinkSession","_spareLinkInstance","_constants","_logger"],"sourceRoot":"../../../src","sources":["public/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,gBAAA,GAAAC,OAAA;AAYA,IAAAC,eAAA,GAAAD,OAAA;AAiBA,IAAAE,cAAA,GAAAF,OAAA;AA2BA,IAAAG,eAAA,GAAAH,OAAA;AAMA,IAAAI,iBAAA,GAAAJ,OAAA;AACA,IAAAK,kBAAA,GAAAL,OAAA;AAEA,IAAAM,UAAA,GAAAN,OAAA;AAOA,IAAAO,OAAA,GAAAP,OAAA","ignoreList":[]}
1
+ {"version":3,"names":["_spareLinkConfig","require","_spareLinkEvent","_paymentResult","_recoveryResult","_spareLinkSession","_spareLinkInstance","_logger"],"sourceRoot":"../../../src","sources":["public/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,gBAAA,GAAAC,OAAA;AAUA,IAAAC,eAAA,GAAAD,OAAA;AAgBA,IAAAE,cAAA,GAAAF,OAAA;AAmBA,IAAAG,eAAA,GAAAH,OAAA;AAEA,IAAAI,iBAAA,GAAAJ,OAAA;AACA,IAAAK,kBAAA,GAAAL,OAAA;AAEA,IAAAM,OAAA,GAAAN,OAAA","ignoreList":[]}
@@ -9,15 +9,27 @@ exports.paymentFailed = paymentFailed;
9
9
  exports.paymentSuccess = paymentSuccess;
10
10
  /**
11
11
  * Terminal outcome of a payment flow — narrow on the `status` field.
12
+ *
13
+ * Every result here is read off a deep link, which is interceptable by design
14
+ * and names no bank identifiers. It reports what happened rather than attesting
15
+ * to it: confirm with your backend via `GET /payment-requests/{reference}`
16
+ * before acting on one.
12
17
  */
13
18
 
14
- /** Payment completed at the bank. `exchangeCode` may be null when recovered
15
- * via status polling (the bank delivered the code straight to the merchant
16
- * backend, bypassing the SDK). */
19
+ /**
20
+ * The return reported a completed payment.
21
+ *
22
+ * Treat this as a prompt to confirm with your backend, not as settlement.
23
+ */
17
24
 
18
25
  /** Payment failed. Always has an `errorCode` so merchants can map to UI copy. */
19
26
 
20
- /** Flow abandoned mid-flight (app killed, host removed the SDK navigator). */
27
+ /**
28
+ * The payer left before the flow resolved either way.
29
+ *
30
+ * A payment already at the bank may still complete after this, so it is not a
31
+ * failure — only your backend knows how it ended.
32
+ */
21
33
 
22
34
  // ---- Constructor helpers ---------------------------------------------------
23
35
 
@@ -1 +1 @@
1
- {"version":3,"names":["paymentSuccess","args","status","paymentCancelled","paymentFailed","paymentAbandoned"],"sourceRoot":"../../../src","sources":["public/payment-result.ts"],"mappings":";;;;;;;;;AAAA;AACA;AACA;;AAcA;AACA;AACA;;AAaA;;AAMA;;AAOA;;AAEO,SAASA,cAAcA,CAACC,IAAoC,EAAkB;EACnF,OAAO;IAAEC,MAAM,EAAE,SAAS;IAAE,GAAGD;EAAK,CAAC;AACvC;AAEO,SAASE,gBAAgBA,CAACF,IAAsC,EAAoB;EACzF,OAAO;IAAEC,MAAM,EAAE,WAAW;IAAE,GAAGD;EAAK,CAAC;AACzC;AAEO,SAASG,aAAaA,CAACH,IAAmC,EAAiB;EAChF,OAAO;IAAEC,MAAM,EAAE,QAAQ;IAAE,GAAGD;EAAK,CAAC;AACtC;AAEO,SAASI,gBAAgBA,CAACJ,IAAsC,EAAoB;EACzF,OAAO;IAAEC,MAAM,EAAE,WAAW;IAAE,GAAGD;EAAK,CAAC;AACzC","ignoreList":[]}
1
+ {"version":3,"names":["paymentSuccess","args","status","paymentCancelled","paymentFailed","paymentAbandoned"],"sourceRoot":"../../../src","sources":["public/payment-result.ts"],"mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AA4CA;AACA;AACA;AACA;AACA;;AASA;;AAMA;AACA;AACA;AACA;AACA;AACA;;AAOA;;AAEO,SAASA,cAAcA,CAACC,IAAoC,EAAkB;EACnF,OAAO;IAAEC,MAAM,EAAE,SAAS;IAAE,GAAGD;EAAK,CAAC;AACvC;AAEO,SAASE,gBAAgBA,CAACF,IAAsC,EAAoB;EACzF,OAAO;IAAEC,MAAM,EAAE,WAAW;IAAE,GAAGD;EAAK,CAAC;AACzC;AAEO,SAASG,aAAaA,CAACH,IAAmC,EAAiB;EAChF,OAAO;IAAEC,MAAM,EAAE,QAAQ;IAAE,GAAGD;EAAK,CAAC;AACtC;AAEO,SAASI,gBAAgBA,CAACJ,IAAsC,EAAoB;EACzF,OAAO;IAAEC,MAAM,EAAE,WAAW;IAAE,GAAGD;EAAK,CAAC;AACzC","ignoreList":[]}
@@ -4,29 +4,21 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.isNoRecoveryNeeded = isNoRecoveryNeeded;
7
- exports.isRecoveryAwaitingUser = isRecoveryAwaitingUser;
8
7
  exports.isSessionRecovered = isSessionRecovered;
9
8
  /**
10
9
  * Why {@link SpareLink.resumeIfNeeded} did not recover a terminal session.
11
- * Mirrors Flutter's `NoRecoveryReason`.
12
- */
13
-
14
- /**
15
- * Outcome of {@link SpareLink.resumeIfNeeded}.
16
10
  *
17
- * Discriminated union aligned with Flutter's sealed `RecoveryResult`.
11
+ * `outcomeUnknown` is the one that carries weight: a payment was pending and no
12
+ * return arrived, so **it may have completed**. The SDK holds no credentials and
13
+ * has nothing to ask with — the reference is handed back for your backend to
14
+ * resolve.
18
15
  */
19
16
 
20
- /** No pending session was recovered. */
17
+ /** Outcome of {@link SpareLink.resumeIfNeeded}. */
21
18
 
22
- /** A pending session was recovered to a terminal {@link PaymentResult}. */
19
+ /** No pending payment was resolved to a terminal outcome. */
23
20
 
24
- /**
25
- * A pending session is non-terminal and the SDK opened its recovery UI —
26
- * the integrator should treat this as in-progress, not "nothing happened".
27
- * The terminal outcome arrives later via `SpareLink.events` /
28
- * `spareLink.emitTerminal`, not as a second `resumeIfNeeded` resolution.
29
- */
21
+ /** A pending payment was resolved to a terminal {@link PaymentResult}. */
30
22
 
31
23
  function isSessionRecovered(r) {
32
24
  return r.kind === 'recovered';
@@ -34,7 +26,4 @@ function isSessionRecovered(r) {
34
26
  function isNoRecoveryNeeded(r) {
35
27
  return r.kind === 'none';
36
28
  }
37
- function isRecoveryAwaitingUser(r) {
38
- return r.kind === 'awaitingUser';
39
- }
40
29
  //# sourceMappingURL=recovery-result.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["isSessionRecovered","r","kind","isNoRecoveryNeeded","isRecoveryAwaitingUser"],"sourceRoot":"../../../src","sources":["public/recovery-result.ts"],"mappings":";;;;;;;;AAEA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;;AAGA;;AAMA;;AAMA;AACA;AACA;AACA;AACA;AACA;;AAMO,SAASA,kBAAkBA,CAACC,CAAiB,EAAyB;EAC3E,OAAOA,CAAC,CAACC,IAAI,KAAK,WAAW;AAC/B;AAEO,SAASC,kBAAkBA,CAACF,CAAiB,EAAyB;EAC3E,OAAOA,CAAC,CAACC,IAAI,KAAK,MAAM;AAC1B;AAEO,SAASE,sBAAsBA,CAACH,CAAiB,EAA6B;EACnF,OAAOA,CAAC,CAACC,IAAI,KAAK,cAAc;AAClC","ignoreList":[]}
1
+ {"version":3,"names":["isSessionRecovered","r","kind","isNoRecoveryNeeded"],"sourceRoot":"../../../src","sources":["public/recovery-result.ts"],"mappings":";;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAOA;;AAGA;;AAQA;;AAMO,SAASA,kBAAkBA,CAACC,CAAiB,EAAyB;EAC3E,OAAOA,CAAC,CAACC,IAAI,KAAK,WAAW;AAC/B;AAEO,SAASC,kBAAkBA,CAACF,CAAiB,EAAyB;EAC3E,OAAOA,CAAC,CAACC,IAAI,KAAK,MAAM;AAC1B","ignoreList":[]}
@@ -6,21 +6,41 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.assertValidConfig = assertValidConfig;
7
7
  exports.defaultBaseUrlFor = defaultBaseUrlFor;
8
8
  exports.resolvedBaseUrl = resolvedBaseUrl;
9
- exports.resolvedResumeBaseUrl = resolvedResumeBaseUrl;
10
9
  exports.tenantCountryCode = tenantCountryCode;
10
+ var _reactNative = require("react-native");
11
11
  /**
12
- * Deployment environment for the Spare Link API.
12
+ * Deployment environment for the Spare Link API, which is also where the hosted
13
+ * payment page is served from.
14
+ */
15
+
16
+ /** Default port an Encore app serves on. */
17
+ const LOCAL_PORT = 4000;
18
+
19
+ /**
20
+ * A Spare API running on the developer's own machine.
21
+ *
22
+ * The host differs by platform because an emulator's `localhost` is the emulator,
23
+ * not the machine hosting it. A **physical device** reaches neither, so pass
24
+ * `baseUrl` with your machine's address on the local network instead.
13
25
  *
14
- * Each value maps to a default base URL
15
- * the SDK will hit unless `baseUrl` is overridden in {@link SpareLinkConfig}.
26
+ * Serves over plain HTTP, which both platforms block by default. See the
27
+ * integration notes for the debug-only exceptions that allow it.
16
28
  */
29
+ function localBaseUrl() {
30
+ return _reactNative.Platform.OS === 'android' ? `http://10.0.2.2:${LOCAL_PORT}` : `http://localhost:${LOCAL_PORT}`;
31
+ }
17
32
 
33
+ /**
34
+ * `dev` is Spare's own integration environment, not one an integrator would ship
35
+ * against. Unlike the others its host names a single tenant, so it serves UAE alone.
36
+ */
18
37
  const DEFAULT_BASE_URLS = {
38
+ dev: 'https://api-dev-uae.tryspare.ae',
19
39
  sandbox: 'https://api.sandbox.tryspare.ae',
20
40
  production: 'https://api.tryspare.ae'
21
41
  };
22
42
  function defaultBaseUrlFor(env) {
23
- return DEFAULT_BASE_URLS[env];
43
+ return env === 'local' ? localBaseUrl() : DEFAULT_BASE_URLS[env];
24
44
  }
25
45
 
26
46
  /** Spare API tenant — one country per tenant. */
@@ -34,7 +54,7 @@ function tenantCountryCode(t) {
34
54
  return TENANT_COUNTRY_CODES[t];
35
55
  }
36
56
 
37
- /** Configuration to start a Spare Link payment flow. */
57
+ /** Configuration for a Spare Link instance. */
38
58
 
39
59
  /** Resolved base URL: explicit `baseUrl` if provided, else the environment default. */
40
60
  function resolvedBaseUrl(config) {
@@ -42,21 +62,26 @@ function resolvedBaseUrl(config) {
42
62
  }
43
63
 
44
64
  /**
45
- * Recovery config — like {@link SpareLinkConfig} but without `linkToken`
46
- * (read from the persisted record).
65
+ * The tenants the hosted flow can actually serve.
66
+ *
67
+ * `tenant` accepts the others because the API surface outlives this list, but
68
+ * accepting one the page cannot serve would put a payer in front of the wrong
69
+ * country's flow rather than telling the integrator at construction time.
47
70
  */
71
+ const SUPPORTED_TENANTS = ['uae'];
48
72
 
49
- function resolvedResumeBaseUrl(config) {
50
- return config.baseUrl ?? defaultBaseUrlFor(config.environment);
51
- }
52
-
53
- /** Throws if a SpareLinkConfig is structurally invalid. */
73
+ /**
74
+ * Throws if a config cannot be honoured.
75
+ *
76
+ * Called from {@link SpareLink}'s constructor, so a bad value fails where it was
77
+ * written rather than reaching the webview as a URL nobody meant.
78
+ */
54
79
  function assertValidConfig(config) {
55
- if (!config.linkToken) {
56
- throw new Error('SpareLinkConfig: linkToken must not be empty');
57
- }
58
80
  if (config.baseUrl && !/^https?:\/\//.test(config.baseUrl)) {
59
81
  throw new Error('SpareLinkConfig: baseUrl must start with http:// or https://');
60
82
  }
83
+ if (!SUPPORTED_TENANTS.includes(config.tenant)) {
84
+ throw new Error(`SpareLinkConfig: the hosted flow does not serve tenant '${config.tenant}' yet ` + `(supported: ${SUPPORTED_TENANTS.join(', ')})`);
85
+ }
61
86
  }
62
87
  //# sourceMappingURL=spare-link-config.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["DEFAULT_BASE_URLS","sandbox","production","defaultBaseUrlFor","env","TENANT_COUNTRY_CODES","ksa","uae","bah","tenantCountryCode","t","resolvedBaseUrl","config","baseUrl","environment","resolvedResumeBaseUrl","assertValidConfig","linkToken","Error","test"],"sourceRoot":"../../../src","sources":["public/spare-link-config.ts"],"mappings":";;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;;AAGA,MAAMA,iBAAqD,GAAG;EAC5DC,OAAO,EAAE,iCAAiC;EAC1CC,UAAU,EAAE;AACd,CAAC;AAEM,SAASC,iBAAiBA,CAACC,GAAuB,EAAU;EACjE,OAAOJ,iBAAiB,CAACI,GAAG,CAAC;AAC/B;;AAEA;;AAGA,MAAMC,oBAAoD,GAAG;EAC3DC,GAAG,EAAE,KAAK;EACVC,GAAG,EAAE,KAAK;EACVC,GAAG,EAAE;AACP,CAAC;AAEM,SAASC,iBAAiBA,CAACC,CAAiB,EAAU;EAC3D,OAAOL,oBAAoB,CAACK,CAAC,CAAC;AAChC;;AAEA;;AA2BA;AACO,SAASC,eAAeA,CAACC,MAAuB,EAAU;EAC/D,OAAOA,MAAM,CAACC,OAAO,IAAIV,iBAAiB,CAACS,MAAM,CAACE,WAAW,CAAC;AAChE;;AAEA;AACA;AACA;AACA;;AASO,SAASC,qBAAqBA,CAACH,MAA6B,EAAU;EAC3E,OAAOA,MAAM,CAACC,OAAO,IAAIV,iBAAiB,CAACS,MAAM,CAACE,WAAW,CAAC;AAChE;;AAEA;AACO,SAASE,iBAAiBA,CAACJ,MAAuB,EAAQ;EAC/D,IAAI,CAACA,MAAM,CAACK,SAAS,EAAE;IACrB,MAAM,IAAIC,KAAK,CAAC,8CAA8C,CAAC;EACjE;EACA,IAAIN,MAAM,CAACC,OAAO,IAAI,CAAC,cAAc,CAACM,IAAI,CAACP,MAAM,CAACC,OAAO,CAAC,EAAE;IAC1D,MAAM,IAAIK,KAAK,CAAC,8DAA8D,CAAC;EACjF;AACF","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","LOCAL_PORT","localBaseUrl","Platform","OS","DEFAULT_BASE_URLS","dev","sandbox","production","defaultBaseUrlFor","env","TENANT_COUNTRY_CODES","ksa","uae","bah","tenantCountryCode","t","resolvedBaseUrl","config","baseUrl","environment","SUPPORTED_TENANTS","assertValidConfig","test","Error","includes","tenant","join"],"sourceRoot":"../../../src","sources":["public/spare-link-config.ts"],"mappings":";;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA;AACA;AACA;AACA;;AAGA;AACA,MAAMC,UAAU,GAAG,IAAI;;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,YAAYA,CAAA,EAAW;EAC9B,OAAOC,qBAAQ,CAACC,EAAE,KAAK,SAAS,GAC5B,mBAAmBH,UAAU,EAAE,GAC/B,oBAAoBA,UAAU,EAAE;AACtC;;AAEA;AACA;AACA;AACA;AACA,MAAMI,iBAAiF,GAAG;EACxFC,GAAG,EAAE,iCAAiC;EACtCC,OAAO,EAAE,iCAAiC;EAC1CC,UAAU,EAAE;AACd,CAAC;AAEM,SAASC,iBAAiBA,CAACC,GAAuB,EAAU;EACjE,OAAOA,GAAG,KAAK,OAAO,GAAGR,YAAY,CAAC,CAAC,GAAGG,iBAAiB,CAACK,GAAG,CAAC;AAClE;;AAEA;;AAGA,MAAMC,oBAA8D,GAAG;EACrEC,GAAG,EAAE,KAAK;EACVC,GAAG,EAAE,KAAK;EACVC,GAAG,EAAE;AACP,CAAC;AAEM,SAASC,iBAAiBA,CAACC,CAAiB,EAAU;EAC3D,OAAOL,oBAAoB,CAACK,CAAC,CAAC;AAChC;;AAEA;;AAeA;AACO,SAASC,eAAeA,CAACC,MAAuB,EAAU;EAC/D,OAAOA,MAAM,CAACC,OAAO,IAAIV,iBAAiB,CAACS,MAAM,CAACE,WAAW,CAAC;AAChE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,iBAA4C,GAAG,CAAC,KAAK,CAAC;;AAE5D;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,iBAAiBA,CAACJ,MAAuB,EAAQ;EAC/D,IAAIA,MAAM,CAACC,OAAO,IAAI,CAAC,cAAc,CAACI,IAAI,CAACL,MAAM,CAACC,OAAO,CAAC,EAAE;IAC1D,MAAM,IAAIK,KAAK,CAAC,8DAA8D,CAAC;EACjF;EACA,IAAI,CAACH,iBAAiB,CAACI,QAAQ,CAACP,MAAM,CAACQ,MAAM,CAAC,EAAE;IAC9C,MAAM,IAAIF,KAAK,CACb,2DAA2DN,MAAM,CAACQ,MAAM,QAAQ,GAC9E,eAAeL,iBAAiB,CAACM,IAAI,CAAC,IAAI,CAAC,GAC/C,CAAC;EACH;AACF","ignoreList":[]}
@@ -8,20 +8,21 @@ exports.isSpareLinkEvent = isSpareLinkEvent;
8
8
  /**
9
9
  * Lifecycle events emitted on {@link SpareLink.events}.
10
10
  *
11
- * This is a discriminated union (TypeScript's equivalent to Dart sealed classes).
12
- * Use a switch on the `type` field for exhaustive handling:
11
+ * Analytics only — never required to drive the flow. This is a discriminated
12
+ * union (TypeScript's equivalent to Dart sealed classes); switch on `type` for
13
+ * exhaustive handling:
13
14
  *
14
15
  * ```ts
15
16
  * spareLink.events.subscribe((event) => {
16
17
  * switch (event.type) {
17
18
  * case 'initialized':
18
- * console.log('Started flow for', event.linkToken);
19
+ * console.log('Started flow for', event.reference);
19
20
  * break;
20
- * case 'sessionLoaded':
21
- * console.log('Session loaded', event.linkSessionId);
21
+ * case 'pageReady':
22
+ * console.log('Payer can act on the page');
22
23
  * break;
23
24
  * case 'succeeded':
24
- * console.log('Payment succeeded', event.result.exchangeCode);
25
+ * console.log('Reported success for', event.result.reference);
25
26
  * break;
26
27
  * // ...
27
28
  * }
@@ -31,24 +32,27 @@ exports.isSpareLinkEvent = isSpareLinkEvent;
31
32
 
32
33
  /** The SDK has started a payment flow. */
33
34
 
34
- /** The payment session was loaded from the server. */
35
-
36
- /** The user confirmed consent and a consent request was submitted. */
35
+ /**
36
+ * The hosted page is interactive and the payer has something to act on.
37
+ *
38
+ * The steps after this — choosing a bank, the payee check, reading the consent —
39
+ * happen inside the page, which does not report them.
40
+ */
37
41
 
38
- /** The user is being redirected to their bank's authorization page. */
42
+ /** The payer is being handed to their bank, outside the WebView. */
39
43
 
40
44
  /** The bank has redirected back with a callback URI. */
41
45
 
42
- /** The payment completed successfully and the flow is about to resolve. */
46
+ /** The return reported a completed payment and the flow is about to resolve. */
43
47
 
44
48
  /** The payment failed and the flow is about to resolve. */
45
49
 
46
- /** The user cancelled the payment and the flow is about to resolve. */
50
+ /** The payer cancelled the payment and the flow is about to resolve. */
47
51
 
48
- /** The flow was abandoned without an explicit user action. */
52
+ /** The payer left before the flow resolved either way. */
49
53
 
50
54
  /** All possible event type strings for type narrowing. */
51
- const SPARE_LINK_EVENT_TYPES = exports.SPARE_LINK_EVENT_TYPES = ['initialized', 'sessionLoaded', 'consentStarted', 'redirectToBank', 'bankCallbackReceived', 'succeeded', 'failed', 'cancelled', 'abandoned'];
55
+ const SPARE_LINK_EVENT_TYPES = exports.SPARE_LINK_EVENT_TYPES = ['initialized', 'pageReady', 'redirectToBank', 'bankCallbackReceived', 'succeeded', 'failed', 'cancelled', 'abandoned'];
52
56
  /** Type guard for SpareLinkEvent. */
53
57
  function isSpareLinkEvent(value) {
54
58
  if (typeof value !== 'object' || value === null) return false;
@@ -58,38 +62,28 @@ function isSpareLinkEvent(value) {
58
62
 
59
63
  /** Factory functions for creating events (internal use). */
60
64
  const SpareLinkEvents = exports.SpareLinkEvents = {
61
- initialized(linkToken) {
65
+ initialized(reference) {
62
66
  return {
63
67
  type: 'initialized',
64
- linkToken
65
- };
66
- },
67
- sessionLoaded(linkToken, linkSessionId) {
68
- return linkSessionId ? {
69
- type: 'sessionLoaded',
70
- linkToken,
71
- linkSessionId
72
- } : {
73
- type: 'sessionLoaded',
74
- linkToken
68
+ reference
75
69
  };
76
70
  },
77
- consentStarted(linkToken) {
71
+ pageReady(reference) {
78
72
  return {
79
- type: 'consentStarted',
80
- linkToken
73
+ type: 'pageReady',
74
+ reference
81
75
  };
82
76
  },
83
- redirectToBank(linkToken) {
77
+ redirectToBank(reference) {
84
78
  return {
85
79
  type: 'redirectToBank',
86
- linkToken
80
+ reference
87
81
  };
88
82
  },
89
- bankCallbackReceived(linkToken) {
83
+ bankCallbackReceived(reference) {
90
84
  return {
91
85
  type: 'bankCallbackReceived',
92
- linkToken
86
+ reference
93
87
  };
94
88
  },
95
89
  succeeded(result) {