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
@@ -46,14 +46,14 @@ export namespace ProtobufDecodeProgrammer {
46
46
  .filter((object) => ProtobufUtil.isStaticObject(object))
47
47
  .map((object) => [
48
48
  `${PREFIX}o${object.index}`,
49
- StatementFactory.constant(
50
- props.importer.useLocal(`${PREFIX}o${object.index}`),
51
- write_object_function({
49
+ StatementFactory.constant({
50
+ name: props.importer.useLocal(`${PREFIX}o${object.index}`),
51
+ value: write_object_function({
52
52
  context: props.context,
53
53
  importer: props.importer,
54
54
  object,
55
55
  }),
56
- ),
56
+ }),
57
57
  ]),
58
58
  ),
59
59
  statements: [],
@@ -75,21 +75,24 @@ export namespace ProtobufDecodeProgrammer {
75
75
  [
76
76
  ts.factory.createTypeReferenceNode(
77
77
  props.name ??
78
- TypeFactory.getFullName(props.context.checker)(props.type),
78
+ TypeFactory.getFullName({
79
+ checker: props.context.checker,
80
+ type: props.type,
81
+ }),
79
82
  ),
80
83
  ],
81
84
  ),
82
85
  undefined,
83
86
  ts.factory.createBlock(
84
87
  [
85
- StatementFactory.constant(
86
- "reader",
87
- ts.factory.createNewExpression(
88
+ StatementFactory.constant({
89
+ name: "reader",
90
+ value: ts.factory.createNewExpression(
88
91
  props.importer.use("Reader"),
89
92
  undefined,
90
93
  [ts.factory.createIdentifier("input")],
91
94
  ),
92
- ),
95
+ }),
93
96
  ts.factory.createReturnStatement(
94
97
  decode_regular_object({
95
98
  top: true,
@@ -149,14 +152,14 @@ export namespace ProtobufDecodeProgrammer {
149
152
  ),
150
153
  undefined,
151
154
  ts.factory.createCallExpression(
152
- IdentifierFactory.access(READER())("size"),
155
+ IdentifierFactory.access(READER(), "size"),
153
156
  undefined,
154
157
  undefined,
155
158
  ),
156
159
  undefined,
157
160
  ts.factory.createAdd(
158
161
  ts.factory.createCallExpression(
159
- IdentifierFactory.access(READER())("index"),
162
+ IdentifierFactory.access(READER(), "index"),
160
163
  undefined,
161
164
  undefined,
162
165
  ),
@@ -170,7 +173,7 @@ export namespace ProtobufDecodeProgrammer {
170
173
  importer: props.importer,
171
174
  condition: ts.factory.createLessThan(
172
175
  ts.factory.createCallExpression(
173
- IdentifierFactory.access(READER())("index"),
176
+ IdentifierFactory.access(READER(), "index"),
174
177
  undefined,
175
178
  undefined,
176
179
  ),
@@ -205,7 +208,8 @@ export namespace ProtobufDecodeProgrammer {
205
208
  index,
206
209
  accessor: IdentifierFactory.access(
207
210
  ts.factory.createIdentifier(props.output),
208
- )(p.key.getSoleLiteral()!),
211
+ p.key.getSoleLiteral()!,
212
+ ),
209
213
  metadata: p.value,
210
214
  });
211
215
  index += ProtobufUtil.size(p.value);
@@ -213,9 +217,9 @@ export namespace ProtobufDecodeProgrammer {
213
217
  })
214
218
  .flat();
215
219
  return [
216
- StatementFactory.constant(
217
- props.output,
218
- ts.factory.createAsExpression(
220
+ StatementFactory.constant({
221
+ name: props.output,
222
+ value: ts.factory.createAsExpression(
219
223
  ts.factory.createObjectLiteralExpression(
220
224
  props.properties
221
225
  .filter(
@@ -235,18 +239,18 @@ export namespace ProtobufDecodeProgrammer {
235
239
  ),
236
240
  TypeFactory.keyword("any"),
237
241
  ),
238
- ),
242
+ }),
239
243
  ts.factory.createWhileStatement(
240
244
  props.condition,
241
245
  ts.factory.createBlock([
242
- StatementFactory.constant(
243
- props.tag,
244
- ts.factory.createCallExpression(
245
- IdentifierFactory.access(READER())("uint32"),
246
+ StatementFactory.constant({
247
+ name: props.tag,
248
+ value: ts.factory.createCallExpression(
249
+ IdentifierFactory.access(READER(), "uint32"),
246
250
  undefined,
247
251
  undefined,
248
252
  ),
249
- ),
253
+ }),
250
254
  ts.factory.createSwitchStatement(
251
255
  ts.factory.createUnsignedRightShift(
252
256
  ts.factory.createIdentifier(props.tag),
@@ -257,7 +261,7 @@ export namespace ProtobufDecodeProgrammer {
257
261
  ts.factory.createDefaultClause([
258
262
  ts.factory.createExpressionStatement(
259
263
  ts.factory.createCallExpression(
260
- IdentifierFactory.access(READER())("skipType"),
264
+ IdentifierFactory.access(READER(), "skipType"),
261
265
  undefined,
262
266
  [
263
267
  ts.factory.createBitwiseAnd(
@@ -413,9 +417,7 @@ export namespace ProtobufDecodeProgrammer {
413
417
  if (props.type === "string") return decode_bytes("string");
414
418
 
415
419
  const call: ts.CallExpression = ts.factory.createCallExpression(
416
- IdentifierFactory.access(ts.factory.createIdentifier("reader"))(
417
- props.type,
418
- ),
420
+ IdentifierFactory.access(READER(), props.type),
419
421
  undefined,
420
422
  undefined,
421
423
  );
@@ -435,7 +437,7 @@ export namespace ProtobufDecodeProgrammer {
435
437
 
436
438
  const decode_bytes = (method: "bytes" | "string"): ts.Expression =>
437
439
  ts.factory.createCallExpression(
438
- IdentifierFactory.access(ts.factory.createIdentifier("reader"))(method),
440
+ IdentifierFactory.access(READER(), method),
439
441
  undefined,
440
442
  undefined,
441
443
  );
@@ -486,25 +488,25 @@ export namespace ProtobufDecodeProgrammer {
486
488
  ),
487
489
  ts.factory.createBlock(
488
490
  [
489
- StatementFactory.constant(
490
- "piece",
491
- ts.factory.createAdd(
491
+ StatementFactory.constant({
492
+ name: "piece",
493
+ value: ts.factory.createAdd(
492
494
  ts.factory.createCallExpression(
493
- IdentifierFactory.access(READER())("uint32"),
495
+ IdentifierFactory.access(READER(), "uint32"),
494
496
  undefined,
495
497
  undefined,
496
498
  ),
497
499
  ts.factory.createCallExpression(
498
- IdentifierFactory.access(READER())("index"),
500
+ IdentifierFactory.access(READER(), "index"),
499
501
  undefined,
500
502
  undefined,
501
503
  ),
502
504
  ),
503
- ),
505
+ }),
504
506
  ts.factory.createWhileStatement(
505
507
  ts.factory.createLessThan(
506
508
  ts.factory.createCallExpression(
507
- IdentifierFactory.access(READER())("index"),
509
+ IdentifierFactory.access(READER(), "index"),
508
510
  undefined,
509
511
  undefined,
510
512
  ),
@@ -512,7 +514,7 @@ export namespace ProtobufDecodeProgrammer {
512
514
  ),
513
515
  ts.factory.createExpressionStatement(
514
516
  ts.factory.createCallExpression(
515
- IdentifierFactory.access(props.accessor)("push"),
517
+ IdentifierFactory.access(props.accessor, "push"),
516
518
  undefined,
517
519
  [decoder()],
518
520
  ),
@@ -523,7 +525,7 @@ export namespace ProtobufDecodeProgrammer {
523
525
  ),
524
526
  ts.factory.createExpressionStatement(
525
527
  ts.factory.createCallExpression(
526
- IdentifierFactory.access(props.accessor)("push"),
528
+ IdentifierFactory.access(props.accessor, "push"),
527
529
  undefined,
528
530
  [decoder()],
529
531
  ),
@@ -533,7 +535,7 @@ export namespace ProtobufDecodeProgrammer {
533
535
  } else
534
536
  statements.push(
535
537
  ts.factory.createCallExpression(
536
- IdentifierFactory.access(props.accessor)("push"),
538
+ IdentifierFactory.access(props.accessor, "push"),
537
539
  undefined,
538
540
  [decoder()],
539
541
  ),
@@ -556,7 +558,7 @@ export namespace ProtobufDecodeProgrammer {
556
558
  ? []
557
559
  : [
558
560
  ts.factory.createCallExpression(
559
- IdentifierFactory.access(READER())("uint32"),
561
+ IdentifierFactory.access(READER(), "uint32"),
560
562
  undefined,
561
563
  undefined,
562
564
  ),
@@ -629,7 +631,7 @@ export namespace ProtobufDecodeProgrammer {
629
631
  ),
630
632
  setter: () =>
631
633
  ts.factory.createCallExpression(
632
- IdentifierFactory.access(props.accessor)("set"),
634
+ IdentifierFactory.access(props.accessor, "set"),
633
635
  undefined,
634
636
  [
635
637
  ts.factory.createIdentifier("entry.key"),
@@ -652,27 +654,27 @@ export namespace ProtobufDecodeProgrammer {
652
654
  ...(props.required
653
655
  ? []
654
656
  : [ts.factory.createExpressionStatement(props.initializer())]),
655
- StatementFactory.constant(
656
- "piece",
657
- ts.factory.createAdd(
657
+ StatementFactory.constant({
658
+ name: "piece",
659
+ value: ts.factory.createAdd(
658
660
  ts.factory.createCallExpression(
659
- IdentifierFactory.access(READER())("uint32"),
661
+ IdentifierFactory.access(READER(), "uint32"),
660
662
  undefined,
661
663
  undefined,
662
664
  ),
663
665
  ts.factory.createCallExpression(
664
- IdentifierFactory.access(READER())("index"),
666
+ IdentifierFactory.access(READER(), "index"),
665
667
  undefined,
666
668
  undefined,
667
669
  ),
668
670
  ),
669
- ),
671
+ }),
670
672
  ...write_object_function_body({
671
673
  context: props.context,
672
674
  importer: props.importer,
673
675
  condition: ts.factory.createLessThan(
674
676
  ts.factory.createCallExpression(
675
- IdentifierFactory.access(READER())("index"),
677
+ IdentifierFactory.access(READER(), "index"),
676
678
  undefined,
677
679
  undefined,
678
680
  ),
@@ -45,25 +45,25 @@ export namespace ProtobufEncodeProgrammer {
45
45
  });
46
46
 
47
47
  const callEncoder = (writer: string, factory: ts.NewExpression) =>
48
- StatementFactory.constant(
49
- writer,
50
- ts.factory.createCallExpression(
48
+ StatementFactory.constant({
49
+ name: writer,
50
+ value: ts.factory.createCallExpression(
51
51
  ts.factory.createIdentifier("encoder"),
52
52
  undefined,
53
53
  [factory, ts.factory.createIdentifier("input")],
54
54
  ),
55
- );
55
+ });
56
56
  return {
57
57
  functions: {
58
- encoder: StatementFactory.constant(
59
- props.importer.useLocal("encoder"),
60
- write_encoder({
58
+ encoder: StatementFactory.constant({
59
+ name: props.importer.useLocal("encoder"),
60
+ value: write_encoder({
61
61
  context: props.context,
62
62
  importer: props.importer,
63
63
  collection,
64
64
  metadata,
65
65
  }),
66
- ),
66
+ }),
67
67
  },
68
68
  statements: [],
69
69
  arrow: ts.factory.createArrowFunction(
@@ -74,7 +74,10 @@ export namespace ProtobufEncodeProgrammer {
74
74
  "input",
75
75
  ts.factory.createTypeReferenceNode(
76
76
  props.name ??
77
- TypeFactory.getFullName(props.context.checker)(props.type),
77
+ TypeFactory.getFullName({
78
+ checker: props.context.checker,
79
+ type: props.type,
80
+ }),
78
81
  ),
79
82
  ),
80
83
  ],
@@ -100,7 +103,7 @@ export namespace ProtobufEncodeProgrammer {
100
103
  ),
101
104
  ts.factory.createReturnStatement(
102
105
  ts.factory.createCallExpression(
103
- IdentifierFactory.access(WRITER())("buffer"),
106
+ IdentifierFactory.access(WRITER(), "buffer"),
104
107
  undefined,
105
108
  undefined,
106
109
  ),
@@ -137,9 +140,9 @@ export namespace ProtobufEncodeProgrammer {
137
140
  .objects()
138
141
  .filter((obj) => ProtobufUtil.isStaticObject(obj))
139
142
  .map((object) =>
140
- StatementFactory.constant(
141
- `${PREFIX}o${object.index}`,
142
- write_object_function({
143
+ StatementFactory.constant({
144
+ name: `${PREFIX}o${object.index}`,
145
+ value: write_object_function({
143
146
  context: props.context,
144
147
  importer: props.importer,
145
148
  input: ts.factory.createIdentifier("input"),
@@ -151,7 +154,7 @@ export namespace ProtobufEncodeProgrammer {
151
154
  postfix: "",
152
155
  },
153
156
  }),
154
- ),
157
+ }),
155
158
  );
156
159
  const main: ts.Block = decode({
157
160
  context: props.context,
@@ -203,7 +206,7 @@ export namespace ProtobufEncodeProgrammer {
203
206
  const block = decode({
204
207
  ...props,
205
208
  index,
206
- input: IdentifierFactory.access(props.input)(p.key.getSoleLiteral()!),
209
+ input: IdentifierFactory.access(props.input, p.key.getSoleLiteral()!),
207
210
  metadata: p.value,
208
211
  });
209
212
  index += ProtobufUtil.size(p.value);
@@ -360,7 +363,7 @@ export namespace ProtobufEncodeProgrammer {
360
363
  if (props.metadata.natives.length)
361
364
  unions.push({
362
365
  type: "bytes",
363
- is: () => ExpressionFactory.isInstanceOf("Uint8Array")(props.input),
366
+ is: () => ExpressionFactory.isInstanceOf("Uint8Array", props.input),
364
367
  value: (index) =>
365
368
  decode_bytes({
366
369
  method: "bytes",
@@ -390,7 +393,7 @@ export namespace ProtobufEncodeProgrammer {
390
393
  if (props.metadata.maps.length)
391
394
  unions.push({
392
395
  type: "map",
393
- is: () => ExpressionFactory.isInstanceOf("Map")(props.input),
396
+ is: () => ExpressionFactory.isInstanceOf("Map", props.input),
394
397
  value: (index) =>
395
398
  decode_map({
396
399
  ...props,
@@ -411,7 +414,8 @@ export namespace ProtobufEncodeProgrammer {
411
414
  ExpressionFactory.isObject({
412
415
  checkNull: true,
413
416
  checkArray: false,
414
- })(props.input),
417
+ input: props.input,
418
+ }),
415
419
  value: (index) =>
416
420
  explore_objects({
417
421
  ...props,
@@ -483,7 +487,7 @@ export namespace ProtobufEncodeProgrammer {
483
487
  ),
484
488
  ts.factory.createExpressionStatement(
485
489
  ts.factory.createCallExpression(
486
- IdentifierFactory.access(WRITER())("fork"),
490
+ IdentifierFactory.access(WRITER(), "fork"),
487
491
  undefined,
488
492
  undefined,
489
493
  ),
@@ -502,7 +506,7 @@ export namespace ProtobufEncodeProgrammer {
502
506
  }).statements,
503
507
  ts.factory.createExpressionStatement(
504
508
  ts.factory.createCallExpression(
505
- IdentifierFactory.access(WRITER())("ldelim"),
509
+ IdentifierFactory.access(WRITER(), "ldelim"),
506
510
  undefined,
507
511
  undefined,
508
512
  ),
@@ -512,7 +516,10 @@ export namespace ProtobufEncodeProgrammer {
512
516
  [
513
517
  ts.factory.createForOfStatement(
514
518
  undefined,
515
- StatementFactory.entry("key")("value"),
519
+ StatementFactory.entry({
520
+ key: "key",
521
+ value: "value",
522
+ }),
516
523
  props.input,
517
524
  ts.factory.createBlock(each),
518
525
  ),
@@ -565,7 +572,7 @@ export namespace ProtobufEncodeProgrammer {
565
572
  index: props.index,
566
573
  }),
567
574
  ts.factory.createCallExpression(
568
- IdentifierFactory.access(WRITER())("fork"),
575
+ IdentifierFactory.access(WRITER(), "fork"),
569
576
  undefined,
570
577
  undefined,
571
578
  ),
@@ -581,7 +588,7 @@ export namespace ProtobufEncodeProgrammer {
581
588
  ...(props.index !== null
582
589
  ? [
583
590
  ts.factory.createCallExpression(
584
- IdentifierFactory.access(WRITER())("ldelim"),
591
+ IdentifierFactory.access(WRITER(), "ldelim"),
585
592
  undefined,
586
593
  undefined,
587
594
  ),
@@ -622,7 +629,7 @@ export namespace ProtobufEncodeProgrammer {
622
629
  ts.factory.createIfStatement(
623
630
  ts.factory.createStrictInequality(
624
631
  ExpressionFactory.number(0),
625
- IdentifierFactory.access(props.input)("length"),
632
+ IdentifierFactory.access(props.input, "length"),
626
633
  ),
627
634
  block,
628
635
  ),
@@ -643,7 +650,7 @@ export namespace ProtobufEncodeProgrammer {
643
650
  ),
644
651
  ts.factory.createExpressionStatement(
645
652
  ts.factory.createCallExpression(
646
- IdentifierFactory.access(WRITER())("fork"),
653
+ IdentifierFactory.access(WRITER(), "fork"),
647
654
  undefined,
648
655
  undefined,
649
656
  ),
@@ -651,7 +658,7 @@ export namespace ProtobufEncodeProgrammer {
651
658
  forLoop(null),
652
659
  ts.factory.createExpressionStatement(
653
660
  ts.factory.createCallExpression(
654
- IdentifierFactory.access(WRITER())("ldelim"),
661
+ IdentifierFactory.access(WRITER(), "ldelim"),
655
662
  undefined,
656
663
  undefined,
657
664
  ),
@@ -674,7 +681,7 @@ export namespace ProtobufEncodeProgrammer {
674
681
  ]
675
682
  : []),
676
683
  ts.factory.createCallExpression(
677
- IdentifierFactory.access(WRITER())("bool"),
684
+ IdentifierFactory.access(WRITER(), "bool"),
678
685
  undefined,
679
686
  [props.input],
680
687
  ),
@@ -699,7 +706,7 @@ export namespace ProtobufEncodeProgrammer {
699
706
  ts.factory.createStringLiteral("number"),
700
707
  ts.factory.createTypeOfExpression(props.input),
701
708
  ),
702
- NumericRangeFactory.number(props.type)(props.input),
709
+ NumericRangeFactory.number(props.type, props.input),
703
710
  ),
704
711
  value: (index) =>
705
712
  ts.factory.createBlock(
@@ -713,7 +720,7 @@ export namespace ProtobufEncodeProgrammer {
713
720
  ]
714
721
  : []),
715
722
  ts.factory.createCallExpression(
716
- IdentifierFactory.access(WRITER())(props.type),
723
+ IdentifierFactory.access(WRITER(), props.type),
717
724
  undefined,
718
725
  [props.input],
719
726
  ),
@@ -739,7 +746,7 @@ export namespace ProtobufEncodeProgrammer {
739
746
  ts.factory.createStringLiteral("bigint"),
740
747
  ts.factory.createTypeOfExpression(props.input),
741
748
  ),
742
- NumericRangeFactory.bigint(props.type)(props.input),
749
+ NumericRangeFactory.bigint(props.type, props.input),
743
750
  ),
744
751
  value: (index) =>
745
752
  ts.factory.createBlock(
@@ -753,7 +760,7 @@ export namespace ProtobufEncodeProgrammer {
753
760
  ]
754
761
  : []),
755
762
  ts.factory.createCallExpression(
756
- IdentifierFactory.access(WRITER())(props.type),
763
+ IdentifierFactory.access(WRITER(), props.type),
757
764
  undefined,
758
765
  [props.input],
759
766
  ),
@@ -774,7 +781,7 @@ export namespace ProtobufEncodeProgrammer {
774
781
  index: props.index,
775
782
  }),
776
783
  ts.factory.createCallExpression(
777
- IdentifierFactory.access(WRITER())(props.method),
784
+ IdentifierFactory.access(WRITER(), props.method),
778
785
  undefined,
779
786
  [props.input],
780
787
  ),
@@ -787,7 +794,7 @@ export namespace ProtobufEncodeProgrammer {
787
794
  index: number;
788
795
  }): ts.CallExpression =>
789
796
  ts.factory.createCallExpression(
790
- IdentifierFactory.access(WRITER())("uint32"),
797
+ IdentifierFactory.access(WRITER(), "uint32"),
791
798
  undefined,
792
799
  [ExpressionFactory.number((props.index << 3) | props.wire)],
793
800
  );
@@ -858,33 +865,37 @@ export namespace ProtobufEncodeProgrammer {
858
865
  new Map(props.objects.map((t, i) => [t, props.index! + i]));
859
866
 
860
867
  if (specList.length === 0) {
861
- const condition: ts.Expression = decode_union_object(
862
- (input, object, explore) =>
868
+ const condition: ts.Expression = decode_union_object({
869
+ checker: (v) =>
863
870
  IsProgrammer.decode_object({
864
871
  context: props.context,
865
872
  importer: props.importer,
866
- object,
867
- input,
868
- explore,
873
+ object: v.object,
874
+ input: v.input,
875
+ explore: v.explore,
869
876
  }),
870
- )((input, object, explore) =>
871
- ExpressionFactory.selfCall(
872
- decode_object({
873
- context: props.context,
877
+ decoder: (v) =>
878
+ ExpressionFactory.selfCall(
879
+ decode_object({
880
+ context: props.context,
881
+ importer: props.importer,
882
+ index: indexes.get(v.object)!,
883
+ input: v.input,
884
+ object: v.object,
885
+ explore: v.explore,
886
+ }),
887
+ ),
888
+ success: (expr) => expr,
889
+ escaper: (v) =>
890
+ create_throw_error({
874
891
  importer: props.importer,
875
- index: indexes.get(object)!,
876
- input,
877
- object,
878
- explore,
892
+ expected: v.expected,
893
+ input: v.input,
879
894
  }),
880
- ),
881
- )((expr) => expr)((input, expected) =>
882
- create_throw_error({
883
- importer: props.importer,
884
- expected,
885
- input,
886
- }),
887
- )(props.input, props.objects, props.explore);
895
+ input: props.input,
896
+ objects: props.objects,
897
+ explore: props.explore,
898
+ });
888
899
  return StatementFactory.block(condition);
889
900
  }
890
901
  const remained: MetadataObject[] = props.objects.filter(
@@ -896,7 +907,8 @@ export namespace ProtobufEncodeProgrammer {
896
907
  .filter((spec) => spec.property.key.getSoleLiteral() !== null)
897
908
  .map((spec, i, array) => {
898
909
  const key: string = spec.property.key.getSoleLiteral()!;
899
- const accessor: ts.Expression = IdentifierFactory.access(props.input)(
910
+ const accessor: ts.Expression = IdentifierFactory.access(
911
+ props.input,
900
912
  key,
901
913
  );
902
914
  const pred: ts.Expression = spec.neighbour
@@ -43,8 +43,14 @@ export namespace ProtobufIsDecodeProgrammer {
43
43
  statements: [
44
44
  ...is.statements,
45
45
  ...decode.statements,
46
- StatementFactory.constant("__is", is.arrow),
47
- StatementFactory.constant("__decode", decode.arrow),
46
+ StatementFactory.constant({
47
+ name: "__is",
48
+ value: is.arrow,
49
+ }),
50
+ StatementFactory.constant({
51
+ name: "__decode",
52
+ value: decode.arrow,
53
+ }),
48
54
  ],
49
55
  arrow: ts.factory.createArrowFunction(
50
56
  undefined,
@@ -57,14 +63,14 @@ export namespace ProtobufIsDecodeProgrammer {
57
63
  undefined,
58
64
  ts.factory.createBlock(
59
65
  [
60
- StatementFactory.constant(
61
- "value",
62
- ts.factory.createCallExpression(
66
+ StatementFactory.constant({
67
+ name: "value",
68
+ value: ts.factory.createCallExpression(
63
69
  ts.factory.createIdentifier("__decode"),
64
70
  undefined,
65
71
  [ts.factory.createIdentifier("input")],
66
72
  ),
67
- ),
73
+ }),
68
74
  ts.factory.createIfStatement(
69
75
  ts.factory.createPrefixUnaryExpression(
70
76
  ts.SyntaxKind.ExclamationToken,
@@ -44,8 +44,14 @@ export namespace ProtobufIsEncodeProgrammer {
44
44
  statements: [
45
45
  ...is.statements,
46
46
  ...encode.statements,
47
- StatementFactory.constant("__is", is.arrow),
48
- StatementFactory.constant("__encode", encode.arrow),
47
+ StatementFactory.constant({
48
+ name: "__is",
49
+ value: is.arrow,
50
+ }),
51
+ StatementFactory.constant({
52
+ name: "__encode",
53
+ value: encode.arrow,
54
+ }),
49
55
  ],
50
56
  arrow: ts.factory.createArrowFunction(
51
57
  undefined,
@@ -41,8 +41,14 @@ export namespace ProtobufValidateDecodeProgrammer {
41
41
  },
42
42
  statements: [
43
43
  ...validate.statements,
44
- StatementFactory.constant("__validate", validate.arrow),
45
- StatementFactory.constant("__decode", decode.arrow),
44
+ StatementFactory.constant({
45
+ name: "__validate",
46
+ value: validate.arrow,
47
+ }),
48
+ StatementFactory.constant({
49
+ name: "__decode",
50
+ value: decode.arrow,
51
+ }),
46
52
  ],
47
53
  arrow: ts.factory.createArrowFunction(
48
54
  undefined,
@@ -43,8 +43,14 @@ export namespace ProtobufValidateEncodeProgrammer {
43
43
  statements: [
44
44
  ...validate.statements,
45
45
  ...encode.statements,
46
- StatementFactory.constant("__validate", validate.arrow),
47
- StatementFactory.constant("__encode", encode.arrow),
46
+ StatementFactory.constant({
47
+ name: "__validate",
48
+ value: validate.arrow,
49
+ }),
50
+ StatementFactory.constant({
51
+ name: "__encode",
52
+ value: encode.arrow,
53
+ }),
48
54
  ],
49
55
  arrow: ts.factory.createArrowFunction(
50
56
  undefined,
@@ -56,9 +62,9 @@ export namespace ProtobufValidateEncodeProgrammer {
56
62
  undefined,
57
63
  ts.factory.createBlock(
58
64
  [
59
- StatementFactory.constant(
60
- "result",
61
- ts.factory.createAsExpression(
65
+ StatementFactory.constant({
66
+ name: "result",
67
+ value: ts.factory.createAsExpression(
62
68
  ts.factory.createCallExpression(
63
69
  ts.factory.createIdentifier("__validate"),
64
70
  undefined,
@@ -66,7 +72,7 @@ export namespace ProtobufValidateEncodeProgrammer {
66
72
  ),
67
73
  TypeFactory.keyword("any"),
68
74
  ),
69
- ),
75
+ }),
70
76
  ts.factory.createIfStatement(
71
77
  ts.factory.createIdentifier("result.success"),
72
78
  ts.factory.createExpressionStatement(