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
@@ -4,7 +4,6 @@ import { IdentifierFactory } from "../../factories/IdentifierFactory";
4
4
  import { StatementFactory } from "../../factories/StatementFactory";
5
5
  import { TypeFactory } from "../../factories/TypeFactory";
6
6
 
7
- import { IMetadataCommentTag } from "../../schemas/metadata/IMetadataCommentTag";
8
7
  import { MetadataArray } from "../../schemas/metadata/MetadataArray";
9
8
  import { MetadataArrayType } from "../../schemas/metadata/MetadataArrayType";
10
9
  import { MetadataTuple } from "../../schemas/metadata/MetadataTuple";
@@ -26,8 +25,6 @@ export const check_union_array_like =
26
25
  input: ts.Expression,
27
26
  origins: Origin[],
28
27
  explore: FeatureProgrammer.IExplore,
29
- tags: IMetadataCommentTag[],
30
- jsDocTags: ts.JSDocTagInfo[],
31
28
  ): ts.ArrowFunction => {
32
29
  // ONLY ONE TYPE
33
30
  const targets: Array<Category> = origins.map(accessor.transform);
@@ -38,13 +35,7 @@ export const check_union_array_like =
38
35
  parameters,
39
36
  undefined,
40
37
  undefined,
41
- props.decoder(
42
- accessor.array(input),
43
- targets[0]!,
44
- explore,
45
- tags,
46
- jsDocTags,
47
- ),
38
+ props.decoder(accessor.array(input), targets[0]!, explore),
48
39
  );
49
40
 
50
41
  const array = ts.factory.createIdentifier("array");
@@ -87,8 +78,6 @@ export const check_union_array_like =
87
78
  ? `"[0]"`
88
79
  : "",
89
80
  },
90
- tags,
91
- jsDocTags,
92
81
  array,
93
82
  ),
94
83
  ),
@@ -110,8 +99,6 @@ export const check_union_array_like =
110
99
  ...explore,
111
100
  tracable: true,
112
101
  },
113
- tags,
114
- jsDocTags,
115
102
  ),
116
103
  ),
117
104
  ],
@@ -301,8 +288,6 @@ export namespace check_union_array_like {
301
288
  front: ts.Expression,
302
289
  target: Element,
303
290
  explore: FeatureProgrammer.IExplore,
304
- tags: IMetadataCommentTag[],
305
- jsDocTags: ts.JSDocTagInfo[],
306
291
  container: ts.Expression,
307
292
  ): ts.Expression;
308
293
  decoder: UnionExplorer.Decoder<Category>;
@@ -41,23 +41,17 @@ export const feature_object_entries =
41
41
  input: propInput,
42
42
  key: prop.key,
43
43
  meta: prop.value,
44
- expression: config.decoder()(
45
- propInput,
46
- prop.value,
47
- {
48
- tracable: config.path || config.trace,
49
- source: "function",
50
- from,
51
- postfix:
52
- sole !== null
53
- ? IdentifierFactory.postfix(sole)
54
- : (() => {
55
- importer.use("join");
56
- return `$join(key)`;
57
- })(),
58
- },
59
- prop.tags,
60
- prop.jsDocTags,
61
- ),
44
+ expression: config.decoder()(propInput, prop.value, {
45
+ tracable: config.path || config.trace,
46
+ source: "function",
47
+ from,
48
+ postfix:
49
+ sole !== null
50
+ ? IdentifierFactory.postfix(sole)
51
+ : (() => {
52
+ importer.use("join");
53
+ return `$join(key)`;
54
+ })(),
55
+ }),
62
56
  };
63
57
  });
@@ -3,7 +3,7 @@ import ts from "typescript";
3
3
  import { ExpressionFactory } from "../../factories/ExpressionFactory";
4
4
  import { LiteralFactory } from "../../factories/LiteralFactory";
5
5
 
6
- import { ICommentTag } from "../../schemas/metadata/ICommentTag";
6
+ import { IMetadataTypeTag } from "../../schemas/metadata/IMetadataTypeTag";
7
7
 
8
8
  import { Customizable } from "../../typings/Customizable";
9
9
 
@@ -13,7 +13,7 @@ import { Customizable } from "../../typings/Customizable";
13
13
  export const random_custom =
14
14
  (accessor: (name: string) => ts.Expression) =>
15
15
  (type: keyof Customizable) =>
16
- (comments: ICommentTag[]) =>
16
+ (tags: IMetadataTypeTag[]) =>
17
17
  (expression: ts.Expression) =>
18
18
  ExpressionFactory.coalesce(
19
19
  ts.factory.createCallChain(
@@ -24,6 +24,6 @@ export const random_custom =
24
24
  ),
25
25
  ts.factory.createToken(ts.SyntaxKind.QuestionDotToken),
26
26
  undefined,
27
- [LiteralFactory.generate(comments)],
27
+ [LiteralFactory.generate(tags)],
28
28
  ),
29
29
  )(expression);
@@ -3,6 +3,8 @@ import { IJsonComponents } from "../../schemas/json/IJsonComponents";
3
3
  import { IJsonSchema } from "../../schemas/json/IJsonSchema";
4
4
  import { Metadata } from "../../schemas/metadata/Metadata";
5
5
 
6
+ import { TransformerError } from "../../transformers/TransformerError";
7
+
6
8
  import { application_schema } from "../internal/application_schema";
7
9
 
8
10
  export namespace JsonApplicationProgrammer {
@@ -35,9 +37,10 @@ export namespace JsonApplicationProgrammer {
35
37
  schemas: metadatas.map((meta, i) => {
36
38
  const schema: IJsonSchema | null = generator(meta)({});
37
39
  if (schema === null)
38
- throw new Error(
39
- `Error on typia.application(): invalid type on argument - (${meta.getName()}, ${i})`,
40
- );
40
+ throw new TransformerError({
41
+ code: "typia.json.application",
42
+ message: `invalid type on argument - (${meta.getName()}, ${i})`,
43
+ });
41
44
  return schema;
42
45
  }),
43
46
  components,
@@ -1,6 +1,7 @@
1
1
  import ts from "typescript";
2
2
 
3
3
  import { IdentifierFactory } from "../../factories/IdentifierFactory";
4
+ import { JsonMetadataFactory } from "../../factories/JsonMetadataFactory";
4
5
  import { StatementFactory } from "../../factories/StatementFactory";
5
6
  import { TypeFactory } from "../../factories/TypeFactory";
6
7
 
@@ -12,8 +13,11 @@ export namespace JsonAssertParseProgrammer {
12
13
  export const write =
13
14
  (project: IProject) =>
14
15
  (modulo: ts.LeftHandSideExpression) =>
15
- (type: ts.Type, name?: string) =>
16
- ts.factory.createArrowFunction(
16
+ (type: ts.Type, name?: string): ts.ArrowFunction => {
17
+ JsonMetadataFactory.analyze(`typia.json.${modulo.getText()}`)(
18
+ project.checker,
19
+ )(type);
20
+ return ts.factory.createArrowFunction(
17
21
  undefined,
18
22
  undefined,
19
23
  [
@@ -63,4 +67,5 @@ export namespace JsonAssertParseProgrammer {
63
67
  ),
64
68
  ]),
65
69
  );
70
+ };
66
71
  }
@@ -1,6 +1,7 @@
1
1
  import ts from "typescript";
2
2
 
3
3
  import { IdentifierFactory } from "../../factories/IdentifierFactory";
4
+ import { JsonMetadataFactory } from "../../factories/JsonMetadataFactory";
4
5
  import { StatementFactory } from "../../factories/StatementFactory";
5
6
  import { TypeFactory } from "../../factories/TypeFactory";
6
7
 
@@ -12,8 +13,11 @@ export namespace JsonIsParseProgrammer {
12
13
  export const write =
13
14
  (project: IProject) =>
14
15
  (modulo: ts.LeftHandSideExpression) =>
15
- (type: ts.Type, name?: string) =>
16
- ts.factory.createArrowFunction(
16
+ (type: ts.Type, name?: string): ts.ArrowFunction => {
17
+ JsonMetadataFactory.analyze(`typia.json.${modulo.getText()}`)(
18
+ project.checker,
19
+ )(type);
20
+ return ts.factory.createArrowFunction(
17
21
  undefined,
18
22
  undefined,
19
23
  [
@@ -69,4 +73,5 @@ export namespace JsonIsParseProgrammer {
69
73
  ),
70
74
  ]),
71
75
  );
76
+ };
72
77
  }
@@ -2,17 +2,15 @@ import ts from "typescript";
2
2
 
3
3
  import { ExpressionFactory } from "../../factories/ExpressionFactory";
4
4
  import { IdentifierFactory } from "../../factories/IdentifierFactory";
5
+ import { JsonMetadataFactory } from "../../factories/JsonMetadataFactory";
5
6
  import { MetadataCollection } from "../../factories/MetadataCollection";
6
- import { MetadataFactory } from "../../factories/MetadataFactory";
7
7
  import { StatementFactory } from "../../factories/StatementFactory";
8
8
  import { TypeFactory } from "../../factories/TypeFactory";
9
9
  import { ValueFactory } from "../../factories/ValueFactory";
10
10
 
11
- import { IJsDocTagInfo } from "../../schemas/metadata/IJsDocTagInfo";
12
- import { IMetadataCommentTag } from "../../schemas/metadata/IMetadataCommentTag";
13
11
  import { Metadata } from "../../schemas/metadata/Metadata";
14
12
  import { MetadataArray } from "../../schemas/metadata/MetadataArray";
15
- import { MetadataArrayType } from "../../schemas/metadata/MetadataArrayType";
13
+ import { MetadataAtomic } from "../../schemas/metadata/MetadataAtomic";
16
14
  import { MetadataObject } from "../../schemas/metadata/MetadataObject";
17
15
  import { MetadataTuple } from "../../schemas/metadata/MetadataTuple";
18
16
  import { MetadataTupleType } from "../../schemas/metadata/MetadataTupleType";
@@ -68,7 +66,7 @@ export namespace JsonStringifyProgrammer {
68
66
  collection
69
67
  .arrays()
70
68
  .filter((a) => a.recursive)
71
- .map((array, i) =>
69
+ .map((type, i) =>
72
70
  StatementFactory.constant(
73
71
  `${config.prefix}a${i}`,
74
72
  ts.factory.createArrowFunction(
@@ -81,7 +79,10 @@ export namespace JsonStringifyProgrammer {
81
79
  undefined,
82
80
  decode_array_inline(config)(importer)(
83
81
  ts.factory.createIdentifier("input"),
84
- array,
82
+ MetadataArray.create({
83
+ type,
84
+ tags: [],
85
+ }),
85
86
  {
86
87
  tracable: config.trace,
87
88
  source: "function",
@@ -215,7 +216,9 @@ export namespace JsonStringifyProgrammer {
215
216
  )
216
217
  if (AtomicPredicator.template(meta)) {
217
218
  const partial = Metadata.initialize();
218
- partial.atomics.push({ type: "string", tags: [] }),
219
+ partial.atomics.push(
220
+ MetadataAtomic.create({ type: "string", tags: [] }),
221
+ ),
219
222
  unions.push({
220
223
  type: "template literal",
221
224
  is: () =>
@@ -223,8 +226,6 @@ export namespace JsonStringifyProgrammer {
223
226
  input,
224
227
  partial,
225
228
  explore,
226
- [],
227
- [],
228
229
  ),
229
230
  value: () =>
230
231
  decode_atomic(project)(importer)(
@@ -247,15 +248,15 @@ export namespace JsonStringifyProgrammer {
247
248
  input,
248
249
  (() => {
249
250
  const partial = Metadata.initialize();
250
- partial.atomics.push({
251
- type: constant.type,
252
- tags: [],
253
- });
251
+ partial.atomics.push(
252
+ MetadataAtomic.create({
253
+ type: constant.type,
254
+ tags: [],
255
+ }),
256
+ );
254
257
  return partial;
255
258
  })(),
256
259
  explore,
257
- [],
258
- [],
259
260
  ),
260
261
  value: () =>
261
262
  decode_atomic(project)(importer)(
@@ -272,15 +273,15 @@ export namespace JsonStringifyProgrammer {
272
273
  input,
273
274
  (() => {
274
275
  const partial = Metadata.initialize();
275
- partial.atomics.push({
276
- type: "string",
277
- tags: [],
278
- });
276
+ partial.atomics.push(
277
+ MetadataAtomic.create({
278
+ type: "string",
279
+ tags: [],
280
+ }),
281
+ );
279
282
  return partial;
280
283
  })(),
281
284
  explore,
282
- [],
283
- [],
284
285
  ),
285
286
  value: () =>
286
287
  decode_constant_string(project)(importer)(
@@ -304,8 +305,6 @@ export namespace JsonStringifyProgrammer {
304
305
  return partial;
305
306
  })(),
306
307
  explore,
307
- [],
308
- [],
309
308
  ),
310
309
  value: () =>
311
310
  decode_atomic(project)(importer)(
@@ -316,12 +315,7 @@ export namespace JsonStringifyProgrammer {
316
315
  });
317
316
 
318
317
  // TUPLES
319
- for (const tuple of meta.tuples) {
320
- for (const child of tuple.type.elements)
321
- if (StringifyPredicator.undefindable(meta))
322
- throw new Error(
323
- `Error on typia.json.stringify(): tuple cannot contain undefined value - (${child.getName()}).`,
324
- );
318
+ for (const tuple of meta.tuples)
325
319
  unions.push({
326
320
  type: "tuple",
327
321
  is: () =>
@@ -333,8 +327,6 @@ export namespace JsonStringifyProgrammer {
333
327
  return partial;
334
328
  })(),
335
329
  explore,
336
- [],
337
- [],
338
330
  ),
339
331
  value: () =>
340
332
  decode_tuple(project)(config)(importer)(
@@ -343,15 +335,9 @@ export namespace JsonStringifyProgrammer {
343
335
  explore,
344
336
  ),
345
337
  });
346
- }
347
338
 
348
339
  // ARRAYS
349
340
  if (meta.arrays.length) {
350
- for (const child of meta.arrays)
351
- if (StringifyPredicator.undefindable(child.type.value))
352
- throw new Error(
353
- `Error on typia.json.stringify(): array cannot contain undefined value (${child.type.value.getName()}).`,
354
- );
355
341
  const value: () => ts.Expression =
356
342
  meta.arrays.length === 1
357
343
  ? () =>
@@ -534,23 +520,19 @@ export namespace JsonStringifyProgrammer {
534
520
  from: "array",
535
521
  })(input),
536
522
  )
537
- : decode_array_inline(config)(importer)(
538
- input,
539
- array.type,
540
- explore,
541
- );
523
+ : decode_array_inline(config)(importer)(input, array, explore);
542
524
 
543
525
  const decode_array_inline =
544
526
  (config: FeatureProgrammer.IConfig) =>
545
527
  (importer: FunctionImporter) =>
546
528
  (
547
529
  input: ts.Expression,
548
- array: MetadataArrayType,
530
+ array: MetadataArray,
549
531
  explore: FeatureProgrammer.IExplore,
550
532
  ) =>
551
533
  FeatureProgrammer.decode_array(config)(importer)(
552
534
  StringifyJoiner.array,
553
- )(input, array, explore, [], []);
535
+ )(input, array, explore);
554
536
 
555
537
  const decode_tuple =
556
538
  (project: IProject) =>
@@ -765,8 +747,6 @@ export namespace JsonStringifyProgrammer {
765
747
  input: ts.Expression,
766
748
  elements: T[],
767
749
  explore: FeatureProgrammer.IExplore,
768
- tags: IMetadataCommentTag[],
769
- jsDocTags: IJsDocTagInfo[],
770
750
  ) => ts.ArrowFunction,
771
751
  ) =>
772
752
  (
@@ -778,7 +758,7 @@ export namespace JsonStringifyProgrammer {
778
758
  (parameters: ts.ParameterDeclaration[]) =>
779
759
  (explore: FeatureProgrammer.IExplore) =>
780
760
  (input: ts.Expression): ts.ArrowFunction =>
781
- factory(parameters)(input, elements, explore, [], []);
761
+ factory(parameters)(input, elements, explore);
782
762
  if (elements.every((e) => e.type.recursive === false))
783
763
  ts.factory.createCallExpression(
784
764
  arrow([])(explore)(input),
@@ -921,8 +901,6 @@ export namespace JsonStringifyProgrammer {
921
901
  input,
922
902
  meta,
923
903
  explore,
924
- [],
925
- [],
926
904
  ),
927
905
  decoder: () => decode_object(importer),
928
906
  joiner: StringifyJoiner.object(importer),
@@ -946,25 +924,11 @@ export namespace JsonStringifyProgrammer {
946
924
 
947
925
  const initializer: FeatureProgrammer.IConfig["initializer"] =
948
926
  ({ checker }) =>
949
- (type) => {
950
- const collection: MetadataCollection = new MetadataCollection();
951
- const meta: Metadata = MetadataFactory.analyze(checker)({
952
- escape: true,
953
- constant: true,
954
- absorb: true,
955
- validate: (meta) => {
956
- if (meta.atomics.find((a) => a.type === "bigint"))
957
- throw new Error(NO_BIGINT);
958
- else if (
959
- meta.arrays.some(
960
- (array) => array.type.value.isRequired() === false,
961
- )
962
- )
963
- throw new Error(NO_UNDEFINED_IN_ARRAY);
964
- },
965
- })(collection)(type);
966
- return [collection, meta];
967
- };
927
+ (importer) =>
928
+ (type) =>
929
+ JsonMetadataFactory.analyze(`typia.json.${importer.method}`)(
930
+ checker,
931
+ )(type);
968
932
 
969
933
  const create_throw_error =
970
934
  (importer: FunctionImporter) =>
@@ -998,8 +962,3 @@ interface IUnion {
998
962
  is: () => ts.Expression;
999
963
  value: () => ts.Expression;
1000
964
  }
1001
-
1002
- const NO_BIGINT =
1003
- "Error on typia.json.stringify(): does not allow bigint type.";
1004
- const NO_UNDEFINED_IN_ARRAY =
1005
- "Error on typia.json.stringify(): does not allow undefined type in array.";
@@ -1,6 +1,7 @@
1
1
  import ts from "typescript";
2
2
 
3
3
  import { IdentifierFactory } from "../../factories/IdentifierFactory";
4
+ import { JsonMetadataFactory } from "../../factories/JsonMetadataFactory";
4
5
  import { StatementFactory } from "../../factories/StatementFactory";
5
6
  import { TypeFactory } from "../../factories/TypeFactory";
6
7
 
@@ -12,8 +13,11 @@ export namespace JsonValidateParseProgrammer {
12
13
  export const write =
13
14
  (project: IProject) =>
14
15
  (modulo: ts.LeftHandSideExpression) =>
15
- (type: ts.Type, name?: string) =>
16
- ts.factory.createArrowFunction(
16
+ (type: ts.Type, name?: string): ts.ArrowFunction => {
17
+ JsonMetadataFactory.analyze(`typia.json.${modulo.getText()}`)(
18
+ project.checker,
19
+ )(type);
20
+ return ts.factory.createArrowFunction(
17
21
  undefined,
18
22
  undefined,
19
23
  [
@@ -60,4 +64,5 @@ export namespace JsonValidateParseProgrammer {
60
64
  ),
61
65
  ]),
62
66
  );
67
+ };
63
68
  }
@@ -13,7 +13,7 @@ export namespace JsonValidateStringifyProgrammer {
13
13
  export const write =
14
14
  (project: IProject) =>
15
15
  (modulo: ts.LeftHandSideExpression) =>
16
- (type: ts.Type, name?: string) =>
16
+ (type: ts.Type, name?: string): ts.ArrowFunction =>
17
17
  ts.factory.createArrowFunction(
18
18
  undefined,
19
19
  undefined,
@@ -7,15 +7,13 @@ import { MetadataFactory } from "../../factories/MetadataFactory";
7
7
  import { StatementFactory } from "../../factories/StatementFactory";
8
8
  import { TypeFactory } from "../../factories/TypeFactory";
9
9
 
10
- import { IJsDocTagInfo } from "../../schemas/metadata/IJsDocTagInfo";
11
- import { IMetadataCommentTag } from "../../schemas/metadata/IMetadataCommentTag";
12
10
  import { Metadata } from "../../schemas/metadata/Metadata";
13
11
  import { MetadataArray } from "../../schemas/metadata/MetadataArray";
14
- import { MetadataArrayType } from "../../schemas/metadata/MetadataArrayType";
15
12
  import { MetadataTuple } from "../../schemas/metadata/MetadataTuple";
16
13
  import { MetadataTupleType } from "../../schemas/metadata/MetadataTupleType";
17
14
 
18
15
  import { IProject } from "../../transformers/IProject";
16
+ import { TransformerError } from "../../transformers/TransformerError";
19
17
 
20
18
  import { FeatureProgrammer } from "../FeatureProgrammer";
21
19
  import { IsProgrammer } from "../IsProgrammer";
@@ -49,7 +47,7 @@ export namespace MiscCloneProgrammer {
49
47
  collection
50
48
  .arrays()
51
49
  .filter((a) => a.recursive)
52
- .map((array, i) =>
50
+ .map((type, i) =>
53
51
  StatementFactory.constant(
54
52
  `${config.prefix}a${i}`,
55
53
  ts.factory.createArrowFunction(
@@ -62,7 +60,10 @@ export namespace MiscCloneProgrammer {
62
60
  undefined,
63
61
  decode_array_inline(config)(importer)(
64
62
  ts.factory.createIdentifier("input"),
65
- array,
63
+ MetadataArray.create({
64
+ type,
65
+ tags: [],
66
+ }),
66
67
  {
67
68
  tracable: config.trace,
68
69
  source: "function",
@@ -154,8 +155,6 @@ export namespace MiscCloneProgrammer {
154
155
  return partial;
155
156
  })(),
156
157
  explore,
157
- [],
158
- [],
159
158
  ),
160
159
  value: () =>
161
160
  decode_tuple(project)(config)(importer)(
@@ -284,26 +283,20 @@ export namespace MiscCloneProgrammer {
284
283
  from: "array",
285
284
  })(input),
286
285
  )
287
- : decode_array_inline(config)(importer)(
288
- input,
289
- array.type,
290
- explore,
291
- );
286
+ : decode_array_inline(config)(importer)(input, array, explore);
292
287
 
293
288
  const decode_array_inline =
294
289
  (config: FeatureProgrammer.IConfig) =>
295
290
  (importer: FunctionImporter) =>
296
291
  (
297
292
  input: ts.Expression,
298
- array: MetadataArrayType,
293
+ array: MetadataArray,
299
294
  explore: FeatureProgrammer.IExplore,
300
295
  ) =>
301
296
  FeatureProgrammer.decode_array(config)(importer)(CloneJoiner.array)(
302
297
  input,
303
298
  array,
304
299
  explore,
305
- [],
306
- [],
307
300
  );
308
301
 
309
302
  const decode_tuple =
@@ -505,7 +498,7 @@ export namespace MiscCloneProgrammer {
505
498
  success: ts.factory.createTrue(),
506
499
  failure: (input, expected) =>
507
500
  create_throw_error(importer)(expected)(input),
508
- })([])(input, sets, explore, [], []),
501
+ })([])(input, sets, explore),
509
502
  undefined,
510
503
  undefined,
511
504
  );
@@ -534,8 +527,6 @@ export namespace MiscCloneProgrammer {
534
527
  ...explore,
535
528
  postfix: `${explore.postfix}[0]`,
536
529
  },
537
- [],
538
- [],
539
530
  ),
540
531
  func(
541
532
  ts.factory.createElementAccessExpression(
@@ -547,8 +538,6 @@ export namespace MiscCloneProgrammer {
547
538
  ...explore,
548
539
  postfix: `${explore.postfix}[1]`,
549
540
  },
550
- [],
551
- [],
552
541
  ),
553
542
  );
554
543
  },
@@ -578,7 +567,7 @@ export namespace MiscCloneProgrammer {
578
567
  success: ts.factory.createTrue(),
579
568
  failure: (input, expected) =>
580
569
  create_throw_error(importer)(expected)(input),
581
- })([])(input, maps, explore, [], []),
570
+ })([])(input, maps, explore),
582
571
  undefined,
583
572
  undefined,
584
573
  );
@@ -637,8 +626,6 @@ export namespace MiscCloneProgrammer {
637
626
  input: ts.Expression,
638
627
  elements: T[],
639
628
  explore: FeatureProgrammer.IExplore,
640
- tags: IMetadataCommentTag[],
641
- jsDocTags: IJsDocTagInfo[],
642
629
  ) => ts.ArrowFunction,
643
630
  ) =>
644
631
  (
@@ -650,7 +637,7 @@ export namespace MiscCloneProgrammer {
650
637
  (parameters: ts.ParameterDeclaration[]) =>
651
638
  (explore: FeatureProgrammer.IExplore) =>
652
639
  (input: ts.Expression): ts.ArrowFunction =>
653
- factory(parameters)(input, elements, explore, [], []);
640
+ factory(parameters)(input, elements, explore);
654
641
  if (elements.every((e) => e.type.recursive === false))
655
642
  ts.factory.createCallExpression(
656
643
  arrow([])(explore)(input),
@@ -710,7 +697,7 @@ export namespace MiscCloneProgrammer {
710
697
  prefix: PREFIX,
711
698
  trace: false,
712
699
  path: false,
713
- initializer: initializer(importer.method),
700
+ initializer,
714
701
  decoder: () => decode(project)(config)(importer),
715
702
  objector: {
716
703
  checker: () => IsProgrammer.decode(project)(importer),
@@ -734,27 +721,29 @@ export namespace MiscCloneProgrammer {
734
721
  return config;
735
722
  };
736
723
 
737
- const initializer =
738
- (method: string): FeatureProgrammer.IConfig["initializer"] =>
724
+ const initializer: FeatureProgrammer.IConfig["initializer"] =
739
725
  ({ checker }) =>
726
+ (importer) =>
740
727
  (type) => {
741
728
  const collection = new MetadataCollection();
742
- const meta = MetadataFactory.analyze(checker)({
729
+ const result = MetadataFactory.analyze(checker)({
743
730
  escape: false,
744
731
  constant: true,
745
732
  absorb: true,
746
733
  validate: (meta) => {
734
+ const output: string[] = [];
747
735
  if (meta.natives.some((n) => n === "WeakSet"))
748
- throw new Error(
749
- `Error on ${method}(): WeakSet is not supported.`,
750
- );
736
+ output.push("unable to clone WeakSet");
751
737
  else if (meta.natives.some((n) => n === "WeakMap"))
752
- throw new Error(
753
- `Error on ${method}(): WeakMap is not supported.`,
754
- );
738
+ output.push("unable to clone WeakMap");
739
+ return output;
755
740
  },
756
741
  })(collection)(type);
757
- return [collection, meta];
742
+ if (result.success === false)
743
+ throw TransformerError.from(`typia.misc.${importer.method}`)(
744
+ result.errors,
745
+ );
746
+ return [collection, result.data];
758
747
  };
759
748
 
760
749
  const create_throw_error =