typia 8.0.2 → 8.0.3-dev.20250316

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 (511) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +150 -150
  3. package/lib/executable/setup/PluginConfigurator.js +3 -3
  4. package/lib/executable/setup/PluginConfigurator.mjs +3 -3
  5. package/lib/executable/typia.js +15 -15
  6. package/lib/executable/typia.mjs +15 -15
  7. package/lib/transformers/features/llm/LlmSchemaTransformer.js +11 -6
  8. package/lib/transformers/features/llm/LlmSchemaTransformer.js.map +1 -1
  9. package/lib/transformers/features/llm/LlmSchemaTransformer.mjs +11 -6
  10. package/package.json +1 -1
  11. package/src/AssertionGuard.ts +1 -1
  12. package/src/CamelCase.ts +75 -75
  13. package/src/IRandomGenerator.ts +49 -49
  14. package/src/IReadableURLSearchParams.ts +9 -9
  15. package/src/IValidation.ts +1 -1
  16. package/src/PascalCase.ts +71 -71
  17. package/src/Primitive.ts +92 -92
  18. package/src/Resolved.ts +74 -74
  19. package/src/SnakeCase.ts +126 -126
  20. package/src/TypeGuardError.ts +37 -37
  21. package/src/executable/TypiaGenerateWizard.ts +83 -83
  22. package/src/executable/TypiaPatchWizard.ts +45 -45
  23. package/src/executable/TypiaSetupWizard.ts +171 -171
  24. package/src/executable/setup/ArgumentParser.ts +42 -42
  25. package/src/executable/setup/CommandExecutor.ts +8 -8
  26. package/src/executable/setup/FileRetriever.ts +19 -19
  27. package/src/executable/setup/PackageManager.ts +87 -87
  28. package/src/executable/setup/PluginConfigurator.ts +69 -69
  29. package/src/executable/typia.ts +55 -55
  30. package/src/factories/CommentFactory.ts +79 -79
  31. package/src/factories/ExpressionFactory.ts +216 -216
  32. package/src/factories/IdentifierFactory.ts +89 -89
  33. package/src/factories/JsonMetadataFactory.ts +83 -83
  34. package/src/factories/LiteralFactory.ts +52 -52
  35. package/src/factories/MetadataCollection.ts +278 -278
  36. package/src/factories/MetadataCommentTagFactory.ts +650 -650
  37. package/src/factories/MetadataFactory.ts +404 -404
  38. package/src/factories/MetadataTypeTagFactory.ts +413 -413
  39. package/src/factories/MetadataTypeTagSchemaFactory.ts +82 -82
  40. package/src/factories/NumericRangeFactory.ts +72 -72
  41. package/src/factories/ProtobufFactory.ts +875 -875
  42. package/src/factories/StatementFactory.ts +90 -90
  43. package/src/factories/TemplateFactory.ts +64 -64
  44. package/src/factories/TypeFactory.ts +140 -140
  45. package/src/factories/ValueFactory.ts +12 -12
  46. package/src/factories/internal/metadata/IMetadataIteratorProps.ts +17 -17
  47. package/src/factories/internal/metadata/MetadataHelper.ts +21 -21
  48. package/src/factories/internal/metadata/emend_metadata_atomics.ts +45 -45
  49. package/src/factories/internal/metadata/emplace_metadata_alias.ts +33 -33
  50. package/src/factories/internal/metadata/emplace_metadata_array_type.ts +39 -39
  51. package/src/factories/internal/metadata/emplace_metadata_object.ts +212 -212
  52. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +57 -57
  53. package/src/factories/internal/metadata/explore_metadata.ts +31 -31
  54. package/src/factories/internal/metadata/iterate_metadata.ts +54 -54
  55. package/src/factories/internal/metadata/iterate_metadata_alias.ts +33 -33
  56. package/src/factories/internal/metadata/iterate_metadata_array.ts +63 -63
  57. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +62 -62
  58. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +28 -28
  59. package/src/factories/internal/metadata/iterate_metadata_collection.ts +146 -146
  60. package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +32 -32
  61. package/src/factories/internal/metadata/iterate_metadata_constant.ts +76 -76
  62. package/src/factories/internal/metadata/iterate_metadata_escape.ts +49 -49
  63. package/src/factories/internal/metadata/iterate_metadata_function.ts +91 -91
  64. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +212 -212
  65. package/src/factories/internal/metadata/iterate_metadata_map.ts +57 -57
  66. package/src/factories/internal/metadata/iterate_metadata_native.ts +255 -255
  67. package/src/factories/internal/metadata/iterate_metadata_object.ts +35 -35
  68. package/src/factories/internal/metadata/iterate_metadata_set.ts +57 -57
  69. package/src/factories/internal/metadata/iterate_metadata_sort.ts +87 -87
  70. package/src/factories/internal/metadata/iterate_metadata_template.ts +41 -41
  71. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +26 -26
  72. package/src/factories/internal/metadata/iterate_metadata_union.ts +19 -19
  73. package/src/functional.ts +750 -750
  74. package/src/http.ts +1047 -1047
  75. package/src/index.ts +4 -4
  76. package/src/internal/_IProtobufWriter.ts +18 -18
  77. package/src/internal/_ProtobufReader.ts +194 -194
  78. package/src/internal/_ProtobufSizer.ts +145 -145
  79. package/src/internal/_ProtobufWriter.ts +145 -145
  80. package/src/internal/_accessExpressionAsString.ts +46 -46
  81. package/src/internal/_assertGuard.ts +13 -13
  82. package/src/internal/_functionalTypeGuardErrorFactory.ts +4 -4
  83. package/src/internal/_httpFormDataReadArray.ts +4 -4
  84. package/src/internal/_httpFormDataReadBigint.ts +18 -18
  85. package/src/internal/_httpFormDataReadBlob.ts +10 -10
  86. package/src/internal/_httpFormDataReadBoolean.ts +16 -16
  87. package/src/internal/_httpFormDataReadFile.ts +10 -10
  88. package/src/internal/_httpFormDataReadNumber.ts +15 -15
  89. package/src/internal/_httpFormDataReadString.ts +10 -10
  90. package/src/internal/_httpHeaderReadBigint.ts +10 -10
  91. package/src/internal/_httpHeaderReadBoolean.ts +8 -8
  92. package/src/internal/_httpHeaderReadNumber.ts +7 -7
  93. package/src/internal/_httpParameterReadBigint.ts +10 -10
  94. package/src/internal/_httpParameterReadBoolean.ts +8 -8
  95. package/src/internal/_httpParameterReadNumber.ts +7 -7
  96. package/src/internal/_httpParameterReadString.ts +2 -2
  97. package/src/internal/_httpQueryParseURLSearchParams.ts +12 -12
  98. package/src/internal/_httpQueryReadArray.ts +4 -4
  99. package/src/internal/_httpQueryReadBigint.ts +12 -12
  100. package/src/internal/_httpQueryReadBoolean.ts +14 -14
  101. package/src/internal/_httpQueryReadNumber.ts +9 -9
  102. package/src/internal/_httpQueryReadString.ts +4 -4
  103. package/src/internal/_isBetween.ts +2 -2
  104. package/src/internal/_isBigintString.ts +8 -8
  105. package/src/internal/_isFormatByte.ts +7 -7
  106. package/src/internal/_isFormatDate.ts +3 -3
  107. package/src/internal/_isFormatDateTime.ts +4 -4
  108. package/src/internal/_isFormatDuration.ts +4 -4
  109. package/src/internal/_isFormatEmail.ts +4 -4
  110. package/src/internal/_isFormatHostname.ts +4 -4
  111. package/src/internal/_isFormatIdnEmail.ts +4 -4
  112. package/src/internal/_isFormatIdnHostname.ts +4 -4
  113. package/src/internal/_isFormatIpv4.ts +4 -4
  114. package/src/internal/_isFormatIpv6.ts +4 -4
  115. package/src/internal/_isFormatIri.ts +3 -3
  116. package/src/internal/_isFormatIriReference.ts +4 -4
  117. package/src/internal/_isFormatJsonPointer.ts +3 -3
  118. package/src/internal/_isFormatPassword.ts +1 -1
  119. package/src/internal/_isFormatRegex.ts +8 -8
  120. package/src/internal/_isFormatRelativeJsonPointer.ts +4 -4
  121. package/src/internal/_isFormatTime.ts +4 -4
  122. package/src/internal/_isFormatUri.ts +6 -6
  123. package/src/internal/_isFormatUriReference.ts +5 -5
  124. package/src/internal/_isFormatUriTemplate.ts +4 -4
  125. package/src/internal/_isFormatUrl.ts +4 -4
  126. package/src/internal/_isFormatUuid.ts +3 -3
  127. package/src/internal/_isTypeFloat.ts +5 -5
  128. package/src/internal/_isTypeInt32.ts +5 -5
  129. package/src/internal/_isTypeInt64.ts +5 -5
  130. package/src/internal/_isTypeUint32.ts +5 -5
  131. package/src/internal/_isTypeUint64.ts +5 -5
  132. package/src/internal/_isUniqueItems.ts +159 -159
  133. package/src/internal/_jsonStringifyNumber.ts +12 -12
  134. package/src/internal/_jsonStringifyRest.ts +3 -3
  135. package/src/internal/_jsonStringifyString.ts +42 -42
  136. package/src/internal/_jsonStringifyTail.ts +2 -2
  137. package/src/internal/_llmApplicationFinalize.ts +20 -20
  138. package/src/internal/_miscCloneAny.ts +46 -46
  139. package/src/internal/_notationAny.ts +37 -37
  140. package/src/internal/_notationCamel.ts +13 -13
  141. package/src/internal/_notationPascal.ts +8 -8
  142. package/src/internal/_notationSnake.ts +43 -43
  143. package/src/internal/_randomArray.ts +21 -21
  144. package/src/internal/_randomBigint.ts +6 -6
  145. package/src/internal/_randomBoolean.ts +1 -1
  146. package/src/internal/_randomFormatByte.ts +3 -3
  147. package/src/internal/_randomFormatDate.ts +18 -18
  148. package/src/internal/_randomFormatDatetime.ts +16 -16
  149. package/src/internal/_randomFormatDuration.ts +27 -27
  150. package/src/internal/_randomFormatEmail.ts +11 -11
  151. package/src/internal/_randomFormatHostname.ts +6 -6
  152. package/src/internal/_randomFormatIdnEmail.ts +3 -3
  153. package/src/internal/_randomFormatIdnHostname.ts +3 -3
  154. package/src/internal/_randomFormatIpv4.ts +11 -11
  155. package/src/internal/_randomFormatIpv6.ts +11 -11
  156. package/src/internal/_randomFormatIri.ts +3 -3
  157. package/src/internal/_randomFormatIriReference.ts +3 -3
  158. package/src/internal/_randomFormatJsonPointer.ts +7 -7
  159. package/src/internal/_randomFormatPassword.ts +8 -8
  160. package/src/internal/_randomFormatRegex.ts +4 -4
  161. package/src/internal/_randomFormatRelativeJsonPointer.ts +8 -8
  162. package/src/internal/_randomFormatTime.ts +14 -14
  163. package/src/internal/_randomFormatUri.ts +3 -3
  164. package/src/internal/_randomFormatUriReference.ts +3 -3
  165. package/src/internal/_randomFormatUriTemplate.ts +3 -3
  166. package/src/internal/_randomFormatUrl.ts +11 -11
  167. package/src/internal/_randomFormatUuid.ts +6 -6
  168. package/src/internal/_randomInteger.ts +47 -47
  169. package/src/internal/_randomNumber.ts +74 -74
  170. package/src/internal/_randomPattern.ts +10 -10
  171. package/src/internal/_randomPick.ts +9 -9
  172. package/src/internal/_randomString.ts +24 -24
  173. package/src/internal/_throwTypeGuardError.ts +5 -5
  174. package/src/internal/_validateReport.ts +13 -13
  175. package/src/internal/private/__notationCapitalize.ts +2 -2
  176. package/src/internal/private/__notationUnsnake.ts +24 -24
  177. package/src/json.ts +752 -752
  178. package/src/llm.ts +396 -396
  179. package/src/misc.ts +658 -658
  180. package/src/module.ts +937 -937
  181. package/src/notations.ts +827 -827
  182. package/src/programmers/AssertProgrammer.ts +454 -454
  183. package/src/programmers/CheckerProgrammer.ts +1617 -1617
  184. package/src/programmers/FeatureProgrammer.ts +622 -622
  185. package/src/programmers/ImportProgrammer.ts +185 -185
  186. package/src/programmers/IsProgrammer.ts +273 -273
  187. package/src/programmers/RandomProgrammer.ts +1190 -1190
  188. package/src/programmers/TypiaProgrammer.ts +174 -174
  189. package/src/programmers/ValidateProgrammer.ts +439 -439
  190. package/src/programmers/functional/FunctionalAssertFunctionProgrammer.ts +153 -153
  191. package/src/programmers/functional/FunctionalAssertParametersProgrammer.ts +125 -125
  192. package/src/programmers/functional/FunctionalAssertReturnProgrammer.ts +115 -115
  193. package/src/programmers/functional/FunctionalIsFunctionProgrammer.ts +72 -72
  194. package/src/programmers/functional/FunctionalIsParametersProgrammer.ts +113 -113
  195. package/src/programmers/functional/FunctionalIsReturnProgrammer.ts +116 -116
  196. package/src/programmers/functional/FunctionalValidateFunctionProgrammer.ts +119 -119
  197. package/src/programmers/functional/FunctionalValidateParametersProgrammer.ts +274 -274
  198. package/src/programmers/functional/FunctionalValidateReturnProgrammer.ts +135 -135
  199. package/src/programmers/functional/internal/FunctionalGeneralProgrammer.ts +34 -34
  200. package/src/programmers/helpers/AtomicPredicator.ts +35 -35
  201. package/src/programmers/helpers/CloneJoiner.ts +143 -143
  202. package/src/programmers/helpers/FunctionProgrammer.ts +67 -67
  203. package/src/programmers/helpers/HttpMetadataUtil.ts +21 -21
  204. package/src/programmers/helpers/ICheckEntry.ts +13 -13
  205. package/src/programmers/helpers/IExpressionEntry.ts +12 -12
  206. package/src/programmers/helpers/NotationJoiner.ts +144 -144
  207. package/src/programmers/helpers/OptionPredicator.ts +15 -15
  208. package/src/programmers/helpers/ProtobufUtil.ts +228 -228
  209. package/src/programmers/helpers/ProtobufWire.ts +34 -34
  210. package/src/programmers/helpers/PruneJoiner.ts +148 -148
  211. package/src/programmers/helpers/RandomJoiner.ts +168 -168
  212. package/src/programmers/helpers/StringifyJoinder.ts +115 -115
  213. package/src/programmers/helpers/StringifyPredicator.ts +13 -13
  214. package/src/programmers/helpers/UnionExplorer.ts +372 -372
  215. package/src/programmers/helpers/UnionPredicator.ts +79 -79
  216. package/src/programmers/helpers/disable_function_programmer_declare.ts +32 -32
  217. package/src/programmers/http/HttpAssertFormDataProgrammer.ts +99 -99
  218. package/src/programmers/http/HttpAssertHeadersProgrammer.ts +99 -99
  219. package/src/programmers/http/HttpAssertQueryProgrammer.ts +105 -105
  220. package/src/programmers/http/HttpFormDataProgrammer.ts +308 -308
  221. package/src/programmers/http/HttpHeadersProgrammer.ts +400 -400
  222. package/src/programmers/http/HttpIsFormDataProgrammer.ts +108 -108
  223. package/src/programmers/http/HttpIsHeadersProgrammer.ts +108 -108
  224. package/src/programmers/http/HttpIsQueryProgrammer.ts +114 -114
  225. package/src/programmers/http/HttpParameterProgrammer.ts +115 -115
  226. package/src/programmers/http/HttpQueryProgrammer.ts +336 -336
  227. package/src/programmers/http/HttpValidateFormDataProgrammer.ts +92 -92
  228. package/src/programmers/http/HttpValidateHeadersProgrammer.ts +92 -92
  229. package/src/programmers/http/HttpValidateQueryProgrammer.ts +98 -98
  230. package/src/programmers/internal/check_array_length.ts +47 -47
  231. package/src/programmers/internal/check_bigint.ts +50 -50
  232. package/src/programmers/internal/check_dynamic_key.ts +201 -201
  233. package/src/programmers/internal/check_dynamic_properties.ts +208 -208
  234. package/src/programmers/internal/check_everything.ts +23 -23
  235. package/src/programmers/internal/check_native.ts +27 -27
  236. package/src/programmers/internal/check_number.ts +112 -112
  237. package/src/programmers/internal/check_object.ts +75 -75
  238. package/src/programmers/internal/check_string.ts +50 -50
  239. package/src/programmers/internal/check_template.ts +48 -48
  240. package/src/programmers/internal/check_union_array_like.ts +335 -335
  241. package/src/programmers/internal/decode_union_object.ts +116 -116
  242. package/src/programmers/internal/feature_object_entries.ts +61 -61
  243. package/src/programmers/internal/json_schema_alias.ts +47 -47
  244. package/src/programmers/internal/json_schema_array.ts +45 -45
  245. package/src/programmers/internal/json_schema_bigint.ts +15 -15
  246. package/src/programmers/internal/json_schema_boolean.ts +15 -15
  247. package/src/programmers/internal/json_schema_constant.ts +26 -26
  248. package/src/programmers/internal/json_schema_description.ts +12 -12
  249. package/src/programmers/internal/json_schema_discriminator.ts +35 -35
  250. package/src/programmers/internal/json_schema_escaped.ts +82 -82
  251. package/src/programmers/internal/json_schema_native.ts +33 -33
  252. package/src/programmers/internal/json_schema_number.ts +15 -15
  253. package/src/programmers/internal/json_schema_object.ts +158 -158
  254. package/src/programmers/internal/json_schema_plugin.ts +18 -18
  255. package/src/programmers/internal/json_schema_station.ts +182 -182
  256. package/src/programmers/internal/json_schema_string.ts +15 -15
  257. package/src/programmers/internal/json_schema_template.ts +55 -55
  258. package/src/programmers/internal/json_schema_title.ts +20 -20
  259. package/src/programmers/internal/json_schema_tuple.ts +35 -35
  260. package/src/programmers/internal/metadata_to_pattern.ts +42 -42
  261. package/src/programmers/internal/postfix_of_tuple.ts +5 -5
  262. package/src/programmers/internal/prune_object_properties.ts +71 -71
  263. package/src/programmers/internal/stringify_dynamic_properties.ts +162 -162
  264. package/src/programmers/internal/stringify_native.ts +7 -7
  265. package/src/programmers/internal/stringify_regular_properties.ts +81 -81
  266. package/src/programmers/internal/template_to_pattern.ts +23 -23
  267. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +23 -23
  268. package/src/programmers/json/JsonApplicationProgrammer.ts +266 -266
  269. package/src/programmers/json/JsonAssertParseProgrammer.ts +113 -113
  270. package/src/programmers/json/JsonAssertStringifyProgrammer.ts +115 -115
  271. package/src/programmers/json/JsonIsParseProgrammer.ts +114 -114
  272. package/src/programmers/json/JsonIsStringifyProgrammer.ts +108 -108
  273. package/src/programmers/json/JsonSchemasProgrammer.ts +91 -91
  274. package/src/programmers/json/JsonStringifyProgrammer.ts +1124 -1124
  275. package/src/programmers/json/JsonValidateParseProgrammer.ts +105 -105
  276. package/src/programmers/json/JsonValidateStringifyProgrammer.ts +124 -124
  277. package/src/programmers/llm/LlmApplicationProgrammer.ts +401 -401
  278. package/src/programmers/llm/LlmModelPredicator.ts +127 -127
  279. package/src/programmers/llm/LlmParametersProgrammer.ts +93 -93
  280. package/src/programmers/llm/LlmSchemaProgrammer.ts +192 -192
  281. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +95 -95
  282. package/src/programmers/misc/MiscAssertPruneProgrammer.ts +116 -116
  283. package/src/programmers/misc/MiscCloneProgrammer.ts +1032 -1032
  284. package/src/programmers/misc/MiscIsCloneProgrammer.ts +99 -99
  285. package/src/programmers/misc/MiscIsPruneProgrammer.ts +97 -97
  286. package/src/programmers/misc/MiscLiteralsProgrammer.ts +80 -80
  287. package/src/programmers/misc/MiscPruneProgrammer.ts +728 -728
  288. package/src/programmers/misc/MiscValidateCloneProgrammer.ts +111 -111
  289. package/src/programmers/misc/MiscValidatePruneProgrammer.ts +113 -113
  290. package/src/programmers/notations/NotationAssertGeneralProgrammer.ts +101 -101
  291. package/src/programmers/notations/NotationGeneralProgrammer.ts +984 -984
  292. package/src/programmers/notations/NotationIsGeneralProgrammer.ts +105 -105
  293. package/src/programmers/notations/NotationValidateGeneralProgrammer.ts +119 -119
  294. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +98 -98
  295. package/src/programmers/protobuf/ProtobufAssertEncodeProgrammer.ts +102 -102
  296. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +654 -654
  297. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +945 -945
  298. package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +109 -109
  299. package/src/programmers/protobuf/ProtobufIsEncodeProgrammer.ts +98 -98
  300. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +179 -179
  301. package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +92 -92
  302. package/src/programmers/protobuf/ProtobufValidateEncodeProgrammer.ts +119 -119
  303. package/src/protobuf.ts +868 -868
  304. package/src/reflect.ts +57 -57
  305. package/src/schemas/json/IJsonApplication.ts +73 -73
  306. package/src/schemas/json/IJsonSchemaCollection.ts +29 -29
  307. package/src/schemas/json/__IJsonApplication.ts +63 -63
  308. package/src/schemas/llm/ILlmApplicationOfValidate.ts +6 -6
  309. package/src/schemas/llm/ILlmFunctionOfValidate.ts +6 -6
  310. package/src/schemas/metadata/IJsDocTagInfo.ts +10 -10
  311. package/src/schemas/metadata/IMetadata.ts +35 -35
  312. package/src/schemas/metadata/IMetadataAlias.ts +6 -6
  313. package/src/schemas/metadata/IMetadataAliasType.ts +12 -12
  314. package/src/schemas/metadata/IMetadataApplication.ts +7 -7
  315. package/src/schemas/metadata/IMetadataArray.ts +6 -6
  316. package/src/schemas/metadata/IMetadataArrayType.ts +10 -10
  317. package/src/schemas/metadata/IMetadataAtomic.ts +6 -6
  318. package/src/schemas/metadata/IMetadataComponents.ts +11 -11
  319. package/src/schemas/metadata/IMetadataConstant.ts +18 -18
  320. package/src/schemas/metadata/IMetadataConstantValue.ts +11 -11
  321. package/src/schemas/metadata/IMetadataDictionary.ts +11 -11
  322. package/src/schemas/metadata/IMetadataEscaped.ts +6 -6
  323. package/src/schemas/metadata/IMetadataFunction.ts +8 -8
  324. package/src/schemas/metadata/IMetadataMap.ts +8 -8
  325. package/src/schemas/metadata/IMetadataNative.ts +6 -6
  326. package/src/schemas/metadata/IMetadataObject.ts +6 -6
  327. package/src/schemas/metadata/IMetadataObjectType.ts +13 -13
  328. package/src/schemas/metadata/IMetadataParameter.ts +9 -9
  329. package/src/schemas/metadata/IMetadataProperty.ts +9 -9
  330. package/src/schemas/metadata/IMetadataSet.ts +7 -7
  331. package/src/schemas/metadata/IMetadataTemplate.ts +7 -7
  332. package/src/schemas/metadata/IMetadataTuple.ts +6 -6
  333. package/src/schemas/metadata/IMetadataTupleType.ts +10 -10
  334. package/src/schemas/metadata/IMetadataTypeTag.ts +16 -16
  335. package/src/schemas/metadata/Metadata.ts +687 -687
  336. package/src/schemas/metadata/MetadataAlias.ts +46 -46
  337. package/src/schemas/metadata/MetadataAliasType.ts +63 -63
  338. package/src/schemas/metadata/MetadataApplication.ts +44 -44
  339. package/src/schemas/metadata/MetadataArray.ts +49 -49
  340. package/src/schemas/metadata/MetadataArrayType.ts +57 -57
  341. package/src/schemas/metadata/MetadataAtomic.ts +87 -87
  342. package/src/schemas/metadata/MetadataComponents.ts +98 -98
  343. package/src/schemas/metadata/MetadataConstant.ts +34 -34
  344. package/src/schemas/metadata/MetadataConstantValue.ts +62 -62
  345. package/src/schemas/metadata/MetadataEscaped.ts +51 -51
  346. package/src/schemas/metadata/MetadataFunction.ts +49 -49
  347. package/src/schemas/metadata/MetadataMap.ts +48 -48
  348. package/src/schemas/metadata/MetadataNative.ts +44 -44
  349. package/src/schemas/metadata/MetadataObject.ts +48 -48
  350. package/src/schemas/metadata/MetadataObjectType.ts +149 -149
  351. package/src/schemas/metadata/MetadataParameter.ts +54 -54
  352. package/src/schemas/metadata/MetadataProperty.ts +59 -59
  353. package/src/schemas/metadata/MetadataSet.ts +45 -45
  354. package/src/schemas/metadata/MetadataTemplate.ts +80 -80
  355. package/src/schemas/metadata/MetadataTuple.ts +32 -32
  356. package/src/schemas/metadata/MetadataTupleType.ts +67 -67
  357. package/src/schemas/protobuf/IProtobufProperty.ts +6 -6
  358. package/src/schemas/protobuf/IProtobufPropertyType.ts +37 -37
  359. package/src/schemas/protobuf/IProtobufSchema.ts +50 -50
  360. package/src/tags/Constant.ts +15 -15
  361. package/src/tags/ContentMediaType.ts +10 -10
  362. package/src/tags/Default.ts +22 -22
  363. package/src/tags/Example.ts +24 -24
  364. package/src/tags/Examples.ts +16 -16
  365. package/src/tags/ExclusiveMaximum.ts +25 -25
  366. package/src/tags/ExclusiveMinimum.ts +25 -25
  367. package/src/tags/Format.ts +50 -50
  368. package/src/tags/JsonSchemaPlugin.ts +8 -8
  369. package/src/tags/MaxItems.ts +12 -12
  370. package/src/tags/MaxLength.ts +12 -12
  371. package/src/tags/Maximum.ts +19 -19
  372. package/src/tags/MinItems.ts +12 -12
  373. package/src/tags/MinLength.ts +12 -12
  374. package/src/tags/Minimum.ts +19 -19
  375. package/src/tags/MultipleOf.ts +21 -21
  376. package/src/tags/Pattern.ts +31 -31
  377. package/src/tags/Sequence.ts +10 -10
  378. package/src/tags/TagBase.ts +82 -82
  379. package/src/tags/Type.ts +32 -32
  380. package/src/tags/UniqueItems.ts +14 -14
  381. package/src/tags/index.ts +21 -21
  382. package/src/tags/internal/FormatCheatSheet.ts +73 -73
  383. package/src/transform.ts +35 -35
  384. package/src/transformers/CallExpressionTransformer.ts +546 -546
  385. package/src/transformers/FileTransformer.ts +136 -136
  386. package/src/transformers/IProgrammerProps.ts +11 -11
  387. package/src/transformers/ITransformOptions.ts +62 -62
  388. package/src/transformers/ITransformProps.ts +9 -9
  389. package/src/transformers/ITypiaContext.ts +18 -18
  390. package/src/transformers/ImportTransformer.ts +81 -81
  391. package/src/transformers/NodeTransformer.ts +17 -17
  392. package/src/transformers/TransformerError.ts +60 -60
  393. package/src/transformers/features/AssertTransformer.ts +24 -24
  394. package/src/transformers/features/CreateAssertTransformer.ts +24 -24
  395. package/src/transformers/features/CreateIsTransformer.ts +18 -18
  396. package/src/transformers/features/CreateRandomTransformer.ts +43 -43
  397. package/src/transformers/features/CreateValidateTransformer.ts +18 -18
  398. package/src/transformers/features/IsTransformer.ts +18 -18
  399. package/src/transformers/features/RandomTransformer.ts +41 -41
  400. package/src/transformers/features/ValidateTransformer.ts +18 -18
  401. package/src/transformers/features/functional/FunctionalGenericTransformer.ts +57 -57
  402. package/src/transformers/features/http/CreateHttpAssertFormDataTransformer.ts +13 -13
  403. package/src/transformers/features/http/CreateHttpAssertHeadersTransformer.ts +13 -13
  404. package/src/transformers/features/http/CreateHttpAssertQueryTransformer.ts +13 -13
  405. package/src/transformers/features/http/CreateHttpFormDataTransformer.ts +13 -13
  406. package/src/transformers/features/http/CreateHttpHeadersTransformer.ts +13 -13
  407. package/src/transformers/features/http/CreateHttpIsFormDataTransformer.ts +13 -13
  408. package/src/transformers/features/http/CreateHttpIsHeadersTransformer.ts +13 -13
  409. package/src/transformers/features/http/CreateHttpIsQueryTransformer.ts +13 -13
  410. package/src/transformers/features/http/CreateHttpParameterTransformer.ts +13 -13
  411. package/src/transformers/features/http/CreateHttpQueryTransformer.ts +13 -13
  412. package/src/transformers/features/http/CreateHttpValidateFormDataTransformer.ts +13 -13
  413. package/src/transformers/features/http/CreateHttpValidateHeadersTransformer.ts +13 -13
  414. package/src/transformers/features/http/CreateHttpValidateQueryTransformer.ts +13 -13
  415. package/src/transformers/features/http/HttpAssertFormDataTransformer.ts +13 -13
  416. package/src/transformers/features/http/HttpAssertHeadersTransformer.ts +13 -13
  417. package/src/transformers/features/http/HttpAssertQueryTransformer.ts +13 -13
  418. package/src/transformers/features/http/HttpFormDataTransformer.ts +13 -13
  419. package/src/transformers/features/http/HttpHeadersTransformer.ts +13 -13
  420. package/src/transformers/features/http/HttpIsFormDataTransformer.ts +13 -13
  421. package/src/transformers/features/http/HttpIsHeadersTransformer.ts +13 -13
  422. package/src/transformers/features/http/HttpIsQueryTransformer.ts +13 -13
  423. package/src/transformers/features/http/HttpParameterTransformer.ts +13 -13
  424. package/src/transformers/features/http/HttpQueryTransformer.ts +13 -13
  425. package/src/transformers/features/http/HttpValidateFormDataTransformer.ts +13 -13
  426. package/src/transformers/features/http/HttpValidateHeadersTransformer.ts +13 -13
  427. package/src/transformers/features/http/HttpValidateQueryTransformer.ts +13 -13
  428. package/src/transformers/features/json/JsonApplicationTransformer.ts +105 -105
  429. package/src/transformers/features/json/JsonAssertParseTransformer.ts +13 -13
  430. package/src/transformers/features/json/JsonAssertStringifyTransformer.ts +13 -13
  431. package/src/transformers/features/json/JsonCreateAssertParseTransformer.ts +13 -13
  432. package/src/transformers/features/json/JsonCreateAssertStringifyTransformer.ts +13 -13
  433. package/src/transformers/features/json/JsonCreateIsParseTransformer.ts +13 -13
  434. package/src/transformers/features/json/JsonCreateIsStringifyTransformer.ts +13 -13
  435. package/src/transformers/features/json/JsonCreateStringifyTransformer.ts +13 -13
  436. package/src/transformers/features/json/JsonCreateValidateParseTransformer.ts +13 -13
  437. package/src/transformers/features/json/JsonCreateValidateStringifyProgrammer.ts +13 -13
  438. package/src/transformers/features/json/JsonIsParseTransformer.ts +13 -13
  439. package/src/transformers/features/json/JsonIsStringifyTransformer.ts +13 -13
  440. package/src/transformers/features/json/JsonSchemasTransformer.ts +145 -145
  441. package/src/transformers/features/json/JsonStringifyTransformer.ts +13 -13
  442. package/src/transformers/features/json/JsonValidateParseTransformer.ts +13 -13
  443. package/src/transformers/features/json/JsonValidateStringifyTransformer.ts +13 -13
  444. package/src/transformers/features/llm/LlmApplicationTransformer.ts +128 -128
  445. package/src/transformers/features/llm/LlmParametersTransformer.ts +102 -102
  446. package/src/transformers/features/llm/LlmSchemaTransformer.ts +170 -143
  447. package/src/transformers/features/misc/MiscAssertCloneTransformer.ts +13 -13
  448. package/src/transformers/features/misc/MiscAssertPruneTransformer.ts +13 -13
  449. package/src/transformers/features/misc/MiscCloneTransformer.ts +13 -13
  450. package/src/transformers/features/misc/MiscCreateAssertCloneTransformer.ts +13 -13
  451. package/src/transformers/features/misc/MiscCreateAssertPruneTransformer.ts +13 -13
  452. package/src/transformers/features/misc/MiscCreateCloneTransformer.ts +13 -13
  453. package/src/transformers/features/misc/MiscCreateIsCloneTransformer.ts +13 -13
  454. package/src/transformers/features/misc/MiscCreateIsPruneTransformer.ts +13 -13
  455. package/src/transformers/features/misc/MiscCreatePruneTransformer.ts +13 -13
  456. package/src/transformers/features/misc/MiscCreateValidateCloneTransformer.ts +13 -13
  457. package/src/transformers/features/misc/MiscCreateValidatePruneTransformer.ts +13 -13
  458. package/src/transformers/features/misc/MiscIsCloneTransformer.ts +13 -13
  459. package/src/transformers/features/misc/MiscIsPruneTransformer.ts +13 -13
  460. package/src/transformers/features/misc/MiscLiteralsTransformer.ts +35 -35
  461. package/src/transformers/features/misc/MiscPruneTransformer.ts +13 -13
  462. package/src/transformers/features/misc/MiscValidateCloneTransformer.ts +13 -13
  463. package/src/transformers/features/misc/MiscValidatePruneTransformer.ts +13 -13
  464. package/src/transformers/features/notations/NotationAssertGeneralTransformer.ts +20 -20
  465. package/src/transformers/features/notations/NotationCreateAssertGeneralTransformer.ts +20 -20
  466. package/src/transformers/features/notations/NotationCreateGeneralTransformer.ts +20 -20
  467. package/src/transformers/features/notations/NotationCreateIsGeneralTransformer.ts +20 -20
  468. package/src/transformers/features/notations/NotationCreateValidateGeneralTransformer.ts +20 -20
  469. package/src/transformers/features/notations/NotationGeneralTransformer.ts +18 -18
  470. package/src/transformers/features/notations/NotationIsGeneralTransformer.ts +20 -20
  471. package/src/transformers/features/notations/NotationValidateGeneralTransformer.ts +20 -20
  472. package/src/transformers/features/protobuf/ProtobufAssertDecodeTransformer.ts +13 -13
  473. package/src/transformers/features/protobuf/ProtobufAssertEncodeTransformer.ts +13 -13
  474. package/src/transformers/features/protobuf/ProtobufCreateAssertDecodeTransformer.ts +13 -13
  475. package/src/transformers/features/protobuf/ProtobufCreateAssertEncodeTransformer.ts +13 -13
  476. package/src/transformers/features/protobuf/ProtobufCreateDecodeTransformer.ts +13 -13
  477. package/src/transformers/features/protobuf/ProtobufCreateEncodeTransformer.ts +13 -13
  478. package/src/transformers/features/protobuf/ProtobufCreateIsDecodeTransformer.ts +13 -13
  479. package/src/transformers/features/protobuf/ProtobufCreateIsEncodeTransformer.ts +13 -13
  480. package/src/transformers/features/protobuf/ProtobufCreateValidateDecodeTransformer.ts +13 -13
  481. package/src/transformers/features/protobuf/ProtobufCreateValidateEncodeTransformer.ts +13 -13
  482. package/src/transformers/features/protobuf/ProtobufDecodeTransformer.ts +13 -13
  483. package/src/transformers/features/protobuf/ProtobufEncodeTransformer.ts +13 -13
  484. package/src/transformers/features/protobuf/ProtobufIsDecodeTransformer.ts +13 -13
  485. package/src/transformers/features/protobuf/ProtobufIsEncodeTransformer.ts +13 -13
  486. package/src/transformers/features/protobuf/ProtobufMessageTransformer.ts +35 -35
  487. package/src/transformers/features/protobuf/ProtobufValidateDecodeTransformer.ts +13 -13
  488. package/src/transformers/features/protobuf/ProtobufValidateEncodeTransformer.ts +13 -13
  489. package/src/transformers/features/reflect/ReflectMetadataTransformer.ts +69 -69
  490. package/src/transformers/features/reflect/ReflectNameTransformer.ts +82 -82
  491. package/src/transformers/internal/GenericTransformer.ts +101 -101
  492. package/src/typings/Atomic.ts +13 -13
  493. package/src/typings/ClassProperties.ts +5 -5
  494. package/src/typings/Customizable.ts +5 -5
  495. package/src/typings/Equal.ts +18 -18
  496. package/src/typings/IsTuple.ts +9 -9
  497. package/src/typings/NativeClass.ts +23 -23
  498. package/src/typings/OmitNever.ts +3 -3
  499. package/src/typings/ProtobufAtomic.ts +19 -19
  500. package/src/typings/SpecialFields.ts +3 -3
  501. package/src/typings/ValidationPipe.ts +9 -9
  502. package/src/typings/ValueOf.ts +20 -20
  503. package/src/typings/Writable.ts +11 -11
  504. package/src/utils/ArrayUtil.ts +41 -41
  505. package/src/utils/Escaper.ts +50 -50
  506. package/src/utils/MapUtil.ts +14 -14
  507. package/src/utils/NamingConvention.ts +94 -94
  508. package/src/utils/PatternUtil.ts +29 -29
  509. package/src/utils/ProtobufNameEncoder.ts +32 -32
  510. package/src/utils/Singleton.ts +16 -16
  511. package/src/utils/StringUtil.ts +16 -16
@@ -1,136 +1,136 @@
1
- import ts from "typescript";
2
-
3
- import { ImportProgrammer } from "../programmers/ImportProgrammer";
4
-
5
- import { Singleton } from "../utils/Singleton";
6
-
7
- import { ITypiaContext } from "./ITypiaContext";
8
- import { NodeTransformer } from "./NodeTransformer";
9
- import { TransformerError } from "./TransformerError";
10
-
11
- export namespace FileTransformer {
12
- export const transform =
13
- (environments: Omit<ITypiaContext, "transformer" | "importer">) =>
14
- (transformer: ts.TransformationContext) =>
15
- (file: ts.SourceFile): ts.SourceFile => {
16
- if (file.isDeclarationFile) return file;
17
-
18
- const importer: ImportProgrammer = new ImportProgrammer({
19
- internalPrefix: "typia_transform_",
20
- });
21
- const context: ITypiaContext = {
22
- ...environments,
23
- transformer,
24
- importer,
25
- };
26
- checkJsDocParsingMode.get(context, file);
27
-
28
- file = ts.visitEachChild(
29
- file,
30
- (node) =>
31
- iterate_node({
32
- context,
33
- node,
34
- }),
35
- transformer,
36
- );
37
- const index: number = find_import_injection_index(file);
38
- return ts.factory.updateSourceFile(
39
- file,
40
- [
41
- ...file.statements.slice(0, index),
42
- ...importer.toStatements(),
43
- ...file.statements.slice(index),
44
- ],
45
- false,
46
- file.referencedFiles,
47
- file.typeReferenceDirectives,
48
- file.hasNoDefaultLib,
49
- file.libReferenceDirectives,
50
- );
51
- };
52
-
53
- const iterate_node = (props: {
54
- context: ITypiaContext;
55
- node: ts.Node;
56
- }): ts.Node =>
57
- ts.visitEachChild(
58
- try_transform_node(props) ?? props.node,
59
- (node) =>
60
- iterate_node({
61
- context: props.context,
62
- node,
63
- }),
64
- props.context.transformer,
65
- );
66
-
67
- const try_transform_node = (props: {
68
- context: ITypiaContext;
69
- node: ts.Node;
70
- }): ts.Node | null => {
71
- try {
72
- return NodeTransformer.transform(props);
73
- } catch (exp) {
74
- // ONLY ACCEPT TRANSFORMER-ERROR
75
- if (!isTransformerError(exp)) throw exp;
76
-
77
- // REPORT DIAGNOSTIC
78
- const diagnostic = ts.createDiagnosticForNode(props.node, {
79
- key: exp.code,
80
- category: ts.DiagnosticCategory.Error,
81
- message: exp.message,
82
- code: `(${exp.code})` as any,
83
- });
84
- props.context.extras.addDiagnostic(diagnostic);
85
- return null;
86
- }
87
- };
88
-
89
- const find_import_injection_index = (file: ts.SourceFile): number => {
90
- let i: number = 0;
91
- for (; i < file.statements.length; ++i) {
92
- const stmt: ts.Statement = file.statements[i]!;
93
- if (
94
- ts.isExpressionStatement(stmt) &&
95
- ts.isStringLiteralLike(stmt.expression) &&
96
- stmt.expression.text.startsWith("use ")
97
- )
98
- continue;
99
- break;
100
- }
101
- return i;
102
- };
103
- }
104
-
105
- const isTransformerError = (error: any): error is TransformerError =>
106
- typeof error === "object" &&
107
- error !== null &&
108
- error.constructor.name === "TransformerError" &&
109
- typeof error.code === "string" &&
110
- typeof error.message === "string";
111
-
112
- const checkJsDocParsingMode = new Singleton(
113
- (context: ITypiaContext, file: ts.SourceFile) => {
114
- if (
115
- typeof file.jsDocParsingMode === "number" &&
116
- file.jsDocParsingMode !== 0
117
- ) {
118
- context.extras.addDiagnostic(
119
- ts.createDiagnosticForNode(file, {
120
- code: `(typia setup)` as any,
121
- key: "jsDocParsingMode",
122
- category: ts.DiagnosticCategory.Warning,
123
- message: [
124
- `Run "npx typia setup" or "npx typia patch" command again.`,
125
- ``,
126
- `Since TypeScript v5.3 update, "tsc" no more parses JSDoc comments. Therefore, "typia" also cannot utilize those JSDoc comments too, and it damages on some features of "typia" like "comment tags" or "JSON schema" generator.`,
127
- ``,
128
- `To solve this problem, run "npx typia setup" or "npx typia patch" command to hack the TypeScript compiler to revive the JSDoc parsing feature.`,
129
- ``,
130
- ` - reference: https://github.com/microsoft/TypeScript/pull/55739`,
131
- ].join("\n"),
132
- }),
133
- );
134
- }
135
- },
136
- );
1
+ import ts from "typescript";
2
+
3
+ import { ImportProgrammer } from "../programmers/ImportProgrammer";
4
+
5
+ import { Singleton } from "../utils/Singleton";
6
+
7
+ import { ITypiaContext } from "./ITypiaContext";
8
+ import { NodeTransformer } from "./NodeTransformer";
9
+ import { TransformerError } from "./TransformerError";
10
+
11
+ export namespace FileTransformer {
12
+ export const transform =
13
+ (environments: Omit<ITypiaContext, "transformer" | "importer">) =>
14
+ (transformer: ts.TransformationContext) =>
15
+ (file: ts.SourceFile): ts.SourceFile => {
16
+ if (file.isDeclarationFile) return file;
17
+
18
+ const importer: ImportProgrammer = new ImportProgrammer({
19
+ internalPrefix: "typia_transform_",
20
+ });
21
+ const context: ITypiaContext = {
22
+ ...environments,
23
+ transformer,
24
+ importer,
25
+ };
26
+ checkJsDocParsingMode.get(context, file);
27
+
28
+ file = ts.visitEachChild(
29
+ file,
30
+ (node) =>
31
+ iterate_node({
32
+ context,
33
+ node,
34
+ }),
35
+ transformer,
36
+ );
37
+ const index: number = find_import_injection_index(file);
38
+ return ts.factory.updateSourceFile(
39
+ file,
40
+ [
41
+ ...file.statements.slice(0, index),
42
+ ...importer.toStatements(),
43
+ ...file.statements.slice(index),
44
+ ],
45
+ false,
46
+ file.referencedFiles,
47
+ file.typeReferenceDirectives,
48
+ file.hasNoDefaultLib,
49
+ file.libReferenceDirectives,
50
+ );
51
+ };
52
+
53
+ const iterate_node = (props: {
54
+ context: ITypiaContext;
55
+ node: ts.Node;
56
+ }): ts.Node =>
57
+ ts.visitEachChild(
58
+ try_transform_node(props) ?? props.node,
59
+ (node) =>
60
+ iterate_node({
61
+ context: props.context,
62
+ node,
63
+ }),
64
+ props.context.transformer,
65
+ );
66
+
67
+ const try_transform_node = (props: {
68
+ context: ITypiaContext;
69
+ node: ts.Node;
70
+ }): ts.Node | null => {
71
+ try {
72
+ return NodeTransformer.transform(props);
73
+ } catch (exp) {
74
+ // ONLY ACCEPT TRANSFORMER-ERROR
75
+ if (!isTransformerError(exp)) throw exp;
76
+
77
+ // REPORT DIAGNOSTIC
78
+ const diagnostic = ts.createDiagnosticForNode(props.node, {
79
+ key: exp.code,
80
+ category: ts.DiagnosticCategory.Error,
81
+ message: exp.message,
82
+ code: `(${exp.code})` as any,
83
+ });
84
+ props.context.extras.addDiagnostic(diagnostic);
85
+ return null;
86
+ }
87
+ };
88
+
89
+ const find_import_injection_index = (file: ts.SourceFile): number => {
90
+ let i: number = 0;
91
+ for (; i < file.statements.length; ++i) {
92
+ const stmt: ts.Statement = file.statements[i]!;
93
+ if (
94
+ ts.isExpressionStatement(stmt) &&
95
+ ts.isStringLiteralLike(stmt.expression) &&
96
+ stmt.expression.text.startsWith("use ")
97
+ )
98
+ continue;
99
+ break;
100
+ }
101
+ return i;
102
+ };
103
+ }
104
+
105
+ const isTransformerError = (error: any): error is TransformerError =>
106
+ typeof error === "object" &&
107
+ error !== null &&
108
+ error.constructor.name === "TransformerError" &&
109
+ typeof error.code === "string" &&
110
+ typeof error.message === "string";
111
+
112
+ const checkJsDocParsingMode = new Singleton(
113
+ (context: ITypiaContext, file: ts.SourceFile) => {
114
+ if (
115
+ typeof file.jsDocParsingMode === "number" &&
116
+ file.jsDocParsingMode !== 0
117
+ ) {
118
+ context.extras.addDiagnostic(
119
+ ts.createDiagnosticForNode(file, {
120
+ code: `(typia setup)` as any,
121
+ key: "jsDocParsingMode",
122
+ category: ts.DiagnosticCategory.Warning,
123
+ message: [
124
+ `Run "npx typia setup" or "npx typia patch" command again.`,
125
+ ``,
126
+ `Since TypeScript v5.3 update, "tsc" no more parses JSDoc comments. Therefore, "typia" also cannot utilize those JSDoc comments too, and it damages on some features of "typia" like "comment tags" or "JSON schema" generator.`,
127
+ ``,
128
+ `To solve this problem, run "npx typia setup" or "npx typia patch" command to hack the TypeScript compiler to revive the JSDoc parsing feature.`,
129
+ ``,
130
+ ` - reference: https://github.com/microsoft/TypeScript/pull/55739`,
131
+ ].join("\n"),
132
+ }),
133
+ );
134
+ }
135
+ },
136
+ );
@@ -1,11 +1,11 @@
1
- import ts from "typescript";
2
-
3
- import { ITypiaContext } from "./ITypiaContext";
4
-
5
- export interface IProgrammerProps {
6
- context: ITypiaContext;
7
- modulo: ts.LeftHandSideExpression;
8
- type: ts.Type;
9
- name: string | undefined;
10
- init?: ts.Expression | undefined;
11
- }
1
+ import ts from "typescript";
2
+
3
+ import { ITypiaContext } from "./ITypiaContext";
4
+
5
+ export interface IProgrammerProps {
6
+ context: ITypiaContext;
7
+ modulo: ts.LeftHandSideExpression;
8
+ type: ts.Type;
9
+ name: string | undefined;
10
+ init?: ts.Expression | undefined;
11
+ }
@@ -1,62 +1,62 @@
1
- export interface ITransformOptions {
2
- /**
3
- * Whether to validate finite number or not.
4
- *
5
- * If configured true, number typed values would be validated by Number.isNaN().
6
- *
7
- * However, whatever you configure, it would be ignored when marshaling or parsing.
8
- *
9
- * - when marshaling, always be true
10
- * - assertStringify()
11
- * - validateEncode()
12
- * - when parsing, always be false
13
- * - assertParse()
14
- * - isDecode()
15
- *
16
- * @default false
17
- */
18
- finite?: undefined | boolean;
19
-
20
- /**
21
- * Whether to validate finite number or not.
22
- *
23
- * If configured true, number typed values would be validated by Number.isFinite().
24
- *
25
- * However, whatever you configure, it can be ignored in below case.
26
- *
27
- * - when `finite` option is true, this option would be ignored
28
- * - when marshaling, always be true
29
- * - assertStringify()
30
- * - validateEncode()
31
- * - when parsing, always be false
32
- * - assertParse()
33
- * - isDecode()
34
- *
35
- * @default false
36
- */
37
- numeric?: undefined | boolean;
38
-
39
- /**
40
- * Whether to validate functional type or not.
41
- *
42
- * However, whatever you configure, it becomes false when marshaling or parsing.
43
- *
44
- * @default false
45
- */
46
- functional?: undefined | boolean;
47
-
48
- /**
49
- * Whether to check undefined value or not.
50
- *
51
- * JavaScript can assign `undefined` value to a specific property and it is an
52
- * issue when validating without allowing superfluous properties. Should undefined
53
- * value assigned superfluous property be allowed or not?
54
- *
55
- * Note that, this option only works on {@link equals} function. Other function
56
- * like {@link assertEquals} or {@link validateEquals} would ignore this option
57
- * value and always allow the `undefined` value.
58
- *
59
- * @default true
60
- */
61
- undefined?: undefined | boolean;
62
- }
1
+ export interface ITransformOptions {
2
+ /**
3
+ * Whether to validate finite number or not.
4
+ *
5
+ * If configured true, number typed values would be validated by Number.isNaN().
6
+ *
7
+ * However, whatever you configure, it would be ignored when marshaling or parsing.
8
+ *
9
+ * - when marshaling, always be true
10
+ * - assertStringify()
11
+ * - validateEncode()
12
+ * - when parsing, always be false
13
+ * - assertParse()
14
+ * - isDecode()
15
+ *
16
+ * @default false
17
+ */
18
+ finite?: undefined | boolean;
19
+
20
+ /**
21
+ * Whether to validate finite number or not.
22
+ *
23
+ * If configured true, number typed values would be validated by Number.isFinite().
24
+ *
25
+ * However, whatever you configure, it can be ignored in below case.
26
+ *
27
+ * - when `finite` option is true, this option would be ignored
28
+ * - when marshaling, always be true
29
+ * - assertStringify()
30
+ * - validateEncode()
31
+ * - when parsing, always be false
32
+ * - assertParse()
33
+ * - isDecode()
34
+ *
35
+ * @default false
36
+ */
37
+ numeric?: undefined | boolean;
38
+
39
+ /**
40
+ * Whether to validate functional type or not.
41
+ *
42
+ * However, whatever you configure, it becomes false when marshaling or parsing.
43
+ *
44
+ * @default false
45
+ */
46
+ functional?: undefined | boolean;
47
+
48
+ /**
49
+ * Whether to check undefined value or not.
50
+ *
51
+ * JavaScript can assign `undefined` value to a specific property and it is an
52
+ * issue when validating without allowing superfluous properties. Should undefined
53
+ * value assigned superfluous property be allowed or not?
54
+ *
55
+ * Note that, this option only works on {@link equals} function. Other function
56
+ * like {@link assertEquals} or {@link validateEquals} would ignore this option
57
+ * value and always allow the `undefined` value.
58
+ *
59
+ * @default true
60
+ */
61
+ undefined?: undefined | boolean;
62
+ }
@@ -1,9 +1,9 @@
1
- import ts from "typescript";
2
-
3
- import { ITypiaContext } from "./ITypiaContext";
4
-
5
- export interface ITransformProps {
6
- context: ITypiaContext;
7
- modulo: ts.LeftHandSideExpression;
8
- expression: ts.CallExpression;
9
- }
1
+ import ts from "typescript";
2
+
3
+ import { ITypiaContext } from "./ITypiaContext";
4
+
5
+ export interface ITransformProps {
6
+ context: ITypiaContext;
7
+ modulo: ts.LeftHandSideExpression;
8
+ expression: ts.CallExpression;
9
+ }
@@ -1,18 +1,18 @@
1
- import ts from "typescript";
2
-
3
- import { ImportProgrammer } from "../programmers/ImportProgrammer";
4
-
5
- import { ITransformOptions } from "./ITransformOptions";
6
-
7
- export interface ITypiaContext {
8
- program: ts.Program;
9
- compilerOptions: ts.CompilerOptions;
10
- checker: ts.TypeChecker;
11
- printer: ts.Printer;
12
- options: ITransformOptions;
13
- transformer: ts.TransformationContext;
14
- importer: ImportProgrammer;
15
- extras: {
16
- addDiagnostic: (diag: ts.Diagnostic) => number;
17
- };
18
- }
1
+ import ts from "typescript";
2
+
3
+ import { ImportProgrammer } from "../programmers/ImportProgrammer";
4
+
5
+ import { ITransformOptions } from "./ITransformOptions";
6
+
7
+ export interface ITypiaContext {
8
+ program: ts.Program;
9
+ compilerOptions: ts.CompilerOptions;
10
+ checker: ts.TypeChecker;
11
+ printer: ts.Printer;
12
+ options: ITransformOptions;
13
+ transformer: ts.TransformationContext;
14
+ importer: ImportProgrammer;
15
+ extras: {
16
+ addDiagnostic: (diag: ts.Diagnostic) => number;
17
+ };
18
+ }
@@ -1,81 +1,81 @@
1
- import path from "path";
2
- import ts from "typescript";
3
-
4
- export namespace ImportTransformer {
5
- export const transform =
6
- (props: { from: string; to: string }) =>
7
- (context: ts.TransformationContext) =>
8
- (file: ts.SourceFile) =>
9
- transform_file({
10
- top: props.from,
11
- to: props.to,
12
- context,
13
- file,
14
- });
15
-
16
- const transform_file = (props: {
17
- top: string;
18
- to: string;
19
- context: ts.TransformationContext;
20
- file: ts.SourceFile;
21
- }): ts.SourceFile => {
22
- if (props.file.isDeclarationFile) return props.file;
23
-
24
- const from: string = get_directory_path(
25
- path.resolve(props.file.getSourceFile().fileName),
26
- );
27
- const to: string = from.replace(props.top, props.to);
28
-
29
- return ts.visitEachChild(
30
- props.file,
31
- (node) =>
32
- transform_node({
33
- top: props.top,
34
- from,
35
- to,
36
- node,
37
- }),
38
- props.context,
39
- );
40
- };
41
-
42
- const transform_node = (props: {
43
- top: string;
44
- from: string;
45
- to: string;
46
- node: ts.Node;
47
- }) => {
48
- if (
49
- !ts.isImportDeclaration(props.node) ||
50
- !ts.isStringLiteral(props.node.moduleSpecifier)
51
- )
52
- return props.node;
53
-
54
- const text: string = props.node.moduleSpecifier.text;
55
- if (text[0] !== ".") return props.node;
56
-
57
- const location: string = path.resolve(props.from, text);
58
- if (location.indexOf(props.top) === 0) return props.node;
59
-
60
- const replaced: string = (() => {
61
- const simple: string = path
62
- .relative(props.to, location)
63
- .split(path.sep)
64
- .join("/");
65
- return simple[0] === "." ? simple : `./${simple}`;
66
- })();
67
-
68
- return ts.factory.createImportDeclaration(
69
- undefined,
70
- props.node.importClause,
71
- ts.factory.createStringLiteral(replaced),
72
- props.node.assertClause,
73
- );
74
- };
75
- }
76
-
77
- const get_directory_path = (file: string): string => {
78
- const split: string[] = path.resolve(file).split(path.sep);
79
- split.pop();
80
- return path.resolve(split.join(path.sep));
81
- };
1
+ import path from "path";
2
+ import ts from "typescript";
3
+
4
+ export namespace ImportTransformer {
5
+ export const transform =
6
+ (props: { from: string; to: string }) =>
7
+ (context: ts.TransformationContext) =>
8
+ (file: ts.SourceFile) =>
9
+ transform_file({
10
+ top: props.from,
11
+ to: props.to,
12
+ context,
13
+ file,
14
+ });
15
+
16
+ const transform_file = (props: {
17
+ top: string;
18
+ to: string;
19
+ context: ts.TransformationContext;
20
+ file: ts.SourceFile;
21
+ }): ts.SourceFile => {
22
+ if (props.file.isDeclarationFile) return props.file;
23
+
24
+ const from: string = get_directory_path(
25
+ path.resolve(props.file.getSourceFile().fileName),
26
+ );
27
+ const to: string = from.replace(props.top, props.to);
28
+
29
+ return ts.visitEachChild(
30
+ props.file,
31
+ (node) =>
32
+ transform_node({
33
+ top: props.top,
34
+ from,
35
+ to,
36
+ node,
37
+ }),
38
+ props.context,
39
+ );
40
+ };
41
+
42
+ const transform_node = (props: {
43
+ top: string;
44
+ from: string;
45
+ to: string;
46
+ node: ts.Node;
47
+ }) => {
48
+ if (
49
+ !ts.isImportDeclaration(props.node) ||
50
+ !ts.isStringLiteral(props.node.moduleSpecifier)
51
+ )
52
+ return props.node;
53
+
54
+ const text: string = props.node.moduleSpecifier.text;
55
+ if (text[0] !== ".") return props.node;
56
+
57
+ const location: string = path.resolve(props.from, text);
58
+ if (location.indexOf(props.top) === 0) return props.node;
59
+
60
+ const replaced: string = (() => {
61
+ const simple: string = path
62
+ .relative(props.to, location)
63
+ .split(path.sep)
64
+ .join("/");
65
+ return simple[0] === "." ? simple : `./${simple}`;
66
+ })();
67
+
68
+ return ts.factory.createImportDeclaration(
69
+ undefined,
70
+ props.node.importClause,
71
+ ts.factory.createStringLiteral(replaced),
72
+ props.node.assertClause,
73
+ );
74
+ };
75
+ }
76
+
77
+ const get_directory_path = (file: string): string => {
78
+ const split: string[] = path.resolve(file).split(path.sep);
79
+ split.pop();
80
+ return path.resolve(split.join(path.sep));
81
+ };
@@ -1,17 +1,17 @@
1
- import ts from "typescript";
2
-
3
- import { CallExpressionTransformer } from "./CallExpressionTransformer";
4
- import { ITypiaContext } from "./ITypiaContext";
5
-
6
- export namespace NodeTransformer {
7
- export const transform = (props: {
8
- context: ITypiaContext;
9
- node: ts.Node;
10
- }): ts.Node | null =>
11
- ts.isCallExpression(props.node) && props.node.parent
12
- ? CallExpressionTransformer.transform({
13
- context: props.context,
14
- expression: props.node,
15
- })
16
- : props.node;
17
- }
1
+ import ts from "typescript";
2
+
3
+ import { CallExpressionTransformer } from "./CallExpressionTransformer";
4
+ import { ITypiaContext } from "./ITypiaContext";
5
+
6
+ export namespace NodeTransformer {
7
+ export const transform = (props: {
8
+ context: ITypiaContext;
9
+ node: ts.Node;
10
+ }): ts.Node | null =>
11
+ ts.isCallExpression(props.node) && props.node.parent
12
+ ? CallExpressionTransformer.transform({
13
+ context: props.context,
14
+ expression: props.node,
15
+ })
16
+ : props.node;
17
+ }