typia 5.0.0-dev.20230823-2 → 5.0.0-dev.20230827

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 (424) hide show
  1. package/README.md +1 -2
  2. package/lib/IRandomGenerator.d.ts +4 -3
  3. package/lib/factories/ExpressionFactory.d.ts +3 -1
  4. package/lib/factories/ExpressionFactory.js +25 -1
  5. package/lib/factories/ExpressionFactory.js.map +1 -1
  6. package/lib/factories/IdentifierFactory.d.ts +2 -1
  7. package/lib/factories/IdentifierFactory.js +11 -0
  8. package/lib/factories/IdentifierFactory.js.map +1 -1
  9. package/lib/factories/LiteralFactory.js +6 -2
  10. package/lib/factories/LiteralFactory.js.map +1 -1
  11. package/lib/factories/MetadataCollection.d.ts +7 -7
  12. package/lib/factories/MetadataCollection.js +4 -5
  13. package/lib/factories/MetadataCollection.js.map +1 -1
  14. package/lib/factories/MetadataCommentTagFactory.js +532 -0
  15. package/lib/factories/MetadataCommentTagFactory.js.map +1 -0
  16. package/lib/factories/MetadataTypeTagFactory.d.ts +6 -0
  17. package/lib/factories/MetadataTypeTagFactory.js +207 -0
  18. package/lib/factories/MetadataTypeTagFactory.js.map +1 -0
  19. package/lib/factories/NumericRangeFactory.d.ts +6 -0
  20. package/lib/factories/NumericRangeFactory.js +34 -0
  21. package/lib/factories/NumericRangeFactory.js.map +1 -0
  22. package/lib/factories/ProtobufFactory.js +48 -16
  23. package/lib/factories/ProtobufFactory.js.map +1 -1
  24. package/lib/factories/internal/metadata/emend_metadata_atomics.js +12 -6
  25. package/lib/factories/internal/metadata/emend_metadata_atomics.js.map +1 -1
  26. package/lib/factories/internal/metadata/emplace_metadata_alias.js +1 -13
  27. package/lib/factories/internal/metadata/emplace_metadata_alias.js.map +1 -1
  28. package/lib/factories/internal/metadata/emplace_metadata_array_type.d.ts +5 -0
  29. package/lib/factories/internal/metadata/{emplace_metadata_array.js → emplace_metadata_array_type.js} +4 -4
  30. package/lib/factories/internal/metadata/emplace_metadata_array_type.js.map +1 -0
  31. package/lib/factories/internal/metadata/emplace_metadata_object.js +0 -1
  32. package/lib/factories/internal/metadata/emplace_metadata_object.js.map +1 -1
  33. package/lib/factories/internal/metadata/emplace_metadata_tuple.d.ts +2 -2
  34. package/lib/factories/internal/metadata/iterate_metadata_array.js +7 -3
  35. package/lib/factories/internal/metadata/iterate_metadata_array.js.map +1 -1
  36. package/lib/factories/internal/metadata/iterate_metadata_atomic.js +2 -1
  37. package/lib/factories/internal/metadata/iterate_metadata_atomic.js.map +1 -1
  38. package/lib/factories/internal/metadata/iterate_metadata_collection.js +20 -12
  39. package/lib/factories/internal/metadata/iterate_metadata_collection.js.map +1 -1
  40. package/lib/factories/internal/metadata/iterate_metadata_comment_tags.d.ts +2 -0
  41. package/lib/factories/internal/metadata/{iterate_metadata_tag.js → iterate_metadata_comment_tags.js} +7 -8
  42. package/lib/factories/internal/metadata/iterate_metadata_comment_tags.js.map +1 -0
  43. package/lib/factories/internal/metadata/iterate_metadata_intersection.js +140 -16
  44. package/lib/factories/internal/metadata/iterate_metadata_intersection.js.map +1 -1
  45. package/lib/factories/internal/metadata/iterate_metadata_object.js +0 -7
  46. package/lib/factories/internal/metadata/iterate_metadata_object.js.map +1 -1
  47. package/lib/factories/internal/metadata/iterate_metadata_sort.js +2 -2
  48. package/lib/factories/internal/metadata/iterate_metadata_sort.js.map +1 -1
  49. package/lib/factories/internal/metadata/iterate_metadata_tuple.js +6 -2
  50. package/lib/factories/internal/metadata/iterate_metadata_tuple.js.map +1 -1
  51. package/lib/functional/$any.js +2 -1
  52. package/lib/functional/$any.js.map +1 -1
  53. package/lib/functional/$clone.d.ts +2 -0
  54. package/lib/functional/$clone.js +8 -0
  55. package/lib/functional/$clone.js.map +1 -0
  56. package/lib/functional/Namespace.js +0 -16
  57. package/lib/functional/Namespace.js.map +1 -1
  58. package/lib/module.d.ts +2 -39
  59. package/lib/module.js +3 -17
  60. package/lib/module.js.map +1 -1
  61. package/lib/programmers/AssertProgrammer.js +28 -10
  62. package/lib/programmers/AssertProgrammer.js.map +1 -1
  63. package/lib/programmers/CheckerProgrammer.js +90 -68
  64. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  65. package/lib/programmers/FeatureProgrammer.d.ts +2 -4
  66. package/lib/programmers/FeatureProgrammer.js +6 -6
  67. package/lib/programmers/FeatureProgrammer.js.map +1 -1
  68. package/lib/programmers/IsProgrammer.d.ts +1 -1
  69. package/lib/programmers/IsProgrammer.js +32 -21
  70. package/lib/programmers/IsProgrammer.js.map +1 -1
  71. package/lib/programmers/RandomProgrammer.js +187 -156
  72. package/lib/programmers/RandomProgrammer.js.map +1 -1
  73. package/lib/programmers/ValidateProgrammer.js +28 -10
  74. package/lib/programmers/ValidateProgrammer.js.map +1 -1
  75. package/lib/programmers/helpers/AtomicPredicator.js +2 -2
  76. package/lib/programmers/helpers/AtomicPredicator.js.map +1 -1
  77. package/lib/programmers/helpers/CloneJoiner.js +10 -2
  78. package/lib/programmers/helpers/CloneJoiner.js.map +1 -1
  79. package/lib/programmers/helpers/ICheckEntry.d.ts +4 -3
  80. package/lib/programmers/helpers/ProtobufUtil.d.ts +6 -2
  81. package/lib/programmers/helpers/ProtobufUtil.js +175 -17
  82. package/lib/programmers/helpers/ProtobufUtil.js.map +1 -1
  83. package/lib/programmers/helpers/RandomJoiner.d.ts +3 -5
  84. package/lib/programmers/helpers/RandomJoiner.js +7 -10
  85. package/lib/programmers/helpers/RandomJoiner.js.map +1 -1
  86. package/lib/programmers/helpers/RandomRanger.d.ts +5 -6
  87. package/lib/programmers/helpers/RandomRanger.js +13 -33
  88. package/lib/programmers/helpers/RandomRanger.js.map +1 -1
  89. package/lib/programmers/helpers/UnionExplorer.d.ts +7 -8
  90. package/lib/programmers/helpers/UnionExplorer.js +46 -35
  91. package/lib/programmers/helpers/UnionExplorer.js.map +1 -1
  92. package/lib/programmers/internal/application_alias.js +0 -1
  93. package/lib/programmers/internal/application_alias.js.map +1 -1
  94. package/lib/programmers/internal/application_array.js +60 -20
  95. package/lib/programmers/internal/application_array.js.map +1 -1
  96. package/lib/programmers/internal/application_default_string.js +2 -2
  97. package/lib/programmers/internal/application_default_string.js.map +1 -1
  98. package/lib/programmers/internal/application_number.js +95 -69
  99. package/lib/programmers/internal/application_number.js.map +1 -1
  100. package/lib/programmers/internal/application_object.js +0 -3
  101. package/lib/programmers/internal/application_object.js.map +1 -1
  102. package/lib/programmers/internal/application_resolved.js +2 -2
  103. package/lib/programmers/internal/application_resolved.js.map +1 -1
  104. package/lib/programmers/internal/application_schema.js +39 -22
  105. package/lib/programmers/internal/application_schema.js.map +1 -1
  106. package/lib/programmers/internal/application_string.js +56 -22
  107. package/lib/programmers/internal/application_string.js.map +1 -1
  108. package/lib/programmers/internal/application_tuple.js +10 -9
  109. package/lib/programmers/internal/application_tuple.js.map +1 -1
  110. package/lib/programmers/internal/check_array_length.js +25 -25
  111. package/lib/programmers/internal/check_array_length.js.map +1 -1
  112. package/lib/programmers/internal/check_bigint.js +20 -109
  113. package/lib/programmers/internal/check_bigint.js.map +1 -1
  114. package/lib/programmers/internal/check_dynamic_properties.js +1 -1
  115. package/lib/programmers/internal/check_dynamic_properties.js.map +1 -1
  116. package/lib/programmers/internal/check_number.js +57 -147
  117. package/lib/programmers/internal/check_number.js.map +1 -1
  118. package/lib/programmers/internal/check_string.js +21 -33
  119. package/lib/programmers/internal/check_string.js.map +1 -1
  120. package/lib/programmers/internal/check_template.js +31 -49
  121. package/lib/programmers/internal/check_template.js.map +1 -1
  122. package/lib/programmers/internal/check_union_array_like.js +7 -6
  123. package/lib/programmers/internal/check_union_array_like.js.map +1 -1
  124. package/lib/programmers/internal/feature_object_entries.js +1 -1
  125. package/lib/programmers/internal/feature_object_entries.js.map +1 -1
  126. package/lib/programmers/internal/metadata_to_pattern.js +4 -4
  127. package/lib/programmers/internal/metadata_to_pattern.js.map +1 -1
  128. package/lib/programmers/internal/random_custom.js +2 -2
  129. package/lib/programmers/internal/random_custom.js.map +1 -1
  130. package/lib/programmers/internal/stringify_dynamic_properties.js +2 -1
  131. package/lib/programmers/internal/stringify_dynamic_properties.js.map +1 -1
  132. package/lib/programmers/internal/wrap_metadata_rest_tuple.js +9 -5
  133. package/lib/programmers/internal/wrap_metadata_rest_tuple.js.map +1 -1
  134. package/lib/programmers/json/JsonStringifyProgrammer.js +43 -32
  135. package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
  136. package/lib/programmers/misc/MiscCloneProgrammer.js +21 -17
  137. package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
  138. package/lib/programmers/{IsPruneProgrammer.d.ts → misc/MiscIsPruneProgrammer.d.ts} +2 -2
  139. package/lib/programmers/{IsPruneProgrammer.js → misc/MiscIsPruneProgrammer.js} +11 -11
  140. package/lib/programmers/misc/MiscIsPruneProgrammer.js.map +1 -0
  141. package/lib/programmers/misc/MiscLiteralsProgrammer.js +2 -2
  142. package/lib/programmers/misc/MiscLiteralsProgrammer.js.map +1 -1
  143. package/lib/programmers/misc/MiscPruneProgrammer.js +21 -17
  144. package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
  145. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js +29 -49
  146. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js.map +1 -1
  147. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js +138 -65
  148. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js.map +1 -1
  149. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js +59 -85
  150. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js.map +1 -1
  151. package/lib/schemas/json/IJsonSchema.d.ts +10 -38
  152. package/lib/schemas/metadata/IMetadata.d.ts +11 -4
  153. package/lib/schemas/metadata/IMetadataAlias.d.ts +0 -2
  154. package/lib/schemas/metadata/IMetadataArray.d.ts +4 -6
  155. package/lib/schemas/metadata/IMetadataArrayType.d.ts +8 -0
  156. package/lib/{CustomValidatorMap.js → schemas/metadata/IMetadataArrayType.js} +1 -1
  157. package/lib/schemas/metadata/IMetadataArrayType.js.map +1 -0
  158. package/lib/schemas/metadata/IMetadataAtomic.d.ts +5 -0
  159. package/lib/schemas/metadata/IMetadataAtomic.js +3 -0
  160. package/lib/schemas/metadata/IMetadataAtomic.js.map +1 -0
  161. package/lib/schemas/metadata/IMetadataCollection.d.ts +4 -4
  162. package/lib/schemas/metadata/IMetadataProperty.d.ts +0 -2
  163. package/lib/schemas/metadata/IMetadataTuple.d.ts +4 -6
  164. package/lib/schemas/metadata/IMetadataTupleType.d.ts +8 -0
  165. package/lib/schemas/metadata/IMetadataTupleType.js +3 -0
  166. package/lib/schemas/metadata/IMetadataTupleType.js.map +1 -0
  167. package/lib/schemas/metadata/IMetadataTypeTag.d.ts +8 -0
  168. package/lib/schemas/metadata/IMetadataTypeTag.js +3 -0
  169. package/lib/schemas/metadata/IMetadataTypeTag.js.map +1 -0
  170. package/lib/schemas/metadata/Metadata.d.ts +2 -2
  171. package/lib/schemas/metadata/Metadata.js +219 -159
  172. package/lib/schemas/metadata/Metadata.js.map +1 -1
  173. package/lib/schemas/metadata/MetadataAlias.d.ts +0 -2
  174. package/lib/schemas/metadata/MetadataAlias.js +0 -3
  175. package/lib/schemas/metadata/MetadataAlias.js.map +1 -1
  176. package/lib/schemas/metadata/MetadataArray.d.ts +8 -6
  177. package/lib/schemas/metadata/MetadataArray.js +48 -19
  178. package/lib/schemas/metadata/MetadataArray.js.map +1 -1
  179. package/lib/schemas/metadata/MetadataArrayType.d.ts +14 -0
  180. package/lib/schemas/metadata/MetadataArrayType.js +36 -0
  181. package/lib/schemas/metadata/MetadataArrayType.js.map +1 -0
  182. package/lib/schemas/metadata/MetadataAtomic.d.ts +9 -0
  183. package/lib/schemas/metadata/MetadataAtomic.js +59 -0
  184. package/lib/schemas/metadata/MetadataAtomic.js.map +1 -0
  185. package/lib/schemas/metadata/MetadataProperty.d.ts +0 -2
  186. package/lib/schemas/metadata/MetadataProperty.js +0 -3
  187. package/lib/schemas/metadata/MetadataProperty.js.map +1 -1
  188. package/lib/schemas/metadata/MetadataTuple.d.ts +8 -8
  189. package/lib/schemas/metadata/MetadataTuple.js +4 -19
  190. package/lib/schemas/metadata/MetadataTuple.js.map +1 -1
  191. package/lib/schemas/metadata/MetadataTupleType.d.ts +13 -0
  192. package/lib/schemas/metadata/MetadataTupleType.js +40 -0
  193. package/lib/schemas/metadata/MetadataTupleType.js.map +1 -0
  194. package/lib/tags/ExclusiveMaximum.d.ts +10 -0
  195. package/lib/tags/ExclusiveMaximum.js +3 -0
  196. package/lib/tags/ExclusiveMaximum.js.map +1 -0
  197. package/lib/tags/ExclusiveMinimum.d.ts +10 -0
  198. package/lib/tags/ExclusiveMinimum.js +3 -0
  199. package/lib/tags/ExclusiveMinimum.js.map +1 -0
  200. package/lib/tags/Format.d.ts +8 -0
  201. package/lib/{schemas/metadata/ICommentTag.js → tags/Format.js} +1 -1
  202. package/lib/tags/Format.js.map +1 -0
  203. package/lib/tags/MaxItems.d.ts +8 -0
  204. package/lib/{schemas/metadata/IMetadataTag.js → tags/MaxItems.js} +1 -1
  205. package/lib/tags/MaxItems.js.map +1 -0
  206. package/lib/tags/MaxLength.d.ts +8 -0
  207. package/lib/tags/MaxLength.js +3 -0
  208. package/lib/tags/MaxLength.js.map +1 -0
  209. package/lib/tags/Maximum.d.ts +10 -0
  210. package/lib/tags/Maximum.js +3 -0
  211. package/lib/tags/Maximum.js.map +1 -0
  212. package/lib/tags/MinItems.d.ts +8 -0
  213. package/lib/tags/MinItems.js +3 -0
  214. package/lib/tags/MinItems.js.map +1 -0
  215. package/lib/tags/MinLength.d.ts +8 -0
  216. package/lib/tags/MinLength.js +3 -0
  217. package/lib/tags/MinLength.js.map +1 -0
  218. package/lib/tags/Minimum.d.ts +10 -0
  219. package/lib/tags/Minimum.js +3 -0
  220. package/lib/tags/Minimum.js.map +1 -0
  221. package/lib/tags/MultipleOf.d.ts +10 -0
  222. package/lib/tags/MultipleOf.js +3 -0
  223. package/lib/tags/MultipleOf.js.map +1 -0
  224. package/lib/tags/Pattern.d.ts +7 -0
  225. package/lib/tags/Pattern.js +3 -0
  226. package/lib/tags/Pattern.js.map +1 -0
  227. package/lib/tags/TagBase.d.ts +14 -0
  228. package/lib/tags/TagBase.js +3 -0
  229. package/lib/tags/TagBase.js.map +1 -0
  230. package/lib/tags/Type.d.ts +14 -0
  231. package/lib/tags/Type.js +3 -0
  232. package/lib/tags/Type.js.map +1 -0
  233. package/lib/tags/index.d.ts +13 -0
  234. package/lib/tags/index.js +30 -0
  235. package/lib/tags/index.js.map +1 -0
  236. package/lib/transformers/FileTransformer.d.ts +1 -1
  237. package/lib/transformers/FileTransformer.js +15 -2
  238. package/lib/transformers/FileTransformer.js.map +1 -1
  239. package/lib/transformers/IProject.d.ts +1 -0
  240. package/lib/transformers/features/json/JsonApplicationTransformer.js +4 -2
  241. package/lib/transformers/features/json/JsonApplicationTransformer.js.map +1 -1
  242. package/lib/transformers/features/misc/MiscCreateIsPruneTransformer.js +2 -2
  243. package/lib/transformers/features/misc/MiscCreateIsPruneTransformer.js.map +1 -1
  244. package/lib/transformers/features/misc/MiscIsPruneTransformer.js +2 -2
  245. package/lib/transformers/features/misc/MiscIsPruneTransformer.js.map +1 -1
  246. package/lib/typings/ProtobufAtomic.d.ts +5 -0
  247. package/lib/typings/ProtobufAtomic.js +3 -0
  248. package/lib/typings/ProtobufAtomic.js.map +1 -0
  249. package/package.json +2 -2
  250. package/src/IRandomGenerator.ts +4 -3
  251. package/src/factories/ExpressionFactory.ts +46 -2
  252. package/src/factories/IdentifierFactory.ts +15 -0
  253. package/src/factories/LiteralFactory.ts +10 -3
  254. package/src/factories/MetadataCollection.ts +18 -13
  255. package/src/factories/MetadataCommentTagFactory.ts +583 -0
  256. package/src/factories/MetadataTypeTagFactory.ts +263 -0
  257. package/src/factories/NumericRangeFactory.ts +33 -0
  258. package/src/factories/ProtobufFactory.ts +34 -18
  259. package/src/factories/internal/metadata/emend_metadata_atomics.ts +12 -5
  260. package/src/factories/internal/metadata/emplace_metadata_alias.ts +0 -6
  261. package/src/factories/internal/metadata/{emplace_metadata_array.ts → emplace_metadata_array_type.ts} +3 -3
  262. package/src/factories/internal/metadata/emplace_metadata_object.ts +0 -1
  263. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +2 -2
  264. package/src/factories/internal/metadata/iterate_metadata_array.ts +13 -5
  265. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +7 -4
  266. package/src/factories/internal/metadata/iterate_metadata_collection.ts +23 -16
  267. package/src/factories/internal/metadata/{iterate_metadata_tag.ts → iterate_metadata_comment_tags.ts} +4 -8
  268. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +113 -16
  269. package/src/factories/internal/metadata/iterate_metadata_object.ts +10 -10
  270. package/src/factories/internal/metadata/iterate_metadata_sort.ts +2 -2
  271. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +12 -4
  272. package/src/functional/$any.ts +3 -1
  273. package/src/functional/$clone.ts +4 -0
  274. package/src/functional/Namespace.ts +0 -16
  275. package/src/module.ts +2 -55
  276. package/src/programmers/AssertProgrammer.ts +57 -21
  277. package/src/programmers/CheckerProgrammer.ts +81 -123
  278. package/src/programmers/FeatureProgrammer.ts +9 -31
  279. package/src/programmers/IsProgrammer.ts +53 -42
  280. package/src/programmers/RandomProgrammer.ts +242 -239
  281. package/src/programmers/ValidateProgrammer.ts +60 -21
  282. package/src/programmers/helpers/AtomicPredicator.ts +2 -2
  283. package/src/programmers/helpers/CloneJoiner.ts +57 -20
  284. package/src/programmers/helpers/ICheckEntry.ts +4 -3
  285. package/src/programmers/helpers/ProtobufUtil.ts +113 -17
  286. package/src/programmers/helpers/RandomJoiner.ts +11 -33
  287. package/src/programmers/helpers/RandomRanger.ts +16 -51
  288. package/src/programmers/helpers/UnionExplorer.ts +46 -51
  289. package/src/programmers/internal/application_alias.ts +0 -1
  290. package/src/programmers/internal/application_array.ts +33 -10
  291. package/src/programmers/internal/application_default_string.ts +6 -2
  292. package/src/programmers/internal/application_number.ts +76 -70
  293. package/src/programmers/internal/application_object.ts +0 -3
  294. package/src/programmers/internal/application_resolved.ts +2 -2
  295. package/src/programmers/internal/application_schema.ts +38 -20
  296. package/src/programmers/internal/application_string.ts +33 -27
  297. package/src/programmers/internal/application_tuple.ts +12 -11
  298. package/src/programmers/internal/check_array_length.ts +34 -28
  299. package/src/programmers/internal/check_bigint.ts +26 -91
  300. package/src/programmers/internal/check_dynamic_properties.ts +1 -2
  301. package/src/programmers/internal/check_number.ts +83 -236
  302. package/src/programmers/internal/check_string.ts +37 -17
  303. package/src/programmers/internal/check_template.ts +17 -12
  304. package/src/programmers/internal/check_union_array_like.ts +4 -18
  305. package/src/programmers/internal/feature_object_entries.ts +12 -18
  306. package/src/programmers/internal/metadata_to_pattern.ts +4 -4
  307. package/src/programmers/internal/random_custom.ts +3 -3
  308. package/src/programmers/internal/stringify_dynamic_properties.ts +1 -1
  309. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +9 -5
  310. package/src/programmers/json/JsonStringifyProgrammer.ts +46 -41
  311. package/src/programmers/misc/MiscCloneProgrammer.ts +23 -27
  312. package/src/programmers/{IsPruneProgrammer.ts → misc/MiscIsPruneProgrammer.ts} +7 -7
  313. package/src/programmers/misc/MiscLiteralsProgrammer.ts +2 -2
  314. package/src/programmers/misc/MiscPruneProgrammer.ts +24 -24
  315. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +40 -74
  316. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +154 -99
  317. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +6 -36
  318. package/src/schemas/json/IJsonSchema.ts +11 -38
  319. package/src/schemas/metadata/IMetadata.ts +11 -5
  320. package/src/schemas/metadata/IMetadataAlias.ts +0 -2
  321. package/src/schemas/metadata/IMetadataArray.ts +4 -7
  322. package/src/schemas/metadata/IMetadataArrayType.ts +10 -0
  323. package/src/schemas/metadata/IMetadataAtomic.ts +6 -0
  324. package/src/schemas/metadata/IMetadataCollection.ts +4 -4
  325. package/src/schemas/metadata/IMetadataDictionary.ts +4 -4
  326. package/src/schemas/metadata/IMetadataProperty.ts +0 -2
  327. package/src/schemas/metadata/IMetadataTuple.ts +4 -7
  328. package/src/schemas/metadata/IMetadataTupleType.ts +10 -0
  329. package/src/schemas/metadata/IMetadataTypeTag.ts +8 -0
  330. package/src/schemas/metadata/Metadata.ts +121 -70
  331. package/src/schemas/metadata/MetadataAlias.ts +0 -5
  332. package/src/schemas/metadata/MetadataArray.ts +28 -34
  333. package/src/schemas/metadata/MetadataArrayType.ts +57 -0
  334. package/src/schemas/metadata/MetadataAtomic.ts +42 -0
  335. package/src/schemas/metadata/MetadataProperty.ts +0 -5
  336. package/src/schemas/metadata/MetadataTuple.ts +9 -35
  337. package/src/schemas/metadata/MetadataTupleType.ts +67 -0
  338. package/src/tags/ExclusiveMaximum.ts +13 -0
  339. package/src/tags/ExclusiveMinimum.ts +13 -0
  340. package/src/tags/Format.ts +30 -0
  341. package/src/tags/MaxItems.ts +9 -0
  342. package/src/tags/MaxLength.ts +9 -0
  343. package/src/tags/Maximum.ts +13 -0
  344. package/src/tags/MinItems.ts +9 -0
  345. package/src/tags/MinLength.ts +9 -0
  346. package/src/tags/Minimum.ts +13 -0
  347. package/src/tags/MultipleOf.ts +15 -0
  348. package/src/tags/Pattern.ts +8 -0
  349. package/src/tags/TagBase.ts +22 -0
  350. package/src/tags/Type.ts +27 -0
  351. package/src/tags/index.ts +13 -0
  352. package/src/transformers/FileTransformer.ts +6 -6
  353. package/src/transformers/IProject.ts +1 -0
  354. package/src/transformers/features/json/JsonApplicationTransformer.ts +3 -2
  355. package/src/transformers/features/misc/MiscCreateIsPruneTransformer.ts +2 -2
  356. package/src/transformers/features/misc/MiscIsPruneTransformer.ts +2 -2
  357. package/src/typings/Atomic.ts +1 -0
  358. package/src/typings/ProtobufAtomic.ts +19 -0
  359. package/lib/CustomValidatorMap.d.ts +0 -110
  360. package/lib/CustomValidatorMap.js.map +0 -1
  361. package/lib/factories/MetadataTagFactory.d.ts +0 -6
  362. package/lib/factories/MetadataTagFactory.js +0 -310
  363. package/lib/factories/MetadataTagFactory.js.map +0 -1
  364. package/lib/factories/internal/metadata/emplace_metadata_array.d.ts +0 -5
  365. package/lib/factories/internal/metadata/emplace_metadata_array.js.map +0 -1
  366. package/lib/factories/internal/metadata/iterate_metadata_tag.d.ts +0 -2
  367. package/lib/factories/internal/metadata/iterate_metadata_tag.js.map +0 -1
  368. package/lib/functional/$is_custom.d.ts +0 -2
  369. package/lib/functional/$is_custom.js +0 -13
  370. package/lib/functional/$is_custom.js.map +0 -1
  371. package/lib/functional/$is_date.d.ts +0 -1
  372. package/lib/functional/$is_date.js +0 -7
  373. package/lib/functional/$is_date.js.map +0 -1
  374. package/lib/functional/$is_datetime.d.ts +0 -1
  375. package/lib/functional/$is_datetime.js +0 -8
  376. package/lib/functional/$is_datetime.js.map +0 -1
  377. package/lib/functional/$is_email.d.ts +0 -1
  378. package/lib/functional/$is_email.js +0 -7
  379. package/lib/functional/$is_email.js.map +0 -1
  380. package/lib/functional/$is_ipv4.d.ts +0 -1
  381. package/lib/functional/$is_ipv4.js +0 -7
  382. package/lib/functional/$is_ipv4.js.map +0 -1
  383. package/lib/functional/$is_ipv6.d.ts +0 -1
  384. package/lib/functional/$is_ipv6.js +0 -7
  385. package/lib/functional/$is_ipv6.js.map +0 -1
  386. package/lib/functional/$is_url.d.ts +0 -1
  387. package/lib/functional/$is_url.js +0 -7
  388. package/lib/functional/$is_url.js.map +0 -1
  389. package/lib/functional/$is_uuid.d.ts +0 -1
  390. package/lib/functional/$is_uuid.js +0 -7
  391. package/lib/functional/$is_uuid.js.map +0 -1
  392. package/lib/programmers/IsPruneProgrammer.js.map +0 -1
  393. package/lib/programmers/internal/check_array.js +0 -44
  394. package/lib/programmers/internal/check_array.js.map +0 -1
  395. package/lib/programmers/internal/check_custom.d.ts +0 -1
  396. package/lib/programmers/internal/check_custom.js +0 -30
  397. package/lib/programmers/internal/check_custom.js.map +0 -1
  398. package/lib/programmers/internal/check_string_tags.d.ts +0 -1
  399. package/lib/programmers/internal/check_string_tags.js +0 -89
  400. package/lib/programmers/internal/check_string_tags.js.map +0 -1
  401. package/lib/programmers/internal/get_comment_tags.d.ts +0 -1
  402. package/lib/programmers/internal/get_comment_tags.js +0 -25
  403. package/lib/programmers/internal/get_comment_tags.js.map +0 -1
  404. package/lib/schemas/metadata/ICommentTag.d.ts +0 -4
  405. package/lib/schemas/metadata/ICommentTag.js.map +0 -1
  406. package/lib/schemas/metadata/IMetadataTag.d.ts +0 -63
  407. package/lib/schemas/metadata/IMetadataTag.js.map +0 -1
  408. package/src/CustomValidatorMap.ts +0 -126
  409. package/src/factories/MetadataTagFactory.ts +0 -364
  410. package/src/functional/$is_custom.ts +0 -14
  411. package/src/functional/$is_date.ts +0 -3
  412. package/src/functional/$is_datetime.ts +0 -2
  413. package/src/functional/$is_email.ts +0 -4
  414. package/src/functional/$is_ipv4.ts +0 -4
  415. package/src/functional/$is_ipv6.ts +0 -4
  416. package/src/functional/$is_url.ts +0 -4
  417. package/src/functional/$is_uuid.ts +0 -4
  418. package/src/programmers/internal/check_array.ts +0 -30
  419. package/src/programmers/internal/check_custom.ts +0 -31
  420. package/src/programmers/internal/check_string_tags.ts +0 -67
  421. package/src/programmers/internal/get_comment_tags.ts +0 -23
  422. package/src/schemas/metadata/ICommentTag.ts +0 -4
  423. package/src/schemas/metadata/IMetadataTag.ts +0 -112
  424. /package/lib/{programmers/internal/check_array.d.ts → factories/MetadataCommentTagFactory.d.ts} +0 -0
@@ -7,11 +7,10 @@ import { MetadataFactory } from "../../factories/MetadataFactory";
7
7
  import { StatementFactory } from "../../factories/StatementFactory";
8
8
  import { TypeFactory } from "../../factories/TypeFactory";
9
9
 
10
- import { IJsDocTagInfo } from "../../schemas/metadata/IJsDocTagInfo";
11
- import { IMetadataTag } from "../../schemas/metadata/IMetadataTag";
12
10
  import { Metadata } from "../../schemas/metadata/Metadata";
13
11
  import { MetadataArray } from "../../schemas/metadata/MetadataArray";
14
12
  import { MetadataTuple } from "../../schemas/metadata/MetadataTuple";
13
+ import { MetadataTupleType } from "../../schemas/metadata/MetadataTupleType";
15
14
 
16
15
  import { IProject } from "../../transformers/IProject";
17
16
 
@@ -47,7 +46,7 @@ export namespace MiscCloneProgrammer {
47
46
  collection
48
47
  .arrays()
49
48
  .filter((a) => a.recursive)
50
- .map((array, i) =>
49
+ .map((type, i) =>
51
50
  StatementFactory.constant(
52
51
  `${config.prefix}a${i}`,
53
52
  ts.factory.createArrowFunction(
@@ -60,7 +59,10 @@ export namespace MiscCloneProgrammer {
60
59
  undefined,
61
60
  decode_array_inline(config)(importer)(
62
61
  ts.factory.createIdentifier("input"),
63
- array,
62
+ MetadataArray.create({
63
+ type,
64
+ tags: [],
65
+ }),
64
66
  {
65
67
  tracable: config.trace,
66
68
  source: "function",
@@ -120,8 +122,8 @@ export namespace MiscCloneProgrammer {
120
122
  // ANY TYPE
121
123
  if (
122
124
  meta.any ||
123
- meta.arrays.some((a) => a.value.any) ||
124
- meta.tuples.some((t) => t.elements.every((e) => e.any))
125
+ meta.arrays.some((a) => a.type.value.any) ||
126
+ meta.tuples.some((t) => t.type.elements.every((e) => e.any))
125
127
  )
126
128
  return ts.factory.createCallExpression(
127
129
  importer.use("any"),
@@ -152,8 +154,6 @@ export namespace MiscCloneProgrammer {
152
154
  return partial;
153
155
  })(),
154
156
  explore,
155
- [],
156
- [],
157
157
  ),
158
158
  value: () =>
159
159
  decode_tuple(project)(config)(importer)(
@@ -268,10 +268,12 @@ export namespace MiscCloneProgrammer {
268
268
  array: MetadataArray,
269
269
  explore: FeatureProgrammer.IExplore,
270
270
  ) =>
271
- array.recursive
271
+ array.type.recursive
272
272
  ? ts.factory.createCallExpression(
273
273
  ts.factory.createIdentifier(
274
- importer.useLocal(`${config.prefix}a${array.index}`),
274
+ importer.useLocal(
275
+ `${config.prefix}a${array.type.index}`,
276
+ ),
275
277
  ),
276
278
  undefined,
277
279
  FeatureProgrammer.argumentsArray(config)({
@@ -294,8 +296,6 @@ export namespace MiscCloneProgrammer {
294
296
  input,
295
297
  array,
296
298
  explore,
297
- [],
298
- [],
299
299
  );
300
300
 
301
301
  const decode_tuple =
@@ -307,10 +307,12 @@ export namespace MiscCloneProgrammer {
307
307
  tuple: MetadataTuple,
308
308
  explore: FeatureProgrammer.IExplore,
309
309
  ): ts.Expression =>
310
- tuple.recursive
310
+ tuple.type.recursive
311
311
  ? ts.factory.createCallExpression(
312
312
  ts.factory.createIdentifier(
313
- importer.useLocal(`${config.prefix}t${tuple.index}`),
313
+ importer.useLocal(
314
+ `${config.prefix}t${tuple.type.index}`,
315
+ ),
314
316
  ),
315
317
  undefined,
316
318
  FeatureProgrammer.argumentsArray(config)({
@@ -320,7 +322,7 @@ export namespace MiscCloneProgrammer {
320
322
  )
321
323
  : decode_tuple_inline(project)(config)(importer)(
322
324
  input,
323
- tuple,
325
+ tuple.type,
324
326
  explore,
325
327
  );
326
328
 
@@ -330,7 +332,7 @@ export namespace MiscCloneProgrammer {
330
332
  (importer: FunctionImporter) =>
331
333
  (
332
334
  input: ts.Expression,
333
- tuple: MetadataTuple,
335
+ tuple: MetadataTupleType,
334
336
  explore: FeatureProgrammer.IExplore,
335
337
  ): ts.Expression => {
336
338
  const children: ts.Expression[] = tuple.elements
@@ -495,7 +497,7 @@ export namespace MiscCloneProgrammer {
495
497
  success: ts.factory.createTrue(),
496
498
  failure: (input, expected) =>
497
499
  create_throw_error(importer)(expected)(input),
498
- })([])(input, sets, explore, [], []),
500
+ })([])(input, sets, explore),
499
501
  undefined,
500
502
  undefined,
501
503
  );
@@ -524,8 +526,6 @@ export namespace MiscCloneProgrammer {
524
526
  ...explore,
525
527
  postfix: `${explore.postfix}[0]`,
526
528
  },
527
- [],
528
- [],
529
529
  ),
530
530
  func(
531
531
  ts.factory.createElementAccessExpression(
@@ -537,8 +537,6 @@ export namespace MiscCloneProgrammer {
537
537
  ...explore,
538
538
  postfix: `${explore.postfix}[1]`,
539
539
  },
540
- [],
541
- [],
542
540
  ),
543
541
  );
544
542
  },
@@ -568,7 +566,7 @@ export namespace MiscCloneProgrammer {
568
566
  success: ts.factory.createTrue(),
569
567
  failure: (input, expected) =>
570
568
  create_throw_error(importer)(expected)(input),
571
- })([])(input, maps, explore, [], []),
569
+ })([])(input, maps, explore),
572
570
  undefined,
573
571
  undefined,
574
572
  );
@@ -627,8 +625,6 @@ export namespace MiscCloneProgrammer {
627
625
  input: ts.Expression,
628
626
  elements: T[],
629
627
  explore: FeatureProgrammer.IExplore,
630
- tags: IMetadataTag[],
631
- jsDocTags: IJsDocTagInfo[],
632
628
  ) => ts.ArrowFunction,
633
629
  ) =>
634
630
  (
@@ -640,8 +636,8 @@ export namespace MiscCloneProgrammer {
640
636
  (parameters: ts.ParameterDeclaration[]) =>
641
637
  (explore: FeatureProgrammer.IExplore) =>
642
638
  (input: ts.Expression): ts.ArrowFunction =>
643
- factory(parameters)(input, elements, explore, [], []);
644
- if (elements.every((e) => e.recursive === false))
639
+ factory(parameters)(input, elements, explore);
640
+ if (elements.every((e) => e.type.recursive === false))
645
641
  ts.factory.createCallExpression(
646
642
  arrow([])(explore)(input),
647
643
  undefined,
@@ -657,7 +653,7 @@ export namespace MiscCloneProgrammer {
657
653
  ts.factory.createIdentifier(
658
654
  importer.emplaceUnion(
659
655
  config.prefix,
660
- elements.map((e) => e.name).join(" | "),
656
+ elements.map((e) => e.type.name).join(" | "),
661
657
  () =>
662
658
  arrow(
663
659
  FeatureProgrammer.parameterDeclarations(config)(
@@ -1,15 +1,15 @@
1
1
  import ts from "typescript";
2
2
 
3
- import { IdentifierFactory } from "../factories/IdentifierFactory";
4
- import { StatementFactory } from "../factories/StatementFactory";
5
- import { TypeFactory } from "../factories/TypeFactory";
3
+ import { IdentifierFactory } from "../../factories/IdentifierFactory";
4
+ import { StatementFactory } from "../../factories/StatementFactory";
5
+ import { TypeFactory } from "../../factories/TypeFactory";
6
6
 
7
- import { IProject } from "../transformers/IProject";
7
+ import { IProject } from "../../transformers/IProject";
8
8
 
9
- import { IsProgrammer } from "./IsProgrammer";
10
- import { MiscPruneProgrammer } from "./misc/MiscPruneProgrammer";
9
+ import { IsProgrammer } from "../IsProgrammer";
10
+ import { MiscPruneProgrammer } from "./MiscPruneProgrammer";
11
11
 
12
- export namespace IsPruneProgrammer {
12
+ export namespace MiscIsPruneProgrammer {
13
13
  export const write =
14
14
  (project: IProject) =>
15
15
  (modulo: ts.LeftHandSideExpression) =>
@@ -23,7 +23,7 @@ export namespace MiscLiteralsProgrammer {
23
23
  meta.constants
24
24
  .map((c) => c.values.length)
25
25
  .reduce((a, b) => a + b, 0) +
26
- meta.atomics.filter((type) => type === "boolean").length;
26
+ meta.atomics.filter((a) => a.type === "boolean").length;
27
27
  if (0 === length) throw new Error(ErrorMessages.NO);
28
28
  else if (meta.size() !== length)
29
29
  throw new Error(ErrorMessages.ONLY);
@@ -31,7 +31,7 @@ export namespace MiscLiteralsProgrammer {
31
31
  })(new MetadataCollection())(type);
32
32
  const values: Set<Atomic.Type | null> = new Set([
33
33
  ...ArrayUtil.flat<Atomic.Type>(meta.constants.map((c) => c.values)),
34
- ...(meta.atomics.filter((type) => type === "boolean").length
34
+ ...(meta.atomics.filter((a) => a.type === "boolean").length
35
35
  ? [true, false]
36
36
  : []),
37
37
  ...(meta.nullable ? [null] : []),
@@ -7,11 +7,10 @@ import { MetadataFactory } from "../../factories/MetadataFactory";
7
7
  import { StatementFactory } from "../../factories/StatementFactory";
8
8
  import { TypeFactory } from "../../factories/TypeFactory";
9
9
 
10
- import { IJsDocTagInfo } from "../../schemas/metadata/IJsDocTagInfo";
11
- import { IMetadataTag } from "../../schemas/metadata/IMetadataTag";
12
10
  import { Metadata } from "../../schemas/metadata/Metadata";
13
11
  import { MetadataArray } from "../../schemas/metadata/MetadataArray";
14
12
  import { MetadataTuple } from "../../schemas/metadata/MetadataTuple";
13
+ import { MetadataTupleType } from "../../schemas/metadata/MetadataTupleType";
15
14
 
16
15
  import { IProject } from "../../transformers/IProject";
17
16
 
@@ -47,7 +46,7 @@ export namespace MiscPruneProgrammer {
47
46
  collection
48
47
  .arrays()
49
48
  .filter((a) => a.recursive)
50
- .map((array, i) =>
49
+ .map((type, i) =>
51
50
  StatementFactory.constant(
52
51
  `${config.prefix}a${i}`,
53
52
  ts.factory.createArrowFunction(
@@ -60,7 +59,10 @@ export namespace MiscPruneProgrammer {
60
59
  undefined,
61
60
  decode_array_inline(config)(importer)(
62
61
  ts.factory.createIdentifier("input"),
63
- array,
62
+ MetadataArray.create({
63
+ type,
64
+ tags: [],
65
+ }),
64
66
  {
65
67
  tracable: config.trace,
66
68
  source: "function",
@@ -130,8 +132,8 @@ export namespace MiscPruneProgrammer {
130
132
  // LIST UP UNION TYPES
131
133
  //----
132
134
  // TUPLES
133
- for (const tuple of meta.tuples.filter((t) =>
134
- t.elements.some((e) => filter(e.rest ?? e)),
135
+ for (const tuple of meta.tuples.filter((tuple) =>
136
+ tuple.type.elements.some((e) => filter(e.rest ?? e)),
135
137
  ))
136
138
  unions.push({
137
139
  type: "tuple",
@@ -144,8 +146,6 @@ export namespace MiscPruneProgrammer {
144
146
  return partial;
145
147
  })(),
146
148
  explore,
147
- [],
148
- [],
149
149
  ),
150
150
  value: () =>
151
151
  decode_tuple(project)(config)(importer)(
@@ -156,7 +156,7 @@ export namespace MiscPruneProgrammer {
156
156
  });
157
157
 
158
158
  // ARRAYS
159
- if (meta.arrays.filter((a) => filter(a.value)).length)
159
+ if (meta.arrays.filter((a) => filter(a.type.value)).length)
160
160
  unions.push({
161
161
  type: "array",
162
162
  is: () => ExpressionFactory.isArray(input),
@@ -239,10 +239,12 @@ export namespace MiscPruneProgrammer {
239
239
  array: MetadataArray,
240
240
  explore: FeatureProgrammer.IExplore,
241
241
  ) =>
242
- array.recursive
242
+ array.type.recursive
243
243
  ? ts.factory.createCallExpression(
244
244
  ts.factory.createIdentifier(
245
- importer.useLocal(`${config.prefix}a${array.index}`),
245
+ importer.useLocal(
246
+ `${config.prefix}a${array.type.index}`,
247
+ ),
246
248
  ),
247
249
  undefined,
248
250
  FeatureProgrammer.argumentsArray(config)({
@@ -265,8 +267,6 @@ export namespace MiscPruneProgrammer {
265
267
  input,
266
268
  array,
267
269
  explore,
268
- [],
269
- [],
270
270
  );
271
271
 
272
272
  const decode_tuple =
@@ -278,10 +278,12 @@ export namespace MiscPruneProgrammer {
278
278
  tuple: MetadataTuple,
279
279
  explore: FeatureProgrammer.IExplore,
280
280
  ): ts.Expression | ts.Block =>
281
- tuple.recursive
281
+ tuple.type.recursive
282
282
  ? ts.factory.createCallExpression(
283
283
  ts.factory.createIdentifier(
284
- importer.useLocal(`${config.prefix}t${tuple.index}`),
284
+ importer.useLocal(
285
+ `${config.prefix}t${tuple.type.index}`,
286
+ ),
285
287
  ),
286
288
  undefined,
287
289
  FeatureProgrammer.argumentsArray(config)({
@@ -291,7 +293,7 @@ export namespace MiscPruneProgrammer {
291
293
  )
292
294
  : decode_tuple_inline(project)(config)(importer)(
293
295
  input,
294
- tuple,
296
+ tuple.type,
295
297
  explore,
296
298
  );
297
299
 
@@ -301,7 +303,7 @@ export namespace MiscPruneProgrammer {
301
303
  (importer: FunctionImporter) =>
302
304
  (
303
305
  input: ts.Expression,
304
- tuple: MetadataTuple,
306
+ tuple: MetadataTupleType,
305
307
  explore: FeatureProgrammer.IExplore,
306
308
  ): ts.Block => {
307
309
  const children: ts.ConciseBody[] = tuple.elements
@@ -404,8 +406,6 @@ export namespace MiscPruneProgrammer {
404
406
  input: ts.Expression,
405
407
  elements: T[],
406
408
  explore: FeatureProgrammer.IExplore,
407
- tags: IMetadataTag[],
408
- jsDocTags: IJsDocTagInfo[],
409
409
  ) => ts.ArrowFunction,
410
410
  ) =>
411
411
  (
@@ -417,8 +417,8 @@ export namespace MiscPruneProgrammer {
417
417
  (parameters: ts.ParameterDeclaration[]) =>
418
418
  (explore: FeatureProgrammer.IExplore) =>
419
419
  (input: ts.Expression): ts.ArrowFunction =>
420
- factory(parameters)(input, elements, explore, [], []);
421
- if (elements.every((e) => e.recursive === false))
420
+ factory(parameters)(input, elements, explore);
421
+ if (elements.every((e) => e.type.recursive === false))
422
422
  ts.factory.createCallExpression(
423
423
  arrow([])(explore)(input),
424
424
  undefined,
@@ -434,7 +434,7 @@ export namespace MiscPruneProgrammer {
434
434
  ts.factory.createIdentifier(
435
435
  importer.emplaceUnion(
436
436
  config.prefix,
437
- elements.map((e) => e.name).join(" | "),
437
+ elements.map((e) => e.type.name).join(" | "),
438
438
  () =>
439
439
  arrow(
440
440
  FeatureProgrammer.parameterDeclarations(config)(
@@ -456,9 +456,9 @@ export namespace MiscPruneProgrammer {
456
456
  meta.any === false &&
457
457
  (meta.objects.length !== 0 ||
458
458
  meta.tuples.some((t) =>
459
- t.elements.some((e) => filter(e.rest ?? e)),
459
+ t.type.elements.some((e) => filter(e.rest ?? e)),
460
460
  ) ||
461
- meta.arrays.some((e) => filter(e.value)));
461
+ meta.arrays.some((e) => filter(e.type.value)));
462
462
 
463
463
  /* -----------------------------------------------------------
464
464
  CONFIGURATIONS
@@ -8,7 +8,6 @@ import { ProtobufFactory } from "../../factories/ProtobufFactory";
8
8
  import { StatementFactory } from "../../factories/StatementFactory";
9
9
  import { TypeFactory } from "../../factories/TypeFactory";
10
10
 
11
- import { IMetadataTag } from "../../schemas/metadata/IMetadataTag";
12
11
  import { Metadata } from "../../schemas/metadata/Metadata";
13
12
  import { MetadataArray } from "../../schemas/metadata/MetadataArray";
14
13
  import { MetadataObject } from "../../schemas/metadata/MetadataObject";
@@ -16,7 +15,7 @@ import { MetadataProperty } from "../../schemas/metadata/MetadataProperty";
16
15
 
17
16
  import { IProject } from "../../transformers/IProject";
18
17
 
19
- import { Atomic } from "../../typings/Atomic";
18
+ import { ProtobufAtomic } from "../../typings/ProtobufAtomic";
20
19
 
21
20
  import { FunctionImporter } from "../helpers/FunctionImporeter";
22
21
  import { ProtobufUtil } from "../helpers/ProtobufUtil";
@@ -166,9 +165,8 @@ export namespace ProtobufDecodeProgrammer {
166
165
  ts.factory.createIdentifier(props.output),
167
166
  )(p.key.getSoleLiteral()!),
168
167
  p.value,
169
- p.tags,
170
168
  );
171
- i += p.value.binarySize();
169
+ i += ProtobufUtil.size(p.value);
172
170
  return clause;
173
171
  })
174
172
  .flat();
@@ -253,7 +251,7 @@ export namespace ProtobufDecodeProgrammer {
253
251
  undefined,
254
252
  [],
255
253
  )
256
- : value.atomics.some((str) => str === "string") ||
254
+ : value.atomics.some((a) => a.type === "string") ||
257
255
  value.constants.some(
258
256
  (c) =>
259
257
  c.type === "string" && c.values.some((v) => v === ""),
@@ -280,7 +278,6 @@ export namespace ProtobufDecodeProgrammer {
280
278
  (
281
279
  accessor: ts.ElementAccessExpression | ts.PropertyAccessExpression,
282
280
  meta: Metadata,
283
- tags: IMetadataTag[],
284
281
  ): ts.CaseClause[] => {
285
282
  const clauses: ts.CaseClause[] = [];
286
283
  const emplace =
@@ -320,20 +317,15 @@ export namespace ProtobufDecodeProgrammer {
320
317
 
321
318
  const required: boolean = meta.isRequired() && !meta.nullable;
322
319
  for (const atomic of ProtobufUtil.getAtomics(meta))
323
- emplace(atomic)(decode_atomic(atomic, tags));
320
+ emplace(atomic)(decode_atomic(meta)(atomic));
324
321
  if (meta.natives.length) emplace("bytes")(decode_bytes("bytes"));
325
322
  for (const array of meta.arrays)
326
- emplace(`Array<${array.value.getName()}>`)(
327
- decode_array(accessor, array, required, tags),
323
+ emplace(`Array<${array.type.value.getName()}>`)(
324
+ decode_array(accessor, array, required),
328
325
  );
329
326
  for (const map of meta.maps)
330
327
  emplace(`Map<string, ${map.value.getName()}>`)(
331
- decode_map(project)(importer)(
332
- accessor,
333
- map,
334
- required,
335
- tags,
336
- ),
328
+ decode_map(project)(importer)(accessor, map, required),
337
329
  );
338
330
  for (const obj of meta.objects)
339
331
  emplace(obj.name)(
@@ -348,49 +340,31 @@ export namespace ProtobufDecodeProgrammer {
348
340
  return clauses;
349
341
  };
350
342
 
351
- const decode_atomic = (
352
- atomic: Atomic.Literal,
353
- tags: IMetadataTag[],
354
- ): ts.Expression => {
355
- if (atomic === "string") return decode_bytes("string");
356
- const method =
357
- atomic === "bigint"
358
- ? tags.find((t) => t.kind === "type" && t.value === "uint64")
359
- ? "uint64"
360
- : "int64"
361
- : atomic === "number"
362
- ? (() => {
363
- const type = tags.find((t) => t.kind === "type");
364
- if (type === undefined) return "double";
365
- return type.value === "int" || type.value === "int32"
366
- ? "int32"
367
- : type.value === "uint" || type.value === "uint32"
368
- ? "uint32"
369
- : type.value === "int64"
370
- ? "int64"
371
- : type.value === "uint64"
372
- ? "uint64"
373
- : type.value === "float"
374
- ? "float"
375
- : "double";
376
- })()
377
- : "bool";
378
- const call = ts.factory.createCallExpression(
379
- IdentifierFactory.access(ts.factory.createIdentifier("reader"))(
380
- method,
381
- ),
382
- undefined,
383
- undefined,
384
- );
385
- return atomic === "number" &&
386
- (method === "int64" || method === "uint64")
387
- ? ts.factory.createCallExpression(
388
- ts.factory.createIdentifier("Number"),
389
- undefined,
390
- [call],
391
- )
392
- : call;
393
- };
343
+ const decode_atomic =
344
+ (meta: Metadata) =>
345
+ (atomic: ProtobufAtomic): ts.Expression => {
346
+ if (atomic === "string") return decode_bytes("string");
347
+
348
+ const call: ts.CallExpression = ts.factory.createCallExpression(
349
+ IdentifierFactory.access(ts.factory.createIdentifier("reader"))(
350
+ atomic,
351
+ ),
352
+ undefined,
353
+ undefined,
354
+ );
355
+ if (atomic !== "int64" && atomic !== "uint64") return call;
356
+
357
+ const isNumber: boolean = ProtobufUtil.getNumbers(meta).some(
358
+ (n) => n === atomic,
359
+ );
360
+ return isNumber
361
+ ? ts.factory.createCallExpression(
362
+ ts.factory.createIdentifier("Number"),
363
+ undefined,
364
+ [call],
365
+ )
366
+ : call;
367
+ };
394
368
 
395
369
  const decode_bytes = (method: "bytes" | "string"): ts.Expression =>
396
370
  ts.factory.createCallExpression(
@@ -405,7 +379,6 @@ export namespace ProtobufDecodeProgrammer {
405
379
  accessor: ts.ElementAccessExpression | ts.PropertyAccessExpression,
406
380
  array: MetadataArray,
407
381
  required: boolean,
408
- tags: IMetadataTag[],
409
382
  ): ts.Statement[] => {
410
383
  const statements: Array<ts.Expression | ts.Statement> = [];
411
384
  if (required === false)
@@ -421,13 +394,13 @@ export namespace ProtobufDecodeProgrammer {
421
394
  ),
422
395
  ),
423
396
  );
424
- const atomics = ProtobufUtil.getAtomics(array.value);
397
+ const atomics = ProtobufUtil.getAtomics(array.type.value);
425
398
  const decoder = atomics.length
426
- ? () => decode_atomic(atomics[0]!, tags)
427
- : array.value.natives.length
399
+ ? () => decode_atomic(array.type.value)(atomics[0]!)
400
+ : array.type.value.natives.length
428
401
  ? () => decode_bytes("bytes")
429
- : array.value.objects.length
430
- ? () => decode_regular_object(false)(array.value.objects[0]!)
402
+ : array.type.value.objects.length
403
+ ? () => decode_regular_object(false)(array.type.value.objects[0]!)
431
404
  : null;
432
405
  if (decoder === null) throw new Error("Never reach here.");
433
406
  else if (atomics.length && atomics[0] !== "string") {
@@ -556,7 +529,7 @@ export namespace ProtobufDecodeProgrammer {
556
529
  ts.factory.createToken(ts.SyntaxKind.EqualsToken),
557
530
  ts.factory.createIdentifier("entry.value"),
558
531
  ),
559
- })(top, required, top.tags);
532
+ })(top, required);
560
533
  };
561
534
 
562
535
  const decode_map =
@@ -566,7 +539,6 @@ export namespace ProtobufDecodeProgrammer {
566
539
  accessor: ts.ElementAccessExpression | ts.PropertyAccessExpression,
567
540
  map: Metadata.Entry,
568
541
  required: boolean,
569
- tags: IMetadataTag[],
570
542
  ): ts.Statement[] =>
571
543
  decode_entry(project)(importer)({
572
544
  initializer: () =>
@@ -593,7 +565,7 @@ export namespace ProtobufDecodeProgrammer {
593
565
  ts.factory.createIdentifier("entry.value"),
594
566
  ],
595
567
  ),
596
- })(map, required, tags);
568
+ })(map, required);
597
569
 
598
570
  const decode_entry =
599
571
  (project: IProject) =>
@@ -602,11 +574,7 @@ export namespace ProtobufDecodeProgrammer {
602
574
  initializer: () => ts.Expression;
603
575
  setter: () => ts.Expression;
604
576
  }) =>
605
- (
606
- map: Metadata.Entry,
607
- required: boolean,
608
- tags: IMetadataTag[],
609
- ): ts.Statement[] => {
577
+ (map: Metadata.Entry, required: boolean): ts.Statement[] => {
610
578
  const statements: ts.Statement[] = [
611
579
  ...(required
612
580
  ? []
@@ -646,14 +614,12 @@ export namespace ProtobufDecodeProgrammer {
646
614
  key: MetadataFactory.soleLiteral("key"),
647
615
  value: map.key,
648
616
  description: null,
649
- tags: [],
650
617
  jsDocTags: [],
651
618
  }),
652
619
  MetadataProperty.create({
653
620
  key: MetadataFactory.soleLiteral("value"),
654
621
  value: map.value,
655
622
  description: null,
656
- tags,
657
623
  jsDocTags: [],
658
624
  }),
659
625
  ]),