typia 5.0.5 → 5.1.0-dev.20230922

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