@rabbitio/ui-kit 1.0.0-beta.43 → 1.0.0-beta.45

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 (113) hide show
  1. package/.husky/pre-push +1 -1
  2. package/dist/index.cjs +1389 -102
  3. package/dist/index.cjs.map +1 -1
  4. package/dist/index.css +23630 -0
  5. package/dist/index.css.map +1 -1
  6. package/dist/index.modern.js +1185 -57
  7. package/dist/index.modern.js.map +1 -1
  8. package/dist/index.module.js +1379 -103
  9. package/dist/index.module.js.map +1 -1
  10. package/dist/index.umd.js +1388 -106
  11. package/dist/index.umd.js.map +1 -1
  12. package/package.json +6 -1
  13. package/src/assets/image/icons/arrow-tosca.svg +3 -0
  14. package/src/assets/image/icons/arrow-white.svg +14 -0
  15. package/src/assets/image/icons/failed-validation-icon.svg +15 -0
  16. package/src/assets/image/icons/successful-validation-icon.svg +10 -0
  17. package/src/components/atoms/BackgroundTitle/BackgroundTitle.jsx +44 -0
  18. package/src/components/atoms/BackgroundTitle/background-title.module.scss +52 -0
  19. package/src/components/atoms/Validation/Validation.jsx +130 -0
  20. package/src/components/atoms/Validation/validation.module.scss +15 -0
  21. package/src/components/atoms/buttons/Close/Close.jsx +64 -0
  22. package/src/components/atoms/buttons/Close/close.module.scss +75 -0
  23. package/src/components/atoms/buttons/LinkButton/LinkButton.jsx +121 -0
  24. package/src/components/atoms/buttons/LinkButton/link-button.module.scss +45 -0
  25. package/src/components/organisms/Dialog/Dialog.jsx +515 -0
  26. package/src/components/organisms/Dialog/DialogButtons/DialogButtons.jsx +122 -0
  27. package/src/components/organisms/Dialog/DialogButtons/dialog-buttons.module.scss +25 -0
  28. package/src/components/organisms/Dialog/DialogStep/DialogStep.jsx +664 -0
  29. package/src/components/organisms/Dialog/DialogStep/dialog-step.module.scss +362 -0
  30. package/src/components/organisms/Dialog/dialog.module.scss +223 -0
  31. package/src/constants/organisms/dialog/DialogStep/dialogStep.js +1 -0
  32. package/src/constants/organisms/dialog/dialog.js +29 -0
  33. package/src/index.js +10 -0
  34. package/stories/stubs/exampleContent.jsx +20 -0
  35. package/styles/fonts/NunitoSans-Bold.ttf +0 -0
  36. package/styles/fonts/NunitoSans-ExtraBold.ttf +0 -0
  37. package/styles/fonts/NunitoSans-Light.ttf +0 -0
  38. package/styles/fonts/NunitoSans-Regular.ttf +0 -0
  39. package/styles/fonts/NunitoSans-SemiBold.ttf +0 -0
  40. package/styles/index.scss +14 -13
  41. package/coverage/base.css +0 -224
  42. package/coverage/block-navigation.js +0 -87
  43. package/coverage/clover.xml +0 -6516
  44. package/coverage/coverage-final.json +0 -43
  45. package/coverage/favicon.png +0 -0
  46. package/coverage/index.html +0 -416
  47. package/coverage/prettify.css +0 -1
  48. package/coverage/prettify.js +0 -2
  49. package/coverage/rabbit-ui-kit/index.html +0 -116
  50. package/coverage/rabbit-ui-kit/index.js.html +0 -88
  51. package/coverage/rabbit-ui-kit/src/common/adapters/axiosAdapter.js.html +0 -190
  52. package/coverage/rabbit-ui-kit/src/common/adapters/index.html +0 -116
  53. package/coverage/rabbit-ui-kit/src/common/amountUtils.js.html +0 -1393
  54. package/coverage/rabbit-ui-kit/src/common/errorUtils.js.html +0 -211
  55. package/coverage/rabbit-ui-kit/src/common/external-apis/apiGroups.js.html +0 -250
  56. package/coverage/rabbit-ui-kit/src/common/external-apis/index.html +0 -131
  57. package/coverage/rabbit-ui-kit/src/common/external-apis/ipAddressProviders.js.html +0 -499
  58. package/coverage/rabbit-ui-kit/src/common/fiatCurrenciesService.js.html +0 -568
  59. package/coverage/rabbit-ui-kit/src/common/index.html +0 -146
  60. package/coverage/rabbit-ui-kit/src/common/models/blockchain.js.html +0 -115
  61. package/coverage/rabbit-ui-kit/src/common/models/coin.js.html +0 -556
  62. package/coverage/rabbit-ui-kit/src/common/models/index.html +0 -146
  63. package/coverage/rabbit-ui-kit/src/common/models/protocol.js.html +0 -100
  64. package/coverage/rabbit-ui-kit/src/common/utils/cache.js.html +0 -889
  65. package/coverage/rabbit-ui-kit/src/common/utils/emailAPI.js.html +0 -139
  66. package/coverage/rabbit-ui-kit/src/common/utils/index.html +0 -161
  67. package/coverage/rabbit-ui-kit/src/common/utils/logging/index.html +0 -131
  68. package/coverage/rabbit-ui-kit/src/common/utils/logging/logger.js.html +0 -229
  69. package/coverage/rabbit-ui-kit/src/common/utils/logging/logsStorage.js.html +0 -268
  70. package/coverage/rabbit-ui-kit/src/common/utils/postponeExecution.js.html +0 -118
  71. package/coverage/rabbit-ui-kit/src/common/utils/safeStringify.js.html +0 -235
  72. package/coverage/rabbit-ui-kit/src/components/atoms/AssetIcon/AssetIcon.jsx.html +0 -250
  73. package/coverage/rabbit-ui-kit/src/components/atoms/AssetIcon/index.html +0 -116
  74. package/coverage/rabbit-ui-kit/src/components/atoms/LoadingDots/LoadingDots.jsx.html +0 -256
  75. package/coverage/rabbit-ui-kit/src/components/atoms/LoadingDots/index.html +0 -116
  76. package/coverage/rabbit-ui-kit/src/components/atoms/SupportChat/SupportChat.jsx.html +0 -229
  77. package/coverage/rabbit-ui-kit/src/components/atoms/SupportChat/index.html +0 -116
  78. package/coverage/rabbit-ui-kit/src/components/atoms/buttons/Button/Button.jsx.html +0 -802
  79. package/coverage/rabbit-ui-kit/src/components/atoms/buttons/Button/index.html +0 -116
  80. package/coverage/rabbit-ui-kit/src/components/hooks/index.html +0 -131
  81. package/coverage/rabbit-ui-kit/src/components/hooks/useCallHandlingErrors.js.html +0 -163
  82. package/coverage/rabbit-ui-kit/src/components/hooks/useReferredState.js.html +0 -157
  83. package/coverage/rabbit-ui-kit/src/components/utils/index.html +0 -146
  84. package/coverage/rabbit-ui-kit/src/components/utils/inputValueProviders.js.html +0 -259
  85. package/coverage/rabbit-ui-kit/src/components/utils/uiUtils.js.html +0 -127
  86. package/coverage/rabbit-ui-kit/src/components/utils/urlQueryUtils.js.html +0 -346
  87. package/coverage/rabbit-ui-kit/src/index.html +0 -116
  88. package/coverage/rabbit-ui-kit/src/index.js.html +0 -250
  89. package/coverage/rabbit-ui-kit/src/robustExteranlApiCallerService/cacheAndConcurrentRequestsResolver.js.html +0 -1762
  90. package/coverage/rabbit-ui-kit/src/robustExteranlApiCallerService/cachedRobustExternalApiCallerService.js.html +0 -649
  91. package/coverage/rabbit-ui-kit/src/robustExteranlApiCallerService/cancelProcessing.js.html +0 -172
  92. package/coverage/rabbit-ui-kit/src/robustExteranlApiCallerService/concurrentCalculationsMetadataHolder.js.html +0 -394
  93. package/coverage/rabbit-ui-kit/src/robustExteranlApiCallerService/externalApiProvider.js.html +0 -553
  94. package/coverage/rabbit-ui-kit/src/robustExteranlApiCallerService/externalServicesStatsCollector.js.html +0 -331
  95. package/coverage/rabbit-ui-kit/src/robustExteranlApiCallerService/index.html +0 -206
  96. package/coverage/rabbit-ui-kit/src/robustExteranlApiCallerService/robustExternalAPICallerService.js.html +0 -1249
  97. package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/index.html +0 -131
  98. package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/swapProvider.js.html +0 -727
  99. package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/swapspaceSwapProvider.js.html +0 -2899
  100. package/coverage/rabbit-ui-kit/src/swaps-lib/models/baseSwapCreationInfo.js.html +0 -214
  101. package/coverage/rabbit-ui-kit/src/swaps-lib/models/existingSwap.js.html +0 -304
  102. package/coverage/rabbit-ui-kit/src/swaps-lib/models/existingSwapWithFiatData.js.html +0 -487
  103. package/coverage/rabbit-ui-kit/src/swaps-lib/models/index.html +0 -146
  104. package/coverage/rabbit-ui-kit/src/swaps-lib/services/index.html +0 -116
  105. package/coverage/rabbit-ui-kit/src/swaps-lib/services/publicSwapService.js.html +0 -2191
  106. package/coverage/rabbit-ui-kit/src/swaps-lib/utils/index.html +0 -116
  107. package/coverage/rabbit-ui-kit/src/swaps-lib/utils/swapUtils.js.html +0 -742
  108. package/coverage/rabbit-ui-kit/stories/atoms/LoadingDots.stories.jsx.html +0 -226
  109. package/coverage/rabbit-ui-kit/stories/atoms/buttons/Button.stories.jsx.html +0 -946
  110. package/coverage/rabbit-ui-kit/stories/atoms/buttons/index.html +0 -116
  111. package/coverage/rabbit-ui-kit/stories/atoms/index.html +0 -116
  112. package/coverage/sort-arrow-sprite.png +0 -0
  113. package/coverage/sorter.js +0 -196
@@ -1,649 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for rabbit-ui-kit/src/robustExteranlApiCallerService/cachedRobustExternalApiCallerService.js</title>
7
- <meta charset="utf-8" />
8
- <link rel="stylesheet" href="../../../prettify.css" />
9
- <link rel="stylesheet" href="../../../base.css" />
10
- <link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
11
- <meta name="viewport" content="width=device-width, initial-scale=1" />
12
- <style type='text/css'>
13
- .coverage-summary .sorter {
14
- background-image: url(../../../sort-arrow-sprite.png);
15
- }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <div class='wrapper'>
21
- <div class='pad1'>
22
- <h1><a href="../../../index.html">All files</a> / <a href="index.html">rabbit-ui-kit/src/robustExteranlApiCallerService</a> cachedRobustExternalApiCallerService.js</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">75% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>141/188</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">33.33% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>3/9</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">50% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>3/6</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">75% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>141/188</span>
50
- </div>
51
-
52
-
53
- </div>
54
- <p class="quiet">
55
- Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
- </p>
57
- <template id="filterTemplate">
58
- <div class="quiet">
59
- Filter:
60
- <input oninput="onInput()" type="search" id="fileSearch">
61
- </div>
62
- </template>
63
- </div>
64
- <div class='status-line medium'></div>
65
- <pre><table class="coverage">
66
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
- <a name='L2'></a><a href='#L2'>2</a>
68
- <a name='L3'></a><a href='#L3'>3</a>
69
- <a name='L4'></a><a href='#L4'>4</a>
70
- <a name='L5'></a><a href='#L5'>5</a>
71
- <a name='L6'></a><a href='#L6'>6</a>
72
- <a name='L7'></a><a href='#L7'>7</a>
73
- <a name='L8'></a><a href='#L8'>8</a>
74
- <a name='L9'></a><a href='#L9'>9</a>
75
- <a name='L10'></a><a href='#L10'>10</a>
76
- <a name='L11'></a><a href='#L11'>11</a>
77
- <a name='L12'></a><a href='#L12'>12</a>
78
- <a name='L13'></a><a href='#L13'>13</a>
79
- <a name='L14'></a><a href='#L14'>14</a>
80
- <a name='L15'></a><a href='#L15'>15</a>
81
- <a name='L16'></a><a href='#L16'>16</a>
82
- <a name='L17'></a><a href='#L17'>17</a>
83
- <a name='L18'></a><a href='#L18'>18</a>
84
- <a name='L19'></a><a href='#L19'>19</a>
85
- <a name='L20'></a><a href='#L20'>20</a>
86
- <a name='L21'></a><a href='#L21'>21</a>
87
- <a name='L22'></a><a href='#L22'>22</a>
88
- <a name='L23'></a><a href='#L23'>23</a>
89
- <a name='L24'></a><a href='#L24'>24</a>
90
- <a name='L25'></a><a href='#L25'>25</a>
91
- <a name='L26'></a><a href='#L26'>26</a>
92
- <a name='L27'></a><a href='#L27'>27</a>
93
- <a name='L28'></a><a href='#L28'>28</a>
94
- <a name='L29'></a><a href='#L29'>29</a>
95
- <a name='L30'></a><a href='#L30'>30</a>
96
- <a name='L31'></a><a href='#L31'>31</a>
97
- <a name='L32'></a><a href='#L32'>32</a>
98
- <a name='L33'></a><a href='#L33'>33</a>
99
- <a name='L34'></a><a href='#L34'>34</a>
100
- <a name='L35'></a><a href='#L35'>35</a>
101
- <a name='L36'></a><a href='#L36'>36</a>
102
- <a name='L37'></a><a href='#L37'>37</a>
103
- <a name='L38'></a><a href='#L38'>38</a>
104
- <a name='L39'></a><a href='#L39'>39</a>
105
- <a name='L40'></a><a href='#L40'>40</a>
106
- <a name='L41'></a><a href='#L41'>41</a>
107
- <a name='L42'></a><a href='#L42'>42</a>
108
- <a name='L43'></a><a href='#L43'>43</a>
109
- <a name='L44'></a><a href='#L44'>44</a>
110
- <a name='L45'></a><a href='#L45'>45</a>
111
- <a name='L46'></a><a href='#L46'>46</a>
112
- <a name='L47'></a><a href='#L47'>47</a>
113
- <a name='L48'></a><a href='#L48'>48</a>
114
- <a name='L49'></a><a href='#L49'>49</a>
115
- <a name='L50'></a><a href='#L50'>50</a>
116
- <a name='L51'></a><a href='#L51'>51</a>
117
- <a name='L52'></a><a href='#L52'>52</a>
118
- <a name='L53'></a><a href='#L53'>53</a>
119
- <a name='L54'></a><a href='#L54'>54</a>
120
- <a name='L55'></a><a href='#L55'>55</a>
121
- <a name='L56'></a><a href='#L56'>56</a>
122
- <a name='L57'></a><a href='#L57'>57</a>
123
- <a name='L58'></a><a href='#L58'>58</a>
124
- <a name='L59'></a><a href='#L59'>59</a>
125
- <a name='L60'></a><a href='#L60'>60</a>
126
- <a name='L61'></a><a href='#L61'>61</a>
127
- <a name='L62'></a><a href='#L62'>62</a>
128
- <a name='L63'></a><a href='#L63'>63</a>
129
- <a name='L64'></a><a href='#L64'>64</a>
130
- <a name='L65'></a><a href='#L65'>65</a>
131
- <a name='L66'></a><a href='#L66'>66</a>
132
- <a name='L67'></a><a href='#L67'>67</a>
133
- <a name='L68'></a><a href='#L68'>68</a>
134
- <a name='L69'></a><a href='#L69'>69</a>
135
- <a name='L70'></a><a href='#L70'>70</a>
136
- <a name='L71'></a><a href='#L71'>71</a>
137
- <a name='L72'></a><a href='#L72'>72</a>
138
- <a name='L73'></a><a href='#L73'>73</a>
139
- <a name='L74'></a><a href='#L74'>74</a>
140
- <a name='L75'></a><a href='#L75'>75</a>
141
- <a name='L76'></a><a href='#L76'>76</a>
142
- <a name='L77'></a><a href='#L77'>77</a>
143
- <a name='L78'></a><a href='#L78'>78</a>
144
- <a name='L79'></a><a href='#L79'>79</a>
145
- <a name='L80'></a><a href='#L80'>80</a>
146
- <a name='L81'></a><a href='#L81'>81</a>
147
- <a name='L82'></a><a href='#L82'>82</a>
148
- <a name='L83'></a><a href='#L83'>83</a>
149
- <a name='L84'></a><a href='#L84'>84</a>
150
- <a name='L85'></a><a href='#L85'>85</a>
151
- <a name='L86'></a><a href='#L86'>86</a>
152
- <a name='L87'></a><a href='#L87'>87</a>
153
- <a name='L88'></a><a href='#L88'>88</a>
154
- <a name='L89'></a><a href='#L89'>89</a>
155
- <a name='L90'></a><a href='#L90'>90</a>
156
- <a name='L91'></a><a href='#L91'>91</a>
157
- <a name='L92'></a><a href='#L92'>92</a>
158
- <a name='L93'></a><a href='#L93'>93</a>
159
- <a name='L94'></a><a href='#L94'>94</a>
160
- <a name='L95'></a><a href='#L95'>95</a>
161
- <a name='L96'></a><a href='#L96'>96</a>
162
- <a name='L97'></a><a href='#L97'>97</a>
163
- <a name='L98'></a><a href='#L98'>98</a>
164
- <a name='L99'></a><a href='#L99'>99</a>
165
- <a name='L100'></a><a href='#L100'>100</a>
166
- <a name='L101'></a><a href='#L101'>101</a>
167
- <a name='L102'></a><a href='#L102'>102</a>
168
- <a name='L103'></a><a href='#L103'>103</a>
169
- <a name='L104'></a><a href='#L104'>104</a>
170
- <a name='L105'></a><a href='#L105'>105</a>
171
- <a name='L106'></a><a href='#L106'>106</a>
172
- <a name='L107'></a><a href='#L107'>107</a>
173
- <a name='L108'></a><a href='#L108'>108</a>
174
- <a name='L109'></a><a href='#L109'>109</a>
175
- <a name='L110'></a><a href='#L110'>110</a>
176
- <a name='L111'></a><a href='#L111'>111</a>
177
- <a name='L112'></a><a href='#L112'>112</a>
178
- <a name='L113'></a><a href='#L113'>113</a>
179
- <a name='L114'></a><a href='#L114'>114</a>
180
- <a name='L115'></a><a href='#L115'>115</a>
181
- <a name='L116'></a><a href='#L116'>116</a>
182
- <a name='L117'></a><a href='#L117'>117</a>
183
- <a name='L118'></a><a href='#L118'>118</a>
184
- <a name='L119'></a><a href='#L119'>119</a>
185
- <a name='L120'></a><a href='#L120'>120</a>
186
- <a name='L121'></a><a href='#L121'>121</a>
187
- <a name='L122'></a><a href='#L122'>122</a>
188
- <a name='L123'></a><a href='#L123'>123</a>
189
- <a name='L124'></a><a href='#L124'>124</a>
190
- <a name='L125'></a><a href='#L125'>125</a>
191
- <a name='L126'></a><a href='#L126'>126</a>
192
- <a name='L127'></a><a href='#L127'>127</a>
193
- <a name='L128'></a><a href='#L128'>128</a>
194
- <a name='L129'></a><a href='#L129'>129</a>
195
- <a name='L130'></a><a href='#L130'>130</a>
196
- <a name='L131'></a><a href='#L131'>131</a>
197
- <a name='L132'></a><a href='#L132'>132</a>
198
- <a name='L133'></a><a href='#L133'>133</a>
199
- <a name='L134'></a><a href='#L134'>134</a>
200
- <a name='L135'></a><a href='#L135'>135</a>
201
- <a name='L136'></a><a href='#L136'>136</a>
202
- <a name='L137'></a><a href='#L137'>137</a>
203
- <a name='L138'></a><a href='#L138'>138</a>
204
- <a name='L139'></a><a href='#L139'>139</a>
205
- <a name='L140'></a><a href='#L140'>140</a>
206
- <a name='L141'></a><a href='#L141'>141</a>
207
- <a name='L142'></a><a href='#L142'>142</a>
208
- <a name='L143'></a><a href='#L143'>143</a>
209
- <a name='L144'></a><a href='#L144'>144</a>
210
- <a name='L145'></a><a href='#L145'>145</a>
211
- <a name='L146'></a><a href='#L146'>146</a>
212
- <a name='L147'></a><a href='#L147'>147</a>
213
- <a name='L148'></a><a href='#L148'>148</a>
214
- <a name='L149'></a><a href='#L149'>149</a>
215
- <a name='L150'></a><a href='#L150'>150</a>
216
- <a name='L151'></a><a href='#L151'>151</a>
217
- <a name='L152'></a><a href='#L152'>152</a>
218
- <a name='L153'></a><a href='#L153'>153</a>
219
- <a name='L154'></a><a href='#L154'>154</a>
220
- <a name='L155'></a><a href='#L155'>155</a>
221
- <a name='L156'></a><a href='#L156'>156</a>
222
- <a name='L157'></a><a href='#L157'>157</a>
223
- <a name='L158'></a><a href='#L158'>158</a>
224
- <a name='L159'></a><a href='#L159'>159</a>
225
- <a name='L160'></a><a href='#L160'>160</a>
226
- <a name='L161'></a><a href='#L161'>161</a>
227
- <a name='L162'></a><a href='#L162'>162</a>
228
- <a name='L163'></a><a href='#L163'>163</a>
229
- <a name='L164'></a><a href='#L164'>164</a>
230
- <a name='L165'></a><a href='#L165'>165</a>
231
- <a name='L166'></a><a href='#L166'>166</a>
232
- <a name='L167'></a><a href='#L167'>167</a>
233
- <a name='L168'></a><a href='#L168'>168</a>
234
- <a name='L169'></a><a href='#L169'>169</a>
235
- <a name='L170'></a><a href='#L170'>170</a>
236
- <a name='L171'></a><a href='#L171'>171</a>
237
- <a name='L172'></a><a href='#L172'>172</a>
238
- <a name='L173'></a><a href='#L173'>173</a>
239
- <a name='L174'></a><a href='#L174'>174</a>
240
- <a name='L175'></a><a href='#L175'>175</a>
241
- <a name='L176'></a><a href='#L176'>176</a>
242
- <a name='L177'></a><a href='#L177'>177</a>
243
- <a name='L178'></a><a href='#L178'>178</a>
244
- <a name='L179'></a><a href='#L179'>179</a>
245
- <a name='L180'></a><a href='#L180'>180</a>
246
- <a name='L181'></a><a href='#L181'>181</a>
247
- <a name='L182'></a><a href='#L182'>182</a>
248
- <a name='L183'></a><a href='#L183'>183</a>
249
- <a name='L184'></a><a href='#L184'>184</a>
250
- <a name='L185'></a><a href='#L185'>185</a>
251
- <a name='L186'></a><a href='#L186'>186</a>
252
- <a name='L187'></a><a href='#L187'>187</a>
253
- <a name='L188'></a><a href='#L188'>188</a>
254
- <a name='L189'></a><a href='#L189'>189</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
255
- <span class="cline-any cline-yes">1x</span>
256
- <span class="cline-any cline-yes">1x</span>
257
- <span class="cline-any cline-yes">1x</span>
258
- <span class="cline-any cline-yes">1x</span>
259
- <span class="cline-any cline-yes">1x</span>
260
- <span class="cline-any cline-yes">1x</span>
261
- <span class="cline-any cline-yes">1x</span>
262
- <span class="cline-any cline-yes">1x</span>
263
- <span class="cline-any cline-yes">1x</span>
264
- <span class="cline-any cline-yes">1x</span>
265
- <span class="cline-any cline-yes">1x</span>
266
- <span class="cline-any cline-yes">1x</span>
267
- <span class="cline-any cline-yes">1x</span>
268
- <span class="cline-any cline-yes">1x</span>
269
- <span class="cline-any cline-yes">1x</span>
270
- <span class="cline-any cline-yes">1x</span>
271
- <span class="cline-any cline-yes">1x</span>
272
- <span class="cline-any cline-yes">1x</span>
273
- <span class="cline-any cline-yes">1x</span>
274
- <span class="cline-any cline-yes">1x</span>
275
- <span class="cline-any cline-yes">1x</span>
276
- <span class="cline-any cline-yes">1x</span>
277
- <span class="cline-any cline-yes">1x</span>
278
- <span class="cline-any cline-yes">1x</span>
279
- <span class="cline-any cline-yes">1x</span>
280
- <span class="cline-any cline-yes">1x</span>
281
- <span class="cline-any cline-yes">1x</span>
282
- <span class="cline-any cline-yes">1x</span>
283
- <span class="cline-any cline-yes">1x</span>
284
- <span class="cline-any cline-yes">1x</span>
285
- <span class="cline-any cline-yes">1x</span>
286
- <span class="cline-any cline-yes">1x</span>
287
- <span class="cline-any cline-yes">1x</span>
288
- <span class="cline-any cline-yes">1x</span>
289
- <span class="cline-any cline-yes">1x</span>
290
- <span class="cline-any cline-yes">1x</span>
291
- <span class="cline-any cline-yes">1x</span>
292
- <span class="cline-any cline-yes">1x</span>
293
- <span class="cline-any cline-yes">1x</span>
294
- <span class="cline-any cline-yes">1x</span>
295
- <span class="cline-any cline-yes">1x</span>
296
- <span class="cline-any cline-yes">1x</span>
297
- <span class="cline-any cline-yes">1x</span>
298
- <span class="cline-any cline-yes">1x</span>
299
- <span class="cline-any cline-yes">1x</span>
300
- <span class="cline-any cline-yes">1x</span>
301
- <span class="cline-any cline-yes">1x</span>
302
- <span class="cline-any cline-yes">1x</span>
303
- <span class="cline-any cline-yes">1x</span>
304
- <span class="cline-any cline-yes">1x</span>
305
- <span class="cline-any cline-yes">1x</span>
306
- <span class="cline-any cline-yes">1x</span>
307
- <span class="cline-any cline-yes">1x</span>
308
- <span class="cline-any cline-yes">1x</span>
309
- <span class="cline-any cline-yes">1x</span>
310
- <span class="cline-any cline-yes">1x</span>
311
- <span class="cline-any cline-yes">1x</span>
312
- <span class="cline-any cline-yes">1x</span>
313
- <span class="cline-any cline-yes">1x</span>
314
- <span class="cline-any cline-yes">1x</span>
315
- <span class="cline-any cline-yes">1x</span>
316
- <span class="cline-any cline-yes">1x</span>
317
- <span class="cline-any cline-yes">1x</span>
318
- <span class="cline-any cline-yes">1x</span>
319
- <span class="cline-any cline-yes">1x</span>
320
- <span class="cline-any cline-yes">1x</span>
321
- <span class="cline-any cline-yes">1x</span>
322
- <span class="cline-any cline-yes">1x</span>
323
- <span class="cline-any cline-yes">1x</span>
324
- <span class="cline-any cline-yes">1x</span>
325
- <span class="cline-any cline-yes">1x</span>
326
- <span class="cline-any cline-yes">1x</span>
327
- <span class="cline-any cline-yes">1x</span>
328
- <span class="cline-any cline-yes">1x</span>
329
- <span class="cline-any cline-yes">1x</span>
330
- <span class="cline-any cline-yes">1x</span>
331
- <span class="cline-any cline-yes">1x</span>
332
- <span class="cline-any cline-yes">1x</span>
333
- <span class="cline-any cline-yes">1x</span>
334
- <span class="cline-any cline-yes">1x</span>
335
- <span class="cline-any cline-yes">1x</span>
336
- <span class="cline-any cline-yes">1x</span>
337
- <span class="cline-any cline-yes">1x</span>
338
- <span class="cline-any cline-yes">1x</span>
339
- <span class="cline-any cline-yes">1x</span>
340
- <span class="cline-any cline-yes">1x</span>
341
- <span class="cline-any cline-yes">1x</span>
342
- <span class="cline-any cline-yes">1x</span>
343
- <span class="cline-any cline-yes">1x</span>
344
- <span class="cline-any cline-no">&nbsp;</span>
345
- <span class="cline-any cline-no">&nbsp;</span>
346
- <span class="cline-any cline-yes">1x</span>
347
- <span class="cline-any cline-yes">1x</span>
348
- <span class="cline-any cline-yes">1x</span>
349
- <span class="cline-any cline-yes">1x</span>
350
- <span class="cline-any cline-yes">1x</span>
351
- <span class="cline-any cline-yes">1x</span>
352
- <span class="cline-any cline-yes">1x</span>
353
- <span class="cline-any cline-yes">1x</span>
354
- <span class="cline-any cline-yes">1x</span>
355
- <span class="cline-any cline-yes">1x</span>
356
- <span class="cline-any cline-yes">1x</span>
357
- <span class="cline-any cline-yes">1x</span>
358
- <span class="cline-any cline-no">&nbsp;</span>
359
- <span class="cline-any cline-no">&nbsp;</span>
360
- <span class="cline-any cline-no">&nbsp;</span>
361
- <span class="cline-any cline-no">&nbsp;</span>
362
- <span class="cline-any cline-no">&nbsp;</span>
363
- <span class="cline-any cline-no">&nbsp;</span>
364
- <span class="cline-any cline-no">&nbsp;</span>
365
- <span class="cline-any cline-no">&nbsp;</span>
366
- <span class="cline-any cline-yes">1x</span>
367
- <span class="cline-any cline-yes">1x</span>
368
- <span class="cline-any cline-yes">1x</span>
369
- <span class="cline-any cline-yes">1x</span>
370
- <span class="cline-any cline-yes">1x</span>
371
- <span class="cline-any cline-yes">1x</span>
372
- <span class="cline-any cline-yes">1x</span>
373
- <span class="cline-any cline-yes">1x</span>
374
- <span class="cline-any cline-yes">1x</span>
375
- <span class="cline-any cline-yes">1x</span>
376
- <span class="cline-any cline-yes">1x</span>
377
- <span class="cline-any cline-yes">1x</span>
378
- <span class="cline-any cline-yes">1x</span>
379
- <span class="cline-any cline-yes">1x</span>
380
- <span class="cline-any cline-no">&nbsp;</span>
381
- <span class="cline-any cline-yes">1x</span>
382
- <span class="cline-any cline-yes">1x</span>
383
- <span class="cline-any cline-yes">1x</span>
384
- <span class="cline-any cline-yes">1x</span>
385
- <span class="cline-any cline-yes">1x</span>
386
- <span class="cline-any cline-yes">1x</span>
387
- <span class="cline-any cline-no">&nbsp;</span>
388
- <span class="cline-any cline-no">&nbsp;</span>
389
- <span class="cline-any cline-no">&nbsp;</span>
390
- <span class="cline-any cline-no">&nbsp;</span>
391
- <span class="cline-any cline-yes">1x</span>
392
- <span class="cline-any cline-yes">1x</span>
393
- <span class="cline-any cline-no">&nbsp;</span>
394
- <span class="cline-any cline-no">&nbsp;</span>
395
- <span class="cline-any cline-no">&nbsp;</span>
396
- <span class="cline-any cline-no">&nbsp;</span>
397
- <span class="cline-any cline-no">&nbsp;</span>
398
- <span class="cline-any cline-no">&nbsp;</span>
399
- <span class="cline-any cline-no">&nbsp;</span>
400
- <span class="cline-any cline-no">&nbsp;</span>
401
- <span class="cline-any cline-no">&nbsp;</span>
402
- <span class="cline-any cline-no">&nbsp;</span>
403
- <span class="cline-any cline-no">&nbsp;</span>
404
- <span class="cline-any cline-no">&nbsp;</span>
405
- <span class="cline-any cline-no">&nbsp;</span>
406
- <span class="cline-any cline-no">&nbsp;</span>
407
- <span class="cline-any cline-no">&nbsp;</span>
408
- <span class="cline-any cline-no">&nbsp;</span>
409
- <span class="cline-any cline-yes">1x</span>
410
- <span class="cline-any cline-yes">1x</span>
411
- <span class="cline-any cline-no">&nbsp;</span>
412
- <span class="cline-any cline-no">&nbsp;</span>
413
- <span class="cline-any cline-no">&nbsp;</span>
414
- <span class="cline-any cline-no">&nbsp;</span>
415
- <span class="cline-any cline-no">&nbsp;</span>
416
- <span class="cline-any cline-no">&nbsp;</span>
417
- <span class="cline-any cline-no">&nbsp;</span>
418
- <span class="cline-any cline-no">&nbsp;</span>
419
- <span class="cline-any cline-no">&nbsp;</span>
420
- <span class="cline-any cline-no">&nbsp;</span>
421
- <span class="cline-any cline-no">&nbsp;</span>
422
- <span class="cline-any cline-no">&nbsp;</span>
423
- <span class="cline-any cline-no">&nbsp;</span>
424
- <span class="cline-any cline-no">&nbsp;</span>
425
- <span class="cline-any cline-yes">1x</span>
426
- <span class="cline-any cline-yes">1x</span>
427
- <span class="cline-any cline-yes">1x</span>
428
- <span class="cline-any cline-yes">1x</span>
429
- <span class="cline-any cline-yes">1x</span>
430
- <span class="cline-any cline-yes">1x</span>
431
- <span class="cline-any cline-yes">1x</span>
432
- <span class="cline-any cline-yes">1x</span>
433
- <span class="cline-any cline-yes">1x</span>
434
- <span class="cline-any cline-yes">1x</span>
435
- <span class="cline-any cline-yes">1x</span>
436
- <span class="cline-any cline-yes">1x</span>
437
- <span class="cline-any cline-yes">1x</span>
438
- <span class="cline-any cline-no">&nbsp;</span>
439
- <span class="cline-any cline-no">&nbsp;</span>
440
- <span class="cline-any cline-yes">1x</span>
441
- <span class="cline-any cline-yes">1x</span>
442
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import Hashes from "jshashes";
443
- &nbsp;
444
- import { improveAndRethrow } from "../common/errorUtils.js";
445
- import { safeStringify } from "../common/utils/safeStringify.js";
446
- import { Logger } from "../common/utils/logging/logger.js";
447
- &nbsp;
448
- import { RobustExternalAPICallerService } from "./robustExternalAPICallerService.js";
449
- import { CacheAndConcurrentRequestsResolver } from "./cacheAndConcurrentRequestsResolver.js";
450
- &nbsp;
451
- /**
452
- * Extended edit of RobustExternalApiCallerService supporting cache and management of concurrent requests
453
- * to the same resource.
454
- * TODO: [tests, critical] Massively used logic
455
- */
456
- export class CachedRobustExternalApiCallerService {
457
- /**
458
- * @param bio {string} unique service identifier
459
- * @param cache {Cache} cache instance
460
- * @param providersData {ExternalApiProvider[]} array of providers
461
- * @param [cacheTtlMs=10000] {number} time to live for cache ms
462
- * @param [maxCallAttemptsToWaitForAlreadyRunningRequest=50] {number} see details in CacheAndConcurrentRequestsResolver
463
- * @param [timeoutBetweenAttemptsToCheckWhetherAlreadyRunningRequestFinished=3000] {number} see details in CacheAndConcurrentRequestsResolver
464
- * @param [removeExpiredCacheAutomatically=true] {boolean} whether to remove cached data automatically when ttl exceeds
465
- * @param [mergeCachedAndNewlyRetrievedData=null] {function} function accepting cached data, newly retrieved data and id field name for list items
466
- * and merging them. use if needed
467
- */
468
- constructor(
469
- bio,
470
- cache,
471
- providersData,
472
- cacheTtlMs = 10000,
473
- removeExpiredCacheAutomatically = true,
474
- mergeCachedAndNewlyRetrievedData = null,
475
- maxCallAttemptsToWaitForAlreadyRunningRequest = 100,
476
- timeoutBetweenAttemptsToCheckWhetherAlreadyRunningRequestFinished = 1000
477
- ) {
478
- this._provider = new RobustExternalAPICallerService(
479
- `cached_${bio}`,
480
- providersData,
481
- Logger.logError
482
- );
483
- this._cacheTtlMs = cacheTtlMs;
484
- this._cahceAndRequestsResolver = new CacheAndConcurrentRequestsResolver(
485
- bio,
486
- cache,
487
- cacheTtlMs,
488
- removeExpiredCacheAutomatically,
489
- maxCallAttemptsToWaitForAlreadyRunningRequest,
490
- timeoutBetweenAttemptsToCheckWhetherAlreadyRunningRequestFinished
491
- );
492
- this._cahceIds = [];
493
- this._mergeCachedAndNewlyRetrievedData =
494
- mergeCachedAndNewlyRetrievedData;
495
- }
496
- &nbsp;
497
- /**
498
- * Calls the external API or returns data from cache. Just waits if the same data already requested.
499
- *
500
- * @param parametersValues {array} array of values of the parameters for URL query string [and/or body]
501
- * @param timeoutMS {number} http timeout to wait for response. If provider has its specific timeout value then it is used
502
- * @param [cancelToken] {object|undefined} axios token to force-cancel requests from high-level code
503
- * @param [attemptsCount] {number|undefined} number of attempts to be performed
504
- * @param [customHashFunctionForParams] {function|undefined} function without params calculating the hash to be
505
- * added to bio of the service to compose a unique parameters-specific cache id
506
- * @param [doNotFailForNowData] {boolean|undefined} pass true if you do not want us to throw an error if we retrieved null data from all the providers
507
- * @return {Promise&lt;any&gt;} resolving to retrieved data (or array of results if specific provider requires
508
- * several requests. NOTE: we flatten nested arrays - results of each separate request done for the specific provider)
509
- * @throws Error if requests to all providers are failed
510
- */
511
- async callExternalAPICached(
512
- parametersValues = [],
513
- timeoutMS = 3500,
514
- cancelToken = null,
515
- attemptsCount = 1,
516
- customHashFunctionForParams = null,
517
- doNotFailForNowData = false
518
- ) {
519
- const loggerSource = `${this._provider.bio}.callExternalAPICached`;
520
- let cacheId;
521
- let result;
522
- try {
523
- cacheId = this._calculateCacheId(
524
- parametersValues,
525
- customHashFunctionForParams
526
- );
527
- result =
528
- await this._cahceAndRequestsResolver.getCachedOrWaitForCachedOrAcquireLock(
529
- cacheId
530
- );
531
- if (!result?.canStartDataRetrieval) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
532
- <span class="cstat-no" title="statement not covered" > return result?.cachedData;</span>
533
- <span class="cstat-no" title="statement not covered" > }</span>
534
- &nbsp;
535
- let data = await this._provider.callExternalAPI(
536
- parametersValues,
537
- timeoutMS,
538
- cancelToken,
539
- attemptsCount,
540
- doNotFailForNowData
541
- );
542
- &nbsp;
543
- const canPerformMerge =
544
- typeof this._mergeCachedAndNewlyRetrievedData === "function";
545
- if (canPerformMerge) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
546
- <span class="cstat-no" title="statement not covered" > const mostRecentCached =</span>
547
- <span class="cstat-no" title="statement not covered" > this._cahceAndRequestsResolver.getCached(cacheId);</span>
548
- <span class="cstat-no" title="statement not covered" > data = this._mergeCachedAndNewlyRetrievedData(</span>
549
- <span class="cstat-no" title="statement not covered" > mostRecentCached,</span>
550
- <span class="cstat-no" title="statement not covered" > data,</span>
551
- <span class="cstat-no" title="statement not covered" > parametersValues</span>
552
- <span class="cstat-no" title="statement not covered" > );</span>
553
- <span class="cstat-no" title="statement not covered" > }</span>
554
- if (data != null) {
555
- this._cahceAndRequestsResolver.saveCachedData(
556
- cacheId,
557
- result?.lockId,
558
- data,
559
- true,
560
- canPerformMerge
561
- );
562
- this._cahceIds.indexOf(cacheId) &lt; 0 &amp;&amp;
563
- this._cahceIds.push(cacheId);
564
- }
565
- &nbsp;
566
- return data;
567
- } <span class="branch-0 cbranch-no" title="branch not covered" >catch (e) {</span>
568
- <span class="cstat-no" title="statement not covered" > improveAndRethrow(e, loggerSource);</span>
569
- } finally {
570
- this._cahceAndRequestsResolver.releaseLock(cacheId, result?.lockId);
571
- }
572
- }
573
- &nbsp;
574
- <span class="fstat-no" title="function not covered" > invalidateCaches() {</span>
575
- <span class="cstat-no" title="statement not covered" > this._cahceIds.forEach((key) =&gt;</span>
576
- <span class="cstat-no" title="statement not covered" > this._cahceAndRequestsResolver.invalidate(key)</span>
577
- <span class="cstat-no" title="statement not covered" > );</span>
578
- <span class="cstat-no" title="statement not covered" > }</span>
579
- &nbsp;
580
- <span class="fstat-no" title="function not covered" > actualizeCachedData(</span>
581
- <span class="cstat-no" title="statement not covered" > params,</span>
582
- <span class="cstat-no" title="statement not covered" > synchronousCurrentCacheProcessor,</span>
583
- <span class="cstat-no" title="statement not covered" > customHashFunctionForParams = null,</span>
584
- <span class="cstat-no" title="statement not covered" > sessionDependent = true,</span>
585
- <span class="cstat-no" title="statement not covered" > actualizedAtTimestamp</span>
586
- <span class="cstat-no" title="statement not covered" > ) {</span>
587
- <span class="cstat-no" title="statement not covered" > const cacheId = this._calculateCacheId(</span>
588
- <span class="cstat-no" title="statement not covered" > params,</span>
589
- <span class="cstat-no" title="statement not covered" > customHashFunctionForParams</span>
590
- <span class="cstat-no" title="statement not covered" > );</span>
591
- <span class="cstat-no" title="statement not covered" > this._cahceAndRequestsResolver.actualizeCachedData(</span>
592
- <span class="cstat-no" title="statement not covered" > cacheId,</span>
593
- <span class="cstat-no" title="statement not covered" > synchronousCurrentCacheProcessor,</span>
594
- <span class="cstat-no" title="statement not covered" > sessionDependent</span>
595
- <span class="cstat-no" title="statement not covered" > );</span>
596
- <span class="cstat-no" title="statement not covered" > }</span>
597
- &nbsp;
598
- <span class="fstat-no" title="function not covered" > markCacheAsExpiredButDontRemove(</span>
599
- <span class="cstat-no" title="statement not covered" > parametersValues,</span>
600
- <span class="cstat-no" title="statement not covered" > customHashFunctionForParams</span>
601
- <span class="cstat-no" title="statement not covered" > ) {</span>
602
- <span class="cstat-no" title="statement not covered" > try {</span>
603
- <span class="cstat-no" title="statement not covered" > this._cahceAndRequestsResolver.markAsExpiredButDontRemove(</span>
604
- <span class="cstat-no" title="statement not covered" > this._calculateCacheId(</span>
605
- <span class="cstat-no" title="statement not covered" > parametersValues,</span>
606
- <span class="cstat-no" title="statement not covered" > customHashFunctionForParams</span>
607
- <span class="cstat-no" title="statement not covered" > )</span>
608
- <span class="cstat-no" title="statement not covered" > );</span>
609
- <span class="cstat-no" title="statement not covered" > } catch (e) {</span>
610
- <span class="cstat-no" title="statement not covered" > improveAndRethrow(e, "markCacheAsExpiredButDontRemove");</span>
611
- <span class="cstat-no" title="statement not covered" > }</span>
612
- <span class="cstat-no" title="statement not covered" > }</span>
613
- &nbsp;
614
- _calculateCacheId(parametersValues, customHashFunctionForParams = null) {
615
- try {
616
- const hash =
617
- typeof customHashFunctionForParams === "function"
618
- <span class="branch-0 cbranch-no" title="branch not covered" > ? customHashFunctionForParams(parametersValues)</span>
619
- : !parametersValues
620
- <span class="branch-0 cbranch-no" title="branch not covered" > ? ""</span>
621
- : new Hashes.SHA512().hex(
622
- safeStringify(parametersValues)
623
- );
624
- return `${this._provider.bio}-${hash}`;
625
- } <span class="branch-0 cbranch-no" title="branch not covered" >catch (e) {</span>
626
- <span class="cstat-no" title="statement not covered" > improveAndRethrow(e, this._provider.bio + "_calculateCacheId");</span>
627
- <span class="cstat-no" title="statement not covered" > }</span>
628
- }
629
- }
630
- &nbsp;</pre></td></tr></table></pre>
631
-
632
- <div class='push'></div><!-- for sticky footer -->
633
- </div><!-- /wrapper -->
634
- <div class='footer quiet pad2 space-top1 center small'>
635
- Code coverage generated by
636
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
637
- at 2024-04-30T09:26:13.398Z
638
- </div>
639
- <script src="../../../prettify.js"></script>
640
- <script>
641
- window.onload = function () {
642
- prettyPrint();
643
- };
644
- </script>
645
- <script src="../../../sorter.js"></script>
646
- <script src="../../../block-navigation.js"></script>
647
- </body>
648
- </html>
649
-