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.
Files changed (52) hide show
  1. package/lib/CamelCase.d.ts +8 -14
  2. package/lib/PascalCase.d.ts +7 -14
  3. package/lib/Primitive.d.ts +6 -13
  4. package/lib/Resolved.d.ts +5 -12
  5. package/lib/SnakeCase.d.ts +4 -7
  6. package/lib/factories/internal/metadata/iterate_metadata_native.js +11 -0
  7. package/lib/factories/internal/metadata/iterate_metadata_native.js.map +1 -1
  8. package/lib/functional/$clone.js +3 -3
  9. package/lib/functional/$clone.js.map +1 -1
  10. package/lib/functional/_clone.mjs +3 -3
  11. package/lib/functional/_clone.mjs.map +1 -1
  12. package/lib/programmers/RandomProgrammer.js +5 -0
  13. package/lib/programmers/RandomProgrammer.js.map +1 -1
  14. package/lib/programmers/misc/MiscCloneProgrammer.js +2 -1
  15. package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
  16. package/lib/typings/Equal.d.ts +15 -0
  17. package/lib/typings/Equal.js +3 -0
  18. package/lib/typings/Equal.js.map +1 -0
  19. package/lib/typings/IsTuple.d.ts +5 -0
  20. package/lib/typings/IsTuple.js +3 -0
  21. package/lib/typings/IsTuple.js.map +1 -0
  22. package/lib/typings/NativeClass.d.ts +1 -0
  23. package/lib/typings/NativeClass.js +3 -0
  24. package/lib/typings/NativeClass.js.map +1 -0
  25. package/lib/typings/ValueOf.d.ts +6 -0
  26. package/lib/typings/ValueOf.js +3 -0
  27. package/lib/typings/ValueOf.js.map +1 -0
  28. package/lib/utils/NamingConvention/NamingConvention.d.ts +2 -2
  29. package/lib/utils/NamingConvention/NamingConvention.js +53 -72
  30. package/lib/utils/NamingConvention/NamingConvention.js.map +1 -1
  31. package/lib/utils/NamingConvention/NamingConvention.mjs +42 -56
  32. package/lib/utils/NamingConvention/NamingConvention.mjs.map +1 -1
  33. package/lib/utils/StringUtil/StringUtil.js +1 -1
  34. package/lib/utils/StringUtil/StringUtil.js.map +1 -1
  35. package/lib/utils/StringUtil/StringUtil.mjs +1 -1
  36. package/lib/utils/StringUtil/StringUtil.mjs.map +1 -1
  37. package/package.json +2 -2
  38. package/src/CamelCase.ts +20 -66
  39. package/src/PascalCase.ts +16 -66
  40. package/src/Primitive.ts +12 -56
  41. package/src/Resolved.ts +6 -51
  42. package/src/SnakeCase.ts +5 -40
  43. package/src/factories/internal/metadata/iterate_metadata_native.ts +11 -0
  44. package/src/functional/$clone.ts +3 -3
  45. package/src/programmers/RandomProgrammer.ts +8 -0
  46. package/src/programmers/misc/MiscCloneProgrammer.ts +2 -1
  47. package/src/typings/Equal.ts +18 -0
  48. package/src/typings/IsTuple.ts +9 -0
  49. package/src/typings/NativeClass.ts +23 -0
  50. package/src/typings/ValueOf.ts +20 -0
  51. package/src/utils/NamingConvention/NamingConvention.ts +46 -43
  52. 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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ValueOf.js.map
@@ -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 function camel(str: string): string;
3
- export declare function pascal(str: string): string;
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 camel(str) {
51
- return unsnake(function (str) {
52
- if (str.length === 0)
53
- return str;
54
- else if (str[0] === str[0].toUpperCase())
55
- return str[0].toLowerCase() + str.substring(1);
56
- else
57
- return str;
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
- function pascal(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;
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
- var unsnake = function (escaper) {
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 indexes = [];
83
- for (var i = 0; i < str.length; i++) {
84
- var ch = str[i];
85
- if (ch !== "_")
86
- continue;
87
- var last_1 = indexes[indexes.length - 1];
88
- if (last_1 === undefined || last_1[0] + last_1[1] !== i)
89
- indexes.push([i, 1]);
90
- else
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":"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"}
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
- function pascal(str) {
41
- return unsnake((str) => {
42
- if (str.length === 0)
43
- return str;
44
- else if (str[0] === str[0].toLowerCase())
45
- return str[0].toUpperCase() + str.substring(1);
46
- else
47
- return str;
48
- })(str);
49
- }
50
- const unsnake = (escaper) => (str) => {
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 indexes = [];
62
- for (let i = 0; i < str.length; i++) {
63
- const ch = str[i];
64
- if (ch !== "_")
65
- continue;
66
- const last = indexes[indexes.length - 1];
67
- if (last === undefined || last[0] + last[1] !== i)
68
- indexes.push([i, 1]);
69
- else
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":"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"}
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;AAAvD,CAAuD,CAAC;AAD7C,QAAA,UAAU,cACmC;AAEnD,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
+ {"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,4 +1,4 @@
1
- const capitalize = (str) => str.length ? str[0].toUpperCase() + str.slice(1) : str;
1
+ const capitalize = (str) => str.length ? str[0].toUpperCase() + str.slice(1).toLowerCase() : str;
2
2
 
3
3
  export { capitalize };
4
4
  //# sourceMappingURL=StringUtil.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"StringUtil.mjs","sources":["../../../src/utils/StringUtil/StringUtil.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAO,MAAM,UAAU,GAAG,CAAC,GAAW,KACpC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG;;;;"}
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.1",
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.1",
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 F}${infer R}`
116
- ? `${Lowercase<F>}${CamelizeStringRepeatedly<R>}`
117
- : Key;
118
- type CamelizeStringRepeatedly<Key extends string> =
119
- Key extends `${infer F}_${infer R}`
120
- ? `${F}${Capitalize<CamelizeStringRepeatedly<R>>}`
121
- : Key;
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 F}${infer R}`
116
- ? `${Uppercase<F>}${PascalizeStringRepeatedly<R>}`
117
- : Key;
118
- type PascalizeStringRepeatedly<Key extends string> =
119
- Key extends `${infer F}_${infer R}`
120
- ? `${F}${Capitalize<PascalizeStringRepeatedly<R>>}`
121
- : Key;
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;