@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
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @spare-technologies/spare-link
2
2
 
3
- React Native SDK for [Spare Link](https://tryspare.com) — drop-in open-banking payments via a native checkout sheet.
3
+ React Native SDK for [Spare Link](https://tryspare.com) — open-banking payments for iOS and Android.
4
4
 
5
5
  ```sh
6
6
  bun add @spare-technologies/spare-link
@@ -8,10 +8,19 @@ bun add @spare-technologies/spare-link
8
8
  npm i @spare-technologies/spare-link
9
9
  ```
10
10
 
11
+ Full integration guide: [`docs/getting-started.md`](https://github.com/spare-technologies/link-rn/blob/main/docs/getting-started.md).
12
+
13
+ ## What this SDK does
14
+
15
+ Your backend creates a payment request and gives the app the reference it returns. The SDK presents the payment flow for that reference, opens the payer's bank in a real browser when a consent exists, and reports the outcome carried by the return deep link.
16
+
17
+ The SDK makes no API calls and holds no credentials. It reports only what the payment flow and the deep link tell it, which is why your backend reads the final result.
18
+
19
+ The bank opens in a browser rather than inside the app for two reasons: banks commonly refuse to authorize a payment in an embedded view, and the address bar lets the payer check they are on a real bank page.
20
+
11
21
  ## Quickstart
12
22
 
13
- The SDK is instance-based: create one `SpareLink` instance, mount one `SpareLinkHost` near
14
- your app root, and pass that instance to every screen that starts a payment.
23
+ Create one `SpareLink` instance, mount one `SpareLinkHost` near your app root, and pass the instance to every screen that starts a payment.
15
24
 
16
25
  ```tsx
17
26
  import { SpareLink, SpareLinkHost, useSpareLinkDeepLinks } from '@spare-technologies/spare-link';
@@ -30,18 +39,69 @@ function App() {
30
39
  </SpareLinkHost>
31
40
  );
32
41
  }
42
+ ```
43
+
44
+ Your backend creates the payment request with `channel: 'sdk_react_native'` and the return URLs your app is registered for. It then hands the app the reference. That reference is all the SDK needs.
33
45
 
34
- async function pay(spareLink: SpareLink, linkToken: string) {
35
- const unsub = spareLink.events.subscribe((event) => console.log('event', event.type));
36
- const session = await spareLink.start({ linkToken });
46
+ ```tsx
47
+ async function pay(spareLink: SpareLink, reference: string) {
48
+ const session = await spareLink.start({ reference });
37
49
  const result = await session.result;
38
- unsub();
39
- if (result.status === 'success') {
40
- // exchange `result.exchangeCode` on your backend → /link/exchange
41
- }
50
+
51
+ // Confirm with your backend before you act on this. See "Confirming the result".
52
+ console.log(result.status, result.reference);
42
53
  }
43
54
  ```
44
55
 
56
+ ## Confirming the result
57
+
58
+ Every result this SDK reports is read from a deep link. A deep link is not proof: the OS hands it over, and any installed app can register the same custom scheme.
59
+
60
+ **The deep link an app receives is not signed, deliberately.** Any installed app can claim a custom scheme, so a signature on a deep link would be a proof handed to whoever intercepted it. There is therefore nothing on it to verify, and reading the record is the only way to establish what happened:
61
+
62
+ ```
63
+ GET /payment-requests/{reference}
64
+ ```
65
+
66
+ Call it from your backend with its own credentials before you fulfil anything.
67
+
68
+ The deep link does carry `paymentId` on a single payment's success, or `mandateId` on a mandate's — record whichever is set. `signature` is populated only on Spare's https redirect, so expect it to be `undefined` in an app; when it is present it is an ES256 JWS over the return URL, which the SDK passes through unverified.
69
+
70
+ ## Payment statuses
71
+
72
+ Each status belongs to one of three groups. Only the first group is routed to your `successRedirectUrl`; every other status is routed to your `failureRedirectUrl`, so both URLs must be registered and both must open your app.
73
+
74
+ | Group | Statuses | `result.status` |
75
+ | --- | --- | --- |
76
+ | Settled | `Processed`, `Scheduled` | `'success'` |
77
+ | Terminal failure | `Rejected`, `Errored` | `'failed'` |
78
+ | Still in flight | `New`, `Consumed`, `ConsentRaised` | `'abandoned'` |
79
+
80
+ `Scheduled` is a success: the bank has accepted a payment dated in the future, and the money has not moved yet. If your fulfilment requires settled funds, check the status you read back from your backend rather than the `'success'` result alone.
81
+
82
+ The statuses in the third group are not outcomes — a request with one of them is still payable, so it should not appear on a return. If one does, the SDK reports `'abandoned'` and your backend resolves it. The SDK does the same for a status it does not recognise, because reporting an unknown status as a success would tell a payer their money moved when it may not have.
83
+
84
+ `status` is always sent but **can be empty**, so `errorCode` is the reliable discriminator: it is present on every failure and on no success. Its value today is always `SP500`; use it for your own copy rather than to determine the outcome. An empty `status` alongside an `errorCode` is a failure, and the SDK reads it as one.
85
+
86
+ Older builds of the service sent `status=success` / `status=failure` and the code as `error_code`. The SDK still reads those, so an environment that has not been updated does not misreport.
87
+
88
+ ## Peer dependencies
89
+
90
+ Install these with Expo, so the versions match your Expo SDK:
91
+
92
+ ```sh
93
+ npx expo install react-native-webview react-native-safe-area-context react-native-screens \
94
+ expo-web-browser expo-secure-store expo-font expo-linear-gradient @expo/vector-icons
95
+ ```
96
+
97
+ npm and bun will install these automatically, and the declared ranges are pinned to the Expo 52 module line, so an automatic resolve lands on a compatible version. `expo install` is still the safer route: it reads your installed Expo SDK and picks the exact version that ships with it.
98
+
99
+ The ranges are deliberately narrow. This release supports **Expo 52 only**, so an app on a newer Expo SDK gets a peer-dependency conflict at install time rather than a native build failure or a crash on device.
100
+
101
+ `expo-web-browser` opens the bank, `expo-secure-store` stores the pending payment for recovery, and the rest render the payment flow. `react-native-svg` is an optional peer, loaded only if present; without it the SDK shows a plain activity indicator.
102
+
103
+ The SDK requires no runtime permissions.
104
+
45
105
  ## Expo plugin
46
106
 
47
107
  Add to `app.config.ts`:
@@ -51,7 +111,6 @@ plugins: [
51
111
  [
52
112
  '@spare-technologies/spare-link/expo-plugin',
53
113
  {
54
- locationUsageDescription: 'We use your location to verify the payment.',
55
114
  merchantScheme: 'myapp',
56
115
  merchantHost: 'callback',
57
116
  },
@@ -59,97 +118,94 @@ plugins: [
59
118
  ]
60
119
  ```
61
120
 
62
- The plugin injects:
121
+ The plugin registers only the deep link the payer returns through:
122
+
123
+ - **iOS**: a `CFBundleURLSchemes` entry for your app scheme.
124
+ - **Android**: an intent-filter for `myapp://callback`.
125
+
126
+ Use the same scheme and host your backend sets in `successRedirectUrl` and `failureRedirectUrl`. Rebuild your dev client after adding the plugin, because it changes native configuration.
127
+
128
+ Earlier versions injected `ACCESS_FINE_LOCATION` and an iOS location usage description for device telemetry. The SDK no longer collects it, and the plugin requests no permissions.
129
+
130
+ ## Environments
131
+
132
+ | Environment | Host |
133
+ | --- | --- |
134
+ | `sandbox` | `https://api.sandbox.tryspare.ae` |
135
+ | `production` | `https://api.tryspare.ae` |
63
136
 
64
- - **iOS**: `NSLocationWhenInUseUsageDescription` + `CFBundleURLSchemes` entry for your app scheme.
65
- - **Android**: `ACCESS_FINE_LOCATION` permission + intent-filter for `myapp://callback` (and an optional `autoVerify=true` App Link for the Spare universal-link host).
137
+ Pass `baseUrl` to override the host. The payment flow currently serves **UAE only**; constructing with another tenant throws instead of showing the payer another country's flow.
66
138
 
67
139
  ## Deep-link handling
68
140
 
69
- `SpareLinkHost` forwards bank-return URIs to the SDK via `spareLink.handleRedirect(url)`. The `useSpareLinkDeepLinks(spareLink)` hook wires `Linking.addEventListener('url', …)` + `Linking.getInitialURL()` for you.
141
+ `useSpareLinkDeepLinks(spareLink)` wires `Linking.addEventListener('url', …)` and `Linking.getInitialURL()` to `spareLink.handleRedirect(url)`. Call `handleRedirect` yourself if you have your own router — it returns `true` when the URI belonged to a payment, so you can leave your own routing untouched for anything else.
142
+
143
+ A return that arrives before there is a flow to give it to is held, not discarded, and picked up by `start()` or `resumeIfNeeded()`.
70
144
 
71
145
  ## Cold-start recovery
72
146
 
73
- Construct the instance with a `pendingSessionStore` and call `spareLink.resumeIfNeeded()` on `AppState === 'active'`:
147
+ Construct the instance with a store, and call `resumeIfNeeded()` when the app becomes active:
74
148
 
75
149
  ```tsx
76
- import { SecureStorePendingSessionStore, SpareLink, SpareLinkHost } from '@spare-technologies/spare-link';
77
-
78
- const store = new SecureStorePendingSessionStore();
79
- const spareLink = new SpareLink({ environment: 'sandbox', tenant: 'uae', pendingSessionStore: store });
150
+ import { SecureStorePendingSessionStore, SpareLink } from '@spare-technologies/spare-link';
80
151
 
81
- <SpareLinkHost spareLink={spareLink}>
82
- …
83
- </SpareLinkHost>
152
+ const spareLink = new SpareLink({
153
+ environment: 'sandbox',
154
+ tenant: 'uae',
155
+ pendingSessionStore: new SecureStorePendingSessionStore(),
156
+ });
84
157
  ```
85
158
 
86
159
  ```ts
87
- import { AppState } from 'react-native';
88
-
89
- AppState.addEventListener('change', (state) => {
90
- if (state !== 'active') return;
91
- void spareLink.resumeIfNeeded().then((recovery) => {
92
- if (recovery.kind === 'recovered') {
93
- // recovery.result is the terminal PaymentResult
94
- }
95
- // kind === 'awaitingUser' means the SDK opened its own recovery UI —
96
- // the terminal outcome arrives later via `spareLink.events`.
97
- });
98
- });
160
+ const recovery = await spareLink.resumeIfNeeded();
99
161
  ```
100
162
 
101
- `spareLink.resumeIfNeeded()` reads the persisted record, polls `GET /link/status`, and resolves a `RecoveryResult`:
163
+ - `{ kind: 'recovered', result }` — the return arrived before there was a flow to give it to, and the outcome was read from it.
164
+ - `{ kind: 'none', reason: 'outcomeUnknown', reference }` — a payment was under way and no return arrived. **It may have completed.** The SDK holds no credentials and cannot ask; your backend resolves it using the reference.
165
+ - `{ kind: 'none', reason: 'noPendingSession' | 'flowAlreadyActive' | 'persistenceUnavailable' }` — nothing to recover.
166
+
167
+ Without a `pendingSessionStore` you always get `persistenceUnavailable`, and a payment interrupted by the app closing is never reported.
168
+
169
+ ## When the payment flow cannot be opened
102
170
 
103
- - `{ kind: 'recovered', result }` — the session reached a terminal state; `result` is the `PaymentResult`.
104
- - `{ kind: 'awaitingUser', linkToken }` — the session is still non-terminal and the SDK opened its recovery UI (mounted by `SpareLinkHost`); the terminal outcome arrives later via `spareLink.events` / the `succeeded`/`failed`/`cancelled`/`abandoned` events.
105
- - `{ kind: 'none', reason }` — nothing to recover (`noPendingSession` | `flowAlreadyActive` | `persistenceUnavailable`).
171
+ If the flow fails to load, or loads and never becomes usable, the payer is told that the service is unreachable and that no payment has been taken, and is offered a retry. Nothing has been attempted at that point. If the payer gives up, the flow resolves as `PaymentFailed` with `page_unavailable`.
106
172
 
107
- After `kMaxRecoveryAttempts` (3) non-terminal attempts the SDK resolves `PaymentFailed('recovery_exhausted')` and clears the record.
173
+ A failure after the flow was working reports `page_lost` instead.
108
174
 
109
175
  ## API reference
110
176
 
111
177
  ### `new SpareLink(options)`
112
178
 
113
- | Field | Type | Notes |
114
- | --- | --- | --- |
115
- | `environment` | `'sandbox' \| 'production'` | Default base URL is derived from this. |
116
- | `tenant` | `'ksa' \| 'uae' \| 'bah'` | Sent as the `X-Tenant` header. |
117
- | `baseUrl` | `string?` | Override the base URL (dev only). |
118
- | `fetch` | `typeof fetch?` | Inject a custom fetch for cert pinning. |
119
- | `requestTimeoutMs` | `number?` | Default `15_000`. |
120
- | `pendingSessionStore` | `PendingSessionStore?` | Enables cold-start recovery, e.g. `SecureStorePendingSessionStore`. |
179
+ `{ environment, tenant, baseUrl?, pendingSessionStore? }`. Validates its config and throws on a `baseUrl` that is not a URL, or a tenant the payment flow cannot serve.
121
180
 
122
- ### `spareLink.start({ linkToken })`
181
+ ### `spareLink.start({ reference })`
123
182
 
124
- Returns a `Promise<SpareLinkSession>` immediately; await `session.result` for the terminal `PaymentResult`. Never throws — invalid input resolves to `PaymentAbandoned` so callers don't need a try/catch.
183
+ Presents the payment flow and resolves to a `SpareLinkSession`. `await session.result` for the terminal outcome. A second call during an active payment resolves as `'failed'` with `concurrent_start`.
125
184
 
126
185
  ### `PaymentResult` discriminated union
127
186
 
128
187
  ```ts
129
188
  type PaymentResult =
130
- | PaymentSuccess // { status: 'success', linkToken, exchangeCode?, merchantRef?, linkSessionId?, ... }
131
- | PaymentCancelled // { status: 'cancelled', linkToken, ... }
132
- | PaymentFailed // { status: 'failed', linkToken, errorCode, ... }
133
- | PaymentAbandoned // { status: 'abandoned', linkToken, ... }
189
+ | PaymentSuccess // { status: 'success', reference, paymentId?, mandateId?, signature?, merchantRef?, ... }
190
+ | PaymentCancelled // { status: 'cancelled', reference, ... }
191
+ | PaymentFailed // { status: 'failed', reference, errorCode, errorReason?, ... }
192
+ | PaymentAbandoned // { status: 'abandoned', reference, ... }
134
193
  ```
135
194
 
136
- ### `SpareLinkEvent`
195
+ `abandoned` means the flow ended without an outcome. A payment already at the bank may still complete, so it is not reported as a failure.
137
196
 
138
- Subscribe via `spareLink.events.subscribe((event) => ...)`. `event.type` is one of:
197
+ ### `SpareLinkEvent`
139
198
 
140
- ```ts
141
- type SpareLinkEventType =
142
- | 'initialized' | 'sessionLoaded' | 'consentStarted'
143
- | 'redirectToBank' | 'bankCallbackReceived'
144
- | 'succeeded' | 'failed' | 'cancelled' | 'abandoned';
145
- ```
199
+ `initialized`, `pageReady`, `redirectToBank`, `bankCallbackReceived`, then one of `succeeded` / `failed` / `cancelled` / `abandoned`. Analytics only — never required to drive the flow.
146
200
 
147
201
  ## Supported versions
148
202
 
149
203
  - **Expo SDK** ≥ 52 (tested with 52.0.x)
150
- - **React Native** ≥ 0.76
204
+ - **React Native** ≥ 0.76.9
151
205
  - **React** ≥ 18.3
152
206
 
207
+ Requires a custom dev client or a production build. The SDK uses native modules and does not run in Expo Go.
208
+
153
209
  ## License
154
210
 
155
211
  MIT — see [LICENSE](./LICENSE).
@@ -4,39 +4,264 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.extractPaymentReturnErrorCode = extractPaymentReturnErrorCode;
7
+ exports.extractPaymentReturnErrorDescription = extractPaymentReturnErrorDescription;
8
+ exports.extractPaymentReturnErrorReason = extractPaymentReturnErrorReason;
9
+ exports.extractPaymentReturnMandateId = extractPaymentReturnMandateId;
10
+ exports.extractPaymentReturnMerchantRef = extractPaymentReturnMerchantRef;
11
+ exports.extractPaymentReturnPaymentId = extractPaymentReturnPaymentId;
12
+ exports.extractPaymentReturnReference = extractPaymentReturnReference;
13
+ exports.extractPaymentReturnSignature = extractPaymentReturnSignature;
7
14
  exports.isPaymentReturnCallbackUri = isPaymentReturnCallbackUri;
15
+ exports.isPaymentReturnSuccess = isPaymentReturnSuccess;
16
+ exports.paymentReturnOutcome = paymentReturnOutcome;
17
+ exports.paymentReturnParams = paymentReturnParams;
18
+ exports.readPaymentReturn = readPaymentReturn;
19
+ var _urlParts = require("../../internal/url-parts.js");
8
20
  /**
9
- * Query-parameter helpers for bank / authorize return URIs.
21
+ * Query parameters on the deep link that returns a payer to the app.
10
22
  *
11
- * The Link service appends `exchange_code` on success and `error_code` on
12
- * authorize failure (legacy integrations may still send `error`).
23
+ * Both channels are told the same thing in the same words. A success carries
24
+ * `reference`, `status` and either `paymentId` or `mandateId`. A failure carries
25
+ * `reference`, `errorCode` and `status`. `merchantRef` is on both when the request
26
+ * recorded one, and `status` is always present but may be empty.
27
+ *
28
+ * `errorCode` is what tells the two apart: it is on every failure and on no
29
+ * success, so an outcome can be read without recognising a status.
30
+ *
31
+ * **A deep link to an app is not signed.** `sig` is added on the browser channel
32
+ * only, deliberately: any installed app can claim a custom scheme, so a signature
33
+ * on a deep link would be a proof handed to whoever intercepted it. When it is
34
+ * present it is an ES256 JWS over the return URL, and it is carried through
35
+ * unverified — checking it needs Spare's public key, which the SDK does not hold.
36
+ *
37
+ * The query is read by {@link parseQueryParams} rather than through `URL`,
38
+ * because React Native's `URL.searchParams` never parses the URL it was given.
39
+ */
40
+
41
+ /**
42
+ * Statuses that mean the payment is done and will not change.
43
+ *
44
+ * `Scheduled` is a success: a future-dated payment the bank has accepted has
45
+ * succeeded, the money simply has not moved yet. A caller that needs settled funds
46
+ * specifically must read the status back from its own backend — this SDK reports
47
+ * every settled status as `processed`, because all of them are terminal and all of
48
+ * them resolve to the merchant's success URL.
49
+ *
50
+ * `success` is the word an app used to be sent instead of the request's own status.
51
+ * The service now sends one vocabulary to both channels, so it should no longer
52
+ * arrive — it is still read because an environment running the earlier build would
53
+ * otherwise report a completed payment as unresolved.
54
+ */
55
+ const SETTLED_STATUSES = new Set(['Processed', 'Scheduled', 'success']);
56
+
57
+ /**
58
+ * Statuses that mean the payment will not happen. `failure` is legacy, for the same
59
+ * reason `success` is in {@link SETTLED_STATUSES}.
13
60
  */
61
+ const FAILED_STATUSES = new Set(['Rejected', 'Errored', 'failure']);
14
62
 
63
+ /**
64
+ * Statuses that mean the request is still payable — not an outcome at all.
65
+ *
66
+ * A return should never carry one: the payer has come back, so the request has
67
+ * moved on. One arriving here means the outcome is still being decided, which is
68
+ * `unknown` rather than either answer.
69
+ */
70
+ const IN_FLIGHT_STATUSES = new Set(['New', 'Consumed', 'ConsentRaised']);
71
+
72
+ /**
73
+ * The one error key that reports a success rather than a failure.
74
+ *
75
+ * It arrives in `errorCode` like every other key, so anything that treats the
76
+ * presence of a key as a failure reports a completed payment as a failed one.
77
+ */
78
+ const SUCCESS_ERROR_KEY = 'request_processed';
79
+
80
+ /** Every status this version has been taught, whatever it means. */
81
+ function isKnownStatus(status) {
82
+ return SETTLED_STATUSES.has(status) || FAILED_STATUSES.has(status) || IN_FLIGHT_STATUSES.has(status);
83
+ }
15
84
  function isPaymentReturnCallbackUri(uri) {
16
- let parsed;
17
- try {
18
- parsed = typeof uri === 'string' ? new URL(uri) : uri;
19
- } catch {
20
- return false;
21
- }
22
- const params = parsed.searchParams;
23
- if (params.has('exchange_code')) return true;
24
- if (params.has('error_code')) return true;
25
- if (params.has('error')) return true;
26
- if (params.get('status') === 'failure') return true;
85
+ const params = paymentReturnParams(uri);
86
+ if (params.reference !== undefined) return true;
87
+ if (params.merchantRef !== undefined) return true;
88
+ if (params.errorCode !== undefined) return true;
89
+ if (params.error_code !== undefined) return true;
90
+ if (params.error !== undefined) return true;
91
+ const status = nonEmpty(params.status);
92
+ if (status !== undefined && isKnownStatus(status)) return true;
27
93
  return false;
28
94
  }
29
95
 
96
+ /** Reads the query of a return URI into the shape the extractors below take. */
97
+ function paymentReturnParams(uri) {
98
+ return (0, _urlParts.parseQueryParams)(typeof uri === 'string' ? uri : uri.toString());
99
+ }
100
+
101
+ /**
102
+ * Whether the return URI reports a completed payment.
103
+ *
104
+ * Only a known settled status counts. Absent, in-flight or a status this version
105
+ * has not been taught is read as not-a-success: a payer returned without one has
106
+ * not been told their payment succeeded, and neither should the app.
107
+ */
108
+ function isPaymentReturnSuccess(params) {
109
+ const status = nonEmpty(params.status);
110
+ return status !== undefined && SETTLED_STATUSES.has(status);
111
+ }
112
+
113
+ /** The payment request reference, if the return URI named one. */
114
+ function extractPaymentReturnReference(params) {
115
+ return nonEmpty(params.reference);
116
+ }
117
+
118
+ /** The merchant's own reference for the attempt, if present. */
119
+ function extractPaymentReturnMerchantRef(params) {
120
+ return nonEmpty(params.merchantRef);
121
+ }
122
+
123
+ /**
124
+ * Spare's identifier for the payment itself, present on a success.
125
+ *
126
+ * Distinct from the reference, which names the *request*. This is what a merchant
127
+ * records against the order.
128
+ */
129
+ function extractPaymentReturnPaymentId(params) {
130
+ return nonEmpty(params.paymentId);
131
+ }
132
+
30
133
  /**
31
- * Extract the failure code from a payment-return URI, if present.
134
+ * Spare's identifier for a mandate, present on a mandate's success.
32
135
  *
33
- * `error_code` takes precedence over the legacy `error` query param. A
34
- * `status=failure` with no other code resolves to `'authorize_failed'`.
136
+ * A return carries this or {@link extractPaymentReturnPaymentId}, never both: a
137
+ * single payment names a payment, every mandate type names a mandate. Read
138
+ * whichever is present rather than assuming which one the flow produced.
139
+ */
140
+ function extractPaymentReturnMandateId(params) {
141
+ return nonEmpty(params.mandateId);
142
+ }
143
+
144
+ /**
145
+ * The signature over this return, if it carried one.
146
+ *
147
+ * An ES256 JWS whose payload is the return URL. Handed to the caller unverified —
148
+ * checking it needs Spare's public key, which the SDK does not hold.
149
+ */
150
+ function extractPaymentReturnSignature(params) {
151
+ return nonEmpty(params.sig);
152
+ }
153
+
154
+ /**
155
+ * The failure key from a payment return URI, if it reported one.
156
+ *
157
+ * `errorCode` is the name both channels now use, and it is what tells the two
158
+ * outcomes apart: the service puts it on every failure and on no success, so a
159
+ * reader never has to recognise a status to know the payment did not happen.
160
+ *
161
+ * `error_code` and `error` are legacy — an earlier build sent the code under the
162
+ * snake_case name, and older returns carried a separate machine-readable reason.
163
+ * Both are still read so an environment running that build is not misread.
164
+ *
165
+ * {@link SUCCESS_ERROR_KEY} is excluded, because a success reports itself through
166
+ * the same field and must not come back out of here looking like a reason the
167
+ * payment failed.
168
+ */
169
+ function failureErrorKey(params) {
170
+ const key = nonEmpty(params.errorCode) ?? nonEmpty(params.error_code) ?? nonEmpty(params.error);
171
+ return key === SUCCESS_ERROR_KEY ? undefined : key;
172
+ }
173
+
174
+ /**
175
+ * The failure code from a payment return URI.
176
+ *
177
+ * A return that says only that it failed, naming no key, still yields something a
178
+ * merchant can branch on.
35
179
  */
36
180
  function extractPaymentReturnErrorCode(params) {
37
- const code = params.get('error_code') ?? params.get('error');
38
- if (code && code.length > 0) return code;
39
- if (params.get('status') === 'failure') return 'authorize_failed';
181
+ const key = failureErrorKey(params);
182
+ if (key !== undefined) return key;
183
+ const status = nonEmpty(params.status);
184
+ if (status !== undefined && FAILED_STATUSES.has(status)) return 'authorize_failed';
40
185
  return undefined;
41
186
  }
187
+
188
+ /**
189
+ * The machine-readable reason a payment did not complete, e.g. `user_cancelled`.
190
+ *
191
+ * Kept alongside the code because the code is often generic where this is not.
192
+ */
193
+ function extractPaymentReturnErrorReason(params) {
194
+ const reason = nonEmpty(params.error);
195
+ return reason === SUCCESS_ERROR_KEY ? undefined : reason;
196
+ }
197
+
198
+ /**
199
+ * The human-readable failure text, if the return carried one.
200
+ *
201
+ * For the merchant's logs and their own copy decisions — not shown to the payer
202
+ * by this SDK, which cannot verify anything the link says.
203
+ */
204
+ function extractPaymentReturnErrorDescription(params) {
205
+ return nonEmpty(params.error_description);
206
+ }
207
+
208
+ /**
209
+ * Everything a return said, gathered once.
210
+ *
211
+ * Carried whole through the flow so a new parameter reaches the caller by being
212
+ * read here, rather than by being threaded through every state factory.
213
+ */
214
+
215
+ /**
216
+ * What a return said about the payment.
217
+ *
218
+ * `unknown` is not a failure. The status vocabulary grows, and a payment the
219
+ * service has not finished deciding on must not be reported as one that failed —
220
+ * the merchant's backend is what resolves it.
221
+ */
222
+
223
+ function paymentReturnOutcome(params) {
224
+ const status = nonEmpty(params.status);
225
+
226
+ // The status is the authoritative field, so a recognised one settles it — an
227
+ // error key alongside does not override it. In-flight and unrecognised statuses
228
+ // both fall through to `unknown`: one is a payment still being decided, the
229
+ // other a value this version has not been taught, and neither is an outcome.
230
+ if (status !== undefined) {
231
+ if (SETTLED_STATUSES.has(status)) return 'processed';
232
+ if (FAILED_STATUSES.has(status)) return 'rejected';
233
+ return 'unknown';
234
+ }
235
+
236
+ // No status at all. A failure key is still a report of failure, so it is read as
237
+ // one — but the success key on its own is not read as a success. Reporting money
238
+ // moved on the strength of one field is the one mistake with no way back.
239
+ return failureErrorKey(params) !== undefined ? 'rejected' : 'unknown';
240
+ }
241
+
242
+ /** Reads a return URI into an outcome and everything it reported. */
243
+ function readPaymentReturn(uri) {
244
+ const params = paymentReturnParams(uri);
245
+ return {
246
+ outcome: paymentReturnOutcome(params),
247
+ report: {
248
+ ...defined('reference', extractPaymentReturnReference(params)),
249
+ ...defined('merchantRef', extractPaymentReturnMerchantRef(params)),
250
+ ...defined('paymentId', extractPaymentReturnPaymentId(params)),
251
+ ...defined('mandateId', extractPaymentReturnMandateId(params)),
252
+ ...defined('signature', extractPaymentReturnSignature(params)),
253
+ ...defined('errorCode', extractPaymentReturnErrorCode(params)),
254
+ ...defined('errorReason', extractPaymentReturnErrorReason(params)),
255
+ ...defined('errorDescription', extractPaymentReturnErrorDescription(params))
256
+ }
257
+ };
258
+ }
259
+ function defined(key, value) {
260
+ return value === undefined ? {} : {
261
+ [key]: value
262
+ };
263
+ }
264
+ function nonEmpty(value) {
265
+ return value !== undefined && value.length > 0 ? value : undefined;
266
+ }
42
267
  //# sourceMappingURL=payment-return-params.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["isPaymentReturnCallbackUri","uri","parsed","URL","params","searchParams","has","get","extractPaymentReturnErrorCode","code","length","undefined"],"sourceRoot":"../../../../src","sources":["core/models/payment-return-params.ts"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;;AAEO,SAASA,0BAA0BA,CAACC,GAAiB,EAAW;EACrE,IAAIC,MAAW;EACf,IAAI;IACFA,MAAM,GAAG,OAAOD,GAAG,KAAK,QAAQ,GAAG,IAAIE,GAAG,CAACF,GAAG,CAAC,GAAGA,GAAG;EACvD,CAAC,CAAC,MAAM;IACN,OAAO,KAAK;EACd;EACA,MAAMG,MAAM,GAAGF,MAAM,CAACG,YAAY;EAClC,IAAID,MAAM,CAACE,GAAG,CAAC,eAAe,CAAC,EAAE,OAAO,IAAI;EAC5C,IAAIF,MAAM,CAACE,GAAG,CAAC,YAAY,CAAC,EAAE,OAAO,IAAI;EACzC,IAAIF,MAAM,CAACE,GAAG,CAAC,OAAO,CAAC,EAAE,OAAO,IAAI;EACpC,IAAIF,MAAM,CAACG,GAAG,CAAC,QAAQ,CAAC,KAAK,SAAS,EAAE,OAAO,IAAI;EACnD,OAAO,KAAK;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,6BAA6BA,CAACJ,MAAuB,EAAsB;EACzF,MAAMK,IAAI,GAAGL,MAAM,CAACG,GAAG,CAAC,YAAY,CAAC,IAAIH,MAAM,CAACG,GAAG,CAAC,OAAO,CAAC;EAC5D,IAAIE,IAAI,IAAIA,IAAI,CAACC,MAAM,GAAG,CAAC,EAAE,OAAOD,IAAI;EACxC,IAAIL,MAAM,CAACG,GAAG,CAAC,QAAQ,CAAC,KAAK,SAAS,EAAE,OAAO,kBAAkB;EACjE,OAAOI,SAAS;AAClB","ignoreList":[]}
1
+ {"version":3,"names":["_urlParts","require","SETTLED_STATUSES","Set","FAILED_STATUSES","IN_FLIGHT_STATUSES","SUCCESS_ERROR_KEY","isKnownStatus","status","has","isPaymentReturnCallbackUri","uri","params","paymentReturnParams","reference","undefined","merchantRef","errorCode","error_code","error","nonEmpty","parseQueryParams","toString","isPaymentReturnSuccess","extractPaymentReturnReference","extractPaymentReturnMerchantRef","extractPaymentReturnPaymentId","paymentId","extractPaymentReturnMandateId","mandateId","extractPaymentReturnSignature","sig","failureErrorKey","key","extractPaymentReturnErrorCode","extractPaymentReturnErrorReason","reason","extractPaymentReturnErrorDescription","error_description","paymentReturnOutcome","readPaymentReturn","outcome","report","defined","value","length"],"sourceRoot":"../../../../src","sources":["core/models/payment-return-params.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=pending-session-record.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../../src","sources":["core/models/pending-session-record.ts"],"mappings":"","ignoreList":[]}