topkat-utils 1.2.117 → 1.3.4

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 (51) hide show
  1. package/README.md +260 -219
  2. package/coverage/clover.xml +523 -427
  3. package/coverage/coverage-final.json +10 -10
  4. package/coverage/lcov-report/clean-stack-trace.ts.html +13 -10
  5. package/coverage/lcov-report/config.ts.html +2 -2
  6. package/coverage/lcov-report/error-utils.ts.html +2 -2
  7. package/coverage/lcov-report/index.html +56 -56
  8. package/coverage/lcov-report/is-empty.ts.html +1 -1
  9. package/coverage/lcov-report/is-nodejs.ts.html +1 -1
  10. package/coverage/lcov-report/is-object.ts.html +1 -1
  11. package/coverage/lcov-report/isset.ts.html +1 -1
  12. package/coverage/lcov-report/logger-utils.ts.html +215 -215
  13. package/coverage/lcov-report/loop-utils.ts.html +179 -8
  14. package/coverage/lcov-report/math-utils.ts.html +35 -8
  15. package/coverage/lcov-report/object-utils.ts.html +20 -8
  16. package/coverage/lcov-report/regexp-utils.ts.html +45 -12
  17. package/coverage/lcov-report/remove-circular-json-stringify.ts.html +1 -1
  18. package/coverage/lcov-report/string-utils.ts.html +54 -12
  19. package/coverage/lcov-report/timer-utils.ts.html +2 -2
  20. package/coverage/lcov-report/transaction-utils.ts.html +1 -1
  21. package/coverage/lcov.info +626 -607
  22. package/dist/src/clean-stack-trace.js +1 -0
  23. package/dist/src/clean-stack-trace.js.map +1 -1
  24. package/dist/src/error-utils.js +1 -1
  25. package/dist/src/error-utils.js.map +1 -1
  26. package/dist/src/loop-utils.d.ts +54 -2
  27. package/dist/src/loop-utils.js +48 -2
  28. package/dist/src/loop-utils.js.map +1 -1
  29. package/dist/src/math-utils.d.ts +1 -1
  30. package/dist/src/math-utils.js +6 -2
  31. package/dist/src/math-utils.js.map +1 -1
  32. package/dist/src/object-utils.d.ts +3 -1
  33. package/dist/src/object-utils.js +7 -4
  34. package/dist/src/object-utils.js.map +1 -1
  35. package/dist/src/regexp-utils.d.ts +9 -4
  36. package/dist/src/regexp-utils.js +8 -5
  37. package/dist/src/regexp-utils.js.map +1 -1
  38. package/dist/src/string-utils.d.ts +13 -4
  39. package/dist/src/string-utils.js +16 -6
  40. package/dist/src/string-utils.js.map +1 -1
  41. package/dist/src/timer-utils.d.ts +1 -1
  42. package/dist/src/timer-utils.js +1 -1
  43. package/package.json +45 -8
  44. package/src/clean-stack-trace.ts +1 -0
  45. package/src/error-utils.ts +1 -1
  46. package/src/loop-utils.ts +59 -2
  47. package/src/math-utils.ts +11 -2
  48. package/src/object-utils.ts +6 -2
  49. package/src/regexp-utils.ts +17 -6
  50. package/src/string-utils.ts +19 -5
  51. package/src/timer-utils.ts +1 -1
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">32.97% </span>
26
+ <span class="strong">34.81% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>92/279</span>
28
+ <span class='fraction'>102/293</span>
29
29
  </div>
30
30
 
31
31
 
@@ -39,14 +39,14 @@
39
39
  <div class='fl pad1y space-right2'>
40
40
  <span class="strong">0% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>0/23</span>
42
+ <span class='fraction'>0/24</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">32.97% </span>
47
+ <span class="strong">34.81% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>92/279</span>
49
+ <span class='fraction'>102/293</span>
50
50
  </div>
51
51
 
52
52
 
@@ -342,7 +342,21 @@
342
342
  <a name='L277'></a><a href='#L277'>277</a>
343
343
  <a name='L278'></a><a href='#L278'>278</a>
344
344
  <a name='L279'></a><a href='#L279'>279</a>
345
- <a name='L280'></a><a href='#L280'>280</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">2x</span>
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>
346
360
  <span class="cline-any cline-yes">2x</span>
347
361
  <span class="cline-any cline-yes">2x</span>
348
362
  <span class="cline-any cline-yes">2x</span>
@@ -358,6 +372,13 @@
358
372
  <span class="cline-any cline-no">&nbsp;</span>
359
373
  <span class="cline-any cline-yes">2x</span>
360
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>
361
382
  <span class="cline-any cline-yes">2x</span>
362
383
  <span class="cline-any cline-yes">2x</span>
363
384
  <span class="cline-any cline-no">&nbsp;</span>
@@ -373,12 +394,16 @@
373
394
  <span class="cline-any cline-no">&nbsp;</span>
374
395
  <span class="cline-any cline-no">&nbsp;</span>
375
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>
376
399
  <span class="cline-any cline-no">&nbsp;</span>
377
400
  <span class="cline-any cline-no">&nbsp;</span>
378
401
  <span class="cline-any cline-no">&nbsp;</span>
379
402
  <span class="cline-any cline-no">&nbsp;</span>
380
403
  <span class="cline-any cline-yes">2x</span>
381
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>
382
407
  <span class="cline-any cline-no">&nbsp;</span>
383
408
  <span class="cline-any cline-no">&nbsp;</span>
384
409
  <span class="cline-any cline-no">&nbsp;</span>
@@ -558,6 +583,9 @@
558
583
  <span class="cline-any cline-yes">2x</span>
559
584
  <span class="cline-any cline-yes">2x</span>
560
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>
561
589
  <span class="cline-any cline-no">&nbsp;</span>
562
590
  <span class="cline-any cline-no">&nbsp;</span>
563
591
  <span class="cline-any cline-no">&nbsp;</span>
@@ -630,12 +658,19 @@ import { isset } from './isset'
630
658
  &nbsp;
631
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>
632
660
  &nbsp;
633
- /**Eg: camelCase */
661
+ /**Eg: camelCase('hello', 'world') =&gt; 'helloWorld' */
634
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>
635
663
  <span class="cstat-no" title="statement not covered" > const wordBitsReal = getWordBits(wordBits)</span>
636
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>
637
665
  <span class="cstat-no" title="statement not covered" >}</span>
638
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;
639
674
  /**Eg: snake_case
640
675
  * trimmed but not lowerCased
641
676
  */
@@ -645,19 +680,23 @@ const getWordBits = <span class="fstat-no" title="function not covered" >(wb: st
645
680
  <span class="cstat-no" title="statement not covered" >}</span>
646
681
  /**Eg: kebab-case
647
682
  * trimmed AND lowerCased
648
- * undefined, null... =&gt; ''
683
+ * undefined, null are removed
649
684
  */
650
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>
651
686
  <span class="cstat-no" title="statement not covered" > const wordBitsReal = getWordBits(wordBits)</span>
652
687
  <span class="cstat-no" title="statement not covered" > return wordBitsReal.filter(e =&gt; e).map(w =&gt; w.trim().toLowerCase()).join('-')</span>
653
688
  <span class="cstat-no" title="statement not covered" >}</span>
654
- /**Eg: PascalCase undefined, null... =&gt; '' */
689
+ /**Eg: PascalCase
690
+ * undefined, null are removed
691
+ */
655
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>
656
693
  <span class="cstat-no" title="statement not covered" > const wordBitsReal = getWordBits(wordBits)</span>
657
694
  <span class="cstat-no" title="statement not covered" > return wordBitsReal.filter(e =&gt; e).map(w =&gt; capitalize1st(w, true)).join('')</span>
658
695
  <span class="cstat-no" title="statement not covered" >}</span>
659
696
  &nbsp;
660
- /**Eg: Titlecase undefined, null... =&gt; '' */
697
+ /**Eg: Titlecase
698
+ * undefined, null are removed
699
+ */
661
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>
662
701
  <span class="cstat-no" title="statement not covered" > const wordBitsReal = getWordBits(wordBits)</span>
663
702
  <span class="cstat-no" title="statement not covered" > return capitalize1st(wordBitsReal.filter(e =&gt; e).map(w =&gt; w.trim()).join(''), true)</span>
@@ -717,7 +756,7 @@ const getWordBits = <span class="fstat-no" title="function not covered" >(wb: st
717
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>
718
757
  <span class="cstat-no" title="statement not covered" > // Eg: {'azer}aze'}</span>
719
758
  <span class="cstat-no" title="statement not covered" > if (ignoreUntil &amp;&amp; char === ignoreUntil &amp;&amp; precedingChar !== '\\') ignoreUntil = false</span>
720
- <span class="cstat-no" title="statement not covered" > else if (ignoreUntil &amp;&amp; char !== ignoreUntil) true</span>
759
+ <span class="cstat-no" title="statement not covered" > else if (ignoreUntil &amp;&amp; char !== ignoreUntil) ignoreUntil = true</span>
721
760
  <span class="cstat-no" title="statement not covered" > else if (ignoreBetweenOpen.includes(char)) {</span>
722
761
  <span class="cstat-no" title="statement not covered" > const indexChar = ignoreBetweenOpen.findIndex(char2 =&gt; char2 === char)</span>
723
762
  <span class="cstat-no" title="statement not covered" > ignoreUntil = ignoreBetweenClose[indexChar]</span>
@@ -826,8 +865,11 @@ let lastTs = Date.now()
826
865
  &nbsp;
827
866
  &nbsp;
828
867
  export type MiniTemplaterOptions = {
868
+ /** replacer for undefined values */
829
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*/
830
871
  regexp: RegExp
872
+ /** replacer for undefined values */
831
873
  valueWhenContentUndefined: string
832
874
  }
833
875
  /** Replace variables in a string like: `Hello {{userName}}!`
@@ -907,7 +949,7 @@ export type MiniTemplaterOptions = {
907
949
  <div class='footer quiet pad2 space-top1 center small'>
908
950
  Code coverage generated by
909
951
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
910
- at 2025-03-13T19:05:26.769Z
952
+ at 2025-03-16T15:53:34.514Z
911
953
  </div>
912
954
  <script src="prettify.js"></script>
913
955
  <script>
@@ -311,7 +311,7 @@ export <span class="fstat-no" title="function not covered" >async function retry
311
311
  <span class="cstat-no" title="statement not covered" >}</span>
312
312
  &nbsp;
313
313
  /** Use this timer to measure code performances.
314
- * @example ```
314
+ * @example ```typescript
315
315
  const time = perfTimer()
316
316
  &nbsp;
317
317
  for(let i = 0; i &lt; 9999;i++) longProcess()
@@ -334,7 +334,7 @@ console.log('Process took ' + time.end())
334
334
  <div class='footer quiet pad2 space-top1 center small'>
335
335
  Code coverage generated by
336
336
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
337
- at 2025-03-13T19:05:26.769Z
337
+ at 2025-03-16T15:53:34.514Z
338
338
  </div>
339
339
  <script src="prettify.js"></script>
340
340
  <script>
@@ -259,7 +259,7 @@ export <span class="fstat-no" title="function not covered" >async function waitF
259
259
  <div class='footer quiet pad2 space-top1 center small'>
260
260
  Code coverage generated by
261
261
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
262
- at 2025-03-13T19:05:26.769Z
262
+ at 2025-03-16T15:53:34.514Z
263
263
  </div>
264
264
  <script src="prettify.js"></script>
265
265
  <script>