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
@@ -16,273 +16,355 @@ import { UnionPredicator } from "./UnionPredicator";
16
16
 
17
17
  export namespace UnionExplorer {
18
18
  export interface Decoder<T> {
19
- (
20
- input: ts.Expression,
21
- target: T,
22
- explore: FeatureProgrammer.IExplore,
23
- ): ts.Expression;
19
+ (props: {
20
+ input: ts.Expression;
21
+ definition: T;
22
+ explore: FeatureProgrammer.IExplore;
23
+ }): ts.Expression;
24
24
  }
25
25
  export type ObjectCombiner = Decoder<MetadataObject[]>;
26
26
 
27
27
  /* -----------------------------------------------------------
28
28
  OBJECT
29
29
  ----------------------------------------------------------- */
30
- export const object =
31
- (config: FeatureProgrammer.IConfig, level: number = 0) =>
32
- (
33
- input: ts.Expression,
34
- targets: MetadataObject[],
35
- explore: FeatureProgrammer.IExplore,
36
- ): ts.Expression => {
37
- // BREAKER
38
- if (targets.length === 1)
39
- return config.objector.decoder({
40
- input,
41
- object: targets[0]!,
42
- explore,
43
- });
30
+ export const object = (props: {
31
+ config: FeatureProgrammer.IConfig;
32
+ level?: number;
33
+ objects: MetadataObject[];
34
+ input: ts.Expression;
35
+ explore: FeatureProgrammer.IExplore;
36
+ }): ts.Expression => {
37
+ // BREAKER
38
+ if (props.objects.length === 1)
39
+ return props.config.objector.decoder({
40
+ input: props.input,
41
+ object: props.objects[0]!,
42
+ explore: props.explore,
43
+ });
44
44
 
45
- const expected: string = `(${targets.map((t) => t.name).join(" | ")})`;
45
+ const expected: string = `(${props.objects.map((t) => t.name).join(" | ")})`;
46
46
 
47
- // POSSIBLE TO SPECIALIZE?
48
- const specList = UnionPredicator.object(targets);
49
- if (specList.length === 0) {
50
- const condition: ts.Expression = config.objector.unionizer({
51
- input,
52
- objects: targets,
53
- explore: {
54
- ...explore,
55
- tracable: false,
56
- },
57
- });
58
- return config.objector.full
59
- ? config.objector.full({
60
- condition,
61
- expected,
62
- explore,
63
- input,
64
- })
65
- : condition;
66
- }
67
- const remained: MetadataObject[] = targets.filter(
68
- (t) => specList.find((s) => s.object === t) === undefined,
69
- );
47
+ // POSSIBLE TO SPECIALIZE?
48
+ const specList = UnionPredicator.object(props.objects);
49
+ if (specList.length === 0) {
50
+ const condition: ts.Expression = props.config.objector.unionizer({
51
+ objects: props.objects,
52
+ input: props.input,
53
+ explore: {
54
+ ...props.explore,
55
+ tracable: false,
56
+ },
57
+ });
58
+ return props.config.objector.full
59
+ ? props.config.objector.full({
60
+ condition,
61
+ expected,
62
+ explore: props.explore,
63
+ input: props.input,
64
+ })
65
+ : condition;
66
+ }
67
+ const remained: MetadataObject[] = props.objects.filter(
68
+ (t) => specList.find((s) => s.object === t) === undefined,
69
+ );
70
70
 
71
- // DO SPECIALIZE
72
- const condition: ts.IfStatement = specList
73
- .filter((spec) => spec.property.key.getSoleLiteral() !== null)
74
- .map((spec, i, array) => {
75
- const key: string = spec.property.key.getSoleLiteral()!;
76
- const accessor: ts.Expression = IdentifierFactory.access(input)(key);
77
- const pred: ts.Expression = spec.neighbour
78
- ? config.objector.checker({
79
- input: accessor,
80
- metadata: spec.property.value,
81
- explore: {
82
- ...explore,
83
- tracable: false,
84
- postfix: IdentifierFactory.postfix(key),
85
- },
86
- })
87
- : (config.objector.required || ((exp) => exp))(
88
- ExpressionFactory.isRequired(accessor),
89
- );
90
- return ts.factory.createIfStatement(
91
- (config.objector.is || ((exp) => exp))(pred),
92
- ts.factory.createReturnStatement(
93
- config.objector.decoder({
94
- object: spec.object,
95
- input,
96
- explore,
97
- }),
98
- ),
99
- i === array.length - 1
100
- ? remained.length
101
- ? ts.factory.createReturnStatement(
102
- object(config, level + 1)(input, remained, explore),
103
- )
104
- : config.objector.failure({
105
- input,
106
- expected,
107
- explore,
108
- })
109
- : undefined,
110
- );
111
- })
112
- .reverse()
113
- .reduce((a, b) =>
114
- ts.factory.createIfStatement(b.expression, b.thenStatement, a),
71
+ // DO SPECIALIZE
72
+ const condition: ts.IfStatement = specList
73
+ .filter((spec) => spec.property.key.getSoleLiteral() !== null)
74
+ .map((spec, i, array) => {
75
+ const key: string = spec.property.key.getSoleLiteral()!;
76
+ const accessor: ts.Expression = IdentifierFactory.access(
77
+ props.input,
78
+ key,
79
+ );
80
+ const pred: ts.Expression = spec.neighbour
81
+ ? props.config.objector.checker({
82
+ input: accessor,
83
+ metadata: spec.property.value,
84
+ explore: {
85
+ ...props.explore,
86
+ tracable: false,
87
+ postfix: IdentifierFactory.postfix(key),
88
+ },
89
+ })
90
+ : (props.config.objector.required || ((exp) => exp))(
91
+ ExpressionFactory.isRequired(accessor),
92
+ );
93
+ return ts.factory.createIfStatement(
94
+ (props.config.objector.is || ((exp) => exp))(pred),
95
+ ts.factory.createReturnStatement(
96
+ props.config.objector.decoder({
97
+ object: spec.object,
98
+ input: props.input,
99
+ explore: props.explore,
100
+ }),
101
+ ),
102
+ i === array.length - 1
103
+ ? remained.length
104
+ ? ts.factory.createReturnStatement(
105
+ object({
106
+ config: props.config,
107
+ level: (props.level ?? 0) + 1,
108
+ input: props.input,
109
+ objects: remained,
110
+ explore: props.explore,
111
+ }),
112
+ )
113
+ : props.config.objector.failure({
114
+ input: props.input,
115
+ explore: props.explore,
116
+ expected,
117
+ })
118
+ : undefined,
115
119
  );
120
+ })
121
+ .reverse()
122
+ .reduce((a, b) =>
123
+ ts.factory.createIfStatement(b.expression, b.thenStatement, a),
124
+ );
116
125
 
117
- // RETURNS WITH CONDITIONS
118
- return ts.factory.createCallExpression(
119
- ts.factory.createArrowFunction(
120
- undefined,
121
- undefined,
122
- [],
123
- undefined,
124
- undefined,
125
- ts.factory.createBlock([condition], true),
126
- ),
126
+ // RETURNS WITH CONDITIONS
127
+ return ts.factory.createCallExpression(
128
+ ts.factory.createArrowFunction(
127
129
  undefined,
128
130
  undefined,
129
- );
130
- };
131
+ [],
132
+ undefined,
133
+ undefined,
134
+ ts.factory.createBlock([condition], true),
135
+ ),
136
+ undefined,
137
+ undefined,
138
+ );
139
+ };
131
140
 
132
141
  /* -----------------------------------------------------------
133
142
  ARRAY LIKE
134
143
  ----------------------------------------------------------- */
135
- export const tuple = (
136
- props: check_union_array_like.IProps<MetadataTuple, MetadataTuple>,
137
- ) =>
144
+ export const tuple = (props: {
145
+ config: check_union_array_like.IConfig<MetadataTuple, MetadataTuple>;
146
+ parameters: ts.ParameterDeclaration[];
147
+ input: ts.Expression;
148
+ tuples: MetadataTuple[];
149
+ explore: FeatureProgrammer.IExplore;
150
+ }) =>
138
151
  check_union_array_like<MetadataTuple, MetadataTuple, MetadataTuple>({
139
- transform: (x) => x,
140
- element: (x) => x,
141
- size: null!,
142
- front: (input) => input,
143
- array: (input) => input,
144
- name: (t) => t.type.name,
145
- })(props);
152
+ config: props.config,
153
+ accessor: {
154
+ transform: (x) => x,
155
+ element: (x) => x,
156
+ size: null!,
157
+ front: (input) => input,
158
+ array: (input) => input,
159
+ name: (t) => t.type.name,
160
+ },
161
+ parameters: props.parameters,
162
+ input: props.input,
163
+ definitions: props.tuples,
164
+ explore: props.explore,
165
+ });
146
166
  export namespace tuple {
147
- export type IProps = check_union_array_like.IProps<
167
+ export type IConfig = check_union_array_like.IConfig<
148
168
  MetadataTuple,
149
169
  MetadataTuple
150
170
  >;
151
171
  }
152
172
 
153
- export const array = (props: array.IProps) =>
173
+ export const array = (props: {
174
+ config: array.IConfig;
175
+ parameters: ts.ParameterDeclaration[];
176
+ input: ts.Expression;
177
+ arrays: MetadataArray[];
178
+ explore: FeatureProgrammer.IExplore;
179
+ }) =>
154
180
  check_union_array_like<MetadataArray, MetadataArray, Metadata>({
155
- transform: (x) => x,
156
- element: (x) => x.type.value,
157
- size: (input) => IdentifierFactory.access(input)("length"),
158
- front: (input) => ts.factory.createElementAccessExpression(input, 0),
159
- array: (input) => input,
160
- name: (t) => t.type.name,
161
- })(props);
181
+ config: props.config,
182
+ accessor: {
183
+ transform: (x) => x,
184
+ element: (x) => x.type.value,
185
+ size: (input) => IdentifierFactory.access(input, "length"),
186
+ front: (input) => ts.factory.createElementAccessExpression(input, 0),
187
+ array: (input) => input,
188
+ name: (t) => t.type.name,
189
+ },
190
+ parameters: props.parameters,
191
+ input: props.input,
192
+ definitions: props.arrays,
193
+ explore: props.explore,
194
+ });
162
195
  export namespace array {
163
- export type IProps = check_union_array_like.IProps<MetadataArray, Metadata>;
196
+ export type IConfig = check_union_array_like.IConfig<
197
+ MetadataArray,
198
+ Metadata
199
+ >;
164
200
  }
165
201
 
166
- export const array_or_tuple = (props: array_or_tuple.IProps) =>
202
+ export const array_or_tuple = (props: {
203
+ config: array_or_tuple.IConfig;
204
+ parameters: ts.ParameterDeclaration[];
205
+ input: ts.Expression;
206
+ definitions: (MetadataArray | MetadataTuple)[];
207
+ explore: FeatureProgrammer.IExplore;
208
+ }) =>
167
209
  check_union_array_like<
168
210
  MetadataArray | MetadataTuple,
169
211
  MetadataArray | MetadataTuple,
170
212
  Metadata | MetadataTuple
171
213
  >({
172
- transform: (x) => x,
173
- element: (x) => (x instanceof MetadataArray ? x.type.value : x),
174
- size: (input) => IdentifierFactory.access(input)("length"),
175
- front: (input) => ts.factory.createElementAccessExpression(input, 0),
176
- array: (input) => input,
177
- name: (m) => m.type.name,
178
- })(props);
214
+ config: props.config,
215
+ accessor: {
216
+ transform: (x) => x,
217
+ element: (x) => (x instanceof MetadataArray ? x.type.value : x),
218
+ size: (input) => IdentifierFactory.access(input, "length"),
219
+ front: (input) => ts.factory.createElementAccessExpression(input, 0),
220
+ array: (input) => input,
221
+ name: (m) => m.type.name,
222
+ },
223
+ parameters: props.parameters,
224
+ input: props.input,
225
+ definitions: props.definitions,
226
+ explore: props.explore,
227
+ });
179
228
  export namespace array_or_tuple {
180
- export type IProps = check_union_array_like.IProps<
229
+ export type IConfig = check_union_array_like.IConfig<
181
230
  MetadataArray | MetadataTuple,
182
231
  Metadata | MetadataTuple
183
232
  >;
184
233
  }
185
234
 
186
- export const set = (props: set.IProps) =>
235
+ export const set = (props: {
236
+ config: set.IConfig;
237
+ parameters: ts.ParameterDeclaration[];
238
+ input: ts.Expression;
239
+ sets: Metadata[];
240
+ explore: FeatureProgrammer.IExplore;
241
+ }) =>
187
242
  check_union_array_like<Metadata, MetadataArray, Metadata>({
188
- transform: (value: Metadata) =>
189
- MetadataArray.create({
190
- tags: [],
191
- type: MetadataArrayType.create({
192
- name: `Set<${value.getName()}>`,
193
- index: null,
194
- recursive: false,
195
- nullables: [],
196
- value,
243
+ config: props.config,
244
+ accessor: {
245
+ transform: (value: Metadata) =>
246
+ MetadataArray.create({
247
+ tags: [],
248
+ type: MetadataArrayType.create({
249
+ name: `Set<${value.getName()}>`,
250
+ index: null,
251
+ recursive: false,
252
+ nullables: [],
253
+ value,
254
+ }),
197
255
  }),
198
- }),
199
- element: (array) => array.type.value,
200
- size: (input) => IdentifierFactory.access(input)("size"),
201
- front: (input) =>
202
- IdentifierFactory.access(
203
- ts.factory.createCallExpression(
204
- IdentifierFactory.access(
205
- ts.factory.createCallExpression(
206
- IdentifierFactory.access(input)("values"),
207
- undefined,
208
- undefined,
209
- ),
210
- )("next"),
211
- undefined,
212
- undefined,
213
- ),
214
- )("value"),
215
- array: (input) =>
216
- ts.factory.createArrayLiteralExpression(
217
- [ts.factory.createSpreadElement(input)],
218
- false,
219
- ),
220
- name: (_m, e) => `Set<${e.getName()}>`,
221
- })(props);
222
- export namespace set {
223
- export type IProps = check_union_array_like.IProps<MetadataArray, Metadata>;
224
- }
225
-
226
- export const map = (props: map.IProps) =>
227
- check_union_array_like<Metadata.Entry, MetadataArray, [Metadata, Metadata]>(
228
- {
229
- element: (array) =>
230
- array.type.value.tuples[0]!.type.elements as [Metadata, Metadata],
231
- size: (input) => IdentifierFactory.access(input)("size"),
256
+ element: (array) => array.type.value,
257
+ size: (input) => IdentifierFactory.access(input, "size"),
232
258
  front: (input) =>
233
259
  IdentifierFactory.access(
234
260
  ts.factory.createCallExpression(
235
261
  IdentifierFactory.access(
236
262
  ts.factory.createCallExpression(
237
- IdentifierFactory.access(input)("entries"),
263
+ IdentifierFactory.access(input, "values"),
238
264
  undefined,
239
265
  undefined,
240
266
  ),
241
- )("next"),
267
+ "next",
268
+ ),
242
269
  undefined,
243
270
  undefined,
244
271
  ),
245
- )("value"),
272
+ "value",
273
+ ),
246
274
  array: (input) =>
247
275
  ts.factory.createArrayLiteralExpression(
248
276
  [ts.factory.createSpreadElement(input)],
249
277
  false,
250
278
  ),
251
- name: (_m, [k, v]) => `Map<${k.getName()}, ${v.getName()}>`,
252
- transform: (m: Metadata.Entry) =>
253
- MetadataArray.create({
254
- tags: [],
255
- type: MetadataArrayType.create({
256
- name: `Map<${m.key.getName()}, ${m.value.getName()}>`,
257
- index: null,
258
- recursive: false,
259
- nullables: [],
260
- value: Metadata.create({
261
- ...Metadata.initialize(),
262
- tuples: [
263
- (() => {
264
- const tuple = MetadataTuple.create({
265
- tags: [],
266
- type: MetadataTupleType.create({
267
- name: `[${m.key.getName()}, ${m.value.getName()}]`,
268
- index: null,
269
- recursive: false,
270
- nullables: [],
271
- elements: [m.key, m.value],
272
- }),
273
- });
274
- tuple.type.of_map = true;
275
- return tuple;
276
- })(),
277
- ],
279
+ name: (_m, e) => `Set<${e.getName()}>`,
280
+ },
281
+ parameters: props.parameters,
282
+ input: props.input,
283
+ definitions: props.sets,
284
+ explore: props.explore,
285
+ });
286
+ export namespace set {
287
+ export type IConfig = check_union_array_like.IConfig<
288
+ MetadataArray,
289
+ Metadata
290
+ >;
291
+ }
292
+
293
+ export const map = (props: {
294
+ config: map.IConfig;
295
+ parameters: ts.ParameterDeclaration[];
296
+ input: ts.Expression;
297
+ maps: Metadata.Entry[];
298
+ explore: FeatureProgrammer.IExplore;
299
+ }) =>
300
+ check_union_array_like<Metadata.Entry, MetadataArray, [Metadata, Metadata]>(
301
+ {
302
+ config: props.config,
303
+ accessor: {
304
+ element: (array) =>
305
+ array.type.value.tuples[0]!.type.elements as [Metadata, Metadata],
306
+ size: (input) => IdentifierFactory.access(input, "size"),
307
+ front: (input) =>
308
+ IdentifierFactory.access(
309
+ ts.factory.createCallExpression(
310
+ IdentifierFactory.access(
311
+ ts.factory.createCallExpression(
312
+ IdentifierFactory.access(input, "entries"),
313
+ undefined,
314
+ undefined,
315
+ ),
316
+ "next",
317
+ ),
318
+ undefined,
319
+ undefined,
320
+ ),
321
+ "value",
322
+ ),
323
+ array: (input) =>
324
+ ts.factory.createArrayLiteralExpression(
325
+ [ts.factory.createSpreadElement(input)],
326
+ false,
327
+ ),
328
+ name: (_m, [k, v]) => `Map<${k.getName()}, ${v.getName()}>`,
329
+ transform: (m: Metadata.Entry) =>
330
+ MetadataArray.create({
331
+ tags: [],
332
+ type: MetadataArrayType.create({
333
+ name: `Map<${m.key.getName()}, ${m.value.getName()}>`,
334
+ index: null,
335
+ recursive: false,
336
+ nullables: [],
337
+ value: Metadata.create({
338
+ ...Metadata.initialize(),
339
+ tuples: [
340
+ (() => {
341
+ const tuple = MetadataTuple.create({
342
+ tags: [],
343
+ type: MetadataTupleType.create({
344
+ name: `[${m.key.getName()}, ${m.value.getName()}]`,
345
+ index: null,
346
+ recursive: false,
347
+ nullables: [],
348
+ elements: [m.key, m.value],
349
+ }),
350
+ });
351
+ tuple.type.of_map = true;
352
+ return tuple;
353
+ })(),
354
+ ],
355
+ }),
278
356
  }),
279
357
  }),
280
- }),
358
+ },
359
+ parameters: props.parameters,
360
+ input: props.input,
361
+ definitions: props.maps,
362
+ explore: props.explore,
281
363
  },
282
- )(props);
364
+ );
283
365
 
284
366
  export namespace map {
285
- export type IProps = check_union_array_like.IProps<
367
+ export type IConfig = check_union_array_like.IConfig<
286
368
  MetadataArray,
287
369
  [Metadata, Metadata]
288
370
  >;
@@ -13,18 +13,18 @@ export namespace UnionPredicator {
13
13
  neighbour: boolean;
14
14
  }
15
15
 
16
- export const object = (targets: MetadataObject[]): Array<ISpecialized> => {
16
+ export const object = (objects: MetadataObject[]): Array<ISpecialized> => {
17
17
  // PROPERTY MATRIX
18
18
  const matrix: Map<string, Array<MetadataProperty | null>> = new Map();
19
- for (const obj of targets)
19
+ for (const obj of objects)
20
20
  for (const prop of obj.properties) {
21
21
  const key: string | null = prop.key.getSoleLiteral();
22
22
  if (key !== null)
23
23
  MapUtil.take(matrix)(key, () =>
24
- ArrayUtil.repeat(targets.length, () => null),
24
+ ArrayUtil.repeat(objects.length, () => null),
25
25
  );
26
26
  }
27
- targets.forEach((obj, i) => {
27
+ objects.forEach((obj, i) => {
28
28
  for (const prop of obj.properties) {
29
29
  const key: string | null = prop.key.getSoleLiteral();
30
30
  if (key !== null) matrix.get(key)![i] = prop;
@@ -33,7 +33,7 @@ export namespace UnionPredicator {
33
33
 
34
34
  // EXPLORE SPECIALIZERS
35
35
  const output: ISpecialized[] = [];
36
- targets.forEach((obj, i) => {
36
+ objects.forEach((obj, i) => {
37
37
  const children: ISpecializedProperty[] = [];
38
38
  obj.properties.forEach((prop) => {
39
39
  // MUST BE REQUIRED
@@ -45,8 +45,14 @@ export namespace HttpAssertFormDataProgrammer {
45
45
  statements: [
46
46
  ...assert.statements,
47
47
  ...decode.statements,
48
- StatementFactory.constant("__assert", assert.arrow),
49
- StatementFactory.constant("__decode", decode.arrow),
48
+ StatementFactory.constant({
49
+ name: "__assert",
50
+ value: assert.arrow,
51
+ }),
52
+ StatementFactory.constant({
53
+ name: "__decode",
54
+ value: decode.arrow,
55
+ }),
50
56
  ],
51
57
  arrow: ts.factory.createArrowFunction(
52
58
  undefined,
@@ -45,8 +45,14 @@ export namespace HttpAssertHeadersProgrammer {
45
45
  statements: [
46
46
  ...assert.statements,
47
47
  ...decode.statements,
48
- StatementFactory.constant("__assert", assert.arrow),
49
- StatementFactory.constant("__decode", decode.arrow),
48
+ StatementFactory.constant({
49
+ name: "__assert",
50
+ value: assert.arrow,
51
+ }),
52
+ StatementFactory.constant({
53
+ name: "__decode",
54
+ value: decode.arrow,
55
+ }),
50
56
  ],
51
57
  arrow: ts.factory.createArrowFunction(
52
58
  undefined,
@@ -50,8 +50,14 @@ export namespace HttpAssertQueryProgrammer {
50
50
  statements: [
51
51
  ...assert.statements,
52
52
  ...decode.statements,
53
- StatementFactory.constant("__assert", assert.arrow),
54
- StatementFactory.constant("__decode", decode.arrow),
53
+ StatementFactory.constant({
54
+ name: "__assert",
55
+ value: assert.arrow,
56
+ }),
57
+ StatementFactory.constant({
58
+ name: "__decode",
59
+ value: decode.arrow,
60
+ }),
55
61
  ],
56
62
  arrow: ts.factory.createArrowFunction(
57
63
  undefined,