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.
@@ -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 {};
@@ -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
- str = removeSnake(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 if (str[0] === "_" && str.length > 1 && str[1] === str[1].toLowerCase())
56
- return "_" + str[1].toUpperCase() + str.substring(2);
57
- else
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
- str = removeSnake(str);
63
- if (str.length === 0)
64
- return str;
65
- else if (str[0] === str[0].toLowerCase())
66
- return str[0].toUpperCase() + str.substring(1);
67
- else if (str[0] === "_" && str.length > 1 && str[1] === str[1].toLowerCase())
68
- return "_" + str[1].toUpperCase() + str.substring(2);
69
- else
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 removeSnake = function (str) {
74
- var indexes = [];
75
- for (var i = 0; i < str.length; i++) {
76
- var ch = str[i];
77
- if (ch !== "_")
78
- continue;
79
- var last_1 = indexes[indexes.length - 1];
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
- ret += str.substring(0, first);
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
- var last = indexes[indexes.length - 1];
103
- var piece = str.substring(last[0] + last[1]);
104
- if (last.length)
105
- ret += StringUtil_1.StringUtil.capitalize(piece);
106
- return ret;
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":"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"}
1
+ {"version":3,"file":"NamingConvention.js","sourceRoot":"","sources":["../../../src/utils/NamingConvention/NamingConvention.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "typia",
3
- "version": "5.4.7",
3
+ "version": "5.4.8-dev.20240209",
4
4
  "description": "Superfast runtime validators with only one line",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
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 `${infer F}${infer R}`
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 `${infer F}${infer R}`
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
- str = removeSnake(str);
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 if (str[0] === "_" && str.length > 1 && str[1] === str[1]!.toLowerCase())
35
- return "_" + str[1]!.toUpperCase() + str.substring(2);
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
- str = removeSnake(str);
41
- if (str.length === 0) return str;
42
- else if (str[0] === str[0]!.toLowerCase())
43
- return str[0]!.toUpperCase() + str.substring(1);
44
- else if (str[0] === "_" && str.length > 1 && str[1] === str[1]!.toLowerCase())
45
- return "_" + str[1]!.toUpperCase() + str.substring(2);
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 removeSnake = (str: string): string => {
50
- const indexes: [number, number][] = [];
51
- for (let i: number = 0; i < str.length; i++) {
52
- const ch: string = str[i]!;
53
- if (ch !== "_") continue;
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 last = indexes[indexes.length - 1];
56
- if (last === undefined || last[0] + last[1] !== i) indexes.push([i, 1]);
57
- else ++last[1];
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
- let ret: string = "";
62
- for (let i: number = 0; i < indexes.length; i++) {
63
- const [first] = indexes[i]!;
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
- const last = indexes[indexes.length - 1]!;
74
- const piece: string = str.substring(last[0] + last[1]);
75
- if (last.length) ret += StringUtil.capitalize(piece);
76
- return ret;
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
+ };