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
@@ -15,176 +15,176 @@ import { check_object } from "./check_object";
15
15
  /**
16
16
  * @internal
17
17
  */
18
- export const check_dynamic_properties =
19
- (props: check_object.IProps) =>
20
- (project: ITypiaContext) =>
21
- (importer: FunctionImporter) =>
22
- (
23
- input: ts.Expression,
24
- regular: IExpressionEntry<ts.Expression>[],
25
- dynamic: IExpressionEntry<ts.Expression>[],
26
- ): ts.Expression => {
27
- const length = IdentifierFactory.access(
28
- ts.factory.createCallExpression(
29
- ts.factory.createIdentifier("Object.keys"),
30
- undefined,
31
- [input],
32
- ),
33
- )("length");
34
- const left: ts.Expression | null =
35
- props.equals === true && dynamic.length === 0
36
- ? props.undefined === true || regular.every((r) => r.meta.isRequired())
37
- ? ts.factory.createStrictEquality(
18
+ export const check_dynamic_properties = (props: {
19
+ config: check_object.IConfig;
20
+ context: ITypiaContext;
21
+ importer: FunctionImporter;
22
+ regular: IExpressionEntry<ts.Expression>[];
23
+ dynamic: IExpressionEntry<ts.Expression>[];
24
+ input: ts.Expression;
25
+ }): ts.Expression => {
26
+ const length = IdentifierFactory.access(
27
+ ts.factory.createCallExpression(
28
+ ts.factory.createIdentifier("Object.keys"),
29
+ undefined,
30
+ [props.input],
31
+ ),
32
+ "length",
33
+ );
34
+ const left: ts.Expression | null =
35
+ props.config.equals === true && props.dynamic.length === 0
36
+ ? props.config.undefined === true ||
37
+ props.regular.every((r) => r.meta.isRequired())
38
+ ? ts.factory.createStrictEquality(
39
+ ExpressionFactory.number(
40
+ props.regular.filter((r) => r.meta.isRequired()).length,
41
+ ),
42
+ length,
43
+ )
44
+ : ts.factory.createCallExpression(
45
+ props.importer.use("is_between"),
46
+ [],
47
+ [
48
+ length,
38
49
  ExpressionFactory.number(
39
- regular.filter((r) => r.meta.isRequired()).length,
50
+ props.regular.filter((r) => r.meta.isRequired()).length,
40
51
  ),
41
- length,
42
- )
43
- : ts.factory.createCallExpression(
44
- importer.use("is_between"),
45
- [],
46
- [
47
- length,
48
- ExpressionFactory.number(
49
- regular.filter((r) => r.meta.isRequired()).length,
50
- ),
51
- ExpressionFactory.number(regular.length),
52
- ],
53
- )
54
- : null;
55
- if (
56
- props.undefined === false &&
57
- left !== null &&
58
- regular.every((r) => r.meta.isRequired())
59
- )
60
- return left;
52
+ ExpressionFactory.number(props.regular.length),
53
+ ],
54
+ )
55
+ : null;
56
+ if (
57
+ left !== null &&
58
+ props.config.undefined === false &&
59
+ props.regular.every((r) => r.meta.isRequired())
60
+ )
61
+ return left;
61
62
 
62
- const criteria = props.entries
63
- ? ts.factory.createCallExpression(props.entries, undefined, [
63
+ const criteria: ts.CallExpression = props.config.entries
64
+ ? ts.factory.createCallExpression(props.config.entries, undefined, [
65
+ ts.factory.createCallExpression(
66
+ ts.factory.createIdentifier("Object.keys"),
67
+ undefined,
68
+ [props.input],
69
+ ),
70
+ check_dynamic_property(props),
71
+ ])
72
+ : ts.factory.createCallExpression(
73
+ IdentifierFactory.access(
64
74
  ts.factory.createCallExpression(
65
75
  ts.factory.createIdentifier("Object.keys"),
66
76
  undefined,
67
- [input],
68
- ),
69
- check_dynamic_property(props)(project)(importer)(
70
- input,
71
- regular,
72
- dynamic,
77
+ [props.input],
73
78
  ),
74
- ])
75
- : ts.factory.createCallExpression(
76
- IdentifierFactory.access(
77
- ts.factory.createCallExpression(
78
- ts.factory.createIdentifier("Object.keys"),
79
- undefined,
80
- [input],
81
- ),
82
- )(props.assert ? "every" : "map"),
83
- undefined,
84
- [
85
- check_dynamic_property(props)(project)(importer)(
86
- input,
87
- regular,
88
- dynamic,
89
- ),
90
- ],
91
- );
92
- const right: ts.Expression = (props.halt || ((elem) => elem))(
93
- props.assert ? criteria : check_everything(criteria),
94
- );
95
- return left
96
- ? (props.undefined
97
- ? ts.factory.createLogicalOr
98
- : ts.factory.createLogicalAnd)(left, right)
99
- : right;
100
- };
101
-
102
- const check_dynamic_property =
103
- (props: check_object.IProps) =>
104
- (project: ITypiaContext) =>
105
- (importer: FunctionImporter) =>
106
- (
107
- input: ts.Expression,
108
- regular: IExpressionEntry<ts.Expression>[],
109
- dynamic: IExpressionEntry<ts.Expression>[],
110
- ) => {
111
- //----
112
- // IF CONDITIONS
113
- //----
114
- // PREPARE ASSETS
115
- const key = ts.factory.createIdentifier("key");
116
- const value = ts.factory.createIdentifier("value");
117
-
118
- const statements: ts.Statement[] = [];
119
- const add = (exp: ts.Expression, output: ts.Expression) =>
120
- statements.push(
121
- ts.factory.createIfStatement(
122
- exp,
123
- ts.factory.createReturnStatement(output),
79
+ props.config.assert ? "every" : "map",
124
80
  ),
81
+ undefined,
82
+ [check_dynamic_property(props)],
125
83
  );
126
- const broken = { value: false };
84
+ const right: ts.Expression = (props.config.halt || ((elem) => elem))(
85
+ props.config.assert ? criteria : check_everything(criteria),
86
+ );
87
+ return left
88
+ ? (props.config.undefined
89
+ ? ts.factory.createLogicalOr
90
+ : ts.factory.createLogicalAnd)(left, right)
91
+ : right;
92
+ };
93
+
94
+ /**
95
+ * @internal
96
+ */
97
+ const check_dynamic_property = (props: {
98
+ config: check_object.IConfig;
99
+ context: ITypiaContext;
100
+ importer: FunctionImporter;
101
+ regular: IExpressionEntry<ts.Expression>[];
102
+ dynamic: IExpressionEntry<ts.Expression>[];
103
+ input: ts.Expression;
104
+ }) => {
105
+ //----
106
+ // IF CONDITIONS
107
+ //----
108
+ // PREPARE ASSETS
109
+ const key = ts.factory.createIdentifier("key");
110
+ const value = ts.factory.createIdentifier("value");
127
111
 
128
- // GATHER CONDITIONS
129
- if (regular.length) add(is_regular_property(regular), props.positive);
112
+ const statements: ts.Statement[] = [];
113
+ const add = (expression: ts.Expression, output: ts.Expression) =>
130
114
  statements.push(
131
- StatementFactory.constant(
132
- "value",
133
- ts.factory.createElementAccessExpression(input, key),
115
+ ts.factory.createIfStatement(
116
+ expression,
117
+ ts.factory.createReturnStatement(output),
134
118
  ),
135
119
  );
136
- if (props.undefined === true)
137
- add(
138
- ts.factory.createStrictEquality(
139
- ts.factory.createIdentifier("undefined"),
140
- value,
141
- ),
142
- props.positive,
143
- );
120
+ const broken = { value: false };
144
121
 
145
- for (const entry of dynamic) {
146
- const condition: ts.Expression = check_dynamic_key(project)(importer)(
147
- key,
148
- entry.key,
149
- );
150
- if (condition.kind === ts.SyntaxKind.TrueKeyword) {
151
- statements.push(ts.factory.createReturnStatement(entry.expression));
152
- broken.value = true;
153
- break;
154
- } else add(condition, entry.expression);
155
- }
156
-
157
- //----
158
- // FUNCTION BODY
159
- //----
160
- // CLOSURE BLOCK
161
- const block: ts.Block = ts.factory.createBlock(
162
- [
163
- ...statements,
164
- ...(broken.value
165
- ? []
166
- : [
167
- ts.factory.createReturnStatement(
168
- props.equals === true
169
- ? props.superfluous(value)
170
- : props.positive,
171
- ),
172
- ]),
173
- ],
174
- true,
122
+ // GATHER CONDITIONS
123
+ if (props.regular.length)
124
+ add(is_regular_property(props.regular), props.config.positive);
125
+ statements.push(
126
+ StatementFactory.constant({
127
+ name: "value",
128
+ value: ts.factory.createElementAccessExpression(props.input, key),
129
+ }),
130
+ );
131
+ if (props.config.undefined === true)
132
+ add(
133
+ ts.factory.createStrictEquality(
134
+ ts.factory.createIdentifier("undefined"),
135
+ value,
136
+ ),
137
+ props.config.positive,
175
138
  );
176
139
 
177
- // RETURNS
178
- return ts.factory.createArrowFunction(
179
- undefined,
180
- undefined,
181
- [IdentifierFactory.parameter("key")],
182
- undefined,
183
- undefined,
184
- block,
185
- );
186
- };
140
+ for (const entry of props.dynamic) {
141
+ const condition: ts.Expression = check_dynamic_key({
142
+ context: props.context,
143
+ importer: props.importer,
144
+ metadata: entry.key,
145
+ input: key,
146
+ });
147
+ if (condition.kind === ts.SyntaxKind.TrueKeyword) {
148
+ statements.push(ts.factory.createReturnStatement(entry.expression));
149
+ broken.value = true;
150
+ break;
151
+ } else add(condition, entry.expression);
152
+ }
153
+
154
+ //----
155
+ // FUNCTION BODY
156
+ //----
157
+ // CLOSURE BLOCK
158
+ const block: ts.Block = ts.factory.createBlock(
159
+ [
160
+ ...statements,
161
+ ...(broken.value
162
+ ? []
163
+ : [
164
+ ts.factory.createReturnStatement(
165
+ props.config.equals === true
166
+ ? props.config.superfluous(value)
167
+ : props.config.positive,
168
+ ),
169
+ ]),
170
+ ],
171
+ true,
172
+ );
173
+
174
+ // RETURNS
175
+ return ts.factory.createArrowFunction(
176
+ undefined,
177
+ undefined,
178
+ [IdentifierFactory.parameter("key")],
179
+ undefined,
180
+ undefined,
181
+ block,
182
+ );
183
+ };
187
184
 
185
+ /**
186
+ * @internal
187
+ */
188
188
  const is_regular_property = (regular: IExpressionEntry[]) =>
189
189
  ts.factory.createCallExpression(
190
190
  IdentifierFactory.access(
@@ -193,7 +193,8 @@ const is_regular_property = (regular: IExpressionEntry[]) =>
193
193
  ts.factory.createStringLiteral(entry.key.getSoleLiteral()!),
194
194
  ),
195
195
  ),
196
- )("some"),
196
+ "some",
197
+ ),
197
198
  undefined,
198
199
  [
199
200
  ts.factory.createArrowFunction(
@@ -8,7 +8,7 @@ import { TypeFactory } from "../../factories/TypeFactory";
8
8
  */
9
9
  export const check_everything = (array: ts.Expression) =>
10
10
  ts.factory.createCallExpression(
11
- IdentifierFactory.access(array)("every"),
11
+ IdentifierFactory.access(array, "every"),
12
12
  undefined,
13
13
  [
14
14
  ts.factory.createArrowFunction(
@@ -5,17 +5,23 @@ import { ExpressionFactory } from "../../factories/ExpressionFactory";
5
5
  /**
6
6
  * @internal
7
7
  */
8
- export const check_native = (type: string) => (input: ts.Expression) => {
9
- const instanceOf = ExpressionFactory.isInstanceOf(type)(input);
10
- return ATOMIC_LIKE.has(type)
8
+ export const check_native = (props: {
9
+ type: string;
10
+ input: ts.Expression;
11
+ }): ts.Expression => {
12
+ const instanceOf = ExpressionFactory.isInstanceOf(props.type, props.input);
13
+ return ATOMIC_LIKE.has(props.type)
11
14
  ? ts.factory.createLogicalOr(
12
15
  ts.factory.createStrictEquality(
13
- ts.factory.createStringLiteral(type.toLowerCase()),
14
- ts.factory.createTypeOfExpression(input),
16
+ ts.factory.createStringLiteral(props.type.toLowerCase()),
17
+ ts.factory.createTypeOfExpression(props.input),
15
18
  ),
16
19
  instanceOf,
17
20
  )
18
21
  : instanceOf;
19
22
  };
20
23
 
24
+ /**
25
+ * @internal
26
+ */
21
27
  const ATOMIC_LIKE = new Set(["Boolean", "Number", "String"]);
@@ -12,96 +12,100 @@ import { OptionPredicator } from "../helpers/OptionPredicator";
12
12
  /**
13
13
  * @internal
14
14
  */
15
- export const check_number =
16
- (project: ITypiaContext, numeric: boolean) =>
17
- (atomic: MetadataAtomic) =>
18
- (input: ts.Expression): ICheckEntry => {
19
- const base = ts.factory.createStrictEquality(
20
- ts.factory.createStringLiteral("number"),
21
- ts.factory.createTypeOfExpression(input),
22
- );
23
- const addition: ts.Expression | null =
24
- numeric === true
25
- ? OptionPredicator.finite(project.options)
26
- ? ts.factory.createCallExpression(
27
- ts.factory.createIdentifier("Number.isFinite"),
28
- undefined,
29
- [input],
15
+ export const check_number = (props: {
16
+ numeric: boolean;
17
+ context: ITypiaContext;
18
+ atomic: MetadataAtomic;
19
+ input: ts.Expression;
20
+ }): ICheckEntry => {
21
+ const base: ts.BinaryExpression = ts.factory.createStrictEquality(
22
+ ts.factory.createStringLiteral("number"),
23
+ ts.factory.createTypeOfExpression(props.input),
24
+ );
25
+ const addition: ts.Expression | null =
26
+ props.numeric === true
27
+ ? OptionPredicator.finite(props.context.options)
28
+ ? ts.factory.createCallExpression(
29
+ ts.factory.createIdentifier("Number.isFinite"),
30
+ undefined,
31
+ [props.input],
32
+ )
33
+ : OptionPredicator.numeric(props.context.options)
34
+ ? ts.factory.createLogicalNot(
35
+ ts.factory.createCallExpression(
36
+ ts.factory.createIdentifier("Number.isNaN"),
37
+ undefined,
38
+ [props.input],
39
+ ),
30
40
  )
31
- : OptionPredicator.numeric(project.options)
32
- ? ts.factory.createLogicalNot(
33
- ts.factory.createCallExpression(
34
- ts.factory.createIdentifier("Number.isNaN"),
35
- undefined,
36
- [input],
37
- ),
38
- )
39
- : null
40
- : null;
41
-
42
- const conditions: ICheckEntry.ICondition[][] =
43
- check_numeric_type_tags(project)(atomic)(addition)(input);
44
-
45
- return {
46
- expected: atomic.getName(),
47
- expression:
48
- addition !== null && conditions.length === 0
49
- ? ts.factory.createLogicalAnd(base, addition)
50
- : base,
51
- conditions,
52
- };
41
+ : null
42
+ : null;
43
+ const conditions: ICheckEntry.ICondition[][] = check_numeric_type_tags({
44
+ context: props.context,
45
+ atomic: props.atomic,
46
+ input: props.input,
47
+ addition,
48
+ });
49
+ return {
50
+ expected: props.atomic.getName(),
51
+ expression:
52
+ addition !== null && conditions.length === 0
53
+ ? ts.factory.createLogicalAnd(base, addition)
54
+ : base,
55
+ conditions,
53
56
  };
57
+ };
54
58
 
55
59
  /**
56
60
  * @internal
57
61
  */
58
- const check_numeric_type_tags =
59
- (project: ITypiaContext) =>
60
- (atomic: MetadataAtomic) =>
61
- (addition: ts.Expression | null) =>
62
- (input: ts.Expression): ICheckEntry.ICondition[][] =>
63
- atomic.tags
64
- .map((row) => row.filter((tag) => !!tag.validate))
65
- .filter((row) => !!row.length)
66
- .map((row) => [
67
- ...(addition === null
68
- ? []
69
- : row.some(
70
- (tag) =>
71
- tag.kind === "type" &&
72
- (tag.value === "int32" ||
73
- tag.value === "uint32" ||
74
- tag.value === "int64" ||
75
- tag.value === "uint64" ||
76
- tag.value === "float"),
77
- ) ||
62
+ const check_numeric_type_tags = (props: {
63
+ context: ITypiaContext;
64
+ atomic: MetadataAtomic;
65
+ addition: ts.Expression | null;
66
+ input: ts.Expression;
67
+ }): ICheckEntry.ICondition[][] =>
68
+ props.atomic.tags
69
+ .map((row) => row.filter((tag) => !!tag.validate))
70
+ .filter((row) => !!row.length)
71
+ .map((row) => [
72
+ ...(props.addition === null
73
+ ? []
74
+ : row.some(
75
+ (tag) =>
76
+ tag.kind === "type" &&
77
+ (tag.value === "int32" ||
78
+ tag.value === "uint32" ||
79
+ tag.value === "int64" ||
80
+ tag.value === "uint64" ||
81
+ tag.value === "float"),
82
+ ) ||
83
+ row.some(
84
+ (tag) =>
85
+ tag.kind === "multipleOf" && typeof tag.value === "number",
86
+ ) ||
87
+ (row.some(
88
+ (tag) =>
89
+ (tag.kind === "minimum" || tag.kind === "exclusiveMinimum") &&
90
+ typeof tag.value === "number",
91
+ ) &&
78
92
  row.some(
79
93
  (tag) =>
80
- tag.kind === "multipleOf" && typeof tag.value === "number",
81
- ) ||
82
- (row.some(
83
- (tag) =>
84
- (tag.kind === "minimum" || tag.kind === "exclusiveMinimum") &&
94
+ (tag.kind === "maximum" || tag.kind === "exclusiveMaximum") &&
85
95
  typeof tag.value === "number",
86
- ) &&
87
- row.some(
88
- (tag) =>
89
- (tag.kind === "maximum" ||
90
- tag.kind === "exclusiveMaximum") &&
91
- typeof tag.value === "number",
92
- ))
93
- ? []
94
- : [
95
- {
96
- expected: "number",
97
- expression: addition!,
98
- },
99
- ]),
100
- ...row.map((tag) => ({
101
- expected: `number & ${tag.name}`,
102
- expression: (
103
- tag.predicate ??
104
- ExpressionFactory.transpile(project.transformer)(tag.validate!)
105
- )(input),
106
- })),
107
- ]);
96
+ ))
97
+ ? []
98
+ : [
99
+ {
100
+ expected: "number",
101
+ expression: props.addition!,
102
+ },
103
+ ]),
104
+ ...row.map((tag) => ({
105
+ expected: `number & ${tag.name}`,
106
+ expression: (
107
+ tag.predicate ??
108
+ ExpressionFactory.transpile(props.context.transformer, tag.validate!)
109
+ )(props.input),
110
+ })),
111
+ ]);
@@ -10,39 +10,49 @@ import { check_everything } from "./check_everything";
10
10
  /**
11
11
  * @internal
12
12
  */
13
- export const check_object =
14
- (config: check_object.IProps) =>
15
- (project: ITypiaContext) =>
16
- (importer: FunctionImporter) =>
17
- (props: {
18
- input: ts.Expression;
19
- entries: IExpressionEntry<ts.Expression>[];
20
- }) => {
21
- // PREPARE ASSETS
22
- const regular = props.entries.filter((entry) => entry.key.isSoleLiteral());
23
- const dynamic = props.entries.filter((entry) => !entry.key.isSoleLiteral());
24
- const flags: ts.Expression[] = regular.map((entry) => entry.expression);
13
+ export const check_object = (props: {
14
+ config: check_object.IConfig;
15
+ context: ITypiaContext;
16
+ importer: FunctionImporter;
17
+ input: ts.Expression;
18
+ entries: IExpressionEntry<ts.Expression>[];
19
+ }) => {
20
+ // PREPARE ASSETS
21
+ const regular = props.entries.filter((entry) => entry.key.isSoleLiteral());
22
+ const dynamic = props.entries.filter((entry) => !entry.key.isSoleLiteral());
23
+ const flags: ts.Expression[] = regular.map((entry) => entry.expression);
25
24
 
26
- // REGULAR WITHOUT DYNAMIC PROPERTIES
27
- if (config.equals === false && dynamic.length === 0)
28
- return regular.length === 0 ? config.positive : reduce(config)(flags);
25
+ // REGULAR WITHOUT DYNAMIC PROPERTIES
26
+ if (props.config.equals === false && dynamic.length === 0)
27
+ return regular.length === 0
28
+ ? props.config.positive
29
+ : reduce({
30
+ config: props.config,
31
+ expressions: flags,
32
+ });
29
33
 
30
- // CHECK DYNAMIC PROPERTIES
31
- flags.push(
32
- check_dynamic_properties(config)(project)(importer)(
33
- props.input,
34
- regular,
35
- dynamic,
36
- ),
37
- );
38
- return reduce(config)(flags);
39
- };
34
+ // CHECK DYNAMIC PROPERTIES
35
+ flags.push(
36
+ check_dynamic_properties({
37
+ config: props.config,
38
+ context: props.context,
39
+ importer: props.importer,
40
+ input: props.input,
41
+ regular,
42
+ dynamic,
43
+ }),
44
+ );
45
+ return reduce({
46
+ config: props.config,
47
+ expressions: flags,
48
+ });
49
+ };
40
50
 
41
51
  /**
42
52
  * @internal
43
53
  */
44
54
  export namespace check_object {
45
- export interface IProps {
55
+ export interface IConfig {
46
56
  equals: boolean;
47
57
  assert: boolean;
48
58
  undefined: boolean;
@@ -57,8 +67,12 @@ export namespace check_object {
57
67
  /**
58
68
  * @internal
59
69
  */
60
- const reduce =
61
- (props: check_object.IProps) => (expressions: ts.Expression[]) =>
62
- props.assert
63
- ? expressions.reduce(props.reduce)
64
- : check_everything(ts.factory.createArrayLiteralExpression(expressions));
70
+ const reduce = (props: {
71
+ config: check_object.IConfig;
72
+ expressions: ts.Expression[];
73
+ }) =>
74
+ props.config.assert
75
+ ? props.expressions.reduce(props.config.reduce)
76
+ : check_everything(
77
+ ts.factory.createArrayLiteralExpression(props.expressions),
78
+ );