typia 5.0.4 → 5.0.5-dev.20230921

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 (291) hide show
  1. package/README.md +1 -1
  2. package/package.json +1 -1
  3. package/src/IRandomGenerator.ts +35 -35
  4. package/src/IValidation.ts +21 -21
  5. package/src/Primitive.ts +135 -135
  6. package/src/Resolved.ts +116 -116
  7. package/src/TypeGuardError.ts +36 -36
  8. package/src/executable/TypiaGenerateWizard.ts +85 -85
  9. package/src/executable/TypiaSetupWizard.ts +153 -153
  10. package/src/executable/setup/ArgumentParser.ts +45 -45
  11. package/src/executable/setup/CommandExecutor.ts +8 -8
  12. package/src/executable/setup/FileRetriever.ts +22 -22
  13. package/src/executable/setup/PackageManager.ts +71 -71
  14. package/src/executable/setup/PluginConfigurator.ts +70 -70
  15. package/src/executable/typia.ts +52 -52
  16. package/src/factories/CommentFactory.ts +84 -84
  17. package/src/factories/ExpressionFactory.ts +159 -159
  18. package/src/factories/IdentifierFactory.ts +74 -74
  19. package/src/factories/JsonMetadataFactory.ts +43 -43
  20. package/src/factories/LiteralFactory.ts +47 -47
  21. package/src/factories/MetadataCollection.ts +269 -269
  22. package/src/factories/MetadataCommentTagFactory.ts +629 -629
  23. package/src/factories/MetadataFactory.ts +214 -214
  24. package/src/factories/MetadataTypeTagFactory.ts +313 -313
  25. package/src/factories/NumericRangeFactory.ts +33 -33
  26. package/src/factories/ProtobufFactory.ts +272 -272
  27. package/src/factories/StatementFactory.ts +72 -72
  28. package/src/factories/TemplateFactory.ts +58 -58
  29. package/src/factories/TypeFactory.ts +119 -119
  30. package/src/factories/ValueFactory.ts +12 -12
  31. package/src/factories/internal/metadata/MetadataHelper.ts +12 -12
  32. package/src/factories/internal/metadata/emend_metadata_atomics.ts +40 -40
  33. package/src/factories/internal/metadata/emplace_metadata_alias.ts +41 -41
  34. package/src/factories/internal/metadata/emplace_metadata_array_type.ts +41 -41
  35. package/src/factories/internal/metadata/emplace_metadata_object.ts +150 -150
  36. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +60 -60
  37. package/src/factories/internal/metadata/explore_metadata.ts +32 -32
  38. package/src/factories/internal/metadata/iterate_metadata.ts +101 -101
  39. package/src/factories/internal/metadata/iterate_metadata_alias.ts +35 -35
  40. package/src/factories/internal/metadata/iterate_metadata_array.ts +37 -37
  41. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +62 -62
  42. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +33 -33
  43. package/src/factories/internal/metadata/iterate_metadata_collection.ts +141 -141
  44. package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +26 -26
  45. package/src/factories/internal/metadata/iterate_metadata_constant.ts +58 -58
  46. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +197 -197
  47. package/src/factories/internal/metadata/iterate_metadata_map.ts +57 -57
  48. package/src/factories/internal/metadata/iterate_metadata_native.ts +210 -210
  49. package/src/factories/internal/metadata/iterate_metadata_object.ts +44 -44
  50. package/src/factories/internal/metadata/iterate_metadata_resolve.ts +52 -52
  51. package/src/factories/internal/metadata/iterate_metadata_set.ts +42 -42
  52. package/src/factories/internal/metadata/iterate_metadata_sort.ts +69 -69
  53. package/src/factories/internal/metadata/iterate_metadata_template.ts +47 -47
  54. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +37 -37
  55. package/src/factories/internal/metadata/iterate_metadata_union.ts +27 -27
  56. package/src/functional/$ProtobufReader.ts +201 -201
  57. package/src/functional/$ProtobufSizer.ts +147 -147
  58. package/src/functional/$ProtobufWriter.ts +151 -151
  59. package/src/functional/$any.ts +4 -4
  60. package/src/functional/$clone.ts +4 -4
  61. package/src/functional/$dictionary.ts +25 -25
  62. package/src/functional/$every.ts +11 -11
  63. package/src/functional/$guard.ts +35 -35
  64. package/src/functional/$is_between.ts +2 -2
  65. package/src/functional/$join.ts +46 -46
  66. package/src/functional/$number.ts +13 -13
  67. package/src/functional/$report.ts +15 -15
  68. package/src/functional/$rest.ts +3 -3
  69. package/src/functional/$string.ts +50 -50
  70. package/src/functional/$strlen.ts +7 -7
  71. package/src/functional/$tail.ts +5 -5
  72. package/src/functional/$varint.ts +130 -130
  73. package/src/functional/$zigzag.ts +39 -39
  74. package/src/functional/IProtobufWriter.ts +18 -18
  75. package/src/functional/Namespace.ts +133 -133
  76. package/src/index.ts +4 -4
  77. package/src/json.ts +648 -648
  78. package/src/misc.ts +651 -651
  79. package/src/module.ts +656 -656
  80. package/src/programmers/AssertProgrammer.ts +317 -317
  81. package/src/programmers/CheckerProgrammer.ts +1137 -1137
  82. package/src/programmers/FeatureProgrammer.ts +478 -478
  83. package/src/programmers/IsProgrammer.ts +252 -252
  84. package/src/programmers/RandomProgrammer.ts +878 -878
  85. package/src/programmers/TypiaProgrammer.ts +163 -163
  86. package/src/programmers/ValidateProgrammer.ts +346 -346
  87. package/src/programmers/helpers/AtomicPredicator.ts +31 -31
  88. package/src/programmers/helpers/CloneJoiner.ts +144 -144
  89. package/src/programmers/helpers/FunctionImporeter.ts +91 -91
  90. package/src/programmers/helpers/ICheckEntry.ts +13 -13
  91. package/src/programmers/helpers/IExpressionEntry.ts +12 -12
  92. package/src/programmers/helpers/OptionPredicator.ts +15 -15
  93. package/src/programmers/helpers/ProtobufUtil.ts +125 -125
  94. package/src/programmers/helpers/ProtobufWire.ts +34 -34
  95. package/src/programmers/helpers/PruneJoiner.ts +143 -143
  96. package/src/programmers/helpers/RandomJoiner.ts +151 -151
  97. package/src/programmers/helpers/RandomRanger.ts +173 -173
  98. package/src/programmers/helpers/StringifyJoinder.ts +113 -113
  99. package/src/programmers/helpers/StringifyPredicator.ts +12 -12
  100. package/src/programmers/helpers/UnionExplorer.ts +305 -305
  101. package/src/programmers/helpers/UnionPredicator.ts +81 -81
  102. package/src/programmers/helpers/disable_function_importer_declare.ts +32 -32
  103. package/src/programmers/internal/JSON_SCHEMA_PREFIX.ts +1 -1
  104. package/src/programmers/internal/application_alias.ts +65 -65
  105. package/src/programmers/internal/application_array.ts +53 -53
  106. package/src/programmers/internal/application_boolean.ts +15 -15
  107. package/src/programmers/internal/application_constant.ts +26 -26
  108. package/src/programmers/internal/application_default.ts +17 -17
  109. package/src/programmers/internal/application_default_string.ts +37 -37
  110. package/src/programmers/internal/application_escaped.ts +55 -55
  111. package/src/programmers/internal/application_native.ts +39 -39
  112. package/src/programmers/internal/application_number.ts +88 -88
  113. package/src/programmers/internal/application_object.ts +162 -162
  114. package/src/programmers/internal/application_schema.ts +175 -175
  115. package/src/programmers/internal/application_string.ts +51 -51
  116. package/src/programmers/internal/application_templates.ts +25 -25
  117. package/src/programmers/internal/application_tuple.ts +58 -58
  118. package/src/programmers/internal/check_array_length.ts +41 -41
  119. package/src/programmers/internal/check_bigint.ts +45 -45
  120. package/src/programmers/internal/check_dynamic_properties.ts +194 -194
  121. package/src/programmers/internal/check_everything.ts +28 -28
  122. package/src/programmers/internal/check_native.ts +21 -21
  123. package/src/programmers/internal/check_number.ts +105 -105
  124. package/src/programmers/internal/check_object.ts +55 -55
  125. package/src/programmers/internal/check_string.ts +45 -45
  126. package/src/programmers/internal/check_template.ts +61 -61
  127. package/src/programmers/internal/check_union_array_like.ts +323 -323
  128. package/src/programmers/internal/decode_union_object.ts +84 -84
  129. package/src/programmers/internal/feature_object_entries.ts +58 -58
  130. package/src/programmers/internal/metadata_to_pattern.ts +34 -34
  131. package/src/programmers/internal/prune_object_properties.ts +60 -60
  132. package/src/programmers/internal/random_custom.ts +37 -37
  133. package/src/programmers/internal/stringify_dynamic_properties.ts +171 -171
  134. package/src/programmers/internal/stringify_native.ts +7 -7
  135. package/src/programmers/internal/stringify_regular_properties.ts +83 -83
  136. package/src/programmers/internal/template_to_pattern.ts +15 -15
  137. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +20 -20
  138. package/src/programmers/json/JsonApplicationProgrammer.ts +50 -50
  139. package/src/programmers/json/JsonAssertParseProgrammer.ts +71 -71
  140. package/src/programmers/json/JsonAssertStringifyProgrammer.ts +66 -66
  141. package/src/programmers/json/JsonIsParseProgrammer.ts +77 -77
  142. package/src/programmers/json/JsonIsStringifyProgrammer.ts +76 -76
  143. package/src/programmers/json/JsonStringifyProgrammer.ts +964 -964
  144. package/src/programmers/json/JsonValidateParseProgrammer.ts +68 -68
  145. package/src/programmers/json/JsonValidateStringifyProgrammer.ts +84 -84
  146. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +71 -71
  147. package/src/programmers/misc/MiscAssertPruneProgrammer.ts +68 -68
  148. package/src/programmers/misc/MiscCloneProgrammer.ts +774 -774
  149. package/src/programmers/misc/MiscIsCloneProgrammer.ts +78 -78
  150. package/src/programmers/misc/MiscIsPruneProgrammer.ts +73 -73
  151. package/src/programmers/misc/MiscLiteralsProgrammer.ts +69 -69
  152. package/src/programmers/misc/MiscPruneProgrammer.ts +550 -550
  153. package/src/programmers/misc/MiscValidateCloneProgrammer.ts +85 -85
  154. package/src/programmers/misc/MiscValidatePruneProgrammer.ts +78 -78
  155. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +75 -75
  156. package/src/programmers/protobuf/ProtobufAssertEncodeProgrammer.ts +66 -66
  157. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +655 -655
  158. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +883 -883
  159. package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +85 -85
  160. package/src/programmers/protobuf/ProtobufIsEncodeProgrammer.ts +76 -76
  161. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +165 -165
  162. package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +75 -75
  163. package/src/programmers/protobuf/ProtobufValidateEncodeProgrammer.ts +86 -86
  164. package/src/protobuf.ts +881 -881
  165. package/src/schemas/json/IJsonApplication.ts +8 -8
  166. package/src/schemas/json/IJsonComponents.ts +33 -33
  167. package/src/schemas/json/IJsonSchema.ts +110 -110
  168. package/src/schemas/metadata/IJsDocTagInfo.ts +10 -10
  169. package/src/schemas/metadata/IMetadata.ts +34 -34
  170. package/src/schemas/metadata/IMetadataAlias.ts +12 -12
  171. package/src/schemas/metadata/IMetadataApplication.ts +7 -7
  172. package/src/schemas/metadata/IMetadataArray.ts +7 -7
  173. package/src/schemas/metadata/IMetadataArrayType.ts +10 -10
  174. package/src/schemas/metadata/IMetadataAtomic.ts +6 -6
  175. package/src/schemas/metadata/IMetadataCollection.ts +11 -11
  176. package/src/schemas/metadata/IMetadataConstant.ts +16 -16
  177. package/src/schemas/metadata/IMetadataDictionary.ts +14 -14
  178. package/src/schemas/metadata/IMetadataEntry.ts +6 -6
  179. package/src/schemas/metadata/IMetadataEscaped.ts +6 -6
  180. package/src/schemas/metadata/IMetadataObject.ts +18 -18
  181. package/src/schemas/metadata/IMetadataProperty.ts +9 -9
  182. package/src/schemas/metadata/IMetadataTuple.ts +7 -7
  183. package/src/schemas/metadata/IMetadataTupleType.ts +10 -10
  184. package/src/schemas/metadata/IMetadataTypeTag.ts +8 -8
  185. package/src/schemas/metadata/Metadata.ts +685 -685
  186. package/src/schemas/metadata/MetadataAlias.ts +61 -61
  187. package/src/schemas/metadata/MetadataArray.ts +49 -49
  188. package/src/schemas/metadata/MetadataArrayType.ts +57 -57
  189. package/src/schemas/metadata/MetadataAtomic.ts +42 -42
  190. package/src/schemas/metadata/MetadataConstant.ts +3 -3
  191. package/src/schemas/metadata/MetadataEscaped.ts +51 -51
  192. package/src/schemas/metadata/MetadataObject.ts +139 -139
  193. package/src/schemas/metadata/MetadataProperty.ts +59 -59
  194. package/src/schemas/metadata/MetadataTuple.ts +32 -32
  195. package/src/schemas/metadata/MetadataTupleType.ts +67 -67
  196. package/src/tags/ExclusiveMaximum.ts +13 -13
  197. package/src/tags/ExclusiveMinimum.ts +13 -13
  198. package/src/tags/Format.ts +30 -30
  199. package/src/tags/MaxItems.ts +9 -9
  200. package/src/tags/MaxLength.ts +9 -9
  201. package/src/tags/Maximum.ts +13 -13
  202. package/src/tags/MinItems.ts +9 -9
  203. package/src/tags/MinLength.ts +9 -9
  204. package/src/tags/Minimum.ts +13 -13
  205. package/src/tags/MultipleOf.ts +15 -15
  206. package/src/tags/Pattern.ts +8 -8
  207. package/src/tags/TagBase.ts +68 -68
  208. package/src/tags/Type.ts +27 -27
  209. package/src/tags/index.ts +13 -13
  210. package/src/transform.ts +35 -35
  211. package/src/transformers/CallExpressionTransformer.ts +243 -243
  212. package/src/transformers/FileTransformer.ts +57 -57
  213. package/src/transformers/IProject.ts +15 -15
  214. package/src/transformers/ITransformOptions.ts +62 -62
  215. package/src/transformers/ImportTransformer.ts +66 -66
  216. package/src/transformers/NodeTransformer.ts +13 -13
  217. package/src/transformers/TransformerError.ts +55 -55
  218. package/src/transformers/features/AssertTransformer.ts +11 -11
  219. package/src/transformers/features/CreateAssertTransformer.ts +13 -13
  220. package/src/transformers/features/CreateIsTransformer.ts +11 -11
  221. package/src/transformers/features/CreateRandomTransformer.ts +43 -43
  222. package/src/transformers/features/CreateValidateTransformer.ts +13 -13
  223. package/src/transformers/features/IsTransformer.ts +11 -11
  224. package/src/transformers/features/RandomTransformer.ts +46 -46
  225. package/src/transformers/features/ValidateTransformer.ts +11 -11
  226. package/src/transformers/features/json/JsonApplicationTransformer.ts +118 -118
  227. package/src/transformers/features/json/JsonAssertParseTransformer.ts +10 -10
  228. package/src/transformers/features/json/JsonAssertStringifyTransformer.ts +10 -10
  229. package/src/transformers/features/json/JsonCreateAssertParseTransformer.ts +10 -10
  230. package/src/transformers/features/json/JsonCreateAssertStringifyTransformer.ts +12 -12
  231. package/src/transformers/features/json/JsonCreateIsParseTransformer.ts +9 -9
  232. package/src/transformers/features/json/JsonCreateIsStringifyTransformer.ts +10 -10
  233. package/src/transformers/features/json/JsonCreateStringifyTransformer.ts +9 -9
  234. package/src/transformers/features/json/JsonCreateValidateParseTransformer.ts +10 -10
  235. package/src/transformers/features/json/JsonCreateValidateStringifyProgrammer.ts +12 -12
  236. package/src/transformers/features/json/JsonIsParseTransformer.ts +9 -9
  237. package/src/transformers/features/json/JsonIsStringifyTransformer.ts +10 -10
  238. package/src/transformers/features/json/JsonStringifyTransformer.ts +9 -9
  239. package/src/transformers/features/json/JsonValidateParseTransformer.ts +10 -10
  240. package/src/transformers/features/json/JsonValidateStringifyTransformer.ts +10 -10
  241. package/src/transformers/features/misc/MetadataTransformer.ts +61 -61
  242. package/src/transformers/features/misc/MiscAssertCloneTransformer.ts +10 -10
  243. package/src/transformers/features/misc/MiscAssertPruneTransformer.ts +10 -10
  244. package/src/transformers/features/misc/MiscCloneTransformer.ts +9 -9
  245. package/src/transformers/features/misc/MiscCreateAssertCloneTransformer.ts +10 -10
  246. package/src/transformers/features/misc/MiscCreateAssertPruneTransformer.ts +10 -10
  247. package/src/transformers/features/misc/MiscCreateCloneTransformer.ts +9 -9
  248. package/src/transformers/features/misc/MiscCreateIsCloneTransformer.ts +9 -9
  249. package/src/transformers/features/misc/MiscCreateIsPruneTransformer.ts +9 -9
  250. package/src/transformers/features/misc/MiscCreatePruneTransformer.ts +9 -9
  251. package/src/transformers/features/misc/MiscCreateValidateCloneTransformer.ts +10 -10
  252. package/src/transformers/features/misc/MiscCreateValidatePruneTransformer.ts +10 -10
  253. package/src/transformers/features/misc/MiscIsCloneTransformer.ts +9 -9
  254. package/src/transformers/features/misc/MiscIsPruneTransformer.ts +9 -9
  255. package/src/transformers/features/misc/MiscLiteralsTransformer.ts +32 -32
  256. package/src/transformers/features/misc/MiscPruneTransformer.ts +9 -9
  257. package/src/transformers/features/misc/MiscValidateCloneTransformer.ts +10 -10
  258. package/src/transformers/features/misc/MiscValidatePruneTransformer.ts +10 -10
  259. package/src/transformers/features/protobuf/CreateProtobufAssertDecodeTransformer.ts +12 -12
  260. package/src/transformers/features/protobuf/CreateProtobufAssertEncodeTransformer.ts +12 -12
  261. package/src/transformers/features/protobuf/CreateProtobufDecodeTransformer.ts +9 -9
  262. package/src/transformers/features/protobuf/CreateProtobufEncodeTransformer.ts +9 -9
  263. package/src/transformers/features/protobuf/CreateProtobufIsDecodeTransformer.ts +12 -12
  264. package/src/transformers/features/protobuf/CreateProtobufIsEncodeTransformer.ts +12 -12
  265. package/src/transformers/features/protobuf/CreateProtobufValidateDecodeTransformer.ts +12 -12
  266. package/src/transformers/features/protobuf/CreateProtobufValidateEncodeTransformer.ts +12 -12
  267. package/src/transformers/features/protobuf/ProtobufAssertDecodeTransformer.ts +10 -10
  268. package/src/transformers/features/protobuf/ProtobufAssertEncodeTransformer.ts +10 -10
  269. package/src/transformers/features/protobuf/ProtobufDecodeTransformer.ts +10 -10
  270. package/src/transformers/features/protobuf/ProtobufEncodeTransformer.ts +10 -10
  271. package/src/transformers/features/protobuf/ProtobufIsDecodeTransformer.ts +10 -10
  272. package/src/transformers/features/protobuf/ProtobufIsEncodeTransformer.ts +10 -10
  273. package/src/transformers/features/protobuf/ProtobufMessageTransformer.ts +33 -33
  274. package/src/transformers/features/protobuf/ProtobufValidateDecodeTransformer.ts +12 -12
  275. package/src/transformers/features/protobuf/ProtobufValidateEncodeTransformer.ts +12 -12
  276. package/src/transformers/internal/GenericTransformer.ts +104 -104
  277. package/src/typings/Atomic.ts +18 -18
  278. package/src/typings/ClassProperties.ts +5 -5
  279. package/src/typings/Customizable.ts +5 -5
  280. package/src/typings/OmitNever.ts +3 -3
  281. package/src/typings/ProtobufAtomic.ts +19 -19
  282. package/src/typings/SpecialFields.ts +3 -3
  283. package/src/typings/ValidationPipe.ts +9 -9
  284. package/src/typings/Writable.ts +11 -11
  285. package/src/utils/ArrayUtil.ts +45 -45
  286. package/src/utils/Escaper.ts +46 -46
  287. package/src/utils/MapUtil.ts +12 -12
  288. package/src/utils/NameEncoder.ts +32 -32
  289. package/src/utils/PatternUtil.ts +33 -33
  290. package/src/utils/RandomGenerator.ts +83 -83
  291. package/src/utils/Singleton.ts +17 -17
@@ -1,10 +1,10 @@
1
- import { JsonValidateStringifyProgrammer } from "../../../programmers/json/JsonValidateStringifyProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace JsonValidateStringifyTransformer {
6
- export const transform = GenericTransformer.scalar("validatStringify")(
7
- (project) => (modulo) =>
8
- JsonValidateStringifyProgrammer.write(project)(modulo),
9
- );
10
- }
1
+ import { JsonValidateStringifyProgrammer } from "../../../programmers/json/JsonValidateStringifyProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace JsonValidateStringifyTransformer {
6
+ export const transform = GenericTransformer.scalar("validatStringify")(
7
+ (project) => (modulo) =>
8
+ JsonValidateStringifyProgrammer.write(project)(modulo),
9
+ );
10
+ }
@@ -1,61 +1,61 @@
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 "../../../schemas/metadata/IMetadataApplication";
8
- import { Metadata } from "../../../schemas/metadata/Metadata";
9
-
10
- import { IProject } from "../../IProject";
11
- import { TransformerError } from "../../TransformerError";
12
-
13
- export namespace MetadataTransformer {
14
- export const transform =
15
- ({ checker }: IProject) =>
16
- (expression: ts.CallExpression): ts.Expression => {
17
- if (!expression.typeArguments?.length)
18
- throw new TransformerError({
19
- code: "typia.metadata",
20
- message: "no generic argument.",
21
- });
22
-
23
- // VALIDATE TUPLE ARGUMENTS
24
- const top: ts.Node = expression.typeArguments[0]!;
25
- if (!ts.isTupleTypeNode(top)) return expression;
26
- else if (top.elements.some((child) => !ts.isTypeNode(child)))
27
- return expression;
28
-
29
- // GET TYPES
30
- const types: ts.Type[] = top.elements.map((child) =>
31
- checker.getTypeFromTypeNode(child as ts.TypeNode),
32
- );
33
- if (types.some((t) => t.isTypeParameter()))
34
- throw new TransformerError({
35
- code: "typia.metadata",
36
- message: "non-specified generic argument(s).",
37
- });
38
-
39
- // METADATA
40
- const collection: MetadataCollection = new MetadataCollection();
41
- const metadatas: Array<Metadata> = types.map((type) => {
42
- const result = MetadataFactory.analyze(checker)({
43
- escape: true,
44
- constant: true,
45
- absorb: true,
46
- })(collection)(type);
47
- if (result.success === false)
48
- throw TransformerError.from("typia.metadata")(
49
- result.errors,
50
- );
51
- return result.data;
52
- });
53
-
54
- // CONVERT TO PRIMITIVE TYPE
55
- const app: IMetadataApplication = {
56
- metadatas: metadatas.map((metadata) => metadata.toJSON()),
57
- collection: collection.toJSON(),
58
- };
59
- return LiteralFactory.generate(app);
60
- };
61
- }
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 "../../../schemas/metadata/IMetadataApplication";
8
+ import { Metadata } from "../../../schemas/metadata/Metadata";
9
+
10
+ import { IProject } from "../../IProject";
11
+ import { TransformerError } from "../../TransformerError";
12
+
13
+ export namespace MetadataTransformer {
14
+ export const transform =
15
+ ({ checker }: IProject) =>
16
+ (expression: ts.CallExpression): ts.Expression => {
17
+ if (!expression.typeArguments?.length)
18
+ throw new TransformerError({
19
+ code: "typia.metadata",
20
+ message: "no generic argument.",
21
+ });
22
+
23
+ // VALIDATE TUPLE ARGUMENTS
24
+ const top: ts.Node = expression.typeArguments[0]!;
25
+ if (!ts.isTupleTypeNode(top)) return expression;
26
+ else if (top.elements.some((child) => !ts.isTypeNode(child)))
27
+ return expression;
28
+
29
+ // GET TYPES
30
+ const types: ts.Type[] = top.elements.map((child) =>
31
+ checker.getTypeFromTypeNode(child as ts.TypeNode),
32
+ );
33
+ if (types.some((t) => t.isTypeParameter()))
34
+ throw new TransformerError({
35
+ code: "typia.metadata",
36
+ message: "non-specified generic argument(s).",
37
+ });
38
+
39
+ // METADATA
40
+ const collection: MetadataCollection = new MetadataCollection();
41
+ const metadatas: Array<Metadata> = types.map((type) => {
42
+ const result = MetadataFactory.analyze(checker)({
43
+ escape: true,
44
+ constant: true,
45
+ absorb: true,
46
+ })(collection)(type);
47
+ if (result.success === false)
48
+ throw TransformerError.from("typia.metadata")(
49
+ result.errors,
50
+ );
51
+ return result.data;
52
+ });
53
+
54
+ // CONVERT TO PRIMITIVE TYPE
55
+ const app: IMetadataApplication = {
56
+ metadatas: metadatas.map((metadata) => metadata.toJSON()),
57
+ collection: collection.toJSON(),
58
+ };
59
+ return LiteralFactory.generate(app);
60
+ };
61
+ }
@@ -1,10 +1,10 @@
1
- import { MiscAssertCloneProgrammer } from "../../../programmers/misc/MiscAssertCloneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace MiscAssertCloneTransformer {
6
- export const transform = GenericTransformer.scalar("assertClone")(
7
- (project) => (modulo) =>
8
- MiscAssertCloneProgrammer.write(project)(modulo),
9
- );
10
- }
1
+ import { MiscAssertCloneProgrammer } from "../../../programmers/misc/MiscAssertCloneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace MiscAssertCloneTransformer {
6
+ export const transform = GenericTransformer.scalar("assertClone")(
7
+ (project) => (modulo) =>
8
+ MiscAssertCloneProgrammer.write(project)(modulo),
9
+ );
10
+ }
@@ -1,10 +1,10 @@
1
- import { MiscAssertPruneProgrammer } from "../../../programmers/misc/MiscAssertPruneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace MiscAssertPruneTransformer {
6
- export const transform = GenericTransformer.scalar("assertPrune")(
7
- (project) => (modulo) =>
8
- MiscAssertPruneProgrammer.write(project)(modulo),
9
- );
10
- }
1
+ import { MiscAssertPruneProgrammer } from "../../../programmers/misc/MiscAssertPruneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace MiscAssertPruneTransformer {
6
+ export const transform = GenericTransformer.scalar("assertPrune")(
7
+ (project) => (modulo) =>
8
+ MiscAssertPruneProgrammer.write(project)(modulo),
9
+ );
10
+ }
@@ -1,9 +1,9 @@
1
- import { MiscCloneProgrammer } from "../../../programmers/misc/MiscCloneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace MiscCloneTransformer {
6
- export const transform = GenericTransformer.scalar("clone")(
7
- (project) => (modulo) => MiscCloneProgrammer.write(project)(modulo),
8
- );
9
- }
1
+ import { MiscCloneProgrammer } from "../../../programmers/misc/MiscCloneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace MiscCloneTransformer {
6
+ export const transform = GenericTransformer.scalar("clone")(
7
+ (project) => (modulo) => MiscCloneProgrammer.write(project)(modulo),
8
+ );
9
+ }
@@ -1,10 +1,10 @@
1
- import { MiscAssertCloneProgrammer } from "../../../programmers/misc/MiscAssertCloneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace MiscCreateAssertCloneTransformer {
6
- export const transform = GenericTransformer.factory("createAssertClone")(
7
- (project) => (modulo) =>
8
- MiscAssertCloneProgrammer.write(project)(modulo),
9
- );
10
- }
1
+ import { MiscAssertCloneProgrammer } from "../../../programmers/misc/MiscAssertCloneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace MiscCreateAssertCloneTransformer {
6
+ export const transform = GenericTransformer.factory("createAssertClone")(
7
+ (project) => (modulo) =>
8
+ MiscAssertCloneProgrammer.write(project)(modulo),
9
+ );
10
+ }
@@ -1,10 +1,10 @@
1
- import { MiscAssertPruneProgrammer } from "../../../programmers/misc/MiscAssertPruneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace MiscCreateAssertPruneTransformer {
6
- export const transform = GenericTransformer.factory("createAssertPrune")(
7
- (project) => (modulo) =>
8
- MiscAssertPruneProgrammer.write(project)(modulo),
9
- );
10
- }
1
+ import { MiscAssertPruneProgrammer } from "../../../programmers/misc/MiscAssertPruneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace MiscCreateAssertPruneTransformer {
6
+ export const transform = GenericTransformer.factory("createAssertPrune")(
7
+ (project) => (modulo) =>
8
+ MiscAssertPruneProgrammer.write(project)(modulo),
9
+ );
10
+ }
@@ -1,9 +1,9 @@
1
- import { MiscCloneProgrammer } from "../../../programmers/misc/MiscCloneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace MiscCreateCloneTransformer {
6
- export const transform = GenericTransformer.factory("createClone")(
7
- (project) => (modulo) => MiscCloneProgrammer.write(project)(modulo),
8
- );
9
- }
1
+ import { MiscCloneProgrammer } from "../../../programmers/misc/MiscCloneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace MiscCreateCloneTransformer {
6
+ export const transform = GenericTransformer.factory("createClone")(
7
+ (project) => (modulo) => MiscCloneProgrammer.write(project)(modulo),
8
+ );
9
+ }
@@ -1,9 +1,9 @@
1
- import { MiscIsCloneProgrammer } from "../../../programmers/misc/MiscIsCloneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace MiscCreateIsCloneTransformer {
6
- export const transform = GenericTransformer.factory("createIsClone")(
7
- (project) => (modulo) => MiscIsCloneProgrammer.write(project)(modulo),
8
- );
9
- }
1
+ import { MiscIsCloneProgrammer } from "../../../programmers/misc/MiscIsCloneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace MiscCreateIsCloneTransformer {
6
+ export const transform = GenericTransformer.factory("createIsClone")(
7
+ (project) => (modulo) => MiscIsCloneProgrammer.write(project)(modulo),
8
+ );
9
+ }
@@ -1,9 +1,9 @@
1
- import { MiscIsPruneProgrammer } from "../../../programmers/misc/MiscIsPruneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace MiscCreateIsPruneTransformer {
6
- export const transform = GenericTransformer.factory("createIsPrune")(
7
- (project) => (modulo) => MiscIsPruneProgrammer.write(project)(modulo),
8
- );
9
- }
1
+ import { MiscIsPruneProgrammer } from "../../../programmers/misc/MiscIsPruneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace MiscCreateIsPruneTransformer {
6
+ export const transform = GenericTransformer.factory("createIsPrune")(
7
+ (project) => (modulo) => MiscIsPruneProgrammer.write(project)(modulo),
8
+ );
9
+ }
@@ -1,9 +1,9 @@
1
- import { MiscPruneProgrammer } from "../../../programmers/misc/MiscPruneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace MiscCreatePruneTransformer {
6
- export const transform = GenericTransformer.factory("createPrune")(
7
- (project) => (modulo) => MiscPruneProgrammer.write(project)(modulo),
8
- );
9
- }
1
+ import { MiscPruneProgrammer } from "../../../programmers/misc/MiscPruneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace MiscCreatePruneTransformer {
6
+ export const transform = GenericTransformer.factory("createPrune")(
7
+ (project) => (modulo) => MiscPruneProgrammer.write(project)(modulo),
8
+ );
9
+ }
@@ -1,10 +1,10 @@
1
- import { MiscValidateCloneProgrammer } from "../../../programmers/misc/MiscValidateCloneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace MiscCreateValidateCloneTransformer {
6
- export const transform = GenericTransformer.factory("createValidateClone")(
7
- (project) => (modulo) =>
8
- MiscValidateCloneProgrammer.write(project)(modulo),
9
- );
10
- }
1
+ import { MiscValidateCloneProgrammer } from "../../../programmers/misc/MiscValidateCloneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace MiscCreateValidateCloneTransformer {
6
+ export const transform = GenericTransformer.factory("createValidateClone")(
7
+ (project) => (modulo) =>
8
+ MiscValidateCloneProgrammer.write(project)(modulo),
9
+ );
10
+ }
@@ -1,10 +1,10 @@
1
- import { MiscValidatePruneProgrammer } from "../../../programmers/misc/MiscValidatePruneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace MiscCreateValidatePruneTransformer {
6
- export const transform = GenericTransformer.factory("createValidatePrune")(
7
- (project) => (modulo) =>
8
- MiscValidatePruneProgrammer.write(project)(modulo),
9
- );
10
- }
1
+ import { MiscValidatePruneProgrammer } from "../../../programmers/misc/MiscValidatePruneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace MiscCreateValidatePruneTransformer {
6
+ export const transform = GenericTransformer.factory("createValidatePrune")(
7
+ (project) => (modulo) =>
8
+ MiscValidatePruneProgrammer.write(project)(modulo),
9
+ );
10
+ }
@@ -1,9 +1,9 @@
1
- import { MiscIsCloneProgrammer } from "../../../programmers/misc/MiscIsCloneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace MiscIsCloneTransformer {
6
- export const transform = GenericTransformer.scalar("isClone")(
7
- (project) => (modulo) => MiscIsCloneProgrammer.write(project)(modulo),
8
- );
9
- }
1
+ import { MiscIsCloneProgrammer } from "../../../programmers/misc/MiscIsCloneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace MiscIsCloneTransformer {
6
+ export const transform = GenericTransformer.scalar("isClone")(
7
+ (project) => (modulo) => MiscIsCloneProgrammer.write(project)(modulo),
8
+ );
9
+ }
@@ -1,9 +1,9 @@
1
- import { MiscIsPruneProgrammer } from "../../../programmers/misc/MiscIsPruneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace MiscIsPruneTransformer {
6
- export const transform = GenericTransformer.scalar("isPrune")(
7
- (project) => (modulo) => MiscIsPruneProgrammer.write(project)(modulo),
8
- );
9
- }
1
+ import { MiscIsPruneProgrammer } from "../../../programmers/misc/MiscIsPruneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace MiscIsPruneTransformer {
6
+ export const transform = GenericTransformer.scalar("isPrune")(
7
+ (project) => (modulo) => MiscIsPruneProgrammer.write(project)(modulo),
8
+ );
9
+ }
@@ -1,32 +1,32 @@
1
- import ts from "typescript";
2
-
3
- import { MiscLiteralsProgrammer } from "../../../programmers/misc/MiscLiteralsProgrammer";
4
-
5
- import { IProject } from "../../IProject";
6
- import { TransformerError } from "../../TransformerError";
7
-
8
- export namespace MiscLiteralsTransformer {
9
- export const transform =
10
- (project: IProject) =>
11
- (expression: ts.CallExpression): ts.Expression => {
12
- // CHECK GENERIC ARGUMENT EXISTENCE
13
- if (!expression.typeArguments?.[0])
14
- throw new TransformerError({
15
- code: "typia.misc.literals",
16
- message: "generic argument is not specified.",
17
- });
18
-
19
- // GET TYPE INFO
20
- const node: ts.TypeNode = expression.typeArguments[0];
21
- const type: ts.Type = project.checker.getTypeFromTypeNode(node);
22
-
23
- if (type.isTypeParameter())
24
- throw new TransformerError({
25
- code: "typia.misc.literals",
26
- message: "non-specified generic argument.",
27
- });
28
-
29
- // DO TRANSFORM
30
- return MiscLiteralsProgrammer.write(project)(type);
31
- };
32
- }
1
+ import ts from "typescript";
2
+
3
+ import { MiscLiteralsProgrammer } from "../../../programmers/misc/MiscLiteralsProgrammer";
4
+
5
+ import { IProject } from "../../IProject";
6
+ import { TransformerError } from "../../TransformerError";
7
+
8
+ export namespace MiscLiteralsTransformer {
9
+ export const transform =
10
+ (project: IProject) =>
11
+ (expression: ts.CallExpression): ts.Expression => {
12
+ // CHECK GENERIC ARGUMENT EXISTENCE
13
+ if (!expression.typeArguments?.[0])
14
+ throw new TransformerError({
15
+ code: "typia.misc.literals",
16
+ message: "generic argument is not specified.",
17
+ });
18
+
19
+ // GET TYPE INFO
20
+ const node: ts.TypeNode = expression.typeArguments[0];
21
+ const type: ts.Type = project.checker.getTypeFromTypeNode(node);
22
+
23
+ if (type.isTypeParameter())
24
+ throw new TransformerError({
25
+ code: "typia.misc.literals",
26
+ message: "non-specified generic argument.",
27
+ });
28
+
29
+ // DO TRANSFORM
30
+ return MiscLiteralsProgrammer.write(project)(type);
31
+ };
32
+ }
@@ -1,9 +1,9 @@
1
- import { MiscPruneProgrammer } from "../../../programmers/misc/MiscPruneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace MiscPruneTransformer {
6
- export const transform = GenericTransformer.scalar("prune")(
7
- (project) => (modulo) => MiscPruneProgrammer.write(project)(modulo),
8
- );
9
- }
1
+ import { MiscPruneProgrammer } from "../../../programmers/misc/MiscPruneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace MiscPruneTransformer {
6
+ export const transform = GenericTransformer.scalar("prune")(
7
+ (project) => (modulo) => MiscPruneProgrammer.write(project)(modulo),
8
+ );
9
+ }
@@ -1,10 +1,10 @@
1
- import { MiscValidateCloneProgrammer } from "../../../programmers/misc/MiscValidateCloneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace MiscValidateCloneTransformer {
6
- export const transform = GenericTransformer.scalar("validatClone")(
7
- (project) => (modulo) =>
8
- MiscValidateCloneProgrammer.write(project)(modulo),
9
- );
10
- }
1
+ import { MiscValidateCloneProgrammer } from "../../../programmers/misc/MiscValidateCloneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace MiscValidateCloneTransformer {
6
+ export const transform = GenericTransformer.scalar("validatClone")(
7
+ (project) => (modulo) =>
8
+ MiscValidateCloneProgrammer.write(project)(modulo),
9
+ );
10
+ }
@@ -1,10 +1,10 @@
1
- import { MiscValidatePruneProgrammer } from "../../../programmers/misc/MiscValidatePruneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace MiscValidatePruneTransformer {
6
- export const transform = GenericTransformer.scalar("validatPrune")(
7
- (project) => (modulo) =>
8
- MiscValidatePruneProgrammer.write(project)(modulo),
9
- );
10
- }
1
+ import { MiscValidatePruneProgrammer } from "../../../programmers/misc/MiscValidatePruneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace MiscValidatePruneTransformer {
6
+ export const transform = GenericTransformer.scalar("validatPrune")(
7
+ (project) => (modulo) =>
8
+ MiscValidatePruneProgrammer.write(project)(modulo),
9
+ );
10
+ }
@@ -1,12 +1,12 @@
1
- import { ProtobufAssertDecodeProgrammer } from "../../../programmers/protobuf/ProtobufAssertDecodeProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace CreateProtobufAssertDecodeTransformer {
6
- export const transform = GenericTransformer.factory(
7
- "protobuf.createAssertDecode",
8
- )(
9
- (project) => (modulo) =>
10
- ProtobufAssertDecodeProgrammer.write(project)(modulo),
11
- );
12
- }
1
+ import { ProtobufAssertDecodeProgrammer } from "../../../programmers/protobuf/ProtobufAssertDecodeProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace CreateProtobufAssertDecodeTransformer {
6
+ export const transform = GenericTransformer.factory(
7
+ "protobuf.createAssertDecode",
8
+ )(
9
+ (project) => (modulo) =>
10
+ ProtobufAssertDecodeProgrammer.write(project)(modulo),
11
+ );
12
+ }
@@ -1,12 +1,12 @@
1
- import { ProtobufAssertEncodeProgrammer } from "../../../programmers/protobuf/ProtobufAssertEncodeProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace CreateProtobufAssertEncodeTransformer {
6
- export const transform = GenericTransformer.factory(
7
- "protobuf.createAssertEncode",
8
- )(
9
- (project) => (modulo) =>
10
- ProtobufAssertEncodeProgrammer.write(project)(modulo),
11
- );
12
- }
1
+ import { ProtobufAssertEncodeProgrammer } from "../../../programmers/protobuf/ProtobufAssertEncodeProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace CreateProtobufAssertEncodeTransformer {
6
+ export const transform = GenericTransformer.factory(
7
+ "protobuf.createAssertEncode",
8
+ )(
9
+ (project) => (modulo) =>
10
+ ProtobufAssertEncodeProgrammer.write(project)(modulo),
11
+ );
12
+ }
@@ -1,9 +1,9 @@
1
- import { ProtobufDecodeProgrammer } from "../../../programmers/protobuf/ProtobufDecodeProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace CreateProtobufDecodeTransformer {
6
- export const transform = GenericTransformer.factory(
7
- "protobuf.createDecode",
8
- )((project) => (modulo) => ProtobufDecodeProgrammer.write(project)(modulo));
9
- }
1
+ import { ProtobufDecodeProgrammer } from "../../../programmers/protobuf/ProtobufDecodeProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace CreateProtobufDecodeTransformer {
6
+ export const transform = GenericTransformer.factory(
7
+ "protobuf.createDecode",
8
+ )((project) => (modulo) => ProtobufDecodeProgrammer.write(project)(modulo));
9
+ }
@@ -1,9 +1,9 @@
1
- import { ProtobufEncodeProgrammer } from "../../../programmers/protobuf/ProtobufEncodeProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace CreateProtobufEncodeTransformer {
6
- export const transform = GenericTransformer.factory(
7
- "protobuf.createEncode",
8
- )((project) => (modulo) => ProtobufEncodeProgrammer.write(project)(modulo));
9
- }
1
+ import { ProtobufEncodeProgrammer } from "../../../programmers/protobuf/ProtobufEncodeProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace CreateProtobufEncodeTransformer {
6
+ export const transform = GenericTransformer.factory(
7
+ "protobuf.createEncode",
8
+ )((project) => (modulo) => ProtobufEncodeProgrammer.write(project)(modulo));
9
+ }