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

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 (316) hide show
  1. package/lib/factories/ExpressionFactory.d.ts +2 -0
  2. package/lib/factories/ExpressionFactory.js +24 -0
  3. package/lib/factories/ExpressionFactory.js.map +1 -1
  4. package/lib/factories/IdentifierFactory.d.ts +2 -1
  5. package/lib/factories/IdentifierFactory.js +11 -0
  6. package/lib/factories/IdentifierFactory.js.map +1 -1
  7. package/lib/factories/MetadataCollection.d.ts +7 -7
  8. package/lib/factories/MetadataCollection.js +4 -4
  9. package/lib/factories/MetadataCollection.js.map +1 -1
  10. package/lib/factories/MetadataTagFactory.d.ts +2 -2
  11. package/lib/factories/MetadataTagFactory.js +9 -7
  12. package/lib/factories/MetadataTagFactory.js.map +1 -1
  13. package/lib/factories/ProtobufFactory.js +9 -8
  14. package/lib/factories/ProtobufFactory.js.map +1 -1
  15. package/lib/factories/internal/metadata/emend_metadata_atomics.js +6 -6
  16. package/lib/factories/internal/metadata/emend_metadata_atomics.js.map +1 -1
  17. package/lib/factories/internal/metadata/emplace_metadata_array_type.d.ts +5 -0
  18. package/lib/factories/internal/metadata/{emplace_metadata_array.js → emplace_metadata_array_type.js} +4 -4
  19. package/lib/factories/internal/metadata/emplace_metadata_array_type.js.map +1 -0
  20. package/lib/factories/internal/metadata/emplace_metadata_tuple.d.ts +2 -2
  21. package/lib/factories/internal/metadata/iterate_metadata_array.js +7 -3
  22. package/lib/factories/internal/metadata/iterate_metadata_array.js.map +1 -1
  23. package/lib/factories/internal/metadata/iterate_metadata_atomic.js +1 -1
  24. package/lib/factories/internal/metadata/iterate_metadata_atomic.js.map +1 -1
  25. package/lib/factories/internal/metadata/iterate_metadata_collection.js +20 -12
  26. package/lib/factories/internal/metadata/iterate_metadata_collection.js.map +1 -1
  27. package/lib/factories/internal/metadata/iterate_metadata_comment_tags.d.ts +2 -0
  28. package/lib/factories/internal/metadata/{iterate_metadata_tag.js → iterate_metadata_comment_tags.js} +4 -4
  29. package/lib/factories/internal/metadata/iterate_metadata_comment_tags.js.map +1 -0
  30. package/lib/factories/internal/metadata/iterate_metadata_intersection.js +138 -16
  31. package/lib/factories/internal/metadata/iterate_metadata_intersection.js.map +1 -1
  32. package/lib/factories/internal/metadata/iterate_metadata_object.js +0 -7
  33. package/lib/factories/internal/metadata/iterate_metadata_object.js.map +1 -1
  34. package/lib/factories/internal/metadata/iterate_metadata_sort.js +2 -2
  35. package/lib/factories/internal/metadata/iterate_metadata_sort.js.map +1 -1
  36. package/lib/factories/internal/metadata/iterate_metadata_tuple.js +6 -2
  37. package/lib/factories/internal/metadata/iterate_metadata_tuple.js.map +1 -1
  38. package/lib/factories/internal/metadata/iterate_metadata_type_tags.d.ts +3 -0
  39. package/lib/factories/internal/metadata/iterate_metadata_type_tags.js +157 -0
  40. package/lib/factories/internal/metadata/iterate_metadata_type_tags.js.map +1 -0
  41. package/lib/functional/$any.js +2 -1
  42. package/lib/functional/$any.js.map +1 -1
  43. package/lib/functional/$clone.d.ts +2 -0
  44. package/lib/functional/$clone.js +8 -0
  45. package/lib/functional/$clone.js.map +1 -0
  46. package/lib/module.d.ts +2 -39
  47. package/lib/module.js +3 -17
  48. package/lib/module.js.map +1 -1
  49. package/lib/programmers/AssertProgrammer.js +1 -3
  50. package/lib/programmers/AssertProgrammer.js.map +1 -1
  51. package/lib/programmers/CheckerProgrammer.js +38 -29
  52. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  53. package/lib/programmers/FeatureProgrammer.d.ts +4 -4
  54. package/lib/programmers/FeatureProgrammer.js.map +1 -1
  55. package/lib/programmers/IsProgrammer.d.ts +1 -1
  56. package/lib/programmers/IsProgrammer.js +1 -3
  57. package/lib/programmers/IsProgrammer.js.map +1 -1
  58. package/lib/programmers/RandomProgrammer.js +44 -33
  59. package/lib/programmers/RandomProgrammer.js.map +1 -1
  60. package/lib/programmers/ValidateProgrammer.js +1 -3
  61. package/lib/programmers/ValidateProgrammer.js.map +1 -1
  62. package/lib/programmers/helpers/AtomicPredicator.js +2 -2
  63. package/lib/programmers/helpers/AtomicPredicator.js.map +1 -1
  64. package/lib/programmers/helpers/ICheckEntry.d.ts +1 -1
  65. package/lib/programmers/helpers/ProtobufUtil.js +2 -2
  66. package/lib/programmers/helpers/ProtobufUtil.js.map +1 -1
  67. package/lib/programmers/helpers/RandomJoiner.d.ts +4 -4
  68. package/lib/programmers/helpers/RandomJoiner.js.map +1 -1
  69. package/lib/programmers/helpers/RandomRanger.d.ts +6 -6
  70. package/lib/programmers/helpers/RandomRanger.js.map +1 -1
  71. package/lib/programmers/helpers/UnionExplorer.d.ts +8 -8
  72. package/lib/programmers/helpers/UnionExplorer.js +40 -29
  73. package/lib/programmers/helpers/UnionExplorer.js.map +1 -1
  74. package/lib/programmers/internal/application_array.js +1 -1
  75. package/lib/programmers/internal/application_array.js.map +1 -1
  76. package/lib/programmers/internal/application_default_string.js +2 -2
  77. package/lib/programmers/internal/application_default_string.js.map +1 -1
  78. package/lib/programmers/internal/application_resolved.js +2 -2
  79. package/lib/programmers/internal/application_resolved.js.map +1 -1
  80. package/lib/programmers/internal/application_schema.js +5 -5
  81. package/lib/programmers/internal/application_schema.js.map +1 -1
  82. package/lib/programmers/internal/application_string.js.map +1 -1
  83. package/lib/programmers/internal/application_tuple.js +10 -9
  84. package/lib/programmers/internal/application_tuple.js.map +1 -1
  85. package/lib/programmers/internal/check_array_length.js.map +1 -1
  86. package/lib/programmers/internal/check_array_tags.js +39 -0
  87. package/lib/programmers/internal/check_array_tags.js.map +1 -0
  88. package/lib/programmers/internal/check_bigint.js +88 -74
  89. package/lib/programmers/internal/check_bigint.js.map +1 -1
  90. package/lib/programmers/internal/check_number.js +142 -131
  91. package/lib/programmers/internal/check_number.js.map +1 -1
  92. package/lib/programmers/internal/check_string.js +30 -6
  93. package/lib/programmers/internal/check_string.js.map +1 -1
  94. package/lib/programmers/internal/check_string_tags.js.map +1 -1
  95. package/lib/programmers/internal/check_template.js +16 -49
  96. package/lib/programmers/internal/check_template.js.map +1 -1
  97. package/lib/programmers/internal/check_union_array_like.js +3 -2
  98. package/lib/programmers/internal/check_union_array_like.js.map +1 -1
  99. package/lib/programmers/internal/metadata_to_pattern.js +4 -4
  100. package/lib/programmers/internal/metadata_to_pattern.js.map +1 -1
  101. package/lib/programmers/internal/stringify_dynamic_properties.js +2 -1
  102. package/lib/programmers/internal/stringify_dynamic_properties.js.map +1 -1
  103. package/lib/programmers/internal/wrap_metadata_rest_tuple.js +9 -5
  104. package/lib/programmers/internal/wrap_metadata_rest_tuple.js.map +1 -1
  105. package/lib/programmers/json/JsonStringifyProgrammer.js +29 -23
  106. package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
  107. package/lib/programmers/misc/MiscCloneProgrammer.js +10 -10
  108. package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
  109. package/lib/programmers/misc/MiscLiteralsProgrammer.js +2 -2
  110. package/lib/programmers/misc/MiscLiteralsProgrammer.js.map +1 -1
  111. package/lib/programmers/misc/MiscPruneProgrammer.js +13 -13
  112. package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
  113. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js +6 -6
  114. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js.map +1 -1
  115. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js +2 -2
  116. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js.map +1 -1
  117. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js +1 -1
  118. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js.map +1 -1
  119. package/lib/schemas/json/IJsonSchema.d.ts +2 -2
  120. package/lib/schemas/metadata/IMetadata.d.ts +11 -4
  121. package/lib/schemas/metadata/IMetadataAlias.d.ts +2 -2
  122. package/lib/schemas/metadata/IMetadataArray.d.ts +4 -6
  123. package/lib/schemas/metadata/IMetadataArrayType.d.ts +8 -0
  124. package/lib/{CustomValidatorMap.js → schemas/metadata/IMetadataArrayType.js} +1 -1
  125. package/lib/schemas/metadata/IMetadataArrayType.js.map +1 -0
  126. package/lib/schemas/metadata/IMetadataAtomic.d.ts +5 -0
  127. package/lib/schemas/metadata/IMetadataAtomic.js +3 -0
  128. package/lib/schemas/metadata/IMetadataAtomic.js.map +1 -0
  129. package/lib/schemas/metadata/IMetadataCollection.d.ts +4 -4
  130. package/lib/schemas/metadata/{IMetadataTag.d.ts → IMetadataCommentTag.d.ts} +2 -2
  131. package/lib/schemas/metadata/IMetadataCommentTag.js +3 -0
  132. package/lib/schemas/metadata/IMetadataCommentTag.js.map +1 -0
  133. package/lib/schemas/metadata/IMetadataProperty.d.ts +2 -2
  134. package/lib/schemas/metadata/IMetadataTuple.d.ts +4 -6
  135. package/lib/schemas/metadata/IMetadataTupleType.d.ts +8 -0
  136. package/lib/schemas/metadata/IMetadataTupleType.js +3 -0
  137. package/lib/schemas/metadata/IMetadataTupleType.js.map +1 -0
  138. package/lib/schemas/metadata/IMetadataTypeTag.d.ts +6 -0
  139. package/lib/schemas/metadata/IMetadataTypeTag.js +3 -0
  140. package/lib/schemas/metadata/IMetadataTypeTag.js.map +1 -0
  141. package/lib/schemas/metadata/Metadata.d.ts +2 -2
  142. package/lib/schemas/metadata/Metadata.js +206 -146
  143. package/lib/schemas/metadata/Metadata.js.map +1 -1
  144. package/lib/schemas/metadata/MetadataAlias.d.ts +2 -2
  145. package/lib/schemas/metadata/MetadataArray.d.ts +6 -6
  146. package/lib/schemas/metadata/MetadataArray.js +5 -19
  147. package/lib/schemas/metadata/MetadataArray.js.map +1 -1
  148. package/lib/schemas/metadata/MetadataArrayType.d.ts +14 -0
  149. package/lib/schemas/metadata/MetadataArrayType.js +36 -0
  150. package/lib/schemas/metadata/MetadataArrayType.js.map +1 -0
  151. package/lib/schemas/metadata/MetadataProperty.d.ts +2 -2
  152. package/lib/schemas/metadata/MetadataTuple.d.ts +4 -6
  153. package/lib/schemas/metadata/MetadataTuple.js +5 -19
  154. package/lib/schemas/metadata/MetadataTuple.js.map +1 -1
  155. package/lib/schemas/metadata/MetadataTupleType.d.ts +13 -0
  156. package/lib/schemas/metadata/MetadataTupleType.js +40 -0
  157. package/lib/schemas/metadata/MetadataTupleType.js.map +1 -0
  158. package/lib/tags/ExclusiveMaximum.d.ts +8 -0
  159. package/lib/tags/ExclusiveMaximum.js +3 -0
  160. package/lib/tags/ExclusiveMaximum.js.map +1 -0
  161. package/lib/tags/ExclusiveMinimum.d.ts +8 -0
  162. package/lib/tags/ExclusiveMinimum.js +3 -0
  163. package/lib/tags/ExclusiveMinimum.js.map +1 -0
  164. package/lib/tags/Format.d.ts +8 -0
  165. package/lib/{schemas/metadata/IMetadataTag.js → tags/Format.js} +1 -1
  166. package/lib/tags/Format.js.map +1 -0
  167. package/lib/tags/MaxItems.d.ts +8 -0
  168. package/lib/tags/MaxItems.js +3 -0
  169. package/lib/tags/MaxItems.js.map +1 -0
  170. package/lib/tags/MaxLength.d.ts +8 -0
  171. package/lib/tags/MaxLength.js +3 -0
  172. package/lib/tags/MaxLength.js.map +1 -0
  173. package/lib/tags/Maximum.d.ts +8 -0
  174. package/lib/tags/Maximum.js +3 -0
  175. package/lib/tags/Maximum.js.map +1 -0
  176. package/lib/tags/MinItems.d.ts +8 -0
  177. package/lib/tags/MinItems.js +3 -0
  178. package/lib/tags/MinItems.js.map +1 -0
  179. package/lib/tags/MinLength.d.ts +8 -0
  180. package/lib/tags/MinLength.js +3 -0
  181. package/lib/tags/MinLength.js.map +1 -0
  182. package/lib/tags/Minimum.d.ts +8 -0
  183. package/lib/tags/Minimum.js +3 -0
  184. package/lib/tags/Minimum.js.map +1 -0
  185. package/lib/tags/MultipleOf.d.ts +8 -0
  186. package/lib/tags/MultipleOf.js +3 -0
  187. package/lib/tags/MultipleOf.js.map +1 -0
  188. package/lib/tags/Pattern.d.ts +8 -0
  189. package/lib/tags/Pattern.js +3 -0
  190. package/lib/tags/Pattern.js.map +1 -0
  191. package/lib/tags/TagBase.d.ts +10 -0
  192. package/lib/tags/TagBase.js +3 -0
  193. package/lib/tags/TagBase.js.map +1 -0
  194. package/lib/tags/Type.d.ts +13 -0
  195. package/lib/tags/Type.js +3 -0
  196. package/lib/tags/Type.js.map +1 -0
  197. package/lib/tags/index.d.ts +12 -0
  198. package/lib/tags/index.js +29 -0
  199. package/lib/tags/index.js.map +1 -0
  200. package/lib/transformers/FileTransformer.d.ts +1 -1
  201. package/lib/transformers/FileTransformer.js +12 -1
  202. package/lib/transformers/FileTransformer.js.map +1 -1
  203. package/lib/transformers/IProject.d.ts +1 -0
  204. package/lib/transformers/features/json/JsonApplicationTransformer.js +4 -2
  205. package/lib/transformers/features/json/JsonApplicationTransformer.js.map +1 -1
  206. package/package.json +1 -1
  207. package/src/factories/ExpressionFactory.ts +44 -0
  208. package/src/factories/IdentifierFactory.ts +15 -0
  209. package/src/factories/MetadataCollection.ts +18 -12
  210. package/src/factories/MetadataTagFactory.ts +22 -21
  211. package/src/factories/ProtobufFactory.ts +10 -8
  212. package/src/factories/internal/metadata/emend_metadata_atomics.ts +7 -5
  213. package/src/factories/internal/metadata/{emplace_metadata_array.ts → emplace_metadata_array_type.ts} +3 -3
  214. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +2 -2
  215. package/src/factories/internal/metadata/iterate_metadata_array.ts +13 -5
  216. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +6 -4
  217. package/src/factories/internal/metadata/iterate_metadata_collection.ts +23 -16
  218. package/src/factories/internal/metadata/{iterate_metadata_tag.ts → iterate_metadata_comment_tags.ts} +1 -1
  219. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +109 -15
  220. package/src/factories/internal/metadata/iterate_metadata_object.ts +10 -10
  221. package/src/factories/internal/metadata/iterate_metadata_sort.ts +2 -2
  222. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +12 -4
  223. package/src/factories/internal/metadata/iterate_metadata_type_tags.ts +183 -0
  224. package/src/functional/$any.ts +3 -1
  225. package/src/functional/$clone.ts +4 -0
  226. package/src/module.ts +2 -55
  227. package/src/programmers/AssertProgrammer.ts +1 -1
  228. package/src/programmers/CheckerProgrammer.ts +80 -47
  229. package/src/programmers/FeatureProgrammer.ts +6 -6
  230. package/src/programmers/IsProgrammer.ts +1 -1
  231. package/src/programmers/RandomProgrammer.ts +68 -45
  232. package/src/programmers/ValidateProgrammer.ts +1 -1
  233. package/src/programmers/helpers/AtomicPredicator.ts +2 -2
  234. package/src/programmers/helpers/ICheckEntry.ts +1 -1
  235. package/src/programmers/helpers/ProtobufUtil.ts +1 -1
  236. package/src/programmers/helpers/RandomJoiner.ts +8 -4
  237. package/src/programmers/helpers/RandomRanger.ts +8 -8
  238. package/src/programmers/helpers/UnionExplorer.ts +48 -34
  239. package/src/programmers/internal/application_array.ts +5 -4
  240. package/src/programmers/internal/application_default_string.ts +6 -2
  241. package/src/programmers/internal/application_resolved.ts +2 -2
  242. package/src/programmers/internal/application_schema.ts +5 -5
  243. package/src/programmers/internal/application_string.ts +2 -2
  244. package/src/programmers/internal/application_tuple.ts +12 -11
  245. package/src/programmers/internal/check_array_length.ts +2 -2
  246. package/src/programmers/internal/check_array_tags.ts +45 -0
  247. package/src/programmers/internal/check_bigint.ts +45 -17
  248. package/src/programmers/internal/check_number.ts +97 -70
  249. package/src/programmers/internal/check_string.ts +43 -12
  250. package/src/programmers/internal/check_string_tags.ts +3 -3
  251. package/src/programmers/internal/check_template.ts +1 -12
  252. package/src/programmers/internal/check_union_array_like.ts +6 -5
  253. package/src/programmers/internal/metadata_to_pattern.ts +4 -4
  254. package/src/programmers/internal/stringify_dynamic_properties.ts +1 -1
  255. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +9 -5
  256. package/src/programmers/json/JsonStringifyProgrammer.ts +41 -25
  257. package/src/programmers/misc/MiscCloneProgrammer.ts +24 -14
  258. package/src/programmers/misc/MiscLiteralsProgrammer.ts +2 -2
  259. package/src/programmers/misc/MiscPruneProgrammer.ts +27 -17
  260. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +12 -12
  261. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +14 -14
  262. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +6 -6
  263. package/src/schemas/json/IJsonSchema.ts +2 -2
  264. package/src/schemas/metadata/IMetadata.ts +11 -5
  265. package/src/schemas/metadata/IMetadataAlias.ts +2 -2
  266. package/src/schemas/metadata/IMetadataArray.ts +4 -7
  267. package/src/schemas/metadata/IMetadataArrayType.ts +10 -0
  268. package/src/schemas/metadata/IMetadataAtomic.ts +6 -0
  269. package/src/schemas/metadata/IMetadataCollection.ts +4 -4
  270. package/src/schemas/metadata/{IMetadataTag.ts → IMetadataCommentTag.ts} +17 -17
  271. package/src/schemas/metadata/IMetadataDictionary.ts +4 -4
  272. package/src/schemas/metadata/IMetadataProperty.ts +2 -2
  273. package/src/schemas/metadata/IMetadataTuple.ts +4 -7
  274. package/src/schemas/metadata/IMetadataTupleType.ts +10 -0
  275. package/src/schemas/metadata/IMetadataTypeTag.ts +6 -0
  276. package/src/schemas/metadata/Metadata.ts +109 -44
  277. package/src/schemas/metadata/MetadataAlias.ts +2 -2
  278. package/src/schemas/metadata/MetadataArray.ts +10 -34
  279. package/src/schemas/metadata/MetadataArrayType.ts +57 -0
  280. package/src/schemas/metadata/MetadataProperty.ts +2 -2
  281. package/src/schemas/metadata/MetadataTuple.ts +10 -37
  282. package/src/schemas/metadata/MetadataTupleType.ts +67 -0
  283. package/src/tags/ExclusiveMaximum.ts +8 -0
  284. package/src/tags/ExclusiveMinimum.ts +8 -0
  285. package/src/tags/Format.ts +29 -0
  286. package/src/tags/MaxItems.ts +8 -0
  287. package/src/tags/MaxLength.ts +8 -0
  288. package/src/tags/Maximum.ts +8 -0
  289. package/src/tags/MinItems.ts +8 -0
  290. package/src/tags/MinLength.ts +8 -0
  291. package/src/tags/Minimum.ts +8 -0
  292. package/src/tags/MultipleOf.ts +10 -0
  293. package/src/tags/Pattern.ts +8 -0
  294. package/src/tags/TagBase.ts +17 -0
  295. package/src/tags/Type.ts +30 -0
  296. package/src/tags/index.ts +12 -0
  297. package/src/transformers/FileTransformer.ts +2 -2
  298. package/src/transformers/IProject.ts +1 -0
  299. package/src/transformers/features/json/JsonApplicationTransformer.ts +3 -2
  300. package/src/typings/Atomic.ts +1 -0
  301. package/lib/CustomValidatorMap.d.ts +0 -110
  302. package/lib/CustomValidatorMap.js.map +0 -1
  303. package/lib/factories/internal/metadata/emplace_metadata_array.d.ts +0 -5
  304. package/lib/factories/internal/metadata/emplace_metadata_array.js.map +0 -1
  305. package/lib/factories/internal/metadata/iterate_metadata_tag.d.ts +0 -2
  306. package/lib/factories/internal/metadata/iterate_metadata_tag.js.map +0 -1
  307. package/lib/programmers/internal/check_array.js +0 -44
  308. package/lib/programmers/internal/check_array.js.map +0 -1
  309. package/lib/programmers/internal/check_custom.d.ts +0 -1
  310. package/lib/programmers/internal/check_custom.js +0 -30
  311. package/lib/programmers/internal/check_custom.js.map +0 -1
  312. package/lib/schemas/metadata/IMetadataTag.js.map +0 -1
  313. package/src/CustomValidatorMap.ts +0 -126
  314. package/src/programmers/internal/check_array.ts +0 -30
  315. package/src/programmers/internal/check_custom.ts +0 -31
  316. /package/lib/programmers/internal/{check_array.d.ts → check_array_tags.d.ts} +0 -0
@@ -9,11 +9,13 @@ import { TypeFactory } from "../../factories/TypeFactory";
9
9
  import { ValueFactory } from "../../factories/ValueFactory";
10
10
 
11
11
  import { IJsDocTagInfo } from "../../schemas/metadata/IJsDocTagInfo";
12
- import { IMetadataTag } from "../../schemas/metadata/IMetadataTag";
12
+ import { IMetadataCommentTag } from "../../schemas/metadata/IMetadataCommentTag";
13
13
  import { Metadata } from "../../schemas/metadata/Metadata";
14
14
  import { MetadataArray } from "../../schemas/metadata/MetadataArray";
15
+ import { MetadataArrayType } from "../../schemas/metadata/MetadataArrayType";
15
16
  import { MetadataObject } from "../../schemas/metadata/MetadataObject";
16
17
  import { MetadataTuple } from "../../schemas/metadata/MetadataTuple";
18
+ import { MetadataTupleType } from "../../schemas/metadata/MetadataTupleType";
17
19
 
18
20
  import { IProject } from "../../transformers/IProject";
19
21
 
@@ -213,7 +215,7 @@ export namespace JsonStringifyProgrammer {
213
215
  )
214
216
  if (AtomicPredicator.template(meta)) {
215
217
  const partial = Metadata.initialize();
216
- partial.atomics.push("string"),
218
+ partial.atomics.push({ type: "string", tags: [] }),
217
219
  unions.push({
218
220
  type: "template literal",
219
221
  is: () =>
@@ -245,7 +247,10 @@ export namespace JsonStringifyProgrammer {
245
247
  input,
246
248
  (() => {
247
249
  const partial = Metadata.initialize();
248
- partial.atomics.push(constant.type);
250
+ partial.atomics.push({
251
+ type: constant.type,
252
+ tags: [],
253
+ });
249
254
  return partial;
250
255
  })(),
251
256
  explore,
@@ -267,7 +272,10 @@ export namespace JsonStringifyProgrammer {
267
272
  input,
268
273
  (() => {
269
274
  const partial = Metadata.initialize();
270
- partial.atomics.push("string");
275
+ partial.atomics.push({
276
+ type: "string",
277
+ tags: [],
278
+ });
271
279
  return partial;
272
280
  })(),
273
281
  explore,
@@ -283,8 +291,8 @@ export namespace JsonStringifyProgrammer {
283
291
  });
284
292
 
285
293
  /// ATOMICS
286
- for (const type of meta.atomics)
287
- if (AtomicPredicator.atomic(meta)(type))
294
+ for (const a of meta.atomics)
295
+ if (AtomicPredicator.atomic(meta)(a.type))
288
296
  unions.push({
289
297
  type: "atomic",
290
298
  is: () =>
@@ -292,7 +300,7 @@ export namespace JsonStringifyProgrammer {
292
300
  input,
293
301
  (() => {
294
302
  const partial = Metadata.initialize();
295
- partial.atomics.push(type);
303
+ partial.atomics.push(a);
296
304
  return partial;
297
305
  })(),
298
306
  explore,
@@ -302,14 +310,14 @@ export namespace JsonStringifyProgrammer {
302
310
  value: () =>
303
311
  decode_atomic(project)(importer)(
304
312
  input,
305
- type,
313
+ a.type,
306
314
  explore,
307
315
  ),
308
316
  });
309
317
 
310
318
  // TUPLES
311
319
  for (const tuple of meta.tuples) {
312
- for (const child of tuple.elements)
320
+ for (const child of tuple.type.elements)
313
321
  if (StringifyPredicator.undefindable(meta))
314
322
  throw new Error(
315
323
  `Error on typia.json.stringify(): tuple cannot contain undefined value - (${child.getName()}).`,
@@ -340,9 +348,9 @@ export namespace JsonStringifyProgrammer {
340
348
  // ARRAYS
341
349
  if (meta.arrays.length) {
342
350
  for (const child of meta.arrays)
343
- if (StringifyPredicator.undefindable(child.value))
351
+ if (StringifyPredicator.undefindable(child.type.value))
344
352
  throw new Error(
345
- `Error on typia.json.stringify(): array cannot contain undefined value (${child.value.getName()}).`,
353
+ `Error on typia.json.stringify(): array cannot contain undefined value (${child.type.value.getName()}).`,
346
354
  );
347
355
  const value: () => ts.Expression =
348
356
  meta.arrays.length === 1
@@ -355,7 +363,7 @@ export namespace JsonStringifyProgrammer {
355
363
  from: "array",
356
364
  },
357
365
  )
358
- : meta.arrays.some((elem) => elem.value.any)
366
+ : meta.arrays.some((elem) => elem.type.value.any)
359
367
  ? () =>
360
368
  ts.factory.createCallExpression(
361
369
  ts.factory.createIdentifier("JSON.stringify"),
@@ -512,10 +520,12 @@ export namespace JsonStringifyProgrammer {
512
520
  array: MetadataArray,
513
521
  explore: FeatureProgrammer.IExplore,
514
522
  ) =>
515
- array.recursive
523
+ array.type.recursive
516
524
  ? ts.factory.createCallExpression(
517
525
  ts.factory.createIdentifier(
518
- importer.useLocal(`${config.prefix}a${array.index}`),
526
+ importer.useLocal(
527
+ `${config.prefix}a${array.type.index}`,
528
+ ),
519
529
  ),
520
530
  undefined,
521
531
  FeatureProgrammer.argumentsArray(config)({
@@ -524,14 +534,18 @@ export namespace JsonStringifyProgrammer {
524
534
  from: "array",
525
535
  })(input),
526
536
  )
527
- : decode_array_inline(config)(importer)(input, array, explore);
537
+ : decode_array_inline(config)(importer)(
538
+ input,
539
+ array.type,
540
+ explore,
541
+ );
528
542
 
529
543
  const decode_array_inline =
530
544
  (config: FeatureProgrammer.IConfig) =>
531
545
  (importer: FunctionImporter) =>
532
546
  (
533
547
  input: ts.Expression,
534
- array: MetadataArray,
548
+ array: MetadataArrayType,
535
549
  explore: FeatureProgrammer.IExplore,
536
550
  ) =>
537
551
  FeatureProgrammer.decode_array(config)(importer)(
@@ -547,10 +561,12 @@ export namespace JsonStringifyProgrammer {
547
561
  tuple: MetadataTuple,
548
562
  explore: FeatureProgrammer.IExplore,
549
563
  ): ts.Expression =>
550
- tuple.recursive
564
+ tuple.type.recursive
551
565
  ? ts.factory.createCallExpression(
552
566
  ts.factory.createIdentifier(
553
- importer.useLocal(`${config.prefix}t${tuple.index}`),
567
+ importer.useLocal(
568
+ `${config.prefix}t${tuple.type.index}`,
569
+ ),
554
570
  ),
555
571
  undefined,
556
572
  FeatureProgrammer.argumentsArray(config)({
@@ -560,7 +576,7 @@ export namespace JsonStringifyProgrammer {
560
576
  )
561
577
  : decode_tuple_inline(project)(config)(importer)(
562
578
  input,
563
- tuple,
579
+ tuple.type,
564
580
  explore,
565
581
  );
566
582
 
@@ -570,7 +586,7 @@ export namespace JsonStringifyProgrammer {
570
586
  (importer: FunctionImporter) =>
571
587
  (
572
588
  input: ts.Expression,
573
- tuple: MetadataTuple,
589
+ tuple: MetadataTupleType,
574
590
  explore: FeatureProgrammer.IExplore,
575
591
  ): ts.Expression => {
576
592
  const children: ts.Expression[] = tuple.elements
@@ -749,7 +765,7 @@ export namespace JsonStringifyProgrammer {
749
765
  input: ts.Expression,
750
766
  elements: T[],
751
767
  explore: FeatureProgrammer.IExplore,
752
- tags: IMetadataTag[],
768
+ tags: IMetadataCommentTag[],
753
769
  jsDocTags: IJsDocTagInfo[],
754
770
  ) => ts.ArrowFunction,
755
771
  ) =>
@@ -763,7 +779,7 @@ export namespace JsonStringifyProgrammer {
763
779
  (explore: FeatureProgrammer.IExplore) =>
764
780
  (input: ts.Expression): ts.ArrowFunction =>
765
781
  factory(parameters)(input, elements, explore, [], []);
766
- if (elements.every((e) => e.recursive === false))
782
+ if (elements.every((e) => e.type.recursive === false))
767
783
  ts.factory.createCallExpression(
768
784
  arrow([])(explore)(input),
769
785
  undefined,
@@ -779,7 +795,7 @@ export namespace JsonStringifyProgrammer {
779
795
  ts.factory.createIdentifier(
780
796
  importer.emplaceUnion(
781
797
  config.prefix,
782
- elements.map((e) => e.name).join(" | "),
798
+ elements.map((e) => e.type.name).join(" | "),
783
799
  () =>
784
800
  arrow(
785
801
  FeatureProgrammer.parameterDeclarations(config)(
@@ -937,11 +953,11 @@ export namespace JsonStringifyProgrammer {
937
953
  constant: true,
938
954
  absorb: true,
939
955
  validate: (meta) => {
940
- if (meta.atomics.find((str) => str === "bigint"))
956
+ if (meta.atomics.find((a) => a.type === "bigint"))
941
957
  throw new Error(NO_BIGINT);
942
958
  else if (
943
959
  meta.arrays.some(
944
- (array) => array.value.isRequired() === false,
960
+ (array) => array.type.value.isRequired() === false,
945
961
  )
946
962
  )
947
963
  throw new Error(NO_UNDEFINED_IN_ARRAY);
@@ -8,10 +8,12 @@ import { StatementFactory } from "../../factories/StatementFactory";
8
8
  import { TypeFactory } from "../../factories/TypeFactory";
9
9
 
10
10
  import { IJsDocTagInfo } from "../../schemas/metadata/IJsDocTagInfo";
11
- import { IMetadataTag } from "../../schemas/metadata/IMetadataTag";
11
+ import { IMetadataCommentTag } from "../../schemas/metadata/IMetadataCommentTag";
12
12
  import { Metadata } from "../../schemas/metadata/Metadata";
13
13
  import { MetadataArray } from "../../schemas/metadata/MetadataArray";
14
+ import { MetadataArrayType } from "../../schemas/metadata/MetadataArrayType";
14
15
  import { MetadataTuple } from "../../schemas/metadata/MetadataTuple";
16
+ import { MetadataTupleType } from "../../schemas/metadata/MetadataTupleType";
15
17
 
16
18
  import { IProject } from "../../transformers/IProject";
17
19
 
@@ -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"),
@@ -268,10 +270,12 @@ export namespace MiscCloneProgrammer {
268
270
  array: MetadataArray,
269
271
  explore: FeatureProgrammer.IExplore,
270
272
  ) =>
271
- array.recursive
273
+ array.type.recursive
272
274
  ? ts.factory.createCallExpression(
273
275
  ts.factory.createIdentifier(
274
- importer.useLocal(`${config.prefix}a${array.index}`),
276
+ importer.useLocal(
277
+ `${config.prefix}a${array.type.index}`,
278
+ ),
275
279
  ),
276
280
  undefined,
277
281
  FeatureProgrammer.argumentsArray(config)({
@@ -280,14 +284,18 @@ export namespace MiscCloneProgrammer {
280
284
  from: "array",
281
285
  })(input),
282
286
  )
283
- : decode_array_inline(config)(importer)(input, array, explore);
287
+ : decode_array_inline(config)(importer)(
288
+ input,
289
+ array.type,
290
+ explore,
291
+ );
284
292
 
285
293
  const decode_array_inline =
286
294
  (config: FeatureProgrammer.IConfig) =>
287
295
  (importer: FunctionImporter) =>
288
296
  (
289
297
  input: ts.Expression,
290
- array: MetadataArray,
298
+ array: MetadataArrayType,
291
299
  explore: FeatureProgrammer.IExplore,
292
300
  ) =>
293
301
  FeatureProgrammer.decode_array(config)(importer)(CloneJoiner.array)(
@@ -307,10 +315,12 @@ export namespace MiscCloneProgrammer {
307
315
  tuple: MetadataTuple,
308
316
  explore: FeatureProgrammer.IExplore,
309
317
  ): ts.Expression =>
310
- tuple.recursive
318
+ tuple.type.recursive
311
319
  ? ts.factory.createCallExpression(
312
320
  ts.factory.createIdentifier(
313
- importer.useLocal(`${config.prefix}t${tuple.index}`),
321
+ importer.useLocal(
322
+ `${config.prefix}t${tuple.type.index}`,
323
+ ),
314
324
  ),
315
325
  undefined,
316
326
  FeatureProgrammer.argumentsArray(config)({
@@ -320,7 +330,7 @@ export namespace MiscCloneProgrammer {
320
330
  )
321
331
  : decode_tuple_inline(project)(config)(importer)(
322
332
  input,
323
- tuple,
333
+ tuple.type,
324
334
  explore,
325
335
  );
326
336
 
@@ -330,7 +340,7 @@ export namespace MiscCloneProgrammer {
330
340
  (importer: FunctionImporter) =>
331
341
  (
332
342
  input: ts.Expression,
333
- tuple: MetadataTuple,
343
+ tuple: MetadataTupleType,
334
344
  explore: FeatureProgrammer.IExplore,
335
345
  ): ts.Expression => {
336
346
  const children: ts.Expression[] = tuple.elements
@@ -627,7 +637,7 @@ export namespace MiscCloneProgrammer {
627
637
  input: ts.Expression,
628
638
  elements: T[],
629
639
  explore: FeatureProgrammer.IExplore,
630
- tags: IMetadataTag[],
640
+ tags: IMetadataCommentTag[],
631
641
  jsDocTags: IJsDocTagInfo[],
632
642
  ) => ts.ArrowFunction,
633
643
  ) =>
@@ -641,7 +651,7 @@ export namespace MiscCloneProgrammer {
641
651
  (explore: FeatureProgrammer.IExplore) =>
642
652
  (input: ts.Expression): ts.ArrowFunction =>
643
653
  factory(parameters)(input, elements, explore, [], []);
644
- if (elements.every((e) => e.recursive === false))
654
+ if (elements.every((e) => e.type.recursive === false))
645
655
  ts.factory.createCallExpression(
646
656
  arrow([])(explore)(input),
647
657
  undefined,
@@ -657,7 +667,7 @@ export namespace MiscCloneProgrammer {
657
667
  ts.factory.createIdentifier(
658
668
  importer.emplaceUnion(
659
669
  config.prefix,
660
- elements.map((e) => e.name).join(" | "),
670
+ elements.map((e) => e.type.name).join(" | "),
661
671
  () =>
662
672
  arrow(
663
673
  FeatureProgrammer.parameterDeclarations(config)(
@@ -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] : []),
@@ -8,10 +8,12 @@ import { StatementFactory } from "../../factories/StatementFactory";
8
8
  import { TypeFactory } from "../../factories/TypeFactory";
9
9
 
10
10
  import { IJsDocTagInfo } from "../../schemas/metadata/IJsDocTagInfo";
11
- import { IMetadataTag } from "../../schemas/metadata/IMetadataTag";
11
+ import { IMetadataCommentTag } from "../../schemas/metadata/IMetadataCommentTag";
12
12
  import { Metadata } from "../../schemas/metadata/Metadata";
13
13
  import { MetadataArray } from "../../schemas/metadata/MetadataArray";
14
+ import { MetadataArrayType } from "../../schemas/metadata/MetadataArrayType";
14
15
  import { MetadataTuple } from "../../schemas/metadata/MetadataTuple";
16
+ import { MetadataTupleType } from "../../schemas/metadata/MetadataTupleType";
15
17
 
16
18
  import { IProject } from "../../transformers/IProject";
17
19
 
@@ -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",
@@ -156,7 +158,7 @@ export namespace MiscPruneProgrammer {
156
158
  });
157
159
 
158
160
  // ARRAYS
159
- if (meta.arrays.filter((a) => filter(a.value)).length)
161
+ if (meta.arrays.filter((a) => filter(a.type.value)).length)
160
162
  unions.push({
161
163
  type: "array",
162
164
  is: () => ExpressionFactory.isArray(input),
@@ -239,10 +241,12 @@ export namespace MiscPruneProgrammer {
239
241
  array: MetadataArray,
240
242
  explore: FeatureProgrammer.IExplore,
241
243
  ) =>
242
- array.recursive
244
+ array.type.recursive
243
245
  ? ts.factory.createCallExpression(
244
246
  ts.factory.createIdentifier(
245
- importer.useLocal(`${config.prefix}a${array.index}`),
247
+ importer.useLocal(
248
+ `${config.prefix}a${array.type.index}`,
249
+ ),
246
250
  ),
247
251
  undefined,
248
252
  FeatureProgrammer.argumentsArray(config)({
@@ -251,14 +255,18 @@ export namespace MiscPruneProgrammer {
251
255
  from: "array",
252
256
  })(input),
253
257
  )
254
- : decode_array_inline(config)(importer)(input, array, explore);
258
+ : decode_array_inline(config)(importer)(
259
+ input,
260
+ array.type,
261
+ explore,
262
+ );
255
263
 
256
264
  const decode_array_inline =
257
265
  (config: FeatureProgrammer.IConfig) =>
258
266
  (importer: FunctionImporter) =>
259
267
  (
260
268
  input: ts.Expression,
261
- array: MetadataArray,
269
+ array: MetadataArrayType,
262
270
  explore: FeatureProgrammer.IExplore,
263
271
  ): ts.Expression =>
264
272
  FeatureProgrammer.decode_array(config)(importer)(PruneJoiner.array)(
@@ -278,10 +286,12 @@ export namespace MiscPruneProgrammer {
278
286
  tuple: MetadataTuple,
279
287
  explore: FeatureProgrammer.IExplore,
280
288
  ): ts.Expression | ts.Block =>
281
- tuple.recursive
289
+ tuple.type.recursive
282
290
  ? ts.factory.createCallExpression(
283
291
  ts.factory.createIdentifier(
284
- importer.useLocal(`${config.prefix}t${tuple.index}`),
292
+ importer.useLocal(
293
+ `${config.prefix}t${tuple.type.index}`,
294
+ ),
285
295
  ),
286
296
  undefined,
287
297
  FeatureProgrammer.argumentsArray(config)({
@@ -291,7 +301,7 @@ export namespace MiscPruneProgrammer {
291
301
  )
292
302
  : decode_tuple_inline(project)(config)(importer)(
293
303
  input,
294
- tuple,
304
+ tuple.type,
295
305
  explore,
296
306
  );
297
307
 
@@ -301,7 +311,7 @@ export namespace MiscPruneProgrammer {
301
311
  (importer: FunctionImporter) =>
302
312
  (
303
313
  input: ts.Expression,
304
- tuple: MetadataTuple,
314
+ tuple: MetadataTupleType,
305
315
  explore: FeatureProgrammer.IExplore,
306
316
  ): ts.Block => {
307
317
  const children: ts.ConciseBody[] = tuple.elements
@@ -404,7 +414,7 @@ export namespace MiscPruneProgrammer {
404
414
  input: ts.Expression,
405
415
  elements: T[],
406
416
  explore: FeatureProgrammer.IExplore,
407
- tags: IMetadataTag[],
417
+ tags: IMetadataCommentTag[],
408
418
  jsDocTags: IJsDocTagInfo[],
409
419
  ) => ts.ArrowFunction,
410
420
  ) =>
@@ -418,7 +428,7 @@ export namespace MiscPruneProgrammer {
418
428
  (explore: FeatureProgrammer.IExplore) =>
419
429
  (input: ts.Expression): ts.ArrowFunction =>
420
430
  factory(parameters)(input, elements, explore, [], []);
421
- if (elements.every((e) => e.recursive === false))
431
+ if (elements.every((e) => e.type.recursive === false))
422
432
  ts.factory.createCallExpression(
423
433
  arrow([])(explore)(input),
424
434
  undefined,
@@ -434,7 +444,7 @@ export namespace MiscPruneProgrammer {
434
444
  ts.factory.createIdentifier(
435
445
  importer.emplaceUnion(
436
446
  config.prefix,
437
- elements.map((e) => e.name).join(" | "),
447
+ elements.map((e) => e.type.name).join(" | "),
438
448
  () =>
439
449
  arrow(
440
450
  FeatureProgrammer.parameterDeclarations(config)(
@@ -456,9 +466,9 @@ export namespace MiscPruneProgrammer {
456
466
  meta.any === false &&
457
467
  (meta.objects.length !== 0 ||
458
468
  meta.tuples.some((t) =>
459
- t.elements.some((e) => filter(e.rest ?? e)),
469
+ t.type.elements.some((e) => filter(e.rest ?? e)),
460
470
  ) ||
461
- meta.arrays.some((e) => filter(e.value)));
471
+ meta.arrays.some((e) => filter(e.type.value)));
462
472
 
463
473
  /* -----------------------------------------------------------
464
474
  CONFIGURATIONS
@@ -8,7 +8,7 @@ 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";
11
+ import { IMetadataCommentTag } from "../../schemas/metadata/IMetadataCommentTag";
12
12
  import { Metadata } from "../../schemas/metadata/Metadata";
13
13
  import { MetadataArray } from "../../schemas/metadata/MetadataArray";
14
14
  import { MetadataObject } from "../../schemas/metadata/MetadataObject";
@@ -253,7 +253,7 @@ export namespace ProtobufDecodeProgrammer {
253
253
  undefined,
254
254
  [],
255
255
  )
256
- : value.atomics.some((str) => str === "string") ||
256
+ : value.atomics.some((a) => a.type === "string") ||
257
257
  value.constants.some(
258
258
  (c) =>
259
259
  c.type === "string" && c.values.some((v) => v === ""),
@@ -280,7 +280,7 @@ export namespace ProtobufDecodeProgrammer {
280
280
  (
281
281
  accessor: ts.ElementAccessExpression | ts.PropertyAccessExpression,
282
282
  meta: Metadata,
283
- tags: IMetadataTag[],
283
+ tags: IMetadataCommentTag[],
284
284
  ): ts.CaseClause[] => {
285
285
  const clauses: ts.CaseClause[] = [];
286
286
  const emplace =
@@ -323,7 +323,7 @@ export namespace ProtobufDecodeProgrammer {
323
323
  emplace(atomic)(decode_atomic(atomic, tags));
324
324
  if (meta.natives.length) emplace("bytes")(decode_bytes("bytes"));
325
325
  for (const array of meta.arrays)
326
- emplace(`Array<${array.value.getName()}>`)(
326
+ emplace(`Array<${array.type.value.getName()}>`)(
327
327
  decode_array(accessor, array, required, tags),
328
328
  );
329
329
  for (const map of meta.maps)
@@ -350,7 +350,7 @@ export namespace ProtobufDecodeProgrammer {
350
350
 
351
351
  const decode_atomic = (
352
352
  atomic: Atomic.Literal,
353
- tags: IMetadataTag[],
353
+ tags: IMetadataCommentTag[],
354
354
  ): ts.Expression => {
355
355
  if (atomic === "string") return decode_bytes("string");
356
356
  const method =
@@ -405,7 +405,7 @@ export namespace ProtobufDecodeProgrammer {
405
405
  accessor: ts.ElementAccessExpression | ts.PropertyAccessExpression,
406
406
  array: MetadataArray,
407
407
  required: boolean,
408
- tags: IMetadataTag[],
408
+ tags: IMetadataCommentTag[],
409
409
  ): ts.Statement[] => {
410
410
  const statements: Array<ts.Expression | ts.Statement> = [];
411
411
  if (required === false)
@@ -421,13 +421,13 @@ export namespace ProtobufDecodeProgrammer {
421
421
  ),
422
422
  ),
423
423
  );
424
- const atomics = ProtobufUtil.getAtomics(array.value);
424
+ const atomics = ProtobufUtil.getAtomics(array.type.value);
425
425
  const decoder = atomics.length
426
426
  ? () => decode_atomic(atomics[0]!, tags)
427
- : array.value.natives.length
427
+ : array.type.value.natives.length
428
428
  ? () => decode_bytes("bytes")
429
- : array.value.objects.length
430
- ? () => decode_regular_object(false)(array.value.objects[0]!)
429
+ : array.type.value.objects.length
430
+ ? () => decode_regular_object(false)(array.type.value.objects[0]!)
431
431
  : null;
432
432
  if (decoder === null) throw new Error("Never reach here.");
433
433
  else if (atomics.length && atomics[0] !== "string") {
@@ -566,7 +566,7 @@ export namespace ProtobufDecodeProgrammer {
566
566
  accessor: ts.ElementAccessExpression | ts.PropertyAccessExpression,
567
567
  map: Metadata.Entry,
568
568
  required: boolean,
569
- tags: IMetadataTag[],
569
+ tags: IMetadataCommentTag[],
570
570
  ): ts.Statement[] =>
571
571
  decode_entry(project)(importer)({
572
572
  initializer: () =>
@@ -605,7 +605,7 @@ export namespace ProtobufDecodeProgrammer {
605
605
  (
606
606
  map: Metadata.Entry,
607
607
  required: boolean,
608
- tags: IMetadataTag[],
608
+ tags: IMetadataCommentTag[],
609
609
  ): ts.Statement[] => {
610
610
  const statements: ts.Statement[] = [
611
611
  ...(required