typia 5.0.0-dev.20230824 → 5.0.0-dev.20230828

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 (493) hide show
  1. package/README.md +1 -2
  2. package/lib/IRandomGenerator.d.ts +4 -3
  3. package/lib/executable/TypiaGenerateWizard.js +1 -1
  4. package/lib/executable/TypiaGenerateWizard.js.map +1 -1
  5. package/lib/executable/TypiaSetupWizard.js +1 -1
  6. package/lib/executable/TypiaSetupWizard.js.map +1 -1
  7. package/lib/executable/setup/PackageManager.js +1 -1
  8. package/lib/executable/setup/PackageManager.js.map +1 -1
  9. package/lib/executable/setup/PluginConfigurator.js +2 -2
  10. package/lib/executable/setup/PluginConfigurator.js.map +1 -1
  11. package/lib/factories/ExpressionFactory.d.ts +1 -1
  12. package/lib/factories/ExpressionFactory.js +3 -3
  13. package/lib/factories/ExpressionFactory.js.map +1 -1
  14. package/lib/factories/JsonMetadataFactory.d.ts +7 -0
  15. package/lib/factories/JsonMetadataFactory.js +38 -0
  16. package/lib/factories/JsonMetadataFactory.js.map +1 -0
  17. package/lib/factories/LiteralFactory.js +6 -2
  18. package/lib/factories/LiteralFactory.js.map +1 -1
  19. package/lib/factories/MetadataCollection.js +0 -2
  20. package/lib/factories/MetadataCollection.js.map +1 -1
  21. package/lib/factories/MetadataCommentTagFactory.js +543 -0
  22. package/lib/factories/MetadataCommentTagFactory.js.map +1 -0
  23. package/lib/factories/MetadataFactory.d.ts +22 -2
  24. package/lib/factories/MetadataFactory.js +221 -17
  25. package/lib/factories/MetadataFactory.js.map +1 -1
  26. package/lib/factories/MetadataTypeTagFactory.d.ts +7 -0
  27. package/lib/factories/MetadataTypeTagFactory.js +280 -0
  28. package/lib/factories/MetadataTypeTagFactory.js.map +1 -0
  29. package/lib/factories/NumericRangeFactory.d.ts +6 -0
  30. package/lib/factories/NumericRangeFactory.js +34 -0
  31. package/lib/factories/NumericRangeFactory.js.map +1 -0
  32. package/lib/factories/ProtobufFactory.js +109 -73
  33. package/lib/factories/ProtobufFactory.js.map +1 -1
  34. package/lib/factories/TypeFactory.d.ts +0 -1
  35. package/lib/factories/TypeFactory.js +0 -5
  36. package/lib/factories/TypeFactory.js.map +1 -1
  37. package/lib/factories/internal/metadata/emend_metadata_atomics.js +7 -1
  38. package/lib/factories/internal/metadata/emend_metadata_atomics.js.map +1 -1
  39. package/lib/factories/internal/metadata/emplace_metadata_alias.d.ts +1 -1
  40. package/lib/factories/internal/metadata/emplace_metadata_alias.js +20 -19
  41. package/lib/factories/internal/metadata/emplace_metadata_alias.js.map +1 -1
  42. package/lib/factories/internal/metadata/emplace_metadata_array_type.d.ts +1 -1
  43. package/lib/factories/internal/metadata/emplace_metadata_array_type.js +20 -7
  44. package/lib/factories/internal/metadata/emplace_metadata_array_type.js.map +1 -1
  45. package/lib/factories/internal/metadata/emplace_metadata_object.d.ts +1 -1
  46. package/lib/factories/internal/metadata/emplace_metadata_object.js +100 -85
  47. package/lib/factories/internal/metadata/emplace_metadata_object.js.map +1 -1
  48. package/lib/factories/internal/metadata/emplace_metadata_tuple.d.ts +1 -1
  49. package/lib/factories/internal/metadata/emplace_metadata_tuple.js +34 -21
  50. package/lib/factories/internal/metadata/emplace_metadata_tuple.js.map +1 -1
  51. package/lib/factories/internal/metadata/explore_metadata.d.ts +1 -1
  52. package/lib/factories/internal/metadata/explore_metadata.js +12 -12
  53. package/lib/factories/internal/metadata/explore_metadata.js.map +1 -1
  54. package/lib/factories/internal/metadata/iterate_metadata.d.ts +1 -1
  55. package/lib/factories/internal/metadata/iterate_metadata.js +39 -19
  56. package/lib/factories/internal/metadata/iterate_metadata.js.map +1 -1
  57. package/lib/factories/internal/metadata/iterate_metadata_alias.d.ts +1 -1
  58. package/lib/factories/internal/metadata/iterate_metadata_alias.js +12 -10
  59. package/lib/factories/internal/metadata/iterate_metadata_alias.js.map +1 -1
  60. package/lib/factories/internal/metadata/iterate_metadata_array.d.ts +1 -1
  61. package/lib/factories/internal/metadata/iterate_metadata_array.js +11 -9
  62. package/lib/factories/internal/metadata/iterate_metadata_array.js.map +1 -1
  63. package/lib/factories/internal/metadata/iterate_metadata_atomic.js +2 -1
  64. package/lib/factories/internal/metadata/iterate_metadata_atomic.js.map +1 -1
  65. package/lib/factories/internal/metadata/iterate_metadata_collection.d.ts +2 -1
  66. package/lib/factories/internal/metadata/iterate_metadata_collection.js +47 -45
  67. package/lib/factories/internal/metadata/iterate_metadata_collection.js.map +1 -1
  68. package/lib/factories/internal/metadata/iterate_metadata_comment_tags.d.ts +2 -1
  69. package/lib/factories/internal/metadata/iterate_metadata_comment_tags.js +17 -22
  70. package/lib/factories/internal/metadata/iterate_metadata_comment_tags.js.map +1 -1
  71. package/lib/factories/internal/metadata/iterate_metadata_intersection.d.ts +1 -1
  72. package/lib/factories/internal/metadata/iterate_metadata_intersection.js +147 -135
  73. package/lib/factories/internal/metadata/iterate_metadata_intersection.js.map +1 -1
  74. package/lib/factories/internal/metadata/iterate_metadata_map.d.ts +1 -1
  75. package/lib/factories/internal/metadata/iterate_metadata_map.js +28 -15
  76. package/lib/factories/internal/metadata/iterate_metadata_map.js.map +1 -1
  77. package/lib/factories/internal/metadata/iterate_metadata_object.d.ts +1 -1
  78. package/lib/factories/internal/metadata/iterate_metadata_object.js +16 -14
  79. package/lib/factories/internal/metadata/iterate_metadata_object.js.map +1 -1
  80. package/lib/factories/internal/metadata/iterate_metadata_resolve.d.ts +1 -1
  81. package/lib/factories/internal/metadata/iterate_metadata_resolve.js +28 -15
  82. package/lib/factories/internal/metadata/iterate_metadata_resolve.js.map +1 -1
  83. package/lib/factories/internal/metadata/iterate_metadata_set.d.ts +1 -1
  84. package/lib/factories/internal/metadata/iterate_metadata_set.js +24 -11
  85. package/lib/factories/internal/metadata/iterate_metadata_set.js.map +1 -1
  86. package/lib/factories/internal/metadata/iterate_metadata_template.d.ts +1 -1
  87. package/lib/factories/internal/metadata/iterate_metadata_template.js +28 -15
  88. package/lib/factories/internal/metadata/iterate_metadata_template.js.map +1 -1
  89. package/lib/factories/internal/metadata/iterate_metadata_tuple.d.ts +1 -1
  90. package/lib/factories/internal/metadata/iterate_metadata_tuple.js +11 -9
  91. package/lib/factories/internal/metadata/iterate_metadata_tuple.js.map +1 -1
  92. package/lib/factories/internal/metadata/iterate_metadata_union.d.ts +1 -1
  93. package/lib/factories/internal/metadata/iterate_metadata_union.js +20 -7
  94. package/lib/factories/internal/metadata/iterate_metadata_union.js.map +1 -1
  95. package/lib/functional/Namespace.js +0 -16
  96. package/lib/functional/Namespace.js.map +1 -1
  97. package/lib/programmers/AssertProgrammer.js +28 -8
  98. package/lib/programmers/AssertProgrammer.js.map +1 -1
  99. package/lib/programmers/CheckerProgrammer.js +78 -60
  100. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  101. package/lib/programmers/FeatureProgrammer.d.ts +4 -6
  102. package/lib/programmers/FeatureProgrammer.js +7 -7
  103. package/lib/programmers/FeatureProgrammer.js.map +1 -1
  104. package/lib/programmers/IsProgrammer.d.ts +1 -1
  105. package/lib/programmers/IsProgrammer.js +33 -20
  106. package/lib/programmers/IsProgrammer.js.map +1 -1
  107. package/lib/programmers/RandomProgrammer.js +163 -138
  108. package/lib/programmers/RandomProgrammer.js.map +1 -1
  109. package/lib/programmers/TypiaProgrammer.js +58 -28
  110. package/lib/programmers/TypiaProgrammer.js.map +1 -1
  111. package/lib/programmers/ValidateProgrammer.js +28 -8
  112. package/lib/programmers/ValidateProgrammer.js.map +1 -1
  113. package/lib/programmers/helpers/CloneJoiner.js +10 -2
  114. package/lib/programmers/helpers/CloneJoiner.js.map +1 -1
  115. package/lib/programmers/helpers/ICheckEntry.d.ts +3 -2
  116. package/lib/programmers/helpers/ProtobufUtil.d.ts +6 -2
  117. package/lib/programmers/helpers/ProtobufUtil.js +175 -17
  118. package/lib/programmers/helpers/ProtobufUtil.js.map +1 -1
  119. package/lib/programmers/helpers/RandomJoiner.d.ts +3 -5
  120. package/lib/programmers/helpers/RandomJoiner.js +7 -10
  121. package/lib/programmers/helpers/RandomJoiner.js.map +1 -1
  122. package/lib/programmers/helpers/RandomRanger.d.ts +5 -6
  123. package/lib/programmers/helpers/RandomRanger.js +13 -33
  124. package/lib/programmers/helpers/RandomRanger.js.map +1 -1
  125. package/lib/programmers/helpers/UnionExplorer.d.ts +7 -8
  126. package/lib/programmers/helpers/UnionExplorer.js +6 -6
  127. package/lib/programmers/helpers/UnionExplorer.js.map +1 -1
  128. package/lib/programmers/internal/application_alias.js +0 -1
  129. package/lib/programmers/internal/application_alias.js.map +1 -1
  130. package/lib/programmers/internal/application_array.js +60 -20
  131. package/lib/programmers/internal/application_array.js.map +1 -1
  132. package/lib/programmers/internal/application_escaped.d.ts +4 -0
  133. package/lib/programmers/internal/{application_resolved.js → application_escaped.js} +4 -4
  134. package/lib/programmers/internal/application_escaped.js.map +1 -0
  135. package/lib/programmers/internal/application_number.js +95 -69
  136. package/lib/programmers/internal/application_number.js.map +1 -1
  137. package/lib/programmers/internal/application_object.js +0 -3
  138. package/lib/programmers/internal/application_object.js.map +1 -1
  139. package/lib/programmers/internal/application_schema.js +41 -24
  140. package/lib/programmers/internal/application_schema.js.map +1 -1
  141. package/lib/programmers/internal/application_string.js +56 -22
  142. package/lib/programmers/internal/application_string.js.map +1 -1
  143. package/lib/programmers/internal/check_array_length.js +25 -25
  144. package/lib/programmers/internal/check_array_length.js.map +1 -1
  145. package/lib/programmers/internal/check_bigint.js +13 -116
  146. package/lib/programmers/internal/check_bigint.js.map +1 -1
  147. package/lib/programmers/internal/check_dynamic_properties.js +1 -1
  148. package/lib/programmers/internal/check_dynamic_properties.js.map +1 -1
  149. package/lib/programmers/internal/check_number.js +62 -163
  150. package/lib/programmers/internal/check_number.js.map +1 -1
  151. package/lib/programmers/internal/check_string.js +16 -52
  152. package/lib/programmers/internal/check_string.js.map +1 -1
  153. package/lib/programmers/internal/check_template.js +16 -1
  154. package/lib/programmers/internal/check_template.js.map +1 -1
  155. package/lib/programmers/internal/check_union_array_like.js +4 -4
  156. package/lib/programmers/internal/check_union_array_like.js.map +1 -1
  157. package/lib/programmers/internal/feature_object_entries.js +1 -1
  158. package/lib/programmers/internal/feature_object_entries.js.map +1 -1
  159. package/lib/programmers/internal/random_custom.js +2 -2
  160. package/lib/programmers/internal/random_custom.js.map +1 -1
  161. package/lib/programmers/json/JsonApplicationProgrammer.js +5 -1
  162. package/lib/programmers/json/JsonApplicationProgrammer.js.map +1 -1
  163. package/lib/programmers/json/JsonAssertParseProgrammer.js +2 -0
  164. package/lib/programmers/json/JsonAssertParseProgrammer.js.map +1 -1
  165. package/lib/programmers/json/JsonIsParseProgrammer.js +2 -0
  166. package/lib/programmers/json/JsonIsParseProgrammer.js.map +1 -1
  167. package/lib/programmers/json/JsonStringifyProgrammer.js +41 -78
  168. package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
  169. package/lib/programmers/json/JsonValidateParseProgrammer.js +2 -0
  170. package/lib/programmers/json/JsonValidateParseProgrammer.js.map +1 -1
  171. package/lib/programmers/misc/MiscCloneProgrammer.js +26 -17
  172. package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
  173. package/lib/programmers/{IsPruneProgrammer.d.ts → misc/MiscIsPruneProgrammer.d.ts} +2 -2
  174. package/lib/programmers/{IsPruneProgrammer.js → misc/MiscIsPruneProgrammer.js} +11 -11
  175. package/lib/programmers/misc/MiscIsPruneProgrammer.js.map +1 -0
  176. package/lib/programmers/misc/MiscLiteralsProgrammer.js +10 -5
  177. package/lib/programmers/misc/MiscLiteralsProgrammer.js.map +1 -1
  178. package/lib/programmers/misc/MiscPruneProgrammer.js +23 -14
  179. package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
  180. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js +24 -44
  181. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js.map +1 -1
  182. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js +138 -65
  183. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js.map +1 -1
  184. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js +59 -85
  185. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js.map +1 -1
  186. package/lib/schemas/json/IJsonSchema.d.ts +10 -38
  187. package/lib/schemas/metadata/IMetadataAlias.d.ts +0 -2
  188. package/lib/schemas/metadata/IMetadataProperty.d.ts +0 -2
  189. package/lib/schemas/metadata/IMetadataTypeTag.d.ts +2 -0
  190. package/lib/schemas/metadata/Metadata.d.ts +2 -2
  191. package/lib/schemas/metadata/Metadata.js +29 -29
  192. package/lib/schemas/metadata/Metadata.js.map +1 -1
  193. package/lib/schemas/metadata/MetadataAlias.d.ts +0 -2
  194. package/lib/schemas/metadata/MetadataAlias.js +0 -3
  195. package/lib/schemas/metadata/MetadataAlias.js.map +1 -1
  196. package/lib/schemas/metadata/MetadataArray.d.ts +2 -0
  197. package/lib/schemas/metadata/MetadataArray.js +45 -2
  198. package/lib/schemas/metadata/MetadataArray.js.map +1 -1
  199. package/lib/schemas/metadata/MetadataAtomic.d.ts +9 -0
  200. package/lib/schemas/metadata/MetadataAtomic.js +59 -0
  201. package/lib/schemas/metadata/MetadataAtomic.js.map +1 -0
  202. package/lib/schemas/metadata/MetadataProperty.d.ts +0 -2
  203. package/lib/schemas/metadata/MetadataProperty.js +0 -3
  204. package/lib/schemas/metadata/MetadataProperty.js.map +1 -1
  205. package/lib/schemas/metadata/MetadataTuple.d.ts +4 -2
  206. package/lib/schemas/metadata/MetadataTuple.js +1 -2
  207. package/lib/schemas/metadata/MetadataTuple.js.map +1 -1
  208. package/lib/tags/ExclusiveMaximum.d.ts +10 -8
  209. package/lib/tags/ExclusiveMinimum.d.ts +10 -8
  210. package/lib/tags/Format.d.ts +8 -8
  211. package/lib/tags/MaxItems.d.ts +8 -8
  212. package/lib/tags/MaxLength.d.ts +8 -8
  213. package/lib/tags/Maximum.d.ts +10 -8
  214. package/lib/tags/MinItems.d.ts +8 -8
  215. package/lib/tags/MinLength.d.ts +8 -8
  216. package/lib/tags/Minimum.d.ts +10 -8
  217. package/lib/tags/MultipleOf.d.ts +10 -8
  218. package/lib/tags/Pattern.d.ts +7 -8
  219. package/lib/tags/TagBase.d.ts +10 -6
  220. package/lib/tags/Type.d.ts +14 -13
  221. package/lib/tags/index.d.ts +1 -0
  222. package/lib/tags/index.js +1 -0
  223. package/lib/tags/index.js.map +1 -1
  224. package/lib/transform.d.ts +2 -1
  225. package/lib/transform.js +11 -3
  226. package/lib/transform.js.map +1 -1
  227. package/lib/transformers/CallExpressionTransformer.d.ts +1 -1
  228. package/lib/transformers/CallExpressionTransformer.js +2 -1
  229. package/lib/transformers/CallExpressionTransformer.js.map +1 -1
  230. package/lib/transformers/FileTransformer.js +18 -6
  231. package/lib/transformers/FileTransformer.js.map +1 -1
  232. package/lib/transformers/IProject.d.ts +3 -0
  233. package/lib/transformers/NodeTransformer.d.ts +1 -1
  234. package/lib/transformers/TransformerError.d.ts +12 -0
  235. package/lib/transformers/TransformerError.js +66 -0
  236. package/lib/transformers/TransformerError.js.map +1 -0
  237. package/lib/transformers/features/AssertTransformer.d.ts +1 -0
  238. package/lib/transformers/features/CreateAssertTransformer.d.ts +1 -0
  239. package/lib/transformers/features/CreateIsTransformer.d.ts +1 -0
  240. package/lib/transformers/features/CreateRandomTransformer.js +9 -4
  241. package/lib/transformers/features/CreateRandomTransformer.js.map +1 -1
  242. package/lib/transformers/features/CreateValidateTransformer.d.ts +1 -0
  243. package/lib/transformers/features/IsTransformer.d.ts +1 -0
  244. package/lib/transformers/features/RandomTransformer.js +9 -4
  245. package/lib/transformers/features/RandomTransformer.js.map +1 -1
  246. package/lib/transformers/features/ValidateTransformer.d.ts +1 -0
  247. package/lib/transformers/features/json/JsonApplicationTransformer.js +79 -19
  248. package/lib/transformers/features/json/JsonApplicationTransformer.js.map +1 -1
  249. package/lib/transformers/features/json/JsonAssertParseTransformer.d.ts +1 -0
  250. package/lib/transformers/features/json/JsonAssertStringifyTransformer.d.ts +1 -0
  251. package/lib/transformers/features/json/JsonCreateAssertParseTransformer.d.ts +1 -0
  252. package/lib/transformers/features/json/JsonCreateAssertStringifyTransformer.d.ts +1 -0
  253. package/lib/transformers/features/json/JsonCreateIsParseTransformer.d.ts +1 -0
  254. package/lib/transformers/features/json/JsonCreateIsStringifyTransformer.d.ts +1 -0
  255. package/lib/transformers/features/json/JsonCreateStringifyTransformer.d.ts +1 -0
  256. package/lib/transformers/features/json/JsonCreateValidateParseTransformer.d.ts +1 -0
  257. package/lib/transformers/features/json/JsonCreateValidateStringifyProgrammer.d.ts +1 -0
  258. package/lib/transformers/features/json/JsonIsParseTransformer.d.ts +1 -0
  259. package/lib/transformers/features/json/JsonIsStringifyTransformer.d.ts +1 -0
  260. package/lib/transformers/features/json/JsonStringifyTransformer.d.ts +1 -0
  261. package/lib/transformers/features/json/JsonValidateParseTransformer.d.ts +1 -0
  262. package/lib/transformers/features/json/JsonValidateStringifyTransformer.d.ts +1 -0
  263. package/lib/transformers/features/misc/MetadataTransformer.js +13 -5
  264. package/lib/transformers/features/misc/MetadataTransformer.js.map +1 -1
  265. package/lib/transformers/features/misc/MiscAssertCloneTransformer.d.ts +1 -0
  266. package/lib/transformers/features/misc/MiscAssertPruneTransformer.d.ts +1 -0
  267. package/lib/transformers/features/misc/MiscCloneTransformer.d.ts +1 -0
  268. package/lib/transformers/features/misc/MiscCreateAssertCloneTransformer.d.ts +1 -0
  269. package/lib/transformers/features/misc/MiscCreateAssertPruneTransformer.d.ts +1 -0
  270. package/lib/transformers/features/misc/MiscCreateCloneTransformer.d.ts +1 -0
  271. package/lib/transformers/features/misc/MiscCreateIsCloneTransformer.d.ts +1 -0
  272. package/lib/transformers/features/misc/MiscCreateIsPruneTransformer.d.ts +1 -0
  273. package/lib/transformers/features/misc/MiscCreateIsPruneTransformer.js +2 -2
  274. package/lib/transformers/features/misc/MiscCreateIsPruneTransformer.js.map +1 -1
  275. package/lib/transformers/features/misc/MiscCreatePruneTransformer.d.ts +1 -0
  276. package/lib/transformers/features/misc/MiscCreateValidateCloneTransformer.d.ts +1 -0
  277. package/lib/transformers/features/misc/MiscCreateValidatePruneTransformer.d.ts +1 -0
  278. package/lib/transformers/features/misc/MiscIsCloneTransformer.d.ts +1 -0
  279. package/lib/transformers/features/misc/MiscIsPruneTransformer.d.ts +1 -0
  280. package/lib/transformers/features/misc/MiscIsPruneTransformer.js +2 -2
  281. package/lib/transformers/features/misc/MiscIsPruneTransformer.js.map +1 -1
  282. package/lib/transformers/features/misc/MiscLiteralsTransformer.js +9 -4
  283. package/lib/transformers/features/misc/MiscLiteralsTransformer.js.map +1 -1
  284. package/lib/transformers/features/misc/MiscPruneTransformer.d.ts +1 -0
  285. package/lib/transformers/features/misc/MiscValidateCloneTransformer.d.ts +1 -0
  286. package/lib/transformers/features/misc/MiscValidatePruneTransformer.d.ts +1 -0
  287. package/lib/transformers/features/protobuf/CreateProtobufAssertDecodeTransformer.d.ts +1 -0
  288. package/lib/transformers/features/protobuf/CreateProtobufAssertEncodeTransformer.d.ts +1 -0
  289. package/lib/transformers/features/protobuf/CreateProtobufDecodeTransformer.d.ts +1 -0
  290. package/lib/transformers/features/protobuf/CreateProtobufEncodeTransformer.d.ts +1 -0
  291. package/lib/transformers/features/protobuf/CreateProtobufIsDecodeTransformer.d.ts +1 -0
  292. package/lib/transformers/features/protobuf/CreateProtobufIsEncodeTransformer.d.ts +1 -0
  293. package/lib/transformers/features/protobuf/CreateProtobufValidateDecodeTransformer.d.ts +1 -0
  294. package/lib/transformers/features/protobuf/CreateProtobufValidateEncodeTransformer.d.ts +1 -0
  295. package/lib/transformers/features/protobuf/ProtobufAssertDecodeTransformer.d.ts +1 -0
  296. package/lib/transformers/features/protobuf/ProtobufAssertEncodeTransformer.d.ts +1 -0
  297. package/lib/transformers/features/protobuf/ProtobufDecodeTransformer.d.ts +1 -0
  298. package/lib/transformers/features/protobuf/ProtobufEncodeTransformer.d.ts +1 -0
  299. package/lib/transformers/features/protobuf/ProtobufIsDecodeTransformer.d.ts +1 -0
  300. package/lib/transformers/features/protobuf/ProtobufIsEncodeTransformer.d.ts +1 -0
  301. package/lib/transformers/features/protobuf/ProtobufMessageTransformer.js +9 -2
  302. package/lib/transformers/features/protobuf/ProtobufMessageTransformer.js.map +1 -1
  303. package/lib/transformers/features/protobuf/ProtobufValidateDecodeTransformer.d.ts +1 -0
  304. package/lib/transformers/features/protobuf/ProtobufValidateEncodeTransformer.d.ts +1 -0
  305. package/lib/transformers/internal/GenericTransformer.js +17 -4
  306. package/lib/transformers/internal/GenericTransformer.js.map +1 -1
  307. package/lib/typings/ProtobufAtomic.d.ts +5 -0
  308. package/lib/{schemas/metadata/ICommentTag.js → typings/ProtobufAtomic.js} +1 -1
  309. package/lib/typings/ProtobufAtomic.js.map +1 -0
  310. package/lib/typings/ValidationPipe.d.ts +7 -0
  311. package/lib/{schemas/metadata/IMetadataCommentTag.js → typings/ValidationPipe.js} +1 -1
  312. package/lib/typings/ValidationPipe.js.map +1 -0
  313. package/package.json +4 -2
  314. package/src/IRandomGenerator.ts +4 -3
  315. package/src/executable/TypiaGenerateWizard.ts +1 -1
  316. package/src/executable/TypiaSetupWizard.ts +1 -1
  317. package/src/executable/setup/PackageManager.ts +1 -1
  318. package/src/executable/setup/PluginConfigurator.ts +2 -2
  319. package/src/factories/ExpressionFactory.ts +4 -4
  320. package/src/factories/JsonMetadataFactory.ts +43 -0
  321. package/src/factories/LiteralFactory.ts +11 -3
  322. package/src/factories/MetadataCollection.ts +0 -6
  323. package/src/factories/MetadataCommentTagFactory.ts +629 -0
  324. package/src/factories/MetadataFactory.ts +169 -7
  325. package/src/factories/MetadataTypeTagFactory.ts +313 -0
  326. package/src/factories/NumericRangeFactory.ts +33 -0
  327. package/src/factories/ProtobufFactory.ts +106 -99
  328. package/src/factories/TypeFactory.ts +0 -5
  329. package/src/factories/internal/metadata/emend_metadata_atomics.ts +6 -1
  330. package/src/factories/internal/metadata/emplace_metadata_alias.ts +12 -11
  331. package/src/factories/internal/metadata/emplace_metadata_array_type.ts +12 -5
  332. package/src/factories/internal/metadata/emplace_metadata_object.ts +20 -6
  333. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +12 -2
  334. package/src/factories/internal/metadata/explore_metadata.ts +5 -11
  335. package/src/factories/internal/metadata/iterate_metadata.ts +44 -24
  336. package/src/factories/internal/metadata/iterate_metadata_alias.ts +7 -2
  337. package/src/factories/internal/metadata/iterate_metadata_array.ts +7 -2
  338. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +2 -1
  339. package/src/factories/internal/metadata/iterate_metadata_collection.ts +30 -29
  340. package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +22 -27
  341. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +44 -25
  342. package/src/factories/internal/metadata/iterate_metadata_map.ts +20 -4
  343. package/src/factories/internal/metadata/iterate_metadata_object.ts +2 -1
  344. package/src/factories/internal/metadata/iterate_metadata_resolve.ts +15 -12
  345. package/src/factories/internal/metadata/iterate_metadata_set.ts +11 -2
  346. package/src/factories/internal/metadata/iterate_metadata_template.ts +12 -3
  347. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +7 -2
  348. package/src/factories/internal/metadata/iterate_metadata_union.ts +10 -7
  349. package/src/functional/Namespace.ts +0 -16
  350. package/src/programmers/AssertProgrammer.ts +57 -21
  351. package/src/programmers/CheckerProgrammer.ts +51 -120
  352. package/src/programmers/FeatureProgrammer.ts +15 -34
  353. package/src/programmers/IsProgrammer.ts +53 -42
  354. package/src/programmers/RandomProgrammer.ts +223 -242
  355. package/src/programmers/TypiaProgrammer.ts +27 -2
  356. package/src/programmers/ValidateProgrammer.ts +60 -21
  357. package/src/programmers/helpers/CloneJoiner.ts +57 -20
  358. package/src/programmers/helpers/ICheckEntry.ts +3 -2
  359. package/src/programmers/helpers/ProtobufUtil.ts +113 -17
  360. package/src/programmers/helpers/RandomJoiner.ts +11 -37
  361. package/src/programmers/helpers/RandomRanger.ts +16 -51
  362. package/src/programmers/helpers/UnionExplorer.ts +1 -20
  363. package/src/programmers/internal/application_alias.ts +0 -1
  364. package/src/programmers/internal/application_array.ts +32 -10
  365. package/src/programmers/internal/{application_resolved.ts → application_escaped.ts} +1 -1
  366. package/src/programmers/internal/application_number.ts +76 -70
  367. package/src/programmers/internal/application_object.ts +0 -3
  368. package/src/programmers/internal/application_schema.ts +40 -22
  369. package/src/programmers/internal/application_string.ts +33 -27
  370. package/src/programmers/internal/check_array_length.ts +34 -28
  371. package/src/programmers/internal/check_bigint.ts +25 -118
  372. package/src/programmers/internal/check_dynamic_properties.ts +1 -2
  373. package/src/programmers/internal/check_number.ts +81 -261
  374. package/src/programmers/internal/check_string.ts +28 -39
  375. package/src/programmers/internal/check_template.ts +17 -1
  376. package/src/programmers/internal/check_union_array_like.ts +1 -16
  377. package/src/programmers/internal/feature_object_entries.ts +12 -18
  378. package/src/programmers/internal/random_custom.ts +3 -3
  379. package/src/programmers/json/JsonApplicationProgrammer.ts +6 -3
  380. package/src/programmers/json/JsonAssertParseProgrammer.ts +7 -2
  381. package/src/programmers/json/JsonIsParseProgrammer.ts +7 -2
  382. package/src/programmers/json/JsonStringifyProgrammer.ts +32 -73
  383. package/src/programmers/json/JsonValidateParseProgrammer.ts +7 -2
  384. package/src/programmers/json/JsonValidateStringifyProgrammer.ts +1 -1
  385. package/src/programmers/misc/MiscCloneProgrammer.ts +24 -35
  386. package/src/programmers/{IsPruneProgrammer.ts → misc/MiscIsPruneProgrammer.ts} +7 -7
  387. package/src/programmers/misc/MiscLiteralsProgrammer.ts +11 -6
  388. package/src/programmers/misc/MiscPruneProgrammer.ts +16 -20
  389. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +34 -68
  390. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +153 -98
  391. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +6 -36
  392. package/src/schemas/json/IJsonSchema.ts +11 -38
  393. package/src/schemas/metadata/IMetadataAlias.ts +0 -2
  394. package/src/schemas/metadata/IMetadataProperty.ts +0 -2
  395. package/src/schemas/metadata/IMetadataTypeTag.ts +2 -0
  396. package/src/schemas/metadata/Metadata.ts +32 -46
  397. package/src/schemas/metadata/MetadataAlias.ts +0 -5
  398. package/src/schemas/metadata/MetadataArray.ts +21 -3
  399. package/src/schemas/metadata/MetadataAtomic.ts +42 -0
  400. package/src/schemas/metadata/MetadataProperty.ts +0 -5
  401. package/src/schemas/metadata/MetadataTuple.ts +5 -4
  402. package/src/tags/ExclusiveMaximum.ts +13 -8
  403. package/src/tags/ExclusiveMinimum.ts +13 -8
  404. package/src/tags/Format.ts +21 -20
  405. package/src/tags/MaxItems.ts +9 -8
  406. package/src/tags/MaxLength.ts +9 -8
  407. package/src/tags/Maximum.ts +13 -8
  408. package/src/tags/MinItems.ts +9 -8
  409. package/src/tags/MinLength.ts +9 -8
  410. package/src/tags/Minimum.ts +13 -8
  411. package/src/tags/MultipleOf.ts +15 -10
  412. package/src/tags/Pattern.ts +8 -8
  413. package/src/tags/TagBase.ts +18 -13
  414. package/src/tags/Type.ts +26 -29
  415. package/src/tags/index.ts +1 -0
  416. package/src/transform.ts +13 -5
  417. package/src/transformers/CallExpressionTransformer.ts +6 -3
  418. package/src/transformers/FileTransformer.ts +25 -13
  419. package/src/transformers/IProject.ts +3 -0
  420. package/src/transformers/NodeTransformer.ts +1 -1
  421. package/src/transformers/TransformerError.ts +55 -0
  422. package/src/transformers/features/CreateRandomTransformer.ts +11 -7
  423. package/src/transformers/features/RandomTransformer.ts +11 -7
  424. package/src/transformers/features/json/JsonApplicationTransformer.ts +39 -35
  425. package/src/transformers/features/misc/MetadataTransformer.ts +18 -10
  426. package/src/transformers/features/misc/MiscCreateIsPruneTransformer.ts +2 -2
  427. package/src/transformers/features/misc/MiscIsPruneTransformer.ts +2 -2
  428. package/src/transformers/features/misc/MiscLiteralsTransformer.ts +11 -7
  429. package/src/transformers/features/protobuf/ProtobufMessageTransformer.ts +9 -7
  430. package/src/transformers/internal/GenericTransformer.ts +17 -10
  431. package/src/typings/ProtobufAtomic.ts +19 -0
  432. package/src/typings/ValidationPipe.ts +9 -0
  433. package/lib/factories/MetadataTagFactory.d.ts +0 -6
  434. package/lib/factories/MetadataTagFactory.js +0 -312
  435. package/lib/factories/MetadataTagFactory.js.map +0 -1
  436. package/lib/factories/internal/metadata/iterate_metadata_type_tags.d.ts +0 -3
  437. package/lib/factories/internal/metadata/iterate_metadata_type_tags.js +0 -157
  438. package/lib/factories/internal/metadata/iterate_metadata_type_tags.js.map +0 -1
  439. package/lib/functional/$is_custom.d.ts +0 -2
  440. package/lib/functional/$is_custom.js +0 -13
  441. package/lib/functional/$is_custom.js.map +0 -1
  442. package/lib/functional/$is_date.d.ts +0 -1
  443. package/lib/functional/$is_date.js +0 -7
  444. package/lib/functional/$is_date.js.map +0 -1
  445. package/lib/functional/$is_datetime.d.ts +0 -1
  446. package/lib/functional/$is_datetime.js +0 -8
  447. package/lib/functional/$is_datetime.js.map +0 -1
  448. package/lib/functional/$is_email.d.ts +0 -1
  449. package/lib/functional/$is_email.js +0 -7
  450. package/lib/functional/$is_email.js.map +0 -1
  451. package/lib/functional/$is_ipv4.d.ts +0 -1
  452. package/lib/functional/$is_ipv4.js +0 -7
  453. package/lib/functional/$is_ipv4.js.map +0 -1
  454. package/lib/functional/$is_ipv6.d.ts +0 -1
  455. package/lib/functional/$is_ipv6.js +0 -7
  456. package/lib/functional/$is_ipv6.js.map +0 -1
  457. package/lib/functional/$is_url.d.ts +0 -1
  458. package/lib/functional/$is_url.js +0 -7
  459. package/lib/functional/$is_url.js.map +0 -1
  460. package/lib/functional/$is_uuid.d.ts +0 -1
  461. package/lib/functional/$is_uuid.js +0 -7
  462. package/lib/functional/$is_uuid.js.map +0 -1
  463. package/lib/programmers/IsPruneProgrammer.js.map +0 -1
  464. package/lib/programmers/internal/application_resolved.d.ts +0 -4
  465. package/lib/programmers/internal/application_resolved.js.map +0 -1
  466. package/lib/programmers/internal/check_array_tags.js +0 -39
  467. package/lib/programmers/internal/check_array_tags.js.map +0 -1
  468. package/lib/programmers/internal/check_string_tags.d.ts +0 -1
  469. package/lib/programmers/internal/check_string_tags.js +0 -89
  470. package/lib/programmers/internal/check_string_tags.js.map +0 -1
  471. package/lib/programmers/internal/get_comment_tags.d.ts +0 -1
  472. package/lib/programmers/internal/get_comment_tags.js +0 -25
  473. package/lib/programmers/internal/get_comment_tags.js.map +0 -1
  474. package/lib/schemas/metadata/ICommentTag.d.ts +0 -4
  475. package/lib/schemas/metadata/ICommentTag.js.map +0 -1
  476. package/lib/schemas/metadata/IMetadataCommentTag.d.ts +0 -63
  477. package/lib/schemas/metadata/IMetadataCommentTag.js.map +0 -1
  478. package/src/factories/MetadataTagFactory.ts +0 -365
  479. package/src/factories/internal/metadata/iterate_metadata_type_tags.ts +0 -183
  480. package/src/functional/$is_custom.ts +0 -14
  481. package/src/functional/$is_date.ts +0 -3
  482. package/src/functional/$is_datetime.ts +0 -2
  483. package/src/functional/$is_email.ts +0 -4
  484. package/src/functional/$is_ipv4.ts +0 -4
  485. package/src/functional/$is_ipv6.ts +0 -4
  486. package/src/functional/$is_url.ts +0 -4
  487. package/src/functional/$is_uuid.ts +0 -4
  488. package/src/programmers/internal/check_array_tags.ts +0 -45
  489. package/src/programmers/internal/check_string_tags.ts +0 -67
  490. package/src/programmers/internal/get_comment_tags.ts +0 -23
  491. package/src/schemas/metadata/ICommentTag.ts +0 -4
  492. package/src/schemas/metadata/IMetadataCommentTag.ts +0 -112
  493. /package/lib/{programmers/internal/check_array_tags.d.ts → factories/MetadataCommentTagFactory.d.ts} +0 -0
@@ -31,29 +31,65 @@ export namespace AssertProgrammer {
31
31
  trace: true,
32
32
  numeric: OptionPredicator.numeric(project.options),
33
33
  equals,
34
- atomist: (explore) => (tuple) => (input) =>
34
+ atomist: (explore) => (entry) => (input) =>
35
35
  [
36
- ...(tuple.expression ? [tuple.expression] : []),
37
- ...tuple.tags.map((tag) =>
38
- ts.factory.createLogicalOr(
39
- tag.expression,
40
- create_guard_call(importer)(
41
- explore.from === "top"
42
- ? ts.factory.createTrue()
43
- : ts.factory.createIdentifier(
44
- "_exceptionable",
36
+ ...(entry.expression ? [entry.expression] : []),
37
+ ...(entry.conditions.length === 0
38
+ ? []
39
+ : entry.conditions.length === 1
40
+ ? entry.conditions[0]!.map((cond) =>
41
+ ts.factory.createLogicalOr(
42
+ cond.expression,
43
+ create_guard_call(importer)(
44
+ explore.from === "top"
45
+ ? ts.factory.createTrue()
46
+ : ts.factory.createIdentifier(
47
+ "_exceptionable",
48
+ ),
49
+ )(
50
+ ts.factory.createIdentifier(
51
+ explore.postfix
52
+ ? `_path + ${explore.postfix}`
53
+ : "_path",
45
54
  ),
46
- )(
47
- ts.factory.createIdentifier(
48
- explore.postfix
49
- ? `_path + ${explore.postfix}`
50
- : "_path",
51
- ),
52
- tag.expected,
53
- input,
54
- ),
55
- ),
56
- ),
55
+ cond.expected,
56
+ input,
57
+ ),
58
+ ),
59
+ )
60
+ : [
61
+ ts.factory.createLogicalOr(
62
+ entry.conditions
63
+ .map((set) =>
64
+ set
65
+ .map((s) => s.expression)
66
+ .reduce((a, b) =>
67
+ ts.factory.createLogicalAnd(
68
+ a,
69
+ b,
70
+ ),
71
+ ),
72
+ )
73
+ .reduce((a, b) =>
74
+ ts.factory.createLogicalOr(a, b),
75
+ ),
76
+ create_guard_call(importer)(
77
+ explore.from === "top"
78
+ ? ts.factory.createTrue()
79
+ : ts.factory.createIdentifier(
80
+ "_exceptionable",
81
+ ),
82
+ )(
83
+ ts.factory.createIdentifier(
84
+ explore.postfix
85
+ ? `_path + ${explore.postfix}`
86
+ : "_path",
87
+ ),
88
+ entry.expected,
89
+ input,
90
+ ),
91
+ ),
92
+ ]),
57
93
  ].reduce((x, y) => ts.factory.createLogicalAnd(x, y)),
58
94
  combiner: combiner(equals)(importer),
59
95
  joiner: joiner(equals)(importer),
@@ -8,17 +8,14 @@ import { StatementFactory } from "../factories/StatementFactory";
8
8
  import { TypeFactory } from "../factories/TypeFactory";
9
9
  import { ValueFactory } from "../factories/ValueFactory";
10
10
 
11
- import { IJsDocTagInfo } from "../schemas/metadata/IJsDocTagInfo";
12
- import { IMetadataCommentTag } from "../schemas/metadata/IMetadataCommentTag";
13
- import { IMetadataTypeTag } from "../schemas/metadata/IMetadataTypeTag";
14
11
  import { Metadata } from "../schemas/metadata/Metadata";
15
12
  import { MetadataArray } from "../schemas/metadata/MetadataArray";
16
- import { MetadataArrayType } from "../schemas/metadata/MetadataArrayType";
17
13
  import { MetadataObject } from "../schemas/metadata/MetadataObject";
18
14
  import { MetadataTuple } from "../schemas/metadata/MetadataTuple";
19
15
  import { MetadataTupleType } from "../schemas/metadata/MetadataTupleType";
20
16
 
21
17
  import { IProject } from "../transformers/IProject";
18
+ import { TransformerError } from "../transformers/TransformerError";
22
19
 
23
20
  import { FeatureProgrammer } from "./FeatureProgrammer";
24
21
  import { AtomicPredicator } from "./helpers/AtomicPredicator";
@@ -28,7 +25,6 @@ import { IExpressionEntry } from "./helpers/IExpressionEntry";
28
25
  import { OptionPredicator } from "./helpers/OptionPredicator";
29
26
  import { UnionExplorer } from "./helpers/UnionExplorer";
30
27
  import { check_array_length } from "./internal/check_array_length";
31
- import { check_array_tags } from "./internal/check_array_tags";
32
28
  import { check_bigint } from "./internal/check_bigint";
33
29
  import { check_native } from "./internal/check_native";
34
30
  import { check_number } from "./internal/check_number";
@@ -131,7 +127,7 @@ export namespace CheckerProgrammer {
131
127
  collection
132
128
  .arrays()
133
129
  .filter((a) => a.recursive)
134
- .map((array, i) =>
130
+ .map((type, i) =>
135
131
  StatementFactory.constant(
136
132
  `${config.prefix}a${i}`,
137
133
  ts.factory.createArrowFunction(
@@ -144,16 +140,16 @@ export namespace CheckerProgrammer {
144
140
  undefined,
145
141
  decode_array_inline(project)(config)(importer)(
146
142
  ts.factory.createIdentifier("input"),
147
- array,
143
+ MetadataArray.create({
144
+ type,
145
+ tags: [],
146
+ }),
148
147
  {
149
148
  tracable: config.trace,
150
149
  source: "function",
151
150
  from: "array",
152
151
  postfix: "",
153
152
  },
154
- [],
155
- [],
156
- [],
157
153
  ),
158
154
  ),
159
155
  ),
@@ -187,8 +183,6 @@ export namespace CheckerProgrammer {
187
183
  from: "array",
188
184
  postfix: "",
189
185
  },
190
- [],
191
- [],
192
186
  ),
193
187
  ),
194
188
  ),
@@ -215,15 +209,20 @@ export namespace CheckerProgrammer {
215
209
  prefix: config.prefix,
216
210
  initializer:
217
211
  ({ checker }) =>
212
+ (importer) =>
218
213
  (type) => {
219
214
  const collection: MetadataCollection =
220
215
  new MetadataCollection();
221
- const meta: Metadata = MetadataFactory.analyze(checker)({
216
+ const result = MetadataFactory.analyze(checker)({
222
217
  escape: false,
223
218
  constant: true,
224
219
  absorb: true,
225
220
  })(collection)(type);
226
- return [collection, meta];
221
+ if (result.success === false)
222
+ throw TransformerError.from(`typia.${importer.method}`)(
223
+ result.errors,
224
+ );
225
+ return [collection, result.data];
227
226
  },
228
227
  addition: config.addition,
229
228
  decoder: () =>
@@ -296,8 +295,6 @@ export namespace CheckerProgrammer {
296
295
  input: ts.Expression,
297
296
  meta: Metadata,
298
297
  explore: IExplore,
299
- metaTags: IMetadataCommentTag[],
300
- jsDocTags: ts.JSDocTagInfo[],
301
298
  ): ts.Expression => {
302
299
  if (meta.any) return config.success;
303
300
 
@@ -306,10 +303,13 @@ export namespace CheckerProgrammer {
306
303
  const add = create_add(binaries)(input);
307
304
  const getConstantValue = (
308
305
  value: number | string | bigint | boolean,
309
- ) =>
310
- typeof value === "string"
311
- ? ts.factory.createStringLiteral(value)
312
- : ts.factory.createIdentifier(value.toString());
306
+ ) => {
307
+ if (typeof value === "string")
308
+ return ts.factory.createStringLiteral(value);
309
+ else if (typeof value === "bigint")
310
+ return ExpressionFactory.bigint(value);
311
+ return ts.factory.createIdentifier(value.toString());
312
+ };
313
313
 
314
314
  //----
315
315
  // CHECK OPTIONAL
@@ -364,27 +364,21 @@ export namespace CheckerProgrammer {
364
364
  else if (atom.type === "number")
365
365
  binaries.push({
366
366
  expression: config.atomist(explore)(
367
- check_number(project, config.numeric)(
368
- atom.tags,
369
- metaTags,
370
- )(input),
367
+ check_number(project, config.numeric)(atom)(input),
371
368
  )(input),
372
369
  combined: false,
373
370
  });
374
371
  else if (atom.type === "bigint")
375
372
  binaries.push({
376
373
  expression: config.atomist(explore)(
377
- check_bigint(project)(atom.tags, metaTags)(input),
374
+ check_bigint(project)(atom)(input),
378
375
  )(input),
379
376
  combined: false,
380
377
  });
381
378
  else if (atom.type === "string")
382
379
  binaries.push({
383
380
  expression: config.atomist(explore)(
384
- check_string(project)(importer)(
385
- atom.tags,
386
- metaTags,
387
- )(input),
381
+ check_string(project)(atom)(input),
388
382
  )(input),
389
383
  combined: false,
390
384
  });
@@ -448,8 +442,6 @@ export namespace CheckerProgrammer {
448
442
  ...explore,
449
443
  from: "array",
450
444
  },
451
- [],
452
- [],
453
445
  ),
454
446
  );
455
447
  }
@@ -473,8 +465,6 @@ export namespace CheckerProgrammer {
473
465
  ...explore,
474
466
  from: "array",
475
467
  },
476
- metaTags,
477
- jsDocTags,
478
468
  ),
479
469
  );
480
470
  }
@@ -483,8 +473,12 @@ export namespace CheckerProgrammer {
483
473
  if (meta.tuples.length + meta.arrays.length > 0) {
484
474
  const install = prepare(
485
475
  config.atomist(explore)({
476
+ expected: [
477
+ ...meta.tuples.map((t) => t.type.name),
478
+ ...meta.arrays.map((a) => a.getName()),
479
+ ].join(" | "),
486
480
  expression: ExpressionFactory.isArray(input),
487
- tags: [],
481
+ conditions: [],
488
482
  })(input),
489
483
  [...meta.tuples, ...meta.arrays]
490
484
  .map((elem) => elem.type.name)
@@ -500,8 +494,6 @@ export namespace CheckerProgrammer {
500
494
  ...explore,
501
495
  from: "array",
502
496
  },
503
- metaTags,
504
- jsDocTags,
505
497
  ),
506
498
  );
507
499
  // TUPLE ONLY
@@ -514,8 +506,6 @@ export namespace CheckerProgrammer {
514
506
  ...explore,
515
507
  from: "array",
516
508
  },
517
- metaTags,
518
- jsDocTags,
519
509
  ),
520
510
  );
521
511
  else if (meta.arrays.some((elem) => elem.type.value.any))
@@ -531,8 +521,6 @@ export namespace CheckerProgrammer {
531
521
  ...explore,
532
522
  from: "array",
533
523
  },
534
- metaTags,
535
- jsDocTags,
536
524
  ),
537
525
  );
538
526
  else
@@ -544,8 +532,6 @@ export namespace CheckerProgrammer {
544
532
  ...explore,
545
533
  from: "array",
546
534
  },
547
- metaTags,
548
- jsDocTags,
549
535
  ),
550
536
  );
551
537
  else
@@ -554,8 +540,6 @@ export namespace CheckerProgrammer {
554
540
  input,
555
541
  [...meta.tuples, ...meta.arrays],
556
542
  explore,
557
- metaTags,
558
- jsDocTags,
559
543
  ),
560
544
  );
561
545
  }
@@ -670,21 +654,12 @@ export namespace CheckerProgrammer {
670
654
  (project: IProject) =>
671
655
  (config: IConfig) =>
672
656
  (importer: FunctionImporter) =>
673
- (
674
- input: ts.Expression,
675
- array: MetadataArray,
676
- explore: IExplore,
677
- metaTags: IMetadataCommentTag[],
678
- jsDocTags: IJsDocTagInfo[],
679
- ) => {
657
+ (input: ts.Expression, array: MetadataArray, explore: IExplore) => {
680
658
  if (array.type.recursive === false)
681
659
  return decode_array_inline(project)(config)(importer)(
682
660
  input,
683
- array.type,
661
+ array,
684
662
  explore,
685
- array.tags,
686
- metaTags,
687
- jsDocTags,
688
663
  );
689
664
 
690
665
  explore = {
@@ -716,29 +691,20 @@ export namespace CheckerProgrammer {
716
691
  (importer: FunctionImporter) =>
717
692
  (
718
693
  input: ts.Expression,
719
- array: MetadataArrayType,
694
+ array: MetadataArray,
720
695
  explore: IExplore,
721
- matrix: IMetadataTypeTag[][],
722
- metaTags: IMetadataCommentTag[],
723
- jsDocTags: IJsDocTagInfo[],
724
696
  ): ts.Expression => {
725
- const tagger = check_array_tags(project)(matrix, metaTags)(input);
697
+ const length = check_array_length(project)(array)(input);
726
698
  const main = FeatureProgrammer.decode_array({
727
699
  prefix: config.prefix,
728
700
  trace: config.trace,
729
701
  path: config.path,
730
702
  decoder: () => decode(project)(config)(importer),
731
- })(importer)(config.joiner.array)(
732
- input,
733
- array,
734
- explore,
735
- metaTags,
736
- jsDocTags,
737
- );
738
- return tagger.expression === null && tagger.tags.length === 0
703
+ })(importer)(config.joiner.array)(input, array, explore);
704
+ return length.expression === null && length.conditions.length === 0
739
705
  ? main
740
706
  : ts.factory.createLogicalAnd(
741
- config.atomist(explore)(tagger)(input),
707
+ config.atomist(explore)(length)(input),
742
708
  main,
743
709
  );
744
710
  };
@@ -751,16 +717,12 @@ export namespace CheckerProgrammer {
751
717
  input: ts.Expression,
752
718
  tuple: MetadataTuple,
753
719
  explore: IExplore,
754
- tagList: IMetadataCommentTag[],
755
- jsDocTags: ts.JSDocTagInfo[],
756
720
  ): ts.Expression => {
757
721
  if (tuple.type.recursive === false)
758
722
  return decode_tuple_inline(project)(config)(importer)(
759
723
  input,
760
724
  tuple.type,
761
725
  explore,
762
- tagList,
763
- jsDocTags,
764
726
  );
765
727
  explore = {
766
728
  ...explore,
@@ -792,8 +754,6 @@ export namespace CheckerProgrammer {
792
754
  input: ts.Expression,
793
755
  tuple: MetadataTupleType,
794
756
  explore: IExplore,
795
- tagList: IMetadataCommentTag[],
796
- jsDocTags: ts.JSDocTagInfo[],
797
757
  ): ts.Expression => {
798
758
  const binaries: ts.Expression[] = tuple.elements
799
759
  .filter((meta) => meta.rest === null)
@@ -808,8 +768,6 @@ export namespace CheckerProgrammer {
808
768
  ? `${explore.postfix.slice(0, -1)}[${index}]"`
809
769
  : `"[${index}]"`,
810
770
  },
811
- tuple.of_map === true && index !== 1 ? [] : tagList,
812
- tuple.of_map === true && index !== 1 ? [] : jsDocTags,
813
771
  ),
814
772
  );
815
773
  const rest: ts.Expression | null =
@@ -831,8 +789,6 @@ export namespace CheckerProgrammer {
831
789
  ...explore,
832
790
  start: tuple.elements.length - 1,
833
791
  },
834
- tagList,
835
- jsDocTags,
836
792
  )
837
793
  : null;
838
794
 
@@ -915,8 +871,6 @@ export namespace CheckerProgrammer {
915
871
  input: ts.Expression,
916
872
  sets: Metadata[],
917
873
  explore: IExplore,
918
- tags: IMetadataCommentTag[],
919
- jsDocTags: IJsDocTagInfo[],
920
874
  ): ts.Expression =>
921
875
  ts.factory.createCallExpression(
922
876
  UnionExplorer.set({
@@ -928,7 +882,7 @@ export namespace CheckerProgrammer {
928
882
  ts.factory.createReturnStatement(
929
883
  config.joiner.failure(input, expected, explore),
930
884
  ),
931
- })([])(input, sets, explore, tags, jsDocTags),
885
+ })([])(input, sets, explore),
932
886
  undefined,
933
887
  undefined,
934
888
  );
@@ -941,8 +895,6 @@ export namespace CheckerProgrammer {
941
895
  input: ts.Expression,
942
896
  maps: Metadata.Entry[],
943
897
  explore: IExplore,
944
- tags: IMetadataCommentTag[],
945
- jsDocTags: IJsDocTagInfo[],
946
898
  ): ts.Expression =>
947
899
  ts.factory.createCallExpression(
948
900
  UnionExplorer.map({
@@ -959,8 +911,6 @@ export namespace CheckerProgrammer {
959
911
  ...explore,
960
912
  postfix: `${explore.postfix}[0]`,
961
913
  },
962
- [],
963
- [],
964
914
  ),
965
915
  func(
966
916
  ts.factory.createElementAccessExpression(
@@ -972,8 +922,6 @@ export namespace CheckerProgrammer {
972
922
  ...explore,
973
923
  postfix: `${explore.postfix}[1]`,
974
924
  },
975
- [],
976
- [],
977
925
  ),
978
926
  );
979
927
  },
@@ -984,7 +932,7 @@ export namespace CheckerProgrammer {
984
932
  ts.factory.createReturnStatement(
985
933
  config.joiner.failure(input, expected, explore),
986
934
  ),
987
- })([])(input, maps, explore, tags, jsDocTags),
935
+ })([])(input, maps, explore),
988
936
  undefined,
989
937
  undefined,
990
938
  );
@@ -997,8 +945,6 @@ export namespace CheckerProgrammer {
997
945
  input: ts.Expression,
998
946
  tuples: MetadataTuple[],
999
947
  explore: IExplore,
1000
- tags: IMetadataCommentTag[],
1001
- jsDocTags: IJsDocTagInfo[],
1002
948
  ): ts.Expression =>
1003
949
  explore_array_like_union_types(config)(importer)(
1004
950
  UnionExplorer.tuple({
@@ -1011,7 +957,7 @@ export namespace CheckerProgrammer {
1011
957
  config.joiner.failure(input, expected, explore),
1012
958
  ),
1013
959
  }),
1014
- )(input, tuples, explore, tags, jsDocTags);
960
+ )(input, tuples, explore);
1015
961
 
1016
962
  const explore_arrays =
1017
963
  (project: IProject) =>
@@ -1021,8 +967,6 @@ export namespace CheckerProgrammer {
1021
967
  input: ts.Expression,
1022
968
  arrays: MetadataArray[],
1023
969
  explore: IExplore,
1024
- tags: IMetadataCommentTag[],
1025
- jsDocTags: IJsDocTagInfo[],
1026
970
  ): ts.Expression =>
1027
971
  explore_array_like_union_types(config)(importer)(
1028
972
  UnionExplorer.array({
@@ -1035,7 +979,7 @@ export namespace CheckerProgrammer {
1035
979
  config.joiner.failure(input, expected, explore),
1036
980
  ),
1037
981
  }),
1038
- )(input, arrays, explore, tags, jsDocTags);
982
+ )(input, arrays, explore);
1039
983
 
1040
984
  const explore_arrays_and_tuples =
1041
985
  (project: IProject) =>
@@ -1045,45 +989,42 @@ export namespace CheckerProgrammer {
1045
989
  input: ts.Expression,
1046
990
  elements: Array<MetadataArray | MetadataTuple>,
1047
991
  explore: IExplore,
1048
- tags: IMetadataCommentTag[],
1049
- jsDocTags: IJsDocTagInfo[],
1050
992
  ): ts.Expression =>
1051
993
  explore_array_like_union_types(config)(importer)(
1052
994
  UnionExplorer.array_or_tuple({
1053
- checker: (front, target, explore, tags, jsDocTags, array) =>
995
+ checker: (front, target, explore, array) =>
1054
996
  target instanceof MetadataTuple
1055
997
  ? decode_tuple(project)(config)(importer)(
1056
998
  front,
1057
999
  target,
1058
1000
  explore,
1059
- tags,
1060
- jsDocTags,
1061
1001
  )
1062
1002
  : config.atomist(explore)({
1003
+ expected: elements
1004
+ .map((elem) =>
1005
+ elem instanceof MetadataArray
1006
+ ? elem.getName()
1007
+ : elem.type.name,
1008
+ )
1009
+ .join(" | "),
1063
1010
  expression: decode(project)(config)(importer)(
1064
1011
  front,
1065
1012
  target,
1066
1013
  explore,
1067
- tags,
1068
- jsDocTags,
1069
1014
  ),
1070
- tags: check_array_length(tags)(array),
1015
+ conditions: [],
1071
1016
  })(array),
1072
- decoder: (input, target, explore, tags, jsDocTags) =>
1017
+ decoder: (input, target, explore) =>
1073
1018
  target instanceof MetadataTuple
1074
1019
  ? decode_tuple(project)(config)(importer)(
1075
1020
  input,
1076
1021
  target,
1077
1022
  explore,
1078
- tags,
1079
- jsDocTags,
1080
1023
  )
1081
1024
  : decode_array(project)(config)(importer)(
1082
1025
  input,
1083
1026
  target,
1084
1027
  explore,
1085
- tags,
1086
- jsDocTags,
1087
1028
  ),
1088
1029
  empty: config.success,
1089
1030
  success: config.success,
@@ -1092,7 +1033,7 @@ export namespace CheckerProgrammer {
1092
1033
  config.joiner.failure(input, expected, explore),
1093
1034
  ),
1094
1035
  }),
1095
- )(input, elements, explore, tags, jsDocTags);
1036
+ )(input, elements, explore);
1096
1037
 
1097
1038
  const explore_array_like_union_types =
1098
1039
  (config: IConfig) =>
@@ -1104,28 +1045,18 @@ export namespace CheckerProgrammer {
1104
1045
  input: ts.Expression,
1105
1046
  elements: T[],
1106
1047
  explore: IExplore,
1107
- tags: IMetadataCommentTag[],
1108
- jsDocTags: IJsDocTagInfo[],
1109
1048
  ) => ts.ArrowFunction,
1110
1049
  ) =>
1111
1050
  (
1112
1051
  input: ts.Expression,
1113
1052
  elements: T[],
1114
1053
  explore: IExplore,
1115
- tags: IMetadataCommentTag[],
1116
- jsDocTags: IJsDocTagInfo[],
1117
1054
  ): ts.Expression => {
1118
1055
  const arrow =
1119
1056
  (parameters: ts.ParameterDeclaration[]) =>
1120
1057
  (explore: IExplore) =>
1121
1058
  (input: ts.Expression): ts.ArrowFunction =>
1122
- factory(parameters)(
1123
- input,
1124
- elements,
1125
- explore,
1126
- tags,
1127
- jsDocTags,
1128
- );
1059
+ factory(parameters)(input, elements, explore);
1129
1060
  if (elements.every((e) => e.type.recursive === false))
1130
1061
  ts.factory.createCallExpression(
1131
1062
  arrow([])(explore)(input),