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
@@ -47,8 +47,14 @@ export namespace HttpIsQueryProgrammer {
47
47
  statements: [
48
48
  ...is.statements,
49
49
  ...decode.statements,
50
- StatementFactory.constant("__is", is.arrow),
51
- StatementFactory.constant("__decode", decode.arrow),
50
+ StatementFactory.constant({
51
+ name: "__is",
52
+ value: is.arrow,
53
+ }),
54
+ StatementFactory.constant({
55
+ name: "__decode",
56
+ value: decode.arrow,
57
+ }),
52
58
  ],
53
59
  arrow: ts.factory.createArrowFunction(
54
60
  undefined,
@@ -61,14 +67,14 @@ export namespace HttpIsQueryProgrammer {
61
67
  undefined,
62
68
  ts.factory.createBlock(
63
69
  [
64
- StatementFactory.constant(
65
- "value",
66
- ts.factory.createCallExpression(
70
+ StatementFactory.constant({
71
+ name: "value",
72
+ value: ts.factory.createCallExpression(
67
73
  ts.factory.createIdentifier("__decode"),
68
74
  undefined,
69
75
  [ts.factory.createIdentifier("input")],
70
76
  ),
71
- ),
77
+ }),
72
78
  ts.factory.createIfStatement(
73
79
  ts.factory.createPrefixUnaryExpression(
74
80
  ts.SyntaxKind.ExclamationToken,
@@ -37,9 +37,9 @@ export namespace HttpParameterProgrammer {
37
37
  props.modulo.getText(),
38
38
  );
39
39
  const block: ts.Statement[] = [
40
- StatementFactory.constant(
41
- "assert",
42
- AssertProgrammer.write({
40
+ StatementFactory.constant({
41
+ name: "assert",
42
+ value: AssertProgrammer.write({
43
43
  ...props,
44
44
  context: {
45
45
  ...props.context,
@@ -52,13 +52,15 @@ export namespace HttpParameterProgrammer {
52
52
  guard: false,
53
53
  },
54
54
  }),
55
- ),
56
- StatementFactory.constant(
57
- "value",
58
- ts.factory.createCallExpression(importer.use(atomic), undefined, [
59
- ts.factory.createIdentifier("input"),
60
- ]),
61
- ),
55
+ }),
56
+ StatementFactory.constant({
57
+ name: "value",
58
+ value: ts.factory.createCallExpression(
59
+ importer.use(atomic),
60
+ undefined,
61
+ [ts.factory.createIdentifier("input")],
62
+ ),
63
+ }),
62
64
  ts.factory.createReturnStatement(
63
65
  ts.factory.createCallExpression(
64
66
  ts.factory.createIdentifier("assert"),
@@ -79,7 +81,10 @@ export namespace HttpParameterProgrammer {
79
81
  ],
80
82
  ts.factory.createTypeReferenceNode(
81
83
  props.name ??
82
- TypeFactory.getFullName(props.context.checker)(props.type),
84
+ TypeFactory.getFullName({
85
+ checker: props.context.checker,
86
+ type: props.type,
87
+ }),
83
88
  ),
84
89
  undefined,
85
90
  ts.factory.createBlock(
@@ -59,7 +59,10 @@ export namespace HttpQueryProgrammer {
59
59
 
60
60
  // DO TRANSFORM
61
61
  const object: MetadataObject = result.data.objects[0]!;
62
- const statements: ts.Statement[] = decode_object(props.importer)(object);
62
+ const statements: ts.Statement[] = decode_object({
63
+ importer: props.importer,
64
+ object,
65
+ });
63
66
  return {
64
67
  functions: {},
65
68
  statements: [],
@@ -81,7 +84,10 @@ export namespace HttpQueryProgrammer {
81
84
  [
82
85
  ts.factory.createTypeReferenceNode(
83
86
  props.name ??
84
- TypeFactory.getFullName(props.context.checker)(props.type),
87
+ TypeFactory.getFullName({
88
+ checker: props.context.checker,
89
+ type: props.type,
90
+ }),
85
91
  ),
86
92
  ],
87
93
  false,
@@ -173,132 +179,151 @@ export namespace HttpQueryProgrammer {
173
179
  return errors;
174
180
  };
175
181
 
176
- const decode_object =
177
- (importer: FunctionImporter) =>
178
- (object: MetadataObject): ts.Statement[] => {
179
- const input: ts.Identifier = ts.factory.createIdentifier("input");
180
- const output: ts.Identifier = ts.factory.createIdentifier("output");
182
+ const decode_object = (props: {
183
+ importer: FunctionImporter;
184
+ object: MetadataObject;
185
+ }): ts.Statement[] => {
186
+ const input: ts.Identifier = ts.factory.createIdentifier("input");
187
+ const output: ts.Identifier = ts.factory.createIdentifier("output");
181
188
 
182
- return [
183
- ts.factory.createExpressionStatement(
184
- ts.factory.createBinaryExpression(
185
- input,
186
- ts.factory.createToken(ts.SyntaxKind.EqualsToken),
187
- ts.factory.createAsExpression(
188
- ts.factory.createCallExpression(
189
- importer.use("params"),
190
- undefined,
191
- [input],
192
- ),
193
- ts.factory.createTypeReferenceNode("URLSearchParams"),
189
+ return [
190
+ ts.factory.createExpressionStatement(
191
+ ts.factory.createBinaryExpression(
192
+ input,
193
+ ts.factory.createToken(ts.SyntaxKind.EqualsToken),
194
+ ts.factory.createAsExpression(
195
+ ts.factory.createCallExpression(
196
+ props.importer.use("params"),
197
+ undefined,
198
+ [input],
194
199
  ),
200
+ ts.factory.createTypeReferenceNode("URLSearchParams"),
195
201
  ),
196
202
  ),
197
- StatementFactory.constant(
198
- "output",
199
- ts.factory.createObjectLiteralExpression(
200
- object.properties.map((prop) =>
201
- decode_regular_property(importer)(prop),
202
- ),
203
- true,
203
+ ),
204
+ StatementFactory.constant({
205
+ name: "output",
206
+ value: ts.factory.createObjectLiteralExpression(
207
+ props.object.properties.map((p) =>
208
+ decode_regular_property({
209
+ importer: props.importer,
210
+ property: p,
211
+ }),
204
212
  ),
213
+ true,
205
214
  ),
206
- ts.factory.createReturnStatement(
207
- ts.factory.createAsExpression(output, TypeFactory.keyword("any")),
208
- ),
209
- ];
210
- };
215
+ }),
216
+ ts.factory.createReturnStatement(
217
+ ts.factory.createAsExpression(output, TypeFactory.keyword("any")),
218
+ ),
219
+ ];
220
+ };
211
221
 
212
- const decode_regular_property =
213
- (importer: FunctionImporter) =>
214
- (property: MetadataProperty): ts.PropertyAssignment => {
215
- const key: string = property.key.constants[0]!.values[0]!.value as string;
216
- const value: Metadata = property.value;
222
+ const decode_regular_property = (props: {
223
+ importer: FunctionImporter;
224
+ property: MetadataProperty;
225
+ }): ts.PropertyAssignment => {
226
+ const key: string = props.property.key.constants[0]!.values[0]!
227
+ .value as string;
228
+ const value: Metadata = props.property.value;
217
229
 
218
- const [type, isArray]: [Atomic.Literal, boolean] = value.atomics.length
219
- ? [value.atomics[0]!.type, false]
220
- : value.constants.length
221
- ? [value.constants[0]!.type, false]
222
- : value.templates.length
223
- ? ["string", false]
224
- : (() => {
225
- const meta =
226
- value.arrays[0]?.type.value ??
227
- value.tuples[0]!.type.elements[0]!;
228
- return meta.atomics.length
229
- ? [meta.atomics[0]!.type, true]
230
- : meta.templates.length
231
- ? ["string", true]
232
- : [meta.constants[0]!.type, true];
233
- })();
234
- return ts.factory.createPropertyAssignment(
235
- Escaper.variable(key) ? key : ts.factory.createStringLiteral(key),
236
- isArray
237
- ? decode_array(importer)(value)(
238
- ts.factory.createCallExpression(
239
- IdentifierFactory.access(
240
- ts.factory.createCallExpression(
241
- ts.factory.createIdentifier("input.getAll"),
242
- undefined,
243
- [ts.factory.createStringLiteral(key)],
244
- ),
245
- )("map"),
246
- undefined,
247
- [
248
- ts.factory.createArrowFunction(
249
- undefined,
250
- undefined,
251
- [IdentifierFactory.parameter("elem")],
252
- undefined,
253
- undefined,
254
- decode_value(importer)(type)(false)(
255
- ts.factory.createIdentifier("elem"),
256
- ),
257
- ),
258
- ],
259
- ),
260
- )
261
- : decode_value(importer)(type)(
262
- value.nullable === false && value.isRequired() === false,
263
- )(
264
- ts.factory.createCallExpression(
265
- ts.factory.createIdentifier("input.get"),
266
- undefined,
267
- [ts.factory.createStringLiteral(key)],
230
+ const [type, isArray]: [Atomic.Literal, boolean] = value.atomics.length
231
+ ? [value.atomics[0]!.type, false]
232
+ : value.constants.length
233
+ ? [value.constants[0]!.type, false]
234
+ : value.templates.length
235
+ ? ["string", false]
236
+ : (() => {
237
+ const meta =
238
+ value.arrays[0]?.type.value ??
239
+ value.tuples[0]!.type.elements[0]!;
240
+ return meta.atomics.length
241
+ ? [meta.atomics[0]!.type, true]
242
+ : meta.templates.length
243
+ ? ["string", true]
244
+ : [meta.constants[0]!.type, true];
245
+ })();
246
+ return ts.factory.createPropertyAssignment(
247
+ Escaper.variable(key) ? key : ts.factory.createStringLiteral(key),
248
+ isArray
249
+ ? decode_array({
250
+ importer: props.importer,
251
+ metadata: value,
252
+ input: ts.factory.createCallExpression(
253
+ IdentifierFactory.access(
254
+ ts.factory.createCallExpression(
255
+ ts.factory.createIdentifier("input.getAll"),
256
+ undefined,
257
+ [ts.factory.createStringLiteral(key)],
258
+ ),
259
+ "map",
268
260
  ),
261
+ undefined,
262
+ [
263
+ ts.factory.createArrowFunction(
264
+ undefined,
265
+ undefined,
266
+ [IdentifierFactory.parameter("elem")],
267
+ undefined,
268
+ undefined,
269
+ decode_value({
270
+ importer: props.importer,
271
+ type,
272
+ coalesce: false,
273
+ input: ts.factory.createIdentifier("elem"),
274
+ }),
275
+ ),
276
+ ],
269
277
  ),
270
- );
271
- };
278
+ })
279
+ : decode_value({
280
+ importer: props.importer,
281
+ type,
282
+ coalesce: value.nullable === false && value.isRequired() === false,
283
+ input: ts.factory.createCallExpression(
284
+ ts.factory.createIdentifier("input.get"),
285
+ undefined,
286
+ [ts.factory.createStringLiteral(key)],
287
+ ),
288
+ }),
289
+ );
290
+ };
272
291
 
273
- const decode_value =
274
- (importer: FunctionImporter) =>
275
- (type: Atomic.Literal) =>
276
- (onlyUndefindable: boolean) =>
277
- (value: ts.Expression) => {
278
- const call = ts.factory.createCallExpression(
279
- importer.use(type),
280
- undefined,
281
- [value],
282
- );
283
- return onlyUndefindable
284
- ? ts.factory.createBinaryExpression(
285
- call,
286
- ts.factory.createToken(ts.SyntaxKind.QuestionQuestionToken),
287
- ts.factory.createIdentifier("undefined"),
288
- )
289
- : call;
290
- };
292
+ const decode_value = (props: {
293
+ importer: FunctionImporter;
294
+ type: Atomic.Literal;
295
+ coalesce: boolean;
296
+ input: ts.Expression;
297
+ }) => {
298
+ const call = ts.factory.createCallExpression(
299
+ props.importer.use(props.type),
300
+ undefined,
301
+ [props.input],
302
+ );
303
+ return props.coalesce
304
+ ? ts.factory.createBinaryExpression(
305
+ call,
306
+ ts.factory.createToken(ts.SyntaxKind.QuestionQuestionToken),
307
+ ts.factory.createIdentifier("undefined"),
308
+ )
309
+ : call;
310
+ };
291
311
 
292
- const decode_array =
293
- (importer: FunctionImporter) =>
294
- (value: Metadata) =>
295
- (expression: ts.Expression): ts.Expression =>
296
- value.nullable || value.isRequired() === false
297
- ? ts.factory.createCallExpression(importer.use("array"), undefined, [
298
- expression,
299
- value.nullable
312
+ const decode_array = (props: {
313
+ importer: FunctionImporter;
314
+ metadata: Metadata;
315
+ input: ts.Expression;
316
+ }): ts.Expression =>
317
+ props.metadata.nullable || props.metadata.isRequired() === false
318
+ ? ts.factory.createCallExpression(
319
+ props.importer.use("array"),
320
+ undefined,
321
+ [
322
+ props.input,
323
+ props.metadata.nullable
300
324
  ? ts.factory.createNull()
301
325
  : ts.factory.createIdentifier("undefined"),
302
- ])
303
- : expression;
326
+ ],
327
+ )
328
+ : props.input;
304
329
  }
@@ -41,8 +41,14 @@ export namespace HttpValidateFormDataProgrammer {
41
41
  },
42
42
  statements: [
43
43
  ...validate.statements,
44
- StatementFactory.constant("__validate", validate.arrow),
45
- StatementFactory.constant("__decode", decode.arrow),
44
+ StatementFactory.constant({
45
+ name: "__validate",
46
+ value: validate.arrow,
47
+ }),
48
+ StatementFactory.constant({
49
+ name: "__decode",
50
+ value: decode.arrow,
51
+ }),
46
52
  ],
47
53
  arrow: ts.factory.createArrowFunction(
48
54
  undefined,
@@ -41,8 +41,14 @@ export namespace HttpValidateHeadersProgrammer {
41
41
  },
42
42
  statements: [
43
43
  ...validate.statements,
44
- StatementFactory.constant("__validate", validate.arrow),
45
- StatementFactory.constant("__decode", decode.arrow),
44
+ StatementFactory.constant({
45
+ name: "__validate",
46
+ value: validate.arrow,
47
+ }),
48
+ StatementFactory.constant({
49
+ name: "__decode",
50
+ value: decode.arrow,
51
+ }),
46
52
  ],
47
53
  arrow: ts.factory.createArrowFunction(
48
54
  undefined,
@@ -46,8 +46,14 @@ export namespace HttpValidateQueryProgrammer {
46
46
  },
47
47
  statements: [
48
48
  ...validate.statements,
49
- StatementFactory.constant("__validate", validate.arrow),
50
- StatementFactory.constant("__decode", decode.arrow),
49
+ StatementFactory.constant({
50
+ name: "__validate",
51
+ value: validate.arrow,
52
+ }),
53
+ StatementFactory.constant({
54
+ name: "__decode",
55
+ value: decode.arrow,
56
+ }),
51
57
  ],
52
58
  arrow: ts.factory.createArrowFunction(
53
59
  undefined,
@@ -38,17 +38,17 @@ export const application_escaped = <Version extends "3.0" | "3.1">(props: {
38
38
  * @internal
39
39
  */
40
40
  const is_string = <Version extends "3.0" | "3.1">(
41
- elem: Schema<Version>,
42
- ): elem is StringSchema<Version> =>
43
- (elem as StringSchema<Version>).type === "string";
41
+ schema: Schema<Version>,
42
+ ): schema is StringSchema<Version> =>
43
+ (schema as StringSchema<Version>).type === "string";
44
44
 
45
45
  /**
46
46
  * @internal
47
47
  */
48
48
  const is_one_of = <Version extends "3.0" | "3.1">(
49
- elem: Schema<Version>,
50
- ): elem is OneOfSchema<Version> =>
51
- Array.isArray((elem as OneOfSchema<Version>).oneOf);
49
+ schema: Schema<Version>,
50
+ ): schema is OneOfSchema<Version> =>
51
+ Array.isArray((schema as OneOfSchema<Version>).oneOf);
52
52
 
53
53
  /**
54
54
  * @internal
@@ -24,24 +24,26 @@ export const application_templates = <Version extends "3.0" | "3.1">(
24
24
  if (pureTemplates.length)
25
25
  output.push({
26
26
  type: "string",
27
- pattern: metadata_to_pattern(true)(
28
- Metadata.create({
27
+ pattern: metadata_to_pattern({
28
+ top: true,
29
+ metadata: Metadata.create({
29
30
  ...Metadata.initialize(),
30
31
  templates: pureTemplates,
31
32
  }),
32
- ),
33
+ }),
33
34
  });
34
35
  for (const tpl of taggedTemplates)
35
36
  output.push(
36
37
  application_plugin({
37
38
  schema: {
38
39
  type: "string",
39
- pattern: metadata_to_pattern(false)(
40
- Metadata.create({
40
+ pattern: metadata_to_pattern({
41
+ top: false,
42
+ metadata: Metadata.create({
41
43
  ...Metadata.initialize(),
42
44
  templates: [tpl],
43
45
  }),
44
- ),
46
+ }),
45
47
  },
46
48
  tags: tpl.tags ?? [],
47
49
  }) as any,
@@ -5,19 +5,19 @@ import { Metadata } from "../../schemas/metadata/Metadata";
5
5
  import { UnionPredicator } from "../helpers/UnionPredicator";
6
6
 
7
7
  export const application_union_discriminator = (
8
- meta: Metadata,
8
+ metadata: Metadata,
9
9
  ): OpenApi.IJsonSchema.IOneOf.IDiscriminator | undefined => {
10
10
  if (
11
- meta.size() === 0 ||
12
- meta.size() !== meta.objects.length ||
13
- meta.objects.some((o) => o.isLiteral()) === true
11
+ metadata.size() === 0 ||
12
+ metadata.size() !== metadata.objects.length ||
13
+ metadata.objects.some((o) => o.isLiteral()) === true
14
14
  )
15
15
  return undefined;
16
16
  const specialized: UnionPredicator.ISpecialized[] = UnionPredicator.object(
17
- meta.objects,
17
+ metadata.objects,
18
18
  );
19
19
  const meet: boolean =
20
- specialized.length === meta.objects.length &&
20
+ specialized.length === metadata.objects.length &&
21
21
  specialized.every(
22
22
  (s) => s.property.key.isSoleLiteral() && s.property.value.isSoleLiteral(),
23
23
  ) &&
@@ -95,7 +95,10 @@ const create_object_schema = (props: {
95
95
  properties[key] = schema;
96
96
  if (property.value.isRequired() === true) required.push(key);
97
97
  } else {
98
- const pattern: string = metadata_to_pattern(true)(property.key);
98
+ const pattern: string = metadata_to_pattern({
99
+ top: true,
100
+ metadata: property.key,
101
+ });
99
102
  if (pattern === PatternUtil.STRING)
100
103
  extraMeta.additionalProperties = [property.value, schema];
101
104
  else extraMeta.patternProperties[pattern] = [property.value, schema];
@@ -140,7 +143,7 @@ const join = (props: {
140
143
  else if (elements.length === 1) return elements[0]![1]!;
141
144
 
142
145
  // MERGE METADATA AND GENERATE VULNERABLE SCHEMA
143
- const meta: Metadata = elements
146
+ const metadata: Metadata = elements
144
147
  .map((tuple) => tuple[0])
145
148
  .reduce((x, y) => Metadata.merge(x, y));
146
149
  return (
@@ -148,7 +151,7 @@ const join = (props: {
148
151
  blockNever: true,
149
152
  components: props.components,
150
153
  attribute: {},
151
- metadata: meta,
154
+ metadata,
152
155
  }) ?? undefined
153
156
  );
154
157
  };
@@ -78,7 +78,10 @@ const create_object_schema = (props: {
78
78
  properties[key] = schema;
79
79
  if (property.value.isRequired() === true) required.push(key);
80
80
  } else {
81
- const pattern: string = metadata_to_pattern(true)(property.key);
81
+ const pattern: string = metadata_to_pattern({
82
+ top: true,
83
+ metadata: property.key,
84
+ });
82
85
  if (pattern === PatternUtil.STRING)
83
86
  extraMeta.additionalProperties = [property.value, schema];
84
87
  else extraMeta.patternProperties[pattern] = [property.value, schema];
@@ -7,7 +7,7 @@ import { MetadataTuple } from "../../schemas/metadata/MetadataTuple";
7
7
  * @internal
8
8
  */
9
9
  export const application_v31_tuple = (props: {
10
- generator: (meta: Metadata) => OpenApi.IJsonSchema;
10
+ generator: (metadata: Metadata) => OpenApi.IJsonSchema;
11
11
  tuple: MetadataTuple;
12
12
  }): OpenApi.IJsonSchema.ITuple => {
13
13
  const tail: Metadata | null = props.tuple.type.elements.at(-1)?.rest ?? null;
@@ -2,7 +2,6 @@ import ts from "typescript";
2
2
 
3
3
  import { ExpressionFactory } from "../../factories/ExpressionFactory";
4
4
 
5
- import { IMetadataTypeTag } from "../../schemas/metadata/IMetadataTypeTag";
6
5
  import { MetadataArray } from "../../schemas/metadata/MetadataArray";
7
6
 
8
7
  import { ITypiaContext } from "../../transformers/ITypiaContext";
@@ -12,34 +11,36 @@ import { ICheckEntry } from "../helpers/ICheckEntry";
12
11
  /**
13
12
  * @internal
14
13
  */
15
- export const check_array_length =
16
- (project: ITypiaContext) =>
17
- (array: MetadataArray) =>
18
- (input: ts.Expression): ICheckEntry => {
19
- const conditions: ICheckEntry.ICondition[][] = check_string_type_tags(
20
- project,
21
- )(array.tags)(input);
22
-
23
- return {
24
- expected: array.getName(),
25
- expression: null,
26
- conditions,
27
- };
14
+ export const check_array_length = (props: {
15
+ context: ITypiaContext;
16
+ array: MetadataArray;
17
+ input: ts.Expression;
18
+ }): ICheckEntry => {
19
+ const conditions: ICheckEntry.ICondition[][] = check_array_type_tags(props);
20
+ return {
21
+ expected: props.array.getName(),
22
+ expression: null,
23
+ conditions,
28
24
  };
25
+ };
29
26
 
30
- const check_string_type_tags =
31
- (project: ITypiaContext) =>
32
- (matrix: IMetadataTypeTag[][]) =>
33
- (input: ts.Expression): ICheckEntry.ICondition[][] =>
34
- matrix
35
- .map((row) => row.filter((tag) => !!tag.validate))
36
- .filter((row) => !!row.length)
37
- .map((row) =>
38
- row.map((tag) => ({
39
- expected: `Array<> & ${tag.name}`,
40
- expression: (
41
- tag.predicate ??
42
- ExpressionFactory.transpile(project.transformer)(tag.validate!)
43
- )(input),
44
- })),
45
- );
27
+ /**
28
+ * @internal
29
+ */
30
+ const check_array_type_tags = (props: {
31
+ context: ITypiaContext;
32
+ array: MetadataArray;
33
+ input: ts.Expression;
34
+ }): ICheckEntry.ICondition[][] =>
35
+ props.array.tags
36
+ .map((row) => row.filter((tag) => !!tag.validate))
37
+ .filter((row) => !!row.length)
38
+ .map((row) =>
39
+ row.map((tag) => ({
40
+ expected: `Array<> & ${tag.name}`,
41
+ expression: (
42
+ tag.predicate ??
43
+ ExpressionFactory.transpile(props.context.transformer, tag.validate!)
44
+ )(props.input),
45
+ })),
46
+ );