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

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 (147) hide show
  1. package/.husky/pre-push +1 -1
  2. package/coverage/base.css +224 -0
  3. package/coverage/block-navigation.js +87 -0
  4. package/coverage/clover.xml +10957 -0
  5. package/coverage/coverage-final.json +67 -0
  6. package/coverage/favicon.png +0 -0
  7. package/coverage/index.html +701 -0
  8. package/coverage/prettify.css +1 -0
  9. package/coverage/prettify.js +2 -0
  10. package/coverage/rabbit-ui-kit/index.html +116 -0
  11. package/coverage/rabbit-ui-kit/index.js.html +88 -0
  12. package/coverage/rabbit-ui-kit/src/common/adapters/axiosAdapter.js.html +190 -0
  13. package/coverage/rabbit-ui-kit/src/common/adapters/index.html +116 -0
  14. package/coverage/rabbit-ui-kit/src/common/amountUtils.js.html +1393 -0
  15. package/coverage/rabbit-ui-kit/src/common/errorUtils.js.html +211 -0
  16. package/coverage/rabbit-ui-kit/src/common/external-apis/apiGroups.js.html +250 -0
  17. package/coverage/rabbit-ui-kit/src/common/external-apis/index.html +131 -0
  18. package/coverage/rabbit-ui-kit/src/common/external-apis/ipAddressProviders.js.html +499 -0
  19. package/coverage/rabbit-ui-kit/src/common/fiatCurrenciesService.js.html +568 -0
  20. package/coverage/rabbit-ui-kit/src/common/index.html +146 -0
  21. package/coverage/rabbit-ui-kit/src/common/models/blockchain.js.html +115 -0
  22. package/coverage/rabbit-ui-kit/src/common/models/coin.js.html +556 -0
  23. package/coverage/rabbit-ui-kit/src/common/models/index.html +146 -0
  24. package/coverage/rabbit-ui-kit/src/common/models/protocol.js.html +100 -0
  25. package/coverage/rabbit-ui-kit/src/common/utils/cache.js.html +889 -0
  26. package/coverage/rabbit-ui-kit/src/common/utils/emailAPI.js.html +139 -0
  27. package/coverage/rabbit-ui-kit/src/common/utils/index.html +161 -0
  28. package/coverage/rabbit-ui-kit/src/common/utils/logging/index.html +131 -0
  29. package/coverage/rabbit-ui-kit/src/common/utils/logging/logger.js.html +229 -0
  30. package/coverage/rabbit-ui-kit/src/common/utils/logging/logsStorage.js.html +268 -0
  31. package/coverage/rabbit-ui-kit/src/common/utils/postponeExecution.js.html +118 -0
  32. package/coverage/rabbit-ui-kit/src/common/utils/safeStringify.js.html +235 -0
  33. package/coverage/rabbit-ui-kit/src/components/atoms/AssetIcon/AssetIcon.jsx.html +250 -0
  34. package/coverage/rabbit-ui-kit/src/components/atoms/AssetIcon/index.html +116 -0
  35. package/coverage/rabbit-ui-kit/src/components/atoms/AssetSelection/AssetSelection.jsx.html +364 -0
  36. package/coverage/rabbit-ui-kit/src/components/atoms/AssetSelection/index.html +116 -0
  37. package/coverage/rabbit-ui-kit/src/components/atoms/BackgroundTitle/BackgroundTitle.jsx.html +217 -0
  38. package/coverage/rabbit-ui-kit/src/components/atoms/BackgroundTitle/index.html +116 -0
  39. package/coverage/rabbit-ui-kit/src/components/atoms/LoadingDots/LoadingDots.jsx.html +256 -0
  40. package/coverage/rabbit-ui-kit/src/components/atoms/LoadingDots/index.html +116 -0
  41. package/coverage/rabbit-ui-kit/src/components/atoms/NoticeIcon/NoticeIcon.jsx.html +298 -0
  42. package/coverage/rabbit-ui-kit/src/components/atoms/NoticeIcon/index.html +116 -0
  43. package/coverage/rabbit-ui-kit/src/components/atoms/SupportChat/SupportChat.jsx.html +229 -0
  44. package/coverage/rabbit-ui-kit/src/components/atoms/SupportChat/index.html +116 -0
  45. package/coverage/rabbit-ui-kit/src/components/atoms/TitleBox/TitleBox.jsx.html +574 -0
  46. package/coverage/rabbit-ui-kit/src/components/atoms/TitleBox/index.html +116 -0
  47. package/coverage/rabbit-ui-kit/src/components/atoms/Tooltip/Tooltip.jsx.html +370 -0
  48. package/coverage/rabbit-ui-kit/src/components/atoms/Tooltip/index.html +116 -0
  49. package/coverage/rabbit-ui-kit/src/components/atoms/Validation/Validation.jsx.html +475 -0
  50. package/coverage/rabbit-ui-kit/src/components/atoms/Validation/index.html +116 -0
  51. package/coverage/rabbit-ui-kit/src/components/atoms/buttons/Button/Button.jsx.html +802 -0
  52. package/coverage/rabbit-ui-kit/src/components/atoms/buttons/Button/index.html +116 -0
  53. package/coverage/rabbit-ui-kit/src/components/atoms/buttons/Close/Close.jsx.html +277 -0
  54. package/coverage/rabbit-ui-kit/src/components/atoms/buttons/Close/index.html +116 -0
  55. package/coverage/rabbit-ui-kit/src/components/atoms/buttons/LinkButton/LinkButton.jsx.html +448 -0
  56. package/coverage/rabbit-ui-kit/src/components/atoms/buttons/LinkButton/index.html +116 -0
  57. package/coverage/rabbit-ui-kit/src/components/hooks/index.html +131 -0
  58. package/coverage/rabbit-ui-kit/src/components/hooks/useCallHandlingErrors.js.html +163 -0
  59. package/coverage/rabbit-ui-kit/src/components/hooks/useReferredState.js.html +157 -0
  60. package/coverage/rabbit-ui-kit/src/components/molecules/AmountInput/AmountInput.jsx.html +1510 -0
  61. package/coverage/rabbit-ui-kit/src/components/molecules/AmountInput/index.html +116 -0
  62. package/coverage/rabbit-ui-kit/src/components/organisms/Dialog/Dialog.jsx.html +1630 -0
  63. package/coverage/rabbit-ui-kit/src/components/organisms/Dialog/DialogButtons/DialogButtons.jsx.html +451 -0
  64. package/coverage/rabbit-ui-kit/src/components/organisms/Dialog/DialogButtons/index.html +116 -0
  65. package/coverage/rabbit-ui-kit/src/components/organisms/Dialog/DialogStep/DialogStep.jsx.html +2077 -0
  66. package/coverage/rabbit-ui-kit/src/components/organisms/Dialog/DialogStep/index.html +116 -0
  67. package/coverage/rabbit-ui-kit/src/components/organisms/Dialog/index.html +116 -0
  68. package/coverage/rabbit-ui-kit/src/components/organisms/SwapForm/SwapForm.jsx.html +3538 -0
  69. package/coverage/rabbit-ui-kit/src/components/organisms/SwapForm/index.html +116 -0
  70. package/coverage/rabbit-ui-kit/src/components/utils/index.html +161 -0
  71. package/coverage/rabbit-ui-kit/src/components/utils/inputValueProviders.js.html +259 -0
  72. package/coverage/rabbit-ui-kit/src/components/utils/textUtils.js.html +139 -0
  73. package/coverage/rabbit-ui-kit/src/components/utils/uiUtils.js.html +127 -0
  74. package/coverage/rabbit-ui-kit/src/components/utils/urlQueryUtils.js.html +346 -0
  75. package/coverage/rabbit-ui-kit/src/constants/organisms/dialog/DialogStep/dialogStep.js.html +88 -0
  76. package/coverage/rabbit-ui-kit/src/constants/organisms/dialog/DialogStep/index.html +116 -0
  77. package/coverage/rabbit-ui-kit/src/constants/organisms/dialog/dialog.js.html +172 -0
  78. package/coverage/rabbit-ui-kit/src/constants/organisms/dialog/index.html +116 -0
  79. package/coverage/rabbit-ui-kit/src/index.html +116 -0
  80. package/coverage/rabbit-ui-kit/src/index.js.html +310 -0
  81. package/coverage/rabbit-ui-kit/src/robustExteranlApiCallerService/cacheAndConcurrentRequestsResolver.js.html +1762 -0
  82. package/coverage/rabbit-ui-kit/src/robustExteranlApiCallerService/cachedRobustExternalApiCallerService.js.html +649 -0
  83. package/coverage/rabbit-ui-kit/src/robustExteranlApiCallerService/cancelProcessing.js.html +172 -0
  84. package/coverage/rabbit-ui-kit/src/robustExteranlApiCallerService/concurrentCalculationsMetadataHolder.js.html +394 -0
  85. package/coverage/rabbit-ui-kit/src/robustExteranlApiCallerService/externalApiProvider.js.html +553 -0
  86. package/coverage/rabbit-ui-kit/src/robustExteranlApiCallerService/externalServicesStatsCollector.js.html +331 -0
  87. package/coverage/rabbit-ui-kit/src/robustExteranlApiCallerService/index.html +206 -0
  88. package/coverage/rabbit-ui-kit/src/robustExteranlApiCallerService/robustExternalAPICallerService.js.html +1249 -0
  89. package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/index.html +131 -0
  90. package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/swapProvider.js.html +727 -0
  91. package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/swapspaceSwapProvider.js.html +2899 -0
  92. package/coverage/rabbit-ui-kit/src/swaps-lib/models/baseSwapCreationInfo.js.html +214 -0
  93. package/coverage/rabbit-ui-kit/src/swaps-lib/models/existingSwap.js.html +304 -0
  94. package/coverage/rabbit-ui-kit/src/swaps-lib/models/existingSwapWithFiatData.js.html +487 -0
  95. package/coverage/rabbit-ui-kit/src/swaps-lib/models/index.html +146 -0
  96. package/coverage/rabbit-ui-kit/src/swaps-lib/services/index.html +116 -0
  97. package/coverage/rabbit-ui-kit/src/swaps-lib/services/publicSwapService.js.html +2191 -0
  98. package/coverage/rabbit-ui-kit/src/swaps-lib/utils/index.html +116 -0
  99. package/coverage/rabbit-ui-kit/src/swaps-lib/utils/swapUtils.js.html +742 -0
  100. package/coverage/rabbit-ui-kit/stories/atoms/BackgroundTitle.stories.jsx.html +202 -0
  101. package/coverage/rabbit-ui-kit/stories/atoms/LoadingDots.stories.jsx.html +226 -0
  102. package/coverage/rabbit-ui-kit/stories/atoms/Validation.stories.jsx.html +178 -0
  103. package/coverage/rabbit-ui-kit/stories/atoms/buttons/Button.stories.jsx.html +946 -0
  104. package/coverage/rabbit-ui-kit/stories/atoms/buttons/Close.stories.jsx.html +211 -0
  105. package/coverage/rabbit-ui-kit/stories/atoms/buttons/LinkButton.stories.jsx.html +298 -0
  106. package/coverage/rabbit-ui-kit/stories/atoms/buttons/index.html +146 -0
  107. package/coverage/rabbit-ui-kit/stories/atoms/index.html +146 -0
  108. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/Dialog.stories.jsx.html +574 -0
  109. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/DialogButtons/DialogButtons.stories.jsx.html +328 -0
  110. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/DialogButtons/index.html +116 -0
  111. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/DialogStep/DialogStep.stories.jsx.html +352 -0
  112. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/DialogStep/index.html +116 -0
  113. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/index.html +116 -0
  114. package/coverage/rabbit-ui-kit/stories/stubs/exampleContent.jsx.html +145 -0
  115. package/coverage/rabbit-ui-kit/stories/stubs/index.html +116 -0
  116. package/coverage/sort-arrow-sprite.png +0 -0
  117. package/coverage/sorter.js +196 -0
  118. package/dist/index.cjs +1634 -130
  119. package/dist/index.cjs.map +1 -1
  120. package/dist/index.css +17456 -110
  121. package/dist/index.css.map +1 -1
  122. package/dist/index.modern.js +1368 -111
  123. package/dist/index.modern.js.map +1 -1
  124. package/dist/index.module.js +1626 -131
  125. package/dist/index.module.js.map +1 -1
  126. package/dist/index.umd.js +1637 -134
  127. package/dist/index.umd.js.map +1 -1
  128. package/package.json +2 -1
  129. package/src/assets/image/icons/arrow-darker.svg +14 -0
  130. package/src/assets/image/icons/dark-rectangle.svg +3 -0
  131. package/src/assets/image/icons/wallet-gray-small.svg +6 -0
  132. package/src/components/atoms/AssetSelection/AssetSelection.jsx +93 -0
  133. package/src/components/atoms/AssetSelection/asset-selection.module.scss +55 -0
  134. package/src/components/atoms/NoticeIcon/NoticeIcon.jsx +71 -0
  135. package/src/components/atoms/NoticeIcon/notice-icon.module.scss +14 -0
  136. package/src/components/atoms/TitleBox/TitleBox.jsx +163 -0
  137. package/src/components/atoms/TitleBox/title-box.module.scss +30 -0
  138. package/src/components/atoms/Tooltip/Tooltip.jsx +95 -0
  139. package/src/components/atoms/Tooltip/tooltip.module.scss +231 -0
  140. package/src/components/atoms/Validation/Validation.jsx +1 -1
  141. package/src/components/molecules/AmountInput/AmountInput.jsx +475 -0
  142. package/src/components/molecules/AmountInput/amount-input.module.scss +189 -0
  143. package/src/components/organisms/SwapForm/SwapForm.jsx +1151 -0
  144. package/src/components/organisms/SwapForm/swap-form.module.scss +120 -0
  145. package/src/components/utils/textUtils.js +18 -0
  146. package/src/index.js +11 -1
  147. package/styles/index.scss +11 -10
@@ -0,0 +1,649 @@
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-05-03T08:51:03.016Z
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
+