typia 6.6.0-dev.20240720 → 6.6.0-dev.20240727

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 (64) hide show
  1. package/lib/CamelCase.d.ts +3 -2
  2. package/lib/PascalCase.d.ts +2 -2
  3. package/lib/factories/internal/metadata/iterate_metadata_constant.js +26 -8
  4. package/lib/factories/internal/metadata/iterate_metadata_constant.js.map +1 -1
  5. package/lib/factories/internal/metadata/iterate_metadata_intersection.js +15 -10
  6. package/lib/factories/internal/metadata/iterate_metadata_intersection.js.map +1 -1
  7. package/lib/programmers/CheckerProgrammer.js +2 -1
  8. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  9. package/lib/programmers/internal/application_description.d.ts +2 -2
  10. package/lib/programmers/internal/application_description.js +2 -3
  11. package/lib/programmers/internal/application_description.js.map +1 -1
  12. package/lib/programmers/internal/application_title.d.ts +5 -0
  13. package/lib/programmers/internal/application_title.js +17 -0
  14. package/lib/programmers/internal/application_title.js.map +1 -0
  15. package/lib/programmers/internal/application_v31_alias.js +2 -8
  16. package/lib/programmers/internal/application_v31_alias.js.map +1 -1
  17. package/lib/programmers/internal/application_v31_constant.js +4 -0
  18. package/lib/programmers/internal/application_v31_constant.js.map +1 -1
  19. package/lib/programmers/internal/application_v31_object.js +31 -47
  20. package/lib/programmers/internal/application_v31_object.js.map +1 -1
  21. package/lib/programmers/internal/postfix_of_tuple.d.ts +1 -0
  22. package/lib/programmers/internal/postfix_of_tuple.js +8 -0
  23. package/lib/programmers/internal/postfix_of_tuple.js.map +1 -0
  24. package/lib/programmers/json/JsonStringifyProgrammer.js +2 -1
  25. package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
  26. package/lib/programmers/misc/MiscCloneProgrammer.js +2 -1
  27. package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
  28. package/lib/programmers/misc/MiscPruneProgrammer.js +2 -1
  29. package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
  30. package/lib/programmers/notations/NotationGeneralProgrammer.js +2 -1
  31. package/lib/programmers/notations/NotationGeneralProgrammer.js.map +1 -1
  32. package/lib/schemas/metadata/IMetadataConstantValue.d.ts +3 -0
  33. package/lib/schemas/metadata/MetadataConstantValue.d.ts +3 -0
  34. package/lib/schemas/metadata/MetadataConstantValue.js +2 -0
  35. package/lib/schemas/metadata/MetadataConstantValue.js.map +1 -1
  36. package/lib/utils/NamingConvention/NamingConvention.d.ts +2 -2
  37. package/lib/utils/NamingConvention/NamingConvention.js +53 -72
  38. package/lib/utils/NamingConvention/NamingConvention.js.map +1 -1
  39. package/lib/utils/NamingConvention/NamingConvention.mjs +42 -56
  40. package/lib/utils/NamingConvention/NamingConvention.mjs.map +1 -1
  41. package/lib/utils/StringUtil/StringUtil.js +1 -1
  42. package/lib/utils/StringUtil/StringUtil.js.map +1 -1
  43. package/lib/utils/StringUtil/StringUtil.mjs +1 -1
  44. package/lib/utils/StringUtil/StringUtil.mjs.map +1 -1
  45. package/package.json +1 -1
  46. package/src/CamelCase.ts +14 -7
  47. package/src/PascalCase.ts +10 -7
  48. package/src/factories/internal/metadata/iterate_metadata_constant.ts +13 -0
  49. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +14 -10
  50. package/src/programmers/CheckerProgrammer.ts +2 -1
  51. package/src/programmers/internal/application_description.ts +3 -3
  52. package/src/programmers/internal/application_title.ts +20 -0
  53. package/src/programmers/internal/application_v31_alias.ts +2 -11
  54. package/src/programmers/internal/application_v31_constant.ts +4 -0
  55. package/src/programmers/internal/application_v31_object.ts +2 -17
  56. package/src/programmers/internal/postfix_of_tuple.ts +2 -0
  57. package/src/programmers/json/JsonStringifyProgrammer.ts +2 -1
  58. package/src/programmers/misc/MiscCloneProgrammer.ts +2 -1
  59. package/src/programmers/misc/MiscPruneProgrammer.ts +2 -1
  60. package/src/programmers/notations/NotationGeneralProgrammer.ts +2 -1
  61. package/src/schemas/metadata/IMetadataConstantValue.ts +3 -0
  62. package/src/schemas/metadata/MetadataConstantValue.ts +5 -0
  63. package/src/utils/NamingConvention/NamingConvention.ts +46 -43
  64. package/src/utils/StringUtil/StringUtil.ts +1 -1
@@ -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.6.0-dev.20240720",
3
+ "version": "6.6.0-dev.20240727",
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
@@ -59,10 +59,17 @@ type CamelizeTuple<T extends readonly any[]> = T extends []
59
59
 
60
60
  type CamelizeString<Key extends string> = Key extends `_${infer R}`
61
61
  ? `_${CamelizeString<R>}`
62
- : Key extends `${infer F}${infer R}`
63
- ? `${Lowercase<F>}${CamelizeStringRepeatedly<R>}`
64
- : Key;
65
- type CamelizeStringRepeatedly<Key extends string> =
66
- Key extends `${infer F}_${infer R}`
67
- ? `${F}${Capitalize<CamelizeStringRepeatedly<R>>}`
68
- : 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
@@ -59,10 +59,13 @@ type PascalizeTuple<T extends readonly any[]> = T extends []
59
59
 
60
60
  type PascalizeString<Key extends string> = Key extends `_${infer R}`
61
61
  ? `_${PascalizeString<R>}`
62
- : Key extends `${infer F}${infer R}`
63
- ? `${Uppercase<F>}${PascalizeStringRepeatedly<R>}`
64
- : Key;
65
- type PascalizeStringRepeatedly<Key extends string> =
66
- Key extends `${infer F}_${infer R}`
67
- ? `${F}${Capitalize<PascalizeStringRepeatedly<R>>}`
68
- : 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;
@@ -6,6 +6,7 @@ import { MetadataConstantValue } from "../../../schemas/metadata/MetadataConstan
6
6
 
7
7
  import { ArrayUtil } from "../../../utils/ArrayUtil";
8
8
 
9
+ import { CommentFactory } from "../../CommentFactory";
9
10
  import { MetadataFactory } from "../../MetadataFactory";
10
11
 
11
12
  export const iterate_metadata_constant =
@@ -15,6 +16,15 @@ export const iterate_metadata_constant =
15
16
  if (!options.constant) return false;
16
17
 
17
18
  const filter = (flag: ts.TypeFlags) => (type.getFlags() & flag) !== 0;
19
+ const comment = () => {
20
+ if (!filter(ts.TypeFlags.EnumLiteral)) return {};
21
+ return {
22
+ jsDocTags: type.symbol?.getJsDocTags(),
23
+ description: type.symbol
24
+ ? CommentFactory.description(type.symbol) ?? null
25
+ : undefined,
26
+ };
27
+ };
18
28
  if (type.isLiteral()) {
19
29
  const value: string | number | bigint =
20
30
  typeof type.value === "object"
@@ -34,11 +44,13 @@ export const iterate_metadata_constant =
34
44
  MetadataConstantValue.create({
35
45
  value,
36
46
  tags: [],
47
+ ...comment(),
37
48
  }),
38
49
  (a, b) => a.value === b.value,
39
50
  );
40
51
  return true;
41
52
  } else if (filter(ts.TypeFlags.BooleanLiteral)) {
53
+ comment();
42
54
  const value: boolean = checker.typeToString(type) === "true";
43
55
  const constant: MetadataConstant = ArrayUtil.take(
44
56
  meta.constants,
@@ -54,6 +66,7 @@ export const iterate_metadata_constant =
54
66
  MetadataConstantValue.create({
55
67
  value,
56
68
  tags: [],
69
+ ...comment(),
57
70
  }),
58
71
  (a, b) => a.value === b.value,
59
72
  );
@@ -27,7 +27,8 @@ export const iterate_metadata_intersection =
27
27
  explore: MetadataFactory.IExplore,
28
28
  ): boolean => {
29
29
  if (!type.isIntersection()) return false;
30
- else if (
30
+ if (
31
+ // ONLY OBJECT TYPED INTERSECTION
31
32
  type.types.every(
32
33
  (child) =>
33
34
  (child.getFlags() & ts.TypeFlags.Object) !== 0 &&
@@ -68,9 +69,18 @@ export const iterate_metadata_intersection =
68
69
  );
69
70
  return true;
70
71
  } else if (children.every((c) => c.objects.length === c.size()))
72
+ // ONLY OBJECT TYPED INTERSECTION (DETAILED)
71
73
  return false;
72
74
 
73
75
  // VALIDATE EACH TYPES
76
+ const nonsensible = () => {
77
+ errors.push({
78
+ name: children.map((c) => c.getName()).join(" & "),
79
+ explore: { ...explore },
80
+ messages: ["nonsensible intersection"],
81
+ });
82
+ return true;
83
+ };
74
84
  const individuals: (readonly [Metadata, number])[] = children
75
85
  .map((child, i) => [child, i] as const)
76
86
  .filter(
@@ -82,7 +92,7 @@ export const iterate_metadata_intersection =
82
92
  c.arrays.length === 1)) ||
83
93
  c.templates.length === 1,
84
94
  );
85
- if (individuals.length !== 1) return false;
95
+ if (individuals.length !== 1) return nonsensible();
86
96
 
87
97
  const objects: Metadata[] = children.filter(
88
98
  (c) =>
@@ -109,14 +119,8 @@ export const iterate_metadata_intersection =
109
119
  if (
110
120
  atomics.size + constants.length + arrays.size + templates.length > 1 ||
111
121
  individuals.length + objects.length !== children.length
112
- ) {
113
- errors.push({
114
- name: children.map((c) => c.getName()).join(" & "),
115
- explore: { ...explore },
116
- messages: ["nonsensible intersection"],
117
- });
118
- return true;
119
- }
122
+ )
123
+ return nonsensible();
120
124
 
121
125
  // RE-GENERATE TYPE
122
126
  const target: "boolean" | "bigint" | "number" | "string" | "array" =
@@ -33,6 +33,7 @@ import { check_number } from "./internal/check_number";
33
33
  import { check_string } from "./internal/check_string";
34
34
  import { check_template } from "./internal/check_template";
35
35
  import { decode_union_object } from "./internal/decode_union_object";
36
+ import { postfix_of_tuple } from "./internal/postfix_of_tuple";
36
37
  import { wrap_metadata_rest_tuple } from "./internal/wrap_metadata_rest_tuple";
37
38
 
38
39
  export namespace CheckerProgrammer {
@@ -766,7 +767,7 @@ export namespace CheckerProgrammer {
766
767
  ...explore,
767
768
  from: "array",
768
769
  postfix: explore.postfix.length
769
- ? `${explore.postfix.slice(0, -1)}[${index}]"`
770
+ ? `${postfix_of_tuple(explore.postfix)}[${index}]"`
770
771
  : `"[${index}]"`,
771
772
  },
772
773
  ),
@@ -1,11 +1,11 @@
1
1
  import { IJsDocTagInfo } from "../../module";
2
2
 
3
3
  export const application_description = (props: {
4
- description: string | null | undefined;
5
- jsDocTags: IJsDocTagInfo[];
4
+ description?: string | null | undefined;
5
+ jsDocTags?: IJsDocTagInfo[];
6
6
  }): string | undefined =>
7
7
  props.jsDocTags
8
- .find((tag) => tag.name === "description")
8
+ ?.find((tag) => tag.name === "description")
9
9
  ?.text?.[0]?.text?.split("\r\n")
10
10
  .join("\n") ??
11
11
  props.description ??
@@ -0,0 +1,20 @@
1
+ import { CommentFactory } from "../../factories/CommentFactory";
2
+
3
+ import { IJsDocTagInfo } from "../../module";
4
+
5
+ export const application_title = (schema: {
6
+ description?: string | null | undefined;
7
+ jsDocTags?: IJsDocTagInfo[] | undefined;
8
+ }): string | undefined => {
9
+ const info: IJsDocTagInfo | undefined = schema.jsDocTags?.find(
10
+ (tag) => tag.name === "title",
11
+ );
12
+ if (info?.text?.length) return CommentFactory.merge(info.text);
13
+ else if (!schema.description?.length) return undefined;
14
+
15
+ const index: number = schema.description.indexOf("\n");
16
+ const top: string = (
17
+ index === -1 ? schema.description : schema.description.substring(0, index)
18
+ ).trim();
19
+ return top.endsWith(".") ? top.substring(0, top.length - 1) : undefined;
20
+ };
@@ -1,11 +1,9 @@
1
1
  import { OpenApi } from "@samchon/openapi";
2
2
 
3
- import { CommentFactory } from "../../factories/CommentFactory";
4
-
5
- import { IJsDocTagInfo } from "../../schemas/metadata/IJsDocTagInfo";
6
3
  import { MetadataAlias } from "../../schemas/metadata/MetadataAlias";
7
4
 
8
5
  import { application_description } from "./application_description";
6
+ import { application_title } from "./application_title";
9
7
  import { application_v31_object } from "./application_v31_object";
10
8
  import { application_v31_schema } from "./application_v31_schema";
11
9
 
@@ -33,14 +31,7 @@ export const application_v31_alias =
33
31
  )(components)({
34
32
  deprecated:
35
33
  alias.jsDocTags.some((tag) => tag.name === "deprecated") || undefined,
36
- title: (() => {
37
- const info: IJsDocTagInfo | undefined = alias.jsDocTags.find(
38
- (tag) => tag.name === "title",
39
- );
40
- return info?.text?.length
41
- ? CommentFactory.merge(info.text)
42
- : undefined;
43
- })(),
34
+ title: application_title(alias),
44
35
  description: application_description(alias),
45
36
  })(alias.value);
46
37
  if (schema !== null)
@@ -2,7 +2,9 @@ import { OpenApi } from "@samchon/openapi";
2
2
 
3
3
  import { MetadataConstant } from "../../schemas/metadata/MetadataConstant";
4
4
 
5
+ import { application_description } from "./application_description";
5
6
  import { application_plugin } from "./application_plugin";
7
+ import { application_title } from "./application_title";
6
8
 
7
9
  /**
8
10
  * @internal
@@ -15,6 +17,8 @@ export const application_v31_constant = (
15
17
  application_plugin(
16
18
  {
17
19
  const: value.value as boolean | number | string,
20
+ title: application_title(value),
21
+ description: application_description(value),
18
22
  } satisfies OpenApi.IJsonSchema.IConstant,
19
23
  value.tags ?? [],
20
24
  ),
@@ -9,6 +9,7 @@ import { MetadataObject } from "../../schemas/metadata/MetadataObject";
9
9
  import { PatternUtil } from "../../utils/PatternUtil";
10
10
 
11
11
  import { application_description } from "./application_description";
12
+ import { application_title } from "./application_title";
12
13
  import { application_v31_schema } from "./application_v31_schema";
13
14
  import { metadata_to_pattern } from "./metadata_to_pattern";
14
15
 
@@ -67,23 +68,7 @@ const create_object_schema =
67
68
  deprecated:
68
69
  property.jsDocTags.some((tag) => tag.name === "deprecated") ||
69
70
  undefined,
70
- title: (() => {
71
- const info: IJsDocTagInfo | undefined = property.jsDocTags.find(
72
- (tag) => tag.name === "title",
73
- );
74
- if (info?.text?.length) return CommentFactory.merge(info.text);
75
- else if (!property.description?.length) return undefined;
76
-
77
- const index: number = property.description.indexOf("\n");
78
- const top: string = (
79
- index === -1
80
- ? property.description
81
- : property.description.substring(0, index)
82
- ).trim();
83
- return top.endsWith(".")
84
- ? top.substring(0, top.length - 1)
85
- : undefined;
86
- })(),
71
+ title: application_title(property),
87
72
  description: application_description(property),
88
73
  })(property.value);
89
74