@leyyo/type 1.3.6 → 1.3.7
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/dist/error/index.d.ts +17 -17
- package/dist/error/index.js +17 -17
- package/dist/error/invalid-array.error.js +5 -1
- package/dist/error/invalid-boolean.error.js +5 -1
- package/dist/error/invalid-date.error.js +1 -1
- package/dist/error/invalid-delimited.error.js +5 -1
- package/dist/error/invalid-enum-map.error.js +5 -1
- package/dist/error/invalid-enum-value.error.js +5 -1
- package/dist/error/invalid-integer.error.js +5 -1
- package/dist/error/invalid-list.error.js +1 -1
- package/dist/error/invalid-literal-items.error.js +5 -1
- package/dist/error/invalid-literal-value.error.js +5 -1
- package/dist/error/invalid-map.error.js +1 -1
- package/dist/error/invalid-number.error.js +5 -1
- package/dist/error/invalid-object.error.js +5 -1
- package/dist/error/invalid-real-value.error.js +5 -1
- package/dist/error/invalid-set.error.js +1 -1
- package/dist/error/invalid-string.error.js +5 -1
- package/dist/error/invalid-text.error.js +1 -1
- package/dist/index.d.ts +6 -6
- package/dist/index.foretell.js +24 -24
- package/dist/index.js +6 -6
- package/dist/index.loader.js +2 -2
- package/dist/is/index.d.ts +25 -25
- package/dist/is/index.js +25 -25
- package/dist/is/is-boolean-like.js +2 -2
- package/dist/is/is-false-like.js +1 -1
- package/dist/is/is-instance-of.js +1 -1
- package/dist/is/is-not-empty.js +1 -1
- package/dist/is/is-sys-class.js +1 -1
- package/dist/is/is-sys-function.js +1 -1
- package/dist/is/is-true-like.js +1 -1
- package/dist/is/is-type-of.d.ts +1 -1
- package/dist/is/is-valid-number.js +1 -1
- package/dist/literal/basic-type.js +11 -2
- package/dist/literal/defined-type.d.ts +1 -1
- package/dist/literal/defined-type.js +2 -2
- package/dist/literal/extended-type.js +22 -4
- package/dist/literal/false-weak.d.ts +1 -1
- package/dist/literal/false-weak.js +2 -2
- package/dist/literal/index.d.ts +7 -7
- package/dist/literal/index.js +7 -7
- package/dist/literal/sys-class.d.ts +1 -1
- package/dist/literal/sys-class.js +65 -15
- package/dist/literal/sys-function.d.ts +1 -1
- package/dist/literal/sys-function.js +20 -4
- package/dist/literal/true-weak.d.ts +1 -1
- package/dist/literal/true-weak.js +2 -2
- package/dist/to/index.d.ts +15 -15
- package/dist/to/index.js +15 -15
- package/dist/to/to-array-value.js +46 -42
- package/dist/to/to-boolean-value.js +13 -13
- package/dist/to/to-date-value.js +22 -20
- package/dist/to/to-delimited-value.js +15 -13
- package/dist/to/to-enum-value.js +22 -21
- package/dist/to/to-integer-value.js +14 -13
- package/dist/to/to-list-value.js +9 -8
- package/dist/to/to-literal-value.js +23 -22
- package/dist/to/to-map-value.js +44 -41
- package/dist/to/to-number-value.js +12 -12
- package/dist/to/to-object-value.js +26 -24
- package/dist/to/to-set-value.js +8 -8
- package/dist/to/to-string-value.js +14 -13
- package/dist/to/to-text-value.js +18 -16
- package/dist/to/util.js +18 -15
- package/package.json +20 -23
package/dist/to/to-enum-value.js
CHANGED
|
@@ -13,15 +13,15 @@ import { isBareObject } from "../is/index.js";
|
|
|
13
13
|
export function toEnumValue(value, opt) {
|
|
14
14
|
let o = optCheck(opt);
|
|
15
15
|
if (isEmpty(value)) {
|
|
16
|
-
return _toEmpty(value, o, InvalidEnumValueError,
|
|
16
|
+
return _toEmpty(value, o, InvalidEnumValueError, "enum-map");
|
|
17
17
|
}
|
|
18
18
|
let err;
|
|
19
19
|
if (!isBareObject(o.enum) || Object.keys(o.enum).length < 1) {
|
|
20
20
|
o = optAppend(o, {
|
|
21
|
-
issue:
|
|
21
|
+
issue: "not:allowed",
|
|
22
22
|
mapType: typeof o.enum,
|
|
23
23
|
});
|
|
24
|
-
err = new InvalidEnumMapError(
|
|
24
|
+
err = new InvalidEnumMapError("Invalid enum map", o);
|
|
25
25
|
if (!o.silent) {
|
|
26
26
|
throw err;
|
|
27
27
|
}
|
|
@@ -29,11 +29,12 @@ export function toEnumValue(value, opt) {
|
|
|
29
29
|
return undefined;
|
|
30
30
|
}
|
|
31
31
|
let v;
|
|
32
|
+
let num;
|
|
32
33
|
switch (typeof value) {
|
|
33
|
-
case
|
|
34
|
+
case "string":
|
|
34
35
|
value = value.trim();
|
|
35
|
-
if (value
|
|
36
|
-
return _toEmpty(value, o, InvalidEnumValueError,
|
|
36
|
+
if (!value) {
|
|
37
|
+
return _toEmpty(value, o, InvalidEnumValueError, "enum-map");
|
|
37
38
|
}
|
|
38
39
|
v = _inEnumMap(value, o.enum);
|
|
39
40
|
if (v !== undefined) {
|
|
@@ -46,12 +47,12 @@ export function toEnumValue(value, opt) {
|
|
|
46
47
|
}
|
|
47
48
|
}
|
|
48
49
|
o = optAppend(o, {
|
|
49
|
-
issue:
|
|
50
|
-
expected:
|
|
51
|
-
type:
|
|
50
|
+
issue: "invalid",
|
|
51
|
+
expected: "enum",
|
|
52
|
+
type: "string",
|
|
52
53
|
value,
|
|
53
54
|
});
|
|
54
|
-
err = new InvalidEnumValueError(
|
|
55
|
+
err = new InvalidEnumValueError("Invalid enum for text", o);
|
|
55
56
|
if (!o.silent) {
|
|
56
57
|
throw err;
|
|
57
58
|
}
|
|
@@ -59,10 +60,10 @@ export function toEnumValue(value, opt) {
|
|
|
59
60
|
err.logWarn();
|
|
60
61
|
}
|
|
61
62
|
return undefined;
|
|
62
|
-
case
|
|
63
|
-
|
|
63
|
+
case "number":
|
|
64
|
+
num = _realNumber(value, o);
|
|
64
65
|
if (num === undefined) {
|
|
65
|
-
return
|
|
66
|
+
return _toEmpty(value, o, InvalidEnumValueError, "enum-map");
|
|
66
67
|
}
|
|
67
68
|
v = _inEnumMap(num, o.enum);
|
|
68
69
|
if (v !== undefined) {
|
|
@@ -75,12 +76,12 @@ export function toEnumValue(value, opt) {
|
|
|
75
76
|
}
|
|
76
77
|
}
|
|
77
78
|
o = optAppend(o, {
|
|
78
|
-
issue:
|
|
79
|
-
expected:
|
|
80
|
-
type:
|
|
79
|
+
issue: "invalid",
|
|
80
|
+
expected: "enum",
|
|
81
|
+
type: "number",
|
|
81
82
|
value,
|
|
82
83
|
});
|
|
83
|
-
err = new InvalidEnumValueError(
|
|
84
|
+
err = new InvalidEnumValueError("Invalid enum for number", o);
|
|
84
85
|
if (!o.silent) {
|
|
85
86
|
throw err;
|
|
86
87
|
}
|
|
@@ -88,7 +89,7 @@ export function toEnumValue(value, opt) {
|
|
|
88
89
|
err.logWarn();
|
|
89
90
|
}
|
|
90
91
|
return undefined;
|
|
91
|
-
case
|
|
92
|
+
case "object":
|
|
92
93
|
if (Array.isArray(value) && value.length === 1) {
|
|
93
94
|
return toEnumValue(value[0], o);
|
|
94
95
|
}
|
|
@@ -96,8 +97,8 @@ export function toEnumValue(value, opt) {
|
|
|
96
97
|
return toEnumValue(value.id, o);
|
|
97
98
|
}
|
|
98
99
|
break;
|
|
99
|
-
case
|
|
100
|
-
return toEnumValue(_toRun(value, o,
|
|
100
|
+
case "function":
|
|
101
|
+
return toEnumValue(_toRun(value, o, "function"), o);
|
|
101
102
|
}
|
|
102
|
-
return _toElse(value, o, InvalidEnumValueError,
|
|
103
|
+
return _toElse(value, o, InvalidEnumValueError, "enum-map");
|
|
103
104
|
}
|
|
@@ -10,15 +10,16 @@ import { InvalidIntegerError } from "../error/index.js";
|
|
|
10
10
|
* @return {number}
|
|
11
11
|
* */
|
|
12
12
|
export function toIntegerValue(value, opt) {
|
|
13
|
-
|
|
13
|
+
const o = optCheck(opt);
|
|
14
14
|
if (isEmpty(value)) {
|
|
15
|
-
return _toEmpty(value, o, InvalidIntegerError,
|
|
15
|
+
return _toEmpty(value, o, InvalidIntegerError, "integer");
|
|
16
16
|
}
|
|
17
|
+
let num;
|
|
17
18
|
switch (typeof value) {
|
|
18
|
-
case
|
|
19
|
-
return toIntegerValue(_toRun(() => parseInt(value), o,
|
|
20
|
-
case
|
|
21
|
-
|
|
19
|
+
case "string":
|
|
20
|
+
return toIntegerValue(_toRun(() => parseInt(value), o, "from-string"), o);
|
|
21
|
+
case "number":
|
|
22
|
+
num = _realNumber(value, o);
|
|
22
23
|
if (num !== undefined) {
|
|
23
24
|
num = _safeInteger(value, o);
|
|
24
25
|
}
|
|
@@ -26,11 +27,11 @@ export function toIntegerValue(value, opt) {
|
|
|
26
27
|
num = Math.floor(num);
|
|
27
28
|
}
|
|
28
29
|
return num;
|
|
29
|
-
case
|
|
30
|
-
return toIntegerValue(_toRun(() => Number(value), o,
|
|
31
|
-
case
|
|
30
|
+
case "bigint":
|
|
31
|
+
return toIntegerValue(_toRun(() => Number(value), o, "from-bigint"), o);
|
|
32
|
+
case "boolean":
|
|
32
33
|
return value ? 1 : 0;
|
|
33
|
-
case
|
|
34
|
+
case "object":
|
|
34
35
|
if (Array.isArray(value)) {
|
|
35
36
|
if (value.length === 1) {
|
|
36
37
|
return toIntegerValue(value[0], o);
|
|
@@ -40,8 +41,8 @@ export function toIntegerValue(value, opt) {
|
|
|
40
41
|
return toIntegerValue(value.id, o);
|
|
41
42
|
}
|
|
42
43
|
break;
|
|
43
|
-
case
|
|
44
|
-
return toIntegerValue(_toRun(value, o,
|
|
44
|
+
case "function":
|
|
45
|
+
return toIntegerValue(_toRun(value, o, "function"), o);
|
|
45
46
|
}
|
|
46
|
-
return _toElse(value, o, InvalidIntegerError,
|
|
47
|
+
return _toElse(value, o, InvalidIntegerError, "integer");
|
|
47
48
|
}
|
package/dist/to/to-list-value.js
CHANGED
|
@@ -11,17 +11,18 @@ import { InvalidListError } from "../error/index.js";
|
|
|
11
11
|
* @return {Array}
|
|
12
12
|
* */
|
|
13
13
|
export function toListValue(value, opt) {
|
|
14
|
-
|
|
14
|
+
const o = optCheck(opt);
|
|
15
15
|
if (isEmpty(value)) {
|
|
16
|
-
return _toEmpty(value, o, InvalidListError,
|
|
16
|
+
return _toEmpty(value, o, InvalidListError, "array");
|
|
17
17
|
}
|
|
18
|
+
let clonedArr;
|
|
18
19
|
switch (typeof value) {
|
|
19
20
|
case "string":
|
|
20
21
|
case "boolean":
|
|
21
22
|
case "number":
|
|
22
23
|
case "bigint":
|
|
23
24
|
return toListValue([value], o);
|
|
24
|
-
case
|
|
25
|
+
case "object":
|
|
25
26
|
if (value instanceof Set) {
|
|
26
27
|
return toListValue(new List(...Array.from(value.values())), o);
|
|
27
28
|
}
|
|
@@ -30,12 +31,12 @@ export function toListValue(value, opt) {
|
|
|
30
31
|
if (o.zeroLength) {
|
|
31
32
|
return value;
|
|
32
33
|
}
|
|
33
|
-
return _toEmpty(value, o, InvalidListError,
|
|
34
|
+
return _toEmpty(value, o, InvalidListError, "array");
|
|
34
35
|
}
|
|
35
36
|
if (typeof o.itemFn !== "function" || value.length < 1) {
|
|
36
37
|
return value;
|
|
37
38
|
}
|
|
38
|
-
|
|
39
|
+
clonedArr = [...value];
|
|
39
40
|
value.clear();
|
|
40
41
|
const producedArr = toArrayValue(clonedArr, o);
|
|
41
42
|
if (Array.isArray(producedArr)) {
|
|
@@ -47,8 +48,8 @@ export function toListValue(value, opt) {
|
|
|
47
48
|
return toListValue(new List(...value), o);
|
|
48
49
|
}
|
|
49
50
|
break;
|
|
50
|
-
case
|
|
51
|
-
return toListValue(_toRun(value, o,
|
|
51
|
+
case "function":
|
|
52
|
+
return toListValue(_toRun(value, o, "function"), o);
|
|
52
53
|
}
|
|
53
|
-
return _toElse(value, o, InvalidListError,
|
|
54
|
+
return _toElse(value, o, InvalidListError, "array");
|
|
54
55
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { isEmpty, optAppend, optCheck } from "@leyyo/common";
|
|
2
|
-
import { _inEnumAlteration, _inEnumLiteral, _realNumber, _toElse, _toEmpty, _toRun } from "./util.js";
|
|
2
|
+
import { _inEnumAlteration, _inEnumLiteral, _realNumber, _toElse, _toEmpty, _toRun, } from "./util.js";
|
|
3
3
|
import { InvalidLiteralItemsError, InvalidLiteralValueError } from "../error/index.js";
|
|
4
4
|
import { isBareObject } from "../is/index.js";
|
|
5
5
|
// noinspection JSUnusedGlobalSymbols
|
|
@@ -13,15 +13,15 @@ import { isBareObject } from "../is/index.js";
|
|
|
13
13
|
export function toLiteralValue(value, opt) {
|
|
14
14
|
let o = optCheck(opt);
|
|
15
15
|
if (isEmpty(value)) {
|
|
16
|
-
return _toEmpty(value, o, InvalidLiteralValueError,
|
|
16
|
+
return _toEmpty(value, o, InvalidLiteralValueError, "literal-items");
|
|
17
17
|
}
|
|
18
18
|
let err;
|
|
19
19
|
if (!Array.isArray(o.literal) || o.literal.length < 1) {
|
|
20
20
|
o = optAppend(o, {
|
|
21
|
-
issue:
|
|
21
|
+
issue: "not:allowed",
|
|
22
22
|
itemsType: typeof o.literal,
|
|
23
23
|
});
|
|
24
|
-
err = new InvalidLiteralItemsError(
|
|
24
|
+
err = new InvalidLiteralItemsError("Invalid enum literals", o);
|
|
25
25
|
if (!o.silent) {
|
|
26
26
|
throw err;
|
|
27
27
|
}
|
|
@@ -29,11 +29,12 @@ export function toLiteralValue(value, opt) {
|
|
|
29
29
|
return undefined;
|
|
30
30
|
}
|
|
31
31
|
let v;
|
|
32
|
+
let num;
|
|
32
33
|
switch (typeof value) {
|
|
33
|
-
case
|
|
34
|
+
case "string":
|
|
34
35
|
value = value.trim();
|
|
35
|
-
if (value
|
|
36
|
-
return undefined;
|
|
36
|
+
if (!value) {
|
|
37
|
+
return _toEmpty(undefined, o, InvalidLiteralValueError, "literal-items");
|
|
37
38
|
}
|
|
38
39
|
v = _inEnumLiteral(value, o.literal);
|
|
39
40
|
if (v !== undefined) {
|
|
@@ -46,12 +47,12 @@ export function toLiteralValue(value, opt) {
|
|
|
46
47
|
}
|
|
47
48
|
}
|
|
48
49
|
o = optAppend(o, {
|
|
49
|
-
issue:
|
|
50
|
-
expected:
|
|
51
|
-
type:
|
|
50
|
+
issue: "invalid",
|
|
51
|
+
expected: "enum",
|
|
52
|
+
type: "string",
|
|
52
53
|
value,
|
|
53
54
|
});
|
|
54
|
-
err = new InvalidLiteralValueError(
|
|
55
|
+
err = new InvalidLiteralValueError("Invalid literal for text", o);
|
|
55
56
|
if (!o.silent) {
|
|
56
57
|
throw err;
|
|
57
58
|
}
|
|
@@ -59,10 +60,10 @@ export function toLiteralValue(value, opt) {
|
|
|
59
60
|
err.logWarn();
|
|
60
61
|
}
|
|
61
62
|
return undefined;
|
|
62
|
-
case
|
|
63
|
-
|
|
63
|
+
case "number":
|
|
64
|
+
num = _realNumber(value, o);
|
|
64
65
|
if (num === undefined) {
|
|
65
|
-
return undefined;
|
|
66
|
+
return _toEmpty(undefined, o, InvalidLiteralValueError, "literal-items");
|
|
66
67
|
}
|
|
67
68
|
v = _inEnumLiteral(value, o.literal);
|
|
68
69
|
if (v !== undefined) {
|
|
@@ -75,12 +76,12 @@ export function toLiteralValue(value, opt) {
|
|
|
75
76
|
}
|
|
76
77
|
}
|
|
77
78
|
o = optAppend(o, {
|
|
78
|
-
issue:
|
|
79
|
-
expected:
|
|
80
|
-
type:
|
|
79
|
+
issue: "invalid",
|
|
80
|
+
expected: "enum",
|
|
81
|
+
type: "number",
|
|
81
82
|
value,
|
|
82
83
|
});
|
|
83
|
-
err = new InvalidLiteralValueError(
|
|
84
|
+
err = new InvalidLiteralValueError("Invalid enum for number", o);
|
|
84
85
|
if (!o.silent) {
|
|
85
86
|
throw err;
|
|
86
87
|
}
|
|
@@ -88,7 +89,7 @@ export function toLiteralValue(value, opt) {
|
|
|
88
89
|
err.logWarn();
|
|
89
90
|
}
|
|
90
91
|
return undefined;
|
|
91
|
-
case
|
|
92
|
+
case "object":
|
|
92
93
|
if (Array.isArray(value) && value.length === 1) {
|
|
93
94
|
return toLiteralValue(value[0], o);
|
|
94
95
|
}
|
|
@@ -96,8 +97,8 @@ export function toLiteralValue(value, opt) {
|
|
|
96
97
|
return toLiteralValue(value.id, o);
|
|
97
98
|
}
|
|
98
99
|
break;
|
|
99
|
-
case
|
|
100
|
-
return toLiteralValue(_toRun(value, o,
|
|
100
|
+
case "function":
|
|
101
|
+
return toLiteralValue(_toRun(value, o, "function"), o);
|
|
101
102
|
}
|
|
102
|
-
return _toElse(value, o, InvalidLiteralValueError,
|
|
103
|
+
return _toElse(value, o, InvalidLiteralValueError, "literal-items");
|
|
103
104
|
}
|
package/dist/to/to-map-value.js
CHANGED
|
@@ -11,51 +11,54 @@ import { InvalidMapError } from "../error/index.js";
|
|
|
11
11
|
* @return {Map}
|
|
12
12
|
* */
|
|
13
13
|
export function toMapValue(value, opt) {
|
|
14
|
-
|
|
14
|
+
const o = optCheck(opt);
|
|
15
15
|
if (isEmpty(value)) {
|
|
16
|
-
return _toEmpty(value, o, InvalidMapError,
|
|
16
|
+
return _toEmpty(value, o, InvalidMapError, "object");
|
|
17
17
|
}
|
|
18
18
|
switch (typeof value) {
|
|
19
|
-
case
|
|
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
|
-
}
|
|
19
|
+
case "object":
|
|
20
|
+
return _toMapValue(value, o);
|
|
21
|
+
case "function":
|
|
22
|
+
return _toMapValue(_toRun(value, o, "function"), o);
|
|
23
|
+
}
|
|
24
|
+
return _toElse(value, o, InvalidMapError, "object");
|
|
25
|
+
}
|
|
26
|
+
function _toMapValue(value, options) {
|
|
27
|
+
if (value instanceof Set) {
|
|
28
|
+
if (value.size === 1) {
|
|
29
|
+
return toMapValue(Array.from(value.values())[0], options);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
else if (value instanceof List) {
|
|
33
|
+
if (value.length === 1) {
|
|
34
|
+
return toMapValue(value[0], options);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
else if (value instanceof Map) {
|
|
38
|
+
const cloned = Object.fromEntries(value.entries());
|
|
39
|
+
value.clear();
|
|
40
|
+
const produced = toObjectValue(cloned, options);
|
|
41
|
+
if (produced) {
|
|
42
|
+
for (const [k, v] of Object.entries(produced)) {
|
|
43
|
+
value.set(k, v);
|
|
45
44
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
45
|
+
}
|
|
46
|
+
return value;
|
|
47
|
+
}
|
|
48
|
+
else if (Array.isArray(value)) {
|
|
49
|
+
if (value.length === 1) {
|
|
50
|
+
return toMapValue(value[0], options);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
else if (this.lyy.is.bareObject(value)) {
|
|
54
|
+
const map = new Map();
|
|
55
|
+
const produced = toObjectValue(value, options);
|
|
56
|
+
if (produced) {
|
|
57
|
+
for (const [k, v] of Object.entries(produced)) {
|
|
58
|
+
map.set(k, v);
|
|
55
59
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
return toMapValue(_toRun(value, o, 'function'), o);
|
|
60
|
+
}
|
|
61
|
+
return map;
|
|
59
62
|
}
|
|
60
|
-
return _toElse(value,
|
|
63
|
+
return _toElse(value, options, InvalidMapError, "object");
|
|
61
64
|
}
|
|
@@ -10,28 +10,28 @@ import { InvalidNumberError } from "../error/index.js";
|
|
|
10
10
|
* @return {number}
|
|
11
11
|
* */
|
|
12
12
|
export function toNumberValue(value, opt) {
|
|
13
|
-
|
|
13
|
+
const o = optCheck(opt);
|
|
14
14
|
if (isEmpty(value)) {
|
|
15
|
-
return _toEmpty(value, o, InvalidNumberError,
|
|
15
|
+
return _toEmpty(value, o, InvalidNumberError, "number");
|
|
16
16
|
}
|
|
17
17
|
switch (typeof value) {
|
|
18
|
-
case
|
|
19
|
-
return toNumberValue(_toRun(() => parseFloat(value), o,
|
|
20
|
-
case
|
|
18
|
+
case "string":
|
|
19
|
+
return toNumberValue(_toRun(() => parseFloat(value), o, "from-string"), o);
|
|
20
|
+
case "number":
|
|
21
21
|
return _realNumber(value, o);
|
|
22
|
-
case
|
|
23
|
-
return toNumberValue(_toRun(() => Number(value), o,
|
|
24
|
-
case
|
|
22
|
+
case "bigint":
|
|
23
|
+
return toNumberValue(_toRun(() => Number(value), o, "from-bigint"), o);
|
|
24
|
+
case "boolean":
|
|
25
25
|
return value ? 1 : 0;
|
|
26
|
-
case
|
|
26
|
+
case "object":
|
|
27
27
|
if (Array.isArray(value)) {
|
|
28
28
|
if (value.length === 1) {
|
|
29
29
|
return toNumberValue(value[0], o);
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
break;
|
|
33
|
-
case
|
|
34
|
-
return toNumberValue(_toRun(value, o,
|
|
33
|
+
case "function":
|
|
34
|
+
return toNumberValue(_toRun(value, o, "function"), o);
|
|
35
35
|
}
|
|
36
|
-
return _toElse(value, o, InvalidNumberError,
|
|
36
|
+
return _toElse(value, o, InvalidNumberError, "number");
|
|
37
37
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { InvalidValueError, isEmpty, List, optAppend, optCheck, optField } from "@leyyo/common";
|
|
1
|
+
import { InvalidValueError, isEmpty, List, optAppend, optCheck, optField, } from "@leyyo/common";
|
|
2
2
|
import { _toElse, _toEmpty, _toRun } from "./util.js";
|
|
3
3
|
import { isBareObject } from "../is/index.js";
|
|
4
4
|
import { InvalidObjectError } from "../error/index.js";
|
|
@@ -11,13 +11,13 @@ import { InvalidObjectError } from "../error/index.js";
|
|
|
11
11
|
* @return {Record}
|
|
12
12
|
* */
|
|
13
13
|
export function toObjectValue(value, opt) {
|
|
14
|
-
|
|
14
|
+
const o = optCheck(opt);
|
|
15
15
|
if (isEmpty(value)) {
|
|
16
|
-
return _toEmpty(value, o, InvalidObjectError,
|
|
16
|
+
return _toEmpty(value, o, InvalidObjectError, "object");
|
|
17
17
|
}
|
|
18
18
|
let err;
|
|
19
19
|
switch (typeof value) {
|
|
20
|
-
case
|
|
20
|
+
case "object":
|
|
21
21
|
if (value instanceof Set) {
|
|
22
22
|
if (value.size === 1) {
|
|
23
23
|
return toObjectValue(Array.from(value.values())[0], o);
|
|
@@ -39,7 +39,7 @@ export function toObjectValue(value, opt) {
|
|
|
39
39
|
else if (isBareObject(value)) {
|
|
40
40
|
const keys = [];
|
|
41
41
|
for (const [k, v] of Object.entries(value)) {
|
|
42
|
-
if (typeof k !==
|
|
42
|
+
if (typeof k !== "symbol" && typeof v !== "function") {
|
|
43
43
|
keys.push(k);
|
|
44
44
|
}
|
|
45
45
|
}
|
|
@@ -47,13 +47,13 @@ export function toObjectValue(value, opt) {
|
|
|
47
47
|
if (o.zeroLength) {
|
|
48
48
|
return {};
|
|
49
49
|
}
|
|
50
|
-
return _toEmpty(value, o, InvalidObjectError,
|
|
50
|
+
return _toEmpty(value, o, InvalidObjectError, "object");
|
|
51
51
|
}
|
|
52
52
|
if (typeof o.keyFn !== "function" && typeof o.itemFn !== "function") {
|
|
53
53
|
return value;
|
|
54
54
|
}
|
|
55
55
|
// value item
|
|
56
|
-
|
|
56
|
+
const o2 = { ...o };
|
|
57
57
|
delete o2.nullable;
|
|
58
58
|
o2.nullable = o2.itemNullable;
|
|
59
59
|
const o2Field = o2.field;
|
|
@@ -65,32 +65,32 @@ export function toObjectValue(value, opt) {
|
|
|
65
65
|
delete o3.field;
|
|
66
66
|
const cloned = { ...value };
|
|
67
67
|
// clear existing object
|
|
68
|
-
keys
|
|
69
|
-
.forEach(k => {
|
|
68
|
+
keys.forEach((k) => {
|
|
70
69
|
try {
|
|
71
70
|
delete value[k];
|
|
72
71
|
}
|
|
73
|
-
catch (
|
|
72
|
+
catch (_e) {
|
|
73
|
+
// nothing
|
|
74
74
|
}
|
|
75
75
|
});
|
|
76
76
|
let index = -1;
|
|
77
|
-
keys.forEach(k => {
|
|
77
|
+
keys.forEach((k) => {
|
|
78
78
|
index++;
|
|
79
79
|
let newKey;
|
|
80
80
|
let next = true;
|
|
81
|
-
if (typeof o.keyFn ===
|
|
81
|
+
if (typeof o.keyFn === "function") {
|
|
82
82
|
o3.field = o3Field;
|
|
83
83
|
optField(o3, `(k:${index})`);
|
|
84
|
-
newKey = _toRun(() => o.keyFn(k, o3), o3,
|
|
84
|
+
newKey = _toRun(() => o.keyFn(k, o3), o3, "key");
|
|
85
85
|
if (isEmpty(newKey)) {
|
|
86
86
|
next = false;
|
|
87
87
|
o3 = optAppend(o3, {
|
|
88
|
-
issue:
|
|
89
|
-
expected:
|
|
90
|
-
type:
|
|
88
|
+
issue: "invalid",
|
|
89
|
+
expected: "boolean",
|
|
90
|
+
type: "string",
|
|
91
91
|
value,
|
|
92
92
|
});
|
|
93
|
-
err = new InvalidValueError(
|
|
93
|
+
err = new InvalidValueError("Invalid boolean like for text", o);
|
|
94
94
|
if (!o.silent) {
|
|
95
95
|
throw err;
|
|
96
96
|
}
|
|
@@ -104,15 +104,16 @@ export function toObjectValue(value, opt) {
|
|
|
104
104
|
}
|
|
105
105
|
if (next) {
|
|
106
106
|
let newValue = cloned[k];
|
|
107
|
-
if (typeof o.valueFn ===
|
|
107
|
+
if (typeof o.valueFn === "function") {
|
|
108
108
|
o2.field = o2Field;
|
|
109
109
|
optField(o2, newKey);
|
|
110
|
-
newValue = _toRun(() => o.itemFn(k, o2), o2,
|
|
110
|
+
newValue = _toRun(() => o.itemFn(k, o2), o2, "item");
|
|
111
111
|
if (!o.ignoreEmptyItems || !isEmpty(newValue)) {
|
|
112
112
|
try {
|
|
113
113
|
value[newKey] = newValue;
|
|
114
114
|
}
|
|
115
|
-
catch (
|
|
115
|
+
catch (_e) {
|
|
116
|
+
// nothing
|
|
116
117
|
}
|
|
117
118
|
}
|
|
118
119
|
}
|
|
@@ -120,7 +121,8 @@ export function toObjectValue(value, opt) {
|
|
|
120
121
|
try {
|
|
121
122
|
value[newKey] = newValue;
|
|
122
123
|
}
|
|
123
|
-
catch (
|
|
124
|
+
catch (_e) {
|
|
125
|
+
// nothing
|
|
124
126
|
}
|
|
125
127
|
}
|
|
126
128
|
}
|
|
@@ -129,8 +131,8 @@ export function toObjectValue(value, opt) {
|
|
|
129
131
|
}
|
|
130
132
|
// other objects, don't toch
|
|
131
133
|
return value;
|
|
132
|
-
case
|
|
133
|
-
return toObjectValue(_toRun(value, o,
|
|
134
|
+
case "function":
|
|
135
|
+
return toObjectValue(_toRun(value, o, "function"), o);
|
|
134
136
|
}
|
|
135
|
-
return _toElse(value, o, InvalidObjectError,
|
|
137
|
+
return _toElse(value, o, InvalidObjectError, "object");
|
|
136
138
|
}
|
package/dist/to/to-set-value.js
CHANGED
|
@@ -11,9 +11,9 @@ import { InvalidSetError } from "../error/index.js";
|
|
|
11
11
|
* @return {Set}
|
|
12
12
|
* */
|
|
13
13
|
export function toSetValue(value, opt) {
|
|
14
|
-
|
|
14
|
+
const o = optCheck(opt);
|
|
15
15
|
if (isEmpty(value)) {
|
|
16
|
-
return _toEmpty(value, o, InvalidSetError,
|
|
16
|
+
return _toEmpty(value, o, InvalidSetError, "array");
|
|
17
17
|
}
|
|
18
18
|
switch (typeof value) {
|
|
19
19
|
case "string":
|
|
@@ -21,13 +21,13 @@ export function toSetValue(value, opt) {
|
|
|
21
21
|
case "number":
|
|
22
22
|
case "bigint":
|
|
23
23
|
return toSetValue([value], o);
|
|
24
|
-
case
|
|
24
|
+
case "object":
|
|
25
25
|
if (value instanceof Set) {
|
|
26
26
|
if (value.size < 1) {
|
|
27
27
|
if (o.zeroLength) {
|
|
28
28
|
return value;
|
|
29
29
|
}
|
|
30
|
-
return _toEmpty(value, o, InvalidSetError,
|
|
30
|
+
return _toEmpty(value, o, InvalidSetError, "array");
|
|
31
31
|
}
|
|
32
32
|
if (typeof o.itemFn !== "function" || value.size < 1) {
|
|
33
33
|
return value;
|
|
@@ -36,7 +36,7 @@ export function toSetValue(value, opt) {
|
|
|
36
36
|
value.clear();
|
|
37
37
|
const producedArr = toArrayValue(clonedArr, o);
|
|
38
38
|
if (Array.isArray(producedArr)) {
|
|
39
|
-
producedArr.forEach(item => value.add(item));
|
|
39
|
+
producedArr.forEach((item) => value.add(item));
|
|
40
40
|
}
|
|
41
41
|
return value;
|
|
42
42
|
}
|
|
@@ -47,8 +47,8 @@ export function toSetValue(value, opt) {
|
|
|
47
47
|
return new Set([...value]);
|
|
48
48
|
}
|
|
49
49
|
break;
|
|
50
|
-
case
|
|
51
|
-
return toSetValue(_toRun(value, o,
|
|
50
|
+
case "function":
|
|
51
|
+
return toSetValue(_toRun(value, o, "function"), o);
|
|
52
52
|
}
|
|
53
|
-
return _toElse(value, o, InvalidSetError,
|
|
53
|
+
return _toElse(value, o, InvalidSetError, "array");
|
|
54
54
|
}
|