typia 6.5.1 → 6.5.3-dev.20240720
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/lib/CamelCase.d.ts +8 -14
- package/lib/PascalCase.d.ts +7 -14
- package/lib/Primitive.d.ts +6 -13
- package/lib/Resolved.d.ts +5 -12
- package/lib/SnakeCase.d.ts +4 -7
- package/lib/factories/internal/metadata/iterate_metadata_native.js +11 -0
- package/lib/factories/internal/metadata/iterate_metadata_native.js.map +1 -1
- package/lib/functional/$clone.js +3 -3
- package/lib/functional/$clone.js.map +1 -1
- package/lib/functional/_clone.mjs +3 -3
- package/lib/functional/_clone.mjs.map +1 -1
- package/lib/programmers/RandomProgrammer.js +5 -0
- package/lib/programmers/RandomProgrammer.js.map +1 -1
- package/lib/programmers/misc/MiscCloneProgrammer.js +2 -1
- package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
- package/lib/typings/Equal.d.ts +15 -0
- package/lib/typings/Equal.js +3 -0
- package/lib/typings/Equal.js.map +1 -0
- package/lib/typings/IsTuple.d.ts +5 -0
- package/lib/typings/IsTuple.js +3 -0
- package/lib/typings/IsTuple.js.map +1 -0
- package/lib/typings/NativeClass.d.ts +1 -0
- package/lib/typings/NativeClass.js +3 -0
- package/lib/typings/NativeClass.js.map +1 -0
- package/lib/typings/ValueOf.d.ts +6 -0
- package/lib/typings/ValueOf.js +3 -0
- package/lib/typings/ValueOf.js.map +1 -0
- package/lib/utils/NamingConvention/NamingConvention.d.ts +2 -2
- package/lib/utils/NamingConvention/NamingConvention.js +53 -72
- package/lib/utils/NamingConvention/NamingConvention.js.map +1 -1
- package/lib/utils/NamingConvention/NamingConvention.mjs +42 -56
- package/lib/utils/NamingConvention/NamingConvention.mjs.map +1 -1
- package/lib/utils/StringUtil/StringUtil.js +1 -1
- package/lib/utils/StringUtil/StringUtil.js.map +1 -1
- package/lib/utils/StringUtil/StringUtil.mjs +1 -1
- package/lib/utils/StringUtil/StringUtil.mjs.map +1 -1
- package/package.json +2 -2
- package/src/CamelCase.ts +20 -66
- package/src/PascalCase.ts +16 -66
- package/src/Primitive.ts +12 -56
- package/src/Resolved.ts +6 -51
- package/src/SnakeCase.ts +5 -40
- package/src/factories/internal/metadata/iterate_metadata_native.ts +11 -0
- package/src/functional/$clone.ts +3 -3
- package/src/programmers/RandomProgrammer.ts +8 -0
- package/src/programmers/misc/MiscCloneProgrammer.ts +2 -1
- package/src/typings/Equal.ts +18 -0
- package/src/typings/IsTuple.ts +9 -0
- package/src/typings/NativeClass.ts +23 -0
- package/src/typings/ValueOf.ts +20 -0
- package/src/utils/NamingConvention/NamingConvention.ts +46 -43
- package/src/utils/StringUtil/StringUtil.ts +1 -1
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type ValueOf<Instance> = IsValueOf<Instance, Boolean> extends true ? boolean : IsValueOf<Instance, Number> extends true ? number : IsValueOf<Instance, String> extends true ? string : Instance;
|
|
2
|
+
type IsValueOf<Instance, Object extends IValueOf<any>> = Instance extends Object ? Object extends IValueOf<infer Primitive> ? Instance extends Primitive ? false : true : false : false;
|
|
3
|
+
interface IValueOf<T> {
|
|
4
|
+
valueOf(): T;
|
|
5
|
+
}
|
|
6
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ValueOf.js","sourceRoot":"","sources":["../../src/typings/ValueOf.ts"],"names":[],"mappings":""}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export declare function snake(str: string): string;
|
|
2
|
-
export declare
|
|
3
|
-
export declare
|
|
2
|
+
export declare const camel: (str: string) => string;
|
|
3
|
+
export declare const pascal: (str: string) => string;
|
|
@@ -1,26 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
3
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
4
|
-
if (!m) return o;
|
|
5
|
-
var i = m.call(o), r, ar = [], e;
|
|
6
|
-
try {
|
|
7
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
8
|
-
}
|
|
9
|
-
catch (error) { e = { error: error }; }
|
|
10
|
-
finally {
|
|
11
|
-
try {
|
|
12
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
13
|
-
}
|
|
14
|
-
finally { if (e) throw e.error; }
|
|
15
|
-
}
|
|
16
|
-
return ar;
|
|
17
|
-
};
|
|
18
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.pascal = exports.camel = void 0;
|
|
19
4
|
exports.snake = snake;
|
|
20
|
-
exports.camel = camel;
|
|
21
|
-
exports.pascal = pascal;
|
|
22
5
|
var StringUtil_1 = require("../StringUtil");
|
|
23
6
|
function snake(str) {
|
|
7
|
+
if (str.length === 0)
|
|
8
|
+
return str;
|
|
9
|
+
// PREFIX
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
11
|
+
var prefix = "";
|
|
12
|
+
for (var i = 0; i < str.length; i++) {
|
|
13
|
+
if (str[i] === "_")
|
|
14
|
+
prefix += "_";
|
|
15
|
+
else
|
|
16
|
+
break;
|
|
17
|
+
}
|
|
18
|
+
if (prefix.length !== 0)
|
|
19
|
+
str = str.substring(prefix.length);
|
|
20
|
+
var out = function (s) { return "".concat(prefix).concat(s); };
|
|
21
|
+
// SNAKE CASE
|
|
22
|
+
var items = str.split("_");
|
|
23
|
+
if (items.length > 1)
|
|
24
|
+
return out(items.map(function (s) { return s.toLowerCase(); }).join("_"));
|
|
25
|
+
// CAMEL OR PASCAL CASE
|
|
24
26
|
var indexes = [];
|
|
25
27
|
for (var i = 0; i < str.length; i++) {
|
|
26
28
|
var code = str.charCodeAt(i);
|
|
@@ -45,29 +47,33 @@ function snake(str) {
|
|
|
45
47
|
ret += "_";
|
|
46
48
|
}
|
|
47
49
|
ret += str.substring(indexes[indexes.length - 1]).toLowerCase();
|
|
48
|
-
return ret;
|
|
50
|
+
return out(ret);
|
|
49
51
|
}
|
|
50
|
-
function
|
|
51
|
-
return unsnake(
|
|
52
|
-
|
|
53
|
-
return str
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
52
|
+
var camel = function (str) {
|
|
53
|
+
return unsnake({
|
|
54
|
+
plain: function (str) {
|
|
55
|
+
return str.length
|
|
56
|
+
? str === str.toUpperCase()
|
|
57
|
+
? str.toLocaleLowerCase()
|
|
58
|
+
: "".concat(str[0].toLowerCase()).concat(str.substring(1))
|
|
59
|
+
: str;
|
|
60
|
+
},
|
|
61
|
+
snake: function (str, i) {
|
|
62
|
+
return i === 0 ? str.toLowerCase() : StringUtil_1.StringUtil.capitalize(str.toLowerCase());
|
|
63
|
+
},
|
|
58
64
|
})(str);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
return str;
|
|
65
|
+
};
|
|
66
|
+
exports.camel = camel;
|
|
67
|
+
var pascal = function (str) {
|
|
68
|
+
return unsnake({
|
|
69
|
+
plain: function (str) {
|
|
70
|
+
return str.length ? "".concat(str[0].toUpperCase()).concat(str.substring(1)) : str;
|
|
71
|
+
},
|
|
72
|
+
snake: StringUtil_1.StringUtil.capitalize,
|
|
68
73
|
})(str);
|
|
69
|
-
}
|
|
70
|
-
|
|
74
|
+
};
|
|
75
|
+
exports.pascal = pascal;
|
|
76
|
+
var unsnake = function (props) {
|
|
71
77
|
return function (str) {
|
|
72
78
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
73
79
|
var prefix = "";
|
|
@@ -79,40 +85,15 @@ var unsnake = function (escaper) {
|
|
|
79
85
|
}
|
|
80
86
|
if (prefix.length !== 0)
|
|
81
87
|
str = str.substring(prefix.length);
|
|
82
|
-
var
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
++last_1[1];
|
|
92
|
-
}
|
|
93
|
-
if (indexes.length === 0)
|
|
94
|
-
return prefix + escaper(str);
|
|
95
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
96
|
-
var ret = "";
|
|
97
|
-
for (var i = 0; i < indexes.length; i++) {
|
|
98
|
-
var _a = __read(indexes[i], 1), first = _a[0];
|
|
99
|
-
if (i === 0)
|
|
100
|
-
if (first === 0)
|
|
101
|
-
ret += "_";
|
|
102
|
-
else
|
|
103
|
-
ret += str.substring(0, first);
|
|
104
|
-
else {
|
|
105
|
-
var _b = __read(indexes[i - 1], 2), prevFirst = _b[0], prevLength = _b[1];
|
|
106
|
-
var piece_1 = str.substring(prevFirst + prevLength, first);
|
|
107
|
-
if (piece_1.length)
|
|
108
|
-
ret += StringUtil_1.StringUtil.capitalize(piece_1);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
var last = indexes[indexes.length - 1];
|
|
112
|
-
var piece = str.substring(last[0] + last[1]);
|
|
113
|
-
if (last.length)
|
|
114
|
-
ret += StringUtil_1.StringUtil.capitalize(piece);
|
|
115
|
-
return prefix + escaper(ret);
|
|
88
|
+
var out = function (s) { return "".concat(prefix).concat(s); };
|
|
89
|
+
if (str.length === 0)
|
|
90
|
+
return out("");
|
|
91
|
+
var items = str.split("_").filter(function (s) { return s.length !== 0; });
|
|
92
|
+
return items.length === 0
|
|
93
|
+
? out("")
|
|
94
|
+
: items.length === 1
|
|
95
|
+
? out(props.plain(items[0]))
|
|
96
|
+
: out(items.map(props.snake).join(""));
|
|
116
97
|
};
|
|
117
98
|
};
|
|
118
99
|
//# sourceMappingURL=NamingConvention.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NamingConvention.js","sourceRoot":"","sources":["../../../src/utils/NamingConvention/NamingConvention.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"NamingConvention.js","sourceRoot":"","sources":["../../../src/utils/NamingConvention/NamingConvention.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,25 @@
|
|
|
1
1
|
import { capitalize } from '../StringUtil/StringUtil.mjs';
|
|
2
2
|
|
|
3
3
|
function snake(str) {
|
|
4
|
+
if (str.length === 0)
|
|
5
|
+
return str;
|
|
6
|
+
// PREFIX
|
|
7
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
8
|
+
let prefix = "";
|
|
9
|
+
for (let i = 0; i < str.length; i++) {
|
|
10
|
+
if (str[i] === "_")
|
|
11
|
+
prefix += "_";
|
|
12
|
+
else
|
|
13
|
+
break;
|
|
14
|
+
}
|
|
15
|
+
if (prefix.length !== 0)
|
|
16
|
+
str = str.substring(prefix.length);
|
|
17
|
+
const out = (s) => `${prefix}${s}`;
|
|
18
|
+
// SNAKE CASE
|
|
19
|
+
const items = str.split("_");
|
|
20
|
+
if (items.length > 1)
|
|
21
|
+
return out(items.map((s) => s.toLowerCase()).join("_"));
|
|
22
|
+
// CAMEL OR PASCAL CASE
|
|
4
23
|
const indexes = [];
|
|
5
24
|
for (let i = 0; i < str.length; i++) {
|
|
6
25
|
const code = str.charCodeAt(i);
|
|
@@ -25,29 +44,21 @@ function snake(str) {
|
|
|
25
44
|
ret += "_";
|
|
26
45
|
}
|
|
27
46
|
ret += str.substring(indexes[indexes.length - 1]).toLowerCase();
|
|
28
|
-
return ret;
|
|
29
|
-
}
|
|
30
|
-
function camel(str) {
|
|
31
|
-
return unsnake((str) => {
|
|
32
|
-
if (str.length === 0)
|
|
33
|
-
return str;
|
|
34
|
-
else if (str[0] === str[0].toUpperCase())
|
|
35
|
-
return str[0].toLowerCase() + str.substring(1);
|
|
36
|
-
else
|
|
37
|
-
return str;
|
|
38
|
-
})(str);
|
|
47
|
+
return out(ret);
|
|
39
48
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}
|
|
50
|
-
|
|
49
|
+
const camel = (str) => unsnake({
|
|
50
|
+
plain: (str) => str.length
|
|
51
|
+
? str === str.toUpperCase()
|
|
52
|
+
? str.toLocaleLowerCase()
|
|
53
|
+
: `${str[0].toLowerCase()}${str.substring(1)}`
|
|
54
|
+
: str,
|
|
55
|
+
snake: (str, i) => i === 0 ? str.toLowerCase() : capitalize(str.toLowerCase()),
|
|
56
|
+
})(str);
|
|
57
|
+
const pascal = (str) => unsnake({
|
|
58
|
+
plain: (str) => str.length ? `${str[0].toUpperCase()}${str.substring(1)}` : str,
|
|
59
|
+
snake: capitalize,
|
|
60
|
+
})(str);
|
|
61
|
+
const unsnake = (props) => (str) => {
|
|
51
62
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
52
63
|
let prefix = "";
|
|
53
64
|
for (let i = 0; i < str.length; i++) {
|
|
@@ -58,40 +69,15 @@ const unsnake = (escaper) => (str) => {
|
|
|
58
69
|
}
|
|
59
70
|
if (prefix.length !== 0)
|
|
60
71
|
str = str.substring(prefix.length);
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
++last[1];
|
|
71
|
-
}
|
|
72
|
-
if (indexes.length === 0)
|
|
73
|
-
return prefix + escaper(str);
|
|
74
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
75
|
-
let ret = "";
|
|
76
|
-
for (let i = 0; i < indexes.length; i++) {
|
|
77
|
-
const [first] = indexes[i];
|
|
78
|
-
if (i === 0)
|
|
79
|
-
if (first === 0)
|
|
80
|
-
ret += "_";
|
|
81
|
-
else
|
|
82
|
-
ret += str.substring(0, first);
|
|
83
|
-
else {
|
|
84
|
-
const [prevFirst, prevLength] = indexes[i - 1];
|
|
85
|
-
const piece = str.substring(prevFirst + prevLength, first);
|
|
86
|
-
if (piece.length)
|
|
87
|
-
ret += capitalize(piece);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
const last = indexes[indexes.length - 1];
|
|
91
|
-
const piece = str.substring(last[0] + last[1]);
|
|
92
|
-
if (last.length)
|
|
93
|
-
ret += capitalize(piece);
|
|
94
|
-
return prefix + escaper(ret);
|
|
72
|
+
const out = (s) => `${prefix}${s}`;
|
|
73
|
+
if (str.length === 0)
|
|
74
|
+
return out("");
|
|
75
|
+
const items = str.split("_").filter((s) => s.length !== 0);
|
|
76
|
+
return items.length === 0
|
|
77
|
+
? out("")
|
|
78
|
+
: items.length === 1
|
|
79
|
+
? out(props.plain(items[0]))
|
|
80
|
+
: out(items.map(props.snake).join(""));
|
|
95
81
|
};
|
|
96
82
|
|
|
97
83
|
export { camel, pascal, snake };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NamingConvention.mjs","sources":["../../../src/utils/NamingConvention/NamingConvention.ts"],"sourcesContent":[null],"names":["StringUtil.capitalize"],"mappings":";;AAEM,SAAU,KAAK,CAAC,GAAW,EAAA;
|
|
1
|
+
{"version":3,"file":"NamingConvention.mjs","sources":["../../../src/utils/NamingConvention/NamingConvention.ts"],"sourcesContent":[null],"names":["StringUtil.capitalize"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.escapeDuplicate = exports.capitalize = void 0;
|
|
4
4
|
var capitalize = function (str) {
|
|
5
|
-
return str.length ? str[0].toUpperCase() + str.slice(1) : str;
|
|
5
|
+
return str.length ? str[0].toUpperCase() + str.slice(1).toLowerCase() : str;
|
|
6
6
|
};
|
|
7
7
|
exports.capitalize = capitalize;
|
|
8
8
|
var escapeDuplicate = function (keep) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StringUtil.js","sourceRoot":"","sources":["../../../src/utils/StringUtil/StringUtil.ts"],"names":[],"mappings":";;;AAAO,IAAM,UAAU,GAAG,UAAC,GAAW;IACpC,OAAA,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;
|
|
1
|
+
{"version":3,"file":"StringUtil.js","sourceRoot":"","sources":["../../../src/utils/StringUtil/StringUtil.ts"],"names":[],"mappings":";;;AAAO,IAAM,UAAU,GAAG,UAAC,GAAW;IACpC,OAAA,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG;AAArE,CAAqE,CAAC;AAD3D,QAAA,UAAU,cACiD;AAEjE,IAAM,eAAe,GAC1B,UAAC,IAAc;IACf,OAAA,UAAC,MAAc;QACb,OAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAA,uBAAe,EAAC,IAAI,CAAC,CAAC,WAAI,MAAM,CAAE,CAAC,CAAC,CAAC,CAAC,MAAM;IAApE,CAAoE;AADtE,CACsE,CAAC;AAH5D,QAAA,eAAe,mBAG6C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StringUtil.mjs","sources":["../../../src/utils/StringUtil/StringUtil.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"StringUtil.mjs","sources":["../../../src/utils/StringUtil/StringUtil.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAa,MAAA,UAAU,GAAG,CAAC,GAAW,KACpC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "typia",
|
|
3
|
-
"version": "6.5.
|
|
3
|
+
"version": "6.5.3-dev.20240720",
|
|
4
4
|
"description": "Superfast runtime validators with only one line",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"typings": "lib/index.d.ts",
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
},
|
|
68
68
|
"homepage": "https://typia.io",
|
|
69
69
|
"dependencies": {
|
|
70
|
-
"@samchon/openapi": "^0.4.
|
|
70
|
+
"@samchon/openapi": "^0.4.2",
|
|
71
71
|
"commander": "^10.0.0",
|
|
72
72
|
"comment-json": "^4.2.3",
|
|
73
73
|
"inquirer": "^8.2.5",
|
package/src/CamelCase.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
import { Equal } from "./typings/Equal";
|
|
2
|
+
import { IsTuple } from "./typings/IsTuple";
|
|
3
|
+
import { NativeClass } from "./typings/NativeClass";
|
|
4
|
+
import { ValueOf } from "./typings/ValueOf";
|
|
5
|
+
|
|
1
6
|
/**
|
|
2
7
|
* Camel case type.
|
|
3
8
|
*
|
|
@@ -11,11 +16,6 @@
|
|
|
11
16
|
export type CamelCase<T> =
|
|
12
17
|
Equal<T, CamelizeMain<T>> extends true ? T : CamelizeMain<T>;
|
|
13
18
|
|
|
14
|
-
/* -----------------------------------------------------------
|
|
15
|
-
OBJECT CONVERSION
|
|
16
|
-
----------------------------------------------------------- */
|
|
17
|
-
type Equal<X, Y> = X extends Y ? (Y extends X ? true : false) : false;
|
|
18
|
-
|
|
19
19
|
type CamelizeMain<T> = T extends [never]
|
|
20
20
|
? never // special trick for (jsonable | null) type
|
|
21
21
|
: T extends { valueOf(): boolean | bigint | number | string }
|
|
@@ -37,24 +37,7 @@ type CamelizeObject<T extends object> =
|
|
|
37
37
|
? Map<CamelizeMain<K>, CamelizeMain<V>>
|
|
38
38
|
: T extends WeakSet<any> | WeakMap<any, any>
|
|
39
39
|
? never
|
|
40
|
-
: T extends
|
|
41
|
-
| Date
|
|
42
|
-
| Uint8Array
|
|
43
|
-
| Uint8ClampedArray
|
|
44
|
-
| Uint16Array
|
|
45
|
-
| Uint32Array
|
|
46
|
-
| BigUint64Array
|
|
47
|
-
| Int8Array
|
|
48
|
-
| Int16Array
|
|
49
|
-
| Int32Array
|
|
50
|
-
| BigInt64Array
|
|
51
|
-
| Float32Array
|
|
52
|
-
| Float64Array
|
|
53
|
-
| ArrayBuffer
|
|
54
|
-
| SharedArrayBuffer
|
|
55
|
-
| DataView
|
|
56
|
-
| Blob
|
|
57
|
-
| File
|
|
40
|
+
: T extends NativeClass
|
|
58
41
|
? T
|
|
59
42
|
: {
|
|
60
43
|
[Key in keyof T as CamelizeString<Key & string>]: CamelizeMain<
|
|
@@ -62,18 +45,6 @@ type CamelizeObject<T extends object> =
|
|
|
62
45
|
>;
|
|
63
46
|
};
|
|
64
47
|
|
|
65
|
-
/* -----------------------------------------------------------
|
|
66
|
-
SPECIAL CASES
|
|
67
|
-
----------------------------------------------------------- */
|
|
68
|
-
type IsTuple<T extends readonly any[] | { length: number }> = [T] extends [
|
|
69
|
-
never,
|
|
70
|
-
]
|
|
71
|
-
? false
|
|
72
|
-
: T extends readonly any[]
|
|
73
|
-
? number extends T["length"]
|
|
74
|
-
? false
|
|
75
|
-
: true
|
|
76
|
-
: false;
|
|
77
48
|
type CamelizeTuple<T extends readonly any[]> = T extends []
|
|
78
49
|
? []
|
|
79
50
|
: T extends [infer F]
|
|
@@ -86,36 +57,19 @@ type CamelizeTuple<T extends readonly any[]> = T extends []
|
|
|
86
57
|
? [CamelizeMain<F>?, ...CamelizeTuple<Rest>]
|
|
87
58
|
: [];
|
|
88
59
|
|
|
89
|
-
type ValueOf<Instance> =
|
|
90
|
-
IsValueOf<Instance, Boolean> extends true
|
|
91
|
-
? boolean
|
|
92
|
-
: IsValueOf<Instance, Number> extends true
|
|
93
|
-
? number
|
|
94
|
-
: IsValueOf<Instance, String> extends true
|
|
95
|
-
? string
|
|
96
|
-
: Instance;
|
|
97
|
-
|
|
98
|
-
type IsValueOf<Instance, Object extends IValueOf<any>> = Instance extends Object
|
|
99
|
-
? Object extends IValueOf<infer Primitive>
|
|
100
|
-
? Instance extends Primitive
|
|
101
|
-
? false
|
|
102
|
-
: true // not Primitive, but Object
|
|
103
|
-
: false // cannot be
|
|
104
|
-
: false;
|
|
105
|
-
|
|
106
|
-
interface IValueOf<T> {
|
|
107
|
-
valueOf(): T;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
/* -----------------------------------------------------------
|
|
111
|
-
STRING CONVERTER
|
|
112
|
-
----------------------------------------------------------- */
|
|
113
60
|
type CamelizeString<Key extends string> = Key extends `_${infer R}`
|
|
114
61
|
? `_${CamelizeString<R>}`
|
|
115
|
-
: Key extends `${infer
|
|
116
|
-
?
|
|
117
|
-
: Key
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
62
|
+
: Key extends `${infer _F}_${infer _R}`
|
|
63
|
+
? CamelizeSnakeString<Key>
|
|
64
|
+
: Key extends Uppercase<Key>
|
|
65
|
+
? Lowercase<Key>
|
|
66
|
+
: CamelizePascalString<Key>;
|
|
67
|
+
type CamelizePascalString<Key extends string> =
|
|
68
|
+
Key extends `${infer F}${infer R}` ? `${Lowercase<F>}${R}` : Key;
|
|
69
|
+
type CamelizeSnakeString<Key extends string> = Key extends `_${infer R}`
|
|
70
|
+
? CamelizeSnakeString<R>
|
|
71
|
+
: Key extends `${infer F}_${infer M}${infer R}`
|
|
72
|
+
? M extends "_"
|
|
73
|
+
? CamelizeSnakeString<`${F}_${R}`>
|
|
74
|
+
: `${Lowercase<F>}${Uppercase<M>}${CamelizeSnakeString<R>}`
|
|
75
|
+
: Lowercase<Key>;
|
package/src/PascalCase.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
import { Equal } from "./typings/Equal";
|
|
2
|
+
import { IsTuple } from "./typings/IsTuple";
|
|
3
|
+
import { NativeClass } from "./typings/NativeClass";
|
|
4
|
+
import { ValueOf } from "./typings/ValueOf";
|
|
5
|
+
|
|
1
6
|
/**
|
|
2
7
|
* Pascal case type.
|
|
3
8
|
*
|
|
@@ -11,11 +16,6 @@
|
|
|
11
16
|
export type PascalCase<T> =
|
|
12
17
|
Equal<T, PascalizeMain<T>> extends true ? T : PascalizeMain<T>;
|
|
13
18
|
|
|
14
|
-
/* -----------------------------------------------------------
|
|
15
|
-
OBJECT CONVERSION
|
|
16
|
-
----------------------------------------------------------- */
|
|
17
|
-
type Equal<X, Y> = X extends Y ? (Y extends X ? true : false) : false;
|
|
18
|
-
|
|
19
19
|
type PascalizeMain<T> = T extends [never]
|
|
20
20
|
? never // special trick for (jsonable | null) type
|
|
21
21
|
: T extends { valueOf(): boolean | bigint | number | string }
|
|
@@ -37,24 +37,7 @@ type PascalizeObject<T extends object> =
|
|
|
37
37
|
? Map<PascalizeMain<K>, PascalizeMain<V>>
|
|
38
38
|
: T extends WeakSet<any> | WeakMap<any, any>
|
|
39
39
|
? never
|
|
40
|
-
: T extends
|
|
41
|
-
| Date
|
|
42
|
-
| Uint8Array
|
|
43
|
-
| Uint8ClampedArray
|
|
44
|
-
| Uint16Array
|
|
45
|
-
| Uint32Array
|
|
46
|
-
| BigUint64Array
|
|
47
|
-
| Int8Array
|
|
48
|
-
| Int16Array
|
|
49
|
-
| Int32Array
|
|
50
|
-
| BigInt64Array
|
|
51
|
-
| Float32Array
|
|
52
|
-
| Float64Array
|
|
53
|
-
| ArrayBuffer
|
|
54
|
-
| SharedArrayBuffer
|
|
55
|
-
| DataView
|
|
56
|
-
| Blob
|
|
57
|
-
| File
|
|
40
|
+
: T extends NativeClass
|
|
58
41
|
? T
|
|
59
42
|
: {
|
|
60
43
|
[Key in keyof T as PascalizeString<
|
|
@@ -62,18 +45,6 @@ type PascalizeObject<T extends object> =
|
|
|
62
45
|
>]: PascalizeMain<T[Key]>;
|
|
63
46
|
};
|
|
64
47
|
|
|
65
|
-
/* -----------------------------------------------------------
|
|
66
|
-
SPECIAL CASES
|
|
67
|
-
----------------------------------------------------------- */
|
|
68
|
-
type IsTuple<T extends readonly any[] | { length: number }> = [T] extends [
|
|
69
|
-
never,
|
|
70
|
-
]
|
|
71
|
-
? false
|
|
72
|
-
: T extends readonly any[]
|
|
73
|
-
? number extends T["length"]
|
|
74
|
-
? false
|
|
75
|
-
: true
|
|
76
|
-
: false;
|
|
77
48
|
type PascalizeTuple<T extends readonly any[]> = T extends []
|
|
78
49
|
? []
|
|
79
50
|
: T extends [infer F]
|
|
@@ -86,36 +57,15 @@ type PascalizeTuple<T extends readonly any[]> = T extends []
|
|
|
86
57
|
? [PascalizeMain<F>?, ...PascalizeTuple<Rest>]
|
|
87
58
|
: [];
|
|
88
59
|
|
|
89
|
-
type ValueOf<Instance> =
|
|
90
|
-
IsValueOf<Instance, Boolean> extends true
|
|
91
|
-
? boolean
|
|
92
|
-
: IsValueOf<Instance, Number> extends true
|
|
93
|
-
? number
|
|
94
|
-
: IsValueOf<Instance, String> extends true
|
|
95
|
-
? string
|
|
96
|
-
: Instance;
|
|
97
|
-
|
|
98
|
-
type IsValueOf<Instance, Object extends IValueOf<any>> = Instance extends Object
|
|
99
|
-
? Object extends IValueOf<infer Primitive>
|
|
100
|
-
? Instance extends Primitive
|
|
101
|
-
? false
|
|
102
|
-
: true // not Primitive, but Object
|
|
103
|
-
: false // cannot be
|
|
104
|
-
: false;
|
|
105
|
-
|
|
106
|
-
interface IValueOf<T> {
|
|
107
|
-
valueOf(): T;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
/* -----------------------------------------------------------
|
|
111
|
-
STRING CONVERTER
|
|
112
|
-
----------------------------------------------------------- */
|
|
113
60
|
type PascalizeString<Key extends string> = Key extends `_${infer R}`
|
|
114
61
|
? `_${PascalizeString<R>}`
|
|
115
|
-
: Key extends `${infer
|
|
116
|
-
?
|
|
117
|
-
: Key
|
|
118
|
-
type
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
62
|
+
: Key extends `${infer _F}_${infer _R}`
|
|
63
|
+
? PascalizeSnakeString<Key>
|
|
64
|
+
: Capitalize<Key>;
|
|
65
|
+
type PascalizeSnakeString<Key extends string> = Key extends `_${infer R}`
|
|
66
|
+
? PascalizeSnakeString<R>
|
|
67
|
+
: Key extends `${infer F}${infer M}_${infer R}`
|
|
68
|
+
? `${Uppercase<F>}${Lowercase<M>}${PascalizeSnakeString<R>}`
|
|
69
|
+
: Key extends `${infer F}${infer R}`
|
|
70
|
+
? `${Uppercase<F>}${Lowercase<R>}`
|
|
71
|
+
: Key;
|