@rabbitio/ui-kit 1.0.0-beta.65 → 1.0.0-beta.68

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 (254) hide show
  1. package/coverage/clover.xml +6311 -4236
  2. package/coverage/coverage-final.json +160 -99
  3. package/coverage/index.html +442 -187
  4. package/coverage/{rabbit-ui-kit → ui-kit}/index.html +3 -3
  5. package/coverage/{rabbit-ui-kit → ui-kit}/index.js.html +3 -3
  6. package/coverage/{rabbit-ui-kit/src/assets/wrappedImages/arrowTosca.jsx.html → ui-kit/src/assets/wrappedImages/arrowIcon.jsx.html} +8 -29
  7. package/coverage/{rabbit-ui-kit/src/assets/wrappedImages/arrowIcon.jsx.html → ui-kit/src/assets/wrappedImages/arrowTosca.jsx.html} +9 -24
  8. package/coverage/{rabbit-ui-kit → ui-kit}/src/assets/wrappedImages/arrowWhite.jsx.html +7 -25
  9. package/coverage/ui-kit/src/assets/wrappedImages/darkRectangle.jsx.html +106 -0
  10. package/coverage/{rabbit-ui-kit → ui-kit}/src/assets/wrappedImages/determinedError.jsx.html +9 -42
  11. package/coverage/{rabbit-ui-kit/src/assets/wrappedImages/successfulValidationIcon.jsx.html → ui-kit/src/assets/wrappedImages/failedValidationIcon.jsx.html} +28 -31
  12. package/coverage/{rabbit-ui-kit → ui-kit}/src/assets/wrappedImages/index.html +25 -25
  13. package/coverage/{rabbit-ui-kit/src/assets/wrappedImages/darkRectangle.jsx.html → ui-kit/src/assets/wrappedImages/infoIcon.jsx.html} +13 -19
  14. package/coverage/{rabbit-ui-kit → ui-kit}/src/assets/wrappedImages/noticeQuestionIcon.jsx.html +7 -25
  15. package/coverage/{rabbit-ui-kit/src/assets/wrappedImages/walletIcon.jsx.html → ui-kit/src/assets/wrappedImages/successfulValidationIcon.jsx.html} +23 -59
  16. package/coverage/{rabbit-ui-kit/src/assets/wrappedImages/infoIcon.jsx.html → ui-kit/src/assets/wrappedImages/walletIcon.jsx.html} +16 -16
  17. package/coverage/{rabbit-ui-kit → ui-kit}/src/common/adapters/axiosAdapter.js.html +3 -3
  18. package/coverage/{rabbit-ui-kit → ui-kit}/src/common/adapters/index.html +3 -3
  19. package/coverage/{rabbit-ui-kit → ui-kit}/src/common/adapters/qrUtils.js.html +3 -3
  20. package/coverage/{rabbit-ui-kit → ui-kit}/src/common/amountUtils.js.html +44 -308
  21. package/coverage/{rabbit-ui-kit → ui-kit}/src/common/errorUtils.js.html +3 -3
  22. package/coverage/{rabbit-ui-kit → ui-kit}/src/common/external-apis/apiGroups.js.html +3 -3
  23. package/coverage/{rabbit-ui-kit → ui-kit}/src/common/external-apis/index.html +14 -14
  24. package/coverage/{rabbit-ui-kit → ui-kit}/src/common/external-apis/ipAddressProviders.js.html +31 -178
  25. package/coverage/{rabbit-ui-kit → ui-kit}/src/common/fiatCurrenciesService.js.html +12 -36
  26. package/coverage/{rabbit-ui-kit → ui-kit}/src/common/index.html +20 -20
  27. package/coverage/{rabbit-ui-kit → ui-kit}/src/common/models/blockchain.js.html +3 -3
  28. package/coverage/{rabbit-ui-kit → ui-kit}/src/common/models/coin.js.html +10 -22
  29. package/coverage/{rabbit-ui-kit → ui-kit}/src/common/models/index.html +13 -13
  30. package/coverage/{rabbit-ui-kit → ui-kit}/src/common/models/protocol.js.html +3 -3
  31. package/coverage/{rabbit-ui-kit → ui-kit}/src/common/utils/cache.js.html +23 -101
  32. package/coverage/{rabbit-ui-kit → ui-kit}/src/common/utils/emailAPI.js.html +9 -15
  33. package/coverage/{rabbit-ui-kit → ui-kit}/src/common/utils/index.html +19 -19
  34. package/coverage/{rabbit-ui-kit → ui-kit}/src/common/utils/logging/index.html +9 -9
  35. package/coverage/{rabbit-ui-kit → ui-kit}/src/common/utils/logging/logger.js.html +14 -35
  36. package/coverage/{rabbit-ui-kit → ui-kit}/src/common/utils/logging/logsStorage.js.html +5 -5
  37. package/coverage/{rabbit-ui-kit → ui-kit}/src/common/utils/postponeExecution.js.html +3 -3
  38. package/coverage/{rabbit-ui-kit → ui-kit}/src/common/utils/safeStringify.js.html +29 -29
  39. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/AssetIcon/AssetIcon.jsx.html +11 -41
  40. package/coverage/ui-kit/src/components/atoms/AssetIcon/index.html +116 -0
  41. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/AssetSelection/AssetSelection.jsx.html +9 -33
  42. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/AssetSelection/index.html +7 -7
  43. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/BackgroundTitle/BackgroundTitle.jsx.html +8 -38
  44. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/BackgroundTitle/index.html +7 -7
  45. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/InformationMessage/InformationMessage.jsx.html +8 -38
  46. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/InformationMessage/index.html +7 -7
  47. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/Input/Input.jsx.html +15 -63
  48. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/Input/index.html +7 -7
  49. package/coverage/ui-kit/src/components/atoms/LoadingDots/LoadingDots.jsx.html +196 -0
  50. package/coverage/{rabbit-ui-kit/src/components/atoms/RateSelector → ui-kit/src/components/atoms/LoadingDots}/index.html +4 -4
  51. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/NoticeIcon/NoticeIcon.jsx.html +10 -40
  52. package/coverage/{rabbit-ui-kit/src/components/atoms/AssetIcon → ui-kit/src/components/atoms/NoticeIcon}/index.html +4 -4
  53. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/QrCode/QrCode.jsx.html +8 -26
  54. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/QrCode/index.html +7 -7
  55. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/RateSelector/RateSelector.jsx.html +10 -34
  56. package/coverage/ui-kit/src/components/atoms/RateSelector/index.html +116 -0
  57. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/SupportChat/SupportChat.jsx.html +7 -22
  58. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/SupportChat/index.html +7 -7
  59. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/Textarea/Textarea.jsx.html +17 -53
  60. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/Textarea/index.html +7 -7
  61. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/TitleBox/TitleBox.jsx.html +13 -82
  62. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/TitleBox/index.html +7 -7
  63. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/Tooltip/Tooltip.jsx.html +12 -18
  64. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/Tooltip/index.html +7 -7
  65. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/TwoLinesOfText/LinesOfText.jsx.html +12 -30
  66. package/coverage/{rabbit-ui-kit/src/components/atoms/NoticeIcon → ui-kit/src/components/atoms/TwoLinesOfText}/index.html +4 -4
  67. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/Validation/Validation.jsx.html +3 -3
  68. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/Validation/index.html +3 -3
  69. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/buttons/Button/Button.jsx.html +23 -113
  70. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/buttons/Button/index.html +7 -7
  71. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/buttons/Close/Close.jsx.html +9 -27
  72. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/buttons/Close/index.html +7 -7
  73. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/buttons/LinkButton/LinkButton.jsx.html +11 -38
  74. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/buttons/LinkButton/index.html +7 -7
  75. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/buttons/RadioButtonWithText/RadioButtonWithText.jsx.html +13 -67
  76. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/atoms/buttons/RadioButtonWithText/index.html +7 -7
  77. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/hooks/index.html +7 -7
  78. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/hooks/useCallHandlingErrors.js.html +7 -19
  79. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/hooks/useReferredState.js.html +4 -4
  80. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/molecules/AmountInput/AmountInput.jsx.html +56 -407
  81. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/molecules/AmountInput/index.html +7 -7
  82. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/molecules/CoinPicker/CoinPicker.jsx.html +67 -466
  83. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/molecules/CoinPicker/index.html +7 -7
  84. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/molecules/LineWithIconLink/LineWithIconLink.jsx.html +7 -22
  85. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/molecules/LineWithIconLink/index.html +7 -7
  86. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/molecules/TitledLineWithIconLink/TitledLineWithIconLink.jsx.html +3 -3
  87. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/molecules/TitledLineWithIconLink/index.html +3 -3
  88. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/organisms/CoinPickerDialogStep/CoinPickerDialogStep.jsx.html +9 -15
  89. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/organisms/CoinPickerDialogStep/index.html +7 -7
  90. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/organisms/Dialog/Dialog.jsx.html +44 -194
  91. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/organisms/Dialog/DialogButtons/DialogButtons.jsx.html +3 -3
  92. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/organisms/Dialog/DialogButtons/index.html +3 -3
  93. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/organisms/Dialog/DialogStep/DialogStep.jsx.html +61 -523
  94. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/organisms/Dialog/DialogStep/index.html +7 -7
  95. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/organisms/Dialog/index.html +7 -7
  96. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/organisms/SwapForm/SwapForm.jsx.html +96 -762
  97. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/organisms/SwapForm/index.html +7 -7
  98. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/templates/DeterminedErrorDialogStep/DeterminedErrorDialogStep.jsx.html +3 -3
  99. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/templates/DeterminedErrorDialogStep/index.html +3 -3
  100. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/utils/index.html +20 -20
  101. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/utils/inputValueProviders.js.html +11 -35
  102. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/utils/textUtils.js.html +3 -3
  103. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/utils/uiUtils.js.html +7 -13
  104. package/coverage/{rabbit-ui-kit → ui-kit}/src/components/utils/urlQueryUtils.js.html +18 -93
  105. package/coverage/{rabbit-ui-kit → ui-kit}/src/constants/atoms/Close/close.jsx.html +3 -3
  106. package/coverage/{rabbit-ui-kit → ui-kit}/src/constants/atoms/Close/index.html +3 -3
  107. package/coverage/{rabbit-ui-kit → ui-kit}/src/constants/atoms/LinkButton/index.html +3 -3
  108. package/coverage/{rabbit-ui-kit → ui-kit}/src/constants/atoms/LinkButton/linkButton.jsx.html +3 -3
  109. package/coverage/{rabbit-ui-kit → ui-kit}/src/constants/atoms/Tooltip/index.html +3 -3
  110. package/coverage/{rabbit-ui-kit → ui-kit}/src/constants/atoms/Tooltip/tooltip.jsx.html +3 -3
  111. package/coverage/{rabbit-ui-kit → ui-kit}/src/constants/globalConstants.jsx.html +7 -10
  112. package/coverage/{rabbit-ui-kit → ui-kit}/src/constants/index.html +7 -7
  113. package/coverage/{rabbit-ui-kit → ui-kit}/src/constants/organisms/dialog/DialogStep/dialogStep.js.html +3 -3
  114. package/coverage/{rabbit-ui-kit → ui-kit}/src/constants/organisms/dialog/DialogStep/index.html +3 -3
  115. package/coverage/{rabbit-ui-kit → ui-kit}/src/constants/organisms/dialog/dialog.js.html +3 -3
  116. package/coverage/{rabbit-ui-kit → ui-kit}/src/constants/organisms/dialog/index.html +3 -3
  117. package/coverage/{rabbit-ui-kit → ui-kit}/src/index.html +7 -7
  118. package/coverage/{rabbit-ui-kit → ui-kit}/src/index.js.html +8 -26
  119. package/coverage/{rabbit-ui-kit → ui-kit}/src/robustExteranlApiCallerService/cacheAndConcurrentRequestsResolver.js.html +30 -222
  120. package/coverage/{rabbit-ui-kit → ui-kit}/src/robustExteranlApiCallerService/cachedRobustExternalApiCallerService.js.html +24 -147
  121. package/coverage/{rabbit-ui-kit → ui-kit}/src/robustExteranlApiCallerService/cancelProcessing.js.html +3 -3
  122. package/coverage/{rabbit-ui-kit → ui-kit}/src/robustExteranlApiCallerService/concurrentCalculationsMetadataHolder.js.html +19 -103
  123. package/coverage/{rabbit-ui-kit → ui-kit}/src/robustExteranlApiCallerService/externalApiProvider.js.html +3 -3
  124. package/coverage/{rabbit-ui-kit → ui-kit}/src/robustExteranlApiCallerService/externalServicesStatsCollector.js.html +11 -23
  125. package/coverage/{rabbit-ui-kit → ui-kit}/src/robustExteranlApiCallerService/index.html +38 -38
  126. package/coverage/{rabbit-ui-kit → ui-kit}/src/robustExteranlApiCallerService/robustExternalAPICallerService.js.html +53 -305
  127. package/coverage/{rabbit-ui-kit → ui-kit}/src/swaps-lib/external-apis/index.html +24 -24
  128. package/coverage/{rabbit-ui-kit → ui-kit}/src/swaps-lib/external-apis/swapProvider.js.html +10 -28
  129. package/coverage/{rabbit-ui-kit → ui-kit}/src/swaps-lib/external-apis/swapspaceSwapProvider.js.html +277 -1009
  130. package/coverage/{rabbit-ui-kit → ui-kit}/src/swaps-lib/models/baseSwapCreationInfo.js.html +3 -3
  131. package/coverage/{rabbit-ui-kit → ui-kit}/src/swaps-lib/models/existingSwap.js.html +3 -3
  132. package/coverage/{rabbit-ui-kit → ui-kit}/src/swaps-lib/models/existingSwapWithFiatData.js.html +9 -27
  133. package/coverage/{rabbit-ui-kit → ui-kit}/src/swaps-lib/models/index.html +13 -13
  134. package/coverage/{rabbit-ui-kit → ui-kit}/src/swaps-lib/services/index.html +7 -7
  135. package/coverage/{rabbit-ui-kit → ui-kit}/src/swaps-lib/services/publicSwapService.js.html +53 -374
  136. package/coverage/{rabbit-ui-kit → ui-kit}/src/swaps-lib/utils/index.html +13 -13
  137. package/coverage/{rabbit-ui-kit → ui-kit}/src/swaps-lib/utils/swapUtils.js.html +32 -179
  138. package/coverage/{rabbit-ui-kit → ui-kit}/stories/atoms/BackgroundTitle.stories.jsx.html +3 -3
  139. package/coverage/{rabbit-ui-kit → ui-kit}/stories/atoms/LinesOfText.stories.jsx.html +3 -3
  140. package/coverage/{rabbit-ui-kit → ui-kit}/stories/atoms/LoadingDots.stories.jsx.html +3 -3
  141. package/coverage/{rabbit-ui-kit → ui-kit}/stories/atoms/QrCode.stories.jsx.html +3 -3
  142. package/coverage/{rabbit-ui-kit → ui-kit}/stories/atoms/RateSelector.stories.jsx.html +3 -3
  143. package/coverage/{rabbit-ui-kit → ui-kit}/stories/atoms/Validation.stories.jsx.html +3 -3
  144. package/coverage/{rabbit-ui-kit → ui-kit}/stories/atoms/buttons/Button.stories.jsx.html +3 -3
  145. package/coverage/{rabbit-ui-kit → ui-kit}/stories/atoms/buttons/Close.stories.jsx.html +3 -3
  146. package/coverage/{rabbit-ui-kit → ui-kit}/stories/atoms/buttons/LinkButton.stories.jsx.html +3 -3
  147. package/coverage/{rabbit-ui-kit → ui-kit}/stories/atoms/buttons/index.html +3 -3
  148. package/coverage/{rabbit-ui-kit → ui-kit}/stories/atoms/index.html +3 -3
  149. package/coverage/{rabbit-ui-kit → ui-kit}/stories/molecules/LineWithIconLink.stories.jsx.html +3 -3
  150. package/coverage/{rabbit-ui-kit → ui-kit}/stories/molecules/TitledLineWithIconLink.stories.jsx.html +3 -3
  151. package/coverage/{rabbit-ui-kit → ui-kit}/stories/molecules/index.html +3 -3
  152. package/coverage/{rabbit-ui-kit → ui-kit}/stories/organisms/Dialog/Dialog.stories.jsx.html +3 -3
  153. package/coverage/{rabbit-ui-kit → ui-kit}/stories/organisms/Dialog/DialogButtons/DialogButtons.stories.jsx.html +3 -3
  154. package/coverage/{rabbit-ui-kit → ui-kit}/stories/organisms/Dialog/DialogButtons/index.html +3 -3
  155. package/coverage/{rabbit-ui-kit → ui-kit}/stories/organisms/Dialog/DialogStep/DialogStep.stories.jsx.html +3 -3
  156. package/coverage/{rabbit-ui-kit → ui-kit}/stories/organisms/Dialog/DialogStep/index.html +3 -3
  157. package/coverage/{rabbit-ui-kit → ui-kit}/stories/organisms/Dialog/index.html +3 -3
  158. package/coverage/{rabbit-ui-kit → ui-kit}/stories/stubs/exampleContent.jsx.html +3 -3
  159. package/coverage/{rabbit-ui-kit → ui-kit}/stories/stubs/index.html +3 -3
  160. package/coverage/{rabbit-ui-kit → ui-kit}/stories/templates/DeterminedErrorDialogStep.stories.jsx.html +3 -3
  161. package/coverage/{rabbit-ui-kit → ui-kit}/stories/templates/index.html +3 -3
  162. package/dist/index.cjs +12 -14
  163. package/dist/index.cjs.map +1 -1
  164. package/dist/index.css +5 -2
  165. package/dist/index.css.map +1 -1
  166. package/dist/index.modern.js +12 -13
  167. package/dist/index.modern.js.map +1 -1
  168. package/dist/index.module.js +12 -14
  169. package/dist/index.module.js.map +1 -1
  170. package/dist/index.umd.js +12 -14
  171. package/dist/index.umd.js.map +1 -1
  172. package/package.json +5 -3
  173. package/src/assets/wrappedImages/arrowIcon.jsx +1 -7
  174. package/src/assets/wrappedImages/arrowTosca.jsx +1 -7
  175. package/src/assets/wrappedImages/arrowWhite.jsx +1 -7
  176. package/src/assets/wrappedImages/darkRectangle.jsx +2 -13
  177. package/src/assets/wrappedImages/determinedError.jsx +2 -13
  178. package/src/assets/wrappedImages/failedValidationIcon.jsx +2 -16
  179. package/src/assets/wrappedImages/infoIcon.jsx +1 -7
  180. package/src/assets/wrappedImages/noticeQuestionIcon.jsx +1 -7
  181. package/src/assets/wrappedImages/successfulValidationIcon.jsx +2 -16
  182. package/src/assets/wrappedImages/walletIcon.jsx +3 -19
  183. package/src/common/amountUtils.js +36 -124
  184. package/src/common/external-apis/ipAddressProviders.js +22 -71
  185. package/src/common/fiatCurrenciesService.js +4 -12
  186. package/src/common/models/coin.js +2 -6
  187. package/src/common/tests/amountUtils/composeRateText.test.js +12 -69
  188. package/src/common/tests/integration/external-apis/ipAddressProviders/getClientIpAddress.test.js +1 -3
  189. package/src/common/utils/cache.js +10 -36
  190. package/src/common/utils/emailAPI.js +1 -3
  191. package/src/common/utils/logging/logger.js +5 -12
  192. package/src/components/atoms/AssetIcon/AssetIcon.jsx +4 -14
  193. package/src/components/atoms/AssetSelection/AssetSelection.jsx +3 -11
  194. package/src/components/atoms/BackgroundTitle/BackgroundTitle.jsx +2 -12
  195. package/src/components/atoms/InformationMessage/InformationMessage.jsx +2 -12
  196. package/src/components/atoms/InformationMessage/information-message.module.scss +4 -2
  197. package/src/components/atoms/Input/Input.jsx +9 -25
  198. package/src/components/atoms/LoadingDots/LoadingDots.jsx +8 -28
  199. package/src/components/atoms/NoticeIcon/NoticeIcon.jsx +4 -14
  200. package/src/components/atoms/QrCode/QrCode.jsx +2 -8
  201. package/src/components/atoms/RateSelector/RateSelector.jsx +4 -12
  202. package/src/components/atoms/SupportChat/SupportChat.jsx +1 -6
  203. package/src/components/atoms/Textarea/Textarea.jsx +11 -23
  204. package/src/components/atoms/TitleBox/TitleBox.jsx +7 -30
  205. package/src/components/atoms/TitleBox/title-box.module.scss +2 -0
  206. package/src/components/atoms/Tooltip/Tooltip.jsx +6 -8
  207. package/src/components/atoms/TwoLinesOfText/LinesOfText.jsx +5 -11
  208. package/src/components/atoms/buttons/Button/Button.jsx +17 -47
  209. package/src/components/atoms/buttons/Close/Close.jsx +3 -9
  210. package/src/components/atoms/buttons/LinkButton/LinkButton.jsx +5 -14
  211. package/src/components/atoms/buttons/RadioButtonWithText/RadioButtonWithText.jsx +7 -25
  212. package/src/components/hooks/useCallHandlingErrors.js +1 -5
  213. package/src/components/hooks/useReferredState.js +1 -1
  214. package/src/components/molecules/AmountInput/AmountInput.jsx +50 -167
  215. package/src/components/molecules/CoinPicker/CoinPicker.jsx +61 -194
  216. package/src/components/molecules/CoinPicker/coin-picker.module.scss +1 -4
  217. package/src/components/molecules/LineWithIconLink/LineWithIconLink.jsx +1 -6
  218. package/src/components/organisms/CoinPickerDialogStep/CoinPickerDialogStep.jsx +3 -5
  219. package/src/components/organisms/Dialog/Dialog.jsx +38 -88
  220. package/src/components/organisms/Dialog/DialogStep/DialogStep.jsx +55 -209
  221. package/src/components/organisms/Dialog/DialogStep/dialog-step.module.scss +2 -4
  222. package/src/components/organisms/SwapForm/SwapForm.jsx +90 -312
  223. package/src/components/tests/utils/inputValueProviders/provideFormatOfFloatValueByInputString.test.js +5 -12
  224. package/src/components/tests/utils/urlQueryUtils/getQueryParameterValues.test.js +3 -9
  225. package/src/components/tests/utils/urlQueryUtils/saveQueryParameterAndValues.test.js +11 -51
  226. package/src/components/utils/inputValueProviders.js +3 -11
  227. package/src/components/utils/uiUtils.js +1 -3
  228. package/src/components/utils/urlQueryUtils.js +10 -35
  229. package/src/constants/globalConstants.jsx +1 -2
  230. package/src/index.js +2 -8
  231. package/src/robustExteranlApiCallerService/cacheAndConcurrentRequestsResolver.js +22 -86
  232. package/src/robustExteranlApiCallerService/cachedRobustExternalApiCallerService.js +15 -56
  233. package/src/robustExteranlApiCallerService/concurrentCalculationsMetadataHolder.js +11 -39
  234. package/src/robustExteranlApiCallerService/externalServicesStatsCollector.js +3 -7
  235. package/src/robustExteranlApiCallerService/robustExternalAPICallerService.js +45 -129
  236. package/src/robustExteranlApiCallerService/tests/robustExternalAPICallerService/robustExternalAPICallerService/callExternalAPI/_performCallAttempt.test.js +76 -330
  237. package/src/robustExteranlApiCallerService/tests/robustExternalAPICallerService/robustExternalAPICallerService/callExternalAPI/callExternalAPI.test.js +57 -270
  238. package/src/robustExteranlApiCallerService/tests/robustExternalAPICallerService/robustExternalAPICallerService/constructor.test.js +3 -15
  239. package/src/swaps-lib/external-apis/swapProvider.js +1 -7
  240. package/src/swaps-lib/external-apis/swapspaceSwapProvider.js +117 -361
  241. package/src/swaps-lib/models/existingSwapWithFiatData.js +1 -7
  242. package/src/swaps-lib/services/publicSwapService.js +47 -154
  243. package/src/swaps-lib/test/external-apis/swapspaceSwapProvider/_fetchSupportedCurrenciesIfNeeded.test.js +33 -118
  244. package/src/swaps-lib/test/external-apis/swapspaceSwapProvider/createSwap.test.js +23 -85
  245. package/src/swaps-lib/test/external-apis/swapspaceSwapProvider/getAllSupportedCurrencies.test.js +4 -14
  246. package/src/swaps-lib/test/external-apis/swapspaceSwapProvider/getDepositCurrencies.test.js +3 -9
  247. package/src/swaps-lib/test/external-apis/swapspaceSwapProvider/getSwapInfo.test.js +148 -460
  248. package/src/swaps-lib/test/external-apis/swapspaceSwapProvider/getWithdrawalCurrencies.test.js +5 -11
  249. package/src/swaps-lib/test/utils/swapUtils/safeHandleRequestsLimitExceeding.test.js +2 -10
  250. package/src/swaps-lib/utils/swapUtils.js +24 -73
  251. package/coverage/rabbit-ui-kit/src/assets/wrappedImages/failedValidationIcon.jsx.html +0 -244
  252. package/coverage/rabbit-ui-kit/src/components/atoms/LoadingDots/LoadingDots.jsx.html +0 -256
  253. package/coverage/rabbit-ui-kit/src/components/atoms/LoadingDots/index.html +0 -116
  254. package/coverage/rabbit-ui-kit/src/components/atoms/TwoLinesOfText/index.html +0 -116
@@ -3,7 +3,7 @@
3
3
  <html lang="en">
4
4
 
5
5
  <head>
6
- <title>Code coverage report for rabbit-ui-kit/src/swaps-lib/external-apis/swapspaceSwapProvider.js</title>
6
+ <title>Code coverage report for ui-kit/src/swaps-lib/external-apis/swapspaceSwapProvider.js</title>
7
7
  <meta charset="utf-8" />
8
8
  <link rel="stylesheet" href="../../../../prettify.css" />
9
9
  <link rel="stylesheet" href="../../../../base.css" />
@@ -19,20 +19,20 @@
19
19
  <body>
20
20
  <div class='wrapper'>
21
21
  <div class='pad1'>
22
- <h1><a href="../../../../index.html">All files</a> / <a href="index.html">rabbit-ui-kit/src/swaps-lib/external-apis</a> swapspaceSwapProvider.js</h1>
22
+ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">ui-kit/src/swaps-lib/external-apis</a> swapspaceSwapProvider.js</h1>
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">72.1% </span>
26
+ <span class="strong">70.96% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>685/950</span>
28
+ <span class='fraction'>501/706</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">98.13% </span>
33
+ <span class="strong">96.63% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>211/215</span>
35
+ <span class='fraction'>201/208</span>
36
36
  </div>
37
37
 
38
38
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">72.1% </span>
47
+ <span class="strong">70.96% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>685/950</span>
49
+ <span class='fraction'>501/706</span>
50
50
  </div>
51
51
 
52
52
 
@@ -769,280 +769,31 @@
769
769
  <a name='L704'></a><a href='#L704'>704</a>
770
770
  <a name='L705'></a><a href='#L705'>705</a>
771
771
  <a name='L706'></a><a href='#L706'>706</a>
772
- <a name='L707'></a><a href='#L707'>707</a>
773
- <a name='L708'></a><a href='#L708'>708</a>
774
- <a name='L709'></a><a href='#L709'>709</a>
775
- <a name='L710'></a><a href='#L710'>710</a>
776
- <a name='L711'></a><a href='#L711'>711</a>
777
- <a name='L712'></a><a href='#L712'>712</a>
778
- <a name='L713'></a><a href='#L713'>713</a>
779
- <a name='L714'></a><a href='#L714'>714</a>
780
- <a name='L715'></a><a href='#L715'>715</a>
781
- <a name='L716'></a><a href='#L716'>716</a>
782
- <a name='L717'></a><a href='#L717'>717</a>
783
- <a name='L718'></a><a href='#L718'>718</a>
784
- <a name='L719'></a><a href='#L719'>719</a>
785
- <a name='L720'></a><a href='#L720'>720</a>
786
- <a name='L721'></a><a href='#L721'>721</a>
787
- <a name='L722'></a><a href='#L722'>722</a>
788
- <a name='L723'></a><a href='#L723'>723</a>
789
- <a name='L724'></a><a href='#L724'>724</a>
790
- <a name='L725'></a><a href='#L725'>725</a>
791
- <a name='L726'></a><a href='#L726'>726</a>
792
- <a name='L727'></a><a href='#L727'>727</a>
793
- <a name='L728'></a><a href='#L728'>728</a>
794
- <a name='L729'></a><a href='#L729'>729</a>
795
- <a name='L730'></a><a href='#L730'>730</a>
796
- <a name='L731'></a><a href='#L731'>731</a>
797
- <a name='L732'></a><a href='#L732'>732</a>
798
- <a name='L733'></a><a href='#L733'>733</a>
799
- <a name='L734'></a><a href='#L734'>734</a>
800
- <a name='L735'></a><a href='#L735'>735</a>
801
- <a name='L736'></a><a href='#L736'>736</a>
802
- <a name='L737'></a><a href='#L737'>737</a>
803
- <a name='L738'></a><a href='#L738'>738</a>
804
- <a name='L739'></a><a href='#L739'>739</a>
805
- <a name='L740'></a><a href='#L740'>740</a>
806
- <a name='L741'></a><a href='#L741'>741</a>
807
- <a name='L742'></a><a href='#L742'>742</a>
808
- <a name='L743'></a><a href='#L743'>743</a>
809
- <a name='L744'></a><a href='#L744'>744</a>
810
- <a name='L745'></a><a href='#L745'>745</a>
811
- <a name='L746'></a><a href='#L746'>746</a>
812
- <a name='L747'></a><a href='#L747'>747</a>
813
- <a name='L748'></a><a href='#L748'>748</a>
814
- <a name='L749'></a><a href='#L749'>749</a>
815
- <a name='L750'></a><a href='#L750'>750</a>
816
- <a name='L751'></a><a href='#L751'>751</a>
817
- <a name='L752'></a><a href='#L752'>752</a>
818
- <a name='L753'></a><a href='#L753'>753</a>
819
- <a name='L754'></a><a href='#L754'>754</a>
820
- <a name='L755'></a><a href='#L755'>755</a>
821
- <a name='L756'></a><a href='#L756'>756</a>
822
- <a name='L757'></a><a href='#L757'>757</a>
823
- <a name='L758'></a><a href='#L758'>758</a>
824
- <a name='L759'></a><a href='#L759'>759</a>
825
- <a name='L760'></a><a href='#L760'>760</a>
826
- <a name='L761'></a><a href='#L761'>761</a>
827
- <a name='L762'></a><a href='#L762'>762</a>
828
- <a name='L763'></a><a href='#L763'>763</a>
829
- <a name='L764'></a><a href='#L764'>764</a>
830
- <a name='L765'></a><a href='#L765'>765</a>
831
- <a name='L766'></a><a href='#L766'>766</a>
832
- <a name='L767'></a><a href='#L767'>767</a>
833
- <a name='L768'></a><a href='#L768'>768</a>
834
- <a name='L769'></a><a href='#L769'>769</a>
835
- <a name='L770'></a><a href='#L770'>770</a>
836
- <a name='L771'></a><a href='#L771'>771</a>
837
- <a name='L772'></a><a href='#L772'>772</a>
838
- <a name='L773'></a><a href='#L773'>773</a>
839
- <a name='L774'></a><a href='#L774'>774</a>
840
- <a name='L775'></a><a href='#L775'>775</a>
841
- <a name='L776'></a><a href='#L776'>776</a>
842
- <a name='L777'></a><a href='#L777'>777</a>
843
- <a name='L778'></a><a href='#L778'>778</a>
844
- <a name='L779'></a><a href='#L779'>779</a>
845
- <a name='L780'></a><a href='#L780'>780</a>
846
- <a name='L781'></a><a href='#L781'>781</a>
847
- <a name='L782'></a><a href='#L782'>782</a>
848
- <a name='L783'></a><a href='#L783'>783</a>
849
- <a name='L784'></a><a href='#L784'>784</a>
850
- <a name='L785'></a><a href='#L785'>785</a>
851
- <a name='L786'></a><a href='#L786'>786</a>
852
- <a name='L787'></a><a href='#L787'>787</a>
853
- <a name='L788'></a><a href='#L788'>788</a>
854
- <a name='L789'></a><a href='#L789'>789</a>
855
- <a name='L790'></a><a href='#L790'>790</a>
856
- <a name='L791'></a><a href='#L791'>791</a>
857
- <a name='L792'></a><a href='#L792'>792</a>
858
- <a name='L793'></a><a href='#L793'>793</a>
859
- <a name='L794'></a><a href='#L794'>794</a>
860
- <a name='L795'></a><a href='#L795'>795</a>
861
- <a name='L796'></a><a href='#L796'>796</a>
862
- <a name='L797'></a><a href='#L797'>797</a>
863
- <a name='L798'></a><a href='#L798'>798</a>
864
- <a name='L799'></a><a href='#L799'>799</a>
865
- <a name='L800'></a><a href='#L800'>800</a>
866
- <a name='L801'></a><a href='#L801'>801</a>
867
- <a name='L802'></a><a href='#L802'>802</a>
868
- <a name='L803'></a><a href='#L803'>803</a>
869
- <a name='L804'></a><a href='#L804'>804</a>
870
- <a name='L805'></a><a href='#L805'>805</a>
871
- <a name='L806'></a><a href='#L806'>806</a>
872
- <a name='L807'></a><a href='#L807'>807</a>
873
- <a name='L808'></a><a href='#L808'>808</a>
874
- <a name='L809'></a><a href='#L809'>809</a>
875
- <a name='L810'></a><a href='#L810'>810</a>
876
- <a name='L811'></a><a href='#L811'>811</a>
877
- <a name='L812'></a><a href='#L812'>812</a>
878
- <a name='L813'></a><a href='#L813'>813</a>
879
- <a name='L814'></a><a href='#L814'>814</a>
880
- <a name='L815'></a><a href='#L815'>815</a>
881
- <a name='L816'></a><a href='#L816'>816</a>
882
- <a name='L817'></a><a href='#L817'>817</a>
883
- <a name='L818'></a><a href='#L818'>818</a>
884
- <a name='L819'></a><a href='#L819'>819</a>
885
- <a name='L820'></a><a href='#L820'>820</a>
886
- <a name='L821'></a><a href='#L821'>821</a>
887
- <a name='L822'></a><a href='#L822'>822</a>
888
- <a name='L823'></a><a href='#L823'>823</a>
889
- <a name='L824'></a><a href='#L824'>824</a>
890
- <a name='L825'></a><a href='#L825'>825</a>
891
- <a name='L826'></a><a href='#L826'>826</a>
892
- <a name='L827'></a><a href='#L827'>827</a>
893
- <a name='L828'></a><a href='#L828'>828</a>
894
- <a name='L829'></a><a href='#L829'>829</a>
895
- <a name='L830'></a><a href='#L830'>830</a>
896
- <a name='L831'></a><a href='#L831'>831</a>
897
- <a name='L832'></a><a href='#L832'>832</a>
898
- <a name='L833'></a><a href='#L833'>833</a>
899
- <a name='L834'></a><a href='#L834'>834</a>
900
- <a name='L835'></a><a href='#L835'>835</a>
901
- <a name='L836'></a><a href='#L836'>836</a>
902
- <a name='L837'></a><a href='#L837'>837</a>
903
- <a name='L838'></a><a href='#L838'>838</a>
904
- <a name='L839'></a><a href='#L839'>839</a>
905
- <a name='L840'></a><a href='#L840'>840</a>
906
- <a name='L841'></a><a href='#L841'>841</a>
907
- <a name='L842'></a><a href='#L842'>842</a>
908
- <a name='L843'></a><a href='#L843'>843</a>
909
- <a name='L844'></a><a href='#L844'>844</a>
910
- <a name='L845'></a><a href='#L845'>845</a>
911
- <a name='L846'></a><a href='#L846'>846</a>
912
- <a name='L847'></a><a href='#L847'>847</a>
913
- <a name='L848'></a><a href='#L848'>848</a>
914
- <a name='L849'></a><a href='#L849'>849</a>
915
- <a name='L850'></a><a href='#L850'>850</a>
916
- <a name='L851'></a><a href='#L851'>851</a>
917
- <a name='L852'></a><a href='#L852'>852</a>
918
- <a name='L853'></a><a href='#L853'>853</a>
919
- <a name='L854'></a><a href='#L854'>854</a>
920
- <a name='L855'></a><a href='#L855'>855</a>
921
- <a name='L856'></a><a href='#L856'>856</a>
922
- <a name='L857'></a><a href='#L857'>857</a>
923
- <a name='L858'></a><a href='#L858'>858</a>
924
- <a name='L859'></a><a href='#L859'>859</a>
925
- <a name='L860'></a><a href='#L860'>860</a>
926
- <a name='L861'></a><a href='#L861'>861</a>
927
- <a name='L862'></a><a href='#L862'>862</a>
928
- <a name='L863'></a><a href='#L863'>863</a>
929
- <a name='L864'></a><a href='#L864'>864</a>
930
- <a name='L865'></a><a href='#L865'>865</a>
931
- <a name='L866'></a><a href='#L866'>866</a>
932
- <a name='L867'></a><a href='#L867'>867</a>
933
- <a name='L868'></a><a href='#L868'>868</a>
934
- <a name='L869'></a><a href='#L869'>869</a>
935
- <a name='L870'></a><a href='#L870'>870</a>
936
- <a name='L871'></a><a href='#L871'>871</a>
937
- <a name='L872'></a><a href='#L872'>872</a>
938
- <a name='L873'></a><a href='#L873'>873</a>
939
- <a name='L874'></a><a href='#L874'>874</a>
940
- <a name='L875'></a><a href='#L875'>875</a>
941
- <a name='L876'></a><a href='#L876'>876</a>
942
- <a name='L877'></a><a href='#L877'>877</a>
943
- <a name='L878'></a><a href='#L878'>878</a>
944
- <a name='L879'></a><a href='#L879'>879</a>
945
- <a name='L880'></a><a href='#L880'>880</a>
946
- <a name='L881'></a><a href='#L881'>881</a>
947
- <a name='L882'></a><a href='#L882'>882</a>
948
- <a name='L883'></a><a href='#L883'>883</a>
949
- <a name='L884'></a><a href='#L884'>884</a>
950
- <a name='L885'></a><a href='#L885'>885</a>
951
- <a name='L886'></a><a href='#L886'>886</a>
952
- <a name='L887'></a><a href='#L887'>887</a>
953
- <a name='L888'></a><a href='#L888'>888</a>
954
- <a name='L889'></a><a href='#L889'>889</a>
955
- <a name='L890'></a><a href='#L890'>890</a>
956
- <a name='L891'></a><a href='#L891'>891</a>
957
- <a name='L892'></a><a href='#L892'>892</a>
958
- <a name='L893'></a><a href='#L893'>893</a>
959
- <a name='L894'></a><a href='#L894'>894</a>
960
- <a name='L895'></a><a href='#L895'>895</a>
961
- <a name='L896'></a><a href='#L896'>896</a>
962
- <a name='L897'></a><a href='#L897'>897</a>
963
- <a name='L898'></a><a href='#L898'>898</a>
964
- <a name='L899'></a><a href='#L899'>899</a>
965
- <a name='L900'></a><a href='#L900'>900</a>
966
- <a name='L901'></a><a href='#L901'>901</a>
967
- <a name='L902'></a><a href='#L902'>902</a>
968
- <a name='L903'></a><a href='#L903'>903</a>
969
- <a name='L904'></a><a href='#L904'>904</a>
970
- <a name='L905'></a><a href='#L905'>905</a>
971
- <a name='L906'></a><a href='#L906'>906</a>
972
- <a name='L907'></a><a href='#L907'>907</a>
973
- <a name='L908'></a><a href='#L908'>908</a>
974
- <a name='L909'></a><a href='#L909'>909</a>
975
- <a name='L910'></a><a href='#L910'>910</a>
976
- <a name='L911'></a><a href='#L911'>911</a>
977
- <a name='L912'></a><a href='#L912'>912</a>
978
- <a name='L913'></a><a href='#L913'>913</a>
979
- <a name='L914'></a><a href='#L914'>914</a>
980
- <a name='L915'></a><a href='#L915'>915</a>
981
- <a name='L916'></a><a href='#L916'>916</a>
982
- <a name='L917'></a><a href='#L917'>917</a>
983
- <a name='L918'></a><a href='#L918'>918</a>
984
- <a name='L919'></a><a href='#L919'>919</a>
985
- <a name='L920'></a><a href='#L920'>920</a>
986
- <a name='L921'></a><a href='#L921'>921</a>
987
- <a name='L922'></a><a href='#L922'>922</a>
988
- <a name='L923'></a><a href='#L923'>923</a>
989
- <a name='L924'></a><a href='#L924'>924</a>
990
- <a name='L925'></a><a href='#L925'>925</a>
991
- <a name='L926'></a><a href='#L926'>926</a>
992
- <a name='L927'></a><a href='#L927'>927</a>
993
- <a name='L928'></a><a href='#L928'>928</a>
994
- <a name='L929'></a><a href='#L929'>929</a>
995
- <a name='L930'></a><a href='#L930'>930</a>
996
- <a name='L931'></a><a href='#L931'>931</a>
997
- <a name='L932'></a><a href='#L932'>932</a>
998
- <a name='L933'></a><a href='#L933'>933</a>
999
- <a name='L934'></a><a href='#L934'>934</a>
1000
- <a name='L935'></a><a href='#L935'>935</a>
1001
- <a name='L936'></a><a href='#L936'>936</a>
1002
- <a name='L937'></a><a href='#L937'>937</a>
1003
- <a name='L938'></a><a href='#L938'>938</a>
1004
- <a name='L939'></a><a href='#L939'>939</a>
1005
- <a name='L940'></a><a href='#L940'>940</a>
1006
- <a name='L941'></a><a href='#L941'>941</a>
1007
- <a name='L942'></a><a href='#L942'>942</a>
1008
- <a name='L943'></a><a href='#L943'>943</a>
1009
- <a name='L944'></a><a href='#L944'>944</a>
1010
- <a name='L945'></a><a href='#L945'>945</a>
1011
- <a name='L946'></a><a href='#L946'>946</a>
1012
- <a name='L947'></a><a href='#L947'>947</a>
1013
- <a name='L948'></a><a href='#L948'>948</a>
1014
- <a name='L949'></a><a href='#L949'>949</a>
1015
- <a name='L950'></a><a href='#L950'>950</a>
1016
- <a name='L951'></a><a href='#L951'>951</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
1017
- <span class="cline-any cline-yes">1x</span>
1018
- <span class="cline-any cline-yes">1x</span>
1019
- <span class="cline-any cline-yes">1x</span>
1020
- <span class="cline-any cline-yes">1x</span>
1021
- <span class="cline-any cline-yes">1x</span>
1022
- <span class="cline-any cline-yes">1x</span>
1023
- <span class="cline-any cline-yes">1x</span>
1024
- <span class="cline-any cline-yes">1x</span>
1025
- <span class="cline-any cline-yes">1x</span>
1026
- <span class="cline-any cline-yes">1x</span>
1027
- <span class="cline-any cline-yes">1x</span>
1028
- <span class="cline-any cline-yes">1x</span>
1029
- <span class="cline-any cline-yes">1x</span>
1030
- <span class="cline-any cline-yes">1x</span>
1031
- <span class="cline-any cline-yes">1x</span>
1032
- <span class="cline-any cline-yes">1x</span>
1033
- <span class="cline-any cline-yes">167x</span>
1034
- <span class="cline-any cline-yes">167x</span>
1035
- <span class="cline-any cline-yes">167x</span>
1036
- <span class="cline-any cline-yes">167x</span>
1037
- <span class="cline-any cline-yes">167x</span>
1038
- <span class="cline-any cline-yes">167x</span>
1039
- <span class="cline-any cline-yes">167x</span>
1040
- <span class="cline-any cline-yes">167x</span>
1041
- <span class="cline-any cline-yes">167x</span>
1042
- <span class="cline-any cline-yes">167x</span>
1043
- <span class="cline-any cline-yes">167x</span>
1044
- <span class="cline-any cline-yes">167x</span>
1045
- <span class="cline-any cline-yes">167x</span>
772
+ <a name='L707'></a><a href='#L707'>707</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
773
+ <span class="cline-any cline-yes">1x</span>
774
+ <span class="cline-any cline-yes">1x</span>
775
+ <span class="cline-any cline-yes">1x</span>
776
+ <span class="cline-any cline-yes">1x</span>
777
+ <span class="cline-any cline-yes">1x</span>
778
+ <span class="cline-any cline-yes">1x</span>
779
+ <span class="cline-any cline-yes">1x</span>
780
+ <span class="cline-any cline-yes">1x</span>
781
+ <span class="cline-any cline-yes">1x</span>
782
+ <span class="cline-any cline-yes">1x</span>
783
+ <span class="cline-any cline-yes">1x</span>
784
+ <span class="cline-any cline-yes">1x</span>
785
+ <span class="cline-any cline-yes">1x</span>
786
+ <span class="cline-any cline-yes">1x</span>
787
+ <span class="cline-any cline-yes">1x</span>
788
+ <span class="cline-any cline-yes">1x</span>
789
+ <span class="cline-any cline-yes">164x</span>
790
+ <span class="cline-any cline-yes">164x</span>
791
+ <span class="cline-any cline-yes">164x</span>
792
+ <span class="cline-any cline-yes">164x</span>
793
+ <span class="cline-any cline-yes">164x</span>
794
+ <span class="cline-any cline-yes">164x</span>
795
+ <span class="cline-any cline-yes">164x</span>
796
+ <span class="cline-any cline-yes">164x</span>
1046
797
  <span class="cline-any cline-yes">1x</span>
1047
798
  <span class="cline-any cline-yes">1x</span>
1048
799
  <span class="cline-any cline-no">&nbsp;</span>
@@ -1054,11 +805,6 @@
1054
805
  <span class="cline-any cline-yes">4x</span>
1055
806
  <span class="cline-any cline-yes">4x</span>
1056
807
  <span class="cline-any cline-yes">4x</span>
1057
- <span class="cline-any cline-yes">2x</span>
1058
- <span class="cline-any cline-yes">4x</span>
1059
- <span class="cline-any cline-yes">4x</span>
1060
- <span class="cline-any cline-yes">4x</span>
1061
- <span class="cline-any cline-yes">4x</span>
1062
808
  <span class="cline-any cline-yes">4x</span>
1063
809
  <span class="cline-any cline-yes">4x</span>
1064
810
  <span class="cline-any cline-yes">4x</span>
@@ -1079,9 +825,6 @@
1079
825
  <span class="cline-any cline-yes">4x</span>
1080
826
  <span class="cline-any cline-yes">4x</span>
1081
827
  <span class="cline-any cline-yes">4x</span>
1082
- <span class="cline-any cline-yes">2x</span>
1083
- <span class="cline-any cline-yes">4x</span>
1084
- <span class="cline-any cline-yes">4x</span>
1085
828
  <span class="cline-any cline-yes">4x</span>
1086
829
  <span class="cline-any cline-yes">4x</span>
1087
830
  <span class="cline-any cline-yes">4x</span>
@@ -1102,18 +845,12 @@
1102
845
  <span class="cline-any cline-yes">5x</span>
1103
846
  <span class="cline-any cline-yes">5x</span>
1104
847
  <span class="cline-any cline-yes">5x</span>
1105
- <span class="cline-any cline-yes">3x</span>
1106
- <span class="cline-any cline-yes">5x</span>
1107
- <span class="cline-any cline-yes">5x</span>
1108
848
  <span class="cline-any cline-yes">5x</span>
1109
849
  <span class="cline-any cline-yes">5x</span>
1110
850
  <span class="cline-any cline-yes">5x</span>
1111
851
  <span class="cline-any cline-yes">5x</span>
1112
852
  <span class="cline-any cline-yes">5x</span>
1113
853
  <span class="cline-any cline-yes">5x</span>
1114
- <span class="cline-any cline-yes">9x</span>
1115
- <span class="cline-any cline-yes">5x</span>
1116
- <span class="cline-any cline-yes">5x</span>
1117
854
  <span class="cline-any cline-yes">5x</span>
1118
855
  <span class="cline-any cline-yes">5x</span>
1119
856
  <span class="cline-any cline-yes">5x</span>
@@ -1147,9 +884,6 @@
1147
884
  <span class="cline-any cline-no">&nbsp;</span>
1148
885
  <span class="cline-any cline-no">&nbsp;</span>
1149
886
  <span class="cline-any cline-no">&nbsp;</span>
1150
- <span class="cline-any cline-no">&nbsp;</span>
1151
- <span class="cline-any cline-no">&nbsp;</span>
1152
- <span class="cline-any cline-no">&nbsp;</span>
1153
887
  <span class="cline-any cline-yes">1x</span>
1154
888
  <span class="cline-any cline-yes">1x</span>
1155
889
  <span class="cline-any cline-yes">51x</span>
@@ -1158,18 +892,10 @@
1158
892
  <span class="cline-any cline-yes">46x</span>
1159
893
  <span class="cline-any cline-yes">46x</span>
1160
894
  <span class="cline-any cline-yes">46x</span>
1161
- <span class="cline-any cline-yes">39x</span>
1162
- <span class="cline-any cline-yes">46x</span>
1163
- <span class="cline-any cline-yes">46x</span>
1164
895
  <span class="cline-any cline-yes">46x</span>
1165
896
  <span class="cline-any cline-yes">46x</span>
1166
897
  <span class="cline-any cline-yes">46x</span>
1167
898
  <span class="cline-any cline-yes">46x</span>
1168
- <span class="cline-any cline-yes">46x</span>
1169
- <span class="cline-any cline-yes">46x</span>
1170
- <span class="cline-any cline-yes">77x</span>
1171
- <span class="cline-any cline-yes">77x</span>
1172
- <span class="cline-any cline-yes">77x</span>
1173
899
  <span class="cline-any cline-yes">77x</span>
1174
900
  <span class="cline-any cline-yes">77x</span>
1175
901
  <span class="cline-any cline-yes">64x</span>
@@ -1216,8 +942,6 @@
1216
942
  <span class="cline-any cline-yes">64x</span>
1217
943
  <span class="cline-any cline-yes">64x</span>
1218
944
  <span class="cline-any cline-yes">64x</span>
1219
- <span class="cline-any cline-yes">64x</span>
1220
- <span class="cline-any cline-yes">64x</span>
1221
945
  <span class="cline-any cline-yes">77x</span>
1222
946
  <span class="cline-any cline-yes">68x</span>
1223
947
  <span class="cline-any cline-yes">68x</span>
@@ -1254,10 +978,6 @@
1254
978
  <span class="cline-any cline-yes">39x</span>
1255
979
  <span class="cline-any cline-yes">41x</span>
1256
980
  <span class="cline-any cline-yes">41x</span>
1257
- <span class="cline-any cline-yes">37x</span>
1258
- <span class="cline-any cline-yes">41x</span>
1259
- <span class="cline-any cline-yes">41x</span>
1260
- <span class="cline-any cline-yes">3x</span>
1261
981
  <span class="cline-any cline-yes">41x</span>
1262
982
  <span class="cline-any cline-yes">39x</span>
1263
983
  <span class="cline-any cline-yes">39x</span>
@@ -1304,22 +1024,6 @@
1304
1024
  <span class="cline-any cline-no">&nbsp;</span>
1305
1025
  <span class="cline-any cline-no">&nbsp;</span>
1306
1026
  <span class="cline-any cline-no">&nbsp;</span>
1307
- <span class="cline-any cline-no">&nbsp;</span>
1308
- <span class="cline-any cline-no">&nbsp;</span>
1309
- <span class="cline-any cline-no">&nbsp;</span>
1310
- <span class="cline-any cline-no">&nbsp;</span>
1311
- <span class="cline-any cline-no">&nbsp;</span>
1312
- <span class="cline-any cline-no">&nbsp;</span>
1313
- <span class="cline-any cline-no">&nbsp;</span>
1314
- <span class="cline-any cline-no">&nbsp;</span>
1315
- <span class="cline-any cline-no">&nbsp;</span>
1316
- <span class="cline-any cline-no">&nbsp;</span>
1317
- <span class="cline-any cline-no">&nbsp;</span>
1318
- <span class="cline-any cline-no">&nbsp;</span>
1319
- <span class="cline-any cline-no">&nbsp;</span>
1320
- <span class="cline-any cline-no">&nbsp;</span>
1321
- <span class="cline-any cline-no">&nbsp;</span>
1322
- <span class="cline-any cline-no">&nbsp;</span>
1323
1027
  <span class="cline-any cline-yes">1x</span>
1324
1028
  <span class="cline-any cline-yes">1x</span>
1325
1029
  <span class="cline-any cline-no">&nbsp;</span>
@@ -1329,254 +1033,159 @@
1329
1033
  <span class="cline-any cline-no">&nbsp;</span>
1330
1034
  <span class="cline-any cline-no">&nbsp;</span>
1331
1035
  <span class="cline-any cline-no">&nbsp;</span>
1332
- <span class="cline-any cline-no">&nbsp;</span>
1333
- <span class="cline-any cline-no">&nbsp;</span>
1334
1036
  <span class="cline-any cline-yes">1x</span>
1335
1037
  <span class="cline-any cline-yes">1x</span>
1336
- <span class="cline-any cline-yes">65x</span>
1337
- <span class="cline-any cline-yes">65x</span>
1338
- <span class="cline-any cline-yes">65x</span>
1339
- <span class="cline-any cline-yes">65x</span>
1340
- <span class="cline-any cline-yes">65x</span>
1341
- <span class="cline-any cline-yes">65x</span>
1342
- <span class="cline-any cline-yes">65x</span>
1343
- <span class="cline-any cline-yes">65x</span>
1344
- <span class="cline-any cline-yes">65x</span>
1345
- <span class="cline-any cline-yes">65x</span>
1346
- <span class="cline-any cline-yes">65x</span>
1347
- <span class="cline-any cline-yes">65x</span>
1348
- <span class="cline-any cline-yes">65x</span>
1349
- <span class="cline-any cline-yes">63x</span>
1350
- <span class="cline-any cline-yes">65x</span>
1351
- <span class="cline-any cline-yes">2x</span>
1352
- <span class="cline-any cline-yes">2x</span>
1038
+ <span class="cline-any cline-yes">62x</span>
1039
+ <span class="cline-any cline-yes">62x</span>
1040
+ <span class="cline-any cline-yes">62x</span>
1041
+ <span class="cline-any cline-yes">62x</span>
1042
+ <span class="cline-any cline-yes">62x</span>
1043
+ <span class="cline-any cline-yes">62x</span>
1044
+ <span class="cline-any cline-yes">62x</span>
1045
+ <span class="cline-any cline-yes">60x</span>
1046
+ <span class="cline-any cline-yes">62x</span>
1353
1047
  <span class="cline-any cline-yes">2x</span>
1354
1048
  <span class="cline-any cline-yes">2x</span>
1355
1049
  <span class="cline-any cline-yes">2x</span>
1356
1050
  <span class="cline-any cline-yes">2x</span>
1357
1051
  <span class="cline-any cline-yes">2x</span>
1358
1052
  <span class="cline-any cline-yes">2x</span>
1359
- <span class="cline-any cline-yes">63x</span>
1360
- <span class="cline-any cline-yes">63x</span>
1361
- <span class="cline-any cline-yes">63x</span>
1362
- <span class="cline-any cline-yes">63x</span>
1363
- <span class="cline-any cline-yes">63x</span>
1364
- <span class="cline-any cline-yes">63x</span>
1365
- <span class="cline-any cline-yes">65x</span>
1366
- <span class="cline-any cline-yes">1x</span>
1367
- <span class="cline-any cline-yes">1x</span>
1368
- <span class="cline-any cline-yes">1x</span>
1053
+ <span class="cline-any cline-yes">60x</span>
1054
+ <span class="cline-any cline-yes">60x</span>
1055
+ <span class="cline-any cline-yes">62x</span>
1369
1056
  <span class="cline-any cline-yes">1x</span>
1370
1057
  <span class="cline-any cline-yes">1x</span>
1371
1058
  <span class="cline-any cline-yes">1x</span>
1372
1059
  <span class="cline-any cline-yes">1x</span>
1373
1060
  <span class="cline-any cline-yes">62x</span>
1374
- <span class="cline-any cline-yes">65x</span>
1375
- <span class="cline-any cline-yes">55x</span>
1376
- <span class="cline-any cline-yes">65x</span>
1377
1061
  <span class="cline-any cline-yes">8x</span>
1378
1062
  <span class="cline-any cline-yes">8x</span>
1379
1063
  <span class="cline-any cline-yes">8x</span>
1380
1064
  <span class="cline-any cline-yes">8x</span>
1381
1065
  <span class="cline-any cline-yes">8x</span>
1382
- <span class="cline-any cline-yes">54x</span>
1383
- <span class="cline-any cline-yes">54x</span>
1384
- <span class="cline-any cline-yes">54x</span>
1385
- <span class="cline-any cline-yes">54x</span>
1386
- <span class="cline-any cline-yes">54x</span>
1387
- <span class="cline-any cline-yes">54x</span>
1388
- <span class="cline-any cline-yes">54x</span>
1389
- <span class="cline-any cline-yes">52x</span>
1390
- <span class="cline-any cline-yes">65x</span>
1391
- <span class="cline-any cline-yes">65x</span>
1392
- <span class="cline-any cline-yes">65x</span>
1393
- <span class="cline-any cline-yes">65x</span>
1394
- <span class="cline-any cline-yes">65x</span>
1395
- <span class="cline-any cline-yes">65x</span>
1396
- <span class="cline-any cline-yes">65x</span>
1397
- <span class="cline-any cline-yes">60x</span>
1398
- <span class="cline-any cline-yes">56x</span>
1399
- <span class="cline-any cline-yes">56x</span>
1400
- <span class="cline-any cline-yes">166x</span>
1401
- <span class="cline-any cline-yes">60x</span>
1402
- <span class="cline-any cline-yes">55x</span>
1403
- <span class="cline-any cline-yes">60x</span>
1404
- <span class="cline-any cline-yes">54x</span>
1405
- <span class="cline-any cline-yes">54x</span>
1406
- <span class="cline-any cline-yes">54x</span>
1407
- <span class="cline-any cline-yes">3x</span>
1408
- <span class="cline-any cline-yes">3x</span>
1409
- <span class="cline-any cline-yes">54x</span>
1410
- <span class="cline-any cline-yes">65x</span>
1411
- <span class="cline-any cline-yes">65x</span>
1412
- <span class="cline-any cline-yes">65x</span>
1413
- <span class="cline-any cline-yes">65x</span>
1414
1066
  <span class="cline-any cline-yes">51x</span>
1415
1067
  <span class="cline-any cline-yes">51x</span>
1416
1068
  <span class="cline-any cline-yes">51x</span>
1417
1069
  <span class="cline-any cline-yes">51x</span>
1418
1070
  <span class="cline-any cline-yes">51x</span>
1419
- <span class="cline-any cline-yes">52x</span>
1420
- <span class="cline-any cline-yes">65x</span>
1421
- <span class="cline-any cline-yes">65x</span>
1422
- <span class="cline-any cline-yes">65x</span>
1423
- <span class="cline-any cline-yes">65x</span>
1424
- <span class="cline-any cline-yes">14x</span>
1425
- <span class="cline-any cline-yes">14x</span>
1426
- <span class="cline-any cline-yes">14x</span>
1427
- <span class="cline-any cline-yes">2x</span>
1428
- <span class="cline-any cline-yes">14x</span>
1429
- <span class="cline-any cline-yes">2x</span>
1071
+ <span class="cline-any cline-yes">51x</span>
1072
+ <span class="cline-any cline-yes">51x</span>
1073
+ <span class="cline-any cline-yes">62x</span>
1074
+ <span class="cline-any cline-yes">62x</span>
1075
+ <span class="cline-any cline-yes">62x</span>
1076
+ <span class="cline-any cline-yes">62x</span>
1077
+ <span class="cline-any cline-yes">62x</span>
1078
+ <span class="cline-any cline-yes">55x</span>
1079
+ <span class="cline-any cline-yes">55x</span>
1080
+ <span class="cline-any cline-yes">55x</span>
1081
+ <span class="cline-any cline-yes">55x</span>
1082
+ <span class="cline-any cline-yes">55x</span>
1083
+ <span class="cline-any cline-yes">55x</span>
1084
+ <span class="cline-any cline-yes">55x</span>
1085
+ <span class="cline-any cline-yes">39x</span>
1086
+ <span class="cline-any cline-yes">62x</span>
1087
+ <span class="cline-any cline-yes">62x</span>
1088
+ <span class="cline-any cline-yes">62x</span>
1089
+ <span class="cline-any cline-yes">48x</span>
1090
+ <span class="cline-any cline-yes">48x</span>
1091
+ <span class="cline-any cline-yes">48x</span>
1092
+ <span class="cline-any cline-yes">48x</span>
1093
+ <span class="cline-any cline-yes">62x</span>
1094
+ <span class="cline-any cline-yes">62x</span>
1095
+ <span class="cline-any cline-yes">22x</span>
1430
1096
  <span class="cline-any cline-yes">2x</span>
1431
1097
  <span class="cline-any cline-yes">2x</span>
1432
1098
  <span class="cline-any cline-yes">2x</span>
1433
- <span class="cline-any cline-yes">1x</span>
1434
1099
  <span class="cline-any cline-yes">2x</span>
1435
1100
  <span class="cline-any cline-yes">2x</span>
1436
1101
  <span class="cline-any cline-yes">2x</span>
1437
1102
  <span class="cline-any cline-yes">2x</span>
1438
- <span class="cline-any cline-yes">12x</span>
1439
- <span class="cline-any cline-yes">12x</span>
1440
- <span class="cline-any cline-yes">12x</span>
1441
- <span class="cline-any cline-yes">12x</span>
1442
- <span class="cline-any cline-yes">12x</span>
1443
- <span class="cline-any cline-yes">38x</span>
1444
- <span class="cline-any cline-yes">38x</span>
1445
- <span class="cline-any cline-yes">51x</span>
1446
- <span class="cline-any cline-yes">47x</span>
1447
- <span class="cline-any cline-yes">38x</span>
1448
- <span class="cline-any cline-yes">38x</span>
1449
- <span class="cline-any cline-yes">38x</span>
1450
- <span class="cline-any cline-yes">38x</span>
1451
- <span class="cline-any cline-yes">38x</span>
1452
- <span class="cline-any cline-yes">38x</span>
1453
- <span class="cline-any cline-yes">38x</span>
1454
- <span class="cline-any cline-yes">38x</span>
1455
- <span class="cline-any cline-yes">38x</span>
1456
- <span class="cline-any cline-yes">38x</span>
1457
- <span class="cline-any cline-yes">38x</span>
1458
- <span class="cline-any cline-yes">51x</span>
1459
- <span class="cline-any cline-yes">38x</span>
1460
- <span class="cline-any cline-yes">65x</span>
1461
- <span class="cline-any cline-yes">36x</span>
1462
- <span class="cline-any cline-yes">49x</span>
1463
- <span class="cline-any cline-yes">49x</span>
1464
- <span class="cline-any cline-yes">48x</span>
1465
- <span class="cline-any cline-yes">49x</span>
1466
- <span class="cline-any cline-yes">49x</span>
1467
- <span class="cline-any cline-yes">14x</span>
1468
- <span class="cline-any cline-yes">36x</span>
1469
- <span class="cline-any cline-yes">36x</span>
1470
- <span class="cline-any cline-yes">38x</span>
1471
- <span class="cline-any cline-yes">38x</span>
1472
- <span class="cline-any cline-yes">38x</span>
1473
- <span class="cline-any cline-yes">51x</span>
1474
- <span class="cline-any cline-yes">38x</span>
1475
- <span class="cline-any cline-yes">65x</span>
1476
- <span class="cline-any cline-yes">36x</span>
1477
- <span class="cline-any cline-yes">49x</span>
1478
- <span class="cline-any cline-yes">49x</span>
1479
- <span class="cline-any cline-yes">48x</span>
1480
- <span class="cline-any cline-yes">49x</span>
1481
- <span class="cline-any cline-yes">49x</span>
1482
- <span class="cline-any cline-yes">6x</span>
1483
- <span class="cline-any cline-yes">36x</span>
1484
- <span class="cline-any cline-yes">36x</span>
1485
- <span class="cline-any cline-yes">38x</span>
1486
- <span class="cline-any cline-yes">38x</span>
1487
- <span class="cline-any cline-yes">65x</span>
1488
- <span class="cline-any cline-yes">11x</span>
1489
- <span class="cline-any cline-yes">65x</span>
1490
- <span class="cline-any cline-yes">11x</span>
1491
- <span class="cline-any cline-yes">11x</span>
1492
- <span class="cline-any cline-yes">11x</span>
1103
+ <span class="cline-any cline-yes">20x</span>
1104
+ <span class="cline-any cline-yes">20x</span>
1105
+ <span class="cline-any cline-yes">20x</span>
1106
+ <span class="cline-any cline-yes">20x</span>
1107
+ <span class="cline-any cline-yes">20x</span>
1108
+ <span class="cline-any cline-yes">27x</span>
1109
+ <span class="cline-any cline-yes">27x</span>
1110
+ <span class="cline-any cline-yes">27x</span>
1111
+ <span class="cline-any cline-yes">27x</span>
1112
+ <span class="cline-any cline-yes">27x</span>
1113
+ <span class="cline-any cline-yes">27x</span>
1114
+ <span class="cline-any cline-yes">62x</span>
1115
+ <span class="cline-any cline-yes">25x</span>
1116
+ <span class="cline-any cline-yes">34x</span>
1117
+ <span class="cline-any cline-yes">34x</span>
1118
+ <span class="cline-any cline-yes">9x</span>
1119
+ <span class="cline-any cline-yes">25x</span>
1120
+ <span class="cline-any cline-yes">25x</span>
1121
+ <span class="cline-any cline-yes">27x</span>
1122
+ <span class="cline-any cline-yes">62x</span>
1123
+ <span class="cline-any cline-yes">25x</span>
1124
+ <span class="cline-any cline-yes">34x</span>
1125
+ <span class="cline-any cline-yes">34x</span>
1126
+ <span class="cline-any cline-yes">4x</span>
1127
+ <span class="cline-any cline-yes">25x</span>
1128
+ <span class="cline-any cline-yes">25x</span>
1129
+ <span class="cline-any cline-yes">27x</span>
1130
+ <span class="cline-any cline-yes">62x</span>
1493
1131
  <span class="cline-any cline-yes">11x</span>
1494
1132
  <span class="cline-any cline-yes">11x</span>
1495
1133
  <span class="cline-any cline-yes">11x</span>
1496
- <span class="cline-any cline-yes">65x</span>
1497
- <span class="cline-any cline-yes">35x</span>
1498
- <span class="cline-any cline-yes">35x</span>
1499
- <span class="cline-any cline-yes">35x</span>
1500
- <span class="cline-any cline-yes">35x</span>
1501
- <span class="cline-any cline-yes">35x</span>
1502
- <span class="cline-any cline-yes">65x</span>
1503
- <span class="cline-any cline-yes">35x</span>
1504
- <span class="cline-any cline-yes">33x</span>
1505
- <span class="cline-any cline-yes">33x</span>
1506
- <span class="cline-any cline-yes">33x</span>
1507
- <span class="cline-any cline-yes">33x</span>
1508
- <span class="cline-any cline-yes">35x</span>
1134
+ <span class="cline-any cline-yes">62x</span>
1135
+ <span class="cline-any cline-yes">25x</span>
1136
+ <span class="cline-any cline-yes">25x</span>
1137
+ <span class="cline-any cline-yes">62x</span>
1138
+ <span class="cline-any cline-yes">25x</span>
1139
+ <span class="cline-any cline-yes">23x</span>
1140
+ <span class="cline-any cline-yes">25x</span>
1509
1141
  <span class="cline-any cline-yes">2x</span>
1510
1142
  <span class="cline-any cline-yes">2x</span>
1511
- <span class="cline-any cline-yes">35x</span>
1512
- <span class="cline-any cline-yes">38x</span>
1513
- <span class="cline-any cline-yes">65x</span>
1514
- <span class="cline-any cline-yes">29x</span>
1515
- <span class="cline-any cline-yes">29x</span>
1516
- <span class="cline-any cline-yes">29x</span>
1517
- <span class="cline-any cline-yes">29x</span>
1518
- <span class="cline-any cline-yes">29x</span>
1519
- <span class="cline-any cline-yes">29x</span>
1520
- <span class="cline-any cline-yes">29x</span>
1521
- <span class="cline-any cline-yes">29x</span>
1522
- <span class="cline-any cline-yes">29x</span>
1523
- <span class="cline-any cline-yes">29x</span>
1524
- <span class="cline-any cline-yes">29x</span>
1525
- <span class="cline-any cline-yes">29x</span>
1526
- <span class="cline-any cline-yes">29x</span>
1527
- <span class="cline-any cline-yes">29x</span>
1528
- <span class="cline-any cline-yes">26x</span>
1529
- <span class="cline-any cline-yes">26x</span>
1530
- <span class="cline-any cline-yes">26x</span>
1531
- <span class="cline-any cline-yes">26x</span>
1532
- <span class="cline-any cline-yes">26x</span>
1533
- <span class="cline-any cline-yes">26x</span>
1534
- <span class="cline-any cline-yes">26x</span>
1535
- <span class="cline-any cline-yes">26x</span>
1536
- <span class="cline-any cline-yes">29x</span>
1537
- <span class="cline-any cline-yes">26x</span>
1538
- <span class="cline-any cline-yes">26x</span>
1539
- <span class="cline-any cline-yes">26x</span>
1540
- <span class="cline-any cline-yes">26x</span>
1541
- <span class="cline-any cline-yes">26x</span>
1542
- <span class="cline-any cline-yes">29x</span>
1543
- <span class="cline-any cline-yes">29x</span>
1544
- <span class="cline-any cline-yes">29x</span>
1545
- <span class="cline-any cline-yes">29x</span>
1546
- <span class="cline-any cline-yes">29x</span>
1547
- <span class="cline-any cline-yes">29x</span>
1548
- <span class="cline-any cline-yes">29x</span>
1549
- <span class="cline-any cline-yes">29x</span>
1550
- <span class="cline-any cline-yes">29x</span>
1551
- <span class="cline-any cline-yes">29x</span>
1552
- <span class="cline-any cline-yes">29x</span>
1553
- <span class="cline-any cline-yes">29x</span>
1554
- <span class="cline-any cline-yes">29x</span>
1555
- <span class="cline-any cline-yes">29x</span>
1556
- <span class="cline-any cline-yes">29x</span>
1557
- <span class="cline-any cline-yes">29x</span>
1558
- <span class="cline-any cline-yes">29x</span>
1559
- <span class="cline-any cline-yes">29x</span>
1560
- <span class="cline-any cline-yes">29x</span>
1561
- <span class="cline-any cline-yes">29x</span>
1562
- <span class="cline-any cline-yes">29x</span>
1563
- <span class="cline-any cline-yes">9x</span>
1564
- <span class="cline-any cline-yes">9x</span>
1565
- <span class="cline-any cline-yes">9x</span>
1566
- <span class="cline-any cline-yes">9x</span>
1567
- <span class="cline-any cline-yes">65x</span>
1568
- <span class="cline-any cline-yes">65x</span>
1569
- <span class="cline-any cline-yes">7x</span>
1570
- <span class="cline-any cline-yes">65x</span>
1571
- <span class="cline-any cline-yes">65x</span>
1572
- <span class="cline-any cline-yes">65x</span>
1573
- <span class="cline-any cline-yes">65x</span>
1574
- <span class="cline-any cline-yes">65x</span>
1575
- <span class="cline-any cline-yes">65x</span>
1576
- <span class="cline-any cline-yes">65x</span>
1577
- <span class="cline-any cline-yes">65x</span>
1578
- <span class="cline-any cline-yes">65x</span>
1579
- <span class="cline-any cline-yes">65x</span>
1143
+ <span class="cline-any cline-yes">25x</span>
1144
+ <span class="cline-any cline-yes">27x</span>
1145
+ <span class="cline-any cline-yes">27x</span>
1146
+ <span class="cline-any cline-yes">27x</span>
1147
+ <span class="cline-any cline-yes">27x</span>
1148
+ <span class="cline-any cline-yes">27x</span>
1149
+ <span class="cline-any cline-yes">27x</span>
1150
+ <span class="cline-any cline-yes">27x</span>
1151
+ <span class="cline-any cline-yes">27x</span>
1152
+ <span class="cline-any cline-yes">27x</span>
1153
+ <span class="cline-any cline-yes">25x</span>
1154
+ <span class="cline-any cline-yes">25x</span>
1155
+ <span class="cline-any cline-yes">25x</span>
1156
+ <span class="cline-any cline-yes">27x</span>
1157
+ <span class="cline-any cline-yes">25x</span>
1158
+ <span class="cline-any cline-yes">25x</span>
1159
+ <span class="cline-any cline-yes">27x</span>
1160
+ <span class="cline-any cline-yes">27x</span>
1161
+ <span class="cline-any cline-yes">27x</span>
1162
+ <span class="cline-any cline-yes">27x</span>
1163
+ <span class="cline-any cline-yes">27x</span>
1164
+ <span class="cline-any cline-yes">27x</span>
1165
+ <span class="cline-any cline-yes">27x</span>
1166
+ <span class="cline-any cline-yes">27x</span>
1167
+ <span class="cline-any cline-yes">27x</span>
1168
+ <span class="cline-any cline-yes">27x</span>
1169
+ <span class="cline-any cline-yes">27x</span>
1170
+ <span class="cline-any cline-yes">27x</span>
1171
+ <span class="cline-any cline-yes">27x</span>
1172
+ <span class="cline-any cline-yes">27x</span>
1173
+ <span class="cline-any cline-yes">27x</span>
1174
+ <span class="cline-any cline-yes">27x</span>
1175
+ <span class="cline-any cline-no">&nbsp;</span>
1176
+ <span class="cline-any cline-no">&nbsp;</span>
1177
+ <span class="cline-any cline-no">&nbsp;</span>
1178
+ <span class="cline-any cline-no">&nbsp;</span>
1179
+ <span class="cline-any cline-yes">62x</span>
1180
+ <span class="cline-any cline-yes">62x</span>
1181
+ <span class="cline-any cline-no">&nbsp;</span>
1182
+ <span class="cline-any cline-yes">62x</span>
1183
+ <span class="cline-any cline-yes">62x</span>
1184
+ <span class="cline-any cline-yes">62x</span>
1185
+ <span class="cline-any cline-yes">62x</span>
1186
+ <span class="cline-any cline-yes">62x</span>
1187
+ <span class="cline-any cline-yes">62x</span>
1188
+ <span class="cline-any cline-yes">62x</span>
1580
1189
  <span class="cline-any cline-yes">5x</span>
1581
1190
  <span class="cline-any cline-yes">1x</span>
1582
1191
  <span class="cline-any cline-yes">1x</span>
@@ -1586,12 +1195,7 @@
1586
1195
  <span class="cline-any cline-yes">4x</span>
1587
1196
  <span class="cline-any cline-yes">4x</span>
1588
1197
  <span class="cline-any cline-yes">4x</span>
1589
- <span class="cline-any cline-yes">4x</span>
1590
- <span class="cline-any cline-yes">4x</span>
1591
- <span class="cline-any cline-yes">4x</span>
1592
- <span class="cline-any cline-yes">4x</span>
1593
- <span class="cline-any cline-yes">4x</span>
1594
- <span class="cline-any cline-yes">65x</span>
1198
+ <span class="cline-any cline-yes">62x</span>
1595
1199
  <span class="cline-any cline-yes">1x</span>
1596
1200
  <span class="cline-any cline-yes">1x</span>
1597
1201
  <span class="cline-any cline-yes">61x</span>
@@ -1632,16 +1236,9 @@
1632
1236
  <span class="cline-any cline-yes">61x</span>
1633
1237
  <span class="cline-any cline-yes">11x</span>
1634
1238
  <span class="cline-any cline-yes">11x</span>
1635
- <span class="cline-any cline-yes">11x</span>
1636
- <span class="cline-any cline-yes">11x</span>
1637
1239
  <span class="cline-any cline-yes">42x</span>
1638
1240
  <span class="cline-any cline-yes">42x</span>
1639
1241
  <span class="cline-any cline-yes">42x</span>
1640
- <span class="cline-any cline-yes">42x</span>
1641
- <span class="cline-any cline-yes">84x</span>
1642
- <span class="cline-any cline-yes">84x</span>
1643
- <span class="cline-any cline-yes">84x</span>
1644
- <span class="cline-any cline-yes">84x</span>
1645
1242
  <span class="cline-any cline-yes">84x</span>
1646
1243
  <span class="cline-any cline-yes">84x</span>
1647
1244
  <span class="cline-any cline-yes">42x</span>
@@ -1667,17 +1264,6 @@
1667
1264
  <span class="cline-any cline-yes">61x</span>
1668
1265
  <span class="cline-any cline-yes">61x</span>
1669
1266
  <span class="cline-any cline-yes">61x</span>
1670
- <span class="cline-any cline-yes">61x</span>
1671
- <span class="cline-any cline-yes">61x</span>
1672
- <span class="cline-any cline-yes">61x</span>
1673
- <span class="cline-any cline-yes">61x</span>
1674
- <span class="cline-any cline-yes">61x</span>
1675
- <span class="cline-any cline-yes">61x</span>
1676
- <span class="cline-any cline-yes">61x</span>
1677
- <span class="cline-any cline-yes">61x</span>
1678
- <span class="cline-any cline-yes">32x</span>
1679
- <span class="cline-any cline-yes">32x</span>
1680
- <span class="cline-any cline-yes">32x</span>
1681
1267
  <span class="cline-any cline-yes">32x</span>
1682
1268
  <span class="cline-any cline-yes">32x</span>
1683
1269
  <span class="cline-any cline-yes">32x</span>
@@ -1695,8 +1281,6 @@
1695
1281
  <span class="cline-any cline-yes">24x</span>
1696
1282
  <span class="cline-any cline-yes">30x</span>
1697
1283
  <span class="cline-any cline-yes">3x</span>
1698
- <span class="cline-any cline-yes">3x</span>
1699
- <span class="cline-any cline-yes">3x</span>
1700
1284
  <span class="cline-any cline-yes">30x</span>
1701
1285
  <span class="cline-any cline-yes">21x</span>
1702
1286
  <span class="cline-any cline-yes">21x</span>
@@ -1715,24 +1299,12 @@
1715
1299
  <span class="cline-any cline-yes">30x</span>
1716
1300
  <span class="cline-any cline-yes">30x</span>
1717
1301
  <span class="cline-any cline-yes">30x</span>
1718
- <span class="cline-any cline-yes">30x</span>
1719
- <span class="cline-any cline-yes">30x</span>
1720
- <span class="cline-any cline-yes">30x</span>
1721
- <span class="cline-any cline-yes">30x</span>
1722
- <span class="cline-any cline-yes">30x</span>
1723
- <span class="cline-any cline-yes">30x</span>
1724
- <span class="cline-any cline-yes">2x</span>
1725
- <span class="cline-any cline-yes">2x</span>
1726
1302
  <span class="cline-any cline-yes">2x</span>
1727
1303
  <span class="cline-any cline-yes">2x</span>
1728
1304
  <span class="cline-any cline-yes">2x</span>
1729
1305
  <span class="cline-any cline-yes">61x</span>
1730
1306
  <span class="cline-any cline-yes">37x</span>
1731
1307
  <span class="cline-any cline-yes">37x</span>
1732
- <span class="cline-any cline-yes">37x</span>
1733
- <span class="cline-any cline-yes">37x</span>
1734
- <span class="cline-any cline-yes">37x</span>
1735
- <span class="cline-any cline-yes">37x</span>
1736
1308
  <span class="cline-any cline-yes">6x</span>
1737
1309
  <span class="cline-any cline-yes">6x</span>
1738
1310
  <span class="cline-any cline-yes">6x</span>
@@ -1743,11 +1315,6 @@
1743
1315
  <span class="cline-any cline-yes">1x</span>
1744
1316
  <span class="cline-any cline-yes">1x</span>
1745
1317
  <span class="cline-any cline-yes">1x</span>
1746
- <span class="cline-any cline-yes">1x</span>
1747
- <span class="cline-any cline-yes">1x</span>
1748
- <span class="cline-any cline-yes">1x</span>
1749
- <span class="cline-any cline-yes">1x</span>
1750
- <span class="cline-any cline-yes">1x</span>
1751
1318
  <span class="cline-any cline-yes">36x</span>
1752
1319
  <span class="cline-any cline-yes">36x</span>
1753
1320
  <span class="cline-any cline-yes">36x</span>
@@ -1758,22 +1325,11 @@
1758
1325
  <span class="cline-any cline-yes">36x</span>
1759
1326
  <span class="cline-any cline-yes">37x</span>
1760
1327
  <span class="cline-any cline-yes">6x</span>
1761
- <span class="cline-any cline-yes">5x</span>
1762
1328
  <span class="cline-any cline-yes">6x</span>
1763
1329
  <span class="cline-any cline-yes">37x</span>
1764
1330
  <span class="cline-any cline-yes">5x</span>
1765
1331
  <span class="cline-any cline-yes">5x</span>
1766
1332
  <span class="cline-any cline-yes">5x</span>
1767
- <span class="cline-any cline-yes">5x</span>
1768
- <span class="cline-any cline-yes">5x</span>
1769
- <span class="cline-any cline-yes">5x</span>
1770
- <span class="cline-any cline-yes">5x</span>
1771
- <span class="cline-any cline-yes">5x</span>
1772
- <span class="cline-any cline-yes">31x</span>
1773
- <span class="cline-any cline-yes">31x</span>
1774
- <span class="cline-any cline-yes">31x</span>
1775
- <span class="cline-any cline-yes">31x</span>
1776
- <span class="cline-any cline-yes">31x</span>
1777
1333
  <span class="cline-any cline-yes">31x</span>
1778
1334
  <span class="cline-any cline-yes">31x</span>
1779
1335
  <span class="cline-any cline-yes">31x</span>
@@ -1886,40 +1442,6 @@
1886
1442
  <span class="cline-any cline-no">&nbsp;</span>
1887
1443
  <span class="cline-any cline-no">&nbsp;</span>
1888
1444
  <span class="cline-any cline-no">&nbsp;</span>
1889
- <span class="cline-any cline-no">&nbsp;</span>
1890
- <span class="cline-any cline-no">&nbsp;</span>
1891
- <span class="cline-any cline-no">&nbsp;</span>
1892
- <span class="cline-any cline-no">&nbsp;</span>
1893
- <span class="cline-any cline-no">&nbsp;</span>
1894
- <span class="cline-any cline-no">&nbsp;</span>
1895
- <span class="cline-any cline-no">&nbsp;</span>
1896
- <span class="cline-any cline-no">&nbsp;</span>
1897
- <span class="cline-any cline-no">&nbsp;</span>
1898
- <span class="cline-any cline-no">&nbsp;</span>
1899
- <span class="cline-any cline-no">&nbsp;</span>
1900
- <span class="cline-any cline-no">&nbsp;</span>
1901
- <span class="cline-any cline-no">&nbsp;</span>
1902
- <span class="cline-any cline-no">&nbsp;</span>
1903
- <span class="cline-any cline-no">&nbsp;</span>
1904
- <span class="cline-any cline-no">&nbsp;</span>
1905
- <span class="cline-any cline-no">&nbsp;</span>
1906
- <span class="cline-any cline-no">&nbsp;</span>
1907
- <span class="cline-any cline-no">&nbsp;</span>
1908
- <span class="cline-any cline-no">&nbsp;</span>
1909
- <span class="cline-any cline-no">&nbsp;</span>
1910
- <span class="cline-any cline-no">&nbsp;</span>
1911
- <span class="cline-any cline-no">&nbsp;</span>
1912
- <span class="cline-any cline-no">&nbsp;</span>
1913
- <span class="cline-any cline-no">&nbsp;</span>
1914
- <span class="cline-any cline-no">&nbsp;</span>
1915
- <span class="cline-any cline-no">&nbsp;</span>
1916
- <span class="cline-any cline-no">&nbsp;</span>
1917
- <span class="cline-any cline-no">&nbsp;</span>
1918
- <span class="cline-any cline-no">&nbsp;</span>
1919
- <span class="cline-any cline-no">&nbsp;</span>
1920
- <span class="cline-any cline-no">&nbsp;</span>
1921
- <span class="cline-any cline-no">&nbsp;</span>
1922
- <span class="cline-any cline-no">&nbsp;</span>
1923
1445
  <span class="cline-any cline-yes">1x</span>
1924
1446
  <span class="cline-any cline-yes">1x</span>
1925
1447
  <span class="cline-any cline-no">&nbsp;</span>
@@ -1936,11 +1458,6 @@
1936
1458
  <span class="cline-any cline-no">&nbsp;</span>
1937
1459
  <span class="cline-any cline-no">&nbsp;</span>
1938
1460
  <span class="cline-any cline-no">&nbsp;</span>
1939
- <span class="cline-any cline-no">&nbsp;</span>
1940
- <span class="cline-any cline-no">&nbsp;</span>
1941
- <span class="cline-any cline-no">&nbsp;</span>
1942
- <span class="cline-any cline-no">&nbsp;</span>
1943
- <span class="cline-any cline-no">&nbsp;</span>
1944
1461
  <span class="cline-any cline-yes">1x</span>
1945
1462
  <span class="cline-any cline-yes">1x</span>
1946
1463
  <span class="cline-any cline-no">&nbsp;</span>
@@ -1957,11 +1474,6 @@
1957
1474
  <span class="cline-any cline-no">&nbsp;</span>
1958
1475
  <span class="cline-any cline-no">&nbsp;</span>
1959
1476
  <span class="cline-any cline-no">&nbsp;</span>
1960
- <span class="cline-any cline-no">&nbsp;</span>
1961
- <span class="cline-any cline-no">&nbsp;</span>
1962
- <span class="cline-any cline-no">&nbsp;</span>
1963
- <span class="cline-any cline-no">&nbsp;</span>
1964
- <span class="cline-any cline-no">&nbsp;</span>
1965
1477
  <span class="cline-any cline-yes">1x</span>
1966
1478
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import axios from "axios";
1967
1479
  import { BigNumber } from "bignumber.js";
@@ -1979,12 +1491,7 @@ import { FALLBACK_ASSET_ICON_URL } from "../../constants/globalConstants.jsx";
1979
1491
  export const BANNED_PARTNERS = ["stealthex", "changee", "coincraddle"];
1980
1492
  &nbsp;
1981
1493
  export class SwapspaceSwapProvider extends SwapProvider {
1982
- constructor(
1983
- apiKeysProxyUrl,
1984
- cache,
1985
- customCoinBuilder = <span class="fstat-no" title="function not covered" >(coin, network) =&gt; null,</span>
1986
- useRestrictedCoinsSet = true
1987
- ) {
1494
+ constructor(apiKeysProxyUrl, cache, customCoinBuilder = <span class="fstat-no" title="function not covered" >(coin, network) =&gt; null,</span> useRestrictedCoinsSet = true) {
1988
1495
  super();
1989
1496
  this._supportedCoins = [];
1990
1497
  this._URL = `${apiKeysProxyUrl}`;
@@ -2004,15 +1511,10 @@ export class SwapspaceSwapProvider extends SwapProvider {
2004
1511
  const loggerSource = "getDepositCurrencies";
2005
1512
  try {
2006
1513
  await this._fetchSupportedCurrenciesIfNeeded();
2007
- Logger.log(
2008
- `We have ${this._supportedCoins?.length} supported coins, getting depositable`,
2009
- loggerSource
2010
- );
1514
+ Logger.log(`We have ${this._supportedCoins?.length} supported coins, getting depositable`, loggerSource);
2011
1515
  return {
2012
1516
  result: true,
2013
- coins: this._supportedCoins
2014
- .filter((item) =&gt; item.deposit)
2015
- .map((item) =&gt; item.coin),
1517
+ coins: this._supportedCoins.filter(item =&gt; item.deposit).map(item =&gt; item.coin),
2016
1518
  };
2017
1519
  } catch (e) {
2018
1520
  if (e?.response?.status === 429) {
@@ -2029,13 +1531,10 @@ export class SwapspaceSwapProvider extends SwapProvider {
2029
1531
  const loggerSource = "getAllSupportedCurrencies";
2030
1532
  try {
2031
1533
  await this._fetchSupportedCurrenciesIfNeeded();
2032
- Logger.log(
2033
- `We have ${this._supportedCoins?.length} supported coins returning`,
2034
- loggerSource
2035
- );
1534
+ Logger.log(`We have ${this._supportedCoins?.length} supported coins returning`, loggerSource);
2036
1535
  return {
2037
1536
  result: true,
2038
- coins: this._supportedCoins.map((item) =&gt; item.coin),
1537
+ coins: this._supportedCoins.map(item =&gt; item.coin),
2039
1538
  };
2040
1539
  } catch (e) {
2041
1540
  if (e?.response?.status === 429) {
@@ -2052,20 +1551,14 @@ export class SwapspaceSwapProvider extends SwapProvider {
2052
1551
  const loggerSource = "getWithdrawalCurrencies";
2053
1552
  try {
2054
1553
  await this._fetchSupportedCurrenciesIfNeeded();
2055
- Logger.log(
2056
- `We have ${this._supportedCoins?.length} supported coins, getting withdrawable`,
2057
- loggerSource
2058
- );
1554
+ Logger.log(`We have ${this._supportedCoins?.length} supported coins, getting withdrawable`, loggerSource);
2059
1555
  return {
2060
1556
  result: true,
2061
1557
  coins: this._supportedCoins
2062
1558
  .filter(
2063
- (item) =&gt;
2064
- item.withdrawal &amp;&amp;
2065
- (!exceptCurrency ||
2066
- item.coin?.ticker !== exceptCurrency?.ticker)
1559
+ item =&gt; item.withdrawal &amp;&amp; (!exceptCurrency || item.coin?.ticker !== exceptCurrency?.ticker)
2067
1560
  )
2068
- .map((item) =&gt; item.coin),
1561
+ .map(item =&gt; item.coin),
2069
1562
  };
2070
1563
  } catch (e) {
2071
1564
  if (e?.response?.status === 429) {
@@ -2087,14 +1580,11 @@ export class SwapspaceSwapProvider extends SwapProvider {
2087
1580
  <span class="cstat-no" title="statement not covered" > try {</span>
2088
1581
  <span class="cstat-no" title="statement not covered" > let coin = coinOrTicker;</span>
2089
1582
  <span class="cstat-no" title="statement not covered" > if (!(coinOrTicker instanceof Coin)) {</span>
2090
- <span class="cstat-no" title="statement not covered" > coin = this._supportedCoins.find(</span>
2091
- <span class="cstat-no" title="statement not covered" > (i) =&gt; i.coin.ticker === coinOrTicker</span>
2092
- <span class="cstat-no" title="statement not covered" > )?.coin;</span>
1583
+ <span class="cstat-no" title="statement not covered" > coin = this._supportedCoins.find(i =&gt; i.coin.ticker === coinOrTicker)?.coin;</span>
2093
1584
  <span class="cstat-no" title="statement not covered" > }</span>
2094
1585
  <span class="cstat-no" title="statement not covered" > return (</span>
2095
- <span class="cstat-no" title="statement not covered" > this._supportedCoins.find(</span>
2096
- <span class="cstat-no" title="statement not covered" > (item) =&gt; item.coin?.ticker === coin?.ticker</span>
2097
- <span class="cstat-no" title="statement not covered" > )?.iconURL ?? FALLBACK_ASSET_ICON_URL</span>
1586
+ <span class="cstat-no" title="statement not covered" > this._supportedCoins.find(item =&gt; item.coin?.ticker === coin?.ticker)?.iconURL ??</span>
1587
+ <span class="cstat-no" title="statement not covered" > FALLBACK_ASSET_ICON_URL</span>
2098
1588
  <span class="cstat-no" title="statement not covered" > );</span>
2099
1589
  <span class="cstat-no" title="statement not covered" > } catch (e) {</span>
2100
1590
  <span class="cstat-no" title="statement not covered" > improveAndRethrow(e, loggerSource);</span>
@@ -2105,22 +1595,14 @@ export class SwapspaceSwapProvider extends SwapProvider {
2105
1595
  const loggerSource = "_fetchSupportedCurrenciesIfNeeded";
2106
1596
  try {
2107
1597
  if (!this._supportedCoins?.length) {
2108
- const rawResponse = await axios.get(
2109
- `${this._URL}/api/v2/currencies`
2110
- );
2111
- Logger.log(
2112
- `Retrieved ${rawResponse?.data?.length}`,
2113
- loggerSource
2114
- );
1598
+ const rawResponse = await axios.get(`${this._URL}/api/v2/currencies`);
1599
+ Logger.log(`Retrieved ${rawResponse?.data?.length}`, loggerSource);
2115
1600
  let allowedCoins = rawResponse?.data ?? [];
2116
1601
  Logger.log(`Allowed cnt ${allowedCoins.length}`, loggerSource);
2117
1602
  &nbsp;
2118
1603
  this._supportedCoins = allowedCoins
2119
- .map((item) =&gt; {
2120
- let coin = this._customCoinBuilder(
2121
- item.code,
2122
- item.network
2123
- );
1604
+ .map(item =&gt; {
1605
+ let coin = this._customCoinBuilder(item.code, item.network);
2124
1606
  if (!coin &amp;&amp; !this.useRestrictedCoinsSet) {
2125
1607
  /** Building coin object for coin that isn't supported OOB in Rabbit.
2126
1608
  * We are doing this way to be able to use extended coins set for swaps.
@@ -2144,9 +1626,7 @@ export class SwapspaceSwapProvider extends SwapProvider {
2144
1626
  // Rolling back to original name if our processing leads in empty name
2145
1627
  name = item.name;
2146
1628
  }
2147
- const ticker = `${code}${
2148
- code === network ? "" : network
2149
- }`;
1629
+ const ticker = `${code}${code === network ? "" : network}`;
2150
1630
  const defaultDecimalPlacesForCoinNotSupportedOOB = 8;
2151
1631
  const defaultMinConfirmationsForCoinNotSupportedOOB = 1;
2152
1632
  coin = new Coin(
@@ -2204,11 +1684,7 @@ export class SwapspaceSwapProvider extends SwapProvider {
2204
1684
  this._supportedCoins.sort((i1, i2) =&gt; {
2205
1685
  if (i1.isPopular &amp;&amp; !i2.isPopular) return -1;
2206
1686
  if (i2.isPopular &amp;&amp; !i1.isPopular) return 1;
2207
- return i1.coin.ticker &gt; i2.coin.ticker
2208
- ? 1
2209
- : i1.coin.ticker &lt; i2.coin.ticker
2210
- ? -1
2211
- <span class="branch-0 cbranch-no" title="branch not covered" > : 0;</span>
1687
+ return i1.coin.ticker &gt; i2.coin.ticker ? 1 : i1.coin.ticker &lt; i2.coin.ticker ? -1 <span class="branch-0 cbranch-no" title="branch not covered" >: 0;</span>
2212
1688
  });
2213
1689
  }
2214
1690
  &nbsp;
@@ -2220,15 +1696,11 @@ export class SwapspaceSwapProvider extends SwapProvider {
2220
1696
  <span class="cstat-no" title="statement not covered" > await this._fetchSupportedCurrenciesIfNeeded();</span>
2221
1697
  <span class="cstat-no" title="statement not covered" ></span>
2222
1698
  <span class="cstat-no" title="statement not covered" > // Using USDT TRC20 as usually fee in this network is smaller than ERC20 and this network is widely used for USDT</span>
2223
- <span class="cstat-no" title="statement not covered" > const usdtTrc20 = this._supportedCoins.find(</span>
2224
- <span class="cstat-no" title="statement not covered" > (i) =&gt; i.coin.ticker === "USDTTRC20"</span>
2225
- <span class="cstat-no" title="statement not covered" > )?.coin;</span>
1699
+ <span class="cstat-no" title="statement not covered" > const usdtTrc20 = this._supportedCoins.find(i =&gt; i.coin.ticker === "USDTTRC20")?.coin;</span>
2226
1700
  <span class="cstat-no" title="statement not covered" > if (!usdtTrc20) {</span>
2227
1701
  <span class="cstat-no" title="statement not covered" > return { result: false };</span>
2228
1702
  <span class="cstat-no" title="statement not covered" > }</span>
2229
- <span class="cstat-no" title="statement not covered" > const cached = this._cache.get(</span>
2230
- <span class="cstat-no" title="statement not covered" > "swapspace_usdt_rate_" + coin.ticker</span>
2231
- <span class="cstat-no" title="statement not covered" > );</span>
1703
+ <span class="cstat-no" title="statement not covered" > const cached = this._cache.get("swapspace_usdt_rate_" + coin.ticker);</span>
2232
1704
  <span class="cstat-no" title="statement not covered" > if (cached != null) {</span>
2233
1705
  <span class="cstat-no" title="statement not covered" > return {</span>
2234
1706
  <span class="cstat-no" title="statement not covered" > result: true,</span>
@@ -2236,27 +1708,15 @@ export class SwapspaceSwapProvider extends SwapProvider {
2236
1708
  <span class="cstat-no" title="statement not covered" > };</span>
2237
1709
  <span class="cstat-no" title="statement not covered" > }</span>
2238
1710
  <span class="cstat-no" title="statement not covered" ></span>
2239
- <span class="cstat-no" title="statement not covered" > Logger.log(</span>
2240
- <span class="cstat-no" title="statement not covered" > "Loading USDT-&gt;coin rate as not found in cache:",</span>
2241
- <span class="cstat-no" title="statement not covered" > coin?.ticker</span>
2242
- <span class="cstat-no" title="statement not covered" > );</span>
2243
- <span class="cstat-no" title="statement not covered" > const result = await this.getSwapInfo(</span>
2244
- <span class="cstat-no" title="statement not covered" > usdtTrc20,</span>
2245
- <span class="cstat-no" title="statement not covered" > coin,</span>
2246
- <span class="cstat-no" title="statement not covered" > "5000",</span>
2247
- <span class="cstat-no" title="statement not covered" > false</span>
2248
- <span class="cstat-no" title="statement not covered" > );</span>
1711
+ <span class="cstat-no" title="statement not covered" > Logger.log("Loading USDT-&gt;coin rate as not found in cache:", coin?.ticker);</span>
1712
+ <span class="cstat-no" title="statement not covered" > const result = await this.getSwapInfo(usdtTrc20, coin, "5000", false);</span>
2249
1713
  <span class="cstat-no" title="statement not covered" > if (!result.result) {</span>
2250
1714
  <span class="cstat-no" title="statement not covered" > return { result: false };</span>
2251
1715
  <span class="cstat-no" title="statement not covered" > }</span>
2252
1716
  <span class="cstat-no" title="statement not covered" ></span>
2253
1717
  <span class="cstat-no" title="statement not covered" > // This calculation is not precise as we cannot recognize the actual fee and network fee. Just approximate.</span>
2254
1718
  <span class="cstat-no" title="statement not covered" > const standardSwapspaceFeeMultiplier = 1.004; // fee is usually 0.4%</span>
2255
- <span class="cstat-no" title="statement not covered" > const rate = BigNumber(1)</span>
2256
- <span class="cstat-no" title="statement not covered" > .div(</span>
2257
- <span class="cstat-no" title="statement not covered" > BigNumber(result.rate).times(standardSwapspaceFeeMultiplier)</span>
2258
- <span class="cstat-no" title="statement not covered" > )</span>
2259
- <span class="cstat-no" title="statement not covered" > .toString();</span>
1719
+ <span class="cstat-no" title="statement not covered" > const rate = BigNumber(1).div(BigNumber(result.rate).times(standardSwapspaceFeeMultiplier)).toString();</span>
2260
1720
  <span class="cstat-no" title="statement not covered" > this._cache.put(</span>
2261
1721
  <span class="cstat-no" title="statement not covered" > "swapspace_usdt_rate_" + coin.ticker,</span>
2262
1722
  <span class="cstat-no" title="statement not covered" > rate,</span>
@@ -2273,22 +1733,14 @@ export class SwapspaceSwapProvider extends SwapProvider {
2273
1733
  &nbsp;
2274
1734
  <span class="fstat-no" title="function not covered" > getCoinByTickerIfPresent(ticker) {</span>
2275
1735
  <span class="cstat-no" title="statement not covered" > try {</span>
2276
- <span class="cstat-no" title="statement not covered" > const item = this._supportedCoins.find(</span>
2277
- <span class="cstat-no" title="statement not covered" > (i) =&gt; i.coin.ticker === ticker</span>
2278
- <span class="cstat-no" title="statement not covered" > );</span>
1736
+ <span class="cstat-no" title="statement not covered" > const item = this._supportedCoins.find(i =&gt; i.coin.ticker === ticker);</span>
2279
1737
  <span class="cstat-no" title="statement not covered" > return item?.coin ?? null;</span>
2280
1738
  <span class="cstat-no" title="statement not covered" > } catch (e) {</span>
2281
1739
  <span class="cstat-no" title="statement not covered" > improveAndRethrow(e, "getCoinByTickerIfPresent");</span>
2282
1740
  <span class="cstat-no" title="statement not covered" > }</span>
2283
1741
  <span class="cstat-no" title="statement not covered" > }</span>
2284
1742
  &nbsp;
2285
- async getSwapInfo(
2286
- fromCoin,
2287
- toCoin,
2288
- amountCoins,
2289
- fixed = false,
2290
- fromCoinToUsdRate = null
2291
- ) {
1743
+ async getSwapInfo(fromCoin, toCoin, amountCoins, fixed = false, fromCoinToUsdRate = null) {
2292
1744
  const loggerSource = "getSwapInfo";
2293
1745
  try {
2294
1746
  if (
@@ -2299,31 +1751,19 @@ export class SwapspaceSwapProvider extends SwapProvider {
2299
1751
  (fixed !== null &amp;&amp; typeof fixed !== "boolean")
2300
1752
  ) {
2301
1753
  throw new Error(
2302
- `Wrong input params: ${amountCoins} ${fromCoin.ticker} -&gt; ${
2303
- toCoin.ticker
2304
- }, ${fromCoin instanceof Coin}, ${
2305
- toCoin instanceof Coin
2306
- }, ${typeof fixed} ${fixed}`
1754
+ `Wrong input params: ${amountCoins} ${fromCoin.ticker} -&gt; ${toCoin.ticker}, ${
1755
+ fromCoin instanceof Coin
1756
+ }, ${toCoin instanceof Coin}, ${typeof fixed} ${fixed}`
2307
1757
  );
2308
1758
  }
2309
- const fromCoinSwapspaceDetails = this._supportedCoins.find(
2310
- (i) =&gt; i.coin?.ticker === fromCoin?.ticker
2311
- );
2312
- const toCoinSwapspaceDetails = this._supportedCoins.find(
2313
- (i) =&gt; i.coin?.ticker === toCoin?.ticker
2314
- );
1759
+ const fromCoinSwapspaceDetails = this._supportedCoins.find(i =&gt; i.coin?.ticker === fromCoin?.ticker);
1760
+ const toCoinSwapspaceDetails = this._supportedCoins.find(i =&gt; i.coin?.ticker === toCoin?.ticker);
2315
1761
  if (!fromCoinSwapspaceDetails || !toCoinSwapspaceDetails) {
2316
1762
  throw new Error(
2317
- "Failed to find swapspace coin details for: " +
2318
- fromCoin.ticker +
2319
- " -&gt; " +
2320
- toCoin.ticker
1763
+ "Failed to find swapspace coin details for: " + fromCoin.ticker + " -&gt; " + toCoin.ticker
2321
1764
  );
2322
1765
  }
2323
- if (
2324
- !fromCoinSwapspaceDetails.deposit ||
2325
- !toCoinSwapspaceDetails.withdrawal
2326
- ) {
1766
+ if (!fromCoinSwapspaceDetails.deposit || !toCoinSwapspaceDetails.withdrawal) {
2327
1767
  return {
2328
1768
  result: false,
2329
1769
  reason: SwapProvider.NO_SWAPS_REASONS.NOT_SUPPORTED,
@@ -2336,53 +1776,34 @@ export class SwapspaceSwapProvider extends SwapProvider {
2336
1776
  const response = await axios.get(
2337
1777
  `${this._URL}/api/v2/amounts?fromCurrency=${fromCoinSwapspaceDetails.code}&amp;fromNetwork=${fromCoinSwapspaceDetails.network}&amp;toNetwork=${toCoinSwapspaceDetails.network}&amp;toCurrency=${toCoinSwapspaceDetails.code}&amp;amount=${amountCoins}&amp;estimated=false`
2338
1778
  );
2339
- Logger.log(
2340
- `Retrieved ${response?.data?.length} options`,
2341
- loggerSource
2342
- );
1779
+ Logger.log(`Retrieved ${response?.data?.length} options`, loggerSource);
2343
1780
  const options = Array.isArray(response.data) ? response.data : [];
2344
- let exchangesSupportingThePairDespiteFixedOrFloating =
2345
- options.filter(
2346
- (exchange) =&gt;
2347
- exchange?.exists &amp;&amp;
2348
- !BANNED_PARTNERS.find(
2349
- (bannedPartner) =&gt;
2350
- bannedPartner === exchange?.partner
2351
- ) &amp;&amp;
2352
- (exchange?.fixed === false ||
2353
- exchange?.fixed === true) &amp;&amp;
2354
- (exchange.min === 0 ||
2355
- exchange.max === 0 ||
2356
- exchange.max &gt; exchange.min ||
2357
- ((typeof exchange.min !== "number" ||
2358
- typeof exchange.max !== "number") &amp;&amp;
2359
- exchange.toAmount &gt; 0))
2360
- );
2361
- let exchangesSupportingThePair =
2362
- exchangesSupportingThePairDespiteFixedOrFloating;
1781
+ // TODO: [feature, high] remove if possible over-engineering about toAmount = 0 options treating as supported but not available. task_id=404ae30d9a7743238af3cc0d3bae9239
1782
+ let exchangesSupportingThePairDespiteFixedOrFloating = options.filter(
1783
+ exchange =&gt;
1784
+ exchange?.exists &amp;&amp;
1785
+ !BANNED_PARTNERS.find(bannedPartner =&gt; bannedPartner === exchange?.partner) &amp;&amp;
1786
+ (exchange?.fixed === false || exchange?.fixed === true) &amp;&amp;
1787
+ typeof exchange.min === "number" &amp;&amp;
1788
+ typeof exchange.max === "number" &amp;&amp;
1789
+ typeof exchange.toAmount === "number" &amp;&amp;
1790
+ exchange.toAmount &gt; 0 &amp;&amp;
1791
+ (exchange.min === 0 || exchange.max === 0 || exchange.max &gt; exchange.min)
1792
+ );
1793
+ let exchangesSupportingThePair = exchangesSupportingThePairDespiteFixedOrFloating;
2363
1794
  if (fixed != null) {
2364
- exchangesSupportingThePair =
2365
- exchangesSupportingThePairDespiteFixedOrFloating.filter(
2366
- (option) =&gt; option.fixed === fixed
2367
- );
1795
+ exchangesSupportingThePair = exchangesSupportingThePairDespiteFixedOrFloating.filter(
1796
+ option =&gt; option.fixed === fixed
1797
+ );
2368
1798
  }
2369
- Logger.log(
2370
- `${exchangesSupportingThePair?.length} of them have exist=true`,
2371
- loggerSource
2372
- );
1799
+ Logger.log(`${exchangesSupportingThePair?.length} of them have exist=true`, loggerSource);
2373
1800
  if (exchangesSupportingThePair.length === 0) {
2374
- if (
2375
- exchangesSupportingThePairDespiteFixedOrFloating.length &gt;
2376
- 0 &amp;&amp;
2377
- fixed !== null
2378
- ) {
1801
+ if (exchangesSupportingThePairDespiteFixedOrFloating.length &gt; 0 &amp;&amp; fixed !== null) {
2379
1802
  return {
2380
1803
  result: false,
2381
1804
  reason: fixed
2382
- ? SwapProvider.NO_SWAPS_REASONS
2383
- .NO_FIXED_BUT_HAVE_FLOATING
2384
- : SwapProvider.NO_SWAPS_REASONS
2385
- .NO_FLOATING_BUT_HAVE_FIXED,
1805
+ ? SwapProvider.NO_SWAPS_REASONS.NO_FIXED_BUT_HAVE_FLOATING
1806
+ : SwapProvider.NO_SWAPS_REASONS.NO_FLOATING_BUT_HAVE_FIXED,
2386
1807
  };
2387
1808
  }
2388
1809
  return {
@@ -2391,140 +1812,84 @@ export class SwapspaceSwapProvider extends SwapProvider {
2391
1812
  };
2392
1813
  }
2393
1814
  const availableExchanges = exchangesSupportingThePair.filter(
2394
- (exchange) =&gt;
2395
- typeof exchange?.toAmount === "number" &amp;&amp;
2396
- exchange.toAmount &gt; 0
2397
- );
2398
- Logger.log(
2399
- `Available (having amountTo): ${safeStringify(
2400
- availableExchanges
2401
- )}`,
2402
- loggerSource
1815
+ exchange =&gt; typeof exchange?.toAmount === "number" &amp;&amp; exchange.toAmount &gt; 0
2403
1816
  );
1817
+ Logger.log(`Available (having amountTo): ${safeStringify(availableExchanges)}`, loggerSource);
2404
1818
  // min=0 or max=0 means there is no limit for the partner
2405
1819
  let smallestMin = null;
2406
- if (
2407
- exchangesSupportingThePair.find((ex) =&gt;
2408
- BigNumber(ex.min).isZero()
2409
- ) == null
2410
- ) {
1820
+ if (exchangesSupportingThePair.find(ex =&gt; BigNumber(ex.min).isZero()) == null) {
2411
1821
  smallestMin = exchangesSupportingThePair.reduce((prev, cur) =&gt; {
2412
- if (
2413
- typeof cur.min === "number" &amp;&amp;
2414
- (prev === null || BigNumber(cur.min).lt(prev))
2415
- )
1822
+ if (typeof cur.min === "number" &amp;&amp; (prev === null || BigNumber(cur.min).lt(prev)))
2416
1823
  return BigNumber(cur.min);
2417
1824
  return prev;
2418
1825
  }, null);
2419
1826
  }
2420
1827
  let greatestMax = null;
2421
- if (
2422
- exchangesSupportingThePair.find((ex) =&gt;
2423
- BigNumber(ex.max).isZero()
2424
- ) == null
2425
- ) {
1828
+ if (exchangesSupportingThePair.find(ex =&gt; BigNumber(ex.max).isZero()) == null) {
2426
1829
  greatestMax = exchangesSupportingThePair.reduce((prev, cur) =&gt; {
2427
- if (
2428
- typeof cur.max === "number" &amp;&amp;
2429
- (prev === null || BigNumber(cur.max).gt(prev))
2430
- )
1830
+ if (typeof cur.max === "number" &amp;&amp; (prev === null || BigNumber(cur.max).gt(prev)))
2431
1831
  return BigNumber(cur.max);
2432
1832
  return prev;
2433
1833
  }, null);
2434
1834
  }
2435
1835
  let extraCoinsToFitMinMax = "0";
2436
- if (
2437
- typeof fromCoinToUsdRate === "string" &amp;&amp;
2438
- BigNumber(fromCoinToUsdRate).gt("0")
2439
- ) {
1836
+ if (typeof fromCoinToUsdRate === "string" &amp;&amp; BigNumber(fromCoinToUsdRate).gt("0")) {
2440
1837
  const extraUsdToFitMinMax = BigNumber("1"); // We correct the limits as the exact limit can fluctuate and cause failed swap creation
2441
- extraCoinsToFitMinMax = AmountUtils.trim(
2442
- extraUsdToFitMinMax.div(fromCoinToUsdRate),
2443
- fromCoin.digits
2444
- );
1838
+ extraCoinsToFitMinMax = AmountUtils.trim(extraUsdToFitMinMax.div(fromCoinToUsdRate), fromCoin.digits);
2445
1839
  }
2446
1840
  if (smallestMin instanceof BigNumber) {
2447
- smallestMin = AmountUtils.trim(
2448
- smallestMin.plus(extraCoinsToFitMinMax),
2449
- fromCoin.digits
2450
- );
1841
+ smallestMin = AmountUtils.trim(smallestMin.plus(extraCoinsToFitMinMax), fromCoin.digits);
2451
1842
  }
2452
1843
  if (greatestMax instanceof BigNumber) {
2453
1844
  if (greatestMax &gt; extraCoinsToFitMinMax) {
2454
- greatestMax = AmountUtils.trim(
2455
- greatestMax.minus(extraCoinsToFitMinMax),
2456
- fromCoin.digits
2457
- );
1845
+ greatestMax = AmountUtils.trim(greatestMax.minus(extraCoinsToFitMinMax), fromCoin.digits);
2458
1846
  } else {
2459
1847
  greatestMax = "0";
2460
1848
  }
2461
1849
  }
2462
1850
  &nbsp;
2463
1851
  if (availableExchanges.length) {
2464
- const sorted = availableExchanges.sort(
2465
- (op1, op2) =&gt; op2.toAmount - op1.toAmount
2466
- );
1852
+ const sorted = availableExchanges.sort((op1, op2) =&gt; op2.toAmount - op1.toAmount);
2467
1853
  const bestOpt = sorted[0];
2468
- Logger.log(
2469
- `Returning first option after sorting: ${safeStringify(
2470
- bestOpt
2471
- )}`,
2472
- loggerSource
2473
- );
1854
+ Logger.log(`Returning first option after sorting: ${safeStringify(bestOpt)}`, loggerSource);
2474
1855
  let max = null;
2475
1856
  let min = null;
2476
1857
  if (extraCoinsToFitMinMax != null) {
2477
1858
  if (typeof bestOpt.max === "number" &amp;&amp; bestOpt.max !== 0) {
2478
- max = BigNumber(bestOpt.max).minus(
2479
- extraCoinsToFitMinMax
2480
- );
2481
- max = AmountUtils.trim(
2482
- max.lt(0) ? "0" : max,
2483
- fromCoin.digits
2484
- );
1859
+ max = BigNumber(bestOpt.max).minus(extraCoinsToFitMinMax);
1860
+ max = AmountUtils.trim(max.lt(0) ? "0" : max, fromCoin.digits);
2485
1861
  }
2486
1862
  if (typeof bestOpt.min === "number" &amp;&amp; bestOpt.min !== 0) {
2487
- min = AmountUtils.trim(
2488
- BigNumber(bestOpt.min).plus(extraCoinsToFitMinMax),
2489
- fromCoin.digits
2490
- );
1863
+ min = AmountUtils.trim(BigNumber(bestOpt.min).plus(extraCoinsToFitMinMax), fromCoin.digits);
2491
1864
  }
2492
1865
  }
2493
1866
  &nbsp;
2494
1867
  const rate =
2495
- bestOpt.toAmount &amp;&amp; bestOpt.fromAmount
2496
- ? BigNumber(bestOpt.toAmount).div(bestOpt.fromAmount)
2497
- : null;
1868
+ bestOpt.toAmount &amp;&amp; bestOpt.fromAmount ? BigNumber(bestOpt.toAmount).div(bestOpt.fromAmount) : null;
2498
1869
  return {
2499
1870
  result: true,
2500
1871
  min: min,
2501
1872
  max: max,
2502
1873
  smallestMin: smallestMin,
2503
1874
  greatestMax: greatestMax,
2504
- rate:
2505
- rate != null
2506
- ? AmountUtils.trim(rate, this._maxRateDigits)
2507
- : null,
1875
+ rate: rate != null ? AmountUtils.trim(rate, this._maxRateDigits) : null,
2508
1876
  durationMinutesRange: bestOpt.duration ?? null,
2509
1877
  fixed: bestOpt.fixed,
2510
1878
  rawSwapData: bestOpt,
2511
1879
  };
2512
1880
  }
2513
- const result = {
2514
- result: false,
2515
- reason:
2516
- smallestMin &amp;&amp; BigNumber(amountCoins).lt(smallestMin)
2517
- ? SwapProvider.NO_SWAPS_REASONS.TOO_LOW
2518
- : greatestMax &amp;&amp; BigNumber(amountCoins).gt(greatestMax)
2519
- ? SwapProvider.NO_SWAPS_REASONS.TOO_HIGH
1881
+ <span class="cstat-no" title="statement not covered" ><span class="branch-0 cbranch-no" title="branch not covered" > const result = {</span></span>
1882
+ <span class="cstat-no" title="statement not covered" > result: false,</span>
1883
+ <span class="cstat-no" title="statement not covered" > reason:</span>
1884
+ <span class="cstat-no" title="statement not covered" > smallestMin &amp;&amp; BigNumber(amountCoins).lt(smallestMin)</span>
1885
+ <span class="branch-0 cbranch-no" title="branch not covered" > ? SwapProvider.NO_SWAPS_REASONS.TOO_LOW</span>
1886
+ <span class="branch-0 cbranch-no" title="branch not covered" > : greatestMax &amp;&amp; BigNumber(amountCoins).gt(greatestMax)</span>
1887
+ <span class="cstat-no" title="statement not covered" > ? SwapProvider.NO_SWAPS_REASONS.TOO_HIGH</span>
2520
1888
  : SwapProvider.NO_SWAPS_REASONS.NOT_SUPPORTED,
2521
1889
  smallestMin: smallestMin,
2522
1890
  greatestMax: greatestMax,
2523
1891
  };
2524
- Logger.log(
2525
- `Returning result ${safeStringify(result)}`,
2526
- loggerSource
2527
- );
1892
+ Logger.log(`Returning result ${safeStringify(result)}`, loggerSource);
2528
1893
  return result;
2529
1894
  } catch (e) {
2530
1895
  if (e?.response?.status === 429) {
@@ -2533,12 +1898,7 @@ export class SwapspaceSwapProvider extends SwapProvider {
2533
1898
  reason: SwapProvider.COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED,
2534
1899
  };
2535
1900
  }
2536
- Logger.log(
2537
- `Internal swapspace/rabbit error when getting swap options ${safeStringify(
2538
- e
2539
- )}`,
2540
- loggerSource
2541
- );
1901
+ Logger.log(`Internal swapspace/rabbit error when getting swap options ${safeStringify(e)}`, loggerSource);
2542
1902
  improveAndRethrow(e, loggerSource);
2543
1903
  }
2544
1904
  }
@@ -2580,23 +1940,16 @@ export class SwapspaceSwapProvider extends SwapProvider {
2580
1940
  typeof rawSwapData?.toNetwork !== "string" ||
2581
1941
  typeof rawSwapData?.id !== "string" // can be just empty
2582
1942
  ) {
2583
- throw new Error(
2584
- `Invalid raw swap data: ${safeStringify(rawSwapData)}`
2585
- );
1943
+ throw new Error(`Invalid raw swap data: ${safeStringify(rawSwapData)}`);
2586
1944
  }
2587
1945
  &nbsp;
2588
- const [fromCurrencyHasExtraId, toCurrencyHasExtraId] =
2589
- this._supportedCoins.reduce(
2590
- (prev, coinData) =&gt; [
2591
- coinData.coin.ticker === fromCoin.ticker
2592
- ? coinData.hasExtraId
2593
- : prev[0],
2594
- coinData.coin.ticker === toCoin.ticker
2595
- ? coinData.hasExtraId
2596
- : prev[1],
2597
- ],
2598
- [false, false]
2599
- );
1946
+ const [fromCurrencyHasExtraId, toCurrencyHasExtraId] = this._supportedCoins.reduce(
1947
+ (prev, coinData) =&gt; [
1948
+ coinData.coin.ticker === fromCoin.ticker ? coinData.hasExtraId : prev[0],
1949
+ coinData.coin.ticker === toCoin.ticker ? coinData.hasExtraId : prev[1],
1950
+ ],
1951
+ [false, false]
1952
+ );
2600
1953
  await this._fetchSupportedCurrenciesIfNeeded();
2601
1954
  const requestData = {
2602
1955
  partner: partner,
@@ -2609,27 +1962,16 @@ export class SwapspaceSwapProvider extends SwapProvider {
2609
1962
  fixed: fixed,
2610
1963
  extraId: toCurrencyHasExtraId ? toCurrencyExtraId <span class="branch-0 cbranch-no" title="branch not covered" >?? "" </span>: "",
2611
1964
  // This param is not documented. But the refund is usually manual so this is not critical.
2612
- refundExtraId: fromCurrencyHasExtraId
2613
- ? refundExtraId <span class="branch-0 cbranch-no" title="branch not covered" >?? ""</span>
2614
- : "",
1965
+ refundExtraId: fromCurrencyHasExtraId ? refundExtraId <span class="branch-0 cbranch-no" title="branch not covered" >?? "" </span>: "",
2615
1966
  rateId: rawSwapData?.id,
2616
1967
  userIp: clientIpAddress,
2617
1968
  refund: refundAddress,
2618
1969
  };
2619
1970
  &nbsp;
2620
- Logger.log(
2621
- `Sending create request: ${safeStringify(requestData)}`,
2622
- loggerSource
2623
- );
2624
- const response = await axios.post(
2625
- `${this._URL}/api/v2/exchange`,
2626
- requestData
2627
- );
1971
+ Logger.log(`Sending create request: ${safeStringify(requestData)}`, loggerSource);
1972
+ const response = await axios.post(`${this._URL}/api/v2/exchange`, requestData);
2628
1973
  const result = response.data;
2629
- Logger.log(
2630
- `Creation result ${safeStringify(result)}`,
2631
- loggerSource
2632
- );
1974
+ Logger.log(`Creation result ${safeStringify(result)}`, loggerSource);
2633
1975
  &nbsp;
2634
1976
  if (result?.id) {
2635
1977
  if (
@@ -2644,9 +1986,7 @@ export class SwapspaceSwapProvider extends SwapProvider {
2644
1986
  * rate 0/null/undefined we calculate it manually */
2645
1987
  let rate = result.rate;
2646
1988
  if (typeof rate !== "number" || BigNumber(rate).isZero()) {
2647
- rate = BigNumber(result?.to?.amount).div(
2648
- result?.from?.amount
2649
- );
1989
+ rate = BigNumber(result?.to?.amount).div(result?.from?.amount);
2650
1990
  } else {
2651
1991
  rate = BigNumber(rate);
2652
1992
  }
@@ -2655,34 +1995,22 @@ export class SwapspaceSwapProvider extends SwapProvider {
2655
1995
  result: true,
2656
1996
  swapId: result?.id,
2657
1997
  fromCoin: fromCoin,
2658
- fromAmount: AmountUtils.trim(
2659
- result?.from?.amount,
2660
- fromCoin.digits
2661
- ),
1998
+ fromAmount: AmountUtils.trim(result?.from?.amount, fromCoin.digits),
2662
1999
  fromAddress: result?.from?.address,
2663
2000
  toCoin: toCoin,
2664
- toAmount: AmountUtils.trim(
2665
- result?.to?.amount,
2666
- toCoin.digits
2667
- ),
2001
+ toAmount: AmountUtils.trim(result?.to?.amount, toCoin.digits),
2668
2002
  toAddress: result?.to?.address,
2669
2003
  fromCurrencyExtraId: result?.from?.extraId ?? "",
2670
2004
  rate: AmountUtils.trim(rate, this._maxRateDigits),
2671
2005
  fixed: result.fixed,
2672
2006
  };
2673
2007
  }
2674
- const errorMessage = `Swap creation succeeded but the response is wrong: ${safeStringify(
2675
- response
2676
- )}`;
2008
+ const errorMessage = `Swap creation succeeded but the response is wrong: ${safeStringify(response)}`;
2677
2009
  Logger.log(errorMessage, loggerSource);
2678
2010
  throw new Error(errorMessage);
2679
2011
  } catch (e) {
2680
- Logger.logError(
2681
- e,
2682
- loggerSource,
2683
- `Failed to create swap. Error is: ${safeStringify(e)}`
2684
- );
2685
- const composeFailResult = (reason) =&gt; ({
2012
+ Logger.logError(e, loggerSource, `Failed to create swap. Error is: ${safeStringify(e)}`);
2013
+ const composeFailResult = reason =&gt; ({
2686
2014
  result: false,
2687
2015
  reason: reason,
2688
2016
  partner: partner,
@@ -2690,13 +2018,8 @@ export class SwapspaceSwapProvider extends SwapProvider {
2690
2018
  const status = e?.response?.status;
2691
2019
  const data = e?.response?.data;
2692
2020
  if (status === 429) {
2693
- Logger.log(
2694
- `Returning fail - RPS limit exceeded ${data}`,
2695
- loggerSource
2696
- );
2697
- return composeFailResult(
2698
- SwapProvider.COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED
2699
- );
2021
+ Logger.log(`Returning fail - RPS limit exceeded ${data}`, loggerSource);
2022
+ return composeFailResult(SwapProvider.COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED);
2700
2023
  }
2701
2024
  const texts422 = [
2702
2025
  "Pair cannot be processed by",
@@ -2708,23 +2031,12 @@ export class SwapspaceSwapProvider extends SwapProvider {
2708
2031
  if (
2709
2032
  typeof data === "string" &amp;&amp;
2710
2033
  ((status === 403 &amp;&amp; data.includes(text403)) ||
2711
- (status === 422 &amp;&amp;
2712
- texts422.find((text) =&gt; data.includes(text))))
2034
+ (status === 422 &amp;&amp; texts422.find(text =&gt; data.includes(text))))
2713
2035
  ) {
2714
- Logger.log(
2715
- `Returning retriable fail: ${status} - ${data}, ${partner}`,
2716
- loggerSource
2717
- );
2718
- return composeFailResult(
2719
- SwapProvider.CREATION_FAIL_REASONS.RETRIABLE_FAIL
2720
- );
2036
+ Logger.log(`Returning retriable fail: ${status} - ${data}, ${partner}`, loggerSource);
2037
+ return composeFailResult(SwapProvider.CREATION_FAIL_REASONS.RETRIABLE_FAIL);
2721
2038
  }
2722
- Logger.log(
2723
- `Internal swapspace/rabbit error for ${partner}: ${safeStringify(
2724
- e
2725
- )}`,
2726
- loggerSource
2727
- );
2039
+ Logger.log(`Internal swapspace/rabbit error for ${partner}: ${safeStringify(e)}`, loggerSource);
2728
2040
  improveAndRethrow(e, loggerSource);
2729
2041
  }
2730
2042
  }
@@ -2760,60 +2072,38 @@ export class SwapspaceSwapProvider extends SwapProvider {
2760
2072
  <span class="fstat-no" title="function not covered" > async getExistingSwapsDetailsAndStatus(swapIds) {</span>
2761
2073
  <span class="cstat-no" title="statement not covered" > const loggerSource = "getExistingSwapsDetailsAndStatus";</span>
2762
2074
  <span class="cstat-no" title="statement not covered" > try {</span>
2763
- <span class="cstat-no" title="statement not covered" > if (swapIds.find((id) =&gt; typeof id !== "string")) {</span>
2764
- <span class="cstat-no" title="statement not covered" > throw new Error(</span>
2765
- <span class="cstat-no" title="statement not covered" > "Swap id is not string: " + safeStringify(swapIds)</span>
2766
- <span class="cstat-no" title="statement not covered" > );</span>
2075
+ <span class="cstat-no" title="statement not covered" > if (swapIds.find(id =&gt; typeof id !== "string")) {</span>
2076
+ <span class="cstat-no" title="statement not covered" > throw new Error("Swap id is not string: " + safeStringify(swapIds));</span>
2767
2077
  <span class="cstat-no" title="statement not covered" > }</span>
2768
- <span class="cstat-no" title="statement not covered" > const getNotFailingOn404 = async (swapId) =&gt; {</span>
2078
+ <span class="cstat-no" title="statement not covered" > const getNotFailingOn404 = async swapId =&gt; {</span>
2769
2079
  <span class="cstat-no" title="statement not covered" > try {</span>
2770
- <span class="cstat-no" title="statement not covered" > return await axios.get(</span>
2771
- <span class="cstat-no" title="statement not covered" > `${this._URL}/api/v2/exchange/${swapId}`</span>
2772
- <span class="cstat-no" title="statement not covered" > );</span>
2080
+ <span class="cstat-no" title="statement not covered" > return await axios.get(`${this._URL}/api/v2/exchange/${swapId}`);</span>
2773
2081
  <span class="cstat-no" title="statement not covered" > } catch (error) {</span>
2774
2082
  <span class="cstat-no" title="statement not covered" > if (error?.response?.status === 404) return [];</span>
2775
2083
  <span class="cstat-no" title="statement not covered" > throw error;</span>
2776
2084
  <span class="cstat-no" title="statement not covered" > }</span>
2777
2085
  <span class="cstat-no" title="statement not covered" > };</span>
2778
- <span class="cstat-no" title="statement not covered" > const responses = await Promise.all(</span>
2779
- <span class="cstat-no" title="statement not covered" > swapIds.map((swapId) =&gt; getNotFailingOn404(swapId))</span>
2780
- <span class="cstat-no" title="statement not covered" > );</span>
2086
+ <span class="cstat-no" title="statement not covered" > const responses = await Promise.all(swapIds.map(swapId =&gt; getNotFailingOn404(swapId)));</span>
2781
2087
  <span class="cstat-no" title="statement not covered" > const wo404 = responses.flat();</span>
2782
- <span class="cstat-no" title="statement not covered" > Logger.log(</span>
2783
- <span class="cstat-no" title="statement not covered" > "All swaps RAW: " + JSON.stringify(wo404.map((r) =&gt; r.data)),</span>
2784
- <span class="cstat-no" title="statement not covered" > loggerSource</span>
2785
- <span class="cstat-no" title="statement not covered" > );</span>
2088
+ <span class="cstat-no" title="statement not covered" > Logger.log("All swaps RAW: " + JSON.stringify(wo404.map(r =&gt; r.data)), loggerSource);</span>
2786
2089
  <span class="cstat-no" title="statement not covered" > const swaps = wo404</span>
2787
- <span class="cstat-no" title="statement not covered" > .map((r) =&gt; r.data)</span>
2090
+ <span class="cstat-no" title="statement not covered" > .map(r =&gt; r.data)</span>
2788
2091
  <span class="cstat-no" title="statement not covered" > .map((swap, index) =&gt; {</span>
2789
2092
  <span class="cstat-no" title="statement not covered" > const fromCoin = this._supportedCoins.find(</span>
2790
- <span class="cstat-no" title="statement not covered" > (i) =&gt;</span>
2791
- <span class="cstat-no" title="statement not covered" > i.code === swap.from.code &amp;&amp;</span>
2792
- <span class="cstat-no" title="statement not covered" > i.network === swap.from.network</span>
2093
+ <span class="cstat-no" title="statement not covered" > i =&gt; i.code === swap.from.code &amp;&amp; i.network === swap.from.network</span>
2793
2094
  <span class="cstat-no" title="statement not covered" > )?.coin;</span>
2794
2095
  <span class="cstat-no" title="statement not covered" > const toCoin = this._supportedCoins.find(</span>
2795
- <span class="cstat-no" title="statement not covered" > (i) =&gt;</span>
2796
- <span class="cstat-no" title="statement not covered" > i.code === swap.to.code &amp;&amp;</span>
2797
- <span class="cstat-no" title="statement not covered" > i.network === swap.to.network</span>
2096
+ <span class="cstat-no" title="statement not covered" > i =&gt; i.code === swap.to.code &amp;&amp; i.network === swap.to.network</span>
2798
2097
  <span class="cstat-no" title="statement not covered" > )?.coin;</span>
2799
2098
  <span class="cstat-no" title="statement not covered" > if (!fromCoin || !toCoin) {</span>
2800
2099
  <span class="cstat-no" title="statement not covered" > return []; // We skip swaps with not supported coins for now</span>
2801
2100
  <span class="cstat-no" title="statement not covered" > }</span>
2802
2101
  <span class="cstat-no" title="statement not covered" ></span>
2803
- <span class="cstat-no" title="statement not covered" > const toUtcTimestamp = (timeStr) =&gt;</span>
2804
- <span class="cstat-no" title="statement not covered" > Date.parse(</span>
2805
- <span class="cstat-no" title="statement not covered" > timeStr.match(/.+[Zz]$/) ? timeStr : `${timeStr}Z`</span>
2806
- <span class="cstat-no" title="statement not covered" > );</span>
2102
+ <span class="cstat-no" title="statement not covered" > const toUtcTimestamp = timeStr =&gt; Date.parse(timeStr.match(/.+[Zz]$/) ? timeStr : `${timeStr}Z`);</span>
2807
2103
  <span class="cstat-no" title="statement not covered" > const expiresAt = toUtcTimestamp(swap.timestamps.expiresAt);</span>
2808
2104
  <span class="cstat-no" title="statement not covered" > const isExpiredByTime = expiresAt &lt; Date.now();</span>
2809
- <span class="cstat-no" title="statement not covered" > const status = this._mapSwapspaceStatusToRabbitStatus(</span>
2810
- <span class="cstat-no" title="statement not covered" > swap.status,</span>
2811
- <span class="cstat-no" title="statement not covered" > isExpiredByTime</span>
2812
- <span class="cstat-no" title="statement not covered" > );</span>
2813
- <span class="cstat-no" title="statement not covered" > const toDigits =</span>
2814
- <span class="cstat-no" title="statement not covered" > status === SwapProvider.SWAP_STATUSES.REFUNDED</span>
2815
- <span class="cstat-no" title="statement not covered" > ? fromCoin.digits</span>
2816
- <span class="cstat-no" title="statement not covered" > : toCoin.digits;</span>
2105
+ <span class="cstat-no" title="statement not covered" > const status = this._mapSwapspaceStatusToRabbitStatus(swap.status, isExpiredByTime);</span>
2106
+ <span class="cstat-no" title="statement not covered" > const toDigits = status === SwapProvider.SWAP_STATUSES.REFUNDED ? fromCoin.digits : toCoin.digits;</span>
2817
2107
  <span class="cstat-no" title="statement not covered" > const addressToSendCoinsToSwapspace = swap.from.address;</span>
2818
2108
  <span class="cstat-no" title="statement not covered" > return new ExistingSwap(</span>
2819
2109
  <span class="cstat-no" title="statement not covered" > swapIds[index],</span>
@@ -2841,31 +2131,19 @@ export class SwapspaceSwapProvider extends SwapProvider {
2841
2131
  <span class="cstat-no" title="statement not covered" > );</span>
2842
2132
  <span class="cstat-no" title="statement not covered" > })</span>
2843
2133
  <span class="cstat-no" title="statement not covered" > .flat();</span>
2844
- <span class="cstat-no" title="statement not covered" > Logger.log(</span>
2845
- <span class="cstat-no" title="statement not covered" > `Swap details result ${safeStringify(swaps)}`,</span>
2846
- <span class="cstat-no" title="statement not covered" > loggerSource</span>
2847
- <span class="cstat-no" title="statement not covered" > );</span>
2134
+ <span class="cstat-no" title="statement not covered" > Logger.log(`Swap details result ${safeStringify(swaps)}`, loggerSource);</span>
2848
2135
  <span class="cstat-no" title="statement not covered" > return { result: true, swaps: swaps };</span>
2849
2136
  <span class="cstat-no" title="statement not covered" > } catch (e) {</span>
2850
- <span class="cstat-no" title="statement not covered" > Logger.logError(</span>
2851
- <span class="cstat-no" title="statement not covered" > e,</span>
2852
- <span class="cstat-no" title="statement not covered" > loggerSource,</span>
2853
- <span class="cstat-no" title="statement not covered" > `Failed to get swap details. Error is: ${safeStringify(e)}`</span>
2854
- <span class="cstat-no" title="statement not covered" > );</span>
2855
- <span class="cstat-no" title="statement not covered" > const composeFailResult = (reason) =&gt; ({</span>
2137
+ <span class="cstat-no" title="statement not covered" > Logger.logError(e, loggerSource, `Failed to get swap details. Error is: ${safeStringify(e)}`);</span>
2138
+ <span class="cstat-no" title="statement not covered" > const composeFailResult = reason =&gt; ({</span>
2856
2139
  <span class="cstat-no" title="statement not covered" > result: false,</span>
2857
2140
  <span class="cstat-no" title="statement not covered" > reason: reason,</span>
2858
2141
  <span class="cstat-no" title="statement not covered" > });</span>
2859
2142
  <span class="cstat-no" title="statement not covered" > const status = e?.response?.status;</span>
2860
2143
  <span class="cstat-no" title="statement not covered" > const data = e?.response?.data;</span>
2861
2144
  <span class="cstat-no" title="statement not covered" > if (status === 429) {</span>
2862
- <span class="cstat-no" title="statement not covered" > Logger.log(</span>
2863
- <span class="cstat-no" title="statement not covered" > `Returning fail - RPS limit exceeded ${data}`,</span>
2864
- <span class="cstat-no" title="statement not covered" > loggerSource</span>
2865
- <span class="cstat-no" title="statement not covered" > );</span>
2866
- <span class="cstat-no" title="statement not covered" > return composeFailResult(</span>
2867
- <span class="cstat-no" title="statement not covered" > SwapProvider.COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED</span>
2868
- <span class="cstat-no" title="statement not covered" > );</span>
2145
+ <span class="cstat-no" title="statement not covered" > Logger.log(`Returning fail - RPS limit exceeded ${data}`, loggerSource);</span>
2146
+ <span class="cstat-no" title="statement not covered" > return composeFailResult(SwapProvider.COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED);</span>
2869
2147
  <span class="cstat-no" title="statement not covered" > }</span>
2870
2148
  <span class="cstat-no" title="statement not covered" > improveAndRethrow(e, loggerSource);</span>
2871
2149
  <span class="cstat-no" title="statement not covered" > }</span>
@@ -2873,17 +2151,12 @@ export class SwapspaceSwapProvider extends SwapProvider {
2873
2151
  &nbsp;
2874
2152
  <span class="fstat-no" title="function not covered" > isAddressValidForAsset(asset, address) {</span>
2875
2153
  <span class="cstat-no" title="statement not covered" > try {</span>
2876
- <span class="cstat-no" title="statement not covered" > const assetData = this._supportedCoins.find(</span>
2877
- <span class="cstat-no" title="statement not covered" > (i) =&gt; i.coin?.ticker === asset?.ticker</span>
2878
- <span class="cstat-no" title="statement not covered" > );</span>
2154
+ <span class="cstat-no" title="statement not covered" > const assetData = this._supportedCoins.find(i =&gt; i.coin?.ticker === asset?.ticker);</span>
2879
2155
  <span class="cstat-no" title="statement not covered" > if (assetData) {</span>
2880
2156
  <span class="cstat-no" title="statement not covered" > let corrected = assetData.validationRegexp.trim();</span>
2157
+ <span class="cstat-no" title="statement not covered" > corrected = corrected[0] === "/" ? corrected.slice(1) : corrected;</span>
2881
2158
  <span class="cstat-no" title="statement not covered" > corrected =</span>
2882
- <span class="cstat-no" title="statement not covered" > corrected[0] === "/" ? corrected.slice(1) : corrected;</span>
2883
- <span class="cstat-no" title="statement not covered" > corrected =</span>
2884
- <span class="cstat-no" title="statement not covered" > corrected[corrected.length - 1] === "/"</span>
2885
- <span class="cstat-no" title="statement not covered" > ? corrected.slice(0, corrected.length - 1)</span>
2886
- <span class="cstat-no" title="statement not covered" > : corrected;</span>
2159
+ <span class="cstat-no" title="statement not covered" > corrected[corrected.length - 1] === "/" ? corrected.slice(0, corrected.length - 1) : corrected;</span>
2887
2160
  <span class="cstat-no" title="statement not covered" > return address.match(corrected) != null;</span>
2888
2161
  <span class="cstat-no" title="statement not covered" > }</span>
2889
2162
  <span class="cstat-no" title="statement not covered" > } catch (e) {</span>
@@ -2894,14 +2167,9 @@ export class SwapspaceSwapProvider extends SwapProvider {
2894
2167
  &nbsp;
2895
2168
  <span class="fstat-no" title="function not covered" > getExtraIdNameIfPresent(asset) {</span>
2896
2169
  <span class="cstat-no" title="statement not covered" > try {</span>
2897
- <span class="cstat-no" title="statement not covered" > const assetData = this._supportedCoins.find(</span>
2898
- <span class="cstat-no" title="statement not covered" > (i) =&gt; i.coin?.ticker === asset?.ticker</span>
2899
- <span class="cstat-no" title="statement not covered" > );</span>
2170
+ <span class="cstat-no" title="statement not covered" > const assetData = this._supportedCoins.find(i =&gt; i.coin?.ticker === asset?.ticker);</span>
2900
2171
  <span class="cstat-no" title="statement not covered" > if (assetData?.hasExtraId) {</span>
2901
- <span class="cstat-no" title="statement not covered" > if (</span>
2902
- <span class="cstat-no" title="statement not covered" > assetData?.extraIdName == null ||</span>
2903
- <span class="cstat-no" title="statement not covered" > assetData?.extraIdName === ""</span>
2904
- <span class="cstat-no" title="statement not covered" > ) {</span>
2172
+ <span class="cstat-no" title="statement not covered" > if (assetData?.extraIdName == null || assetData?.extraIdName === "") {</span>
2905
2173
  <span class="cstat-no" title="statement not covered" > // We return some default name if the extraIdName is empty</span>
2906
2174
  <span class="cstat-no" title="statement not covered" > return "ID";</span>
2907
2175
  <span class="cstat-no" title="statement not covered" > }</span>
@@ -2920,7 +2188,7 @@ export class SwapspaceSwapProvider extends SwapProvider {
2920
2188
  <div class='footer quiet pad2 space-top1 center small'>
2921
2189
  Code coverage generated by
2922
2190
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
2923
- at 2024-05-25T11:51:39.399Z
2191
+ at 2024-05-26T06:51:59.642Z
2924
2192
  </div>
2925
2193
  <script src="../../../../prettify.js"></script>
2926
2194
  <script>