@awesomeness-js/utils 1.0.24 → 1.0.25
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/build/build.js +11 -11
- package/build/postBuild.js +8 -8
- package/eslint.config.js +90 -0
- package/index.js +77 -74
- package/package.json +25 -25
- package/schemas/schema1.js +5 -1
- package/schemas/schema2.js +5 -1
- package/schemas.js +2 -2
- package/src/build.js +12 -8
- package/src/clean/boolean.js +27 -17
- package/src/clean/integer.js +85 -69
- package/src/clean/number.js +103 -86
- package/src/clean/string.js +91 -67
- package/src/clean/timestamp.js +61 -45
- package/src/clean/uuid.js +38 -25
- package/src/collectImports.js +195 -0
- package/src/combineFiles.js +45 -36
- package/src/convertBytes.js +12 -7
- package/src/decrypt.js +17 -9
- package/src/each.js +26 -4
- package/src/eachAsync.js +35 -19
- package/src/encrypt.js +22 -17
- package/src/getAllFiles.js +55 -41
- package/src/ignoreFolder/ignoreMe.js +6 -2
- package/src/ignoreMe.js +4 -2
- package/src/isUUID.js +4 -0
- package/src/md5.js +5 -1
- package/src/password/check.js +7 -3
- package/src/password/hash.js +12 -7
- package/src/setLocalEnvs.js +16 -3
- package/src/thingType.js +62 -24
- package/src/toPennies.js +23 -5
- package/src/utils/buildExportsTree.js +45 -17
- package/src/utils/buildFileDataList.js +32 -17
- package/src/utils/clean.js +205 -120
- package/src/utils/extractJSDocComment.js +14 -7
- package/src/utils/generateFile.js +20 -18
- package/src/utils/generateFlatExportLines.js +34 -17
- package/src/utils/generateImportStatements.js +15 -7
- package/src/utils/generateNamedExports.js +20 -9
- package/src/utils/generateNamespaceCode.js +45 -24
- package/src/utils/generateNamespaceExportLines.js +16 -7
- package/src/utils/shouldIgnore.js +57 -37
- package/src/uuid.js +9 -7
- package/src/validateSchema.js +95 -77
- package/test/collectImports.js +8 -0
- package/test/css/some.css +3 -0
- package/test/css/some.js +5 -0
- package/test/ignoreFolder/ignoreMe.js +3 -1
- package/test/ignoreFolder/ignoreMe2.js +3 -1
- package/test/ignoreFolder2/ignoreMe.js +6 -2
- package/test/js/abc.test.js +7 -3
- package/test/js/some.js +5 -0
- package/test/secret.test.js +1 -1
- package/tests/clean/array.test.js +122 -74
- package/tests/clean/boolean.test.js +18 -6
- package/tests/clean/integer.test.js +25 -9
- package/tests/clean/number.test.js +49 -13
- package/tests/clean/object.test.js +190 -119
- package/tests/clean/string.test.js +48 -17
- package/tests/clean/timestamp.test.js +12 -5
- package/tests/clean/uuid.test.js +13 -6
- package/tests/collectImports.test.js +66 -0
- package/tests/combineFiles.test.js +28 -26
- package/tests/convertBytes.test.js +8 -3
- package/tests/env.test.js +9 -3
- package/tests/example.test.js +7 -3
- package/tests/fileList.test.js +16 -12
- package/tests/hash-and-encrypt.test.js +13 -4
- package/tests/md5.test.js +7 -2
- package/tests/uuid.test.js +10 -4
- package/tests/validateSchema.test.js +21 -9
- package/tsconfig.json +20 -16
- package/types/collectImports.d.ts +6 -0
- package/types/index.d.ts +3 -0
package/src/clean/number.js
CHANGED
|
@@ -1,93 +1,110 @@
|
|
|
1
1
|
export default function cleanNumber(x, {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
required = false,
|
|
3
|
+
convertString = true,
|
|
4
|
+
min = false,
|
|
5
|
+
max = false,
|
|
6
|
+
maxDecimal = false,
|
|
7
|
+
minDecimal = false,
|
|
8
8
|
} = {}){
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
10
|
+
try {
|
|
11
|
+
|
|
12
|
+
if (typeof x !== 'number') {
|
|
13
|
+
|
|
14
|
+
// convert string to number if possible
|
|
15
|
+
if (convertString && typeof x === 'string') {
|
|
16
|
+
|
|
17
|
+
try {
|
|
18
|
+
|
|
19
|
+
x = parseFloat(x);
|
|
20
|
+
|
|
21
|
+
} catch(e){
|
|
22
|
+
|
|
23
|
+
throw {
|
|
24
|
+
message: 'Input cannot be parsed',
|
|
25
|
+
value: x
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
if(isNaN(x)){
|
|
32
|
+
|
|
33
|
+
throw {
|
|
34
|
+
message: 'Input cannot be parsed NaN',
|
|
35
|
+
value: x
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
} else {
|
|
41
|
+
|
|
42
|
+
throw {
|
|
43
|
+
message: 'Input must be a number',
|
|
44
|
+
value: x
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if (min !== false && x < min) {
|
|
52
|
+
|
|
53
|
+
throw {
|
|
54
|
+
message: `Integer must be greater than or equal to ${min}`,
|
|
55
|
+
value: x,
|
|
56
|
+
min,
|
|
57
|
+
max
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
if (max !== false && x > max) {
|
|
63
|
+
|
|
64
|
+
throw {
|
|
65
|
+
message: `Integer must be less than or equal to ${max}`,
|
|
66
|
+
value: x,
|
|
67
|
+
min,
|
|
68
|
+
max
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if (maxDecimal !== false && x.toString().split('.')[1]?.length > maxDecimal) {
|
|
74
|
+
|
|
75
|
+
throw {
|
|
76
|
+
message: `Number must have at most ${maxDecimal} decimal places`,
|
|
77
|
+
value: x,
|
|
78
|
+
maxDecimal
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
if (minDecimal !== false && x.toString().split('.')[1]?.length < minDecimal) {
|
|
84
|
+
|
|
85
|
+
throw {
|
|
86
|
+
message: `Number must have at least ${minDecimal} decimal places`,
|
|
87
|
+
value: x,
|
|
88
|
+
minDecimal
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
return x;
|
|
86
94
|
|
|
87
|
-
|
|
95
|
+
} catch (e) {
|
|
96
|
+
|
|
97
|
+
if(required) {
|
|
98
|
+
|
|
99
|
+
throw e;
|
|
100
|
+
|
|
101
|
+
} else {
|
|
102
|
+
|
|
103
|
+
return null;
|
|
104
|
+
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
}
|
|
88
108
|
|
|
89
|
-
if(required) { throw e; } else { return null; }
|
|
90
|
-
|
|
91
|
-
}
|
|
92
109
|
}
|
|
93
110
|
|
package/src/clean/string.js
CHANGED
|
@@ -1,72 +1,96 @@
|
|
|
1
1
|
export default function cleanString(x, {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
required = false,
|
|
3
|
+
minLength = false,
|
|
4
|
+
maxLength = false,
|
|
5
|
+
allowHtml = false,
|
|
6
|
+
allowScripts = false,
|
|
7
|
+
validValues = false
|
|
8
8
|
} = {}){
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
10
|
+
if(allowScripts && !allowHtml){
|
|
11
|
+
|
|
12
|
+
allowHtml = true;
|
|
13
|
+
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
try {
|
|
17
|
+
|
|
18
|
+
if(typeof x !== 'string') {
|
|
19
|
+
|
|
20
|
+
throw {
|
|
21
|
+
name: 'TypeError',
|
|
22
|
+
message: 'Input must be a string',
|
|
23
|
+
value: x
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
if(minLength !== false && x.length < minLength) {
|
|
29
|
+
|
|
30
|
+
throw {
|
|
31
|
+
message: `String length must be between ${minLength} `,
|
|
32
|
+
length: x.length,
|
|
33
|
+
value: x
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
if(maxLength !== false && x.length > maxLength) {
|
|
39
|
+
|
|
40
|
+
throw {
|
|
41
|
+
message: `String length must be less than or equal to ${maxLength}`,
|
|
42
|
+
length: x.length,
|
|
43
|
+
value: x
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
if(!allowHtml && /<[^>]*>/g.test(x)) {
|
|
49
|
+
|
|
50
|
+
throw {
|
|
51
|
+
message: 'HTML tags are not allowed',
|
|
52
|
+
value: x
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
if(!allowScripts && /<script[^>]*>.*<\/script>/g.test(x)) {
|
|
58
|
+
|
|
59
|
+
throw {
|
|
60
|
+
message: 'Script tags are not allowed',
|
|
61
|
+
value: x
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if(
|
|
67
|
+
validValues
|
|
68
|
+
&& Array.isArray(validValues)
|
|
69
|
+
&& !validValues.includes(x)
|
|
70
|
+
) {
|
|
71
|
+
|
|
72
|
+
throw {
|
|
73
|
+
message: `Value invalid`,
|
|
74
|
+
validValues,
|
|
75
|
+
value: x
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
return x;
|
|
81
|
+
|
|
82
|
+
} catch (e) {
|
|
83
|
+
|
|
84
|
+
if(required) {
|
|
85
|
+
|
|
86
|
+
throw e;
|
|
87
|
+
|
|
88
|
+
} else {
|
|
89
|
+
|
|
90
|
+
return null;
|
|
91
|
+
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
}
|
|
71
95
|
|
|
72
96
|
}
|
package/src/clean/timestamp.js
CHANGED
|
@@ -1,50 +1,66 @@
|
|
|
1
1
|
export default function cleanTimestamp( isoDateTimeString , {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
required = false,
|
|
3
|
+
maxDaysInFuture = false,
|
|
4
|
+
maxDaysInFPast = false,
|
|
5
5
|
} = {}){
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
6
|
+
|
|
7
|
+
try {
|
|
8
|
+
|
|
9
|
+
if(typeof isoDateTimeString !== 'string') {
|
|
10
|
+
|
|
11
|
+
throw {
|
|
12
|
+
message: 'Input must be a string',
|
|
13
|
+
isoDateTimeString
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const date = new Date(isoDateTimeString);
|
|
19
|
+
|
|
20
|
+
if(isNaN(date.getTime())) {
|
|
21
|
+
|
|
22
|
+
throw {
|
|
23
|
+
message: 'Invalid date string',
|
|
24
|
+
isoDateTimeString
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const now = new Date();
|
|
30
|
+
|
|
31
|
+
if(maxDaysInFuture !== false && (date - now) > maxDaysInFuture * 24 * 60 * 60 * 1000) {
|
|
32
|
+
|
|
33
|
+
throw {
|
|
34
|
+
message: `Date is more than ${maxDaysInFuture} days in the future`,
|
|
35
|
+
isoDateTimeString
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
if(maxDaysInFPast !== false && (now - date) > maxDaysInFPast * 24 * 60 * 60 * 1000) {
|
|
41
|
+
|
|
42
|
+
throw {
|
|
43
|
+
message: `Date is more than ${maxDaysInFPast} days in the past`,
|
|
44
|
+
value: isoDateTimeString
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return date.toISOString();
|
|
50
|
+
|
|
51
|
+
} catch (e) {
|
|
52
|
+
|
|
53
|
+
if(required) {
|
|
54
|
+
|
|
55
|
+
throw e;
|
|
56
|
+
|
|
57
|
+
} else {
|
|
58
|
+
|
|
59
|
+
return null;
|
|
60
|
+
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
}
|
|
48
64
|
|
|
49
65
|
|
|
50
66
|
|
package/src/clean/uuid.js
CHANGED
|
@@ -1,31 +1,44 @@
|
|
|
1
1
|
import isUUID from "../isUUID.js";
|
|
2
|
+
|
|
2
3
|
export default function cleanUUID(uuid,{
|
|
3
|
-
|
|
4
|
+
required = false,
|
|
4
5
|
} = {}){
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
6
|
+
|
|
7
|
+
try {
|
|
8
|
+
|
|
9
|
+
if(typeof uuid !== 'string'){
|
|
10
|
+
|
|
11
|
+
throw {
|
|
12
|
+
message: 'Input must be a string',
|
|
13
|
+
uuid
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
if(!isUUID(uuid)){
|
|
19
|
+
|
|
20
|
+
throw {
|
|
21
|
+
message: 'Invalid UUID format',
|
|
22
|
+
uuid
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return uuid;
|
|
28
|
+
|
|
29
|
+
} catch (e) {
|
|
30
|
+
|
|
31
|
+
if(required) {
|
|
32
|
+
|
|
33
|
+
throw e;
|
|
34
|
+
|
|
35
|
+
} else {
|
|
36
|
+
|
|
37
|
+
return null;
|
|
38
|
+
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
}
|
|
29
42
|
|
|
30
43
|
|
|
31
44
|
|