typia 5.0.0-dev.20230827 → 5.0.0-dev.20230828

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 (265) hide show
  1. package/lib/executable/TypiaGenerateWizard.js +1 -1
  2. package/lib/executable/TypiaGenerateWizard.js.map +1 -1
  3. package/lib/executable/TypiaSetupWizard.js +1 -1
  4. package/lib/executable/TypiaSetupWizard.js.map +1 -1
  5. package/lib/executable/setup/PackageManager.js +1 -1
  6. package/lib/executable/setup/PackageManager.js.map +1 -1
  7. package/lib/executable/setup/PluginConfigurator.js +2 -2
  8. package/lib/executable/setup/PluginConfigurator.js.map +1 -1
  9. package/lib/factories/ExpressionFactory.js +2 -2
  10. package/lib/factories/ExpressionFactory.js.map +1 -1
  11. package/lib/factories/JsonMetadataFactory.d.ts +7 -0
  12. package/lib/factories/JsonMetadataFactory.js +38 -0
  13. package/lib/factories/JsonMetadataFactory.js.map +1 -0
  14. package/lib/factories/LiteralFactory.js +1 -1
  15. package/lib/factories/LiteralFactory.js.map +1 -1
  16. package/lib/factories/MetadataCollection.js +0 -1
  17. package/lib/factories/MetadataCollection.js.map +1 -1
  18. package/lib/factories/MetadataCommentTagFactory.js +129 -118
  19. package/lib/factories/MetadataCommentTagFactory.js.map +1 -1
  20. package/lib/factories/MetadataFactory.d.ts +22 -2
  21. package/lib/factories/MetadataFactory.js +221 -17
  22. package/lib/factories/MetadataFactory.js.map +1 -1
  23. package/lib/factories/MetadataTypeTagFactory.d.ts +3 -2
  24. package/lib/factories/MetadataTypeTagFactory.js +246 -173
  25. package/lib/factories/MetadataTypeTagFactory.js.map +1 -1
  26. package/lib/factories/ProtobufFactory.js +73 -68
  27. package/lib/factories/ProtobufFactory.js.map +1 -1
  28. package/lib/factories/TypeFactory.d.ts +0 -1
  29. package/lib/factories/TypeFactory.js +0 -5
  30. package/lib/factories/TypeFactory.js.map +1 -1
  31. package/lib/factories/internal/metadata/emplace_metadata_alias.d.ts +1 -1
  32. package/lib/factories/internal/metadata/emplace_metadata_alias.js +20 -7
  33. package/lib/factories/internal/metadata/emplace_metadata_alias.js.map +1 -1
  34. package/lib/factories/internal/metadata/emplace_metadata_array_type.d.ts +1 -1
  35. package/lib/factories/internal/metadata/emplace_metadata_array_type.js +20 -7
  36. package/lib/factories/internal/metadata/emplace_metadata_array_type.js.map +1 -1
  37. package/lib/factories/internal/metadata/emplace_metadata_object.d.ts +1 -1
  38. package/lib/factories/internal/metadata/emplace_metadata_object.js +100 -84
  39. package/lib/factories/internal/metadata/emplace_metadata_object.js.map +1 -1
  40. package/lib/factories/internal/metadata/emplace_metadata_tuple.d.ts +1 -1
  41. package/lib/factories/internal/metadata/emplace_metadata_tuple.js +34 -21
  42. package/lib/factories/internal/metadata/emplace_metadata_tuple.js.map +1 -1
  43. package/lib/factories/internal/metadata/explore_metadata.d.ts +1 -1
  44. package/lib/factories/internal/metadata/explore_metadata.js +12 -12
  45. package/lib/factories/internal/metadata/explore_metadata.js.map +1 -1
  46. package/lib/factories/internal/metadata/iterate_metadata.d.ts +1 -1
  47. package/lib/factories/internal/metadata/iterate_metadata.js +39 -19
  48. package/lib/factories/internal/metadata/iterate_metadata.js.map +1 -1
  49. package/lib/factories/internal/metadata/iterate_metadata_alias.d.ts +1 -1
  50. package/lib/factories/internal/metadata/iterate_metadata_alias.js +12 -10
  51. package/lib/factories/internal/metadata/iterate_metadata_alias.js.map +1 -1
  52. package/lib/factories/internal/metadata/iterate_metadata_array.d.ts +1 -1
  53. package/lib/factories/internal/metadata/iterate_metadata_array.js +11 -9
  54. package/lib/factories/internal/metadata/iterate_metadata_array.js.map +1 -1
  55. package/lib/factories/internal/metadata/iterate_metadata_collection.d.ts +2 -1
  56. package/lib/factories/internal/metadata/iterate_metadata_collection.js +47 -45
  57. package/lib/factories/internal/metadata/iterate_metadata_collection.js.map +1 -1
  58. package/lib/factories/internal/metadata/iterate_metadata_comment_tags.d.ts +2 -1
  59. package/lib/factories/internal/metadata/iterate_metadata_comment_tags.js +16 -20
  60. package/lib/factories/internal/metadata/iterate_metadata_comment_tags.js.map +1 -1
  61. package/lib/factories/internal/metadata/iterate_metadata_intersection.d.ts +1 -1
  62. package/lib/factories/internal/metadata/iterate_metadata_intersection.js +145 -135
  63. package/lib/factories/internal/metadata/iterate_metadata_intersection.js.map +1 -1
  64. package/lib/factories/internal/metadata/iterate_metadata_map.d.ts +1 -1
  65. package/lib/factories/internal/metadata/iterate_metadata_map.js +28 -15
  66. package/lib/factories/internal/metadata/iterate_metadata_map.js.map +1 -1
  67. package/lib/factories/internal/metadata/iterate_metadata_object.d.ts +1 -1
  68. package/lib/factories/internal/metadata/iterate_metadata_object.js +16 -14
  69. package/lib/factories/internal/metadata/iterate_metadata_object.js.map +1 -1
  70. package/lib/factories/internal/metadata/iterate_metadata_resolve.d.ts +1 -1
  71. package/lib/factories/internal/metadata/iterate_metadata_resolve.js +28 -15
  72. package/lib/factories/internal/metadata/iterate_metadata_resolve.js.map +1 -1
  73. package/lib/factories/internal/metadata/iterate_metadata_set.d.ts +1 -1
  74. package/lib/factories/internal/metadata/iterate_metadata_set.js +24 -11
  75. package/lib/factories/internal/metadata/iterate_metadata_set.js.map +1 -1
  76. package/lib/factories/internal/metadata/iterate_metadata_template.d.ts +1 -1
  77. package/lib/factories/internal/metadata/iterate_metadata_template.js +28 -15
  78. package/lib/factories/internal/metadata/iterate_metadata_template.js.map +1 -1
  79. package/lib/factories/internal/metadata/iterate_metadata_tuple.d.ts +1 -1
  80. package/lib/factories/internal/metadata/iterate_metadata_tuple.js +11 -9
  81. package/lib/factories/internal/metadata/iterate_metadata_tuple.js.map +1 -1
  82. package/lib/factories/internal/metadata/iterate_metadata_union.d.ts +1 -1
  83. package/lib/factories/internal/metadata/iterate_metadata_union.js +20 -7
  84. package/lib/factories/internal/metadata/iterate_metadata_union.js.map +1 -1
  85. package/lib/programmers/CheckerProgrammer.js +13 -8
  86. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  87. package/lib/programmers/FeatureProgrammer.d.ts +1 -1
  88. package/lib/programmers/FeatureProgrammer.js +1 -1
  89. package/lib/programmers/FeatureProgrammer.js.map +1 -1
  90. package/lib/programmers/IsProgrammer.js +1 -1
  91. package/lib/programmers/IsProgrammer.js.map +1 -1
  92. package/lib/programmers/RandomProgrammer.js +9 -4
  93. package/lib/programmers/RandomProgrammer.js.map +1 -1
  94. package/lib/programmers/TypiaProgrammer.js +58 -28
  95. package/lib/programmers/TypiaProgrammer.js.map +1 -1
  96. package/lib/programmers/internal/application_escaped.d.ts +4 -0
  97. package/lib/programmers/internal/{application_resolved.js → application_escaped.js} +4 -4
  98. package/lib/programmers/internal/application_escaped.js.map +1 -0
  99. package/lib/programmers/internal/application_schema.js +5 -5
  100. package/lib/programmers/internal/application_schema.js.map +1 -1
  101. package/lib/programmers/json/JsonApplicationProgrammer.js +5 -1
  102. package/lib/programmers/json/JsonApplicationProgrammer.js.map +1 -1
  103. package/lib/programmers/json/JsonAssertParseProgrammer.js +2 -0
  104. package/lib/programmers/json/JsonAssertParseProgrammer.js.map +1 -1
  105. package/lib/programmers/json/JsonIsParseProgrammer.js +2 -0
  106. package/lib/programmers/json/JsonIsParseProgrammer.js.map +1 -1
  107. package/lib/programmers/json/JsonStringifyProgrammer.js +20 -62
  108. package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
  109. package/lib/programmers/json/JsonValidateParseProgrammer.js +2 -0
  110. package/lib/programmers/json/JsonValidateParseProgrammer.js.map +1 -1
  111. package/lib/programmers/misc/MiscCloneProgrammer.js +13 -8
  112. package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
  113. package/lib/programmers/misc/MiscLiteralsProgrammer.js +10 -5
  114. package/lib/programmers/misc/MiscLiteralsProgrammer.js.map +1 -1
  115. package/lib/programmers/misc/MiscPruneProgrammer.js +13 -8
  116. package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
  117. package/lib/schemas/metadata/Metadata.js +4 -4
  118. package/lib/schemas/metadata/Metadata.js.map +1 -1
  119. package/lib/transform.d.ts +2 -1
  120. package/lib/transform.js +11 -3
  121. package/lib/transform.js.map +1 -1
  122. package/lib/transformers/CallExpressionTransformer.d.ts +1 -1
  123. package/lib/transformers/CallExpressionTransformer.js +2 -1
  124. package/lib/transformers/CallExpressionTransformer.js.map +1 -1
  125. package/lib/transformers/FileTransformer.js +18 -8
  126. package/lib/transformers/FileTransformer.js.map +1 -1
  127. package/lib/transformers/IProject.d.ts +3 -0
  128. package/lib/transformers/NodeTransformer.d.ts +1 -1
  129. package/lib/transformers/TransformerError.d.ts +12 -0
  130. package/lib/transformers/TransformerError.js +66 -0
  131. package/lib/transformers/TransformerError.js.map +1 -0
  132. package/lib/transformers/features/AssertTransformer.d.ts +1 -0
  133. package/lib/transformers/features/CreateAssertTransformer.d.ts +1 -0
  134. package/lib/transformers/features/CreateIsTransformer.d.ts +1 -0
  135. package/lib/transformers/features/CreateRandomTransformer.js +9 -4
  136. package/lib/transformers/features/CreateRandomTransformer.js.map +1 -1
  137. package/lib/transformers/features/CreateValidateTransformer.d.ts +1 -0
  138. package/lib/transformers/features/IsTransformer.d.ts +1 -0
  139. package/lib/transformers/features/RandomTransformer.js +9 -4
  140. package/lib/transformers/features/RandomTransformer.js.map +1 -1
  141. package/lib/transformers/features/ValidateTransformer.d.ts +1 -0
  142. package/lib/transformers/features/json/JsonApplicationTransformer.js +79 -19
  143. package/lib/transformers/features/json/JsonApplicationTransformer.js.map +1 -1
  144. package/lib/transformers/features/json/JsonAssertParseTransformer.d.ts +1 -0
  145. package/lib/transformers/features/json/JsonAssertStringifyTransformer.d.ts +1 -0
  146. package/lib/transformers/features/json/JsonCreateAssertParseTransformer.d.ts +1 -0
  147. package/lib/transformers/features/json/JsonCreateAssertStringifyTransformer.d.ts +1 -0
  148. package/lib/transformers/features/json/JsonCreateIsParseTransformer.d.ts +1 -0
  149. package/lib/transformers/features/json/JsonCreateIsStringifyTransformer.d.ts +1 -0
  150. package/lib/transformers/features/json/JsonCreateStringifyTransformer.d.ts +1 -0
  151. package/lib/transformers/features/json/JsonCreateValidateParseTransformer.d.ts +1 -0
  152. package/lib/transformers/features/json/JsonCreateValidateStringifyProgrammer.d.ts +1 -0
  153. package/lib/transformers/features/json/JsonIsParseTransformer.d.ts +1 -0
  154. package/lib/transformers/features/json/JsonIsStringifyTransformer.d.ts +1 -0
  155. package/lib/transformers/features/json/JsonStringifyTransformer.d.ts +1 -0
  156. package/lib/transformers/features/json/JsonValidateParseTransformer.d.ts +1 -0
  157. package/lib/transformers/features/json/JsonValidateStringifyTransformer.d.ts +1 -0
  158. package/lib/transformers/features/misc/MetadataTransformer.js +13 -5
  159. package/lib/transformers/features/misc/MetadataTransformer.js.map +1 -1
  160. package/lib/transformers/features/misc/MiscAssertCloneTransformer.d.ts +1 -0
  161. package/lib/transformers/features/misc/MiscAssertPruneTransformer.d.ts +1 -0
  162. package/lib/transformers/features/misc/MiscCloneTransformer.d.ts +1 -0
  163. package/lib/transformers/features/misc/MiscCreateAssertCloneTransformer.d.ts +1 -0
  164. package/lib/transformers/features/misc/MiscCreateAssertPruneTransformer.d.ts +1 -0
  165. package/lib/transformers/features/misc/MiscCreateCloneTransformer.d.ts +1 -0
  166. package/lib/transformers/features/misc/MiscCreateIsCloneTransformer.d.ts +1 -0
  167. package/lib/transformers/features/misc/MiscCreateIsPruneTransformer.d.ts +1 -0
  168. package/lib/transformers/features/misc/MiscCreatePruneTransformer.d.ts +1 -0
  169. package/lib/transformers/features/misc/MiscCreateValidateCloneTransformer.d.ts +1 -0
  170. package/lib/transformers/features/misc/MiscCreateValidatePruneTransformer.d.ts +1 -0
  171. package/lib/transformers/features/misc/MiscIsCloneTransformer.d.ts +1 -0
  172. package/lib/transformers/features/misc/MiscIsPruneTransformer.d.ts +1 -0
  173. package/lib/transformers/features/misc/MiscLiteralsTransformer.js +9 -4
  174. package/lib/transformers/features/misc/MiscLiteralsTransformer.js.map +1 -1
  175. package/lib/transformers/features/misc/MiscPruneTransformer.d.ts +1 -0
  176. package/lib/transformers/features/misc/MiscValidateCloneTransformer.d.ts +1 -0
  177. package/lib/transformers/features/misc/MiscValidatePruneTransformer.d.ts +1 -0
  178. package/lib/transformers/features/protobuf/CreateProtobufAssertDecodeTransformer.d.ts +1 -0
  179. package/lib/transformers/features/protobuf/CreateProtobufAssertEncodeTransformer.d.ts +1 -0
  180. package/lib/transformers/features/protobuf/CreateProtobufDecodeTransformer.d.ts +1 -0
  181. package/lib/transformers/features/protobuf/CreateProtobufEncodeTransformer.d.ts +1 -0
  182. package/lib/transformers/features/protobuf/CreateProtobufIsDecodeTransformer.d.ts +1 -0
  183. package/lib/transformers/features/protobuf/CreateProtobufIsEncodeTransformer.d.ts +1 -0
  184. package/lib/transformers/features/protobuf/CreateProtobufValidateDecodeTransformer.d.ts +1 -0
  185. package/lib/transformers/features/protobuf/CreateProtobufValidateEncodeTransformer.d.ts +1 -0
  186. package/lib/transformers/features/protobuf/ProtobufAssertDecodeTransformer.d.ts +1 -0
  187. package/lib/transformers/features/protobuf/ProtobufAssertEncodeTransformer.d.ts +1 -0
  188. package/lib/transformers/features/protobuf/ProtobufDecodeTransformer.d.ts +1 -0
  189. package/lib/transformers/features/protobuf/ProtobufEncodeTransformer.d.ts +1 -0
  190. package/lib/transformers/features/protobuf/ProtobufIsDecodeTransformer.d.ts +1 -0
  191. package/lib/transformers/features/protobuf/ProtobufIsEncodeTransformer.d.ts +1 -0
  192. package/lib/transformers/features/protobuf/ProtobufMessageTransformer.js +9 -2
  193. package/lib/transformers/features/protobuf/ProtobufMessageTransformer.js.map +1 -1
  194. package/lib/transformers/features/protobuf/ProtobufValidateDecodeTransformer.d.ts +1 -0
  195. package/lib/transformers/features/protobuf/ProtobufValidateEncodeTransformer.d.ts +1 -0
  196. package/lib/transformers/internal/GenericTransformer.js +17 -4
  197. package/lib/transformers/internal/GenericTransformer.js.map +1 -1
  198. package/lib/typings/ValidationPipe.d.ts +7 -0
  199. package/lib/typings/ValidationPipe.js +3 -0
  200. package/lib/typings/ValidationPipe.js.map +1 -0
  201. package/package.json +3 -1
  202. package/src/executable/TypiaGenerateWizard.ts +1 -1
  203. package/src/executable/TypiaSetupWizard.ts +1 -1
  204. package/src/executable/setup/PackageManager.ts +1 -1
  205. package/src/executable/setup/PluginConfigurator.ts +2 -2
  206. package/src/factories/ExpressionFactory.ts +2 -2
  207. package/src/factories/JsonMetadataFactory.ts +43 -0
  208. package/src/factories/LiteralFactory.ts +2 -1
  209. package/src/factories/MetadataCollection.ts +0 -5
  210. package/src/factories/MetadataCommentTagFactory.ts +130 -84
  211. package/src/factories/MetadataFactory.ts +169 -7
  212. package/src/factories/MetadataTypeTagFactory.ts +191 -141
  213. package/src/factories/ProtobufFactory.ts +86 -93
  214. package/src/factories/TypeFactory.ts +0 -5
  215. package/src/factories/internal/metadata/emplace_metadata_alias.ts +12 -5
  216. package/src/factories/internal/metadata/emplace_metadata_array_type.ts +12 -5
  217. package/src/factories/internal/metadata/emplace_metadata_object.ts +20 -5
  218. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +12 -2
  219. package/src/factories/internal/metadata/explore_metadata.ts +5 -11
  220. package/src/factories/internal/metadata/iterate_metadata.ts +44 -24
  221. package/src/factories/internal/metadata/iterate_metadata_alias.ts +7 -2
  222. package/src/factories/internal/metadata/iterate_metadata_array.ts +7 -2
  223. package/src/factories/internal/metadata/iterate_metadata_collection.ts +30 -29
  224. package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +21 -22
  225. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +33 -17
  226. package/src/factories/internal/metadata/iterate_metadata_map.ts +20 -4
  227. package/src/factories/internal/metadata/iterate_metadata_object.ts +2 -1
  228. package/src/factories/internal/metadata/iterate_metadata_resolve.ts +15 -12
  229. package/src/factories/internal/metadata/iterate_metadata_set.ts +11 -2
  230. package/src/factories/internal/metadata/iterate_metadata_template.ts +12 -3
  231. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +7 -2
  232. package/src/factories/internal/metadata/iterate_metadata_union.ts +10 -7
  233. package/src/programmers/CheckerProgrammer.ts +8 -2
  234. package/src/programmers/FeatureProgrammer.ts +4 -1
  235. package/src/programmers/IsProgrammer.ts +1 -1
  236. package/src/programmers/RandomProgrammer.ts +18 -17
  237. package/src/programmers/TypiaProgrammer.ts +27 -2
  238. package/src/programmers/internal/{application_resolved.ts → application_escaped.ts} +1 -1
  239. package/src/programmers/internal/application_schema.ts +5 -5
  240. package/src/programmers/json/JsonApplicationProgrammer.ts +6 -3
  241. package/src/programmers/json/JsonAssertParseProgrammer.ts +7 -2
  242. package/src/programmers/json/JsonIsParseProgrammer.ts +7 -2
  243. package/src/programmers/json/JsonStringifyProgrammer.ts +7 -37
  244. package/src/programmers/json/JsonValidateParseProgrammer.ts +7 -2
  245. package/src/programmers/json/JsonValidateStringifyProgrammer.ts +1 -1
  246. package/src/programmers/misc/MiscCloneProgrammer.ts +14 -11
  247. package/src/programmers/misc/MiscLiteralsProgrammer.ts +11 -6
  248. package/src/programmers/misc/MiscPruneProgrammer.ts +8 -2
  249. package/src/schemas/metadata/Metadata.ts +4 -4
  250. package/src/transform.ts +13 -5
  251. package/src/transformers/CallExpressionTransformer.ts +6 -3
  252. package/src/transformers/FileTransformer.ts +25 -13
  253. package/src/transformers/IProject.ts +3 -0
  254. package/src/transformers/NodeTransformer.ts +1 -1
  255. package/src/transformers/TransformerError.ts +55 -0
  256. package/src/transformers/features/CreateRandomTransformer.ts +11 -7
  257. package/src/transformers/features/RandomTransformer.ts +11 -7
  258. package/src/transformers/features/json/JsonApplicationTransformer.ts +39 -35
  259. package/src/transformers/features/misc/MetadataTransformer.ts +18 -10
  260. package/src/transformers/features/misc/MiscLiteralsTransformer.ts +11 -7
  261. package/src/transformers/features/protobuf/ProtobufMessageTransformer.ts +9 -7
  262. package/src/transformers/internal/GenericTransformer.ts +17 -10
  263. package/src/typings/ValidationPipe.ts +9 -0
  264. package/lib/programmers/internal/application_resolved.d.ts +0 -4
  265. package/lib/programmers/internal/application_resolved.js.map +0 -1
@@ -3,6 +3,7 @@ import ts from "typescript";
3
3
  import { RandomProgrammer } from "../../programmers/RandomProgrammer";
4
4
 
5
5
  import { IProject } from "../IProject";
6
+ import { TransformerError } from "../TransformerError";
6
7
 
7
8
  export namespace RandomTransformer {
8
9
  export const transform =
@@ -10,13 +11,21 @@ export namespace RandomTransformer {
10
11
  (modulo: ts.LeftHandSideExpression) =>
11
12
  (expression: ts.CallExpression): ts.Expression => {
12
13
  // CHECK GENERIC ARGUMENT EXISTENCE
13
- if (!expression.typeArguments?.[0]) throw new Error(NOT_SPECIFIED);
14
+ if (!expression.typeArguments?.[0])
15
+ throw new TransformerError({
16
+ code: `typia.${modulo.getText()}`,
17
+ message: "generic argument is not specified.",
18
+ });
14
19
 
15
20
  // GET TYPE INFO
16
21
  const node: ts.TypeNode = expression.typeArguments[0];
17
22
  const type: ts.Type = project.checker.getTypeFromTypeNode(node);
18
23
 
19
- if (type.isTypeParameter()) throw new Error(NO_GENERIC_ARGUMENT);
24
+ if (type.isTypeParameter())
25
+ throw new TransformerError({
26
+ code: `typia.${modulo.getText()}`,
27
+ message: "non-specified generic argument.",
28
+ });
20
29
 
21
30
  // DO TRANSFORM
22
31
  return ts.factory.createCallExpression(
@@ -35,8 +44,3 @@ export namespace RandomTransformer {
35
44
  );
36
45
  };
37
46
  }
38
-
39
- const NOT_SPECIFIED =
40
- "Error on typia.random(): generic argument is not specified.";
41
- const NO_GENERIC_ARGUMENT =
42
- "Error on typia.random(): non-specified generic argument.";
@@ -1,5 +1,6 @@
1
1
  import ts from "typescript";
2
2
 
3
+ import { JsonMetadataFactory } from "../../../factories/JsonMetadataFactory";
3
4
  import { LiteralFactory } from "../../../factories/LiteralFactory";
4
5
  import { MetadataCollection } from "../../../factories/MetadataCollection";
5
6
  import { MetadataFactory } from "../../../factories/MetadataFactory";
@@ -9,14 +10,20 @@ import { Metadata } from "../../../schemas/metadata/Metadata";
9
10
 
10
11
  import { JsonApplicationProgrammer } from "../../../programmers/json/JsonApplicationProgrammer";
11
12
 
13
+ import { ValidationPipe } from "../../../typings/ValidationPipe";
14
+
12
15
  import { IProject } from "../../IProject";
16
+ import { TransformerError } from "../../TransformerError";
13
17
 
14
18
  export namespace JsonApplicationTransformer {
15
19
  export const transform =
16
20
  ({ checker }: IProject) =>
17
21
  (expression: ts.CallExpression): ts.Expression => {
18
22
  if (!expression.typeArguments?.length)
19
- throw new Error(NO_GENERIC_ARGUMENT);
23
+ throw new TransformerError({
24
+ code: "typia.json.application",
25
+ message: "no generic argument.",
26
+ });
20
27
 
21
28
  //----
22
29
  // GET ARGUMENTS
@@ -32,7 +39,10 @@ export namespace JsonApplicationTransformer {
32
39
  checker.getTypeFromTypeNode(child as ts.TypeNode),
33
40
  );
34
41
  if (types.some((t) => t.isTypeParameter()))
35
- throw new Error(GENERIC_ARGUMENT);
42
+ throw new TransformerError({
43
+ code: "typia.json.application",
44
+ message: "non-specified generic argument(s).",
45
+ });
36
46
 
37
47
  // ADDITIONAL PARAMETERS
38
48
  const purpose: "swagger" | "ajv" = get_parameter(
@@ -48,24 +58,25 @@ export namespace JsonApplicationTransformer {
48
58
  //----
49
59
  // METADATA
50
60
  const collection: MetadataCollection = new MetadataCollection();
51
- const metadatas: Array<Metadata> = types.map((type) =>
52
- MetadataFactory.analyze(checker)({
53
- escape: true,
54
- constant: true,
55
- absorb: false,
56
- validate: (meta) => {
57
- if (meta.atomics.find((atom) => atom.type === "bigint"))
58
- throw new Error(NO_BIGIT);
59
- else if (
60
- meta.arrays.some(
61
- (array) =>
62
- array.type.value.isRequired() === false,
63
- )
64
- )
65
- throw new Error(NO_UNDEFINED_IN_ARRAY);
66
- },
67
- })(collection)(type),
68
- );
61
+ const results: ValidationPipe<Metadata, MetadataFactory.IError>[] =
62
+ types.map((type) =>
63
+ MetadataFactory.analyze(checker)({
64
+ escape: true,
65
+ constant: true,
66
+ absorb: false,
67
+ validate: JsonMetadataFactory.validate,
68
+ })(collection)(type),
69
+ );
70
+
71
+ // REPORT BUG IF REQUIRED
72
+ const metadatas: Metadata[] = [];
73
+ const errors: MetadataFactory.IError[] = [];
74
+ for (const r of results) {
75
+ if (r.success === false) errors.push(...r.errors);
76
+ else metadatas.push(r.data);
77
+ }
78
+ if (errors.length)
79
+ throw TransformerError.from("typia.json.application")(errors);
69
80
 
70
81
  // APPLICATION
71
82
  const app: IJsonApplication = JsonApplicationProgrammer.write({
@@ -88,25 +99,18 @@ export namespace JsonApplicationTransformer {
88
99
  // CHECK LITERAL TYPE
89
100
  const type: ts.Type = checker.getTypeFromTypeNode(node);
90
101
  if (!type.isLiteral())
91
- throw new Error(
92
- `Error on typia.application(): generic argument "${name}" must be constant.`,
93
- );
102
+ throw new TransformerError({
103
+ code: "typia.json.application",
104
+ message: `generic argument "${name}" must be constant.`,
105
+ });
94
106
 
95
107
  // GET VALUE AND VALIDATE IT
96
108
  const value = type.value;
97
109
  if (typeof value !== "string" || predicator(value) === false)
98
- throw new Error(
99
- `Error on typia.application(): invalid value on generic argument "${name}".`,
100
- );
110
+ throw new TransformerError({
111
+ code: "typia.json.application",
112
+ message: `invalid value on generic argument "${name}".`,
113
+ });
101
114
  return value as T;
102
115
  };
103
116
  }
104
-
105
- const NO_GENERIC_ARGUMENT =
106
- "Error on typia.json.application(): no generic argument.";
107
- const GENERIC_ARGUMENT =
108
- "Error on typia.json.application(): non-specified generic argument(s).";
109
- const NO_BIGIT =
110
- "Error on typia.json.application(): does not allow bigint type.";
111
- const NO_UNDEFINED_IN_ARRAY =
112
- "Error on typia.json.application(): does not allow undefined type in array.";
@@ -8,13 +8,17 @@ import { IMetadataApplication } from "../../../schemas/metadata/IMetadataApplica
8
8
  import { Metadata } from "../../../schemas/metadata/Metadata";
9
9
 
10
10
  import { IProject } from "../../IProject";
11
+ import { TransformerError } from "../../TransformerError";
11
12
 
12
13
  export namespace MetadataTransformer {
13
14
  export const transform =
14
15
  ({ checker }: IProject) =>
15
16
  (expression: ts.CallExpression): ts.Expression => {
16
17
  if (!expression.typeArguments?.length)
17
- throw new Error(NO_GENERIC_ARGUMENT);
18
+ throw new TransformerError({
19
+ code: "typia.metadata",
20
+ message: "no generic argument.",
21
+ });
18
22
 
19
23
  // VALIDATE TUPLE ARGUMENTS
20
24
  const top: ts.Node = expression.typeArguments[0]!;
@@ -27,17 +31,25 @@ export namespace MetadataTransformer {
27
31
  checker.getTypeFromTypeNode(child as ts.TypeNode),
28
32
  );
29
33
  if (types.some((t) => t.isTypeParameter()))
30
- throw new Error(GENERIC_ARGUMENT);
34
+ throw new TransformerError({
35
+ code: "typia.metadata",
36
+ message: "non-specified generic argument(s).",
37
+ });
31
38
 
32
39
  // METADATA
33
40
  const collection: MetadataCollection = new MetadataCollection();
34
- const metadatas: Array<Metadata> = types.map((type) =>
35
- MetadataFactory.analyze(checker)({
41
+ const metadatas: Array<Metadata> = types.map((type) => {
42
+ const result = MetadataFactory.analyze(checker)({
36
43
  escape: true,
37
44
  constant: true,
38
45
  absorb: true,
39
- })(collection)(type),
40
- );
46
+ })(collection)(type);
47
+ if (result.success === false)
48
+ throw TransformerError.from("typia.metadata")(
49
+ result.errors,
50
+ );
51
+ return result.data;
52
+ });
41
53
 
42
54
  // CONVERT TO PRIMITIVE TYPE
43
55
  const app: IMetadataApplication = {
@@ -47,7 +59,3 @@ export namespace MetadataTransformer {
47
59
  return LiteralFactory.generate(app);
48
60
  };
49
61
  }
50
-
51
- const NO_GENERIC_ARGUMENT = "Error on typia.metadata(): no generic argument.";
52
- const GENERIC_ARGUMENT =
53
- "Error on typia.metadata(): non-specified generic argument(s).";
@@ -3,26 +3,30 @@ import ts from "typescript";
3
3
  import { MiscLiteralsProgrammer } from "../../../programmers/misc/MiscLiteralsProgrammer";
4
4
 
5
5
  import { IProject } from "../../IProject";
6
+ import { TransformerError } from "../../TransformerError";
6
7
 
7
8
  export namespace MiscLiteralsTransformer {
8
9
  export const transform =
9
10
  (project: IProject) =>
10
11
  (expression: ts.CallExpression): ts.Expression => {
11
12
  // CHECK GENERIC ARGUMENT EXISTENCE
12
- if (!expression.typeArguments?.[0]) throw new Error(NOT_SPECIFIED);
13
+ if (!expression.typeArguments?.[0])
14
+ throw new TransformerError({
15
+ code: "typia.misc.literals",
16
+ message: "generic argument is not specified.",
17
+ });
13
18
 
14
19
  // GET TYPE INFO
15
20
  const node: ts.TypeNode = expression.typeArguments[0];
16
21
  const type: ts.Type = project.checker.getTypeFromTypeNode(node);
17
22
 
18
- if (type.isTypeParameter()) throw new Error(NO_GENERIC_ARGUMENT);
23
+ if (type.isTypeParameter())
24
+ throw new TransformerError({
25
+ code: "typia.misc.literals",
26
+ message: "non-specified generic argument.",
27
+ });
19
28
 
20
29
  // DO TRANSFORM
21
30
  return MiscLiteralsProgrammer.write(project)(type);
22
31
  };
23
32
  }
24
-
25
- const NOT_SPECIFIED =
26
- "Error on typia.literals(): generic argument is not specified.";
27
- const NO_GENERIC_ARGUMENT =
28
- "Error on typia.literals(): non-specified generic argument.";
@@ -3,6 +3,7 @@ import ts from "typescript";
3
3
  import { ProtobufMessageProgrammer } from "../../../programmers/protobuf/ProtobufMessageProgrammer";
4
4
 
5
5
  import { IProject } from "../../IProject";
6
+ import { TransformerError } from "../../TransformerError";
6
7
 
7
8
  export namespace ProtobufMessageTransformer {
8
9
  export const transform =
@@ -11,21 +12,22 @@ export namespace ProtobufMessageTransformer {
11
12
  (expression: ts.CallExpression): ts.Expression => {
12
13
  // CHECK GENERIC ARGUMENT EXISTENCE
13
14
  if (!expression.typeArguments || !expression.typeArguments[0])
14
- throw new Error(ErrorMessages.NOT_SPECIFIED);
15
+ throw new TransformerError({
16
+ code: "typia.protobuf.message",
17
+ message: "generic argument is not specified.",
18
+ });
15
19
 
16
20
  // GET TYPE INFO
17
21
  const type: ts.Type = project.checker.getTypeFromTypeNode(
18
22
  expression.typeArguments[0],
19
23
  );
20
24
  if (type.isTypeParameter())
21
- throw new Error(ErrorMessages.GENERIC_ARGUMENT);
25
+ throw new TransformerError({
26
+ code: "tyipa.protobuf.message",
27
+ message: "non-specified generic argument.",
28
+ });
22
29
 
23
30
  // DO TRANSFORM
24
31
  return ProtobufMessageProgrammer.write(project)(type);
25
32
  };
26
33
  }
27
-
28
- const enum ErrorMessages {
29
- NOT_SPECIFIED = "Error on typia.protobuf.message(): generic argument is not specified.",
30
- GENERIC_ARGUMENT = "Error on typia.protobuf.message(): non-specified generic argument.",
31
- }
@@ -1,6 +1,7 @@
1
1
  import ts from "typescript";
2
2
 
3
3
  import { IProject } from "../IProject";
4
+ import { TransformerError } from "../TransformerError";
4
5
 
5
6
  export namespace GenericTransformer {
6
7
  export const scalar =
@@ -17,7 +18,10 @@ export namespace GenericTransformer {
17
18
  (expression: ts.CallExpression) => {
18
19
  // CHECK PARAMETER
19
20
  if (expression.arguments.length !== 1)
20
- throw new Error(`Error on typia.${method}(): no input value.`);
21
+ throw new TransformerError({
22
+ code: `typia.${method}`,
23
+ message: `no input value.`,
24
+ });
21
25
 
22
26
  // GET TYPE INFO
23
27
  const [type, node, generic]: [ts.Type, ts.Node, boolean] =
@@ -37,9 +41,10 @@ export namespace GenericTransformer {
37
41
  false,
38
42
  ];
39
43
  if (type.isTypeParameter())
40
- throw new Error(
41
- `Error on typia.${method}(): non-specified generic argument.`,
42
- );
44
+ throw new TransformerError({
45
+ code: `typia.${method}`,
46
+ message: `non-specified generic argument.`,
47
+ });
43
48
 
44
49
  // DO TRANSFORM
45
50
  return ts.factory.createCallExpression(
@@ -68,18 +73,20 @@ export namespace GenericTransformer {
68
73
  (expression: ts.CallExpression) => {
69
74
  // CHECK GENERIC ARGUMENT EXISTENCE
70
75
  if (!expression.typeArguments?.[0])
71
- throw new Error(
72
- `Error on typia.${method}(): generic argument is not specified.`,
73
- );
76
+ throw new TransformerError({
77
+ code: `typia.${method}`,
78
+ message: `generic argument is not specified.`,
79
+ });
74
80
 
75
81
  // GET TYPE INFO
76
82
  const node: ts.TypeNode = expression.typeArguments[0];
77
83
  const type: ts.Type = project.checker.getTypeFromTypeNode(node);
78
84
 
79
85
  if (type.isTypeParameter())
80
- throw new Error(
81
- `Error on typia.${method}(): non-specified generic argument.`,
82
- );
86
+ throw new TransformerError({
87
+ code: `typia.${method}`,
88
+ message: `non-specified generic argument.`,
89
+ });
83
90
 
84
91
  // DO TRANSFORM
85
92
  return programmer(project)(modulo)(type, node.getFullText().trim());
@@ -0,0 +1,9 @@
1
+ export type ValidationPipe<T, E> =
2
+ | {
3
+ success: true;
4
+ data: T;
5
+ }
6
+ | {
7
+ success: false;
8
+ errors: E[];
9
+ };
@@ -1,4 +0,0 @@
1
- import { MetadataEscaped } from "../../schemas/metadata/MetadataEscaped";
2
- import { IJsonComponents, IJsonSchema } from "../../module";
3
- import { JsonApplicationProgrammer } from "../json/JsonApplicationProgrammer";
4
- export declare const application_resolved: (options: JsonApplicationProgrammer.IOptions) => <BlockNever extends boolean>(blockNever: BlockNever) => (components: IJsonComponents) => (resolved: MetadataEscaped) => (attribute: IJsonSchema.IAttribute) => IJsonSchema[];
@@ -1 +0,0 @@
1
- {"version":3,"file":"application_resolved.js","sourceRoot":"","sources":["../../../src/programmers/internal/application_resolved.ts"],"names":[],"mappings":";;;AAKA,2DAA0D;AAEnD,IAAM,oBAAoB,GAC7B,UAAC,OAA2C;IAC5C,OAAA,UAA6B,UAAsB;QACnD,OAAA,UAAC,UAA2B;YAC5B,OAAA,UAAC,QAAyB;gBAC1B,OAAA,UAAC,SAAiC;oBAC9B,IAAM,MAAM,GAAG,IAAA,uCAAkB,EAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAC9D,QAAQ,CAAC,OAAO,CACnB,CAAC,SAAS,CAAC,CAAC;oBACb,IAAI,MAAM,KAAK,IAAI;wBAAE,OAAO,EAAE,CAAC;oBAE/B,IAAI,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;wBACvC,IAAM,MAAM,GAAoC,SAAS,CAAC,MAAM,CAAC;4BAC7D,CAAC,CAAC,MAAM;4BACR,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC;gCACnB,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;gCAC9B,CAAC,CAAC,SAAS,CAAC;wBAChB,IACI,MAAM,KAAK,SAAS;4BACpB,MAAM,CAAC,MAAM,KAAK,MAAM;4BACxB,MAAM,CAAC,MAAM,KAAK,WAAW;4BAE7B,MAAM,CAAC,MAAM,GAAG,WAAW,CAAC;qBACnC;oBACD,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBACvD,CAAC;YApBD,CAoBC;QArBD,CAqBC;IAtBD,CAsBC;AAvBD,CAuBC,CAAC;AAzBO,QAAA,oBAAoB,wBAyB3B;AAEN,IAAM,SAAS,GAAG,UAAC,IAAiB;IAChC,OAAC,IAA4B,CAAC,IAAI,KAAK,QAAQ;AAA/C,CAA+C,CAAC;AAEpD,IAAM,SAAS,GAAG,UAAC,IAAiB;IAChC,OAAA,KAAK,CAAC,OAAO,CAAE,IAA2B,CAAC,KAAK,CAAC;AAAjD,CAAiD,CAAC;AAEtD,IAAM,OAAO,GACT,UAAC,OAAsB;IACvB,OAAA,UAAC,IAAc;QACX,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAElB,OAAO,CACH,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,KAAK,MAAM,EAAf,CAAe,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAC,KAAK,IAAK,OAAA,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAlC,CAAkC,CAAC;YAC/D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAC,KAAK;gBACnB,OAAA,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAA1C,CAA0C,CAC7C;YACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAC,KAAK,IAAK,OAAA,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAA7B,CAA6B,CAAC,CAC9D,CAAC;IACN,CAAC;AAZD,CAYC,CAAC"}