typia 5.4.7 → 5.4.8-dev.20240209
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 +1 -1
- package/lib/PascalCase.d.ts +1 -1
- package/lib/utils/NamingConvention/NamingConvention.js +61 -50
- package/lib/utils/NamingConvention/NamingConvention.js.map +1 -1
- package/package.json +1 -1
- package/src/CamelCase.ts +3 -1
- package/src/PascalCase.ts +3 -1
- package/src/utils/NamingConvention/NamingConvention.ts +49 -40
package/lib/CamelCase.d.ts
CHANGED
|
@@ -27,6 +27,6 @@ type IsValueOf<Instance, Object extends IValueOf<any>> = Instance extends Object
|
|
|
27
27
|
interface IValueOf<T> {
|
|
28
28
|
valueOf(): T;
|
|
29
29
|
}
|
|
30
|
-
type CamelizeString<Key extends string> = Key extends `${infer F}${infer R}` ? `${Lowercase<F>}${CamelizeStringRepeatedly<R>}` : Key;
|
|
30
|
+
type CamelizeString<Key extends string> = Key extends `_${infer R}` ? `_${CamelizeString<R>}` : Key extends `${infer F}${infer R}` ? `${Lowercase<F>}${CamelizeStringRepeatedly<R>}` : Key;
|
|
31
31
|
type CamelizeStringRepeatedly<Key extends string> = Key extends `${infer F}_${infer R}` ? `${F}${Capitalize<CamelizeStringRepeatedly<R>>}` : Key;
|
|
32
32
|
export {};
|
package/lib/PascalCase.d.ts
CHANGED
|
@@ -27,6 +27,6 @@ type IsValueOf<Instance, Object extends IValueOf<any>> = Instance extends Object
|
|
|
27
27
|
interface IValueOf<T> {
|
|
28
28
|
valueOf(): T;
|
|
29
29
|
}
|
|
30
|
-
type PascalizeString<Key extends string> = Key extends `${infer F}${infer R}` ? `${Uppercase<F>}${PascalizeStringRepeatedly<R>}` : Key;
|
|
30
|
+
type PascalizeString<Key extends string> = Key extends `_${infer R}` ? `_${PascalizeString<R>}` : Key extends `${infer F}${infer R}` ? `${Uppercase<F>}${PascalizeStringRepeatedly<R>}` : Key;
|
|
31
31
|
type PascalizeStringRepeatedly<Key extends string> = Key extends `${infer F}_${infer R}` ? `${F}${Capitalize<PascalizeStringRepeatedly<R>>}` : Key;
|
|
32
32
|
export {};
|
|
@@ -47,62 +47,73 @@ function snake(str) {
|
|
|
47
47
|
}
|
|
48
48
|
exports.snake = snake;
|
|
49
49
|
function camel(str) {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
return str;
|
|
50
|
+
return unsnake(function (str) {
|
|
51
|
+
if (str.length === 0)
|
|
52
|
+
return str;
|
|
53
|
+
else if (str[0] === str[0].toUpperCase())
|
|
54
|
+
return str[0].toLowerCase() + str.substring(1);
|
|
55
|
+
else
|
|
56
|
+
return str;
|
|
57
|
+
})(str);
|
|
59
58
|
}
|
|
60
59
|
exports.camel = camel;
|
|
61
60
|
function pascal(str) {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
return str;
|
|
61
|
+
return unsnake(function (str) {
|
|
62
|
+
if (str.length === 0)
|
|
63
|
+
return str;
|
|
64
|
+
else if (str[0] === str[0].toLowerCase())
|
|
65
|
+
return str[0].toUpperCase() + str.substring(1);
|
|
66
|
+
else
|
|
67
|
+
return str;
|
|
68
|
+
})(str);
|
|
71
69
|
}
|
|
72
70
|
exports.pascal = pascal;
|
|
73
|
-
var
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
var
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
if (last_1 === undefined || last_1[0] + last_1[1] !== i)
|
|
81
|
-
indexes.push([i, 1]);
|
|
82
|
-
else
|
|
83
|
-
++last_1[1];
|
|
84
|
-
}
|
|
85
|
-
if (indexes.length === 0)
|
|
86
|
-
return str;
|
|
87
|
-
var ret = "";
|
|
88
|
-
for (var i = 0; i < indexes.length; i++) {
|
|
89
|
-
var _a = __read(indexes[i], 1), first = _a[0];
|
|
90
|
-
if (i === 0)
|
|
91
|
-
if (first === 0)
|
|
92
|
-
ret += "_";
|
|
71
|
+
var unsnake = function (escaper) {
|
|
72
|
+
return function (str) {
|
|
73
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
74
|
+
var prefix = "";
|
|
75
|
+
for (var i = 0; i < str.length; i++) {
|
|
76
|
+
if (str[i] === "_")
|
|
77
|
+
prefix += "_";
|
|
93
78
|
else
|
|
94
|
-
|
|
95
|
-
else {
|
|
96
|
-
var _b = __read(indexes[i - 1], 2), prevFirst = _b[0], prevLength = _b[1];
|
|
97
|
-
var piece_1 = str.substring(prevFirst + prevLength, first);
|
|
98
|
-
if (piece_1.length)
|
|
99
|
-
ret += StringUtil_1.StringUtil.capitalize(piece_1);
|
|
79
|
+
break;
|
|
100
80
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
81
|
+
if (prefix.length !== 0)
|
|
82
|
+
str = str.substring(prefix.length);
|
|
83
|
+
var indexes = [];
|
|
84
|
+
for (var i = 0; i < str.length; i++) {
|
|
85
|
+
var ch = str[i];
|
|
86
|
+
if (ch !== "_")
|
|
87
|
+
continue;
|
|
88
|
+
var last_1 = indexes[indexes.length - 1];
|
|
89
|
+
if (last_1 === undefined || last_1[0] + last_1[1] !== i)
|
|
90
|
+
indexes.push([i, 1]);
|
|
91
|
+
else
|
|
92
|
+
++last_1[1];
|
|
93
|
+
}
|
|
94
|
+
if (indexes.length === 0)
|
|
95
|
+
return prefix + escaper(str);
|
|
96
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
97
|
+
var ret = "";
|
|
98
|
+
for (var i = 0; i < indexes.length; i++) {
|
|
99
|
+
var _a = __read(indexes[i], 1), first = _a[0];
|
|
100
|
+
if (i === 0)
|
|
101
|
+
if (first === 0)
|
|
102
|
+
ret += "_";
|
|
103
|
+
else
|
|
104
|
+
ret += str.substring(0, first);
|
|
105
|
+
else {
|
|
106
|
+
var _b = __read(indexes[i - 1], 2), prevFirst = _b[0], prevLength = _b[1];
|
|
107
|
+
var piece_1 = str.substring(prevFirst + prevLength, first);
|
|
108
|
+
if (piece_1.length)
|
|
109
|
+
ret += StringUtil_1.StringUtil.capitalize(piece_1);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
var last = indexes[indexes.length - 1];
|
|
113
|
+
var piece = str.substring(last[0] + last[1]);
|
|
114
|
+
if (last.length)
|
|
115
|
+
ret += StringUtil_1.StringUtil.capitalize(piece);
|
|
116
|
+
return prefix + escaper(ret);
|
|
117
|
+
};
|
|
107
118
|
};
|
|
108
119
|
//# sourceMappingURL=NamingConvention.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NamingConvention.js","sourceRoot":"","sources":["../../../src/utils/NamingConvention/NamingConvention.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,4CAA2C;AAE3C,SAAgB,KAAK,CAAC,GAAW;IAC/B,IAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,IAAM,IAAI,GAAW,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACvC,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC;IACD,KAAK,IAAI,CAAC,GAAW,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QACpD,IAAM,GAAG,GAAW,OAAO,CAAC,CAAC,CAAE,CAAC;QAChC,IAAM,IAAI,GAAW,OAAO,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC;QACrC,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC;YAAE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC;IAEnD,IAAI,GAAG,GAAW,EAAE,CAAC;IACrB,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChD,IAAM,KAAK,GAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC;QACpD,IAAM,IAAI,GAAW,OAAO,CAAC,CAAC,CAAE,CAAC;QAEjC,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QAChD,GAAG,IAAI,GAAG,CAAC;IACb,CAAC;IACD,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACjE,OAAO,GAAG,CAAC;AACb,CAAC;AAxBD,sBAwBC;AAED,SAAgB,KAAK,CAAC,GAAW;IAC/B,
|
|
1
|
+
{"version":3,"file":"NamingConvention.js","sourceRoot":"","sources":["../../../src/utils/NamingConvention/NamingConvention.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/CamelCase.ts
CHANGED
|
@@ -107,7 +107,9 @@ interface IValueOf<T> {
|
|
|
107
107
|
/* -----------------------------------------------------------
|
|
108
108
|
STRING CONVERTER
|
|
109
109
|
----------------------------------------------------------- */
|
|
110
|
-
type CamelizeString<Key extends string> = Key extends
|
|
110
|
+
type CamelizeString<Key extends string> = Key extends `_${infer R}`
|
|
111
|
+
? `_${CamelizeString<R>}`
|
|
112
|
+
: Key extends `${infer F}${infer R}`
|
|
111
113
|
? `${Lowercase<F>}${CamelizeStringRepeatedly<R>}`
|
|
112
114
|
: Key;
|
|
113
115
|
type CamelizeStringRepeatedly<Key extends string> =
|
package/src/PascalCase.ts
CHANGED
|
@@ -107,7 +107,9 @@ interface IValueOf<T> {
|
|
|
107
107
|
/* -----------------------------------------------------------
|
|
108
108
|
STRING CONVERTER
|
|
109
109
|
----------------------------------------------------------- */
|
|
110
|
-
type PascalizeString<Key extends string> = Key extends
|
|
110
|
+
type PascalizeString<Key extends string> = Key extends `_${infer R}`
|
|
111
|
+
? `_${PascalizeString<R>}`
|
|
112
|
+
: Key extends `${infer F}${infer R}`
|
|
111
113
|
? `${Uppercase<F>}${PascalizeStringRepeatedly<R>}`
|
|
112
114
|
: Key;
|
|
113
115
|
type PascalizeStringRepeatedly<Key extends string> =
|
|
@@ -27,51 +27,60 @@ export function snake(str: string): string {
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
export function camel(str: string): string {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
else return str;
|
|
30
|
+
return unsnake((str: string) => {
|
|
31
|
+
if (str.length === 0) return str;
|
|
32
|
+
else if (str[0] === str[0]!.toUpperCase())
|
|
33
|
+
return str[0]!.toLowerCase() + str.substring(1);
|
|
34
|
+
else return str;
|
|
35
|
+
})(str);
|
|
37
36
|
}
|
|
38
37
|
|
|
39
38
|
export function pascal(str: string): string {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
else return str;
|
|
39
|
+
return unsnake((str: string) => {
|
|
40
|
+
if (str.length === 0) return str;
|
|
41
|
+
else if (str[0] === str[0]!.toLowerCase())
|
|
42
|
+
return str[0]!.toUpperCase() + str.substring(1);
|
|
43
|
+
else return str;
|
|
44
|
+
})(str);
|
|
47
45
|
}
|
|
48
46
|
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
47
|
+
const unsnake =
|
|
48
|
+
(escaper: (str: string) => string) =>
|
|
49
|
+
(str: string): string => {
|
|
50
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
51
|
+
let prefix: string = "";
|
|
52
|
+
for (let i: number = 0; i < str.length; i++) {
|
|
53
|
+
if (str[i] === "_") prefix += "_";
|
|
54
|
+
else break;
|
|
55
|
+
}
|
|
56
|
+
if (prefix.length !== 0) str = str.substring(prefix.length);
|
|
54
57
|
|
|
55
|
-
const
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
if (indexes.length === 0) return str;
|
|
58
|
+
const indexes: [number, number][] = [];
|
|
59
|
+
for (let i: number = 0; i < str.length; i++) {
|
|
60
|
+
const ch: string = str[i]!;
|
|
61
|
+
if (ch !== "_") continue;
|
|
60
62
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
if (i === 0)
|
|
65
|
-
if (first === 0) ret += "_";
|
|
66
|
-
else ret += str.substring(0, first);
|
|
67
|
-
else {
|
|
68
|
-
const [prevFirst, prevLength] = indexes[i - 1]!;
|
|
69
|
-
const piece: string = str.substring(prevFirst + prevLength, first);
|
|
70
|
-
if (piece.length) ret += StringUtil.capitalize(piece);
|
|
63
|
+
const last = indexes[indexes.length - 1];
|
|
64
|
+
if (last === undefined || last[0] + last[1] !== i) indexes.push([i, 1]);
|
|
65
|
+
else ++last[1];
|
|
71
66
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
67
|
+
if (indexes.length === 0) return prefix + escaper(str);
|
|
68
|
+
|
|
69
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
70
|
+
let ret: string = "";
|
|
71
|
+
for (let i: number = 0; i < indexes.length; i++) {
|
|
72
|
+
const [first] = indexes[i]!;
|
|
73
|
+
if (i === 0)
|
|
74
|
+
if (first === 0) ret += "_";
|
|
75
|
+
else ret += str.substring(0, first);
|
|
76
|
+
else {
|
|
77
|
+
const [prevFirst, prevLength] = indexes[i - 1]!;
|
|
78
|
+
const piece: string = str.substring(prevFirst + prevLength, first);
|
|
79
|
+
if (piece.length) ret += StringUtil.capitalize(piece);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
const last = indexes[indexes.length - 1]!;
|
|
83
|
+
const piece: string = str.substring(last[0] + last[1]);
|
|
84
|
+
if (last.length) ret += StringUtil.capitalize(piece);
|
|
85
|
+
return prefix + escaper(ret);
|
|
86
|
+
};
|