typia 7.3.0-dev.20241213 → 7.3.0

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 (445) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +148 -148
  3. package/lib/executable/typia.js +0 -0
  4. package/package.json +1 -1
  5. package/src/IRandomGenerator.ts +49 -49
  6. package/src/IReadableURLSearchParams.ts +9 -9
  7. package/src/IValidation.ts +21 -21
  8. package/src/executable/TypiaGenerateWizard.ts +83 -83
  9. package/src/executable/TypiaPatchWizard.ts +45 -45
  10. package/src/executable/TypiaSetupWizard.ts +179 -179
  11. package/src/executable/setup/ArgumentParser.ts +42 -42
  12. package/src/executable/setup/FileRetriever.ts +19 -19
  13. package/src/executable/setup/PackageManager.ts +87 -87
  14. package/src/factories/ExpressionFactory.ts +216 -216
  15. package/src/factories/IdentifierFactory.ts +89 -89
  16. package/src/factories/JsonMetadataFactory.ts +76 -76
  17. package/src/factories/LiteralFactory.ts +52 -52
  18. package/src/factories/MetadataCollection.ts +278 -278
  19. package/src/factories/MetadataCommentTagFactory.ts +650 -650
  20. package/src/factories/MetadataFactory.ts +404 -404
  21. package/src/factories/MetadataTypeTagFactory.ts +411 -411
  22. package/src/factories/MetadataTypeTagSchemaFactory.ts +82 -82
  23. package/src/factories/NumericRangeFactory.ts +72 -72
  24. package/src/factories/ProtobufFactory.ts +875 -875
  25. package/src/factories/StatementFactory.ts +90 -90
  26. package/src/factories/TemplateFactory.ts +64 -64
  27. package/src/factories/TypeFactory.ts +140 -140
  28. package/src/factories/internal/metadata/IMetadataIteratorProps.ts +17 -17
  29. package/src/factories/internal/metadata/MetadataHelper.ts +21 -21
  30. package/src/factories/internal/metadata/emplace_metadata_alias.ts +33 -33
  31. package/src/factories/internal/metadata/emplace_metadata_array_type.ts +39 -39
  32. package/src/factories/internal/metadata/emplace_metadata_object.ts +208 -208
  33. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +57 -57
  34. package/src/factories/internal/metadata/explore_metadata.ts +31 -31
  35. package/src/factories/internal/metadata/iterate_metadata.ts +54 -54
  36. package/src/factories/internal/metadata/iterate_metadata_alias.ts +33 -33
  37. package/src/factories/internal/metadata/iterate_metadata_array.ts +63 -63
  38. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +62 -62
  39. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +28 -28
  40. package/src/factories/internal/metadata/iterate_metadata_collection.ts +146 -146
  41. package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +32 -32
  42. package/src/factories/internal/metadata/iterate_metadata_constant.ts +76 -76
  43. package/src/factories/internal/metadata/iterate_metadata_escape.ts +49 -49
  44. package/src/factories/internal/metadata/iterate_metadata_function.ts +91 -91
  45. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +213 -213
  46. package/src/factories/internal/metadata/iterate_metadata_map.ts +57 -57
  47. package/src/factories/internal/metadata/iterate_metadata_native.ts +255 -255
  48. package/src/factories/internal/metadata/iterate_metadata_object.ts +35 -35
  49. package/src/factories/internal/metadata/iterate_metadata_set.ts +57 -57
  50. package/src/factories/internal/metadata/iterate_metadata_sort.ts +87 -87
  51. package/src/factories/internal/metadata/iterate_metadata_template.ts +41 -41
  52. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +26 -26
  53. package/src/factories/internal/metadata/iterate_metadata_union.ts +19 -19
  54. package/src/functional.ts +750 -750
  55. package/src/http.ts +1047 -1047
  56. package/src/internal/_IProtobufWriter.ts +18 -18
  57. package/src/internal/_ProtobufReader.ts +194 -194
  58. package/src/internal/_ProtobufSizer.ts +145 -145
  59. package/src/internal/_ProtobufWriter.ts +145 -145
  60. package/src/internal/_accessExpressionAsString.ts +46 -46
  61. package/src/internal/_assertGuard.ts +13 -13
  62. package/src/internal/_functionalTypeGuardErrorFactory.ts +4 -4
  63. package/src/internal/_httpFormDataReadArray.ts +4 -4
  64. package/src/internal/_httpFormDataReadBigint.ts +18 -18
  65. package/src/internal/_httpFormDataReadBlob.ts +10 -10
  66. package/src/internal/_httpFormDataReadBoolean.ts +16 -16
  67. package/src/internal/_httpFormDataReadFile.ts +10 -10
  68. package/src/internal/_httpFormDataReadNumber.ts +15 -15
  69. package/src/internal/_httpFormDataReadString.ts +10 -10
  70. package/src/internal/_httpHeaderReadBigint.ts +10 -10
  71. package/src/internal/_httpHeaderReadBoolean.ts +8 -8
  72. package/src/internal/_httpHeaderReadNumber.ts +7 -7
  73. package/src/internal/_httpParameterReadBigint.ts +10 -10
  74. package/src/internal/_httpParameterReadBoolean.ts +8 -8
  75. package/src/internal/_httpParameterReadNumber.ts +7 -7
  76. package/src/internal/_httpParameterReadString.ts +2 -2
  77. package/src/internal/_httpQueryParseURLSearchParams.ts +12 -12
  78. package/src/internal/_httpQueryReadArray.ts +4 -4
  79. package/src/internal/_httpQueryReadBigint.ts +12 -12
  80. package/src/internal/_httpQueryReadBoolean.ts +14 -14
  81. package/src/internal/_httpQueryReadNumber.ts +9 -9
  82. package/src/internal/_httpQueryReadString.ts +4 -4
  83. package/src/internal/_isBetween.ts +2 -2
  84. package/src/internal/_isBigintString.ts +8 -8
  85. package/src/internal/_isFormatByte.ts +7 -7
  86. package/src/internal/_isFormatDate.ts +3 -3
  87. package/src/internal/_isFormatDateTime.ts +4 -4
  88. package/src/internal/_isFormatDuration.ts +4 -4
  89. package/src/internal/_isFormatEmail.ts +4 -4
  90. package/src/internal/_isFormatHostname.ts +4 -4
  91. package/src/internal/_isFormatIdnEmail.ts +4 -4
  92. package/src/internal/_isFormatIdnHostname.ts +4 -4
  93. package/src/internal/_isFormatIpv4.ts +4 -4
  94. package/src/internal/_isFormatIpv6.ts +4 -4
  95. package/src/internal/_isFormatIri.ts +3 -3
  96. package/src/internal/_isFormatIriReference.ts +4 -4
  97. package/src/internal/_isFormatJsonPointer.ts +3 -3
  98. package/src/internal/_isFormatPassword.ts +1 -1
  99. package/src/internal/_isFormatRegex.ts +8 -8
  100. package/src/internal/_isFormatRelativeJsonPointer.ts +4 -4
  101. package/src/internal/_isFormatTime.ts +4 -4
  102. package/src/internal/_isFormatUri.ts +6 -6
  103. package/src/internal/_isFormatUriReference.ts +5 -5
  104. package/src/internal/_isFormatUriTemplate.ts +4 -4
  105. package/src/internal/_isFormatUrl.ts +4 -4
  106. package/src/internal/_isFormatUuid.ts +3 -3
  107. package/src/internal/_isTypeFloat.ts +5 -5
  108. package/src/internal/_isTypeInt32.ts +5 -5
  109. package/src/internal/_isTypeInt64.ts +5 -5
  110. package/src/internal/_isTypeUint32.ts +5 -5
  111. package/src/internal/_isTypeUint64.ts +5 -5
  112. package/src/internal/_isUniqueItems.ts +159 -159
  113. package/src/internal/_jsonStringifyNumber.ts +12 -12
  114. package/src/internal/_jsonStringifyRest.ts +3 -3
  115. package/src/internal/_jsonStringifyString.ts +42 -42
  116. package/src/internal/_jsonStringifyTail.ts +2 -2
  117. package/src/internal/_llmApplicationFinalize.ts +20 -20
  118. package/src/internal/_miscCloneAny.ts +46 -46
  119. package/src/internal/_notationAny.ts +37 -37
  120. package/src/internal/_notationCamel.ts +13 -13
  121. package/src/internal/_notationPascal.ts +8 -8
  122. package/src/internal/_notationSnake.ts +43 -43
  123. package/src/internal/_randomArray.ts +21 -21
  124. package/src/internal/_randomBigint.ts +6 -6
  125. package/src/internal/_randomBoolean.ts +1 -1
  126. package/src/internal/_randomFormatByte.ts +3 -3
  127. package/src/internal/_randomFormatDate.ts +18 -18
  128. package/src/internal/_randomFormatDatetime.ts +16 -16
  129. package/src/internal/_randomFormatDuration.ts +27 -27
  130. package/src/internal/_randomFormatEmail.ts +11 -11
  131. package/src/internal/_randomFormatHostname.ts +6 -6
  132. package/src/internal/_randomFormatIdnEmail.ts +3 -3
  133. package/src/internal/_randomFormatIdnHostname.ts +3 -3
  134. package/src/internal/_randomFormatIpv4.ts +11 -11
  135. package/src/internal/_randomFormatIpv6.ts +11 -11
  136. package/src/internal/_randomFormatIri.ts +3 -3
  137. package/src/internal/_randomFormatIriReference.ts +3 -3
  138. package/src/internal/_randomFormatJsonPointer.ts +7 -7
  139. package/src/internal/_randomFormatPassword.ts +8 -8
  140. package/src/internal/_randomFormatRegex.ts +4 -4
  141. package/src/internal/_randomFormatRelativeJsonPointer.ts +8 -8
  142. package/src/internal/_randomFormatTime.ts +14 -14
  143. package/src/internal/_randomFormatUri.ts +3 -3
  144. package/src/internal/_randomFormatUriReference.ts +3 -3
  145. package/src/internal/_randomFormatUriTemplate.ts +3 -3
  146. package/src/internal/_randomFormatUrl.ts +11 -11
  147. package/src/internal/_randomFormatUuid.ts +6 -6
  148. package/src/internal/_randomInteger.ts +47 -47
  149. package/src/internal/_randomNumber.ts +74 -74
  150. package/src/internal/_randomPattern.ts +10 -10
  151. package/src/internal/_randomPick.ts +9 -9
  152. package/src/internal/_randomString.ts +24 -24
  153. package/src/internal/_throwTypeGuardError.ts +5 -5
  154. package/src/internal/_validateReport.ts +13 -13
  155. package/src/internal/private/__notationCapitalize.ts +2 -2
  156. package/src/internal/private/__notationUnsnake.ts +24 -24
  157. package/src/json.ts +752 -752
  158. package/src/llm.ts +481 -481
  159. package/src/misc.ts +658 -658
  160. package/src/module.ts +937 -937
  161. package/src/notations.ts +827 -827
  162. package/src/programmers/AssertProgrammer.ts +454 -454
  163. package/src/programmers/CheckerProgrammer.ts +1617 -1617
  164. package/src/programmers/FeatureProgrammer.ts +622 -622
  165. package/src/programmers/ImportProgrammer.ts +185 -185
  166. package/src/programmers/IsProgrammer.ts +273 -273
  167. package/src/programmers/RandomProgrammer.ts +1190 -1190
  168. package/src/programmers/TypiaProgrammer.ts +174 -174
  169. package/src/programmers/ValidateProgrammer.ts +439 -439
  170. package/src/programmers/functional/FunctionalAssertFunctionProgrammer.ts +153 -153
  171. package/src/programmers/functional/FunctionalAssertParametersProgrammer.ts +125 -125
  172. package/src/programmers/functional/FunctionalAssertReturnProgrammer.ts +115 -115
  173. package/src/programmers/functional/FunctionalIsFunctionProgrammer.ts +72 -72
  174. package/src/programmers/functional/FunctionalIsParametersProgrammer.ts +113 -113
  175. package/src/programmers/functional/FunctionalIsReturnProgrammer.ts +116 -116
  176. package/src/programmers/functional/FunctionalValidateFunctionProgrammer.ts +119 -119
  177. package/src/programmers/functional/FunctionalValidateParametersProgrammer.ts +274 -274
  178. package/src/programmers/functional/FunctionalValidateReturnProgrammer.ts +135 -135
  179. package/src/programmers/functional/internal/FunctionalGeneralProgrammer.ts +34 -34
  180. package/src/programmers/helpers/AtomicPredicator.ts +35 -35
  181. package/src/programmers/helpers/CloneJoiner.ts +143 -143
  182. package/src/programmers/helpers/FunctionProgrammer.ts +67 -67
  183. package/src/programmers/helpers/HttpMetadataUtil.ts +21 -21
  184. package/src/programmers/helpers/NotationJoiner.ts +144 -144
  185. package/src/programmers/helpers/OptionPredicator.ts +15 -15
  186. package/src/programmers/helpers/ProtobufUtil.ts +228 -228
  187. package/src/programmers/helpers/PruneJoiner.ts +148 -148
  188. package/src/programmers/helpers/RandomJoiner.ts +168 -168
  189. package/src/programmers/helpers/StringifyJoinder.ts +115 -115
  190. package/src/programmers/helpers/StringifyPredicator.ts +13 -13
  191. package/src/programmers/helpers/UnionExplorer.ts +372 -372
  192. package/src/programmers/helpers/UnionPredicator.ts +79 -79
  193. package/src/programmers/helpers/disable_function_programmer_declare.ts +32 -32
  194. package/src/programmers/http/HttpAssertFormDataProgrammer.ts +99 -99
  195. package/src/programmers/http/HttpAssertHeadersProgrammer.ts +99 -99
  196. package/src/programmers/http/HttpAssertQueryProgrammer.ts +105 -105
  197. package/src/programmers/http/HttpFormDataProgrammer.ts +308 -308
  198. package/src/programmers/http/HttpHeadersProgrammer.ts +400 -400
  199. package/src/programmers/http/HttpIsFormDataProgrammer.ts +108 -108
  200. package/src/programmers/http/HttpIsHeadersProgrammer.ts +108 -108
  201. package/src/programmers/http/HttpIsQueryProgrammer.ts +114 -114
  202. package/src/programmers/http/HttpParameterProgrammer.ts +115 -115
  203. package/src/programmers/http/HttpQueryProgrammer.ts +336 -336
  204. package/src/programmers/http/HttpValidateFormDataProgrammer.ts +92 -92
  205. package/src/programmers/http/HttpValidateHeadersProgrammer.ts +92 -92
  206. package/src/programmers/http/HttpValidateQueryProgrammer.ts +98 -98
  207. package/src/programmers/internal/check_array_length.ts +47 -47
  208. package/src/programmers/internal/check_bigint.ts +50 -50
  209. package/src/programmers/internal/check_dynamic_key.ts +201 -201
  210. package/src/programmers/internal/check_dynamic_properties.ts +208 -208
  211. package/src/programmers/internal/check_everything.ts +23 -23
  212. package/src/programmers/internal/check_native.ts +27 -27
  213. package/src/programmers/internal/check_number.ts +112 -112
  214. package/src/programmers/internal/check_object.ts +75 -75
  215. package/src/programmers/internal/check_string.ts +50 -50
  216. package/src/programmers/internal/check_template.ts +48 -48
  217. package/src/programmers/internal/check_union_array_like.ts +335 -335
  218. package/src/programmers/internal/decode_union_object.ts +116 -116
  219. package/src/programmers/internal/feature_object_entries.ts +61 -61
  220. package/src/programmers/internal/json_schema_alias.ts +47 -47
  221. package/src/programmers/internal/json_schema_array.ts +45 -45
  222. package/src/programmers/internal/json_schema_bigint.ts +15 -15
  223. package/src/programmers/internal/json_schema_boolean.ts +15 -15
  224. package/src/programmers/internal/json_schema_constant.ts +26 -26
  225. package/src/programmers/internal/json_schema_description.ts +12 -12
  226. package/src/programmers/internal/json_schema_discriminator.ts +35 -35
  227. package/src/programmers/internal/json_schema_escaped.ts +82 -82
  228. package/src/programmers/internal/json_schema_native.ts +33 -33
  229. package/src/programmers/internal/json_schema_number.ts +15 -15
  230. package/src/programmers/internal/json_schema_object.ts +158 -158
  231. package/src/programmers/internal/json_schema_plugin.ts +18 -18
  232. package/src/programmers/internal/json_schema_station.ts +182 -182
  233. package/src/programmers/internal/json_schema_string.ts +15 -15
  234. package/src/programmers/internal/json_schema_template.ts +55 -55
  235. package/src/programmers/internal/json_schema_title.ts +20 -20
  236. package/src/programmers/internal/json_schema_tuple.ts +35 -35
  237. package/src/programmers/internal/metadata_to_pattern.ts +42 -42
  238. package/src/programmers/internal/postfix_of_tuple.ts +5 -5
  239. package/src/programmers/internal/prune_object_properties.ts +71 -71
  240. package/src/programmers/internal/stringify_dynamic_properties.ts +162 -162
  241. package/src/programmers/internal/stringify_regular_properties.ts +81 -81
  242. package/src/programmers/internal/template_to_pattern.ts +23 -23
  243. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +23 -23
  244. package/src/programmers/json/JsonApplicationProgrammer.ts +279 -279
  245. package/src/programmers/json/JsonAssertParseProgrammer.ts +113 -113
  246. package/src/programmers/json/JsonAssertStringifyProgrammer.ts +115 -115
  247. package/src/programmers/json/JsonIsParseProgrammer.ts +114 -114
  248. package/src/programmers/json/JsonIsStringifyProgrammer.ts +108 -108
  249. package/src/programmers/json/JsonSchemasProgrammer.ts +91 -91
  250. package/src/programmers/json/JsonStringifyProgrammer.ts +1124 -1124
  251. package/src/programmers/json/JsonValidateParseProgrammer.ts +105 -105
  252. package/src/programmers/json/JsonValidateStringifyProgrammer.ts +124 -124
  253. package/src/programmers/llm/LlmApplicationOfValidateProgrammer.ts +81 -81
  254. package/src/programmers/llm/LlmApplicationProgrammer.ts +277 -277
  255. package/src/programmers/llm/LlmModelPredicator.ts +127 -127
  256. package/src/programmers/llm/LlmParametersProgrammer.ts +90 -90
  257. package/src/programmers/llm/LlmSchemaProgrammer.ts +143 -143
  258. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +95 -95
  259. package/src/programmers/misc/MiscAssertPruneProgrammer.ts +116 -116
  260. package/src/programmers/misc/MiscCloneProgrammer.ts +1032 -1032
  261. package/src/programmers/misc/MiscIsCloneProgrammer.ts +99 -99
  262. package/src/programmers/misc/MiscIsPruneProgrammer.ts +97 -97
  263. package/src/programmers/misc/MiscLiteralsProgrammer.ts +80 -80
  264. package/src/programmers/misc/MiscPruneProgrammer.ts +728 -728
  265. package/src/programmers/misc/MiscValidateCloneProgrammer.ts +111 -111
  266. package/src/programmers/misc/MiscValidatePruneProgrammer.ts +113 -113
  267. package/src/programmers/notations/NotationAssertGeneralProgrammer.ts +101 -101
  268. package/src/programmers/notations/NotationGeneralProgrammer.ts +984 -984
  269. package/src/programmers/notations/NotationIsGeneralProgrammer.ts +105 -105
  270. package/src/programmers/notations/NotationValidateGeneralProgrammer.ts +119 -119
  271. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +98 -98
  272. package/src/programmers/protobuf/ProtobufAssertEncodeProgrammer.ts +102 -102
  273. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +654 -654
  274. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +945 -945
  275. package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +109 -109
  276. package/src/programmers/protobuf/ProtobufIsEncodeProgrammer.ts +98 -98
  277. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +179 -179
  278. package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +92 -92
  279. package/src/programmers/protobuf/ProtobufValidateEncodeProgrammer.ts +119 -119
  280. package/src/protobuf.ts +868 -868
  281. package/src/reflect.ts +57 -57
  282. package/src/schemas/json/IJsonApplication.ts +73 -73
  283. package/src/schemas/json/IJsonSchemaCollection.ts +29 -29
  284. package/src/schemas/json/__IJsonApplication.ts +63 -63
  285. package/src/schemas/llm/ILlmApplicationOfValidate.ts +55 -55
  286. package/src/schemas/llm/ILlmFunctionOfValidate.ts +39 -39
  287. package/src/schemas/metadata/IMetadata.ts +35 -35
  288. package/src/schemas/metadata/IMetadataAlias.ts +6 -6
  289. package/src/schemas/metadata/IMetadataAliasType.ts +12 -12
  290. package/src/schemas/metadata/IMetadataApplication.ts +7 -7
  291. package/src/schemas/metadata/IMetadataArray.ts +6 -6
  292. package/src/schemas/metadata/IMetadataComponents.ts +11 -11
  293. package/src/schemas/metadata/IMetadataConstantValue.ts +11 -11
  294. package/src/schemas/metadata/IMetadataDictionary.ts +11 -11
  295. package/src/schemas/metadata/IMetadataMap.ts +8 -8
  296. package/src/schemas/metadata/IMetadataNative.ts +6 -6
  297. package/src/schemas/metadata/IMetadataObject.ts +6 -6
  298. package/src/schemas/metadata/IMetadataObjectType.ts +13 -13
  299. package/src/schemas/metadata/IMetadataSet.ts +7 -7
  300. package/src/schemas/metadata/IMetadataTemplate.ts +7 -7
  301. package/src/schemas/metadata/IMetadataTuple.ts +6 -6
  302. package/src/schemas/metadata/IMetadataTypeTag.ts +16 -16
  303. package/src/schemas/metadata/Metadata.ts +669 -669
  304. package/src/schemas/metadata/MetadataAlias.ts +46 -46
  305. package/src/schemas/metadata/MetadataAliasType.ts +63 -63
  306. package/src/schemas/metadata/MetadataApplication.ts +44 -44
  307. package/src/schemas/metadata/MetadataArray.ts +49 -49
  308. package/src/schemas/metadata/MetadataAtomic.ts +87 -87
  309. package/src/schemas/metadata/MetadataComponents.ts +98 -98
  310. package/src/schemas/metadata/MetadataConstantValue.ts +62 -62
  311. package/src/schemas/metadata/MetadataMap.ts +48 -48
  312. package/src/schemas/metadata/MetadataNative.ts +44 -44
  313. package/src/schemas/metadata/MetadataObject.ts +48 -48
  314. package/src/schemas/metadata/MetadataObjectType.ts +149 -149
  315. package/src/schemas/metadata/MetadataParameter.ts +54 -54
  316. package/src/schemas/metadata/MetadataProperty.ts +59 -59
  317. package/src/schemas/metadata/MetadataSet.ts +45 -45
  318. package/src/schemas/metadata/MetadataTemplate.ts +80 -80
  319. package/src/schemas/metadata/MetadataTuple.ts +32 -32
  320. package/src/schemas/protobuf/IProtobufProperty.ts +6 -6
  321. package/src/schemas/protobuf/IProtobufPropertyType.ts +37 -37
  322. package/src/schemas/protobuf/IProtobufSchema.ts +50 -50
  323. package/src/tags/Example.ts +24 -24
  324. package/src/tags/Examples.ts +16 -16
  325. package/src/tags/Format.ts +50 -50
  326. package/src/tags/JsonSchemaPlugin.ts +8 -8
  327. package/src/tags/Sequence.ts +10 -10
  328. package/src/tags/TagBase.ts +82 -82
  329. package/src/tags/Type.ts +32 -32
  330. package/src/tags/UniqueItems.ts +14 -14
  331. package/src/tags/index.ts +21 -21
  332. package/src/transform.ts +35 -35
  333. package/src/transformers/CallExpressionTransformer.ts +547 -547
  334. package/src/transformers/FileTransformer.ts +136 -136
  335. package/src/transformers/IProgrammerProps.ts +11 -11
  336. package/src/transformers/ITransformOptions.ts +62 -62
  337. package/src/transformers/ITransformProps.ts +9 -9
  338. package/src/transformers/ITypiaContext.ts +18 -18
  339. package/src/transformers/ImportTransformer.ts +81 -81
  340. package/src/transformers/NodeTransformer.ts +17 -17
  341. package/src/transformers/TransformerError.ts +60 -60
  342. package/src/transformers/features/AssertTransformer.ts +24 -24
  343. package/src/transformers/features/CreateAssertTransformer.ts +24 -24
  344. package/src/transformers/features/CreateIsTransformer.ts +18 -18
  345. package/src/transformers/features/CreateRandomTransformer.ts +43 -43
  346. package/src/transformers/features/CreateValidateTransformer.ts +18 -18
  347. package/src/transformers/features/IsTransformer.ts +18 -18
  348. package/src/transformers/features/RandomTransformer.ts +41 -41
  349. package/src/transformers/features/ValidateTransformer.ts +18 -18
  350. package/src/transformers/features/functional/FunctionalGenericTransformer.ts +57 -57
  351. package/src/transformers/features/http/CreateHttpAssertFormDataTransformer.ts +13 -13
  352. package/src/transformers/features/http/CreateHttpAssertHeadersTransformer.ts +13 -13
  353. package/src/transformers/features/http/CreateHttpAssertQueryTransformer.ts +13 -13
  354. package/src/transformers/features/http/CreateHttpFormDataTransformer.ts +13 -13
  355. package/src/transformers/features/http/CreateHttpHeadersTransformer.ts +13 -13
  356. package/src/transformers/features/http/CreateHttpIsFormDataTransformer.ts +13 -13
  357. package/src/transformers/features/http/CreateHttpIsHeadersTransformer.ts +13 -13
  358. package/src/transformers/features/http/CreateHttpIsQueryTransformer.ts +13 -13
  359. package/src/transformers/features/http/CreateHttpParameterTransformer.ts +13 -13
  360. package/src/transformers/features/http/CreateHttpQueryTransformer.ts +13 -13
  361. package/src/transformers/features/http/CreateHttpValidateFormDataTransformer.ts +13 -13
  362. package/src/transformers/features/http/CreateHttpValidateHeadersTransformer.ts +13 -13
  363. package/src/transformers/features/http/CreateHttpValidateQueryTransformer.ts +13 -13
  364. package/src/transformers/features/http/HttpAssertFormDataTransformer.ts +13 -13
  365. package/src/transformers/features/http/HttpAssertHeadersTransformer.ts +13 -13
  366. package/src/transformers/features/http/HttpAssertQueryTransformer.ts +13 -13
  367. package/src/transformers/features/http/HttpFormDataTransformer.ts +13 -13
  368. package/src/transformers/features/http/HttpHeadersTransformer.ts +13 -13
  369. package/src/transformers/features/http/HttpIsFormDataTransformer.ts +13 -13
  370. package/src/transformers/features/http/HttpIsHeadersTransformer.ts +13 -13
  371. package/src/transformers/features/http/HttpIsQueryTransformer.ts +13 -13
  372. package/src/transformers/features/http/HttpParameterTransformer.ts +13 -13
  373. package/src/transformers/features/http/HttpQueryTransformer.ts +13 -13
  374. package/src/transformers/features/http/HttpValidateFormDataTransformer.ts +13 -13
  375. package/src/transformers/features/http/HttpValidateHeadersTransformer.ts +13 -13
  376. package/src/transformers/features/http/HttpValidateQueryTransformer.ts +13 -13
  377. package/src/transformers/features/json/JsonApplicationTransformer.ts +105 -105
  378. package/src/transformers/features/json/JsonAssertParseTransformer.ts +13 -13
  379. package/src/transformers/features/json/JsonAssertStringifyTransformer.ts +13 -13
  380. package/src/transformers/features/json/JsonCreateAssertParseTransformer.ts +13 -13
  381. package/src/transformers/features/json/JsonCreateAssertStringifyTransformer.ts +13 -13
  382. package/src/transformers/features/json/JsonCreateIsParseTransformer.ts +13 -13
  383. package/src/transformers/features/json/JsonCreateIsStringifyTransformer.ts +13 -13
  384. package/src/transformers/features/json/JsonCreateStringifyTransformer.ts +13 -13
  385. package/src/transformers/features/json/JsonCreateValidateParseTransformer.ts +13 -13
  386. package/src/transformers/features/json/JsonCreateValidateStringifyProgrammer.ts +13 -13
  387. package/src/transformers/features/json/JsonIsParseTransformer.ts +13 -13
  388. package/src/transformers/features/json/JsonIsStringifyTransformer.ts +13 -13
  389. package/src/transformers/features/json/JsonSchemasTransformer.ts +143 -143
  390. package/src/transformers/features/json/JsonStringifyTransformer.ts +13 -13
  391. package/src/transformers/features/json/JsonValidateParseTransformer.ts +13 -13
  392. package/src/transformers/features/json/JsonValidateStringifyTransformer.ts +13 -13
  393. package/src/transformers/features/llm/LlmApplicationOfValidateTransformer.ts +115 -115
  394. package/src/transformers/features/llm/LlmApplicationTransformer.ts +113 -113
  395. package/src/transformers/features/llm/LlmParametersTransformer.ts +89 -89
  396. package/src/transformers/features/llm/LlmSchemaTransformer.ts +130 -130
  397. package/src/transformers/features/misc/MiscAssertCloneTransformer.ts +13 -13
  398. package/src/transformers/features/misc/MiscAssertPruneTransformer.ts +13 -13
  399. package/src/transformers/features/misc/MiscCloneTransformer.ts +13 -13
  400. package/src/transformers/features/misc/MiscCreateAssertCloneTransformer.ts +13 -13
  401. package/src/transformers/features/misc/MiscCreateAssertPruneTransformer.ts +13 -13
  402. package/src/transformers/features/misc/MiscCreateCloneTransformer.ts +13 -13
  403. package/src/transformers/features/misc/MiscCreateIsCloneTransformer.ts +13 -13
  404. package/src/transformers/features/misc/MiscCreateIsPruneTransformer.ts +13 -13
  405. package/src/transformers/features/misc/MiscCreatePruneTransformer.ts +13 -13
  406. package/src/transformers/features/misc/MiscCreateValidateCloneTransformer.ts +13 -13
  407. package/src/transformers/features/misc/MiscCreateValidatePruneTransformer.ts +13 -13
  408. package/src/transformers/features/misc/MiscIsCloneTransformer.ts +13 -13
  409. package/src/transformers/features/misc/MiscIsPruneTransformer.ts +13 -13
  410. package/src/transformers/features/misc/MiscLiteralsTransformer.ts +35 -35
  411. package/src/transformers/features/misc/MiscPruneTransformer.ts +13 -13
  412. package/src/transformers/features/misc/MiscValidateCloneTransformer.ts +13 -13
  413. package/src/transformers/features/misc/MiscValidatePruneTransformer.ts +13 -13
  414. package/src/transformers/features/notations/NotationAssertGeneralTransformer.ts +20 -20
  415. package/src/transformers/features/notations/NotationCreateAssertGeneralTransformer.ts +20 -20
  416. package/src/transformers/features/notations/NotationCreateGeneralTransformer.ts +20 -20
  417. package/src/transformers/features/notations/NotationCreateIsGeneralTransformer.ts +20 -20
  418. package/src/transformers/features/notations/NotationCreateValidateGeneralTransformer.ts +20 -20
  419. package/src/transformers/features/notations/NotationGeneralTransformer.ts +18 -18
  420. package/src/transformers/features/notations/NotationIsGeneralTransformer.ts +20 -20
  421. package/src/transformers/features/notations/NotationValidateGeneralTransformer.ts +20 -20
  422. package/src/transformers/features/protobuf/ProtobufAssertDecodeTransformer.ts +13 -13
  423. package/src/transformers/features/protobuf/ProtobufAssertEncodeTransformer.ts +13 -13
  424. package/src/transformers/features/protobuf/ProtobufCreateAssertDecodeTransformer.ts +13 -13
  425. package/src/transformers/features/protobuf/ProtobufCreateAssertEncodeTransformer.ts +13 -13
  426. package/src/transformers/features/protobuf/ProtobufCreateDecodeTransformer.ts +13 -13
  427. package/src/transformers/features/protobuf/ProtobufCreateEncodeTransformer.ts +13 -13
  428. package/src/transformers/features/protobuf/ProtobufCreateIsDecodeTransformer.ts +13 -13
  429. package/src/transformers/features/protobuf/ProtobufCreateIsEncodeTransformer.ts +13 -13
  430. package/src/transformers/features/protobuf/ProtobufCreateValidateDecodeTransformer.ts +13 -13
  431. package/src/transformers/features/protobuf/ProtobufCreateValidateEncodeTransformer.ts +13 -13
  432. package/src/transformers/features/protobuf/ProtobufDecodeTransformer.ts +13 -13
  433. package/src/transformers/features/protobuf/ProtobufEncodeTransformer.ts +13 -13
  434. package/src/transformers/features/protobuf/ProtobufIsDecodeTransformer.ts +13 -13
  435. package/src/transformers/features/protobuf/ProtobufIsEncodeTransformer.ts +13 -13
  436. package/src/transformers/features/protobuf/ProtobufMessageTransformer.ts +35 -35
  437. package/src/transformers/features/protobuf/ProtobufValidateDecodeTransformer.ts +13 -13
  438. package/src/transformers/features/protobuf/ProtobufValidateEncodeTransformer.ts +13 -13
  439. package/src/transformers/features/reflect/ReflectMetadataTransformer.ts +69 -69
  440. package/src/transformers/features/reflect/ReflectNameTransformer.ts +82 -82
  441. package/src/transformers/internal/GenericTransformer.ts +101 -101
  442. package/src/utils/MapUtil.ts +14 -14
  443. package/src/utils/NamingConvention.ts +94 -94
  444. package/src/utils/ProtobufNameEncoder.ts +32 -32
  445. package/src/utils/StringUtil.ts +16 -16
@@ -1,35 +1,35 @@
1
- import ts from "typescript";
2
-
3
- import { ProtobufMessageProgrammer } from "../../../programmers/protobuf/ProtobufMessageProgrammer";
4
-
5
- import { ITransformProps } from "../../ITransformProps";
6
- import { TransformerError } from "../../TransformerError";
7
-
8
- export namespace ProtobufMessageTransformer {
9
- export const transform = (
10
- props: Pick<ITransformProps, "context" | "expression">,
11
- ): ts.Expression => {
12
- // CHECK GENERIC ARGUMENT EXISTENCE
13
- if (!props.expression.typeArguments || !props.expression.typeArguments[0])
14
- throw new TransformerError({
15
- code: "typia.protobuf.message",
16
- message: "generic argument is not specified.",
17
- });
18
-
19
- // GET TYPE INFO
20
- const type: ts.Type = props.context.checker.getTypeFromTypeNode(
21
- props.expression.typeArguments[0],
22
- );
23
- if (type.isTypeParameter())
24
- throw new TransformerError({
25
- code: "tyipa.protobuf.message",
26
- message: "non-specified generic argument.",
27
- });
28
-
29
- // DO TRANSFORM
30
- return ProtobufMessageProgrammer.write({
31
- context: props.context,
32
- type,
33
- });
34
- };
35
- }
1
+ import ts from "typescript";
2
+
3
+ import { ProtobufMessageProgrammer } from "../../../programmers/protobuf/ProtobufMessageProgrammer";
4
+
5
+ import { ITransformProps } from "../../ITransformProps";
6
+ import { TransformerError } from "../../TransformerError";
7
+
8
+ export namespace ProtobufMessageTransformer {
9
+ export const transform = (
10
+ props: Pick<ITransformProps, "context" | "expression">,
11
+ ): ts.Expression => {
12
+ // CHECK GENERIC ARGUMENT EXISTENCE
13
+ if (!props.expression.typeArguments || !props.expression.typeArguments[0])
14
+ throw new TransformerError({
15
+ code: "typia.protobuf.message",
16
+ message: "generic argument is not specified.",
17
+ });
18
+
19
+ // GET TYPE INFO
20
+ const type: ts.Type = props.context.checker.getTypeFromTypeNode(
21
+ props.expression.typeArguments[0],
22
+ );
23
+ if (type.isTypeParameter())
24
+ throw new TransformerError({
25
+ code: "tyipa.protobuf.message",
26
+ message: "non-specified generic argument.",
27
+ });
28
+
29
+ // DO TRANSFORM
30
+ return ProtobufMessageProgrammer.write({
31
+ context: props.context,
32
+ type,
33
+ });
34
+ };
35
+ }
@@ -1,13 +1,13 @@
1
- import { ProtobufValidateDecodeProgrammer } from "../../../programmers/protobuf/ProtobufValidateDecodeProgrammer";
2
-
3
- import { ITransformProps } from "../../ITransformProps";
4
- import { GenericTransformer } from "../../internal/GenericTransformer";
5
-
6
- export namespace ProtobufValidateDecodeTransformer {
7
- export const transform = (props: ITransformProps) =>
8
- GenericTransformer.scalar({
9
- ...props,
10
- method: "protobuf.validateDecode",
11
- write: ProtobufValidateDecodeProgrammer.write,
12
- });
13
- }
1
+ import { ProtobufValidateDecodeProgrammer } from "../../../programmers/protobuf/ProtobufValidateDecodeProgrammer";
2
+
3
+ import { ITransformProps } from "../../ITransformProps";
4
+ import { GenericTransformer } from "../../internal/GenericTransformer";
5
+
6
+ export namespace ProtobufValidateDecodeTransformer {
7
+ export const transform = (props: ITransformProps) =>
8
+ GenericTransformer.scalar({
9
+ ...props,
10
+ method: "protobuf.validateDecode",
11
+ write: ProtobufValidateDecodeProgrammer.write,
12
+ });
13
+ }
@@ -1,13 +1,13 @@
1
- import { ProtobufValidateEncodeProgrammer } from "../../../programmers/protobuf/ProtobufValidateEncodeProgrammer";
2
-
3
- import { ITransformProps } from "../../ITransformProps";
4
- import { GenericTransformer } from "../../internal/GenericTransformer";
5
-
6
- export namespace ProtobufValidateEncodeTransformer {
7
- export const transform = (props: ITransformProps) =>
8
- GenericTransformer.scalar({
9
- ...props,
10
- method: "protobuf.validateEncode",
11
- write: ProtobufValidateEncodeProgrammer.write,
12
- });
13
- }
1
+ import { ProtobufValidateEncodeProgrammer } from "../../../programmers/protobuf/ProtobufValidateEncodeProgrammer";
2
+
3
+ import { ITransformProps } from "../../ITransformProps";
4
+ import { GenericTransformer } from "../../internal/GenericTransformer";
5
+
6
+ export namespace ProtobufValidateEncodeTransformer {
7
+ export const transform = (props: ITransformProps) =>
8
+ GenericTransformer.scalar({
9
+ ...props,
10
+ method: "protobuf.validateEncode",
11
+ write: ProtobufValidateEncodeProgrammer.write,
12
+ });
13
+ }
@@ -1,69 +1,69 @@
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 { ITransformProps } from "../../ITransformProps";
11
- import { TransformerError } from "../../TransformerError";
12
-
13
- export namespace ReflectMetadataTransformer {
14
- export const transform = (
15
- props: Pick<ITransformProps, "context" | "expression">,
16
- ): ts.Expression => {
17
- if (!props.expression.typeArguments?.length)
18
- throw new TransformerError({
19
- code: "typia.reflect.metadata",
20
- message: "no generic argument.",
21
- });
22
-
23
- // VALIDATE TUPLE ARGUMENTS
24
- const top: ts.Node = props.expression.typeArguments[0]!;
25
- if (!ts.isTupleTypeNode(top)) return props.expression;
26
- else if (top.elements.some((child) => !ts.isTypeNode(child)))
27
- return props.expression;
28
-
29
- // GET TYPES
30
- const types: ts.Type[] = top.elements.map((child) =>
31
- props.context.checker.getTypeFromTypeNode(child as ts.TypeNode),
32
- );
33
- if (types.some((t) => t.isTypeParameter()))
34
- throw new TransformerError({
35
- code: "typia.reflect.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({
43
- checker: props.context.checker,
44
- transformer: props.context.transformer,
45
- options: {
46
- escape: true,
47
- constant: true,
48
- absorb: true,
49
- functional: true,
50
- },
51
- collection,
52
- type,
53
- });
54
- if (result.success === false)
55
- throw TransformerError.from({
56
- code: "typia.reflect.metadata",
57
- errors: result.errors,
58
- });
59
- return result.data;
60
- });
61
-
62
- // CONVERT TO PRIMITIVE TYPE
63
- const app: IMetadataApplication = {
64
- metadatas: metadatas.map((metadata) => metadata.toJSON()),
65
- components: collection.toJSON(),
66
- };
67
- return LiteralFactory.write(app);
68
- };
69
- }
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 { ITransformProps } from "../../ITransformProps";
11
+ import { TransformerError } from "../../TransformerError";
12
+
13
+ export namespace ReflectMetadataTransformer {
14
+ export const transform = (
15
+ props: Pick<ITransformProps, "context" | "expression">,
16
+ ): ts.Expression => {
17
+ if (!props.expression.typeArguments?.length)
18
+ throw new TransformerError({
19
+ code: "typia.reflect.metadata",
20
+ message: "no generic argument.",
21
+ });
22
+
23
+ // VALIDATE TUPLE ARGUMENTS
24
+ const top: ts.Node = props.expression.typeArguments[0]!;
25
+ if (!ts.isTupleTypeNode(top)) return props.expression;
26
+ else if (top.elements.some((child) => !ts.isTypeNode(child)))
27
+ return props.expression;
28
+
29
+ // GET TYPES
30
+ const types: ts.Type[] = top.elements.map((child) =>
31
+ props.context.checker.getTypeFromTypeNode(child as ts.TypeNode),
32
+ );
33
+ if (types.some((t) => t.isTypeParameter()))
34
+ throw new TransformerError({
35
+ code: "typia.reflect.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({
43
+ checker: props.context.checker,
44
+ transformer: props.context.transformer,
45
+ options: {
46
+ escape: true,
47
+ constant: true,
48
+ absorb: true,
49
+ functional: true,
50
+ },
51
+ collection,
52
+ type,
53
+ });
54
+ if (result.success === false)
55
+ throw TransformerError.from({
56
+ code: "typia.reflect.metadata",
57
+ errors: result.errors,
58
+ });
59
+ return result.data;
60
+ });
61
+
62
+ // CONVERT TO PRIMITIVE TYPE
63
+ const app: IMetadataApplication = {
64
+ metadatas: metadatas.map((metadata) => metadata.toJSON()),
65
+ components: collection.toJSON(),
66
+ };
67
+ return LiteralFactory.write(app);
68
+ };
69
+ }
@@ -1,82 +1,82 @@
1
- import ts from "typescript";
2
-
3
- import { MetadataCollection } from "../../../factories/MetadataCollection";
4
- import { MetadataFactory } from "../../../factories/MetadataFactory";
5
-
6
- import { Metadata } from "../../../schemas/metadata/Metadata";
7
-
8
- import { ValidationPipe } from "../../../typings/ValidationPipe";
9
-
10
- import { ITransformProps } from "../../ITransformProps";
11
- import { ITypiaContext } from "../../ITypiaContext";
12
- import { TransformerError } from "../../TransformerError";
13
-
14
- export namespace ReflectNameTransformer {
15
- export const transform = (
16
- props: Pick<ITransformProps, "context" | "expression">,
17
- ): ts.Expression => {
18
- if (!props.expression.typeArguments?.length)
19
- throw new TransformerError({
20
- code: "typia.reflect.metadata",
21
- message: "no generic argument.",
22
- });
23
- const top: ts.Node = props.expression.typeArguments[0]!;
24
- const regular: boolean = (() => {
25
- // CHECK SECOND ARGUMENT EXISTENCE
26
- const second: ts.Node | undefined = props.expression.typeArguments[1]!;
27
- if (second === undefined) return false;
28
-
29
- // GET BOOELAN VALUE
30
- const value: Metadata = getMetadata({
31
- context: props.context,
32
- node: second,
33
- });
34
- return value.size() === 1 &&
35
- value.constants.length === 1 &&
36
- value.constants[0]!.type === "boolean" &&
37
- value.constants[0]!.values.length === 1
38
- ? (value.constants[0]!.values[0]!.value as boolean)
39
- : false;
40
- })();
41
-
42
- // RETURNS NAME
43
- return ts.factory.createStringLiteral(
44
- regular
45
- ? getMetadata({
46
- context: props.context,
47
- node: top,
48
- }).getName()
49
- : top.getFullText(),
50
- );
51
- };
52
- }
53
-
54
- const getMetadata = (props: {
55
- context: ITypiaContext;
56
- node: ts.Node;
57
- }): Metadata => {
58
- const type: ts.Type = props.context.checker.getTypeFromTypeNode(
59
- props.node as ts.TypeNode,
60
- );
61
- const collection: MetadataCollection = new MetadataCollection({
62
- replace: MetadataCollection.replace,
63
- });
64
- const result: ValidationPipe<Metadata, MetadataFactory.IError> =
65
- MetadataFactory.analyze({
66
- checker: props.context.checker,
67
- transformer: props.context.transformer,
68
- options: {
69
- escape: false,
70
- constant: true,
71
- absorb: false,
72
- },
73
- collection,
74
- type,
75
- });
76
- if (result.success === false)
77
- throw TransformerError.from({
78
- code: "typia.reflect.name",
79
- errors: result.errors,
80
- });
81
- return result.data;
82
- };
1
+ import ts from "typescript";
2
+
3
+ import { MetadataCollection } from "../../../factories/MetadataCollection";
4
+ import { MetadataFactory } from "../../../factories/MetadataFactory";
5
+
6
+ import { Metadata } from "../../../schemas/metadata/Metadata";
7
+
8
+ import { ValidationPipe } from "../../../typings/ValidationPipe";
9
+
10
+ import { ITransformProps } from "../../ITransformProps";
11
+ import { ITypiaContext } from "../../ITypiaContext";
12
+ import { TransformerError } from "../../TransformerError";
13
+
14
+ export namespace ReflectNameTransformer {
15
+ export const transform = (
16
+ props: Pick<ITransformProps, "context" | "expression">,
17
+ ): ts.Expression => {
18
+ if (!props.expression.typeArguments?.length)
19
+ throw new TransformerError({
20
+ code: "typia.reflect.metadata",
21
+ message: "no generic argument.",
22
+ });
23
+ const top: ts.Node = props.expression.typeArguments[0]!;
24
+ const regular: boolean = (() => {
25
+ // CHECK SECOND ARGUMENT EXISTENCE
26
+ const second: ts.Node | undefined = props.expression.typeArguments[1]!;
27
+ if (second === undefined) return false;
28
+
29
+ // GET BOOELAN VALUE
30
+ const value: Metadata = getMetadata({
31
+ context: props.context,
32
+ node: second,
33
+ });
34
+ return value.size() === 1 &&
35
+ value.constants.length === 1 &&
36
+ value.constants[0]!.type === "boolean" &&
37
+ value.constants[0]!.values.length === 1
38
+ ? (value.constants[0]!.values[0]!.value as boolean)
39
+ : false;
40
+ })();
41
+
42
+ // RETURNS NAME
43
+ return ts.factory.createStringLiteral(
44
+ regular
45
+ ? getMetadata({
46
+ context: props.context,
47
+ node: top,
48
+ }).getName()
49
+ : top.getFullText(),
50
+ );
51
+ };
52
+ }
53
+
54
+ const getMetadata = (props: {
55
+ context: ITypiaContext;
56
+ node: ts.Node;
57
+ }): Metadata => {
58
+ const type: ts.Type = props.context.checker.getTypeFromTypeNode(
59
+ props.node as ts.TypeNode,
60
+ );
61
+ const collection: MetadataCollection = new MetadataCollection({
62
+ replace: MetadataCollection.replace,
63
+ });
64
+ const result: ValidationPipe<Metadata, MetadataFactory.IError> =
65
+ MetadataFactory.analyze({
66
+ checker: props.context.checker,
67
+ transformer: props.context.transformer,
68
+ options: {
69
+ escape: false,
70
+ constant: true,
71
+ absorb: false,
72
+ },
73
+ collection,
74
+ type,
75
+ });
76
+ if (result.success === false)
77
+ throw TransformerError.from({
78
+ code: "typia.reflect.name",
79
+ errors: result.errors,
80
+ });
81
+ return result.data;
82
+ };
@@ -1,101 +1,101 @@
1
- import ts from "typescript";
2
-
3
- import { IProgrammerProps } from "../IProgrammerProps";
4
- import { ITransformProps } from "../ITransformProps";
5
- import { TransformerError } from "../TransformerError";
6
-
7
- export namespace GenericTransformer {
8
- export interface IProps extends ITransformProps {
9
- method: string;
10
- write: (props: IProgrammerProps) => ts.Expression | ts.ArrowFunction;
11
- }
12
-
13
- export const scalar = (props: IProps) => {
14
- // CHECK PARAMETER
15
- if (props.expression.arguments.length === 0)
16
- throw new TransformerError({
17
- code: `typia.${props.method}`,
18
- message: `no input value.`,
19
- });
20
-
21
- // GET TYPE INFO
22
- const [type, node, generic]: [ts.Type, ts.Node, boolean] =
23
- props.expression.typeArguments && props.expression.typeArguments[0]
24
- ? [
25
- props.context.checker.getTypeFromTypeNode(
26
- props.expression.typeArguments[0],
27
- ),
28
- props.expression.typeArguments[0],
29
- true,
30
- ]
31
- : [
32
- props.context.checker.getTypeAtLocation(
33
- props.expression.arguments[0]!,
34
- ),
35
- props.expression.arguments[0]!,
36
- false,
37
- ];
38
- if (type.isTypeParameter())
39
- throw new TransformerError({
40
- code: `typia.${props.method}`,
41
- message: `non-specified generic argument.`,
42
- });
43
-
44
- // DO TRANSFORM
45
- return ts.factory.createCallExpression(
46
- props.write({
47
- context: props.context,
48
- modulo: props.modulo,
49
- type,
50
- name: generic
51
- ? node.getFullText().trim()
52
- : getTypeName({
53
- checker: props.context.checker,
54
- type,
55
- node,
56
- }),
57
- }),
58
- undefined,
59
- props.expression.arguments,
60
- );
61
- };
62
-
63
- export const factory = (props: IProps) => {
64
- // CHECK GENERIC ARGUMENT EXISTENCE
65
- if (!props.expression.typeArguments?.[0])
66
- throw new TransformerError({
67
- code: `typia.${props.method}`,
68
- message: `generic argument is not specified.`,
69
- });
70
-
71
- // GET TYPE INFO
72
- const node: ts.TypeNode = props.expression.typeArguments[0];
73
- const type: ts.Type = props.context.checker.getTypeFromTypeNode(node);
74
-
75
- if (type.isTypeParameter())
76
- throw new TransformerError({
77
- code: `typia.${props.method}`,
78
- message: `non-specified generic argument.`,
79
- });
80
-
81
- // DO TRANSFORM
82
- return props.write({
83
- context: props.context,
84
- modulo: props.modulo,
85
- type,
86
- name: node.getFullText().trim(),
87
- init: props.expression.arguments[0],
88
- });
89
- };
90
-
91
- const getTypeName = (props: {
92
- checker: ts.TypeChecker;
93
- type: ts.Type;
94
- node: ts.Node;
95
- }): string =>
96
- props.checker.typeToString(
97
- props.type,
98
- props.node,
99
- ts.TypeFormatFlags.NodeBuilderFlagsMask,
100
- );
101
- }
1
+ import ts from "typescript";
2
+
3
+ import { IProgrammerProps } from "../IProgrammerProps";
4
+ import { ITransformProps } from "../ITransformProps";
5
+ import { TransformerError } from "../TransformerError";
6
+
7
+ export namespace GenericTransformer {
8
+ export interface IProps extends ITransformProps {
9
+ method: string;
10
+ write: (props: IProgrammerProps) => ts.Expression | ts.ArrowFunction;
11
+ }
12
+
13
+ export const scalar = (props: IProps) => {
14
+ // CHECK PARAMETER
15
+ if (props.expression.arguments.length === 0)
16
+ throw new TransformerError({
17
+ code: `typia.${props.method}`,
18
+ message: `no input value.`,
19
+ });
20
+
21
+ // GET TYPE INFO
22
+ const [type, node, generic]: [ts.Type, ts.Node, boolean] =
23
+ props.expression.typeArguments && props.expression.typeArguments[0]
24
+ ? [
25
+ props.context.checker.getTypeFromTypeNode(
26
+ props.expression.typeArguments[0],
27
+ ),
28
+ props.expression.typeArguments[0],
29
+ true,
30
+ ]
31
+ : [
32
+ props.context.checker.getTypeAtLocation(
33
+ props.expression.arguments[0]!,
34
+ ),
35
+ props.expression.arguments[0]!,
36
+ false,
37
+ ];
38
+ if (type.isTypeParameter())
39
+ throw new TransformerError({
40
+ code: `typia.${props.method}`,
41
+ message: `non-specified generic argument.`,
42
+ });
43
+
44
+ // DO TRANSFORM
45
+ return ts.factory.createCallExpression(
46
+ props.write({
47
+ context: props.context,
48
+ modulo: props.modulo,
49
+ type,
50
+ name: generic
51
+ ? node.getFullText().trim()
52
+ : getTypeName({
53
+ checker: props.context.checker,
54
+ type,
55
+ node,
56
+ }),
57
+ }),
58
+ undefined,
59
+ props.expression.arguments,
60
+ );
61
+ };
62
+
63
+ export const factory = (props: IProps) => {
64
+ // CHECK GENERIC ARGUMENT EXISTENCE
65
+ if (!props.expression.typeArguments?.[0])
66
+ throw new TransformerError({
67
+ code: `typia.${props.method}`,
68
+ message: `generic argument is not specified.`,
69
+ });
70
+
71
+ // GET TYPE INFO
72
+ const node: ts.TypeNode = props.expression.typeArguments[0];
73
+ const type: ts.Type = props.context.checker.getTypeFromTypeNode(node);
74
+
75
+ if (type.isTypeParameter())
76
+ throw new TransformerError({
77
+ code: `typia.${props.method}`,
78
+ message: `non-specified generic argument.`,
79
+ });
80
+
81
+ // DO TRANSFORM
82
+ return props.write({
83
+ context: props.context,
84
+ modulo: props.modulo,
85
+ type,
86
+ name: node.getFullText().trim(),
87
+ init: props.expression.arguments[0],
88
+ });
89
+ };
90
+
91
+ const getTypeName = (props: {
92
+ checker: ts.TypeChecker;
93
+ type: ts.Type;
94
+ node: ts.Node;
95
+ }): string =>
96
+ props.checker.typeToString(
97
+ props.type,
98
+ props.node,
99
+ ts.TypeFormatFlags.NodeBuilderFlagsMask,
100
+ );
101
+ }
@@ -1,14 +1,14 @@
1
- export namespace MapUtil {
2
- export const take = <Key, T>(
3
- dict: Map<Key, T>,
4
- key: Key,
5
- generator: () => T,
6
- ): T => {
7
- const oldbie: T | undefined = dict.get(key);
8
- if (oldbie) return oldbie;
9
-
10
- const value: T = generator();
11
- dict.set(key, value);
12
- return value;
13
- };
14
- }
1
+ export namespace MapUtil {
2
+ export const take = <Key, T>(
3
+ dict: Map<Key, T>,
4
+ key: Key,
5
+ generator: () => T,
6
+ ): T => {
7
+ const oldbie: T | undefined = dict.get(key);
8
+ if (oldbie) return oldbie;
9
+
10
+ const value: T = generator();
11
+ dict.set(key, value);
12
+ return value;
13
+ };
14
+ }