typia 3.6.5 → 3.6.6

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 (203) hide show
  1. package/lib/module.d.ts +1 -1
  2. package/lib/programmers/internal/application_number.js +1 -1
  3. package/package.json +1 -1
  4. package/src/IRandomGenerator.ts +16 -16
  5. package/src/IValidation.ts +21 -21
  6. package/src/Primitive.ts +104 -104
  7. package/src/TypeGuardError.ts +36 -36
  8. package/src/executable/TypiaGenerateWizard.ts +87 -87
  9. package/src/executable/TypiaSetupWizard.ts +142 -142
  10. package/src/executable/setup/ArgumentParser.ts +91 -91
  11. package/src/executable/setup/CommandExecutor.ts +8 -8
  12. package/src/executable/setup/FileRetriever.ts +33 -33
  13. package/src/executable/setup/PackageManager.ts +92 -92
  14. package/src/executable/setup/PluginConfigurator.ts +99 -99
  15. package/src/executable/typia.ts +38 -38
  16. package/src/factories/CommentFactory.ts +10 -10
  17. package/src/factories/ExpressionFactory.ts +77 -77
  18. package/src/factories/IdentifierFactory.ts +73 -73
  19. package/src/factories/LiteralFactory.ts +44 -44
  20. package/src/factories/MetadataCollection.ts +122 -122
  21. package/src/factories/MetadataFactory.ts +51 -51
  22. package/src/factories/MetadataTagFactory.ts +265 -265
  23. package/src/factories/StatementFactory.ts +60 -60
  24. package/src/factories/TemplateFactory.ts +56 -56
  25. package/src/factories/TypeFactory.ts +129 -129
  26. package/src/factories/TypiaFileFactory.ts +117 -117
  27. package/src/factories/ValueFactory.ts +12 -12
  28. package/src/factories/internal/metadata/MetadataHelper.ts +12 -12
  29. package/src/factories/internal/metadata/emplace_metadata_object.ts +142 -142
  30. package/src/factories/internal/metadata/explore_metadata.ts +92 -92
  31. package/src/factories/internal/metadata/iterate_metadata.ts +80 -80
  32. package/src/factories/internal/metadata/iterate_metadata_array.ts +29 -29
  33. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +59 -59
  34. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +33 -33
  35. package/src/factories/internal/metadata/iterate_metadata_constant.ts +58 -58
  36. package/src/factories/internal/metadata/iterate_metadata_map.ts +41 -41
  37. package/src/factories/internal/metadata/iterate_metadata_native.ts +222 -222
  38. package/src/factories/internal/metadata/iterate_metadata_object.ts +48 -48
  39. package/src/factories/internal/metadata/iterate_metadata_resolve.ts +27 -27
  40. package/src/factories/internal/metadata/iterate_metadata_set.ts +33 -33
  41. package/src/factories/internal/metadata/iterate_metadata_template.ts +38 -38
  42. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +45 -45
  43. package/src/factories/internal/metadata/iterate_metadata_union.ts +59 -59
  44. package/src/functional/$any.ts +3 -3
  45. package/src/functional/$every.ts +11 -11
  46. package/src/functional/$guard.ts +35 -35
  47. package/src/functional/$is_between.ts +7 -7
  48. package/src/functional/$is_email.ts +5 -5
  49. package/src/functional/$is_ipv4.ts +5 -5
  50. package/src/functional/$is_ipv6.ts +5 -5
  51. package/src/functional/$is_url.ts +5 -5
  52. package/src/functional/$is_uuid.ts +5 -5
  53. package/src/functional/$join.ts +50 -50
  54. package/src/functional/$number.ts +12 -12
  55. package/src/functional/$report.ts +15 -15
  56. package/src/functional/$rest.ts +3 -3
  57. package/src/functional/$string.ts +37 -37
  58. package/src/functional/$tail.ts +6 -6
  59. package/src/functional/Namespace.ts +121 -121
  60. package/src/index.ts +4 -4
  61. package/src/metadata/IJsDocTagInfo.ts +10 -10
  62. package/src/metadata/IMetadata.ts +25 -25
  63. package/src/metadata/IMetadataApplication.ts +7 -7
  64. package/src/metadata/IMetadataConstant.ts +16 -16
  65. package/src/metadata/IMetadataEntry.ts +6 -6
  66. package/src/metadata/IMetadataObject.ts +29 -29
  67. package/src/metadata/IMetadataProperty.ts +11 -11
  68. package/src/metadata/IMetadataTag.ts +113 -113
  69. package/src/metadata/Metadata.ts +534 -534
  70. package/src/metadata/MetadataConstant.ts +3 -3
  71. package/src/metadata/MetadataObject.ts +131 -131
  72. package/src/metadata/MetadataProperty.ts +64 -64
  73. package/src/module.ts +1946 -1946
  74. package/src/programmers/ApplicationProgrammer.ts +55 -55
  75. package/src/programmers/AssertCloneProgrammer.ts +70 -70
  76. package/src/programmers/AssertParseProgrammer.ts +65 -65
  77. package/src/programmers/AssertProgrammer.ts +232 -232
  78. package/src/programmers/AssertPruneProgrammer.ts +67 -67
  79. package/src/programmers/AssertStringifyProgrammer.ts +71 -71
  80. package/src/programmers/CheckerProgrammer.ts +893 -893
  81. package/src/programmers/CloneProgrammer.ts +386 -386
  82. package/src/programmers/FeatureProgrammer.ts +505 -505
  83. package/src/programmers/IsCloneProgrammer.ts +80 -80
  84. package/src/programmers/IsParseProgrammer.ts +74 -74
  85. package/src/programmers/IsProgrammer.ts +200 -200
  86. package/src/programmers/IsPruneProgrammer.ts +75 -75
  87. package/src/programmers/IsStringifyProgrammer.ts +81 -81
  88. package/src/programmers/PruneProgrammer.ts +341 -341
  89. package/src/programmers/RandomProgrammer.ts +391 -391
  90. package/src/programmers/StringifyProgrammer.ts +795 -795
  91. package/src/programmers/ValidateCloneProgrammer.ts +90 -90
  92. package/src/programmers/ValidateParseProgrammer.ts +69 -69
  93. package/src/programmers/ValidateProgrammer.ts +266 -266
  94. package/src/programmers/ValidatePruneProgrammer.ts +83 -83
  95. package/src/programmers/ValidateStringifyProgrammer.ts +89 -89
  96. package/src/programmers/helpers/AtomicPredicator.ts +31 -31
  97. package/src/programmers/helpers/CloneJoiner.ts +134 -134
  98. package/src/programmers/helpers/FunctionImporeter.ts +55 -55
  99. package/src/programmers/helpers/IExpressionEntry.ts +12 -12
  100. package/src/programmers/helpers/OptionPredicator.ts +19 -19
  101. package/src/programmers/helpers/PruneJoiner.ts +52 -52
  102. package/src/programmers/helpers/RandomJoiner.ts +149 -149
  103. package/src/programmers/helpers/RandomRanger.ts +216 -216
  104. package/src/programmers/helpers/StringifyJoinder.ts +114 -114
  105. package/src/programmers/helpers/StringifyPredicator.ts +18 -18
  106. package/src/programmers/helpers/UnionExplorer.ts +274 -274
  107. package/src/programmers/helpers/UnionPredicator.ts +81 -81
  108. package/src/programmers/internal/application_array.ts +37 -37
  109. package/src/programmers/internal/application_boolean.ts +17 -17
  110. package/src/programmers/internal/application_constant.ts +29 -29
  111. package/src/programmers/internal/application_default.ts +17 -17
  112. package/src/programmers/internal/application_default_string.ts +32 -32
  113. package/src/programmers/internal/application_native.ts +29 -29
  114. package/src/programmers/internal/application_number.ts +70 -70
  115. package/src/programmers/internal/application_object.ts +153 -153
  116. package/src/programmers/internal/application_schema.ts +184 -184
  117. package/src/programmers/internal/application_string.ts +41 -41
  118. package/src/programmers/internal/application_templates.ts +27 -27
  119. package/src/programmers/internal/application_tuple.ts +29 -29
  120. package/src/programmers/internal/check_array.ts +22 -22
  121. package/src/programmers/internal/check_array_length.ts +44 -44
  122. package/src/programmers/internal/check_bigint.ts +64 -64
  123. package/src/programmers/internal/check_dynamic_properties.ts +197 -197
  124. package/src/programmers/internal/check_everything.ts +28 -28
  125. package/src/programmers/internal/check_native.ts +21 -21
  126. package/src/programmers/internal/check_number.ts +145 -145
  127. package/src/programmers/internal/check_object.ts +48 -48
  128. package/src/programmers/internal/check_string.ts +24 -24
  129. package/src/programmers/internal/check_string_tags.ts +63 -63
  130. package/src/programmers/internal/check_template.ts +50 -50
  131. package/src/programmers/internal/check_union_array_like.ts +260 -260
  132. package/src/programmers/internal/check_union_tuple.ts +33 -33
  133. package/src/programmers/internal/decode_union_object.ts +73 -73
  134. package/src/programmers/internal/feature_object_entries.ts +59 -59
  135. package/src/programmers/internal/metadata_to_pattern.ts +31 -31
  136. package/src/programmers/internal/prune_object_properties.ts +60 -60
  137. package/src/programmers/internal/stringify_dynamic_properties.ts +165 -165
  138. package/src/programmers/internal/stringify_native.ts +8 -8
  139. package/src/programmers/internal/stringify_regular_properties.ts +81 -81
  140. package/src/programmers/internal/template_to_pattern.ts +15 -15
  141. package/src/schemas/IJsonApplication.ts +9 -9
  142. package/src/schemas/IJsonComponents.ts +26 -26
  143. package/src/schemas/IJsonSchema.ts +127 -127
  144. package/src/transform.ts +21 -21
  145. package/src/transformers/CallExpressionTransformer.ts +172 -172
  146. package/src/transformers/ExpressionWithArgumentTransformer.ts +66 -66
  147. package/src/transformers/FileTransformer.ts +49 -49
  148. package/src/transformers/IProject.ts +11 -11
  149. package/src/transformers/ITransformOptions.ts +62 -62
  150. package/src/transformers/ImportTransformer.ts +60 -60
  151. package/src/transformers/NodeTransformer.ts +19 -19
  152. package/src/transformers/features/miscellaneous/ApplicationTransformer.ts +120 -120
  153. package/src/transformers/features/miscellaneous/AssertCloneTransformer.ts +9 -9
  154. package/src/transformers/features/miscellaneous/AssertPruneTransformer.ts +9 -9
  155. package/src/transformers/features/miscellaneous/CloneTransformer.ts +9 -9
  156. package/src/transformers/features/miscellaneous/CreateAssertCloneTransformer.ts +9 -9
  157. package/src/transformers/features/miscellaneous/CreateAssertPruneTransformer.ts +9 -9
  158. package/src/transformers/features/miscellaneous/CreateCloneTransformer.ts +9 -9
  159. package/src/transformers/features/miscellaneous/CreateIsCloneTransformer.ts +9 -9
  160. package/src/transformers/features/miscellaneous/CreateIsPruneTransformer.ts +9 -9
  161. package/src/transformers/features/miscellaneous/CreatePruneTransformer.ts +9 -9
  162. package/src/transformers/features/miscellaneous/CreateRandomGenerator.ts +42 -42
  163. package/src/transformers/features/miscellaneous/CreateValidateCloneTransformer.ts +9 -9
  164. package/src/transformers/features/miscellaneous/CreateValidatePruneTransformer.ts +9 -9
  165. package/src/transformers/features/miscellaneous/IsCloneTransformer.ts +9 -9
  166. package/src/transformers/features/miscellaneous/IsPruneTransformer.ts +9 -9
  167. package/src/transformers/features/miscellaneous/MetadataTransformer.ts +55 -55
  168. package/src/transformers/features/miscellaneous/PruneTransformer.ts +9 -9
  169. package/src/transformers/features/miscellaneous/RandomTransformer.ts +48 -48
  170. package/src/transformers/features/miscellaneous/ValidateCloneTransformer.ts +9 -9
  171. package/src/transformers/features/miscellaneous/ValidatePruneTransformer.ts +9 -9
  172. package/src/transformers/features/parsers/AssertParseTransformer.ts +9 -9
  173. package/src/transformers/features/parsers/CreateAssertParseTransformer.ts +9 -9
  174. package/src/transformers/features/parsers/CreateIsParseTransformer.ts +9 -9
  175. package/src/transformers/features/parsers/CreateValidateParseTransformer.ts +9 -9
  176. package/src/transformers/features/parsers/IsParseTransformer.ts +9 -9
  177. package/src/transformers/features/parsers/ValidateParseTransformer.ts +9 -9
  178. package/src/transformers/features/stringifiers/AssertStringifyTransformer.ts +10 -10
  179. package/src/transformers/features/stringifiers/CreateAssertStringifyTransformer.ts +9 -9
  180. package/src/transformers/features/stringifiers/CreateIsStringifyTransformer.ts +9 -9
  181. package/src/transformers/features/stringifiers/CreateStringifyTransformer.ts +9 -9
  182. package/src/transformers/features/stringifiers/CreateValidateStringifyProgrammer.ts +11 -11
  183. package/src/transformers/features/stringifiers/IsStringifyTransformer.ts +9 -9
  184. package/src/transformers/features/stringifiers/StringifyTransformer.ts +9 -9
  185. package/src/transformers/features/stringifiers/ValidateStringifyTransformer.ts +10 -10
  186. package/src/transformers/features/validators/AssertTransformer.ts +11 -11
  187. package/src/transformers/features/validators/CreateAssertTransformer.ts +12 -12
  188. package/src/transformers/features/validators/CreateIsTransformer.ts +10 -10
  189. package/src/transformers/features/validators/CreateValidateTransformer.ts +12 -12
  190. package/src/transformers/features/validators/IsTransformer.ts +10 -10
  191. package/src/transformers/features/validators/ValidateTransformer.ts +11 -11
  192. package/src/transformers/internal/GenericTransformer.ts +99 -99
  193. package/src/typings/Atomic.ts +17 -17
  194. package/src/typings/ClassProperties.ts +5 -5
  195. package/src/typings/OmitNever.ts +3 -3
  196. package/src/typings/SpecialFields.ts +3 -3
  197. package/src/typings/Writable.ts +11 -11
  198. package/src/utils/ArrayUtil.ts +49 -49
  199. package/src/utils/Escaper.ts +50 -50
  200. package/src/utils/MapUtil.ts +14 -14
  201. package/src/utils/PatternUtil.ts +30 -30
  202. package/src/utils/RandomGenerator.ts +90 -90
  203. package/src/utils/Singleton.ts +17 -17
@@ -1,120 +1,120 @@
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 { Metadata } from "../../../metadata/Metadata";
8
- import { IJsonApplication } from "../../../schemas/IJsonApplication";
9
-
10
- import { ApplicationProgrammer } from "../../../programmers/ApplicationProgrammer";
11
-
12
- import { IProject } from "../../IProject";
13
-
14
- export namespace ApplicationTransformer {
15
- export function transform(
16
- { checker }: IProject,
17
- _modulo: ts.LeftHandSideExpression,
18
- expression: ts.CallExpression,
19
- ): ts.Expression {
20
- if (!expression.typeArguments?.length)
21
- throw new Error(ErrorMessages.NO_GENERIC_ARGUMENT);
22
-
23
- //----
24
- // GET ARGUMENTS
25
- //----
26
- // VALIDATE TUPLE ARGUMENTS
27
- const top: ts.Node = expression.typeArguments[0]!;
28
- if (!ts.isTupleTypeNode(top)) return expression;
29
- else if (top.elements.some((child) => !ts.isTypeNode(child)))
30
- return expression;
31
-
32
- // GET TYPES
33
- const types: ts.Type[] = top.elements.map((child) =>
34
- checker.getTypeFromTypeNode(child as ts.TypeNode),
35
- );
36
- if (types.some((t) => t.isTypeParameter()))
37
- throw new Error(ErrorMessages.GENERIC_ARGUMENT);
38
-
39
- // ADDITIONAL PARAMETERS
40
- const purpose: "swagger" | "ajv" = get_parameter(
41
- checker,
42
- "Purpose",
43
- expression.typeArguments[1],
44
- (str) => str === "swagger" || str === "ajv",
45
- () => "swagger",
46
- );
47
- const prefix: string = get_parameter(
48
- checker,
49
- "Prefix",
50
- expression.typeArguments[2],
51
- () => true,
52
- () =>
53
- purpose === "swagger"
54
- ? "#/components/schemas"
55
- : "components#/schemas",
56
- );
57
-
58
- //----
59
- // GENERATORS
60
- //----
61
- // METADATA
62
- const collection: MetadataCollection = new MetadataCollection({
63
- replace: MetadataCollection.replace,
64
- });
65
- const metadatas: Array<Metadata> = types.map((type) =>
66
- MetadataFactory.generate(checker, collection, type, {
67
- resolve: true,
68
- constant: true,
69
- validate: (meta) => {
70
- if (meta.atomics.find((str) => str === "bigint"))
71
- throw new Error(ErrorMessages.NO_BIGIT);
72
- },
73
- }),
74
- );
75
-
76
- // APPLICATION
77
- const app: IJsonApplication = ApplicationProgrammer.generate(
78
- metadatas,
79
- {
80
- purpose,
81
- prefix,
82
- },
83
- );
84
-
85
- // RETURNS WITH LITERAL EXPRESSION
86
- return LiteralFactory.generate(app);
87
- }
88
-
89
- function get_parameter<T extends string>(
90
- checker: ts.TypeChecker,
91
- name: string,
92
- node: ts.TypeNode | undefined,
93
- predicator: (value: string) => boolean,
94
- defaulter: () => T,
95
- ): T {
96
- if (!node) return defaulter();
97
-
98
- // CHECK LITERAL TYPE
99
- const type: ts.Type = checker.getTypeFromTypeNode(node);
100
- if (!type.isLiteral())
101
- throw new Error(
102
- `Error on typia.application(): generic argument "${name}" must be constant.`,
103
- );
104
-
105
- // GET VALUE AND VALIDATE IT
106
- const value = type.value;
107
- if (typeof value !== "string" || predicator(value) === false)
108
- throw new Error(
109
- `Error on typia.application(): invalid value on generic argument "${name}".`,
110
- );
111
- return value as T;
112
- }
113
- }
114
-
115
- const enum ErrorMessages {
116
- NO_GENERIC_ARGUMENT = "Error on typia.application(): no generic argument.",
117
- GENERIC_ARGUMENT = "Error on typia.application(): non-specified generic argument(s).",
118
- NO_BIGIT = "Error on typia.application(): does not allow bigint type.",
119
- NO_ZERO_LENGTH_TUPLE = "Error on typia.application(): swagger does not support zero length tuple type.",
120
- }
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 { Metadata } from "../../../metadata/Metadata";
8
+ import { IJsonApplication } from "../../../schemas/IJsonApplication";
9
+
10
+ import { ApplicationProgrammer } from "../../../programmers/ApplicationProgrammer";
11
+
12
+ import { IProject } from "../../IProject";
13
+
14
+ export namespace ApplicationTransformer {
15
+ export function transform(
16
+ { checker }: IProject,
17
+ _modulo: ts.LeftHandSideExpression,
18
+ expression: ts.CallExpression,
19
+ ): ts.Expression {
20
+ if (!expression.typeArguments?.length)
21
+ throw new Error(ErrorMessages.NO_GENERIC_ARGUMENT);
22
+
23
+ //----
24
+ // GET ARGUMENTS
25
+ //----
26
+ // VALIDATE TUPLE ARGUMENTS
27
+ const top: ts.Node = expression.typeArguments[0]!;
28
+ if (!ts.isTupleTypeNode(top)) return expression;
29
+ else if (top.elements.some((child) => !ts.isTypeNode(child)))
30
+ return expression;
31
+
32
+ // GET TYPES
33
+ const types: ts.Type[] = top.elements.map((child) =>
34
+ checker.getTypeFromTypeNode(child as ts.TypeNode),
35
+ );
36
+ if (types.some((t) => t.isTypeParameter()))
37
+ throw new Error(ErrorMessages.GENERIC_ARGUMENT);
38
+
39
+ // ADDITIONAL PARAMETERS
40
+ const purpose: "swagger" | "ajv" = get_parameter(
41
+ checker,
42
+ "Purpose",
43
+ expression.typeArguments[1],
44
+ (str) => str === "swagger" || str === "ajv",
45
+ () => "swagger",
46
+ );
47
+ const prefix: string = get_parameter(
48
+ checker,
49
+ "Prefix",
50
+ expression.typeArguments[2],
51
+ () => true,
52
+ () =>
53
+ purpose === "swagger"
54
+ ? "#/components/schemas"
55
+ : "components#/schemas",
56
+ );
57
+
58
+ //----
59
+ // GENERATORS
60
+ //----
61
+ // METADATA
62
+ const collection: MetadataCollection = new MetadataCollection({
63
+ replace: MetadataCollection.replace,
64
+ });
65
+ const metadatas: Array<Metadata> = types.map((type) =>
66
+ MetadataFactory.generate(checker, collection, type, {
67
+ resolve: true,
68
+ constant: true,
69
+ validate: (meta) => {
70
+ if (meta.atomics.find((str) => str === "bigint"))
71
+ throw new Error(ErrorMessages.NO_BIGIT);
72
+ },
73
+ }),
74
+ );
75
+
76
+ // APPLICATION
77
+ const app: IJsonApplication = ApplicationProgrammer.generate(
78
+ metadatas,
79
+ {
80
+ purpose,
81
+ prefix,
82
+ },
83
+ );
84
+
85
+ // RETURNS WITH LITERAL EXPRESSION
86
+ return LiteralFactory.generate(app);
87
+ }
88
+
89
+ function get_parameter<T extends string>(
90
+ checker: ts.TypeChecker,
91
+ name: string,
92
+ node: ts.TypeNode | undefined,
93
+ predicator: (value: string) => boolean,
94
+ defaulter: () => T,
95
+ ): T {
96
+ if (!node) return defaulter();
97
+
98
+ // CHECK LITERAL TYPE
99
+ const type: ts.Type = checker.getTypeFromTypeNode(node);
100
+ if (!type.isLiteral())
101
+ throw new Error(
102
+ `Error on typia.application(): generic argument "${name}" must be constant.`,
103
+ );
104
+
105
+ // GET VALUE AND VALIDATE IT
106
+ const value = type.value;
107
+ if (typeof value !== "string" || predicator(value) === false)
108
+ throw new Error(
109
+ `Error on typia.application(): invalid value on generic argument "${name}".`,
110
+ );
111
+ return value as T;
112
+ }
113
+ }
114
+
115
+ const enum ErrorMessages {
116
+ NO_GENERIC_ARGUMENT = "Error on typia.application(): no generic argument.",
117
+ GENERIC_ARGUMENT = "Error on typia.application(): non-specified generic argument(s).",
118
+ NO_BIGIT = "Error on typia.application(): does not allow bigint type.",
119
+ NO_ZERO_LENGTH_TUPLE = "Error on typia.application(): swagger does not support zero length tuple type.",
120
+ }
@@ -1,9 +1,9 @@
1
- import { AssertCloneProgrammer } from "../../../programmers/AssertCloneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace AssertCloneTransformer {
6
- export const transform = GenericTransformer.scalar("assertClone")(
7
- (project, modulo) => AssertCloneProgrammer.generate(project, modulo),
8
- );
9
- }
1
+ import { AssertCloneProgrammer } from "../../../programmers/AssertCloneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace AssertCloneTransformer {
6
+ export const transform = GenericTransformer.scalar("assertClone")(
7
+ (project, modulo) => AssertCloneProgrammer.generate(project, modulo),
8
+ );
9
+ }
@@ -1,9 +1,9 @@
1
- import { AssertPruneProgrammer } from "../../../programmers/AssertPruneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace AssertPruneTransformer {
6
- export const transform = GenericTransformer.scalar("assertPrune")(
7
- (project, modulo) => AssertPruneProgrammer.generate(project, modulo),
8
- );
9
- }
1
+ import { AssertPruneProgrammer } from "../../../programmers/AssertPruneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace AssertPruneTransformer {
6
+ export const transform = GenericTransformer.scalar("assertPrune")(
7
+ (project, modulo) => AssertPruneProgrammer.generate(project, modulo),
8
+ );
9
+ }
@@ -1,9 +1,9 @@
1
- import { CloneProgrammer } from "../../../programmers/CloneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace CloneTransformer {
6
- export const transform = GenericTransformer.scalar("clone")(
7
- (project, modulo) => CloneProgrammer.generate(project, modulo),
8
- );
9
- }
1
+ import { CloneProgrammer } from "../../../programmers/CloneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace CloneTransformer {
6
+ export const transform = GenericTransformer.scalar("clone")(
7
+ (project, modulo) => CloneProgrammer.generate(project, modulo),
8
+ );
9
+ }
@@ -1,9 +1,9 @@
1
- import { AssertCloneProgrammer } from "../../../programmers/AssertCloneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace CreateAssertCloneTransformer {
6
- export const transform = GenericTransformer.factory("createAssertClone")(
7
- (project, modulo) => AssertCloneProgrammer.generate(project, modulo),
8
- );
9
- }
1
+ import { AssertCloneProgrammer } from "../../../programmers/AssertCloneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace CreateAssertCloneTransformer {
6
+ export const transform = GenericTransformer.factory("createAssertClone")(
7
+ (project, modulo) => AssertCloneProgrammer.generate(project, modulo),
8
+ );
9
+ }
@@ -1,9 +1,9 @@
1
- import { AssertPruneProgrammer } from "../../../programmers/AssertPruneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace CreateAssertPruneTransformer {
6
- export const transform = GenericTransformer.factory("createAssertPrune")(
7
- (project, modulo) => AssertPruneProgrammer.generate(project, modulo),
8
- );
9
- }
1
+ import { AssertPruneProgrammer } from "../../../programmers/AssertPruneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace CreateAssertPruneTransformer {
6
+ export const transform = GenericTransformer.factory("createAssertPrune")(
7
+ (project, modulo) => AssertPruneProgrammer.generate(project, modulo),
8
+ );
9
+ }
@@ -1,9 +1,9 @@
1
- import { CloneProgrammer } from "../../../programmers/CloneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace CreateCloneTransformer {
6
- export const transform = GenericTransformer.factory("createClone")(
7
- (project, modulo) => CloneProgrammer.generate(project, modulo),
8
- );
9
- }
1
+ import { CloneProgrammer } from "../../../programmers/CloneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace CreateCloneTransformer {
6
+ export const transform = GenericTransformer.factory("createClone")(
7
+ (project, modulo) => CloneProgrammer.generate(project, modulo),
8
+ );
9
+ }
@@ -1,9 +1,9 @@
1
- import { IsCloneProgrammer } from "../../../programmers/IsCloneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace CreateIsCloneTransformer {
6
- export const transform = GenericTransformer.factory("createIsClone")(
7
- (project, modulo) => IsCloneProgrammer.generate(project, modulo),
8
- );
9
- }
1
+ import { IsCloneProgrammer } from "../../../programmers/IsCloneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace CreateIsCloneTransformer {
6
+ export const transform = GenericTransformer.factory("createIsClone")(
7
+ (project, modulo) => IsCloneProgrammer.generate(project, modulo),
8
+ );
9
+ }
@@ -1,9 +1,9 @@
1
- import { IsPruneProgrammer } from "../../../programmers/IsPruneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace CreateIsPruneTransformer {
6
- export const transform = GenericTransformer.factory("createIsPrune")(
7
- (project, modulo) => IsPruneProgrammer.generate(project, modulo),
8
- );
9
- }
1
+ import { IsPruneProgrammer } from "../../../programmers/IsPruneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace CreateIsPruneTransformer {
6
+ export const transform = GenericTransformer.factory("createIsPrune")(
7
+ (project, modulo) => IsPruneProgrammer.generate(project, modulo),
8
+ );
9
+ }
@@ -1,9 +1,9 @@
1
- import { PruneProgrammer } from "../../../programmers/PruneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace CreatePruneTransformer {
6
- export const transform = GenericTransformer.factory("createPrune")(
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 CreatePruneTransformer {
6
+ export const transform = GenericTransformer.factory("createPrune")(
7
+ (project, modulo) => PruneProgrammer.generate(project, modulo),
8
+ );
9
+ }
@@ -1,42 +1,42 @@
1
- import ts from "typescript";
2
-
3
- import { RandomProgrammer } from "../../../programmers/RandomProgrammer";
4
-
5
- import { IProject } from "../../IProject";
6
-
7
- export namespace CreateRandomTransformer {
8
- export function transform(
9
- project: IProject,
10
- modulo: ts.LeftHandSideExpression,
11
- expression: ts.CallExpression,
12
- ): ts.Expression {
13
- // CHECK GENERIC ARGUMENT EXISTENCE
14
- if (!expression.typeArguments?.[0])
15
- throw new Error(ErrorMessages.NOT_SPECIFIED);
16
-
17
- // GET TYPE INFO
18
- const node: ts.TypeNode = expression.typeArguments[0];
19
- const type: ts.Type = project.checker.getTypeFromTypeNode(node);
20
-
21
- if (type.isTypeParameter())
22
- throw new Error(ErrorMessages.NO_GENERIC_ARGUMENT);
23
-
24
- // DO TRANSFORM
25
- return RandomProgrammer.generate(
26
- {
27
- ...project,
28
- options: {
29
- ...project.options,
30
- functional: false,
31
- numeric: false,
32
- },
33
- },
34
- modulo,
35
- )(type, node.getText());
36
- }
37
- }
38
-
39
- const enum ErrorMessages {
40
- NOT_SPECIFIED = "Error on typia.createRandom(): generic argument is not specified.",
41
- NO_GENERIC_ARGUMENT = "Error on typia.createRandom(): non-specified generic argument.",
42
- }
1
+ import ts from "typescript";
2
+
3
+ import { RandomProgrammer } from "../../../programmers/RandomProgrammer";
4
+
5
+ import { IProject } from "../../IProject";
6
+
7
+ export namespace CreateRandomTransformer {
8
+ export function transform(
9
+ project: IProject,
10
+ modulo: ts.LeftHandSideExpression,
11
+ expression: ts.CallExpression,
12
+ ): ts.Expression {
13
+ // CHECK GENERIC ARGUMENT EXISTENCE
14
+ if (!expression.typeArguments?.[0])
15
+ throw new Error(ErrorMessages.NOT_SPECIFIED);
16
+
17
+ // GET TYPE INFO
18
+ const node: ts.TypeNode = expression.typeArguments[0];
19
+ const type: ts.Type = project.checker.getTypeFromTypeNode(node);
20
+
21
+ if (type.isTypeParameter())
22
+ throw new Error(ErrorMessages.NO_GENERIC_ARGUMENT);
23
+
24
+ // DO TRANSFORM
25
+ return RandomProgrammer.generate(
26
+ {
27
+ ...project,
28
+ options: {
29
+ ...project.options,
30
+ functional: false,
31
+ numeric: false,
32
+ },
33
+ },
34
+ modulo,
35
+ )(type, node.getText());
36
+ }
37
+ }
38
+
39
+ const enum ErrorMessages {
40
+ NOT_SPECIFIED = "Error on typia.createRandom(): generic argument is not specified.",
41
+ NO_GENERIC_ARGUMENT = "Error on typia.createRandom(): non-specified generic argument.",
42
+ }
@@ -1,9 +1,9 @@
1
- import { ValidateCloneProgrammer } from "../../../programmers/ValidateCloneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace CreateValidateCloneTransformer {
6
- export const transform = GenericTransformer.factory("createValidateClone")(
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 CreateValidateCloneTransformer {
6
+ export const transform = GenericTransformer.factory("createValidateClone")(
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 CreateValidatePruneTransformer {
6
- export const transform = GenericTransformer.factory("createValidatePrune")(
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 CreateValidatePruneTransformer {
6
+ export const transform = GenericTransformer.factory("createValidatePrune")(
7
+ (project, modulo) => ValidatePruneProgrammer.generate(project, modulo),
8
+ );
9
+ }
@@ -1,9 +1,9 @@
1
- import { IsCloneProgrammer } from "../../../programmers/IsCloneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace IsCloneTransformer {
6
- export const transform = GenericTransformer.scalar("isClone")(
7
- (project, modulo) => IsCloneProgrammer.generate(project, modulo),
8
- );
9
- }
1
+ import { IsCloneProgrammer } from "../../../programmers/IsCloneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace IsCloneTransformer {
6
+ export const transform = GenericTransformer.scalar("isClone")(
7
+ (project, modulo) => IsCloneProgrammer.generate(project, modulo),
8
+ );
9
+ }
@@ -1,9 +1,9 @@
1
- import { IsPruneProgrammer } from "../../../programmers/IsPruneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace IsPruneTransformer {
6
- export const transform = GenericTransformer.scalar("isPrune")(
7
- (project, modulo) => IsPruneProgrammer.generate(project, modulo),
8
- );
9
- }
1
+ import { IsPruneProgrammer } from "../../../programmers/IsPruneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace IsPruneTransformer {
6
+ export const transform = GenericTransformer.scalar("isPrune")(
7
+ (project, modulo) => IsPruneProgrammer.generate(project, modulo),
8
+ );
9
+ }