typia 7.4.1 → 7.4.2-dev.20241217

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