@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
@@ -5,28 +5,25 @@
5
5
  * ```ts
6
6
  * plugins: [
7
7
  * ['@spare-technologies/spare-link/expo-plugin', {
8
- * locationUsageDescription: 'We use your location to verify the payment.',
9
8
  * merchantScheme: 'sparemerchantrn',
10
9
  * merchantHost: 'callback',
11
- * universalLinkHost: 'link.krshnas.com', // optional
12
10
  * }],
13
11
  * ]
14
12
  * ```
15
13
  *
14
+ * All this registers is the deep link the payer returns through. The SDK asks
15
+ * for no runtime permissions: the hosted page collects the bank's risk signals
16
+ * itself, so nothing here reads the device.
17
+ *
16
18
  * Written as plain CJS so the Expo CLI's plugin loader (which `require()`s
17
19
  * this file) works regardless of whether Node loads it as ESM or CJS.
18
20
  *
19
21
  * @typedef {Object} SpareLinkPluginOptions
20
- * @property {string} [locationUsageDescription]
21
22
  * @property {string} [merchantScheme]
22
23
  * @property {string} [merchantHost]
23
- * @property {string} [universalLinkHost]
24
24
  */
25
25
 
26
- const { AndroidConfig, withAndroidManifest, withInfoPlist } = require('@expo/config-plugins');
27
-
28
- const DEFAULT_LOCATION_DESCRIPTION =
29
- 'Spare Link uses your location to confirm the payment as part of the bank security checks.';
26
+ const { withAndroidManifest, withInfoPlist } = require('@expo/config-plugins');
30
27
 
31
28
  /**
32
29
  * @param {import('@expo/config-plugins').ExpoConfig} config
@@ -36,10 +33,8 @@ function withSpareLink(config, props) {
36
33
  const opts = props ?? {};
37
34
  let next = config;
38
35
 
39
- // iOS — location permission + URL scheme.
36
+ // iOS — the return URL scheme, and nothing else.
40
37
  next = withInfoPlist(next, (cfg) => {
41
- cfg.modResults.NSLocationWhenInUseUsageDescription =
42
- opts.locationUsageDescription ?? DEFAULT_LOCATION_DESCRIPTION;
43
38
  if (opts.merchantScheme) {
44
39
  const types = cfg.modResults.CFBundleURLTypes ?? [];
45
40
  const exists = types.some(
@@ -54,10 +49,6 @@ function withSpareLink(config, props) {
54
49
  return cfg;
55
50
  });
56
51
 
57
- next = AndroidConfig.Permissions.withPermissions(next, [
58
- 'android.permission.ACCESS_FINE_LOCATION',
59
- ]);
60
-
61
52
  if (opts.merchantScheme) {
62
53
  const scheme = opts.merchantScheme;
63
54
  next = withAndroidManifest(next, (cfg) => {
@@ -76,17 +67,6 @@ function withSpareLink(config, props) {
76
67
  ? [{ $: { 'android:scheme': scheme, 'android:host': opts.merchantHost } }]
77
68
  : [{ $: { 'android:scheme': scheme } }],
78
69
  });
79
- if (opts.universalLinkHost) {
80
- activity['intent-filter'].push({
81
- $: { 'android:autoVerify': 'true' },
82
- action: [{ $: { 'android:name': 'android.intent.action.VIEW' } }],
83
- category: [
84
- { $: { 'android:name': 'android.intent.category.DEFAULT' } },
85
- { $: { 'android:name': 'android.intent.category.BROWSABLE' } },
86
- ],
87
- data: [{ $: { 'android:scheme': 'https', 'android:host': opts.universalLinkHost } }],
88
- });
89
- }
90
70
  return cfg;
91
71
  });
92
72
  }
@@ -1,139 +1 @@
1
- /**
2
- * SDK-side models. These are the camelCase shapes returned from the
3
- * {@link LinkApiClient} — translated from the snake_case wire format defined
4
- * by tofa (see harness `src/types/wire.ts` for the raw wire shapes).
5
- */
6
-
7
- export interface AmountDto {
8
- amount: string;
9
- currency: string;
10
- }
11
-
12
- export interface PaymentScheduleEntry {
13
- amount?: AmountDto;
14
- maxAmount?: AmountDto;
15
- paymentExecutionDate?: string;
16
- }
17
-
18
- export interface PeriodicControls {
19
- maxCumulativeAmountPerPeriod?: AmountDto;
20
- maxCumulativeNumberOfPaymentsPerPeriod?: number;
21
- }
22
-
23
- export interface PeriodicSchedule {
24
- frequency?: string;
25
- startDate?: string;
26
- endDate?: string;
27
- amount?: AmountDto;
28
- maxAmount?: AmountDto;
29
- controls?: PeriodicControls;
30
- }
31
-
32
- export interface CurrencyRequest {
33
- priority?: string;
34
- purpose?: string;
35
- chargeBearer?: string;
36
- }
37
-
38
- export interface PaymentInstructions {
39
- amount?: AmountDto;
40
- isInternationalPayment?: boolean;
41
- maxCumulativeNumberOfPayments?: number;
42
- maxCumulativeAmount?: AmountDto;
43
- paymentSchedule?: PaymentScheduleEntry[];
44
- periodicSchedule?: PeriodicSchedule;
45
- currencyRequest?: CurrencyRequest;
46
- }
47
-
48
- /** Payment request DTO as carried by GET /link. */
49
- export interface CreatePaymentRequestInput {
50
- id: string;
51
- internalReference: string;
52
- status: string;
53
- type: string;
54
- creditorType: string;
55
- purpose: string;
56
- creditorReference?: string;
57
- merchantReference: string;
58
- createdAt: string;
59
- updatedAt: string;
60
- isCopVerified: boolean;
61
- creditorAccount: {
62
- schemeName: string;
63
- identification: string;
64
- name?: string;
65
- };
66
- instructions: PaymentInstructions;
67
- }
68
-
69
- export interface LinkSessionResponse {
70
- request: CreatePaymentRequestInput;
71
- providerId?: string;
72
- }
73
-
74
- export interface ConsentResponse {
75
- redirectUrl: string;
76
- mobileAppUrl?: string;
77
- }
78
-
79
- export interface LinkStatusResponse {
80
- linkSessionId: string;
81
- /** created | initialized | redirected | callback_received | completed | failed | cancelled | expired */
82
- status: string;
83
- /** payment | account */
84
- intent: string;
85
- /** sip | multipayment | account */
86
- resourceType: string;
87
- expiresAt: string;
88
- failureCode?: string;
89
- cancelledAt?: string;
90
- completedAt?: string;
91
- failedAt?: string;
92
- }
93
-
94
- export interface CopResponse {
95
- /** `Match` | `NoMatch` | `Unavailable` */
96
- matchIndicator: string;
97
- maskedName?: string;
98
- }
99
-
100
- export interface TelemetryResponse {
101
- accepted?: boolean;
102
- linkSessionId?: string;
103
- }
104
-
105
- export interface PatchTokenResponse {
106
- status: string;
107
- linkSession?: {
108
- linkSessionId: string;
109
- status: string;
110
- cancelledAt: string | null;
111
- failedAt: string | null;
112
- failureCode: string | null;
113
- };
114
- }
115
-
116
- export interface ProviderCountry {
117
- englishName: string;
118
- iso3166Code: string;
119
- }
120
-
121
- export interface ProviderSummary {
122
- id: string;
123
- code: string;
124
- name: string;
125
- logoUrl: string;
126
- status: string;
127
- country: ProviderCountry;
128
- }
129
-
130
- /** Persisted record describing an in-flight payment for cold-start recovery. */
131
- export interface PendingSessionRecord {
132
- sessionId: string;
133
- selectedBankId: string;
134
- authorizationUrl: string;
135
- consentAt?: number;
136
- recoveryAttempts: number;
137
- /** Merchant reference from the link session, used to bind buffered return URIs. */
138
- merchantRef?: string;
139
- }
1
+ export type { PendingSessionRecord } from './pending-session-record';
@@ -1,34 +1,282 @@
1
+ import { parseQueryParams } from '../../internal/url-parts';
2
+
3
+ /**
4
+ * Query parameters on the deep link that returns a payer to the app.
5
+ *
6
+ * Both channels are told the same thing in the same words. A success carries
7
+ * `reference`, `status` and either `paymentId` or `mandateId`. A failure carries
8
+ * `reference`, `errorCode` and `status`. `merchantRef` is on both when the request
9
+ * recorded one, and `status` is always present but may be empty.
10
+ *
11
+ * `errorCode` is what tells the two apart: it is on every failure and on no
12
+ * success, so an outcome can be read without recognising a status.
13
+ *
14
+ * **A deep link to an app is not signed.** `sig` is added on the browser channel
15
+ * only, deliberately: any installed app can claim a custom scheme, so a signature
16
+ * on a deep link would be a proof handed to whoever intercepted it. When it is
17
+ * present it is an ES256 JWS over the return URL, and it is carried through
18
+ * unverified — checking it needs Spare's public key, which the SDK does not hold.
19
+ *
20
+ * The query is read by {@link parseQueryParams} rather than through `URL`,
21
+ * because React Native's `URL.searchParams` never parses the URL it was given.
22
+ */
23
+
24
+ /**
25
+ * Statuses that mean the payment is done and will not change.
26
+ *
27
+ * `Scheduled` is a success: a future-dated payment the bank has accepted has
28
+ * succeeded, the money simply has not moved yet. A caller that needs settled funds
29
+ * specifically must read the status back from its own backend — this SDK reports
30
+ * every settled status as `processed`, because all of them are terminal and all of
31
+ * them resolve to the merchant's success URL.
32
+ *
33
+ * `success` is the word an app used to be sent instead of the request's own status.
34
+ * The service now sends one vocabulary to both channels, so it should no longer
35
+ * arrive — it is still read because an environment running the earlier build would
36
+ * otherwise report a completed payment as unresolved.
37
+ */
38
+ const SETTLED_STATUSES: ReadonlySet<string> = new Set(['Processed', 'Scheduled', 'success']);
39
+
40
+ /**
41
+ * Statuses that mean the payment will not happen. `failure` is legacy, for the same
42
+ * reason `success` is in {@link SETTLED_STATUSES}.
43
+ */
44
+ const FAILED_STATUSES: ReadonlySet<string> = new Set(['Rejected', 'Errored', 'failure']);
45
+
1
46
  /**
2
- * Query-parameter helpers for bank / authorize return URIs.
47
+ * Statuses that mean the request is still payable — not an outcome at all.
3
48
  *
4
- * The Link service appends `exchange_code` on success and `error_code` on
5
- * authorize failure (legacy integrations may still send `error`).
49
+ * A return should never carry one: the payer has come back, so the request has
50
+ * moved on. One arriving here means the outcome is still being decided, which is
51
+ * `unknown` rather than either answer.
6
52
  */
53
+ const IN_FLIGHT_STATUSES: ReadonlySet<string> = new Set(['New', 'Consumed', 'ConsentRaised']);
54
+
55
+ /**
56
+ * The one error key that reports a success rather than a failure.
57
+ *
58
+ * It arrives in `errorCode` like every other key, so anything that treats the
59
+ * presence of a key as a failure reports a completed payment as a failed one.
60
+ */
61
+ const SUCCESS_ERROR_KEY = 'request_processed';
62
+
63
+ /** Every status this version has been taught, whatever it means. */
64
+ function isKnownStatus(status: string): boolean {
65
+ return (
66
+ SETTLED_STATUSES.has(status) || FAILED_STATUSES.has(status) || IN_FLIGHT_STATUSES.has(status)
67
+ );
68
+ }
7
69
 
8
70
  export function isPaymentReturnCallbackUri(uri: URL | string): boolean {
9
- let parsed: URL;
10
- try {
11
- parsed = typeof uri === 'string' ? new URL(uri) : uri;
12
- } catch {
13
- return false;
14
- }
15
- const params = parsed.searchParams;
16
- if (params.has('exchange_code')) return true;
17
- if (params.has('error_code')) return true;
18
- if (params.has('error')) return true;
19
- if (params.get('status') === 'failure') return true;
71
+ const params = paymentReturnParams(uri);
72
+ if (params.reference !== undefined) return true;
73
+ if (params.merchantRef !== undefined) return true;
74
+ if (params.errorCode !== undefined) return true;
75
+ if (params.error_code !== undefined) return true;
76
+ if (params.error !== undefined) return true;
77
+ const status = nonEmpty(params.status);
78
+ if (status !== undefined && isKnownStatus(status)) return true;
20
79
  return false;
21
80
  }
22
81
 
82
+ /** Reads the query of a return URI into the shape the extractors below take. */
83
+ export function paymentReturnParams(uri: URL | string): Record<string, string> {
84
+ return parseQueryParams(typeof uri === 'string' ? uri : uri.toString());
85
+ }
86
+
87
+ /**
88
+ * Whether the return URI reports a completed payment.
89
+ *
90
+ * Only a known settled status counts. Absent, in-flight or a status this version
91
+ * has not been taught is read as not-a-success: a payer returned without one has
92
+ * not been told their payment succeeded, and neither should the app.
93
+ */
94
+ export function isPaymentReturnSuccess(params: Record<string, string>): boolean {
95
+ const status = nonEmpty(params.status);
96
+ return status !== undefined && SETTLED_STATUSES.has(status);
97
+ }
98
+
99
+ /** The payment request reference, if the return URI named one. */
100
+ export function extractPaymentReturnReference(params: Record<string, string>): string | undefined {
101
+ return nonEmpty(params.reference);
102
+ }
103
+
104
+ /** The merchant's own reference for the attempt, if present. */
105
+ export function extractPaymentReturnMerchantRef(
106
+ params: Record<string, string>,
107
+ ): string | undefined {
108
+ return nonEmpty(params.merchantRef);
109
+ }
110
+
111
+ /**
112
+ * Spare's identifier for the payment itself, present on a success.
113
+ *
114
+ * Distinct from the reference, which names the *request*. This is what a merchant
115
+ * records against the order.
116
+ */
117
+ export function extractPaymentReturnPaymentId(params: Record<string, string>): string | undefined {
118
+ return nonEmpty(params.paymentId);
119
+ }
120
+
121
+ /**
122
+ * Spare's identifier for a mandate, present on a mandate's success.
123
+ *
124
+ * A return carries this or {@link extractPaymentReturnPaymentId}, never both: a
125
+ * single payment names a payment, every mandate type names a mandate. Read
126
+ * whichever is present rather than assuming which one the flow produced.
127
+ */
128
+ export function extractPaymentReturnMandateId(params: Record<string, string>): string | undefined {
129
+ return nonEmpty(params.mandateId);
130
+ }
131
+
132
+ /**
133
+ * The signature over this return, if it carried one.
134
+ *
135
+ * An ES256 JWS whose payload is the return URL. Handed to the caller unverified —
136
+ * checking it needs Spare's public key, which the SDK does not hold.
137
+ */
138
+ export function extractPaymentReturnSignature(params: Record<string, string>): string | undefined {
139
+ return nonEmpty(params.sig);
140
+ }
141
+
142
+ /**
143
+ * The failure key from a payment return URI, if it reported one.
144
+ *
145
+ * `errorCode` is the name both channels now use, and it is what tells the two
146
+ * outcomes apart: the service puts it on every failure and on no success, so a
147
+ * reader never has to recognise a status to know the payment did not happen.
148
+ *
149
+ * `error_code` and `error` are legacy — an earlier build sent the code under the
150
+ * snake_case name, and older returns carried a separate machine-readable reason.
151
+ * Both are still read so an environment running that build is not misread.
152
+ *
153
+ * {@link SUCCESS_ERROR_KEY} is excluded, because a success reports itself through
154
+ * the same field and must not come back out of here looking like a reason the
155
+ * payment failed.
156
+ */
157
+ function failureErrorKey(params: Record<string, string>): string | undefined {
158
+ const key = nonEmpty(params.errorCode) ?? nonEmpty(params.error_code) ?? nonEmpty(params.error);
159
+ return key === SUCCESS_ERROR_KEY ? undefined : key;
160
+ }
161
+
23
162
  /**
24
- * Extract the failure code from a payment-return URI, if present.
163
+ * The failure code from a payment return URI.
25
164
  *
26
- * `error_code` takes precedence over the legacy `error` query param. A
27
- * `status=failure` with no other code resolves to `'authorize_failed'`.
165
+ * A return that says only that it failed, naming no key, still yields something a
166
+ * merchant can branch on.
28
167
  */
29
- export function extractPaymentReturnErrorCode(params: URLSearchParams): string | undefined {
30
- const code = params.get('error_code') ?? params.get('error');
31
- if (code && code.length > 0) return code;
32
- if (params.get('status') === 'failure') return 'authorize_failed';
168
+ export function extractPaymentReturnErrorCode(params: Record<string, string>): string | undefined {
169
+ const key = failureErrorKey(params);
170
+ if (key !== undefined) return key;
171
+ const status = nonEmpty(params.status);
172
+ if (status !== undefined && FAILED_STATUSES.has(status)) return 'authorize_failed';
33
173
  return undefined;
34
174
  }
175
+
176
+ /**
177
+ * The machine-readable reason a payment did not complete, e.g. `user_cancelled`.
178
+ *
179
+ * Kept alongside the code because the code is often generic where this is not.
180
+ */
181
+ export function extractPaymentReturnErrorReason(
182
+ params: Record<string, string>,
183
+ ): string | undefined {
184
+ const reason = nonEmpty(params.error);
185
+ return reason === SUCCESS_ERROR_KEY ? undefined : reason;
186
+ }
187
+
188
+ /**
189
+ * The human-readable failure text, if the return carried one.
190
+ *
191
+ * For the merchant's logs and their own copy decisions — not shown to the payer
192
+ * by this SDK, which cannot verify anything the link says.
193
+ */
194
+ export function extractPaymentReturnErrorDescription(
195
+ params: Record<string, string>,
196
+ ): string | undefined {
197
+ return nonEmpty(params.error_description);
198
+ }
199
+
200
+ /**
201
+ * Everything a return said, gathered once.
202
+ *
203
+ * Carried whole through the flow so a new parameter reaches the caller by being
204
+ * read here, rather than by being threaded through every state factory.
205
+ */
206
+ export interface PaymentReturnReport {
207
+ /**
208
+ * The payment request this return is about.
209
+ *
210
+ * Compared against the payment in flight before the outcome is applied: a
211
+ * delayed or spoofed callback naming another payment must not resolve this one.
212
+ */
213
+ readonly reference?: string;
214
+ readonly merchantRef?: string;
215
+ readonly paymentId?: string;
216
+ /**
217
+ * Spare's identifier for a mandate. Set instead of `paymentId` when the flow
218
+ * created a mandate rather than a single payment.
219
+ */
220
+ readonly mandateId?: string;
221
+ readonly signature?: string;
222
+ readonly errorCode?: string;
223
+ readonly errorReason?: string;
224
+ readonly errorDescription?: string;
225
+ }
226
+
227
+ /**
228
+ * What a return said about the payment.
229
+ *
230
+ * `unknown` is not a failure. The status vocabulary grows, and a payment the
231
+ * service has not finished deciding on must not be reported as one that failed —
232
+ * the merchant's backend is what resolves it.
233
+ */
234
+ export type PaymentReturnOutcome = 'processed' | 'rejected' | 'unknown';
235
+
236
+ export function paymentReturnOutcome(params: Record<string, string>): PaymentReturnOutcome {
237
+ const status = nonEmpty(params.status);
238
+
239
+ // The status is the authoritative field, so a recognised one settles it — an
240
+ // error key alongside does not override it. In-flight and unrecognised statuses
241
+ // both fall through to `unknown`: one is a payment still being decided, the
242
+ // other a value this version has not been taught, and neither is an outcome.
243
+ if (status !== undefined) {
244
+ if (SETTLED_STATUSES.has(status)) return 'processed';
245
+ if (FAILED_STATUSES.has(status)) return 'rejected';
246
+ return 'unknown';
247
+ }
248
+
249
+ // No status at all. A failure key is still a report of failure, so it is read as
250
+ // one — but the success key on its own is not read as a success. Reporting money
251
+ // moved on the strength of one field is the one mistake with no way back.
252
+ return failureErrorKey(params) !== undefined ? 'rejected' : 'unknown';
253
+ }
254
+
255
+ /** Reads a return URI into an outcome and everything it reported. */
256
+ export function readPaymentReturn(uri: URL | string): {
257
+ outcome: PaymentReturnOutcome;
258
+ report: PaymentReturnReport;
259
+ } {
260
+ const params = paymentReturnParams(uri);
261
+ return {
262
+ outcome: paymentReturnOutcome(params),
263
+ report: {
264
+ ...defined('reference', extractPaymentReturnReference(params)),
265
+ ...defined('merchantRef', extractPaymentReturnMerchantRef(params)),
266
+ ...defined('paymentId', extractPaymentReturnPaymentId(params)),
267
+ ...defined('mandateId', extractPaymentReturnMandateId(params)),
268
+ ...defined('signature', extractPaymentReturnSignature(params)),
269
+ ...defined('errorCode', extractPaymentReturnErrorCode(params)),
270
+ ...defined('errorReason', extractPaymentReturnErrorReason(params)),
271
+ ...defined('errorDescription', extractPaymentReturnErrorDescription(params)),
272
+ },
273
+ };
274
+ }
275
+
276
+ function defined(key: string, value: string | undefined): Record<string, string> {
277
+ return value === undefined ? {} : { [key]: value };
278
+ }
279
+
280
+ function nonEmpty(value: string | undefined): string | undefined {
281
+ return value !== undefined && value.length > 0 ? value : undefined;
282
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * What the SDK remembers about a payment that was still in flight.
3
+ *
4
+ * Only the reference: the SDK holds no credentials and can ask the service
5
+ * nothing, so the record exists to tell a cold start which payment to hand the
6
+ * merchant's backend for resolution — not to resume the flow itself.
7
+ */
8
+ export interface PendingSessionRecord {
9
+ reference: string;
10
+ }