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.
- package/README.md +260 -219
- package/coverage/clover.xml +523 -427
- package/coverage/coverage-final.json +10 -10
- package/coverage/lcov-report/clean-stack-trace.ts.html +13 -10
- package/coverage/lcov-report/config.ts.html +2 -2
- package/coverage/lcov-report/error-utils.ts.html +2 -2
- package/coverage/lcov-report/index.html +56 -56
- package/coverage/lcov-report/is-empty.ts.html +1 -1
- package/coverage/lcov-report/is-nodejs.ts.html +1 -1
- package/coverage/lcov-report/is-object.ts.html +1 -1
- package/coverage/lcov-report/isset.ts.html +1 -1
- package/coverage/lcov-report/logger-utils.ts.html +215 -215
- package/coverage/lcov-report/loop-utils.ts.html +179 -8
- package/coverage/lcov-report/math-utils.ts.html +35 -8
- package/coverage/lcov-report/object-utils.ts.html +20 -8
- package/coverage/lcov-report/regexp-utils.ts.html +45 -12
- package/coverage/lcov-report/remove-circular-json-stringify.ts.html +1 -1
- package/coverage/lcov-report/string-utils.ts.html +54 -12
- package/coverage/lcov-report/timer-utils.ts.html +2 -2
- package/coverage/lcov-report/transaction-utils.ts.html +1 -1
- package/coverage/lcov.info +626 -607
- package/dist/src/clean-stack-trace.js +1 -0
- package/dist/src/clean-stack-trace.js.map +1 -1
- package/dist/src/error-utils.js +1 -1
- package/dist/src/error-utils.js.map +1 -1
- package/dist/src/loop-utils.d.ts +54 -2
- package/dist/src/loop-utils.js +48 -2
- package/dist/src/loop-utils.js.map +1 -1
- package/dist/src/math-utils.d.ts +1 -1
- package/dist/src/math-utils.js +6 -2
- package/dist/src/math-utils.js.map +1 -1
- package/dist/src/object-utils.d.ts +3 -1
- package/dist/src/object-utils.js +7 -4
- package/dist/src/object-utils.js.map +1 -1
- package/dist/src/regexp-utils.d.ts +9 -4
- package/dist/src/regexp-utils.js +8 -5
- package/dist/src/regexp-utils.js.map +1 -1
- package/dist/src/string-utils.d.ts +13 -4
- package/dist/src/string-utils.js +16 -6
- package/dist/src/string-utils.js.map +1 -1
- package/dist/src/timer-utils.d.ts +1 -1
- package/dist/src/timer-utils.js +1 -1
- package/package.json +45 -8
- package/src/clean-stack-trace.ts +1 -0
- package/src/error-utils.ts +1 -1
- package/src/loop-utils.ts +59 -2
- package/src/math-utils.ts +11 -2
- package/src/object-utils.ts +6 -2
- package/src/regexp-utils.ts +17 -6
- package/src/string-utils.ts +19 -5
- 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">
|
|
26
|
+
<span class="strong">34.81% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
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/
|
|
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">
|
|
47
|
+
<span class="strong">34.81% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
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
|
|
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"> </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"> </span>
|
|
376
|
+
<span class="cline-any cline-no"> </span>
|
|
377
|
+
<span class="cline-any cline-no"> </span>
|
|
378
|
+
<span class="cline-any cline-no"> </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"> </span>
|
|
@@ -373,12 +394,16 @@
|
|
|
373
394
|
<span class="cline-any cline-no"> </span>
|
|
374
395
|
<span class="cline-any cline-no"> </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"> </span>
|
|
377
400
|
<span class="cline-any cline-no"> </span>
|
|
378
401
|
<span class="cline-any cline-no"> </span>
|
|
379
402
|
<span class="cline-any cline-no"> </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"> </span>
|
|
383
408
|
<span class="cline-any cline-no"> </span>
|
|
384
409
|
<span class="cline-any cline-no"> </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"> </span>
|
|
562
590
|
<span class="cline-any cline-no"> </span>
|
|
563
591
|
<span class="cline-any cline-no"> </span>
|
|
@@ -630,12 +658,19 @@ import { isset } from './isset'
|
|
|
630
658
|
|
|
631
659
|
const getWordBits = <span class="fstat-no" title="function not covered" >(wb: string[] | [string[]]): string[] => Array.isArray(wb[0]) ? wb[0] : wb as any</span>
|
|
632
660
|
|
|
633
|
-
/**Eg: camelCase */
|
|
661
|
+
/**Eg: camelCase('hello', 'world') => '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 => e).map((w, i) => i === 0 ? w.toLowerCase() : capitalize1st(w, true)).join('')</span>
|
|
637
665
|
<span class="cstat-no" title="statement not covered" >}</span>
|
|
638
666
|
|
|
667
|
+
/** Replace 'hello-world', 'hello World', 'hello_World', 'helloWorld' => '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
|
+
|
|
673
|
+
|
|
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
|
|
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 => e).map(w => w.trim().toLowerCase()).join('-')</span>
|
|
653
688
|
<span class="cstat-no" title="statement not covered" >}</span>
|
|
654
|
-
/**Eg: PascalCase
|
|
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 => e).map(w => capitalize1st(w, true)).join('')</span>
|
|
658
695
|
<span class="cstat-no" title="statement not covered" >}</span>
|
|
659
696
|
|
|
660
|
-
/**Eg: Titlecase
|
|
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 => e).map(w => 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 && char === ignoreUntil && precedingChar !== '\\') ignoreUntil = false</span>
|
|
720
|
-
<span class="cstat-no" title="statement not covered" > else if (ignoreUntil && char !== ignoreUntil) true</span>
|
|
759
|
+
<span class="cstat-no" title="statement not covered" > else if (ignoreUntil && 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 => 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
|
|
|
827
866
|
|
|
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-
|
|
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
|
|
|
313
313
|
/** Use this timer to measure code performances.
|
|
314
|
-
* @example ```
|
|
314
|
+
* @example ```typescript
|
|
315
315
|
const time = perfTimer()
|
|
316
316
|
|
|
317
317
|
for(let i = 0; i < 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-
|
|
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-
|
|
262
|
+
at 2025-03-16T15:53:34.514Z
|
|
263
263
|
</div>
|
|
264
264
|
<script src="prettify.js"></script>
|
|
265
265
|
<script>
|