typia 7.6.0 → 7.7.0-dev.20250130

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 (540) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +149 -149
  3. package/lib/TypeGuardError.mjs +26 -0
  4. package/lib/TypeGuardError.mjs.map +1 -0
  5. package/lib/executable/setup/PluginConfigurator.js +3 -3
  6. package/lib/executable/typia.js +15 -15
  7. package/lib/functional.mjs +120 -0
  8. package/lib/functional.mjs.map +1 -0
  9. package/lib/http.d.ts +15 -15
  10. package/lib/http.mjs +165 -0
  11. package/lib/http.mjs.map +1 -0
  12. package/lib/index.mjs +27 -1142
  13. package/lib/index.mjs.map +1 -1
  14. package/lib/json.mjs +105 -0
  15. package/lib/json.mjs.map +1 -0
  16. package/lib/llm.mjs +33 -0
  17. package/lib/llm.mjs.map +1 -0
  18. package/lib/misc.mjs +111 -0
  19. package/lib/misc.mjs.map +1 -0
  20. package/lib/module.d.ts +4 -4
  21. package/lib/module.mjs +139 -0
  22. package/lib/module.mjs.map +1 -0
  23. package/lib/notations.mjs +153 -0
  24. package/lib/notations.mjs.map +1 -0
  25. package/lib/protobuf.d.ts +9 -9
  26. package/lib/protobuf.mjs +111 -0
  27. package/lib/protobuf.mjs.map +1 -0
  28. package/lib/reflect.mjs +18 -0
  29. package/lib/reflect.mjs.map +1 -0
  30. package/lib/schemas/llm/ILlmApplicationOfValidate.mjs +6 -0
  31. package/lib/schemas/llm/ILlmApplicationOfValidate.mjs.map +1 -0
  32. package/lib/schemas/llm/ILlmFunctionOfValidate.mjs +6 -0
  33. package/lib/schemas/llm/ILlmFunctionOfValidate.mjs.map +1 -0
  34. package/lib/tags/TagBase.d.ts +1 -1
  35. package/lib/tags/index.mjs +2 -0
  36. package/lib/tags/index.mjs.map +1 -0
  37. package/package.json +9 -8
  38. package/src/AssertionGuard.ts +1 -1
  39. package/src/CamelCase.ts +75 -75
  40. package/src/IRandomGenerator.ts +49 -49
  41. package/src/IReadableURLSearchParams.ts +9 -9
  42. package/src/IValidation.ts +21 -21
  43. package/src/PascalCase.ts +71 -71
  44. package/src/Primitive.ts +92 -92
  45. package/src/Resolved.ts +74 -74
  46. package/src/SnakeCase.ts +126 -126
  47. package/src/TypeGuardError.ts +37 -37
  48. package/src/executable/TypiaGenerateWizard.ts +83 -83
  49. package/src/executable/TypiaPatchWizard.ts +45 -45
  50. package/src/executable/TypiaSetupWizard.ts +179 -179
  51. package/src/executable/setup/ArgumentParser.ts +42 -42
  52. package/src/executable/setup/CommandExecutor.ts +8 -8
  53. package/src/executable/setup/FileRetriever.ts +19 -19
  54. package/src/executable/setup/PackageManager.ts +87 -87
  55. package/src/executable/setup/PluginConfigurator.ts +69 -69
  56. package/src/executable/typia.ts +55 -55
  57. package/src/factories/CommentFactory.ts +79 -79
  58. package/src/factories/ExpressionFactory.ts +216 -216
  59. package/src/factories/IdentifierFactory.ts +89 -89
  60. package/src/factories/JsonMetadataFactory.ts +83 -83
  61. package/src/factories/LiteralFactory.ts +52 -52
  62. package/src/factories/MetadataCollection.ts +278 -278
  63. package/src/factories/MetadataCommentTagFactory.ts +650 -650
  64. package/src/factories/MetadataFactory.ts +404 -404
  65. package/src/factories/MetadataTypeTagFactory.ts +411 -411
  66. package/src/factories/MetadataTypeTagSchemaFactory.ts +82 -82
  67. package/src/factories/NumericRangeFactory.ts +72 -72
  68. package/src/factories/ProtobufFactory.ts +875 -875
  69. package/src/factories/StatementFactory.ts +90 -90
  70. package/src/factories/TemplateFactory.ts +64 -64
  71. package/src/factories/TypeFactory.ts +140 -140
  72. package/src/factories/ValueFactory.ts +12 -12
  73. package/src/factories/internal/metadata/IMetadataIteratorProps.ts +17 -17
  74. package/src/factories/internal/metadata/MetadataHelper.ts +21 -21
  75. package/src/factories/internal/metadata/emend_metadata_atomics.ts +45 -45
  76. package/src/factories/internal/metadata/emplace_metadata_alias.ts +33 -33
  77. package/src/factories/internal/metadata/emplace_metadata_array_type.ts +39 -39
  78. package/src/factories/internal/metadata/emplace_metadata_object.ts +208 -208
  79. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +57 -57
  80. package/src/factories/internal/metadata/explore_metadata.ts +31 -31
  81. package/src/factories/internal/metadata/iterate_metadata.ts +54 -54
  82. package/src/factories/internal/metadata/iterate_metadata_alias.ts +33 -33
  83. package/src/factories/internal/metadata/iterate_metadata_array.ts +63 -63
  84. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +62 -62
  85. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +28 -28
  86. package/src/factories/internal/metadata/iterate_metadata_collection.ts +146 -146
  87. package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +32 -32
  88. package/src/factories/internal/metadata/iterate_metadata_constant.ts +76 -76
  89. package/src/factories/internal/metadata/iterate_metadata_escape.ts +49 -49
  90. package/src/factories/internal/metadata/iterate_metadata_function.ts +91 -91
  91. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +213 -213
  92. package/src/factories/internal/metadata/iterate_metadata_map.ts +57 -57
  93. package/src/factories/internal/metadata/iterate_metadata_native.ts +255 -255
  94. package/src/factories/internal/metadata/iterate_metadata_object.ts +35 -35
  95. package/src/factories/internal/metadata/iterate_metadata_set.ts +57 -57
  96. package/src/factories/internal/metadata/iterate_metadata_sort.ts +87 -87
  97. package/src/factories/internal/metadata/iterate_metadata_template.ts +41 -41
  98. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +26 -26
  99. package/src/factories/internal/metadata/iterate_metadata_union.ts +19 -19
  100. package/src/functional.ts +750 -750
  101. package/src/http.ts +1047 -1047
  102. package/src/index.ts +4 -4
  103. package/src/internal/_IProtobufWriter.ts +18 -18
  104. package/src/internal/_ProtobufReader.ts +194 -194
  105. package/src/internal/_ProtobufSizer.ts +145 -145
  106. package/src/internal/_ProtobufWriter.ts +145 -145
  107. package/src/internal/_accessExpressionAsString.ts +46 -46
  108. package/src/internal/_assertGuard.ts +13 -13
  109. package/src/internal/_functionalTypeGuardErrorFactory.ts +4 -4
  110. package/src/internal/_httpFormDataReadArray.ts +4 -4
  111. package/src/internal/_httpFormDataReadBigint.ts +18 -18
  112. package/src/internal/_httpFormDataReadBlob.ts +10 -10
  113. package/src/internal/_httpFormDataReadBoolean.ts +16 -16
  114. package/src/internal/_httpFormDataReadFile.ts +10 -10
  115. package/src/internal/_httpFormDataReadNumber.ts +15 -15
  116. package/src/internal/_httpFormDataReadString.ts +10 -10
  117. package/src/internal/_httpHeaderReadBigint.ts +10 -10
  118. package/src/internal/_httpHeaderReadBoolean.ts +8 -8
  119. package/src/internal/_httpHeaderReadNumber.ts +7 -7
  120. package/src/internal/_httpParameterReadBigint.ts +10 -10
  121. package/src/internal/_httpParameterReadBoolean.ts +8 -8
  122. package/src/internal/_httpParameterReadNumber.ts +7 -7
  123. package/src/internal/_httpParameterReadString.ts +2 -2
  124. package/src/internal/_httpQueryParseURLSearchParams.ts +12 -12
  125. package/src/internal/_httpQueryReadArray.ts +4 -4
  126. package/src/internal/_httpQueryReadBigint.ts +12 -12
  127. package/src/internal/_httpQueryReadBoolean.ts +14 -14
  128. package/src/internal/_httpQueryReadNumber.ts +9 -9
  129. package/src/internal/_httpQueryReadString.ts +4 -4
  130. package/src/internal/_isBetween.ts +2 -2
  131. package/src/internal/_isBigintString.ts +8 -8
  132. package/src/internal/_isFormatByte.ts +7 -7
  133. package/src/internal/_isFormatDate.ts +3 -3
  134. package/src/internal/_isFormatDateTime.ts +4 -4
  135. package/src/internal/_isFormatDuration.ts +4 -4
  136. package/src/internal/_isFormatEmail.ts +4 -4
  137. package/src/internal/_isFormatHostname.ts +4 -4
  138. package/src/internal/_isFormatIdnEmail.ts +4 -4
  139. package/src/internal/_isFormatIdnHostname.ts +4 -4
  140. package/src/internal/_isFormatIpv4.ts +4 -4
  141. package/src/internal/_isFormatIpv6.ts +4 -4
  142. package/src/internal/_isFormatIri.ts +3 -3
  143. package/src/internal/_isFormatIriReference.ts +4 -4
  144. package/src/internal/_isFormatJsonPointer.ts +3 -3
  145. package/src/internal/_isFormatPassword.ts +1 -1
  146. package/src/internal/_isFormatRegex.ts +8 -8
  147. package/src/internal/_isFormatRelativeJsonPointer.ts +4 -4
  148. package/src/internal/_isFormatTime.ts +4 -4
  149. package/src/internal/_isFormatUri.ts +6 -6
  150. package/src/internal/_isFormatUriReference.ts +5 -5
  151. package/src/internal/_isFormatUriTemplate.ts +4 -4
  152. package/src/internal/_isFormatUrl.ts +4 -4
  153. package/src/internal/_isFormatUuid.ts +3 -3
  154. package/src/internal/_isTypeFloat.ts +5 -5
  155. package/src/internal/_isTypeInt32.ts +5 -5
  156. package/src/internal/_isTypeInt64.ts +5 -5
  157. package/src/internal/_isTypeUint32.ts +5 -5
  158. package/src/internal/_isTypeUint64.ts +5 -5
  159. package/src/internal/_isUniqueItems.ts +159 -159
  160. package/src/internal/_jsonStringifyNumber.ts +12 -12
  161. package/src/internal/_jsonStringifyRest.ts +3 -3
  162. package/src/internal/_jsonStringifyString.ts +42 -42
  163. package/src/internal/_jsonStringifyTail.ts +2 -2
  164. package/src/internal/_llmApplicationFinalize.ts +20 -20
  165. package/src/internal/_miscCloneAny.ts +46 -46
  166. package/src/internal/_notationAny.ts +37 -37
  167. package/src/internal/_notationCamel.ts +13 -13
  168. package/src/internal/_notationPascal.ts +8 -8
  169. package/src/internal/_notationSnake.ts +43 -43
  170. package/src/internal/_randomArray.ts +21 -21
  171. package/src/internal/_randomBigint.ts +6 -6
  172. package/src/internal/_randomBoolean.ts +1 -1
  173. package/src/internal/_randomFormatByte.ts +3 -3
  174. package/src/internal/_randomFormatDate.ts +18 -18
  175. package/src/internal/_randomFormatDatetime.ts +16 -16
  176. package/src/internal/_randomFormatDuration.ts +27 -27
  177. package/src/internal/_randomFormatEmail.ts +11 -11
  178. package/src/internal/_randomFormatHostname.ts +6 -6
  179. package/src/internal/_randomFormatIdnEmail.ts +3 -3
  180. package/src/internal/_randomFormatIdnHostname.ts +3 -3
  181. package/src/internal/_randomFormatIpv4.ts +11 -11
  182. package/src/internal/_randomFormatIpv6.ts +11 -11
  183. package/src/internal/_randomFormatIri.ts +3 -3
  184. package/src/internal/_randomFormatIriReference.ts +3 -3
  185. package/src/internal/_randomFormatJsonPointer.ts +7 -7
  186. package/src/internal/_randomFormatPassword.ts +8 -8
  187. package/src/internal/_randomFormatRegex.ts +4 -4
  188. package/src/internal/_randomFormatRelativeJsonPointer.ts +8 -8
  189. package/src/internal/_randomFormatTime.ts +14 -14
  190. package/src/internal/_randomFormatUri.ts +3 -3
  191. package/src/internal/_randomFormatUriReference.ts +3 -3
  192. package/src/internal/_randomFormatUriTemplate.ts +3 -3
  193. package/src/internal/_randomFormatUrl.ts +11 -11
  194. package/src/internal/_randomFormatUuid.ts +6 -6
  195. package/src/internal/_randomInteger.ts +47 -47
  196. package/src/internal/_randomNumber.ts +74 -74
  197. package/src/internal/_randomPattern.ts +10 -10
  198. package/src/internal/_randomPick.ts +9 -9
  199. package/src/internal/_randomString.ts +24 -24
  200. package/src/internal/_throwTypeGuardError.ts +5 -5
  201. package/src/internal/_validateReport.ts +13 -13
  202. package/src/internal/private/__notationCapitalize.ts +2 -2
  203. package/src/internal/private/__notationUnsnake.ts +24 -24
  204. package/src/json.ts +752 -752
  205. package/src/llm.ts +481 -481
  206. package/src/misc.ts +658 -658
  207. package/src/module.ts +937 -937
  208. package/src/notations.ts +827 -827
  209. package/src/programmers/AssertProgrammer.ts +454 -454
  210. package/src/programmers/CheckerProgrammer.ts +1617 -1617
  211. package/src/programmers/FeatureProgrammer.ts +622 -622
  212. package/src/programmers/ImportProgrammer.ts +185 -185
  213. package/src/programmers/IsProgrammer.ts +273 -273
  214. package/src/programmers/RandomProgrammer.ts +1190 -1190
  215. package/src/programmers/TypiaProgrammer.ts +174 -174
  216. package/src/programmers/ValidateProgrammer.ts +439 -439
  217. package/src/programmers/functional/FunctionalAssertFunctionProgrammer.ts +153 -153
  218. package/src/programmers/functional/FunctionalAssertParametersProgrammer.ts +125 -125
  219. package/src/programmers/functional/FunctionalAssertReturnProgrammer.ts +115 -115
  220. package/src/programmers/functional/FunctionalIsFunctionProgrammer.ts +72 -72
  221. package/src/programmers/functional/FunctionalIsParametersProgrammer.ts +113 -113
  222. package/src/programmers/functional/FunctionalIsReturnProgrammer.ts +116 -116
  223. package/src/programmers/functional/FunctionalValidateFunctionProgrammer.ts +119 -119
  224. package/src/programmers/functional/FunctionalValidateParametersProgrammer.ts +274 -274
  225. package/src/programmers/functional/FunctionalValidateReturnProgrammer.ts +135 -135
  226. package/src/programmers/functional/internal/FunctionalGeneralProgrammer.ts +34 -34
  227. package/src/programmers/helpers/AtomicPredicator.ts +35 -35
  228. package/src/programmers/helpers/CloneJoiner.ts +143 -143
  229. package/src/programmers/helpers/FunctionProgrammer.ts +67 -67
  230. package/src/programmers/helpers/HttpMetadataUtil.ts +21 -21
  231. package/src/programmers/helpers/ICheckEntry.ts +13 -13
  232. package/src/programmers/helpers/IExpressionEntry.ts +12 -12
  233. package/src/programmers/helpers/NotationJoiner.ts +144 -144
  234. package/src/programmers/helpers/OptionPredicator.ts +15 -15
  235. package/src/programmers/helpers/ProtobufUtil.ts +228 -228
  236. package/src/programmers/helpers/ProtobufWire.ts +34 -34
  237. package/src/programmers/helpers/PruneJoiner.ts +148 -148
  238. package/src/programmers/helpers/RandomJoiner.ts +168 -168
  239. package/src/programmers/helpers/StringifyJoinder.ts +115 -115
  240. package/src/programmers/helpers/StringifyPredicator.ts +13 -13
  241. package/src/programmers/helpers/UnionExplorer.ts +372 -372
  242. package/src/programmers/helpers/UnionPredicator.ts +79 -79
  243. package/src/programmers/helpers/disable_function_programmer_declare.ts +32 -32
  244. package/src/programmers/http/HttpAssertFormDataProgrammer.ts +99 -99
  245. package/src/programmers/http/HttpAssertHeadersProgrammer.ts +99 -99
  246. package/src/programmers/http/HttpAssertQueryProgrammer.ts +105 -105
  247. package/src/programmers/http/HttpFormDataProgrammer.ts +308 -308
  248. package/src/programmers/http/HttpHeadersProgrammer.ts +400 -400
  249. package/src/programmers/http/HttpIsFormDataProgrammer.ts +108 -108
  250. package/src/programmers/http/HttpIsHeadersProgrammer.ts +108 -108
  251. package/src/programmers/http/HttpIsQueryProgrammer.ts +114 -114
  252. package/src/programmers/http/HttpParameterProgrammer.ts +115 -115
  253. package/src/programmers/http/HttpQueryProgrammer.ts +336 -336
  254. package/src/programmers/http/HttpValidateFormDataProgrammer.ts +92 -92
  255. package/src/programmers/http/HttpValidateHeadersProgrammer.ts +92 -92
  256. package/src/programmers/http/HttpValidateQueryProgrammer.ts +98 -98
  257. package/src/programmers/internal/check_array_length.ts +47 -47
  258. package/src/programmers/internal/check_bigint.ts +50 -50
  259. package/src/programmers/internal/check_dynamic_key.ts +201 -201
  260. package/src/programmers/internal/check_dynamic_properties.ts +208 -208
  261. package/src/programmers/internal/check_everything.ts +23 -23
  262. package/src/programmers/internal/check_native.ts +27 -27
  263. package/src/programmers/internal/check_number.ts +112 -112
  264. package/src/programmers/internal/check_object.ts +75 -75
  265. package/src/programmers/internal/check_string.ts +50 -50
  266. package/src/programmers/internal/check_template.ts +48 -48
  267. package/src/programmers/internal/check_union_array_like.ts +335 -335
  268. package/src/programmers/internal/decode_union_object.ts +116 -116
  269. package/src/programmers/internal/feature_object_entries.ts +61 -61
  270. package/src/programmers/internal/json_schema_alias.ts +47 -47
  271. package/src/programmers/internal/json_schema_array.ts +45 -45
  272. package/src/programmers/internal/json_schema_bigint.ts +15 -15
  273. package/src/programmers/internal/json_schema_boolean.ts +15 -15
  274. package/src/programmers/internal/json_schema_constant.ts +26 -26
  275. package/src/programmers/internal/json_schema_description.ts +12 -12
  276. package/src/programmers/internal/json_schema_discriminator.ts +35 -35
  277. package/src/programmers/internal/json_schema_escaped.ts +82 -82
  278. package/src/programmers/internal/json_schema_native.ts +33 -33
  279. package/src/programmers/internal/json_schema_number.ts +15 -15
  280. package/src/programmers/internal/json_schema_object.ts +158 -158
  281. package/src/programmers/internal/json_schema_plugin.ts +18 -18
  282. package/src/programmers/internal/json_schema_station.ts +182 -182
  283. package/src/programmers/internal/json_schema_string.ts +15 -15
  284. package/src/programmers/internal/json_schema_template.ts +55 -55
  285. package/src/programmers/internal/json_schema_title.ts +20 -20
  286. package/src/programmers/internal/json_schema_tuple.ts +35 -35
  287. package/src/programmers/internal/metadata_to_pattern.ts +42 -42
  288. package/src/programmers/internal/postfix_of_tuple.ts +5 -5
  289. package/src/programmers/internal/prune_object_properties.ts +71 -71
  290. package/src/programmers/internal/stringify_dynamic_properties.ts +162 -162
  291. package/src/programmers/internal/stringify_native.ts +7 -7
  292. package/src/programmers/internal/stringify_regular_properties.ts +81 -81
  293. package/src/programmers/internal/template_to_pattern.ts +23 -23
  294. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +23 -23
  295. package/src/programmers/json/JsonApplicationProgrammer.ts +279 -279
  296. package/src/programmers/json/JsonAssertParseProgrammer.ts +113 -113
  297. package/src/programmers/json/JsonAssertStringifyProgrammer.ts +115 -115
  298. package/src/programmers/json/JsonIsParseProgrammer.ts +114 -114
  299. package/src/programmers/json/JsonIsStringifyProgrammer.ts +108 -108
  300. package/src/programmers/json/JsonSchemasProgrammer.ts +91 -91
  301. package/src/programmers/json/JsonStringifyProgrammer.ts +1124 -1124
  302. package/src/programmers/json/JsonValidateParseProgrammer.ts +105 -105
  303. package/src/programmers/json/JsonValidateStringifyProgrammer.ts +124 -124
  304. package/src/programmers/llm/LlmApplicationOfValidateProgrammer.ts +104 -104
  305. package/src/programmers/llm/LlmApplicationProgrammer.ts +327 -327
  306. package/src/programmers/llm/LlmModelPredicator.ts +127 -127
  307. package/src/programmers/llm/LlmParametersProgrammer.ts +93 -93
  308. package/src/programmers/llm/LlmSchemaProgrammer.ts +192 -192
  309. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +95 -95
  310. package/src/programmers/misc/MiscAssertPruneProgrammer.ts +116 -116
  311. package/src/programmers/misc/MiscCloneProgrammer.ts +1032 -1032
  312. package/src/programmers/misc/MiscIsCloneProgrammer.ts +99 -99
  313. package/src/programmers/misc/MiscIsPruneProgrammer.ts +97 -97
  314. package/src/programmers/misc/MiscLiteralsProgrammer.ts +80 -80
  315. package/src/programmers/misc/MiscPruneProgrammer.ts +728 -728
  316. package/src/programmers/misc/MiscValidateCloneProgrammer.ts +111 -111
  317. package/src/programmers/misc/MiscValidatePruneProgrammer.ts +113 -113
  318. package/src/programmers/notations/NotationAssertGeneralProgrammer.ts +101 -101
  319. package/src/programmers/notations/NotationGeneralProgrammer.ts +984 -984
  320. package/src/programmers/notations/NotationIsGeneralProgrammer.ts +105 -105
  321. package/src/programmers/notations/NotationValidateGeneralProgrammer.ts +119 -119
  322. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +98 -98
  323. package/src/programmers/protobuf/ProtobufAssertEncodeProgrammer.ts +102 -102
  324. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +654 -654
  325. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +945 -945
  326. package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +109 -109
  327. package/src/programmers/protobuf/ProtobufIsEncodeProgrammer.ts +98 -98
  328. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +179 -179
  329. package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +92 -92
  330. package/src/programmers/protobuf/ProtobufValidateEncodeProgrammer.ts +119 -119
  331. package/src/protobuf.ts +868 -868
  332. package/src/reflect.ts +57 -57
  333. package/src/schemas/json/IJsonApplication.ts +73 -73
  334. package/src/schemas/json/IJsonSchemaCollection.ts +29 -29
  335. package/src/schemas/json/__IJsonApplication.ts +63 -63
  336. package/src/schemas/llm/ILlmApplicationOfValidate.ts +55 -55
  337. package/src/schemas/llm/ILlmFunctionOfValidate.ts +39 -39
  338. package/src/schemas/metadata/IJsDocTagInfo.ts +10 -10
  339. package/src/schemas/metadata/IMetadata.ts +35 -35
  340. package/src/schemas/metadata/IMetadataAlias.ts +6 -6
  341. package/src/schemas/metadata/IMetadataAliasType.ts +12 -12
  342. package/src/schemas/metadata/IMetadataApplication.ts +7 -7
  343. package/src/schemas/metadata/IMetadataArray.ts +6 -6
  344. package/src/schemas/metadata/IMetadataArrayType.ts +10 -10
  345. package/src/schemas/metadata/IMetadataAtomic.ts +6 -6
  346. package/src/schemas/metadata/IMetadataComponents.ts +11 -11
  347. package/src/schemas/metadata/IMetadataConstant.ts +18 -18
  348. package/src/schemas/metadata/IMetadataConstantValue.ts +11 -11
  349. package/src/schemas/metadata/IMetadataDictionary.ts +11 -11
  350. package/src/schemas/metadata/IMetadataEscaped.ts +6 -6
  351. package/src/schemas/metadata/IMetadataFunction.ts +8 -8
  352. package/src/schemas/metadata/IMetadataMap.ts +8 -8
  353. package/src/schemas/metadata/IMetadataNative.ts +6 -6
  354. package/src/schemas/metadata/IMetadataObject.ts +6 -6
  355. package/src/schemas/metadata/IMetadataObjectType.ts +13 -13
  356. package/src/schemas/metadata/IMetadataParameter.ts +9 -9
  357. package/src/schemas/metadata/IMetadataProperty.ts +9 -9
  358. package/src/schemas/metadata/IMetadataSet.ts +7 -7
  359. package/src/schemas/metadata/IMetadataTemplate.ts +7 -7
  360. package/src/schemas/metadata/IMetadataTuple.ts +6 -6
  361. package/src/schemas/metadata/IMetadataTupleType.ts +10 -10
  362. package/src/schemas/metadata/IMetadataTypeTag.ts +16 -16
  363. package/src/schemas/metadata/Metadata.ts +669 -669
  364. package/src/schemas/metadata/MetadataAlias.ts +46 -46
  365. package/src/schemas/metadata/MetadataAliasType.ts +63 -63
  366. package/src/schemas/metadata/MetadataApplication.ts +44 -44
  367. package/src/schemas/metadata/MetadataArray.ts +49 -49
  368. package/src/schemas/metadata/MetadataArrayType.ts +57 -57
  369. package/src/schemas/metadata/MetadataAtomic.ts +87 -87
  370. package/src/schemas/metadata/MetadataComponents.ts +98 -98
  371. package/src/schemas/metadata/MetadataConstant.ts +34 -34
  372. package/src/schemas/metadata/MetadataConstantValue.ts +62 -62
  373. package/src/schemas/metadata/MetadataEscaped.ts +51 -51
  374. package/src/schemas/metadata/MetadataFunction.ts +49 -49
  375. package/src/schemas/metadata/MetadataMap.ts +48 -48
  376. package/src/schemas/metadata/MetadataNative.ts +44 -44
  377. package/src/schemas/metadata/MetadataObject.ts +48 -48
  378. package/src/schemas/metadata/MetadataObjectType.ts +149 -149
  379. package/src/schemas/metadata/MetadataParameter.ts +54 -54
  380. package/src/schemas/metadata/MetadataProperty.ts +59 -59
  381. package/src/schemas/metadata/MetadataSet.ts +45 -45
  382. package/src/schemas/metadata/MetadataTemplate.ts +80 -80
  383. package/src/schemas/metadata/MetadataTuple.ts +32 -32
  384. package/src/schemas/metadata/MetadataTupleType.ts +67 -67
  385. package/src/schemas/protobuf/IProtobufProperty.ts +6 -6
  386. package/src/schemas/protobuf/IProtobufPropertyType.ts +37 -37
  387. package/src/schemas/protobuf/IProtobufSchema.ts +50 -50
  388. package/src/tags/Constant.ts +15 -15
  389. package/src/tags/ContentMediaType.ts +10 -10
  390. package/src/tags/Default.ts +22 -22
  391. package/src/tags/Example.ts +24 -24
  392. package/src/tags/Examples.ts +16 -16
  393. package/src/tags/ExclusiveMaximum.ts +25 -25
  394. package/src/tags/ExclusiveMinimum.ts +25 -25
  395. package/src/tags/Format.ts +50 -50
  396. package/src/tags/JsonSchemaPlugin.ts +8 -8
  397. package/src/tags/MaxItems.ts +12 -12
  398. package/src/tags/MaxLength.ts +12 -12
  399. package/src/tags/Maximum.ts +19 -19
  400. package/src/tags/MinItems.ts +12 -12
  401. package/src/tags/MinLength.ts +12 -12
  402. package/src/tags/Minimum.ts +19 -19
  403. package/src/tags/MultipleOf.ts +21 -21
  404. package/src/tags/Pattern.ts +31 -31
  405. package/src/tags/Sequence.ts +10 -10
  406. package/src/tags/TagBase.ts +82 -82
  407. package/src/tags/Type.ts +32 -32
  408. package/src/tags/UniqueItems.ts +14 -14
  409. package/src/tags/index.ts +21 -21
  410. package/src/tags/internal/FormatCheatSheet.ts +73 -73
  411. package/src/transform.ts +35 -35
  412. package/src/transformers/CallExpressionTransformer.ts +547 -547
  413. package/src/transformers/FileTransformer.ts +136 -136
  414. package/src/transformers/IProgrammerProps.ts +11 -11
  415. package/src/transformers/ITransformOptions.ts +62 -62
  416. package/src/transformers/ITransformProps.ts +9 -9
  417. package/src/transformers/ITypiaContext.ts +18 -18
  418. package/src/transformers/ImportTransformer.ts +81 -81
  419. package/src/transformers/NodeTransformer.ts +17 -17
  420. package/src/transformers/TransformerError.ts +60 -60
  421. package/src/transformers/features/AssertTransformer.ts +24 -24
  422. package/src/transformers/features/CreateAssertTransformer.ts +24 -24
  423. package/src/transformers/features/CreateIsTransformer.ts +18 -18
  424. package/src/transformers/features/CreateRandomTransformer.ts +43 -43
  425. package/src/transformers/features/CreateValidateTransformer.ts +18 -18
  426. package/src/transformers/features/IsTransformer.ts +18 -18
  427. package/src/transformers/features/RandomTransformer.ts +41 -41
  428. package/src/transformers/features/ValidateTransformer.ts +18 -18
  429. package/src/transformers/features/functional/FunctionalGenericTransformer.ts +57 -57
  430. package/src/transformers/features/http/CreateHttpAssertFormDataTransformer.ts +13 -13
  431. package/src/transformers/features/http/CreateHttpAssertHeadersTransformer.ts +13 -13
  432. package/src/transformers/features/http/CreateHttpAssertQueryTransformer.ts +13 -13
  433. package/src/transformers/features/http/CreateHttpFormDataTransformer.ts +13 -13
  434. package/src/transformers/features/http/CreateHttpHeadersTransformer.ts +13 -13
  435. package/src/transformers/features/http/CreateHttpIsFormDataTransformer.ts +13 -13
  436. package/src/transformers/features/http/CreateHttpIsHeadersTransformer.ts +13 -13
  437. package/src/transformers/features/http/CreateHttpIsQueryTransformer.ts +13 -13
  438. package/src/transformers/features/http/CreateHttpParameterTransformer.ts +13 -13
  439. package/src/transformers/features/http/CreateHttpQueryTransformer.ts +13 -13
  440. package/src/transformers/features/http/CreateHttpValidateFormDataTransformer.ts +13 -13
  441. package/src/transformers/features/http/CreateHttpValidateHeadersTransformer.ts +13 -13
  442. package/src/transformers/features/http/CreateHttpValidateQueryTransformer.ts +13 -13
  443. package/src/transformers/features/http/HttpAssertFormDataTransformer.ts +13 -13
  444. package/src/transformers/features/http/HttpAssertHeadersTransformer.ts +13 -13
  445. package/src/transformers/features/http/HttpAssertQueryTransformer.ts +13 -13
  446. package/src/transformers/features/http/HttpFormDataTransformer.ts +13 -13
  447. package/src/transformers/features/http/HttpHeadersTransformer.ts +13 -13
  448. package/src/transformers/features/http/HttpIsFormDataTransformer.ts +13 -13
  449. package/src/transformers/features/http/HttpIsHeadersTransformer.ts +13 -13
  450. package/src/transformers/features/http/HttpIsQueryTransformer.ts +13 -13
  451. package/src/transformers/features/http/HttpParameterTransformer.ts +13 -13
  452. package/src/transformers/features/http/HttpQueryTransformer.ts +13 -13
  453. package/src/transformers/features/http/HttpValidateFormDataTransformer.ts +13 -13
  454. package/src/transformers/features/http/HttpValidateHeadersTransformer.ts +13 -13
  455. package/src/transformers/features/http/HttpValidateQueryTransformer.ts +13 -13
  456. package/src/transformers/features/json/JsonApplicationTransformer.ts +105 -105
  457. package/src/transformers/features/json/JsonAssertParseTransformer.ts +13 -13
  458. package/src/transformers/features/json/JsonAssertStringifyTransformer.ts +13 -13
  459. package/src/transformers/features/json/JsonCreateAssertParseTransformer.ts +13 -13
  460. package/src/transformers/features/json/JsonCreateAssertStringifyTransformer.ts +13 -13
  461. package/src/transformers/features/json/JsonCreateIsParseTransformer.ts +13 -13
  462. package/src/transformers/features/json/JsonCreateIsStringifyTransformer.ts +13 -13
  463. package/src/transformers/features/json/JsonCreateStringifyTransformer.ts +13 -13
  464. package/src/transformers/features/json/JsonCreateValidateParseTransformer.ts +13 -13
  465. package/src/transformers/features/json/JsonCreateValidateStringifyProgrammer.ts +13 -13
  466. package/src/transformers/features/json/JsonIsParseTransformer.ts +13 -13
  467. package/src/transformers/features/json/JsonIsStringifyTransformer.ts +13 -13
  468. package/src/transformers/features/json/JsonSchemasTransformer.ts +143 -143
  469. package/src/transformers/features/json/JsonStringifyTransformer.ts +13 -13
  470. package/src/transformers/features/json/JsonValidateParseTransformer.ts +13 -13
  471. package/src/transformers/features/json/JsonValidateStringifyTransformer.ts +13 -13
  472. package/src/transformers/features/llm/LlmApplicationOfValidateTransformer.ts +121 -121
  473. package/src/transformers/features/llm/LlmApplicationTransformer.ts +118 -118
  474. package/src/transformers/features/llm/LlmParametersTransformer.ts +94 -94
  475. package/src/transformers/features/llm/LlmSchemaTransformer.ts +135 -135
  476. package/src/transformers/features/misc/MiscAssertCloneTransformer.ts +13 -13
  477. package/src/transformers/features/misc/MiscAssertPruneTransformer.ts +13 -13
  478. package/src/transformers/features/misc/MiscCloneTransformer.ts +13 -13
  479. package/src/transformers/features/misc/MiscCreateAssertCloneTransformer.ts +13 -13
  480. package/src/transformers/features/misc/MiscCreateAssertPruneTransformer.ts +13 -13
  481. package/src/transformers/features/misc/MiscCreateCloneTransformer.ts +13 -13
  482. package/src/transformers/features/misc/MiscCreateIsCloneTransformer.ts +13 -13
  483. package/src/transformers/features/misc/MiscCreateIsPruneTransformer.ts +13 -13
  484. package/src/transformers/features/misc/MiscCreatePruneTransformer.ts +13 -13
  485. package/src/transformers/features/misc/MiscCreateValidateCloneTransformer.ts +13 -13
  486. package/src/transformers/features/misc/MiscCreateValidatePruneTransformer.ts +13 -13
  487. package/src/transformers/features/misc/MiscIsCloneTransformer.ts +13 -13
  488. package/src/transformers/features/misc/MiscIsPruneTransformer.ts +13 -13
  489. package/src/transformers/features/misc/MiscLiteralsTransformer.ts +35 -35
  490. package/src/transformers/features/misc/MiscPruneTransformer.ts +13 -13
  491. package/src/transformers/features/misc/MiscValidateCloneTransformer.ts +13 -13
  492. package/src/transformers/features/misc/MiscValidatePruneTransformer.ts +13 -13
  493. package/src/transformers/features/notations/NotationAssertGeneralTransformer.ts +20 -20
  494. package/src/transformers/features/notations/NotationCreateAssertGeneralTransformer.ts +20 -20
  495. package/src/transformers/features/notations/NotationCreateGeneralTransformer.ts +20 -20
  496. package/src/transformers/features/notations/NotationCreateIsGeneralTransformer.ts +20 -20
  497. package/src/transformers/features/notations/NotationCreateValidateGeneralTransformer.ts +20 -20
  498. package/src/transformers/features/notations/NotationGeneralTransformer.ts +18 -18
  499. package/src/transformers/features/notations/NotationIsGeneralTransformer.ts +20 -20
  500. package/src/transformers/features/notations/NotationValidateGeneralTransformer.ts +20 -20
  501. package/src/transformers/features/protobuf/ProtobufAssertDecodeTransformer.ts +13 -13
  502. package/src/transformers/features/protobuf/ProtobufAssertEncodeTransformer.ts +13 -13
  503. package/src/transformers/features/protobuf/ProtobufCreateAssertDecodeTransformer.ts +13 -13
  504. package/src/transformers/features/protobuf/ProtobufCreateAssertEncodeTransformer.ts +13 -13
  505. package/src/transformers/features/protobuf/ProtobufCreateDecodeTransformer.ts +13 -13
  506. package/src/transformers/features/protobuf/ProtobufCreateEncodeTransformer.ts +13 -13
  507. package/src/transformers/features/protobuf/ProtobufCreateIsDecodeTransformer.ts +13 -13
  508. package/src/transformers/features/protobuf/ProtobufCreateIsEncodeTransformer.ts +13 -13
  509. package/src/transformers/features/protobuf/ProtobufCreateValidateDecodeTransformer.ts +13 -13
  510. package/src/transformers/features/protobuf/ProtobufCreateValidateEncodeTransformer.ts +13 -13
  511. package/src/transformers/features/protobuf/ProtobufDecodeTransformer.ts +13 -13
  512. package/src/transformers/features/protobuf/ProtobufEncodeTransformer.ts +13 -13
  513. package/src/transformers/features/protobuf/ProtobufIsDecodeTransformer.ts +13 -13
  514. package/src/transformers/features/protobuf/ProtobufIsEncodeTransformer.ts +13 -13
  515. package/src/transformers/features/protobuf/ProtobufMessageTransformer.ts +35 -35
  516. package/src/transformers/features/protobuf/ProtobufValidateDecodeTransformer.ts +13 -13
  517. package/src/transformers/features/protobuf/ProtobufValidateEncodeTransformer.ts +13 -13
  518. package/src/transformers/features/reflect/ReflectMetadataTransformer.ts +69 -69
  519. package/src/transformers/features/reflect/ReflectNameTransformer.ts +82 -82
  520. package/src/transformers/internal/GenericTransformer.ts +101 -101
  521. package/src/typings/Atomic.ts +13 -13
  522. package/src/typings/ClassProperties.ts +5 -5
  523. package/src/typings/Customizable.ts +5 -5
  524. package/src/typings/Equal.ts +18 -18
  525. package/src/typings/IsTuple.ts +9 -9
  526. package/src/typings/NativeClass.ts +23 -23
  527. package/src/typings/OmitNever.ts +3 -3
  528. package/src/typings/ProtobufAtomic.ts +19 -19
  529. package/src/typings/SpecialFields.ts +3 -3
  530. package/src/typings/ValidationPipe.ts +9 -9
  531. package/src/typings/ValueOf.ts +20 -20
  532. package/src/typings/Writable.ts +11 -11
  533. package/src/utils/ArrayUtil.ts +41 -41
  534. package/src/utils/Escaper.ts +50 -50
  535. package/src/utils/MapUtil.ts +14 -14
  536. package/src/utils/NamingConvention.ts +94 -94
  537. package/src/utils/PatternUtil.ts +29 -29
  538. package/src/utils/ProtobufNameEncoder.ts +32 -32
  539. package/src/utils/Singleton.ts +16 -16
  540. package/src/utils/StringUtil.ts +16 -16
@@ -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,13 +1,13 @@
1
- export namespace Atomic {
2
- export type Type = boolean | number | string | bigint;
3
-
4
- export type Literal = "boolean" | "integer" | "number" | "string" | "bigint";
5
-
6
- export type Mapper = {
7
- boolean: boolean;
8
- integer: number;
9
- number: number;
10
- string: string;
11
- bigint: bigint;
12
- };
13
- }
1
+ export namespace Atomic {
2
+ export type Type = boolean | number | string | bigint;
3
+
4
+ export type Literal = "boolean" | "integer" | "number" | "string" | "bigint";
5
+
6
+ export type Mapper = {
7
+ boolean: boolean;
8
+ integer: number;
9
+ number: number;
10
+ string: string;
11
+ bigint: bigint;
12
+ };
13
+ }
@@ -1,5 +1,5 @@
1
- import { OmitNever } from "./OmitNever";
2
-
3
- export type ClassProperties<T extends object> = OmitNever<{
4
- [K in keyof T]: T[K] extends Function ? never : T[K];
5
- }>;
1
+ import { OmitNever } from "./OmitNever";
2
+
3
+ export type ClassProperties<T extends object> = OmitNever<{
4
+ [K in keyof T]: T[K] extends Function ? never : T[K];
5
+ }>;
@@ -1,5 +1,5 @@
1
- export type Customizable = {
2
- number: number;
3
- string: string;
4
- bigint: bigint;
5
- };
1
+ export type Customizable = {
2
+ number: number;
3
+ string: string;
4
+ bigint: bigint;
5
+ };
@@ -1,18 +1,18 @@
1
- /**
2
- * Compare the equivalence of the two types X and Y.
3
- *
4
- * The two types X and Y refer to any type that can be expressed in the type script, such as the union type and the object type.
5
- *
6
- * @template X One of the types to compare
7
- * @template Y One of the types to compare
8
- *
9
- * ```ts
10
- * type Answer = Equal<1 | 2, 1 | 2>; // true
11
- * ```
12
- *
13
- * @author Kyungsu Kang - https://github.com/kakasoo
14
- */
15
- export type Equal<X, Y> =
16
- (<T>() => T extends X ? 1 : 2) extends <T>() => T extends Y ? 1 : 2
17
- ? true
18
- : false;
1
+ /**
2
+ * Compare the equivalence of the two types X and Y.
3
+ *
4
+ * The two types X and Y refer to any type that can be expressed in the type script, such as the union type and the object type.
5
+ *
6
+ * @template X One of the types to compare
7
+ * @template Y One of the types to compare
8
+ *
9
+ * ```ts
10
+ * type Answer = Equal<1 | 2, 1 | 2>; // true
11
+ * ```
12
+ *
13
+ * @author Kyungsu Kang - https://github.com/kakasoo
14
+ */
15
+ export type Equal<X, Y> =
16
+ (<T>() => T extends X ? 1 : 2) extends <T>() => T extends Y ? 1 : 2
17
+ ? true
18
+ : false;
@@ -1,9 +1,9 @@
1
- export type IsTuple<T extends readonly any[] | { length: number }> = [
2
- T,
3
- ] extends [never]
4
- ? false
5
- : T extends readonly any[]
6
- ? number extends T["length"]
7
- ? false
8
- : true
9
- : false;
1
+ export type IsTuple<T extends readonly any[] | { length: number }> = [
2
+ T,
3
+ ] extends [never]
4
+ ? false
5
+ : T extends readonly any[]
6
+ ? number extends T["length"]
7
+ ? false
8
+ : true
9
+ : false;
@@ -1,23 +1,23 @@
1
- export type NativeClass =
2
- | Date
3
- | Set<any>
4
- | Map<any, any>
5
- | WeakSet<any>
6
- | WeakMap<any, any>
7
- | Uint8Array
8
- | Uint8ClampedArray
9
- | Uint16Array
10
- | Uint32Array
11
- | BigUint64Array
12
- | Int8Array
13
- | Int16Array
14
- | Int32Array
15
- | BigInt64Array
16
- | Float32Array
17
- | Float64Array
18
- | ArrayBuffer
19
- | SharedArrayBuffer
20
- | DataView
21
- | Blob
22
- | File
23
- | RegExp;
1
+ export type NativeClass =
2
+ | Date
3
+ | Set<any>
4
+ | Map<any, any>
5
+ | WeakSet<any>
6
+ | WeakMap<any, any>
7
+ | Uint8Array
8
+ | Uint8ClampedArray
9
+ | Uint16Array
10
+ | Uint32Array
11
+ | BigUint64Array
12
+ | Int8Array
13
+ | Int16Array
14
+ | Int32Array
15
+ | BigInt64Array
16
+ | Float32Array
17
+ | Float64Array
18
+ | ArrayBuffer
19
+ | SharedArrayBuffer
20
+ | DataView
21
+ | Blob
22
+ | File
23
+ | RegExp;
@@ -1,3 +1,3 @@
1
- import { SpecialFields } from "./SpecialFields";
2
-
3
- export type OmitNever<T extends object> = Omit<T, SpecialFields<T, never>>;
1
+ import { SpecialFields } from "./SpecialFields";
2
+
3
+ export type OmitNever<T extends object> = Omit<T, SpecialFields<T, never>>;
@@ -1,19 +1,19 @@
1
- export type ProtobufAtomic =
2
- | "bool"
3
- | "int32"
4
- | "uint32"
5
- | "int64"
6
- | "uint64"
7
- | "float"
8
- | "double"
9
- | "string";
10
- export namespace ProtobufAtomic {
11
- export type Numeric =
12
- | "int32"
13
- | "uint32"
14
- | "int64"
15
- | "uint64"
16
- | "float"
17
- | "double";
18
- export type BigNumeric = "int64" | "uint64";
19
- }
1
+ export type ProtobufAtomic =
2
+ | "bool"
3
+ | "int32"
4
+ | "uint32"
5
+ | "int64"
6
+ | "uint64"
7
+ | "float"
8
+ | "double"
9
+ | "string";
10
+ export namespace ProtobufAtomic {
11
+ export type Numeric =
12
+ | "int32"
13
+ | "uint32"
14
+ | "int64"
15
+ | "uint64"
16
+ | "float"
17
+ | "double";
18
+ export type BigNumeric = "int64" | "uint64";
19
+ }
@@ -1,3 +1,3 @@
1
- export type SpecialFields<Instance extends object, Target> = {
2
- [P in keyof Instance]: Instance[P] extends Target ? P : never;
3
- }[keyof Instance & string];
1
+ export type SpecialFields<Instance extends object, Target> = {
2
+ [P in keyof Instance]: Instance[P] extends Target ? P : never;
3
+ }[keyof Instance & string];
@@ -1,9 +1,9 @@
1
- export type ValidationPipe<T, E> =
2
- | {
3
- success: true;
4
- data: T;
5
- }
6
- | {
7
- success: false;
8
- errors: E[];
9
- };
1
+ export type ValidationPipe<T, E> =
2
+ | {
3
+ success: true;
4
+ data: T;
5
+ }
6
+ | {
7
+ success: false;
8
+ errors: E[];
9
+ };
@@ -1,20 +1,20 @@
1
- export type ValueOf<Instance> =
2
- IsValueOf<Instance, Boolean> extends true
3
- ? boolean
4
- : IsValueOf<Instance, Number> extends true
5
- ? number
6
- : IsValueOf<Instance, String> extends true
7
- ? string
8
- : Instance;
9
-
10
- type IsValueOf<Instance, Object extends IValueOf<any>> = Instance extends Object
11
- ? Object extends IValueOf<infer Primitive>
12
- ? Instance extends Primitive
13
- ? false
14
- : true // not Primitive, but Object
15
- : false // cannot be
16
- : false;
17
-
18
- interface IValueOf<T> {
19
- valueOf(): T;
20
- }
1
+ export type ValueOf<Instance> =
2
+ IsValueOf<Instance, Boolean> extends true
3
+ ? boolean
4
+ : IsValueOf<Instance, Number> extends true
5
+ ? number
6
+ : IsValueOf<Instance, String> extends true
7
+ ? string
8
+ : Instance;
9
+
10
+ type IsValueOf<Instance, Object extends IValueOf<any>> = Instance extends Object
11
+ ? Object extends IValueOf<infer Primitive>
12
+ ? Instance extends Primitive
13
+ ? false
14
+ : true // not Primitive, but Object
15
+ : false // cannot be
16
+ : false;
17
+
18
+ interface IValueOf<T> {
19
+ valueOf(): T;
20
+ }
@@ -1,11 +1,11 @@
1
- import { ClassProperties } from "./ClassProperties";
2
-
3
- export type Writable<T extends object> = {
4
- -readonly [P in keyof T]: T[P];
5
- };
6
-
7
- export function Writable<T extends object>(
8
- elem: T,
9
- ): Writable<ClassProperties<T>> {
10
- return elem as any;
11
- }
1
+ import { ClassProperties } from "./ClassProperties";
2
+
3
+ export type Writable<T extends object> = {
4
+ -readonly [P in keyof T]: T[P];
5
+ };
6
+
7
+ export function Writable<T extends object>(
8
+ elem: T,
9
+ ): Writable<ClassProperties<T>> {
10
+ return elem as any;
11
+ }