typia 7.5.1 → 7.6.0-dev.20241229

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