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
@@ -1,25 +1,45 @@
1
1
  import ts from "typescript";
2
2
 
3
- import { IMetadataTag } from "../../schemas/metadata/IMetadataTag";
3
+ import { ExpressionFactory } from "../../factories/ExpressionFactory";
4
4
 
5
- import { FunctionImporter } from "../helpers/FunctionImporeter";
6
- import { check_custom } from "./check_custom";
7
- import { check_string_tags } from "./check_string_tags";
5
+ import { MetadataAtomic } from "../../schemas/metadata/MetadataAtomic";
6
+
7
+ import { IProject } from "../../transformers/IProject";
8
+
9
+ import { ICheckEntry } from "../helpers/ICheckEntry";
8
10
 
9
11
  /**
10
12
  * @internal
11
13
  */
12
14
  export const check_string =
13
- (importer: FunctionImporter) =>
14
- (metaTags: IMetadataTag[]) =>
15
- (jsDocTags: ts.JSDocTagInfo[]) =>
16
- (input: ts.Expression) => ({
17
- expression: ts.factory.createStrictEquality(
18
- ts.factory.createStringLiteral("string"),
19
- ts.factory.createTypeOfExpression(input),
20
- ),
21
- tags: [
22
- ...check_string_tags(importer)(metaTags)(input),
23
- ...check_custom("string")(importer)(jsDocTags)(input),
24
- ],
25
- });
15
+ (project: IProject) =>
16
+ (atomic: MetadataAtomic) =>
17
+ (input: ts.Expression): ICheckEntry => {
18
+ const conditions: ICheckEntry.ICondition[][] =
19
+ check_string_type_tags(project)(atomic)(input);
20
+
21
+ return {
22
+ expected: atomic.getName(),
23
+ expression: ts.factory.createStrictEquality(
24
+ ts.factory.createStringLiteral("string"),
25
+ ts.factory.createTypeOfExpression(input),
26
+ ),
27
+ conditions,
28
+ };
29
+ };
30
+
31
+ /**
32
+ * @internal
33
+ */
34
+ const check_string_type_tags =
35
+ (project: IProject) =>
36
+ (atomic: MetadataAtomic) =>
37
+ (input: ts.Expression): ICheckEntry.ICondition[][] =>
38
+ atomic.tags.map((row) =>
39
+ row.map((tag) => ({
40
+ expected: `string & ${tag.name}`,
41
+ expression: ExpressionFactory.transpile(project.context)(
42
+ tag.validate,
43
+ )(input),
44
+ })),
45
+ );
@@ -1,22 +1,14 @@
1
1
  import ts from "typescript";
2
2
 
3
- import { IJsDocTagInfo } from "../../schemas/metadata/IJsDocTagInfo";
4
- import { IMetadataTag } from "../../schemas/metadata/IMetadataTag";
5
3
  import { Metadata } from "../../schemas/metadata/Metadata";
6
4
 
7
- import { FunctionImporter } from "../helpers/FunctionImporeter";
8
5
  import { ICheckEntry } from "../helpers/ICheckEntry";
9
- import { check_custom } from "./check_custom";
10
- import { check_string_tags } from "./check_string_tags";
11
6
  import { template_to_pattern } from "./template_to_pattern";
12
7
 
13
8
  /**
14
9
  * @internal
15
10
  */
16
11
  export const check_template =
17
- (importer: FunctionImporter) =>
18
- (metaTags: IMetadataTag[]) =>
19
- (jsDocTags: IJsDocTagInfo[]) =>
20
12
  (templates: Metadata[][]) =>
21
13
  (input: ts.Expression): ICheckEntry => {
22
14
  // TYPEOF STRING & TAGS
@@ -48,9 +40,22 @@ export const check_template =
48
40
  expression: conditions.reduce((x, y) =>
49
41
  ts.factory.createLogicalAnd(x, y),
50
42
  ),
51
- tags: [
52
- ...check_string_tags(importer)(metaTags)(input),
53
- ...check_custom("string")(importer)(jsDocTags)(input),
54
- ],
43
+ conditions: [],
44
+ expected: templates
45
+ .map(
46
+ (tpl) =>
47
+ "`" +
48
+ tpl
49
+ .map((child) =>
50
+ child.isConstant() && child.size() === 1
51
+ ? child.constants[0]!.values[0]!
52
+ : `$\{${child.getName()}\}`,
53
+ )
54
+ .join("")
55
+ .split("`")
56
+ .join("\\`") +
57
+ "`",
58
+ )
59
+ .join(" | "),
55
60
  };
56
61
  };
@@ -4,8 +4,8 @@ import { IdentifierFactory } from "../../factories/IdentifierFactory";
4
4
  import { StatementFactory } from "../../factories/StatementFactory";
5
5
  import { TypeFactory } from "../../factories/TypeFactory";
6
6
 
7
- import { IMetadataTag } from "../../schemas/metadata/IMetadataTag";
8
7
  import { MetadataArray } from "../../schemas/metadata/MetadataArray";
8
+ import { MetadataArrayType } from "../../schemas/metadata/MetadataArrayType";
9
9
  import { MetadataTuple } from "../../schemas/metadata/MetadataTuple";
10
10
 
11
11
  import { CheckerProgrammer } from "../CheckerProgrammer";
@@ -25,8 +25,6 @@ export const check_union_array_like =
25
25
  input: ts.Expression,
26
26
  origins: Origin[],
27
27
  explore: FeatureProgrammer.IExplore,
28
- tags: IMetadataTag[],
29
- jsDocTags: ts.JSDocTagInfo[],
30
28
  ): ts.ArrowFunction => {
31
29
  // ONLY ONE TYPE
32
30
  const targets: Array<Category> = origins.map(accessor.transform);
@@ -37,13 +35,7 @@ export const check_union_array_like =
37
35
  parameters,
38
36
  undefined,
39
37
  undefined,
40
- props.decoder(
41
- accessor.array(input),
42
- targets[0]!,
43
- explore,
44
- tags,
45
- jsDocTags,
46
- ),
38
+ props.decoder(accessor.array(input), targets[0]!, explore),
47
39
  );
48
40
 
49
41
  const array = ts.factory.createIdentifier("array");
@@ -66,7 +58,7 @@ export const check_union_array_like =
66
58
  [
67
59
  IdentifierFactory.parameter(
68
60
  "top",
69
- meta instanceof MetadataArray
61
+ meta instanceof MetadataArrayType
70
62
  ? TypeFactory.keyword("any")
71
63
  : ts.factory.createTypeReferenceNode(
72
64
  "any[]",
@@ -82,12 +74,10 @@ export const check_union_array_like =
82
74
  ...explore,
83
75
  tracable: false,
84
76
  postfix:
85
- meta instanceof MetadataArray
77
+ meta instanceof MetadataArrayType
86
78
  ? `"[0]"`
87
79
  : "",
88
80
  },
89
- tags,
90
- jsDocTags,
91
81
  array,
92
82
  ),
93
83
  ),
@@ -109,8 +99,6 @@ export const check_union_array_like =
109
99
  ...explore,
110
100
  tracable: true,
111
101
  },
112
- tags,
113
- jsDocTags,
114
102
  ),
115
103
  ),
116
104
  ],
@@ -300,8 +288,6 @@ export namespace check_union_array_like {
300
288
  front: ts.Expression,
301
289
  target: Element,
302
290
  explore: FeatureProgrammer.IExplore,
303
- tags: IMetadataTag[],
304
- jsDocTags: ts.JSDocTagInfo[],
305
291
  container: ts.Expression,
306
292
  ): ts.Expression;
307
293
  decoder: UnionExplorer.Decoder<Category>;
@@ -41,23 +41,17 @@ export const feature_object_entries =
41
41
  input: propInput,
42
42
  key: prop.key,
43
43
  meta: prop.value,
44
- expression: config.decoder()(
45
- propInput,
46
- prop.value,
47
- {
48
- tracable: config.path || config.trace,
49
- source: "function",
50
- from,
51
- postfix:
52
- sole !== null
53
- ? IdentifierFactory.postfix(sole)
54
- : (() => {
55
- importer.use("join");
56
- return `$join(key)`;
57
- })(),
58
- },
59
- prop.tags,
60
- prop.jsDocTags,
61
- ),
44
+ expression: config.decoder()(propInput, prop.value, {
45
+ tracable: config.path || config.trace,
46
+ source: "function",
47
+ from,
48
+ postfix:
49
+ sole !== null
50
+ ? IdentifierFactory.postfix(sole)
51
+ : (() => {
52
+ importer.use("join");
53
+ return `$join(key)`;
54
+ })(),
55
+ }),
62
56
  };
63
57
  });
@@ -11,7 +11,7 @@ import { template_to_pattern } from "./template_to_pattern";
11
11
  export const metadata_to_pattern =
12
12
  (top: boolean) =>
13
13
  (meta: Metadata): string => {
14
- if (meta.atomics.find((type) => type === "string") !== undefined)
14
+ if (meta.atomics.find((a) => a.type === "string") !== undefined)
15
15
  return "(.*)";
16
16
 
17
17
  const values: string[] = ArrayUtil.flat(
@@ -21,10 +21,10 @@ export const metadata_to_pattern =
21
21
  return c.values.map((str) => PatternUtil.escape(str));
22
22
  }),
23
23
  );
24
- for (const type of meta.atomics)
25
- if (type === "number" || type === "bigint")
24
+ for (const a of meta.atomics)
25
+ if (a.type === "number" || a.type === "bigint")
26
26
  values.push(PatternUtil.NUMBER);
27
- else if (type === "boolean") values.push(PatternUtil.BOOLEAN);
27
+ else if (a.type === "boolean") values.push(PatternUtil.BOOLEAN);
28
28
  for (const childTpl of meta.templates)
29
29
  values.push("(" + template_to_pattern(false)(childTpl) + ")");
30
30
 
@@ -3,7 +3,7 @@ import ts from "typescript";
3
3
  import { ExpressionFactory } from "../../factories/ExpressionFactory";
4
4
  import { LiteralFactory } from "../../factories/LiteralFactory";
5
5
 
6
- import { ICommentTag } from "../../schemas/metadata/ICommentTag";
6
+ import { IMetadataTypeTag } from "../../schemas/metadata/IMetadataTypeTag";
7
7
 
8
8
  import { Customizable } from "../../typings/Customizable";
9
9
 
@@ -13,7 +13,7 @@ import { Customizable } from "../../typings/Customizable";
13
13
  export const random_custom =
14
14
  (accessor: (name: string) => ts.Expression) =>
15
15
  (type: keyof Customizable) =>
16
- (comments: ICommentTag[]) =>
16
+ (tags: IMetadataTypeTag[]) =>
17
17
  (expression: ts.Expression) =>
18
18
  ExpressionFactory.coalesce(
19
19
  ts.factory.createCallChain(
@@ -24,6 +24,6 @@ export const random_custom =
24
24
  ),
25
25
  ts.factory.createToken(ts.SyntaxKind.QuestionDotToken),
26
26
  undefined,
27
- [LiteralFactory.generate(comments)],
27
+ [LiteralFactory.generate(tags)],
28
28
  ),
29
29
  )(expression);
@@ -125,7 +125,7 @@ export const stringify_dynamic_properties = (
125
125
  const simple: boolean =
126
126
  dynamic.length === 1 &&
127
127
  dynamic[0]!.key.size() === 1 &&
128
- dynamic[0]!.key.atomics[0] === "string";
128
+ dynamic[0]!.key.atomics[0]?.type === "string";
129
129
  if (simple === true) {
130
130
  statements.push(stringify(dynamic[0]!));
131
131
  return output();
@@ -1,15 +1,19 @@
1
1
  import { Metadata } from "../../schemas/metadata/Metadata";
2
2
  import { MetadataArray } from "../../schemas/metadata/MetadataArray";
3
+ import { MetadataArrayType } from "../../schemas/metadata/MetadataArrayType";
3
4
 
4
5
  export const wrap_metadata_rest_tuple = (rest: Metadata) => {
5
6
  const wrapper: Metadata = Metadata.initialize();
6
7
  wrapper.arrays.push(
7
8
  MetadataArray.create({
8
- name: `...${rest.getName()}`,
9
- value: rest,
10
- nullables: [],
11
- recursive: false,
12
- index: null,
9
+ type: MetadataArrayType.create({
10
+ name: `...${rest.getName()}`,
11
+ value: rest,
12
+ nullables: [],
13
+ recursive: false,
14
+ index: null,
15
+ }),
16
+ tags: [],
13
17
  }),
14
18
  );
15
19
  return wrapper;
@@ -8,12 +8,12 @@ import { StatementFactory } from "../../factories/StatementFactory";
8
8
  import { TypeFactory } from "../../factories/TypeFactory";
9
9
  import { ValueFactory } from "../../factories/ValueFactory";
10
10
 
11
- import { IJsDocTagInfo } from "../../schemas/metadata/IJsDocTagInfo";
12
- import { IMetadataTag } from "../../schemas/metadata/IMetadataTag";
13
11
  import { Metadata } from "../../schemas/metadata/Metadata";
14
12
  import { MetadataArray } from "../../schemas/metadata/MetadataArray";
13
+ import { MetadataAtomic } from "../../schemas/metadata/MetadataAtomic";
15
14
  import { MetadataObject } from "../../schemas/metadata/MetadataObject";
16
15
  import { MetadataTuple } from "../../schemas/metadata/MetadataTuple";
16
+ import { MetadataTupleType } from "../../schemas/metadata/MetadataTupleType";
17
17
 
18
18
  import { IProject } from "../../transformers/IProject";
19
19
 
@@ -66,7 +66,7 @@ export namespace JsonStringifyProgrammer {
66
66
  collection
67
67
  .arrays()
68
68
  .filter((a) => a.recursive)
69
- .map((array, i) =>
69
+ .map((type, i) =>
70
70
  StatementFactory.constant(
71
71
  `${config.prefix}a${i}`,
72
72
  ts.factory.createArrowFunction(
@@ -79,7 +79,10 @@ export namespace JsonStringifyProgrammer {
79
79
  undefined,
80
80
  decode_array_inline(config)(importer)(
81
81
  ts.factory.createIdentifier("input"),
82
- array,
82
+ MetadataArray.create({
83
+ type,
84
+ tags: [],
85
+ }),
83
86
  {
84
87
  tracable: config.trace,
85
88
  source: "function",
@@ -213,7 +216,9 @@ export namespace JsonStringifyProgrammer {
213
216
  )
214
217
  if (AtomicPredicator.template(meta)) {
215
218
  const partial = Metadata.initialize();
216
- partial.atomics.push("string"),
219
+ partial.atomics.push(
220
+ MetadataAtomic.create({ type: "string", tags: [] }),
221
+ ),
217
222
  unions.push({
218
223
  type: "template literal",
219
224
  is: () =>
@@ -221,8 +226,6 @@ export namespace JsonStringifyProgrammer {
221
226
  input,
222
227
  partial,
223
228
  explore,
224
- [],
225
- [],
226
229
  ),
227
230
  value: () =>
228
231
  decode_atomic(project)(importer)(
@@ -245,12 +248,15 @@ export namespace JsonStringifyProgrammer {
245
248
  input,
246
249
  (() => {
247
250
  const partial = Metadata.initialize();
248
- partial.atomics.push(constant.type);
251
+ partial.atomics.push(
252
+ MetadataAtomic.create({
253
+ type: constant.type,
254
+ tags: [],
255
+ }),
256
+ );
249
257
  return partial;
250
258
  })(),
251
259
  explore,
252
- [],
253
- [],
254
260
  ),
255
261
  value: () =>
256
262
  decode_atomic(project)(importer)(
@@ -267,12 +273,15 @@ export namespace JsonStringifyProgrammer {
267
273
  input,
268
274
  (() => {
269
275
  const partial = Metadata.initialize();
270
- partial.atomics.push("string");
276
+ partial.atomics.push(
277
+ MetadataAtomic.create({
278
+ type: "string",
279
+ tags: [],
280
+ }),
281
+ );
271
282
  return partial;
272
283
  })(),
273
284
  explore,
274
- [],
275
- [],
276
285
  ),
277
286
  value: () =>
278
287
  decode_constant_string(project)(importer)(
@@ -283,8 +292,8 @@ export namespace JsonStringifyProgrammer {
283
292
  });
284
293
 
285
294
  /// ATOMICS
286
- for (const type of meta.atomics)
287
- if (AtomicPredicator.atomic(meta)(type))
295
+ for (const a of meta.atomics)
296
+ if (AtomicPredicator.atomic(meta)(a.type))
288
297
  unions.push({
289
298
  type: "atomic",
290
299
  is: () =>
@@ -292,24 +301,22 @@ export namespace JsonStringifyProgrammer {
292
301
  input,
293
302
  (() => {
294
303
  const partial = Metadata.initialize();
295
- partial.atomics.push(type);
304
+ partial.atomics.push(a);
296
305
  return partial;
297
306
  })(),
298
307
  explore,
299
- [],
300
- [],
301
308
  ),
302
309
  value: () =>
303
310
  decode_atomic(project)(importer)(
304
311
  input,
305
- type,
312
+ a.type,
306
313
  explore,
307
314
  ),
308
315
  });
309
316
 
310
317
  // TUPLES
311
318
  for (const tuple of meta.tuples) {
312
- for (const child of tuple.elements)
319
+ for (const child of tuple.type.elements)
313
320
  if (StringifyPredicator.undefindable(meta))
314
321
  throw new Error(
315
322
  `Error on typia.json.stringify(): tuple cannot contain undefined value - (${child.getName()}).`,
@@ -325,8 +332,6 @@ export namespace JsonStringifyProgrammer {
325
332
  return partial;
326
333
  })(),
327
334
  explore,
328
- [],
329
- [],
330
335
  ),
331
336
  value: () =>
332
337
  decode_tuple(project)(config)(importer)(
@@ -340,9 +345,9 @@ export namespace JsonStringifyProgrammer {
340
345
  // ARRAYS
341
346
  if (meta.arrays.length) {
342
347
  for (const child of meta.arrays)
343
- if (StringifyPredicator.undefindable(child.value))
348
+ if (StringifyPredicator.undefindable(child.type.value))
344
349
  throw new Error(
345
- `Error on typia.json.stringify(): array cannot contain undefined value (${child.value.getName()}).`,
350
+ `Error on typia.json.stringify(): array cannot contain undefined value (${child.type.value.getName()}).`,
346
351
  );
347
352
  const value: () => ts.Expression =
348
353
  meta.arrays.length === 1
@@ -355,7 +360,7 @@ export namespace JsonStringifyProgrammer {
355
360
  from: "array",
356
361
  },
357
362
  )
358
- : meta.arrays.some((elem) => elem.value.any)
363
+ : meta.arrays.some((elem) => elem.type.value.any)
359
364
  ? () =>
360
365
  ts.factory.createCallExpression(
361
366
  ts.factory.createIdentifier("JSON.stringify"),
@@ -512,10 +517,12 @@ export namespace JsonStringifyProgrammer {
512
517
  array: MetadataArray,
513
518
  explore: FeatureProgrammer.IExplore,
514
519
  ) =>
515
- array.recursive
520
+ array.type.recursive
516
521
  ? ts.factory.createCallExpression(
517
522
  ts.factory.createIdentifier(
518
- importer.useLocal(`${config.prefix}a${array.index}`),
523
+ importer.useLocal(
524
+ `${config.prefix}a${array.type.index}`,
525
+ ),
519
526
  ),
520
527
  undefined,
521
528
  FeatureProgrammer.argumentsArray(config)({
@@ -536,7 +543,7 @@ export namespace JsonStringifyProgrammer {
536
543
  ) =>
537
544
  FeatureProgrammer.decode_array(config)(importer)(
538
545
  StringifyJoiner.array,
539
- )(input, array, explore, [], []);
546
+ )(input, array, explore);
540
547
 
541
548
  const decode_tuple =
542
549
  (project: IProject) =>
@@ -547,10 +554,12 @@ export namespace JsonStringifyProgrammer {
547
554
  tuple: MetadataTuple,
548
555
  explore: FeatureProgrammer.IExplore,
549
556
  ): ts.Expression =>
550
- tuple.recursive
557
+ tuple.type.recursive
551
558
  ? ts.factory.createCallExpression(
552
559
  ts.factory.createIdentifier(
553
- importer.useLocal(`${config.prefix}t${tuple.index}`),
560
+ importer.useLocal(
561
+ `${config.prefix}t${tuple.type.index}`,
562
+ ),
554
563
  ),
555
564
  undefined,
556
565
  FeatureProgrammer.argumentsArray(config)({
@@ -560,7 +569,7 @@ export namespace JsonStringifyProgrammer {
560
569
  )
561
570
  : decode_tuple_inline(project)(config)(importer)(
562
571
  input,
563
- tuple,
572
+ tuple.type,
564
573
  explore,
565
574
  );
566
575
 
@@ -570,7 +579,7 @@ export namespace JsonStringifyProgrammer {
570
579
  (importer: FunctionImporter) =>
571
580
  (
572
581
  input: ts.Expression,
573
- tuple: MetadataTuple,
582
+ tuple: MetadataTupleType,
574
583
  explore: FeatureProgrammer.IExplore,
575
584
  ): ts.Expression => {
576
585
  const children: ts.Expression[] = tuple.elements
@@ -749,8 +758,6 @@ export namespace JsonStringifyProgrammer {
749
758
  input: ts.Expression,
750
759
  elements: T[],
751
760
  explore: FeatureProgrammer.IExplore,
752
- tags: IMetadataTag[],
753
- jsDocTags: IJsDocTagInfo[],
754
761
  ) => ts.ArrowFunction,
755
762
  ) =>
756
763
  (
@@ -762,8 +769,8 @@ export namespace JsonStringifyProgrammer {
762
769
  (parameters: ts.ParameterDeclaration[]) =>
763
770
  (explore: FeatureProgrammer.IExplore) =>
764
771
  (input: ts.Expression): ts.ArrowFunction =>
765
- factory(parameters)(input, elements, explore, [], []);
766
- if (elements.every((e) => e.recursive === false))
772
+ factory(parameters)(input, elements, explore);
773
+ if (elements.every((e) => e.type.recursive === false))
767
774
  ts.factory.createCallExpression(
768
775
  arrow([])(explore)(input),
769
776
  undefined,
@@ -779,7 +786,7 @@ export namespace JsonStringifyProgrammer {
779
786
  ts.factory.createIdentifier(
780
787
  importer.emplaceUnion(
781
788
  config.prefix,
782
- elements.map((e) => e.name).join(" | "),
789
+ elements.map((e) => e.type.name).join(" | "),
783
790
  () =>
784
791
  arrow(
785
792
  FeatureProgrammer.parameterDeclarations(config)(
@@ -905,8 +912,6 @@ export namespace JsonStringifyProgrammer {
905
912
  input,
906
913
  meta,
907
914
  explore,
908
- [],
909
- [],
910
915
  ),
911
916
  decoder: () => decode_object(importer),
912
917
  joiner: StringifyJoiner.object(importer),
@@ -937,11 +942,11 @@ export namespace JsonStringifyProgrammer {
937
942
  constant: true,
938
943
  absorb: true,
939
944
  validate: (meta) => {
940
- if (meta.atomics.find((str) => str === "bigint"))
945
+ if (meta.atomics.find((a) => a.type === "bigint"))
941
946
  throw new Error(NO_BIGINT);
942
947
  else if (
943
948
  meta.arrays.some(
944
- (array) => array.value.isRequired() === false,
949
+ (array) => array.type.value.isRequired() === false,
945
950
  )
946
951
  )
947
952
  throw new Error(NO_UNDEFINED_IN_ARRAY);