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
@@ -173,9 +173,9 @@ export namespace CheckerProgrammer {
173
173
  .arrays()
174
174
  .filter((a) => a.recursive)
175
175
  .map((type, i) =>
176
- StatementFactory.constant(
177
- `${props.config.prefix}a${i}`,
178
- ts.factory.createArrowFunction(
176
+ StatementFactory.constant({
177
+ name: `${props.config.prefix}a${i}`,
178
+ value: ts.factory.createArrowFunction(
179
179
  undefined,
180
180
  undefined,
181
181
  FeatureProgrammer.parameterDeclarations({
@@ -200,7 +200,7 @@ export namespace CheckerProgrammer {
200
200
  },
201
201
  }),
202
202
  ),
203
- ),
203
+ }),
204
204
  );
205
205
 
206
206
  export const write_tuple_functions = (props: {
@@ -213,9 +213,9 @@ export namespace CheckerProgrammer {
213
213
  .tuples()
214
214
  .filter((t) => t.recursive)
215
215
  .map((tuple, i) =>
216
- StatementFactory.constant(
217
- `${props.config.prefix}t${i}`,
218
- ts.factory.createArrowFunction(
216
+ StatementFactory.constant({
217
+ name: `${props.config.prefix}t${i}`,
218
+ value: ts.factory.createArrowFunction(
219
219
  undefined,
220
220
  undefined,
221
221
  FeatureProgrammer.parameterDeclarations({
@@ -239,7 +239,7 @@ export namespace CheckerProgrammer {
239
239
  },
240
240
  }),
241
241
  ),
242
- ),
242
+ }),
243
243
  );
244
244
 
245
245
  const configure = (props: {
@@ -254,7 +254,8 @@ export namespace CheckerProgrammer {
254
254
  undefined,
255
255
  "input",
256
256
  ts.factory.createTypeReferenceNode(
257
- name ?? TypeFactory.getFullName(props.context.checker)(type),
257
+ name ??
258
+ TypeFactory.getFullName({ checker: props.context.checker, type }),
258
259
  ),
259
260
  ),
260
261
  },
@@ -315,33 +316,35 @@ export namespace CheckerProgrammer {
315
316
  joiner: props.config.joiner.object,
316
317
  unionizer: props.config.equals
317
318
  ? (next) =>
318
- decode_union_object((input, object, explore) =>
319
- decode_object({
320
- config: props.config,
321
- importer: props.importer,
322
- object,
323
- input,
324
- explore,
325
- }),
326
- )((input, object, explore) =>
327
- decode_object({
328
- config: props.config,
329
- importer: props.importer,
330
- input,
331
- object,
332
- explore: {
333
- ...explore,
334
- tracable: true,
335
- },
336
- }),
337
- )(props.config.joiner.is ?? ((expr) => expr))((input, expected) =>
338
- ts.factory.createReturnStatement(
339
- props.config.joiner.failure({
340
- input,
341
- expected,
319
+ decode_union_object({
320
+ checker: (v) =>
321
+ decode_object({
322
+ config: props.config,
323
+ importer: props.importer,
324
+ object: v.object,
325
+ input: v.input,
326
+ explore: v.explore,
342
327
  }),
343
- ),
344
- )(next.input, next.objects, next.explore)
328
+ decoder: (v) =>
329
+ decode_object({
330
+ config: props.config,
331
+ importer: props.importer,
332
+ input: v.input,
333
+ object: v.object,
334
+ explore: {
335
+ ...v.explore,
336
+ tracable: true,
337
+ },
338
+ }),
339
+ success: props.config.joiner.is ?? ((expr) => expr),
340
+ escaper: (v) =>
341
+ ts.factory.createReturnStatement(
342
+ props.config.joiner.failure(v),
343
+ ),
344
+ input: next.input,
345
+ objects: next.objects,
346
+ explore: next.explore,
347
+ })
345
348
  : (next) =>
346
349
  props.config.combiner({
347
350
  logic: "or",
@@ -528,7 +531,8 @@ export namespace CheckerProgrammer {
528
531
  ],
529
532
  ),
530
533
  ),
531
- )("has"),
534
+ "has",
535
+ ),
532
536
  undefined,
533
537
  [props.input],
534
538
  ),
@@ -560,9 +564,12 @@ export namespace CheckerProgrammer {
560
564
  binaries.push({
561
565
  expression: props.config.atomist({
562
566
  explore: props.explore,
563
- entry: check_number(props.context, props.config.numeric)(atom)(
564
- props.input,
565
- ),
567
+ entry: check_number({
568
+ context: props.context,
569
+ numeric: props.config.numeric,
570
+ atomic: atom,
571
+ input: props.input,
572
+ }),
566
573
  input: props.input,
567
574
  }),
568
575
  combined: false,
@@ -571,7 +578,11 @@ export namespace CheckerProgrammer {
571
578
  binaries.push({
572
579
  expression: props.config.atomist({
573
580
  explore: props.explore,
574
- entry: check_bigint(props.context)(atom)(props.input),
581
+ entry: check_bigint({
582
+ context: props.context,
583
+ atomic: atom,
584
+ input: props.input,
585
+ }),
575
586
  input: props.input,
576
587
  }),
577
588
  combined: false,
@@ -580,7 +591,11 @@ export namespace CheckerProgrammer {
580
591
  binaries.push({
581
592
  expression: props.config.atomist({
582
593
  explore: props.explore,
583
- entry: check_string(props.context)(atom)(props.input),
594
+ entry: check_string({
595
+ context: props.context,
596
+ atomic: atom,
597
+ input: props.input,
598
+ }),
584
599
  input: props.input,
585
600
  }),
586
601
  combined: false,
@@ -598,7 +613,10 @@ export namespace CheckerProgrammer {
598
613
  binaries.push({
599
614
  expression: props.config.atomist({
600
615
  explore: props.explore,
601
- entry: check_template(props.metadata.templates)(props.input),
616
+ entry: check_template({
617
+ templates: props.metadata.templates,
618
+ input: props.input,
619
+ }),
602
620
  input: props.input,
603
621
  }),
604
622
  combined: false,
@@ -607,7 +625,10 @@ export namespace CheckerProgrammer {
607
625
  // NATIVE CLASSES
608
626
  for (const native of props.metadata.natives)
609
627
  binaries.push({
610
- expression: check_native(native)(props.input),
628
+ expression: check_native({
629
+ type: native,
630
+ input: props.input,
631
+ }),
611
632
  combined: false,
612
633
  });
613
634
 
@@ -615,7 +636,7 @@ export namespace CheckerProgrammer {
615
636
  // INSTANCES
616
637
  //----
617
638
  interface IInstance {
618
- knock: ts.Expression;
639
+ head: ts.Expression;
619
640
  body: ts.Expression | null;
620
641
  expected: string;
621
642
  }
@@ -626,7 +647,10 @@ export namespace CheckerProgrammer {
626
647
  if (props.metadata.sets.length) {
627
648
  const install = (body: ts.Expression | null) =>
628
649
  prepare({
629
- knock: check_native("Set")(props.input),
650
+ head: check_native({
651
+ type: "Set",
652
+ input: props.input,
653
+ }),
630
654
  expected: props.metadata.sets
631
655
  .map((elem) => `Set<${elem.getName()}>`)
632
656
  .join(" | "),
@@ -653,7 +677,10 @@ export namespace CheckerProgrammer {
653
677
  if (props.metadata.maps.length) {
654
678
  const install = (body: ts.Expression | null) =>
655
679
  prepare({
656
- knock: check_native("Map")(props.input),
680
+ head: check_native({
681
+ type: "Map",
682
+ input: props.input,
683
+ }),
657
684
  expected: props.metadata.maps
658
685
  .map(({ key, value }) => `Map<${key}, ${value}>`)
659
686
  .join(" | "),
@@ -681,7 +708,7 @@ export namespace CheckerProgrammer {
681
708
  if (props.metadata.tuples.length + props.metadata.arrays.length > 0) {
682
709
  const install = (body: ts.Expression | null) =>
683
710
  prepare({
684
- knock: props.config.atomist({
711
+ head: props.config.atomist({
685
712
  explore: props.explore,
686
713
  entry: {
687
714
  expected: [
@@ -776,14 +803,15 @@ export namespace CheckerProgrammer {
776
803
  // OBJECT
777
804
  if (props.metadata.objects.length > 0)
778
805
  prepare({
779
- knock: ExpressionFactory.isObject({
806
+ head: ExpressionFactory.isObject({
780
807
  checkNull: true,
781
808
  checkArray: props.metadata.objects.some((obj) =>
782
809
  obj.properties.every(
783
810
  (prop) => !prop.key.isSoleLiteral() || !prop.value.isRequired(),
784
811
  ),
785
812
  ),
786
- })(props.input),
813
+ input: props.input,
814
+ }),
787
815
  expected: props.metadata.objects.map((obj) => obj.name).join(" | "),
788
816
  body: explore_objects({
789
817
  config: props.config,
@@ -803,23 +831,23 @@ export namespace CheckerProgrammer {
803
831
  (ins: IInstance) =>
804
832
  ins.body
805
833
  ? {
806
- expression: merger(ins.knock, ins.body),
834
+ expression: merger(ins.head, ins.body),
807
835
  combined: true,
808
836
  }
809
837
  : {
810
- expression: ins.knock,
838
+ expression: ins.head,
811
839
  combined: false,
812
840
  };
813
841
  if (instances.length === 1)
814
842
  binaries.push(
815
- transformer((pre, body) =>
843
+ transformer((head, body) =>
816
844
  props.config.combiner({
817
845
  explore: props.explore,
818
846
  logic: "and",
819
847
  input: props.input,
820
- binaries: [pre, body].map((expression) => ({
848
+ binaries: [head, body].map((expression) => ({
821
849
  expression,
822
- combined: expression !== pre,
850
+ combined: expression !== head,
823
851
  })),
824
852
  expected: props.metadata.getName(),
825
853
  }),
@@ -845,9 +873,10 @@ export namespace CheckerProgrammer {
845
873
  expression:
846
874
  props.metadata.escaped.original.size() === 1 &&
847
875
  props.metadata.escaped.original.natives.length === 1
848
- ? check_native(props.metadata.escaped.original.natives[0]!)(
849
- props.input,
850
- )
876
+ ? check_native({
877
+ type: props.metadata.escaped.original.natives[0]!,
878
+ input: props.input,
879
+ })
851
880
  : ts.factory.createLogicalAnd(
852
881
  decode({
853
882
  context: props.context,
@@ -968,9 +997,11 @@ export namespace CheckerProgrammer {
968
997
  input: ts.Expression;
969
998
  explore: IExplore;
970
999
  }): ts.Expression => {
971
- const length: ICheckEntry = check_array_length(props.context)(props.array)(
972
- props.input,
973
- );
1000
+ const length: ICheckEntry = check_array_length({
1001
+ context: props.context,
1002
+ array: props.array,
1003
+ input: props.input,
1004
+ });
974
1005
  const main: ts.Expression = FeatureProgrammer.decode_array({
975
1006
  config: {
976
1007
  prefix: props.config.prefix,
@@ -1076,7 +1107,7 @@ export namespace CheckerProgrammer {
1076
1107
  context: props.context,
1077
1108
  importer: props.importer,
1078
1109
  input: ts.factory.createCallExpression(
1079
- IdentifierFactory.access(props.input)("slice"),
1110
+ IdentifierFactory.access(props.input, "slice"),
1080
1111
  undefined,
1081
1112
  [ExpressionFactory.number(props.tuple.elements.length - 1)],
1082
1113
  ),
@@ -1177,7 +1208,7 @@ export namespace CheckerProgrammer {
1177
1208
  undefined,
1178
1209
  [
1179
1210
  ts.factory.createCallExpression(
1180
- IdentifierFactory.access(props.input)("toJSON"),
1211
+ IdentifierFactory.access(props.input, "toJSON"),
1181
1212
  undefined,
1182
1213
  [],
1183
1214
  ),
@@ -1197,35 +1228,35 @@ export namespace CheckerProgrammer {
1197
1228
  }): ts.Expression =>
1198
1229
  ts.factory.createCallExpression(
1199
1230
  UnionExplorer.set({
1200
- checker: (input, metadata, explore, _container) =>
1201
- decode({
1202
- context: props.context,
1203
- config: props.config,
1204
- importer: props.importer,
1205
- input,
1206
- metadata,
1207
- explore,
1208
- }),
1209
- decoder: (input, array, explore) =>
1210
- decode_array({
1211
- config: props.config,
1212
- context: props.context,
1213
- importer: props.importer,
1214
- array,
1215
- input,
1216
- explore,
1217
- }),
1218
- empty: props.config.success,
1219
- success: props.config.success,
1220
- failure: (input, expected, explore) =>
1221
- ts.factory.createReturnStatement(
1222
- props.config.joiner.failure({
1223
- input,
1224
- expected,
1225
- explore,
1231
+ config: {
1232
+ checker: (v) =>
1233
+ decode({
1234
+ context: props.context,
1235
+ config: props.config,
1236
+ importer: props.importer,
1237
+ input: v.input,
1238
+ metadata: v.definition,
1239
+ explore: v.explore,
1226
1240
  }),
1227
- ),
1228
- })([])(props.input, props.sets, props.explore),
1241
+ decoder: (v) =>
1242
+ decode_array({
1243
+ config: props.config,
1244
+ context: props.context,
1245
+ importer: props.importer,
1246
+ array: v.definition,
1247
+ input: v.input,
1248
+ explore: v.explore,
1249
+ }),
1250
+ empty: props.config.success,
1251
+ success: props.config.success,
1252
+ failure: (v) =>
1253
+ ts.factory.createReturnStatement(props.config.joiner.failure(v)),
1254
+ },
1255
+ parameters: [],
1256
+ input: props.input,
1257
+ sets: props.sets,
1258
+ explore: props.explore,
1259
+ }),
1229
1260
  undefined,
1230
1261
  undefined,
1231
1262
  );
@@ -1240,51 +1271,51 @@ export namespace CheckerProgrammer {
1240
1271
  }): ts.Expression =>
1241
1272
  ts.factory.createCallExpression(
1242
1273
  UnionExplorer.map({
1243
- checker: (input, entry, explore) =>
1244
- ts.factory.createLogicalAnd(
1245
- decode({
1246
- config: props.config,
1274
+ config: {
1275
+ checker: (v) =>
1276
+ ts.factory.createLogicalAnd(
1277
+ decode({
1278
+ config: props.config,
1279
+ context: props.context,
1280
+ importer: props.importer,
1281
+ input: ts.factory.createElementAccessExpression(v.input, 0),
1282
+ metadata: v.definition[0],
1283
+ explore: {
1284
+ ...v.explore,
1285
+ postfix: `${v.explore.postfix}[0]`,
1286
+ },
1287
+ }),
1288
+ decode({
1289
+ config: props.config,
1290
+ context: props.context,
1291
+ importer: props.importer,
1292
+ input: ts.factory.createElementAccessExpression(v.input, 1),
1293
+ metadata: v.definition[1],
1294
+ explore: {
1295
+ ...v.explore,
1296
+ postfix: `${v.explore.postfix}[1]`,
1297
+ },
1298
+ }),
1299
+ ),
1300
+ decoder: (v) =>
1301
+ decode_array({
1247
1302
  context: props.context,
1248
- importer: props.importer,
1249
- input: ts.factory.createElementAccessExpression(input, 0),
1250
- metadata: entry[0],
1251
- explore: {
1252
- ...explore,
1253
- postfix: `${explore.postfix}[0]`,
1254
- },
1255
- }),
1256
- decode({
1257
1303
  config: props.config,
1258
- context: props.context,
1259
1304
  importer: props.importer,
1260
- input: ts.factory.createElementAccessExpression(input, 1),
1261
- metadata: entry[1],
1262
- explore: {
1263
- ...explore,
1264
- postfix: `${explore.postfix}[1]`,
1265
- },
1266
- }),
1267
- ),
1268
- decoder: (input, array, explore) =>
1269
- decode_array({
1270
- context: props.context,
1271
- config: props.config,
1272
- importer: props.importer,
1273
- array,
1274
- input,
1275
- explore,
1276
- }),
1277
- empty: props.config.success,
1278
- success: props.config.success,
1279
- failure: (input, expected, explore) =>
1280
- ts.factory.createReturnStatement(
1281
- props.config.joiner.failure({
1282
- input,
1283
- expected,
1284
- explore,
1305
+ array: v.definition,
1306
+ input: v.input,
1307
+ explore: v.explore,
1285
1308
  }),
1286
- ),
1287
- })([])(props.input, props.maps, props.explore),
1309
+ empty: props.config.success,
1310
+ success: props.config.success,
1311
+ failure: (v) =>
1312
+ ts.factory.createReturnStatement(props.config.joiner.failure(v)),
1313
+ },
1314
+ parameters: [],
1315
+ input: props.input,
1316
+ maps: props.maps,
1317
+ explore: props.explore,
1318
+ }),
1288
1319
  undefined,
1289
1320
  undefined,
1290
1321
  );
@@ -1300,36 +1331,37 @@ export namespace CheckerProgrammer {
1300
1331
  explore_array_like_union_types<MetadataTuple>({
1301
1332
  config: props.config,
1302
1333
  importer: props.importer,
1303
- factory: UnionExplorer.tuple({
1304
- checker: (input, tuple, explore) =>
1305
- decode_tuple({
1306
- context: props.context,
1307
- config: props.config,
1308
- importer: props.importer,
1309
- input,
1310
- tuple,
1311
- explore,
1312
- }),
1313
- decoder: (input, tuple, explore) =>
1314
- decode_tuple({
1315
- context: props.context,
1316
- config: props.config,
1317
- importer: props.importer,
1318
- tuple,
1319
- input,
1320
- explore,
1321
- }),
1322
- empty: props.config.success,
1323
- success: props.config.success,
1324
- failure: (input, expected, explore) =>
1325
- ts.factory.createReturnStatement(
1326
- props.config.joiner.failure({
1327
- input,
1328
- expected,
1329
- explore,
1330
- }),
1331
- ),
1332
- }),
1334
+ factory: (next) =>
1335
+ UnionExplorer.tuple({
1336
+ config: {
1337
+ checker: (v) =>
1338
+ decode_tuple({
1339
+ context: props.context,
1340
+ config: props.config,
1341
+ importer: props.importer,
1342
+ input: v.input,
1343
+ tuple: v.definition,
1344
+ explore: v.explore,
1345
+ }),
1346
+ decoder: (v) =>
1347
+ decode_tuple({
1348
+ context: props.context,
1349
+ config: props.config,
1350
+ importer: props.importer,
1351
+ tuple: v.definition,
1352
+ input: v.input,
1353
+ explore: v.explore,
1354
+ }),
1355
+ empty: props.config.success,
1356
+ success: props.config.success,
1357
+ failure: (v) =>
1358
+ ts.factory.createReturnStatement(props.config.joiner.failure(v)),
1359
+ },
1360
+ parameters: next.parameters,
1361
+ tuples: next.definitions,
1362
+ input: next.input,
1363
+ explore: next.explore,
1364
+ }),
1333
1365
  definitions: props.tuples,
1334
1366
  input: props.input,
1335
1367
  explore: props.explore,
@@ -1346,36 +1378,37 @@ export namespace CheckerProgrammer {
1346
1378
  explore_array_like_union_types<MetadataArray>({
1347
1379
  config: props.config,
1348
1380
  importer: props.importer,
1349
- factory: UnionExplorer.array({
1350
- checker: (input, metadata, explore) =>
1351
- decode({
1352
- context: props.context,
1353
- config: props.config,
1354
- importer: props.importer,
1355
- metadata,
1356
- input,
1357
- explore,
1358
- }),
1359
- decoder: (input, array, explore) =>
1360
- decode_array({
1361
- context: props.context,
1362
- config: props.config,
1363
- importer: props.importer,
1364
- array,
1365
- input,
1366
- explore,
1367
- }),
1368
- empty: props.config.success,
1369
- success: props.config.success,
1370
- failure: (input, expected, explore) =>
1371
- ts.factory.createReturnStatement(
1372
- props.config.joiner.failure({
1373
- input,
1374
- expected,
1375
- explore,
1376
- }),
1377
- ),
1378
- }),
1381
+ factory: (next) =>
1382
+ UnionExplorer.array({
1383
+ config: {
1384
+ checker: (v) =>
1385
+ decode({
1386
+ context: props.context,
1387
+ config: props.config,
1388
+ importer: props.importer,
1389
+ metadata: v.definition,
1390
+ input: v.input,
1391
+ explore: v.explore,
1392
+ }),
1393
+ decoder: (v) =>
1394
+ decode_array({
1395
+ context: props.context,
1396
+ config: props.config,
1397
+ importer: props.importer,
1398
+ array: v.definition,
1399
+ input: v.input,
1400
+ explore: v.explore,
1401
+ }),
1402
+ empty: props.config.success,
1403
+ success: props.config.success,
1404
+ failure: (v) =>
1405
+ ts.factory.createReturnStatement(props.config.joiner.failure(v)),
1406
+ },
1407
+ parameters: next.parameters,
1408
+ arrays: next.definitions,
1409
+ input: next.input,
1410
+ explore: next.explore,
1411
+ }),
1379
1412
  definitions: props.arrays,
1380
1413
  input: props.input,
1381
1414
  explore: props.explore,
@@ -1392,68 +1425,69 @@ export namespace CheckerProgrammer {
1392
1425
  explore_array_like_union_types<MetadataArray | MetadataTuple>({
1393
1426
  config: props.config,
1394
1427
  importer: props.importer,
1395
- factory: UnionExplorer.array_or_tuple({
1396
- checker: (input, definition, explore, array) =>
1397
- definition instanceof MetadataTuple
1398
- ? decode_tuple({
1399
- config: props.config,
1400
- context: props.context,
1401
- importer: props.importer,
1402
- input,
1403
- tuple: definition,
1404
- explore,
1405
- })
1406
- : props.config.atomist({
1407
- explore,
1408
- entry: {
1409
- expected: props.definitions
1410
- .map((elem) =>
1411
- elem instanceof MetadataArray
1412
- ? elem.getName()
1413
- : elem.type.name,
1414
- )
1415
- .join(" | "),
1416
- expression: decode({
1428
+ factory: (next) =>
1429
+ UnionExplorer.array_or_tuple({
1430
+ config: {
1431
+ checker: (v) =>
1432
+ v.definition instanceof MetadataTuple
1433
+ ? decode_tuple({
1434
+ config: props.config,
1435
+ context: props.context,
1436
+ importer: props.importer,
1437
+ input: v.input,
1438
+ tuple: v.definition,
1439
+ explore: v.explore,
1440
+ })
1441
+ : props.config.atomist({
1442
+ explore: v.explore,
1443
+ entry: {
1444
+ expected: props.definitions
1445
+ .map((elem) =>
1446
+ elem instanceof MetadataArray
1447
+ ? elem.getName()
1448
+ : elem.type.name,
1449
+ )
1450
+ .join(" | "),
1451
+ expression: decode({
1452
+ importer: props.importer,
1453
+ context: props.context,
1454
+ config: props.config,
1455
+ metadata: v.definition,
1456
+ input: v.input,
1457
+ explore: v.explore,
1458
+ }),
1459
+ conditions: [],
1460
+ },
1461
+ input: v.container,
1462
+ }),
1463
+ decoder: (v) =>
1464
+ v.definition instanceof MetadataTuple
1465
+ ? decode_tuple({
1466
+ context: props.context,
1467
+ config: props.config,
1417
1468
  importer: props.importer,
1469
+ input: v.input,
1470
+ tuple: v.definition,
1471
+ explore: v.explore,
1472
+ })
1473
+ : decode_array({
1418
1474
  context: props.context,
1419
1475
  config: props.config,
1420
- input,
1421
- metadata: definition,
1422
- explore,
1476
+ importer: props.importer,
1477
+ input: v.input,
1478
+ array: v.definition,
1479
+ explore: v.explore,
1423
1480
  }),
1424
- conditions: [],
1425
- },
1426
- input: array,
1427
- }),
1428
- decoder: (input, definition, explore) =>
1429
- definition instanceof MetadataTuple
1430
- ? decode_tuple({
1431
- context: props.context,
1432
- config: props.config,
1433
- importer: props.importer,
1434
- input,
1435
- tuple: definition,
1436
- explore,
1437
- })
1438
- : decode_array({
1439
- context: props.context,
1440
- config: props.config,
1441
- importer: props.importer,
1442
- input,
1443
- array: definition,
1444
- explore,
1445
- }),
1446
- empty: props.config.success,
1447
- success: props.config.success,
1448
- failure: (input, expected, explore) =>
1449
- ts.factory.createReturnStatement(
1450
- props.config.joiner.failure({
1451
- input,
1452
- expected,
1453
- explore,
1454
- }),
1455
- ),
1456
- }),
1481
+ empty: props.config.success,
1482
+ success: props.config.success,
1483
+ failure: (v) =>
1484
+ ts.factory.createReturnStatement(props.config.joiner.failure(v)),
1485
+ },
1486
+ parameters: next.parameters,
1487
+ definitions: next.definitions,
1488
+ input: next.input,
1489
+ explore: next.explore,
1490
+ }),
1457
1491
  input: props.input,
1458
1492
  definitions: props.definitions,
1459
1493
  explore: props.explore,
@@ -1464,13 +1498,12 @@ export namespace CheckerProgrammer {
1464
1498
  >(props: {
1465
1499
  config: IConfig;
1466
1500
  importer: FunctionImporter;
1467
- factory: (
1468
- parameters: ts.ParameterDeclaration[],
1469
- ) => (
1470
- input: ts.Expression,
1471
- elements: T[],
1472
- explore: IExplore,
1473
- ) => ts.ArrowFunction;
1501
+ factory: (next: {
1502
+ parameters: ts.ParameterDeclaration[];
1503
+ definitions: T[];
1504
+ input: ts.Expression;
1505
+ explore: IExplore;
1506
+ }) => ts.ArrowFunction;
1474
1507
  input: ts.Expression;
1475
1508
  definitions: T[];
1476
1509
  explore: IExplore;
@@ -1480,11 +1513,12 @@ export namespace CheckerProgrammer {
1480
1513
  explore: IExplore;
1481
1514
  input: ts.Expression;
1482
1515
  }): ts.ArrowFunction =>
1483
- props.factory(next.parameters)(
1484
- next.input,
1485
- props.definitions,
1486
- next.explore,
1487
- );
1516
+ props.factory({
1517
+ parameters: next.parameters,
1518
+ definitions: props.definitions,
1519
+ input: next.input,
1520
+ explore: next.explore,
1521
+ });
1488
1522
  if (props.definitions.every((e) => e.type.recursive === false))
1489
1523
  ts.factory.createCallExpression(
1490
1524
  arrow({