typia 7.6.0 → 7.6.1-dev.20250203

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