typia 3.5.8 → 3.6.0-dev.20230225

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 (279) hide show
  1. package/README.md +2 -0
  2. package/lib/Primitive.d.ts +2 -1
  3. package/lib/executable/TypiaGenerateWizard.d.ts +8 -0
  4. package/lib/executable/TypiaGenerateWizard.js +182 -0
  5. package/lib/executable/TypiaGenerateWizard.js.map +1 -0
  6. package/lib/executable/typia.js +11 -4
  7. package/lib/executable/typia.js.map +1 -1
  8. package/lib/factories/IdentifierFactory.d.ts +1 -1
  9. package/lib/factories/IdentifierFactory.js +3 -3
  10. package/lib/factories/IdentifierFactory.js.map +1 -1
  11. package/lib/factories/TypeFactory.d.ts +1 -0
  12. package/lib/factories/TypeFactory.js +17 -1
  13. package/lib/factories/TypeFactory.js.map +1 -1
  14. package/lib/factories/TypiaFileFactory.d.ts +8 -0
  15. package/lib/factories/TypiaFileFactory.js +236 -0
  16. package/lib/factories/TypiaFileFactory.js.map +1 -0
  17. package/lib/programmers/AssertCloneProgrammer.js +4 -1
  18. package/lib/programmers/AssertCloneProgrammer.js.map +1 -1
  19. package/lib/programmers/AssertParseProgrammer.js +4 -1
  20. package/lib/programmers/AssertParseProgrammer.js.map +1 -1
  21. package/lib/programmers/AssertProgrammer.js +4 -1
  22. package/lib/programmers/AssertProgrammer.js.map +1 -1
  23. package/lib/programmers/AssertPruneProgrammer.js +4 -1
  24. package/lib/programmers/AssertPruneProgrammer.js.map +1 -1
  25. package/lib/programmers/AssertStringifyProgrammer.js +4 -1
  26. package/lib/programmers/AssertStringifyProgrammer.js.map +1 -1
  27. package/lib/programmers/CheckerProgrammer.d.ts +1 -1
  28. package/lib/programmers/CheckerProgrammer.js +8 -0
  29. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  30. package/lib/programmers/CloneProgrammer.d.ts +1 -1
  31. package/lib/programmers/CloneProgrammer.js +17 -2
  32. package/lib/programmers/CloneProgrammer.js.map +1 -1
  33. package/lib/programmers/FeatureProgrammer.d.ts +10 -1
  34. package/lib/programmers/FeatureProgrammer.js +24 -16
  35. package/lib/programmers/FeatureProgrammer.js.map +1 -1
  36. package/lib/programmers/IsCloneProgrammer.js +7 -1
  37. package/lib/programmers/IsCloneProgrammer.js.map +1 -1
  38. package/lib/programmers/IsParseProgrammer.js +5 -2
  39. package/lib/programmers/IsParseProgrammer.js.map +1 -1
  40. package/lib/programmers/IsProgrammer.d.ts +1 -1
  41. package/lib/programmers/IsPruneProgrammer.js +4 -1
  42. package/lib/programmers/IsPruneProgrammer.js.map +1 -1
  43. package/lib/programmers/IsStringifyProgrammer.js +7 -1
  44. package/lib/programmers/IsStringifyProgrammer.js.map +1 -1
  45. package/lib/programmers/PruneProgrammer.d.ts +1 -1
  46. package/lib/programmers/PruneProgrammer.js +7 -0
  47. package/lib/programmers/PruneProgrammer.js.map +1 -1
  48. package/lib/programmers/RandomProgrammer.js +9 -8
  49. package/lib/programmers/RandomProgrammer.js.map +1 -1
  50. package/lib/programmers/StringifyProgrammer.d.ts +1 -1
  51. package/lib/programmers/StringifyProgrammer.js +7 -0
  52. package/lib/programmers/StringifyProgrammer.js.map +1 -1
  53. package/lib/programmers/ValidateCloneProgrammer.js +5 -2
  54. package/lib/programmers/ValidateCloneProgrammer.js.map +1 -1
  55. package/lib/programmers/ValidateParseProgrammer.js +4 -1
  56. package/lib/programmers/ValidateParseProgrammer.js.map +1 -1
  57. package/lib/programmers/ValidateProgrammer.js +7 -4
  58. package/lib/programmers/ValidateProgrammer.js.map +1 -1
  59. package/lib/programmers/ValidatePruneProgrammer.js +4 -1
  60. package/lib/programmers/ValidatePruneProgrammer.js.map +1 -1
  61. package/lib/programmers/ValidateStringifyProgrammer.js +5 -2
  62. package/lib/programmers/ValidateStringifyProgrammer.js.map +1 -1
  63. package/lib/programmers/helpers/CloneJoiner.js +5 -4
  64. package/lib/programmers/helpers/CloneJoiner.js.map +1 -1
  65. package/lib/programmers/helpers/FunctionImporeter.js +2 -1
  66. package/lib/programmers/helpers/FunctionImporeter.js.map +1 -1
  67. package/lib/programmers/helpers/RandomJoiner.js +3 -2
  68. package/lib/programmers/helpers/RandomJoiner.js.map +1 -1
  69. package/lib/programmers/internal/check_everything.js +4 -1
  70. package/lib/programmers/internal/check_everything.js.map +1 -1
  71. package/lib/programmers/internal/check_union_array_like.js +10 -3
  72. package/lib/programmers/internal/check_union_array_like.js.map +1 -1
  73. package/lib/programmers/internal/stringify_dynamic_properties.js +1 -1
  74. package/lib/programmers/internal/stringify_dynamic_properties.js.map +1 -1
  75. package/lib/transformers/CallExpressionTransformer.js +4 -1
  76. package/lib/transformers/CallExpressionTransformer.js.map +1 -1
  77. package/lib/transformers/ImportTransformer.d.ts +4 -0
  78. package/lib/transformers/ImportTransformer.js +51 -0
  79. package/lib/transformers/ImportTransformer.js.map +1 -0
  80. package/package.json +1 -1
  81. package/src/IRandomGenerator.ts +16 -16
  82. package/src/IValidation.ts +21 -21
  83. package/src/Primitive.ts +104 -82
  84. package/src/TypeGuardError.ts +36 -36
  85. package/src/executable/TypiaGenerateWizard.ts +87 -0
  86. package/src/executable/TypiaSetupWizard.ts +142 -142
  87. package/src/executable/setup/ArgumentParser.ts +91 -91
  88. package/src/executable/setup/CommandExecutor.ts +8 -8
  89. package/src/executable/setup/FileRetriever.ts +33 -33
  90. package/src/executable/setup/PackageManager.ts +92 -92
  91. package/src/executable/setup/PluginConfigurator.ts +99 -99
  92. package/src/executable/typia.ts +38 -29
  93. package/src/factories/CommentFactory.ts +10 -10
  94. package/src/factories/ExpressionFactory.ts +77 -77
  95. package/src/factories/IdentifierFactory.ts +73 -72
  96. package/src/factories/LiteralFactory.ts +44 -44
  97. package/src/factories/MetadataCollection.ts +122 -122
  98. package/src/factories/MetadataFactory.ts +51 -51
  99. package/src/factories/MetadataTagFactory.ts +265 -265
  100. package/src/factories/StatementFactory.ts +60 -60
  101. package/src/factories/TemplateFactory.ts +56 -56
  102. package/src/factories/TypeFactory.ts +129 -101
  103. package/src/factories/TypiaFileFactory.ts +117 -0
  104. package/src/factories/ValueFactory.ts +12 -12
  105. package/src/factories/internal/metadata/MetadataHelper.ts +12 -12
  106. package/src/factories/internal/metadata/emplace_metadata_object.ts +140 -140
  107. package/src/factories/internal/metadata/explore_metadata.ts +92 -92
  108. package/src/factories/internal/metadata/iterate_metadata.ts +80 -80
  109. package/src/factories/internal/metadata/iterate_metadata_array.ts +29 -29
  110. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +59 -59
  111. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +33 -33
  112. package/src/factories/internal/metadata/iterate_metadata_constant.ts +58 -58
  113. package/src/factories/internal/metadata/iterate_metadata_map.ts +41 -41
  114. package/src/factories/internal/metadata/iterate_metadata_native.ts +222 -222
  115. package/src/factories/internal/metadata/iterate_metadata_object.ts +48 -48
  116. package/src/factories/internal/metadata/iterate_metadata_resolve.ts +27 -27
  117. package/src/factories/internal/metadata/iterate_metadata_set.ts +33 -33
  118. package/src/factories/internal/metadata/iterate_metadata_template.ts +38 -38
  119. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +45 -45
  120. package/src/factories/internal/metadata/iterate_metadata_union.ts +59 -59
  121. package/src/functional/$any.ts +3 -3
  122. package/src/functional/$every.ts +11 -11
  123. package/src/functional/$guard.ts +35 -35
  124. package/src/functional/$is_between.ts +7 -7
  125. package/src/functional/$is_email.ts +5 -5
  126. package/src/functional/$is_ipv4.ts +5 -5
  127. package/src/functional/$is_ipv6.ts +5 -5
  128. package/src/functional/$is_url.ts +5 -5
  129. package/src/functional/$is_uuid.ts +5 -5
  130. package/src/functional/$join.ts +50 -50
  131. package/src/functional/$number.ts +12 -12
  132. package/src/functional/$report.ts +15 -15
  133. package/src/functional/$rest.ts +3 -3
  134. package/src/functional/$string.ts +37 -37
  135. package/src/functional/$tail.ts +6 -6
  136. package/src/functional/Namespace.ts +121 -121
  137. package/src/index.ts +4 -4
  138. package/src/metadata/IJsDocTagInfo.ts +10 -10
  139. package/src/metadata/IMetadata.ts +25 -25
  140. package/src/metadata/IMetadataApplication.ts +7 -7
  141. package/src/metadata/IMetadataConstant.ts +16 -16
  142. package/src/metadata/IMetadataEntry.ts +6 -6
  143. package/src/metadata/IMetadataObject.ts +29 -29
  144. package/src/metadata/IMetadataProperty.ts +11 -11
  145. package/src/metadata/IMetadataTag.ts +113 -113
  146. package/src/metadata/Metadata.ts +534 -534
  147. package/src/metadata/MetadataConstant.ts +3 -3
  148. package/src/metadata/MetadataObject.ts +131 -131
  149. package/src/metadata/MetadataProperty.ts +64 -64
  150. package/src/module.ts +1946 -1946
  151. package/src/programmers/ApplicationProgrammer.ts +55 -55
  152. package/src/programmers/AssertCloneProgrammer.ts +71 -60
  153. package/src/programmers/AssertParseProgrammer.ts +66 -55
  154. package/src/programmers/AssertProgrammer.ts +232 -435
  155. package/src/programmers/AssertPruneProgrammer.ts +67 -59
  156. package/src/programmers/AssertStringifyProgrammer.ts +71 -65
  157. package/src/programmers/CheckerProgrammer.ts +892 -879
  158. package/src/programmers/CloneProgrammer.ts +387 -361
  159. package/src/programmers/FeatureProgrammer.ts +505 -462
  160. package/src/programmers/IsCloneProgrammer.ts +80 -66
  161. package/src/programmers/IsParseProgrammer.ts +75 -61
  162. package/src/programmers/IsProgrammer.ts +200 -200
  163. package/src/programmers/IsPruneProgrammer.ts +75 -63
  164. package/src/programmers/IsStringifyProgrammer.ts +80 -69
  165. package/src/programmers/PruneProgrammer.ts +341 -333
  166. package/src/programmers/RandomProgrammer.ts +392 -373
  167. package/src/programmers/StringifyProgrammer.ts +795 -787
  168. package/src/programmers/ValidateCloneProgrammer.ts +91 -77
  169. package/src/programmers/ValidateParseProgrammer.ts +70 -59
  170. package/src/programmers/ValidateProgrammer.ts +267 -238
  171. package/src/programmers/ValidatePruneProgrammer.ts +84 -73
  172. package/src/programmers/ValidateStringifyProgrammer.ts +88 -77
  173. package/src/programmers/helpers/AtomicPredicator.ts +31 -31
  174. package/src/programmers/helpers/CloneJoiner.ts +134 -124
  175. package/src/programmers/helpers/FunctionImporeter.ts +55 -46
  176. package/src/programmers/helpers/IExpressionEntry.ts +12 -12
  177. package/src/programmers/helpers/OptionPredicator.ts +19 -19
  178. package/src/programmers/helpers/PruneJoiner.ts +52 -52
  179. package/src/programmers/helpers/RandomJoiner.ts +149 -142
  180. package/src/programmers/helpers/RandomRanger.ts +216 -216
  181. package/src/programmers/helpers/StringifyJoinder.ts +114 -114
  182. package/src/programmers/helpers/StringifyPredicator.ts +18 -18
  183. package/src/programmers/helpers/UnionExplorer.ts +274 -274
  184. package/src/programmers/helpers/UnionPredicator.ts +81 -81
  185. package/src/programmers/internal/application_array.ts +37 -37
  186. package/src/programmers/internal/application_boolean.ts +17 -17
  187. package/src/programmers/internal/application_constant.ts +29 -29
  188. package/src/programmers/internal/application_default.ts +17 -17
  189. package/src/programmers/internal/application_default_string.ts +32 -32
  190. package/src/programmers/internal/application_native.ts +29 -29
  191. package/src/programmers/internal/application_number.ts +70 -70
  192. package/src/programmers/internal/application_object.ts +153 -153
  193. package/src/programmers/internal/application_schema.ts +184 -184
  194. package/src/programmers/internal/application_string.ts +41 -41
  195. package/src/programmers/internal/application_templates.ts +27 -27
  196. package/src/programmers/internal/application_tuple.ts +29 -29
  197. package/src/programmers/internal/check_array.ts +22 -22
  198. package/src/programmers/internal/check_array_length.ts +44 -44
  199. package/src/programmers/internal/check_bigint.ts +64 -64
  200. package/src/programmers/internal/check_dynamic_properties.ts +197 -197
  201. package/src/programmers/internal/check_everything.ts +28 -25
  202. package/src/programmers/internal/check_native.ts +21 -21
  203. package/src/programmers/internal/check_number.ts +145 -145
  204. package/src/programmers/internal/check_object.ts +48 -48
  205. package/src/programmers/internal/check_string.ts +24 -24
  206. package/src/programmers/internal/check_string_tags.ts +63 -63
  207. package/src/programmers/internal/check_template.ts +50 -50
  208. package/src/programmers/internal/check_union_array_like.ts +260 -244
  209. package/src/programmers/internal/check_union_tuple.ts +33 -33
  210. package/src/programmers/internal/decode_union_object.ts +73 -73
  211. package/src/programmers/internal/feature_object_entries.ts +59 -59
  212. package/src/programmers/internal/metadata_to_pattern.ts +31 -31
  213. package/src/programmers/internal/prune_object_properties.ts +60 -60
  214. package/src/programmers/internal/stringify_dynamic_properties.ts +165 -164
  215. package/src/programmers/internal/stringify_native.ts +8 -8
  216. package/src/programmers/internal/stringify_regular_properties.ts +81 -81
  217. package/src/programmers/internal/template_to_pattern.ts +15 -15
  218. package/src/schemas/IJsonApplication.ts +9 -9
  219. package/src/schemas/IJsonComponents.ts +26 -26
  220. package/src/schemas/IJsonSchema.ts +127 -127
  221. package/src/transform.ts +21 -21
  222. package/src/transformers/CallExpressionTransformer.ts +172 -165
  223. package/src/transformers/ExpressionWithArgumentTransformer.ts +66 -66
  224. package/src/transformers/FileTransformer.ts +49 -49
  225. package/src/transformers/IProject.ts +11 -11
  226. package/src/transformers/ITransformOptions.ts +62 -62
  227. package/src/transformers/ImportTransformer.ts +60 -0
  228. package/src/transformers/NodeTransformer.ts +19 -19
  229. package/src/transformers/features/miscellaneous/ApplicationTransformer.ts +120 -120
  230. package/src/transformers/features/miscellaneous/AssertCloneTransformer.ts +38 -38
  231. package/src/transformers/features/miscellaneous/AssertPruneTransformer.ts +38 -38
  232. package/src/transformers/features/miscellaneous/CloneTransformer.ts +46 -46
  233. package/src/transformers/features/miscellaneous/CreateAssertCloneTransformer.ts +32 -32
  234. package/src/transformers/features/miscellaneous/CreateAssertPruneTransformer.ts +32 -32
  235. package/src/transformers/features/miscellaneous/CreateCloneTransformer.ts +31 -31
  236. package/src/transformers/features/miscellaneous/CreateIsCloneTransformer.ts +32 -32
  237. package/src/transformers/features/miscellaneous/CreateIsPruneTransformer.ts +32 -32
  238. package/src/transformers/features/miscellaneous/CreatePruneTransformer.ts +31 -31
  239. package/src/transformers/features/miscellaneous/CreateRandomGenerator.ts +39 -39
  240. package/src/transformers/features/miscellaneous/CreateValidateCloneTransformer.ts +32 -32
  241. package/src/transformers/features/miscellaneous/CreateValidatePruneTransformer.ts +32 -32
  242. package/src/transformers/features/miscellaneous/IsCloneTransformer.ts +38 -38
  243. package/src/transformers/features/miscellaneous/IsPruneTransformer.ts +38 -38
  244. package/src/transformers/features/miscellaneous/MetadataTransformer.ts +55 -55
  245. package/src/transformers/features/miscellaneous/PruneTransformer.ts +46 -46
  246. package/src/transformers/features/miscellaneous/RandomTransformer.ts +45 -45
  247. package/src/transformers/features/miscellaneous/ValidateCloneTransformer.ts +38 -38
  248. package/src/transformers/features/miscellaneous/ValidatePruneTransformer.ts +38 -38
  249. package/src/transformers/features/parsers/AssertParseTransformer.ts +36 -36
  250. package/src/transformers/features/parsers/CreateAssertParseTransformer.ts +32 -32
  251. package/src/transformers/features/parsers/CreateIsParseTransformer.ts +32 -32
  252. package/src/transformers/features/parsers/CreateValidateParseTransformer.ts +32 -32
  253. package/src/transformers/features/parsers/IsParseTransformer.ts +36 -36
  254. package/src/transformers/features/parsers/ValidateParseTransformer.ts +36 -36
  255. package/src/transformers/features/stringifiers/AssertStringifyTransformer.ts +38 -38
  256. package/src/transformers/features/stringifiers/CreateAssertStringifyTransformer.ts +32 -32
  257. package/src/transformers/features/stringifiers/CreateIsStringifyTransformer.ts +32 -32
  258. package/src/transformers/features/stringifiers/CreateStringifyTransformer.ts +31 -31
  259. package/src/transformers/features/stringifiers/CreateValidateStringifyProgrammer.ts +32 -32
  260. package/src/transformers/features/stringifiers/IsStringifyTransformer.ts +38 -38
  261. package/src/transformers/features/stringifiers/StringifyTransformer.ts +46 -46
  262. package/src/transformers/features/stringifiers/ValidateStringifyTransformer.ts +38 -38
  263. package/src/transformers/features/validators/AssertTransformer.ts +43 -43
  264. package/src/transformers/features/validators/CreateAssertTransformer.ts +35 -35
  265. package/src/transformers/features/validators/CreateIsTransformer.ts +35 -35
  266. package/src/transformers/features/validators/CreateValidateTransformer.ts +35 -35
  267. package/src/transformers/features/validators/IsTransformer.ts +43 -43
  268. package/src/transformers/features/validators/ValidateTransformer.ts +43 -43
  269. package/src/typings/Atomic.ts +17 -17
  270. package/src/typings/ClassProperties.ts +5 -5
  271. package/src/typings/OmitNever.ts +3 -3
  272. package/src/typings/SpecialFields.ts +3 -3
  273. package/src/typings/Writable.ts +11 -11
  274. package/src/utils/ArrayUtil.ts +49 -49
  275. package/src/utils/Escaper.ts +50 -50
  276. package/src/utils/MapUtil.ts +14 -14
  277. package/src/utils/PatternUtil.ts +30 -30
  278. package/src/utils/RandomGenerator.ts +90 -90
  279. package/src/utils/Singleton.ts +17 -17
@@ -1,46 +1,46 @@
1
- import ts from "typescript";
2
-
3
- import { StringifyProgrammer } from "../../../programmers/StringifyProgrammer";
4
-
5
- import { IProject } from "../../IProject";
6
-
7
- export namespace StringifyTransformer {
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
- StringifyProgrammer.generate(
27
- {
28
- ...project,
29
- options: {
30
- ...project.options,
31
- functional: false,
32
- numeric: true,
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.stringify(): no input value.",
45
- GENERIC_ARGUMENT = "Error on typia.stringify(): non-specified generic argument.",
46
- }
1
+ import ts from "typescript";
2
+
3
+ import { StringifyProgrammer } from "../../../programmers/StringifyProgrammer";
4
+
5
+ import { IProject } from "../../IProject";
6
+
7
+ export namespace StringifyTransformer {
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
+ StringifyProgrammer.generate(
27
+ {
28
+ ...project,
29
+ options: {
30
+ ...project.options,
31
+ functional: false,
32
+ numeric: true,
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.stringify(): no input value.",
45
+ GENERIC_ARGUMENT = "Error on typia.stringify(): non-specified generic argument.",
46
+ }
@@ -1,38 +1,38 @@
1
- import ts from "typescript";
2
-
3
- import { ValidateStringifyProgrammer } from "../../../programmers/ValidateStringifyProgrammer";
4
-
5
- import { IProject } from "../../IProject";
6
-
7
- export namespace ValidateStringifyTransformer {
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
- ValidateStringifyProgrammer.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.validateStringify(): no input value.",
37
- GENERIC_ARGUMENT = "Error on typia.validateStringify(): non-specified generic argument.",
38
- }
1
+ import ts from "typescript";
2
+
3
+ import { ValidateStringifyProgrammer } from "../../../programmers/ValidateStringifyProgrammer";
4
+
5
+ import { IProject } from "../../IProject";
6
+
7
+ export namespace ValidateStringifyTransformer {
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
+ ValidateStringifyProgrammer.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.validateStringify(): no input value.",
37
+ GENERIC_ARGUMENT = "Error on typia.validateStringify(): non-specified generic argument.",
38
+ }
@@ -1,43 +1,43 @@
1
- import ts from "typescript";
2
-
3
- import { AssertProgrammer } from "../../../programmers/AssertProgrammer";
4
-
5
- import { IProject } from "../../IProject";
6
-
7
- export namespace AssertTransformer {
8
- export function transform(equals: boolean) {
9
- const SYMBOL = equals ? "assertEquals" : "assert";
10
- const MESSAGES = {
11
- NO_INPUT_VALUE: `Error on typia.${SYMBOL}(): no input value.`,
12
- GENERIC_ARGUMENT: `Error on typia.${SYMBOL}(): non-specified generic argument.`,
13
- };
14
-
15
- return function (
16
- project: IProject,
17
- modulo: ts.LeftHandSideExpression,
18
- expression: ts.CallExpression,
19
- ): ts.Expression {
20
- if (expression.arguments.length !== 1)
21
- throw new Error(MESSAGES.NO_INPUT_VALUE);
22
-
23
- // GET TYPE INFO
24
- const type: ts.Type =
25
- expression.typeArguments && expression.typeArguments[0]
26
- ? project.checker.getTypeFromTypeNode(
27
- expression.typeArguments[0],
28
- )
29
- : project.checker.getTypeAtLocation(
30
- expression.arguments[0]!,
31
- );
32
- if (type.isTypeParameter())
33
- throw new Error(MESSAGES.GENERIC_ARGUMENT);
34
-
35
- // DO TRANSFORM
36
- return ts.factory.createCallExpression(
37
- AssertProgrammer.generate(project, modulo, equals)(type),
38
- undefined,
39
- [expression.arguments[0]!],
40
- );
41
- };
42
- }
43
- }
1
+ import ts from "typescript";
2
+
3
+ import { AssertProgrammer } from "../../../programmers/AssertProgrammer";
4
+
5
+ import { IProject } from "../../IProject";
6
+
7
+ export namespace AssertTransformer {
8
+ export function transform(equals: boolean) {
9
+ const SYMBOL = equals ? "assertEquals" : "assert";
10
+ const MESSAGES = {
11
+ NO_INPUT_VALUE: `Error on typia.${SYMBOL}(): no input value.`,
12
+ GENERIC_ARGUMENT: `Error on typia.${SYMBOL}(): non-specified generic argument.`,
13
+ };
14
+
15
+ return function (
16
+ project: IProject,
17
+ modulo: ts.LeftHandSideExpression,
18
+ expression: ts.CallExpression,
19
+ ): ts.Expression {
20
+ if (expression.arguments.length !== 1)
21
+ throw new Error(MESSAGES.NO_INPUT_VALUE);
22
+
23
+ // GET TYPE INFO
24
+ const type: ts.Type =
25
+ expression.typeArguments && expression.typeArguments[0]
26
+ ? project.checker.getTypeFromTypeNode(
27
+ expression.typeArguments[0],
28
+ )
29
+ : project.checker.getTypeAtLocation(
30
+ expression.arguments[0]!,
31
+ );
32
+ if (type.isTypeParameter())
33
+ throw new Error(MESSAGES.GENERIC_ARGUMENT);
34
+
35
+ // DO TRANSFORM
36
+ return ts.factory.createCallExpression(
37
+ AssertProgrammer.generate(project, modulo, equals)(type),
38
+ undefined,
39
+ [expression.arguments[0]!],
40
+ );
41
+ };
42
+ }
43
+ }
@@ -1,35 +1,35 @@
1
- import ts from "typescript";
2
-
3
- import { AssertProgrammer } from "../../../programmers/AssertProgrammer";
4
-
5
- import { IProject } from "../../IProject";
6
-
7
- export namespace CreateAssertTransformer {
8
- export function transform(equals: boolean) {
9
- const SYMBOL = equals ? "createAssertEquals" : "createAssert";
10
- const MESSAGES = {
11
- NOT_SPECIFIED: `Error on typia.${SYMBOL}(): generic argument is not specified.`,
12
- GENERIC_ARGUMENT: `Error on typia.${SYMBOL}(): non-specified generic argument.`,
13
- };
14
-
15
- return function (
16
- project: IProject,
17
- modulo: ts.LeftHandSideExpression,
18
- expression: ts.CallExpression,
19
- ): ts.Expression {
20
- // CHECK GENERIC ARGUMENT EXISTENCE
21
- if (!expression.typeArguments?.[0])
22
- throw new Error(MESSAGES.NOT_SPECIFIED);
23
-
24
- // GET TYPE INFO
25
- const type: ts.Type = project.checker.getTypeFromTypeNode(
26
- expression.typeArguments[0],
27
- );
28
- if (type.isTypeParameter())
29
- throw new Error(MESSAGES.GENERIC_ARGUMENT);
30
-
31
- // DO TRANSFORM
32
- return AssertProgrammer.generate(project, modulo, equals)(type);
33
- };
34
- }
35
- }
1
+ import ts from "typescript";
2
+
3
+ import { AssertProgrammer } from "../../../programmers/AssertProgrammer";
4
+
5
+ import { IProject } from "../../IProject";
6
+
7
+ export namespace CreateAssertTransformer {
8
+ export function transform(equals: boolean) {
9
+ const SYMBOL = equals ? "createAssertEquals" : "createAssert";
10
+ const MESSAGES = {
11
+ NOT_SPECIFIED: `Error on typia.${SYMBOL}(): generic argument is not specified.`,
12
+ GENERIC_ARGUMENT: `Error on typia.${SYMBOL}(): non-specified generic argument.`,
13
+ };
14
+
15
+ return function (
16
+ project: IProject,
17
+ modulo: ts.LeftHandSideExpression,
18
+ expression: ts.CallExpression,
19
+ ): ts.Expression {
20
+ // CHECK GENERIC ARGUMENT EXISTENCE
21
+ if (!expression.typeArguments?.[0])
22
+ throw new Error(MESSAGES.NOT_SPECIFIED);
23
+
24
+ // GET TYPE INFO
25
+ const type: ts.Type = project.checker.getTypeFromTypeNode(
26
+ expression.typeArguments[0],
27
+ );
28
+ if (type.isTypeParameter())
29
+ throw new Error(MESSAGES.GENERIC_ARGUMENT);
30
+
31
+ // DO TRANSFORM
32
+ return AssertProgrammer.generate(project, modulo, equals)(type);
33
+ };
34
+ }
35
+ }
@@ -1,35 +1,35 @@
1
- import ts from "typescript";
2
-
3
- import { IsProgrammer } from "../../../programmers/IsProgrammer";
4
-
5
- import { IProject } from "../../IProject";
6
-
7
- export namespace CreateIsTransformer {
8
- export function transform(equals: boolean) {
9
- const SYMBOL = equals ? "createEquals" : "createIs";
10
- const MESSAGES = {
11
- NOT_SPECIFIED: `Error on typia.${SYMBOL}(): generic argument is not specified.`,
12
- GENERIC_ARGUMENT: `Error on typia.${SYMBOL}(): non-specified generic argument.`,
13
- };
14
-
15
- return function (
16
- project: IProject,
17
- modulo: ts.LeftHandSideExpression,
18
- expression: ts.CallExpression,
19
- ): ts.Expression {
20
- // CHECK GENERIC ARGUMENT EXISTENCE
21
- if (!expression.typeArguments?.[0])
22
- throw new Error(MESSAGES.NOT_SPECIFIED);
23
-
24
- // GET TYPE INFO
25
- const type: ts.Type = project.checker.getTypeFromTypeNode(
26
- expression.typeArguments[0],
27
- );
28
- if (type.isTypeParameter())
29
- throw new Error(MESSAGES.GENERIC_ARGUMENT);
30
-
31
- // DO TRANSFORM
32
- return IsProgrammer.generate(project, modulo, equals)(type);
33
- };
34
- }
35
- }
1
+ import ts from "typescript";
2
+
3
+ import { IsProgrammer } from "../../../programmers/IsProgrammer";
4
+
5
+ import { IProject } from "../../IProject";
6
+
7
+ export namespace CreateIsTransformer {
8
+ export function transform(equals: boolean) {
9
+ const SYMBOL = equals ? "createEquals" : "createIs";
10
+ const MESSAGES = {
11
+ NOT_SPECIFIED: `Error on typia.${SYMBOL}(): generic argument is not specified.`,
12
+ GENERIC_ARGUMENT: `Error on typia.${SYMBOL}(): non-specified generic argument.`,
13
+ };
14
+
15
+ return function (
16
+ project: IProject,
17
+ modulo: ts.LeftHandSideExpression,
18
+ expression: ts.CallExpression,
19
+ ): ts.Expression {
20
+ // CHECK GENERIC ARGUMENT EXISTENCE
21
+ if (!expression.typeArguments?.[0])
22
+ throw new Error(MESSAGES.NOT_SPECIFIED);
23
+
24
+ // GET TYPE INFO
25
+ const type: ts.Type = project.checker.getTypeFromTypeNode(
26
+ expression.typeArguments[0],
27
+ );
28
+ if (type.isTypeParameter())
29
+ throw new Error(MESSAGES.GENERIC_ARGUMENT);
30
+
31
+ // DO TRANSFORM
32
+ return IsProgrammer.generate(project, modulo, equals)(type);
33
+ };
34
+ }
35
+ }
@@ -1,35 +1,35 @@
1
- import ts from "typescript";
2
-
3
- import { ValidateProgrammer } from "../../../programmers/ValidateProgrammer";
4
-
5
- import { IProject } from "../../IProject";
6
-
7
- export namespace CreateValidateTransformer {
8
- export function transform(equals: boolean) {
9
- const SYMBOL = equals ? "createValidateEquals" : "createValidate";
10
- const MESSAGES = {
11
- NOT_SPECIFIED: `Error on typia.${SYMBOL}(): generic argument is not specified.`,
12
- GENERIC_ARGUMENT: `Error on typia.${SYMBOL}(): non-specified generic argument.`,
13
- };
14
-
15
- return function (
16
- project: IProject,
17
- modulo: ts.LeftHandSideExpression,
18
- expression: ts.CallExpression,
19
- ): ts.Expression {
20
- // CHECK GENERIC ARGUMENT EXISTENCE
21
- if (!expression.typeArguments?.[0])
22
- throw new Error(MESSAGES.NOT_SPECIFIED);
23
-
24
- // GET TYPE INFO
25
- const type: ts.Type = project.checker.getTypeFromTypeNode(
26
- expression.typeArguments[0],
27
- );
28
- if (type.isTypeParameter())
29
- throw new Error(MESSAGES.GENERIC_ARGUMENT);
30
-
31
- // DO TRANSFORM
32
- return ValidateProgrammer.generate(project, modulo, equals)(type);
33
- };
34
- }
35
- }
1
+ import ts from "typescript";
2
+
3
+ import { ValidateProgrammer } from "../../../programmers/ValidateProgrammer";
4
+
5
+ import { IProject } from "../../IProject";
6
+
7
+ export namespace CreateValidateTransformer {
8
+ export function transform(equals: boolean) {
9
+ const SYMBOL = equals ? "createValidateEquals" : "createValidate";
10
+ const MESSAGES = {
11
+ NOT_SPECIFIED: `Error on typia.${SYMBOL}(): generic argument is not specified.`,
12
+ GENERIC_ARGUMENT: `Error on typia.${SYMBOL}(): non-specified generic argument.`,
13
+ };
14
+
15
+ return function (
16
+ project: IProject,
17
+ modulo: ts.LeftHandSideExpression,
18
+ expression: ts.CallExpression,
19
+ ): ts.Expression {
20
+ // CHECK GENERIC ARGUMENT EXISTENCE
21
+ if (!expression.typeArguments?.[0])
22
+ throw new Error(MESSAGES.NOT_SPECIFIED);
23
+
24
+ // GET TYPE INFO
25
+ const type: ts.Type = project.checker.getTypeFromTypeNode(
26
+ expression.typeArguments[0],
27
+ );
28
+ if (type.isTypeParameter())
29
+ throw new Error(MESSAGES.GENERIC_ARGUMENT);
30
+
31
+ // DO TRANSFORM
32
+ return ValidateProgrammer.generate(project, modulo, equals)(type);
33
+ };
34
+ }
35
+ }
@@ -1,43 +1,43 @@
1
- import ts from "typescript";
2
-
3
- import { IsProgrammer } from "../../../programmers/IsProgrammer";
4
-
5
- import { IProject } from "../../IProject";
6
-
7
- export namespace IsTransformer {
8
- export function transform(equals: boolean) {
9
- const SYMBOL = equals ? "equals" : "is";
10
- const MESSAGES = {
11
- NO_INPUT_VALUE: `Error on typia.${SYMBOL}(): no input value.`,
12
- GENERIC_ARGUMENT: `Error on typia.${SYMBOL}(): non-specified generic argument.`,
13
- };
14
-
15
- return function (
16
- project: IProject,
17
- modulo: ts.LeftHandSideExpression,
18
- expression: ts.CallExpression,
19
- ): ts.Expression {
20
- if (expression.arguments.length !== 1)
21
- throw new Error(MESSAGES.NO_INPUT_VALUE);
22
-
23
- // GET TYPE INFO
24
- const type: ts.Type =
25
- expression.typeArguments && expression.typeArguments[0]
26
- ? project.checker.getTypeFromTypeNode(
27
- expression.typeArguments[0],
28
- )
29
- : project.checker.getTypeAtLocation(
30
- expression.arguments[0]!,
31
- );
32
- if (type.isTypeParameter())
33
- throw new Error(MESSAGES.GENERIC_ARGUMENT);
34
-
35
- // DO TRANSFORM
36
- return ts.factory.createCallExpression(
37
- IsProgrammer.generate(project, modulo, equals)(type),
38
- undefined,
39
- [expression.arguments[0]!],
40
- );
41
- };
42
- }
43
- }
1
+ import ts from "typescript";
2
+
3
+ import { IsProgrammer } from "../../../programmers/IsProgrammer";
4
+
5
+ import { IProject } from "../../IProject";
6
+
7
+ export namespace IsTransformer {
8
+ export function transform(equals: boolean) {
9
+ const SYMBOL = equals ? "equals" : "is";
10
+ const MESSAGES = {
11
+ NO_INPUT_VALUE: `Error on typia.${SYMBOL}(): no input value.`,
12
+ GENERIC_ARGUMENT: `Error on typia.${SYMBOL}(): non-specified generic argument.`,
13
+ };
14
+
15
+ return function (
16
+ project: IProject,
17
+ modulo: ts.LeftHandSideExpression,
18
+ expression: ts.CallExpression,
19
+ ): ts.Expression {
20
+ if (expression.arguments.length !== 1)
21
+ throw new Error(MESSAGES.NO_INPUT_VALUE);
22
+
23
+ // GET TYPE INFO
24
+ const type: ts.Type =
25
+ expression.typeArguments && expression.typeArguments[0]
26
+ ? project.checker.getTypeFromTypeNode(
27
+ expression.typeArguments[0],
28
+ )
29
+ : project.checker.getTypeAtLocation(
30
+ expression.arguments[0]!,
31
+ );
32
+ if (type.isTypeParameter())
33
+ throw new Error(MESSAGES.GENERIC_ARGUMENT);
34
+
35
+ // DO TRANSFORM
36
+ return ts.factory.createCallExpression(
37
+ IsProgrammer.generate(project, modulo, equals)(type),
38
+ undefined,
39
+ [expression.arguments[0]!],
40
+ );
41
+ };
42
+ }
43
+ }
@@ -1,43 +1,43 @@
1
- import ts from "typescript";
2
-
3
- import { ValidateProgrammer } from "../../../programmers/ValidateProgrammer";
4
-
5
- import { IProject } from "../../IProject";
6
-
7
- export namespace ValidateTransformer {
8
- export function transform(equals: boolean) {
9
- const SYMBOL = equals ? "validateEquals" : "validate";
10
- const MESSAGES = {
11
- NO_INPUT_VALUE: `Error on typia.${SYMBOL}(): no input value.`,
12
- GENERIC_ARGUMENT: `Error on typia.${SYMBOL}(): non-specified generic argument.`,
13
- };
14
-
15
- return function (
16
- project: IProject,
17
- modulo: ts.LeftHandSideExpression,
18
- expression: ts.CallExpression,
19
- ): ts.Expression {
20
- if (expression.arguments.length !== 1)
21
- throw new Error(MESSAGES.NO_INPUT_VALUE);
22
-
23
- // GET TYPE INFO
24
- const type: ts.Type =
25
- expression.typeArguments && expression.typeArguments[0]
26
- ? project.checker.getTypeFromTypeNode(
27
- expression.typeArguments[0],
28
- )
29
- : project.checker.getTypeAtLocation(
30
- expression.arguments[0]!,
31
- );
32
- if (type.isTypeParameter())
33
- throw new Error(MESSAGES.GENERIC_ARGUMENT);
34
-
35
- // DO TRANSFORM
36
- return ts.factory.createCallExpression(
37
- ValidateProgrammer.generate(project, modulo, equals)(type),
38
- undefined,
39
- [expression.arguments[0]!],
40
- );
41
- };
42
- }
43
- }
1
+ import ts from "typescript";
2
+
3
+ import { ValidateProgrammer } from "../../../programmers/ValidateProgrammer";
4
+
5
+ import { IProject } from "../../IProject";
6
+
7
+ export namespace ValidateTransformer {
8
+ export function transform(equals: boolean) {
9
+ const SYMBOL = equals ? "validateEquals" : "validate";
10
+ const MESSAGES = {
11
+ NO_INPUT_VALUE: `Error on typia.${SYMBOL}(): no input value.`,
12
+ GENERIC_ARGUMENT: `Error on typia.${SYMBOL}(): non-specified generic argument.`,
13
+ };
14
+
15
+ return function (
16
+ project: IProject,
17
+ modulo: ts.LeftHandSideExpression,
18
+ expression: ts.CallExpression,
19
+ ): ts.Expression {
20
+ if (expression.arguments.length !== 1)
21
+ throw new Error(MESSAGES.NO_INPUT_VALUE);
22
+
23
+ // GET TYPE INFO
24
+ const type: ts.Type =
25
+ expression.typeArguments && expression.typeArguments[0]
26
+ ? project.checker.getTypeFromTypeNode(
27
+ expression.typeArguments[0],
28
+ )
29
+ : project.checker.getTypeAtLocation(
30
+ expression.arguments[0]!,
31
+ );
32
+ if (type.isTypeParameter())
33
+ throw new Error(MESSAGES.GENERIC_ARGUMENT);
34
+
35
+ // DO TRANSFORM
36
+ return ts.factory.createCallExpression(
37
+ ValidateProgrammer.generate(project, modulo, equals)(type),
38
+ undefined,
39
+ [expression.arguments[0]!],
40
+ );
41
+ };
42
+ }
43
+ }