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
@@ -3,11 +3,11 @@ import ts from "typescript";
3
3
  import { ExpressionFactory } from "../../factories/ExpressionFactory";
4
4
  import { IdentifierFactory } from "../../factories/IdentifierFactory";
5
5
  import { MetadataCollection } from "../../factories/MetadataCollection";
6
+ import { NumericRangeFactory } from "../../factories/NumericRangeFactory";
6
7
  import { ProtobufFactory } from "../../factories/ProtobufFactory";
7
8
  import { StatementFactory } from "../../factories/StatementFactory";
8
9
  import { TypeFactory } from "../../factories/TypeFactory";
9
10
 
10
- import { IMetadataCommentTag } from "../../schemas/metadata/IMetadataCommentTag";
11
11
  import { Metadata } from "../../schemas/metadata/Metadata";
12
12
  import { MetadataArray } from "../../schemas/metadata/MetadataArray";
13
13
  import { MetadataObject } from "../../schemas/metadata/MetadataObject";
@@ -15,7 +15,7 @@ import { MetadataProperty } from "../../schemas/metadata/MetadataProperty";
15
15
 
16
16
  import { IProject } from "../../transformers/IProject";
17
17
 
18
- import { Atomic } from "../../typings/Atomic";
18
+ import { ProtobufAtomic } from "../../typings/ProtobufAtomic";
19
19
 
20
20
  import { FeatureProgrammer } from "../FeatureProgrammer";
21
21
  import { IsProgrammer } from "../IsProgrammer";
@@ -128,7 +128,6 @@ export namespace ProtobufEncodeProgrammer {
128
128
  tracable: false,
129
129
  postfix: "",
130
130
  },
131
- [],
132
131
  );
133
132
  return ts.factory.createArrowFunction(
134
133
  undefined,
@@ -170,9 +169,8 @@ export namespace ProtobufEncodeProgrammer {
170
169
  ),
171
170
  p.value,
172
171
  explore,
173
- p.tags,
174
172
  );
175
- index += p.value.binarySize();
173
+ index += ProtobufUtil.size(p.value);
176
174
  return [
177
175
  ts.factory.createExpressionStatement(
178
176
  ts.factory.createIdentifier(
@@ -205,7 +203,6 @@ export namespace ProtobufEncodeProgrammer {
205
203
  input: ts.Expression,
206
204
  meta: Metadata,
207
205
  explore: FeatureProgrammer.IExplore,
208
- tags: IMetadataCommentTag[],
209
206
  ): ts.Block => {
210
207
  const wrapper: (block: ts.Block) => ts.Block =
211
208
  meta.isRequired() && meta.nullable === false
@@ -263,18 +260,47 @@ export namespace ProtobufEncodeProgrammer {
263
260
  );
264
261
 
265
262
  // STARTS FROM ATOMIC TYPES
266
- const unions: IUnion[] = ProtobufUtil.getAtomics(meta).map(
267
- (type) => ({
268
- type,
269
- wire: () => null!,
270
- is: () =>
271
- ts.factory.createStrictEquality(
272
- ts.factory.createStringLiteral(type),
273
- ts.factory.createTypeOfExpression(input),
274
- ),
275
- value: (index) => decode_atomic(index!)(input, type, tags),
276
- }),
277
- );
263
+ const unions: IUnion[] = [];
264
+ const numbers = ProtobufUtil.getNumbers(meta);
265
+ const bigints = ProtobufUtil.getBigints(meta);
266
+
267
+ for (const atom of ProtobufUtil.getAtomics(meta))
268
+ if (atom === "bool")
269
+ unions.push({
270
+ type: "bool",
271
+ is: () =>
272
+ ts.factory.createStrictEquality(
273
+ ts.factory.createStringLiteral("boolean"),
274
+ ts.factory.createTypeOfExpression(input),
275
+ ),
276
+ value: (index) => decode_bool(index)(input),
277
+ });
278
+ else if (
279
+ atom === "int32" ||
280
+ atom === "uint32" ||
281
+ atom === "float" ||
282
+ atom === "double"
283
+ )
284
+ unions.push(decode_number(project)(numbers)(atom)(input));
285
+ else if (atom === "int64" || atom === "uint64")
286
+ if (numbers.some((n) => n === atom))
287
+ unions.push(
288
+ decode_number(project)(numbers)(atom)(input),
289
+ );
290
+ else
291
+ unions.push(
292
+ decode_bigint(project)(bigints)(atom)(input),
293
+ );
294
+ else if (atom === "string")
295
+ unions.push({
296
+ type: "string",
297
+ is: () =>
298
+ ts.factory.createStrictEquality(
299
+ ts.factory.createStringLiteral("string"),
300
+ ts.factory.createTypeOfExpression(input),
301
+ ),
302
+ value: (index) => decode_bytes("string")(index!)(input),
303
+ });
278
304
 
279
305
  // CONSIDER BYTES
280
306
  if (meta.natives.length)
@@ -298,7 +324,6 @@ export namespace ProtobufEncodeProgrammer {
298
324
  ...explore,
299
325
  from: "array",
300
326
  },
301
- tags,
302
327
  ),
303
328
  });
304
329
 
@@ -315,7 +340,6 @@ export namespace ProtobufEncodeProgrammer {
315
340
  ...explore,
316
341
  from: "array",
317
342
  },
318
- tags,
319
343
  ),
320
344
  });
321
345
 
@@ -336,7 +360,6 @@ export namespace ProtobufEncodeProgrammer {
336
360
  ...explore,
337
361
  from: "object",
338
362
  },
339
- tags,
340
363
  ),
341
364
  });
342
365
 
@@ -388,7 +411,6 @@ export namespace ProtobufEncodeProgrammer {
388
411
  input: ts.Expression,
389
412
  map: Metadata.Entry,
390
413
  explore: FeatureProgrammer.IExplore,
391
- tags: IMetadataCommentTag[],
392
414
  ): ts.Block => {
393
415
  const each: ts.Statement[] = [
394
416
  ts.factory.createExpressionStatement(
@@ -405,13 +427,11 @@ export namespace ProtobufEncodeProgrammer {
405
427
  ts.factory.createIdentifier("key"),
406
428
  map.key,
407
429
  explore,
408
- [],
409
430
  ).statements,
410
431
  ...decode(project)(importer)(2)(
411
432
  ts.factory.createIdentifier("value"),
412
433
  map.value,
413
434
  explore,
414
- tags,
415
435
  ).statements,
416
436
  ts.factory.createExpressionStatement(
417
437
  ts.factory.createCallExpression(
@@ -442,7 +462,6 @@ export namespace ProtobufEncodeProgrammer {
442
462
  input: ts.Expression,
443
463
  object: MetadataObject,
444
464
  explore: FeatureProgrammer.IExplore,
445
- tags: IMetadataCommentTag[],
446
465
  ): ts.Block => {
447
466
  const top: MetadataProperty = object.properties[0]!;
448
467
  if (top.key.isSoleLiteral() === false)
@@ -454,7 +473,6 @@ export namespace ProtobufEncodeProgrammer {
454
473
  ),
455
474
  top,
456
475
  explore,
457
- tags,
458
476
  );
459
477
  return ts.factory.createBlock(
460
478
  [
@@ -502,9 +520,8 @@ export namespace ProtobufEncodeProgrammer {
502
520
  input: ts.Expression,
503
521
  array: MetadataArray,
504
522
  explore: FeatureProgrammer.IExplore,
505
- tags: IMetadataCommentTag[],
506
523
  ): ts.Block => {
507
- const wire = get_standalone_wire(array.type.value, tags);
524
+ const wire = get_standalone_wire(array.type.value);
508
525
  const forLoop = (index: number | null) =>
509
526
  ts.factory.createForOfStatement(
510
527
  undefined,
@@ -517,7 +534,6 @@ export namespace ProtobufEncodeProgrammer {
517
534
  ts.factory.createIdentifier("elem"),
518
535
  array.type.value,
519
536
  explore,
520
- tags,
521
537
  ),
522
538
  );
523
539
  const length = (block: ts.Block) =>
@@ -563,56 +579,94 @@ export namespace ProtobufEncodeProgrammer {
563
579
  );
564
580
  };
565
581
 
566
- const decode_atomic =
567
- (index: number | null) =>
568
- (
569
- input: ts.Expression,
570
- atomic: Atomic.Literal,
571
- tags: IMetadataCommentTag[],
572
- ): ts.Block => {
573
- if (atomic === "string")
574
- return decode_bytes("string")(index!)(input);
575
-
576
- const out =
577
- (wire: ProtobufWire) =>
578
- (method: string): ts.Block =>
579
- ts.factory.createBlock(
580
- [
581
- ...(index !== null
582
- ? [decode_tag(wire)(index)]
583
- : []),
584
- ts.factory.createCallExpression(
585
- IdentifierFactory.access(WRITER())(method),
586
- undefined,
587
- [input],
588
- ),
589
- ].map((exp) =>
590
- ts.factory.createExpressionStatement(exp),
582
+ const decode_bool = (index: number | null) => (input: ts.Expression) =>
583
+ ts.factory.createBlock(
584
+ [
585
+ ...(index !== null
586
+ ? [decode_tag(ProtobufWire.VARIANT)(index)]
587
+ : []),
588
+ ts.factory.createCallExpression(
589
+ IdentifierFactory.access(WRITER())("bool"),
590
+ undefined,
591
+ [input],
592
+ ),
593
+ ].map((exp) => ts.factory.createExpressionStatement(exp)),
594
+ true,
595
+ );
596
+
597
+ const decode_number =
598
+ (project: IProject) =>
599
+ (candidates: ProtobufAtomic.Numeric[]) =>
600
+ (type: ProtobufAtomic.Numeric) =>
601
+ (input: ts.Expression): IUnion => ({
602
+ type,
603
+ is: () =>
604
+ candidates.length === 1
605
+ ? ts.factory.createStrictEquality(
606
+ ts.factory.createStringLiteral("number"),
607
+ ts.factory.createTypeOfExpression(input),
608
+ )
609
+ : ts.factory.createLogicalAnd(
610
+ ts.factory.createStrictEquality(
611
+ ts.factory.createStringLiteral("number"),
612
+ ts.factory.createTypeOfExpression(input),
613
+ ),
614
+ NumericRangeFactory.number(project.context)(type)(
615
+ input,
616
+ ),
617
+ ),
618
+ value: (index) =>
619
+ ts.factory.createBlock(
620
+ [
621
+ ...(index !== null
622
+ ? [decode_tag(get_numeric_wire(type))(index)]
623
+ : []),
624
+ ts.factory.createCallExpression(
625
+ IdentifierFactory.access(WRITER())(type),
626
+ undefined,
627
+ [input],
591
628
  ),
592
- true,
593
- );
594
- if (atomic === "boolean") return out(ProtobufWire.VARIANT)("bool");
595
-
596
- const type: IMetadataCommentTag.INumberType | undefined = tags.find(
597
- (tag) => tag.kind === "type",
598
- ) as IMetadataCommentTag.INumberType | undefined;
599
- if (atomic === "bigint")
600
- return out(ProtobufWire.VARIANT)(
601
- type?.value === "uint64" ? "uint64" : "int64",
602
- );
603
- else if (type === undefined) return out(ProtobufWire.I64)("double");
604
- else if (type.value === "float")
605
- return out(ProtobufWire.I32)("float");
606
- return out(ProtobufWire.VARIANT)(
607
- type.value === "uint32" || type.value === "uint"
608
- ? "uint32"
609
- : type.value === "int32" || type.value === "int"
610
- ? "int32"
611
- : type.value === "int64"
612
- ? "int64"
613
- : "uint64",
614
- );
615
- };
629
+ ].map((exp) => ts.factory.createExpressionStatement(exp)),
630
+ true,
631
+ ),
632
+ });
633
+
634
+ const decode_bigint =
635
+ (project: IProject) =>
636
+ (candidates: ProtobufAtomic.BigNumeric[]) =>
637
+ (type: ProtobufAtomic.BigNumeric) =>
638
+ (input: ts.Expression): IUnion => ({
639
+ type,
640
+ is: () =>
641
+ candidates.length === 1
642
+ ? ts.factory.createStrictEquality(
643
+ ts.factory.createStringLiteral("bigint"),
644
+ ts.factory.createTypeOfExpression(input),
645
+ )
646
+ : ts.factory.createLogicalAnd(
647
+ ts.factory.createStrictEquality(
648
+ ts.factory.createStringLiteral("bigint"),
649
+ ts.factory.createTypeOfExpression(input),
650
+ ),
651
+ NumericRangeFactory.bigint(project.context)(type)(
652
+ input,
653
+ ),
654
+ ),
655
+ value: (index) =>
656
+ ts.factory.createBlock(
657
+ [
658
+ ...(index !== null
659
+ ? [decode_tag(ProtobufWire.VARIANT)(index)]
660
+ : []),
661
+ ts.factory.createCallExpression(
662
+ IdentifierFactory.access(WRITER())(type),
663
+ undefined,
664
+ [input],
665
+ ),
666
+ ].map((exp) => ts.factory.createExpressionStatement(exp)),
667
+ true,
668
+ ),
669
+ });
616
670
 
617
671
  const decode_bytes =
618
672
  (method: "bytes" | "string") =>
@@ -639,10 +693,7 @@ export namespace ProtobufEncodeProgrammer {
639
693
  [ts.factory.createNumericLiteral((index << 3) | wire)],
640
694
  );
641
695
 
642
- const get_standalone_wire = (
643
- meta: Metadata,
644
- tags: IMetadataCommentTag[],
645
- ): ProtobufWire => {
696
+ const get_standalone_wire = (meta: Metadata): ProtobufWire => {
646
697
  if (
647
698
  meta.arrays.length ||
648
699
  meta.objects.length ||
@@ -653,16 +704,25 @@ export namespace ProtobufEncodeProgrammer {
653
704
 
654
705
  const v = ProtobufUtil.getAtomics(meta)[0]!;
655
706
  if (v === "string") return ProtobufWire.LEN;
656
- else if (v === "boolean" || v === "bigint") return ProtobufWire.VARIANT;
657
-
658
- const type: IMetadataCommentTag.INumberType | undefined = tags.find(
659
- (t) => t.kind === "type",
660
- ) as IMetadataCommentTag.INumberType | undefined;
661
- if (type === undefined) return ProtobufWire.I64;
662
- else if (type.value === "float") return ProtobufWire.I32;
663
- return ProtobufWire.VARIANT;
707
+ else if (
708
+ v === "bool" ||
709
+ v === "int32" ||
710
+ v === "uint32" ||
711
+ v === "int64" ||
712
+ v === "uint64"
713
+ )
714
+ return ProtobufWire.VARIANT;
715
+ else if (v === "float") return ProtobufWire.I32;
716
+ return ProtobufWire.I64;
664
717
  };
665
718
 
719
+ const get_numeric_wire = (type: ProtobufAtomic.Numeric) =>
720
+ type === "double"
721
+ ? ProtobufWire.I64
722
+ : type === "float"
723
+ ? ProtobufWire.I32
724
+ : ProtobufWire.VARIANT;
725
+
666
726
  /* -----------------------------------------------------------
667
727
  EXPLORERS
668
728
  ----------------------------------------------------------- */
@@ -675,13 +735,12 @@ export namespace ProtobufEncodeProgrammer {
675
735
  input: ts.Expression,
676
736
  targets: MetadataObject[],
677
737
  explore: FeatureProgrammer.IExplore,
678
- tags: IMetadataCommentTag[],
679
738
  indexes?: Map<MetadataObject, number>,
680
739
  ): ts.Block => {
681
740
  if (targets.length === 1)
682
741
  return decode_object(project)(importer)(
683
742
  indexes ? indexes.get(targets[0]!)! : index,
684
- )(input, targets[0]!, explore, tags);
743
+ )(input, targets[0]!, explore);
685
744
 
686
745
  const expected: string = `(${targets
687
746
  .map((t) => t.name)
@@ -700,7 +759,6 @@ export namespace ProtobufEncodeProgrammer {
700
759
  i,
701
760
  o,
702
761
  e,
703
- tags,
704
762
  ),
705
763
  ),
706
764
  )((expr) => expr)((value, expected) =>
@@ -728,8 +786,6 @@ export namespace ProtobufEncodeProgrammer {
728
786
  tracable: false,
729
787
  postfix: IdentifierFactory.postfix(key),
730
788
  },
731
- tags,
732
- [],
733
789
  )
734
790
  : ExpressionFactory.isRequired(accessor);
735
791
  return ts.factory.createIfStatement(
@@ -738,7 +794,7 @@ export namespace ProtobufEncodeProgrammer {
738
794
  ExpressionFactory.selfCall(
739
795
  decode_object(project)(importer)(
740
796
  indexes!.get(spec.object)!,
741
- )(input, spec.object, explore, tags),
797
+ )(input, spec.object, explore),
742
798
  ),
743
799
  ),
744
800
  i === array.length - 1
@@ -751,8 +807,7 @@ export namespace ProtobufEncodeProgrammer {
751
807
  input,
752
808
  remained,
753
809
  explore,
754
- tags,
755
- indexes,
810
+ indexes!,
756
811
  ),
757
812
  ),
758
813
  )
@@ -3,14 +3,11 @@ import ts from "typescript";
3
3
  import { MetadataCollection } from "../../factories/MetadataCollection";
4
4
  import { ProtobufFactory } from "../../factories/ProtobufFactory";
5
5
 
6
- import { IMetadataCommentTag } from "../../schemas/metadata/IMetadataCommentTag";
7
6
  import { Metadata } from "../../schemas/metadata/Metadata";
8
7
  import { MetadataObject } from "../../schemas/metadata/MetadataObject";
9
8
 
10
9
  import { IProject } from "../../transformers/IProject";
11
10
 
12
- import { Atomic } from "../../typings/Atomic";
13
-
14
11
  import { MapUtil } from "../../utils/MapUtil";
15
12
  import { NameEncoder } from "../../utils/NameEncoder";
16
13
 
@@ -85,7 +82,7 @@ export namespace ProtobufMessageProgrammer {
85
82
  return obj.properties
86
83
  .map((prop) => {
87
84
  const key: string = prop.key.getSoleLiteral()!;
88
- const type: string = decode(ptr)(prop.tags)(prop.value);
85
+ const type: string = decode(ptr)(prop.value);
89
86
  return type.indexOf("${name}") !== -1
90
87
  ? type.replace("${name}", key)
91
88
  : `${
@@ -104,22 +101,20 @@ export namespace ProtobufMessageProgrammer {
104
101
  ----------------------------------------------------------- */
105
102
  const decode =
106
103
  (ptr: IPointer<number>) =>
107
- (tags: IMetadataCommentTag[]) =>
108
104
  (meta: Metadata): string => {
109
105
  const elements: Set<string> = new Set();
110
106
  if (meta.natives.length) elements.add("bytes");
111
107
  for (const atomic of ProtobufUtil.getAtomics(meta))
112
- elements.add(decode_atomic(tags)(atomic));
108
+ elements.add(atomic);
113
109
  for (const array of meta.arrays)
114
- elements.add(`repeated ${decode(ptr)(tags)(array.type.value)}`);
110
+ elements.add(`repeated ${decode(ptr)(array.type.value)}`);
115
111
  for (const obj of meta.objects)
116
112
  elements.add(
117
113
  is_dynamic_object(obj)
118
- ? decode_map(ptr)(tags)(obj.properties[0]!)
114
+ ? decode_map(ptr)(obj.properties[0]!)
119
115
  : NameEncoder.encode(obj.name),
120
116
  );
121
- for (const map of meta.maps)
122
- elements.add(decode_map(ptr)(tags)(map));
117
+ for (const map of meta.maps) elements.add(decode_map(ptr)(map));
123
118
  return elements.size === 1
124
119
  ? [...elements][0]!
125
120
  : [
@@ -134,35 +129,10 @@ export namespace ProtobufMessageProgrammer {
134
129
  ].join("\n");
135
130
  };
136
131
 
137
- const decode_atomic =
138
- (tags: IMetadataCommentTag[]) =>
139
- (literal: Atomic.Literal): string => {
140
- if (literal === "boolean") return "bool";
141
- else if (literal === "bigint")
142
- return tags.find(
143
- (t) => t.kind === "type" && t.value === "uint64",
144
- )
145
- ? "uint64"
146
- : "int64";
147
- else if (literal === "number") {
148
- const type = tags.find((t) => t.kind === "type") as
149
- | IMetadataCommentTag.INumberType
150
- | undefined;
151
- if (type?.value === undefined) return "double";
152
- else if (type.value === "int") return "int32";
153
- else if (type.value === "uint") return "uint32";
154
- else return type.value;
155
- }
156
- return literal;
157
- };
158
-
159
132
  const decode_map =
160
133
  (ptr: IPointer<number>) =>
161
- (tags: IMetadataCommentTag[]) =>
162
134
  (prop: Metadata.Entry): string =>
163
- `map<${decode(ptr)([])(prop.key)}, ${decode(ptr)(tags)(
164
- prop.value,
165
- )}>`;
135
+ `map<${decode(ptr)(prop.key)}, ${decode(ptr)(prop.value)}>`;
166
136
  }
167
137
 
168
138
  interface Hierarchy {
@@ -1,8 +1,9 @@
1
1
  import { IJsDocTagInfo } from "../metadata/IJsDocTagInfo";
2
- import { IMetadataCommentTag } from "../metadata/IMetadataCommentTag";
3
2
 
4
3
  import { Atomic } from "../../typings/Atomic";
5
4
 
5
+ import { Type } from "../../tags/Type";
6
+
6
7
  export type IJsonSchema = IJsonSchema.Known | IJsonSchema.IUnknown;
7
8
  export namespace IJsonSchema {
8
9
  export type Known =
@@ -36,14 +37,8 @@ export namespace IJsonSchema {
36
37
  default?: Atomic.Mapper[Literal];
37
38
  }
38
39
  export interface IString extends IAtomic<"string"> {
39
- /**
40
- * @type uint
41
- */
42
- minLength?: number;
43
- /**
44
- * @type uint
45
- */
46
- maxLength?: number;
40
+ minLength?: number & Type<"uint32">;
41
+ maxLength?: number & Type<"uint32">;
47
42
  pattern?: string;
48
43
  format?: string;
49
44
  }
@@ -55,20 +50,11 @@ export namespace IJsonSchema {
55
50
  multipleOf?: number;
56
51
  }
57
52
  export interface IInteger extends IAtomic<"integer"> {
58
- /**
59
- * @type int
60
- */
61
- minimum?: number;
62
- /**
63
- * @type int
64
- */
65
- maximum?: number;
53
+ minimum?: number & Type<"int32">;
54
+ maximum?: number & Type<"int32">;
66
55
  exclusiveMinimum?: boolean;
67
56
  exclusiveMaximum?: boolean;
68
- /**
69
- * @type int
70
- */
71
- multipleOf?: number;
57
+ multipleOf?: number & Type<"int32">;
72
58
  }
73
59
  export interface IBoolean extends IAtomic<"boolean"> {}
74
60
 
@@ -77,26 +63,14 @@ export namespace IJsonSchema {
77
63
  ----------------------------------------------------------- */
78
64
  export interface IArray extends ISignificant<"array"> {
79
65
  items: IJsonSchema;
80
- /**
81
- * @type uint
82
- */
83
- minItems?: number;
84
- /**
85
- * @type uint
86
- */
87
- maxItems?: number;
66
+ minItems?: number & Type<"uint32">;
67
+ maxItems?: number & Type<"uint32">;
88
68
  "x-typia-tuple"?: ITuple;
89
69
  }
90
70
  export interface ITuple extends ISignificant<"array"> {
91
71
  items: IJsonSchema[];
92
- /**
93
- * @type uint
94
- */
95
- minItems: number;
96
- /**
97
- * @type uint
98
- */
99
- maxItems?: number;
72
+ minItems: number & Type<"uint32">;
73
+ maxItems?: number & Type<"uint32">;
100
74
  }
101
75
  export interface IReference extends IAttribute {
102
76
  $ref: string;
@@ -124,7 +98,6 @@ export namespace IJsonSchema {
124
98
  deprecated?: boolean;
125
99
  title?: string;
126
100
  description?: string;
127
- "x-typia-metaTags"?: IMetadataCommentTag[];
128
101
  "x-typia-jsDocTags"?: IJsDocTagInfo[];
129
102
  "x-typia-required"?: boolean;
130
103
  "x-typia-optional"?: boolean;
@@ -1,6 +1,5 @@
1
1
  import { IJsDocTagInfo } from "./IJsDocTagInfo";
2
2
  import { IMetadata } from "./IMetadata";
3
- import { IMetadataCommentTag } from "./IMetadataCommentTag";
4
3
 
5
4
  export interface IMetadataAlias {
6
5
  name: string;
@@ -8,7 +7,6 @@ export interface IMetadataAlias {
8
7
  nullables: boolean[];
9
8
 
10
9
  description: string | null;
11
- tags: IMetadataCommentTag[];
12
10
  jsDocTags: IJsDocTagInfo[];
13
11
  recursive: boolean;
14
12
  }
@@ -1,11 +1,9 @@
1
1
  import { IJsDocTagInfo } from "./IJsDocTagInfo";
2
2
  import { IMetadata } from "./IMetadata";
3
- import { IMetadataCommentTag } from "./IMetadataCommentTag";
4
3
 
5
4
  export interface IMetadataProperty {
6
5
  key: IMetadata;
7
6
  value: IMetadata;
8
7
  description: string | null;
9
- tags: IMetadataCommentTag[];
10
8
  jsDocTags: IJsDocTagInfo[];
11
9
  }
@@ -1,6 +1,8 @@
1
1
  export interface IMetadataTypeTag {
2
+ target: "bigint" | "number" | "string" | "array";
2
3
  name: string;
3
4
  kind: string;
4
5
  value: any;
5
6
  validate: string;
7
+ exclusive: boolean | string[];
6
8
  }