typia 3.6.0 → 3.6.1

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 (233) hide show
  1. package/README.md +14 -9
  2. package/lib/programmers/AssertCloneProgrammer.d.ts +1 -1
  3. package/lib/programmers/AssertCloneProgrammer.js +2 -2
  4. package/lib/programmers/AssertCloneProgrammer.js.map +1 -1
  5. package/lib/programmers/AssertParseProgrammer.d.ts +1 -1
  6. package/lib/programmers/AssertParseProgrammer.js +2 -2
  7. package/lib/programmers/AssertParseProgrammer.js.map +1 -1
  8. package/lib/programmers/AssertProgrammer.d.ts +1 -1
  9. package/lib/programmers/AssertProgrammer.js +2 -2
  10. package/lib/programmers/AssertProgrammer.js.map +1 -1
  11. package/lib/programmers/AssertPruneProgrammer.d.ts +1 -1
  12. package/lib/programmers/AssertPruneProgrammer.js +2 -2
  13. package/lib/programmers/AssertPruneProgrammer.js.map +1 -1
  14. package/lib/programmers/CheckerProgrammer.d.ts +1 -1
  15. package/lib/programmers/CheckerProgrammer.js +2 -2
  16. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  17. package/lib/programmers/CloneProgrammer.d.ts +1 -1
  18. package/lib/programmers/CloneProgrammer.js +4 -4
  19. package/lib/programmers/CloneProgrammer.js.map +1 -1
  20. package/lib/programmers/FeatureProgrammer.d.ts +3 -3
  21. package/lib/programmers/FeatureProgrammer.js +2 -2
  22. package/lib/programmers/FeatureProgrammer.js.map +1 -1
  23. package/lib/programmers/IsCloneProgrammer.d.ts +1 -1
  24. package/lib/programmers/IsCloneProgrammer.js +2 -2
  25. package/lib/programmers/IsCloneProgrammer.js.map +1 -1
  26. package/lib/programmers/IsParseProgrammer.d.ts +1 -1
  27. package/lib/programmers/IsParseProgrammer.js +2 -2
  28. package/lib/programmers/IsParseProgrammer.js.map +1 -1
  29. package/lib/programmers/IsProgrammer.d.ts +1 -1
  30. package/lib/programmers/IsPruneProgrammer.d.ts +1 -1
  31. package/lib/programmers/IsPruneProgrammer.js +2 -2
  32. package/lib/programmers/IsPruneProgrammer.js.map +1 -1
  33. package/lib/programmers/IsStringifyProgrammer.d.ts +1 -1
  34. package/lib/programmers/IsStringifyProgrammer.js +2 -2
  35. package/lib/programmers/IsStringifyProgrammer.js.map +1 -1
  36. package/lib/programmers/PruneProgrammer.d.ts +1 -1
  37. package/lib/programmers/PruneProgrammer.js +2 -2
  38. package/lib/programmers/PruneProgrammer.js.map +1 -1
  39. package/lib/programmers/RandomProgrammer.d.ts +1 -1
  40. package/lib/programmers/RandomProgrammer.js +2 -2
  41. package/lib/programmers/RandomProgrammer.js.map +1 -1
  42. package/lib/programmers/StringifyProgrammer.d.ts +1 -1
  43. package/lib/programmers/StringifyProgrammer.js +2 -2
  44. package/lib/programmers/StringifyProgrammer.js.map +1 -1
  45. package/lib/programmers/ValidateCloneProgrammer.d.ts +1 -1
  46. package/lib/programmers/ValidateCloneProgrammer.js +2 -2
  47. package/lib/programmers/ValidateCloneProgrammer.js.map +1 -1
  48. package/lib/programmers/ValidateParseProgrammer.d.ts +1 -1
  49. package/lib/programmers/ValidateParseProgrammer.js +2 -2
  50. package/lib/programmers/ValidateParseProgrammer.js.map +1 -1
  51. package/lib/programmers/ValidateProgrammer.d.ts +1 -1
  52. package/lib/programmers/ValidateProgrammer.js +2 -2
  53. package/lib/programmers/ValidateProgrammer.js.map +1 -1
  54. package/lib/programmers/ValidatePruneProgrammer.d.ts +1 -1
  55. package/lib/programmers/ValidatePruneProgrammer.js +2 -2
  56. package/lib/programmers/ValidatePruneProgrammer.js.map +1 -1
  57. package/lib/programmers/ValidateStringifyProgrammer.d.ts +1 -1
  58. package/lib/programmers/ValidateStringifyProgrammer.js +2 -2
  59. package/lib/programmers/ValidateStringifyProgrammer.js.map +1 -1
  60. package/lib/transformers/features/miscellaneous/AssertCloneTransformer.d.ts +1 -3
  61. package/lib/transformers/features/miscellaneous/AssertCloneTransformer.js +2 -15
  62. package/lib/transformers/features/miscellaneous/AssertCloneTransformer.js.map +1 -1
  63. package/lib/transformers/features/miscellaneous/AssertPruneTransformer.d.ts +1 -3
  64. package/lib/transformers/features/miscellaneous/AssertPruneTransformer.js +2 -15
  65. package/lib/transformers/features/miscellaneous/AssertPruneTransformer.js.map +1 -1
  66. package/lib/transformers/features/miscellaneous/CloneTransformer.d.ts +1 -3
  67. package/lib/transformers/features/miscellaneous/CloneTransformer.js +2 -26
  68. package/lib/transformers/features/miscellaneous/CloneTransformer.js.map +1 -1
  69. package/lib/transformers/features/miscellaneous/CreateAssertCloneTransformer.d.ts +1 -3
  70. package/lib/transformers/features/miscellaneous/CreateAssertCloneTransformer.js +2 -10
  71. package/lib/transformers/features/miscellaneous/CreateAssertCloneTransformer.js.map +1 -1
  72. package/lib/transformers/features/miscellaneous/CreateAssertPruneTransformer.d.ts +1 -3
  73. package/lib/transformers/features/miscellaneous/CreateAssertPruneTransformer.js +2 -10
  74. package/lib/transformers/features/miscellaneous/CreateAssertPruneTransformer.js.map +1 -1
  75. package/lib/transformers/features/miscellaneous/CreateCloneTransformer.d.ts +1 -3
  76. package/lib/transformers/features/miscellaneous/CreateCloneTransformer.js +2 -10
  77. package/lib/transformers/features/miscellaneous/CreateCloneTransformer.js.map +1 -1
  78. package/lib/transformers/features/miscellaneous/CreateIsCloneTransformer.d.ts +1 -3
  79. package/lib/transformers/features/miscellaneous/CreateIsCloneTransformer.js +2 -10
  80. package/lib/transformers/features/miscellaneous/CreateIsCloneTransformer.js.map +1 -1
  81. package/lib/transformers/features/miscellaneous/CreateIsPruneTransformer.d.ts +1 -3
  82. package/lib/transformers/features/miscellaneous/CreateIsPruneTransformer.js +2 -10
  83. package/lib/transformers/features/miscellaneous/CreateIsPruneTransformer.js.map +1 -1
  84. package/lib/transformers/features/miscellaneous/CreatePruneTransformer.d.ts +1 -3
  85. package/lib/transformers/features/miscellaneous/CreatePruneTransformer.js +2 -10
  86. package/lib/transformers/features/miscellaneous/CreatePruneTransformer.js.map +1 -1
  87. package/lib/transformers/features/miscellaneous/CreateRandomGenerator.js +4 -2
  88. package/lib/transformers/features/miscellaneous/CreateRandomGenerator.js.map +1 -1
  89. package/lib/transformers/features/miscellaneous/CreateValidateCloneTransformer.d.ts +1 -3
  90. package/lib/transformers/features/miscellaneous/CreateValidateCloneTransformer.js +2 -10
  91. package/lib/transformers/features/miscellaneous/CreateValidateCloneTransformer.js.map +1 -1
  92. package/lib/transformers/features/miscellaneous/CreateValidatePruneTransformer.d.ts +1 -3
  93. package/lib/transformers/features/miscellaneous/CreateValidatePruneTransformer.js +2 -10
  94. package/lib/transformers/features/miscellaneous/CreateValidatePruneTransformer.js.map +1 -1
  95. package/lib/transformers/features/miscellaneous/IsCloneTransformer.d.ts +1 -3
  96. package/lib/transformers/features/miscellaneous/IsCloneTransformer.js +2 -15
  97. package/lib/transformers/features/miscellaneous/IsCloneTransformer.js.map +1 -1
  98. package/lib/transformers/features/miscellaneous/IsPruneTransformer.d.ts +1 -3
  99. package/lib/transformers/features/miscellaneous/IsPruneTransformer.js +2 -15
  100. package/lib/transformers/features/miscellaneous/IsPruneTransformer.js.map +1 -1
  101. package/lib/transformers/features/miscellaneous/PruneTransformer.d.ts +1 -3
  102. package/lib/transformers/features/miscellaneous/PruneTransformer.js +2 -26
  103. package/lib/transformers/features/miscellaneous/PruneTransformer.js.map +1 -1
  104. package/lib/transformers/features/miscellaneous/RandomTransformer.js +4 -2
  105. package/lib/transformers/features/miscellaneous/RandomTransformer.js.map +1 -1
  106. package/lib/transformers/features/miscellaneous/ValidateCloneTransformer.d.ts +1 -3
  107. package/lib/transformers/features/miscellaneous/ValidateCloneTransformer.js +2 -15
  108. package/lib/transformers/features/miscellaneous/ValidateCloneTransformer.js.map +1 -1
  109. package/lib/transformers/features/miscellaneous/ValidatePruneTransformer.d.ts +1 -3
  110. package/lib/transformers/features/miscellaneous/ValidatePruneTransformer.js +2 -15
  111. package/lib/transformers/features/miscellaneous/ValidatePruneTransformer.js.map +1 -1
  112. package/lib/transformers/features/parsers/AssertParseTransformer.d.ts +1 -3
  113. package/lib/transformers/features/parsers/AssertParseTransformer.js +2 -14
  114. package/lib/transformers/features/parsers/AssertParseTransformer.js.map +1 -1
  115. package/lib/transformers/features/parsers/CreateAssertParseTransformer.d.ts +1 -3
  116. package/lib/transformers/features/parsers/CreateAssertParseTransformer.js +2 -10
  117. package/lib/transformers/features/parsers/CreateAssertParseTransformer.js.map +1 -1
  118. package/lib/transformers/features/parsers/CreateIsParseTransformer.d.ts +1 -3
  119. package/lib/transformers/features/parsers/CreateIsParseTransformer.js +2 -10
  120. package/lib/transformers/features/parsers/CreateIsParseTransformer.js.map +1 -1
  121. package/lib/transformers/features/parsers/CreateValidateParseTransformer.d.ts +1 -3
  122. package/lib/transformers/features/parsers/CreateValidateParseTransformer.js +2 -10
  123. package/lib/transformers/features/parsers/CreateValidateParseTransformer.js.map +1 -1
  124. package/lib/transformers/features/parsers/IsParseTransformer.d.ts +1 -3
  125. package/lib/transformers/features/parsers/IsParseTransformer.js +2 -14
  126. package/lib/transformers/features/parsers/IsParseTransformer.js.map +1 -1
  127. package/lib/transformers/features/parsers/ValidateParseTransformer.d.ts +1 -3
  128. package/lib/transformers/features/parsers/ValidateParseTransformer.js +2 -14
  129. package/lib/transformers/features/parsers/ValidateParseTransformer.js.map +1 -1
  130. package/lib/transformers/features/stringifiers/AssertStringifyTransformer.d.ts +1 -3
  131. package/lib/transformers/features/stringifiers/AssertStringifyTransformer.js +4 -15
  132. package/lib/transformers/features/stringifiers/AssertStringifyTransformer.js.map +1 -1
  133. package/lib/transformers/features/stringifiers/CreateAssertStringifyTransformer.d.ts +1 -3
  134. package/lib/transformers/features/stringifiers/CreateAssertStringifyTransformer.js +2 -10
  135. package/lib/transformers/features/stringifiers/CreateAssertStringifyTransformer.js.map +1 -1
  136. package/lib/transformers/features/stringifiers/CreateIsStringifyTransformer.d.ts +1 -3
  137. package/lib/transformers/features/stringifiers/CreateIsStringifyTransformer.js +2 -10
  138. package/lib/transformers/features/stringifiers/CreateIsStringifyTransformer.js.map +1 -1
  139. package/lib/transformers/features/stringifiers/CreateStringifyTransformer.d.ts +1 -3
  140. package/lib/transformers/features/stringifiers/CreateStringifyTransformer.js +2 -10
  141. package/lib/transformers/features/stringifiers/CreateStringifyTransformer.js.map +1 -1
  142. package/lib/transformers/features/stringifiers/CreateValidateStringifyProgrammer.d.ts +1 -3
  143. package/lib/transformers/features/stringifiers/CreateValidateStringifyProgrammer.js +4 -10
  144. package/lib/transformers/features/stringifiers/CreateValidateStringifyProgrammer.js.map +1 -1
  145. package/lib/transformers/features/stringifiers/IsStringifyTransformer.d.ts +1 -3
  146. package/lib/transformers/features/stringifiers/IsStringifyTransformer.js +2 -15
  147. package/lib/transformers/features/stringifiers/IsStringifyTransformer.js.map +1 -1
  148. package/lib/transformers/features/stringifiers/StringifyTransformer.d.ts +1 -3
  149. package/lib/transformers/features/stringifiers/StringifyTransformer.js +2 -26
  150. package/lib/transformers/features/stringifiers/StringifyTransformer.js.map +1 -1
  151. package/lib/transformers/features/stringifiers/ValidateStringifyTransformer.d.ts +1 -3
  152. package/lib/transformers/features/stringifiers/ValidateStringifyTransformer.js +4 -15
  153. package/lib/transformers/features/stringifiers/ValidateStringifyTransformer.js.map +1 -1
  154. package/lib/transformers/features/validators/AssertTransformer.d.ts +1 -3
  155. package/lib/transformers/features/validators/AssertTransformer.js +6 -22
  156. package/lib/transformers/features/validators/AssertTransformer.js.map +1 -1
  157. package/lib/transformers/features/validators/CreateAssertTransformer.d.ts +1 -3
  158. package/lib/transformers/features/validators/CreateAssertTransformer.js +6 -17
  159. package/lib/transformers/features/validators/CreateAssertTransformer.js.map +1 -1
  160. package/lib/transformers/features/validators/CreateIsTransformer.d.ts +1 -3
  161. package/lib/transformers/features/validators/CreateIsTransformer.js +4 -17
  162. package/lib/transformers/features/validators/CreateIsTransformer.js.map +1 -1
  163. package/lib/transformers/features/validators/CreateValidateTransformer.d.ts +1 -3
  164. package/lib/transformers/features/validators/CreateValidateTransformer.js +6 -17
  165. package/lib/transformers/features/validators/CreateValidateTransformer.js.map +1 -1
  166. package/lib/transformers/features/validators/IsTransformer.d.ts +1 -3
  167. package/lib/transformers/features/validators/IsTransformer.js +6 -22
  168. package/lib/transformers/features/validators/IsTransformer.js.map +1 -1
  169. package/lib/transformers/features/validators/ValidateTransformer.d.ts +1 -3
  170. package/lib/transformers/features/validators/ValidateTransformer.js +6 -22
  171. package/lib/transformers/features/validators/ValidateTransformer.js.map +1 -1
  172. package/lib/transformers/internal/GenericTransformer.d.ts +7 -0
  173. package/lib/transformers/internal/GenericTransformer.js +68 -0
  174. package/lib/transformers/internal/GenericTransformer.js.map +1 -0
  175. package/package.json +1 -1
  176. package/src/programmers/AssertCloneProgrammer.ts +4 -5
  177. package/src/programmers/AssertParseProgrammer.ts +4 -5
  178. package/src/programmers/AssertProgrammer.ts +2 -2
  179. package/src/programmers/AssertPruneProgrammer.ts +2 -2
  180. package/src/programmers/CheckerProgrammer.ts +3 -2
  181. package/src/programmers/CloneProgrammer.ts +6 -7
  182. package/src/programmers/FeatureProgrammer.ts +5 -5
  183. package/src/programmers/IsCloneProgrammer.ts +5 -5
  184. package/src/programmers/IsParseProgrammer.ts +4 -5
  185. package/src/programmers/IsPruneProgrammer.ts +2 -2
  186. package/src/programmers/IsStringifyProgrammer.ts +3 -2
  187. package/src/programmers/PruneProgrammer.ts +2 -2
  188. package/src/programmers/RandomProgrammer.ts +4 -5
  189. package/src/programmers/StringifyProgrammer.ts +2 -2
  190. package/src/programmers/ValidateCloneProgrammer.ts +4 -5
  191. package/src/programmers/ValidateParseProgrammer.ts +4 -5
  192. package/src/programmers/ValidateProgrammer.ts +4 -5
  193. package/src/programmers/ValidatePruneProgrammer.ts +4 -5
  194. package/src/programmers/ValidateStringifyProgrammer.ts +3 -2
  195. package/src/transformers/features/miscellaneous/AssertCloneTransformer.ts +4 -33
  196. package/src/transformers/features/miscellaneous/AssertPruneTransformer.ts +4 -33
  197. package/src/transformers/features/miscellaneous/CloneTransformer.ts +4 -41
  198. package/src/transformers/features/miscellaneous/CreateAssertCloneTransformer.ts +4 -27
  199. package/src/transformers/features/miscellaneous/CreateAssertPruneTransformer.ts +4 -27
  200. package/src/transformers/features/miscellaneous/CreateCloneTransformer.ts +4 -26
  201. package/src/transformers/features/miscellaneous/CreateIsCloneTransformer.ts +4 -27
  202. package/src/transformers/features/miscellaneous/CreateIsPruneTransformer.ts +4 -27
  203. package/src/transformers/features/miscellaneous/CreatePruneTransformer.ts +4 -26
  204. package/src/transformers/features/miscellaneous/CreateRandomGenerator.ts +8 -4
  205. package/src/transformers/features/miscellaneous/CreateValidateCloneTransformer.ts +4 -27
  206. package/src/transformers/features/miscellaneous/CreateValidatePruneTransformer.ts +4 -27
  207. package/src/transformers/features/miscellaneous/IsCloneTransformer.ts +4 -33
  208. package/src/transformers/features/miscellaneous/IsPruneTransformer.ts +4 -33
  209. package/src/transformers/features/miscellaneous/PruneTransformer.ts +4 -41
  210. package/src/transformers/features/miscellaneous/RandomTransformer.ts +8 -4
  211. package/src/transformers/features/miscellaneous/ValidateCloneTransformer.ts +4 -33
  212. package/src/transformers/features/miscellaneous/ValidatePruneTransformer.ts +4 -33
  213. package/src/transformers/features/parsers/AssertParseTransformer.ts +4 -31
  214. package/src/transformers/features/parsers/CreateAssertParseTransformer.ts +4 -27
  215. package/src/transformers/features/parsers/CreateIsParseTransformer.ts +4 -27
  216. package/src/transformers/features/parsers/CreateValidateParseTransformer.ts +4 -27
  217. package/src/transformers/features/parsers/IsParseTransformer.ts +4 -31
  218. package/src/transformers/features/parsers/ValidateParseTransformer.ts +4 -31
  219. package/src/transformers/features/stringifiers/AssertStringifyTransformer.ts +5 -33
  220. package/src/transformers/features/stringifiers/CreateAssertStringifyTransformer.ts +4 -27
  221. package/src/transformers/features/stringifiers/CreateIsStringifyTransformer.ts +4 -27
  222. package/src/transformers/features/stringifiers/CreateStringifyTransformer.ts +4 -26
  223. package/src/transformers/features/stringifiers/CreateValidateStringifyProgrammer.ts +6 -27
  224. package/src/transformers/features/stringifiers/IsStringifyTransformer.ts +4 -33
  225. package/src/transformers/features/stringifiers/StringifyTransformer.ts +4 -41
  226. package/src/transformers/features/stringifiers/ValidateStringifyTransformer.ts +5 -33
  227. package/src/transformers/features/validators/AssertTransformer.ts +6 -38
  228. package/src/transformers/features/validators/CreateAssertTransformer.ts +7 -30
  229. package/src/transformers/features/validators/CreateIsTransformer.ts +5 -30
  230. package/src/transformers/features/validators/CreateValidateTransformer.ts +7 -30
  231. package/src/transformers/features/validators/IsTransformer.ts +5 -38
  232. package/src/transformers/features/validators/ValidateTransformer.ts +6 -38
  233. package/src/transformers/internal/GenericTransformer.ts +98 -0
@@ -312,16 +312,15 @@ export namespace CloneProgrammer {
312
312
  importer: FunctionImporter,
313
313
  ): FeatureProgrammer.IConfig => ({
314
314
  types: {
315
- input: (type) =>
315
+ input: (type, name) =>
316
316
  ts.factory.createTypeReferenceNode(
317
- TypeFactory.getFullName(project.checker, type),
317
+ name ?? TypeFactory.getFullName(project.checker, type),
318
318
  ),
319
- output: (type) =>
319
+ output: (type, name) =>
320
320
  ts.factory.createTypeReferenceNode(
321
- `typia.Primitive<${TypeFactory.getFullName(
322
- project.checker,
323
- type,
324
- )}>`,
321
+ `typia.Primitive<${
322
+ name ?? TypeFactory.getFullName(project.checker, type)
323
+ }>`,
325
324
  ),
326
325
  },
327
326
  functors: FUNCTORS,
@@ -70,8 +70,8 @@ export namespace FeatureProgrammer {
70
70
  }
71
71
  export namespace IConfig {
72
72
  export interface ITypes {
73
- input: (type: ts.Type, node?: ts.TypeNode) => ts.TypeNode;
74
- output: (type: ts.Type, node?: ts.TypeNode) => ts.TypeNode;
73
+ input: (type: ts.Type, name?: string) => ts.TypeNode;
74
+ output: (type: ts.Type, name?: string) => ts.TypeNode;
75
75
  }
76
76
 
77
77
  export interface IObjector {
@@ -227,7 +227,7 @@ export namespace FeatureProgrammer {
227
227
  collection: MetadataCollection,
228
228
  ) => ts.Statement[] | undefined,
229
229
  ) =>
230
- (type: ts.Type, typeNode?: ts.TypeNode) => {
230
+ (type: ts.Type, name?: string) => {
231
231
  const [collection, meta] = config.initializer(project, type);
232
232
 
233
233
  // ITERATE OVER ALL METADATA
@@ -257,10 +257,10 @@ export namespace FeatureProgrammer {
257
257
  return ts.factory.createArrowFunction(
258
258
  undefined,
259
259
  undefined,
260
- PARAMETERS(config)(config.types.input(type, typeNode))(
260
+ PARAMETERS(config)(config.types.input(type, name))(
261
261
  ValueFactory.INPUT(),
262
262
  ),
263
- config.types.output(type, typeNode),
263
+ config.types.output(type, name),
264
264
  undefined,
265
265
  ts.factory.createBlock(
266
266
  [
@@ -12,7 +12,7 @@ import { IsProgrammer } from "./IsProgrammer";
12
12
  export namespace IsCloneProgrammer {
13
13
  export const generate =
14
14
  (project: IProject, modulo: ts.LeftHandSideExpression) =>
15
- (type: ts.Type) =>
15
+ (type: ts.Type, name?: string) =>
16
16
  ts.factory.createArrowFunction(
17
17
  undefined,
18
18
  undefined,
@@ -24,10 +24,10 @@ export namespace IsCloneProgrammer {
24
24
  ],
25
25
  ts.factory.createUnionTypeNode([
26
26
  ts.factory.createTypeReferenceNode(
27
- `typia.Primitive<${TypeFactory.getFullName(
28
- project.checker,
29
- type,
30
- )}>`,
27
+ `typia.Primitive<${
28
+ name ??
29
+ TypeFactory.getFullName(project.checker, type)
30
+ }>`,
31
31
  ),
32
32
  ts.factory.createLiteralTypeNode(ts.factory.createNull()),
33
33
  ]),
@@ -11,7 +11,7 @@ import { IsProgrammer } from "./IsProgrammer";
11
11
  export namespace IsParseProgrammer {
12
12
  export const generate =
13
13
  (project: IProject, modulo: ts.LeftHandSideExpression) =>
14
- (type: ts.Type) =>
14
+ (type: ts.Type, name?: string) =>
15
15
  ts.factory.createArrowFunction(
16
16
  undefined,
17
17
  undefined,
@@ -22,10 +22,9 @@ export namespace IsParseProgrammer {
22
22
  ),
23
23
  ],
24
24
  ts.factory.createTypeReferenceNode(
25
- `typia.Primitive<${TypeFactory.getFullName(
26
- project.checker,
27
- type,
28
- )}>`,
25
+ `typia.Primitive<${
26
+ name ?? TypeFactory.getFullName(project.checker, type)
27
+ }>`,
29
28
  ),
30
29
  undefined,
31
30
  ts.factory.createBlock([
@@ -12,7 +12,7 @@ import { PruneProgrammer } from "./PruneProgrammer";
12
12
  export namespace IsPruneProgrammer {
13
13
  export const generate =
14
14
  (project: IProject, modulo: ts.LeftHandSideExpression) =>
15
- (type: ts.Type) =>
15
+ (type: ts.Type, name?: string) =>
16
16
  ts.factory.createArrowFunction(
17
17
  undefined,
18
18
  undefined,
@@ -26,7 +26,7 @@ export namespace IsPruneProgrammer {
26
26
  undefined,
27
27
  "input",
28
28
  ts.factory.createTypeReferenceNode(
29
- TypeFactory.getFullName(project.checker, type),
29
+ name ?? TypeFactory.getFullName(project.checker, type),
30
30
  ),
31
31
  ),
32
32
  undefined,
@@ -12,7 +12,7 @@ import { StringifyProgrammer } from "./StringifyProgrammer";
12
12
  export namespace IsStringifyProgrammer {
13
13
  export const generate =
14
14
  (project: IProject, modulo: ts.LeftHandSideExpression) =>
15
- (type: ts.Type) =>
15
+ (type: ts.Type, name?: string) =>
16
16
  ts.factory.createArrowFunction(
17
17
  undefined,
18
18
  undefined,
@@ -20,7 +20,8 @@ export namespace IsStringifyProgrammer {
20
20
  IdentifierFactory.parameter(
21
21
  "input",
22
22
  ts.factory.createTypeReferenceNode(
23
- TypeFactory.getFullName(project.checker, type),
23
+ name ??
24
+ TypeFactory.getFullName(project.checker, type),
24
25
  ),
25
26
  ),
26
27
  ],
@@ -272,9 +272,9 @@ export namespace PruneProgrammer {
272
272
  importer: FunctionImporter,
273
273
  ): FeatureProgrammer.IConfig => ({
274
274
  types: {
275
- input: (type) =>
275
+ input: (type, name) =>
276
276
  ts.factory.createTypeReferenceNode(
277
- TypeFactory.getFullName(project.checker, type),
277
+ name ?? TypeFactory.getFullName(project.checker, type),
278
278
  ),
279
279
  output: () => TypeFactory.keyword("void"),
280
280
  },
@@ -23,7 +23,7 @@ export namespace RandomProgrammer {
23
23
  modulo: ts.LeftHandSideExpression,
24
24
  ) {
25
25
  const importer: FunctionImporter = new FunctionImporter();
26
- return (type: ts.Type) => {
26
+ return (type: ts.Type, name?: string) => {
27
27
  // INITIALIZE METADATA
28
28
  const collection: MetadataCollection = new MetadataCollection();
29
29
  const meta: Metadata = MetadataFactory.generate(
@@ -65,10 +65,9 @@ export namespace RandomProgrammer {
65
65
  ),
66
66
  ],
67
67
  ts.factory.createTypeReferenceNode(
68
- `typia.Primitive<${TypeFactory.getFullName(
69
- project.checker,
70
- type,
71
- )}>`,
68
+ `typia.Primitive<${
69
+ name ?? TypeFactory.getFullName(project.checker, type)
70
+ }>`,
72
71
  ),
73
72
  undefined,
74
73
  ts.factory.createBlock(
@@ -708,9 +708,9 @@ export namespace StringifyProgrammer {
708
708
  importer: FunctionImporter,
709
709
  ): FeatureProgrammer.IConfig => ({
710
710
  types: {
711
- input: (type) =>
711
+ input: (type, name) =>
712
712
  ts.factory.createTypeReferenceNode(
713
- TypeFactory.getFullName(project.checker, type),
713
+ name ?? TypeFactory.getFullName(project.checker, type),
714
714
  ),
715
715
  output: () => TypeFactory.keyword("string"),
716
716
  },
@@ -12,7 +12,7 @@ import { ValidateProgrammer } from "./ValidateProgrammer";
12
12
  export namespace ValidateCloneProgrammer {
13
13
  export const generate =
14
14
  (project: IProject, modulo: ts.LeftHandSideExpression) =>
15
- (type: ts.Type) =>
15
+ (type: ts.Type, name?: string) =>
16
16
  ts.factory.createArrowFunction(
17
17
  undefined,
18
18
  undefined,
@@ -23,10 +23,9 @@ export namespace ValidateCloneProgrammer {
23
23
  ),
24
24
  ],
25
25
  ts.factory.createTypeReferenceNode(
26
- `typia.IValidation<typia.Primitive<${TypeFactory.getFullName(
27
- project.checker,
28
- type,
29
- )}>>`,
26
+ `typia.IValidation<typia.Primitive<${
27
+ name ?? TypeFactory.getFullName(project.checker, type)
28
+ }>>`,
30
29
  ),
31
30
  undefined,
32
31
  ts.factory.createBlock([
@@ -11,7 +11,7 @@ import { ValidateProgrammer } from "./ValidateProgrammer";
11
11
  export namespace ValidateParseProgrammer {
12
12
  export const generate =
13
13
  (project: IProject, modulo: ts.LeftHandSideExpression) =>
14
- (type: ts.Type) =>
14
+ (type: ts.Type, name?: string) =>
15
15
  ts.factory.createArrowFunction(
16
16
  undefined,
17
17
  undefined,
@@ -22,10 +22,9 @@ export namespace ValidateParseProgrammer {
22
22
  ),
23
23
  ],
24
24
  ts.factory.createTypeReferenceNode(
25
- `typia.IValidation<typia.Primitive<${TypeFactory.getFullName(
26
- project.checker,
27
- type,
28
- )}>>`,
25
+ `typia.IValidation<typia.Primitive<${
26
+ name ?? TypeFactory.getFullName(project.checker, type)
27
+ }>>`,
29
28
  ),
30
29
  undefined,
31
30
  ts.factory.createBlock([
@@ -20,7 +20,7 @@ export namespace ValidateProgrammer {
20
20
  modulo: ts.LeftHandSideExpression,
21
21
  equals: boolean = false,
22
22
  ) =>
23
- (type: ts.Type) => {
23
+ (type: ts.Type, name?: string) => {
24
24
  const importer: FunctionImporter = new FunctionImporter();
25
25
  const program: ts.ArrowFunction = CheckerProgrammer.generate(
26
26
  project,
@@ -48,10 +48,9 @@ export namespace ValidateProgrammer {
48
48
  ),
49
49
  ],
50
50
  ts.factory.createTypeReferenceNode(
51
- `typia.IValidation<${TypeFactory.getFullName(
52
- project.checker,
53
- type,
54
- )}>`,
51
+ `typia.IValidation<${
52
+ name ?? TypeFactory.getFullName(project.checker, type)
53
+ }>`,
55
54
  ),
56
55
  undefined,
57
56
  ts.factory.createBlock(
@@ -12,7 +12,7 @@ import { ValidateProgrammer } from "./ValidateProgrammer";
12
12
  export namespace ValidatePruneProgrammer {
13
13
  export const generate =
14
14
  (project: IProject, modulo: ts.LeftHandSideExpression) =>
15
- (type: ts.Type) =>
15
+ (type: ts.Type, name?: string) =>
16
16
  ts.factory.createArrowFunction(
17
17
  undefined,
18
18
  undefined,
@@ -23,10 +23,9 @@ export namespace ValidatePruneProgrammer {
23
23
  ),
24
24
  ],
25
25
  ts.factory.createTypeReferenceNode(
26
- `typia.IValidation<${TypeFactory.getFullName(
27
- project.checker,
28
- type,
29
- )}>`,
26
+ `typia.IValidation<${
27
+ name ?? TypeFactory.getFullName(project.checker, type)
28
+ }>`,
30
29
  ),
31
30
  undefined,
32
31
  ts.factory.createBlock([
@@ -12,7 +12,7 @@ import { ValidateProgrammer } from "./ValidateProgrammer";
12
12
  export namespace ValidateStringifyProgrammer {
13
13
  export const generate =
14
14
  (project: IProject, modulo: ts.LeftHandSideExpression) =>
15
- (type: ts.Type) =>
15
+ (type: ts.Type, name?: string) =>
16
16
  ts.factory.createArrowFunction(
17
17
  undefined,
18
18
  undefined,
@@ -20,7 +20,8 @@ export namespace ValidateStringifyProgrammer {
20
20
  IdentifierFactory.parameter(
21
21
  "input",
22
22
  ts.factory.createTypeReferenceNode(
23
- TypeFactory.getFullName(project.checker, type),
23
+ name ??
24
+ TypeFactory.getFullName(project.checker, type),
24
25
  ),
25
26
  ),
26
27
  ],
@@ -1,38 +1,9 @@
1
- import ts from "typescript";
2
-
3
1
  import { AssertCloneProgrammer } from "../../../programmers/AssertCloneProgrammer";
4
2
 
5
- import { IProject } from "../../IProject";
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
6
4
 
7
5
  export namespace AssertCloneTransformer {
8
- export function transform(
9
- project: IProject,
10
- modulo: ts.LeftHandSideExpression,
11
- expression: ts.CallExpression,
12
- ): ts.Expression {
13
- if (expression.arguments.length !== 1)
14
- throw new Error(ErrorMessages.NO_INPUT_VALUE);
15
-
16
- // GET TYPE INFO
17
- const type: ts.Type =
18
- expression.typeArguments && expression.typeArguments[0]
19
- ? project.checker.getTypeFromTypeNode(
20
- expression.typeArguments[0],
21
- )
22
- : project.checker.getTypeAtLocation(expression.arguments[0]!);
23
- if (type.isTypeParameter())
24
- throw new Error(ErrorMessages.GENERIC_ARGUMENT);
25
-
26
- // DO TRANSFORM
27
- return ts.factory.createCallExpression(
28
- AssertCloneProgrammer.generate(project, modulo)(type),
29
- undefined,
30
- [expression.arguments[0]!],
31
- );
32
- }
33
- }
34
-
35
- const enum ErrorMessages {
36
- NO_INPUT_VALUE = "Error on typia.assertClone(): no input value.",
37
- GENERIC_ARGUMENT = "Error on typia.assertClone(): non-specified generic argument.",
6
+ export const transform = GenericTransformer.scalar("assertClone")(
7
+ (project, modulo) => AssertCloneProgrammer.generate(project, modulo),
8
+ );
38
9
  }
@@ -1,38 +1,9 @@
1
- import ts from "typescript";
2
-
3
1
  import { AssertPruneProgrammer } from "../../../programmers/AssertPruneProgrammer";
4
2
 
5
- import { IProject } from "../../IProject";
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
6
4
 
7
5
  export namespace AssertPruneTransformer {
8
- export function transform(
9
- project: IProject,
10
- modulo: ts.LeftHandSideExpression,
11
- expression: ts.CallExpression,
12
- ): ts.Expression {
13
- if (expression.arguments.length !== 1)
14
- throw new Error(ErrorMessages.NO_INPUT_VALUE);
15
-
16
- // GET TYPE INFO
17
- const type: ts.Type =
18
- expression.typeArguments && expression.typeArguments[0]
19
- ? project.checker.getTypeFromTypeNode(
20
- expression.typeArguments[0],
21
- )
22
- : project.checker.getTypeAtLocation(expression.arguments[0]!);
23
- if (type.isTypeParameter())
24
- throw new Error(ErrorMessages.GENERIC_ARGUMENT);
25
-
26
- // DO TRANSFORM
27
- return ts.factory.createCallExpression(
28
- AssertPruneProgrammer.generate(project, modulo)(type),
29
- undefined,
30
- [expression.arguments[0]!],
31
- );
32
- }
33
- }
34
-
35
- const enum ErrorMessages {
36
- NO_INPUT_VALUE = "Error on typia.assertPrune(): no input value.",
37
- GENERIC_ARGUMENT = "Error on typia.assertPrune(): non-specified generic argument.",
6
+ export const transform = GenericTransformer.scalar("assertPrune")(
7
+ (project, modulo) => AssertPruneProgrammer.generate(project, modulo),
8
+ );
38
9
  }
@@ -1,46 +1,9 @@
1
- import ts from "typescript";
2
-
3
1
  import { CloneProgrammer } from "../../../programmers/CloneProgrammer";
4
2
 
5
- import { IProject } from "../../IProject";
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
6
4
 
7
5
  export namespace CloneTransformer {
8
- export function transform(
9
- project: IProject,
10
- modulo: ts.LeftHandSideExpression,
11
- expression: ts.CallExpression,
12
- ): ts.Expression {
13
- if (expression.arguments.length !== 1)
14
- throw new Error(ErrorMessages.NO_INPUT_VALUE);
15
-
16
- const type: ts.Type =
17
- expression.typeArguments && expression.typeArguments[0]
18
- ? project.checker.getTypeFromTypeNode(
19
- expression.typeArguments[0],
20
- )
21
- : project.checker.getTypeAtLocation(expression.arguments[0]!);
22
- if (type.isTypeParameter())
23
- throw new Error(ErrorMessages.GENERIC_ARGUMENT);
24
-
25
- return ts.factory.createCallExpression(
26
- CloneProgrammer.generate(
27
- {
28
- ...project,
29
- options: {
30
- ...project.options,
31
- functional: false,
32
- numeric: false,
33
- },
34
- },
35
- modulo,
36
- )(type),
37
- undefined,
38
- [expression.arguments[0]!],
39
- );
40
- }
41
- }
42
-
43
- const enum ErrorMessages {
44
- NO_INPUT_VALUE = "Error on typia.clone(): no input value.",
45
- GENERIC_ARGUMENT = "Error on typia.clone(): non-specified generic argument.",
6
+ export const transform = GenericTransformer.scalar("clone")(
7
+ (project, modulo) => CloneProgrammer.generate(project, modulo),
8
+ );
46
9
  }
@@ -1,32 +1,9 @@
1
- import ts from "typescript";
2
-
3
1
  import { AssertCloneProgrammer } from "../../../programmers/AssertCloneProgrammer";
4
2
 
5
- import { IProject } from "../../IProject";
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
6
4
 
7
5
  export namespace CreateAssertCloneTransformer {
8
- export function transform(
9
- project: IProject,
10
- modulo: ts.LeftHandSideExpression,
11
- expression: ts.CallExpression,
12
- ): ts.Expression {
13
- // CHECK GENERIC ARGUMENT EXISTENCE
14
- if (!expression.typeArguments?.[0])
15
- throw new Error(ErrorMessages.NOT_SPECIFIED);
16
-
17
- // GET TYPE INFO
18
- const type: ts.Type = project.checker.getTypeFromTypeNode(
19
- expression.typeArguments[0],
20
- );
21
- if (type.isTypeParameter())
22
- throw new Error(ErrorMessages.GENERIC_ARGUMENT);
23
-
24
- // DO TRANSFORM
25
- return AssertCloneProgrammer.generate(project, modulo)(type);
26
- }
27
- }
28
-
29
- const enum ErrorMessages {
30
- NOT_SPECIFIED = "Error on typia.assertClone(): generic argument is not specified.",
31
- GENERIC_ARGUMENT = "Error on typia.assertClone(): non-specified generic argument.",
6
+ export const transform = GenericTransformer.factory("createAssertClone")(
7
+ (project, modulo) => AssertCloneProgrammer.generate(project, modulo),
8
+ );
32
9
  }
@@ -1,32 +1,9 @@
1
- import ts from "typescript";
2
-
3
1
  import { AssertPruneProgrammer } from "../../../programmers/AssertPruneProgrammer";
4
2
 
5
- import { IProject } from "../../IProject";
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
6
4
 
7
5
  export namespace CreateAssertPruneTransformer {
8
- export function transform(
9
- project: IProject,
10
- modulo: ts.LeftHandSideExpression,
11
- expression: ts.CallExpression,
12
- ): ts.Expression {
13
- // CHECK GENERIC ARGUMENT EXISTENCE
14
- if (!expression.typeArguments?.[0])
15
- throw new Error(ErrorMessages.NOT_SPECIFIED);
16
-
17
- // GET TYPE INFO
18
- const type: ts.Type = project.checker.getTypeFromTypeNode(
19
- expression.typeArguments[0],
20
- );
21
- if (type.isTypeParameter())
22
- throw new Error(ErrorMessages.GENERIC_ARGUMENT);
23
-
24
- // DO TRANSFORM
25
- return AssertPruneProgrammer.generate(project, modulo)(type);
26
- }
27
- }
28
-
29
- const enum ErrorMessages {
30
- NOT_SPECIFIED = "Error on typia.assertPrune(): generic argument is not specified.",
31
- GENERIC_ARGUMENT = "Error on typia.assertPrune(): non-specified generic argument.",
6
+ export const transform = GenericTransformer.factory("createAssertPrune")(
7
+ (project, modulo) => AssertPruneProgrammer.generate(project, modulo),
8
+ );
32
9
  }
@@ -1,31 +1,9 @@
1
- import ts from "typescript";
2
-
3
1
  import { CloneProgrammer } from "../../../programmers/CloneProgrammer";
4
2
 
5
- import { IProject } from "../../IProject";
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
6
4
 
7
5
  export namespace CreateCloneTransformer {
8
- export function transform(
9
- project: IProject,
10
- modulo: ts.LeftHandSideExpression,
11
- expression: ts.CallExpression,
12
- ): ts.Expression {
13
- // CHECK GENERIC ARGUMENT EXISTENCE
14
- if (!expression.typeArguments?.[0])
15
- throw new Error(ErrorMessages.NOT_SPECIFIED);
16
-
17
- // GET TYPE INFO
18
- const type: ts.Type = project.checker.getTypeFromTypeNode(
19
- expression.typeArguments[0],
20
- );
21
- if (type.isTypeParameter())
22
- throw new Error(ErrorMessages.GENERIC_ARGUMENT);
23
-
24
- return CloneProgrammer.generate(project, modulo)(type);
25
- }
26
- }
27
-
28
- const enum ErrorMessages {
29
- NOT_SPECIFIED = "Error on typia.clone(): generic argument is not specified.",
30
- GENERIC_ARGUMENT = "Error on typia.clone(): non-specified generic argument.",
6
+ export const transform = GenericTransformer.factory("createClone")(
7
+ (project, modulo) => CloneProgrammer.generate(project, modulo),
8
+ );
31
9
  }
@@ -1,32 +1,9 @@
1
- import ts from "typescript";
2
-
3
1
  import { IsCloneProgrammer } from "../../../programmers/IsCloneProgrammer";
4
2
 
5
- import { IProject } from "../../IProject";
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
6
4
 
7
5
  export namespace CreateIsCloneTransformer {
8
- export function transform(
9
- project: IProject,
10
- modulo: ts.LeftHandSideExpression,
11
- expression: ts.CallExpression,
12
- ): ts.Expression {
13
- // CHECK GENERIC ARGUMENT EXISTENCE
14
- if (!expression.typeArguments?.[0])
15
- throw new Error(ErrorMessages.NOT_SPECIFIED);
16
-
17
- // GET TYPE INFO
18
- const type: ts.Type = project.checker.getTypeFromTypeNode(
19
- expression.typeArguments[0],
20
- );
21
- if (type.isTypeParameter())
22
- throw new Error(ErrorMessages.GENERIC_ARGUMENT);
23
-
24
- // DO TRANSFORM
25
- return IsCloneProgrammer.generate(project, modulo)(type);
26
- }
27
- }
28
-
29
- const enum ErrorMessages {
30
- NOT_SPECIFIED = "Error on typia.isClone(): generic argument is not specified.",
31
- GENERIC_ARGUMENT = "Error on typia.isClone(): non-specified generic argument.",
6
+ export const transform = GenericTransformer.factory("createIsClone")(
7
+ (project, modulo) => IsCloneProgrammer.generate(project, modulo),
8
+ );
32
9
  }
@@ -1,32 +1,9 @@
1
- import ts from "typescript";
2
-
3
1
  import { IsPruneProgrammer } from "../../../programmers/IsPruneProgrammer";
4
2
 
5
- import { IProject } from "../../IProject";
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
6
4
 
7
5
  export namespace CreateIsPruneTransformer {
8
- export function transform(
9
- project: IProject,
10
- modulo: ts.LeftHandSideExpression,
11
- expression: ts.CallExpression,
12
- ): ts.Expression {
13
- // CHECK GENERIC ARGUMENT EXISTENCE
14
- if (!expression.typeArguments?.[0])
15
- throw new Error(ErrorMessages.NOT_SPECIFIED);
16
-
17
- // GET TYPE INFO
18
- const type: ts.Type = project.checker.getTypeFromTypeNode(
19
- expression.typeArguments[0],
20
- );
21
- if (type.isTypeParameter())
22
- throw new Error(ErrorMessages.GENERIC_ARGUMENT);
23
-
24
- // DO TRANSFORM
25
- return IsPruneProgrammer.generate(project, modulo)(type);
26
- }
27
- }
28
-
29
- const enum ErrorMessages {
30
- NOT_SPECIFIED = "Error on typia.isPrune(): generic argument is not specified.",
31
- GENERIC_ARGUMENT = "Error on typia.isPrune(): non-specified generic argument.",
6
+ export const transform = GenericTransformer.factory("createIsPrune")(
7
+ (project, modulo) => IsPruneProgrammer.generate(project, modulo),
8
+ );
32
9
  }