typia 5.0.0-dev.20230824 → 5.0.0-dev.20230828

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 (493) hide show
  1. package/README.md +1 -2
  2. package/lib/IRandomGenerator.d.ts +4 -3
  3. package/lib/executable/TypiaGenerateWizard.js +1 -1
  4. package/lib/executable/TypiaGenerateWizard.js.map +1 -1
  5. package/lib/executable/TypiaSetupWizard.js +1 -1
  6. package/lib/executable/TypiaSetupWizard.js.map +1 -1
  7. package/lib/executable/setup/PackageManager.js +1 -1
  8. package/lib/executable/setup/PackageManager.js.map +1 -1
  9. package/lib/executable/setup/PluginConfigurator.js +2 -2
  10. package/lib/executable/setup/PluginConfigurator.js.map +1 -1
  11. package/lib/factories/ExpressionFactory.d.ts +1 -1
  12. package/lib/factories/ExpressionFactory.js +3 -3
  13. package/lib/factories/ExpressionFactory.js.map +1 -1
  14. package/lib/factories/JsonMetadataFactory.d.ts +7 -0
  15. package/lib/factories/JsonMetadataFactory.js +38 -0
  16. package/lib/factories/JsonMetadataFactory.js.map +1 -0
  17. package/lib/factories/LiteralFactory.js +6 -2
  18. package/lib/factories/LiteralFactory.js.map +1 -1
  19. package/lib/factories/MetadataCollection.js +0 -2
  20. package/lib/factories/MetadataCollection.js.map +1 -1
  21. package/lib/factories/MetadataCommentTagFactory.js +543 -0
  22. package/lib/factories/MetadataCommentTagFactory.js.map +1 -0
  23. package/lib/factories/MetadataFactory.d.ts +22 -2
  24. package/lib/factories/MetadataFactory.js +221 -17
  25. package/lib/factories/MetadataFactory.js.map +1 -1
  26. package/lib/factories/MetadataTypeTagFactory.d.ts +7 -0
  27. package/lib/factories/MetadataTypeTagFactory.js +280 -0
  28. package/lib/factories/MetadataTypeTagFactory.js.map +1 -0
  29. package/lib/factories/NumericRangeFactory.d.ts +6 -0
  30. package/lib/factories/NumericRangeFactory.js +34 -0
  31. package/lib/factories/NumericRangeFactory.js.map +1 -0
  32. package/lib/factories/ProtobufFactory.js +109 -73
  33. package/lib/factories/ProtobufFactory.js.map +1 -1
  34. package/lib/factories/TypeFactory.d.ts +0 -1
  35. package/lib/factories/TypeFactory.js +0 -5
  36. package/lib/factories/TypeFactory.js.map +1 -1
  37. package/lib/factories/internal/metadata/emend_metadata_atomics.js +7 -1
  38. package/lib/factories/internal/metadata/emend_metadata_atomics.js.map +1 -1
  39. package/lib/factories/internal/metadata/emplace_metadata_alias.d.ts +1 -1
  40. package/lib/factories/internal/metadata/emplace_metadata_alias.js +20 -19
  41. package/lib/factories/internal/metadata/emplace_metadata_alias.js.map +1 -1
  42. package/lib/factories/internal/metadata/emplace_metadata_array_type.d.ts +1 -1
  43. package/lib/factories/internal/metadata/emplace_metadata_array_type.js +20 -7
  44. package/lib/factories/internal/metadata/emplace_metadata_array_type.js.map +1 -1
  45. package/lib/factories/internal/metadata/emplace_metadata_object.d.ts +1 -1
  46. package/lib/factories/internal/metadata/emplace_metadata_object.js +100 -85
  47. package/lib/factories/internal/metadata/emplace_metadata_object.js.map +1 -1
  48. package/lib/factories/internal/metadata/emplace_metadata_tuple.d.ts +1 -1
  49. package/lib/factories/internal/metadata/emplace_metadata_tuple.js +34 -21
  50. package/lib/factories/internal/metadata/emplace_metadata_tuple.js.map +1 -1
  51. package/lib/factories/internal/metadata/explore_metadata.d.ts +1 -1
  52. package/lib/factories/internal/metadata/explore_metadata.js +12 -12
  53. package/lib/factories/internal/metadata/explore_metadata.js.map +1 -1
  54. package/lib/factories/internal/metadata/iterate_metadata.d.ts +1 -1
  55. package/lib/factories/internal/metadata/iterate_metadata.js +39 -19
  56. package/lib/factories/internal/metadata/iterate_metadata.js.map +1 -1
  57. package/lib/factories/internal/metadata/iterate_metadata_alias.d.ts +1 -1
  58. package/lib/factories/internal/metadata/iterate_metadata_alias.js +12 -10
  59. package/lib/factories/internal/metadata/iterate_metadata_alias.js.map +1 -1
  60. package/lib/factories/internal/metadata/iterate_metadata_array.d.ts +1 -1
  61. package/lib/factories/internal/metadata/iterate_metadata_array.js +11 -9
  62. package/lib/factories/internal/metadata/iterate_metadata_array.js.map +1 -1
  63. package/lib/factories/internal/metadata/iterate_metadata_atomic.js +2 -1
  64. package/lib/factories/internal/metadata/iterate_metadata_atomic.js.map +1 -1
  65. package/lib/factories/internal/metadata/iterate_metadata_collection.d.ts +2 -1
  66. package/lib/factories/internal/metadata/iterate_metadata_collection.js +47 -45
  67. package/lib/factories/internal/metadata/iterate_metadata_collection.js.map +1 -1
  68. package/lib/factories/internal/metadata/iterate_metadata_comment_tags.d.ts +2 -1
  69. package/lib/factories/internal/metadata/iterate_metadata_comment_tags.js +17 -22
  70. package/lib/factories/internal/metadata/iterate_metadata_comment_tags.js.map +1 -1
  71. package/lib/factories/internal/metadata/iterate_metadata_intersection.d.ts +1 -1
  72. package/lib/factories/internal/metadata/iterate_metadata_intersection.js +147 -135
  73. package/lib/factories/internal/metadata/iterate_metadata_intersection.js.map +1 -1
  74. package/lib/factories/internal/metadata/iterate_metadata_map.d.ts +1 -1
  75. package/lib/factories/internal/metadata/iterate_metadata_map.js +28 -15
  76. package/lib/factories/internal/metadata/iterate_metadata_map.js.map +1 -1
  77. package/lib/factories/internal/metadata/iterate_metadata_object.d.ts +1 -1
  78. package/lib/factories/internal/metadata/iterate_metadata_object.js +16 -14
  79. package/lib/factories/internal/metadata/iterate_metadata_object.js.map +1 -1
  80. package/lib/factories/internal/metadata/iterate_metadata_resolve.d.ts +1 -1
  81. package/lib/factories/internal/metadata/iterate_metadata_resolve.js +28 -15
  82. package/lib/factories/internal/metadata/iterate_metadata_resolve.js.map +1 -1
  83. package/lib/factories/internal/metadata/iterate_metadata_set.d.ts +1 -1
  84. package/lib/factories/internal/metadata/iterate_metadata_set.js +24 -11
  85. package/lib/factories/internal/metadata/iterate_metadata_set.js.map +1 -1
  86. package/lib/factories/internal/metadata/iterate_metadata_template.d.ts +1 -1
  87. package/lib/factories/internal/metadata/iterate_metadata_template.js +28 -15
  88. package/lib/factories/internal/metadata/iterate_metadata_template.js.map +1 -1
  89. package/lib/factories/internal/metadata/iterate_metadata_tuple.d.ts +1 -1
  90. package/lib/factories/internal/metadata/iterate_metadata_tuple.js +11 -9
  91. package/lib/factories/internal/metadata/iterate_metadata_tuple.js.map +1 -1
  92. package/lib/factories/internal/metadata/iterate_metadata_union.d.ts +1 -1
  93. package/lib/factories/internal/metadata/iterate_metadata_union.js +20 -7
  94. package/lib/factories/internal/metadata/iterate_metadata_union.js.map +1 -1
  95. package/lib/functional/Namespace.js +0 -16
  96. package/lib/functional/Namespace.js.map +1 -1
  97. package/lib/programmers/AssertProgrammer.js +28 -8
  98. package/lib/programmers/AssertProgrammer.js.map +1 -1
  99. package/lib/programmers/CheckerProgrammer.js +78 -60
  100. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  101. package/lib/programmers/FeatureProgrammer.d.ts +4 -6
  102. package/lib/programmers/FeatureProgrammer.js +7 -7
  103. package/lib/programmers/FeatureProgrammer.js.map +1 -1
  104. package/lib/programmers/IsProgrammer.d.ts +1 -1
  105. package/lib/programmers/IsProgrammer.js +33 -20
  106. package/lib/programmers/IsProgrammer.js.map +1 -1
  107. package/lib/programmers/RandomProgrammer.js +163 -138
  108. package/lib/programmers/RandomProgrammer.js.map +1 -1
  109. package/lib/programmers/TypiaProgrammer.js +58 -28
  110. package/lib/programmers/TypiaProgrammer.js.map +1 -1
  111. package/lib/programmers/ValidateProgrammer.js +28 -8
  112. package/lib/programmers/ValidateProgrammer.js.map +1 -1
  113. package/lib/programmers/helpers/CloneJoiner.js +10 -2
  114. package/lib/programmers/helpers/CloneJoiner.js.map +1 -1
  115. package/lib/programmers/helpers/ICheckEntry.d.ts +3 -2
  116. package/lib/programmers/helpers/ProtobufUtil.d.ts +6 -2
  117. package/lib/programmers/helpers/ProtobufUtil.js +175 -17
  118. package/lib/programmers/helpers/ProtobufUtil.js.map +1 -1
  119. package/lib/programmers/helpers/RandomJoiner.d.ts +3 -5
  120. package/lib/programmers/helpers/RandomJoiner.js +7 -10
  121. package/lib/programmers/helpers/RandomJoiner.js.map +1 -1
  122. package/lib/programmers/helpers/RandomRanger.d.ts +5 -6
  123. package/lib/programmers/helpers/RandomRanger.js +13 -33
  124. package/lib/programmers/helpers/RandomRanger.js.map +1 -1
  125. package/lib/programmers/helpers/UnionExplorer.d.ts +7 -8
  126. package/lib/programmers/helpers/UnionExplorer.js +6 -6
  127. package/lib/programmers/helpers/UnionExplorer.js.map +1 -1
  128. package/lib/programmers/internal/application_alias.js +0 -1
  129. package/lib/programmers/internal/application_alias.js.map +1 -1
  130. package/lib/programmers/internal/application_array.js +60 -20
  131. package/lib/programmers/internal/application_array.js.map +1 -1
  132. package/lib/programmers/internal/application_escaped.d.ts +4 -0
  133. package/lib/programmers/internal/{application_resolved.js → application_escaped.js} +4 -4
  134. package/lib/programmers/internal/application_escaped.js.map +1 -0
  135. package/lib/programmers/internal/application_number.js +95 -69
  136. package/lib/programmers/internal/application_number.js.map +1 -1
  137. package/lib/programmers/internal/application_object.js +0 -3
  138. package/lib/programmers/internal/application_object.js.map +1 -1
  139. package/lib/programmers/internal/application_schema.js +41 -24
  140. package/lib/programmers/internal/application_schema.js.map +1 -1
  141. package/lib/programmers/internal/application_string.js +56 -22
  142. package/lib/programmers/internal/application_string.js.map +1 -1
  143. package/lib/programmers/internal/check_array_length.js +25 -25
  144. package/lib/programmers/internal/check_array_length.js.map +1 -1
  145. package/lib/programmers/internal/check_bigint.js +13 -116
  146. package/lib/programmers/internal/check_bigint.js.map +1 -1
  147. package/lib/programmers/internal/check_dynamic_properties.js +1 -1
  148. package/lib/programmers/internal/check_dynamic_properties.js.map +1 -1
  149. package/lib/programmers/internal/check_number.js +62 -163
  150. package/lib/programmers/internal/check_number.js.map +1 -1
  151. package/lib/programmers/internal/check_string.js +16 -52
  152. package/lib/programmers/internal/check_string.js.map +1 -1
  153. package/lib/programmers/internal/check_template.js +16 -1
  154. package/lib/programmers/internal/check_template.js.map +1 -1
  155. package/lib/programmers/internal/check_union_array_like.js +4 -4
  156. package/lib/programmers/internal/check_union_array_like.js.map +1 -1
  157. package/lib/programmers/internal/feature_object_entries.js +1 -1
  158. package/lib/programmers/internal/feature_object_entries.js.map +1 -1
  159. package/lib/programmers/internal/random_custom.js +2 -2
  160. package/lib/programmers/internal/random_custom.js.map +1 -1
  161. package/lib/programmers/json/JsonApplicationProgrammer.js +5 -1
  162. package/lib/programmers/json/JsonApplicationProgrammer.js.map +1 -1
  163. package/lib/programmers/json/JsonAssertParseProgrammer.js +2 -0
  164. package/lib/programmers/json/JsonAssertParseProgrammer.js.map +1 -1
  165. package/lib/programmers/json/JsonIsParseProgrammer.js +2 -0
  166. package/lib/programmers/json/JsonIsParseProgrammer.js.map +1 -1
  167. package/lib/programmers/json/JsonStringifyProgrammer.js +41 -78
  168. package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
  169. package/lib/programmers/json/JsonValidateParseProgrammer.js +2 -0
  170. package/lib/programmers/json/JsonValidateParseProgrammer.js.map +1 -1
  171. package/lib/programmers/misc/MiscCloneProgrammer.js +26 -17
  172. package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
  173. package/lib/programmers/{IsPruneProgrammer.d.ts → misc/MiscIsPruneProgrammer.d.ts} +2 -2
  174. package/lib/programmers/{IsPruneProgrammer.js → misc/MiscIsPruneProgrammer.js} +11 -11
  175. package/lib/programmers/misc/MiscIsPruneProgrammer.js.map +1 -0
  176. package/lib/programmers/misc/MiscLiteralsProgrammer.js +10 -5
  177. package/lib/programmers/misc/MiscLiteralsProgrammer.js.map +1 -1
  178. package/lib/programmers/misc/MiscPruneProgrammer.js +23 -14
  179. package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
  180. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js +24 -44
  181. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js.map +1 -1
  182. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js +138 -65
  183. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js.map +1 -1
  184. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js +59 -85
  185. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js.map +1 -1
  186. package/lib/schemas/json/IJsonSchema.d.ts +10 -38
  187. package/lib/schemas/metadata/IMetadataAlias.d.ts +0 -2
  188. package/lib/schemas/metadata/IMetadataProperty.d.ts +0 -2
  189. package/lib/schemas/metadata/IMetadataTypeTag.d.ts +2 -0
  190. package/lib/schemas/metadata/Metadata.d.ts +2 -2
  191. package/lib/schemas/metadata/Metadata.js +29 -29
  192. package/lib/schemas/metadata/Metadata.js.map +1 -1
  193. package/lib/schemas/metadata/MetadataAlias.d.ts +0 -2
  194. package/lib/schemas/metadata/MetadataAlias.js +0 -3
  195. package/lib/schemas/metadata/MetadataAlias.js.map +1 -1
  196. package/lib/schemas/metadata/MetadataArray.d.ts +2 -0
  197. package/lib/schemas/metadata/MetadataArray.js +45 -2
  198. package/lib/schemas/metadata/MetadataArray.js.map +1 -1
  199. package/lib/schemas/metadata/MetadataAtomic.d.ts +9 -0
  200. package/lib/schemas/metadata/MetadataAtomic.js +59 -0
  201. package/lib/schemas/metadata/MetadataAtomic.js.map +1 -0
  202. package/lib/schemas/metadata/MetadataProperty.d.ts +0 -2
  203. package/lib/schemas/metadata/MetadataProperty.js +0 -3
  204. package/lib/schemas/metadata/MetadataProperty.js.map +1 -1
  205. package/lib/schemas/metadata/MetadataTuple.d.ts +4 -2
  206. package/lib/schemas/metadata/MetadataTuple.js +1 -2
  207. package/lib/schemas/metadata/MetadataTuple.js.map +1 -1
  208. package/lib/tags/ExclusiveMaximum.d.ts +10 -8
  209. package/lib/tags/ExclusiveMinimum.d.ts +10 -8
  210. package/lib/tags/Format.d.ts +8 -8
  211. package/lib/tags/MaxItems.d.ts +8 -8
  212. package/lib/tags/MaxLength.d.ts +8 -8
  213. package/lib/tags/Maximum.d.ts +10 -8
  214. package/lib/tags/MinItems.d.ts +8 -8
  215. package/lib/tags/MinLength.d.ts +8 -8
  216. package/lib/tags/Minimum.d.ts +10 -8
  217. package/lib/tags/MultipleOf.d.ts +10 -8
  218. package/lib/tags/Pattern.d.ts +7 -8
  219. package/lib/tags/TagBase.d.ts +10 -6
  220. package/lib/tags/Type.d.ts +14 -13
  221. package/lib/tags/index.d.ts +1 -0
  222. package/lib/tags/index.js +1 -0
  223. package/lib/tags/index.js.map +1 -1
  224. package/lib/transform.d.ts +2 -1
  225. package/lib/transform.js +11 -3
  226. package/lib/transform.js.map +1 -1
  227. package/lib/transformers/CallExpressionTransformer.d.ts +1 -1
  228. package/lib/transformers/CallExpressionTransformer.js +2 -1
  229. package/lib/transformers/CallExpressionTransformer.js.map +1 -1
  230. package/lib/transformers/FileTransformer.js +18 -6
  231. package/lib/transformers/FileTransformer.js.map +1 -1
  232. package/lib/transformers/IProject.d.ts +3 -0
  233. package/lib/transformers/NodeTransformer.d.ts +1 -1
  234. package/lib/transformers/TransformerError.d.ts +12 -0
  235. package/lib/transformers/TransformerError.js +66 -0
  236. package/lib/transformers/TransformerError.js.map +1 -0
  237. package/lib/transformers/features/AssertTransformer.d.ts +1 -0
  238. package/lib/transformers/features/CreateAssertTransformer.d.ts +1 -0
  239. package/lib/transformers/features/CreateIsTransformer.d.ts +1 -0
  240. package/lib/transformers/features/CreateRandomTransformer.js +9 -4
  241. package/lib/transformers/features/CreateRandomTransformer.js.map +1 -1
  242. package/lib/transformers/features/CreateValidateTransformer.d.ts +1 -0
  243. package/lib/transformers/features/IsTransformer.d.ts +1 -0
  244. package/lib/transformers/features/RandomTransformer.js +9 -4
  245. package/lib/transformers/features/RandomTransformer.js.map +1 -1
  246. package/lib/transformers/features/ValidateTransformer.d.ts +1 -0
  247. package/lib/transformers/features/json/JsonApplicationTransformer.js +79 -19
  248. package/lib/transformers/features/json/JsonApplicationTransformer.js.map +1 -1
  249. package/lib/transformers/features/json/JsonAssertParseTransformer.d.ts +1 -0
  250. package/lib/transformers/features/json/JsonAssertStringifyTransformer.d.ts +1 -0
  251. package/lib/transformers/features/json/JsonCreateAssertParseTransformer.d.ts +1 -0
  252. package/lib/transformers/features/json/JsonCreateAssertStringifyTransformer.d.ts +1 -0
  253. package/lib/transformers/features/json/JsonCreateIsParseTransformer.d.ts +1 -0
  254. package/lib/transformers/features/json/JsonCreateIsStringifyTransformer.d.ts +1 -0
  255. package/lib/transformers/features/json/JsonCreateStringifyTransformer.d.ts +1 -0
  256. package/lib/transformers/features/json/JsonCreateValidateParseTransformer.d.ts +1 -0
  257. package/lib/transformers/features/json/JsonCreateValidateStringifyProgrammer.d.ts +1 -0
  258. package/lib/transformers/features/json/JsonIsParseTransformer.d.ts +1 -0
  259. package/lib/transformers/features/json/JsonIsStringifyTransformer.d.ts +1 -0
  260. package/lib/transformers/features/json/JsonStringifyTransformer.d.ts +1 -0
  261. package/lib/transformers/features/json/JsonValidateParseTransformer.d.ts +1 -0
  262. package/lib/transformers/features/json/JsonValidateStringifyTransformer.d.ts +1 -0
  263. package/lib/transformers/features/misc/MetadataTransformer.js +13 -5
  264. package/lib/transformers/features/misc/MetadataTransformer.js.map +1 -1
  265. package/lib/transformers/features/misc/MiscAssertCloneTransformer.d.ts +1 -0
  266. package/lib/transformers/features/misc/MiscAssertPruneTransformer.d.ts +1 -0
  267. package/lib/transformers/features/misc/MiscCloneTransformer.d.ts +1 -0
  268. package/lib/transformers/features/misc/MiscCreateAssertCloneTransformer.d.ts +1 -0
  269. package/lib/transformers/features/misc/MiscCreateAssertPruneTransformer.d.ts +1 -0
  270. package/lib/transformers/features/misc/MiscCreateCloneTransformer.d.ts +1 -0
  271. package/lib/transformers/features/misc/MiscCreateIsCloneTransformer.d.ts +1 -0
  272. package/lib/transformers/features/misc/MiscCreateIsPruneTransformer.d.ts +1 -0
  273. package/lib/transformers/features/misc/MiscCreateIsPruneTransformer.js +2 -2
  274. package/lib/transformers/features/misc/MiscCreateIsPruneTransformer.js.map +1 -1
  275. package/lib/transformers/features/misc/MiscCreatePruneTransformer.d.ts +1 -0
  276. package/lib/transformers/features/misc/MiscCreateValidateCloneTransformer.d.ts +1 -0
  277. package/lib/transformers/features/misc/MiscCreateValidatePruneTransformer.d.ts +1 -0
  278. package/lib/transformers/features/misc/MiscIsCloneTransformer.d.ts +1 -0
  279. package/lib/transformers/features/misc/MiscIsPruneTransformer.d.ts +1 -0
  280. package/lib/transformers/features/misc/MiscIsPruneTransformer.js +2 -2
  281. package/lib/transformers/features/misc/MiscIsPruneTransformer.js.map +1 -1
  282. package/lib/transformers/features/misc/MiscLiteralsTransformer.js +9 -4
  283. package/lib/transformers/features/misc/MiscLiteralsTransformer.js.map +1 -1
  284. package/lib/transformers/features/misc/MiscPruneTransformer.d.ts +1 -0
  285. package/lib/transformers/features/misc/MiscValidateCloneTransformer.d.ts +1 -0
  286. package/lib/transformers/features/misc/MiscValidatePruneTransformer.d.ts +1 -0
  287. package/lib/transformers/features/protobuf/CreateProtobufAssertDecodeTransformer.d.ts +1 -0
  288. package/lib/transformers/features/protobuf/CreateProtobufAssertEncodeTransformer.d.ts +1 -0
  289. package/lib/transformers/features/protobuf/CreateProtobufDecodeTransformer.d.ts +1 -0
  290. package/lib/transformers/features/protobuf/CreateProtobufEncodeTransformer.d.ts +1 -0
  291. package/lib/transformers/features/protobuf/CreateProtobufIsDecodeTransformer.d.ts +1 -0
  292. package/lib/transformers/features/protobuf/CreateProtobufIsEncodeTransformer.d.ts +1 -0
  293. package/lib/transformers/features/protobuf/CreateProtobufValidateDecodeTransformer.d.ts +1 -0
  294. package/lib/transformers/features/protobuf/CreateProtobufValidateEncodeTransformer.d.ts +1 -0
  295. package/lib/transformers/features/protobuf/ProtobufAssertDecodeTransformer.d.ts +1 -0
  296. package/lib/transformers/features/protobuf/ProtobufAssertEncodeTransformer.d.ts +1 -0
  297. package/lib/transformers/features/protobuf/ProtobufDecodeTransformer.d.ts +1 -0
  298. package/lib/transformers/features/protobuf/ProtobufEncodeTransformer.d.ts +1 -0
  299. package/lib/transformers/features/protobuf/ProtobufIsDecodeTransformer.d.ts +1 -0
  300. package/lib/transformers/features/protobuf/ProtobufIsEncodeTransformer.d.ts +1 -0
  301. package/lib/transformers/features/protobuf/ProtobufMessageTransformer.js +9 -2
  302. package/lib/transformers/features/protobuf/ProtobufMessageTransformer.js.map +1 -1
  303. package/lib/transformers/features/protobuf/ProtobufValidateDecodeTransformer.d.ts +1 -0
  304. package/lib/transformers/features/protobuf/ProtobufValidateEncodeTransformer.d.ts +1 -0
  305. package/lib/transformers/internal/GenericTransformer.js +17 -4
  306. package/lib/transformers/internal/GenericTransformer.js.map +1 -1
  307. package/lib/typings/ProtobufAtomic.d.ts +5 -0
  308. package/lib/{schemas/metadata/ICommentTag.js → typings/ProtobufAtomic.js} +1 -1
  309. package/lib/typings/ProtobufAtomic.js.map +1 -0
  310. package/lib/typings/ValidationPipe.d.ts +7 -0
  311. package/lib/{schemas/metadata/IMetadataCommentTag.js → typings/ValidationPipe.js} +1 -1
  312. package/lib/typings/ValidationPipe.js.map +1 -0
  313. package/package.json +4 -2
  314. package/src/IRandomGenerator.ts +4 -3
  315. package/src/executable/TypiaGenerateWizard.ts +1 -1
  316. package/src/executable/TypiaSetupWizard.ts +1 -1
  317. package/src/executable/setup/PackageManager.ts +1 -1
  318. package/src/executable/setup/PluginConfigurator.ts +2 -2
  319. package/src/factories/ExpressionFactory.ts +4 -4
  320. package/src/factories/JsonMetadataFactory.ts +43 -0
  321. package/src/factories/LiteralFactory.ts +11 -3
  322. package/src/factories/MetadataCollection.ts +0 -6
  323. package/src/factories/MetadataCommentTagFactory.ts +629 -0
  324. package/src/factories/MetadataFactory.ts +169 -7
  325. package/src/factories/MetadataTypeTagFactory.ts +313 -0
  326. package/src/factories/NumericRangeFactory.ts +33 -0
  327. package/src/factories/ProtobufFactory.ts +106 -99
  328. package/src/factories/TypeFactory.ts +0 -5
  329. package/src/factories/internal/metadata/emend_metadata_atomics.ts +6 -1
  330. package/src/factories/internal/metadata/emplace_metadata_alias.ts +12 -11
  331. package/src/factories/internal/metadata/emplace_metadata_array_type.ts +12 -5
  332. package/src/factories/internal/metadata/emplace_metadata_object.ts +20 -6
  333. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +12 -2
  334. package/src/factories/internal/metadata/explore_metadata.ts +5 -11
  335. package/src/factories/internal/metadata/iterate_metadata.ts +44 -24
  336. package/src/factories/internal/metadata/iterate_metadata_alias.ts +7 -2
  337. package/src/factories/internal/metadata/iterate_metadata_array.ts +7 -2
  338. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +2 -1
  339. package/src/factories/internal/metadata/iterate_metadata_collection.ts +30 -29
  340. package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +22 -27
  341. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +44 -25
  342. package/src/factories/internal/metadata/iterate_metadata_map.ts +20 -4
  343. package/src/factories/internal/metadata/iterate_metadata_object.ts +2 -1
  344. package/src/factories/internal/metadata/iterate_metadata_resolve.ts +15 -12
  345. package/src/factories/internal/metadata/iterate_metadata_set.ts +11 -2
  346. package/src/factories/internal/metadata/iterate_metadata_template.ts +12 -3
  347. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +7 -2
  348. package/src/factories/internal/metadata/iterate_metadata_union.ts +10 -7
  349. package/src/functional/Namespace.ts +0 -16
  350. package/src/programmers/AssertProgrammer.ts +57 -21
  351. package/src/programmers/CheckerProgrammer.ts +51 -120
  352. package/src/programmers/FeatureProgrammer.ts +15 -34
  353. package/src/programmers/IsProgrammer.ts +53 -42
  354. package/src/programmers/RandomProgrammer.ts +223 -242
  355. package/src/programmers/TypiaProgrammer.ts +27 -2
  356. package/src/programmers/ValidateProgrammer.ts +60 -21
  357. package/src/programmers/helpers/CloneJoiner.ts +57 -20
  358. package/src/programmers/helpers/ICheckEntry.ts +3 -2
  359. package/src/programmers/helpers/ProtobufUtil.ts +113 -17
  360. package/src/programmers/helpers/RandomJoiner.ts +11 -37
  361. package/src/programmers/helpers/RandomRanger.ts +16 -51
  362. package/src/programmers/helpers/UnionExplorer.ts +1 -20
  363. package/src/programmers/internal/application_alias.ts +0 -1
  364. package/src/programmers/internal/application_array.ts +32 -10
  365. package/src/programmers/internal/{application_resolved.ts → application_escaped.ts} +1 -1
  366. package/src/programmers/internal/application_number.ts +76 -70
  367. package/src/programmers/internal/application_object.ts +0 -3
  368. package/src/programmers/internal/application_schema.ts +40 -22
  369. package/src/programmers/internal/application_string.ts +33 -27
  370. package/src/programmers/internal/check_array_length.ts +34 -28
  371. package/src/programmers/internal/check_bigint.ts +25 -118
  372. package/src/programmers/internal/check_dynamic_properties.ts +1 -2
  373. package/src/programmers/internal/check_number.ts +81 -261
  374. package/src/programmers/internal/check_string.ts +28 -39
  375. package/src/programmers/internal/check_template.ts +17 -1
  376. package/src/programmers/internal/check_union_array_like.ts +1 -16
  377. package/src/programmers/internal/feature_object_entries.ts +12 -18
  378. package/src/programmers/internal/random_custom.ts +3 -3
  379. package/src/programmers/json/JsonApplicationProgrammer.ts +6 -3
  380. package/src/programmers/json/JsonAssertParseProgrammer.ts +7 -2
  381. package/src/programmers/json/JsonIsParseProgrammer.ts +7 -2
  382. package/src/programmers/json/JsonStringifyProgrammer.ts +32 -73
  383. package/src/programmers/json/JsonValidateParseProgrammer.ts +7 -2
  384. package/src/programmers/json/JsonValidateStringifyProgrammer.ts +1 -1
  385. package/src/programmers/misc/MiscCloneProgrammer.ts +24 -35
  386. package/src/programmers/{IsPruneProgrammer.ts → misc/MiscIsPruneProgrammer.ts} +7 -7
  387. package/src/programmers/misc/MiscLiteralsProgrammer.ts +11 -6
  388. package/src/programmers/misc/MiscPruneProgrammer.ts +16 -20
  389. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +34 -68
  390. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +153 -98
  391. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +6 -36
  392. package/src/schemas/json/IJsonSchema.ts +11 -38
  393. package/src/schemas/metadata/IMetadataAlias.ts +0 -2
  394. package/src/schemas/metadata/IMetadataProperty.ts +0 -2
  395. package/src/schemas/metadata/IMetadataTypeTag.ts +2 -0
  396. package/src/schemas/metadata/Metadata.ts +32 -46
  397. package/src/schemas/metadata/MetadataAlias.ts +0 -5
  398. package/src/schemas/metadata/MetadataArray.ts +21 -3
  399. package/src/schemas/metadata/MetadataAtomic.ts +42 -0
  400. package/src/schemas/metadata/MetadataProperty.ts +0 -5
  401. package/src/schemas/metadata/MetadataTuple.ts +5 -4
  402. package/src/tags/ExclusiveMaximum.ts +13 -8
  403. package/src/tags/ExclusiveMinimum.ts +13 -8
  404. package/src/tags/Format.ts +21 -20
  405. package/src/tags/MaxItems.ts +9 -8
  406. package/src/tags/MaxLength.ts +9 -8
  407. package/src/tags/Maximum.ts +13 -8
  408. package/src/tags/MinItems.ts +9 -8
  409. package/src/tags/MinLength.ts +9 -8
  410. package/src/tags/Minimum.ts +13 -8
  411. package/src/tags/MultipleOf.ts +15 -10
  412. package/src/tags/Pattern.ts +8 -8
  413. package/src/tags/TagBase.ts +18 -13
  414. package/src/tags/Type.ts +26 -29
  415. package/src/tags/index.ts +1 -0
  416. package/src/transform.ts +13 -5
  417. package/src/transformers/CallExpressionTransformer.ts +6 -3
  418. package/src/transformers/FileTransformer.ts +25 -13
  419. package/src/transformers/IProject.ts +3 -0
  420. package/src/transformers/NodeTransformer.ts +1 -1
  421. package/src/transformers/TransformerError.ts +55 -0
  422. package/src/transformers/features/CreateRandomTransformer.ts +11 -7
  423. package/src/transformers/features/RandomTransformer.ts +11 -7
  424. package/src/transformers/features/json/JsonApplicationTransformer.ts +39 -35
  425. package/src/transformers/features/misc/MetadataTransformer.ts +18 -10
  426. package/src/transformers/features/misc/MiscCreateIsPruneTransformer.ts +2 -2
  427. package/src/transformers/features/misc/MiscIsPruneTransformer.ts +2 -2
  428. package/src/transformers/features/misc/MiscLiteralsTransformer.ts +11 -7
  429. package/src/transformers/features/protobuf/ProtobufMessageTransformer.ts +9 -7
  430. package/src/transformers/internal/GenericTransformer.ts +17 -10
  431. package/src/typings/ProtobufAtomic.ts +19 -0
  432. package/src/typings/ValidationPipe.ts +9 -0
  433. package/lib/factories/MetadataTagFactory.d.ts +0 -6
  434. package/lib/factories/MetadataTagFactory.js +0 -312
  435. package/lib/factories/MetadataTagFactory.js.map +0 -1
  436. package/lib/factories/internal/metadata/iterate_metadata_type_tags.d.ts +0 -3
  437. package/lib/factories/internal/metadata/iterate_metadata_type_tags.js +0 -157
  438. package/lib/factories/internal/metadata/iterate_metadata_type_tags.js.map +0 -1
  439. package/lib/functional/$is_custom.d.ts +0 -2
  440. package/lib/functional/$is_custom.js +0 -13
  441. package/lib/functional/$is_custom.js.map +0 -1
  442. package/lib/functional/$is_date.d.ts +0 -1
  443. package/lib/functional/$is_date.js +0 -7
  444. package/lib/functional/$is_date.js.map +0 -1
  445. package/lib/functional/$is_datetime.d.ts +0 -1
  446. package/lib/functional/$is_datetime.js +0 -8
  447. package/lib/functional/$is_datetime.js.map +0 -1
  448. package/lib/functional/$is_email.d.ts +0 -1
  449. package/lib/functional/$is_email.js +0 -7
  450. package/lib/functional/$is_email.js.map +0 -1
  451. package/lib/functional/$is_ipv4.d.ts +0 -1
  452. package/lib/functional/$is_ipv4.js +0 -7
  453. package/lib/functional/$is_ipv4.js.map +0 -1
  454. package/lib/functional/$is_ipv6.d.ts +0 -1
  455. package/lib/functional/$is_ipv6.js +0 -7
  456. package/lib/functional/$is_ipv6.js.map +0 -1
  457. package/lib/functional/$is_url.d.ts +0 -1
  458. package/lib/functional/$is_url.js +0 -7
  459. package/lib/functional/$is_url.js.map +0 -1
  460. package/lib/functional/$is_uuid.d.ts +0 -1
  461. package/lib/functional/$is_uuid.js +0 -7
  462. package/lib/functional/$is_uuid.js.map +0 -1
  463. package/lib/programmers/IsPruneProgrammer.js.map +0 -1
  464. package/lib/programmers/internal/application_resolved.d.ts +0 -4
  465. package/lib/programmers/internal/application_resolved.js.map +0 -1
  466. package/lib/programmers/internal/check_array_tags.js +0 -39
  467. package/lib/programmers/internal/check_array_tags.js.map +0 -1
  468. package/lib/programmers/internal/check_string_tags.d.ts +0 -1
  469. package/lib/programmers/internal/check_string_tags.js +0 -89
  470. package/lib/programmers/internal/check_string_tags.js.map +0 -1
  471. package/lib/programmers/internal/get_comment_tags.d.ts +0 -1
  472. package/lib/programmers/internal/get_comment_tags.js +0 -25
  473. package/lib/programmers/internal/get_comment_tags.js.map +0 -1
  474. package/lib/schemas/metadata/ICommentTag.d.ts +0 -4
  475. package/lib/schemas/metadata/ICommentTag.js.map +0 -1
  476. package/lib/schemas/metadata/IMetadataCommentTag.d.ts +0 -63
  477. package/lib/schemas/metadata/IMetadataCommentTag.js.map +0 -1
  478. package/src/factories/MetadataTagFactory.ts +0 -365
  479. package/src/factories/internal/metadata/iterate_metadata_type_tags.ts +0 -183
  480. package/src/functional/$is_custom.ts +0 -14
  481. package/src/functional/$is_date.ts +0 -3
  482. package/src/functional/$is_datetime.ts +0 -2
  483. package/src/functional/$is_email.ts +0 -4
  484. package/src/functional/$is_ipv4.ts +0 -4
  485. package/src/functional/$is_ipv6.ts +0 -4
  486. package/src/functional/$is_url.ts +0 -4
  487. package/src/functional/$is_uuid.ts +0 -4
  488. package/src/programmers/internal/check_array_tags.ts +0 -45
  489. package/src/programmers/internal/check_string_tags.ts +0 -67
  490. package/src/programmers/internal/get_comment_tags.ts +0 -23
  491. package/src/schemas/metadata/ICommentTag.ts +0 -4
  492. package/src/schemas/metadata/IMetadataCommentTag.ts +0 -112
  493. /package/lib/{programmers/internal/check_array_tags.d.ts → factories/MetadataCommentTagFactory.d.ts} +0 -0
@@ -13,7 +13,12 @@ export const iterate_metadata_alias =
13
13
  (checker: ts.TypeChecker) =>
14
14
  (options: MetadataFactory.IOptions) =>
15
15
  (collection: MetadataCollection) =>
16
- (meta: Metadata, type: ts.Type): boolean => {
16
+ (errors: MetadataFactory.IError[]) =>
17
+ (
18
+ meta: Metadata,
19
+ type: ts.Type,
20
+ explore: MetadataFactory.IExplore,
21
+ ): boolean => {
17
22
  if (options.absorb !== false || type.aliasSymbol === undefined)
18
23
  return false;
19
24
 
@@ -24,7 +29,7 @@ export const iterate_metadata_alias =
24
29
  // CONSTRUCT DEFINITION
25
30
  const alias: MetadataAlias = emplace_metadata_alias(checker)(options)(
26
31
  collection,
27
- )(type, meta.nullable);
32
+ )(errors)(type, meta.nullable, explore);
28
33
  ArrayUtil.add(meta.aliases, alias, (elem) => elem.name === alias.name);
29
34
  return true;
30
35
  };
@@ -14,12 +14,17 @@ export const iterate_metadata_array =
14
14
  (checker: ts.TypeChecker) =>
15
15
  (options: MetadataFactory.IOptions) =>
16
16
  (collection: MetadataCollection) =>
17
- (meta: Metadata, type: ts.Type): boolean => {
17
+ (errors: MetadataFactory.IError[]) =>
18
+ (
19
+ meta: Metadata,
20
+ type: ts.Type,
21
+ explore: MetadataFactory.IExplore,
22
+ ): boolean => {
18
23
  if (!checker.isArrayType(type)) return false;
19
24
 
20
25
  const arrayType: MetadataArrayType = emplace_metadata_array_type(
21
26
  checker,
22
- )(options)(collection)(type, meta.nullable);
27
+ )(options)(collection)(errors)(type, meta.nullable, explore);
23
28
  ArrayUtil.add(
24
29
  meta.arrays,
25
30
  MetadataArray.create({
@@ -1,6 +1,7 @@
1
1
  import ts from "typescript";
2
2
 
3
3
  import { Metadata } from "../../../schemas/metadata/Metadata";
4
+ import { MetadataAtomic } from "../../../schemas/metadata/MetadataAtomic";
4
5
 
5
6
  import { ArrayUtil } from "../../../utils/ArrayUtil";
6
7
 
@@ -19,7 +20,7 @@ export const iterate_metadata_atomic = (
19
20
  if (filter(info.atomic) || filter(info.literal)) {
20
21
  ArrayUtil.add(
21
22
  meta.atomics,
22
- { type: info.name, tags: [] },
23
+ MetadataAtomic.create({ type: info.name, tags: [] }),
23
24
  (x, y) => x.type === y.type,
24
25
  );
25
26
  return true;
@@ -4,38 +4,39 @@ import { MetadataObject } from "../../../schemas/metadata/MetadataObject";
4
4
  import { MetadataTupleType } from "../../../schemas/metadata/MetadataTupleType";
5
5
 
6
6
  import { MetadataCollection } from "../../MetadataCollection";
7
+ import { MetadataFactory } from "../../MetadataFactory";
7
8
  import { iterate_metadata_comment_tags } from "./iterate_metadata_comment_tags";
8
9
 
9
- export const iterate_metadata_collection = (
10
- collection: MetadataCollection,
11
- ): void => {
12
- for (const array of collection.arrays())
13
- if (array.recursive === null)
14
- collection.setArrayRecursive(
15
- array,
16
- isArrayRecursive(new Set())(array)(array.value),
17
- );
18
- for (const tuple of collection.tuples())
19
- if (tuple.recursive === null) {
20
- const visited: Set<Metadata> = new Set();
21
- collection.setTupleRecursive(
22
- tuple,
23
- tuple.elements.some(isTupleRecursive(visited)(tuple)),
24
- );
25
- }
26
- for (const obj of collection.objects()) {
27
- iterate_metadata_comment_tags(obj);
28
- if (obj.recursive === null) {
29
- const visited: Set<Metadata> = new Set();
30
- collection.setObjectRecursive(
31
- obj,
32
- obj.properties.some((p) =>
33
- isObjectRecursive(visited)(obj)(p.value),
34
- ),
35
- );
10
+ export const iterate_metadata_collection =
11
+ (errors: MetadataFactory.IError[]) =>
12
+ (collection: MetadataCollection): void => {
13
+ for (const array of collection.arrays())
14
+ if (array.recursive === null)
15
+ collection.setArrayRecursive(
16
+ array,
17
+ isArrayRecursive(new Set())(array)(array.value),
18
+ );
19
+ for (const tuple of collection.tuples())
20
+ if (tuple.recursive === null) {
21
+ const visited: Set<Metadata> = new Set();
22
+ collection.setTupleRecursive(
23
+ tuple,
24
+ tuple.elements.some(isTupleRecursive(visited)(tuple)),
25
+ );
26
+ }
27
+ for (const obj of collection.objects()) {
28
+ iterate_metadata_comment_tags(errors)(obj);
29
+ if (obj.recursive === null) {
30
+ const visited: Set<Metadata> = new Set();
31
+ collection.setObjectRecursive(
32
+ obj,
33
+ obj.properties.some((p) =>
34
+ isObjectRecursive(visited)(obj)(p.value),
35
+ ),
36
+ );
37
+ }
36
38
  }
37
- }
38
- };
39
+ };
39
40
 
40
41
  const isArrayRecursive =
41
42
  (visited: Set<Metadata>) =>
@@ -1,31 +1,26 @@
1
1
  import { MetadataObject } from "../../../schemas/metadata/MetadataObject";
2
2
 
3
- import { Writable } from "../../../typings/Writable";
3
+ import { MetadataCommentTagFactory } from "../../MetadataCommentTagFactory";
4
+ import { MetadataFactory } from "../../MetadataFactory";
4
5
 
5
- import { Escaper } from "../../../utils/Escaper";
6
+ export const iterate_metadata_comment_tags =
7
+ (errors: MetadataFactory.IError[]) => (object: MetadataObject) => {
8
+ if (object.tagged_ === true) return;
9
+ object.tagged_ = true;
6
10
 
7
- import { MetadataTagFactory } from "../../MetadataTagFactory";
8
-
9
- export const iterate_metadata_comment_tags = (obj: MetadataObject) => {
10
- if (obj.tagged_ === true) return;
11
- obj.tagged_ = true;
12
-
13
- for (const prop of obj.properties) {
14
- const key: string = prop.key.getName();
15
- const variable: string | null =
16
- key.length >= 3 &&
17
- key[0] === '"' &&
18
- key[key.length - 1] === '"' &&
19
- Escaper.variable(key.slice(1, -1))
20
- ? key.slice(1, -1)
21
- : null;
22
-
23
- Writable(prop).tags = MetadataTagFactory.generate(prop.value)(
24
- prop.jsDocTags,
25
- )(
26
- variable !== null
27
- ? () => `${obj.name}.${variable}`
28
- : () => `${obj.name}[${key}]`,
29
- );
30
- }
31
- };
11
+ for (const property of object.properties) {
12
+ MetadataCommentTagFactory.analyze(errors)(property.value)(
13
+ property.jsDocTags,
14
+ {
15
+ top: false,
16
+ object,
17
+ property: property.key.isSoleLiteral()
18
+ ? property.key.getSoleLiteral()!
19
+ : {},
20
+ nested: null,
21
+ escaped: false,
22
+ aliased: false,
23
+ },
24
+ );
25
+ }
26
+ };
@@ -1,28 +1,27 @@
1
1
  import ts from "typescript";
2
2
 
3
- import { $clone } from "../../../functional/$clone";
4
-
5
3
  import { IMetadataTypeTag } from "../../../schemas/metadata/IMetadataTypeTag";
6
4
  import { Metadata } from "../../../schemas/metadata/Metadata";
5
+ import { MetadataAtomic } from "../../../schemas/metadata/MetadataAtomic";
7
6
 
8
7
  import { ArrayUtil } from "../../../utils/ArrayUtil";
9
8
 
10
9
  import { MetadataCollection } from "../../MetadataCollection";
11
10
  import { MetadataFactory } from "../../MetadataFactory";
11
+ import { MetadataTypeTagFactory } from "../../MetadataTypeTagFactory";
12
12
  import { explore_metadata } from "./explore_metadata";
13
13
  import { iterate_metadata } from "./iterate_metadata";
14
14
  import { iterate_metadata_array } from "./iterate_metadata_array";
15
- import { iterate_metadata_type_tags } from "./iterate_metadata_type_tags";
16
15
 
17
16
  export const iterate_metadata_intersection =
18
17
  (checker: ts.TypeChecker) =>
19
18
  (options: MetadataFactory.IOptions) =>
20
19
  (collection: MetadataCollection) =>
20
+ (errors: MetadataFactory.IError[]) =>
21
21
  (
22
22
  meta: Metadata,
23
23
  type: ts.Type,
24
- resolved: boolean,
25
- aliased: boolean,
24
+ explore: MetadataFactory.IExplore,
26
25
  ): boolean => {
27
26
  if (!type.isIntersection()) return false;
28
27
  else if (
@@ -37,28 +36,39 @@ export const iterate_metadata_intersection =
37
36
 
38
37
  // COSTRUCT FAKE METADATA LIST
39
38
  const fakeCollection: MetadataCollection = new MetadataCollection();
39
+ const fakeErrors: MetadataFactory.IError[] = [];
40
40
  const children: Metadata[] = [
41
41
  ...new Map(
42
42
  type.types.map((t) => {
43
43
  const m: Metadata = explore_metadata(checker)({
44
44
  ...options,
45
45
  absorb: true,
46
- })(fakeCollection)(t, resolved);
46
+ })(fakeCollection)(fakeErrors)(t, {
47
+ ...explore,
48
+ aliased: false,
49
+ });
47
50
  return [m.getName(), m] as const;
48
51
  }),
49
52
  ).values(),
50
53
  ];
54
+ if (fakeErrors.length) {
55
+ errors.push(...fakeErrors);
56
+ return true;
57
+ }
51
58
 
52
59
  // ONLY ONE CHILD AFTER REMOVING DUPLICATES
53
60
  if (children.length === 1) {
54
- iterate_metadata(checker)(options)(collection)(
61
+ iterate_metadata(checker)(options)(collection)(errors)(
55
62
  meta,
56
63
  type.types[0]!,
57
- resolved,
58
- aliased,
64
+ explore,
59
65
  );
60
66
  return true;
61
- }
67
+ } else if (
68
+ // ONLY OBJECT TYPES -> SPECIAL LOGIC FOR TS V5.2
69
+ children.every((c) => c.objects.length === 1 && c.size() === 1)
70
+ )
71
+ return false;
62
72
 
63
73
  // VALIDATE EACH TYPES
64
74
  const individuals: (readonly [Metadata, number])[] = children
@@ -99,9 +109,18 @@ export const iterate_metadata_intersection =
99
109
  atomics.size + arrays.size > 1 ||
100
110
  individuals.length + objects.length + constants.length !==
101
111
  children.length
102
- )
103
- throw new Error(message(children));
104
- else if (atomics.size === 0 && arrays.size === 0 && constants.length) {
112
+ ) {
113
+ errors.push({
114
+ name: children.map((c) => c.getName()).join(" & "),
115
+ explore: { ...explore },
116
+ messages: ["nonsensible intersection"],
117
+ });
118
+ return true;
119
+ } else if (
120
+ atomics.size === 0 &&
121
+ arrays.size === 0 &&
122
+ constants.length
123
+ ) {
105
124
  for (const m of constants) {
106
125
  for (const tpl of m.templates)
107
126
  ArrayUtil.add(
@@ -122,7 +141,7 @@ export const iterate_metadata_intersection =
122
141
  elem,
123
142
  (a, b) => a === b,
124
143
  );
125
- else meta.constants.push($clone(c));
144
+ else meta.constants.push({ ...c });
126
145
  }
127
146
  }
128
147
  return true;
@@ -139,29 +158,34 @@ export const iterate_metadata_intersection =
139
158
  )
140
159
  ArrayUtil.add(
141
160
  meta.atomics,
142
- {
161
+ MetadataAtomic.create({
143
162
  type: atomics.values().next().value as "string",
144
163
  tags: [],
145
- },
164
+ }),
146
165
  (a, b) => a.type === b.type,
147
166
  );
148
167
  else if (target === "array") {
149
168
  const name: string = arrays.values().next().value;
150
169
  if (!meta.arrays.some((a) => a.type.name === name)) {
151
- iterate_metadata_array(checker)(options)(collection)(
170
+ iterate_metadata_array(checker)(options)(collection)(errors)(
152
171
  meta,
153
172
  type.types[
154
173
  individuals.find((i) => i[0].arrays.length === 1)![1]
155
174
  ]!,
175
+ {
176
+ ...explore,
177
+ aliased: false,
178
+ escaped: false,
179
+ },
156
180
  );
157
181
  }
158
182
  }
159
183
 
160
184
  // ASSIGN TAGS
161
185
  if (objects.length && target !== "boolean") {
162
- const tags: IMetadataTypeTag[] = iterate_metadata_type_tags(target)(
163
- objects.map((om) => om.objects).flat(),
164
- );
186
+ const tags: IMetadataTypeTag[] = MetadataTypeTagFactory.analyze(
187
+ errors,
188
+ )(target)(objects.map((om) => om.objects).flat(), explore);
165
189
  if (tags.length)
166
190
  if (target === "array") meta.arrays.at(-1)!.tags.push(tags);
167
191
  else
@@ -171,8 +195,3 @@ export const iterate_metadata_intersection =
171
195
  }
172
196
  return true;
173
197
  };
174
-
175
- const message = (children: Metadata[]) =>
176
- `Error on typia.MetadataFactory.analyze(): nonsensible intersection type detected - ${children
177
- .map((c) => c.getName())
178
- .join(" & ")}.`;
@@ -13,7 +13,12 @@ export const iterate_metadata_map =
13
13
  (checker: ts.TypeChecker) =>
14
14
  (options: MetadataFactory.IOptions) =>
15
15
  (collection: MetadataCollection) =>
16
- (meta: Metadata, type: ts.Type): boolean => {
16
+ (errors: MetadataFactory.IError[]) =>
17
+ (
18
+ meta: Metadata,
19
+ type: ts.Type,
20
+ explore: MetadataFactory.IExplore,
21
+ ): boolean => {
17
22
  type = checker.getApparentType(type);
18
23
 
19
24
  const name = TypeFactory.getFullName(checker)(type, type.getSymbol());
@@ -29,10 +34,21 @@ export const iterate_metadata_map =
29
34
  ArrayUtil.set(
30
35
  meta.maps,
31
36
  {
32
- key: explore_metadata(checker)(options)(collection)(key, false),
33
- value: explore_metadata(checker)(options)(collection)(
37
+ key: explore_metadata(checker)(options)(collection)(errors)(
38
+ key,
39
+ {
40
+ ...explore,
41
+ escaped: false,
42
+ aliased: false,
43
+ },
44
+ ),
45
+ value: explore_metadata(checker)(options)(collection)(errors)(
34
46
  value,
35
- false,
47
+ {
48
+ ...explore,
49
+ escaped: false,
50
+ aliased: false,
51
+ },
36
52
  ),
37
53
  },
38
54
  (elem) => `Map<${elem.key.getName()}, ${elem.value.getName()}>`,
@@ -13,6 +13,7 @@ export const iterate_metadata_object =
13
13
  (checker: ts.TypeChecker) =>
14
14
  (options: MetadataFactory.IOptions) =>
15
15
  (collection: MetadataCollection) =>
16
+ (errors: MetadataFactory.IError[]) =>
16
17
  (meta: Metadata, type: ts.Type, ensure: boolean = false): boolean => {
17
18
  if (ensure === false) {
18
19
  const filter = (flag: ts.TypeFlags) =>
@@ -37,7 +38,7 @@ export const iterate_metadata_object =
37
38
 
38
39
  const obj: MetadataObject = emplace_metadata_object(checker)(options)(
39
40
  collection,
40
- )(type, meta.nullable);
41
+ )(errors)(type, meta.nullable);
41
42
  ArrayUtil.add(meta.objects, obj, (elem) => elem.name === obj.name);
42
43
  return true;
43
44
  };
@@ -10,21 +10,20 @@ import { MetadataFactory } from "../../MetadataFactory";
10
10
  import { TypeFactory } from "../../TypeFactory";
11
11
  import { iterate_metadata } from "./iterate_metadata";
12
12
 
13
- // import { iterate_metadata_coalesce } from "./iterate_metadata_coalesce";
14
-
15
13
  export const iterate_metadata_resolve =
16
14
  (checker: ts.TypeChecker) =>
17
15
  (options: MetadataFactory.IOptions) =>
18
16
  (collection: MetadataCollection) =>
17
+ (errors: MetadataFactory.IError[]) =>
19
18
  (
20
19
  meta: Metadata,
21
20
  type: ts.Type,
22
- resolved: boolean,
23
- aliased: boolean,
21
+ explore: MetadataFactory.IExplore,
24
22
  ): boolean => {
25
- if (options.escape === false || resolved === true) return false;
23
+ if (options.escape === false || explore.escaped === true) return false;
26
24
 
27
- const escaped: ts.Type | null = TypeFactory.resolve(checker)(type);
25
+ const escaped: ts.Type | null =
26
+ TypeFactory.getReturnType(checker)(type)("toJSON");
28
27
  if (escaped === null) return false;
29
28
 
30
29
  if (meta.escaped === null) {
@@ -33,17 +32,21 @@ export const iterate_metadata_resolve =
33
32
  returns: Metadata.initialize(),
34
33
  });
35
34
  }
36
- iterate_metadata(checker)(options)(collection)(
35
+ iterate_metadata(checker)(options)(collection)(errors)(
37
36
  meta.escaped!.original,
38
37
  type,
39
- true,
40
- aliased,
38
+ {
39
+ ...explore,
40
+ escaped: true,
41
+ },
41
42
  );
42
- iterate_metadata(checker)(options)(collection)(
43
+ iterate_metadata(checker)(options)(collection)(errors)(
43
44
  meta.escaped!.returns,
44
45
  escaped,
45
- true,
46
- aliased,
46
+ {
47
+ ...explore,
48
+ escaped: true,
49
+ },
47
50
  );
48
51
  return true;
49
52
  };
@@ -13,7 +13,12 @@ export const iterate_metadata_set =
13
13
  (checker: ts.TypeChecker) =>
14
14
  (options: MetadataFactory.IOptions) =>
15
15
  (collection: MetadataCollection) =>
16
- (meta: Metadata, type: ts.Type): boolean => {
16
+ (errors: MetadataFactory.IError[]) =>
17
+ (
18
+ meta: Metadata,
19
+ type: ts.Type,
20
+ explore: MetadataFactory.IExplore,
21
+ ): boolean => {
17
22
  type = checker.getApparentType(type);
18
23
 
19
24
  const name = TypeFactory.getFullName(checker)(type, type.getSymbol());
@@ -26,7 +31,11 @@ export const iterate_metadata_set =
26
31
  const key: ts.Type = generic[0]!;
27
32
  ArrayUtil.set(
28
33
  meta.sets,
29
- explore_metadata(checker)(options)(collection)(key, false),
34
+ explore_metadata(checker)(options)(collection)(errors)(key, {
35
+ ...explore,
36
+ escaped: false,
37
+ aliased: false,
38
+ }),
30
39
  (elem) => elem.getName(),
31
40
  );
32
41
  return true;
@@ -11,7 +11,12 @@ export const iterate_metadata_template =
11
11
  (checker: ts.TypeChecker) =>
12
12
  (options: MetadataFactory.IOptions) =>
13
13
  (collection: MetadataCollection) =>
14
- (meta: Metadata, type: ts.Type): boolean => {
14
+ (errors: MetadataFactory.IError[]) =>
15
+ (
16
+ meta: Metadata,
17
+ type: ts.Type,
18
+ explore: MetadataFactory.IExplore,
19
+ ): boolean => {
15
20
  const filter = (flag: ts.TypeFlags) => (type.getFlags() & flag) !== 0;
16
21
  if (!filter(ts.TypeFlags.TemplateLiteral)) return false;
17
22
 
@@ -26,9 +31,13 @@ export const iterate_metadata_template =
26
31
  const binded: ts.Type | undefined = template.types[i];
27
32
  if (binded)
28
33
  row.push(
29
- explore_metadata(checker)(options)(collection)(
34
+ explore_metadata(checker)(options)(collection)(errors)(
30
35
  binded,
31
- false,
36
+ {
37
+ ...explore,
38
+ escaped: false,
39
+ aliased: false,
40
+ },
32
41
  ),
33
42
  );
34
43
  });
@@ -14,12 +14,17 @@ export const iterate_metadata_tuple =
14
14
  (checker: ts.TypeChecker) =>
15
15
  (options: MetadataFactory.IOptions) =>
16
16
  (collection: MetadataCollection) =>
17
- (meta: Metadata, type: ts.TupleType): boolean => {
17
+ (errors: MetadataFactory.IError[]) =>
18
+ (
19
+ meta: Metadata,
20
+ type: ts.TupleType,
21
+ explore: MetadataFactory.IExplore,
22
+ ): boolean => {
18
23
  if (!checker.isTupleType(type)) return false;
19
24
 
20
25
  const tupleType: MetadataTupleType = emplace_metadata_tuple(checker)(
21
26
  options,
22
- )(collection)(type, meta.nullable);
27
+ )(collection)(errors)(type, meta.nullable, explore);
23
28
  ArrayUtil.add(
24
29
  meta.tuples,
25
30
  MetadataTuple.create({
@@ -10,15 +10,18 @@ export const iterate_metadata_union =
10
10
  (checker: ts.TypeChecker) =>
11
11
  (options: MetadataFactory.IOptions) =>
12
12
  (collection: MetadataCollection) =>
13
- (meta: Metadata, type: ts.Type, parentResolved: boolean): boolean => {
13
+ (errors: MetadataFactory.IError[]) =>
14
+ (
15
+ meta: Metadata,
16
+ type: ts.Type,
17
+ explore: MetadataFactory.IExplore,
18
+ ): boolean => {
14
19
  if (!type.isUnion()) return false;
15
20
  type.types.forEach((t) =>
16
- iterate_metadata(checker)(options)(collection)(
17
- meta,
18
- t,
19
- parentResolved,
20
- false,
21
- ),
21
+ iterate_metadata(checker)(options)(collection)(errors)(meta, t, {
22
+ ...explore,
23
+ aliased: false,
24
+ }),
22
25
  );
23
26
  return true;
24
27
  };
@@ -9,14 +9,6 @@ import { $any } from "./$any";
9
9
  import { $every } from "./$every";
10
10
  import { $guard } from "./$guard";
11
11
  import { $is_between } from "./$is_between";
12
- import { $is_custom } from "./$is_custom";
13
- import { $is_date } from "./$is_date";
14
- import { $is_datetime } from "./$is_datetime";
15
- import { $is_email } from "./$is_email";
16
- import { $is_ipv4 } from "./$is_ipv4";
17
- import { $is_ipv6 } from "./$is_ipv6";
18
- import { $is_url } from "./$is_url";
19
- import { $is_uuid } from "./$is_uuid";
20
12
  import { $join } from "./$join";
21
13
  import { $number } from "./$number";
22
14
  import { $report } from "./$report";
@@ -30,15 +22,7 @@ import { $tail } from "./$tail";
30
22
  */
31
23
  export namespace Namespace {
32
24
  export const is = () => ({
33
- is_uuid: $is_uuid,
34
- is_email: $is_email,
35
- is_url: $is_url,
36
- is_ipv4: $is_ipv4,
37
- is_ipv6: $is_ipv6,
38
25
  is_between: $is_between,
39
- is_date: $is_date,
40
- is_datetime: $is_datetime,
41
- is_custom: $is_custom,
42
26
  });
43
27
 
44
28
  export const assert = (method: string) => ({