topkat-utils 1.2.103 → 1.2.105
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/coverage/clover.xml +45 -38
- package/coverage/coverage-final.json +2 -2
- package/coverage/lcov-report/clean-stack-trace.ts.html +1 -1
- package/coverage/lcov-report/config.ts.html +1 -1
- package/coverage/lcov-report/error-utils.ts.html +1 -1
- package/coverage/lcov-report/index.html +24 -24
- 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 +1 -1
- package/coverage/lcov-report/loop-utils.ts.html +30 -9
- package/coverage/lcov-report/object-utils.ts.html +1 -1
- package/coverage/lcov-report/regexp-utils.ts.html +1 -1
- package/coverage/lcov-report/remove-circular-json-stringify.ts.html +1 -1
- package/coverage/lcov-report/string-utils.ts.html +1 -1
- package/coverage/lcov-report/timer-utils.ts.html +1 -1
- package/coverage/lcov-report/transaction-utils.ts.html +30 -30
- package/coverage/lcov.info +50 -57
- package/dist/src/loop-utils.d.ts +1 -0
- package/dist/src/loop-utils.js +6 -2
- package/dist/src/loop-utils.js.map +1 -1
- package/package.json +1 -1
- package/src/loop-utils.ts +10 -3
package/coverage/lcov.info
CHANGED
|
@@ -934,8 +934,8 @@ TN:
|
|
|
934
934
|
SF:src/loop-utils.ts
|
|
935
935
|
FN:8,forI
|
|
936
936
|
FN:17,forIasync
|
|
937
|
-
FN:
|
|
938
|
-
FN:
|
|
937
|
+
FN:46,recursiveGenericFunction
|
|
938
|
+
FN:87,recursiveGenericFunctionSync
|
|
939
939
|
FNF:4
|
|
940
940
|
FNH:0
|
|
941
941
|
FNDA:0,forI
|
|
@@ -985,9 +985,9 @@ DA:40,2
|
|
|
985
985
|
DA:41,2
|
|
986
986
|
DA:42,2
|
|
987
987
|
DA:43,2
|
|
988
|
-
DA:44,
|
|
989
|
-
DA:45,
|
|
990
|
-
DA:46,
|
|
988
|
+
DA:44,2
|
|
989
|
+
DA:45,2
|
|
990
|
+
DA:46,2
|
|
991
991
|
DA:47,0
|
|
992
992
|
DA:48,0
|
|
993
993
|
DA:49,0
|
|
@@ -1006,11 +1006,11 @@ DA:61,0
|
|
|
1006
1006
|
DA:62,0
|
|
1007
1007
|
DA:63,0
|
|
1008
1008
|
DA:64,0
|
|
1009
|
-
DA:65,
|
|
1010
|
-
DA:66,
|
|
1011
|
-
DA:67,
|
|
1012
|
-
DA:68,
|
|
1013
|
-
DA:69,
|
|
1009
|
+
DA:65,0
|
|
1010
|
+
DA:66,0
|
|
1011
|
+
DA:67,0
|
|
1012
|
+
DA:68,0
|
|
1013
|
+
DA:69,0
|
|
1014
1014
|
DA:70,2
|
|
1015
1015
|
DA:71,2
|
|
1016
1016
|
DA:72,2
|
|
@@ -1023,11 +1023,11 @@ DA:78,2
|
|
|
1023
1023
|
DA:79,2
|
|
1024
1024
|
DA:80,2
|
|
1025
1025
|
DA:81,2
|
|
1026
|
-
DA:82,
|
|
1027
|
-
DA:83,
|
|
1028
|
-
DA:84,
|
|
1029
|
-
DA:85,
|
|
1030
|
-
DA:86,
|
|
1026
|
+
DA:82,2
|
|
1027
|
+
DA:83,2
|
|
1028
|
+
DA:84,2
|
|
1029
|
+
DA:85,2
|
|
1030
|
+
DA:86,2
|
|
1031
1031
|
DA:87,0
|
|
1032
1032
|
DA:88,0
|
|
1033
1033
|
DA:89,0
|
|
@@ -1041,8 +1041,15 @@ DA:96,0
|
|
|
1041
1041
|
DA:97,0
|
|
1042
1042
|
DA:98,0
|
|
1043
1043
|
DA:99,0
|
|
1044
|
-
|
|
1045
|
-
|
|
1044
|
+
DA:100,0
|
|
1045
|
+
DA:101,0
|
|
1046
|
+
DA:102,0
|
|
1047
|
+
DA:103,0
|
|
1048
|
+
DA:104,0
|
|
1049
|
+
DA:105,0
|
|
1050
|
+
DA:106,0
|
|
1051
|
+
LF:106
|
|
1052
|
+
LH:49
|
|
1046
1053
|
BRF:0
|
|
1047
1054
|
BRH:0
|
|
1048
1055
|
end_of_record
|
|
@@ -2062,18 +2069,12 @@ end_of_record
|
|
|
2062
2069
|
TN:
|
|
2063
2070
|
SF:src/transaction-utils.ts
|
|
2064
2071
|
FN:19,transaction
|
|
2065
|
-
FN:47,removeItemFromQueue
|
|
2066
|
-
FN:56,waitForTransaction
|
|
2067
|
-
FN:19,transaction
|
|
2068
2072
|
FN:48,removeItemFromQueue
|
|
2069
2073
|
FN:57,waitForTransaction
|
|
2070
|
-
FNF:
|
|
2071
|
-
FNH:
|
|
2074
|
+
FNF:3
|
|
2075
|
+
FNH:2
|
|
2072
2076
|
FNDA:16,transaction
|
|
2073
|
-
FNDA:
|
|
2074
|
-
FNDA:0,waitForTransaction
|
|
2075
|
-
FNDA:8,transaction
|
|
2076
|
-
FNDA:8,removeItemFromQueue
|
|
2077
|
+
FNDA:16,removeItemFromQueue
|
|
2077
2078
|
FNDA:0,waitForTransaction
|
|
2078
2079
|
DA:1,2
|
|
2079
2080
|
DA:2,2
|
|
@@ -2106,41 +2107,41 @@ DA:28,16
|
|
|
2106
2107
|
DA:29,16
|
|
2107
2108
|
DA:30,16
|
|
2108
2109
|
DA:31,16
|
|
2109
|
-
DA:32,
|
|
2110
|
+
DA:32,16
|
|
2110
2111
|
DA:33,2
|
|
2111
|
-
DA:34,
|
|
2112
|
+
DA:34,2
|
|
2112
2113
|
DA:35,16
|
|
2113
2114
|
DA:36,16
|
|
2114
2115
|
DA:37,16
|
|
2115
2116
|
DA:38,16
|
|
2116
|
-
DA:39,
|
|
2117
|
+
DA:39,16
|
|
2117
2118
|
DA:40,0
|
|
2118
|
-
DA:41,
|
|
2119
|
-
DA:42,
|
|
2119
|
+
DA:41,0
|
|
2120
|
+
DA:42,0
|
|
2120
2121
|
DA:43,16
|
|
2121
2122
|
DA:44,16
|
|
2122
|
-
DA:45,
|
|
2123
|
-
DA:46,
|
|
2124
|
-
DA:47,
|
|
2125
|
-
DA:48,
|
|
2123
|
+
DA:45,16
|
|
2124
|
+
DA:46,16
|
|
2125
|
+
DA:47,2
|
|
2126
|
+
DA:48,2
|
|
2126
2127
|
DA:49,16
|
|
2127
2128
|
DA:50,6
|
|
2128
|
-
DA:51,
|
|
2129
|
-
DA:52,
|
|
2129
|
+
DA:51,16
|
|
2130
|
+
DA:52,6
|
|
2130
2131
|
DA:53,2
|
|
2131
2132
|
DA:54,2
|
|
2132
2133
|
DA:55,2
|
|
2133
|
-
DA:56,
|
|
2134
|
-
DA:57,
|
|
2134
|
+
DA:56,2
|
|
2135
|
+
DA:57,2
|
|
2135
2136
|
DA:58,0
|
|
2136
2137
|
DA:59,0
|
|
2137
2138
|
DA:60,0
|
|
2138
2139
|
DA:61,0
|
|
2139
2140
|
DA:62,0
|
|
2140
|
-
DA:63,
|
|
2141
|
-
DA:64,
|
|
2141
|
+
DA:63,0
|
|
2142
|
+
DA:64,0
|
|
2142
2143
|
LF:64
|
|
2143
|
-
LH:
|
|
2144
|
+
LH:51
|
|
2144
2145
|
BRDA:19,0,0,16
|
|
2145
2146
|
BRDA:20,1,0,0
|
|
2146
2147
|
BRDA:24,2,0,2
|
|
@@ -2148,20 +2149,12 @@ BRDA:25,3,0,2
|
|
|
2148
2149
|
BRDA:27,4,0,16
|
|
2149
2150
|
BRDA:28,5,0,0
|
|
2150
2151
|
BRDA:29,6,0,16
|
|
2151
|
-
BRDA:
|
|
2152
|
-
BRDA:32,8,0,
|
|
2153
|
-
BRDA:
|
|
2154
|
-
BRDA:
|
|
2152
|
+
BRDA:39,7,0,0
|
|
2153
|
+
BRDA:32,8,0,2
|
|
2154
|
+
BRDA:48,9,0,16
|
|
2155
|
+
BRDA:49,10,0,10
|
|
2155
2156
|
BRDA:49,11,0,6
|
|
2156
|
-
BRDA:
|
|
2157
|
-
|
|
2158
|
-
|
|
2159
|
-
BRDA:39,15,0,8
|
|
2160
|
-
BRDA:32,16,0,9
|
|
2161
|
-
BRDA:48,17,0,8
|
|
2162
|
-
BRDA:49,18,0,13
|
|
2163
|
-
BRDA:49,19,0,3
|
|
2164
|
-
BRDA:51,20,0,3
|
|
2165
|
-
BRF:21
|
|
2166
|
-
BRH:19
|
|
2157
|
+
BRDA:51,12,0,6
|
|
2158
|
+
BRF:13
|
|
2159
|
+
BRH:10
|
|
2167
2160
|
end_of_record
|
package/dist/src/loop-utils.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export declare function forIasync<T extends any[] | any>(nbIterations: number, c
|
|
|
4
4
|
export type RecursiveCallback = (item: any, addr: string, lastElementKey: string | number, parent: ObjectGeneric | any[]) => false | any;
|
|
5
5
|
export type RecursiveConfig = {
|
|
6
6
|
disableCircularDependencyRemoval?: boolean;
|
|
7
|
+
isObjectTestFunction?: (item: any) => boolean;
|
|
7
8
|
};
|
|
8
9
|
/**
|
|
9
10
|
* @param {any} item the first array or object or whatever you want to recursively browse
|
package/dist/src/loop-utils.js
CHANGED
|
@@ -37,6 +37,8 @@ exports.forIasync = forIasync;
|
|
|
37
37
|
*/
|
|
38
38
|
async function recursiveGenericFunction(item, callback, config = {}, addr$ = '', lastElementKey = '', parent, techFieldToAvoidCircularDependency = []) {
|
|
39
39
|
(0, error_utils_1.err500IfNotSet)({ callback });
|
|
40
|
+
if (!config.isObjectTestFunction)
|
|
41
|
+
config.isObjectTestFunction = is_object_1.isObject;
|
|
40
42
|
if (!techFieldToAvoidCircularDependency.includes(item)) {
|
|
41
43
|
const result = addr$ === '' ? true : await callback(item, addr$, lastElementKey, parent);
|
|
42
44
|
if (result !== false) {
|
|
@@ -45,7 +47,7 @@ async function recursiveGenericFunction(item, callback, config = {}, addr$ = '',
|
|
|
45
47
|
techFieldToAvoidCircularDependency.push(item);
|
|
46
48
|
await Promise.all(item.map((e, i) => recursiveGenericFunction(e, callback, config, addr$ + '[' + i + ']', i, item, techFieldToAvoidCircularDependency)));
|
|
47
49
|
}
|
|
48
|
-
else if (
|
|
50
|
+
else if (config.isObjectTestFunction(item)) {
|
|
49
51
|
if (config?.disableCircularDependencyRemoval !== true)
|
|
50
52
|
techFieldToAvoidCircularDependency.push(item);
|
|
51
53
|
await Promise.all(Object.entries(item).map(([key, val]) => recursiveGenericFunction(val, callback, config, (addr$ ? addr$ + '.' : '') + key.replace(/\./g, '%'), key, item, techFieldToAvoidCircularDependency)));
|
|
@@ -73,6 +75,8 @@ exports.recursiveGenericFunction = recursiveGenericFunction;
|
|
|
73
75
|
*/
|
|
74
76
|
function recursiveGenericFunctionSync(item, callback, config = {}, addr$ = '', lastElementKey = '', parent, techFieldToAvoidCircularDependency = []) {
|
|
75
77
|
(0, error_utils_1.err500IfNotSet)({ callback });
|
|
78
|
+
if (!config.isObjectTestFunction)
|
|
79
|
+
config.isObjectTestFunction = is_object_1.isObject;
|
|
76
80
|
if (!techFieldToAvoidCircularDependency.includes(item)) {
|
|
77
81
|
const result = addr$ === '' ? true : callback(item, addr$, lastElementKey, parent);
|
|
78
82
|
if (result !== false) {
|
|
@@ -81,7 +85,7 @@ function recursiveGenericFunctionSync(item, callback, config = {}, addr$ = '', l
|
|
|
81
85
|
techFieldToAvoidCircularDependency.push(item); // do not up one level
|
|
82
86
|
item.forEach((e, i) => recursiveGenericFunctionSync(e, callback, config, addr$ + '[' + i + ']', i, item, techFieldToAvoidCircularDependency));
|
|
83
87
|
}
|
|
84
|
-
else if (
|
|
88
|
+
else if (config.isObjectTestFunction(item)) {
|
|
85
89
|
if (config?.disableCircularDependencyRemoval !== true)
|
|
86
90
|
techFieldToAvoidCircularDependency.push(item);
|
|
87
91
|
Object.entries(item).forEach(([key, val]) => recursiveGenericFunctionSync(val, callback, config, (addr$ ? addr$ + '.' : '') + key.replace(/\./g, '%'), key, item, techFieldToAvoidCircularDependency));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop-utils.js","sourceRoot":"","sources":["../../src/loop-utils.ts"],"names":[],"mappings":";;;AAIA,+CAA8C;AAC9C,2CAAsC;AAEtC,SAAgB,IAAI,CAAwB,YAAoB,EAAE,QAA4E;IAC1I,MAAM,OAAO,GAAU,EAAE,CAAA;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;QACnC,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QAC7C,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAA;KAChD;IACD,OAAO,OAAO,CAAA;AAClB,CAAC;AAPD,oBAOC;AAEM,KAAK,UAAU,SAAS,CAAwB,YAAoB,EAAE,QAAuB;IAChG,MAAM,OAAO,GAAU,EAAE,CAAA;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;QACnC,OAAO,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;KAClC;IACD,OAAO,OAAO,CAAA;AAClB,CAAC;AAND,8BAMC;
|
|
1
|
+
{"version":3,"file":"loop-utils.js","sourceRoot":"","sources":["../../src/loop-utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/loop-utils.ts
CHANGED
|
@@ -24,7 +24,10 @@ export async function forIasync<T extends any[] | any>(nbIterations: number, cal
|
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
export type RecursiveCallback = (item: any, addr: string, lastElementKey: string | number, parent: ObjectGeneric | any[]) => false | any
|
|
27
|
-
export type RecursiveConfig = {
|
|
27
|
+
export type RecursiveConfig = {
|
|
28
|
+
disableCircularDependencyRemoval?: boolean
|
|
29
|
+
isObjectTestFunction?: (item: any) => boolean
|
|
30
|
+
}
|
|
28
31
|
/**
|
|
29
32
|
* @param {any} item the first array or object or whatever you want to recursively browse
|
|
30
33
|
* @param {function} callback the callback you want to apply on items including the main one
|
|
@@ -43,6 +46,8 @@ export type RecursiveConfig = { disableCircularDependencyRemoval?: boolean }
|
|
|
43
46
|
export async function recursiveGenericFunction(item: ObjectGeneric | any[], callback: RecursiveCallback, config: RecursiveConfig = {}, addr$ = '', lastElementKey: string | number = '', parent?, techFieldToAvoidCircularDependency: any[] = []) {
|
|
44
47
|
err500IfNotSet({ callback })
|
|
45
48
|
|
|
49
|
+
if (!config.isObjectTestFunction) config.isObjectTestFunction = isObject
|
|
50
|
+
|
|
46
51
|
if (!techFieldToAvoidCircularDependency.includes(item)) {
|
|
47
52
|
const result = addr$ === '' ? true : await callback(item, addr$, lastElementKey, parent)
|
|
48
53
|
|
|
@@ -52,7 +57,7 @@ export async function recursiveGenericFunction(item: ObjectGeneric | any[], call
|
|
|
52
57
|
await Promise.all(item.map(
|
|
53
58
|
(e, i) => recursiveGenericFunction(e, callback, config, addr$ + '[' + i + ']', i, item, techFieldToAvoidCircularDependency)
|
|
54
59
|
))
|
|
55
|
-
} else if (
|
|
60
|
+
} else if (config.isObjectTestFunction(item)) {
|
|
56
61
|
if (config?.disableCircularDependencyRemoval !== true) techFieldToAvoidCircularDependency.push(item)
|
|
57
62
|
await Promise.all(Object.entries(item).map(
|
|
58
63
|
([key, val]) => recursiveGenericFunction(val, callback, config, (addr$ ? addr$ + '.' : '') + key.replace(/\./g, '%'), key, item, techFieldToAvoidCircularDependency)
|
|
@@ -82,6 +87,8 @@ export async function recursiveGenericFunction(item: ObjectGeneric | any[], call
|
|
|
82
87
|
export function recursiveGenericFunctionSync(item: ObjectGeneric | any[], callback: RecursiveCallback, config: RecursiveConfig = {}, addr$ = '', lastElementKey: string | number = '', parent?, techFieldToAvoidCircularDependency: any[] = []) {
|
|
83
88
|
err500IfNotSet({ callback })
|
|
84
89
|
|
|
90
|
+
if (!config.isObjectTestFunction) config.isObjectTestFunction = isObject
|
|
91
|
+
|
|
85
92
|
if (!techFieldToAvoidCircularDependency.includes(item)) {
|
|
86
93
|
const result = addr$ === '' ? true : callback(item, addr$, lastElementKey, parent)
|
|
87
94
|
|
|
@@ -89,7 +96,7 @@ export function recursiveGenericFunctionSync(item: ObjectGeneric | any[], callba
|
|
|
89
96
|
if (Array.isArray(item)) {
|
|
90
97
|
if (config?.disableCircularDependencyRemoval !== true) techFieldToAvoidCircularDependency.push(item) // do not up one level
|
|
91
98
|
item.forEach((e, i) => recursiveGenericFunctionSync(e, callback, config, addr$ + '[' + i + ']', i, item, techFieldToAvoidCircularDependency))
|
|
92
|
-
} else if (
|
|
99
|
+
} else if (config.isObjectTestFunction(item)) {
|
|
93
100
|
if (config?.disableCircularDependencyRemoval !== true) techFieldToAvoidCircularDependency.push(item)
|
|
94
101
|
Object.entries(item).forEach(([key, val]) => recursiveGenericFunctionSync(val, callback, config, (addr$ ? addr$ + '.' : '') + key.replace(/\./g, '%'), key, item, techFieldToAvoidCircularDependency))
|
|
95
102
|
}
|