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
@@ -51,7 +51,10 @@ export namespace HttpFormDataProgrammer {
51
51
 
52
52
  // DO TRANSFORM
53
53
  const object: MetadataObject = result.data.objects[0]!;
54
- const statements: ts.Statement[] = decode_object(props.importer)(object);
54
+ const statements: ts.Statement[] = decode_object({
55
+ importer: props.importer,
56
+ object,
57
+ });
55
58
  return {
56
59
  functions: {},
57
60
  statements: [],
@@ -73,7 +76,10 @@ export namespace HttpFormDataProgrammer {
73
76
  [
74
77
  ts.factory.createTypeReferenceNode(
75
78
  props.name ??
76
- TypeFactory.getFullName(props.context.checker)(props.type),
79
+ TypeFactory.getFullName({
80
+ checker: props.context.checker,
81
+ type: props.type,
82
+ }),
77
83
  ),
78
84
  ],
79
85
  false,
@@ -154,126 +160,145 @@ export namespace HttpFormDataProgrammer {
154
160
  return errors;
155
161
  };
156
162
 
157
- const decode_object =
158
- (importer: FunctionImporter) =>
159
- (object: MetadataObject): ts.Statement[] => {
160
- // const input: ts.Identifier = ts.factory.createIdentifier("input");
161
- const output: ts.Identifier = ts.factory.createIdentifier("output");
162
- return [
163
- StatementFactory.constant(
164
- "output",
165
- ts.factory.createObjectLiteralExpression(
166
- object.properties.map((prop) =>
167
- decode_regular_property(importer)(prop),
168
- ),
169
- true,
163
+ const decode_object = (props: {
164
+ importer: FunctionImporter;
165
+ object: MetadataObject;
166
+ }): ts.Statement[] => {
167
+ // const input: ts.Identifier = ts.factory.createIdentifier("input");
168
+ const output: ts.Identifier = ts.factory.createIdentifier("output");
169
+ return [
170
+ StatementFactory.constant({
171
+ name: "output",
172
+ value: ts.factory.createObjectLiteralExpression(
173
+ props.object.properties.map((p) =>
174
+ decode_regular_property({
175
+ importer: props.importer,
176
+ property: p,
177
+ }),
170
178
  ),
179
+ true,
171
180
  ),
172
- ts.factory.createReturnStatement(
173
- ts.factory.createAsExpression(output, TypeFactory.keyword("any")),
174
- ),
175
- ];
176
- };
181
+ }),
182
+ ts.factory.createReturnStatement(
183
+ ts.factory.createAsExpression(output, TypeFactory.keyword("any")),
184
+ ),
185
+ ];
186
+ };
177
187
 
178
- const decode_regular_property =
179
- (importer: FunctionImporter) =>
180
- (property: MetadataProperty): ts.PropertyAssignment => {
181
- const key: string = property.key.constants[0]!.values[0]!.value as string;
182
- const value: Metadata = property.value;
188
+ const decode_regular_property = (props: {
189
+ importer: FunctionImporter;
190
+ property: MetadataProperty;
191
+ }): ts.PropertyAssignment => {
192
+ const key: string = props.property.key.constants[0]!.values[0]!
193
+ .value as string;
194
+ const value: Metadata = props.property.value;
183
195
 
184
- const [type, isArray]: [Atomic.Literal | "blob" | "file", boolean] = value
185
- .atomics.length
186
- ? [value.atomics[0]!.type, false]
187
- : value.constants.length
188
- ? [value.constants[0]!.type, false]
189
- : value.templates.length
190
- ? ["string", false]
191
- : value.natives.includes("Blob")
192
- ? ["blob", false]
193
- : value.natives.includes("File")
194
- ? ["file", false]
195
- : (() => {
196
- const meta =
197
- value.arrays[0]?.type.value ??
198
- value.tuples[0]!.type.elements[0]!;
199
- return meta.atomics.length
200
- ? [meta.atomics[0]!.type, true]
201
- : meta.templates.length
202
- ? ["string", true]
203
- : meta.natives.includes("Blob")
204
- ? ["blob", true]
205
- : meta.natives.includes("File")
206
- ? ["file", true]
207
- : [meta.constants[0]!.type, true];
208
- })();
209
- return ts.factory.createPropertyAssignment(
210
- Escaper.variable(key) ? key : ts.factory.createStringLiteral(key),
211
- isArray
212
- ? decode_array(importer)(value)(
213
- ts.factory.createCallExpression(
214
- IdentifierFactory.access(
215
- ts.factory.createCallExpression(
216
- ts.factory.createIdentifier("input.getAll"),
217
- undefined,
218
- [ts.factory.createStringLiteral(key)],
219
- ),
220
- )("map"),
221
- undefined,
222
- [
223
- ts.factory.createArrowFunction(
224
- undefined,
225
- undefined,
226
- [IdentifierFactory.parameter("elem")],
227
- undefined,
228
- undefined,
229
- decode_value(importer)(type)(false)(
230
- ts.factory.createIdentifier("elem"),
231
- ),
232
- ),
233
- ],
234
- ),
235
- )
236
- : decode_value(importer)(type)(
237
- value.nullable === false && value.isRequired() === false,
238
- )(
239
- ts.factory.createCallExpression(
240
- ts.factory.createIdentifier("input.get"),
241
- undefined,
242
- [ts.factory.createStringLiteral(key)],
196
+ const [type, isArray]: [Atomic.Literal | "blob" | "file", boolean] = value
197
+ .atomics.length
198
+ ? [value.atomics[0]!.type, false]
199
+ : value.constants.length
200
+ ? [value.constants[0]!.type, false]
201
+ : value.templates.length
202
+ ? ["string", false]
203
+ : value.natives.includes("Blob")
204
+ ? ["blob", false]
205
+ : value.natives.includes("File")
206
+ ? ["file", false]
207
+ : (() => {
208
+ const meta =
209
+ value.arrays[0]?.type.value ??
210
+ value.tuples[0]!.type.elements[0]!;
211
+ return meta.atomics.length
212
+ ? [meta.atomics[0]!.type, true]
213
+ : meta.templates.length
214
+ ? ["string", true]
215
+ : meta.natives.includes("Blob")
216
+ ? ["blob", true]
217
+ : meta.natives.includes("File")
218
+ ? ["file", true]
219
+ : [meta.constants[0]!.type, true];
220
+ })();
221
+ return ts.factory.createPropertyAssignment(
222
+ Escaper.variable(key) ? key : ts.factory.createStringLiteral(key),
223
+ isArray
224
+ ? decode_array({
225
+ importer: props.importer,
226
+ metadata: value,
227
+ input: ts.factory.createCallExpression(
228
+ IdentifierFactory.access(
229
+ ts.factory.createCallExpression(
230
+ ts.factory.createIdentifier("input.getAll"),
231
+ undefined,
232
+ [ts.factory.createStringLiteral(key)],
233
+ ),
234
+ "map",
243
235
  ),
236
+ undefined,
237
+ [
238
+ ts.factory.createArrowFunction(
239
+ undefined,
240
+ undefined,
241
+ [IdentifierFactory.parameter("elem")],
242
+ undefined,
243
+ undefined,
244
+ decode_value({
245
+ importer: props.importer,
246
+ type,
247
+ coalesce: false,
248
+ input: ts.factory.createIdentifier("elem"),
249
+ }),
250
+ ),
251
+ ],
244
252
  ),
245
- );
246
- };
253
+ })
254
+ : decode_value({
255
+ importer: props.importer,
256
+ type,
257
+ coalesce: value.nullable === false && value.isRequired() === false,
258
+ input: ts.factory.createCallExpression(
259
+ ts.factory.createIdentifier("input.get"),
260
+ undefined,
261
+ [ts.factory.createStringLiteral(key)],
262
+ ),
263
+ }),
264
+ );
265
+ };
247
266
 
248
- const decode_value =
249
- (importer: FunctionImporter) =>
250
- (type: Atomic.Literal | "blob" | "file") =>
251
- (onlyUndefindable: boolean) =>
252
- (value: ts.Expression) => {
253
- const call = ts.factory.createCallExpression(
254
- importer.use(type),
255
- undefined,
256
- [value],
257
- );
258
- return onlyUndefindable
259
- ? ts.factory.createBinaryExpression(
260
- call,
261
- ts.factory.createToken(ts.SyntaxKind.QuestionQuestionToken),
262
- ts.factory.createIdentifier("undefined"),
263
- )
264
- : call;
265
- };
267
+ const decode_value = (props: {
268
+ importer: FunctionImporter;
269
+ type: Atomic.Literal | "blob" | "file";
270
+ coalesce: boolean;
271
+ input: ts.Expression;
272
+ }) => {
273
+ const call = ts.factory.createCallExpression(
274
+ props.importer.use(props.type),
275
+ undefined,
276
+ [props.input],
277
+ );
278
+ return props.coalesce
279
+ ? ts.factory.createBinaryExpression(
280
+ call,
281
+ ts.factory.createToken(ts.SyntaxKind.QuestionQuestionToken),
282
+ ts.factory.createIdentifier("undefined"),
283
+ )
284
+ : call;
285
+ };
266
286
 
267
- const decode_array =
268
- (importer: FunctionImporter) =>
269
- (value: Metadata) =>
270
- (expression: ts.Expression): ts.Expression =>
271
- value.nullable || value.isRequired() === false
272
- ? ts.factory.createCallExpression(importer.use("array"), undefined, [
273
- expression,
274
- value.nullable
287
+ const decode_array = (props: {
288
+ importer: FunctionImporter;
289
+ metadata: Metadata;
290
+ input: ts.Expression;
291
+ }): ts.Expression =>
292
+ props.metadata.nullable || props.metadata.isRequired() === false
293
+ ? ts.factory.createCallExpression(
294
+ props.importer.use("array"),
295
+ undefined,
296
+ [
297
+ props.input,
298
+ props.metadata.nullable
275
299
  ? ts.factory.createNull()
276
300
  : ts.factory.createIdentifier("undefined"),
277
- ])
278
- : expression;
301
+ ],
302
+ )
303
+ : props.input;
279
304
  }
@@ -55,7 +55,10 @@ export namespace HttpHeadersProgrammer {
55
55
 
56
56
  // DO TRANSFORM
57
57
  const object: MetadataObject = result.data.objects[0]!;
58
- const statements: ts.Statement[] = decode_object(props.importer)(object);
58
+ const statements: ts.Statement[] = decode_object({
59
+ importer: props.importer,
60
+ object,
61
+ });
59
62
  return {
60
63
  functions: {},
61
64
  statements: [],
@@ -77,7 +80,10 @@ export namespace HttpHeadersProgrammer {
77
80
  [
78
81
  ts.factory.createTypeReferenceNode(
79
82
  props.name ??
80
- TypeFactory.getFullName(props.context.checker)(props.type),
83
+ TypeFactory.getFullName({
84
+ checker: props.context.checker,
85
+ type: props.type,
86
+ }),
81
87
  ),
82
88
  ],
83
89
  false,
@@ -195,135 +201,158 @@ export namespace HttpHeadersProgrammer {
195
201
  return errors;
196
202
  };
197
203
 
198
- const decode_object =
199
- (importer: FunctionImporter) =>
200
- (object: MetadataObject): ts.Statement[] => {
201
- const output: ts.Identifier = ts.factory.createIdentifier("output");
202
- const optionals: string[] = [];
203
- return [
204
- StatementFactory.constant(
205
- "output",
206
- ts.factory.createObjectLiteralExpression(
207
- object.properties.map((prop) => {
208
- if (
209
- !prop.value.isRequired() &&
210
- prop.value.arrays.length + prop.value.tuples.length > 0
211
- )
212
- optionals.push(
213
- prop.key.constants[0]!.values[0]!.value as string,
214
- );
215
- return decode_regular_property(importer)(prop);
216
- }),
217
- true,
218
- ),
219
- ),
220
- ...optionals.map((key) => {
221
- const access = IdentifierFactory.access(output)(key);
222
- return ts.factory.createIfStatement(
223
- ts.factory.createStrictEquality(
224
- ExpressionFactory.number(0),
225
- IdentifierFactory.access(access)("length"),
226
- ),
227
- ts.factory.createExpressionStatement(
228
- ts.factory.createDeleteExpression(access),
229
- ),
230
- );
231
- }),
232
- ts.factory.createReturnStatement(
233
- ts.factory.createAsExpression(output, TypeFactory.keyword("any")),
204
+ const decode_object = (props: {
205
+ importer: FunctionImporter;
206
+ object: MetadataObject;
207
+ }): ts.Statement[] => {
208
+ const output: ts.Identifier = ts.factory.createIdentifier("output");
209
+ const optionals: string[] = [];
210
+ return [
211
+ StatementFactory.constant({
212
+ name: "output",
213
+ value: ts.factory.createObjectLiteralExpression(
214
+ props.object.properties.map((p) => {
215
+ if (
216
+ !p.value.isRequired() &&
217
+ p.value.arrays.length + p.value.tuples.length > 0
218
+ )
219
+ optionals.push(p.key.constants[0]!.values[0]!.value as string);
220
+ return decode_regular_property({
221
+ importer: props.importer,
222
+ property: p,
223
+ });
224
+ }),
225
+ true,
234
226
  ),
235
- ];
236
- };
227
+ }),
228
+ ...optionals.map((key) => {
229
+ const access = IdentifierFactory.access(output, key);
230
+ return ts.factory.createIfStatement(
231
+ ts.factory.createStrictEquality(
232
+ ExpressionFactory.number(0),
233
+ IdentifierFactory.access(access, "length"),
234
+ ),
235
+ ts.factory.createExpressionStatement(
236
+ ts.factory.createDeleteExpression(access),
237
+ ),
238
+ );
239
+ }),
240
+ ts.factory.createReturnStatement(
241
+ ts.factory.createAsExpression(output, TypeFactory.keyword("any")),
242
+ ),
243
+ ];
244
+ };
237
245
 
238
- const decode_regular_property =
239
- (importer: FunctionImporter) =>
240
- (property: MetadataProperty): ts.PropertyAssignment => {
241
- const key: string = property.key.constants[0]!.values[0]!.value as string;
242
- const value: Metadata = property.value;
246
+ const decode_regular_property = (props: {
247
+ importer: FunctionImporter;
248
+ property: MetadataProperty;
249
+ }): ts.PropertyAssignment => {
250
+ const key: string = props.property.key.constants[0]!.values[0]!
251
+ .value as string;
252
+ const value: Metadata = props.property.value;
243
253
 
244
- const [type, isArray]: [Atomic.Literal, boolean] = value.atomics.length
245
- ? [value.atomics[0]!.type, false]
246
- : value.constants.length
247
- ? [value.constants[0]!.type, false]
248
- : value.templates.length
249
- ? ["string", false]
250
- : (() => {
251
- const meta: Metadata =
252
- value.arrays[0]?.type.value ??
253
- value.tuples[0]!.type.elements[0]!;
254
- return meta.atomics.length
255
- ? [meta.atomics[0]!.type, true]
256
- : meta.templates.length
257
- ? ["string", true]
258
- : [meta.constants[0]!.type, true];
259
- })();
260
- const accessor = IdentifierFactory.access(
261
- ts.factory.createIdentifier("input"),
262
- )(key.toLowerCase());
254
+ const [type, isArray]: [Atomic.Literal, boolean] = value.atomics.length
255
+ ? [value.atomics[0]!.type, false]
256
+ : value.constants.length
257
+ ? [value.constants[0]!.type, false]
258
+ : value.templates.length
259
+ ? ["string", false]
260
+ : (() => {
261
+ const meta: Metadata =
262
+ value.arrays[0]?.type.value ??
263
+ value.tuples[0]!.type.elements[0]!;
264
+ return meta.atomics.length
265
+ ? [meta.atomics[0]!.type, true]
266
+ : meta.templates.length
267
+ ? ["string", true]
268
+ : [meta.constants[0]!.type, true];
269
+ })();
270
+ const input = IdentifierFactory.access(
271
+ ts.factory.createIdentifier("input"),
272
+ key.toLowerCase(),
273
+ );
263
274
 
264
- return ts.factory.createPropertyAssignment(
265
- Escaper.variable(key) ? key : ts.factory.createStringLiteral(key),
266
- isArray
267
- ? key === "set-cookie"
268
- ? accessor
269
- : decode_array(importer)(type)(key)(value)(accessor)
270
- : decode_value(importer)(type)(accessor),
271
- );
272
- };
275
+ return ts.factory.createPropertyAssignment(
276
+ Escaper.variable(key) ? key : ts.factory.createStringLiteral(key),
277
+ isArray
278
+ ? key === "set-cookie"
279
+ ? input
280
+ : decode_array({
281
+ importer: props.importer,
282
+ type,
283
+ key,
284
+ value,
285
+ input,
286
+ })
287
+ : decode_value({
288
+ importer: props.importer,
289
+ type,
290
+ input,
291
+ }),
292
+ );
293
+ };
273
294
 
274
- const decode_value =
275
- (importer: FunctionImporter) =>
276
- (type: Atomic.Literal) =>
277
- (value: ts.Expression) =>
278
- type === "string"
279
- ? value
280
- : ts.factory.createCallExpression(importer.use(type), undefined, [
281
- value,
282
- ]);
295
+ const decode_value = (props: {
296
+ importer: FunctionImporter;
297
+ type: Atomic.Literal;
298
+ input: ts.Expression;
299
+ }) =>
300
+ props.type === "string"
301
+ ? props.input
302
+ : ts.factory.createCallExpression(
303
+ props.importer.use(props.type),
304
+ undefined,
305
+ [props.input],
306
+ );
283
307
 
284
- const decode_array =
285
- (importer: FunctionImporter) =>
286
- (type: Atomic.Literal) =>
287
- (key: string) =>
288
- (value: Metadata) =>
289
- (accessor: ts.Expression) => {
290
- const split: ts.CallChain = ts.factory.createCallChain(
291
- ts.factory.createPropertyAccessChain(
292
- ts.factory.createCallChain(
293
- ts.factory.createPropertyAccessChain(
294
- accessor,
295
- ts.factory.createToken(ts.SyntaxKind.QuestionDotToken),
296
- ts.factory.createIdentifier("split"),
297
- ),
298
- undefined,
299
- undefined,
300
- [ts.factory.createStringLiteral(key === "cookie" ? "; " : ", ")],
308
+ const decode_array = (props: {
309
+ importer: FunctionImporter;
310
+ type: Atomic.Literal;
311
+ key: string;
312
+ value: Metadata;
313
+ input: ts.Expression;
314
+ }) => {
315
+ const split: ts.CallChain = ts.factory.createCallChain(
316
+ ts.factory.createPropertyAccessChain(
317
+ ts.factory.createCallChain(
318
+ ts.factory.createPropertyAccessChain(
319
+ props.input,
320
+ ts.factory.createToken(ts.SyntaxKind.QuestionDotToken),
321
+ ts.factory.createIdentifier("split"),
301
322
  ),
302
- ts.factory.createToken(ts.SyntaxKind.QuestionDotToken),
303
- ts.factory.createIdentifier("map"),
304
- ),
305
- undefined,
306
- undefined,
307
- [importer.use(type)],
308
- );
309
- return ts.factory.createConditionalExpression(
310
- ExpressionFactory.isArray(accessor),
311
- undefined,
312
- ts.factory.createCallExpression(
313
- IdentifierFactory.access(accessor)("map"),
314
323
  undefined,
315
- [importer.use(type)],
324
+ undefined,
325
+ [
326
+ ts.factory.createStringLiteral(
327
+ props.key === "cookie" ? "; " : ", ",
328
+ ),
329
+ ],
316
330
  ),
331
+ ts.factory.createToken(ts.SyntaxKind.QuestionDotToken),
332
+ ts.factory.createIdentifier("map"),
333
+ ),
334
+ undefined,
335
+ undefined,
336
+ [props.importer.use(props.type)],
337
+ );
338
+ return ts.factory.createConditionalExpression(
339
+ ExpressionFactory.isArray(props.input),
340
+ undefined,
341
+ ts.factory.createCallExpression(
342
+ IdentifierFactory.access(props.input, "map"),
317
343
  undefined,
318
- value.isRequired() === false
319
- ? split
320
- : ts.factory.createBinaryExpression(
321
- split,
322
- ts.factory.createToken(ts.SyntaxKind.QuestionQuestionToken),
323
- ts.factory.createArrayLiteralExpression([], false),
324
- ),
325
- );
326
- };
344
+ [props.importer.use(props.type)],
345
+ ),
346
+ undefined,
347
+ props.value.isRequired() === false
348
+ ? split
349
+ : ts.factory.createBinaryExpression(
350
+ split,
351
+ ts.factory.createToken(ts.SyntaxKind.QuestionQuestionToken),
352
+ ts.factory.createArrayLiteralExpression([], false),
353
+ ),
354
+ );
355
+ };
327
356
  }
328
357
 
329
358
  const SINGULAR: Set<string> = new Set([
@@ -42,8 +42,14 @@ export namespace HttpIsFormDataProgrammer {
42
42
  statements: [
43
43
  ...is.statements,
44
44
  ...decode.statements,
45
- StatementFactory.constant("__is", is.arrow),
46
- StatementFactory.constant("__decode", decode.arrow),
45
+ StatementFactory.constant({
46
+ name: "__is",
47
+ value: is.arrow,
48
+ }),
49
+ StatementFactory.constant({
50
+ name: "__decode",
51
+ value: decode.arrow,
52
+ }),
47
53
  ],
48
54
  arrow: ts.factory.createArrowFunction(
49
55
  undefined,
@@ -56,14 +62,14 @@ export namespace HttpIsFormDataProgrammer {
56
62
  undefined,
57
63
  ts.factory.createBlock(
58
64
  [
59
- StatementFactory.constant(
60
- "value",
61
- ts.factory.createCallExpression(
65
+ StatementFactory.constant({
66
+ name: "value",
67
+ value: ts.factory.createCallExpression(
62
68
  ts.factory.createIdentifier("__decode"),
63
69
  undefined,
64
70
  [ts.factory.createIdentifier("input")],
65
71
  ),
66
- ),
72
+ }),
67
73
  ts.factory.createIfStatement(
68
74
  ts.factory.createPrefixUnaryExpression(
69
75
  ts.SyntaxKind.ExclamationToken,
@@ -42,8 +42,14 @@ export namespace HttpIsHeadersProgrammer {
42
42
  statements: [
43
43
  ...is.statements,
44
44
  ...decode.statements,
45
- StatementFactory.constant("__is", is.arrow),
46
- StatementFactory.constant("__decode", decode.arrow),
45
+ StatementFactory.constant({
46
+ name: "__is",
47
+ value: is.arrow,
48
+ }),
49
+ StatementFactory.constant({
50
+ name: "__decode",
51
+ value: decode.arrow,
52
+ }),
47
53
  ],
48
54
  arrow: ts.factory.createArrowFunction(
49
55
  undefined,
@@ -56,14 +62,14 @@ export namespace HttpIsHeadersProgrammer {
56
62
  undefined,
57
63
  ts.factory.createBlock(
58
64
  [
59
- StatementFactory.constant(
60
- "value",
61
- ts.factory.createCallExpression(
65
+ StatementFactory.constant({
66
+ name: "value",
67
+ value: ts.factory.createCallExpression(
62
68
  ts.factory.createIdentifier("__decode"),
63
69
  undefined,
64
70
  [ts.factory.createIdentifier("input")],
65
71
  ),
66
- ),
72
+ }),
67
73
  ts.factory.createIfStatement(
68
74
  ts.factory.createPrefixUnaryExpression(
69
75
  ts.SyntaxKind.ExclamationToken,