typia 7.1.0 → 7.2.1-dev.20241212

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