topkat-utils 1.3.12 → 1.3.13

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 (29) hide show
  1. package/package.json +1 -1
  2. package/.yarn/install-state.gz +0 -0
  3. package/coverage/clover.xml +0 -1991
  4. package/coverage/coverage-final.json +0 -17
  5. package/coverage/lcov-report/base.css +0 -224
  6. package/coverage/lcov-report/block-navigation.js +0 -87
  7. package/coverage/lcov-report/clean-stack-trace.ts.html +0 -199
  8. package/coverage/lcov-report/config.ts.html +0 -352
  9. package/coverage/lcov-report/error-utils.ts.html +0 -766
  10. package/coverage/lcov-report/favicon.png +0 -0
  11. package/coverage/lcov-report/index.html +0 -341
  12. package/coverage/lcov-report/is-empty.ts.html +0 -103
  13. package/coverage/lcov-report/is-nodejs.ts.html +0 -109
  14. package/coverage/lcov-report/is-object.ts.html +0 -91
  15. package/coverage/lcov-report/isset.ts.html +0 -91
  16. package/coverage/lcov-report/logger-utils.ts.html +0 -1159
  17. package/coverage/lcov-report/loop-utils.ts.html +0 -574
  18. package/coverage/lcov-report/math-utils.ts.html +0 -259
  19. package/coverage/lcov-report/object-utils.ts.html +0 -1471
  20. package/coverage/lcov-report/prettify.css +0 -1
  21. package/coverage/lcov-report/prettify.js +0 -2
  22. package/coverage/lcov-report/regexp-utils.ts.html +0 -238
  23. package/coverage/lcov-report/remove-circular-json-stringify.ts.html +0 -139
  24. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  25. package/coverage/lcov-report/sorter.js +0 -196
  26. package/coverage/lcov-report/string-utils.ts.html +0 -964
  27. package/coverage/lcov-report/timer-utils.ts.html +0 -349
  28. package/coverage/lcov-report/transaction-utils.ts.html +0 -274
  29. package/coverage/lcov.info +0 -2405
@@ -1,964 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for string-utils.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> string-utils.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">34.81% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>102/293</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">100% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>0/0</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">0% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>0/24</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">34.81% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>102/293</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 low'></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>
255
- <a name='L190'></a><a href='#L190'>190</a>
256
- <a name='L191'></a><a href='#L191'>191</a>
257
- <a name='L192'></a><a href='#L192'>192</a>
258
- <a name='L193'></a><a href='#L193'>193</a>
259
- <a name='L194'></a><a href='#L194'>194</a>
260
- <a name='L195'></a><a href='#L195'>195</a>
261
- <a name='L196'></a><a href='#L196'>196</a>
262
- <a name='L197'></a><a href='#L197'>197</a>
263
- <a name='L198'></a><a href='#L198'>198</a>
264
- <a name='L199'></a><a href='#L199'>199</a>
265
- <a name='L200'></a><a href='#L200'>200</a>
266
- <a name='L201'></a><a href='#L201'>201</a>
267
- <a name='L202'></a><a href='#L202'>202</a>
268
- <a name='L203'></a><a href='#L203'>203</a>
269
- <a name='L204'></a><a href='#L204'>204</a>
270
- <a name='L205'></a><a href='#L205'>205</a>
271
- <a name='L206'></a><a href='#L206'>206</a>
272
- <a name='L207'></a><a href='#L207'>207</a>
273
- <a name='L208'></a><a href='#L208'>208</a>
274
- <a name='L209'></a><a href='#L209'>209</a>
275
- <a name='L210'></a><a href='#L210'>210</a>
276
- <a name='L211'></a><a href='#L211'>211</a>
277
- <a name='L212'></a><a href='#L212'>212</a>
278
- <a name='L213'></a><a href='#L213'>213</a>
279
- <a name='L214'></a><a href='#L214'>214</a>
280
- <a name='L215'></a><a href='#L215'>215</a>
281
- <a name='L216'></a><a href='#L216'>216</a>
282
- <a name='L217'></a><a href='#L217'>217</a>
283
- <a name='L218'></a><a href='#L218'>218</a>
284
- <a name='L219'></a><a href='#L219'>219</a>
285
- <a name='L220'></a><a href='#L220'>220</a>
286
- <a name='L221'></a><a href='#L221'>221</a>
287
- <a name='L222'></a><a href='#L222'>222</a>
288
- <a name='L223'></a><a href='#L223'>223</a>
289
- <a name='L224'></a><a href='#L224'>224</a>
290
- <a name='L225'></a><a href='#L225'>225</a>
291
- <a name='L226'></a><a href='#L226'>226</a>
292
- <a name='L227'></a><a href='#L227'>227</a>
293
- <a name='L228'></a><a href='#L228'>228</a>
294
- <a name='L229'></a><a href='#L229'>229</a>
295
- <a name='L230'></a><a href='#L230'>230</a>
296
- <a name='L231'></a><a href='#L231'>231</a>
297
- <a name='L232'></a><a href='#L232'>232</a>
298
- <a name='L233'></a><a href='#L233'>233</a>
299
- <a name='L234'></a><a href='#L234'>234</a>
300
- <a name='L235'></a><a href='#L235'>235</a>
301
- <a name='L236'></a><a href='#L236'>236</a>
302
- <a name='L237'></a><a href='#L237'>237</a>
303
- <a name='L238'></a><a href='#L238'>238</a>
304
- <a name='L239'></a><a href='#L239'>239</a>
305
- <a name='L240'></a><a href='#L240'>240</a>
306
- <a name='L241'></a><a href='#L241'>241</a>
307
- <a name='L242'></a><a href='#L242'>242</a>
308
- <a name='L243'></a><a href='#L243'>243</a>
309
- <a name='L244'></a><a href='#L244'>244</a>
310
- <a name='L245'></a><a href='#L245'>245</a>
311
- <a name='L246'></a><a href='#L246'>246</a>
312
- <a name='L247'></a><a href='#L247'>247</a>
313
- <a name='L248'></a><a href='#L248'>248</a>
314
- <a name='L249'></a><a href='#L249'>249</a>
315
- <a name='L250'></a><a href='#L250'>250</a>
316
- <a name='L251'></a><a href='#L251'>251</a>
317
- <a name='L252'></a><a href='#L252'>252</a>
318
- <a name='L253'></a><a href='#L253'>253</a>
319
- <a name='L254'></a><a href='#L254'>254</a>
320
- <a name='L255'></a><a href='#L255'>255</a>
321
- <a name='L256'></a><a href='#L256'>256</a>
322
- <a name='L257'></a><a href='#L257'>257</a>
323
- <a name='L258'></a><a href='#L258'>258</a>
324
- <a name='L259'></a><a href='#L259'>259</a>
325
- <a name='L260'></a><a href='#L260'>260</a>
326
- <a name='L261'></a><a href='#L261'>261</a>
327
- <a name='L262'></a><a href='#L262'>262</a>
328
- <a name='L263'></a><a href='#L263'>263</a>
329
- <a name='L264'></a><a href='#L264'>264</a>
330
- <a name='L265'></a><a href='#L265'>265</a>
331
- <a name='L266'></a><a href='#L266'>266</a>
332
- <a name='L267'></a><a href='#L267'>267</a>
333
- <a name='L268'></a><a href='#L268'>268</a>
334
- <a name='L269'></a><a href='#L269'>269</a>
335
- <a name='L270'></a><a href='#L270'>270</a>
336
- <a name='L271'></a><a href='#L271'>271</a>
337
- <a name='L272'></a><a href='#L272'>272</a>
338
- <a name='L273'></a><a href='#L273'>273</a>
339
- <a name='L274'></a><a href='#L274'>274</a>
340
- <a name='L275'></a><a href='#L275'>275</a>
341
- <a name='L276'></a><a href='#L276'>276</a>
342
- <a name='L277'></a><a href='#L277'>277</a>
343
- <a name='L278'></a><a href='#L278'>278</a>
344
- <a name='L279'></a><a href='#L279'>279</a>
345
- <a name='L280'></a><a href='#L280'>280</a>
346
- <a name='L281'></a><a href='#L281'>281</a>
347
- <a name='L282'></a><a href='#L282'>282</a>
348
- <a name='L283'></a><a href='#L283'>283</a>
349
- <a name='L284'></a><a href='#L284'>284</a>
350
- <a name='L285'></a><a href='#L285'>285</a>
351
- <a name='L286'></a><a href='#L286'>286</a>
352
- <a name='L287'></a><a href='#L287'>287</a>
353
- <a name='L288'></a><a href='#L288'>288</a>
354
- <a name='L289'></a><a href='#L289'>289</a>
355
- <a name='L290'></a><a href='#L290'>290</a>
356
- <a name='L291'></a><a href='#L291'>291</a>
357
- <a name='L292'></a><a href='#L292'>292</a>
358
- <a name='L293'></a><a href='#L293'>293</a>
359
- <a name='L294'></a><a href='#L294'>294</a></td><td class="line-coverage quiet"><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">2x</span>
365
- <span class="cline-any cline-yes">2x</span>
366
- <span class="cline-any cline-yes">2x</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-no">&nbsp;</span>
370
- <span class="cline-any cline-no">&nbsp;</span>
371
- <span class="cline-any cline-no">&nbsp;</span>
372
- <span class="cline-any cline-no">&nbsp;</span>
373
- <span class="cline-any cline-yes">2x</span>
374
- <span class="cline-any cline-yes">2x</span>
375
- <span class="cline-any cline-no">&nbsp;</span>
376
- <span class="cline-any cline-no">&nbsp;</span>
377
- <span class="cline-any cline-no">&nbsp;</span>
378
- <span class="cline-any cline-no">&nbsp;</span>
379
- <span class="cline-any cline-yes">2x</span>
380
- <span class="cline-any cline-yes">2x</span>
381
- <span class="cline-any cline-yes">2x</span>
382
- <span class="cline-any cline-yes">2x</span>
383
- <span class="cline-any cline-yes">2x</span>
384
- <span class="cline-any cline-no">&nbsp;</span>
385
- <span class="cline-any cline-no">&nbsp;</span>
386
- <span class="cline-any cline-no">&nbsp;</span>
387
- <span class="cline-any cline-no">&nbsp;</span>
388
- <span class="cline-any cline-yes">2x</span>
389
- <span class="cline-any cline-yes">2x</span>
390
- <span class="cline-any cline-yes">2x</span>
391
- <span class="cline-any cline-yes">2x</span>
392
- <span class="cline-any cline-no">&nbsp;</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-yes">2x</span>
397
- <span class="cline-any cline-yes">2x</span>
398
- <span class="cline-any cline-yes">2x</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-yes">2x</span>
404
- <span class="cline-any cline-yes">2x</span>
405
- <span class="cline-any cline-yes">2x</span>
406
- <span class="cline-any cline-yes">2x</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-no">&nbsp;</span>
410
- <span class="cline-any cline-no">&nbsp;</span>
411
- <span class="cline-any cline-yes">2x</span>
412
- <span class="cline-any cline-no">&nbsp;</span>
413
- <span class="cline-any cline-yes">2x</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-yes">2x</span>
418
- <span class="cline-any cline-yes">2x</span>
419
- <span class="cline-any cline-yes">2x</span>
420
- <span class="cline-any cline-yes">2x</span>
421
- <span class="cline-any cline-yes">2x</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-no">&nbsp;</span>
426
- <span class="cline-any cline-no">&nbsp;</span>
427
- <span class="cline-any cline-yes">2x</span>
428
- <span class="cline-any cline-yes">2x</span>
429
- <span class="cline-any cline-yes">2x</span>
430
- <span class="cline-any cline-yes">2x</span>
431
- <span class="cline-any cline-yes">2x</span>
432
- <span class="cline-any cline-yes">2x</span>
433
- <span class="cline-any cline-yes">2x</span>
434
- <span class="cline-any cline-yes">2x</span>
435
- <span class="cline-any cline-yes">2x</span>
436
- <span class="cline-any cline-yes">2x</span>
437
- <span class="cline-any cline-no">&nbsp;</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-no">&nbsp;</span>
441
- <span class="cline-any cline-no">&nbsp;</span>
442
- <span class="cline-any cline-no">&nbsp;</span>
443
- <span class="cline-any cline-no">&nbsp;</span>
444
- <span class="cline-any cline-no">&nbsp;</span>
445
- <span class="cline-any cline-no">&nbsp;</span>
446
- <span class="cline-any cline-no">&nbsp;</span>
447
- <span class="cline-any cline-no">&nbsp;</span>
448
- <span class="cline-any cline-no">&nbsp;</span>
449
- <span class="cline-any cline-no">&nbsp;</span>
450
- <span class="cline-any cline-no">&nbsp;</span>
451
- <span class="cline-any cline-no">&nbsp;</span>
452
- <span class="cline-any cline-no">&nbsp;</span>
453
- <span class="cline-any cline-no">&nbsp;</span>
454
- <span class="cline-any cline-no">&nbsp;</span>
455
- <span class="cline-any cline-no">&nbsp;</span>
456
- <span class="cline-any cline-no">&nbsp;</span>
457
- <span class="cline-any cline-no">&nbsp;</span>
458
- <span class="cline-any cline-no">&nbsp;</span>
459
- <span class="cline-any cline-no">&nbsp;</span>
460
- <span class="cline-any cline-no">&nbsp;</span>
461
- <span class="cline-any cline-no">&nbsp;</span>
462
- <span class="cline-any cline-no">&nbsp;</span>
463
- <span class="cline-any cline-no">&nbsp;</span>
464
- <span class="cline-any cline-no">&nbsp;</span>
465
- <span class="cline-any cline-no">&nbsp;</span>
466
- <span class="cline-any cline-no">&nbsp;</span>
467
- <span class="cline-any cline-no">&nbsp;</span>
468
- <span class="cline-any cline-no">&nbsp;</span>
469
- <span class="cline-any cline-no">&nbsp;</span>
470
- <span class="cline-any cline-no">&nbsp;</span>
471
- <span class="cline-any cline-no">&nbsp;</span>
472
- <span class="cline-any cline-no">&nbsp;</span>
473
- <span class="cline-any cline-no">&nbsp;</span>
474
- <span class="cline-any cline-no">&nbsp;</span>
475
- <span class="cline-any cline-no">&nbsp;</span>
476
- <span class="cline-any cline-no">&nbsp;</span>
477
- <span class="cline-any cline-no">&nbsp;</span>
478
- <span class="cline-any cline-no">&nbsp;</span>
479
- <span class="cline-any cline-no">&nbsp;</span>
480
- <span class="cline-any cline-no">&nbsp;</span>
481
- <span class="cline-any cline-no">&nbsp;</span>
482
- <span class="cline-any cline-no">&nbsp;</span>
483
- <span class="cline-any cline-no">&nbsp;</span>
484
- <span class="cline-any cline-no">&nbsp;</span>
485
- <span class="cline-any cline-no">&nbsp;</span>
486
- <span class="cline-any cline-no">&nbsp;</span>
487
- <span class="cline-any cline-no">&nbsp;</span>
488
- <span class="cline-any cline-no">&nbsp;</span>
489
- <span class="cline-any cline-no">&nbsp;</span>
490
- <span class="cline-any cline-no">&nbsp;</span>
491
- <span class="cline-any cline-no">&nbsp;</span>
492
- <span class="cline-any cline-no">&nbsp;</span>
493
- <span class="cline-any cline-no">&nbsp;</span>
494
- <span class="cline-any cline-yes">2x</span>
495
- <span class="cline-any cline-yes">2x</span>
496
- <span class="cline-any cline-yes">2x</span>
497
- <span class="cline-any cline-yes">2x</span>
498
- <span class="cline-any cline-yes">2x</span>
499
- <span class="cline-any cline-yes">2x</span>
500
- <span class="cline-any cline-no">&nbsp;</span>
501
- <span class="cline-any cline-no">&nbsp;</span>
502
- <span class="cline-any cline-no">&nbsp;</span>
503
- <span class="cline-any cline-no">&nbsp;</span>
504
- <span class="cline-any cline-no">&nbsp;</span>
505
- <span class="cline-any cline-no">&nbsp;</span>
506
- <span class="cline-any cline-no">&nbsp;</span>
507
- <span class="cline-any cline-no">&nbsp;</span>
508
- <span class="cline-any cline-no">&nbsp;</span>
509
- <span class="cline-any cline-no">&nbsp;</span>
510
- <span class="cline-any cline-no">&nbsp;</span>
511
- <span class="cline-any cline-no">&nbsp;</span>
512
- <span class="cline-any cline-no">&nbsp;</span>
513
- <span class="cline-any cline-no">&nbsp;</span>
514
- <span class="cline-any cline-no">&nbsp;</span>
515
- <span class="cline-any cline-no">&nbsp;</span>
516
- <span class="cline-any cline-no">&nbsp;</span>
517
- <span class="cline-any cline-no">&nbsp;</span>
518
- <span class="cline-any cline-no">&nbsp;</span>
519
- <span class="cline-any cline-no">&nbsp;</span>
520
- <span class="cline-any cline-yes">2x</span>
521
- <span class="cline-any cline-yes">2x</span>
522
- <span class="cline-any cline-yes">2x</span>
523
- <span class="cline-any cline-yes">2x</span>
524
- <span class="cline-any cline-yes">2x</span>
525
- <span class="cline-any cline-yes">2x</span>
526
- <span class="cline-any cline-yes">2x</span>
527
- <span class="cline-any cline-yes">2x</span>
528
- <span class="cline-any cline-yes">2x</span>
529
- <span class="cline-any cline-yes">2x</span>
530
- <span class="cline-any cline-no">&nbsp;</span>
531
- <span class="cline-any cline-no">&nbsp;</span>
532
- <span class="cline-any cline-no">&nbsp;</span>
533
- <span class="cline-any cline-no">&nbsp;</span>
534
- <span class="cline-any cline-no">&nbsp;</span>
535
- <span class="cline-any cline-no">&nbsp;</span>
536
- <span class="cline-any cline-no">&nbsp;</span>
537
- <span class="cline-any cline-no">&nbsp;</span>
538
- <span class="cline-any cline-no">&nbsp;</span>
539
- <span class="cline-any cline-no">&nbsp;</span>
540
- <span class="cline-any cline-no">&nbsp;</span>
541
- <span class="cline-any cline-no">&nbsp;</span>
542
- <span class="cline-any cline-no">&nbsp;</span>
543
- <span class="cline-any cline-no">&nbsp;</span>
544
- <span class="cline-any cline-no">&nbsp;</span>
545
- <span class="cline-any cline-no">&nbsp;</span>
546
- <span class="cline-any cline-no">&nbsp;</span>
547
- <span class="cline-any cline-yes">2x</span>
548
- <span class="cline-any cline-no">&nbsp;</span>
549
- <span class="cline-any cline-no">&nbsp;</span>
550
- <span class="cline-any cline-no">&nbsp;</span>
551
- <span class="cline-any cline-yes">2x</span>
552
- <span class="cline-any cline-yes">2x</span>
553
- <span class="cline-any cline-yes">2x</span>
554
- <span class="cline-any cline-yes">2x</span>
555
- <span class="cline-any cline-yes">2x</span>
556
- <span class="cline-any cline-yes">2x</span>
557
- <span class="cline-any cline-no">&nbsp;</span>
558
- <span class="cline-any cline-no">&nbsp;</span>
559
- <span class="cline-any cline-no">&nbsp;</span>
560
- <span class="cline-any cline-no">&nbsp;</span>
561
- <span class="cline-any cline-no">&nbsp;</span>
562
- <span class="cline-any cline-no">&nbsp;</span>
563
- <span class="cline-any cline-no">&nbsp;</span>
564
- <span class="cline-any cline-yes">2x</span>
565
- <span class="cline-any cline-yes">2x</span>
566
- <span class="cline-any cline-no">&nbsp;</span>
567
- <span class="cline-any cline-no">&nbsp;</span>
568
- <span class="cline-any cline-no">&nbsp;</span>
569
- <span class="cline-any cline-no">&nbsp;</span>
570
- <span class="cline-any cline-no">&nbsp;</span>
571
- <span class="cline-any cline-no">&nbsp;</span>
572
- <span class="cline-any cline-yes">2x</span>
573
- <span class="cline-any cline-yes">2x</span>
574
- <span class="cline-any cline-yes">2x</span>
575
- <span class="cline-any cline-yes">2x</span>
576
- <span class="cline-any cline-yes">2x</span>
577
- <span class="cline-any cline-yes">2x</span>
578
- <span class="cline-any cline-yes">2x</span>
579
- <span class="cline-any cline-yes">2x</span>
580
- <span class="cline-any cline-yes">2x</span>
581
- <span class="cline-any cline-yes">2x</span>
582
- <span class="cline-any cline-yes">2x</span>
583
- <span class="cline-any cline-yes">2x</span>
584
- <span class="cline-any cline-yes">2x</span>
585
- <span class="cline-any cline-yes">2x</span>
586
- <span class="cline-any cline-yes">2x</span>
587
- <span class="cline-any cline-yes">2x</span>
588
- <span class="cline-any cline-yes">2x</span>
589
- <span class="cline-any cline-no">&nbsp;</span>
590
- <span class="cline-any cline-no">&nbsp;</span>
591
- <span class="cline-any cline-no">&nbsp;</span>
592
- <span class="cline-any cline-no">&nbsp;</span>
593
- <span class="cline-any cline-no">&nbsp;</span>
594
- <span class="cline-any cline-no">&nbsp;</span>
595
- <span class="cline-any cline-no">&nbsp;</span>
596
- <span class="cline-any cline-no">&nbsp;</span>
597
- <span class="cline-any cline-no">&nbsp;</span>
598
- <span class="cline-any cline-yes">2x</span>
599
- <span class="cline-any cline-yes">2x</span>
600
- <span class="cline-any cline-yes">2x</span>
601
- <span class="cline-any cline-no">&nbsp;</span>
602
- <span class="cline-any cline-yes">2x</span>
603
- <span class="cline-any cline-no">&nbsp;</span>
604
- <span class="cline-any cline-no">&nbsp;</span>
605
- <span class="cline-any cline-no">&nbsp;</span>
606
- <span class="cline-any cline-no">&nbsp;</span>
607
- <span class="cline-any cline-no">&nbsp;</span>
608
- <span class="cline-any cline-no">&nbsp;</span>
609
- <span class="cline-any cline-no">&nbsp;</span>
610
- <span class="cline-any cline-no">&nbsp;</span>
611
- <span class="cline-any cline-no">&nbsp;</span>
612
- <span class="cline-any cline-no">&nbsp;</span>
613
- <span class="cline-any cline-no">&nbsp;</span>
614
- <span class="cline-any cline-no">&nbsp;</span>
615
- <span class="cline-any cline-no">&nbsp;</span>
616
- <span class="cline-any cline-no">&nbsp;</span>
617
- <span class="cline-any cline-no">&nbsp;</span>
618
- <span class="cline-any cline-no">&nbsp;</span>
619
- <span class="cline-any cline-no">&nbsp;</span>
620
- <span class="cline-any cline-no">&nbsp;</span>
621
- <span class="cline-any cline-yes">2x</span>
622
- <span class="cline-any cline-yes">2x</span>
623
- <span class="cline-any cline-no">&nbsp;</span>
624
- <span class="cline-any cline-no">&nbsp;</span>
625
- <span class="cline-any cline-no">&nbsp;</span>
626
- <span class="cline-any cline-yes">2x</span>
627
- <span class="cline-any cline-yes">2x</span>
628
- <span class="cline-any cline-no">&nbsp;</span>
629
- <span class="cline-any cline-no">&nbsp;</span>
630
- <span class="cline-any cline-no">&nbsp;</span>
631
- <span class="cline-any cline-yes">2x</span>
632
- <span class="cline-any cline-yes">2x</span>
633
- <span class="cline-any cline-yes">2x</span>
634
- <span class="cline-any cline-no">&nbsp;</span>
635
- <span class="cline-any cline-no">&nbsp;</span>
636
- <span class="cline-any cline-no">&nbsp;</span>
637
- <span class="cline-any cline-no">&nbsp;</span>
638
- <span class="cline-any cline-no">&nbsp;</span>
639
- <span class="cline-any cline-no">&nbsp;</span>
640
- <span class="cline-any cline-no">&nbsp;</span>
641
- <span class="cline-any cline-no">&nbsp;</span>
642
- <span class="cline-any cline-yes">2x</span>
643
- <span class="cline-any cline-yes">2x</span>
644
- <span class="cline-any cline-no">&nbsp;</span>
645
- <span class="cline-any cline-no">&nbsp;</span>
646
- <span class="cline-any cline-no">&nbsp;</span>
647
- <span class="cline-any cline-yes">2x</span>
648
- <span class="cline-any cline-yes">2x</span>
649
- <span class="cline-any cline-no">&nbsp;</span>
650
- <span class="cline-any cline-no">&nbsp;</span>
651
- <span class="cline-any cline-no">&nbsp;</span>
652
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">//----------------------------------------
653
- // STRING UTILS
654
- //----------------------------------------
655
- import { err500IfEmptyOrNotSet } from './error-utils'
656
- import { ObjectGeneric } from './types'
657
- import { isset } from './isset'
658
- &nbsp;
659
- const getWordBits = <span class="fstat-no" title="function not covered" >(wb: string[] | [string[]]): string[] =&gt; Array.isArray(wb[0]) ? wb[0] : wb as any</span>
660
- &nbsp;
661
- /**Eg: camelCase('hello', 'world') =&gt; 'helloWorld' */
662
- <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >export function camelCase(...wordBits: string[] | [string[]]): string {</span></span>
663
- <span class="cstat-no" title="statement not covered" > const wordBitsReal = getWordBits(wordBits)</span>
664
- <span class="cstat-no" title="statement not covered" > return wordBitsReal.filter(e =&gt; e).map((w, i) =&gt; i === 0 ? w.toLowerCase() : capitalize1st(w, true)).join('')</span>
665
- <span class="cstat-no" title="statement not covered" >}</span>
666
- &nbsp;
667
- /** Replace 'hello-world', 'hello World', 'hello_World', 'helloWorld' =&gt; 'helloWorld' */
668
- <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >export function camelCaseify(word: string) {</span></span>
669
- <span class="cstat-no" title="statement not covered" > const wordBitsReal = word.replace(/([A-Z])/g, ' $1').split(/[- _]/g)</span>
670
- <span class="cstat-no" title="statement not covered" > return camelCase(wordBitsReal)</span>
671
- <span class="cstat-no" title="statement not covered" >}</span>
672
- &nbsp;
673
- &nbsp;
674
- /**Eg: snake_case
675
- * trimmed but not lowerCased
676
- */
677
- <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >export function snakeCase(...wordBits: string[] | [string[]]): string {</span></span>
678
- <span class="cstat-no" title="statement not covered" > const wordBitsReal = getWordBits(wordBits)</span>
679
- <span class="cstat-no" title="statement not covered" > return wordBitsReal.filter(e =&gt; e).map(w =&gt; w.trim()).join('_')</span>
680
- <span class="cstat-no" title="statement not covered" >}</span>
681
- /**Eg: kebab-case
682
- * trimmed AND lowerCased
683
- * undefined, null are removed
684
- */
685
- <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >export function kebabCase(...wordBits: string[] | [string[]]): string {</span></span>
686
- <span class="cstat-no" title="statement not covered" > const wordBitsReal = getWordBits(wordBits)</span>
687
- <span class="cstat-no" title="statement not covered" > return wordBitsReal.filter(e =&gt; e).map(w =&gt; w.trim().toLowerCase()).join('-')</span>
688
- <span class="cstat-no" title="statement not covered" >}</span>
689
- /**Eg: PascalCase
690
- * undefined, null are removed
691
- */
692
- <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >export function pascalCase(...wordBits: string[] | [string[]]): string {</span></span>
693
- <span class="cstat-no" title="statement not covered" > const wordBitsReal = getWordBits(wordBits)</span>
694
- <span class="cstat-no" title="statement not covered" > return wordBitsReal.filter(e =&gt; e).map(w =&gt; capitalize1st(w, true)).join('')</span>
695
- <span class="cstat-no" title="statement not covered" >}</span>
696
- &nbsp;
697
- /**Eg: Titlecase
698
- * undefined, null are removed
699
- */
700
- <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >export function titleCase(...wordBits: string[] | [string[]]): string {</span></span>
701
- <span class="cstat-no" title="statement not covered" > const wordBitsReal = getWordBits(wordBits)</span>
702
- <span class="cstat-no" title="statement not covered" > return capitalize1st(wordBitsReal.filter(e =&gt; e).map(w =&gt; w.trim()).join(''), true)</span>
703
- <span class="cstat-no" title="statement not covered" >}</span>
704
- &nbsp;
705
- <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >export function capitalize1st(str = '', lowercaseTheRest = false): string { return str ? str[0].toUpperCase() + (lowercaseTheRest ? str.toLowerCase() : str).slice(1) : str }</span></span>
706
- &nbsp;
707
- <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >export function camelCaseToWords(str: string): string[] {</span></span>
708
- <span class="cstat-no" title="statement not covered" > return str ? str.trim().replace(/([A-Z])/g, '-$1').toLowerCase().split('-') : []</span>
709
- <span class="cstat-no" title="statement not covered" >}</span>
710
- &nbsp;
711
- /** GIVEN A STRING '{ blah;2}, ['nested,(what,ever)']' AND A SEPARATOR ",""
712
- * This will return the content separated by first level of separators
713
- * @return ["{ blah;2}", "['nested,(what,ever)']"]
714
- */
715
- <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >export function getValuesBetweenSeparator(str: string, separator: string, removeTrailingSpaces = true) {</span></span>
716
- <span class="cstat-no" title="statement not covered" > err500IfEmptyOrNotSet({ separator, str })</span>
717
- <span class="cstat-no" title="statement not covered" > const { outer } = getValuesBetweenStrings(str, separator, undefined, undefined, undefined, removeTrailingSpaces)</span>
718
- <span class="cstat-no" title="statement not covered" > return outer</span>
719
- <span class="cstat-no" title="statement not covered" >}</span>
720
- &nbsp;
721
- &nbsp;
722
- /** GIVEN A STRING "a: [ 'str', /[^]]/, '[aa]]]str', () =&gt; [ nestedArray ] ], b: ['arr']"
723
- * @return matching: [ "'str', /[^]]/, '[aa]]]str', () =&gt; [ nestedArray ]", "'arr'" ], between: [ "a:", ", b: " ]
724
- * @param str base string
725
- * @param openingOrSeparator opening character OR separator if closing not set
726
- * @param closing
727
- * @param ignoreBetweenOpen default ['\'', '`', '"', '/'], when reaching an opening char, it will ignore all until it find the corresponding closing char
728
- * @param ignoreBetweenClose default ['\'', '`', '"', '/'] list of corresponding closing chars
729
- */
730
- <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >export function getValuesBetweenStrings(str: string, openingOrSeparator, closing, ignoreBetweenOpen = ['\'', '`', '"', '/'], ignoreBetweenClose = ['\'', '`', '"', '/'], removeTrailingSpaces = true) {</span></span>
731
- <span class="cstat-no" title="statement not covered" > err500IfEmptyOrNotSet({ openingOrSeparator, str })</span>
732
- <span class="cstat-no" title="statement not covered" ></span>
733
- <span class="cstat-no" title="statement not covered" > str = str.replace(/&lt;&lt;/g, '§§"').replace(/&gt;&gt;/g, '"§§')</span>
734
- <span class="cstat-no" title="statement not covered" ></span>
735
- <span class="cstat-no" title="statement not covered" > const arrayValues: string[] = []</span>
736
- <span class="cstat-no" title="statement not covered" > const betweenArray: string[] = []</span>
737
- <span class="cstat-no" title="statement not covered" > let level = 0</span>
738
- <span class="cstat-no" title="statement not covered" > let ignoreUntil: boolean | string = false</span>
739
- <span class="cstat-no" title="statement not covered" > let actualValue = ''</span>
740
- <span class="cstat-no" title="statement not covered" > let precedingChar = ''</span>
741
- <span class="cstat-no" title="statement not covered" ></span>
742
- <span class="cstat-no" title="statement not covered" > let separatorMode = false</span>
743
- <span class="cstat-no" title="statement not covered" > if (!closing) separatorMode = true</span>
744
- <span class="cstat-no" title="statement not covered" ></span>
745
- <span class="cstat-no" title="statement not covered" > const separator = separatorMode ? openingOrSeparator : false</span>
746
- <span class="cstat-no" title="statement not covered" > const openingChars = separatorMode ? ['(', '{', '['] : [openingOrSeparator]</span>
747
- <span class="cstat-no" title="statement not covered" > const closingChars = separatorMode ? [')', '}', ']'] : [closing]</span>
748
- <span class="cstat-no" title="statement not covered" ></span>
749
- <span class="cstat-no" title="statement not covered" > const pushActualValue = () =&gt; {</span>
750
- <span class="cstat-no" title="statement not covered" > if (level === 0) betweenArray.push(removeTrailingSpaces ? actualValue.replace(/(?:^\s+|\s+$)/g, '') : actualValue)</span>
751
- <span class="cstat-no" title="statement not covered" > else arrayValues.push(removeTrailingSpaces ? actualValue.replace(/(?:^\s+|\s+$)/g, '') : actualValue)</span>
752
- <span class="cstat-no" title="statement not covered" > actualValue = ''</span>
753
- <span class="cstat-no" title="statement not covered" > }</span>
754
- <span class="cstat-no" title="statement not covered" ></span>
755
- <span class="cstat-no" title="statement not covered" > str.split('').forEach(char =&gt; {</span>
756
- <span class="cstat-no" title="statement not covered" > // handle unwanted nested structure like characters in a strings that may be a unmatched closing / opening character</span>
757
- <span class="cstat-no" title="statement not covered" > // Eg: {'azer}aze'}</span>
758
- <span class="cstat-no" title="statement not covered" > if (ignoreUntil &amp;&amp; char === ignoreUntil &amp;&amp; precedingChar !== '\\') ignoreUntil = false</span>
759
- <span class="cstat-no" title="statement not covered" > else if (ignoreUntil &amp;&amp; char !== ignoreUntil) ignoreUntil = true</span>
760
- <span class="cstat-no" title="statement not covered" > else if (ignoreBetweenOpen.includes(char)) {</span>
761
- <span class="cstat-no" title="statement not covered" > const indexChar = ignoreBetweenOpen.findIndex(char2 =&gt; char2 === char)</span>
762
- <span class="cstat-no" title="statement not covered" > ignoreUntil = ignoreBetweenClose[indexChar]</span>
763
- <span class="cstat-no" title="statement not covered" > } else if (openingChars.includes(char)) {</span>
764
- <span class="cstat-no" title="statement not covered" > // handle nested structures</span>
765
- <span class="cstat-no" title="statement not covered" > if (!separatorMode &amp;&amp; level === 0) pushActualValue()</span>
766
- <span class="cstat-no" title="statement not covered" > level++</span>
767
- <span class="cstat-no" title="statement not covered" > if (!separatorMode) return</span>
768
- <span class="cstat-no" title="statement not covered" > } else if (closingChars.includes(char)) {</span>
769
- <span class="cstat-no" title="statement not covered" > // handle nested structures</span>
770
- <span class="cstat-no" title="statement not covered" > if (!separatorMode &amp;&amp; level === 1) pushActualValue()</span>
771
- <span class="cstat-no" title="statement not covered" > level--</span>
772
- <span class="cstat-no" title="statement not covered" > } else if (separatorMode &amp;&amp; level === 0 &amp;&amp; char === separator) {</span>
773
- <span class="cstat-no" title="statement not covered" > // SEPARATOR MODE</span>
774
- <span class="cstat-no" title="statement not covered" > pushActualValue()</span>
775
- <span class="cstat-no" title="statement not covered" > return</span>
776
- <span class="cstat-no" title="statement not covered" > }</span>
777
- <span class="cstat-no" title="statement not covered" > actualValue += char</span>
778
- <span class="cstat-no" title="statement not covered" > precedingChar = char</span>
779
- <span class="cstat-no" title="statement not covered" > })</span>
780
- <span class="cstat-no" title="statement not covered" ></span>
781
- <span class="cstat-no" title="statement not covered" > pushActualValue()</span>
782
- <span class="cstat-no" title="statement not covered" ></span>
783
- <span class="cstat-no" title="statement not covered" > const replaceValz = arr =&gt; arr.map(v =&gt; v.replace(/§§"/g, '&lt;&lt;').replace(/"§§/g, '&gt;&gt;')).filter(v =&gt; v)</span>
784
- <span class="cstat-no" title="statement not covered" ></span>
785
- <span class="cstat-no" title="statement not covered" > return { inner: replaceValz(arrayValues), outer: replaceValz(betweenArray) }</span>
786
- <span class="cstat-no" title="statement not covered" >}</span>
787
- &nbsp;
788
- /** Remove accentued character from string and eventually special chars and numbers
789
- * @param {String} str input string
790
- * @param {Object} config { removeSpecialChars: false, removeNumbers: false, removeSpaces: false }
791
- * @returns String with all accentued char replaced by their non accentued version + config formattting
792
- */
793
- <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >export function convertAccentedCharacters(str: string, config: { removeNumbers?: boolean, removeSpecialChars?: boolean, removeSpaces?: boolean } = {}) {</span></span>
794
- <span class="cstat-no" title="statement not covered" > let output = str</span>
795
- <span class="cstat-no" title="statement not covered" > .trim()</span>
796
- <span class="cstat-no" title="statement not covered" > .replace(/[àáâãäå]/g, 'a')</span>
797
- <span class="cstat-no" title="statement not covered" > .replace(/[ÀÁÂÃÄÅ]/g, 'A')</span>
798
- <span class="cstat-no" title="statement not covered" > .replace(/ç/g, 'c')</span>
799
- <span class="cstat-no" title="statement not covered" > .replace(/Ç/g, 'C')</span>
800
- <span class="cstat-no" title="statement not covered" > .replace(/[èéêë]/g, 'e')</span>
801
- <span class="cstat-no" title="statement not covered" > .replace(/[ÈÉÊË]/g, 'E')</span>
802
- <span class="cstat-no" title="statement not covered" > .replace(/[ìíîï]/g, 'i')</span>
803
- <span class="cstat-no" title="statement not covered" > .replace(/[ÌÍÎÏ]/g, 'I')</span>
804
- <span class="cstat-no" title="statement not covered" > .replace(/[ôö]/g, 'o')</span>
805
- <span class="cstat-no" title="statement not covered" > .replace(/[ÔÖ]/g, 'O')</span>
806
- <span class="cstat-no" title="statement not covered" > .replace(/[ùúû]/g, 'u')</span>
807
- <span class="cstat-no" title="statement not covered" > .replace(/[ÙÚÛ]/g, 'U')</span>
808
- <span class="cstat-no" title="statement not covered" > if (config.removeNumbers === true) output = output.replace(/\d+/g, '')</span>
809
- <span class="cstat-no" title="statement not covered" > if (config.removeSpecialChars === true) output = output.replace(/[^A-Za-z0-9 ]/g, '')</span>
810
- <span class="cstat-no" title="statement not covered" > if (config.removeSpaces === true) output = output.replace(/\s+/g, '')</span>
811
- <span class="cstat-no" title="statement not covered" > return output</span>
812
- <span class="cstat-no" title="statement not covered" >}</span>
813
- &nbsp;
814
- &nbsp;
815
- let generatedTokens: string[] = [] // cache to avoid collision
816
- let lastTs = Date.now()
817
- /** minLength 8 if unique
818
- * @param {Number} length default: 20
819
- * @param {Boolean} unique default: true. Generate a real unique token base on the date. min length will be min 8 in this case
820
- * @param {string} mode one of ['alphanumeric', 'hexadecimal']
821
- * NOTE: to generate a mongoDB Random Id, use the params: 24, true, 'hexadecimal'
822
- */
823
- <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >export function generateToken(length = 20, unique = true, mode: 'alphanumeric' | 'hexadecimal' = 'alphanumeric') {</span></span>
824
- <span class="cstat-no" title="statement not covered" > const charConvNumeric = mode === 'alphanumeric' ? 36 : 16</span>
825
- <span class="cstat-no" title="statement not covered" > if (unique &amp;&amp; length &lt; 8) throw new Error('generateToken can not be used with less than 8 characters when unique is set to true')</span>
826
- <span class="cstat-no" title="statement not covered" > let token: string</span>
827
- <span class="cstat-no" title="statement not covered" > let tokenTs: number</span>
828
- <span class="cstat-no" title="statement not covered" > do {</span>
829
- <span class="cstat-no" title="statement not covered" > tokenTs = Date.now()</span>
830
- <span class="cstat-no" title="statement not covered" > token = unique ? tokenTs.toString(charConvNumeric) : ''</span>
831
- <span class="cstat-no" title="statement not covered" > while (token.length &lt; length) token += Math.random().toString(charConvNumeric).substr(2, 1) // char alphaNumeric aléatoire</span>
832
- <span class="cstat-no" title="statement not covered" > } while (generatedTokens.includes(token))</span>
833
- <span class="cstat-no" title="statement not covered" > if (lastTs &lt; tokenTs) {</span>
834
- <span class="cstat-no" title="statement not covered" > generatedTokens = [] // reset generated token on new timestamp because cannot collide</span>
835
- <span class="cstat-no" title="statement not covered" > lastTs = Date.now()</span>
836
- <span class="cstat-no" title="statement not covered" > }</span>
837
- <span class="cstat-no" title="statement not covered" > generatedTokens.push(token)</span>
838
- <span class="cstat-no" title="statement not covered" > return token</span>
839
- <span class="cstat-no" title="statement not covered" >}</span>
840
- &nbsp;
841
- <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >export function generateObjectId() {</span></span>
842
- <span class="cstat-no" title="statement not covered" > return generateToken(24, true, 'hexadecimal')</span>
843
- <span class="cstat-no" title="statement not covered" >}</span>
844
- &nbsp;
845
- &nbsp;
846
- /** Useful to join differents bits of url with normalizing slashes
847
- * * urlPathJoin('https://', 'www.kikou.lol/', '/user', '//2//') =&gt; https://www.kikou.lol/user/2
848
- * * urlPathJoin('http:/', 'kikou.lol') =&gt; https://www.kikou.lol
849
- */
850
- <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >export function urlPathJoin(...bits: string[]) {</span></span>
851
- <span class="cstat-no" title="statement not covered" > return bits</span>
852
- <span class="cstat-no" title="statement not covered" > .join('/')</span>
853
- <span class="cstat-no" title="statement not covered" > .replace(/\/+/g, '/') // replace double slash</span>
854
- <span class="cstat-no" title="statement not covered" > .replace(/(^\/|\/$)/g, '') // remove starting and trailing slash</span>
855
- <span class="cstat-no" title="statement not covered" > .replace(/(https?:)\/\/?/, '$1//') // make sure there is 2 slashes after http(s)</span>
856
- <span class="cstat-no" title="statement not covered" >}</span>
857
- &nbsp;
858
- /** @deprecated use urlPathJoin instead // file path using ONLY SLASH and not antislash on windows. Remove also starting and trailing slashes */
859
- <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >export function pathJoinSafe(...pathBits: string[]) {</span></span>
860
- <span class="cstat-no" title="statement not covered" > return pathBits</span>
861
- <span class="cstat-no" title="statement not covered" > .join('/')</span>
862
- <span class="cstat-no" title="statement not covered" > .replace(/\/+/g, '/') // replace double slash</span>
863
- <span class="cstat-no" title="statement not covered" > .replace(/(^\/|\/$)/g, '') // remove starting and trailing slash</span>
864
- <span class="cstat-no" title="statement not covered" >}</span>
865
- &nbsp;
866
- &nbsp;
867
- export type MiniTemplaterOptions = {
868
- /** replacer for undefined values */
869
- valueWhenNotSet: string
870
- /** override default regexp that match content between `{{ }}`. It must be 'g' and first capturing group matching the value to replace. Default: /{{\s*([^}]*)\s*}}/g*/
871
- regexp: RegExp
872
- /** replacer for undefined values */
873
- valueWhenContentUndefined: string
874
- }
875
- /** Replace variables in a string like: `Hello {{userName}}!`
876
- * @param {String} content
877
- * @param {Object} varz object with key =&gt; value === toReplace =&gt; replacer
878
- * @param {Object} options
879
- * * valueWhenNotSet =&gt; replacer for undefined values. Default: ''
880
- * * regexp =&gt; must be 'g' and first capturing group matching the value to replace. Default: /{{\s*([^}]*)\s*}}/g
881
- */
882
- <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >export function miniTemplater(content: string, varz: ObjectGeneric, options: Partial&lt;MiniTemplaterOptions&gt; = {}): string {</span></span>
883
- <span class="cstat-no" title="statement not covered" > const options2: MiniTemplaterOptions = {</span>
884
- <span class="cstat-no" title="statement not covered" > valueWhenNotSet: '',</span>
885
- <span class="cstat-no" title="statement not covered" > regexp: /{{\s*([^}]*)\s*}}/g,</span>
886
- <span class="cstat-no" title="statement not covered" > valueWhenContentUndefined: '',</span>
887
- <span class="cstat-no" title="statement not covered" > ...options,</span>
888
- <span class="cstat-no" title="statement not covered" > }</span>
889
- <span class="cstat-no" title="statement not covered" > return isset(content) ? content.replace(options2.regexp, (_, $1) =&gt; isset(varz[$1]) ? varz[$1] : options2.valueWhenNotSet) : options2.valueWhenContentUndefined</span>
890
- <span class="cstat-no" title="statement not covered" >}</span>
891
- &nbsp;
892
- &nbsp;
893
- /** Clean output for outside world. All undefined / null / NaN / Infinity values are changed to '-' */
894
- <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >export function cln(val, replacerInCaseItIsUndefinNaN = '-') { return ['undefined', undefined, 'indéfini', 'NaN', NaN, Infinity, null].includes(val) ? replacerInCaseItIsUndefinNaN : val }</span></span>
895
- &nbsp;
896
- <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >export function nbOccurenceInString(baseString: string, searchedString: string, allowOverlapping: boolean = false) {</span></span>
897
- <span class="cstat-no" title="statement not covered" ></span>
898
- <span class="cstat-no" title="statement not covered" > if (searchedString.length === 0) return baseString.length + 1</span>
899
- <span class="cstat-no" title="statement not covered" ></span>
900
- <span class="cstat-no" title="statement not covered" > let n = 0</span>
901
- <span class="cstat-no" title="statement not covered" > let pos = 0</span>
902
- <span class="cstat-no" title="statement not covered" > const step = allowOverlapping ? 1 : searchedString.length</span>
903
- <span class="cstat-no" title="statement not covered" ></span>
904
- <span class="cstat-no" title="statement not covered" > // eslint-disable-next-line no-constant-condition</span>
905
- <span class="cstat-no" title="statement not covered" > while (true) {</span>
906
- <span class="cstat-no" title="statement not covered" > pos = baseString.indexOf(searchedString, pos)</span>
907
- <span class="cstat-no" title="statement not covered" > if (pos &gt;= 0) {</span>
908
- <span class="cstat-no" title="statement not covered" > ++n</span>
909
- <span class="cstat-no" title="statement not covered" > pos += step</span>
910
- <span class="cstat-no" title="statement not covered" > } else break</span>
911
- <span class="cstat-no" title="statement not covered" > }</span>
912
- <span class="cstat-no" title="statement not covered" > return n</span>
913
- <span class="cstat-no" title="statement not covered" >}</span>
914
- &nbsp;
915
- /** typed lower case. Eg: if you pass 'A' | 'B', the resulting type will be 'a' | 'b' */
916
- <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >export function lowerCase&lt;T extends string&gt;(string: T) {</span></span>
917
- <span class="cstat-no" title="statement not covered" > return string?.toLocaleLowerCase() as Lowercase&lt;T&gt;</span>
918
- <span class="cstat-no" title="statement not covered" >}</span>
919
- &nbsp;
920
- /** typed upper case. Eg: if you pass 'a' | 'b', the resulting type will be 'A' | 'B' */
921
- <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >export function upperCase&lt;T extends string&gt;(string: T) {</span></span>
922
- <span class="cstat-no" title="statement not covered" > return string?.toLocaleUpperCase() as Uppercase&lt;T&gt;</span>
923
- <span class="cstat-no" title="statement not covered" >}</span>
924
- &nbsp;
925
- /** Parse strings like 'true', 'false', '123', 'null' to their real type equivalent. Actual string is returned if nothing matches.
926
- * * /!\ for typing please profide a type parameter like `parseStringVariable&lt;boolean&gt;('true')` */
927
- <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >export function parseStringVariable&lt;T = any&gt;(val: any): T {</span></span>
928
- <span class="cstat-no" title="statement not covered" > if (val === 'undefined') return undefined as any</span>
929
- <span class="cstat-no" title="statement not covered" > else if (val === 'true') return true as any</span>
930
- <span class="cstat-no" title="statement not covered" > else if (val === 'false') return false as any</span>
931
- <span class="cstat-no" title="statement not covered" > else if (val === 'null') return null as any</span>
932
- <span class="cstat-no" title="statement not covered" > else if (/^[0-9]+$/.test(val)) return Number(val) as any</span>
933
- <span class="cstat-no" title="statement not covered" > else return val as any</span>
934
- <span class="cstat-no" title="statement not covered" >}</span>
935
- &nbsp;
936
- /** return val === 'true' || val === true */
937
- <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >export function parseStringAsBoolean(val: string | boolean | undefined) {</span></span>
938
- <span class="cstat-no" title="statement not covered" > return val === 'true' || val === true</span>
939
- <span class="cstat-no" title="statement not covered" >}</span>
940
- &nbsp;
941
- /** return Number(val) */
942
- <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >export function parseStringAsNumber(val: string | number) {</span></span>
943
- <span class="cstat-no" title="statement not covered" > return Number(val)</span>
944
- <span class="cstat-no" title="statement not covered" >}</span>
945
- &nbsp;</pre></td></tr></table></pre>
946
-
947
- <div class='push'></div><!-- for sticky footer -->
948
- </div><!-- /wrapper -->
949
- <div class='footer quiet pad2 space-top1 center small'>
950
- Code coverage generated by
951
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
952
- at 2025-03-20T12:55:39.327Z
953
- </div>
954
- <script src="prettify.js"></script>
955
- <script>
956
- window.onload = function () {
957
- prettyPrint();
958
- };
959
- </script>
960
- <script src="sorter.js"></script>
961
- <script src="block-navigation.js"></script>
962
- </body>
963
- </html>
964
-