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
@@ -7,91 +7,108 @@ import { FeatureProgrammer } from "../FeatureProgrammer";
7
7
  /**
8
8
  * @internal
9
9
  */
10
- export const decode_union_object =
11
- (
12
- checker: (
13
- input: ts.Expression,
14
- obj: MetadataObject,
15
- explore: FeatureProgrammer.IExplore,
16
- ) => ts.Expression,
17
- ) =>
18
- (
19
- decoder: (
20
- input: ts.Expression,
21
- obj: MetadataObject,
22
- explore: FeatureProgrammer.IExplore,
23
- ) => ts.Expression,
24
- ) =>
25
- (success: (exp: ts.Expression) => ts.Expression) =>
26
- (escaper: (value: ts.Expression, expected: string) => ts.Statement) =>
27
- (
28
- input: ts.Expression,
29
- targets: MetadataObject[],
30
- explore: FeatureProgrammer.IExplore,
31
- ): ts.CallExpression =>
32
- ts.factory.createCallExpression(
33
- ts.factory.createArrowFunction(
34
- undefined,
35
- undefined,
36
- [],
37
- undefined,
38
- undefined,
39
- iterate(escaper)(
40
- input,
41
- targets.map((obj) => ({
42
- type: "object",
43
- is: () => success(checker(input, obj, explore)),
44
- value: () => decoder(input, obj, explore),
45
- })),
46
- `(${targets.map((t) => t.name).join(" | ")})`,
47
- ),
48
- ),
10
+ export const decode_union_object = (props: {
11
+ checker: (next: {
12
+ input: ts.Expression;
13
+ object: MetadataObject;
14
+ explore: FeatureProgrammer.IExplore;
15
+ }) => ts.Expression;
16
+ decoder: (next: {
17
+ input: ts.Expression;
18
+ object: MetadataObject;
19
+ explore: FeatureProgrammer.IExplore;
20
+ }) => ts.Expression;
21
+ success: (exp: ts.Expression) => ts.Expression;
22
+ escaper: (next: { input: ts.Expression; expected: string }) => ts.Statement;
23
+ objects: MetadataObject[];
24
+ input: ts.Expression;
25
+ explore: FeatureProgrammer.IExplore;
26
+ }): ts.CallExpression =>
27
+ ts.factory.createCallExpression(
28
+ ts.factory.createArrowFunction(
49
29
  undefined,
50
30
  undefined,
51
- );
31
+ [],
32
+ undefined,
33
+ undefined,
34
+ iterate({
35
+ escaper: props.escaper,
36
+ input: props.input,
37
+ unions: props.objects.map((object) => ({
38
+ type: "object",
39
+ is: () =>
40
+ props.success(
41
+ props.checker({
42
+ input: props.input,
43
+ explore: props.explore,
44
+ object,
45
+ }),
46
+ ),
47
+ value: () =>
48
+ props.decoder({
49
+ input: props.input,
50
+ explore: props.explore,
51
+ object,
52
+ }),
53
+ })),
54
+ expected: `(${props.objects.map((t) => t.name).join(" | ")})`,
55
+ }),
56
+ ),
57
+ undefined,
58
+ undefined,
59
+ );
52
60
 
53
- const iterate =
54
- (escaper: (value: ts.Expression, expected: string) => ts.Statement) =>
55
- (input: ts.Expression, unions: IUnion[], expected: string) => {
56
- interface IBranch {
57
- condition: null | ts.Expression;
58
- value: ts.Expression;
59
- }
60
- const branches: IBranch[] = [];
61
+ /**
62
+ * @internal
63
+ */
64
+ const iterate = (props: {
65
+ escaper: (next: { input: ts.Expression; expected: string }) => ts.Statement;
66
+ unions: IUnion[];
67
+ expected: string;
68
+ input: ts.Expression;
69
+ }) => {
70
+ interface IBranch {
71
+ condition: null | ts.Expression;
72
+ value: ts.Expression;
73
+ }
74
+ const branches: IBranch[] = [];
61
75
 
62
- for (const u of unions) {
63
- const condition: ts.Expression = u.is();
64
- if (condition.kind === ts.SyntaxKind.TrueKeyword) {
65
- branches.push({
66
- condition: null,
67
- value: u.value(),
68
- });
69
- break;
70
- }
76
+ for (const u of props.unions) {
77
+ const condition: ts.Expression = u.is();
78
+ if (condition.kind === ts.SyntaxKind.TrueKeyword) {
71
79
  branches.push({
72
- condition,
80
+ condition: null,
73
81
  value: u.value(),
74
82
  });
83
+ break;
75
84
  }
76
- if (branches.length === 0)
77
- return ts.factory.createBlock([escaper(input, expected)], true);
78
- else if (branches.length === 1 && branches[0]!.condition === null)
79
- return branches[0]!.value;
85
+ branches.push({
86
+ condition,
87
+ value: u.value(),
88
+ });
89
+ }
90
+ if (branches.length === 0)
91
+ return ts.factory.createBlock([props.escaper(props)], true);
92
+ else if (branches.length === 1 && branches[0]!.condition === null)
93
+ return branches[0]!.value;
80
94
 
81
- const statements: ts.Statement[] = branches.map((b) =>
82
- b.condition !== null
83
- ? ts.factory.createIfStatement(
84
- b.condition,
85
- ts.factory.createReturnStatement(b.value),
86
- undefined,
87
- )
88
- : ts.factory.createReturnStatement(b.value),
89
- );
90
- if (branches.at(-1)!.condition !== null)
91
- statements.push(escaper(input, expected));
92
- return ts.factory.createBlock(statements, true);
93
- };
95
+ const statements: ts.Statement[] = branches.map((b) =>
96
+ b.condition !== null
97
+ ? ts.factory.createIfStatement(
98
+ b.condition,
99
+ ts.factory.createReturnStatement(b.value),
100
+ undefined,
101
+ )
102
+ : ts.factory.createReturnStatement(b.value),
103
+ );
104
+ if (branches.at(-1)!.condition !== null)
105
+ statements.push(props.escaper(props));
106
+ return ts.factory.createBlock(statements, true);
107
+ };
94
108
 
109
+ /**
110
+ * @internal
111
+ */
95
112
  interface IUnion {
96
113
  type: string;
97
114
  is: () => ts.Expression;
@@ -12,50 +12,47 @@ import { FunctionImporter } from "../helpers/FunctionImporter";
12
12
  /**
13
13
  * @internal
14
14
  */
15
- export const feature_object_entries =
16
- <Output extends ts.ConciseBody>(
17
- config: Pick<
18
- FeatureProgrammer.IConfig<Output>,
19
- "decoder" | "path" | "trace"
20
- >,
21
- ) =>
22
- (importer: FunctionImporter) =>
23
- (object: MetadataObject) =>
24
- (input: ts.Expression, from: "object" | "top" | "array" = "object") =>
25
- object.properties.map((prop) => {
26
- const sole: string | null = prop.key.getSoleLiteral();
27
- const propInput =
28
- sole === null
29
- ? ts.factory.createIdentifier("value")
30
- : Escaper.variable(sole)
31
- ? ts.factory.createPropertyAccessExpression(
32
- input,
33
- ts.factory.createIdentifier(sole),
34
- )
35
- : ts.factory.createElementAccessExpression(
36
- input,
37
- ts.factory.createStringLiteral(sole),
38
- );
39
- return {
15
+ export const feature_object_entries = <Output extends ts.ConciseBody>(props: {
16
+ config: Pick<FeatureProgrammer.IConfig<Output>, "decoder" | "path" | "trace">;
17
+ importer: FunctionImporter;
18
+ object: MetadataObject;
19
+ input: ts.Expression;
20
+ from?: "object" | "top" | "array";
21
+ }) =>
22
+ props.object.properties.map((next) => {
23
+ const sole: string | null = next.key.getSoleLiteral();
24
+ const propInput =
25
+ sole === null
26
+ ? ts.factory.createIdentifier("value")
27
+ : Escaper.variable(sole)
28
+ ? ts.factory.createPropertyAccessExpression(
29
+ props.input,
30
+ ts.factory.createIdentifier(sole),
31
+ )
32
+ : ts.factory.createElementAccessExpression(
33
+ props.input,
34
+ ts.factory.createStringLiteral(sole),
35
+ );
36
+ return {
37
+ input: propInput,
38
+ key: next.key,
39
+ meta: next.value,
40
+ expression: props.config.decoder({
40
41
  input: propInput,
41
- key: prop.key,
42
- meta: prop.value,
43
- expression: config.decoder({
44
- input: propInput,
45
- metadata: prop.value,
46
- explore: {
47
- tracable: config.path || config.trace,
48
- source: "function",
49
- from,
50
- postfix: config.trace
51
- ? sole !== null
52
- ? IdentifierFactory.postfix(sole)
53
- : (() => {
54
- importer.use("join");
55
- return `$join(key)`;
56
- })()
57
- : "",
58
- },
59
- }),
60
- };
61
- });
42
+ metadata: next.value,
43
+ explore: {
44
+ tracable: props.config.path || props.config.trace,
45
+ source: "function",
46
+ from: props.from ?? "object",
47
+ postfix: props.config.trace
48
+ ? sole !== null
49
+ ? IdentifierFactory.postfix(sole)
50
+ : (() => {
51
+ props.importer.use("join");
52
+ return `$join(key)`;
53
+ })()
54
+ : "",
55
+ },
56
+ }),
57
+ };
58
+ });
@@ -15,7 +15,12 @@ export const llm_schema_escaped = (escaped: MetadataEscaped): ILlmSchema[] => {
15
15
  attribute: {},
16
16
  });
17
17
  if (output === null) return [];
18
- else if (is_date(new Set())(escaped.original)) {
18
+ else if (
19
+ is_date({
20
+ visited: new Set(),
21
+ metadata: escaped.original,
22
+ })
23
+ ) {
19
24
  const string: ILlmSchema.IString | undefined = is_string(output)
20
25
  ? output
21
26
  : is_one_of(output)
@@ -46,16 +51,34 @@ const is_one_of = (elem: ILlmSchema): elem is ILlmSchema.IOneOf =>
46
51
  /**
47
52
  * @internal
48
53
  */
49
- const is_date =
50
- (visited: Set<Metadata>) =>
51
- (meta: Metadata): boolean => {
52
- if (visited.has(meta)) return false;
53
- visited.add(meta);
54
+ const is_date = (props: {
55
+ visited: Set<Metadata>;
56
+ metadata: Metadata;
57
+ }): boolean => {
58
+ if (props.visited.has(props.metadata)) return false;
59
+ props.visited.add(props.metadata);
54
60
 
55
- return (
56
- meta.natives.some((name) => name === "Date") ||
57
- meta.arrays.some((array) => is_date(visited)(array.type.value)) ||
58
- meta.tuples.some((tuple) => tuple.type.elements.some(is_date(visited))) ||
59
- meta.aliases.some((alias) => is_date(visited)(alias.value))
60
- );
61
- };
61
+ return (
62
+ props.metadata.natives.some((name) => name === "Date") ||
63
+ props.metadata.arrays.some((array) =>
64
+ is_date({
65
+ visited: props.visited,
66
+ metadata: array.type.value,
67
+ }),
68
+ ) ||
69
+ props.metadata.tuples.some((tuple) =>
70
+ tuple.type.elements.some((elem) =>
71
+ is_date({
72
+ visited: props.visited,
73
+ metadata: elem,
74
+ }),
75
+ ),
76
+ ) ||
77
+ props.metadata.aliases.some((alias) =>
78
+ is_date({
79
+ visited: props.visited,
80
+ metadata: alias.value,
81
+ }),
82
+ )
83
+ );
84
+ };
@@ -72,7 +72,10 @@ export const llm_schema_object = (props: {
72
72
  properties[key] = schema;
73
73
  if (property.value.isRequired() === true) required.push(key);
74
74
  } else {
75
- const pattern: string = metadata_to_pattern(true)(property.key);
75
+ const pattern: string = metadata_to_pattern({
76
+ top: true,
77
+ metadata: property.key,
78
+ });
76
79
  if (pattern === PatternUtil.STRING)
77
80
  extraMeta.additionalProperties = [property.value, schema];
78
81
  else extraMeta.patternProperties[pattern] = [property.value, schema];
@@ -7,28 +7,36 @@ import { template_to_pattern } from "./template_to_pattern";
7
7
  /**
8
8
  * @internal
9
9
  */
10
- export const metadata_to_pattern =
11
- (top: boolean) =>
12
- (meta: Metadata): string => {
13
- if (meta.atomics.find((a) => a.type === "string") !== undefined)
14
- return "(.*)";
10
+ export const metadata_to_pattern = (props: {
11
+ top: boolean;
12
+ metadata: Metadata;
13
+ }): string => {
14
+ if (props.metadata.atomics.find((a) => a.type === "string") !== undefined)
15
+ return "(.*)";
15
16
 
16
- const values: string[] = meta.constants
17
- .map((c) => {
18
- if (c.type !== "string") return c.values.map((v) => v.toString());
19
- return (c.values.map((v) => v.value) as string[]).map((str) =>
20
- PatternUtil.escape(str),
21
- );
22
- })
23
- .flat();
24
- for (const a of meta.atomics)
25
- if (a.type === "number" || a.type === "bigint")
26
- values.push(PatternUtil.NUMBER);
27
- else if (a.type === "boolean") values.push(PatternUtil.BOOLEAN);
28
- for (const { row } of meta.templates)
29
- values.push("(" + template_to_pattern(false)(row) + ")");
17
+ const values: string[] = props.metadata.constants
18
+ .map((c) => {
19
+ if (c.type !== "string") return c.values.map((v) => v.toString());
20
+ return (c.values.map((v) => v.value) as string[]).map((str) =>
21
+ PatternUtil.escape(str),
22
+ );
23
+ })
24
+ .flat();
25
+ for (const a of props.metadata.atomics)
26
+ if (a.type === "number" || a.type === "bigint")
27
+ values.push(PatternUtil.NUMBER);
28
+ else if (a.type === "boolean") values.push(PatternUtil.BOOLEAN);
29
+ for (const { row } of props.metadata.templates)
30
+ values.push(
31
+ "(" +
32
+ template_to_pattern({
33
+ top: false,
34
+ template: row,
35
+ }) +
36
+ ")",
37
+ );
30
38
 
31
- const pattern: string =
32
- values.length === 1 ? values[0]! : "(" + values.join("|") + ")";
33
- return top ? PatternUtil.fix(pattern) : pattern;
34
- };
39
+ const pattern: string =
40
+ values.length === 1 ? values[0]! : "(" + values.join("|") + ")";
41
+ return props.top ? PatternUtil.fix(pattern) : pattern;
42
+ };
@@ -1,2 +1,5 @@
1
+ /**
2
+ * @internal
3
+ */
1
4
  export const postfix_of_tuple = (str: string): string =>
2
5
  str.endsWith('"') ? str.slice(0, -1) : `${str} + "`;
@@ -9,11 +9,11 @@ import { metadata_to_pattern } from "./metadata_to_pattern";
9
9
  /**
10
10
  * @internal
11
11
  */
12
- export const prune_object_properties = (obj: MetadataObject) => {
12
+ export const prune_object_properties = (object: MetadataObject) => {
13
13
  const input: ts.Expression = ts.factory.createIdentifier("input");
14
14
  const key: ts.Expression = ts.factory.createIdentifier("key");
15
15
 
16
- const condition: ts.Expression[] = obj.properties.map((prop) => {
16
+ const condition: ts.Expression[] = object.properties.map((prop) => {
17
17
  const name: string | null = prop.key.getSoleLiteral();
18
18
  if (name !== null)
19
19
  return ts.factory.createStrictEquality(
@@ -22,7 +22,10 @@ export const prune_object_properties = (obj: MetadataObject) => {
22
22
  );
23
23
  return ts.factory.createCallExpression(
24
24
  ts.factory.createIdentifier(
25
- `RegExp(/${metadata_to_pattern(true)(prop.key)}/).test`,
25
+ `RegExp(/${metadata_to_pattern({
26
+ top: true,
27
+ metadata: prop.key,
28
+ })}/).test`,
26
29
  ),
27
30
  undefined,
28
31
  [key],
@@ -47,7 +50,7 @@ export const prune_object_properties = (obj: MetadataObject) => {
47
50
 
48
51
  return ts.factory.createForOfStatement(
49
52
  undefined,
50
- StatementFactory.constant("key").declarationList,
53
+ StatementFactory.constant({ name: "key" }).declarationList,
51
54
  ts.factory.createCallExpression(
52
55
  ts.factory.createIdentifier("Object.keys"),
53
56
  undefined,
@@ -10,28 +10,30 @@ import { Customizable } from "../../typings/Customizable";
10
10
  /**
11
11
  * @internal
12
12
  */
13
- export const random_custom =
14
- (accessor: (name: string) => ts.Expression) =>
15
- (type: keyof Customizable) =>
16
- (tags: IMetadataTypeTag[]) =>
17
- (expression: ts.Expression) =>
18
- ExpressionFactory.coalesce(
19
- ts.factory.createCallChain(
20
- ts.factory.createPropertyAccessChain(
21
- accessor("customs"),
22
- ts.factory.createToken(ts.SyntaxKind.QuestionDotToken),
23
- ts.factory.createIdentifier(type),
24
- ),
13
+ export const random_custom = (props: {
14
+ accessor: (name: string) => ts.Expression;
15
+ type: keyof Customizable;
16
+ tags: IMetadataTypeTag[];
17
+ expression: ts.Expression;
18
+ }) =>
19
+ ExpressionFactory.coalesce(
20
+ ts.factory.createCallChain(
21
+ ts.factory.createPropertyAccessChain(
22
+ props.accessor("customs"),
25
23
  ts.factory.createToken(ts.SyntaxKind.QuestionDotToken),
26
- undefined,
27
- [
28
- LiteralFactory.generate(
29
- tags.map((t) => ({
30
- name: t.name,
31
- kind: t.kind,
32
- value: t.value,
33
- })),
34
- ),
35
- ],
24
+ ts.factory.createIdentifier(props.type),
36
25
  ),
37
- )(expression);
26
+ ts.factory.createToken(ts.SyntaxKind.QuestionDotToken),
27
+ undefined,
28
+ [
29
+ LiteralFactory.generate(
30
+ props.tags.map((t) => ({
31
+ name: t.name,
32
+ kind: t.kind,
33
+ value: t.value,
34
+ })),
35
+ ),
36
+ ],
37
+ ),
38
+ props.expression,
39
+ );