@sera4/essentia 1.1.66-rc.1 → 1.1.66

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 (242) hide show
  1. package/package.json +1 -1
  2. package/package.tar.gz +0 -0
  3. package/coverage/base.css +0 -224
  4. package/coverage/block-navigation.js +0 -87
  5. package/coverage/configurations/index.html +0 -116
  6. package/coverage/configurations/server-config.ts.html +0 -94
  7. package/coverage/dns/DnsCache.ts.html +0 -598
  8. package/coverage/dns/index.html +0 -131
  9. package/coverage/dns/index.ts.html +0 -94
  10. package/coverage/favicon.png +0 -0
  11. package/coverage/health/index.html +0 -116
  12. package/coverage/health/index.ts.html +0 -778
  13. package/coverage/index.html +0 -161
  14. package/coverage/lcov-report/base.css +0 -224
  15. package/coverage/lcov-report/block-navigation.js +0 -87
  16. package/coverage/lcov-report/configurations/index.html +0 -116
  17. package/coverage/lcov-report/configurations/server-config.ts.html +0 -94
  18. package/coverage/lcov-report/dns/DnsCache.ts.html +0 -598
  19. package/coverage/lcov-report/dns/index.html +0 -131
  20. package/coverage/lcov-report/dns/index.ts.html +0 -94
  21. package/coverage/lcov-report/favicon.png +0 -0
  22. package/coverage/lcov-report/health/index.html +0 -116
  23. package/coverage/lcov-report/health/index.ts.html +0 -778
  24. package/coverage/lcov-report/index.html +0 -161
  25. package/coverage/lcov-report/logger/index.html +0 -131
  26. package/coverage/lcov-report/logger/index.ts.html +0 -94
  27. package/coverage/lcov-report/logger/s4-logger.ts.html +0 -514
  28. package/coverage/lcov-report/prettify.css +0 -1
  29. package/coverage/lcov-report/prettify.js +0 -2
  30. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  31. package/coverage/lcov-report/sorter.js +0 -196
  32. package/coverage/lcov.info +0 -747
  33. package/coverage/logger/index.html +0 -131
  34. package/coverage/logger/index.ts.html +0 -94
  35. package/coverage/logger/s4-logger.ts.html +0 -514
  36. package/coverage/prettify.css +0 -1
  37. package/coverage/prettify.js +0 -2
  38. package/coverage/sort-arrow-sprite.png +0 -0
  39. package/coverage/sorter.js +0 -196
  40. package/coverage/tmp/coverage-24302-1746472691313-0.json +0 -1
  41. package/coverage/tmp/coverage-24302-1746472691366-1.json +0 -1
  42. package/dist/cache/index.d.ts +0 -22
  43. package/dist/cache/index.js +0 -166
  44. package/dist/cache/index.js.map +0 -1
  45. package/dist/constants/index.d.ts +0 -6
  46. package/dist/constants/index.js +0 -9
  47. package/dist/constants/index.js.map +0 -1
  48. package/dist/coverage/block-navigation.d.ts +0 -1
  49. package/dist/coverage/block-navigation.js +0 -70
  50. package/dist/coverage/block-navigation.js.map +0 -1
  51. package/dist/coverage/lcov-report/block-navigation.d.ts +0 -1
  52. package/dist/coverage/lcov-report/block-navigation.js +0 -70
  53. package/dist/coverage/lcov-report/block-navigation.js.map +0 -1
  54. package/dist/coverage/lcov-report/prettify.d.ts +0 -0
  55. package/dist/coverage/lcov-report/prettify.js +0 -477
  56. package/dist/coverage/lcov-report/prettify.js.map +0 -1
  57. package/dist/coverage/lcov-report/sorter.d.ts +0 -1
  58. package/dist/coverage/lcov-report/sorter.js +0 -163
  59. package/dist/coverage/lcov-report/sorter.js.map +0 -1
  60. package/dist/coverage/prettify.d.ts +0 -0
  61. package/dist/coverage/prettify.js +0 -477
  62. package/dist/coverage/prettify.js.map +0 -1
  63. package/dist/coverage/sorter.d.ts +0 -1
  64. package/dist/coverage/sorter.js +0 -163
  65. package/dist/coverage/sorter.js.map +0 -1
  66. package/dist/formatter/index.d.ts +0 -37
  67. package/dist/formatter/index.js +0 -75
  68. package/dist/formatter/index.js.map +0 -1
  69. package/dist/hal/index.d.ts +0 -5
  70. package/dist/hal/index.js +0 -69
  71. package/dist/hal/index.js.map +0 -1
  72. package/dist/health/health-logger.d.ts +0 -9
  73. package/dist/health/health-logger.js +0 -34
  74. package/dist/health/health-logger.js.map +0 -1
  75. package/dist/health/index.d.ts +0 -19
  76. package/dist/health/index.js +0 -175
  77. package/dist/health/index.js.map +0 -1
  78. package/dist/helpers/index.d.ts +0 -1
  79. package/dist/helpers/index.js +0 -2
  80. package/dist/helpers/index.js.map +0 -1
  81. package/dist/helpers/test-server-wrapper.d.ts +0 -120
  82. package/dist/helpers/test-server-wrapper.js +0 -165
  83. package/dist/helpers/test-server-wrapper.js.map +0 -1
  84. package/dist/index.d.ts +0 -1
  85. package/dist/index.js +0 -17
  86. package/dist/index.js.map +0 -1
  87. package/dist/last-commit.d.ts +0 -1
  88. package/dist/last-commit.js +0 -12
  89. package/dist/last-commit.js.map +0 -1
  90. package/dist/last_commit/index.d.ts +0 -7
  91. package/dist/last_commit/index.js +0 -83
  92. package/dist/last_commit/index.js.map +0 -1
  93. package/dist/paginator/s4-pagination.d.ts +0 -9
  94. package/dist/paginator/s4-pagination.js +0 -49
  95. package/dist/paginator/s4-pagination.js.map +0 -1
  96. package/dist/paginator/sql-pagination.d.ts +0 -27
  97. package/dist/paginator/sql-pagination.js +0 -166
  98. package/dist/paginator/sql-pagination.js.map +0 -1
  99. package/dist/paper-trail/helpers.d.ts +0 -11
  100. package/dist/paper-trail/helpers.js +0 -74
  101. package/dist/paper-trail/helpers.js.map +0 -1
  102. package/dist/paper-trail/index.d.ts +0 -13
  103. package/dist/paper-trail/index.js +0 -662
  104. package/dist/paper-trail/index.js.map +0 -1
  105. package/dist/prompts/index.d.ts +0 -14
  106. package/dist/prompts/index.js +0 -63
  107. package/dist/prompts/index.js.map +0 -1
  108. package/dist/queue/index.d.ts +0 -166
  109. package/dist/queue/index.js +0 -371
  110. package/dist/queue/index.js.map +0 -1
  111. package/dist/queue/publisher.d.ts +0 -31
  112. package/dist/queue/publisher.js +0 -84
  113. package/dist/queue/publisher.js.map +0 -1
  114. package/dist/queue/queue-logger.d.ts +0 -9
  115. package/dist/queue/queue-logger.js +0 -35
  116. package/dist/queue/queue-logger.js.map +0 -1
  117. package/dist/queue/subscriber.d.ts +0 -39
  118. package/dist/queue/subscriber.js +0 -97
  119. package/dist/queue/subscriber.js.map +0 -1
  120. package/dist/safe_proxy/index.d.ts +0 -13
  121. package/dist/safe_proxy/index.js +0 -54
  122. package/dist/safe_proxy/index.js.map +0 -1
  123. package/dist/serializer/index.d.ts +0 -5
  124. package/dist/serializer/index.js +0 -83
  125. package/dist/serializer/index.js.map +0 -1
  126. package/dist/test/debug-array.d.ts +0 -0
  127. package/dist/test/debug-array.js +0 -1
  128. package/dist/test/debug-array.js.map +0 -1
  129. package/dist/test/debug-setJSONB.d.ts +0 -0
  130. package/dist/test/debug-setJSONB.js +0 -1
  131. package/dist/test/debug-setJSONB.js.map +0 -1
  132. package/dist/test/prompt.test.d.ts +0 -1
  133. package/dist/test/prompt.test.js +0 -74
  134. package/dist/test/prompt.test.js.map +0 -1
  135. package/dist/test/s4-formatter.spec.d.ts +0 -1
  136. package/dist/test/s4-formatter.spec.js +0 -67
  137. package/dist/test/s4-formatter.spec.js.map +0 -1
  138. package/dist/test/s4-pagination.spec.d.ts +0 -1
  139. package/dist/test/s4-pagination.spec.js +0 -170
  140. package/dist/test/s4-pagination.spec.js.map +0 -1
  141. package/dist/test/safe-proxy.spec.d.ts +0 -1
  142. package/dist/test/safe-proxy.spec.js +0 -252
  143. package/dist/test/safe-proxy.spec.js.map +0 -1
  144. package/dist/test/serializer.spec.d.ts +0 -1
  145. package/dist/test/serializer.spec.js +0 -27
  146. package/dist/test/serializer.spec.js.map +0 -1
  147. package/dist/test/utils.spec.d.ts +0 -1
  148. package/dist/test/utils.spec.js +0 -446
  149. package/dist/test/utils.spec.js.map +0 -1
  150. package/dist/ts/cache/index.d.ts +0 -33
  151. package/dist/ts/cache/index.js +0 -171
  152. package/dist/ts/cache/index.js.map +0 -1
  153. package/dist/ts/configurations/server-config.d.ts +0 -4
  154. package/dist/ts/configurations/server-config.js +0 -2
  155. package/dist/ts/configurations/server-config.js.map +0 -1
  156. package/dist/ts/constants/index.d.ts +0 -7
  157. package/dist/ts/constants/index.js +0 -8
  158. package/dist/ts/constants/index.js.map +0 -1
  159. package/dist/ts/cycle/index.d.ts +0 -53
  160. package/dist/ts/cycle/index.js +0 -169
  161. package/dist/ts/cycle/index.js.map +0 -1
  162. package/dist/ts/dns/DnsCache.d.ts +0 -50
  163. package/dist/ts/dns/DnsCache.js +0 -137
  164. package/dist/ts/dns/DnsCache.js.map +0 -1
  165. package/dist/ts/dns/index.d.ts +0 -4
  166. package/dist/ts/dns/index.js +0 -4
  167. package/dist/ts/dns/index.js.map +0 -1
  168. package/dist/ts/formatter/index.d.ts +0 -44
  169. package/dist/ts/formatter/index.js +0 -76
  170. package/dist/ts/formatter/index.js.map +0 -1
  171. package/dist/ts/hal/index.d.ts +0 -26
  172. package/dist/ts/hal/index.js +0 -70
  173. package/dist/ts/hal/index.js.map +0 -1
  174. package/dist/ts/health/index.d.ts +0 -53
  175. package/dist/ts/health/index.js +0 -165
  176. package/dist/ts/health/index.js.map +0 -1
  177. package/dist/ts/helpers/index.d.ts +0 -1
  178. package/dist/ts/helpers/index.js +0 -2
  179. package/dist/ts/helpers/index.js.map +0 -1
  180. package/dist/ts/helpers/test-server-wrapper.d.ts +0 -56
  181. package/dist/ts/helpers/test-server-wrapper.js +0 -144
  182. package/dist/ts/helpers/test-server-wrapper.js.map +0 -1
  183. package/dist/ts/index.d.ts +0 -22
  184. package/dist/ts/index.js +0 -27
  185. package/dist/ts/index.js.map +0 -1
  186. package/dist/ts/last-commit/index.d.ts +0 -12
  187. package/dist/ts/last-commit/index.js +0 -82
  188. package/dist/ts/last-commit/index.js.map +0 -1
  189. package/dist/ts/logger/index.d.ts +0 -3
  190. package/dist/ts/logger/index.js +0 -4
  191. package/dist/ts/logger/index.js.map +0 -1
  192. package/dist/ts/logger/s4-logger.d.ts +0 -23
  193. package/dist/ts/logger/s4-logger.js +0 -105
  194. package/dist/ts/logger/s4-logger.js.map +0 -1
  195. package/dist/ts/paginator/index.d.ts +0 -2
  196. package/dist/ts/paginator/index.js +0 -3
  197. package/dist/ts/paginator/index.js.map +0 -1
  198. package/dist/ts/paginator/s4-pagination.d.ts +0 -26
  199. package/dist/ts/paginator/s4-pagination.js +0 -49
  200. package/dist/ts/paginator/s4-pagination.js.map +0 -1
  201. package/dist/ts/paginator/sql-pagination.d.ts +0 -52
  202. package/dist/ts/paginator/sql-pagination.js +0 -157
  203. package/dist/ts/paginator/sql-pagination.js.map +0 -1
  204. package/dist/ts/paper-trail/helpers.d.ts +0 -14
  205. package/dist/ts/paper-trail/helpers.js +0 -74
  206. package/dist/ts/paper-trail/helpers.js.map +0 -1
  207. package/dist/ts/paper-trail/index.d.ts +0 -54
  208. package/dist/ts/paper-trail/index.js +0 -236
  209. package/dist/ts/paper-trail/index.js.map +0 -1
  210. package/dist/ts/prompts/index.d.ts +0 -21
  211. package/dist/ts/prompts/index.js +0 -68
  212. package/dist/ts/prompts/index.js.map +0 -1
  213. package/dist/ts/queue/index.d.ts +0 -232
  214. package/dist/ts/queue/index.js +0 -440
  215. package/dist/ts/queue/index.js.map +0 -1
  216. package/dist/ts/queue/publisher.d.ts +0 -41
  217. package/dist/ts/queue/publisher.js +0 -84
  218. package/dist/ts/queue/publisher.js.map +0 -1
  219. package/dist/ts/queue/queue-logger.d.ts +0 -10
  220. package/dist/ts/queue/queue-logger.js +0 -35
  221. package/dist/ts/queue/queue-logger.js.map +0 -1
  222. package/dist/ts/queue/subscriber.d.ts +0 -55
  223. package/dist/ts/queue/subscriber.js +0 -98
  224. package/dist/ts/queue/subscriber.js.map +0 -1
  225. package/dist/ts/safe-proxy/index.d.ts +0 -35
  226. package/dist/ts/safe-proxy/index.js +0 -54
  227. package/dist/ts/safe-proxy/index.js.map +0 -1
  228. package/dist/ts/serializer/index.d.ts +0 -52
  229. package/dist/ts/serializer/index.js +0 -83
  230. package/dist/ts/serializer/index.js.map +0 -1
  231. package/dist/ts/task-scheduler/index.d.ts +0 -130
  232. package/dist/ts/task-scheduler/index.js +0 -259
  233. package/dist/ts/task-scheduler/index.js.map +0 -1
  234. package/dist/ts/utils/index.d.ts +0 -49
  235. package/dist/ts/utils/index.js +0 -157
  236. package/dist/ts/utils/index.js.map +0 -1
  237. package/test/health.spec.js +0 -213
  238. package/test/prompt.test.js +0 -91
  239. package/test/s4-formatter.spec.js +0 -80
  240. package/test/s4-pagination.spec.js +0 -196
  241. package/test/serializer.spec.js +0 -34
  242. package/test/utils.spec.js +0 -145
@@ -1,598 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for dns/DnsCache.ts</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">dns</a> DnsCache.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">88.37% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>152/172</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">93.75% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>30/32</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">87.5% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>7/8</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">88.37% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>152/172</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 type="search" id="fileSearch">
61
- </div>
62
- </template>
63
- </div>
64
- <div class='status-line high'></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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
238
- <span class="cline-any cline-yes">1x</span>
239
- <span class="cline-any cline-yes">1x</span>
240
- <span class="cline-any cline-yes">1x</span>
241
- <span class="cline-any cline-yes">1x</span>
242
- <span class="cline-any cline-yes">1x</span>
243
- <span class="cline-any cline-yes">1x</span>
244
- <span class="cline-any cline-yes">1x</span>
245
- <span class="cline-any cline-yes">1x</span>
246
- <span class="cline-any cline-yes">1x</span>
247
- <span class="cline-any cline-yes">1x</span>
248
- <span class="cline-any cline-yes">1x</span>
249
- <span class="cline-any cline-yes">1x</span>
250
- <span class="cline-any cline-yes">1x</span>
251
- <span class="cline-any cline-yes">1x</span>
252
- <span class="cline-any cline-yes">1x</span>
253
- <span class="cline-any cline-yes">1x</span>
254
- <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">12x</span>
264
- <span class="cline-any cline-yes">12x</span>
265
- <span class="cline-any cline-yes">12x</span>
266
- <span class="cline-any cline-yes">12x</span>
267
- <span class="cline-any cline-yes">12x</span>
268
- <span class="cline-any cline-yes">12x</span>
269
- <span class="cline-any cline-yes">12x</span>
270
- <span class="cline-any cline-yes">12x</span>
271
- <span class="cline-any cline-yes">12x</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">13x</span>
275
- <span class="cline-any cline-yes">13x</span>
276
- <span class="cline-any cline-yes">13x</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">14x</span>
286
- <span class="cline-any cline-yes">14x</span>
287
- <span class="cline-any cline-yes">14x</span>
288
- <span class="cline-any cline-yes">14x</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">13x</span>
292
- <span class="cline-any cline-yes">13x</span>
293
- <span class="cline-any cline-yes">14x</span>
294
- <span class="cline-any cline-yes">14x</span>
295
- <span class="cline-any cline-yes">14x</span>
296
- <span class="cline-any cline-yes">14x</span>
297
- <span class="cline-any cline-no">&nbsp;</span>
298
- <span class="cline-any cline-no">&nbsp;</span>
299
- <span class="cline-any cline-no">&nbsp;</span>
300
- <span class="cline-any cline-no">&nbsp;</span>
301
- <span class="cline-any cline-no">&nbsp;</span>
302
- <span class="cline-any cline-no">&nbsp;</span>
303
- <span class="cline-any cline-yes">14x</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-no">&nbsp;</span>
310
- <span class="cline-any cline-no">&nbsp;</span>
311
- <span class="cline-any cline-no">&nbsp;</span>
312
- <span class="cline-any cline-no">&nbsp;</span>
313
- <span class="cline-any cline-no">&nbsp;</span>
314
- <span class="cline-any cline-no">&nbsp;</span>
315
- <span class="cline-any cline-no">&nbsp;</span>
316
- <span class="cline-any cline-no">&nbsp;</span>
317
- <span class="cline-any cline-no">&nbsp;</span>
318
- <span class="cline-any cline-no">&nbsp;</span>
319
- <span class="cline-any cline-no">&nbsp;</span>
320
- <span class="cline-any cline-no">&nbsp;</span>
321
- <span class="cline-any cline-no">&nbsp;</span>
322
- <span class="cline-any cline-no">&nbsp;</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">11x</span>
330
- <span class="cline-any cline-yes">10x</span>
331
- <span class="cline-any cline-yes">11x</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">2x</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">2x</span>
338
- <span class="cline-any cline-yes">1x</span>
339
- <span class="cline-any cline-yes">11x</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-yes">1x</span>
345
- <span class="cline-any cline-yes">1x</span>
346
- <span class="cline-any cline-yes">1x</span>
347
- <span class="cline-any cline-yes">13x</span>
348
- <span class="cline-any cline-yes">13x</span>
349
- <span class="cline-any cline-yes">13x</span>
350
- <span class="cline-any cline-yes">13x</span>
351
- <span class="cline-any cline-yes">13x</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">12x</span>
356
- <span class="cline-any cline-yes">12x</span>
357
- <span class="cline-any cline-yes">13x</span>
358
- <span class="cline-any cline-yes">2x</span>
359
- <span class="cline-any cline-yes">2x</span>
360
- <span class="cline-any cline-yes">2x</span>
361
- <span class="cline-any cline-yes">2x</span>
362
- <span class="cline-any cline-yes">2x</span>
363
- <span class="cline-any cline-yes">2x</span>
364
- <span class="cline-any cline-yes">10x</span>
365
- <span class="cline-any cline-yes">10x</span>
366
- <span class="cline-any cline-yes">13x</span>
367
- <span class="cline-any cline-yes">2x</span>
368
- <span class="cline-any cline-yes">2x</span>
369
- <span class="cline-any cline-yes">2x</span>
370
- <span class="cline-any cline-yes">8x</span>
371
- <span class="cline-any cline-yes">8x</span>
372
- <span class="cline-any cline-yes">8x</span>
373
- <span class="cline-any cline-yes">8x</span>
374
- <span class="cline-any cline-yes">8x</span>
375
- <span class="cline-any cline-yes">8x</span>
376
- <span class="cline-any cline-yes">8x</span>
377
- <span class="cline-any cline-yes">8x</span>
378
- <span class="cline-any cline-yes">8x</span>
379
- <span class="cline-any cline-yes">8x</span>
380
- <span class="cline-any cline-yes">8x</span>
381
- <span class="cline-any cline-yes">8x</span>
382
- <span class="cline-any cline-yes">8x</span>
383
- <span class="cline-any cline-yes">8x</span>
384
- <span class="cline-any cline-yes">8x</span>
385
- <span class="cline-any cline-yes">8x</span>
386
- <span class="cline-any cline-yes">8x</span>
387
- <span class="cline-any cline-yes">8x</span>
388
- <span class="cline-any cline-yes">8x</span>
389
- <span class="cline-any cline-yes">8x</span>
390
- <span class="cline-any cline-yes">8x</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-yes">1x</span>
394
- <span class="cline-any cline-yes">1x</span>
395
- <span class="cline-any cline-yes">1x</span>
396
- <span class="cline-any cline-yes">5x</span>
397
- <span class="cline-any cline-yes">5x</span>
398
- <span class="cline-any cline-yes">1x</span>
399
- <span class="cline-any cline-yes">1x</span>
400
- <span class="cline-any cline-yes">1x</span>
401
- <span class="cline-any cline-yes">1x</span>
402
- <span class="cline-any cline-yes">1x</span>
403
- <span class="cline-any cline-yes">1x</span>
404
- <span class="cline-any cline-yes">1x</span>
405
- <span class="cline-any cline-yes">1x</span>
406
- <span class="cline-any cline-yes">1x</span>
407
- <span class="cline-any cline-yes">1x</span>
408
- <span class="cline-any cline-yes">1x</span></td><td class="text"><pre class="prettyprint lang-js">import { Logger } from '../logger/s4-logger.js';
409
- import dns from 'node:dns';
410
- &nbsp;
411
- interface DnsCacheEntry {
412
- address: string;
413
- timestamp: number;
414
- }
415
- &nbsp;
416
- interface DnsCacheConfig {
417
- cacheTtlMs?: number;
418
- purgeIntervalMs?: number;
419
- debug?: boolean;
420
- forceTestMode?: boolean;
421
- }
422
- &nbsp;
423
- export class DnsCache {
424
- private static instance: DnsCache | null = null;
425
- private readonly cache: Map&lt;string, DnsCacheEntry&gt;;
426
- private readonly ongoingLookups: Map&lt;string, Promise&lt;string&gt;&gt;;
427
- private readonly cacheTtlMs: number;
428
- private readonly purgeIntervalMs: number;
429
- private readonly debug: boolean;
430
- private readonly forceTestMode: boolean;
431
- private readonly logger: Logger;
432
- &nbsp;
433
- private constructor(config: DnsCacheConfig = {}) {
434
- this.cache = new Map();
435
- this.ongoingLookups = new Map();
436
- this.cacheTtlMs = config.cacheTtlMs ?? 5000; // 5 seconds default
437
- this.purgeIntervalMs = config.purgeIntervalMs ?? 60 * 2 * 1000; // 2 minutes default
438
- this.debug = config.debug ?? false;
439
- this.forceTestMode = config.forceTestMode ?? false;
440
- this.logger = Logger.getInstance();
441
- this.logger.configure({ service: 'dns-cache' });
442
- }
443
- &nbsp;
444
- public static getInstance(config: DnsCacheConfig = {}): DnsCache {
445
- DnsCache.instance ??= new DnsCache(config);
446
- return DnsCache.instance;
447
- }
448
- &nbsp;
449
- /**
450
- * Resolves a target URL or hostname to its IP address
451
- * @param urlOrHostname - The URL or hostname to resolve
452
- * @param keepPath - Whether to keep the path in the returned URL
453
- * @returns The resolved URL with IP address
454
- */
455
- public async resolveTarget(urlOrHostname: string, keepPath: boolean = false): Promise&lt;string&gt; {
456
- const parsed = new URL(urlOrHostname);
457
- try {
458
- // Only return localhost if explicitly in test mode
459
- if (this.forceTestMode) {
460
- return `${parsed.protocol}//localhost:${parsed.port || 80}${keepPath <span class="branch-0 cbranch-no" title="branch not covered" >? parsed.pathname </span>: ''}`;
461
- }
462
- &nbsp;
463
- const ip = await this.lookupWithCache(parsed.hostname);
464
- let hostPart = ip.includes(':') ? `[${ip}]` : ip; // wrap IPv6
465
- &nbsp;
466
- return `${parsed.protocol}//${hostPart}:${parsed.port || 80}${keepPath ? parsed.pathname : ''}`;
467
- } <span class="branch-0 cbranch-no" title="branch not covered" >catch (e) {</span>
468
- <span class="cstat-no" title="statement not covered" > if (this.forceTestMode) {</span>
469
- <span class="cstat-no" title="statement not covered" > return urlOrHostname;</span>
470
- <span class="cstat-no" title="statement not covered" > } else {</span>
471
- <span class="cstat-no" title="statement not covered" > throw e;</span>
472
- <span class="cstat-no" title="statement not covered" > }</span>
473
- <span class="cstat-no" title="statement not covered" > }</span>
474
- }
475
- &nbsp;
476
- /**
477
- * Purges expired entries from the DNS cache
478
- */
479
- public <span class="fstat-no" title="function not covered" >purgeExpiredCache(): void {</span>
480
- <span class="cstat-no" title="statement not covered" > const now = Date.now();</span>
481
- <span class="cstat-no" title="statement not covered" > const purgedInstances = new Map&lt;string, DnsCacheEntry&gt;();</span>
482
- <span class="cstat-no" title="statement not covered" ></span>
483
- <span class="cstat-no" title="statement not covered" > for (const [hostname, entry] of this.cache.entries()) {</span>
484
- <span class="cstat-no" title="statement not covered" > if (now - entry.timestamp &gt;= this.cacheTtlMs) {</span>
485
- <span class="cstat-no" title="statement not covered" > purgedInstances.set(hostname, entry);</span>
486
- <span class="cstat-no" title="statement not covered" > this.cache.delete(hostname);</span>
487
- <span class="cstat-no" title="statement not covered" > }</span>
488
- <span class="cstat-no" title="statement not covered" > }</span>
489
- <span class="cstat-no" title="statement not covered" ></span>
490
- <span class="cstat-no" title="statement not covered" > if (this.debug &amp;&amp; purgedInstances.size &gt; 0) {</span>
491
- <span class="cstat-no" title="statement not covered" > console.log("Purged", purgedInstances.size, "expired DNS cache entries", purgedInstances.keys());</span>
492
- <span class="cstat-no" title="statement not covered" > }</span>
493
- <span class="cstat-no" title="statement not covered" > }</span>
494
- &nbsp;
495
- /**
496
- * Forces a cache purge for a specific hostname or all entries
497
- * @param hostname - Optional hostname to purge, if not provided purges all entries
498
- */
499
- public forceCachePurge(hostname?: string): void {
500
- if (!hostname) {
501
- this.cache.clear();
502
- } else {
503
- // if hostname is specified then purge all entries that match
504
- for (const [key] of this.cache.entries()) {
505
- if (key.includes(hostname)) {
506
- this.cache.delete(key);
507
- }
508
- }
509
- }
510
- }
511
- &nbsp;
512
- /**
513
- * Performs a DNS lookup with caching
514
- * @param target - The target hostname or URL to lookup
515
- * @returns The resolved IP address
516
- */
517
- private async lookupWithCache(target: string): Promise&lt;string&gt; {
518
- const now = Date.now();
519
- const cached = this.cache.get(target);
520
- &nbsp;
521
- // Check for valid cache entry first
522
- if (cached &amp;&amp; (now - cached.timestamp &lt; this.cacheTtlMs)) {
523
- this.logger.debug(`DNS cache hit for ${target}`);
524
- return cached.address;
525
- }
526
- &nbsp;
527
- // If cache TTL is 0, always do a new lookup
528
- if (this.cacheTtlMs === 0) {
529
- this.logger.debug(`DNS cache miss for ${target} (TTL=0)`);
530
- const { address } = await dns.promises.lookup(target);
531
- this.cache.set(target, { address, timestamp: now });
532
- this.logger.debug(`Cached ${target}: ${address}`);
533
- return address;
534
- }
535
- &nbsp;
536
- // Check if there's already a lookup in progress for this hostname
537
- if (this.ongoingLookups.has(target)) {
538
- this.logger.debug(`Waiting for ongoing DNS lookup for ${target}`);
539
- return this.ongoingLookups.get(target)!;
540
- }
541
- &nbsp;
542
- // Create a new lookup promise
543
- const lookupPromise = (async () =&gt; {
544
- try {
545
- this.logger.debug(`DNS cache miss for ${target}`);
546
- &nbsp;
547
- const { address } = await dns.promises.lookup(target);
548
- this.cache.set(target, { address, timestamp: now });
549
- this.logger.debug(`Cached ${target}: ${address}`);
550
- return address;
551
- } finally {
552
- // Clean up the ongoing lookup
553
- this.ongoingLookups.delete(target);
554
- }
555
- })();
556
- &nbsp;
557
- // Store the promise in the ongoing lookups map
558
- this.ongoingLookups.set(target, lookupPromise);
559
- &nbsp;
560
- return lookupPromise;
561
- }
562
- &nbsp;
563
- /**
564
- * Gets the current cache size
565
- */
566
- public getCacheSize(): number {
567
- return this.cache.size;
568
- }
569
- &nbsp;
570
- /**
571
- * Gets the current number of ongoing lookups
572
- */
573
- public getOngoingLookupsCount(): number {
574
- return this.ongoingLookups.size;
575
- }
576
- }
577
- &nbsp;
578
- // Export a default instance with default configuration
579
- export default DnsCache.getInstance();</pre></td></tr></table></pre>
580
-
581
- <div class='push'></div><!-- for sticky footer -->
582
- </div><!-- /wrapper -->
583
- <div class='footer quiet pad2 space-top1 center small'>
584
- Code coverage generated by
585
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
586
- at 2025-05-05T19:18:11.902Z
587
- </div>
588
- <script src="../prettify.js"></script>
589
- <script>
590
- window.onload = function () {
591
- prettyPrint();
592
- };
593
- </script>
594
- <script src="../sorter.js"></script>
595
- <script src="../block-navigation.js"></script>
596
- </body>
597
- </html>
598
-