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
@@ -1,11 +1,18 @@
1
1
  import ts from "typescript";
2
2
 
3
+ import { $clone } from "../../../functional/$clone";
4
+
5
+ import { IMetadataTypeTag } from "../../../schemas/metadata/IMetadataTypeTag";
3
6
  import { Metadata } from "../../../schemas/metadata/Metadata";
4
7
 
8
+ import { ArrayUtil } from "../../../utils/ArrayUtil";
9
+
5
10
  import { MetadataCollection } from "../../MetadataCollection";
6
11
  import { MetadataFactory } from "../../MetadataFactory";
7
12
  import { explore_metadata } from "./explore_metadata";
8
13
  import { iterate_metadata } from "./iterate_metadata";
14
+ import { iterate_metadata_array } from "./iterate_metadata_array";
15
+ import { iterate_metadata_type_tags } from "./iterate_metadata_type_tags";
9
16
 
10
17
  export const iterate_metadata_intersection =
11
18
  (checker: ts.TypeChecker) =>
@@ -53,28 +60,115 @@ export const iterate_metadata_intersection =
53
60
  return true;
54
61
  }
55
62
 
56
- // ABSORB TO ATOMIC (OR CONSTANT) TYPE
57
- const atomics: Metadata[] = children.filter(
58
- (c) =>
59
- (c.atomics.length ? 1 : 0 + c.constants.length ? 1 : 0) ===
60
- c.bucket(),
63
+ // VALIDATE EACH TYPES
64
+ const individuals: (readonly [Metadata, number])[] = children
65
+ .map((child, i) => [child, i] as const)
66
+ .filter(
67
+ ([c]) =>
68
+ c.size() === 1 &&
69
+ (c.atomics.length === 1 || c.arrays.length === 1),
70
+ );
71
+ const constants: Metadata[] = children.filter(
72
+ (m) =>
73
+ m.size() ===
74
+ m.constants
75
+ .map((c) => c.values.length)
76
+ .reduce((a, b) => a + b, 0) +
77
+ m.templates.length,
61
78
  );
62
79
  const objects: Metadata[] = children.filter(
63
- (c) => c.objects.length && c.objects.length === c.size(),
80
+ (c) =>
81
+ c.nullable === false &&
82
+ c.isRequired() === true &&
83
+ c.objects.length &&
84
+ c.objects.length === c.size() &&
85
+ c.objects.every((o) =>
86
+ o.properties.every((p) => p.value.optional),
87
+ ),
64
88
  );
89
+ const atomics: Set<"boolean" | "bigint" | "number" | "string"> =
90
+ new Set(
91
+ individuals.map(([c]) => c.atomics.map((a) => a.type)).flat(),
92
+ );
93
+ const arrays: Set<string> = new Set(
94
+ individuals.map(([c]) => c.arrays.map((a) => a.type.name)).flat(),
95
+ );
96
+
97
+ // ESCAPE WHEN ONLY CONSTANT TYPES EXIST
65
98
  if (
66
- atomics.length === 0 ||
67
- atomics.length + objects.length !== children.length
99
+ atomics.size + arrays.size > 1 ||
100
+ individuals.length + objects.length + constants.length !==
101
+ children.length
68
102
  )
69
103
  throw new Error(message(children));
104
+ else if (atomics.size === 0 && arrays.size === 0 && constants.length) {
105
+ for (const m of constants) {
106
+ for (const tpl of m.templates)
107
+ ArrayUtil.add(
108
+ meta.templates,
109
+ tpl,
110
+ (a, b) =>
111
+ a.map((ab) => ab.getName()).join(" | ") ===
112
+ b.map((bb) => bb.getName()).join(" | "),
113
+ );
114
+ for (const c of m.constants) {
115
+ const oldbie = meta.constants.find(
116
+ (o) => o.type === c.type,
117
+ );
118
+ if (oldbie)
119
+ for (const elem of c.values)
120
+ ArrayUtil.add(
121
+ oldbie.values,
122
+ elem,
123
+ (a, b) => a === b,
124
+ );
125
+ else meta.constants.push($clone(c));
126
+ }
127
+ }
128
+ return true;
129
+ }
70
130
 
71
- const least: Metadata = atomics.reduce((x, y) => {
72
- if (Metadata.covers(x, y)) return y;
73
- else if (Metadata.covers(y, x)) return x;
74
- throw new Error(message(children));
75
- });
76
- Object.assign(meta, Metadata.merge(meta, least));
77
- collection.entire_.add(least);
131
+ // RE-GENERATE TYPE
132
+ const target: "boolean" | "bigint" | "number" | "string" | "array" =
133
+ atomics.size ? atomics.values().next().value : "array";
134
+ if (
135
+ target === "boolean" ||
136
+ target === "bigint" ||
137
+ target === "number" ||
138
+ target === "string"
139
+ )
140
+ ArrayUtil.add(
141
+ meta.atomics,
142
+ {
143
+ type: atomics.values().next().value as "string",
144
+ tags: [],
145
+ },
146
+ (a, b) => a.type === b.type,
147
+ );
148
+ else if (target === "array") {
149
+ const name: string = arrays.values().next().value;
150
+ if (!meta.arrays.some((a) => a.type.name === name)) {
151
+ iterate_metadata_array(checker)(options)(collection)(
152
+ meta,
153
+ type.types[
154
+ individuals.find((i) => i[0].arrays.length === 1)![1]
155
+ ]!,
156
+ );
157
+ }
158
+ }
159
+
160
+ // ASSIGN TAGS
161
+ if (objects.length && target !== "boolean") {
162
+ const tags: IMetadataTypeTag[] = iterate_metadata_type_tags(target)(
163
+ objects.map((om) => om.objects).flat(),
164
+ );
165
+ if (tags.length)
166
+ if (target === "array") meta.arrays.at(-1)!.tags.push(tags);
167
+ else
168
+ meta.atomics
169
+ .find((a) => a.type === target)!
170
+ .tags.push(tags);
171
+ }
78
172
  return true;
79
173
  };
80
174
 
@@ -21,12 +21,6 @@ export const iterate_metadata_native =
21
21
  return true;
22
22
  }
23
23
 
24
- const complicate = COMPLICATES.get(name);
25
- if (complicate && validator(complicate)) {
26
- ArrayUtil.set(meta.natives, complicate.name ?? name, (str) => str);
27
- return true;
28
- }
29
-
30
24
  for (const generic of GENERICS)
31
25
  if (
32
26
  name.substring(0, generic.name.length) === generic.name &&
@@ -190,9 +184,6 @@ const SIMPLES: Map<string, IClassInfo> = new Map([
190
184
  },
191
185
  ],
192
186
  ]);
193
- const COMPLICATES: Map<string, IClassInfo> = new Map([
194
- [`'buffer'.global.Buffer`, getBinaryProps("Buffer")],
195
- ]);
196
187
  const GENERICS: Array<IClassInfo & { name: string }> = [
197
188
  "WeakMap",
198
189
  "WeakSet",
@@ -23,16 +23,16 @@ export const iterate_metadata_object =
23
23
  (type as any).intrinsicName !== "object"
24
24
  )
25
25
  return false;
26
- else if (
27
- type.isIntersection() &&
28
- !type.types.every(
29
- (child) =>
30
- (child.getFlags() & ts.TypeFlags.Object) !== 0 &&
31
- !checker.isArrayType(child) &&
32
- !checker.isTupleType(child),
33
- )
34
- )
35
- return false;
26
+ // else if (
27
+ // type.isIntersection() &&
28
+ // !type.types.every(
29
+ // (child) =>
30
+ // (child.getFlags() & ts.TypeFlags.Object) !== 0 &&
31
+ // !checker.isArrayType(child) &&
32
+ // !checker.isTupleType(child),
33
+ // )
34
+ // )
35
+ // return false;
36
36
  }
37
37
 
38
38
  const obj: MetadataObject = emplace_metadata_object(checker)(options)(
@@ -1,7 +1,7 @@
1
1
  import ts from "typescript";
2
2
 
3
3
  import { Metadata } from "../../../schemas/metadata/Metadata";
4
- import { MetadataResolved } from "../../../schemas/metadata/MetadataResolved";
4
+ import { MetadataEscaped } from "../../../schemas/metadata/MetadataEscaped";
5
5
 
6
6
  import { Writable } from "../../../typings/Writable";
7
7
 
@@ -22,25 +22,25 @@ export const iterate_metadata_resolve =
22
22
  resolved: boolean,
23
23
  aliased: boolean,
24
24
  ): boolean => {
25
- if (options.resolve === false || resolved === true) return false;
25
+ if (options.escape === false || resolved === true) return false;
26
26
 
27
27
  const escaped: ts.Type | null = TypeFactory.resolve(checker)(type);
28
28
  if (escaped === null) return false;
29
29
 
30
- if (meta.resolved === null) {
31
- Writable(meta).resolved = MetadataResolved.create({
30
+ if (meta.escaped === null) {
31
+ Writable(meta).escaped = MetadataEscaped.create({
32
32
  original: Metadata.initialize(),
33
33
  returns: Metadata.initialize(),
34
34
  });
35
35
  }
36
36
  iterate_metadata(checker)(options)(collection)(
37
- meta.resolved!.original,
37
+ meta.escaped!.original,
38
38
  type,
39
39
  true,
40
40
  aliased,
41
41
  );
42
42
  iterate_metadata(checker)(options)(collection)(
43
- meta.resolved!.returns,
43
+ meta.escaped!.returns,
44
44
  escaped,
45
45
  true,
46
46
  aliased,
@@ -27,8 +27,8 @@ const iterate =
27
27
  // ITERATE CHILDREN
28
28
  for (const map of meta.maps) iterate(visited)(collection)(map.value);
29
29
  for (const set of meta.sets) iterate(visited)(collection)(set);
30
- if (meta.resolved !== null)
31
- iterate(visited)(collection)(meta.resolved.returns);
30
+ if (meta.escaped !== null)
31
+ iterate(visited)(collection)(meta.escaped.returns);
32
32
  if (meta.rest !== null) iterate(visited)(collection)(meta.rest);
33
33
 
34
34
  // SORT OBJECTS
@@ -46,9 +46,9 @@ const iterate =
46
46
  // SORT ARRAYS AND TUPLES
47
47
  if (meta.arrays.length > 1)
48
48
  meta.arrays.sort((x, y) =>
49
- Metadata.covers(x.value, y.value)
49
+ Metadata.covers(x.type.value, y.type.value)
50
50
  ? -1
51
- : Metadata.covers(y.value, x.value)
51
+ : Metadata.covers(y.type.value, x.type.value)
52
52
  ? 1
53
53
  : 0,
54
54
  );
@@ -2,6 +2,7 @@ import ts from "typescript";
2
2
 
3
3
  import { Metadata } from "../../../schemas/metadata/Metadata";
4
4
  import { MetadataTuple } from "../../../schemas/metadata/MetadataTuple";
5
+ import { MetadataTupleType } from "../../../schemas/metadata/MetadataTupleType";
5
6
 
6
7
  import { ArrayUtil } from "../../../utils/ArrayUtil";
7
8
 
@@ -16,9 +17,16 @@ export const iterate_metadata_tuple =
16
17
  (meta: Metadata, type: ts.TupleType): boolean => {
17
18
  if (!checker.isTupleType(type)) return false;
18
19
 
19
- const tuple: MetadataTuple = emplace_metadata_tuple(checker)(options)(
20
- collection,
21
- )(type, meta.nullable);
22
- ArrayUtil.add(meta.tuples, tuple, (elem) => elem.name === tuple.name);
20
+ const tupleType: MetadataTupleType = emplace_metadata_tuple(checker)(
21
+ options,
22
+ )(collection)(type, meta.nullable);
23
+ ArrayUtil.add(
24
+ meta.tuples,
25
+ MetadataTuple.create({
26
+ type: tupleType,
27
+ tags: [],
28
+ }),
29
+ (elem) => elem.type.name === tupleType.name,
30
+ );
23
31
  return true;
24
32
  };
@@ -0,0 +1,183 @@
1
+ import { IMetadataTypeTag } from "../../../schemas/metadata/IMetadataTypeTag";
2
+ import { MetadataObject } from "../../../schemas/metadata/MetadataObject";
3
+ import { MetadataProperty } from "../../../schemas/metadata/MetadataProperty";
4
+
5
+ export const iterate_metadata_type_tags =
6
+ (type: "bigint" | "number" | "string" | "array") =>
7
+ (objects: MetadataObject[]): IMetadataTypeTag[] => {
8
+ const filtered: MetadataObject[] = objects.filter((obj) => {
9
+ //----
10
+ // VALIDATION PROCESS
11
+ //----
12
+ // ONLY ONE PROPERTY
13
+ if (obj.properties.length !== 1) return false;
14
+
15
+ // THE TAG.TYPE PROPERTY MUST BE
16
+ const top: MetadataProperty = obj.properties[0]!;
17
+ if (
18
+ top.key.getSoleLiteral() !== "typia.tag" ||
19
+ top.value.size() !== 1 ||
20
+ top.value.objects.length !== 1
21
+ )
22
+ return false;
23
+ else if (top.value.optional === false)
24
+ throw error(null)("must be optional object");
25
+
26
+ // CHECK LIST OF PROPERTIES
27
+ const tag: MetadataObject = top.value.objects[0]!;
28
+ const statics: string[] = tag.properties
29
+ .map((p) => p.key.getSoleLiteral()!)
30
+ .filter((str) => str !== null);
31
+ if (FIELDS.some((f) => !statics.includes(f)))
32
+ throw error(null)(
33
+ `must have four properties - ${FIELDS.map(
34
+ (str) => `'${str}'`,
35
+ ).join(", ")}`,
36
+ );
37
+
38
+ for (const p of tag.properties) {
39
+ const key: string | null = p.key.getSoleLiteral();
40
+ if (key === null) continue;
41
+ else if (FIELDS.includes(key) === false) continue;
42
+ else if (
43
+ // TARGET
44
+ key === "target" &&
45
+ (p.value.constants.length !== 1 ||
46
+ p.value.constants[0]!.values.length !==
47
+ p.value.size() ||
48
+ p.value.constants[0]!.values.some(
49
+ (v) =>
50
+ v !== "bigint" &&
51
+ v !== "number" &&
52
+ v !== "string" &&
53
+ v !== "array",
54
+ ))
55
+ )
56
+ throw error(key)(
57
+ `must be one of 'bigint', 'number', 'string', 'array'`,
58
+ );
59
+ else if (
60
+ // KIND
61
+ key === "kind" &&
62
+ (p.value.size() !== 1 ||
63
+ p.value.constants.length !== 1 ||
64
+ p.value.constants[0]!.type !== "string" ||
65
+ p.value.constants[0]!.values.length !== 1)
66
+ )
67
+ throw error(key)("must be a string literal type");
68
+ else if (
69
+ // VALUE
70
+ key === "value" &&
71
+ (p.value.size() !== 1 ||
72
+ p.value.constants.length !== 1 ||
73
+ p.value.constants[0]!.values.length !== 1)
74
+ )
75
+ throw error(key)("must be a constant literal type");
76
+ else if (key === "validate") {
77
+ //----
78
+ // VALIDATE
79
+ //----
80
+ // STRING CASE
81
+ const single: boolean =
82
+ p.value.size() === 1 &&
83
+ p.value.constants.length === 1 &&
84
+ p.value.constants[0]!.type === "string" &&
85
+ p.value.constants[0]!.values.length === 1;
86
+ if (single === true) continue;
87
+
88
+ // RECORD<TARGET, STRING>
89
+ const target: string[] | undefined =
90
+ p.value.objects[0]?.properties.find(
91
+ (p) => p.key.getSoleLiteral()! === "target",
92
+ )?.value?.constants?.[0]?.values as
93
+ | string[]
94
+ | undefined;
95
+ if (target === undefined)
96
+ throw error("target")(
97
+ `must be one of 'bigint', 'number', 'string', 'array'`,
98
+ );
99
+ const variadic: boolean =
100
+ p.value.size() === 1 &&
101
+ p.value.objects.length === 1 &&
102
+ p.value.objects[0]!.properties.every(
103
+ (vp) =>
104
+ vp.value.size() === 1 &&
105
+ vp.value.isRequired() &&
106
+ vp.value.nullable === false &&
107
+ vp.value.constants.length === 1 &&
108
+ vp.value.constants[0]!.type === "string" &&
109
+ vp.value.constants[0]!.values.length === 1 &&
110
+ target.includes(vp.key.getSoleLiteral()!),
111
+ );
112
+ if (variadic === false)
113
+ throw error(key)(
114
+ `must be a string literal type or Record<Target, string> type.`,
115
+ );
116
+ }
117
+ }
118
+ return true;
119
+ });
120
+
121
+ const tagList: ITypedTag[] = filtered.map((obj) => {
122
+ const find = (key: string): MetadataProperty =>
123
+ obj.properties[0]!.value.objects[0]!.properties.find(
124
+ (p) => p.key.getSoleLiteral() === key,
125
+ )!;
126
+
127
+ const target = find("target").value.constants[0]!
128
+ .values as ITypedTag["target"];
129
+ const kind: string = find("kind").value.constants[0]!
130
+ .values[0] as string;
131
+ const value: boolean | bigint | number | string =
132
+ find("value").value.constants[0]!.values[0]!;
133
+ const validate: Record<string, string> = (() => {
134
+ const validate = find("validate").value;
135
+ if (validate.constants.length)
136
+ return {
137
+ [target[0]!]: validate.constants[0]!
138
+ .values[0] as string,
139
+ };
140
+ return Object.fromEntries(
141
+ validate.objects[0]!.properties.map((p) => [
142
+ p.key.getSoleLiteral()!,
143
+ p.value.constants[0]!.values[0]! as string,
144
+ ]),
145
+ );
146
+ })();
147
+
148
+ return { name: obj.name, target, kind, value, validate };
149
+ });
150
+ if (filtered.length === 0) return [];
151
+
152
+ for (const tag of tagList)
153
+ if (tag.target.includes(type))
154
+ error(null)(
155
+ `target must constains ${type} type - ${JSON.stringify(
156
+ tag,
157
+ )}`,
158
+ );
159
+
160
+ return tagList.map((tag) => ({
161
+ name: tag.name,
162
+ kind: tag.kind,
163
+ value: tag.value,
164
+ validate: tag.validate[type]!,
165
+ }));
166
+ };
167
+
168
+ interface ITypedTag {
169
+ name: string;
170
+ target: Array<"bigint" | "number" | "string" | "array">;
171
+ kind: string;
172
+ value: boolean | bigint | number | string;
173
+ validate: Record<string, string>;
174
+ }
175
+
176
+ const FIELDS = ["target", "kind", "value", "validate"];
177
+
178
+ const error = (property: string | null) => (msg: string) =>
179
+ new Error(
180
+ `Error on typia.MetadataFactory.analyze(): the property '${
181
+ property === null ? `["typia.tag"]` : `["typia.tag.${property}"]`
182
+ }' ${msg}.`,
183
+ );
@@ -1,2 +1,4 @@
1
+ import { $clone } from "./$clone";
2
+
1
3
  export const $any = (val: any): any =>
2
- val !== undefined ? JSON.parse(JSON.stringify(val)) : undefined;
4
+ val !== undefined ? $clone(val) : undefined;
@@ -0,0 +1,4 @@
1
+ import { Primitive } from "../Primitive";
2
+
3
+ export const $clone = <T>(value: T): Primitive<T> =>
4
+ JSON.parse(JSON.stringify(value));
package/src/json.ts CHANGED
@@ -340,7 +340,7 @@ export function isStringify<T>(input: T): string | null;
340
340
  * `typia.json.isStringify()` is a combination function of {@link is} and
341
341
  * {@link stringify}. Therefore, it converts an input value to JSON
342
342
  * (JavaScript Object Notation) string, with type checking.
343
- *f
343
+ *
344
344
  * In such reason, when `input` value is not matched with the type `T`, it returns
345
345
  * `null` value. Otherwise, there's no problem on the `input` value, JSON string
346
346
  * would be returned.
@@ -430,8 +430,8 @@ Object.assign(validateStringify, Namespace.json.stringify("validateStringify"));
430
430
  /**
431
431
  * Creates a reusable {@link isParse} function.
432
432
  *
433
- * @danger You have to specify the generic argument `T`
434
- * @return Nothing until specifying the generic argument `T`
433
+ * @danger You must configure the generic argument `T`
434
+ * @returns Nothing until you configure the generic argument `T`
435
435
  * @throws compile error
436
436
  *
437
437
  * @author Jeongho Nam - https://github.com/samchon
@@ -459,8 +459,8 @@ Object.assign(createIsParse, isParse);
459
459
  /**
460
460
  * Creates a reusable {@link assertParse} function.
461
461
  *
462
- * @danger You have to specify the generic argument `T`
463
- * @return Nothing until specifying the generic argument `T`
462
+ * @danger You must configure the generic argument `T`
463
+ * @returns Nothing until you configure the generic argument `T`
464
464
  * @throws compile error
465
465
  *
466
466
  * @author Jeongho Nam - https://github.com/samchon
@@ -488,8 +488,8 @@ Object.assign(createAssertParse, assertParse);
488
488
  /**
489
489
  * Creates a reusable {@link validateParse} function.
490
490
  *
491
- * @danger You have to specify the generic argument `T`
492
- * @return Nothing until specifying the generic argument `T`
491
+ * @danger You must configure the generic argument `T`
492
+ * @returns Nothing until you configure the generic argument `T`
493
493
  * @throws compile error
494
494
  *
495
495
  * @author Jeongho Nam - https://github.com/samchon
@@ -521,8 +521,8 @@ Object.assign(createValidateParse, validateParse);
521
521
  /**
522
522
  * Creates a reusable {@link stringify} function.
523
523
  *
524
- * @danger You have to specify the generic argument `T`
525
- * @return Nothing until specifying the generic argument `T`
524
+ * @danger You must configure the generic argument `T`
525
+ * @returns Nothing until you configure the generic argument `T`
526
526
  * @throws compile error
527
527
  *
528
528
  * @author Jeongho Nam - https://github.com/samchon
@@ -550,8 +550,8 @@ Object.assign(createStringify, stringify);
550
550
  /**
551
551
  * Creates a reusable {@link assertStringify} function.
552
552
  *
553
- * @danger You have to specify the generic argument `T`
554
- * @return Nothing until specifying the generic argument `T`
553
+ * @danger You must configure the generic argument `T`
554
+ * @returns Nothing until you configure the generic argument `T`
555
555
  * @throws compile error
556
556
  *
557
557
  * @author Jeongho Nam - https://github.com/samchon
@@ -579,8 +579,8 @@ Object.assign(createAssertStringify, assertStringify);
579
579
  /**
580
580
  * Creates a reusable {@link isStringify} function.
581
581
  *
582
- * @danger You have to specify the generic argument `T`
583
- * @return Nothing until specifying the generic argument `T`
582
+ * @danger You must configure the generic argument `T`
583
+ * @returns Nothing until you configure the generic argument `T`
584
584
  * @throws compile error
585
585
  *
586
586
  * @author Jeongho Nam - https://github.com/samchon
@@ -608,8 +608,8 @@ Object.assign(createIsStringify, isStringify);
608
608
  /**
609
609
  * Creates a reusable {@link validateStringify} function.
610
610
  *
611
- * @danger You have to specify the generic argument `T`
612
- * @return Nothing until specifying the generic argument `T`
611
+ * @danger You must configure the generic argument `T`
612
+ * @returns Nothing until you configure the generic argument `T`
613
613
  * @throws compile error
614
614
  *
615
615
  * @author Jeongho Nam - https://github.com/samchon