typia 7.6.1 → 7.6.2-dev.20250205

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