typia 7.0.0-dev.20240930 → 7.0.0-dev.20241002

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 (373) hide show
  1. package/lib/executable/TypiaGenerateWizard.js +1 -1
  2. package/lib/executable/TypiaGenerateWizard.js.map +1 -1
  3. package/lib/executable/TypiaSetupWizard.js +1 -1
  4. package/lib/executable/TypiaSetupWizard.js.map +1 -1
  5. package/lib/executable/setup/ArgumentParser.d.ts +1 -1
  6. package/lib/executable/setup/ArgumentParser.js +31 -33
  7. package/lib/executable/setup/ArgumentParser.js.map +1 -1
  8. package/lib/executable/setup/FileRetriever.d.ts +5 -2
  9. package/lib/executable/setup/FileRetriever.js +12 -21
  10. package/lib/executable/setup/FileRetriever.js.map +1 -1
  11. package/lib/executable/setup/PackageManager.js +4 -1
  12. package/lib/executable/setup/PackageManager.js.map +1 -1
  13. package/lib/factories/ExpressionFactory.d.ts +14 -7
  14. package/lib/factories/ExpressionFactory.js +26 -34
  15. package/lib/factories/ExpressionFactory.js.map +1 -1
  16. package/lib/factories/IdentifierFactory.d.ts +2 -2
  17. package/lib/factories/IdentifierFactory.js +10 -6
  18. package/lib/factories/IdentifierFactory.js.map +1 -1
  19. package/lib/factories/MetadataCollection.js +4 -1
  20. package/lib/factories/MetadataCollection.js.map +1 -1
  21. package/lib/factories/MetadataCommentTagFactory.js +133 -128
  22. package/lib/factories/MetadataCommentTagFactory.js.map +1 -1
  23. package/lib/factories/MetadataFactory.js +1 -1
  24. package/lib/factories/MetadataFactory.js.map +1 -1
  25. package/lib/factories/MetadataTypeTagFactory.d.ts +14 -2
  26. package/lib/factories/MetadataTypeTagFactory.js +312 -267
  27. package/lib/factories/MetadataTypeTagFactory.js.map +1 -1
  28. package/lib/factories/MetadataTypeTagSchemaFactory.d.ts +4 -1
  29. package/lib/factories/MetadataTypeTagSchemaFactory.js +70 -61
  30. package/lib/factories/MetadataTypeTagSchemaFactory.js.map +1 -1
  31. package/lib/factories/NumericRangeFactory.d.ts +2 -2
  32. package/lib/factories/NumericRangeFactory.js +2 -10
  33. package/lib/factories/NumericRangeFactory.js.map +1 -1
  34. package/lib/factories/StatementFactory.d.ts +14 -3
  35. package/lib/factories/StatementFactory.js +16 -8
  36. package/lib/factories/StatementFactory.js.map +1 -1
  37. package/lib/factories/TemplateFactory.js +24 -18
  38. package/lib/factories/TemplateFactory.js.map +1 -1
  39. package/lib/factories/TypeFactory.d.ts +10 -2
  40. package/lib/factories/TypeFactory.js +65 -53
  41. package/lib/factories/TypeFactory.js.map +1 -1
  42. package/lib/factories/internal/metadata/iterate_metadata.js +4 -1
  43. package/lib/factories/internal/metadata/iterate_metadata.js.map +1 -1
  44. package/lib/factories/internal/metadata/iterate_metadata_comment_tags.js +16 -11
  45. package/lib/factories/internal/metadata/iterate_metadata_comment_tags.js.map +1 -1
  46. package/lib/factories/internal/metadata/iterate_metadata_escape.js +5 -1
  47. package/lib/factories/internal/metadata/iterate_metadata_escape.js.map +1 -1
  48. package/lib/factories/internal/metadata/iterate_metadata_function.js.map +1 -1
  49. package/lib/factories/internal/metadata/iterate_metadata_intersection.js +6 -1
  50. package/lib/factories/internal/metadata/iterate_metadata_intersection.js.map +1 -1
  51. package/lib/factories/internal/metadata/iterate_metadata_map.js +5 -1
  52. package/lib/factories/internal/metadata/iterate_metadata_map.js.map +1 -1
  53. package/lib/factories/internal/metadata/iterate_metadata_native.js +11 -3
  54. package/lib/factories/internal/metadata/iterate_metadata_native.js.map +1 -1
  55. package/lib/factories/internal/metadata/iterate_metadata_set.js +5 -1
  56. package/lib/factories/internal/metadata/iterate_metadata_set.js.map +1 -1
  57. package/lib/index.mjs +25 -25
  58. package/lib/index.mjs.map +1 -1
  59. package/lib/programmers/AssertProgrammer.js +36 -22
  60. package/lib/programmers/AssertProgrammer.js.map +1 -1
  61. package/lib/programmers/CheckerProgrammer.js +316 -251
  62. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  63. package/lib/programmers/FeatureProgrammer.js +34 -20
  64. package/lib/programmers/FeatureProgrammer.js.map +1 -1
  65. package/lib/programmers/IsProgrammer.js +41 -22
  66. package/lib/programmers/IsProgrammer.js.map +1 -1
  67. package/lib/programmers/RandomProgrammer.js +171 -135
  68. package/lib/programmers/RandomProgrammer.js.map +1 -1
  69. package/lib/programmers/TypiaProgrammer.d.ts +2 -2
  70. package/lib/programmers/TypiaProgrammer.js +79 -75
  71. package/lib/programmers/TypiaProgrammer.js.map +1 -1
  72. package/lib/programmers/ValidateProgrammer.js +55 -24
  73. package/lib/programmers/ValidateProgrammer.js.map +1 -1
  74. package/lib/programmers/functional/FunctionalAssertParametersProgrammer.js +30 -15
  75. package/lib/programmers/functional/FunctionalAssertParametersProgrammer.js.map +1 -1
  76. package/lib/programmers/functional/FunctionalAssertReturnProgrammer.js +16 -13
  77. package/lib/programmers/functional/FunctionalAssertReturnProgrammer.js.map +1 -1
  78. package/lib/programmers/functional/FunctionalIsParametersProgrammer.js +11 -8
  79. package/lib/programmers/functional/FunctionalIsParametersProgrammer.js.map +1 -1
  80. package/lib/programmers/functional/FunctionalIsReturnProgrammer.js +8 -2
  81. package/lib/programmers/functional/FunctionalIsReturnProgrammer.js.map +1 -1
  82. package/lib/programmers/functional/FunctionalValidateParametersProgrammer.js +11 -5
  83. package/lib/programmers/functional/FunctionalValidateParametersProgrammer.js.map +1 -1
  84. package/lib/programmers/functional/FunctionalValidateReturnProgrammer.js +8 -2
  85. package/lib/programmers/functional/FunctionalValidateReturnProgrammer.js.map +1 -1
  86. package/lib/programmers/helpers/CloneJoiner.js +13 -4
  87. package/lib/programmers/helpers/CloneJoiner.js.map +1 -1
  88. package/lib/programmers/helpers/FunctionImporter.js +10 -7
  89. package/lib/programmers/helpers/FunctionImporter.js.map +1 -1
  90. package/lib/programmers/helpers/NotationJoiner.d.ts +2 -1
  91. package/lib/programmers/helpers/NotationJoiner.js +40 -33
  92. package/lib/programmers/helpers/NotationJoiner.js.map +1 -1
  93. package/lib/programmers/helpers/PruneJoiner.js +6 -3
  94. package/lib/programmers/helpers/PruneJoiner.js.map +1 -1
  95. package/lib/programmers/helpers/RandomJoiner.d.ts +1 -1
  96. package/lib/programmers/helpers/RandomJoiner.js +4 -1
  97. package/lib/programmers/helpers/RandomJoiner.js.map +1 -1
  98. package/lib/programmers/helpers/RandomRanger.js.map +1 -1
  99. package/lib/programmers/helpers/StringifyJoinder.js +5 -2
  100. package/lib/programmers/helpers/StringifyJoinder.js.map +1 -1
  101. package/lib/programmers/helpers/StringifyPredicator.d.ts +1 -1
  102. package/lib/programmers/helpers/StringifyPredicator.js +4 -3
  103. package/lib/programmers/helpers/StringifyPredicator.js.map +1 -1
  104. package/lib/programmers/helpers/UnionExplorer.d.ts +52 -12
  105. package/lib/programmers/helpers/UnionExplorer.js +183 -144
  106. package/lib/programmers/helpers/UnionExplorer.js.map +1 -1
  107. package/lib/programmers/helpers/UnionPredicator.d.ts +1 -1
  108. package/lib/programmers/helpers/UnionPredicator.js +7 -7
  109. package/lib/programmers/http/HttpAssertFormDataProgrammer.js +8 -2
  110. package/lib/programmers/http/HttpAssertFormDataProgrammer.js.map +1 -1
  111. package/lib/programmers/http/HttpAssertHeadersProgrammer.js +8 -2
  112. package/lib/programmers/http/HttpAssertHeadersProgrammer.js.map +1 -1
  113. package/lib/programmers/http/HttpAssertQueryProgrammer.js +8 -2
  114. package/lib/programmers/http/HttpAssertQueryProgrammer.js.map +1 -1
  115. package/lib/programmers/http/HttpFormDataProgrammer.js +84 -71
  116. package/lib/programmers/http/HttpFormDataProgrammer.js.map +1 -1
  117. package/lib/programmers/http/HttpHeadersProgrammer.js +76 -69
  118. package/lib/programmers/http/HttpHeadersProgrammer.js.map +1 -1
  119. package/lib/programmers/http/HttpIsFormDataProgrammer.js +12 -3
  120. package/lib/programmers/http/HttpIsFormDataProgrammer.js.map +1 -1
  121. package/lib/programmers/http/HttpIsHeadersProgrammer.js +12 -3
  122. package/lib/programmers/http/HttpIsHeadersProgrammer.js.map +1 -1
  123. package/lib/programmers/http/HttpIsQueryProgrammer.js +12 -3
  124. package/lib/programmers/http/HttpIsQueryProgrammer.js.map +1 -1
  125. package/lib/programmers/http/HttpParameterProgrammer.js +17 -10
  126. package/lib/programmers/http/HttpParameterProgrammer.js.map +1 -1
  127. package/lib/programmers/http/HttpQueryProgrammer.js +76 -63
  128. package/lib/programmers/http/HttpQueryProgrammer.js.map +1 -1
  129. package/lib/programmers/http/HttpValidateFormDataProgrammer.js +8 -2
  130. package/lib/programmers/http/HttpValidateFormDataProgrammer.js.map +1 -1
  131. package/lib/programmers/http/HttpValidateHeadersProgrammer.js +8 -2
  132. package/lib/programmers/http/HttpValidateHeadersProgrammer.js.map +1 -1
  133. package/lib/programmers/http/HttpValidateQueryProgrammer.js +8 -2
  134. package/lib/programmers/http/HttpValidateQueryProgrammer.js.map +1 -1
  135. package/lib/programmers/internal/application_escaped.js +4 -4
  136. package/lib/programmers/internal/application_escaped.js.map +1 -1
  137. package/lib/programmers/internal/application_templates.js +8 -2
  138. package/lib/programmers/internal/application_templates.js.map +1 -1
  139. package/lib/programmers/internal/application_union_discriminator.d.ts +1 -1
  140. package/lib/programmers/internal/application_union_discriminator.js +6 -6
  141. package/lib/programmers/internal/application_union_discriminator.js.map +1 -1
  142. package/lib/programmers/internal/application_v30_object.js +6 -3
  143. package/lib/programmers/internal/application_v30_object.js.map +1 -1
  144. package/lib/programmers/internal/application_v31_object.js +4 -1
  145. package/lib/programmers/internal/application_v31_object.js.map +1 -1
  146. package/lib/programmers/internal/check_array_length.js +21 -26
  147. package/lib/programmers/internal/check_array_length.js.map +1 -1
  148. package/lib/programmers/internal/check_bigint.js +18 -26
  149. package/lib/programmers/internal/check_bigint.js.map +1 -1
  150. package/lib/programmers/internal/check_dynamic_key.d.ts +1 -5
  151. package/lib/programmers/internal/check_dynamic_key.js +109 -91
  152. package/lib/programmers/internal/check_dynamic_key.js.map +1 -1
  153. package/lib/programmers/internal/check_dynamic_properties.js +92 -91
  154. package/lib/programmers/internal/check_dynamic_properties.js.map +1 -1
  155. package/lib/programmers/internal/check_everything.js +1 -1
  156. package/lib/programmers/internal/check_everything.js.map +1 -1
  157. package/lib/programmers/internal/check_native.js +8 -5
  158. package/lib/programmers/internal/check_native.js.map +1 -1
  159. package/lib/programmers/internal/check_number.js +59 -65
  160. package/lib/programmers/internal/check_number.js.map +1 -1
  161. package/lib/programmers/internal/check_object.js +31 -22
  162. package/lib/programmers/internal/check_object.js.map +1 -1
  163. package/lib/programmers/internal/check_string.js +18 -26
  164. package/lib/programmers/internal/check_string.js.map +1 -1
  165. package/lib/programmers/internal/check_template.js +20 -21
  166. package/lib/programmers/internal/check_template.js.map +1 -1
  167. package/lib/programmers/internal/check_union_array_like.js +86 -53
  168. package/lib/programmers/internal/check_union_array_like.js.map +1 -1
  169. package/lib/programmers/internal/decode_union_object.js +59 -49
  170. package/lib/programmers/internal/decode_union_object.js.map +1 -1
  171. package/lib/programmers/internal/feature_object_entries.js +31 -37
  172. package/lib/programmers/internal/feature_object_entries.js.map +1 -1
  173. package/lib/programmers/internal/llm_schema_escaped.js +29 -11
  174. package/lib/programmers/internal/llm_schema_escaped.js.map +1 -1
  175. package/lib/programmers/internal/llm_schema_object.js +4 -1
  176. package/lib/programmers/internal/llm_schema_object.js.map +1 -1
  177. package/lib/programmers/internal/metadata_to_pattern.js +44 -41
  178. package/lib/programmers/internal/metadata_to_pattern.js.map +1 -1
  179. package/lib/programmers/internal/postfix_of_tuple.d.ts +1 -1
  180. package/lib/programmers/internal/postfix_of_tuple.js +3 -0
  181. package/lib/programmers/internal/postfix_of_tuple.js.map +1 -1
  182. package/lib/programmers/internal/prune_object_properties.js +7 -4
  183. package/lib/programmers/internal/prune_object_properties.js.map +1 -1
  184. package/lib/programmers/internal/random_custom.js +8 -14
  185. package/lib/programmers/internal/random_custom.js.map +1 -1
  186. package/lib/programmers/internal/stringify_dynamic_properties.js +8 -5
  187. package/lib/programmers/internal/stringify_dynamic_properties.js.map +1 -1
  188. package/lib/programmers/internal/stringify_regular_properties.js +4 -4
  189. package/lib/programmers/internal/stringify_regular_properties.js.map +1 -1
  190. package/lib/programmers/internal/template_to_pattern.js +10 -5
  191. package/lib/programmers/internal/template_to_pattern.js.map +1 -1
  192. package/lib/programmers/internal/wrap_metadata_rest_tuple.d.ts +1 -2
  193. package/lib/programmers/internal/wrap_metadata_rest_tuple.js +3 -0
  194. package/lib/programmers/internal/wrap_metadata_rest_tuple.js.map +1 -1
  195. package/lib/programmers/json/JsonAssertParseProgrammer.js +8 -2
  196. package/lib/programmers/json/JsonAssertParseProgrammer.js.map +1 -1
  197. package/lib/programmers/json/JsonAssertStringifyProgrammer.js +8 -2
  198. package/lib/programmers/json/JsonAssertStringifyProgrammer.js.map +1 -1
  199. package/lib/programmers/json/JsonIsParseProgrammer.js +8 -2
  200. package/lib/programmers/json/JsonIsParseProgrammer.js.map +1 -1
  201. package/lib/programmers/json/JsonIsStringifyProgrammer.js +8 -2
  202. package/lib/programmers/json/JsonIsStringifyProgrammer.js.map +1 -1
  203. package/lib/programmers/json/JsonStringifyProgrammer.js +126 -95
  204. package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
  205. package/lib/programmers/json/JsonValidateParseProgrammer.js +8 -2
  206. package/lib/programmers/json/JsonValidateParseProgrammer.js.map +1 -1
  207. package/lib/programmers/json/JsonValidateStringifyProgrammer.js +12 -3
  208. package/lib/programmers/json/JsonValidateStringifyProgrammer.js.map +1 -1
  209. package/lib/programmers/misc/MiscAssertCloneProgrammer.js +8 -2
  210. package/lib/programmers/misc/MiscAssertCloneProgrammer.js.map +1 -1
  211. package/lib/programmers/misc/MiscAssertPruneProgrammer.js +12 -3
  212. package/lib/programmers/misc/MiscAssertPruneProgrammer.js.map +1 -1
  213. package/lib/programmers/misc/MiscCloneProgrammer.js +203 -162
  214. package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
  215. package/lib/programmers/misc/MiscIsCloneProgrammer.js +8 -2
  216. package/lib/programmers/misc/MiscIsCloneProgrammer.js.map +1 -1
  217. package/lib/programmers/misc/MiscIsPruneProgrammer.js +8 -2
  218. package/lib/programmers/misc/MiscIsPruneProgrammer.js.map +1 -1
  219. package/lib/programmers/misc/MiscPruneProgrammer.js +114 -92
  220. package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
  221. package/lib/programmers/misc/MiscValidateCloneProgrammer.js +12 -3
  222. package/lib/programmers/misc/MiscValidateCloneProgrammer.js.map +1 -1
  223. package/lib/programmers/misc/MiscValidatePruneProgrammer.js +16 -4
  224. package/lib/programmers/misc/MiscValidatePruneProgrammer.js.map +1 -1
  225. package/lib/programmers/notations/NotationAssertGeneralProgrammer.js +8 -2
  226. package/lib/programmers/notations/NotationAssertGeneralProgrammer.js.map +1 -1
  227. package/lib/programmers/notations/NotationGeneralProgrammer.d.ts +4 -1
  228. package/lib/programmers/notations/NotationGeneralProgrammer.js +209 -145
  229. package/lib/programmers/notations/NotationGeneralProgrammer.js.map +1 -1
  230. package/lib/programmers/notations/NotationIsGeneralProgrammer.js +8 -2
  231. package/lib/programmers/notations/NotationIsGeneralProgrammer.js.map +1 -1
  232. package/lib/programmers/notations/NotationValidateGeneralProgrammer.js +12 -3
  233. package/lib/programmers/notations/NotationValidateGeneralProgrammer.js.map +1 -1
  234. package/lib/programmers/protobuf/ProtobufAssertDecodeProgrammer.js +8 -2
  235. package/lib/programmers/protobuf/ProtobufAssertDecodeProgrammer.js.map +1 -1
  236. package/lib/programmers/protobuf/ProtobufAssertEncodeProgrammer.js +8 -2
  237. package/lib/programmers/protobuf/ProtobufAssertEncodeProgrammer.js.map +1 -1
  238. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js +51 -30
  239. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js.map +1 -1
  240. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js +89 -65
  241. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js.map +1 -1
  242. package/lib/programmers/protobuf/ProtobufIsDecodeProgrammer.js +12 -3
  243. package/lib/programmers/protobuf/ProtobufIsDecodeProgrammer.js.map +1 -1
  244. package/lib/programmers/protobuf/ProtobufIsEncodeProgrammer.js +8 -2
  245. package/lib/programmers/protobuf/ProtobufIsEncodeProgrammer.js.map +1 -1
  246. package/lib/programmers/protobuf/ProtobufValidateDecodeProgrammer.js +8 -2
  247. package/lib/programmers/protobuf/ProtobufValidateDecodeProgrammer.js.map +1 -1
  248. package/lib/programmers/protobuf/ProtobufValidateEncodeProgrammer.js +12 -3
  249. package/lib/programmers/protobuf/ProtobufValidateEncodeProgrammer.js.map +1 -1
  250. package/lib/transformers/features/llm/LlmApplicationTransformer.js +5 -2
  251. package/lib/transformers/features/llm/LlmApplicationTransformer.js.map +1 -1
  252. package/lib/utils/NamingConvention/NamingConvention.js +41 -47
  253. package/lib/utils/NamingConvention/NamingConvention.js.map +1 -1
  254. package/package.json +1 -1
  255. package/src/executable/TypiaGenerateWizard.ts +1 -1
  256. package/src/executable/TypiaSetupWizard.ts +1 -1
  257. package/src/executable/setup/ArgumentParser.ts +27 -28
  258. package/src/executable/setup/FileRetriever.ts +14 -17
  259. package/src/executable/setup/PackageManager.ts +4 -3
  260. package/src/factories/ExpressionFactory.ts +98 -84
  261. package/src/factories/IdentifierFactory.ts +26 -7
  262. package/src/factories/MetadataCollection.ts +4 -1
  263. package/src/factories/MetadataCommentTagFactory.ts +97 -88
  264. package/src/factories/MetadataFactory.ts +2 -1
  265. package/src/factories/MetadataTypeTagFactory.ts +334 -285
  266. package/src/factories/MetadataTypeTagSchemaFactory.ts +75 -52
  267. package/src/factories/NumericRangeFactory.ts +8 -8
  268. package/src/factories/StatementFactory.ts +27 -11
  269. package/src/factories/TemplateFactory.ts +29 -21
  270. package/src/factories/TypeFactory.ts +80 -58
  271. package/src/factories/internal/metadata/iterate_metadata.ts +4 -1
  272. package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +6 -4
  273. package/src/factories/internal/metadata/iterate_metadata_escape.ts +5 -3
  274. package/src/factories/internal/metadata/iterate_metadata_function.ts +4 -4
  275. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +6 -3
  276. package/src/factories/internal/metadata/iterate_metadata_map.ts +4 -3
  277. package/src/factories/internal/metadata/iterate_metadata_native.ts +12 -9
  278. package/src/factories/internal/metadata/iterate_metadata_set.ts +5 -1
  279. package/src/programmers/AssertProgrammer.ts +46 -32
  280. package/src/programmers/CheckerProgrammer.ts +295 -261
  281. package/src/programmers/FeatureProgrammer.ts +25 -23
  282. package/src/programmers/IsProgrammer.ts +38 -23
  283. package/src/programmers/RandomProgrammer.ts +55 -39
  284. package/src/programmers/TypiaProgrammer.ts +48 -34
  285. package/src/programmers/ValidateProgrammer.ts +67 -37
  286. package/src/programmers/functional/FunctionalAssertParametersProgrammer.ts +4 -4
  287. package/src/programmers/functional/FunctionalAssertReturnProgrammer.ts +4 -4
  288. package/src/programmers/functional/FunctionalIsParametersProgrammer.ts +4 -4
  289. package/src/programmers/functional/FunctionalIsReturnProgrammer.ts +7 -7
  290. package/src/programmers/functional/FunctionalValidateParametersProgrammer.ts +14 -8
  291. package/src/programmers/functional/FunctionalValidateReturnProgrammer.ts +7 -7
  292. package/src/programmers/helpers/CloneJoiner.ts +17 -7
  293. package/src/programmers/helpers/FunctionImporter.ts +12 -11
  294. package/src/programmers/helpers/NotationJoiner.ts +91 -82
  295. package/src/programmers/helpers/ProtobufUtil.ts +2 -2
  296. package/src/programmers/helpers/PruneJoiner.ts +7 -3
  297. package/src/programmers/helpers/RandomJoiner.ts +12 -6
  298. package/src/programmers/helpers/RandomRanger.ts +8 -1
  299. package/src/programmers/helpers/StringifyJoinder.ts +5 -2
  300. package/src/programmers/helpers/StringifyPredicator.ts +4 -3
  301. package/src/programmers/helpers/UnionExplorer.ts +287 -205
  302. package/src/programmers/helpers/UnionPredicator.ts +5 -5
  303. package/src/programmers/http/HttpAssertFormDataProgrammer.ts +8 -2
  304. package/src/programmers/http/HttpAssertHeadersProgrammer.ts +8 -2
  305. package/src/programmers/http/HttpAssertQueryProgrammer.ts +8 -2
  306. package/src/programmers/http/HttpFormDataProgrammer.ts +139 -114
  307. package/src/programmers/http/HttpHeadersProgrammer.ts +150 -121
  308. package/src/programmers/http/HttpIsFormDataProgrammer.ts +12 -6
  309. package/src/programmers/http/HttpIsHeadersProgrammer.ts +12 -6
  310. package/src/programmers/http/HttpIsQueryProgrammer.ts +12 -6
  311. package/src/programmers/http/HttpParameterProgrammer.ts +16 -11
  312. package/src/programmers/http/HttpQueryProgrammer.ts +141 -116
  313. package/src/programmers/http/HttpValidateFormDataProgrammer.ts +8 -2
  314. package/src/programmers/http/HttpValidateHeadersProgrammer.ts +8 -2
  315. package/src/programmers/http/HttpValidateQueryProgrammer.ts +8 -2
  316. package/src/programmers/internal/application_escaped.ts +6 -6
  317. package/src/programmers/internal/application_templates.ts +8 -6
  318. package/src/programmers/internal/application_union_discriminator.ts +6 -6
  319. package/src/programmers/internal/application_v30_object.ts +6 -3
  320. package/src/programmers/internal/application_v31_object.ts +4 -1
  321. package/src/programmers/internal/application_v31_tuple.ts +1 -1
  322. package/src/programmers/internal/check_array_length.ts +31 -30
  323. package/src/programmers/internal/check_bigint.ts +31 -31
  324. package/src/programmers/internal/check_dynamic_key.ts +155 -126
  325. package/src/programmers/internal/check_dynamic_properties.ts +155 -154
  326. package/src/programmers/internal/check_everything.ts +1 -1
  327. package/src/programmers/internal/check_native.ts +11 -5
  328. package/src/programmers/internal/check_number.ts +88 -84
  329. package/src/programmers/internal/check_object.ts +45 -31
  330. package/src/programmers/internal/check_string.ts +31 -30
  331. package/src/programmers/internal/check_template.ts +34 -32
  332. package/src/programmers/internal/check_union_array_like.ts +255 -228
  333. package/src/programmers/internal/decode_union_object.ts +92 -75
  334. package/src/programmers/internal/feature_object_entries.ts +43 -46
  335. package/src/programmers/internal/llm_schema_escaped.ts +36 -13
  336. package/src/programmers/internal/llm_schema_object.ts +4 -1
  337. package/src/programmers/internal/metadata_to_pattern.ts +31 -23
  338. package/src/programmers/internal/postfix_of_tuple.ts +3 -0
  339. package/src/programmers/internal/prune_object_properties.ts +7 -4
  340. package/src/programmers/internal/random_custom.ts +25 -23
  341. package/src/programmers/internal/stringify_dynamic_properties.ts +162 -157
  342. package/src/programmers/internal/stringify_regular_properties.ts +7 -7
  343. package/src/programmers/internal/template_to_pattern.ts +12 -4
  344. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +3 -0
  345. package/src/programmers/json/JsonAssertParseProgrammer.ts +8 -2
  346. package/src/programmers/json/JsonAssertStringifyProgrammer.ts +8 -2
  347. package/src/programmers/json/JsonIsParseProgrammer.ts +8 -2
  348. package/src/programmers/json/JsonIsStringifyProgrammer.ts +8 -2
  349. package/src/programmers/json/JsonStringifyProgrammer.ts +88 -66
  350. package/src/programmers/json/JsonValidateParseProgrammer.ts +8 -2
  351. package/src/programmers/json/JsonValidateStringifyProgrammer.ts +12 -6
  352. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +8 -2
  353. package/src/programmers/misc/MiscAssertPruneProgrammer.ts +12 -3
  354. package/src/programmers/misc/MiscCloneProgrammer.ts +186 -155
  355. package/src/programmers/misc/MiscIsCloneProgrammer.ts +8 -2
  356. package/src/programmers/misc/MiscIsPruneProgrammer.ts +8 -2
  357. package/src/programmers/misc/MiscPruneProgrammer.ts +77 -63
  358. package/src/programmers/misc/MiscValidateCloneProgrammer.ts +12 -6
  359. package/src/programmers/misc/MiscValidatePruneProgrammer.ts +16 -7
  360. package/src/programmers/notations/NotationAssertGeneralProgrammer.ts +8 -2
  361. package/src/programmers/notations/NotationGeneralProgrammer.ts +218 -160
  362. package/src/programmers/notations/NotationIsGeneralProgrammer.ts +8 -2
  363. package/src/programmers/notations/NotationValidateGeneralProgrammer.ts +12 -6
  364. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +8 -2
  365. package/src/programmers/protobuf/ProtobufAssertEncodeProgrammer.ts +8 -2
  366. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +48 -46
  367. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +67 -55
  368. package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +12 -6
  369. package/src/programmers/protobuf/ProtobufIsEncodeProgrammer.ts +8 -2
  370. package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +8 -2
  371. package/src/programmers/protobuf/ProtobufValidateEncodeProgrammer.ts +12 -6
  372. package/src/transformers/features/llm/LlmApplicationTransformer.ts +7 -6
  373. package/src/utils/NamingConvention/NamingConvention.ts +40 -42
@@ -2,58 +2,81 @@ import { Metadata } from "../schemas/metadata/Metadata";
2
2
  import { MetadataObject } from "../schemas/metadata/MetadataObject";
3
3
 
4
4
  export namespace MetadataTypeTagSchemaFactory {
5
- export const object =
6
- (report: (msg: string) => false) =>
7
- (obj: MetadataObject): object | undefined => {
8
- if (obj.recursive) {
9
- report(`${obj.name} has recursive type`);
10
- return undefined;
5
+ export const object = (props: {
6
+ report: (msg: string) => false;
7
+ object: MetadataObject;
8
+ }): object | undefined => {
9
+ if (props.object.recursive) {
10
+ props.report(`${props.object.name} has recursive type`);
11
+ return undefined;
12
+ }
13
+ const output: any = {};
14
+ for (const p of props.object.properties) {
15
+ const key: string | null = p.key.getSoleLiteral()!;
16
+ if (key === null) {
17
+ props.report(
18
+ `${props.object.name} has non-literal key type: ${p.key.getName()}`,
19
+ );
20
+ continue;
11
21
  }
12
- const output: any = {};
13
- for (const p of obj.properties) {
14
- const key: string | null = p.key.getSoleLiteral()!;
15
- if (key === null) {
16
- report(`${obj.name} has non-literal key type: ${p.key.getName()}`);
17
- continue;
18
- }
19
- output[key] = iterate(report)({ object: obj, key })(p.value);
20
- }
21
- return output;
22
- };
22
+ output[key] = iterate({
23
+ report: props.report,
24
+ object: props.object,
25
+ key,
26
+ metadata: p.value,
27
+ });
28
+ }
29
+ return output;
30
+ };
23
31
 
24
- const iterate =
25
- (report: (msg: string) => false) =>
26
- (parent: { object: MetadataObject; key: string }) =>
27
- (meta: Metadata): any => {
28
- if (
29
- meta.any ||
30
- meta.atomics.length ||
31
- meta.arrays.length ||
32
- meta.natives.length ||
33
- meta.functions.length
34
- )
35
- report(`${parent.object.name}.${parent.key} has non-literal type`);
36
- else if (meta.size() > 1)
37
- report(`${parent.object.name}.${parent.key} has union type`);
38
- else if (meta.size() === 0)
39
- if (meta.nullable) return null;
40
- else if (meta.isRequired() === true)
41
- report(`${parent.object.name}.${parent.key} has non-literal type`);
42
- else return undefined;
43
- else if (meta.constants.length)
44
- return meta.constants[0]!.values[0]!.value;
45
- else if (meta.tuples.length) {
46
- const tuple = meta.tuples[0]!;
47
- if (tuple.type.isRest())
48
- report(`${parent.object.name}.${parent.key} has rest tuple type`);
49
- else if (tuple.type.recursive)
50
- report(
51
- `${parent.object.name}.${parent.key} has recursive tuple type`,
52
- );
53
- else if (tuple.type.elements.some((e) => e.required === false))
54
- report(`${parent.object.name}.${parent.key} has optional tuple type`);
55
- return tuple.type.elements.map(iterate(report)(parent));
56
- } else if (meta.objects.length) return object(report)(meta.objects[0]!);
57
- else report(`${parent.object.name}.${parent.key} has non-literal type`);
58
- };
32
+ const iterate = (props: {
33
+ report: (message: string) => false;
34
+ object: MetadataObject;
35
+ key: string;
36
+ metadata: Metadata;
37
+ }): any => {
38
+ if (
39
+ props.metadata.any ||
40
+ props.metadata.atomics.length ||
41
+ props.metadata.arrays.length ||
42
+ props.metadata.natives.length ||
43
+ props.metadata.functions.length
44
+ )
45
+ props.report(`${props.object.name}.${props.key} has non-literal type`);
46
+ else if (props.metadata.size() > 1)
47
+ props.report(`${props.object.name}.${props.key} has union type`);
48
+ else if (props.metadata.size() === 0)
49
+ if (props.metadata.nullable) return null;
50
+ else if (props.metadata.isRequired() === true)
51
+ props.report(`${props.object.name}.${props.key} has non-literal type`);
52
+ else return undefined;
53
+ else if (props.metadata.constants.length)
54
+ return props.metadata.constants[0]!.values[0]!.value;
55
+ else if (props.metadata.tuples.length) {
56
+ const tuple = props.metadata.tuples[0]!;
57
+ if (tuple.type.isRest())
58
+ props.report(`${props.object.name}.${props.key} has rest tuple type`);
59
+ else if (tuple.type.recursive)
60
+ props.report(
61
+ `${props.object.name}.${props.key} has recursive tuple type`,
62
+ );
63
+ else if (tuple.type.elements.some((e) => e.required === false))
64
+ props.report(
65
+ `${props.object.name}.${props.key} has optional tuple type`,
66
+ );
67
+ return tuple.type.elements.map((elem) =>
68
+ iterate({
69
+ report: props.report,
70
+ object: props.object,
71
+ key: props.key,
72
+ metadata: elem,
73
+ }),
74
+ );
75
+ } else if (props.metadata.objects.length)
76
+ return object({
77
+ report: props.report,
78
+ object: props.metadata.objects[0]!,
79
+ });
80
+ else props.report(`${props.object.name}.${props.key} has non-literal type`);
81
+ };
59
82
  }
@@ -5,15 +5,15 @@ import { ProtobufAtomic } from "../typings/ProtobufAtomic";
5
5
  import { ExpressionFactory } from "./ExpressionFactory";
6
6
 
7
7
  export namespace NumericRangeFactory {
8
- export const number =
9
- (type: ProtobufAtomic.Numeric) =>
10
- (input: ts.Expression): ts.Expression =>
11
- NumberPredicator[type](input);
8
+ export const number = (
9
+ type: ProtobufAtomic.Numeric,
10
+ input: ts.Expression,
11
+ ): ts.Expression => NumberPredicator[type](input);
12
12
 
13
- export const bigint =
14
- (type: ProtobufAtomic.BigNumeric) =>
15
- (input: ts.Expression): ts.Expression =>
16
- BigIntPredicator[type](input);
13
+ export const bigint = (
14
+ type: ProtobufAtomic.BigNumeric,
15
+ input: ts.Expression,
16
+ ): ts.Expression => BigIntPredicator[type](input);
17
17
  }
18
18
 
19
19
  namespace NumberPredicator {
@@ -3,39 +3,55 @@ import ts from "typescript";
3
3
  import { TypeFactory } from "./TypeFactory";
4
4
 
5
5
  export namespace StatementFactory {
6
- export const mut = (name: string, initializer?: ts.Expression) =>
6
+ export const mut = (props: {
7
+ name: string;
8
+ type?: ts.TypeNode | undefined;
9
+ initializer?: ts.Expression | undefined;
10
+ }) =>
7
11
  ts.factory.createVariableStatement(
8
12
  undefined,
9
13
  ts.factory.createVariableDeclarationList(
10
14
  [
11
15
  ts.factory.createVariableDeclaration(
12
- name,
16
+ props.name,
13
17
  undefined,
14
- initializer === undefined ? TypeFactory.keyword("any") : undefined,
15
- initializer,
18
+ props.type !== undefined
19
+ ? props.type
20
+ : props.initializer === undefined
21
+ ? TypeFactory.keyword("any")
22
+ : undefined,
23
+ props.initializer,
16
24
  ),
17
25
  ],
18
26
  ts.NodeFlags.Let,
19
27
  ),
20
28
  );
21
29
 
22
- export const constant = (name: string, initializer?: ts.Expression) =>
30
+ export const constant = (props: {
31
+ name: string;
32
+ type?: ts.TypeNode | undefined;
33
+ value?: ts.Expression | undefined;
34
+ }) =>
23
35
  ts.factory.createVariableStatement(
24
36
  undefined,
25
37
  ts.factory.createVariableDeclarationList(
26
38
  [
27
39
  ts.factory.createVariableDeclaration(
28
- name,
40
+ props.name,
29
41
  undefined,
30
- undefined,
31
- initializer,
42
+ props.type !== undefined
43
+ ? props.type
44
+ : props.value === undefined
45
+ ? TypeFactory.keyword("any")
46
+ : undefined,
47
+ props.value,
32
48
  ),
33
49
  ],
34
50
  ts.NodeFlags.Const,
35
51
  ),
36
52
  );
37
53
 
38
- export const entry = (key: string) => (value: string) =>
54
+ export const entry = (props: { key: string; value: string }) =>
39
55
  ts.factory.createVariableDeclarationList(
40
56
  [
41
57
  ts.factory.createVariableDeclaration(
@@ -43,13 +59,13 @@ export namespace StatementFactory {
43
59
  ts.factory.createBindingElement(
44
60
  undefined,
45
61
  undefined,
46
- ts.factory.createIdentifier(key),
62
+ ts.factory.createIdentifier(props.key),
47
63
  undefined,
48
64
  ),
49
65
  ts.factory.createBindingElement(
50
66
  undefined,
51
67
  undefined,
52
- ts.factory.createIdentifier(value),
68
+ ts.factory.createIdentifier(props.value),
53
69
  undefined,
54
70
  ),
55
71
  ]),
@@ -7,26 +7,32 @@ export namespace TemplateFactory {
7
7
  (expressions as ts.StringLiteral[]).map((str) => str.text).join(""),
8
8
  );
9
9
 
10
- const it: IIterator = {
10
+ const iterator: IIterator = {
11
11
  value: "",
12
12
  index: 0,
13
13
  };
14
- gather(expressions)(it);
14
+ gather({
15
+ expressions,
16
+ iterator,
17
+ });
15
18
 
16
- const head: ts.TemplateHead = ts.factory.createTemplateHead(it.value);
19
+ const head: ts.TemplateHead = ts.factory.createTemplateHead(iterator.value);
17
20
  const spans: ts.TemplateSpan[] = [];
18
21
 
19
22
  while (true) {
20
- const elem: ts.Expression = expressions[it.index++]!;
21
- gather(expressions)(it);
23
+ const elem: ts.Expression = expressions[iterator.index++]!;
24
+ gather({
25
+ expressions,
26
+ iterator,
27
+ });
22
28
 
23
- const broken: boolean = it.index === expressions.length;
29
+ const broken: boolean = iterator.index === expressions.length;
24
30
  spans.push(
25
31
  ts.factory.createTemplateSpan(
26
32
  elem,
27
33
  broken
28
- ? ts.factory.createTemplateTail(it.value)
29
- : ts.factory.createTemplateMiddle(it.value),
34
+ ? ts.factory.createTemplateTail(iterator.value)
35
+ : ts.factory.createTemplateMiddle(iterator.value),
30
36
  ),
31
37
  );
32
38
  if (broken === true) break;
@@ -34,20 +40,22 @@ export namespace TemplateFactory {
34
40
  return ts.factory.createTemplateExpression(head, spans);
35
41
  };
36
42
 
37
- const gather =
38
- (expressions: ts.Expression[]) =>
39
- (it: IIterator): void => {
40
- const found: number = expressions.findIndex(
41
- (elem, index) => index >= it.index && !ts.isStringLiteral(elem),
42
- );
43
+ const gather = (props: {
44
+ expressions: ts.Expression[];
45
+ iterator: IIterator;
46
+ }): void => {
47
+ const found: number = props.expressions.findIndex(
48
+ (elem, index) =>
49
+ index >= props.iterator.index && !ts.isStringLiteral(elem),
50
+ );
43
51
 
44
- const last: number = found !== -1 ? found : expressions.length;
45
- it.value = expressions
46
- .slice(it.index, last)
47
- .map((elem) => (elem as ts.StringLiteral).text)
48
- .reduce((x, y) => x + y, "");
49
- it.index = last;
50
- };
52
+ const last: number = found !== -1 ? found : props.expressions.length;
53
+ props.iterator.value = props.expressions
54
+ .slice(props.iterator.index, last)
55
+ .map((elem) => (elem as ts.StringLiteral).text)
56
+ .reduce((x, y) => x + y, "");
57
+ props.iterator.index = last;
58
+ };
51
59
 
52
60
  interface IIterator {
53
61
  value: string;
@@ -17,75 +17,97 @@ export namespace TypeFactory {
17
17
  : null;
18
18
  };
19
19
 
20
- export const getReturnType =
21
- (checker: ts.TypeChecker) =>
22
- (type: ts.Type) =>
23
- (name: string): ts.Type | null => {
24
- // FIND TO-JSON METHOD
25
- const symbol: ts.Symbol | undefined = type.getProperty(name);
26
- if (!symbol) return null;
27
- else if (!symbol.valueDeclaration) return null;
20
+ export const getReturnTypeOfClassMethod = (props: {
21
+ checker: ts.TypeChecker;
22
+ class: ts.Type;
23
+ function: string;
24
+ }): ts.Type | null => {
25
+ // FIND TO-JSON METHOD
26
+ const symbol: ts.Symbol | undefined = props.class.getProperty(
27
+ props.function,
28
+ );
29
+ if (!symbol) return null;
30
+ else if (!symbol.valueDeclaration) return null;
28
31
 
29
- // GET FUNCTION DECLARATION
30
- const functor: ts.Type = checker.getTypeOfSymbolAtLocation(
31
- symbol,
32
- symbol.valueDeclaration,
33
- );
32
+ // GET FUNCTION DECLARATION
33
+ const functor: ts.Type = props.checker.getTypeOfSymbolAtLocation(
34
+ symbol,
35
+ symbol.valueDeclaration,
36
+ );
34
37
 
35
- // RETURNS THE RETURN-TYPE
36
- const signature: ts.Signature | undefined = checker.getSignaturesOfType(
37
- functor,
38
- ts.SignatureKind.Call,
39
- )[0];
40
- return signature ? signature.getReturnType() : null;
41
- };
38
+ // RETURNS THE RETURN-TYPE
39
+ const signature: ts.Signature | undefined =
40
+ props.checker.getSignaturesOfType(functor, ts.SignatureKind.Call)[0];
41
+ return signature ? signature.getReturnType() : null;
42
+ };
42
43
 
43
- export const getFullName =
44
- (checker: ts.TypeChecker) =>
45
- (type: ts.Type, symbol?: ts.Symbol): string => {
46
- // PRIMITIVE
47
- symbol ??= type.aliasSymbol ?? type.getSymbol();
48
- if (symbol === undefined) return checker.typeToString(type);
44
+ export const getFullName = (props: {
45
+ checker: ts.TypeChecker;
46
+ type: ts.Type;
47
+ symbol?: ts.Symbol;
48
+ }): string => {
49
+ // PRIMITIVE
50
+ const symbol =
51
+ props.symbol ?? props.type.aliasSymbol ?? props.type.getSymbol();
52
+ if (symbol === undefined) return props.checker.typeToString(props.type);
49
53
 
50
- // UNION OR INTERSECT
51
- if (type.aliasSymbol === undefined && type.isUnionOrIntersection()) {
52
- const joiner: string = type.isIntersection() ? " & " : " | ";
53
- return type.types
54
- .map((child) => getFullName(checker)(child))
55
- .join(joiner);
56
- }
54
+ // UNION OR INTERSECT
55
+ if (
56
+ props.type.aliasSymbol === undefined &&
57
+ props.type.isUnionOrIntersection()
58
+ ) {
59
+ const joiner: string = props.type.isIntersection() ? " & " : " | ";
60
+ return props.type.types
61
+ .map((child) =>
62
+ getFullName({
63
+ checker: props.checker,
64
+ type: child,
65
+ }),
66
+ )
67
+ .join(joiner);
68
+ }
57
69
 
58
- //----
59
- // SPECIALIZATION
60
- //----
61
- const name: string = get_name(symbol);
70
+ //----
71
+ // SPECIALIZATION
72
+ //----
73
+ const name: string = get_name(symbol);
62
74
 
63
- // CHECK GENERIC
64
- const generic: readonly ts.Type[] = type.aliasSymbol
65
- ? type.aliasTypeArguments || []
66
- : checker.getTypeArguments(type as ts.TypeReference);
67
- return generic.length
68
- ? name === "Promise"
69
- ? getFullName(checker)(generic[0]!)
70
- : `${name}<${generic
71
- .map((child) => getFullName(checker)(child))
72
- .join(", ")}>`
73
- : name;
74
- };
75
+ // CHECK GENERIC
76
+ const generic: readonly ts.Type[] = props.type.aliasSymbol
77
+ ? (props.type.aliasTypeArguments ?? [])
78
+ : props.checker.getTypeArguments(props.type as ts.TypeReference);
79
+ return generic.length
80
+ ? name === "Promise"
81
+ ? getFullName({
82
+ checker: props.checker,
83
+ type: generic[0]!,
84
+ })
85
+ : `${name}<${generic
86
+ .map((child) =>
87
+ getFullName({
88
+ checker: props.checker,
89
+ type: child,
90
+ }),
91
+ )
92
+ .join(", ")}>`
93
+ : name;
94
+ };
75
95
 
76
- const explore_name =
77
- (decl: ts.Node) =>
78
- (name: string): string =>
79
- ts.isModuleBlock(decl)
80
- ? explore_name(decl.parent.parent)(
81
- `${decl.parent.name.getFullText().trim()}.${name}`,
82
- )
83
- : name;
96
+ const explore_name = (props: { node: ts.Node; name: string }): string =>
97
+ ts.isModuleBlock(props.node)
98
+ ? explore_name({
99
+ node: props.node.parent.parent,
100
+ name: `${props.node.parent.name.getFullText().trim()}.${props.name}`,
101
+ })
102
+ : props.name;
84
103
 
85
104
  const get_name = (symbol: ts.Symbol): string => {
86
105
  const parent = symbol.getDeclarations()?.[0]?.parent;
87
106
  return parent
88
- ? explore_name(parent)(symbol.escapedName.toString())
107
+ ? explore_name({
108
+ node: parent,
109
+ name: symbol.escapedName.toString(),
110
+ })
89
111
  : "__type";
90
112
  };
91
113
 
@@ -21,7 +21,10 @@ import { iterate_metadata_union } from "./iterate_metadata_union";
21
21
  export const iterate_metadata = (props: IMetadataIteratorProps): void => {
22
22
  if (props.type.isTypeParameter() === true) {
23
23
  props.errors.push({
24
- name: TypeFactory.getFullName(props.checker)(props.type),
24
+ name: TypeFactory.getFullName({
25
+ checker: props.checker,
26
+ type: props.type,
27
+ }),
25
28
  explore: { ...props.explore },
26
29
  messages: ["non-specified generic argument found."],
27
30
  });
@@ -11,9 +11,11 @@ export const iterate_metadata_comment_tags = (props: {
11
11
  props.object.tagged_ = true;
12
12
 
13
13
  for (const property of props.object.properties) {
14
- MetadataCommentTagFactory.analyze(props.errors)(property.value)(
15
- property.jsDocTags,
16
- {
14
+ MetadataCommentTagFactory.analyze({
15
+ errors: props.errors,
16
+ metadata: property.value,
17
+ tags: property.jsDocTags,
18
+ explore: {
17
19
  top: false,
18
20
  object: props.object,
19
21
  property: property.key.isSoleLiteral()
@@ -25,6 +27,6 @@ export const iterate_metadata_comment_tags = (props: {
25
27
  escaped: false,
26
28
  output: false,
27
29
  },
28
- );
30
+ });
29
31
  }
30
32
  };
@@ -15,9 +15,11 @@ export const iterate_metadata_escape = (
15
15
  if (props.options.escape === false || props.explore.escaped === true)
16
16
  return false;
17
17
 
18
- const escaped: ts.Type | null = TypeFactory.getReturnType(props.checker)(
19
- props.type,
20
- )("toJSON");
18
+ const escaped: ts.Type | null = TypeFactory.getReturnTypeOfClassMethod({
19
+ checker: props.checker,
20
+ class: props.type,
21
+ function: "toJSON",
22
+ });
21
23
  if (escaped === null) return false;
22
24
 
23
25
  if (props.metadata.escaped === null) {
@@ -69,11 +69,11 @@ export const iterate_metadata_function = (
69
69
  functional: false,
70
70
  },
71
71
  type: async
72
- ? (props.checker.getTypeArguments(
73
- signature.getReturnType() as ts.TypeReference,
74
- )?.[0] ??
72
+ ? (props.checker.getTypeArguments(
73
+ signature.getReturnType() as ts.TypeReference,
74
+ )?.[0] ??
75
75
  props.checker.getTypeFromTypeNode(TypeFactory.keyword("any")))
76
- : signature.getReturnType(),
76
+ : signature.getReturnType(),
77
77
  explore: {
78
78
  ...props.explore,
79
79
  top: false,
@@ -185,9 +185,12 @@ export const iterate_metadata_intersection = (
185
185
 
186
186
  // ASSIGN TAGS
187
187
  if (objects.length) {
188
- const tags: IMetadataTypeTag[] = MetadataTypeTagFactory.analyze(
189
- props.errors,
190
- )(target)(objects.map((om) => om.objects).flat(), props.explore);
188
+ const tags: IMetadataTypeTag[] = MetadataTypeTagFactory.analyze({
189
+ errors: props.errors,
190
+ type: target,
191
+ objects: objects.map((om) => om.objects).flat(),
192
+ explore: props.explore,
193
+ });
191
194
  if (tags.length)
192
195
  if (target === "array") props.metadata.arrays.at(-1)!.tags.push(tags);
193
196
  else if (atomics.size)
@@ -11,10 +11,11 @@ export const iterate_metadata_map = (
11
11
  ): boolean => {
12
12
  const type: ts.Type = props.checker.getApparentType(props.type);
13
13
 
14
- const name: string = TypeFactory.getFullName(props.checker)(
14
+ const name: string = TypeFactory.getFullName({
15
+ checker: props.checker,
15
16
  type,
16
- type.getSymbol(),
17
- );
17
+ symbol: type.getSymbol(),
18
+ });
18
19
  const generic: readonly ts.Type[] | undefined = type.aliasSymbol
19
20
  ? type.aliasTypeArguments
20
21
  : props.checker.getTypeArguments(type as ts.TypeReference);
@@ -8,13 +8,14 @@ import { IMetadataIteratorProps } from "./IMetadataIteratorProps";
8
8
  export const iterate_metadata_native = (
9
9
  props: IMetadataIteratorProps,
10
10
  ): boolean => {
11
- const name: string = TypeFactory.getFullName(props.checker)(
12
- props.type,
13
- props.type.getSymbol(),
14
- );
15
- const simple = SIMPLES.get(name);
11
+ const name: string = TypeFactory.getFullName({
12
+ checker: props.checker,
13
+ type: props.type,
14
+ symbol: props.type.getSymbol(),
15
+ });
16
+ const simple: IClassInfo | undefined = SIMPLES.get(name);
16
17
  if (
17
- simple &&
18
+ simple !== undefined &&
18
19
  validate({
19
20
  checker: props.checker,
20
21
  type: props.type,
@@ -46,9 +47,11 @@ const validate = (props: {
46
47
  info: IClassInfo;
47
48
  }) =>
48
49
  (props.info.methods ?? []).every((method) => {
49
- const returnType = TypeFactory.getReturnType(props.checker)(props.type)(
50
- method.name,
51
- );
50
+ const returnType = TypeFactory.getReturnTypeOfClassMethod({
51
+ checker: props.checker,
52
+ class: props.type,
53
+ function: method.name,
54
+ });
52
55
  return (
53
56
  returnType !== null &&
54
57
  props.checker.typeToString(returnType) === method.return
@@ -11,7 +11,11 @@ export const iterate_metadata_set = (
11
11
  ): boolean => {
12
12
  const type: ts.Type = props.checker.getApparentType(props.type);
13
13
 
14
- const name = TypeFactory.getFullName(props.checker)(type, type.getSymbol());
14
+ const name = TypeFactory.getFullName({
15
+ checker: props.checker,
16
+ type: type,
17
+ symbol: type.getSymbol(),
18
+ });
15
19
  const generic = type.aliasSymbol
16
20
  ? type.aliasTypeArguments
17
21
  : props.checker.getTypeArguments(type as ts.TypeReference);