@rabbitio/ui-kit 1.0.0-beta.95 → 1.0.0-beta.98

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 (285) hide show
  1. package/coverage/clover.xml +1215 -5323
  2. package/coverage/coverage-final.json +116 -183
  3. package/coverage/index.html +91 -361
  4. package/coverage/{ui-kit → rabbit-ui-kit}/index.html +3 -3
  5. package/coverage/{ui-kit → rabbit-ui-kit}/index.js.html +3 -3
  6. package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/adapters/analyticsAdapters/googleAnalyticsAdapter.js.html +9 -6
  7. package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/adapters/analyticsAdapters/index.html +9 -9
  8. package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/adapters/analyticsAdapters/metrikaAdapter.js.html +9 -6
  9. package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/adapters/analyticsAdapters/mixpanelAdapter.js.html +3 -3
  10. package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/adapters/axiosAdapter.js.html +3 -3
  11. package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/adapters/index.html +3 -3
  12. package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/adapters/qrUtils.js.html +3 -3
  13. package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/external-apis/apiGroups.js.html +6 -6
  14. package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/external-apis/emailAPI.js.html +3 -3
  15. package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/external-apis/index.html +7 -7
  16. package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/external-apis/ipAddressProviders.js.html +3 -3
  17. package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/globalConstants.jsx.html +3 -3
  18. package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/index.html +3 -3
  19. package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/models/blockchain.js.html +3 -3
  20. package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/models/coin.js.html +3 -3
  21. package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/models/index.html +3 -3
  22. package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/models/protocol.js.html +3 -3
  23. package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/services/fiatCurrenciesService.js.html +3 -3
  24. package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/services/index.html +3 -3
  25. package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/utils/amountUtils.js.html +3 -3
  26. package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/utils/cache.js.html +8 -8
  27. package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/utils/errorUtils.js.html +3 -3
  28. package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/utils/index.html +17 -17
  29. package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/utils/logging/index.html +3 -3
  30. package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/utils/logging/logger.js.html +6 -6
  31. package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/utils/logging/logsStorage.js.html +5 -5
  32. package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/utils/postponeExecution.js.html +3 -3
  33. package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/utils/rabbitTicker.js.html +3 -3
  34. package/coverage/{ui-kit → rabbit-ui-kit}/src/common-apis/utils/safeStringify.js.html +40 -40
  35. package/coverage/{ui-kit → rabbit-ui-kit}/src/index.html +3 -3
  36. package/coverage/{ui-kit → rabbit-ui-kit}/src/index.js.html +3 -3
  37. package/coverage/{ui-kit → rabbit-ui-kit}/src/robust-api-caller/cacheAndConcurrentRequestsResolver.js.html +3 -3
  38. package/coverage/{ui-kit → rabbit-ui-kit}/src/robust-api-caller/cachedRobustExternalApiCallerService.js.html +3 -3
  39. package/coverage/{ui-kit → rabbit-ui-kit}/src/robust-api-caller/cancelProcessing.js.html +3 -3
  40. package/coverage/{ui-kit → rabbit-ui-kit}/src/robust-api-caller/concurrentCalculationsMetadataHolder.js.html +3 -3
  41. package/coverage/{ui-kit → rabbit-ui-kit}/src/robust-api-caller/externalApiProvider.js.html +3 -3
  42. package/coverage/{ui-kit → rabbit-ui-kit}/src/robust-api-caller/externalServicesStatsCollector.js.html +3 -3
  43. package/coverage/{ui-kit → rabbit-ui-kit}/src/robust-api-caller/index.html +3 -3
  44. package/coverage/{ui-kit → rabbit-ui-kit}/src/robust-api-caller/robustExternalAPICallerService.js.html +3 -3
  45. package/coverage/{ui-kit → rabbit-ui-kit}/src/swaps-lib/external-apis/exolixSwapProvider.js.html +121 -112
  46. package/coverage/{ui-kit → rabbit-ui-kit}/src/swaps-lib/external-apis/index.html +47 -32
  47. package/coverage/{ui-kit → rabbit-ui-kit}/src/swaps-lib/external-apis/letsExchangeSwapProvider.js.html +24 -9
  48. package/coverage/{ui-kit → rabbit-ui-kit}/src/swaps-lib/external-apis/swapProvider.js.html +266 -260
  49. package/coverage/{ui-kit → rabbit-ui-kit}/src/swaps-lib/external-apis/swapspaceSwapProvider.js.html +200 -161
  50. package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/utils.js.html +130 -0
  51. package/coverage/{ui-kit → rabbit-ui-kit}/src/swaps-lib/models/baseSwapCreationInfo.js.html +3 -3
  52. package/coverage/{ui-kit → rabbit-ui-kit}/src/swaps-lib/models/existingSwap.js.html +3 -3
  53. package/coverage/{ui-kit → rabbit-ui-kit}/src/swaps-lib/models/existingSwapWithFiatData.js.html +3 -3
  54. package/coverage/{ui-kit → rabbit-ui-kit}/src/swaps-lib/models/index.html +3 -3
  55. package/coverage/{ui-kit → rabbit-ui-kit}/src/swaps-lib/models/partner.js.html +3 -3
  56. package/coverage/{ui-kit → rabbit-ui-kit}/src/swaps-lib/models/swapProviderCoinInfo.js.html +3 -3
  57. package/coverage/{ui-kit → rabbit-ui-kit}/src/swaps-lib/services/index.html +7 -7
  58. package/coverage/{ui-kit → rabbit-ui-kit}/src/swaps-lib/services/publicSwapService.js.html +24 -9
  59. package/coverage/{ui-kit → rabbit-ui-kit}/src/swaps-lib/utils/index.html +3 -3
  60. package/coverage/{ui-kit → rabbit-ui-kit}/src/swaps-lib/utils/swapUtils.js.html +3 -3
  61. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/assets/wrappedImages/arrowIcon.jsx.html +3 -3
  62. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/assets/wrappedImages/arrowTosca.jsx.html +3 -3
  63. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/assets/wrappedImages/arrowWhite.jsx.html +3 -3
  64. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/assets/wrappedImages/darkRectangle.jsx.html +3 -3
  65. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/assets/wrappedImages/determinedError.jsx.html +3 -3
  66. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/assets/wrappedImages/failedValidationIcon.jsx.html +3 -3
  67. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/assets/wrappedImages/index.html +3 -3
  68. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/assets/wrappedImages/infoIcon.jsx.html +3 -3
  69. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/assets/wrappedImages/messageIcon.jsx.html +3 -3
  70. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/assets/wrappedImages/noticeQuestionIcon.jsx.html +3 -3
  71. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/assets/wrappedImages/successfulValidationIcon.jsx.html +3 -3
  72. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/assets/wrappedImages/supportDialogImage.jsx.html +3 -3
  73. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/assets/wrappedImages/walletIcon.jsx.html +3 -3
  74. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/AssetIcon/AssetIcon.jsx.html +3 -3
  75. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/AssetIcon/index.html +3 -3
  76. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/AssetSelection/AssetSelection.jsx.html +3 -3
  77. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/AssetSelection/index.html +3 -3
  78. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/BackgroundTitle/BackgroundTitle.jsx.html +3 -3
  79. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/BackgroundTitle/index.html +3 -3
  80. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/InformationMessage/InformationMessage.jsx.html +3 -3
  81. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/InformationMessage/index.html +3 -3
  82. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/Input/Input.jsx.html +3 -3
  83. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/Input/index.html +3 -3
  84. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/LoadingDots/LoadingDots.jsx.html +3 -3
  85. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/LoadingDots/index.html +3 -3
  86. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/NoticeIcon/NoticeIcon.jsx.html +3 -3
  87. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/NoticeIcon/index.html +3 -3
  88. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/QrCode/QrCode.jsx.html +3 -3
  89. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/QrCode/index.html +3 -3
  90. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/RateSelector/RateSelector.jsx.html +3 -3
  91. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/RateSelector/index.html +3 -3
  92. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/SupportChat/SupportChat.jsx.html +3 -3
  93. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/SupportChat/index.html +3 -3
  94. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/Textarea/Textarea.jsx.html +3 -3
  95. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/Textarea/index.html +3 -3
  96. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/TitleBox/TitleBox.jsx.html +3 -3
  97. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/TitleBox/index.html +3 -3
  98. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/Tooltip/Tooltip.jsx.html +3 -3
  99. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/Tooltip/index.html +3 -3
  100. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/TwoLinesOfText/LinesOfText.jsx.html +3 -3
  101. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/TwoLinesOfText/index.html +3 -3
  102. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/Validation/Validation.jsx.html +3 -3
  103. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/Validation/index.html +3 -3
  104. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/buttons/Button/Button.jsx.html +3 -3
  105. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/buttons/Button/index.html +3 -3
  106. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/buttons/Close/Close.jsx.html +3 -3
  107. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/buttons/Close/index.html +3 -3
  108. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/buttons/LinkButton/LinkButton.jsx.html +3 -3
  109. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/buttons/LinkButton/index.html +3 -3
  110. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/buttons/RadioButtonWithText/RadioButtonWithText.jsx.html +3 -3
  111. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/atoms/buttons/RadioButtonWithText/index.html +3 -3
  112. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/molecules/AmountInput/AmountInput.jsx.html +3 -3
  113. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/molecules/AmountInput/index.html +3 -3
  114. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/molecules/CoinPicker/CoinPicker.jsx.html +3 -3
  115. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/molecules/CoinPicker/index.html +3 -3
  116. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/molecules/ColoredNotice/ColoredNotice.jsx.html +3 -3
  117. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/molecules/ColoredNotice/index.html +3 -3
  118. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/molecules/LineWithIconLink/LineWithIconLink.jsx.html +3 -3
  119. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/molecules/LineWithIconLink/index.html +3 -3
  120. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/molecules/LogoCarousel/LogoCarousel.jsx.html +3 -3
  121. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/molecules/LogoCarousel/index.html +3 -3
  122. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/molecules/SearchableCoinsList/SearchableCoinsList.jsx.html +3 -3
  123. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/molecules/SearchableCoinsList/index.html +3 -3
  124. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/molecules/TitledLineWithIconLink/TitledLineWithIconLink.jsx.html +3 -3
  125. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/molecules/TitledLineWithIconLink/index.html +3 -3
  126. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/organisms/CoinPickerDialogStep/CoinPickerDialogStep.jsx.html +3 -3
  127. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/organisms/CoinPickerDialogStep/index.html +3 -3
  128. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/organisms/Dialog/Dialog.jsx.html +3 -3
  129. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/organisms/Dialog/DialogButtons/DialogButtons.jsx.html +3 -3
  130. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/organisms/Dialog/DialogButtons/index.html +3 -3
  131. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/organisms/Dialog/DialogStep/DialogStep.jsx.html +3 -3
  132. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/organisms/Dialog/DialogStep/index.html +3 -3
  133. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/organisms/Dialog/index.html +3 -3
  134. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/organisms/SwapForm/SwapForm.jsx.html +3 -3
  135. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/organisms/SwapForm/index.html +3 -3
  136. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/organisms/WaitlistSubscription/WaitlistSubscription.jsx.html +3 -3
  137. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/organisms/WaitlistSubscription/index.html +3 -3
  138. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/templates/DeterminedErrorDialogStep/DeterminedErrorDialogStep.jsx.html +3 -3
  139. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/components/templates/DeterminedErrorDialogStep/index.html +3 -3
  140. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/hooks/index.html +7 -7
  141. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/hooks/useCallHandlingErrors.js.html +36 -21
  142. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/hooks/useIsHydrated.js.html +3 -3
  143. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/hooks/useReferredState.js.html +3 -3
  144. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/utils/index.html +3 -3
  145. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/utils/inputValueProviders.js.html +3 -3
  146. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/utils/textUtils.js.html +3 -3
  147. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/utils/uiUtils.js.html +3 -3
  148. package/coverage/{ui-kit → rabbit-ui-kit}/src/ui-kit/utils/urlQueryUtils.js.html +3 -3
  149. package/coverage/{ui-kit → rabbit-ui-kit}/stories/atoms/BackgroundTitle.stories.jsx.html +3 -3
  150. package/coverage/{ui-kit → rabbit-ui-kit}/stories/atoms/LinesOfText.stories.jsx.html +3 -3
  151. package/coverage/{ui-kit → rabbit-ui-kit}/stories/atoms/LoadingDots.stories.jsx.html +3 -3
  152. package/coverage/{ui-kit → rabbit-ui-kit}/stories/atoms/QrCode.stories.jsx.html +3 -3
  153. package/coverage/{ui-kit → rabbit-ui-kit}/stories/atoms/RateSelector.stories.jsx.html +3 -3
  154. package/coverage/{ui-kit → rabbit-ui-kit}/stories/atoms/Validation.stories.jsx.html +3 -3
  155. package/coverage/{ui-kit → rabbit-ui-kit}/stories/atoms/buttons/Button.stories.jsx.html +3 -3
  156. package/coverage/{ui-kit → rabbit-ui-kit}/stories/atoms/buttons/Close.stories.jsx.html +3 -3
  157. package/coverage/{ui-kit → rabbit-ui-kit}/stories/atoms/buttons/LinkButton.stories.jsx.html +3 -3
  158. package/coverage/{ui-kit → rabbit-ui-kit}/stories/atoms/buttons/index.html +3 -3
  159. package/coverage/{ui-kit → rabbit-ui-kit}/stories/atoms/index.html +3 -3
  160. package/coverage/{ui-kit → rabbit-ui-kit}/stories/molecules/AmountInput.stories.jsx.html +3 -3
  161. package/coverage/{ui-kit → rabbit-ui-kit}/stories/molecules/CoinPicker.stories.jsx.html +3 -3
  162. package/coverage/{ui-kit → rabbit-ui-kit}/stories/molecules/ColoredNotice.stories.jsx.html +3 -3
  163. package/coverage/{ui-kit → rabbit-ui-kit}/stories/molecules/LineWithIconLink.stories.jsx.html +3 -3
  164. package/coverage/{ui-kit → rabbit-ui-kit}/stories/molecules/LogoCarousel.stories.jsx.html +3 -3
  165. package/coverage/{ui-kit → rabbit-ui-kit}/stories/molecules/TitledLineWithIconLink.stories.jsx.html +3 -3
  166. package/coverage/{ui-kit → rabbit-ui-kit}/stories/molecules/index.html +3 -3
  167. package/coverage/{ui-kit → rabbit-ui-kit}/stories/organisms/Dialog/Dialog.stories.jsx.html +3 -3
  168. package/coverage/{ui-kit → rabbit-ui-kit}/stories/organisms/Dialog/DialogButtons/DialogButtons.stories.jsx.html +3 -3
  169. package/coverage/{ui-kit → rabbit-ui-kit}/stories/organisms/Dialog/DialogButtons/index.html +3 -3
  170. package/coverage/{ui-kit → rabbit-ui-kit}/stories/organisms/Dialog/DialogStep/DialogStep.stories.jsx.html +3 -3
  171. package/coverage/{ui-kit → rabbit-ui-kit}/stories/organisms/Dialog/DialogStep/index.html +3 -3
  172. package/coverage/{ui-kit → rabbit-ui-kit}/stories/organisms/Dialog/index.html +3 -3
  173. package/coverage/{ui-kit → rabbit-ui-kit}/stories/organisms/WaitlistSubscription.stories.jsx.html +3 -3
  174. package/coverage/{ui-kit → rabbit-ui-kit}/stories/organisms/index.html +3 -3
  175. package/coverage/{ui-kit → rabbit-ui-kit}/stories/stubs/coins.jsx.html +3 -3
  176. package/coverage/{ui-kit → rabbit-ui-kit}/stories/stubs/exampleContent.jsx.html +3 -3
  177. package/coverage/{ui-kit → rabbit-ui-kit}/stories/stubs/index.html +3 -3
  178. package/coverage/{ui-kit → rabbit-ui-kit}/stories/templates/DeterminedErrorDialogStep.stories.jsx.html +3 -3
  179. package/coverage/{ui-kit → rabbit-ui-kit}/stories/templates/index.html +3 -3
  180. package/dist/index.cjs +88 -57
  181. package/dist/index.cjs.map +1 -1
  182. package/dist/index.modern.js +70 -44
  183. package/dist/index.modern.js.map +1 -1
  184. package/dist/index.module.js +88 -57
  185. package/dist/index.module.js.map +1 -1
  186. package/dist/index.umd.js +88 -57
  187. package/dist/index.umd.js.map +1 -1
  188. package/package.json +1 -1
  189. package/src/common-apis/adapters/analyticsAdapters/googleAnalyticsAdapter.js +1 -0
  190. package/src/common-apis/adapters/analyticsAdapters/metrikaAdapter.js +1 -0
  191. package/src/common-apis/external-apis/apiGroups.js +1 -1
  192. package/src/swaps-lib/external-apis/exolixSwapProvider.js +18 -15
  193. package/src/swaps-lib/external-apis/letsExchangeSwapProvider.js +8 -3
  194. package/src/swaps-lib/external-apis/swapProvider.js +3 -1
  195. package/src/swaps-lib/external-apis/swapspaceSwapProvider.js +22 -9
  196. package/src/swaps-lib/external-apis/utils.js +15 -0
  197. package/src/swaps-lib/services/publicSwapService.js +8 -3
  198. package/src/swaps-lib/test/external-apis/swapspaceSwapProvider/getSwapInfo.test.js +36 -0
  199. package/src/ui-kit/hooks/useCallHandlingErrors.js +20 -15
  200. package/coverage/ui-kit/storybook-static/230.7eace282.iframe.bundle.js.html +0 -85
  201. package/coverage/ui-kit/storybook-static/242.dda46cfa.iframe.bundle.js.html +0 -85
  202. package/coverage/ui-kit/storybook-static/312.6f62bbd9.iframe.bundle.js.html +0 -85
  203. package/coverage/ui-kit/storybook-static/341.57a15f57.iframe.bundle.js.html +0 -85
  204. package/coverage/ui-kit/storybook-static/374.99dab897.iframe.bundle.js.html +0 -85
  205. package/coverage/ui-kit/storybook-static/43.c12e28b8.iframe.bundle.js.html +0 -85
  206. package/coverage/ui-kit/storybook-static/450.d467c07c.iframe.bundle.js.html +0 -85
  207. package/coverage/ui-kit/storybook-static/506.07d46882.iframe.bundle.js.html +0 -85
  208. package/coverage/ui-kit/storybook-static/547.cc28f1fd.iframe.bundle.js.html +0 -85
  209. package/coverage/ui-kit/storybook-static/586.e7130528.iframe.bundle.js.html +0 -85
  210. package/coverage/ui-kit/storybook-static/595.2e40d981.iframe.bundle.js.html +0 -85
  211. package/coverage/ui-kit/storybook-static/607.3ea32459.iframe.bundle.js.html +0 -85
  212. package/coverage/ui-kit/storybook-static/609.097df435.iframe.bundle.js.html +0 -85
  213. package/coverage/ui-kit/storybook-static/797.c87cdf19.iframe.bundle.js.html +0 -85
  214. package/coverage/ui-kit/storybook-static/889.4a86fe2b.iframe.bundle.js.html +0 -85
  215. package/coverage/ui-kit/storybook-static/976.b5f1a5d4.iframe.bundle.js.html +0 -85
  216. package/coverage/ui-kit/storybook-static/996.07a638d5.iframe.bundle.js.html +0 -85
  217. package/coverage/ui-kit/storybook-static/AmountUtils-stories.e2f66b30.iframe.bundle.js.html +0 -85
  218. package/coverage/ui-kit/storybook-static/atoms-BackgroundTitle-stories.1a5386a1.iframe.bundle.js.html +0 -85
  219. package/coverage/ui-kit/storybook-static/atoms-LinesOfText-stories.b7c8f08a.iframe.bundle.js.html +0 -85
  220. package/coverage/ui-kit/storybook-static/atoms-LoadingDots-stories.5180c2f1.iframe.bundle.js.html +0 -85
  221. package/coverage/ui-kit/storybook-static/atoms-QrCode-stories.1581ad1e.iframe.bundle.js.html +0 -85
  222. package/coverage/ui-kit/storybook-static/atoms-RateSelector-stories.19c65c98.iframe.bundle.js.html +0 -85
  223. package/coverage/ui-kit/storybook-static/atoms-Validation-stories.d561b311.iframe.bundle.js.html +0 -85
  224. package/coverage/ui-kit/storybook-static/atoms-buttons-Button-stories.e8e6b930.iframe.bundle.js.html +0 -85
  225. package/coverage/ui-kit/storybook-static/atoms-buttons-Close-stories.0a902a7c.iframe.bundle.js.html +0 -85
  226. package/coverage/ui-kit/storybook-static/atoms-buttons-LinkButton-stories.10813be5.iframe.bundle.js.html +0 -85
  227. package/coverage/ui-kit/storybook-static/index.html +0 -686
  228. package/coverage/ui-kit/storybook-static/main.da938fde.iframe.bundle.js.html +0 -85
  229. package/coverage/ui-kit/storybook-static/molecules-AmountInput-stories.a703ba8d.iframe.bundle.js.html +0 -85
  230. package/coverage/ui-kit/storybook-static/molecules-ColoredNotice-stories.7a5d624e.iframe.bundle.js.html +0 -85
  231. package/coverage/ui-kit/storybook-static/molecules-LineWithIconLink-stories.b7f70ee2.iframe.bundle.js.html +0 -85
  232. package/coverage/ui-kit/storybook-static/molecules-LogoCarousel-stories.2ce1402f.iframe.bundle.js.html +0 -85
  233. package/coverage/ui-kit/storybook-static/molecules-TitledLineWithIconLink-stories.1383fe3f.iframe.bundle.js.html +0 -85
  234. package/coverage/ui-kit/storybook-static/organisms-Dialog-Dialog-stories.4e6da717.iframe.bundle.js.html +0 -85
  235. package/coverage/ui-kit/storybook-static/organisms-Dialog-DialogButtons-DialogButtons-stories.1d1f9803.iframe.bundle.js.html +0 -85
  236. package/coverage/ui-kit/storybook-static/organisms-Dialog-DialogStep-DialogStep-stories.74896048.iframe.bundle.js.html +0 -85
  237. package/coverage/ui-kit/storybook-static/organisms-WaitlistSubscription-stories.a7c49a29.iframe.bundle.js.html +0 -85
  238. package/coverage/ui-kit/storybook-static/rabbitio/ui-kit/dist/global.css.html +0 -118
  239. package/coverage/ui-kit/storybook-static/rabbitio/ui-kit/dist/index.html +0 -116
  240. package/coverage/ui-kit/storybook-static/rabbitio/ui-kit/node_modules/@storybook/addon-backgrounds/dist/index.html +0 -116
  241. package/coverage/ui-kit/storybook-static/rabbitio/ui-kit/node_modules/@storybook/addon-backgrounds/dist/preview.js.html +0 -118
  242. package/coverage/ui-kit/storybook-static/rabbitio/ui-kit/node_modules/@storybook/components/dist/formatter-SWP5E3XI.mjs.html +0 -118
  243. package/coverage/ui-kit/storybook-static/rabbitio/ui-kit/node_modules/@storybook/components/dist/index.html +0 -116
  244. package/coverage/ui-kit/storybook-static/rabbitio/ui-kit/node_modules/buffer/index.html +0 -116
  245. package/coverage/ui-kit/storybook-static/rabbitio/ui-kit/node_modules/buffer/index.js.html +0 -118
  246. package/coverage/ui-kit/storybook-static/rabbitio/ui-kit/node_modules/markdown-to-jsx/dist/index.html +0 -116
  247. package/coverage/ui-kit/storybook-static/rabbitio/ui-kit/node_modules/markdown-to-jsx/dist/index.modern.js.html +0 -118
  248. package/coverage/ui-kit/storybook-static/runtime~main.795022f7.iframe.bundle.js.html +0 -85
  249. package/coverage/ui-kit/storybook-static/sb-addons/actions-9/index.html +0 -116
  250. package/coverage/ui-kit/storybook-static/sb-addons/actions-9/manager-bundle.js.html +0 -94
  251. package/coverage/ui-kit/storybook-static/sb-addons/essentials-backgrounds-2/index.html +0 -116
  252. package/coverage/ui-kit/storybook-static/sb-addons/essentials-backgrounds-2/manager-bundle.js.html +0 -121
  253. package/coverage/ui-kit/storybook-static/sb-addons/essentials-controls-1/index.html +0 -116
  254. package/coverage/ui-kit/storybook-static/sb-addons/essentials-controls-1/manager-bundle.js.html +0 -274
  255. package/coverage/ui-kit/storybook-static/sb-addons/essentials-measure-4/index.html +0 -116
  256. package/coverage/ui-kit/storybook-static/sb-addons/essentials-measure-4/manager-bundle.js.html +0 -94
  257. package/coverage/ui-kit/storybook-static/sb-addons/essentials-outline-5/index.html +0 -116
  258. package/coverage/ui-kit/storybook-static/sb-addons/essentials-outline-5/manager-bundle.js.html +0 -94
  259. package/coverage/ui-kit/storybook-static/sb-addons/essentials-toolbars-3/index.html +0 -116
  260. package/coverage/ui-kit/storybook-static/sb-addons/essentials-toolbars-3/manager-bundle.js.html +0 -94
  261. package/coverage/ui-kit/storybook-static/sb-addons/interactions-7/index.html +0 -116
  262. package/coverage/ui-kit/storybook-static/sb-addons/interactions-7/manager-bundle.js.html +0 -121
  263. package/coverage/ui-kit/storybook-static/sb-addons/links-0/index.html +0 -116
  264. package/coverage/ui-kit/storybook-static/sb-addons/links-0/manager-bundle.js.html +0 -94
  265. package/coverage/ui-kit/storybook-static/sb-addons/onboarding-6/index.html +0 -116
  266. package/coverage/ui-kit/storybook-static/sb-addons/onboarding-6/manager-bundle.js.html +0 -1588
  267. package/coverage/ui-kit/storybook-static/sb-addons/viewport-8/index.html +0 -116
  268. package/coverage/ui-kit/storybook-static/sb-addons/viewport-8/manager-bundle.js.html +0 -94
  269. package/coverage/ui-kit/storybook-static/sb-manager/WithTooltip-V3YHNWJZ-LVYLGZW2.js.html +0 -88
  270. package/coverage/ui-kit/storybook-static/sb-manager/chunk-2IXBUOFS.js.html +0 -106
  271. package/coverage/ui-kit/storybook-static/sb-manager/chunk-INSKDKQB.js.html +0 -1129
  272. package/coverage/ui-kit/storybook-static/sb-manager/chunk-NGTUFCUO.js.html +0 -112
  273. package/coverage/ui-kit/storybook-static/sb-manager/chunk-UUEAOBSN.js.html +0 -1303
  274. package/coverage/ui-kit/storybook-static/sb-manager/chunk-ZEU7PDD3.js.html +0 -88
  275. package/coverage/ui-kit/storybook-static/sb-manager/formatter-SWP5E3XI-7BGIK6BL.js.html +0 -553
  276. package/coverage/ui-kit/storybook-static/sb-manager/globals-module-info.js.html +0 -88
  277. package/coverage/ui-kit/storybook-static/sb-manager/globals.js.html +0 -88
  278. package/coverage/ui-kit/storybook-static/sb-manager/index.html +0 -281
  279. package/coverage/ui-kit/storybook-static/sb-manager/index.js.html +0 -88
  280. package/coverage/ui-kit/storybook-static/sb-manager/runtime.js.html +0 -88
  281. package/coverage/ui-kit/storybook-static/sb-manager/syntaxhighlighter-V7JZZA35-DXZCI2WR.js.html +0 -88
  282. package/coverage/ui-kit/storybook-static/sb-preview/globals.js.html +0 -88
  283. package/coverage/ui-kit/storybook-static/sb-preview/index.html +0 -131
  284. package/coverage/ui-kit/storybook-static/sb-preview/runtime.js.html +0 -421
  285. package/coverage/ui-kit/storybook-static/templates-DeterminedErrorDialogStep-stories.3cc14214.iframe.bundle.js.html +0 -85
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rabbitio/ui-kit",
3
- "version": "1.0.0-beta.95",
3
+ "version": "1.0.0-beta.98",
4
4
  "description": "Rabbit.io react.js components kit",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -3,6 +3,7 @@ import { safeStringify } from "../../utils/safeStringify.js";
3
3
 
4
4
  export class GoogleAnalyticsAdapter {
5
5
  static sendEvent(eventName, parameters) {
6
+ // eslint-disable-next-line no-console
6
7
  console.log("Sending ga event: ", parameters, ["event", eventName, parameters]);
7
8
  this.doActionOnGTag(["event", eventName, parameters]);
8
9
  }
@@ -11,6 +11,7 @@ export class MetrikaAdapter {
11
11
  static callMetrikaReachGoal(METRIKA_ID, goalName, usdPrice = null) {
12
12
  try {
13
13
  if (window.ym) {
14
+ // eslint-disable-next-line no-console
14
15
  console.log("Sending metrika goal reached: ", goalName, String(usdPrice));
15
16
  window.ym(
16
17
  METRIKA_ID,
@@ -26,7 +26,7 @@ export const ApiGroups = {
26
26
  * Currently we use free version of etherscan provider with 0.2 RPS. But we have API key with 100k requests free
27
27
  * per month. So we can add it if not enough current RPS.
28
28
  */
29
- ETHERSCAN: new ApiGroup("etherscan", 0.17), // Actually 0.2 but fails sometime, so we use smaller
29
+ ETHERSCAN: new ApiGroup("etherscan", 0.2, networkKey => `etherscan-${networkKey}`),
30
30
  ALCHEMY: new ApiGroup("alchemy", 0.3, networkKey => `alchemy-${networkKey}`),
31
31
  BLOCKSTREAM: new ApiGroup("blockstream", 0.2),
32
32
  BLOCKCHAIN_INFO: new ApiGroup("blockchain.info", 1),
@@ -14,6 +14,7 @@ import { SwapProvider } from "./swapProvider";
14
14
  import { ExistingSwap } from "../models/existingSwap";
15
15
  import { Partner } from "../models/partner";
16
16
  import { SwapProviderCoinInfo } from "../models/swapProviderCoinInfo";
17
+ import { createRobustTimeoutSetupForAxios } from "./utils.js";
17
18
 
18
19
  export class ExolixSwapProvider extends SwapProvider {
19
20
  constructor(
@@ -24,18 +25,21 @@ export class ExolixSwapProvider extends SwapProvider {
24
25
  apiKey = ""
25
26
  ) {
26
27
  super("exolix", cache, customCoinBuilder, useRestrictedCoinsSet, false, true);
28
+
29
+ const headers = apiKey ? { Authorization: "Bearer " + apiKey } : {};
30
+
27
31
  this._partners = [];
28
32
  this._URL = apiKey ? "https://exolix.com/api/v2" : `${apiKeysProxyUrl}/${this.id}`;
29
33
  this.COINS_EXPIRATION_TIME_MS = 5 * 60 * 1000;
30
34
  this.coinsLastUpdateTimestamp = null;
31
- this.headers = apiKey ? { Authorization: "Bearer " + apiKey } : {};
35
+ this.headers = headers;
36
+ this.axiosGetPreset = {
37
+ headers: headers,
38
+ validateStatus: responseCode => [200, 201, 404].find(code => code === responseCode),
39
+ ...createRobustTimeoutSetupForAxios()
40
+ };
32
41
  }
33
42
 
34
- axiosGetPreset = (headers = {}) => ({
35
- headers: headers,
36
- validateStatus: responseCode => [200, 201, 404].find(code => code === responseCode),
37
- });
38
-
39
43
  getSwapCreationInfoTtlMs() {
40
44
  return 110000;
41
45
  }
@@ -50,7 +54,7 @@ export class ExolixSwapProvider extends SwapProvider {
50
54
 
51
55
  while (true) {
52
56
  const responseRaw = await axios.get(this._URL + "/currencies", {
53
- ...this.axiosGetPreset(this.headers),
57
+ ...this.axiosGetPreset,
54
58
  params: { withNetworks: true, page: page, size: pageSize },
55
59
  });
56
60
 
@@ -245,7 +249,7 @@ export class ExolixSwapProvider extends SwapProvider {
245
249
  }
246
250
 
247
251
  const response = await axios.get(this._URL + "/rate", {
248
- ...this.axiosGetPreset(this.headers),
252
+ ...this.axiosGetPreset,
249
253
  params: {
250
254
  coinFrom: fromCoinDetails.code,
251
255
  networkFrom: fromCoinDetails.network,
@@ -258,7 +262,10 @@ export class ExolixSwapProvider extends SwapProvider {
258
262
  });
259
263
  Logger.log(`Retrieved ${response?.data}`, loggerSource);
260
264
  if (typeof response?.data !== "object") {
261
- Logger.log(`Swap response didn't include the data object ${safeStringify(e)}`, loggerSource);
265
+ Logger.log(
266
+ `Swap response didn't include the data object ${safeStringify(response?.data)}`,
267
+ loggerSource
268
+ );
262
269
  return { result: false, reason: SwapProvider.NO_SWAPS_REASONS.NOT_SUPPORTED };
263
270
  }
264
271
 
@@ -398,11 +405,7 @@ export class ExolixSwapProvider extends SwapProvider {
398
405
  };
399
406
 
400
407
  Logger.log(`Sending create request: ${safeStringify(requestData)}`, loggerSource);
401
- const response = await axios.post(
402
- this._URL + "/transactions",
403
- requestData,
404
- this.axiosGetPreset(this.headers)
405
- );
408
+ const response = await axios.post(this._URL + "/transactions", requestData, this.axiosGetPreset);
406
409
 
407
410
  const result = response?.data;
408
411
  Logger.log(`Creation result ${safeStringify(result)}`, loggerSource);
@@ -478,7 +481,7 @@ export class ExolixSwapProvider extends SwapProvider {
478
481
  }
479
482
  const getSwap = async swapId => {
480
483
  try {
481
- return await axios.get(this._URL + "/transactions/" + swapId, this.axiosGetPreset(this.headers));
484
+ return await axios.get(this._URL + "/transactions/" + swapId, this.axiosGetPreset);
482
485
  } catch (error) {
483
486
  if (error?.response?.status === 404) return [];
484
487
  throw error;
@@ -12,6 +12,7 @@ import { DEFAULT_CRYPTO_DECIMAL_COUNT, FALLBACK_ASSET_ICON_URL } from "../../com
12
12
  import { SwapProviderCoinInfo } from "../models/swapProviderCoinInfo.js";
13
13
  import { Partner } from "../models/partner.js";
14
14
  import { toRabbitTicker } from "../../common-apis/utils/rabbitTicker.js";
15
+ import { createRobustTimeoutSetupForAxios } from "./utils.js";
15
16
 
16
17
  export class LetsExchangeSwapProvider extends SwapProvider {
17
18
  constructor(
@@ -43,7 +44,10 @@ export class LetsExchangeSwapProvider extends SwapProvider {
43
44
  const loggerSource = "_fetchSupportedCurrenciesIfNeeded";
44
45
  try {
45
46
  if (this._shouldCoinsListBeLoaded()) {
46
- const rawResponse = await axios.get(`${this._URL}/v2/coins`, { headers: this._headers });
47
+ const rawResponse = await axios.get(`${this._URL}/v2/coins`, {
48
+ headers: this._headers,
49
+ ...createRobustTimeoutSetupForAxios(),
50
+ });
47
51
  Logger.log(`Retrieved ${rawResponse?.data?.length}`, loggerSource);
48
52
  let allowedCoins = rawResponse?.data ?? [];
49
53
  Logger.log(`Allowed cnt ${allowedCoins.length}`, loggerSource);
@@ -168,7 +172,7 @@ export class LetsExchangeSwapProvider extends SwapProvider {
168
172
  amount: amountCoins,
169
173
  affiliate_id: LetsExchangeSwapProvider.AFFILIATE_ID,
170
174
  },
171
- { headers: this._headers }
175
+ { headers: this._headers, ...createRobustTimeoutSetupForAxios() }
172
176
  );
173
177
  Logger.log(`Retrieved ${response?.data}`, loggerSource);
174
178
  const data = response.data;
@@ -323,7 +327,7 @@ export class LetsExchangeSwapProvider extends SwapProvider {
323
327
  const response = await axios.post(
324
328
  `${this._URL}/v1/transaction${amountIsToReceive ? "-revert" : `?float=${!fixed}`}`,
325
329
  requestBody,
326
- { headers: this._headers }
330
+ { headers: this._headers, ...createRobustTimeoutSetupForAxios() }
327
331
  );
328
332
  const result = response.data;
329
333
  Logger.log(`Creation result ${safeStringify(result)}`, loggerSource);
@@ -378,6 +382,7 @@ export class LetsExchangeSwapProvider extends SwapProvider {
378
382
  }
379
383
  const response = await axios.get(`${this._URL}/v1/transactions-list?ids[]=${swapIds.join("&ids[]=")}`, {
380
384
  headers: this._headers,
385
+ ...createRobustTimeoutSetupForAxios(),
381
386
  });
382
387
 
383
388
  Logger.log("All swaps RAW: " + safeStringify(response.data), loggerSource);
@@ -378,6 +378,7 @@ export class SwapProvider {
378
378
  * by provider with some fixed "insurance" amount to cover min amount fluctuations.
379
379
  * @param [amountIsToReceive=false] {boolean} whether the given amount is receiving amount. False means the amount is the sending amount.
380
380
  * @param [bannedPartners=[]] {string[]} list of ids of banned partners to be excluded from list, suitable only for swap aggregators
381
+ * @param [whitelistedPartners=null] {string[]|null} list of ids of whitelisted partners. Banned whitelisted partner will not be used for estimation.
381
382
  * @return {Promise<({
382
383
  * result: false,
383
384
  * reason: string,
@@ -403,7 +404,8 @@ export class SwapProvider {
403
404
  fixed = false,
404
405
  fromCoinToUsdRate = null,
405
406
  amountIsToReceive = false,
406
- bannedPartners = []
407
+ bannedPartners = [],
408
+ whitelistedPartners = null
407
409
  ) {
408
410
  throw new Error("Not implemented in base");
409
411
  }
@@ -13,8 +13,7 @@ import { FALLBACK_ASSET_ICON_URL } from "../../common-apis/globalConstants.jsx";
13
13
  import { SwapProviderCoinInfo } from "../models/swapProviderCoinInfo.js";
14
14
  import { KYC_LEVELS, Partner } from "../models/partner.js";
15
15
  import { toRabbitTicker } from "../../common-apis/utils/rabbitTicker.js";
16
-
17
- export const BANNED_PARTNERS = ["stealthex", "changee", "coincraddle", "easybit", "changelly"];
16
+ import { createRobustTimeoutSetupForAxios } from "./utils.js";
18
17
 
19
18
  export class SwapspaceSwapProvider extends SwapProvider {
20
19
  /**
@@ -49,7 +48,10 @@ export class SwapspaceSwapProvider extends SwapProvider {
49
48
  const loggerSource = "_fetchSupportedCurrenciesIfNeeded";
50
49
  try {
51
50
  if (this._shouldCoinsListBeLoaded()) {
52
- const rawResponse = await axios.get(`${this._URL}/api/v2/currencies`, { headers: this._headers });
51
+ const rawResponse = await axios.get(`${this._URL}/api/v2/currencies`, {
52
+ headers: this._headers,
53
+ ...createRobustTimeoutSetupForAxios(),
54
+ });
53
55
  Logger.log(`Retrieved ${rawResponse?.data?.length}`, loggerSource);
54
56
  let allowedCoins = rawResponse?.data ?? [];
55
57
  Logger.log(`Allowed cnt ${allowedCoins.length}`, loggerSource);
@@ -127,7 +129,10 @@ export class SwapspaceSwapProvider extends SwapProvider {
127
129
  const loggerSource = "_fetchPartnersListIfNeeded";
128
130
  try {
129
131
  if (this._partners?.length === 0) {
130
- const rawResponse = await axios.get(`${this._URL}/api/v2/partners`, { headers: this._headers });
132
+ const rawResponse = await axios.get(`${this._URL}/api/v2/partners`, {
133
+ headers: this._headers,
134
+ ...createRobustTimeoutSetupForAxios(),
135
+ });
131
136
  Logger.log(`Retrieved ${rawResponse?.data?.length} partners`, loggerSource);
132
137
  this._partners = Array.isArray(rawResponse?.data) ? rawResponse?.data : [];
133
138
  }
@@ -143,7 +148,8 @@ export class SwapspaceSwapProvider extends SwapProvider {
143
148
  fixed = false,
144
149
  fromCoinToUsdRate = null,
145
150
  amountIsToReceive = false,
146
- bannedPartners = []
151
+ bannedPartners = [],
152
+ whitelistedPartners = null
147
153
  ) {
148
154
  const loggerSource = "getSwapInfo";
149
155
  try {
@@ -185,7 +191,7 @@ export class SwapspaceSwapProvider extends SwapProvider {
185
191
  */
186
192
  const response = await axios.get(
187
193
  `${this._URL}/api/v2/amounts?fromCurrency=${fromCoinSwapspaceDetails.code}&fromNetwork=${fromCoinSwapspaceDetails.network}&toNetwork=${toCoinSwapspaceDetails.network}&toCurrency=${toCoinSwapspaceDetails.code}&amount=${amountCoins}&estimated=false`,
188
- { headers: this._headers }
194
+ { headers: this._headers, ...createRobustTimeoutSetupForAxios() }
189
195
  );
190
196
  Logger.log(`Retrieved ${response?.data?.length} options`, loggerSource);
191
197
  const options = Array.isArray(response.data) ? response.data : [];
@@ -193,7 +199,8 @@ export class SwapspaceSwapProvider extends SwapProvider {
193
199
  let exchangesSupportingThePairDespiteFixedOrFloating = options.filter(
194
200
  exchange =>
195
201
  exchange?.exists &&
196
- !bannedPartners.find(bannedPartner => bannedPartner === exchange?.partner) &&
202
+ !bannedPartners.includes(exchange?.partner) &&
203
+ (whitelistedPartners == null || whitelistedPartners.includes(exchange?.partner)) &&
197
204
  (exchange?.fixed === false || exchange?.fixed === true) &&
198
205
  typeof exchange.toAmount === "number" &&
199
206
  ((typeof exchange.min === "number" && typeof exchange.max === "number") || exchange.toAmount > 0) &&
@@ -379,7 +386,10 @@ export class SwapspaceSwapProvider extends SwapProvider {
379
386
  };
380
387
 
381
388
  Logger.log(`Sending create request: ${safeStringify(requestData)}`, loggerSource);
382
- const response = await axios.post(`${this._URL}/api/v2/exchange`, requestData, { headers: this._headers });
389
+ const response = await axios.post(`${this._URL}/api/v2/exchange`, requestData, {
390
+ headers: this._headers,
391
+ ...createRobustTimeoutSetupForAxios(),
392
+ });
383
393
  const result = response.data;
384
394
  Logger.log(`Creation result ${safeStringify(result)}`, loggerSource);
385
395
 
@@ -488,7 +498,10 @@ export class SwapspaceSwapProvider extends SwapProvider {
488
498
  }
489
499
  const getNotFailingOn404 = async swapId => {
490
500
  try {
491
- return await axios.get(`${this._URL}/api/v2/exchange/${swapId}`, { headers: this._headers });
501
+ return await axios.get(`${this._URL}/api/v2/exchange/${swapId}`, {
502
+ headers: this._headers,
503
+ ...createRobustTimeoutSetupForAxios(),
504
+ });
492
505
  } catch (error) {
493
506
  if (error?.response?.status === 404) return [];
494
507
  throw error;
@@ -0,0 +1,15 @@
1
+ export const HTTP_TIMEOUT_MS = 30 * 1000;
2
+
3
+ export function createAbortSignalForHttpRequest(timeoutMs = HTTP_TIMEOUT_MS) {
4
+ const abortController = new AbortController();
5
+ setTimeout(() => abortController.abort(), timeoutMs);
6
+
7
+ return abortController.signal;
8
+ }
9
+
10
+ export function createRobustTimeoutSetupForAxios() {
11
+ return {
12
+ timeout: HTTP_TIMEOUT_MS,
13
+ signal: createAbortSignalForHttpRequest(HTTP_TIMEOUT_MS),
14
+ };
15
+ }
@@ -68,6 +68,7 @@ export class PublicSwapService {
68
68
  * @param [amountIsToReceive=false] {boolean} whether the given amount is receiving amount.
69
69
  * False means the amount is the sending amount.
70
70
  * @param bannedPartners {string[]} array of banned swap partners (providers) ids (rabbit ids)
71
+ * @param [whitelistedPartners=null] {string[]|null} array of banned swap partners (providers) ids (rabbit ids)
71
72
  * @return {Promise<{
72
73
  * result: false,
73
74
  * reason: string,
@@ -89,7 +90,8 @@ export class PublicSwapService {
89
90
  fixed = false,
90
91
  coinUsdtRate = null,
91
92
  amountIsToReceive = false,
92
- bannedPartners = []
93
+ bannedPartners = [],
94
+ whitelistedPartners = null
93
95
  ) {
94
96
  const loggerSource = "getPublicSwapDetails";
95
97
  try {
@@ -105,7 +107,9 @@ export class PublicSwapService {
105
107
  if (typeof toCoin === "string") {
106
108
  toCoin = this.getCoinByTickerIfPresent(toCoin);
107
109
  }
108
- const isPartnerBanned = !!bannedPartners.find(banned => banned === provider.id);
110
+ const isPartnerBanned =
111
+ bannedPartners.includes(provider.id) ||
112
+ (whitelistedPartners != null && !whitelistedPartners.includes(provider.id));
109
113
  if (!fromCoin || !toCoin || isPartnerBanned) {
110
114
  return {
111
115
  result: false,
@@ -125,7 +129,8 @@ export class PublicSwapService {
125
129
  fixed,
126
130
  coinUsdtRate,
127
131
  amountIsToReceive,
128
- bannedPartners
132
+ bannedPartners,
133
+ whitelistedPartners
129
134
  );
130
135
 
131
136
  // eslint-disable-next-line no-console
@@ -1678,6 +1678,7 @@ describe("swapspaceSwapProvider", function () {
1678
1678
  result.isRefundAddressRequired.should.be.equal(expected.isRefundAddressRequired);
1679
1679
  });
1680
1680
  });
1681
+
1681
1682
  it("should call _fetchPartnersListIfNeeded ones", async () => {
1682
1683
  swapspaceSwapProvider._supportedCoins = [
1683
1684
  { coin: BTC, code: "btc", network: "btc", deposit: true, isAvailable: true },
@@ -1703,5 +1704,40 @@ describe("swapspaceSwapProvider", function () {
1703
1704
 
1704
1705
  _fetchPartnersListIfNeededStub.callCount.should.be.equal(1);
1705
1706
  });
1707
+
1708
+ it("should ignore non-whitelisted partners", async () => {
1709
+ swapspaceSwapProvider._supportedCoins = [
1710
+ { coin: BTC, code: "btc", network: "btc", deposit: true, isAvailable: true },
1711
+ { coin: ETH, code: "eth", network: "eth", withdrawal: true, isAvailable: true },
1712
+ ];
1713
+ const mockData = [
1714
+ {
1715
+ exists: true,
1716
+ fixed: false,
1717
+ toAmount: 200,
1718
+ fromAmount: 1,
1719
+ duration: "10-20",
1720
+ max: 5,
1721
+ min: 0.1,
1722
+ partner: "partner1",
1723
+ },
1724
+ {
1725
+ exists: true,
1726
+ fixed: false,
1727
+ toAmount: 2,
1728
+ fromAmount: 1,
1729
+ duration: "10-20",
1730
+ max: 5,
1731
+ min: 0.1,
1732
+ partner: "partner2",
1733
+ },
1734
+ ];
1735
+ axiosGetStub.returns(Promise.resolve({ data: mockData }));
1736
+
1737
+ const result = await swapspaceSwapProvider.getSwapInfo(BTC, ETH, "1", false, null, false, [], ["partner2"]);
1738
+
1739
+ result.result.should.be.true();
1740
+ result.rawSwapData.partner.should.be.equal("partner2");
1741
+ });
1706
1742
  });
1707
1743
  });
@@ -2,21 +2,26 @@ import { useCallback, useState } from "react";
2
2
 
3
3
  import { Logger } from "../../common-apis/utils/logging/logger.js";
4
4
 
5
+ /**
6
+ * This hook retrieves an error-handler function.
7
+ * The error-handler function triggers ErrorBoundary displaying in case of error during the callback function execution.
8
+ * (Actually, we just re-throw an error so react can catch it in the ErrorBoundary, so you should have ErrorBoundary setup for proper behavior).
9
+ *
10
+ * Optionally you can pass a single parameter to the callback.
11
+ *
12
+ * @return {(function(function, any): Promise<void>)} - error handling function accepting callback and optional parameter for it
13
+ */
5
14
  export function useCallHandlingErrors() {
6
15
  const [, setState] = useState();
7
- return useCallback(
8
- async (functionToBeCalled, event) => {
9
- try {
10
- await functionToBeCalled(event);
11
- } catch (error) {
12
- Logger.logError(error, functionToBeCalled?.name || "errorBoundaryTrigger", "Caught by ErrorBoundary");
13
- // Triggering ErrorBoundary
14
- setState(() => {
15
- throw error;
16
- });
17
- }
18
- },
19
-
20
- []
21
- );
16
+ return useCallback(async (functionToBeCalled, parameter) => {
17
+ try {
18
+ await functionToBeCalled(parameter);
19
+ } catch (error) {
20
+ Logger.logError(error, functionToBeCalled?.name || "errorBoundaryTrigger", "Caught by ErrorBoundary");
21
+ // Triggering ErrorBoundary
22
+ setState(() => {
23
+ throw error;
24
+ });
25
+ }
26
+ }, []);
22
27
  }