typia 3.7.3 → 3.7.4-dev.20230410-2

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 +5 -56
  2. package/lib/executable/TypiaGenerateWizard.js +7 -7
  3. package/lib/executable/TypiaGenerateWizard.js.map +1 -1
  4. package/lib/executable/TypiaSetupWizard.js +2 -4
  5. package/lib/executable/TypiaSetupWizard.js.map +1 -1
  6. package/lib/executable/setup/ArgumentParser.d.ts +1 -1
  7. package/lib/executable/setup/ArgumentParser.js +76 -81
  8. package/lib/executable/setup/ArgumentParser.js.map +1 -1
  9. package/lib/executable/setup/FileRetriever.d.ts +0 -1
  10. package/lib/executable/setup/FileRetriever.js +0 -75
  11. package/lib/executable/setup/FileRetriever.js.map +1 -1
  12. package/lib/executable/setup/PackageManager.d.ts +0 -5
  13. package/lib/executable/setup/PackageManager.js +1 -11
  14. package/lib/executable/setup/PackageManager.js.map +1 -1
  15. package/lib/executable/setup/PluginConfigurator.d.ts +1 -2
  16. package/lib/executable/setup/PluginConfigurator.js +31 -54
  17. package/lib/executable/setup/PluginConfigurator.js.map +1 -1
  18. package/lib/executable/typia.js +52 -13
  19. package/lib/executable/typia.js.map +1 -1
  20. package/package.json +8 -8
  21. package/src/CustomValidatorMap.ts +126 -126
  22. package/src/IRandomGenerator.ts +33 -33
  23. package/src/IValidation.ts +21 -21
  24. package/src/Primitive.ts +104 -104
  25. package/src/TypeGuardError.ts +36 -36
  26. package/src/executable/TypiaGenerateWizard.ts +85 -87
  27. package/src/executable/TypiaSetupWizard.ts +149 -152
  28. package/src/executable/setup/ArgumentParser.ts +58 -91
  29. package/src/executable/setup/CommandExecutor.ts +8 -8
  30. package/src/executable/setup/FileRetriever.ts +22 -33
  31. package/src/executable/setup/PackageManager.ts +72 -92
  32. package/src/executable/setup/PluginConfigurator.ts +59 -99
  33. package/src/executable/typia.ts +46 -38
  34. package/src/factories/CommentFactory.ts +10 -10
  35. package/src/factories/ExpressionFactory.ts +77 -77
  36. package/src/factories/IdentifierFactory.ts +81 -81
  37. package/src/factories/LiteralFactory.ts +44 -44
  38. package/src/factories/MetadataCollection.ts +122 -122
  39. package/src/factories/MetadataFactory.ts +51 -51
  40. package/src/factories/MetadataTagFactory.ts +302 -302
  41. package/src/factories/StatementFactory.ts +60 -60
  42. package/src/factories/TemplateFactory.ts +56 -56
  43. package/src/factories/TypeFactory.ts +129 -129
  44. package/src/factories/TypiaFileFactory.ts +120 -120
  45. package/src/factories/ValueFactory.ts +12 -12
  46. package/src/factories/internal/metadata/MetadataHelper.ts +12 -12
  47. package/src/factories/internal/metadata/emplace_metadata_object.ts +142 -142
  48. package/src/factories/internal/metadata/explore_metadata.ts +92 -92
  49. package/src/factories/internal/metadata/iterate_metadata.ts +80 -80
  50. package/src/factories/internal/metadata/iterate_metadata_array.ts +29 -29
  51. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +59 -59
  52. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +33 -33
  53. package/src/factories/internal/metadata/iterate_metadata_constant.ts +58 -58
  54. package/src/factories/internal/metadata/iterate_metadata_map.ts +41 -41
  55. package/src/factories/internal/metadata/iterate_metadata_native.ts +222 -222
  56. package/src/factories/internal/metadata/iterate_metadata_object.ts +48 -48
  57. package/src/factories/internal/metadata/iterate_metadata_resolve.ts +27 -27
  58. package/src/factories/internal/metadata/iterate_metadata_set.ts +33 -33
  59. package/src/factories/internal/metadata/iterate_metadata_template.ts +38 -38
  60. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +45 -45
  61. package/src/factories/internal/metadata/iterate_metadata_union.ts +59 -59
  62. package/src/functional/$any.ts +3 -3
  63. package/src/functional/$dictionary.ts +20 -20
  64. package/src/functional/$every.ts +11 -11
  65. package/src/functional/$guard.ts +35 -35
  66. package/src/functional/$is_between.ts +7 -7
  67. package/src/functional/$is_custom.ts +14 -14
  68. package/src/functional/$is_date.ts +4 -4
  69. package/src/functional/$is_datetime.ts +3 -3
  70. package/src/functional/$is_email.ts +5 -5
  71. package/src/functional/$is_ipv4.ts +5 -5
  72. package/src/functional/$is_ipv6.ts +5 -5
  73. package/src/functional/$is_url.ts +5 -5
  74. package/src/functional/$is_uuid.ts +5 -5
  75. package/src/functional/$join.ts +50 -50
  76. package/src/functional/$number.ts +12 -12
  77. package/src/functional/$report.ts +15 -15
  78. package/src/functional/$rest.ts +3 -3
  79. package/src/functional/$string.ts +37 -37
  80. package/src/functional/$tail.ts +6 -6
  81. package/src/functional/Namespace.ts +127 -127
  82. package/src/index.ts +4 -4
  83. package/src/metadata/ICommentTag.ts +4 -4
  84. package/src/metadata/IJsDocTagInfo.ts +10 -10
  85. package/src/metadata/IMetadata.ts +25 -25
  86. package/src/metadata/IMetadataApplication.ts +7 -7
  87. package/src/metadata/IMetadataConstant.ts +16 -16
  88. package/src/metadata/IMetadataEntry.ts +6 -6
  89. package/src/metadata/IMetadataObject.ts +29 -29
  90. package/src/metadata/IMetadataProperty.ts +11 -11
  91. package/src/metadata/IMetadataTag.ts +105 -105
  92. package/src/metadata/Metadata.ts +534 -534
  93. package/src/metadata/MetadataConstant.ts +3 -3
  94. package/src/metadata/MetadataObject.ts +131 -131
  95. package/src/metadata/MetadataProperty.ts +64 -64
  96. package/src/module.ts +2043 -2043
  97. package/src/programmers/ApplicationProgrammer.ts +55 -55
  98. package/src/programmers/AssertCloneProgrammer.ts +70 -70
  99. package/src/programmers/AssertParseProgrammer.ts +65 -65
  100. package/src/programmers/AssertProgrammer.ts +284 -284
  101. package/src/programmers/AssertPruneProgrammer.ts +67 -67
  102. package/src/programmers/AssertStringifyProgrammer.ts +71 -71
  103. package/src/programmers/CheckerProgrammer.ts +922 -922
  104. package/src/programmers/CloneProgrammer.ts +388 -388
  105. package/src/programmers/FeatureProgrammer.ts +512 -512
  106. package/src/programmers/IsCloneProgrammer.ts +80 -80
  107. package/src/programmers/IsParseProgrammer.ts +74 -74
  108. package/src/programmers/IsProgrammer.ts +206 -206
  109. package/src/programmers/IsPruneProgrammer.ts +75 -75
  110. package/src/programmers/IsStringifyProgrammer.ts +81 -81
  111. package/src/programmers/LiteralsProgrammer.ts +65 -65
  112. package/src/programmers/PruneProgrammer.ts +343 -343
  113. package/src/programmers/RandomProgrammer.ts +413 -413
  114. package/src/programmers/StringifyProgrammer.ts +801 -801
  115. package/src/programmers/ValidateCloneProgrammer.ts +90 -90
  116. package/src/programmers/ValidateParseProgrammer.ts +69 -69
  117. package/src/programmers/ValidateProgrammer.ts +317 -317
  118. package/src/programmers/ValidatePruneProgrammer.ts +83 -83
  119. package/src/programmers/ValidateStringifyProgrammer.ts +89 -89
  120. package/src/programmers/helpers/AtomicPredicator.ts +31 -31
  121. package/src/programmers/helpers/CloneJoiner.ts +134 -134
  122. package/src/programmers/helpers/FunctionImporeter.ts +55 -55
  123. package/src/programmers/helpers/ICheckEntry.ts +12 -12
  124. package/src/programmers/helpers/IExpressionEntry.ts +12 -12
  125. package/src/programmers/helpers/OptionPredicator.ts +19 -19
  126. package/src/programmers/helpers/PruneJoiner.ts +52 -52
  127. package/src/programmers/helpers/RandomJoiner.ts +161 -161
  128. package/src/programmers/helpers/RandomRanger.ts +216 -216
  129. package/src/programmers/helpers/StringifyJoinder.ts +114 -114
  130. package/src/programmers/helpers/StringifyPredicator.ts +18 -18
  131. package/src/programmers/helpers/UnionExplorer.ts +281 -281
  132. package/src/programmers/helpers/UnionPredicator.ts +81 -81
  133. package/src/programmers/internal/application_array.ts +37 -37
  134. package/src/programmers/internal/application_boolean.ts +17 -17
  135. package/src/programmers/internal/application_constant.ts +29 -29
  136. package/src/programmers/internal/application_default.ts +17 -17
  137. package/src/programmers/internal/application_default_string.ts +32 -32
  138. package/src/programmers/internal/application_native.ts +32 -32
  139. package/src/programmers/internal/application_number.ts +73 -73
  140. package/src/programmers/internal/application_object.ts +153 -153
  141. package/src/programmers/internal/application_schema.ts +184 -184
  142. package/src/programmers/internal/application_string.ts +45 -45
  143. package/src/programmers/internal/application_templates.ts +27 -27
  144. package/src/programmers/internal/application_tuple.ts +29 -29
  145. package/src/programmers/internal/check_array.ts +30 -30
  146. package/src/programmers/internal/check_array_length.ts +35 -35
  147. package/src/programmers/internal/check_bigint.ts +82 -82
  148. package/src/programmers/internal/check_custom.ts +33 -33
  149. package/src/programmers/internal/check_dynamic_properties.ts +197 -197
  150. package/src/programmers/internal/check_everything.ts +28 -28
  151. package/src/programmers/internal/check_native.ts +21 -21
  152. package/src/programmers/internal/check_number.ts +177 -177
  153. package/src/programmers/internal/check_object.ts +55 -55
  154. package/src/programmers/internal/check_string.ts +25 -25
  155. package/src/programmers/internal/check_string_tags.ts +73 -73
  156. package/src/programmers/internal/check_template.ts +59 -59
  157. package/src/programmers/internal/check_union_array_like.ts +272 -272
  158. package/src/programmers/internal/check_union_tuple.ts +35 -35
  159. package/src/programmers/internal/decode_union_object.ts +73 -73
  160. package/src/programmers/internal/feature_object_entries.ts +63 -63
  161. package/src/programmers/internal/get_comment_tags.ts +23 -23
  162. package/src/programmers/internal/metadata_to_pattern.ts +34 -34
  163. package/src/programmers/internal/prune_object_properties.ts +60 -60
  164. package/src/programmers/internal/random_custom.ts +30 -30
  165. package/src/programmers/internal/stringify_dynamic_properties.ts +168 -168
  166. package/src/programmers/internal/stringify_native.ts +8 -8
  167. package/src/programmers/internal/stringify_regular_properties.ts +84 -84
  168. package/src/programmers/internal/template_to_pattern.ts +15 -15
  169. package/src/schemas/IJsonApplication.ts +9 -9
  170. package/src/schemas/IJsonComponents.ts +26 -26
  171. package/src/schemas/IJsonSchema.ts +121 -121
  172. package/src/transform.ts +21 -21
  173. package/src/transformers/CallExpressionTransformer.ts +174 -174
  174. package/src/transformers/ExpressionWithArgumentTransformer.ts +66 -66
  175. package/src/transformers/FileTransformer.ts +49 -49
  176. package/src/transformers/IProject.ts +11 -11
  177. package/src/transformers/ITransformOptions.ts +62 -62
  178. package/src/transformers/ImportTransformer.ts +66 -66
  179. package/src/transformers/NodeTransformer.ts +19 -19
  180. package/src/transformers/features/miscellaneous/ApplicationTransformer.ts +119 -119
  181. package/src/transformers/features/miscellaneous/AssertCloneTransformer.ts +9 -9
  182. package/src/transformers/features/miscellaneous/AssertPruneTransformer.ts +9 -9
  183. package/src/transformers/features/miscellaneous/CloneTransformer.ts +9 -9
  184. package/src/transformers/features/miscellaneous/CreateAssertCloneTransformer.ts +9 -9
  185. package/src/transformers/features/miscellaneous/CreateAssertPruneTransformer.ts +9 -9
  186. package/src/transformers/features/miscellaneous/CreateCloneTransformer.ts +9 -9
  187. package/src/transformers/features/miscellaneous/CreateIsCloneTransformer.ts +9 -9
  188. package/src/transformers/features/miscellaneous/CreateIsPruneTransformer.ts +9 -9
  189. package/src/transformers/features/miscellaneous/CreatePruneTransformer.ts +9 -9
  190. package/src/transformers/features/miscellaneous/CreateRandomTransformer.ts +41 -41
  191. package/src/transformers/features/miscellaneous/CreateValidateCloneTransformer.ts +9 -9
  192. package/src/transformers/features/miscellaneous/CreateValidatePruneTransformer.ts +9 -9
  193. package/src/transformers/features/miscellaneous/IsCloneTransformer.ts +9 -9
  194. package/src/transformers/features/miscellaneous/IsPruneTransformer.ts +9 -9
  195. package/src/transformers/features/miscellaneous/LiteralsTransformer.ts +30 -30
  196. package/src/transformers/features/miscellaneous/MetadataTransformer.ts +54 -54
  197. package/src/transformers/features/miscellaneous/PruneTransformer.ts +9 -9
  198. package/src/transformers/features/miscellaneous/RandomTransformer.ts +46 -46
  199. package/src/transformers/features/miscellaneous/ValidateCloneTransformer.ts +9 -9
  200. package/src/transformers/features/miscellaneous/ValidatePruneTransformer.ts +9 -9
  201. package/src/transformers/features/parsers/AssertParseTransformer.ts +9 -9
  202. package/src/transformers/features/parsers/CreateAssertParseTransformer.ts +9 -9
  203. package/src/transformers/features/parsers/CreateIsParseTransformer.ts +9 -9
  204. package/src/transformers/features/parsers/CreateValidateParseTransformer.ts +9 -9
  205. package/src/transformers/features/parsers/IsParseTransformer.ts +9 -9
  206. package/src/transformers/features/parsers/ValidateParseTransformer.ts +9 -9
  207. package/src/transformers/features/stringifiers/AssertStringifyTransformer.ts +10 -10
  208. package/src/transformers/features/stringifiers/CreateAssertStringifyTransformer.ts +9 -9
  209. package/src/transformers/features/stringifiers/CreateIsStringifyTransformer.ts +9 -9
  210. package/src/transformers/features/stringifiers/CreateStringifyTransformer.ts +9 -9
  211. package/src/transformers/features/stringifiers/CreateValidateStringifyProgrammer.ts +11 -11
  212. package/src/transformers/features/stringifiers/IsStringifyTransformer.ts +9 -9
  213. package/src/transformers/features/stringifiers/StringifyTransformer.ts +9 -9
  214. package/src/transformers/features/stringifiers/ValidateStringifyTransformer.ts +10 -10
  215. package/src/transformers/features/validators/AssertTransformer.ts +11 -11
  216. package/src/transformers/features/validators/CreateAssertTransformer.ts +12 -12
  217. package/src/transformers/features/validators/CreateIsTransformer.ts +10 -10
  218. package/src/transformers/features/validators/CreateValidateTransformer.ts +12 -12
  219. package/src/transformers/features/validators/IsTransformer.ts +10 -10
  220. package/src/transformers/features/validators/ValidateTransformer.ts +11 -11
  221. package/src/transformers/internal/GenericTransformer.ts +99 -99
  222. package/src/typings/Atomic.ts +17 -17
  223. package/src/typings/ClassProperties.ts +5 -5
  224. package/src/typings/Customizable.ts +5 -5
  225. package/src/typings/OmitNever.ts +3 -3
  226. package/src/typings/SpecialFields.ts +3 -3
  227. package/src/typings/Writable.ts +11 -11
  228. package/src/utils/ArrayUtil.ts +49 -49
  229. package/src/utils/Escaper.ts +50 -50
  230. package/src/utils/MapUtil.ts +14 -14
  231. package/src/utils/PatternUtil.ts +30 -30
  232. package/src/utils/RandomGenerator.ts +96 -96
  233. package/src/utils/Singleton.ts +17 -17
@@ -1,54 +1,54 @@
1
- import ts from "typescript";
2
-
3
- import { LiteralFactory } from "../../../factories/LiteralFactory";
4
- import { MetadataCollection } from "../../../factories/MetadataCollection";
5
- import { MetadataFactory } from "../../../factories/MetadataFactory";
6
-
7
- import { IMetadataApplication } from "../../../metadata/IMetadataApplication";
8
- import { Metadata } from "../../../metadata/Metadata";
9
-
10
- import { IProject } from "../../IProject";
11
-
12
- export namespace MetadataTransformer {
13
- export function transform(
14
- { checker }: IProject,
15
- _modulo: ts.LeftHandSideExpression,
16
- expression: ts.CallExpression,
17
- ): ts.Expression {
18
- if (!expression.typeArguments?.length)
19
- throw new Error(NO_GENERIC_ARGUMENT);
20
-
21
- // VALIDATE TUPLE ARGUMENTS
22
- const top: ts.Node = expression.typeArguments[0]!;
23
- if (!ts.isTupleTypeNode(top)) return expression;
24
- else if (top.elements.some((child) => !ts.isTypeNode(child)))
25
- return expression;
26
-
27
- // GET TYPES
28
- const types: ts.Type[] = top.elements.map((child) =>
29
- checker.getTypeFromTypeNode(child as ts.TypeNode),
30
- );
31
- if (types.some((t) => t.isTypeParameter()))
32
- throw new Error(GENERIC_ARGUMENT);
33
-
34
- // METADATA
35
- const collection: MetadataCollection = new MetadataCollection();
36
- const metadatas: Array<Metadata> = types.map((type) =>
37
- MetadataFactory.generate(checker, collection, type, {
38
- resolve: false,
39
- constant: true,
40
- }),
41
- );
42
-
43
- // CONVERT TO PRIMITIVE TYPE
44
- const app: IMetadataApplication = {
45
- metadatas: metadatas.map((metadata) => metadata.toJSON()),
46
- collection: collection.objects().map((obj) => obj.toJSON()),
47
- };
48
- return LiteralFactory.generate(app);
49
- }
50
- }
51
-
52
- const NO_GENERIC_ARGUMENT = "Error on typia.metadata(): no generic argument.";
53
- const GENERIC_ARGUMENT =
54
- "Error on typia.metadata(): non-specified generic argument(s).";
1
+ import ts from "typescript";
2
+
3
+ import { LiteralFactory } from "../../../factories/LiteralFactory";
4
+ import { MetadataCollection } from "../../../factories/MetadataCollection";
5
+ import { MetadataFactory } from "../../../factories/MetadataFactory";
6
+
7
+ import { IMetadataApplication } from "../../../metadata/IMetadataApplication";
8
+ import { Metadata } from "../../../metadata/Metadata";
9
+
10
+ import { IProject } from "../../IProject";
11
+
12
+ export namespace MetadataTransformer {
13
+ export function transform(
14
+ { checker }: IProject,
15
+ _modulo: ts.LeftHandSideExpression,
16
+ expression: ts.CallExpression,
17
+ ): ts.Expression {
18
+ if (!expression.typeArguments?.length)
19
+ throw new Error(NO_GENERIC_ARGUMENT);
20
+
21
+ // VALIDATE TUPLE ARGUMENTS
22
+ const top: ts.Node = expression.typeArguments[0]!;
23
+ if (!ts.isTupleTypeNode(top)) return expression;
24
+ else if (top.elements.some((child) => !ts.isTypeNode(child)))
25
+ return expression;
26
+
27
+ // GET TYPES
28
+ const types: ts.Type[] = top.elements.map((child) =>
29
+ checker.getTypeFromTypeNode(child as ts.TypeNode),
30
+ );
31
+ if (types.some((t) => t.isTypeParameter()))
32
+ throw new Error(GENERIC_ARGUMENT);
33
+
34
+ // METADATA
35
+ const collection: MetadataCollection = new MetadataCollection();
36
+ const metadatas: Array<Metadata> = types.map((type) =>
37
+ MetadataFactory.generate(checker, collection, type, {
38
+ resolve: false,
39
+ constant: true,
40
+ }),
41
+ );
42
+
43
+ // CONVERT TO PRIMITIVE TYPE
44
+ const app: IMetadataApplication = {
45
+ metadatas: metadatas.map((metadata) => metadata.toJSON()),
46
+ collection: collection.objects().map((obj) => obj.toJSON()),
47
+ };
48
+ return LiteralFactory.generate(app);
49
+ }
50
+ }
51
+
52
+ const NO_GENERIC_ARGUMENT = "Error on typia.metadata(): no generic argument.";
53
+ const GENERIC_ARGUMENT =
54
+ "Error on typia.metadata(): non-specified generic argument(s).";
@@ -1,9 +1,9 @@
1
- import { PruneProgrammer } from "../../../programmers/PruneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace PruneTransformer {
6
- export const transform = GenericTransformer.scalar("prune")(
7
- (project, modulo) => PruneProgrammer.generate(project, modulo),
8
- );
9
- }
1
+ import { PruneProgrammer } from "../../../programmers/PruneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace PruneTransformer {
6
+ export const transform = GenericTransformer.scalar("prune")(
7
+ (project, modulo) => PruneProgrammer.generate(project, modulo),
8
+ );
9
+ }
@@ -1,46 +1,46 @@
1
- import ts from "typescript";
2
-
3
- import { RandomProgrammer } from "../../../programmers/RandomProgrammer";
4
-
5
- import { IProject } from "../../IProject";
6
-
7
- export namespace RandomTransformer {
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]) throw new Error(NOT_SPECIFIED);
15
-
16
- // GET TYPE INFO
17
- const node: ts.TypeNode = expression.typeArguments[0];
18
- const type: ts.Type = project.checker.getTypeFromTypeNode(node);
19
-
20
- if (type.isTypeParameter()) throw new Error(NO_GENERIC_ARGUMENT);
21
-
22
- // DO TRANSFORM
23
- return ts.factory.createCallExpression(
24
- RandomProgrammer.generate(
25
- {
26
- ...project,
27
- options: {
28
- ...project.options,
29
- functional: false,
30
- numeric: false,
31
- },
32
- },
33
- modulo,
34
- )(type, node.getFullText().trim()),
35
- undefined,
36
- expression.arguments.length
37
- ? [expression.arguments[0]!]
38
- : undefined,
39
- );
40
- }
41
- }
42
-
43
- const NOT_SPECIFIED =
44
- "Error on typia.random(): generic argument is not specified.";
45
- const NO_GENERIC_ARGUMENT =
46
- "Error on typia.random(): non-specified generic argument.";
1
+ import ts from "typescript";
2
+
3
+ import { RandomProgrammer } from "../../../programmers/RandomProgrammer";
4
+
5
+ import { IProject } from "../../IProject";
6
+
7
+ export namespace RandomTransformer {
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]) throw new Error(NOT_SPECIFIED);
15
+
16
+ // GET TYPE INFO
17
+ const node: ts.TypeNode = expression.typeArguments[0];
18
+ const type: ts.Type = project.checker.getTypeFromTypeNode(node);
19
+
20
+ if (type.isTypeParameter()) throw new Error(NO_GENERIC_ARGUMENT);
21
+
22
+ // DO TRANSFORM
23
+ return ts.factory.createCallExpression(
24
+ RandomProgrammer.generate(
25
+ {
26
+ ...project,
27
+ options: {
28
+ ...project.options,
29
+ functional: false,
30
+ numeric: false,
31
+ },
32
+ },
33
+ modulo,
34
+ )(type, node.getFullText().trim()),
35
+ undefined,
36
+ expression.arguments.length
37
+ ? [expression.arguments[0]!]
38
+ : undefined,
39
+ );
40
+ }
41
+ }
42
+
43
+ const NOT_SPECIFIED =
44
+ "Error on typia.random(): generic argument is not specified.";
45
+ const NO_GENERIC_ARGUMENT =
46
+ "Error on typia.random(): non-specified generic argument.";
@@ -1,9 +1,9 @@
1
- import { ValidateCloneProgrammer } from "../../../programmers/ValidateCloneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace ValidateCloneTransformer {
6
- export const transform = GenericTransformer.scalar("validatClone")(
7
- (project, modulo) => ValidateCloneProgrammer.generate(project, modulo),
8
- );
9
- }
1
+ import { ValidateCloneProgrammer } from "../../../programmers/ValidateCloneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace ValidateCloneTransformer {
6
+ export const transform = GenericTransformer.scalar("validatClone")(
7
+ (project, modulo) => ValidateCloneProgrammer.generate(project, modulo),
8
+ );
9
+ }
@@ -1,9 +1,9 @@
1
- import { ValidatePruneProgrammer } from "../../../programmers/ValidatePruneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace ValidatePruneTransformer {
6
- export const transform = GenericTransformer.scalar("validatPrune")(
7
- (project, modulo) => ValidatePruneProgrammer.generate(project, modulo),
8
- );
9
- }
1
+ import { ValidatePruneProgrammer } from "../../../programmers/ValidatePruneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace ValidatePruneTransformer {
6
+ export const transform = GenericTransformer.scalar("validatPrune")(
7
+ (project, modulo) => ValidatePruneProgrammer.generate(project, modulo),
8
+ );
9
+ }
@@ -1,9 +1,9 @@
1
- import { AssertParseProgrammer } from "../../../programmers/AssertParseProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace AssertParseTransformer {
6
- export const transform = GenericTransformer.scalar("assertParse")(
7
- (project, modulo) => AssertParseProgrammer.generate(project, modulo),
8
- );
9
- }
1
+ import { AssertParseProgrammer } from "../../../programmers/AssertParseProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace AssertParseTransformer {
6
+ export const transform = GenericTransformer.scalar("assertParse")(
7
+ (project, modulo) => AssertParseProgrammer.generate(project, modulo),
8
+ );
9
+ }
@@ -1,9 +1,9 @@
1
- import { AssertParseProgrammer } from "../../../programmers/AssertParseProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace CreateAssertParseTransformer {
6
- export const transform = GenericTransformer.factory("createAssertParse")(
7
- (project, modulo) => AssertParseProgrammer.generate(project, modulo),
8
- );
9
- }
1
+ import { AssertParseProgrammer } from "../../../programmers/AssertParseProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace CreateAssertParseTransformer {
6
+ export const transform = GenericTransformer.factory("createAssertParse")(
7
+ (project, modulo) => AssertParseProgrammer.generate(project, modulo),
8
+ );
9
+ }
@@ -1,9 +1,9 @@
1
- import { IsParseProgrammer } from "../../../programmers/IsParseProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace CreateIsParseTransformer {
6
- export const transform = GenericTransformer.factory("createIsParse")(
7
- (project, modulo) => IsParseProgrammer.generate(project, modulo),
8
- );
9
- }
1
+ import { IsParseProgrammer } from "../../../programmers/IsParseProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace CreateIsParseTransformer {
6
+ export const transform = GenericTransformer.factory("createIsParse")(
7
+ (project, modulo) => IsParseProgrammer.generate(project, modulo),
8
+ );
9
+ }
@@ -1,9 +1,9 @@
1
- import { ValidateParseProgrammer } from "../../../programmers/ValidateParseProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace CreateValidateParseTransformer {
6
- export const transform = GenericTransformer.factory("createValidateParse")(
7
- (project, modulo) => ValidateParseProgrammer.generate(project, modulo),
8
- );
9
- }
1
+ import { ValidateParseProgrammer } from "../../../programmers/ValidateParseProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace CreateValidateParseTransformer {
6
+ export const transform = GenericTransformer.factory("createValidateParse")(
7
+ (project, modulo) => ValidateParseProgrammer.generate(project, modulo),
8
+ );
9
+ }
@@ -1,9 +1,9 @@
1
- import { IsParseProgrammer } from "../../../programmers/IsParseProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace IsParseTransformer {
6
- export const transform = GenericTransformer.scalar("isParse")(
7
- (project, modulo) => IsParseProgrammer.generate(project, modulo),
8
- );
9
- }
1
+ import { IsParseProgrammer } from "../../../programmers/IsParseProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace IsParseTransformer {
6
+ export const transform = GenericTransformer.scalar("isParse")(
7
+ (project, modulo) => IsParseProgrammer.generate(project, modulo),
8
+ );
9
+ }
@@ -1,9 +1,9 @@
1
- import { ValidateParseProgrammer } from "../../../programmers/ValidateParseProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace ValidateParseTransformer {
6
- export const transform = GenericTransformer.scalar("validatParse")(
7
- (project, modulo) => ValidateParseProgrammer.generate(project, modulo),
8
- );
9
- }
1
+ import { ValidateParseProgrammer } from "../../../programmers/ValidateParseProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace ValidateParseTransformer {
6
+ export const transform = GenericTransformer.scalar("validatParse")(
7
+ (project, modulo) => ValidateParseProgrammer.generate(project, modulo),
8
+ );
9
+ }
@@ -1,10 +1,10 @@
1
- import { AssertStringifyProgrammer } from "../../../programmers/AssertStringifyProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace AssertStringifyTransformer {
6
- export const transform = GenericTransformer.scalar("assertStringify")(
7
- (project, modulo) =>
8
- AssertStringifyProgrammer.generate(project, modulo),
9
- );
10
- }
1
+ import { AssertStringifyProgrammer } from "../../../programmers/AssertStringifyProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace AssertStringifyTransformer {
6
+ export const transform = GenericTransformer.scalar("assertStringify")(
7
+ (project, modulo) =>
8
+ AssertStringifyProgrammer.generate(project, modulo),
9
+ );
10
+ }
@@ -1,9 +1,9 @@
1
- import { AssertStringifyProgrammer } from "../../../programmers/AssertStringifyProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace CreateAssertStringifyTransformer {
6
- export const transform = GenericTransformer.factory(
7
- "createAssertStringify",
8
- )((project, modulo) => AssertStringifyProgrammer.generate(project, modulo));
9
- }
1
+ import { AssertStringifyProgrammer } from "../../../programmers/AssertStringifyProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace CreateAssertStringifyTransformer {
6
+ export const transform = GenericTransformer.factory(
7
+ "createAssertStringify",
8
+ )((project, modulo) => AssertStringifyProgrammer.generate(project, modulo));
9
+ }
@@ -1,9 +1,9 @@
1
- import { IsStringifyProgrammer } from "../../../programmers/IsStringifyProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace CreateIsStringifyTransformer {
6
- export const transform = GenericTransformer.factory("createIsStringify")(
7
- (project, modulo) => IsStringifyProgrammer.generate(project, modulo),
8
- );
9
- }
1
+ import { IsStringifyProgrammer } from "../../../programmers/IsStringifyProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace CreateIsStringifyTransformer {
6
+ export const transform = GenericTransformer.factory("createIsStringify")(
7
+ (project, modulo) => IsStringifyProgrammer.generate(project, modulo),
8
+ );
9
+ }
@@ -1,9 +1,9 @@
1
- import { StringifyProgrammer } from "../../../programmers/StringifyProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace CreateStringifyTransformer {
6
- export const transform = GenericTransformer.factory("createStringify")(
7
- (project, modulo) => StringifyProgrammer.generate(project, modulo),
8
- );
9
- }
1
+ import { StringifyProgrammer } from "../../../programmers/StringifyProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace CreateStringifyTransformer {
6
+ export const transform = GenericTransformer.factory("createStringify")(
7
+ (project, modulo) => StringifyProgrammer.generate(project, modulo),
8
+ );
9
+ }
@@ -1,11 +1,11 @@
1
- import { ValidateStringifyProgrammer } from "../../../programmers/ValidateStringifyProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace CreateValidateStringifyTransformer {
6
- export const transform = GenericTransformer.factory(
7
- "createValidateStringify",
8
- )((project, modulo) =>
9
- ValidateStringifyProgrammer.generate(project, modulo),
10
- );
11
- }
1
+ import { ValidateStringifyProgrammer } from "../../../programmers/ValidateStringifyProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace CreateValidateStringifyTransformer {
6
+ export const transform = GenericTransformer.factory(
7
+ "createValidateStringify",
8
+ )((project, modulo) =>
9
+ ValidateStringifyProgrammer.generate(project, modulo),
10
+ );
11
+ }
@@ -1,9 +1,9 @@
1
- import { IsStringifyProgrammer } from "../../../programmers/IsStringifyProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace IsStringifyTransformer {
6
- export const transform = GenericTransformer.scalar("isStringify")(
7
- (project, modulo) => IsStringifyProgrammer.generate(project, modulo),
8
- );
9
- }
1
+ import { IsStringifyProgrammer } from "../../../programmers/IsStringifyProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace IsStringifyTransformer {
6
+ export const transform = GenericTransformer.scalar("isStringify")(
7
+ (project, modulo) => IsStringifyProgrammer.generate(project, modulo),
8
+ );
9
+ }
@@ -1,9 +1,9 @@
1
- import { StringifyProgrammer } from "../../../programmers/StringifyProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace StringifyTransformer {
6
- export const transform = GenericTransformer.scalar("stringify")(
7
- (project, modulo) => StringifyProgrammer.generate(project, modulo),
8
- );
9
- }
1
+ import { StringifyProgrammer } from "../../../programmers/StringifyProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace StringifyTransformer {
6
+ export const transform = GenericTransformer.scalar("stringify")(
7
+ (project, modulo) => StringifyProgrammer.generate(project, modulo),
8
+ );
9
+ }
@@ -1,10 +1,10 @@
1
- import { ValidateStringifyProgrammer } from "../../../programmers/ValidateStringifyProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace ValidateStringifyTransformer {
6
- export const transform = GenericTransformer.scalar("validatStringify")(
7
- (project, modulo) =>
8
- ValidateStringifyProgrammer.generate(project, modulo),
9
- );
10
- }
1
+ import { ValidateStringifyProgrammer } from "../../../programmers/ValidateStringifyProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace ValidateStringifyTransformer {
6
+ export const transform = GenericTransformer.scalar("validatStringify")(
7
+ (project, modulo) =>
8
+ ValidateStringifyProgrammer.generate(project, modulo),
9
+ );
10
+ }
@@ -1,11 +1,11 @@
1
- import { AssertProgrammer } from "../../../programmers/AssertProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace AssertTransformer {
6
- export const transform = (equals: boolean) =>
7
- GenericTransformer.scalar(equals ? "assertEquals" : "assert")(
8
- (project, modulo) =>
9
- AssertProgrammer.generate(project, modulo, equals),
10
- );
11
- }
1
+ import { AssertProgrammer } from "../../../programmers/AssertProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace AssertTransformer {
6
+ export const transform = (equals: boolean) =>
7
+ GenericTransformer.scalar(equals ? "assertEquals" : "assert")(
8
+ (project, modulo) =>
9
+ AssertProgrammer.generate(project, modulo, equals),
10
+ );
11
+ }
@@ -1,12 +1,12 @@
1
- import { AssertProgrammer } from "../../../programmers/AssertProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace CreateAssertTransformer {
6
- export const transform = (equals: boolean) =>
7
- GenericTransformer.factory(
8
- equals ? "createAssertEquals" : "createAssert",
9
- )((project, modulo) =>
10
- AssertProgrammer.generate(project, modulo, equals),
11
- );
12
- }
1
+ import { AssertProgrammer } from "../../../programmers/AssertProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace CreateAssertTransformer {
6
+ export const transform = (equals: boolean) =>
7
+ GenericTransformer.factory(
8
+ equals ? "createAssertEquals" : "createAssert",
9
+ )((project, modulo) =>
10
+ AssertProgrammer.generate(project, modulo, equals),
11
+ );
12
+ }
@@ -1,10 +1,10 @@
1
- import { IsProgrammer } from "../../../programmers/IsProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace CreateIsTransformer {
6
- export const transform = (equals: boolean) =>
7
- GenericTransformer.factory(equals ? "createEquals" : "createIs")(
8
- (project, modulo) => IsProgrammer.generate(project, modulo, equals),
9
- );
10
- }
1
+ import { IsProgrammer } from "../../../programmers/IsProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace CreateIsTransformer {
6
+ export const transform = (equals: boolean) =>
7
+ GenericTransformer.factory(equals ? "createEquals" : "createIs")(
8
+ (project, modulo) => IsProgrammer.generate(project, modulo, equals),
9
+ );
10
+ }