typia 5.0.0-dev.20230823 → 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 (387) hide show
  1. package/lib/Primitive.d.ts +14 -12
  2. package/lib/Resolved.d.ts +46 -0
  3. package/lib/{schemas/metadata/IMetadataTag.js → Resolved.js} +1 -1
  4. package/lib/Resolved.js.map +1 -0
  5. package/lib/factories/ExpressionFactory.d.ts +2 -0
  6. package/lib/factories/ExpressionFactory.js +24 -0
  7. package/lib/factories/ExpressionFactory.js.map +1 -1
  8. package/lib/factories/IdentifierFactory.d.ts +2 -1
  9. package/lib/factories/IdentifierFactory.js +11 -0
  10. package/lib/factories/IdentifierFactory.js.map +1 -1
  11. package/lib/factories/MetadataCollection.d.ts +7 -7
  12. package/lib/factories/MetadataCollection.js +4 -4
  13. package/lib/factories/MetadataCollection.js.map +1 -1
  14. package/lib/factories/MetadataFactory.d.ts +1 -1
  15. package/lib/factories/MetadataTagFactory.d.ts +2 -2
  16. package/lib/factories/MetadataTagFactory.js +15 -13
  17. package/lib/factories/MetadataTagFactory.js.map +1 -1
  18. package/lib/factories/ProtobufFactory.js +11 -10
  19. package/lib/factories/ProtobufFactory.js.map +1 -1
  20. package/lib/factories/internal/metadata/emend_metadata_atomics.js +6 -6
  21. package/lib/factories/internal/metadata/emend_metadata_atomics.js.map +1 -1
  22. package/lib/factories/internal/metadata/emplace_metadata_array_type.d.ts +5 -0
  23. package/lib/factories/internal/metadata/{emplace_metadata_array.js → emplace_metadata_array_type.js} +4 -4
  24. package/lib/factories/internal/metadata/emplace_metadata_array_type.js.map +1 -0
  25. package/lib/factories/internal/metadata/emplace_metadata_tuple.d.ts +2 -2
  26. package/lib/factories/internal/metadata/explore_metadata.js +3 -3
  27. package/lib/factories/internal/metadata/explore_metadata.js.map +1 -1
  28. package/lib/factories/internal/metadata/iterate_metadata_array.js +7 -3
  29. package/lib/factories/internal/metadata/iterate_metadata_array.js.map +1 -1
  30. package/lib/factories/internal/metadata/iterate_metadata_atomic.js +1 -1
  31. package/lib/factories/internal/metadata/iterate_metadata_atomic.js.map +1 -1
  32. package/lib/factories/internal/metadata/iterate_metadata_collection.js +26 -18
  33. package/lib/factories/internal/metadata/iterate_metadata_collection.js.map +1 -1
  34. package/lib/factories/internal/metadata/iterate_metadata_comment_tags.d.ts +2 -0
  35. package/lib/factories/internal/metadata/{iterate_metadata_tag.js → iterate_metadata_comment_tags.js} +4 -4
  36. package/lib/factories/internal/metadata/iterate_metadata_comment_tags.js.map +1 -0
  37. package/lib/factories/internal/metadata/iterate_metadata_intersection.js +138 -16
  38. package/lib/factories/internal/metadata/iterate_metadata_intersection.js.map +1 -1
  39. package/lib/factories/internal/metadata/iterate_metadata_native.js +2 -10
  40. package/lib/factories/internal/metadata/iterate_metadata_native.js.map +1 -1
  41. package/lib/factories/internal/metadata/iterate_metadata_object.js +0 -7
  42. package/lib/factories/internal/metadata/iterate_metadata_object.js.map +1 -1
  43. package/lib/factories/internal/metadata/iterate_metadata_resolve.js +6 -6
  44. package/lib/factories/internal/metadata/iterate_metadata_resolve.js.map +1 -1
  45. package/lib/factories/internal/metadata/iterate_metadata_sort.js +4 -4
  46. package/lib/factories/internal/metadata/iterate_metadata_sort.js.map +1 -1
  47. package/lib/factories/internal/metadata/iterate_metadata_tuple.js +6 -2
  48. package/lib/factories/internal/metadata/iterate_metadata_tuple.js.map +1 -1
  49. package/lib/factories/internal/metadata/iterate_metadata_type_tags.d.ts +3 -0
  50. package/lib/factories/internal/metadata/iterate_metadata_type_tags.js +157 -0
  51. package/lib/factories/internal/metadata/iterate_metadata_type_tags.js.map +1 -0
  52. package/lib/functional/$ProtobufWriter.js.map +1 -1
  53. package/lib/functional/$any.js +2 -1
  54. package/lib/functional/$any.js.map +1 -1
  55. package/lib/functional/$clone.d.ts +2 -0
  56. package/lib/functional/$clone.js +8 -0
  57. package/lib/functional/$clone.js.map +1 -0
  58. package/lib/json.d.ts +15 -15
  59. package/lib/misc.d.ts +42 -42
  60. package/lib/module.d.ts +20 -56
  61. package/lib/module.js +4 -17
  62. package/lib/module.js.map +1 -1
  63. package/lib/programmers/AssertProgrammer.js +2 -4
  64. package/lib/programmers/AssertProgrammer.js.map +1 -1
  65. package/lib/programmers/CheckerProgrammer.js +39 -30
  66. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  67. package/lib/programmers/FeatureProgrammer.d.ts +4 -4
  68. package/lib/programmers/FeatureProgrammer.js.map +1 -1
  69. package/lib/programmers/IsProgrammer.d.ts +1 -1
  70. package/lib/programmers/IsProgrammer.js +3 -5
  71. package/lib/programmers/IsProgrammer.js.map +1 -1
  72. package/lib/programmers/RandomProgrammer.js +328 -142
  73. package/lib/programmers/RandomProgrammer.js.map +1 -1
  74. package/lib/programmers/ValidateProgrammer.js +2 -4
  75. package/lib/programmers/ValidateProgrammer.js.map +1 -1
  76. package/lib/programmers/helpers/AtomicPredicator.js +2 -2
  77. package/lib/programmers/helpers/AtomicPredicator.js.map +1 -1
  78. package/lib/programmers/helpers/FunctionImporeter.d.ts +2 -0
  79. package/lib/programmers/helpers/FunctionImporeter.js +2 -1
  80. package/lib/programmers/helpers/FunctionImporeter.js.map +1 -1
  81. package/lib/programmers/helpers/ICheckEntry.d.ts +1 -1
  82. package/lib/programmers/helpers/ProtobufUtil.js +2 -2
  83. package/lib/programmers/helpers/ProtobufUtil.js.map +1 -1
  84. package/lib/programmers/helpers/RandomJoiner.d.ts +4 -4
  85. package/lib/programmers/helpers/RandomJoiner.js.map +1 -1
  86. package/lib/programmers/helpers/RandomRanger.d.ts +6 -6
  87. package/lib/programmers/helpers/RandomRanger.js.map +1 -1
  88. package/lib/programmers/helpers/StringifyPredicator.js +1 -2
  89. package/lib/programmers/helpers/StringifyPredicator.js.map +1 -1
  90. package/lib/programmers/helpers/UnionExplorer.d.ts +8 -8
  91. package/lib/programmers/helpers/UnionExplorer.js +40 -29
  92. package/lib/programmers/helpers/UnionExplorer.js.map +1 -1
  93. package/lib/programmers/helpers/disable_function_importer_declare.js +1 -0
  94. package/lib/programmers/helpers/disable_function_importer_declare.js.map +1 -1
  95. package/lib/programmers/internal/application_array.js +1 -1
  96. package/lib/programmers/internal/application_array.js.map +1 -1
  97. package/lib/programmers/internal/application_default_string.js +2 -2
  98. package/lib/programmers/internal/application_default_string.js.map +1 -1
  99. package/lib/programmers/internal/application_resolved.d.ts +2 -2
  100. package/lib/programmers/internal/application_resolved.js +2 -2
  101. package/lib/programmers/internal/application_resolved.js.map +1 -1
  102. package/lib/programmers/internal/application_schema.js +7 -7
  103. package/lib/programmers/internal/application_schema.js.map +1 -1
  104. package/lib/programmers/internal/application_string.js.map +1 -1
  105. package/lib/programmers/internal/application_tuple.js +10 -9
  106. package/lib/programmers/internal/application_tuple.js.map +1 -1
  107. package/lib/programmers/internal/check_array_length.js.map +1 -1
  108. package/lib/programmers/internal/check_array_tags.js +39 -0
  109. package/lib/programmers/internal/check_array_tags.js.map +1 -0
  110. package/lib/programmers/internal/check_bigint.js +88 -74
  111. package/lib/programmers/internal/check_bigint.js.map +1 -1
  112. package/lib/programmers/internal/check_number.js +142 -131
  113. package/lib/programmers/internal/check_number.js.map +1 -1
  114. package/lib/programmers/internal/check_string.js +30 -6
  115. package/lib/programmers/internal/check_string.js.map +1 -1
  116. package/lib/programmers/internal/check_string_tags.js.map +1 -1
  117. package/lib/programmers/internal/check_template.js +16 -49
  118. package/lib/programmers/internal/check_template.js.map +1 -1
  119. package/lib/programmers/internal/check_union_array_like.js +3 -2
  120. package/lib/programmers/internal/check_union_array_like.js.map +1 -1
  121. package/lib/programmers/internal/metadata_to_pattern.js +4 -4
  122. package/lib/programmers/internal/metadata_to_pattern.js.map +1 -1
  123. package/lib/programmers/internal/stringify_dynamic_properties.js +2 -1
  124. package/lib/programmers/internal/stringify_dynamic_properties.js.map +1 -1
  125. package/lib/programmers/internal/wrap_metadata_rest_tuple.js +9 -5
  126. package/lib/programmers/internal/wrap_metadata_rest_tuple.js.map +1 -1
  127. package/lib/programmers/json/JsonStringifyProgrammer.js +33 -27
  128. package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
  129. package/lib/programmers/misc/MiscAssertCloneProgrammer.js +1 -1
  130. package/lib/programmers/misc/MiscAssertCloneProgrammer.js.map +1 -1
  131. package/lib/programmers/misc/MiscCloneProgrammer.js +124 -43
  132. package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
  133. package/lib/programmers/misc/MiscIsCloneProgrammer.js +1 -1
  134. package/lib/programmers/misc/MiscIsCloneProgrammer.js.map +1 -1
  135. package/lib/programmers/misc/MiscLiteralsProgrammer.js +3 -3
  136. package/lib/programmers/misc/MiscLiteralsProgrammer.js.map +1 -1
  137. package/lib/programmers/misc/MiscPruneProgrammer.js +15 -15
  138. package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
  139. package/lib/programmers/misc/MiscValidateCloneProgrammer.js +1 -1
  140. package/lib/programmers/misc/MiscValidateCloneProgrammer.js.map +1 -1
  141. package/lib/programmers/protobuf/ProtobufAssertDecodeProgrammer.js +3 -3
  142. package/lib/programmers/protobuf/ProtobufAssertDecodeProgrammer.js.map +1 -1
  143. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js +8 -8
  144. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js.map +1 -1
  145. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js +3 -3
  146. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js.map +1 -1
  147. package/lib/programmers/protobuf/ProtobufIsDecodeProgrammer.js +2 -2
  148. package/lib/programmers/protobuf/ProtobufIsDecodeProgrammer.js.map +1 -1
  149. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js +1 -1
  150. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js.map +1 -1
  151. package/lib/programmers/protobuf/ProtobufValidateDecodeProgrammer.js +1 -1
  152. package/lib/programmers/protobuf/ProtobufValidateDecodeProgrammer.js.map +1 -1
  153. package/lib/protobuf.d.ts +631 -10
  154. package/lib/protobuf.js +13 -13
  155. package/lib/protobuf.js.map +1 -1
  156. package/lib/schemas/json/IJsonSchema.d.ts +2 -2
  157. package/lib/schemas/metadata/IMetadata.d.ts +13 -6
  158. package/lib/schemas/metadata/IMetadataAlias.d.ts +2 -2
  159. package/lib/schemas/metadata/IMetadataArray.d.ts +4 -6
  160. package/lib/schemas/metadata/IMetadataArrayType.d.ts +8 -0
  161. package/lib/{CustomValidatorMap.js → schemas/metadata/IMetadataArrayType.js} +1 -1
  162. package/lib/schemas/metadata/IMetadataArrayType.js.map +1 -0
  163. package/lib/schemas/metadata/IMetadataAtomic.d.ts +5 -0
  164. package/lib/schemas/metadata/{IMetadataResolved.js → IMetadataAtomic.js} +1 -1
  165. package/lib/schemas/metadata/IMetadataAtomic.js.map +1 -0
  166. package/lib/schemas/metadata/IMetadataCollection.d.ts +4 -4
  167. package/lib/schemas/metadata/{IMetadataTag.d.ts → IMetadataCommentTag.d.ts} +2 -2
  168. package/lib/schemas/metadata/IMetadataCommentTag.js +3 -0
  169. package/lib/schemas/metadata/IMetadataCommentTag.js.map +1 -0
  170. package/lib/schemas/metadata/{IMetadataResolved.d.ts → IMetadataEscaped.d.ts} +1 -1
  171. package/lib/schemas/metadata/IMetadataEscaped.js +3 -0
  172. package/lib/schemas/metadata/IMetadataEscaped.js.map +1 -0
  173. package/lib/schemas/metadata/IMetadataProperty.d.ts +2 -2
  174. package/lib/schemas/metadata/IMetadataTuple.d.ts +4 -6
  175. package/lib/schemas/metadata/IMetadataTupleType.d.ts +8 -0
  176. package/lib/schemas/metadata/IMetadataTupleType.js +3 -0
  177. package/lib/schemas/metadata/IMetadataTupleType.js.map +1 -0
  178. package/lib/schemas/metadata/IMetadataTypeTag.d.ts +6 -0
  179. package/lib/schemas/metadata/IMetadataTypeTag.js +3 -0
  180. package/lib/schemas/metadata/IMetadataTypeTag.js.map +1 -0
  181. package/lib/schemas/metadata/Metadata.d.ts +4 -4
  182. package/lib/schemas/metadata/Metadata.js +217 -157
  183. package/lib/schemas/metadata/Metadata.js.map +1 -1
  184. package/lib/schemas/metadata/MetadataAlias.d.ts +2 -2
  185. package/lib/schemas/metadata/MetadataArray.d.ts +6 -6
  186. package/lib/schemas/metadata/MetadataArray.js +5 -19
  187. package/lib/schemas/metadata/MetadataArray.js.map +1 -1
  188. package/lib/schemas/metadata/MetadataArrayType.d.ts +14 -0
  189. package/lib/schemas/metadata/MetadataArrayType.js +36 -0
  190. package/lib/schemas/metadata/MetadataArrayType.js.map +1 -0
  191. package/lib/schemas/metadata/{MetadataResolved.d.ts → MetadataEscaped.d.ts} +3 -3
  192. package/lib/schemas/metadata/{MetadataResolved.js → MetadataEscaped.js} +11 -11
  193. package/lib/schemas/metadata/MetadataEscaped.js.map +1 -0
  194. package/lib/schemas/metadata/MetadataProperty.d.ts +2 -2
  195. package/lib/schemas/metadata/MetadataTuple.d.ts +4 -6
  196. package/lib/schemas/metadata/MetadataTuple.js +5 -19
  197. package/lib/schemas/metadata/MetadataTuple.js.map +1 -1
  198. package/lib/schemas/metadata/MetadataTupleType.d.ts +13 -0
  199. package/lib/schemas/metadata/MetadataTupleType.js +40 -0
  200. package/lib/schemas/metadata/MetadataTupleType.js.map +1 -0
  201. package/lib/tags/ExclusiveMaximum.d.ts +8 -0
  202. package/lib/tags/ExclusiveMaximum.js +3 -0
  203. package/lib/tags/ExclusiveMaximum.js.map +1 -0
  204. package/lib/tags/ExclusiveMinimum.d.ts +8 -0
  205. package/lib/tags/ExclusiveMinimum.js +3 -0
  206. package/lib/tags/ExclusiveMinimum.js.map +1 -0
  207. package/lib/tags/Format.d.ts +8 -0
  208. package/lib/tags/Format.js +3 -0
  209. package/lib/tags/Format.js.map +1 -0
  210. package/lib/tags/MaxItems.d.ts +8 -0
  211. package/lib/tags/MaxItems.js +3 -0
  212. package/lib/tags/MaxItems.js.map +1 -0
  213. package/lib/tags/MaxLength.d.ts +8 -0
  214. package/lib/tags/MaxLength.js +3 -0
  215. package/lib/tags/MaxLength.js.map +1 -0
  216. package/lib/tags/Maximum.d.ts +8 -0
  217. package/lib/tags/Maximum.js +3 -0
  218. package/lib/tags/Maximum.js.map +1 -0
  219. package/lib/tags/MinItems.d.ts +8 -0
  220. package/lib/tags/MinItems.js +3 -0
  221. package/lib/tags/MinItems.js.map +1 -0
  222. package/lib/tags/MinLength.d.ts +8 -0
  223. package/lib/tags/MinLength.js +3 -0
  224. package/lib/tags/MinLength.js.map +1 -0
  225. package/lib/tags/Minimum.d.ts +8 -0
  226. package/lib/tags/Minimum.js +3 -0
  227. package/lib/tags/Minimum.js.map +1 -0
  228. package/lib/tags/MultipleOf.d.ts +8 -0
  229. package/lib/tags/MultipleOf.js +3 -0
  230. package/lib/tags/MultipleOf.js.map +1 -0
  231. package/lib/tags/Pattern.d.ts +8 -0
  232. package/lib/tags/Pattern.js +3 -0
  233. package/lib/tags/Pattern.js.map +1 -0
  234. package/lib/tags/TagBase.d.ts +10 -0
  235. package/lib/tags/TagBase.js +3 -0
  236. package/lib/tags/TagBase.js.map +1 -0
  237. package/lib/tags/Type.d.ts +13 -0
  238. package/lib/tags/Type.js +3 -0
  239. package/lib/tags/Type.js.map +1 -0
  240. package/lib/tags/index.d.ts +12 -0
  241. package/lib/tags/index.js +29 -0
  242. package/lib/tags/index.js.map +1 -0
  243. package/lib/transformers/FileTransformer.d.ts +1 -1
  244. package/lib/transformers/FileTransformer.js +12 -1
  245. package/lib/transformers/FileTransformer.js.map +1 -1
  246. package/lib/transformers/IProject.d.ts +1 -0
  247. package/lib/transformers/features/json/JsonApplicationTransformer.js +5 -3
  248. package/lib/transformers/features/json/JsonApplicationTransformer.js.map +1 -1
  249. package/lib/transformers/features/misc/MetadataTransformer.js +1 -1
  250. package/lib/transformers/features/misc/MetadataTransformer.js.map +1 -1
  251. package/lib/utils/RandomGenerator.js +3 -2
  252. package/lib/utils/RandomGenerator.js.map +1 -1
  253. package/package.json +2 -1
  254. package/src/Primitive.ts +19 -15
  255. package/src/Resolved.ts +116 -0
  256. package/src/factories/ExpressionFactory.ts +44 -0
  257. package/src/factories/IdentifierFactory.ts +15 -0
  258. package/src/factories/MetadataCollection.ts +18 -12
  259. package/src/factories/MetadataFactory.ts +1 -1
  260. package/src/factories/MetadataTagFactory.ts +28 -27
  261. package/src/factories/ProtobufFactory.ts +12 -10
  262. package/src/factories/internal/metadata/emend_metadata_atomics.ts +7 -5
  263. package/src/factories/internal/metadata/{emplace_metadata_array.ts → emplace_metadata_array_type.ts} +3 -3
  264. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +2 -2
  265. package/src/factories/internal/metadata/explore_metadata.ts +3 -3
  266. package/src/factories/internal/metadata/iterate_metadata_array.ts +13 -5
  267. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +6 -4
  268. package/src/factories/internal/metadata/iterate_metadata_collection.ts +29 -22
  269. package/src/factories/internal/metadata/{iterate_metadata_tag.ts → iterate_metadata_comment_tags.ts} +1 -1
  270. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +109 -15
  271. package/src/factories/internal/metadata/iterate_metadata_native.ts +0 -9
  272. package/src/factories/internal/metadata/iterate_metadata_object.ts +10 -10
  273. package/src/factories/internal/metadata/iterate_metadata_resolve.ts +6 -6
  274. package/src/factories/internal/metadata/iterate_metadata_sort.ts +4 -4
  275. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +12 -4
  276. package/src/factories/internal/metadata/iterate_metadata_type_tags.ts +183 -0
  277. package/src/functional/$any.ts +3 -1
  278. package/src/functional/$clone.ts +4 -0
  279. package/src/json.ts +15 -15
  280. package/src/misc.ts +42 -42
  281. package/src/module.ts +20 -72
  282. package/src/programmers/AssertProgrammer.ts +4 -2
  283. package/src/programmers/CheckerProgrammer.ts +81 -48
  284. package/src/programmers/FeatureProgrammer.ts +6 -6
  285. package/src/programmers/IsProgrammer.ts +5 -3
  286. package/src/programmers/RandomProgrammer.ts +360 -41
  287. package/src/programmers/ValidateProgrammer.ts +4 -2
  288. package/src/programmers/helpers/AtomicPredicator.ts +2 -2
  289. package/src/programmers/helpers/FunctionImporeter.ts +2 -0
  290. package/src/programmers/helpers/ICheckEntry.ts +1 -1
  291. package/src/programmers/helpers/ProtobufUtil.ts +1 -1
  292. package/src/programmers/helpers/RandomJoiner.ts +8 -4
  293. package/src/programmers/helpers/RandomRanger.ts +8 -8
  294. package/src/programmers/helpers/StringifyPredicator.ts +1 -2
  295. package/src/programmers/helpers/UnionExplorer.ts +48 -34
  296. package/src/programmers/helpers/disable_function_importer_declare.ts +6 -1
  297. package/src/programmers/internal/application_array.ts +5 -4
  298. package/src/programmers/internal/application_default_string.ts +6 -2
  299. package/src/programmers/internal/application_resolved.ts +4 -4
  300. package/src/programmers/internal/application_schema.ts +7 -7
  301. package/src/programmers/internal/application_string.ts +2 -2
  302. package/src/programmers/internal/application_tuple.ts +12 -11
  303. package/src/programmers/internal/check_array_length.ts +2 -2
  304. package/src/programmers/internal/check_array_tags.ts +45 -0
  305. package/src/programmers/internal/check_bigint.ts +45 -17
  306. package/src/programmers/internal/check_number.ts +97 -70
  307. package/src/programmers/internal/check_string.ts +43 -12
  308. package/src/programmers/internal/check_string_tags.ts +3 -3
  309. package/src/programmers/internal/check_template.ts +1 -12
  310. package/src/programmers/internal/check_union_array_like.ts +6 -5
  311. package/src/programmers/internal/metadata_to_pattern.ts +4 -4
  312. package/src/programmers/internal/stringify_dynamic_properties.ts +1 -1
  313. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +9 -5
  314. package/src/programmers/json/JsonStringifyProgrammer.ts +47 -29
  315. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +1 -1
  316. package/src/programmers/misc/MiscCloneProgrammer.ts +253 -55
  317. package/src/programmers/misc/MiscIsCloneProgrammer.ts +1 -1
  318. package/src/programmers/misc/MiscLiteralsProgrammer.ts +3 -3
  319. package/src/programmers/misc/MiscPruneProgrammer.ts +31 -19
  320. package/src/programmers/misc/MiscValidateCloneProgrammer.ts +1 -1
  321. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +18 -9
  322. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +18 -14
  323. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +15 -15
  324. package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +12 -2
  325. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +6 -6
  326. package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +2 -2
  327. package/src/protobuf.ts +663 -31
  328. package/src/schemas/json/IJsonSchema.ts +2 -2
  329. package/src/schemas/metadata/IMetadata.ts +13 -7
  330. package/src/schemas/metadata/IMetadataAlias.ts +2 -2
  331. package/src/schemas/metadata/IMetadataArray.ts +4 -7
  332. package/src/schemas/metadata/IMetadataArrayType.ts +10 -0
  333. package/src/schemas/metadata/IMetadataAtomic.ts +6 -0
  334. package/src/schemas/metadata/IMetadataCollection.ts +4 -4
  335. package/src/schemas/metadata/{IMetadataTag.ts → IMetadataCommentTag.ts} +17 -17
  336. package/src/schemas/metadata/IMetadataDictionary.ts +4 -4
  337. package/src/schemas/metadata/{IMetadataResolved.ts → IMetadataEscaped.ts} +1 -1
  338. package/src/schemas/metadata/IMetadataProperty.ts +2 -2
  339. package/src/schemas/metadata/IMetadataTuple.ts +4 -7
  340. package/src/schemas/metadata/IMetadataTupleType.ts +10 -0
  341. package/src/schemas/metadata/IMetadataTypeTag.ts +6 -0
  342. package/src/schemas/metadata/Metadata.ts +125 -63
  343. package/src/schemas/metadata/MetadataAlias.ts +2 -2
  344. package/src/schemas/metadata/MetadataArray.ts +10 -34
  345. package/src/schemas/metadata/MetadataArrayType.ts +57 -0
  346. package/src/schemas/metadata/{MetadataResolved.ts → MetadataEscaped.ts} +9 -9
  347. package/src/schemas/metadata/MetadataProperty.ts +2 -2
  348. package/src/schemas/metadata/MetadataTuple.ts +10 -37
  349. package/src/schemas/metadata/MetadataTupleType.ts +67 -0
  350. package/src/tags/ExclusiveMaximum.ts +8 -0
  351. package/src/tags/ExclusiveMinimum.ts +8 -0
  352. package/src/tags/Format.ts +29 -0
  353. package/src/tags/MaxItems.ts +8 -0
  354. package/src/tags/MaxLength.ts +8 -0
  355. package/src/tags/Maximum.ts +8 -0
  356. package/src/tags/MinItems.ts +8 -0
  357. package/src/tags/MinLength.ts +8 -0
  358. package/src/tags/Minimum.ts +8 -0
  359. package/src/tags/MultipleOf.ts +10 -0
  360. package/src/tags/Pattern.ts +8 -0
  361. package/src/tags/TagBase.ts +17 -0
  362. package/src/tags/Type.ts +30 -0
  363. package/src/tags/index.ts +12 -0
  364. package/src/transformers/FileTransformer.ts +2 -2
  365. package/src/transformers/IProject.ts +1 -0
  366. package/src/transformers/features/json/JsonApplicationTransformer.ts +4 -3
  367. package/src/transformers/features/misc/MetadataTransformer.ts +1 -1
  368. package/src/typings/Atomic.ts +1 -0
  369. package/src/utils/RandomGenerator.ts +4 -2
  370. package/lib/CustomValidatorMap.d.ts +0 -110
  371. package/lib/CustomValidatorMap.js.map +0 -1
  372. package/lib/factories/internal/metadata/emplace_metadata_array.d.ts +0 -5
  373. package/lib/factories/internal/metadata/emplace_metadata_array.js.map +0 -1
  374. package/lib/factories/internal/metadata/iterate_metadata_tag.d.ts +0 -2
  375. package/lib/factories/internal/metadata/iterate_metadata_tag.js.map +0 -1
  376. package/lib/programmers/internal/check_array.js +0 -44
  377. package/lib/programmers/internal/check_array.js.map +0 -1
  378. package/lib/programmers/internal/check_custom.d.ts +0 -1
  379. package/lib/programmers/internal/check_custom.js +0 -30
  380. package/lib/programmers/internal/check_custom.js.map +0 -1
  381. package/lib/schemas/metadata/IMetadataResolved.js.map +0 -1
  382. package/lib/schemas/metadata/IMetadataTag.js.map +0 -1
  383. package/lib/schemas/metadata/MetadataResolved.js.map +0 -1
  384. package/src/CustomValidatorMap.ts +0 -126
  385. package/src/programmers/internal/check_array.ts +0 -30
  386. package/src/programmers/internal/check_custom.ts +0 -31
  387. /package/lib/programmers/internal/{check_array.d.ts → check_array_tags.d.ts} +0 -0
@@ -9,7 +9,7 @@ import { MetadataCollection } from "./MetadataCollection";
9
9
 
10
10
  export namespace MetadataFactory {
11
11
  export interface IOptions {
12
- resolve: boolean;
12
+ escape: boolean;
13
13
  constant: boolean;
14
14
  absorb: boolean;
15
15
  validate?: (meta: Metadata) => void;
@@ -1,16 +1,17 @@
1
1
  import ts from "typescript";
2
2
 
3
- import { IMetadataTag } from "../schemas/metadata/IMetadataTag";
3
+ import { IMetadataAtomic } from "../schemas/metadata/IMetadataAtomic";
4
+ import { IMetadataCommentTag } from "../schemas/metadata/IMetadataCommentTag";
4
5
  import { Metadata } from "../schemas/metadata/Metadata";
5
6
 
6
7
  export namespace MetadataTagFactory {
7
8
  export const generate =
8
9
  (metadata: Metadata) =>
9
10
  (tagList: ts.JSDocTagInfo[]) =>
10
- (identifier: () => string): IMetadataTag[] => {
11
- const output: IMetadataTag[] = [];
11
+ (identifier: () => string): IMetadataCommentTag[] => {
12
+ const output: IMetadataCommentTag[] = [];
12
13
  for (const tag of tagList) {
13
- const elem: IMetadataTag | null = parse(
14
+ const elem: IMetadataCommentTag | null = parse(
14
15
  identifier,
15
16
  metadata,
16
17
  tag,
@@ -25,8 +26,8 @@ export namespace MetadataTagFactory {
25
26
  identifier: () => string,
26
27
  metadata: Metadata,
27
28
  tag: ts.JSDocTagInfo,
28
- output: IMetadataTag[],
29
- ): IMetadataTag | null => {
29
+ output: IMetadataCommentTag[],
30
+ ): IMetadataCommentTag | null => {
30
31
  const closure = _PARSER[tag.name];
31
32
  if (closure === undefined) return null;
32
33
 
@@ -46,8 +47,8 @@ export namespace MetadataTagFactory {
46
47
  identifier: () => string,
47
48
  metadata: Metadata,
48
49
  text: string,
49
- output: IMetadataTag[],
50
- ) => IMetadataTag | null
50
+ output: IMetadataCommentTag[],
51
+ ) => IMetadataCommentTag | null
51
52
  > = {
52
53
  /* -----------------------------------------------------------
53
54
  ARRAY
@@ -178,7 +179,7 @@ export namespace MetadataTagFactory {
178
179
  // Ignore arbitrary @format values in the internal metadata,
179
180
  // these are currently only supported on the typia.application() API.
180
181
  format: (identifier, metadata, str, output) => {
181
- const value: IMetadataTag.IFormat["value"] | undefined =
182
+ const value: IMetadataCommentTag.IFormat["value"] | undefined =
182
183
  FORMATS.get(str);
183
184
  validate(
184
185
  identifier,
@@ -242,7 +243,7 @@ const parse_number = (identifier: () => string, str: string): number => {
242
243
  };
243
244
 
244
245
  const LABEL = "Error on typia.MetadataTagFactory.generate()";
245
- const FORMATS: Map<string, IMetadataTag.IFormat["value"]> = new Map([
246
+ const FORMATS: Map<string, IMetadataCommentTag.IFormat["value"]> = new Map([
246
247
  ["uuid", "uuid"],
247
248
  ["email", "email"],
248
249
  ["url", "url"],
@@ -263,10 +264,10 @@ const WRONG_TYPE = (
263
264
  const validate = (
264
265
  identifier: () => string,
265
266
  metadata: Metadata,
266
- output: IMetadataTag[],
267
- kind: IMetadataTag["kind"],
267
+ output: IMetadataCommentTag[],
268
+ kind: IMetadataCommentTag["kind"],
268
269
  type: "array" | "string" | "number" | "Date",
269
- neighbors: IMetadataTag["kind"][],
270
+ neighbors: IMetadataCommentTag["kind"][],
270
271
  ): void => {
271
272
  // TYPE CHECKING
272
273
  if (type === "array") {
@@ -295,7 +296,6 @@ const validate = (
295
296
  );
296
297
  };
297
298
 
298
- // @todo: must block repeated array and tuple type
299
299
  const has_atomic =
300
300
  (type: "string" | "number" | "bigint") =>
301
301
  (visited: Set<Metadata>) =>
@@ -305,21 +305,22 @@ const has_atomic =
305
305
  return (
306
306
  metadata.atomics.find(
307
307
  type === "number"
308
- ? (atom: string) => atom === type || atom === "bigint"
309
- : (atom: string) => atom === type,
308
+ ? (atom: IMetadataAtomic) =>
309
+ atom.type === type || atom.type === "bigint"
310
+ : (atom: IMetadataAtomic) => atom.type === type,
310
311
  ) !== undefined ||
311
312
  metadata.arrays.some((array) =>
312
- has_atomic(type)(visited)(array.value),
313
+ has_atomic(type)(visited)(array.type.value),
313
314
  ) ||
314
315
  metadata.tuples.some((tuple) =>
315
- tuple.elements.some(has_atomic(type)(visited)),
316
+ tuple.type.elements.some(has_atomic(type)(visited)),
316
317
  ) ||
317
318
  metadata.maps.some((map) => has_atomic(type)(visited)(map.value)) ||
318
319
  metadata.aliases.some((alias) =>
319
320
  has_atomic(type)(visited)(alias.value),
320
321
  ) ||
321
- (metadata.resolved !== null &&
322
- has_atomic(type)(visited)(metadata.resolved.returns))
322
+ (metadata.escaped !== null &&
323
+ has_atomic(type)(visited)(metadata.escaped.returns))
323
324
  );
324
325
  };
325
326
 
@@ -332,17 +333,17 @@ const has_native =
332
333
  return (
333
334
  metadata.natives.find((native) => native === type) !== undefined ||
334
335
  metadata.arrays.some((child) =>
335
- has_native(type)(visited)(child.value),
336
+ has_native(type)(visited)(child.type.value),
336
337
  ) ||
337
338
  metadata.tuples.some((tuple) =>
338
- tuple.elements.some(has_native(type)(visited)),
339
+ tuple.type.elements.some(has_native(type)(visited)),
339
340
  ) ||
340
341
  metadata.maps.some((map) => has_native(type)(visited)(map.value)) ||
341
342
  metadata.aliases.some((alias) =>
342
343
  has_native(type)(visited)(alias.value),
343
344
  ) ||
344
- (metadata.resolved !== null &&
345
- has_native(type)(visited)(metadata.resolved.returns))
345
+ (metadata.escaped !== null &&
346
+ has_native(type)(visited)(metadata.escaped.returns))
346
347
  );
347
348
  };
348
349
 
@@ -354,11 +355,11 @@ const has_array =
354
355
  return (
355
356
  metadata.arrays.length !== 0 ||
356
357
  metadata.tuples.some((tuple) =>
357
- tuple.elements.some(has_array(visited)),
358
+ tuple.type.elements.some(has_array(visited)),
358
359
  ) ||
359
360
  metadata.maps.some((map) => has_array(visited)(map.value)) ||
360
361
  metadata.aliases.some((alias) => has_array(visited)(alias.value)) ||
361
- (metadata.resolved !== null &&
362
- has_array(visited)(metadata.resolved.returns))
362
+ (metadata.escaped !== null &&
363
+ has_array(visited)(metadata.escaped.returns))
363
364
  );
364
365
  };
@@ -18,7 +18,7 @@ export namespace ProtobufFactory {
18
18
  (type: ts.Type) => {
19
19
  // COMPOSE METADATA WITH INDIVIDUAL VALIDATIONS
20
20
  const top: Metadata = MetadataFactory.analyze(checker)({
21
- resolve: false,
21
+ escape: false,
22
22
  constant: true,
23
23
  absorb: true,
24
24
  validate: validate(method),
@@ -76,7 +76,7 @@ export namespace ProtobufFactory {
76
76
  // DO NOT ALLOW MULTI-DIMENTIONAL ARRAY
77
77
  else if (
78
78
  meta.arrays.length &&
79
- meta.arrays.some((array) => !!array.value.arrays.length)
79
+ meta.arrays.some((array) => !!array.type.value.arrays.length)
80
80
  )
81
81
  throw notSupportedError({ method })("two dimenstional array type");
82
82
  // CHILD OF ARRAY TYPE MUST BE REQUIRED
@@ -84,15 +84,15 @@ export namespace ProtobufFactory {
84
84
  meta.arrays.length &&
85
85
  meta.arrays.some(
86
86
  (array) =>
87
- array.value.isRequired() === false ||
88
- array.value.nullable === true,
87
+ array.type.value.isRequired() === false ||
88
+ array.type.value.nullable === true,
89
89
  )
90
90
  )
91
91
  throw notSupportedError({ method })("optional type in array");
92
92
  // UNION IN ARRAY
93
93
  else if (
94
94
  meta.arrays.length &&
95
- meta.arrays.some((a) => a.value.size() > 1)
95
+ meta.arrays.some((a) => a.type.value.size() > 1)
96
96
  )
97
97
  throw notSupportedError({ method })("union type in array");
98
98
  // DO DYNAMIC OBJECT IN ARRAY
@@ -100,9 +100,9 @@ export namespace ProtobufFactory {
100
100
  meta.arrays.length &&
101
101
  meta.arrays.some(
102
102
  (a) =>
103
- a.value.maps.length ||
104
- (a.value.objects.length &&
105
- a.value.objects.some(
103
+ a.type.value.maps.length ||
104
+ (a.type.value.objects.length &&
105
+ a.type.value.objects.some(
106
106
  (o) => ProtobufUtil.isStaticObject(o) === false,
107
107
  )),
108
108
  )
@@ -192,12 +192,14 @@ export namespace ProtobufFactory {
192
192
  // MAP CASES
193
193
  //----
194
194
  // MAP TYPE, BUT PROPERTY KEY TYPE IS NOT STRING
195
+ // @todo -> need to allow other typed keys
195
196
  else if (
196
197
  meta.maps.length &&
197
198
  meta.maps.some(
198
199
  (m) =>
199
200
  m.key.isBinaryUnion() ||
200
- (m.key.atomics.find((v) => v === "string") === undefined &&
201
+ (m.key.atomics.find((v) => v.type === "string") ===
202
+ undefined &&
201
203
  m.key.constants.find((c) => c.type === "string") ===
202
204
  undefined),
203
205
  )
@@ -231,7 +233,7 @@ export namespace ProtobufFactory {
231
233
  };
232
234
  }
233
235
 
234
- const prefix = (method: string) => `Error on typia.protobuf.${method}():`;
236
+ const prefix = (method: string) => `Error on ${method}():`;
235
237
 
236
238
  const notSupportedError = (p: { method: string }) => (title: string) =>
237
239
  new Error(
@@ -4,8 +4,10 @@ import { ArrayUtil } from "../../../utils/ArrayUtil";
4
4
 
5
5
  export const emend_metadata_atomics = (meta: Metadata) => {
6
6
  // ATOMICS
7
- for (const type of meta.atomics) {
8
- const index: number = meta.constants.findIndex((c) => c.type === type);
7
+ for (const a of meta.atomics) {
8
+ const index: number = meta.constants.findIndex(
9
+ (c) => c.type === a.type,
10
+ );
9
11
  if (index !== -1) meta.constants.splice(index, 1);
10
12
  }
11
13
 
@@ -18,8 +20,8 @@ export const emend_metadata_atomics = (meta: Metadata) => {
18
20
  meta.constants.splice(index, 1);
19
21
  ArrayUtil.take(
20
22
  meta.atomics,
21
- (type) => type === "boolean",
22
- () => "boolean",
23
+ (a) => a.type === "boolean",
24
+ () => ({ type: "boolean" as const, tags: [] }),
23
25
  );
24
26
  }
25
27
  }
@@ -27,7 +29,7 @@ export const emend_metadata_atomics = (meta: Metadata) => {
27
29
  // TEMPLATE
28
30
  if (
29
31
  meta.templates.length &&
30
- meta.atomics.find((type) => type === "string") !== undefined
32
+ meta.atomics.find((a) => a.type === "string") !== undefined
31
33
  )
32
34
  meta.templates.splice(0, meta.templates.length);
33
35
  };
@@ -1,7 +1,7 @@
1
1
  import ts from "typescript";
2
2
 
3
3
  import { Metadata } from "../../../schemas/metadata/Metadata";
4
- import { MetadataArray } from "../../../schemas/metadata/MetadataArray";
4
+ import { MetadataArrayType } from "../../../schemas/metadata/MetadataArrayType";
5
5
 
6
6
  import { ArrayUtil } from "../../../utils/ArrayUtil";
7
7
 
@@ -9,11 +9,11 @@ import { MetadataCollection } from "../../MetadataCollection";
9
9
  import { MetadataFactory } from "../../MetadataFactory";
10
10
  import { explore_metadata } from "./explore_metadata";
11
11
 
12
- export const emplace_metadata_array =
12
+ export const emplace_metadata_array_type =
13
13
  (checker: ts.TypeChecker) =>
14
14
  (options: MetadataFactory.IOptions) =>
15
15
  (collection: MetadataCollection) =>
16
- (type: ts.Type, nullable: boolean): MetadataArray => {
16
+ (type: ts.Type, nullable: boolean): MetadataArrayType => {
17
17
  // CHECK EXISTENCE
18
18
  const [array, newbie, setValue] = collection.emplaceArray(
19
19
  checker,
@@ -1,7 +1,7 @@
1
1
  import ts from "typescript";
2
2
 
3
3
  import { Metadata } from "../../../schemas/metadata/Metadata";
4
- import { MetadataTuple } from "../../../schemas/metadata/MetadataTuple";
4
+ import { MetadataTupleType } from "../../../schemas/metadata/MetadataTupleType";
5
5
 
6
6
  import { Writable } from "../../../typings/Writable";
7
7
 
@@ -15,7 +15,7 @@ export const emplace_metadata_tuple =
15
15
  (checker: ts.TypeChecker) =>
16
16
  (options: MetadataFactory.IOptions) =>
17
17
  (collection: MetadataCollection) =>
18
- (type: ts.TupleType, nullable: boolean): MetadataTuple => {
18
+ (type: ts.TupleType, nullable: boolean): MetadataTupleType => {
19
19
  // CHECK EXISTENCE
20
20
  const [tuple, newbie, closure] = collection.emplaceTuple(checker, type);
21
21
  ArrayUtil.add(tuple.nullables, nullable);
@@ -30,9 +30,9 @@ export const explore_metadata =
30
30
  aliased,
31
31
  );
32
32
  emend_metadata_atomics(meta);
33
- if (meta.resolved) {
34
- emend_metadata_atomics(meta.resolved.original);
35
- emend_metadata_atomics(meta.resolved.returns);
33
+ if (meta.escaped) {
34
+ emend_metadata_atomics(meta.escaped.original);
35
+ emend_metadata_atomics(meta.escaped.returns);
36
36
  }
37
37
  return meta;
38
38
  };
@@ -2,12 +2,13 @@ import ts from "typescript";
2
2
 
3
3
  import { Metadata } from "../../../schemas/metadata/Metadata";
4
4
  import { MetadataArray } from "../../../schemas/metadata/MetadataArray";
5
+ import { MetadataArrayType } from "../../../schemas/metadata/MetadataArrayType";
5
6
 
6
7
  import { ArrayUtil } from "../../../utils/ArrayUtil";
7
8
 
8
9
  import { MetadataCollection } from "../../MetadataCollection";
9
10
  import { MetadataFactory } from "../../MetadataFactory";
10
- import { emplace_metadata_array } from "./emplace_metadata_array";
11
+ import { emplace_metadata_array_type } from "./emplace_metadata_array_type";
11
12
 
12
13
  export const iterate_metadata_array =
13
14
  (checker: ts.TypeChecker) =>
@@ -16,9 +17,16 @@ export const iterate_metadata_array =
16
17
  (meta: Metadata, type: ts.Type): boolean => {
17
18
  if (!checker.isArrayType(type)) return false;
18
19
 
19
- const array: MetadataArray = emplace_metadata_array(checker)(options)(
20
- collection,
21
- )(type, meta.nullable);
22
- ArrayUtil.add(meta.arrays, array, (elem) => elem.name === array.name);
20
+ const arrayType: MetadataArrayType = emplace_metadata_array_type(
21
+ checker,
22
+ )(options)(collection)(type, meta.nullable);
23
+ ArrayUtil.add(
24
+ meta.arrays,
25
+ MetadataArray.create({
26
+ type: arrayType,
27
+ tags: [],
28
+ }),
29
+ (elem) => elem.type.name === arrayType.name,
30
+ );
23
31
  return true;
24
32
  };
@@ -2,8 +2,6 @@ import ts from "typescript";
2
2
 
3
3
  import { Metadata } from "../../../schemas/metadata/Metadata";
4
4
 
5
- import { Atomic } from "../../../typings/Atomic";
6
-
7
5
  import { ArrayUtil } from "../../../utils/ArrayUtil";
8
6
 
9
7
  const same = (type: ts.Type | null) => {
@@ -19,7 +17,11 @@ export const iterate_metadata_atomic = (
19
17
  const filter = same(type);
20
18
  const check = (info: IAtomicInfo) => {
21
19
  if (filter(info.atomic) || filter(info.literal)) {
22
- ArrayUtil.add(meta.atomics, info.name);
20
+ ArrayUtil.add(
21
+ meta.atomics,
22
+ { type: info.name, tags: [] },
23
+ (x, y) => x.type === y.type,
24
+ );
23
25
  return true;
24
26
  }
25
27
  return false;
@@ -53,7 +55,7 @@ const ATOMICS: IAtomicInfo[] = [
53
55
  ];
54
56
 
55
57
  interface IAtomicInfo {
56
- name: Atomic.Literal;
58
+ name: "boolean" | "number" | "bigint" | "string";
57
59
  atomic: ts.TypeFlags;
58
60
  literal: ts.TypeFlags;
59
61
  }
@@ -1,10 +1,10 @@
1
1
  import { Metadata } from "../../../schemas/metadata/Metadata";
2
- import { MetadataArray } from "../../../schemas/metadata/MetadataArray";
2
+ import { MetadataArrayType } from "../../../schemas/metadata/MetadataArrayType";
3
3
  import { MetadataObject } from "../../../schemas/metadata/MetadataObject";
4
- import { MetadataTuple } from "../../../schemas/metadata/MetadataTuple";
4
+ import { MetadataTupleType } from "../../../schemas/metadata/MetadataTupleType";
5
5
 
6
6
  import { MetadataCollection } from "../../MetadataCollection";
7
- import { iterate_metadata_tag } from "./iterate_metadata_tag";
7
+ import { iterate_metadata_comment_tags } from "./iterate_metadata_comment_tags";
8
8
 
9
9
  export const iterate_metadata_collection = (
10
10
  collection: MetadataCollection,
@@ -24,7 +24,7 @@ export const iterate_metadata_collection = (
24
24
  );
25
25
  }
26
26
  for (const obj of collection.objects()) {
27
- iterate_metadata_tag(obj);
27
+ iterate_metadata_comment_tags(obj);
28
28
  if (obj.recursive === null) {
29
29
  const visited: Set<Metadata> = new Set();
30
30
  collection.setObjectRecursive(
@@ -39,34 +39,38 @@ export const iterate_metadata_collection = (
39
39
 
40
40
  const isArrayRecursive =
41
41
  (visited: Set<Metadata>) =>
42
- (array: MetadataArray) =>
42
+ (array: MetadataArrayType) =>
43
43
  (meta: Metadata): boolean => {
44
44
  if (visited.has(meta)) return false;
45
45
  visited.add(meta);
46
46
 
47
47
  return (
48
48
  meta.arrays.some(
49
- (a) => a === array || isArrayRecursive(visited)(array)(a.value),
49
+ (a) =>
50
+ a.type === array ||
51
+ isArrayRecursive(visited)(array)(a.type.value),
50
52
  ) ||
51
53
  meta.aliases.some((alias) =>
52
54
  isArrayRecursive(visited)(array)(alias.value),
53
55
  ) ||
54
56
  meta.tuples.some(
55
57
  (t) =>
56
- !t.recursive &&
57
- t.elements.some((e) => isArrayRecursive(visited)(array)(e)),
58
+ !t.type.recursive &&
59
+ t.type.elements.some((e) =>
60
+ isArrayRecursive(visited)(array)(e),
61
+ ),
58
62
  ) ||
59
63
  meta.maps.some((m) => isArrayRecursive(visited)(array)(m.value)) ||
60
64
  meta.sets.some((s) => isArrayRecursive(visited)(array)(s)) ||
61
- (meta.resolved !== null &&
62
- isArrayRecursive(visited)(array)(meta.resolved.returns)) ||
65
+ (meta.escaped !== null &&
66
+ isArrayRecursive(visited)(array)(meta.escaped.returns)) ||
63
67
  (meta.rest !== null && isArrayRecursive(visited)(array)(meta.rest))
64
68
  );
65
69
  };
66
70
 
67
71
  const isTupleRecursive =
68
72
  (visited: Set<Metadata>) =>
69
- (tuple: MetadataTuple) =>
73
+ (tuple: MetadataTupleType) =>
70
74
  (meta: Metadata): boolean => {
71
75
  if (visited.has(meta)) return false;
72
76
  visited.add(meta);
@@ -74,20 +78,23 @@ const isTupleRecursive =
74
78
  return (
75
79
  meta.tuples.some(
76
80
  (t) =>
77
- t === tuple ||
78
- t.elements.some((e) => isTupleRecursive(visited)(tuple)(e)),
81
+ t.type === tuple ||
82
+ t.type.elements.some((e) =>
83
+ isTupleRecursive(visited)(tuple)(e),
84
+ ),
79
85
  ) ||
80
86
  meta.arrays.some(
81
87
  (a) =>
82
- !a.recursive && isTupleRecursive(visited)(tuple)(a.value),
88
+ !a.type.recursive &&
89
+ isTupleRecursive(visited)(tuple)(a.type.value),
83
90
  ) ||
84
91
  meta.maps.some((m) => isTupleRecursive(visited)(tuple)(m.value)) ||
85
92
  meta.sets.some((s) => isTupleRecursive(visited)(tuple)(s)) ||
86
93
  meta.aliases.some((alias) =>
87
94
  isTupleRecursive(visited)(tuple)(alias.value),
88
95
  ) ||
89
- (meta.resolved !== null &&
90
- isTupleRecursive(visited)(tuple)(meta.resolved.returns)) ||
96
+ (meta.escaped !== null &&
97
+ isTupleRecursive(visited)(tuple)(meta.escaped.returns)) ||
91
98
  (meta.rest !== null && isTupleRecursive(visited)(tuple)(meta.rest))
92
99
  );
93
100
  };
@@ -112,13 +119,13 @@ const isObjectRecursive =
112
119
  ) ||
113
120
  meta.arrays.some(
114
121
  (array) =>
115
- !array.recursive &&
116
- isObjectRecursive(visited)(obj)(array.value),
122
+ !array.type.recursive &&
123
+ isObjectRecursive(visited)(obj)(array.type.value),
117
124
  ) ||
118
125
  meta.tuples.some(
119
126
  (tuple) =>
120
- !tuple.recursive &&
121
- tuple.elements.some((elem) =>
127
+ !tuple.type.recursive &&
128
+ tuple.type.elements.some((elem) =>
122
129
  isObjectRecursive(visited)(obj)(elem),
123
130
  ),
124
131
  ) ||
@@ -126,8 +133,8 @@ const isObjectRecursive =
126
133
  isObjectRecursive(visited)(obj)(map.value),
127
134
  ) ||
128
135
  meta.sets.some((value) => isObjectRecursive(visited)(obj)(value)) ||
129
- (meta.resolved !== null &&
130
- isObjectRecursive(visited)(obj)(meta.resolved.returns)) ||
136
+ (meta.escaped !== null &&
137
+ isObjectRecursive(visited)(obj)(meta.escaped.returns)) ||
131
138
  (meta.rest !== null && isObjectRecursive(visited)(obj)(meta.rest))
132
139
  );
133
140
  };
@@ -6,7 +6,7 @@ import { Escaper } from "../../../utils/Escaper";
6
6
 
7
7
  import { MetadataTagFactory } from "../../MetadataTagFactory";
8
8
 
9
- export const iterate_metadata_tag = (obj: MetadataObject) => {
9
+ export const iterate_metadata_comment_tags = (obj: MetadataObject) => {
10
10
  if (obj.tagged_ === true) return;
11
11
  obj.tagged_ = true;
12
12