typia 8.2.0 → 9.0.0-dev.20250405

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 (546) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +150 -150
  3. package/lib/executable/setup/PluginConfigurator.js +3 -3
  4. package/lib/executable/setup/PluginConfigurator.mjs +3 -3
  5. package/lib/executable/typia.js +15 -15
  6. package/lib/executable/typia.mjs +15 -15
  7. package/lib/internal/_randomInteger.d.mts +1 -1
  8. package/lib/internal/_randomInteger.d.ts +1 -1
  9. package/lib/internal/_randomInteger.js +14 -10
  10. package/lib/internal/_randomInteger.js.map +1 -1
  11. package/lib/internal/_randomInteger.mjs +17 -11
  12. package/lib/internal/_randomNumber.js +13 -9
  13. package/lib/internal/_randomNumber.js.map +1 -1
  14. package/lib/internal/_randomNumber.mjs +12 -6
  15. package/lib/json.d.mts +0 -44
  16. package/lib/json.d.ts +0 -44
  17. package/lib/json.js +0 -7
  18. package/lib/json.js.map +1 -1
  19. package/lib/json.mjs +1 -7
  20. package/lib/llm.d.mts +0 -37
  21. package/lib/llm.d.ts +0 -37
  22. package/lib/llm.js +0 -7
  23. package/lib/llm.js.map +1 -1
  24. package/lib/llm.mjs +1 -7
  25. package/lib/module.d.mts +0 -2
  26. package/lib/module.d.ts +0 -2
  27. package/lib/module.js +0 -2
  28. package/lib/module.js.map +1 -1
  29. package/lib/tags/ExclusiveMaximum.d.mts +2 -4
  30. package/lib/tags/ExclusiveMaximum.d.ts +2 -4
  31. package/lib/tags/ExclusiveMinimum.d.mts +2 -4
  32. package/lib/tags/ExclusiveMinimum.d.ts +2 -4
  33. package/package.json +3 -3
  34. package/src/AssertionGuard.ts +1 -1
  35. package/src/CamelCase.ts +75 -75
  36. package/src/IRandomGenerator.ts +49 -49
  37. package/src/IReadableURLSearchParams.ts +9 -9
  38. package/src/IValidation.ts +1 -1
  39. package/src/PascalCase.ts +71 -71
  40. package/src/Primitive.ts +92 -92
  41. package/src/Resolved.ts +74 -74
  42. package/src/SnakeCase.ts +126 -126
  43. package/src/TypeGuardError.ts +37 -37
  44. package/src/executable/TypiaGenerateWizard.ts +83 -83
  45. package/src/executable/TypiaPatchWizard.ts +45 -45
  46. package/src/executable/TypiaSetupWizard.ts +171 -171
  47. package/src/executable/setup/ArgumentParser.ts +42 -42
  48. package/src/executable/setup/CommandExecutor.ts +8 -8
  49. package/src/executable/setup/FileRetriever.ts +19 -19
  50. package/src/executable/setup/PackageManager.ts +87 -87
  51. package/src/executable/setup/PluginConfigurator.ts +69 -69
  52. package/src/executable/typia.ts +55 -55
  53. package/src/factories/CommentFactory.ts +79 -79
  54. package/src/factories/ExpressionFactory.ts +216 -216
  55. package/src/factories/IdentifierFactory.ts +89 -89
  56. package/src/factories/JsonMetadataFactory.ts +83 -83
  57. package/src/factories/LiteralFactory.ts +52 -52
  58. package/src/factories/MetadataCollection.ts +278 -278
  59. package/src/factories/MetadataCommentTagFactory.ts +650 -650
  60. package/src/factories/MetadataFactory.ts +404 -404
  61. package/src/factories/MetadataTypeTagFactory.ts +413 -413
  62. package/src/factories/MetadataTypeTagSchemaFactory.ts +82 -82
  63. package/src/factories/NumericRangeFactory.ts +72 -72
  64. package/src/factories/ProtobufFactory.ts +875 -875
  65. package/src/factories/StatementFactory.ts +90 -90
  66. package/src/factories/TemplateFactory.ts +64 -64
  67. package/src/factories/TypeFactory.ts +140 -140
  68. package/src/factories/ValueFactory.ts +12 -12
  69. package/src/factories/internal/metadata/IMetadataIteratorProps.ts +17 -17
  70. package/src/factories/internal/metadata/MetadataHelper.ts +21 -21
  71. package/src/factories/internal/metadata/emend_metadata_atomics.ts +45 -45
  72. package/src/factories/internal/metadata/emplace_metadata_alias.ts +33 -33
  73. package/src/factories/internal/metadata/emplace_metadata_array_type.ts +39 -39
  74. package/src/factories/internal/metadata/emplace_metadata_object.ts +212 -212
  75. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +57 -57
  76. package/src/factories/internal/metadata/explore_metadata.ts +31 -31
  77. package/src/factories/internal/metadata/iterate_metadata.ts +54 -54
  78. package/src/factories/internal/metadata/iterate_metadata_alias.ts +33 -33
  79. package/src/factories/internal/metadata/iterate_metadata_array.ts +63 -63
  80. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +62 -62
  81. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +28 -28
  82. package/src/factories/internal/metadata/iterate_metadata_collection.ts +146 -146
  83. package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +32 -32
  84. package/src/factories/internal/metadata/iterate_metadata_constant.ts +76 -76
  85. package/src/factories/internal/metadata/iterate_metadata_escape.ts +49 -49
  86. package/src/factories/internal/metadata/iterate_metadata_function.ts +91 -91
  87. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +212 -212
  88. package/src/factories/internal/metadata/iterate_metadata_map.ts +57 -57
  89. package/src/factories/internal/metadata/iterate_metadata_native.ts +255 -255
  90. package/src/factories/internal/metadata/iterate_metadata_object.ts +35 -35
  91. package/src/factories/internal/metadata/iterate_metadata_set.ts +57 -57
  92. package/src/factories/internal/metadata/iterate_metadata_sort.ts +87 -87
  93. package/src/factories/internal/metadata/iterate_metadata_template.ts +41 -41
  94. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +26 -26
  95. package/src/factories/internal/metadata/iterate_metadata_union.ts +19 -19
  96. package/src/functional.ts +750 -750
  97. package/src/http.ts +1047 -1047
  98. package/src/index.ts +4 -4
  99. package/src/internal/_IProtobufWriter.ts +18 -18
  100. package/src/internal/_ProtobufReader.ts +194 -194
  101. package/src/internal/_ProtobufSizer.ts +145 -145
  102. package/src/internal/_ProtobufWriter.ts +145 -145
  103. package/src/internal/_accessExpressionAsString.ts +46 -46
  104. package/src/internal/_assertGuard.ts +13 -13
  105. package/src/internal/_functionalTypeGuardErrorFactory.ts +4 -4
  106. package/src/internal/_httpFormDataReadArray.ts +4 -4
  107. package/src/internal/_httpFormDataReadBigint.ts +18 -18
  108. package/src/internal/_httpFormDataReadBlob.ts +10 -10
  109. package/src/internal/_httpFormDataReadBoolean.ts +16 -16
  110. package/src/internal/_httpFormDataReadFile.ts +10 -10
  111. package/src/internal/_httpFormDataReadNumber.ts +15 -15
  112. package/src/internal/_httpFormDataReadString.ts +10 -10
  113. package/src/internal/_httpHeaderReadBigint.ts +10 -10
  114. package/src/internal/_httpHeaderReadBoolean.ts +8 -8
  115. package/src/internal/_httpHeaderReadNumber.ts +7 -7
  116. package/src/internal/_httpParameterReadBigint.ts +10 -10
  117. package/src/internal/_httpParameterReadBoolean.ts +8 -8
  118. package/src/internal/_httpParameterReadNumber.ts +7 -7
  119. package/src/internal/_httpParameterReadString.ts +2 -2
  120. package/src/internal/_httpQueryParseURLSearchParams.ts +12 -12
  121. package/src/internal/_httpQueryReadArray.ts +4 -4
  122. package/src/internal/_httpQueryReadBigint.ts +12 -12
  123. package/src/internal/_httpQueryReadBoolean.ts +14 -14
  124. package/src/internal/_httpQueryReadNumber.ts +9 -9
  125. package/src/internal/_httpQueryReadString.ts +4 -4
  126. package/src/internal/_isBetween.ts +2 -2
  127. package/src/internal/_isBigintString.ts +8 -8
  128. package/src/internal/_isFormatByte.ts +7 -7
  129. package/src/internal/_isFormatDate.ts +3 -3
  130. package/src/internal/_isFormatDateTime.ts +4 -4
  131. package/src/internal/_isFormatDuration.ts +4 -4
  132. package/src/internal/_isFormatEmail.ts +4 -4
  133. package/src/internal/_isFormatHostname.ts +4 -4
  134. package/src/internal/_isFormatIdnEmail.ts +4 -4
  135. package/src/internal/_isFormatIdnHostname.ts +4 -4
  136. package/src/internal/_isFormatIpv4.ts +4 -4
  137. package/src/internal/_isFormatIpv6.ts +4 -4
  138. package/src/internal/_isFormatIri.ts +3 -3
  139. package/src/internal/_isFormatIriReference.ts +4 -4
  140. package/src/internal/_isFormatJsonPointer.ts +3 -3
  141. package/src/internal/_isFormatPassword.ts +1 -1
  142. package/src/internal/_isFormatRegex.ts +8 -8
  143. package/src/internal/_isFormatRelativeJsonPointer.ts +4 -4
  144. package/src/internal/_isFormatTime.ts +4 -4
  145. package/src/internal/_isFormatUri.ts +6 -6
  146. package/src/internal/_isFormatUriReference.ts +5 -5
  147. package/src/internal/_isFormatUriTemplate.ts +4 -4
  148. package/src/internal/_isFormatUrl.ts +4 -4
  149. package/src/internal/_isFormatUuid.ts +3 -3
  150. package/src/internal/_isTypeFloat.ts +5 -5
  151. package/src/internal/_isTypeInt32.ts +5 -5
  152. package/src/internal/_isTypeInt64.ts +5 -5
  153. package/src/internal/_isTypeUint32.ts +5 -5
  154. package/src/internal/_isTypeUint64.ts +5 -5
  155. package/src/internal/_isUniqueItems.ts +159 -159
  156. package/src/internal/_jsonStringifyNumber.ts +12 -12
  157. package/src/internal/_jsonStringifyRest.ts +3 -3
  158. package/src/internal/_jsonStringifyString.ts +42 -42
  159. package/src/internal/_jsonStringifyTail.ts +2 -2
  160. package/src/internal/_llmApplicationFinalize.ts +20 -20
  161. package/src/internal/_miscCloneAny.ts +46 -46
  162. package/src/internal/_notationAny.ts +37 -37
  163. package/src/internal/_notationCamel.ts +13 -13
  164. package/src/internal/_notationPascal.ts +8 -8
  165. package/src/internal/_notationSnake.ts +43 -43
  166. package/src/internal/_randomArray.ts +21 -21
  167. package/src/internal/_randomBigint.ts +6 -6
  168. package/src/internal/_randomBoolean.ts +1 -1
  169. package/src/internal/_randomFormatByte.ts +3 -3
  170. package/src/internal/_randomFormatDate.ts +18 -18
  171. package/src/internal/_randomFormatDatetime.ts +16 -16
  172. package/src/internal/_randomFormatDuration.ts +27 -27
  173. package/src/internal/_randomFormatEmail.ts +11 -11
  174. package/src/internal/_randomFormatHostname.ts +6 -6
  175. package/src/internal/_randomFormatIdnEmail.ts +3 -3
  176. package/src/internal/_randomFormatIdnHostname.ts +3 -3
  177. package/src/internal/_randomFormatIpv4.ts +11 -11
  178. package/src/internal/_randomFormatIpv6.ts +11 -11
  179. package/src/internal/_randomFormatIri.ts +3 -3
  180. package/src/internal/_randomFormatIriReference.ts +3 -3
  181. package/src/internal/_randomFormatJsonPointer.ts +7 -7
  182. package/src/internal/_randomFormatPassword.ts +8 -8
  183. package/src/internal/_randomFormatRegex.ts +4 -4
  184. package/src/internal/_randomFormatRelativeJsonPointer.ts +8 -8
  185. package/src/internal/_randomFormatTime.ts +14 -14
  186. package/src/internal/_randomFormatUri.ts +3 -3
  187. package/src/internal/_randomFormatUriReference.ts +3 -3
  188. package/src/internal/_randomFormatUriTemplate.ts +3 -3
  189. package/src/internal/_randomFormatUrl.ts +11 -11
  190. package/src/internal/_randomFormatUuid.ts +6 -6
  191. package/src/internal/_randomInteger.ts +53 -47
  192. package/src/internal/_randomNumber.ts +80 -74
  193. package/src/internal/_randomPattern.ts +10 -10
  194. package/src/internal/_randomPick.ts +9 -9
  195. package/src/internal/_randomString.ts +24 -24
  196. package/src/internal/_throwTypeGuardError.ts +5 -5
  197. package/src/internal/_validateReport.ts +13 -13
  198. package/src/internal/private/__notationCapitalize.ts +2 -2
  199. package/src/internal/private/__notationUnsnake.ts +24 -24
  200. package/src/json.ts +696 -752
  201. package/src/llm.ts +342 -396
  202. package/src/misc.ts +658 -658
  203. package/src/module.ts +935 -937
  204. package/src/notations.ts +827 -827
  205. package/src/programmers/AssertProgrammer.ts +454 -454
  206. package/src/programmers/CheckerProgrammer.ts +1617 -1617
  207. package/src/programmers/FeatureProgrammer.ts +622 -622
  208. package/src/programmers/ImportProgrammer.ts +185 -185
  209. package/src/programmers/IsProgrammer.ts +273 -273
  210. package/src/programmers/RandomProgrammer.ts +1190 -1190
  211. package/src/programmers/TypiaProgrammer.ts +175 -175
  212. package/src/programmers/ValidateProgrammer.ts +439 -439
  213. package/src/programmers/functional/FunctionalAssertFunctionProgrammer.ts +153 -153
  214. package/src/programmers/functional/FunctionalAssertParametersProgrammer.ts +125 -125
  215. package/src/programmers/functional/FunctionalAssertReturnProgrammer.ts +115 -115
  216. package/src/programmers/functional/FunctionalIsFunctionProgrammer.ts +72 -72
  217. package/src/programmers/functional/FunctionalIsParametersProgrammer.ts +113 -113
  218. package/src/programmers/functional/FunctionalIsReturnProgrammer.ts +116 -116
  219. package/src/programmers/functional/FunctionalValidateFunctionProgrammer.ts +119 -119
  220. package/src/programmers/functional/FunctionalValidateParametersProgrammer.ts +274 -274
  221. package/src/programmers/functional/FunctionalValidateReturnProgrammer.ts +135 -135
  222. package/src/programmers/functional/internal/FunctionalGeneralProgrammer.ts +34 -34
  223. package/src/programmers/helpers/AtomicPredicator.ts +35 -35
  224. package/src/programmers/helpers/CloneJoiner.ts +143 -143
  225. package/src/programmers/helpers/FunctionProgrammer.ts +67 -67
  226. package/src/programmers/helpers/HttpMetadataUtil.ts +21 -21
  227. package/src/programmers/helpers/ICheckEntry.ts +13 -13
  228. package/src/programmers/helpers/IExpressionEntry.ts +12 -12
  229. package/src/programmers/helpers/NotationJoiner.ts +144 -144
  230. package/src/programmers/helpers/OptionPredicator.ts +15 -15
  231. package/src/programmers/helpers/ProtobufUtil.ts +228 -228
  232. package/src/programmers/helpers/ProtobufWire.ts +34 -34
  233. package/src/programmers/helpers/PruneJoiner.ts +148 -148
  234. package/src/programmers/helpers/RandomJoiner.ts +168 -168
  235. package/src/programmers/helpers/StringifyJoinder.ts +115 -115
  236. package/src/programmers/helpers/StringifyPredicator.ts +13 -13
  237. package/src/programmers/helpers/UnionExplorer.ts +372 -372
  238. package/src/programmers/helpers/UnionPredicator.ts +79 -79
  239. package/src/programmers/helpers/disable_function_programmer_declare.ts +32 -32
  240. package/src/programmers/http/HttpAssertFormDataProgrammer.ts +99 -99
  241. package/src/programmers/http/HttpAssertHeadersProgrammer.ts +99 -99
  242. package/src/programmers/http/HttpAssertQueryProgrammer.ts +105 -105
  243. package/src/programmers/http/HttpFormDataProgrammer.ts +308 -308
  244. package/src/programmers/http/HttpHeadersProgrammer.ts +400 -400
  245. package/src/programmers/http/HttpIsFormDataProgrammer.ts +108 -108
  246. package/src/programmers/http/HttpIsHeadersProgrammer.ts +108 -108
  247. package/src/programmers/http/HttpIsQueryProgrammer.ts +114 -114
  248. package/src/programmers/http/HttpParameterProgrammer.ts +115 -115
  249. package/src/programmers/http/HttpQueryProgrammer.ts +336 -336
  250. package/src/programmers/http/HttpValidateFormDataProgrammer.ts +92 -92
  251. package/src/programmers/http/HttpValidateHeadersProgrammer.ts +92 -92
  252. package/src/programmers/http/HttpValidateQueryProgrammer.ts +98 -98
  253. package/src/programmers/internal/check_array_length.ts +47 -47
  254. package/src/programmers/internal/check_bigint.ts +50 -50
  255. package/src/programmers/internal/check_dynamic_key.ts +201 -201
  256. package/src/programmers/internal/check_dynamic_properties.ts +208 -208
  257. package/src/programmers/internal/check_everything.ts +23 -23
  258. package/src/programmers/internal/check_native.ts +27 -27
  259. package/src/programmers/internal/check_number.ts +112 -112
  260. package/src/programmers/internal/check_object.ts +75 -75
  261. package/src/programmers/internal/check_string.ts +50 -50
  262. package/src/programmers/internal/check_template.ts +48 -48
  263. package/src/programmers/internal/check_union_array_like.ts +335 -335
  264. package/src/programmers/internal/decode_union_object.ts +116 -116
  265. package/src/programmers/internal/feature_object_entries.ts +61 -61
  266. package/src/programmers/internal/json_schema_alias.ts +47 -47
  267. package/src/programmers/internal/json_schema_array.ts +45 -45
  268. package/src/programmers/internal/json_schema_bigint.ts +15 -15
  269. package/src/programmers/internal/json_schema_boolean.ts +15 -15
  270. package/src/programmers/internal/json_schema_constant.ts +26 -26
  271. package/src/programmers/internal/json_schema_description.ts +12 -12
  272. package/src/programmers/internal/json_schema_discriminator.ts +35 -35
  273. package/src/programmers/internal/json_schema_escaped.ts +82 -82
  274. package/src/programmers/internal/json_schema_native.ts +33 -33
  275. package/src/programmers/internal/json_schema_number.ts +15 -15
  276. package/src/programmers/internal/json_schema_object.ts +158 -158
  277. package/src/programmers/internal/json_schema_plugin.ts +18 -18
  278. package/src/programmers/internal/json_schema_station.ts +182 -182
  279. package/src/programmers/internal/json_schema_string.ts +15 -15
  280. package/src/programmers/internal/json_schema_template.ts +55 -55
  281. package/src/programmers/internal/json_schema_title.ts +20 -20
  282. package/src/programmers/internal/json_schema_tuple.ts +35 -35
  283. package/src/programmers/internal/metadata_to_pattern.ts +42 -42
  284. package/src/programmers/internal/postfix_of_tuple.ts +5 -5
  285. package/src/programmers/internal/prune_object_properties.ts +71 -71
  286. package/src/programmers/internal/stringify_dynamic_properties.ts +162 -162
  287. package/src/programmers/internal/stringify_native.ts +7 -7
  288. package/src/programmers/internal/stringify_regular_properties.ts +81 -81
  289. package/src/programmers/internal/template_to_pattern.ts +23 -23
  290. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +23 -23
  291. package/src/programmers/json/JsonApplicationProgrammer.ts +266 -266
  292. package/src/programmers/json/JsonAssertParseProgrammer.ts +113 -113
  293. package/src/programmers/json/JsonAssertStringifyProgrammer.ts +115 -115
  294. package/src/programmers/json/JsonIsParseProgrammer.ts +114 -114
  295. package/src/programmers/json/JsonIsStringifyProgrammer.ts +108 -108
  296. package/src/programmers/json/JsonSchemasProgrammer.ts +91 -91
  297. package/src/programmers/json/JsonStringifyProgrammer.ts +1124 -1124
  298. package/src/programmers/json/JsonValidateParseProgrammer.ts +105 -105
  299. package/src/programmers/json/JsonValidateStringifyProgrammer.ts +124 -124
  300. package/src/programmers/llm/LlmApplicationProgrammer.ts +401 -401
  301. package/src/programmers/llm/LlmModelPredicator.ts +127 -127
  302. package/src/programmers/llm/LlmParametersProgrammer.ts +93 -93
  303. package/src/programmers/llm/LlmSchemaProgrammer.ts +192 -192
  304. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +95 -95
  305. package/src/programmers/misc/MiscAssertPruneProgrammer.ts +116 -116
  306. package/src/programmers/misc/MiscCloneProgrammer.ts +1032 -1032
  307. package/src/programmers/misc/MiscIsCloneProgrammer.ts +99 -99
  308. package/src/programmers/misc/MiscIsPruneProgrammer.ts +97 -97
  309. package/src/programmers/misc/MiscLiteralsProgrammer.ts +80 -80
  310. package/src/programmers/misc/MiscPruneProgrammer.ts +728 -728
  311. package/src/programmers/misc/MiscValidateCloneProgrammer.ts +111 -111
  312. package/src/programmers/misc/MiscValidatePruneProgrammer.ts +113 -113
  313. package/src/programmers/notations/NotationAssertGeneralProgrammer.ts +101 -101
  314. package/src/programmers/notations/NotationGeneralProgrammer.ts +984 -984
  315. package/src/programmers/notations/NotationIsGeneralProgrammer.ts +105 -105
  316. package/src/programmers/notations/NotationValidateGeneralProgrammer.ts +119 -119
  317. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +98 -98
  318. package/src/programmers/protobuf/ProtobufAssertEncodeProgrammer.ts +102 -102
  319. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +654 -654
  320. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +945 -945
  321. package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +109 -109
  322. package/src/programmers/protobuf/ProtobufIsEncodeProgrammer.ts +98 -98
  323. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +179 -179
  324. package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +92 -92
  325. package/src/programmers/protobuf/ProtobufValidateEncodeProgrammer.ts +119 -119
  326. package/src/protobuf.ts +868 -868
  327. package/src/reflect.ts +57 -57
  328. package/src/schemas/json/IJsonApplication.ts +73 -73
  329. package/src/schemas/json/IJsonSchemaCollection.ts +29 -29
  330. package/src/schemas/json/__IJsonApplication.ts +63 -63
  331. package/src/schemas/metadata/IJsDocTagInfo.ts +10 -10
  332. package/src/schemas/metadata/IMetadata.ts +35 -35
  333. package/src/schemas/metadata/IMetadataAlias.ts +6 -6
  334. package/src/schemas/metadata/IMetadataAliasType.ts +12 -12
  335. package/src/schemas/metadata/IMetadataApplication.ts +7 -7
  336. package/src/schemas/metadata/IMetadataArray.ts +6 -6
  337. package/src/schemas/metadata/IMetadataArrayType.ts +10 -10
  338. package/src/schemas/metadata/IMetadataAtomic.ts +6 -6
  339. package/src/schemas/metadata/IMetadataComponents.ts +11 -11
  340. package/src/schemas/metadata/IMetadataConstant.ts +18 -18
  341. package/src/schemas/metadata/IMetadataConstantValue.ts +11 -11
  342. package/src/schemas/metadata/IMetadataDictionary.ts +11 -11
  343. package/src/schemas/metadata/IMetadataEscaped.ts +6 -6
  344. package/src/schemas/metadata/IMetadataFunction.ts +8 -8
  345. package/src/schemas/metadata/IMetadataMap.ts +8 -8
  346. package/src/schemas/metadata/IMetadataNative.ts +6 -6
  347. package/src/schemas/metadata/IMetadataObject.ts +6 -6
  348. package/src/schemas/metadata/IMetadataObjectType.ts +13 -13
  349. package/src/schemas/metadata/IMetadataParameter.ts +9 -9
  350. package/src/schemas/metadata/IMetadataProperty.ts +9 -9
  351. package/src/schemas/metadata/IMetadataSet.ts +7 -7
  352. package/src/schemas/metadata/IMetadataTemplate.ts +7 -7
  353. package/src/schemas/metadata/IMetadataTuple.ts +6 -6
  354. package/src/schemas/metadata/IMetadataTupleType.ts +10 -10
  355. package/src/schemas/metadata/IMetadataTypeTag.ts +16 -16
  356. package/src/schemas/metadata/Metadata.ts +687 -687
  357. package/src/schemas/metadata/MetadataAlias.ts +46 -46
  358. package/src/schemas/metadata/MetadataAliasType.ts +63 -63
  359. package/src/schemas/metadata/MetadataApplication.ts +44 -44
  360. package/src/schemas/metadata/MetadataArray.ts +49 -49
  361. package/src/schemas/metadata/MetadataArrayType.ts +57 -57
  362. package/src/schemas/metadata/MetadataAtomic.ts +87 -87
  363. package/src/schemas/metadata/MetadataComponents.ts +98 -98
  364. package/src/schemas/metadata/MetadataConstant.ts +34 -34
  365. package/src/schemas/metadata/MetadataConstantValue.ts +62 -62
  366. package/src/schemas/metadata/MetadataEscaped.ts +51 -51
  367. package/src/schemas/metadata/MetadataFunction.ts +49 -49
  368. package/src/schemas/metadata/MetadataMap.ts +48 -48
  369. package/src/schemas/metadata/MetadataNative.ts +44 -44
  370. package/src/schemas/metadata/MetadataObject.ts +48 -48
  371. package/src/schemas/metadata/MetadataObjectType.ts +149 -149
  372. package/src/schemas/metadata/MetadataParameter.ts +54 -54
  373. package/src/schemas/metadata/MetadataProperty.ts +59 -59
  374. package/src/schemas/metadata/MetadataSet.ts +45 -45
  375. package/src/schemas/metadata/MetadataTemplate.ts +80 -80
  376. package/src/schemas/metadata/MetadataTuple.ts +32 -32
  377. package/src/schemas/metadata/MetadataTupleType.ts +67 -67
  378. package/src/schemas/protobuf/IProtobufProperty.ts +6 -6
  379. package/src/schemas/protobuf/IProtobufPropertyType.ts +37 -37
  380. package/src/schemas/protobuf/IProtobufSchema.ts +50 -50
  381. package/src/tags/Constant.ts +15 -15
  382. package/src/tags/ContentMediaType.ts +10 -10
  383. package/src/tags/Default.ts +22 -22
  384. package/src/tags/Example.ts +24 -24
  385. package/src/tags/Examples.ts +16 -16
  386. package/src/tags/ExclusiveMaximum.ts +23 -25
  387. package/src/tags/ExclusiveMinimum.ts +23 -25
  388. package/src/tags/Format.ts +50 -50
  389. package/src/tags/JsonSchemaPlugin.ts +8 -8
  390. package/src/tags/MaxItems.ts +12 -12
  391. package/src/tags/MaxLength.ts +12 -12
  392. package/src/tags/Maximum.ts +19 -19
  393. package/src/tags/MinItems.ts +12 -12
  394. package/src/tags/MinLength.ts +12 -12
  395. package/src/tags/Minimum.ts +19 -19
  396. package/src/tags/MultipleOf.ts +21 -21
  397. package/src/tags/Pattern.ts +31 -31
  398. package/src/tags/Sequence.ts +10 -10
  399. package/src/tags/TagBase.ts +82 -82
  400. package/src/tags/Type.ts +32 -32
  401. package/src/tags/UniqueItems.ts +14 -14
  402. package/src/tags/index.ts +21 -21
  403. package/src/tags/internal/FormatCheatSheet.ts +73 -73
  404. package/src/transform.ts +35 -35
  405. package/src/transformers/CallExpressionTransformer.ts +546 -546
  406. package/src/transformers/FileTransformer.ts +136 -136
  407. package/src/transformers/IProgrammerProps.ts +11 -11
  408. package/src/transformers/ITransformOptions.ts +62 -62
  409. package/src/transformers/ITransformProps.ts +9 -9
  410. package/src/transformers/ITypiaContext.ts +18 -18
  411. package/src/transformers/ImportTransformer.ts +81 -81
  412. package/src/transformers/NodeTransformer.ts +17 -17
  413. package/src/transformers/TransformerError.ts +60 -60
  414. package/src/transformers/features/AssertTransformer.ts +24 -24
  415. package/src/transformers/features/CreateAssertTransformer.ts +24 -24
  416. package/src/transformers/features/CreateIsTransformer.ts +18 -18
  417. package/src/transformers/features/CreateRandomTransformer.ts +43 -43
  418. package/src/transformers/features/CreateValidateTransformer.ts +18 -18
  419. package/src/transformers/features/IsTransformer.ts +18 -18
  420. package/src/transformers/features/RandomTransformer.ts +41 -41
  421. package/src/transformers/features/ValidateTransformer.ts +18 -18
  422. package/src/transformers/features/functional/FunctionalGenericTransformer.ts +57 -57
  423. package/src/transformers/features/http/CreateHttpAssertFormDataTransformer.ts +13 -13
  424. package/src/transformers/features/http/CreateHttpAssertHeadersTransformer.ts +13 -13
  425. package/src/transformers/features/http/CreateHttpAssertQueryTransformer.ts +13 -13
  426. package/src/transformers/features/http/CreateHttpFormDataTransformer.ts +13 -13
  427. package/src/transformers/features/http/CreateHttpHeadersTransformer.ts +13 -13
  428. package/src/transformers/features/http/CreateHttpIsFormDataTransformer.ts +13 -13
  429. package/src/transformers/features/http/CreateHttpIsHeadersTransformer.ts +13 -13
  430. package/src/transformers/features/http/CreateHttpIsQueryTransformer.ts +13 -13
  431. package/src/transformers/features/http/CreateHttpParameterTransformer.ts +13 -13
  432. package/src/transformers/features/http/CreateHttpQueryTransformer.ts +13 -13
  433. package/src/transformers/features/http/CreateHttpValidateFormDataTransformer.ts +13 -13
  434. package/src/transformers/features/http/CreateHttpValidateHeadersTransformer.ts +13 -13
  435. package/src/transformers/features/http/CreateHttpValidateQueryTransformer.ts +13 -13
  436. package/src/transformers/features/http/HttpAssertFormDataTransformer.ts +13 -13
  437. package/src/transformers/features/http/HttpAssertHeadersTransformer.ts +13 -13
  438. package/src/transformers/features/http/HttpAssertQueryTransformer.ts +13 -13
  439. package/src/transformers/features/http/HttpFormDataTransformer.ts +13 -13
  440. package/src/transformers/features/http/HttpHeadersTransformer.ts +13 -13
  441. package/src/transformers/features/http/HttpIsFormDataTransformer.ts +13 -13
  442. package/src/transformers/features/http/HttpIsHeadersTransformer.ts +13 -13
  443. package/src/transformers/features/http/HttpIsQueryTransformer.ts +13 -13
  444. package/src/transformers/features/http/HttpParameterTransformer.ts +13 -13
  445. package/src/transformers/features/http/HttpQueryTransformer.ts +13 -13
  446. package/src/transformers/features/http/HttpValidateFormDataTransformer.ts +13 -13
  447. package/src/transformers/features/http/HttpValidateHeadersTransformer.ts +13 -13
  448. package/src/transformers/features/http/HttpValidateQueryTransformer.ts +13 -13
  449. package/src/transformers/features/json/JsonApplicationTransformer.ts +105 -105
  450. package/src/transformers/features/json/JsonAssertParseTransformer.ts +13 -13
  451. package/src/transformers/features/json/JsonAssertStringifyTransformer.ts +13 -13
  452. package/src/transformers/features/json/JsonCreateAssertParseTransformer.ts +13 -13
  453. package/src/transformers/features/json/JsonCreateAssertStringifyTransformer.ts +13 -13
  454. package/src/transformers/features/json/JsonCreateIsParseTransformer.ts +13 -13
  455. package/src/transformers/features/json/JsonCreateIsStringifyTransformer.ts +13 -13
  456. package/src/transformers/features/json/JsonCreateStringifyTransformer.ts +13 -13
  457. package/src/transformers/features/json/JsonCreateValidateParseTransformer.ts +13 -13
  458. package/src/transformers/features/json/JsonCreateValidateStringifyProgrammer.ts +13 -13
  459. package/src/transformers/features/json/JsonIsParseTransformer.ts +13 -13
  460. package/src/transformers/features/json/JsonIsStringifyTransformer.ts +13 -13
  461. package/src/transformers/features/json/JsonSchemasTransformer.ts +145 -145
  462. package/src/transformers/features/json/JsonStringifyTransformer.ts +13 -13
  463. package/src/transformers/features/json/JsonValidateParseTransformer.ts +13 -13
  464. package/src/transformers/features/json/JsonValidateStringifyTransformer.ts +13 -13
  465. package/src/transformers/features/llm/LlmApplicationTransformer.ts +128 -128
  466. package/src/transformers/features/llm/LlmParametersTransformer.ts +102 -102
  467. package/src/transformers/features/llm/LlmSchemaTransformer.ts +170 -170
  468. package/src/transformers/features/misc/MiscAssertCloneTransformer.ts +13 -13
  469. package/src/transformers/features/misc/MiscAssertPruneTransformer.ts +13 -13
  470. package/src/transformers/features/misc/MiscCloneTransformer.ts +13 -13
  471. package/src/transformers/features/misc/MiscCreateAssertCloneTransformer.ts +13 -13
  472. package/src/transformers/features/misc/MiscCreateAssertPruneTransformer.ts +13 -13
  473. package/src/transformers/features/misc/MiscCreateCloneTransformer.ts +13 -13
  474. package/src/transformers/features/misc/MiscCreateIsCloneTransformer.ts +13 -13
  475. package/src/transformers/features/misc/MiscCreateIsPruneTransformer.ts +13 -13
  476. package/src/transformers/features/misc/MiscCreatePruneTransformer.ts +13 -13
  477. package/src/transformers/features/misc/MiscCreateValidateCloneTransformer.ts +13 -13
  478. package/src/transformers/features/misc/MiscCreateValidatePruneTransformer.ts +13 -13
  479. package/src/transformers/features/misc/MiscIsCloneTransformer.ts +13 -13
  480. package/src/transformers/features/misc/MiscIsPruneTransformer.ts +13 -13
  481. package/src/transformers/features/misc/MiscLiteralsTransformer.ts +35 -35
  482. package/src/transformers/features/misc/MiscPruneTransformer.ts +13 -13
  483. package/src/transformers/features/misc/MiscValidateCloneTransformer.ts +13 -13
  484. package/src/transformers/features/misc/MiscValidatePruneTransformer.ts +13 -13
  485. package/src/transformers/features/notations/NotationAssertGeneralTransformer.ts +20 -20
  486. package/src/transformers/features/notations/NotationCreateAssertGeneralTransformer.ts +20 -20
  487. package/src/transformers/features/notations/NotationCreateGeneralTransformer.ts +20 -20
  488. package/src/transformers/features/notations/NotationCreateIsGeneralTransformer.ts +20 -20
  489. package/src/transformers/features/notations/NotationCreateValidateGeneralTransformer.ts +20 -20
  490. package/src/transformers/features/notations/NotationGeneralTransformer.ts +18 -18
  491. package/src/transformers/features/notations/NotationIsGeneralTransformer.ts +20 -20
  492. package/src/transformers/features/notations/NotationValidateGeneralTransformer.ts +20 -20
  493. package/src/transformers/features/protobuf/ProtobufAssertDecodeTransformer.ts +13 -13
  494. package/src/transformers/features/protobuf/ProtobufAssertEncodeTransformer.ts +13 -13
  495. package/src/transformers/features/protobuf/ProtobufCreateAssertDecodeTransformer.ts +13 -13
  496. package/src/transformers/features/protobuf/ProtobufCreateAssertEncodeTransformer.ts +13 -13
  497. package/src/transformers/features/protobuf/ProtobufCreateDecodeTransformer.ts +13 -13
  498. package/src/transformers/features/protobuf/ProtobufCreateEncodeTransformer.ts +13 -13
  499. package/src/transformers/features/protobuf/ProtobufCreateIsDecodeTransformer.ts +13 -13
  500. package/src/transformers/features/protobuf/ProtobufCreateIsEncodeTransformer.ts +13 -13
  501. package/src/transformers/features/protobuf/ProtobufCreateValidateDecodeTransformer.ts +13 -13
  502. package/src/transformers/features/protobuf/ProtobufCreateValidateEncodeTransformer.ts +13 -13
  503. package/src/transformers/features/protobuf/ProtobufDecodeTransformer.ts +13 -13
  504. package/src/transformers/features/protobuf/ProtobufEncodeTransformer.ts +13 -13
  505. package/src/transformers/features/protobuf/ProtobufIsDecodeTransformer.ts +13 -13
  506. package/src/transformers/features/protobuf/ProtobufIsEncodeTransformer.ts +13 -13
  507. package/src/transformers/features/protobuf/ProtobufMessageTransformer.ts +35 -35
  508. package/src/transformers/features/protobuf/ProtobufValidateDecodeTransformer.ts +13 -13
  509. package/src/transformers/features/protobuf/ProtobufValidateEncodeTransformer.ts +13 -13
  510. package/src/transformers/features/reflect/ReflectMetadataTransformer.ts +69 -69
  511. package/src/transformers/features/reflect/ReflectNameTransformer.ts +82 -82
  512. package/src/transformers/internal/GenericTransformer.ts +101 -101
  513. package/src/typings/Atomic.ts +13 -13
  514. package/src/typings/ClassProperties.ts +5 -5
  515. package/src/typings/Customizable.ts +5 -5
  516. package/src/typings/Equal.ts +18 -18
  517. package/src/typings/IsTuple.ts +9 -9
  518. package/src/typings/NativeClass.ts +23 -23
  519. package/src/typings/OmitNever.ts +3 -3
  520. package/src/typings/ProtobufAtomic.ts +19 -19
  521. package/src/typings/SpecialFields.ts +3 -3
  522. package/src/typings/ValidationPipe.ts +9 -9
  523. package/src/typings/ValueOf.ts +20 -20
  524. package/src/typings/Writable.ts +11 -11
  525. package/src/utils/ArrayUtil.ts +41 -41
  526. package/src/utils/Escaper.ts +50 -50
  527. package/src/utils/MapUtil.ts +14 -14
  528. package/src/utils/NamingConvention.ts +94 -94
  529. package/src/utils/PatternUtil.ts +29 -29
  530. package/src/utils/ProtobufNameEncoder.ts +32 -32
  531. package/src/utils/Singleton.ts +16 -16
  532. package/src/utils/StringUtil.ts +16 -16
  533. package/lib/schemas/llm/ILlmApplicationOfValidate.d.mts +0 -5
  534. package/lib/schemas/llm/ILlmApplicationOfValidate.d.ts +0 -5
  535. package/lib/schemas/llm/ILlmApplicationOfValidate.js +0 -3
  536. package/lib/schemas/llm/ILlmApplicationOfValidate.js.map +0 -1
  537. package/lib/schemas/llm/ILlmApplicationOfValidate.mjs +0 -2
  538. package/lib/schemas/llm/ILlmApplicationOfValidate.mjs.map +0 -1
  539. package/lib/schemas/llm/ILlmFunctionOfValidate.d.mts +0 -5
  540. package/lib/schemas/llm/ILlmFunctionOfValidate.d.ts +0 -5
  541. package/lib/schemas/llm/ILlmFunctionOfValidate.js +0 -3
  542. package/lib/schemas/llm/ILlmFunctionOfValidate.js.map +0 -1
  543. package/lib/schemas/llm/ILlmFunctionOfValidate.mjs +0 -2
  544. package/lib/schemas/llm/ILlmFunctionOfValidate.mjs.map +0 -1
  545. package/src/schemas/llm/ILlmApplicationOfValidate.ts +0 -6
  546. package/src/schemas/llm/ILlmFunctionOfValidate.ts +0 -6
@@ -1,136 +1,136 @@
1
- import ts from "typescript";
2
-
3
- import { ImportProgrammer } from "../programmers/ImportProgrammer";
4
-
5
- import { Singleton } from "../utils/Singleton";
6
-
7
- import { ITypiaContext } from "./ITypiaContext";
8
- import { NodeTransformer } from "./NodeTransformer";
9
- import { TransformerError } from "./TransformerError";
10
-
11
- export namespace FileTransformer {
12
- export const transform =
13
- (environments: Omit<ITypiaContext, "transformer" | "importer">) =>
14
- (transformer: ts.TransformationContext) =>
15
- (file: ts.SourceFile): ts.SourceFile => {
16
- if (file.isDeclarationFile) return file;
17
-
18
- const importer: ImportProgrammer = new ImportProgrammer({
19
- internalPrefix: "typia_transform_",
20
- });
21
- const context: ITypiaContext = {
22
- ...environments,
23
- transformer,
24
- importer,
25
- };
26
- checkJsDocParsingMode.get(context, file);
27
-
28
- file = ts.visitEachChild(
29
- file,
30
- (node) =>
31
- iterate_node({
32
- context,
33
- node,
34
- }),
35
- transformer,
36
- );
37
- const index: number = find_import_injection_index(file);
38
- return ts.factory.updateSourceFile(
39
- file,
40
- [
41
- ...file.statements.slice(0, index),
42
- ...importer.toStatements(),
43
- ...file.statements.slice(index),
44
- ],
45
- false,
46
- file.referencedFiles,
47
- file.typeReferenceDirectives,
48
- file.hasNoDefaultLib,
49
- file.libReferenceDirectives,
50
- );
51
- };
52
-
53
- const iterate_node = (props: {
54
- context: ITypiaContext;
55
- node: ts.Node;
56
- }): ts.Node =>
57
- ts.visitEachChild(
58
- try_transform_node(props) ?? props.node,
59
- (node) =>
60
- iterate_node({
61
- context: props.context,
62
- node,
63
- }),
64
- props.context.transformer,
65
- );
66
-
67
- const try_transform_node = (props: {
68
- context: ITypiaContext;
69
- node: ts.Node;
70
- }): ts.Node | null => {
71
- try {
72
- return NodeTransformer.transform(props);
73
- } catch (exp) {
74
- // ONLY ACCEPT TRANSFORMER-ERROR
75
- if (!isTransformerError(exp)) throw exp;
76
-
77
- // REPORT DIAGNOSTIC
78
- const diagnostic = ts.createDiagnosticForNode(props.node, {
79
- key: exp.code,
80
- category: ts.DiagnosticCategory.Error,
81
- message: exp.message,
82
- code: `(${exp.code})` as any,
83
- });
84
- props.context.extras.addDiagnostic(diagnostic);
85
- return null;
86
- }
87
- };
88
-
89
- const find_import_injection_index = (file: ts.SourceFile): number => {
90
- let i: number = 0;
91
- for (; i < file.statements.length; ++i) {
92
- const stmt: ts.Statement = file.statements[i]!;
93
- if (
94
- ts.isExpressionStatement(stmt) &&
95
- ts.isStringLiteralLike(stmt.expression) &&
96
- stmt.expression.text.startsWith("use ")
97
- )
98
- continue;
99
- break;
100
- }
101
- return i;
102
- };
103
- }
104
-
105
- const isTransformerError = (error: any): error is TransformerError =>
106
- typeof error === "object" &&
107
- error !== null &&
108
- error.constructor.name === "TransformerError" &&
109
- typeof error.code === "string" &&
110
- typeof error.message === "string";
111
-
112
- const checkJsDocParsingMode = new Singleton(
113
- (context: ITypiaContext, file: ts.SourceFile) => {
114
- if (
115
- typeof file.jsDocParsingMode === "number" &&
116
- file.jsDocParsingMode !== 0
117
- ) {
118
- context.extras.addDiagnostic(
119
- ts.createDiagnosticForNode(file, {
120
- code: `(typia setup)` as any,
121
- key: "jsDocParsingMode",
122
- category: ts.DiagnosticCategory.Warning,
123
- message: [
124
- `Run "npx typia setup" or "npx typia patch" command again.`,
125
- ``,
126
- `Since TypeScript v5.3 update, "tsc" no more parses JSDoc comments. Therefore, "typia" also cannot utilize those JSDoc comments too, and it damages on some features of "typia" like "comment tags" or "JSON schema" generator.`,
127
- ``,
128
- `To solve this problem, run "npx typia setup" or "npx typia patch" command to hack the TypeScript compiler to revive the JSDoc parsing feature.`,
129
- ``,
130
- ` - reference: https://github.com/microsoft/TypeScript/pull/55739`,
131
- ].join("\n"),
132
- }),
133
- );
134
- }
135
- },
136
- );
1
+ import ts from "typescript";
2
+
3
+ import { ImportProgrammer } from "../programmers/ImportProgrammer";
4
+
5
+ import { Singleton } from "../utils/Singleton";
6
+
7
+ import { ITypiaContext } from "./ITypiaContext";
8
+ import { NodeTransformer } from "./NodeTransformer";
9
+ import { TransformerError } from "./TransformerError";
10
+
11
+ export namespace FileTransformer {
12
+ export const transform =
13
+ (environments: Omit<ITypiaContext, "transformer" | "importer">) =>
14
+ (transformer: ts.TransformationContext) =>
15
+ (file: ts.SourceFile): ts.SourceFile => {
16
+ if (file.isDeclarationFile) return file;
17
+
18
+ const importer: ImportProgrammer = new ImportProgrammer({
19
+ internalPrefix: "typia_transform_",
20
+ });
21
+ const context: ITypiaContext = {
22
+ ...environments,
23
+ transformer,
24
+ importer,
25
+ };
26
+ checkJsDocParsingMode.get(context, file);
27
+
28
+ file = ts.visitEachChild(
29
+ file,
30
+ (node) =>
31
+ iterate_node({
32
+ context,
33
+ node,
34
+ }),
35
+ transformer,
36
+ );
37
+ const index: number = find_import_injection_index(file);
38
+ return ts.factory.updateSourceFile(
39
+ file,
40
+ [
41
+ ...file.statements.slice(0, index),
42
+ ...importer.toStatements(),
43
+ ...file.statements.slice(index),
44
+ ],
45
+ false,
46
+ file.referencedFiles,
47
+ file.typeReferenceDirectives,
48
+ file.hasNoDefaultLib,
49
+ file.libReferenceDirectives,
50
+ );
51
+ };
52
+
53
+ const iterate_node = (props: {
54
+ context: ITypiaContext;
55
+ node: ts.Node;
56
+ }): ts.Node =>
57
+ ts.visitEachChild(
58
+ try_transform_node(props) ?? props.node,
59
+ (node) =>
60
+ iterate_node({
61
+ context: props.context,
62
+ node,
63
+ }),
64
+ props.context.transformer,
65
+ );
66
+
67
+ const try_transform_node = (props: {
68
+ context: ITypiaContext;
69
+ node: ts.Node;
70
+ }): ts.Node | null => {
71
+ try {
72
+ return NodeTransformer.transform(props);
73
+ } catch (exp) {
74
+ // ONLY ACCEPT TRANSFORMER-ERROR
75
+ if (!isTransformerError(exp)) throw exp;
76
+
77
+ // REPORT DIAGNOSTIC
78
+ const diagnostic = ts.createDiagnosticForNode(props.node, {
79
+ key: exp.code,
80
+ category: ts.DiagnosticCategory.Error,
81
+ message: exp.message,
82
+ code: `(${exp.code})` as any,
83
+ });
84
+ props.context.extras.addDiagnostic(diagnostic);
85
+ return null;
86
+ }
87
+ };
88
+
89
+ const find_import_injection_index = (file: ts.SourceFile): number => {
90
+ let i: number = 0;
91
+ for (; i < file.statements.length; ++i) {
92
+ const stmt: ts.Statement = file.statements[i]!;
93
+ if (
94
+ ts.isExpressionStatement(stmt) &&
95
+ ts.isStringLiteralLike(stmt.expression) &&
96
+ stmt.expression.text.startsWith("use ")
97
+ )
98
+ continue;
99
+ break;
100
+ }
101
+ return i;
102
+ };
103
+ }
104
+
105
+ const isTransformerError = (error: any): error is TransformerError =>
106
+ typeof error === "object" &&
107
+ error !== null &&
108
+ error.constructor.name === "TransformerError" &&
109
+ typeof error.code === "string" &&
110
+ typeof error.message === "string";
111
+
112
+ const checkJsDocParsingMode = new Singleton(
113
+ (context: ITypiaContext, file: ts.SourceFile) => {
114
+ if (
115
+ typeof file.jsDocParsingMode === "number" &&
116
+ file.jsDocParsingMode !== 0
117
+ ) {
118
+ context.extras.addDiagnostic(
119
+ ts.createDiagnosticForNode(file, {
120
+ code: `(typia setup)` as any,
121
+ key: "jsDocParsingMode",
122
+ category: ts.DiagnosticCategory.Warning,
123
+ message: [
124
+ `Run "npx typia setup" or "npx typia patch" command again.`,
125
+ ``,
126
+ `Since TypeScript v5.3 update, "tsc" no more parses JSDoc comments. Therefore, "typia" also cannot utilize those JSDoc comments too, and it damages on some features of "typia" like "comment tags" or "JSON schema" generator.`,
127
+ ``,
128
+ `To solve this problem, run "npx typia setup" or "npx typia patch" command to hack the TypeScript compiler to revive the JSDoc parsing feature.`,
129
+ ``,
130
+ ` - reference: https://github.com/microsoft/TypeScript/pull/55739`,
131
+ ].join("\n"),
132
+ }),
133
+ );
134
+ }
135
+ },
136
+ );
@@ -1,11 +1,11 @@
1
- import ts from "typescript";
2
-
3
- import { ITypiaContext } from "./ITypiaContext";
4
-
5
- export interface IProgrammerProps {
6
- context: ITypiaContext;
7
- modulo: ts.LeftHandSideExpression;
8
- type: ts.Type;
9
- name: string | undefined;
10
- init?: ts.Expression | undefined;
11
- }
1
+ import ts from "typescript";
2
+
3
+ import { ITypiaContext } from "./ITypiaContext";
4
+
5
+ export interface IProgrammerProps {
6
+ context: ITypiaContext;
7
+ modulo: ts.LeftHandSideExpression;
8
+ type: ts.Type;
9
+ name: string | undefined;
10
+ init?: ts.Expression | undefined;
11
+ }
@@ -1,62 +1,62 @@
1
- export interface ITransformOptions {
2
- /**
3
- * Whether to validate finite number or not.
4
- *
5
- * If configured true, number typed values would be validated by Number.isNaN().
6
- *
7
- * However, whatever you configure, it would be ignored when marshaling or parsing.
8
- *
9
- * - when marshaling, always be true
10
- * - assertStringify()
11
- * - validateEncode()
12
- * - when parsing, always be false
13
- * - assertParse()
14
- * - isDecode()
15
- *
16
- * @default false
17
- */
18
- finite?: undefined | boolean;
19
-
20
- /**
21
- * Whether to validate finite number or not.
22
- *
23
- * If configured true, number typed values would be validated by Number.isFinite().
24
- *
25
- * However, whatever you configure, it can be ignored in below case.
26
- *
27
- * - when `finite` option is true, this option would be ignored
28
- * - when marshaling, always be true
29
- * - assertStringify()
30
- * - validateEncode()
31
- * - when parsing, always be false
32
- * - assertParse()
33
- * - isDecode()
34
- *
35
- * @default false
36
- */
37
- numeric?: undefined | boolean;
38
-
39
- /**
40
- * Whether to validate functional type or not.
41
- *
42
- * However, whatever you configure, it becomes false when marshaling or parsing.
43
- *
44
- * @default false
45
- */
46
- functional?: undefined | boolean;
47
-
48
- /**
49
- * Whether to check undefined value or not.
50
- *
51
- * JavaScript can assign `undefined` value to a specific property and it is an
52
- * issue when validating without allowing superfluous properties. Should undefined
53
- * value assigned superfluous property be allowed or not?
54
- *
55
- * Note that, this option only works on {@link equals} function. Other function
56
- * like {@link assertEquals} or {@link validateEquals} would ignore this option
57
- * value and always allow the `undefined` value.
58
- *
59
- * @default true
60
- */
61
- undefined?: undefined | boolean;
62
- }
1
+ export interface ITransformOptions {
2
+ /**
3
+ * Whether to validate finite number or not.
4
+ *
5
+ * If configured true, number typed values would be validated by Number.isNaN().
6
+ *
7
+ * However, whatever you configure, it would be ignored when marshaling or parsing.
8
+ *
9
+ * - when marshaling, always be true
10
+ * - assertStringify()
11
+ * - validateEncode()
12
+ * - when parsing, always be false
13
+ * - assertParse()
14
+ * - isDecode()
15
+ *
16
+ * @default false
17
+ */
18
+ finite?: undefined | boolean;
19
+
20
+ /**
21
+ * Whether to validate finite number or not.
22
+ *
23
+ * If configured true, number typed values would be validated by Number.isFinite().
24
+ *
25
+ * However, whatever you configure, it can be ignored in below case.
26
+ *
27
+ * - when `finite` option is true, this option would be ignored
28
+ * - when marshaling, always be true
29
+ * - assertStringify()
30
+ * - validateEncode()
31
+ * - when parsing, always be false
32
+ * - assertParse()
33
+ * - isDecode()
34
+ *
35
+ * @default false
36
+ */
37
+ numeric?: undefined | boolean;
38
+
39
+ /**
40
+ * Whether to validate functional type or not.
41
+ *
42
+ * However, whatever you configure, it becomes false when marshaling or parsing.
43
+ *
44
+ * @default false
45
+ */
46
+ functional?: undefined | boolean;
47
+
48
+ /**
49
+ * Whether to check undefined value or not.
50
+ *
51
+ * JavaScript can assign `undefined` value to a specific property and it is an
52
+ * issue when validating without allowing superfluous properties. Should undefined
53
+ * value assigned superfluous property be allowed or not?
54
+ *
55
+ * Note that, this option only works on {@link equals} function. Other function
56
+ * like {@link assertEquals} or {@link validateEquals} would ignore this option
57
+ * value and always allow the `undefined` value.
58
+ *
59
+ * @default true
60
+ */
61
+ undefined?: undefined | boolean;
62
+ }
@@ -1,9 +1,9 @@
1
- import ts from "typescript";
2
-
3
- import { ITypiaContext } from "./ITypiaContext";
4
-
5
- export interface ITransformProps {
6
- context: ITypiaContext;
7
- modulo: ts.LeftHandSideExpression;
8
- expression: ts.CallExpression;
9
- }
1
+ import ts from "typescript";
2
+
3
+ import { ITypiaContext } from "./ITypiaContext";
4
+
5
+ export interface ITransformProps {
6
+ context: ITypiaContext;
7
+ modulo: ts.LeftHandSideExpression;
8
+ expression: ts.CallExpression;
9
+ }
@@ -1,18 +1,18 @@
1
- import ts from "typescript";
2
-
3
- import { ImportProgrammer } from "../programmers/ImportProgrammer";
4
-
5
- import { ITransformOptions } from "./ITransformOptions";
6
-
7
- export interface ITypiaContext {
8
- program: ts.Program;
9
- compilerOptions: ts.CompilerOptions;
10
- checker: ts.TypeChecker;
11
- printer: ts.Printer;
12
- options: ITransformOptions;
13
- transformer: ts.TransformationContext;
14
- importer: ImportProgrammer;
15
- extras: {
16
- addDiagnostic: (diag: ts.Diagnostic) => number;
17
- };
18
- }
1
+ import ts from "typescript";
2
+
3
+ import { ImportProgrammer } from "../programmers/ImportProgrammer";
4
+
5
+ import { ITransformOptions } from "./ITransformOptions";
6
+
7
+ export interface ITypiaContext {
8
+ program: ts.Program;
9
+ compilerOptions: ts.CompilerOptions;
10
+ checker: ts.TypeChecker;
11
+ printer: ts.Printer;
12
+ options: ITransformOptions;
13
+ transformer: ts.TransformationContext;
14
+ importer: ImportProgrammer;
15
+ extras: {
16
+ addDiagnostic: (diag: ts.Diagnostic) => number;
17
+ };
18
+ }
@@ -1,81 +1,81 @@
1
- import path from "path";
2
- import ts from "typescript";
3
-
4
- export namespace ImportTransformer {
5
- export const transform =
6
- (props: { from: string; to: string }) =>
7
- (context: ts.TransformationContext) =>
8
- (file: ts.SourceFile) =>
9
- transform_file({
10
- top: props.from,
11
- to: props.to,
12
- context,
13
- file,
14
- });
15
-
16
- const transform_file = (props: {
17
- top: string;
18
- to: string;
19
- context: ts.TransformationContext;
20
- file: ts.SourceFile;
21
- }): ts.SourceFile => {
22
- if (props.file.isDeclarationFile) return props.file;
23
-
24
- const from: string = get_directory_path(
25
- path.resolve(props.file.getSourceFile().fileName),
26
- );
27
- const to: string = from.replace(props.top, props.to);
28
-
29
- return ts.visitEachChild(
30
- props.file,
31
- (node) =>
32
- transform_node({
33
- top: props.top,
34
- from,
35
- to,
36
- node,
37
- }),
38
- props.context,
39
- );
40
- };
41
-
42
- const transform_node = (props: {
43
- top: string;
44
- from: string;
45
- to: string;
46
- node: ts.Node;
47
- }) => {
48
- if (
49
- !ts.isImportDeclaration(props.node) ||
50
- !ts.isStringLiteral(props.node.moduleSpecifier)
51
- )
52
- return props.node;
53
-
54
- const text: string = props.node.moduleSpecifier.text;
55
- if (text[0] !== ".") return props.node;
56
-
57
- const location: string = path.resolve(props.from, text);
58
- if (location.indexOf(props.top) === 0) return props.node;
59
-
60
- const replaced: string = (() => {
61
- const simple: string = path
62
- .relative(props.to, location)
63
- .split(path.sep)
64
- .join("/");
65
- return simple[0] === "." ? simple : `./${simple}`;
66
- })();
67
-
68
- return ts.factory.createImportDeclaration(
69
- undefined,
70
- props.node.importClause,
71
- ts.factory.createStringLiteral(replaced),
72
- props.node.assertClause,
73
- );
74
- };
75
- }
76
-
77
- const get_directory_path = (file: string): string => {
78
- const split: string[] = path.resolve(file).split(path.sep);
79
- split.pop();
80
- return path.resolve(split.join(path.sep));
81
- };
1
+ import path from "path";
2
+ import ts from "typescript";
3
+
4
+ export namespace ImportTransformer {
5
+ export const transform =
6
+ (props: { from: string; to: string }) =>
7
+ (context: ts.TransformationContext) =>
8
+ (file: ts.SourceFile) =>
9
+ transform_file({
10
+ top: props.from,
11
+ to: props.to,
12
+ context,
13
+ file,
14
+ });
15
+
16
+ const transform_file = (props: {
17
+ top: string;
18
+ to: string;
19
+ context: ts.TransformationContext;
20
+ file: ts.SourceFile;
21
+ }): ts.SourceFile => {
22
+ if (props.file.isDeclarationFile) return props.file;
23
+
24
+ const from: string = get_directory_path(
25
+ path.resolve(props.file.getSourceFile().fileName),
26
+ );
27
+ const to: string = from.replace(props.top, props.to);
28
+
29
+ return ts.visitEachChild(
30
+ props.file,
31
+ (node) =>
32
+ transform_node({
33
+ top: props.top,
34
+ from,
35
+ to,
36
+ node,
37
+ }),
38
+ props.context,
39
+ );
40
+ };
41
+
42
+ const transform_node = (props: {
43
+ top: string;
44
+ from: string;
45
+ to: string;
46
+ node: ts.Node;
47
+ }) => {
48
+ if (
49
+ !ts.isImportDeclaration(props.node) ||
50
+ !ts.isStringLiteral(props.node.moduleSpecifier)
51
+ )
52
+ return props.node;
53
+
54
+ const text: string = props.node.moduleSpecifier.text;
55
+ if (text[0] !== ".") return props.node;
56
+
57
+ const location: string = path.resolve(props.from, text);
58
+ if (location.indexOf(props.top) === 0) return props.node;
59
+
60
+ const replaced: string = (() => {
61
+ const simple: string = path
62
+ .relative(props.to, location)
63
+ .split(path.sep)
64
+ .join("/");
65
+ return simple[0] === "." ? simple : `./${simple}`;
66
+ })();
67
+
68
+ return ts.factory.createImportDeclaration(
69
+ undefined,
70
+ props.node.importClause,
71
+ ts.factory.createStringLiteral(replaced),
72
+ props.node.assertClause,
73
+ );
74
+ };
75
+ }
76
+
77
+ const get_directory_path = (file: string): string => {
78
+ const split: string[] = path.resolve(file).split(path.sep);
79
+ split.pop();
80
+ return path.resolve(split.join(path.sep));
81
+ };
@@ -1,17 +1,17 @@
1
- import ts from "typescript";
2
-
3
- import { CallExpressionTransformer } from "./CallExpressionTransformer";
4
- import { ITypiaContext } from "./ITypiaContext";
5
-
6
- export namespace NodeTransformer {
7
- export const transform = (props: {
8
- context: ITypiaContext;
9
- node: ts.Node;
10
- }): ts.Node | null =>
11
- ts.isCallExpression(props.node) && props.node.parent
12
- ? CallExpressionTransformer.transform({
13
- context: props.context,
14
- expression: props.node,
15
- })
16
- : props.node;
17
- }
1
+ import ts from "typescript";
2
+
3
+ import { CallExpressionTransformer } from "./CallExpressionTransformer";
4
+ import { ITypiaContext } from "./ITypiaContext";
5
+
6
+ export namespace NodeTransformer {
7
+ export const transform = (props: {
8
+ context: ITypiaContext;
9
+ node: ts.Node;
10
+ }): ts.Node | null =>
11
+ ts.isCallExpression(props.node) && props.node.parent
12
+ ? CallExpressionTransformer.transform({
13
+ context: props.context,
14
+ expression: props.node,
15
+ })
16
+ : props.node;
17
+ }