@spare-technologies/spare-link 0.1.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (648) hide show
  1. package/CHANGELOG.md +66 -0
  2. package/LICENSE +21 -0
  3. package/README.md +173 -0
  4. package/assets/fonts/MetroSans-Bold.otf +0 -0
  5. package/assets/fonts/MetroSans-Light.otf +0 -0
  6. package/assets/fonts/MetroSans-Medium.otf +0 -0
  7. package/assets/fonts/MetroSans-Regular.otf +0 -0
  8. package/assets/fonts/MetroSans-SemiBold.otf +0 -0
  9. package/assets/images/altareq_logo_mini.png +0 -0
  10. package/assets/images/altareq_logo_transparent_bg.png +0 -0
  11. package/assets/images/altareq_logo_white_bg.png +0 -0
  12. package/assets/images/spare_logo.png +0 -0
  13. package/lib/commonjs/core/client/link-api-client.js +297 -0
  14. package/lib/commonjs/core/client/link-api-client.js.map +1 -0
  15. package/lib/commonjs/core/errors/payment-api-error.js +35 -0
  16. package/lib/commonjs/core/errors/payment-api-error.js.map +1 -0
  17. package/lib/commonjs/core/models/index.js +2 -0
  18. package/lib/commonjs/core/models/index.js.map +1 -0
  19. package/lib/commonjs/core/models/link-session-status.js +14 -0
  20. package/lib/commonjs/core/models/link-session-status.js.map +1 -0
  21. package/lib/commonjs/core/models/payment-return-params.js +42 -0
  22. package/lib/commonjs/core/models/payment-return-params.js.map +1 -0
  23. package/lib/commonjs/core/models/payment-type.js +45 -0
  24. package/lib/commonjs/core/models/payment-type.js.map +1 -0
  25. package/lib/commonjs/core/models/wire-mappers.js +277 -0
  26. package/lib/commonjs/core/models/wire-mappers.js.map +1 -0
  27. package/lib/commonjs/core/services/consent-presenter.js +150 -0
  28. package/lib/commonjs/core/services/consent-presenter.js.map +1 -0
  29. package/lib/commonjs/core/services/execute-resume-if-needed.js +216 -0
  30. package/lib/commonjs/core/services/execute-resume-if-needed.js.map +1 -0
  31. package/lib/commonjs/core/services/multi-payment-rules-presenter.js +151 -0
  32. package/lib/commonjs/core/services/multi-payment-rules-presenter.js.map +1 -0
  33. package/lib/commonjs/core/services/payment-flow-controller.js +547 -0
  34. package/lib/commonjs/core/services/payment-flow-controller.js.map +1 -0
  35. package/lib/commonjs/core/services/payment-flow-state.js +110 -0
  36. package/lib/commonjs/core/services/payment-flow-state.js.map +1 -0
  37. package/lib/commonjs/core/services/payment-result-mapper.js +49 -0
  38. package/lib/commonjs/core/services/payment-result-mapper.js.map +1 -0
  39. package/lib/commonjs/core/services/pending-session-store.js +6 -0
  40. package/lib/commonjs/core/services/pending-session-store.js.map +1 -0
  41. package/lib/commonjs/core/services/presentation-utils.js +11 -0
  42. package/lib/commonjs/core/services/presentation-utils.js.map +1 -0
  43. package/lib/commonjs/core/services/redirect-buffer.js +40 -0
  44. package/lib/commonjs/core/services/redirect-buffer.js.map +1 -0
  45. package/lib/commonjs/core/services/user-friendly-messages.js +46 -0
  46. package/lib/commonjs/core/services/user-friendly-messages.js.map +1 -0
  47. package/lib/commonjs/index.js +294 -0
  48. package/lib/commonjs/index.js.map +1 -0
  49. package/lib/commonjs/internal/bank-redirect.js +53 -0
  50. package/lib/commonjs/internal/bank-redirect.js.map +1 -0
  51. package/lib/commonjs/internal/deep-link-listener.js +39 -0
  52. package/lib/commonjs/internal/deep-link-listener.js.map +1 -0
  53. package/lib/commonjs/internal/event-emitter.js +36 -0
  54. package/lib/commonjs/internal/event-emitter.js.map +1 -0
  55. package/lib/commonjs/internal/index.js +34 -0
  56. package/lib/commonjs/internal/index.js.map +1 -0
  57. package/lib/commonjs/internal/logger.js +67 -0
  58. package/lib/commonjs/internal/logger.js.map +1 -0
  59. package/lib/commonjs/internal/redact-uri.js +25 -0
  60. package/lib/commonjs/internal/redact-uri.js.map +1 -0
  61. package/lib/commonjs/internal/secure-store-pending-session-store.js +92 -0
  62. package/lib/commonjs/internal/secure-store-pending-session-store.js.map +1 -0
  63. package/lib/commonjs/internal/telemetry-collector.js +80 -0
  64. package/lib/commonjs/internal/telemetry-collector.js.map +1 -0
  65. package/lib/commonjs/package.json +1 -0
  66. package/lib/commonjs/public/constants.js +21 -0
  67. package/lib/commonjs/public/constants.js.map +1 -0
  68. package/lib/commonjs/public/index.js +152 -0
  69. package/lib/commonjs/public/index.js.map +1 -0
  70. package/lib/commonjs/public/payment-result.js +48 -0
  71. package/lib/commonjs/public/payment-result.js.map +1 -0
  72. package/lib/commonjs/public/recovery-result.js +40 -0
  73. package/lib/commonjs/public/recovery-result.js.map +1 -0
  74. package/lib/commonjs/public/spare-link-callbacks.js +6 -0
  75. package/lib/commonjs/public/spare-link-callbacks.js.map +1 -0
  76. package/lib/commonjs/public/spare-link-config.js +62 -0
  77. package/lib/commonjs/public/spare-link-config.js.map +1 -0
  78. package/lib/commonjs/public/spare-link-event.js +120 -0
  79. package/lib/commonjs/public/spare-link-event.js.map +1 -0
  80. package/lib/commonjs/public/spare-link-host-api.js +6 -0
  81. package/lib/commonjs/public/spare-link-host-api.js.map +1 -0
  82. package/lib/commonjs/public/spare-link-instance.js +285 -0
  83. package/lib/commonjs/public/spare-link-instance.js.map +1 -0
  84. package/lib/commonjs/public/spare-link-session.js +26 -0
  85. package/lib/commonjs/public/spare-link-session.js.map +1 -0
  86. package/lib/commonjs/public/spare-link.js +31 -0
  87. package/lib/commonjs/public/spare-link.js.map +1 -0
  88. package/lib/commonjs/ui/consent/charge-bearer-display.js +99 -0
  89. package/lib/commonjs/ui/consent/charge-bearer-display.js.map +1 -0
  90. package/lib/commonjs/ui/consent/consent-accordion.js +94 -0
  91. package/lib/commonjs/ui/consent/consent-accordion.js.map +1 -0
  92. package/lib/commonjs/ui/consent/consent-summary-section.js +27 -0
  93. package/lib/commonjs/ui/consent/consent-summary-section.js.map +1 -0
  94. package/lib/commonjs/ui/consent/cop-information.js +168 -0
  95. package/lib/commonjs/ui/consent/cop-information.js.map +1 -0
  96. package/lib/commonjs/ui/consent/international-payment-summary.js +98 -0
  97. package/lib/commonjs/ui/consent/international-payment-summary.js.map +1 -0
  98. package/lib/commonjs/ui/consent/label-value-rows.js +59 -0
  99. package/lib/commonjs/ui/consent/label-value-rows.js.map +1 -0
  100. package/lib/commonjs/ui/consent/multi-payment-rules-list.js +130 -0
  101. package/lib/commonjs/ui/consent/multi-payment-rules-list.js.map +1 -0
  102. package/lib/commonjs/ui/consent/multi-payment-summary.js +99 -0
  103. package/lib/commonjs/ui/consent/multi-payment-summary.js.map +1 -0
  104. package/lib/commonjs/ui/consent/single-payment-summary.js +158 -0
  105. package/lib/commonjs/ui/consent/single-payment-summary.js.map +1 -0
  106. package/lib/commonjs/ui/consent/terms-link.js +35 -0
  107. package/lib/commonjs/ui/consent/terms-link.js.map +1 -0
  108. package/lib/commonjs/ui/hooks/use-payment-flow-state.js +16 -0
  109. package/lib/commonjs/ui/hooks/use-payment-flow-state.js.map +1 -0
  110. package/lib/commonjs/ui/payment-flow-page.js +235 -0
  111. package/lib/commonjs/ui/payment-flow-page.js.map +1 -0
  112. package/lib/commonjs/ui/screens/bank-selection-screen.js +215 -0
  113. package/lib/commonjs/ui/screens/bank-selection-screen.js.map +1 -0
  114. package/lib/commonjs/ui/screens/consent-details-screen.js +124 -0
  115. package/lib/commonjs/ui/screens/consent-details-screen.js.map +1 -0
  116. package/lib/commonjs/ui/screens/index.js +48 -0
  117. package/lib/commonjs/ui/screens/index.js.map +1 -0
  118. package/lib/commonjs/ui/screens/mandate-setup-success-screen.js +79 -0
  119. package/lib/commonjs/ui/screens/mandate-setup-success-screen.js.map +1 -0
  120. package/lib/commonjs/ui/screens/redirect-handoff-screen.js +42 -0
  121. package/lib/commonjs/ui/screens/redirect-handoff-screen.js.map +1 -0
  122. package/lib/commonjs/ui/screens/result-screen.js +83 -0
  123. package/lib/commonjs/ui/screens/result-screen.js.map +1 -0
  124. package/lib/commonjs/ui/screens/resume-processing-screen.js +109 -0
  125. package/lib/commonjs/ui/screens/resume-processing-screen.js.map +1 -0
  126. package/lib/commonjs/ui/spare-link-host.js +354 -0
  127. package/lib/commonjs/ui/spare-link-host.js.map +1 -0
  128. package/lib/commonjs/ui/theme/assets.js +20 -0
  129. package/lib/commonjs/ui/theme/assets.js.map +1 -0
  130. package/lib/commonjs/ui/theme/colors.js +36 -0
  131. package/lib/commonjs/ui/theme/colors.js.map +1 -0
  132. package/lib/commonjs/ui/theme/fonts.js +29 -0
  133. package/lib/commonjs/ui/theme/fonts.js.map +1 -0
  134. package/lib/commonjs/ui/theme/index.js +53 -0
  135. package/lib/commonjs/ui/theme/index.js.map +1 -0
  136. package/lib/commonjs/ui/theme/typography.js +76 -0
  137. package/lib/commonjs/ui/theme/typography.js.map +1 -0
  138. package/lib/commonjs/ui/widgets/footer.js +144 -0
  139. package/lib/commonjs/ui/widgets/footer.js.map +1 -0
  140. package/lib/commonjs/ui/widgets/gradient-spinner.js +172 -0
  141. package/lib/commonjs/ui/widgets/gradient-spinner.js.map +1 -0
  142. package/lib/commonjs/ui/widgets/handoff-screen-layout.js +77 -0
  143. package/lib/commonjs/ui/widgets/handoff-screen-layout.js.map +1 -0
  144. package/lib/commonjs/ui/widgets/index.js +41 -0
  145. package/lib/commonjs/ui/widgets/index.js.map +1 -0
  146. package/lib/commonjs/ui/widgets/layout-w-header.js +106 -0
  147. package/lib/commonjs/ui/widgets/layout-w-header.js.map +1 -0
  148. package/lib/commonjs/ui/widgets/modal-dismiss-button.js +47 -0
  149. package/lib/commonjs/ui/widgets/modal-dismiss-button.js.map +1 -0
  150. package/lib/commonjs/ui/widgets/stepper.js +124 -0
  151. package/lib/commonjs/ui/widgets/stepper.js.map +1 -0
  152. package/lib/commonjs/version.js +14 -0
  153. package/lib/commonjs/version.js.map +1 -0
  154. package/lib/module/core/client/link-api-client.js +292 -0
  155. package/lib/module/core/client/link-api-client.js.map +1 -0
  156. package/lib/module/core/errors/payment-api-error.js +29 -0
  157. package/lib/module/core/errors/payment-api-error.js.map +1 -0
  158. package/lib/module/core/models/index.js +2 -0
  159. package/lib/module/core/models/index.js.map +1 -0
  160. package/lib/module/core/models/link-session-status.js +10 -0
  161. package/lib/module/core/models/link-session-status.js.map +1 -0
  162. package/lib/module/core/models/payment-return-params.js +37 -0
  163. package/lib/module/core/models/payment-return-params.js.map +1 -0
  164. package/lib/module/core/models/payment-type.js +36 -0
  165. package/lib/module/core/models/payment-type.js.map +1 -0
  166. package/lib/module/core/models/wire-mappers.js +263 -0
  167. package/lib/module/core/models/wire-mappers.js.map +1 -0
  168. package/lib/module/core/services/consent-presenter.js +140 -0
  169. package/lib/module/core/services/consent-presenter.js.map +1 -0
  170. package/lib/module/core/services/execute-resume-if-needed.js +211 -0
  171. package/lib/module/core/services/execute-resume-if-needed.js.map +1 -0
  172. package/lib/module/core/services/multi-payment-rules-presenter.js +146 -0
  173. package/lib/module/core/services/multi-payment-rules-presenter.js.map +1 -0
  174. package/lib/module/core/services/payment-flow-controller.js +544 -0
  175. package/lib/module/core/services/payment-flow-controller.js.map +1 -0
  176. package/lib/module/core/services/payment-flow-state.js +106 -0
  177. package/lib/module/core/services/payment-flow-state.js.map +1 -0
  178. package/lib/module/core/services/payment-result-mapper.js +45 -0
  179. package/lib/module/core/services/payment-result-mapper.js.map +1 -0
  180. package/lib/module/core/services/pending-session-store.js +4 -0
  181. package/lib/module/core/services/pending-session-store.js.map +1 -0
  182. package/lib/module/core/services/presentation-utils.js +7 -0
  183. package/lib/module/core/services/presentation-utils.js.map +1 -0
  184. package/lib/module/core/services/redirect-buffer.js +33 -0
  185. package/lib/module/core/services/redirect-buffer.js.map +1 -0
  186. package/lib/module/core/services/user-friendly-messages.js +42 -0
  187. package/lib/module/core/services/user-friendly-messages.js.map +1 -0
  188. package/lib/module/index.js +40 -0
  189. package/lib/module/index.js.map +1 -0
  190. package/lib/module/internal/bank-redirect.js +49 -0
  191. package/lib/module/internal/bank-redirect.js.map +1 -0
  192. package/lib/module/internal/deep-link-listener.js +34 -0
  193. package/lib/module/internal/deep-link-listener.js.map +1 -0
  194. package/lib/module/internal/event-emitter.js +32 -0
  195. package/lib/module/internal/event-emitter.js.map +1 -0
  196. package/lib/module/internal/index.js +7 -0
  197. package/lib/module/internal/index.js.map +1 -0
  198. package/lib/module/internal/logger.js +61 -0
  199. package/lib/module/internal/logger.js.map +1 -0
  200. package/lib/module/internal/redact-uri.js +21 -0
  201. package/lib/module/internal/redact-uri.js.map +1 -0
  202. package/lib/module/internal/secure-store-pending-session-store.js +88 -0
  203. package/lib/module/internal/secure-store-pending-session-store.js.map +1 -0
  204. package/lib/module/internal/telemetry-collector.js +75 -0
  205. package/lib/module/internal/telemetry-collector.js.map +1 -0
  206. package/lib/module/package.json +1 -0
  207. package/lib/module/public/constants.js +17 -0
  208. package/lib/module/public/constants.js.map +1 -0
  209. package/lib/module/public/index.js +11 -0
  210. package/lib/module/public/index.js.map +1 -0
  211. package/lib/module/public/payment-result.js +41 -0
  212. package/lib/module/public/payment-result.js.map +1 -0
  213. package/lib/module/public/recovery-result.js +34 -0
  214. package/lib/module/public/recovery-result.js.map +1 -0
  215. package/lib/module/public/spare-link-callbacks.js +4 -0
  216. package/lib/module/public/spare-link-callbacks.js.map +1 -0
  217. package/lib/module/public/spare-link-config.js +54 -0
  218. package/lib/module/public/spare-link-config.js.map +1 -0
  219. package/lib/module/public/spare-link-event.js +115 -0
  220. package/lib/module/public/spare-link-event.js.map +1 -0
  221. package/lib/module/public/spare-link-host-api.js +4 -0
  222. package/lib/module/public/spare-link-host-api.js.map +1 -0
  223. package/lib/module/public/spare-link-instance.js +273 -0
  224. package/lib/module/public/spare-link-instance.js.map +1 -0
  225. package/lib/module/public/spare-link-session.js +21 -0
  226. package/lib/module/public/spare-link-session.js.map +1 -0
  227. package/lib/module/public/spare-link.js +4 -0
  228. package/lib/module/public/spare-link.js.map +1 -0
  229. package/lib/module/ui/consent/charge-bearer-display.js +95 -0
  230. package/lib/module/ui/consent/charge-bearer-display.js.map +1 -0
  231. package/lib/module/ui/consent/consent-accordion.js +90 -0
  232. package/lib/module/ui/consent/consent-accordion.js.map +1 -0
  233. package/lib/module/ui/consent/consent-summary-section.js +23 -0
  234. package/lib/module/ui/consent/consent-summary-section.js.map +1 -0
  235. package/lib/module/ui/consent/cop-information.js +165 -0
  236. package/lib/module/ui/consent/cop-information.js.map +1 -0
  237. package/lib/module/ui/consent/international-payment-summary.js +94 -0
  238. package/lib/module/ui/consent/international-payment-summary.js.map +1 -0
  239. package/lib/module/ui/consent/label-value-rows.js +55 -0
  240. package/lib/module/ui/consent/label-value-rows.js.map +1 -0
  241. package/lib/module/ui/consent/multi-payment-rules-list.js +125 -0
  242. package/lib/module/ui/consent/multi-payment-rules-list.js.map +1 -0
  243. package/lib/module/ui/consent/multi-payment-summary.js +95 -0
  244. package/lib/module/ui/consent/multi-payment-summary.js.map +1 -0
  245. package/lib/module/ui/consent/single-payment-summary.js +154 -0
  246. package/lib/module/ui/consent/single-payment-summary.js.map +1 -0
  247. package/lib/module/ui/consent/terms-link.js +31 -0
  248. package/lib/module/ui/consent/terms-link.js.map +1 -0
  249. package/lib/module/ui/hooks/use-payment-flow-state.js +12 -0
  250. package/lib/module/ui/hooks/use-payment-flow-state.js.map +1 -0
  251. package/lib/module/ui/payment-flow-page.js +232 -0
  252. package/lib/module/ui/payment-flow-page.js.map +1 -0
  253. package/lib/module/ui/screens/bank-selection-screen.js +211 -0
  254. package/lib/module/ui/screens/bank-selection-screen.js.map +1 -0
  255. package/lib/module/ui/screens/consent-details-screen.js +120 -0
  256. package/lib/module/ui/screens/consent-details-screen.js.map +1 -0
  257. package/lib/module/ui/screens/index.js +9 -0
  258. package/lib/module/ui/screens/index.js.map +1 -0
  259. package/lib/module/ui/screens/mandate-setup-success-screen.js +75 -0
  260. package/lib/module/ui/screens/mandate-setup-success-screen.js.map +1 -0
  261. package/lib/module/ui/screens/redirect-handoff-screen.js +39 -0
  262. package/lib/module/ui/screens/redirect-handoff-screen.js.map +1 -0
  263. package/lib/module/ui/screens/result-screen.js +79 -0
  264. package/lib/module/ui/screens/result-screen.js.map +1 -0
  265. package/lib/module/ui/screens/resume-processing-screen.js +105 -0
  266. package/lib/module/ui/screens/resume-processing-screen.js.map +1 -0
  267. package/lib/module/ui/spare-link-host.js +350 -0
  268. package/lib/module/ui/spare-link-host.js.map +1 -0
  269. package/lib/module/ui/theme/assets.js +16 -0
  270. package/lib/module/ui/theme/assets.js.map +1 -0
  271. package/lib/module/ui/theme/colors.js +32 -0
  272. package/lib/module/ui/theme/colors.js.map +1 -0
  273. package/lib/module/ui/theme/fonts.js +23 -0
  274. package/lib/module/ui/theme/fonts.js.map +1 -0
  275. package/lib/module/ui/theme/index.js +13 -0
  276. package/lib/module/ui/theme/index.js.map +1 -0
  277. package/lib/module/ui/theme/typography.js +49 -0
  278. package/lib/module/ui/theme/typography.js.map +1 -0
  279. package/lib/module/ui/widgets/footer.js +140 -0
  280. package/lib/module/ui/widgets/footer.js.map +1 -0
  281. package/lib/module/ui/widgets/gradient-spinner.js +168 -0
  282. package/lib/module/ui/widgets/gradient-spinner.js.map +1 -0
  283. package/lib/module/ui/widgets/handoff-screen-layout.js +73 -0
  284. package/lib/module/ui/widgets/handoff-screen-layout.js.map +1 -0
  285. package/lib/module/ui/widgets/index.js +8 -0
  286. package/lib/module/ui/widgets/index.js.map +1 -0
  287. package/lib/module/ui/widgets/layout-w-header.js +102 -0
  288. package/lib/module/ui/widgets/layout-w-header.js.map +1 -0
  289. package/lib/module/ui/widgets/modal-dismiss-button.js +43 -0
  290. package/lib/module/ui/widgets/modal-dismiss-button.js.map +1 -0
  291. package/lib/module/ui/widgets/stepper.js +120 -0
  292. package/lib/module/ui/widgets/stepper.js.map +1 -0
  293. package/lib/module/version.js +10 -0
  294. package/lib/module/version.js.map +1 -0
  295. package/lib/typescript/commonjs/core/client/link-api-client.d.ts +70 -0
  296. package/lib/typescript/commonjs/core/client/link-api-client.d.ts.map +1 -0
  297. package/lib/typescript/commonjs/core/errors/payment-api-error.d.ts +15 -0
  298. package/lib/typescript/commonjs/core/errors/payment-api-error.d.ts.map +1 -0
  299. package/lib/typescript/commonjs/core/models/index.d.ts +124 -0
  300. package/lib/typescript/commonjs/core/models/index.d.ts.map +1 -0
  301. package/lib/typescript/commonjs/core/models/link-session-status.d.ts +6 -0
  302. package/lib/typescript/commonjs/core/models/link-session-status.d.ts.map +1 -0
  303. package/lib/typescript/commonjs/core/models/payment-return-params.d.ts +15 -0
  304. package/lib/typescript/commonjs/core/models/payment-return-params.d.ts.map +1 -0
  305. package/lib/typescript/commonjs/core/models/payment-type.d.ts +18 -0
  306. package/lib/typescript/commonjs/core/models/payment-type.d.ts.map +1 -0
  307. package/lib/typescript/commonjs/core/models/wire-mappers.d.ts +19 -0
  308. package/lib/typescript/commonjs/core/models/wire-mappers.d.ts.map +1 -0
  309. package/lib/typescript/commonjs/core/services/consent-presenter.d.ts +67 -0
  310. package/lib/typescript/commonjs/core/services/consent-presenter.d.ts.map +1 -0
  311. package/lib/typescript/commonjs/core/services/execute-resume-if-needed.d.ts +32 -0
  312. package/lib/typescript/commonjs/core/services/execute-resume-if-needed.d.ts.map +1 -0
  313. package/lib/typescript/commonjs/core/services/multi-payment-rules-presenter.d.ts +9 -0
  314. package/lib/typescript/commonjs/core/services/multi-payment-rules-presenter.d.ts.map +1 -0
  315. package/lib/typescript/commonjs/core/services/payment-flow-controller.d.ts +146 -0
  316. package/lib/typescript/commonjs/core/services/payment-flow-controller.d.ts.map +1 -0
  317. package/lib/typescript/commonjs/core/services/payment-flow-state.d.ts +64 -0
  318. package/lib/typescript/commonjs/core/services/payment-flow-state.d.ts.map +1 -0
  319. package/lib/typescript/commonjs/core/services/payment-result-mapper.d.ts +5 -0
  320. package/lib/typescript/commonjs/core/services/payment-result-mapper.d.ts.map +1 -0
  321. package/lib/typescript/commonjs/core/services/pending-session-store.d.ts +12 -0
  322. package/lib/typescript/commonjs/core/services/pending-session-store.d.ts.map +1 -0
  323. package/lib/typescript/commonjs/core/services/presentation-utils.d.ts +5 -0
  324. package/lib/typescript/commonjs/core/services/presentation-utils.d.ts.map +1 -0
  325. package/lib/typescript/commonjs/core/services/redirect-buffer.d.ts +6 -0
  326. package/lib/typescript/commonjs/core/services/redirect-buffer.d.ts.map +1 -0
  327. package/lib/typescript/commonjs/core/services/user-friendly-messages.d.ts +6 -0
  328. package/lib/typescript/commonjs/core/services/user-friendly-messages.d.ts.map +1 -0
  329. package/lib/typescript/commonjs/index.d.ts +19 -0
  330. package/lib/typescript/commonjs/index.d.ts.map +1 -0
  331. package/lib/typescript/commonjs/internal/bank-redirect.d.ts +6 -0
  332. package/lib/typescript/commonjs/internal/bank-redirect.d.ts.map +1 -0
  333. package/lib/typescript/commonjs/internal/deep-link-listener.d.ts +3 -0
  334. package/lib/typescript/commonjs/internal/deep-link-listener.d.ts.map +1 -0
  335. package/lib/typescript/commonjs/internal/event-emitter.d.ts +13 -0
  336. package/lib/typescript/commonjs/internal/event-emitter.d.ts.map +1 -0
  337. package/lib/typescript/commonjs/internal/index.d.ts +5 -0
  338. package/lib/typescript/commonjs/internal/index.d.ts.map +1 -0
  339. package/lib/typescript/commonjs/internal/logger.d.ts +23 -0
  340. package/lib/typescript/commonjs/internal/logger.d.ts.map +1 -0
  341. package/lib/typescript/commonjs/internal/redact-uri.d.ts +3 -0
  342. package/lib/typescript/commonjs/internal/redact-uri.d.ts.map +1 -0
  343. package/lib/typescript/commonjs/internal/secure-store-pending-session-store.d.ts +33 -0
  344. package/lib/typescript/commonjs/internal/secure-store-pending-session-store.d.ts.map +1 -0
  345. package/lib/typescript/commonjs/internal/telemetry-collector.d.ts +2 -0
  346. package/lib/typescript/commonjs/internal/telemetry-collector.d.ts.map +1 -0
  347. package/lib/typescript/commonjs/package.json +1 -0
  348. package/lib/typescript/commonjs/public/constants.d.ts +12 -0
  349. package/lib/typescript/commonjs/public/constants.d.ts.map +1 -0
  350. package/lib/typescript/commonjs/public/index.d.ts +11 -0
  351. package/lib/typescript/commonjs/public/index.d.ts.map +1 -0
  352. package/lib/typescript/commonjs/public/payment-result.d.ts +43 -0
  353. package/lib/typescript/commonjs/public/payment-result.d.ts.map +1 -0
  354. package/lib/typescript/commonjs/public/recovery-result.d.ts +36 -0
  355. package/lib/typescript/commonjs/public/recovery-result.d.ts.map +1 -0
  356. package/lib/typescript/commonjs/public/spare-link-callbacks.d.ts +14 -0
  357. package/lib/typescript/commonjs/public/spare-link-callbacks.d.ts.map +1 -0
  358. package/lib/typescript/commonjs/public/spare-link-config.d.ts +49 -0
  359. package/lib/typescript/commonjs/public/spare-link-config.d.ts.map +1 -0
  360. package/lib/typescript/commonjs/public/spare-link-event.d.ts +90 -0
  361. package/lib/typescript/commonjs/public/spare-link-event.d.ts.map +1 -0
  362. package/lib/typescript/commonjs/public/spare-link-host-api.d.ts +29 -0
  363. package/lib/typescript/commonjs/public/spare-link-host-api.d.ts.map +1 -0
  364. package/lib/typescript/commonjs/public/spare-link-instance.d.ts +89 -0
  365. package/lib/typescript/commonjs/public/spare-link-instance.d.ts.map +1 -0
  366. package/lib/typescript/commonjs/public/spare-link-session.d.ts +20 -0
  367. package/lib/typescript/commonjs/public/spare-link-session.d.ts.map +1 -0
  368. package/lib/typescript/commonjs/public/spare-link.d.ts +3 -0
  369. package/lib/typescript/commonjs/public/spare-link.d.ts.map +1 -0
  370. package/lib/typescript/commonjs/ui/consent/charge-bearer-display.d.ts +5 -0
  371. package/lib/typescript/commonjs/ui/consent/charge-bearer-display.d.ts.map +1 -0
  372. package/lib/typescript/commonjs/ui/consent/consent-accordion.d.ts +10 -0
  373. package/lib/typescript/commonjs/ui/consent/consent-accordion.d.ts.map +1 -0
  374. package/lib/typescript/commonjs/ui/consent/consent-summary-section.d.ts +6 -0
  375. package/lib/typescript/commonjs/ui/consent/consent-summary-section.d.ts.map +1 -0
  376. package/lib/typescript/commonjs/ui/consent/cop-information.d.ts +6 -0
  377. package/lib/typescript/commonjs/ui/consent/cop-information.d.ts.map +1 -0
  378. package/lib/typescript/commonjs/ui/consent/international-payment-summary.d.ts +6 -0
  379. package/lib/typescript/commonjs/ui/consent/international-payment-summary.d.ts.map +1 -0
  380. package/lib/typescript/commonjs/ui/consent/label-value-rows.d.ts +10 -0
  381. package/lib/typescript/commonjs/ui/consent/label-value-rows.d.ts.map +1 -0
  382. package/lib/typescript/commonjs/ui/consent/multi-payment-rules-list.d.ts +15 -0
  383. package/lib/typescript/commonjs/ui/consent/multi-payment-rules-list.d.ts.map +1 -0
  384. package/lib/typescript/commonjs/ui/consent/multi-payment-summary.d.ts +6 -0
  385. package/lib/typescript/commonjs/ui/consent/multi-payment-summary.d.ts.map +1 -0
  386. package/lib/typescript/commonjs/ui/consent/single-payment-summary.d.ts +6 -0
  387. package/lib/typescript/commonjs/ui/consent/single-payment-summary.d.ts.map +1 -0
  388. package/lib/typescript/commonjs/ui/consent/terms-link.d.ts +2 -0
  389. package/lib/typescript/commonjs/ui/consent/terms-link.d.ts.map +1 -0
  390. package/lib/typescript/commonjs/ui/hooks/use-payment-flow-state.d.ts +9 -0
  391. package/lib/typescript/commonjs/ui/hooks/use-payment-flow-state.d.ts.map +1 -0
  392. package/lib/typescript/commonjs/ui/payment-flow-page.d.ts +20 -0
  393. package/lib/typescript/commonjs/ui/payment-flow-page.d.ts.map +1 -0
  394. package/lib/typescript/commonjs/ui/screens/bank-selection-screen.d.ts +15 -0
  395. package/lib/typescript/commonjs/ui/screens/bank-selection-screen.d.ts.map +1 -0
  396. package/lib/typescript/commonjs/ui/screens/consent-details-screen.d.ts +13 -0
  397. package/lib/typescript/commonjs/ui/screens/consent-details-screen.d.ts.map +1 -0
  398. package/lib/typescript/commonjs/ui/screens/index.d.ts +7 -0
  399. package/lib/typescript/commonjs/ui/screens/index.d.ts.map +1 -0
  400. package/lib/typescript/commonjs/ui/screens/mandate-setup-success-screen.d.ts +10 -0
  401. package/lib/typescript/commonjs/ui/screens/mandate-setup-success-screen.d.ts.map +1 -0
  402. package/lib/typescript/commonjs/ui/screens/redirect-handoff-screen.d.ts +3 -0
  403. package/lib/typescript/commonjs/ui/screens/redirect-handoff-screen.d.ts.map +1 -0
  404. package/lib/typescript/commonjs/ui/screens/result-screen.d.ts +7 -0
  405. package/lib/typescript/commonjs/ui/screens/result-screen.d.ts.map +1 -0
  406. package/lib/typescript/commonjs/ui/screens/resume-processing-screen.d.ts +10 -0
  407. package/lib/typescript/commonjs/ui/screens/resume-processing-screen.d.ts.map +1 -0
  408. package/lib/typescript/commonjs/ui/spare-link-host.d.ts +23 -0
  409. package/lib/typescript/commonjs/ui/spare-link-host.d.ts.map +1 -0
  410. package/lib/typescript/commonjs/ui/theme/assets.d.ts +15 -0
  411. package/lib/typescript/commonjs/ui/theme/assets.d.ts.map +1 -0
  412. package/lib/typescript/commonjs/ui/theme/colors.d.ts +31 -0
  413. package/lib/typescript/commonjs/ui/theme/colors.d.ts.map +1 -0
  414. package/lib/typescript/commonjs/ui/theme/fonts.d.ts +12 -0
  415. package/lib/typescript/commonjs/ui/theme/fonts.d.ts.map +1 -0
  416. package/lib/typescript/commonjs/ui/theme/index.d.ts +11 -0
  417. package/lib/typescript/commonjs/ui/theme/index.d.ts.map +1 -0
  418. package/lib/typescript/commonjs/ui/theme/typography.d.ts +12 -0
  419. package/lib/typescript/commonjs/ui/theme/typography.d.ts.map +1 -0
  420. package/lib/typescript/commonjs/ui/widgets/footer.d.ts +23 -0
  421. package/lib/typescript/commonjs/ui/widgets/footer.d.ts.map +1 -0
  422. package/lib/typescript/commonjs/ui/widgets/gradient-spinner.d.ts +13 -0
  423. package/lib/typescript/commonjs/ui/widgets/gradient-spinner.d.ts.map +1 -0
  424. package/lib/typescript/commonjs/ui/widgets/handoff-screen-layout.d.ts +11 -0
  425. package/lib/typescript/commonjs/ui/widgets/handoff-screen-layout.d.ts.map +1 -0
  426. package/lib/typescript/commonjs/ui/widgets/index.d.ts +6 -0
  427. package/lib/typescript/commonjs/ui/widgets/index.d.ts.map +1 -0
  428. package/lib/typescript/commonjs/ui/widgets/layout-w-header.d.ts +20 -0
  429. package/lib/typescript/commonjs/ui/widgets/layout-w-header.d.ts.map +1 -0
  430. package/lib/typescript/commonjs/ui/widgets/modal-dismiss-button.d.ts +6 -0
  431. package/lib/typescript/commonjs/ui/widgets/modal-dismiss-button.d.ts.map +1 -0
  432. package/lib/typescript/commonjs/ui/widgets/stepper.d.ts +15 -0
  433. package/lib/typescript/commonjs/ui/widgets/stepper.d.ts.map +1 -0
  434. package/lib/typescript/commonjs/version.d.ts +8 -0
  435. package/lib/typescript/commonjs/version.d.ts.map +1 -0
  436. package/lib/typescript/module/core/client/link-api-client.d.ts +70 -0
  437. package/lib/typescript/module/core/client/link-api-client.d.ts.map +1 -0
  438. package/lib/typescript/module/core/errors/payment-api-error.d.ts +15 -0
  439. package/lib/typescript/module/core/errors/payment-api-error.d.ts.map +1 -0
  440. package/lib/typescript/module/core/models/index.d.ts +124 -0
  441. package/lib/typescript/module/core/models/index.d.ts.map +1 -0
  442. package/lib/typescript/module/core/models/link-session-status.d.ts +6 -0
  443. package/lib/typescript/module/core/models/link-session-status.d.ts.map +1 -0
  444. package/lib/typescript/module/core/models/payment-return-params.d.ts +15 -0
  445. package/lib/typescript/module/core/models/payment-return-params.d.ts.map +1 -0
  446. package/lib/typescript/module/core/models/payment-type.d.ts +18 -0
  447. package/lib/typescript/module/core/models/payment-type.d.ts.map +1 -0
  448. package/lib/typescript/module/core/models/wire-mappers.d.ts +19 -0
  449. package/lib/typescript/module/core/models/wire-mappers.d.ts.map +1 -0
  450. package/lib/typescript/module/core/services/consent-presenter.d.ts +67 -0
  451. package/lib/typescript/module/core/services/consent-presenter.d.ts.map +1 -0
  452. package/lib/typescript/module/core/services/execute-resume-if-needed.d.ts +32 -0
  453. package/lib/typescript/module/core/services/execute-resume-if-needed.d.ts.map +1 -0
  454. package/lib/typescript/module/core/services/multi-payment-rules-presenter.d.ts +9 -0
  455. package/lib/typescript/module/core/services/multi-payment-rules-presenter.d.ts.map +1 -0
  456. package/lib/typescript/module/core/services/payment-flow-controller.d.ts +146 -0
  457. package/lib/typescript/module/core/services/payment-flow-controller.d.ts.map +1 -0
  458. package/lib/typescript/module/core/services/payment-flow-state.d.ts +64 -0
  459. package/lib/typescript/module/core/services/payment-flow-state.d.ts.map +1 -0
  460. package/lib/typescript/module/core/services/payment-result-mapper.d.ts +5 -0
  461. package/lib/typescript/module/core/services/payment-result-mapper.d.ts.map +1 -0
  462. package/lib/typescript/module/core/services/pending-session-store.d.ts +12 -0
  463. package/lib/typescript/module/core/services/pending-session-store.d.ts.map +1 -0
  464. package/lib/typescript/module/core/services/presentation-utils.d.ts +5 -0
  465. package/lib/typescript/module/core/services/presentation-utils.d.ts.map +1 -0
  466. package/lib/typescript/module/core/services/redirect-buffer.d.ts +6 -0
  467. package/lib/typescript/module/core/services/redirect-buffer.d.ts.map +1 -0
  468. package/lib/typescript/module/core/services/user-friendly-messages.d.ts +6 -0
  469. package/lib/typescript/module/core/services/user-friendly-messages.d.ts.map +1 -0
  470. package/lib/typescript/module/index.d.ts +19 -0
  471. package/lib/typescript/module/index.d.ts.map +1 -0
  472. package/lib/typescript/module/internal/bank-redirect.d.ts +6 -0
  473. package/lib/typescript/module/internal/bank-redirect.d.ts.map +1 -0
  474. package/lib/typescript/module/internal/deep-link-listener.d.ts +3 -0
  475. package/lib/typescript/module/internal/deep-link-listener.d.ts.map +1 -0
  476. package/lib/typescript/module/internal/event-emitter.d.ts +13 -0
  477. package/lib/typescript/module/internal/event-emitter.d.ts.map +1 -0
  478. package/lib/typescript/module/internal/index.d.ts +5 -0
  479. package/lib/typescript/module/internal/index.d.ts.map +1 -0
  480. package/lib/typescript/module/internal/logger.d.ts +23 -0
  481. package/lib/typescript/module/internal/logger.d.ts.map +1 -0
  482. package/lib/typescript/module/internal/redact-uri.d.ts +3 -0
  483. package/lib/typescript/module/internal/redact-uri.d.ts.map +1 -0
  484. package/lib/typescript/module/internal/secure-store-pending-session-store.d.ts +33 -0
  485. package/lib/typescript/module/internal/secure-store-pending-session-store.d.ts.map +1 -0
  486. package/lib/typescript/module/internal/telemetry-collector.d.ts +2 -0
  487. package/lib/typescript/module/internal/telemetry-collector.d.ts.map +1 -0
  488. package/lib/typescript/module/package.json +1 -0
  489. package/lib/typescript/module/public/constants.d.ts +12 -0
  490. package/lib/typescript/module/public/constants.d.ts.map +1 -0
  491. package/lib/typescript/module/public/index.d.ts +11 -0
  492. package/lib/typescript/module/public/index.d.ts.map +1 -0
  493. package/lib/typescript/module/public/payment-result.d.ts +43 -0
  494. package/lib/typescript/module/public/payment-result.d.ts.map +1 -0
  495. package/lib/typescript/module/public/recovery-result.d.ts +36 -0
  496. package/lib/typescript/module/public/recovery-result.d.ts.map +1 -0
  497. package/lib/typescript/module/public/spare-link-callbacks.d.ts +14 -0
  498. package/lib/typescript/module/public/spare-link-callbacks.d.ts.map +1 -0
  499. package/lib/typescript/module/public/spare-link-config.d.ts +49 -0
  500. package/lib/typescript/module/public/spare-link-config.d.ts.map +1 -0
  501. package/lib/typescript/module/public/spare-link-event.d.ts +90 -0
  502. package/lib/typescript/module/public/spare-link-event.d.ts.map +1 -0
  503. package/lib/typescript/module/public/spare-link-host-api.d.ts +29 -0
  504. package/lib/typescript/module/public/spare-link-host-api.d.ts.map +1 -0
  505. package/lib/typescript/module/public/spare-link-instance.d.ts +89 -0
  506. package/lib/typescript/module/public/spare-link-instance.d.ts.map +1 -0
  507. package/lib/typescript/module/public/spare-link-session.d.ts +20 -0
  508. package/lib/typescript/module/public/spare-link-session.d.ts.map +1 -0
  509. package/lib/typescript/module/public/spare-link.d.ts +3 -0
  510. package/lib/typescript/module/public/spare-link.d.ts.map +1 -0
  511. package/lib/typescript/module/ui/consent/charge-bearer-display.d.ts +5 -0
  512. package/lib/typescript/module/ui/consent/charge-bearer-display.d.ts.map +1 -0
  513. package/lib/typescript/module/ui/consent/consent-accordion.d.ts +10 -0
  514. package/lib/typescript/module/ui/consent/consent-accordion.d.ts.map +1 -0
  515. package/lib/typescript/module/ui/consent/consent-summary-section.d.ts +6 -0
  516. package/lib/typescript/module/ui/consent/consent-summary-section.d.ts.map +1 -0
  517. package/lib/typescript/module/ui/consent/cop-information.d.ts +6 -0
  518. package/lib/typescript/module/ui/consent/cop-information.d.ts.map +1 -0
  519. package/lib/typescript/module/ui/consent/international-payment-summary.d.ts +6 -0
  520. package/lib/typescript/module/ui/consent/international-payment-summary.d.ts.map +1 -0
  521. package/lib/typescript/module/ui/consent/label-value-rows.d.ts +10 -0
  522. package/lib/typescript/module/ui/consent/label-value-rows.d.ts.map +1 -0
  523. package/lib/typescript/module/ui/consent/multi-payment-rules-list.d.ts +15 -0
  524. package/lib/typescript/module/ui/consent/multi-payment-rules-list.d.ts.map +1 -0
  525. package/lib/typescript/module/ui/consent/multi-payment-summary.d.ts +6 -0
  526. package/lib/typescript/module/ui/consent/multi-payment-summary.d.ts.map +1 -0
  527. package/lib/typescript/module/ui/consent/single-payment-summary.d.ts +6 -0
  528. package/lib/typescript/module/ui/consent/single-payment-summary.d.ts.map +1 -0
  529. package/lib/typescript/module/ui/consent/terms-link.d.ts +2 -0
  530. package/lib/typescript/module/ui/consent/terms-link.d.ts.map +1 -0
  531. package/lib/typescript/module/ui/hooks/use-payment-flow-state.d.ts +9 -0
  532. package/lib/typescript/module/ui/hooks/use-payment-flow-state.d.ts.map +1 -0
  533. package/lib/typescript/module/ui/payment-flow-page.d.ts +20 -0
  534. package/lib/typescript/module/ui/payment-flow-page.d.ts.map +1 -0
  535. package/lib/typescript/module/ui/screens/bank-selection-screen.d.ts +15 -0
  536. package/lib/typescript/module/ui/screens/bank-selection-screen.d.ts.map +1 -0
  537. package/lib/typescript/module/ui/screens/consent-details-screen.d.ts +13 -0
  538. package/lib/typescript/module/ui/screens/consent-details-screen.d.ts.map +1 -0
  539. package/lib/typescript/module/ui/screens/index.d.ts +7 -0
  540. package/lib/typescript/module/ui/screens/index.d.ts.map +1 -0
  541. package/lib/typescript/module/ui/screens/mandate-setup-success-screen.d.ts +10 -0
  542. package/lib/typescript/module/ui/screens/mandate-setup-success-screen.d.ts.map +1 -0
  543. package/lib/typescript/module/ui/screens/redirect-handoff-screen.d.ts +3 -0
  544. package/lib/typescript/module/ui/screens/redirect-handoff-screen.d.ts.map +1 -0
  545. package/lib/typescript/module/ui/screens/result-screen.d.ts +7 -0
  546. package/lib/typescript/module/ui/screens/result-screen.d.ts.map +1 -0
  547. package/lib/typescript/module/ui/screens/resume-processing-screen.d.ts +10 -0
  548. package/lib/typescript/module/ui/screens/resume-processing-screen.d.ts.map +1 -0
  549. package/lib/typescript/module/ui/spare-link-host.d.ts +23 -0
  550. package/lib/typescript/module/ui/spare-link-host.d.ts.map +1 -0
  551. package/lib/typescript/module/ui/theme/assets.d.ts +15 -0
  552. package/lib/typescript/module/ui/theme/assets.d.ts.map +1 -0
  553. package/lib/typescript/module/ui/theme/colors.d.ts +31 -0
  554. package/lib/typescript/module/ui/theme/colors.d.ts.map +1 -0
  555. package/lib/typescript/module/ui/theme/fonts.d.ts +12 -0
  556. package/lib/typescript/module/ui/theme/fonts.d.ts.map +1 -0
  557. package/lib/typescript/module/ui/theme/index.d.ts +11 -0
  558. package/lib/typescript/module/ui/theme/index.d.ts.map +1 -0
  559. package/lib/typescript/module/ui/theme/typography.d.ts +12 -0
  560. package/lib/typescript/module/ui/theme/typography.d.ts.map +1 -0
  561. package/lib/typescript/module/ui/widgets/footer.d.ts +23 -0
  562. package/lib/typescript/module/ui/widgets/footer.d.ts.map +1 -0
  563. package/lib/typescript/module/ui/widgets/gradient-spinner.d.ts +13 -0
  564. package/lib/typescript/module/ui/widgets/gradient-spinner.d.ts.map +1 -0
  565. package/lib/typescript/module/ui/widgets/handoff-screen-layout.d.ts +11 -0
  566. package/lib/typescript/module/ui/widgets/handoff-screen-layout.d.ts.map +1 -0
  567. package/lib/typescript/module/ui/widgets/index.d.ts +6 -0
  568. package/lib/typescript/module/ui/widgets/index.d.ts.map +1 -0
  569. package/lib/typescript/module/ui/widgets/layout-w-header.d.ts +20 -0
  570. package/lib/typescript/module/ui/widgets/layout-w-header.d.ts.map +1 -0
  571. package/lib/typescript/module/ui/widgets/modal-dismiss-button.d.ts +6 -0
  572. package/lib/typescript/module/ui/widgets/modal-dismiss-button.d.ts.map +1 -0
  573. package/lib/typescript/module/ui/widgets/stepper.d.ts +15 -0
  574. package/lib/typescript/module/ui/widgets/stepper.d.ts.map +1 -0
  575. package/lib/typescript/module/version.d.ts +8 -0
  576. package/lib/typescript/module/version.d.ts.map +1 -0
  577. package/package.json +124 -0
  578. package/plugins/with-spare-link.js +98 -0
  579. package/src/core/client/link-api-client.ts +414 -0
  580. package/src/core/errors/payment-api-error.ts +35 -0
  581. package/src/core/models/index.ts +139 -0
  582. package/src/core/models/link-session-status.ts +7 -0
  583. package/src/core/models/payment-return-params.ts +34 -0
  584. package/src/core/models/payment-type.ts +54 -0
  585. package/src/core/models/wire-mappers.ts +315 -0
  586. package/src/core/services/consent-presenter.ts +213 -0
  587. package/src/core/services/execute-resume-if-needed.ts +243 -0
  588. package/src/core/services/multi-payment-rules-presenter.ts +158 -0
  589. package/src/core/services/payment-flow-controller.ts +607 -0
  590. package/src/core/services/payment-flow-state.ts +124 -0
  591. package/src/core/services/payment-result-mapper.ts +41 -0
  592. package/src/core/services/pending-session-store.ts +12 -0
  593. package/src/core/services/presentation-utils.ts +4 -0
  594. package/src/core/services/redirect-buffer.ts +34 -0
  595. package/src/core/services/user-friendly-messages.ts +39 -0
  596. package/src/index.ts +115 -0
  597. package/src/internal/bank-redirect.ts +61 -0
  598. package/src/internal/deep-link-listener.ts +31 -0
  599. package/src/internal/event-emitter.ts +42 -0
  600. package/src/internal/index.ts +4 -0
  601. package/src/internal/logger.ts +81 -0
  602. package/src/internal/redact-uri.ts +18 -0
  603. package/src/internal/secure-store-pending-session-store.ts +131 -0
  604. package/src/internal/telemetry-collector.ts +90 -0
  605. package/src/public/constants.ts +14 -0
  606. package/src/public/index.ts +80 -0
  607. package/src/public/payment-result.ts +61 -0
  608. package/src/public/recovery-result.ts +49 -0
  609. package/src/public/spare-link-callbacks.ts +20 -0
  610. package/src/public/spare-link-config.ts +87 -0
  611. package/src/public/spare-link-event.ts +146 -0
  612. package/src/public/spare-link-host-api.ts +28 -0
  613. package/src/public/spare-link-instance.ts +289 -0
  614. package/src/public/spare-link-session.ts +28 -0
  615. package/src/public/spare-link.ts +2 -0
  616. package/src/ui/consent/charge-bearer-display.tsx +68 -0
  617. package/src/ui/consent/consent-accordion.tsx +89 -0
  618. package/src/ui/consent/consent-summary-section.tsx +19 -0
  619. package/src/ui/consent/cop-information.tsx +121 -0
  620. package/src/ui/consent/international-payment-summary.tsx +83 -0
  621. package/src/ui/consent/label-value-rows.tsx +50 -0
  622. package/src/ui/consent/multi-payment-rules-list.tsx +138 -0
  623. package/src/ui/consent/multi-payment-summary.tsx +82 -0
  624. package/src/ui/consent/single-payment-summary.tsx +123 -0
  625. package/src/ui/consent/terms-link.tsx +27 -0
  626. package/src/ui/hooks/use-payment-flow-state.ts +16 -0
  627. package/src/ui/payment-flow-page.tsx +254 -0
  628. package/src/ui/screens/bank-selection-screen.tsx +209 -0
  629. package/src/ui/screens/consent-details-screen.tsx +106 -0
  630. package/src/ui/screens/index.ts +12 -0
  631. package/src/ui/screens/mandate-setup-success-screen.tsx +72 -0
  632. package/src/ui/screens/redirect-handoff-screen.tsx +33 -0
  633. package/src/ui/screens/result-screen.tsx +71 -0
  634. package/src/ui/screens/resume-processing-screen.tsx +111 -0
  635. package/src/ui/spare-link-host.tsx +394 -0
  636. package/src/ui/theme/assets.ts +17 -0
  637. package/src/ui/theme/colors.ts +32 -0
  638. package/src/ui/theme/fonts.ts +25 -0
  639. package/src/ui/theme/index.ts +11 -0
  640. package/src/ui/theme/typography.ts +47 -0
  641. package/src/ui/widgets/footer.tsx +138 -0
  642. package/src/ui/widgets/gradient-spinner.tsx +156 -0
  643. package/src/ui/widgets/handoff-screen-layout.tsx +70 -0
  644. package/src/ui/widgets/index.ts +5 -0
  645. package/src/ui/widgets/layout-w-header.tsx +89 -0
  646. package/src/ui/widgets/modal-dismiss-button.tsx +44 -0
  647. package/src/ui/widgets/stepper.tsx +126 -0
  648. package/src/version.ts +7 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,66 @@
1
+ # @spare-technologies/spare-link
2
+
3
+ ## 0.1.0-beta.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#1](https://github.com/spare-technologies/link-rn/pull/1) [`bc3040c`](https://github.com/spare-technologies/link-rn/commit/bc3040c58ab63934d81f1ead0083293f2e0ed164) Thanks [@bdspare](https://github.com/bdspare)! - Initial public beta of `@spare-technologies/spare-link` — the React Native SDK for Spare Link open-banking payments (port of the Flutter `spare_link` SDK, with byte-for-byte parity on retry/timeout/state-machine semantics).
8
+
9
+ - Instance-based API: construct one `SpareLink`, mount one `<SpareLinkHost>`, and call `spareLink.start({ linkToken })` — `session.result` resolves to a discriminated `PaymentResult` (`success | cancelled | failed | abandoned`).
10
+ - 9-phase `PaymentFlowController` with a 5-minute awaiting-callback timeout, single/multi-payment (mandate) and international consent UIs, and Confirmation-of-Payee gating.
11
+ - Cold-start recovery via `spareLink.resumeIfNeeded()` returning a typed `RecoveryResult` (`recovered | awaitingUser | none`), backed by `SecureStorePendingSessionStore` (capped at 3 attempts via `kMaxRecoveryAttempts`).
12
+ - `LinkApiClient` with full header parity (`x-link-token`, `X-Tenant`, stable `Idempotency-Key`), retry on 408/502/503, and a 15s default timeout.
13
+ - Deep-link wiring via `useSpareLinkDeepLinks(spareLink)` and `spareLink.handleRedirect(uri)`.
14
+ - Expo config plugin (`@spare-technologies/spare-link/expo-plugin`) shipping iOS + Android permission and deep-link setup.
15
+ - Ships compiled CommonJS + ESM + TypeScript declarations, with `src` retained for Metro consumers.
16
+ - Companion `@spare-technologies/link-test-harness` MSW mock Link server for TDD.
17
+
18
+ ## Unreleased
19
+
20
+ ### Changed
21
+
22
+ - Package name finalized as `@spare-technologies/spare-link`, aligned with the Flutter `spare_link` package. Earlier pre-release development used a different scope and a `link-rn` suffix; nothing was published under those names, so no consumer action is required.
23
+
24
+ ### Fixed
25
+
26
+ - Payment flow recovery now buffers bank-return URIs on cold start, clears pending sessions on completion, and polls `/link/status` every 10s while awaiting the bank (production + sandbox).
27
+ - Sandbox auto-success on status poll only applies after `callback_received` (bank returned), not while still `redirected` — fixes false success on app restart before bank authorization.
28
+ - Failed-screen copy is sanitized via `userFriendlyMessageFor` — raw backend messages are no longer shown.
29
+ - Cancel during bank processing now shows a confirmation dialog (Flutter parity).
30
+
31
+ ### Added
32
+
33
+ - Instance-based `SpareLink` + `SpareLinkHost` API (Flutter-aligned: one instance, one host), replacing the earlier static `SpareLink.start`/`SpareLinkProvider` shape.
34
+ - `spareLink.resumeIfNeeded()` returning typed `RecoveryResult` (`recovered` | `awaitingUser` | `none`).
35
+ - `merchantRef` on `PaymentSuccess` when present in the bank callback URI.
36
+ - `abandoned` lifecycle event when the modal dismiss control is used mid-flow.
37
+ - Corrected CTA copy: `Proceed using Altareq` / `Pay using Altareq` (was `AlTareq` on some screens).
38
+ - Accordion section headers, chevron color, and dividers now match Flutter consent UI.
39
+ - Payment setup card border radius aligned with Flutter (12px).
40
+
41
+ ### Added
42
+
43
+ - MetroSans font assets loaded automatically by `SpareLinkHost`.
44
+ - `showDismissButton` prop on `SpareLinkHost` (default `true`; merchant demo sets `false` for Flutter parity).
45
+ - Multi-payment (mandate) consent UI for all six schedule types, porting Flutter `spare_link` parity.
46
+ - International payment consent UI with read-only charge bearer display.
47
+ - `MandateSetupSuccessScreen` recap before the success callback for mandate flows.
48
+ - `summaryFromState()` returning discriminated `ConsentSummaryData` (`singlePayment` | `international` | `multiPayment`).
49
+ - CoP skipped for international payments.
50
+ - Test harness scenarios `multipaymentFixedOnDemand`, `multipaymentFixedDefinedSchedule`, and `internationalPayment`.
51
+
52
+ ## 0.1.0-beta.1
53
+
54
+ ### Initial public beta
55
+
56
+ - `SpareLink.start({ config, callbacks? })` — launches the native Link payment Modal and resolves with a `PaymentResult`.
57
+ - `SpareLink.handleRedirect(uri)` — forwards bank-return URIs to the active flow.
58
+ - `SpareLink.resumeIfNeeded({ config, callbacks? })` — recovers in-flight sessions on cold-start; auto-fails after `kMaxRecoveryAttempts` (3).
59
+ - `SpareLink.delegate` swap point for tests.
60
+ - `SpareLinkProvider` host component mounting the SDK Modal + delegating `start/handleRedirect/resumeIfNeeded`.
61
+ - `useSpareLinkDeepLinks()` hook wiring `Linking` to `SpareLink.handleRedirect`.
62
+ - `SecureStorePendingSessionStore` backed by `expo-secure-store`.
63
+ - Expo config plugin (`@spare-technologies/spare-link/expo-plugin`) injecting iOS location permission + URL scheme + Android permissions + intent-filters.
64
+ - 9-phase `PaymentFlowController` with 5-minute awaiting-callback timeout.
65
+ - `LinkApiClient` with header parity, retry/timeout, and stable Idempotency-Key for POST `/link/consent`.
66
+ - 34 jest tests + 25 harness tests at green.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Spare Financial
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,173 @@
1
+ # @spare-technologies/spare-link
2
+
3
+ React Native SDK for [Spare Link](https://tryspare.com) — drop-in open-banking payments via a native checkout sheet.
4
+
5
+ ```sh
6
+ bun add @spare-technologies/spare-link
7
+ # or
8
+ npm i @spare-technologies/spare-link
9
+ ```
10
+
11
+ ## Quickstart
12
+
13
+ The SDK is instance-based (mirrors the Flutter `spare_link` API): create one `SpareLink`
14
+ instance, mount one `SpareLinkHost` near your app root, and pass that instance to every
15
+ screen that starts a payment.
16
+
17
+ ```tsx
18
+ import { SpareLink, SpareLinkHost, useSpareLinkDeepLinks } from '@spare-technologies/spare-link';
19
+ import { useMemo } from 'react';
20
+
21
+ function App() {
22
+ const spareLink = useMemo(
23
+ () => new SpareLink({ environment: 'sandbox', tenant: 'uae' }),
24
+ [],
25
+ );
26
+ useSpareLinkDeepLinks(spareLink);
27
+
28
+ return (
29
+ <SpareLinkHost spareLink={spareLink}>
30
+ <YourApp spareLink={spareLink} />
31
+ </SpareLinkHost>
32
+ );
33
+ }
34
+
35
+ async function pay(spareLink: SpareLink, linkToken: string) {
36
+ const unsub = spareLink.events.subscribe((event) => console.log('event', event.type));
37
+ const session = await spareLink.start({ linkToken });
38
+ const result = await session.result;
39
+ unsub();
40
+ if (result.status === 'success') {
41
+ // exchange `result.exchangeCode` on your backend → /link/exchange
42
+ }
43
+ }
44
+ ```
45
+
46
+ ## Expo plugin
47
+
48
+ Add to `app.config.ts`:
49
+
50
+ ```ts
51
+ plugins: [
52
+ [
53
+ '@spare-technologies/spare-link/expo-plugin',
54
+ {
55
+ locationUsageDescription: 'We use your location to verify the payment.',
56
+ merchantScheme: 'sparemerchantrn',
57
+ merchantHost: 'callback',
58
+ },
59
+ ],
60
+ ]
61
+ ```
62
+
63
+ The plugin injects:
64
+
65
+ - **iOS**: `NSLocationWhenInUseUsageDescription` + `CFBundleURLSchemes` entry for the merchant scheme.
66
+ - **Android**: `ACCESS_FINE_LOCATION` permission + intent-filter for `sparemerchantrn://callback` (and an optional `autoVerify=true` App Link for the Spare universal-link host).
67
+
68
+ ## Deep-link handling
69
+
70
+ `SpareLinkHost` forwards bank-return URIs to the SDK via `spareLink.handleRedirect(url)`. The `useSpareLinkDeepLinks(spareLink)` hook wires `Linking.addEventListener('url', …)` + `Linking.getInitialURL()` for you.
71
+
72
+ ## Cold-start recovery
73
+
74
+ Construct the instance with a `pendingSessionStore` and call `spareLink.resumeIfNeeded()` on `AppState === 'active'`:
75
+
76
+ ```tsx
77
+ import { SecureStorePendingSessionStore, SpareLink, SpareLinkHost } from '@spare-technologies/spare-link';
78
+
79
+ const store = new SecureStorePendingSessionStore();
80
+ const spareLink = new SpareLink({ environment: 'sandbox', tenant: 'uae', pendingSessionStore: store });
81
+
82
+ <SpareLinkHost spareLink={spareLink}>
83
+ …
84
+ </SpareLinkHost>
85
+ ```
86
+
87
+ ```ts
88
+ import { AppState } from 'react-native';
89
+
90
+ AppState.addEventListener('change', (state) => {
91
+ if (state !== 'active') return;
92
+ void spareLink.resumeIfNeeded().then((recovery) => {
93
+ if (recovery.kind === 'recovered') {
94
+ // recovery.result is the terminal PaymentResult
95
+ }
96
+ // kind === 'awaitingUser' means the SDK opened its own recovery UI —
97
+ // the terminal outcome arrives later via `spareLink.events`.
98
+ });
99
+ });
100
+ ```
101
+
102
+ `spareLink.resumeIfNeeded()` reads the persisted record, polls `GET /link/status`, and resolves a `RecoveryResult`:
103
+
104
+ - `{ kind: 'recovered', result }` — the session reached a terminal state; `result` is the `PaymentResult`.
105
+ - `{ 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.
106
+ - `{ kind: 'none', reason }` — nothing to recover (`noPendingSession` | `flowAlreadyActive` | `persistenceUnavailable`).
107
+
108
+ After `kMaxRecoveryAttempts` (3) non-terminal attempts the SDK resolves `PaymentFailed('recovery_exhausted')` and clears the record.
109
+
110
+ ## Testing with the harness
111
+
112
+ Add `@spare-technologies/link-test-harness` as a dev dep — it ships a stateful MSW mock Link API with tofa-accurate `{ data }` envelopes:
113
+
114
+ ```ts
115
+ import { setupMockLinkApi } from '@spare-technologies/link-test-harness';
116
+
117
+ const server = setupMockLinkApi({ scenario: 'happyPath' });
118
+ beforeAll(() => server.start());
119
+ afterAll(() => server.stop());
120
+ afterEach(() => server.reset());
121
+ ```
122
+
123
+ Available scenarios: `happyPath`, `sessionAlreadyInitialized`, `networkTimeout`, `consentRetry`, `sessionTimeout`, `recoveryViaStatus`, `appReturn`, `terminalCompleted | Failed | Cancelled | Expired`, `tenantMismatch`, `providerUnavailable`, `multipaymentFixedOnDemand`, `multipaymentFixedDefinedSchedule`, `internationalPayment`.
124
+
125
+ For tests that don't want to mount `SpareLinkHost`, drive the instance's internal host delegate directly (see `SpareLink._attachHost` usage in the SDK's own `spare-link-instance.test.ts` for the pattern), or stub the app-level function that wraps `spareLink.start(...)` in your own integration layer.
126
+
127
+ ## API reference
128
+
129
+ ### `new SpareLink(options)`
130
+
131
+ | Field | Type | Notes |
132
+ | --- | --- | --- |
133
+ | `environment` | `'sandbox' \| 'production'` | Default base URL is derived from this. |
134
+ | `tenant` | `'ksa' \| 'uae' \| 'bah'` | Sent as the `X-Tenant` header. |
135
+ | `baseUrl` | `string?` | Override the base URL (dev only). |
136
+ | `fetch` | `typeof fetch?` | Inject a custom fetch for cert pinning. |
137
+ | `requestTimeoutMs` | `number?` | Default `15_000`. |
138
+ | `pendingSessionStore` | `PendingSessionStore?` | Enables cold-start recovery, e.g. `SecureStorePendingSessionStore`. |
139
+
140
+ ### `spareLink.start({ linkToken })`
141
+
142
+ 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.
143
+
144
+ ### `PaymentResult` discriminated union
145
+
146
+ ```ts
147
+ type PaymentResult =
148
+ | PaymentSuccess // { status: 'success', linkToken, exchangeCode?, merchantRef?, linkSessionId?, ... }
149
+ | PaymentCancelled // { status: 'cancelled', linkToken, ... }
150
+ | PaymentFailed // { status: 'failed', linkToken, errorCode, ... }
151
+ | PaymentAbandoned // { status: 'abandoned', linkToken, ... }
152
+ ```
153
+
154
+ ### `SpareLinkEvent`
155
+
156
+ Subscribe via `spareLink.events.subscribe((event) => ...)`. `event.type` is one of:
157
+
158
+ ```ts
159
+ type SpareLinkEventType =
160
+ | 'initialized' | 'sessionLoaded' | 'consentStarted'
161
+ | 'redirectToBank' | 'bankCallbackReceived'
162
+ | 'succeeded' | 'failed' | 'cancelled' | 'abandoned';
163
+ ```
164
+
165
+ ## Supported versions
166
+
167
+ - **Expo SDK** ≥ 52 (tested with 52.0.x)
168
+ - **React Native** ≥ 0.76
169
+ - **React** ≥ 18.3
170
+
171
+ ## License
172
+
173
+ MIT — see [LICENSE](../../LICENSE).
Binary file
Binary file
Binary file
@@ -0,0 +1,297 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.LinkApiClient = void 0;
7
+ var _logger = require("../../internal/logger.js");
8
+ var _constants = require("../../public/constants.js");
9
+ var _spareLinkConfig = require("../../public/spare-link-config.js");
10
+ var _version = require("../../version.js");
11
+ var _paymentApiError = require("../errors/payment-api-error.js");
12
+ var _wireMappers = require("../models/wire-mappers.js");
13
+ const RETRYABLE_ERROR_CODES = new Set(['network_timeout', 'consent_creation_failed', 'bank_unavailable', 'network_error']);
14
+ const DEFAULT_USER_AGENT = `@spare-technologies/spare-link/${_version.SDK_VERSION}`;
15
+ const log = (0, _logger.createLogger)('LinkApiClient');
16
+ function isCryptoCapable(g) {
17
+ return typeof g.crypto !== 'undefined' && typeof g.crypto.randomUUID === 'function';
18
+ }
19
+ function isCryptoRandom(g) {
20
+ return typeof g.crypto !== 'undefined' && typeof g.crypto.getRandomValues === 'function';
21
+ }
22
+ function defaultUuid() {
23
+ if (isCryptoCapable(globalThis)) {
24
+ return globalThis.crypto.randomUUID();
25
+ }
26
+ const bytes = new Uint8Array(16);
27
+ if (isCryptoRandom(globalThis)) {
28
+ globalThis.crypto.getRandomValues(bytes);
29
+ } else {
30
+ for (let i = 0; i < 16; i += 1) bytes[i] = Math.floor(Math.random() * 256);
31
+ }
32
+ bytes[6] = (bytes[6] ?? 0) & 0x0f | 0x40;
33
+ bytes[8] = (bytes[8] ?? 0) & 0x3f | 0x80;
34
+ const hex = Array.from(bytes, b => b.toString(16).padStart(2, '0')).join('');
35
+ return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20, 32)}`;
36
+ }
37
+
38
+ /** Full client for all Link-origin endpoints — headers, retry rules, and error mapping. */
39
+ class LinkApiClient {
40
+ aborters = new Set();
41
+ disposed = false;
42
+ constructor(opts) {
43
+ this.baseUrl = opts.baseUrl.endsWith('/') ? opts.baseUrl.slice(0, -1) : opts.baseUrl;
44
+ this.tenantHeader = typeof opts.tenant === 'string' && /^[A-Z]+$/.test(opts.tenant) ? opts.tenant : (0, _spareLinkConfig.tenantCountryCode)(opts.tenant);
45
+ this.requestTimeoutMs = opts.requestTimeoutMs ?? _constants.DEFAULT_REQUEST_TIMEOUT_MS;
46
+ this.fetchImpl = opts.fetch ?? globalThis.fetch.bind(globalThis);
47
+ this.uuid = opts.uuid ?? defaultUuid;
48
+ this.userAgent = opts.userAgent ?? DEFAULT_USER_AGENT;
49
+ }
50
+
51
+ /** Aborts in-flight requests and rejects further work. */
52
+ dispose() {
53
+ this.disposed = true;
54
+ for (const c of this.aborters) c.abort();
55
+ this.aborters.clear();
56
+ }
57
+ headers(linkToken, extra) {
58
+ return {
59
+ 'x-link-token': linkToken,
60
+ 'Content-Type': 'application/json',
61
+ 'X-Tenant': this.tenantHeader,
62
+ 'User-Agent': this.userAgent,
63
+ ...(extra ?? {})
64
+ };
65
+ }
66
+ url(path) {
67
+ return `${this.baseUrl}${path.startsWith('/') ? path : `/${path}`}`;
68
+ }
69
+
70
+ /**
71
+ * Wraps a single attempt with a per-request `AbortController`. Times out after
72
+ * `requestTimeoutMs`. Classifies any thrown non-{@link PaymentApiError} as
73
+ * `network_error` so callers always see a typed error.
74
+ */
75
+ async withTimeout(body) {
76
+ if (this.disposed) {
77
+ throw new _paymentApiError.PaymentApiError('client_disposed', 'API client has been disposed.');
78
+ }
79
+ const controller = new AbortController();
80
+ this.aborters.add(controller);
81
+ const timer = setTimeout(() => controller.abort(), this.requestTimeoutMs);
82
+ try {
83
+ return await body(controller.signal);
84
+ } catch (err) {
85
+ if ((0, _paymentApiError.isPaymentApiError)(err)) throw err;
86
+ const name = err.name;
87
+ if (name === 'AbortError') {
88
+ log.severe(`request timed out after ${this.requestTimeoutMs}ms${this.disposed ? ' (client disposed)' : ''}`);
89
+ throw new _paymentApiError.PaymentApiError(this.disposed ? 'client_disposed' : 'network_timeout', this.disposed ? 'API client was disposed mid-request.' : 'The request timed out. Please check your connection and try again.');
90
+ }
91
+ // Catch-all: DNS, refused, malformed response, JSON parse failure, etc.
92
+ // We surface the message for debugging but a stable code for branching.
93
+ const message = err instanceof Error ? err.message : String(err);
94
+ throw new _paymentApiError.PaymentApiError('network_error', `Network error: ${message}`);
95
+ } finally {
96
+ clearTimeout(timer);
97
+ this.aborters.delete(controller);
98
+ }
99
+ }
100
+
101
+ /** Idempotent retry helper (max 2 attempts, 500ms + 1000ms backoff). */
102
+ async withRetry(body, maxAttempts = 2) {
103
+ let lastError;
104
+ for (let attempt = 1; attempt <= maxAttempts; attempt += 1) {
105
+ try {
106
+ return await this.withTimeout(body);
107
+ } catch (err) {
108
+ if ((0, _paymentApiError.isPaymentApiError)(err) && RETRYABLE_ERROR_CODES.has(err.code) && attempt < maxAttempts) {
109
+ lastError = err;
110
+ await delay(attempt === 1 ? 500 : 1000);
111
+ continue;
112
+ }
113
+ throw err;
114
+ }
115
+ }
116
+ throw lastError ?? new _paymentApiError.PaymentApiError('network_error', 'A network error occurred. Please try again.');
117
+ }
118
+ async parseAndHandle(res, mapper, endpoint) {
119
+ if (!res.ok) {
120
+ await this.throwForError(res);
121
+ }
122
+ let body;
123
+ try {
124
+ body = await res.json();
125
+ } catch (err) {
126
+ const message = err instanceof Error ? err.message : String(err);
127
+ throw new _paymentApiError.PaymentApiError(`${endpoint}_payload_invalid`, `${endpoint} response body is not valid JSON: ${message}`);
128
+ }
129
+ try {
130
+ return mapper((0, _wireMappers.unwrap)(body));
131
+ } catch (err) {
132
+ if ((0, _paymentApiError.isPaymentApiError)(err)) throw err;
133
+ const message = err instanceof Error ? err.message : String(err);
134
+ throw new _paymentApiError.PaymentApiError(`${endpoint}_payload_invalid`, `${endpoint} response payload is invalid: ${message}`);
135
+ }
136
+ }
137
+ async throwForError(res) {
138
+ const text = await res.text().catch(() => '');
139
+ let parsed;
140
+ try {
141
+ parsed = text ? JSON.parse(text) : undefined;
142
+ } catch {
143
+ parsed = undefined;
144
+ }
145
+ const errorCode = parsed?.error_code ?? parsed?.code ?? (typeof parsed?.error === 'string' ? parsed.error : undefined);
146
+ switch (res.status) {
147
+ case 401:
148
+ log.severe('HTTP 401: link token invalid or expired');
149
+ throw new _paymentApiError.PaymentApiError('invalid_token', 'The link token is invalid or has expired.');
150
+ case 410:
151
+ if (errorCode === 'SESSION_CANCELLED') {
152
+ log.severe('HTTP 410: session cancelled');
153
+ throw new _paymentApiError.PaymentApiError('session_cancelled', 'The payment session was cancelled.');
154
+ }
155
+ log.severe('HTTP 410: session expired');
156
+ throw _paymentApiError.PaymentApiError.sessionExpired();
157
+ case 409:
158
+ log.severe('HTTP 409: session already completed');
159
+ throw new _paymentApiError.PaymentApiError('session_already_completed', 'The payment session has already been completed.');
160
+ case 503:
161
+ log.severe('HTTP 503: bank unavailable');
162
+ throw new _paymentApiError.PaymentApiError('bank_unavailable', 'Bank is temporarily unavailable. Please try again.');
163
+ case 502:
164
+ log.severe('HTTP 502: consent creation failed');
165
+ throw new _paymentApiError.PaymentApiError('consent_creation_failed', 'Unable to create payment authorization. Please try again.');
166
+ case 408:
167
+ log.severe('HTTP 408: request timeout');
168
+ throw new _paymentApiError.PaymentApiError('network_timeout', 'The server timed out processing the request. Please try again.');
169
+ case 429:
170
+ log.severe('HTTP 429: rate limit exceeded');
171
+ throw new _paymentApiError.PaymentApiError('rate_limit_exceeded', 'Too many requests. Please wait and try again.');
172
+ default:
173
+ log.severe(`HTTP ${res.status}: unexpected error`);
174
+ throw new _paymentApiError.PaymentApiError('network_error', `Unexpected status ${res.status} from Link API.`);
175
+ }
176
+ }
177
+
178
+ // ---- Endpoints ----------------------------------------------------------
179
+
180
+ /** `GET /link` — one-time session hydration. */
181
+ async getSession(linkToken) {
182
+ log.info('GET /link');
183
+ return this.withRetry(async signal => {
184
+ const res = await this.fetchImpl(this.url('/link'), {
185
+ method: 'GET',
186
+ headers: this.headers(linkToken),
187
+ signal
188
+ });
189
+ return this.parseAndHandle(res, _wireMappers.mapLinkSessionResponse, 'session');
190
+ });
191
+ }
192
+
193
+ /** `GET /link/status` — read-only session status. */
194
+ async getStatus(linkToken) {
195
+ log.info('GET /link/status');
196
+ return this.withRetry(async signal => {
197
+ const res = await this.fetchImpl(this.url('/link/status'), {
198
+ method: 'GET',
199
+ headers: this.headers(linkToken),
200
+ signal
201
+ });
202
+ return this.parseAndHandle(res, _wireMappers.mapLinkStatusResponse, 'status');
203
+ });
204
+ }
205
+
206
+ /** `GET /link/providers` — bank list for the session jurisdiction. */
207
+ async getProviders(linkToken) {
208
+ log.info('GET /link/providers');
209
+ return this.withRetry(async signal => {
210
+ const res = await this.fetchImpl(this.url('/link/providers'), {
211
+ method: 'GET',
212
+ headers: this.headers(linkToken),
213
+ signal
214
+ });
215
+ return this.parseAndHandle(res, _wireMappers.mapProvidersResponse, 'providers');
216
+ });
217
+ }
218
+
219
+ /** `POST /link/telemetry` — device/risk signals (best-effort). */
220
+ async postTelemetry(args) {
221
+ log.info('POST /link/telemetry');
222
+ return this.withRetry(async signal => {
223
+ const res = await this.fetchImpl(this.url('/link/telemetry'), {
224
+ method: 'POST',
225
+ headers: this.headers(args.linkToken),
226
+ body: JSON.stringify(args.payload),
227
+ signal
228
+ });
229
+ return this.parseAndHandle(res, _wireMappers.mapTelemetryResponse, 'telemetry');
230
+ });
231
+ }
232
+
233
+ /** `GET /link/cop` — Confirmation of Payee. Accepts an optional providerId override. */
234
+ async getConfirmPayee(linkToken, providerId) {
235
+ log.info(`GET /link/cop${providerId ? ` (providerId: ${providerId})` : ''}`);
236
+ return this.withRetry(async signal => {
237
+ const path = providerId ? `/link/cop?providerId=${encodeURIComponent(providerId)}` : '/link/cop';
238
+ const res = await this.fetchImpl(this.url(path), {
239
+ method: 'GET',
240
+ headers: this.headers(linkToken),
241
+ signal
242
+ });
243
+ return this.parseAndHandle(res, _wireMappers.mapCopResponse, 'cop');
244
+ });
245
+ }
246
+
247
+ /**
248
+ * `POST /link/consent` — creates a consent and returns the bank redirect URL.
249
+ *
250
+ * NEVER retried — the Idempotency-Key header guarantees safe retries at the
251
+ * caller level if they re-invoke with the SAME key.
252
+ */
253
+ async postConsent(args) {
254
+ const key = args.idempotencyKey ?? this.uuid();
255
+ log.info(`POST /link/consent (bankId: ${args.bankId ?? 'n/a'}, idempotencyKey: ${key})`);
256
+ return this.withTimeout(async signal => {
257
+ const body = args.bankId ? JSON.stringify({
258
+ provider_id: args.bankId
259
+ }) : '{}';
260
+ const res = await this.fetchImpl(this.url('/link/consent'), {
261
+ method: 'POST',
262
+ headers: this.headers(args.linkToken, {
263
+ 'Idempotency-Key': key
264
+ }),
265
+ body,
266
+ signal
267
+ });
268
+ return this.parseAndHandle(res, _wireMappers.mapConsentResponse, 'consent');
269
+ });
270
+ }
271
+
272
+ /** `PATCH /link` — cancel or report an error on the session. */
273
+ async patchToken(args) {
274
+ log.info(`PATCH /link (action: ${args.action}, errorCode: ${args.errorCode ?? 'n/a'})`);
275
+ return this.withRetry(async signal => {
276
+ const body = {
277
+ action: args.action
278
+ };
279
+ if (args.errorCode) body.code = args.errorCode;
280
+ // Tag SDK-originated error reports so the backend can distinguish them
281
+ // from hosted/provider-return reports in its dashboards.
282
+ if (args.action === 'error') body.source = 'sdk';
283
+ const res = await this.fetchImpl(this.url('/link'), {
284
+ method: 'PATCH',
285
+ headers: this.headers(args.linkToken),
286
+ body: JSON.stringify(body),
287
+ signal
288
+ });
289
+ return this.parseAndHandle(res, _wireMappers.mapPatchTokenResponse, 'patch_token');
290
+ });
291
+ }
292
+ }
293
+ exports.LinkApiClient = LinkApiClient;
294
+ function delay(ms) {
295
+ return new Promise(resolve => setTimeout(resolve, ms));
296
+ }
297
+ //# sourceMappingURL=link-api-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_logger","require","_constants","_spareLinkConfig","_version","_paymentApiError","_wireMappers","RETRYABLE_ERROR_CODES","Set","DEFAULT_USER_AGENT","SDK_VERSION","log","createLogger","isCryptoCapable","g","crypto","randomUUID","isCryptoRandom","getRandomValues","defaultUuid","globalThis","bytes","Uint8Array","i","Math","floor","random","hex","Array","from","b","toString","padStart","join","slice","LinkApiClient","aborters","disposed","constructor","opts","baseUrl","endsWith","tenantHeader","tenant","test","tenantCountryCode","requestTimeoutMs","DEFAULT_REQUEST_TIMEOUT_MS","fetchImpl","fetch","bind","uuid","userAgent","dispose","c","abort","clear","headers","linkToken","extra","url","path","startsWith","withTimeout","body","PaymentApiError","controller","AbortController","add","timer","setTimeout","signal","err","isPaymentApiError","name","severe","message","Error","String","clearTimeout","delete","withRetry","maxAttempts","lastError","attempt","has","code","delay","parseAndHandle","res","mapper","endpoint","ok","throwForError","json","unwrap","text","catch","parsed","JSON","parse","undefined","errorCode","error_code","error","status","sessionExpired","getSession","info","method","mapLinkSessionResponse","getStatus","mapLinkStatusResponse","getProviders","mapProvidersResponse","postTelemetry","args","stringify","payload","mapTelemetryResponse","getConfirmPayee","providerId","encodeURIComponent","mapCopResponse","postConsent","key","idempotencyKey","bankId","provider_id","mapConsentResponse","patchToken","action","source","mapPatchTokenResponse","exports","ms","Promise","resolve"],"sourceRoot":"../../../../src","sources":["core/client/link-api-client.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.PaymentApiError = void 0;
7
+ exports.isPaymentApiError = isPaymentApiError;
8
+ /**
9
+ * Errors emitted by the SDK's API client.
10
+ *
11
+ * The `code` field is stable wire-of-record for merchant analytics/logging.
12
+ * The `message` field is intentionally generic and safe to display to end users.
13
+ */
14
+ class PaymentApiError extends Error {
15
+ constructor(code, message) {
16
+ super(message);
17
+ this.name = 'PaymentApiError';
18
+ this.code = code;
19
+ // Preserve the prototype chain across compile targets.
20
+ Object.setPrototypeOf(this, PaymentApiError.prototype);
21
+ }
22
+ toString() {
23
+ return `PaymentApiError(${this.code}): ${this.message}`;
24
+ }
25
+ static sessionExpired() {
26
+ return new PaymentApiError('session_expired', 'The payment session has expired.');
27
+ }
28
+ }
29
+
30
+ /** Type guard so consumers can narrow without instanceof. */
31
+ exports.PaymentApiError = PaymentApiError;
32
+ function isPaymentApiError(err) {
33
+ return err instanceof PaymentApiError || typeof err === 'object' && err !== null && err.name === 'PaymentApiError';
34
+ }
35
+ //# sourceMappingURL=payment-api-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["PaymentApiError","Error","constructor","code","message","name","Object","setPrototypeOf","prototype","toString","sessionExpired","exports","isPaymentApiError","err"],"sourceRoot":"../../../../src","sources":["core/errors/payment-api-error.ts"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,eAAe,SAASC,KAAK,CAAC;EAGzCC,WAAWA,CAACC,IAAY,EAAEC,OAAe,EAAE;IACzC,KAAK,CAACA,OAAO,CAAC;IACd,IAAI,CAACC,IAAI,GAAG,iBAAiB;IAC7B,IAAI,CAACF,IAAI,GAAGA,IAAI;IAChB;IACAG,MAAM,CAACC,cAAc,CAAC,IAAI,EAAEP,eAAe,CAACQ,SAAS,CAAC;EACxD;EAESC,QAAQA,CAAA,EAAW;IAC1B,OAAO,mBAAmB,IAAI,CAACN,IAAI,MAAM,IAAI,CAACC,OAAO,EAAE;EACzD;EAEA,OAAOM,cAAcA,CAAA,EAAoB;IACvC,OAAO,IAAIV,eAAe,CAAC,iBAAiB,EAAE,kCAAkC,CAAC;EACnF;AACF;;AAEA;AAAAW,OAAA,CAAAX,eAAA,GAAAA,eAAA;AACO,SAASY,iBAAiBA,CAACC,GAAY,EAA0B;EACtE,OACEA,GAAG,YAAYb,eAAe,IAC7B,OAAOa,GAAG,KAAK,QAAQ,IACtBA,GAAG,KAAK,IAAI,IACXA,GAAG,CAAuBR,IAAI,KAAK,iBAAkB;AAE5D","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../../src","sources":["core/models/index.ts"],"mappings":"","ignoreList":[]}