typia 7.2.1 → 7.3.0-dev.20241213

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