typia 7.0.1 → 7.0.2-dev.20241205

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