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
@@ -40,284 +40,329 @@ exports.MetadataTypeTagFactory = void 0;
40
40
  var MetadataTypeTagSchemaFactory_1 = require("./MetadataTypeTagSchemaFactory");
41
41
  var MetadataTypeTagFactory;
42
42
  (function (MetadataTypeTagFactory) {
43
- MetadataTypeTagFactory.analyze = function (errors) {
44
- return function (type) {
45
- return function (objects, explore) {
46
- var e_1, _a;
47
- var messages = [];
48
- var report = function (property) {
49
- return function (msg) {
50
- messages.push("the property ".concat(property === null ? "[\"typia.tag\"]" : "[\"typia.tag.".concat(property, "\"]"), " ").concat(msg, "."));
51
- return false;
52
- };
53
- };
54
- //----
55
- // VALIDATION PROCESS
56
- //----
57
- var filtered = objects.filter(function (obj) {
58
- // ONLY ONE PROPERTY
59
- if (obj.properties.length !== 1)
60
- return false;
61
- // THE TAG.TYPE PROPERTY MUST BE
62
- var top = obj.properties[0];
63
- if (top.key.getSoleLiteral() !== "typia.tag" ||
64
- top.value.size() !== 1 ||
65
- top.value.objects.length !== 1)
66
- return false;
67
- else if (top.value.optional === false)
68
- return report(null)("must be optional object");
69
- // CHECK LIST OF PROPERTIES
70
- var tag = top.value.objects[0];
71
- var statics = tag.properties
72
- .map(function (p) { return p.key.getSoleLiteral(); })
73
- .filter(function (str) { return str !== null; });
74
- if (ESSENTIAL_FIELDS.some(function (f) { return !statics.includes(f); }))
75
- return report(null)("must have at least three properties - ".concat(ESSENTIAL_FIELDS.map(function (str) { return "'".concat(str, "'"); }).join(", ")));
76
- var each = tag.properties.map(function (p) {
77
- var key = p.key.getSoleLiteral();
78
- if (key === null)
79
- return true;
80
- else if (FIELDS.includes(key) === false)
81
- return true;
82
- return validate_property(report)(key, p.value);
83
- });
84
- return each.every(function (v) { return v === true; });
85
- });
86
- if (filtered.length === 0)
87
- return [];
88
- //----
89
- // CONSTRUCT TYPE TAGS
90
- //----
91
- // CREATE 1ST
92
- var tagList = filtered.map(create_metadata_type_tag(report));
93
- var output = [];
94
- try {
95
- for (var tagList_1 = __values(tagList), tagList_1_1 = tagList_1.next(); !tagList_1_1.done; tagList_1_1 = tagList_1.next()) {
96
- var tag = tagList_1_1.value;
97
- if (tag !== null)
98
- output.push({
99
- target: tag.target.some(function (str) { return str === type; }) ? type : null,
100
- name: tag.name,
101
- kind: tag.kind,
102
- value: tag.value,
103
- validate: tag.validate[type],
104
- exclusive: tag.exclusive,
105
- schema: tag.schema,
106
- });
107
- }
108
- }
109
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
110
- finally {
111
- try {
112
- if (tagList_1_1 && !tagList_1_1.done && (_a = tagList_1.return)) _a.call(tagList_1);
113
- }
114
- finally { if (e_1) throw e_1.error; }
115
- }
116
- MetadataTypeTagFactory.validate(report)(type)(output);
117
- if (messages.length > 0) {
118
- errors.push({
119
- name: __spreadArray([type], __read(objects.map(function (o) { return o.name; })), false).join(" & "),
120
- explore: explore,
121
- messages: messages,
122
- });
123
- return [];
124
- }
125
- return output;
126
- };
43
+ MetadataTypeTagFactory.analyze = function (props) {
44
+ var e_1, _a;
45
+ var messages = [];
46
+ var report = function (next) {
47
+ messages.push("the property ".concat(next.property === null
48
+ ? "[\"typia.tag\"]"
49
+ : "[\"typia.tag.".concat(next.property, "\"]"), " ").concat(next.message, "."));
50
+ return false;
127
51
  };
128
- };
129
- MetadataTypeTagFactory.validate = function (report) {
130
- return function (type) {
131
- return function (tagList) {
132
- var e_2, _a;
133
- var success = true;
134
- try {
135
- for (var tagList_2 = __values(tagList), tagList_2_1 = tagList_2.next(); !tagList_2_1.done; tagList_2_1 = tagList_2.next()) {
136
- var tag = tagList_2_1.value;
137
- if (tag.target !== type) {
138
- success && (success = report(null)("target must constains ".concat(type, " type")));
139
- }
140
- }
141
- }
142
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
143
- finally {
144
- try {
145
- if (tagList_2_1 && !tagList_2_1.done && (_a = tagList_2.return)) _a.call(tagList_2);
146
- }
147
- finally { if (e_2) throw e_2.error; }
148
- }
149
- tagList.forEach(function (tag, i) {
150
- if (tag.exclusive === false)
151
- return;
152
- else if (tag.exclusive === true) {
153
- var some = tagList.some(function (opposite, j) { return i !== j && opposite.kind === tag.kind; });
154
- if (some === true)
155
- success && (success = report(null)("kind '".concat(tag.kind, "' can't be duplicated")));
156
- }
157
- else if (Array.isArray(tag.exclusive)) {
158
- var some = tagList.find(function (opposite, j) {
159
- return i !== j &&
160
- opposite.kind === tag.kind &&
161
- tag.exclusive.includes(opposite.name);
162
- });
163
- if (some !== undefined)
164
- success !== null && success !== void 0 ? success : (success = report(null)("kind '".concat(tag.kind, "' can't be used with '").concat(some.name, "'")));
165
- }
52
+ //----
53
+ // VALIDATION PROCESS
54
+ //----
55
+ var filtered = props.objects.filter(function (obj) {
56
+ // ONLY ONE PROPERTY
57
+ if (obj.properties.length !== 1)
58
+ return false;
59
+ // THE TAG.TYPE PROPERTY MUST BE
60
+ var top = obj.properties[0];
61
+ if (top.key.getSoleLiteral() !== "typia.tag" ||
62
+ top.value.size() !== 1 ||
63
+ top.value.objects.length !== 1)
64
+ return false;
65
+ else if (top.value.optional === false)
66
+ return report({
67
+ property: null,
68
+ message: "must be optional object",
166
69
  });
167
- return success;
168
- };
169
- };
170
- };
171
- var validate_property = function (report) {
172
- return function (key, value) {
173
- var _a;
174
- if (
175
- // TARGET
176
- key === "target" &&
177
- (value.constants.length !== 1 ||
178
- value.constants[0].values.length !== value.size() ||
179
- value.constants[0].values.some(function (v) {
180
- return v.value !== "boolean" &&
181
- v.value !== "bigint" &&
182
- v.value !== "number" &&
183
- v.value !== "string" &&
184
- v.value !== "array";
185
- })))
186
- return report(key)("must be one of 'boolean', 'bigint', 'number', 'string', 'array'");
187
- else if (
188
- // KIND
189
- key === "kind" &&
190
- (value.size() !== 1 ||
191
- value.constants.length !== 1 ||
192
- value.constants[0].type !== "string" ||
193
- value.constants[0].values.length !== 1))
194
- return report(key)("must be a string literal type");
195
- else if (
196
- // VALUE
197
- key === "value" &&
198
- (value.size() > 1 ||
199
- (value.size() !== 0 &&
200
- (value.constants.length !== 1 ||
201
- value.constants[0].values.length !== 1))))
202
- return report(key)("must be a constant literal type or undefined value");
203
- else if (key === "exclusive")
204
- return get_exclusive(report)(key)(value) !== null;
205
- else if (key === "validate") {
206
- //----
207
- // VALIDATE
208
- //----
209
- // UNDEFINED CASE
210
- if (value.size() === 0 &&
211
- value.isRequired() === false &&
212
- value.nullable === false)
70
+ // CHECK LIST OF PROPERTIES
71
+ var tag = top.value.objects[0];
72
+ var statics = tag.properties
73
+ .map(function (p) { return p.key.getSoleLiteral(); })
74
+ .filter(function (str) { return str !== null; });
75
+ if (ESSENTIAL_FIELDS.some(function (f) { return !statics.includes(f); }))
76
+ return report({
77
+ property: null,
78
+ message: "must have at least three properties - ".concat(ESSENTIAL_FIELDS.map(function (str) { return "'".concat(str, "'"); }).join(", ")),
79
+ });
80
+ var each = tag.properties.map(function (p) {
81
+ var key = p.key.getSoleLiteral();
82
+ if (key === null)
213
83
  return true;
214
- // STRING CASE
215
- if (value.size() === 1 &&
216
- value.constants.length === 1 &&
217
- value.constants[0].type === "string" &&
218
- (value.constants[0].values.length === 1) === true)
84
+ else if (FIELDS.includes(key) === false)
219
85
  return true;
220
- // RECORD<TARGET, STRING>
221
- var target_1 = (_a = value.objects[0]) === null || _a === void 0 ? void 0 : _a.properties.map(function (p) { return p.key.getSoleLiteral(); }).filter(function (str) { return str !== null; });
222
- if (target_1 === undefined)
223
- return report("target")("must be one of 'boolean', 'bigint', 'number', 'string', 'array'");
224
- var variadic = value.size() === 1 &&
225
- value.objects.length === 1 &&
226
- value.objects[0].properties.every(function (vp) {
227
- return vp.value.size() === 1 &&
228
- vp.value.isRequired() &&
229
- vp.value.nullable === false &&
230
- vp.value.constants.length === 1 &&
231
- vp.value.constants[0].type === "string" &&
232
- vp.value.constants[0].values.length === 1 &&
233
- target_1.includes(vp.key.getSoleLiteral());
86
+ return validate_property({
87
+ report: report,
88
+ key: key,
89
+ value: p.value,
90
+ });
91
+ });
92
+ return each.every(function (v) { return v === true; });
93
+ });
94
+ if (filtered.length === 0)
95
+ return [];
96
+ //----
97
+ // CONSTRUCT TYPE TAGS
98
+ //----
99
+ // CREATE 1ST
100
+ var tagList = filtered.map(function (object) {
101
+ return create_metadata_type_tag({
102
+ report: report,
103
+ object: object,
104
+ });
105
+ });
106
+ var output = [];
107
+ try {
108
+ for (var tagList_1 = __values(tagList), tagList_1_1 = tagList_1.next(); !tagList_1_1.done; tagList_1_1 = tagList_1.next()) {
109
+ var tag = tagList_1_1.value;
110
+ if (tag !== null)
111
+ output.push({
112
+ target: tag.target.some(function (str) { return str === props.type; })
113
+ ? props.type
114
+ : null,
115
+ name: tag.name,
116
+ kind: tag.kind,
117
+ value: tag.value,
118
+ validate: tag.validate[props.type],
119
+ exclusive: tag.exclusive,
120
+ schema: tag.schema,
234
121
  });
235
- if (variadic === false)
236
- return report(key)("must be a string literal type or Record<Target, string> type.");
237
122
  }
238
- return true;
239
- };
123
+ }
124
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
125
+ finally {
126
+ try {
127
+ if (tagList_1_1 && !tagList_1_1.done && (_a = tagList_1.return)) _a.call(tagList_1);
128
+ }
129
+ finally { if (e_1) throw e_1.error; }
130
+ }
131
+ MetadataTypeTagFactory.validate({
132
+ report: report,
133
+ type: props.type,
134
+ tags: output,
135
+ });
136
+ if (messages.length > 0) {
137
+ props.errors.push({
138
+ name: __spreadArray([props.type], __read(props.objects.map(function (o) { return o.name; })), false).join(" & "),
139
+ explore: props.explore,
140
+ messages: messages,
141
+ });
142
+ return [];
143
+ }
144
+ return output;
240
145
  };
241
- var create_metadata_type_tag = function (report) {
242
- return function (obj) {
243
- var _a, _b, _c;
244
- var find = function (key) {
245
- var _a, _b;
246
- return (_b = (_a = obj.properties[0]) === null || _a === void 0 ? void 0 : _a.value.objects[0]) === null || _b === void 0 ? void 0 : _b.properties.find(function (p) { return p.key.getSoleLiteral() === key; });
247
- };
248
- var target = find("target").value.constants[0].values.map(function (v) { return v.value; });
249
- var kind = find("kind").value.constants[0].values[0]
250
- .value;
251
- var value = (_b = (_a = find("value")) === null || _a === void 0 ? void 0 : _a.value.constants[0]) === null || _b === void 0 ? void 0 : _b.values[0].value;
252
- var exclusive = get_exclusive(report)("exclusive")((_c = find("exclusive")) === null || _c === void 0 ? void 0 : _c.value);
253
- if (exclusive === null)
254
- return null;
255
- var validate = (function () {
256
- var _a;
257
- var validate = (_a = find("validate")) === null || _a === void 0 ? void 0 : _a.value;
258
- if (!validate || validate.size() === 0)
259
- return {};
260
- else if (validate.constants.length)
261
- return Object.fromEntries(target.map(function (t) { return [
262
- t,
263
- validate.constants[0].values[0].value,
264
- ]; }));
265
- return Object.fromEntries(validate.objects[0].properties.map(function (p) { return [
266
- p.key.getSoleLiteral(),
267
- p.value.constants[0].values[0].value,
146
+ MetadataTypeTagFactory.validate = function (props) {
147
+ var e_2, _a;
148
+ var success = true;
149
+ try {
150
+ for (var _b = __values(props.tags), _c = _b.next(); !_c.done; _c = _b.next()) {
151
+ var tag = _c.value;
152
+ if (tag.target !== props.type) {
153
+ success && (success = props.report({
154
+ property: null,
155
+ message: "target must constains ".concat(props.type, " type"),
156
+ }));
157
+ }
158
+ }
159
+ }
160
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
161
+ finally {
162
+ try {
163
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
164
+ }
165
+ finally { if (e_2) throw e_2.error; }
166
+ }
167
+ props.tags.forEach(function (tag, i) {
168
+ if (tag.exclusive === false)
169
+ return;
170
+ else if (tag.exclusive === true) {
171
+ var some = props.tags.some(function (opposite, j) { return i !== j && opposite.kind === tag.kind; });
172
+ if (some === true)
173
+ success && (success = props.report({
174
+ property: null,
175
+ message: "kind '".concat(tag.kind, "' can't be duplicated"),
176
+ }));
177
+ }
178
+ else if (Array.isArray(tag.exclusive)) {
179
+ var some = props.tags.find(function (opposite, j) {
180
+ return i !== j &&
181
+ opposite.kind === tag.kind &&
182
+ tag.exclusive.includes(opposite.name);
183
+ });
184
+ if (some !== undefined)
185
+ success !== null && success !== void 0 ? success : (success = props.report({
186
+ property: null,
187
+ message: "kind '".concat(tag.kind, "' can't be used with '").concat(some.name, "'"),
188
+ }));
189
+ }
190
+ });
191
+ return success;
192
+ };
193
+ var validate_property = function (props) {
194
+ var _a;
195
+ if (
196
+ // TARGET
197
+ props.key === "target" &&
198
+ (props.value.constants.length !== 1 ||
199
+ props.value.constants[0].values.length !== props.value.size() ||
200
+ props.value.constants[0].values.some(function (v) {
201
+ return v.value !== "boolean" &&
202
+ v.value !== "bigint" &&
203
+ v.value !== "number" &&
204
+ v.value !== "string" &&
205
+ v.value !== "array";
206
+ })))
207
+ return props.report({
208
+ property: props.key,
209
+ message: "must be one of 'boolean', 'bigint', 'number', 'string', 'array'",
210
+ });
211
+ else if (
212
+ // KIND
213
+ props.key === "kind" &&
214
+ (props.value.size() !== 1 ||
215
+ props.value.constants.length !== 1 ||
216
+ props.value.constants[0].type !== "string" ||
217
+ props.value.constants[0].values.length !== 1))
218
+ return props.report({
219
+ property: props.key,
220
+ message: "must be a string literal type",
221
+ });
222
+ else if (
223
+ // VALUE
224
+ props.key === "value" &&
225
+ (props.value.size() > 1 ||
226
+ (props.value.size() !== 0 &&
227
+ (props.value.constants.length !== 1 ||
228
+ props.value.constants[0].values.length !== 1))))
229
+ return props.report({
230
+ property: props.key,
231
+ message: "must be a constant literal type or undefined value",
232
+ });
233
+ else if (props.key === "exclusive")
234
+ return get_exclusive(props) !== null;
235
+ else if (props.key === "validate") {
236
+ //----
237
+ // VALIDATE
238
+ //----
239
+ // UNDEFINED CASE
240
+ if (props.value.size() === 0 &&
241
+ props.value.isRequired() === false &&
242
+ props.value.nullable === false)
243
+ return true;
244
+ // STRING CASE
245
+ if (props.value.size() === 1 &&
246
+ props.value.constants.length === 1 &&
247
+ props.value.constants[0].type === "string" &&
248
+ (props.value.constants[0].values.length === 1) === true)
249
+ return true;
250
+ // RECORD<TARGET, STRING>
251
+ var target_1 = (_a = props.value.objects[0]) === null || _a === void 0 ? void 0 : _a.properties.map(function (p) { return p.key.getSoleLiteral(); }).filter(function (str) { return str !== null; });
252
+ if (target_1 === undefined)
253
+ return props.report({
254
+ property: "target",
255
+ message: "must be one of 'boolean', 'bigint', 'number', 'string', 'array'",
256
+ });
257
+ var variadic = props.value.size() === 1 &&
258
+ props.value.objects.length === 1 &&
259
+ props.value.objects[0].properties.every(function (vp) {
260
+ return vp.value.size() === 1 &&
261
+ vp.value.isRequired() &&
262
+ vp.value.nullable === false &&
263
+ vp.value.constants.length === 1 &&
264
+ vp.value.constants[0].type === "string" &&
265
+ vp.value.constants[0].values.length === 1 &&
266
+ target_1.includes(vp.key.getSoleLiteral());
267
+ });
268
+ if (variadic === false)
269
+ return props.report({
270
+ property: props.key,
271
+ message: "must be a string literal type or Record<Target, string> type.",
272
+ });
273
+ }
274
+ return true;
275
+ };
276
+ var create_metadata_type_tag = function (props) {
277
+ var _a, _b, _c;
278
+ var find = function (key) {
279
+ var _a, _b;
280
+ return (_b = (_a = props.object.properties[0]) === null || _a === void 0 ? void 0 : _a.value.objects[0]) === null || _b === void 0 ? void 0 : _b.properties.find(function (p) { return p.key.getSoleLiteral() === key; });
281
+ };
282
+ var target = find("target").value.constants[0].values.map(function (v) { return v.value; });
283
+ var kind = find("kind").value.constants[0].values[0]
284
+ .value;
285
+ var value = (_b = (_a = find("value")) === null || _a === void 0 ? void 0 : _a.value.constants[0]) === null || _b === void 0 ? void 0 : _b.values[0].value;
286
+ var exclusive = get_exclusive({
287
+ report: props.report,
288
+ key: "exclusive",
289
+ value: (_c = find("exclusive")) === null || _c === void 0 ? void 0 : _c.value,
290
+ });
291
+ if (exclusive === null)
292
+ return null;
293
+ var validate = (function () {
294
+ var _a;
295
+ var validate = (_a = find("validate")) === null || _a === void 0 ? void 0 : _a.value;
296
+ if (!validate || validate.size() === 0)
297
+ return {};
298
+ else if (validate.constants.length)
299
+ return Object.fromEntries(target.map(function (t) { return [
300
+ t,
301
+ validate.constants[0].values[0].value,
268
302
  ]; }));
269
- })();
270
- var schema = (function () {
271
- var _a;
272
- var p = (_a = find("schema")) === null || _a === void 0 ? void 0 : _a.value;
273
- if (p === undefined)
274
- return undefined;
275
- else if (p.size() === 0 && p.isRequired() === false)
276
- return undefined;
277
- else if (p.size() === 1 &&
278
- p.nullable === false &&
279
- p.isRequired() === true &&
280
- p.any === false)
281
- return MetadataTypeTagSchemaFactory_1.MetadataTypeTagSchemaFactory.object(function (msg) {
282
- return report("schema")(msg);
283
- })(p.objects[0]);
284
- report("schema")("must be an object type");
303
+ return Object.fromEntries(validate.objects[0].properties.map(function (p) { return [
304
+ p.key.getSoleLiteral(),
305
+ p.value.constants[0].values[0].value,
306
+ ]; }));
307
+ })();
308
+ var schema = (function () {
309
+ var _a;
310
+ var p = (_a = find("schema")) === null || _a === void 0 ? void 0 : _a.value;
311
+ if (p === undefined)
312
+ return undefined;
313
+ else if (p.size() === 0 && p.isRequired() === false)
285
314
  return undefined;
286
- })();
287
- return {
288
- name: obj.name,
289
- target: target,
290
- kind: kind,
291
- value: value,
292
- validate: validate,
293
- exclusive: exclusive !== null && exclusive !== void 0 ? exclusive : false,
294
- schema: schema,
295
- };
315
+ else if (p.size() === 1 &&
316
+ p.nullable === false &&
317
+ p.isRequired() === true &&
318
+ p.any === false)
319
+ return MetadataTypeTagSchemaFactory_1.MetadataTypeTagSchemaFactory.object({
320
+ report: function (message) {
321
+ return props.report({
322
+ property: "schema",
323
+ message: message,
324
+ });
325
+ },
326
+ object: p.objects[0],
327
+ });
328
+ props.report({
329
+ property: "schema",
330
+ message: "must be an object type",
331
+ });
332
+ return undefined;
333
+ })();
334
+ return {
335
+ name: props.object.name,
336
+ target: target,
337
+ kind: kind,
338
+ value: value,
339
+ validate: validate,
340
+ exclusive: exclusive !== null && exclusive !== void 0 ? exclusive : false,
341
+ schema: schema,
296
342
  };
297
343
  };
298
- var get_exclusive = function (report) {
299
- return function (key) {
300
- return function (value) {
301
- if (value === undefined)
302
- return false;
303
- else if (value.size() === 1 &&
304
- value.constants.length === 1 &&
305
- value.constants[0].type === "boolean" &&
306
- value.constants[0].values.length === 1)
307
- return value.constants[0].values[0].value;
308
- else if (value.size() === 1 &&
309
- value.tuples.length === 1 &&
310
- value.tuples[0].type.elements.every(function (elem) {
311
- return elem.size() === 1 &&
312
- elem.constants.length === 1 &&
313
- elem.constants[0].type === "string" &&
314
- elem.constants[0].values.length === 1;
315
- }))
316
- return value.tuples[0].type.elements.map(function (elem) { return elem.constants[0].values[0].value; });
317
- report(key)("must a boolean literal type or a tuple of string literal types.");
318
- return null;
319
- };
320
- };
344
+ var get_exclusive = function (props) {
345
+ if (props.value === undefined)
346
+ return false;
347
+ else if (props.value.size() === 1 &&
348
+ props.value.constants.length === 1 &&
349
+ props.value.constants[0].type === "boolean" &&
350
+ props.value.constants[0].values.length === 1)
351
+ return props.value.constants[0].values[0].value;
352
+ else if (props.value.size() === 1 &&
353
+ props.value.tuples.length === 1 &&
354
+ props.value.tuples[0].type.elements.every(function (elem) {
355
+ return elem.size() === 1 &&
356
+ elem.constants.length === 1 &&
357
+ elem.constants[0].type === "string" &&
358
+ elem.constants[0].values.length === 1;
359
+ }))
360
+ return props.value.tuples[0].type.elements.map(function (elem) { return elem.constants[0].values[0].value; });
361
+ props.report({
362
+ property: props.key,
363
+ message: "must a boolean literal type or a tuple of string literal types.",
364
+ });
365
+ return null;
321
366
  };
322
367
  })(MetadataTypeTagFactory || (exports.MetadataTypeTagFactory = MetadataTypeTagFactory = {}));
323
368
  var ESSENTIAL_FIELDS = ["target", "kind", "value"];