typia 5.0.0-dev.20230823 → 5.0.0-dev.20230824

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (387) hide show
  1. package/lib/Primitive.d.ts +14 -12
  2. package/lib/Resolved.d.ts +46 -0
  3. package/lib/{schemas/metadata/IMetadataTag.js → Resolved.js} +1 -1
  4. package/lib/Resolved.js.map +1 -0
  5. package/lib/factories/ExpressionFactory.d.ts +2 -0
  6. package/lib/factories/ExpressionFactory.js +24 -0
  7. package/lib/factories/ExpressionFactory.js.map +1 -1
  8. package/lib/factories/IdentifierFactory.d.ts +2 -1
  9. package/lib/factories/IdentifierFactory.js +11 -0
  10. package/lib/factories/IdentifierFactory.js.map +1 -1
  11. package/lib/factories/MetadataCollection.d.ts +7 -7
  12. package/lib/factories/MetadataCollection.js +4 -4
  13. package/lib/factories/MetadataCollection.js.map +1 -1
  14. package/lib/factories/MetadataFactory.d.ts +1 -1
  15. package/lib/factories/MetadataTagFactory.d.ts +2 -2
  16. package/lib/factories/MetadataTagFactory.js +15 -13
  17. package/lib/factories/MetadataTagFactory.js.map +1 -1
  18. package/lib/factories/ProtobufFactory.js +11 -10
  19. package/lib/factories/ProtobufFactory.js.map +1 -1
  20. package/lib/factories/internal/metadata/emend_metadata_atomics.js +6 -6
  21. package/lib/factories/internal/metadata/emend_metadata_atomics.js.map +1 -1
  22. package/lib/factories/internal/metadata/emplace_metadata_array_type.d.ts +5 -0
  23. package/lib/factories/internal/metadata/{emplace_metadata_array.js → emplace_metadata_array_type.js} +4 -4
  24. package/lib/factories/internal/metadata/emplace_metadata_array_type.js.map +1 -0
  25. package/lib/factories/internal/metadata/emplace_metadata_tuple.d.ts +2 -2
  26. package/lib/factories/internal/metadata/explore_metadata.js +3 -3
  27. package/lib/factories/internal/metadata/explore_metadata.js.map +1 -1
  28. package/lib/factories/internal/metadata/iterate_metadata_array.js +7 -3
  29. package/lib/factories/internal/metadata/iterate_metadata_array.js.map +1 -1
  30. package/lib/factories/internal/metadata/iterate_metadata_atomic.js +1 -1
  31. package/lib/factories/internal/metadata/iterate_metadata_atomic.js.map +1 -1
  32. package/lib/factories/internal/metadata/iterate_metadata_collection.js +26 -18
  33. package/lib/factories/internal/metadata/iterate_metadata_collection.js.map +1 -1
  34. package/lib/factories/internal/metadata/iterate_metadata_comment_tags.d.ts +2 -0
  35. package/lib/factories/internal/metadata/{iterate_metadata_tag.js → iterate_metadata_comment_tags.js} +4 -4
  36. package/lib/factories/internal/metadata/iterate_metadata_comment_tags.js.map +1 -0
  37. package/lib/factories/internal/metadata/iterate_metadata_intersection.js +138 -16
  38. package/lib/factories/internal/metadata/iterate_metadata_intersection.js.map +1 -1
  39. package/lib/factories/internal/metadata/iterate_metadata_native.js +2 -10
  40. package/lib/factories/internal/metadata/iterate_metadata_native.js.map +1 -1
  41. package/lib/factories/internal/metadata/iterate_metadata_object.js +0 -7
  42. package/lib/factories/internal/metadata/iterate_metadata_object.js.map +1 -1
  43. package/lib/factories/internal/metadata/iterate_metadata_resolve.js +6 -6
  44. package/lib/factories/internal/metadata/iterate_metadata_resolve.js.map +1 -1
  45. package/lib/factories/internal/metadata/iterate_metadata_sort.js +4 -4
  46. package/lib/factories/internal/metadata/iterate_metadata_sort.js.map +1 -1
  47. package/lib/factories/internal/metadata/iterate_metadata_tuple.js +6 -2
  48. package/lib/factories/internal/metadata/iterate_metadata_tuple.js.map +1 -1
  49. package/lib/factories/internal/metadata/iterate_metadata_type_tags.d.ts +3 -0
  50. package/lib/factories/internal/metadata/iterate_metadata_type_tags.js +157 -0
  51. package/lib/factories/internal/metadata/iterate_metadata_type_tags.js.map +1 -0
  52. package/lib/functional/$ProtobufWriter.js.map +1 -1
  53. package/lib/functional/$any.js +2 -1
  54. package/lib/functional/$any.js.map +1 -1
  55. package/lib/functional/$clone.d.ts +2 -0
  56. package/lib/functional/$clone.js +8 -0
  57. package/lib/functional/$clone.js.map +1 -0
  58. package/lib/json.d.ts +15 -15
  59. package/lib/misc.d.ts +42 -42
  60. package/lib/module.d.ts +20 -56
  61. package/lib/module.js +4 -17
  62. package/lib/module.js.map +1 -1
  63. package/lib/programmers/AssertProgrammer.js +2 -4
  64. package/lib/programmers/AssertProgrammer.js.map +1 -1
  65. package/lib/programmers/CheckerProgrammer.js +39 -30
  66. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  67. package/lib/programmers/FeatureProgrammer.d.ts +4 -4
  68. package/lib/programmers/FeatureProgrammer.js.map +1 -1
  69. package/lib/programmers/IsProgrammer.d.ts +1 -1
  70. package/lib/programmers/IsProgrammer.js +3 -5
  71. package/lib/programmers/IsProgrammer.js.map +1 -1
  72. package/lib/programmers/RandomProgrammer.js +328 -142
  73. package/lib/programmers/RandomProgrammer.js.map +1 -1
  74. package/lib/programmers/ValidateProgrammer.js +2 -4
  75. package/lib/programmers/ValidateProgrammer.js.map +1 -1
  76. package/lib/programmers/helpers/AtomicPredicator.js +2 -2
  77. package/lib/programmers/helpers/AtomicPredicator.js.map +1 -1
  78. package/lib/programmers/helpers/FunctionImporeter.d.ts +2 -0
  79. package/lib/programmers/helpers/FunctionImporeter.js +2 -1
  80. package/lib/programmers/helpers/FunctionImporeter.js.map +1 -1
  81. package/lib/programmers/helpers/ICheckEntry.d.ts +1 -1
  82. package/lib/programmers/helpers/ProtobufUtil.js +2 -2
  83. package/lib/programmers/helpers/ProtobufUtil.js.map +1 -1
  84. package/lib/programmers/helpers/RandomJoiner.d.ts +4 -4
  85. package/lib/programmers/helpers/RandomJoiner.js.map +1 -1
  86. package/lib/programmers/helpers/RandomRanger.d.ts +6 -6
  87. package/lib/programmers/helpers/RandomRanger.js.map +1 -1
  88. package/lib/programmers/helpers/StringifyPredicator.js +1 -2
  89. package/lib/programmers/helpers/StringifyPredicator.js.map +1 -1
  90. package/lib/programmers/helpers/UnionExplorer.d.ts +8 -8
  91. package/lib/programmers/helpers/UnionExplorer.js +40 -29
  92. package/lib/programmers/helpers/UnionExplorer.js.map +1 -1
  93. package/lib/programmers/helpers/disable_function_importer_declare.js +1 -0
  94. package/lib/programmers/helpers/disable_function_importer_declare.js.map +1 -1
  95. package/lib/programmers/internal/application_array.js +1 -1
  96. package/lib/programmers/internal/application_array.js.map +1 -1
  97. package/lib/programmers/internal/application_default_string.js +2 -2
  98. package/lib/programmers/internal/application_default_string.js.map +1 -1
  99. package/lib/programmers/internal/application_resolved.d.ts +2 -2
  100. package/lib/programmers/internal/application_resolved.js +2 -2
  101. package/lib/programmers/internal/application_resolved.js.map +1 -1
  102. package/lib/programmers/internal/application_schema.js +7 -7
  103. package/lib/programmers/internal/application_schema.js.map +1 -1
  104. package/lib/programmers/internal/application_string.js.map +1 -1
  105. package/lib/programmers/internal/application_tuple.js +10 -9
  106. package/lib/programmers/internal/application_tuple.js.map +1 -1
  107. package/lib/programmers/internal/check_array_length.js.map +1 -1
  108. package/lib/programmers/internal/check_array_tags.js +39 -0
  109. package/lib/programmers/internal/check_array_tags.js.map +1 -0
  110. package/lib/programmers/internal/check_bigint.js +88 -74
  111. package/lib/programmers/internal/check_bigint.js.map +1 -1
  112. package/lib/programmers/internal/check_number.js +142 -131
  113. package/lib/programmers/internal/check_number.js.map +1 -1
  114. package/lib/programmers/internal/check_string.js +30 -6
  115. package/lib/programmers/internal/check_string.js.map +1 -1
  116. package/lib/programmers/internal/check_string_tags.js.map +1 -1
  117. package/lib/programmers/internal/check_template.js +16 -49
  118. package/lib/programmers/internal/check_template.js.map +1 -1
  119. package/lib/programmers/internal/check_union_array_like.js +3 -2
  120. package/lib/programmers/internal/check_union_array_like.js.map +1 -1
  121. package/lib/programmers/internal/metadata_to_pattern.js +4 -4
  122. package/lib/programmers/internal/metadata_to_pattern.js.map +1 -1
  123. package/lib/programmers/internal/stringify_dynamic_properties.js +2 -1
  124. package/lib/programmers/internal/stringify_dynamic_properties.js.map +1 -1
  125. package/lib/programmers/internal/wrap_metadata_rest_tuple.js +9 -5
  126. package/lib/programmers/internal/wrap_metadata_rest_tuple.js.map +1 -1
  127. package/lib/programmers/json/JsonStringifyProgrammer.js +33 -27
  128. package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
  129. package/lib/programmers/misc/MiscAssertCloneProgrammer.js +1 -1
  130. package/lib/programmers/misc/MiscAssertCloneProgrammer.js.map +1 -1
  131. package/lib/programmers/misc/MiscCloneProgrammer.js +124 -43
  132. package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
  133. package/lib/programmers/misc/MiscIsCloneProgrammer.js +1 -1
  134. package/lib/programmers/misc/MiscIsCloneProgrammer.js.map +1 -1
  135. package/lib/programmers/misc/MiscLiteralsProgrammer.js +3 -3
  136. package/lib/programmers/misc/MiscLiteralsProgrammer.js.map +1 -1
  137. package/lib/programmers/misc/MiscPruneProgrammer.js +15 -15
  138. package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
  139. package/lib/programmers/misc/MiscValidateCloneProgrammer.js +1 -1
  140. package/lib/programmers/misc/MiscValidateCloneProgrammer.js.map +1 -1
  141. package/lib/programmers/protobuf/ProtobufAssertDecodeProgrammer.js +3 -3
  142. package/lib/programmers/protobuf/ProtobufAssertDecodeProgrammer.js.map +1 -1
  143. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js +8 -8
  144. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js.map +1 -1
  145. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js +3 -3
  146. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js.map +1 -1
  147. package/lib/programmers/protobuf/ProtobufIsDecodeProgrammer.js +2 -2
  148. package/lib/programmers/protobuf/ProtobufIsDecodeProgrammer.js.map +1 -1
  149. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js +1 -1
  150. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js.map +1 -1
  151. package/lib/programmers/protobuf/ProtobufValidateDecodeProgrammer.js +1 -1
  152. package/lib/programmers/protobuf/ProtobufValidateDecodeProgrammer.js.map +1 -1
  153. package/lib/protobuf.d.ts +631 -10
  154. package/lib/protobuf.js +13 -13
  155. package/lib/protobuf.js.map +1 -1
  156. package/lib/schemas/json/IJsonSchema.d.ts +2 -2
  157. package/lib/schemas/metadata/IMetadata.d.ts +13 -6
  158. package/lib/schemas/metadata/IMetadataAlias.d.ts +2 -2
  159. package/lib/schemas/metadata/IMetadataArray.d.ts +4 -6
  160. package/lib/schemas/metadata/IMetadataArrayType.d.ts +8 -0
  161. package/lib/{CustomValidatorMap.js → schemas/metadata/IMetadataArrayType.js} +1 -1
  162. package/lib/schemas/metadata/IMetadataArrayType.js.map +1 -0
  163. package/lib/schemas/metadata/IMetadataAtomic.d.ts +5 -0
  164. package/lib/schemas/metadata/{IMetadataResolved.js → IMetadataAtomic.js} +1 -1
  165. package/lib/schemas/metadata/IMetadataAtomic.js.map +1 -0
  166. package/lib/schemas/metadata/IMetadataCollection.d.ts +4 -4
  167. package/lib/schemas/metadata/{IMetadataTag.d.ts → IMetadataCommentTag.d.ts} +2 -2
  168. package/lib/schemas/metadata/IMetadataCommentTag.js +3 -0
  169. package/lib/schemas/metadata/IMetadataCommentTag.js.map +1 -0
  170. package/lib/schemas/metadata/{IMetadataResolved.d.ts → IMetadataEscaped.d.ts} +1 -1
  171. package/lib/schemas/metadata/IMetadataEscaped.js +3 -0
  172. package/lib/schemas/metadata/IMetadataEscaped.js.map +1 -0
  173. package/lib/schemas/metadata/IMetadataProperty.d.ts +2 -2
  174. package/lib/schemas/metadata/IMetadataTuple.d.ts +4 -6
  175. package/lib/schemas/metadata/IMetadataTupleType.d.ts +8 -0
  176. package/lib/schemas/metadata/IMetadataTupleType.js +3 -0
  177. package/lib/schemas/metadata/IMetadataTupleType.js.map +1 -0
  178. package/lib/schemas/metadata/IMetadataTypeTag.d.ts +6 -0
  179. package/lib/schemas/metadata/IMetadataTypeTag.js +3 -0
  180. package/lib/schemas/metadata/IMetadataTypeTag.js.map +1 -0
  181. package/lib/schemas/metadata/Metadata.d.ts +4 -4
  182. package/lib/schemas/metadata/Metadata.js +217 -157
  183. package/lib/schemas/metadata/Metadata.js.map +1 -1
  184. package/lib/schemas/metadata/MetadataAlias.d.ts +2 -2
  185. package/lib/schemas/metadata/MetadataArray.d.ts +6 -6
  186. package/lib/schemas/metadata/MetadataArray.js +5 -19
  187. package/lib/schemas/metadata/MetadataArray.js.map +1 -1
  188. package/lib/schemas/metadata/MetadataArrayType.d.ts +14 -0
  189. package/lib/schemas/metadata/MetadataArrayType.js +36 -0
  190. package/lib/schemas/metadata/MetadataArrayType.js.map +1 -0
  191. package/lib/schemas/metadata/{MetadataResolved.d.ts → MetadataEscaped.d.ts} +3 -3
  192. package/lib/schemas/metadata/{MetadataResolved.js → MetadataEscaped.js} +11 -11
  193. package/lib/schemas/metadata/MetadataEscaped.js.map +1 -0
  194. package/lib/schemas/metadata/MetadataProperty.d.ts +2 -2
  195. package/lib/schemas/metadata/MetadataTuple.d.ts +4 -6
  196. package/lib/schemas/metadata/MetadataTuple.js +5 -19
  197. package/lib/schemas/metadata/MetadataTuple.js.map +1 -1
  198. package/lib/schemas/metadata/MetadataTupleType.d.ts +13 -0
  199. package/lib/schemas/metadata/MetadataTupleType.js +40 -0
  200. package/lib/schemas/metadata/MetadataTupleType.js.map +1 -0
  201. package/lib/tags/ExclusiveMaximum.d.ts +8 -0
  202. package/lib/tags/ExclusiveMaximum.js +3 -0
  203. package/lib/tags/ExclusiveMaximum.js.map +1 -0
  204. package/lib/tags/ExclusiveMinimum.d.ts +8 -0
  205. package/lib/tags/ExclusiveMinimum.js +3 -0
  206. package/lib/tags/ExclusiveMinimum.js.map +1 -0
  207. package/lib/tags/Format.d.ts +8 -0
  208. package/lib/tags/Format.js +3 -0
  209. package/lib/tags/Format.js.map +1 -0
  210. package/lib/tags/MaxItems.d.ts +8 -0
  211. package/lib/tags/MaxItems.js +3 -0
  212. package/lib/tags/MaxItems.js.map +1 -0
  213. package/lib/tags/MaxLength.d.ts +8 -0
  214. package/lib/tags/MaxLength.js +3 -0
  215. package/lib/tags/MaxLength.js.map +1 -0
  216. package/lib/tags/Maximum.d.ts +8 -0
  217. package/lib/tags/Maximum.js +3 -0
  218. package/lib/tags/Maximum.js.map +1 -0
  219. package/lib/tags/MinItems.d.ts +8 -0
  220. package/lib/tags/MinItems.js +3 -0
  221. package/lib/tags/MinItems.js.map +1 -0
  222. package/lib/tags/MinLength.d.ts +8 -0
  223. package/lib/tags/MinLength.js +3 -0
  224. package/lib/tags/MinLength.js.map +1 -0
  225. package/lib/tags/Minimum.d.ts +8 -0
  226. package/lib/tags/Minimum.js +3 -0
  227. package/lib/tags/Minimum.js.map +1 -0
  228. package/lib/tags/MultipleOf.d.ts +8 -0
  229. package/lib/tags/MultipleOf.js +3 -0
  230. package/lib/tags/MultipleOf.js.map +1 -0
  231. package/lib/tags/Pattern.d.ts +8 -0
  232. package/lib/tags/Pattern.js +3 -0
  233. package/lib/tags/Pattern.js.map +1 -0
  234. package/lib/tags/TagBase.d.ts +10 -0
  235. package/lib/tags/TagBase.js +3 -0
  236. package/lib/tags/TagBase.js.map +1 -0
  237. package/lib/tags/Type.d.ts +13 -0
  238. package/lib/tags/Type.js +3 -0
  239. package/lib/tags/Type.js.map +1 -0
  240. package/lib/tags/index.d.ts +12 -0
  241. package/lib/tags/index.js +29 -0
  242. package/lib/tags/index.js.map +1 -0
  243. package/lib/transformers/FileTransformer.d.ts +1 -1
  244. package/lib/transformers/FileTransformer.js +12 -1
  245. package/lib/transformers/FileTransformer.js.map +1 -1
  246. package/lib/transformers/IProject.d.ts +1 -0
  247. package/lib/transformers/features/json/JsonApplicationTransformer.js +5 -3
  248. package/lib/transformers/features/json/JsonApplicationTransformer.js.map +1 -1
  249. package/lib/transformers/features/misc/MetadataTransformer.js +1 -1
  250. package/lib/transformers/features/misc/MetadataTransformer.js.map +1 -1
  251. package/lib/utils/RandomGenerator.js +3 -2
  252. package/lib/utils/RandomGenerator.js.map +1 -1
  253. package/package.json +2 -1
  254. package/src/Primitive.ts +19 -15
  255. package/src/Resolved.ts +116 -0
  256. package/src/factories/ExpressionFactory.ts +44 -0
  257. package/src/factories/IdentifierFactory.ts +15 -0
  258. package/src/factories/MetadataCollection.ts +18 -12
  259. package/src/factories/MetadataFactory.ts +1 -1
  260. package/src/factories/MetadataTagFactory.ts +28 -27
  261. package/src/factories/ProtobufFactory.ts +12 -10
  262. package/src/factories/internal/metadata/emend_metadata_atomics.ts +7 -5
  263. package/src/factories/internal/metadata/{emplace_metadata_array.ts → emplace_metadata_array_type.ts} +3 -3
  264. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +2 -2
  265. package/src/factories/internal/metadata/explore_metadata.ts +3 -3
  266. package/src/factories/internal/metadata/iterate_metadata_array.ts +13 -5
  267. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +6 -4
  268. package/src/factories/internal/metadata/iterate_metadata_collection.ts +29 -22
  269. package/src/factories/internal/metadata/{iterate_metadata_tag.ts → iterate_metadata_comment_tags.ts} +1 -1
  270. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +109 -15
  271. package/src/factories/internal/metadata/iterate_metadata_native.ts +0 -9
  272. package/src/factories/internal/metadata/iterate_metadata_object.ts +10 -10
  273. package/src/factories/internal/metadata/iterate_metadata_resolve.ts +6 -6
  274. package/src/factories/internal/metadata/iterate_metadata_sort.ts +4 -4
  275. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +12 -4
  276. package/src/factories/internal/metadata/iterate_metadata_type_tags.ts +183 -0
  277. package/src/functional/$any.ts +3 -1
  278. package/src/functional/$clone.ts +4 -0
  279. package/src/json.ts +15 -15
  280. package/src/misc.ts +42 -42
  281. package/src/module.ts +20 -72
  282. package/src/programmers/AssertProgrammer.ts +4 -2
  283. package/src/programmers/CheckerProgrammer.ts +81 -48
  284. package/src/programmers/FeatureProgrammer.ts +6 -6
  285. package/src/programmers/IsProgrammer.ts +5 -3
  286. package/src/programmers/RandomProgrammer.ts +360 -41
  287. package/src/programmers/ValidateProgrammer.ts +4 -2
  288. package/src/programmers/helpers/AtomicPredicator.ts +2 -2
  289. package/src/programmers/helpers/FunctionImporeter.ts +2 -0
  290. package/src/programmers/helpers/ICheckEntry.ts +1 -1
  291. package/src/programmers/helpers/ProtobufUtil.ts +1 -1
  292. package/src/programmers/helpers/RandomJoiner.ts +8 -4
  293. package/src/programmers/helpers/RandomRanger.ts +8 -8
  294. package/src/programmers/helpers/StringifyPredicator.ts +1 -2
  295. package/src/programmers/helpers/UnionExplorer.ts +48 -34
  296. package/src/programmers/helpers/disable_function_importer_declare.ts +6 -1
  297. package/src/programmers/internal/application_array.ts +5 -4
  298. package/src/programmers/internal/application_default_string.ts +6 -2
  299. package/src/programmers/internal/application_resolved.ts +4 -4
  300. package/src/programmers/internal/application_schema.ts +7 -7
  301. package/src/programmers/internal/application_string.ts +2 -2
  302. package/src/programmers/internal/application_tuple.ts +12 -11
  303. package/src/programmers/internal/check_array_length.ts +2 -2
  304. package/src/programmers/internal/check_array_tags.ts +45 -0
  305. package/src/programmers/internal/check_bigint.ts +45 -17
  306. package/src/programmers/internal/check_number.ts +97 -70
  307. package/src/programmers/internal/check_string.ts +43 -12
  308. package/src/programmers/internal/check_string_tags.ts +3 -3
  309. package/src/programmers/internal/check_template.ts +1 -12
  310. package/src/programmers/internal/check_union_array_like.ts +6 -5
  311. package/src/programmers/internal/metadata_to_pattern.ts +4 -4
  312. package/src/programmers/internal/stringify_dynamic_properties.ts +1 -1
  313. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +9 -5
  314. package/src/programmers/json/JsonStringifyProgrammer.ts +47 -29
  315. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +1 -1
  316. package/src/programmers/misc/MiscCloneProgrammer.ts +253 -55
  317. package/src/programmers/misc/MiscIsCloneProgrammer.ts +1 -1
  318. package/src/programmers/misc/MiscLiteralsProgrammer.ts +3 -3
  319. package/src/programmers/misc/MiscPruneProgrammer.ts +31 -19
  320. package/src/programmers/misc/MiscValidateCloneProgrammer.ts +1 -1
  321. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +18 -9
  322. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +18 -14
  323. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +15 -15
  324. package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +12 -2
  325. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +6 -6
  326. package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +2 -2
  327. package/src/protobuf.ts +663 -31
  328. package/src/schemas/json/IJsonSchema.ts +2 -2
  329. package/src/schemas/metadata/IMetadata.ts +13 -7
  330. package/src/schemas/metadata/IMetadataAlias.ts +2 -2
  331. package/src/schemas/metadata/IMetadataArray.ts +4 -7
  332. package/src/schemas/metadata/IMetadataArrayType.ts +10 -0
  333. package/src/schemas/metadata/IMetadataAtomic.ts +6 -0
  334. package/src/schemas/metadata/IMetadataCollection.ts +4 -4
  335. package/src/schemas/metadata/{IMetadataTag.ts → IMetadataCommentTag.ts} +17 -17
  336. package/src/schemas/metadata/IMetadataDictionary.ts +4 -4
  337. package/src/schemas/metadata/{IMetadataResolved.ts → IMetadataEscaped.ts} +1 -1
  338. package/src/schemas/metadata/IMetadataProperty.ts +2 -2
  339. package/src/schemas/metadata/IMetadataTuple.ts +4 -7
  340. package/src/schemas/metadata/IMetadataTupleType.ts +10 -0
  341. package/src/schemas/metadata/IMetadataTypeTag.ts +6 -0
  342. package/src/schemas/metadata/Metadata.ts +125 -63
  343. package/src/schemas/metadata/MetadataAlias.ts +2 -2
  344. package/src/schemas/metadata/MetadataArray.ts +10 -34
  345. package/src/schemas/metadata/MetadataArrayType.ts +57 -0
  346. package/src/schemas/metadata/{MetadataResolved.ts → MetadataEscaped.ts} +9 -9
  347. package/src/schemas/metadata/MetadataProperty.ts +2 -2
  348. package/src/schemas/metadata/MetadataTuple.ts +10 -37
  349. package/src/schemas/metadata/MetadataTupleType.ts +67 -0
  350. package/src/tags/ExclusiveMaximum.ts +8 -0
  351. package/src/tags/ExclusiveMinimum.ts +8 -0
  352. package/src/tags/Format.ts +29 -0
  353. package/src/tags/MaxItems.ts +8 -0
  354. package/src/tags/MaxLength.ts +8 -0
  355. package/src/tags/Maximum.ts +8 -0
  356. package/src/tags/MinItems.ts +8 -0
  357. package/src/tags/MinLength.ts +8 -0
  358. package/src/tags/Minimum.ts +8 -0
  359. package/src/tags/MultipleOf.ts +10 -0
  360. package/src/tags/Pattern.ts +8 -0
  361. package/src/tags/TagBase.ts +17 -0
  362. package/src/tags/Type.ts +30 -0
  363. package/src/tags/index.ts +12 -0
  364. package/src/transformers/FileTransformer.ts +2 -2
  365. package/src/transformers/IProject.ts +1 -0
  366. package/src/transformers/features/json/JsonApplicationTransformer.ts +4 -3
  367. package/src/transformers/features/misc/MetadataTransformer.ts +1 -1
  368. package/src/typings/Atomic.ts +1 -0
  369. package/src/utils/RandomGenerator.ts +4 -2
  370. package/lib/CustomValidatorMap.d.ts +0 -110
  371. package/lib/CustomValidatorMap.js.map +0 -1
  372. package/lib/factories/internal/metadata/emplace_metadata_array.d.ts +0 -5
  373. package/lib/factories/internal/metadata/emplace_metadata_array.js.map +0 -1
  374. package/lib/factories/internal/metadata/iterate_metadata_tag.d.ts +0 -2
  375. package/lib/factories/internal/metadata/iterate_metadata_tag.js.map +0 -1
  376. package/lib/programmers/internal/check_array.js +0 -44
  377. package/lib/programmers/internal/check_array.js.map +0 -1
  378. package/lib/programmers/internal/check_custom.d.ts +0 -1
  379. package/lib/programmers/internal/check_custom.js +0 -30
  380. package/lib/programmers/internal/check_custom.js.map +0 -1
  381. package/lib/schemas/metadata/IMetadataResolved.js.map +0 -1
  382. package/lib/schemas/metadata/IMetadataTag.js.map +0 -1
  383. package/lib/schemas/metadata/MetadataResolved.js.map +0 -1
  384. package/src/CustomValidatorMap.ts +0 -126
  385. package/src/programmers/internal/check_array.ts +0 -30
  386. package/src/programmers/internal/check_custom.ts +0 -31
  387. /package/lib/programmers/internal/{check_array.d.ts → check_array_tags.d.ts} +0 -0
@@ -24,7 +24,9 @@ export namespace ProtobufAssertDecodeProgrammer {
24
24
  ),
25
25
  ],
26
26
  ts.factory.createTypeReferenceNode(
27
- name ?? TypeFactory.getFullName(project.checker)(type),
27
+ `typia.Resolved<${
28
+ name ?? TypeFactory.getFullName(project.checker)(type)
29
+ }>`,
28
30
  ),
29
31
  undefined,
30
32
  ts.factory.createBlock([
@@ -41,10 +43,14 @@ export namespace ProtobufAssertDecodeProgrammer {
41
43
  ),
42
44
  StatementFactory.constant(
43
45
  "assert",
44
- AssertProgrammer.write(project)(modulo)(false)(
45
- type,
46
- name,
47
- ),
46
+ AssertProgrammer.write({
47
+ ...project,
48
+ options: {
49
+ ...project.options,
50
+ functional: false,
51
+ numeric: false,
52
+ },
53
+ })(modulo)(false)(type, name),
48
54
  ),
49
55
  StatementFactory.constant(
50
56
  "output",
@@ -55,10 +61,13 @@ export namespace ProtobufAssertDecodeProgrammer {
55
61
  ),
56
62
  ),
57
63
  ts.factory.createReturnStatement(
58
- ts.factory.createCallExpression(
59
- ts.factory.createIdentifier("assert"),
60
- undefined,
61
- [ts.factory.createIdentifier("output")],
64
+ ts.factory.createAsExpression(
65
+ ts.factory.createCallExpression(
66
+ ts.factory.createIdentifier("assert"),
67
+ undefined,
68
+ [ts.factory.createIdentifier("output")],
69
+ ),
70
+ TypeFactory.keyword("any"),
62
71
  ),
63
72
  ),
64
73
  ]),
@@ -8,7 +8,7 @@ import { ProtobufFactory } from "../../factories/ProtobufFactory";
8
8
  import { StatementFactory } from "../../factories/StatementFactory";
9
9
  import { TypeFactory } from "../../factories/TypeFactory";
10
10
 
11
- import { IMetadataTag } from "../../schemas/metadata/IMetadataTag";
11
+ import { IMetadataCommentTag } from "../../schemas/metadata/IMetadataCommentTag";
12
12
  import { Metadata } from "../../schemas/metadata/Metadata";
13
13
  import { MetadataArray } from "../../schemas/metadata/MetadataArray";
14
14
  import { MetadataObject } from "../../schemas/metadata/MetadataObject";
@@ -26,7 +26,9 @@ export namespace ProtobufDecodeProgrammer {
26
26
  (project: IProject) =>
27
27
  (modulo: ts.LeftHandSideExpression) =>
28
28
  (type: ts.Type, name?: string): ts.ArrowFunction => {
29
- const importer: FunctionImporter = new FunctionImporter();
29
+ const importer: FunctionImporter = new FunctionImporter(
30
+ modulo.getText(),
31
+ );
30
32
  const collection: MetadataCollection = new MetadataCollection();
31
33
  const meta: Metadata = ProtobufFactory.metadata(modulo.getText())(
32
34
  project.checker,
@@ -60,7 +62,9 @@ export namespace ProtobufDecodeProgrammer {
60
62
  ),
61
63
  ],
62
64
  ts.factory.createTypeReferenceNode(
63
- name ?? TypeFactory.getFullName(project.checker)(type),
65
+ `typia.Resolved<${
66
+ name ?? TypeFactory.getFullName(project.checker)(type)
67
+ }>`,
64
68
  ),
65
69
  undefined,
66
70
  ts.factory.createBlock(
@@ -249,7 +253,7 @@ export namespace ProtobufDecodeProgrammer {
249
253
  undefined,
250
254
  [],
251
255
  )
252
- : value.atomics.some((str) => str === "string") ||
256
+ : value.atomics.some((a) => a.type === "string") ||
253
257
  value.constants.some(
254
258
  (c) =>
255
259
  c.type === "string" && c.values.some((v) => v === ""),
@@ -276,7 +280,7 @@ export namespace ProtobufDecodeProgrammer {
276
280
  (
277
281
  accessor: ts.ElementAccessExpression | ts.PropertyAccessExpression,
278
282
  meta: Metadata,
279
- tags: IMetadataTag[],
283
+ tags: IMetadataCommentTag[],
280
284
  ): ts.CaseClause[] => {
281
285
  const clauses: ts.CaseClause[] = [];
282
286
  const emplace =
@@ -319,7 +323,7 @@ export namespace ProtobufDecodeProgrammer {
319
323
  emplace(atomic)(decode_atomic(atomic, tags));
320
324
  if (meta.natives.length) emplace("bytes")(decode_bytes("bytes"));
321
325
  for (const array of meta.arrays)
322
- emplace(`Array<${array.value.getName()}>`)(
326
+ emplace(`Array<${array.type.value.getName()}>`)(
323
327
  decode_array(accessor, array, required, tags),
324
328
  );
325
329
  for (const map of meta.maps)
@@ -346,7 +350,7 @@ export namespace ProtobufDecodeProgrammer {
346
350
 
347
351
  const decode_atomic = (
348
352
  atomic: Atomic.Literal,
349
- tags: IMetadataTag[],
353
+ tags: IMetadataCommentTag[],
350
354
  ): ts.Expression => {
351
355
  if (atomic === "string") return decode_bytes("string");
352
356
  const method =
@@ -401,7 +405,7 @@ export namespace ProtobufDecodeProgrammer {
401
405
  accessor: ts.ElementAccessExpression | ts.PropertyAccessExpression,
402
406
  array: MetadataArray,
403
407
  required: boolean,
404
- tags: IMetadataTag[],
408
+ tags: IMetadataCommentTag[],
405
409
  ): ts.Statement[] => {
406
410
  const statements: Array<ts.Expression | ts.Statement> = [];
407
411
  if (required === false)
@@ -417,13 +421,13 @@ export namespace ProtobufDecodeProgrammer {
417
421
  ),
418
422
  ),
419
423
  );
420
- const atomics = ProtobufUtil.getAtomics(array.value);
424
+ const atomics = ProtobufUtil.getAtomics(array.type.value);
421
425
  const decoder = atomics.length
422
426
  ? () => decode_atomic(atomics[0]!, tags)
423
- : array.value.natives.length
427
+ : array.type.value.natives.length
424
428
  ? () => decode_bytes("bytes")
425
- : array.value.objects.length
426
- ? () => decode_regular_object(false)(array.value.objects[0]!)
429
+ : array.type.value.objects.length
430
+ ? () => decode_regular_object(false)(array.type.value.objects[0]!)
427
431
  : null;
428
432
  if (decoder === null) throw new Error("Never reach here.");
429
433
  else if (atomics.length && atomics[0] !== "string") {
@@ -562,7 +566,7 @@ export namespace ProtobufDecodeProgrammer {
562
566
  accessor: ts.ElementAccessExpression | ts.PropertyAccessExpression,
563
567
  map: Metadata.Entry,
564
568
  required: boolean,
565
- tags: IMetadataTag[],
569
+ tags: IMetadataCommentTag[],
566
570
  ): ts.Statement[] =>
567
571
  decode_entry(project)(importer)({
568
572
  initializer: () =>
@@ -601,7 +605,7 @@ export namespace ProtobufDecodeProgrammer {
601
605
  (
602
606
  map: Metadata.Entry,
603
607
  required: boolean,
604
- tags: IMetadataTag[],
608
+ tags: IMetadataCommentTag[],
605
609
  ): ts.Statement[] => {
606
610
  const statements: ts.Statement[] = [
607
611
  ...(required
@@ -7,7 +7,7 @@ import { ProtobufFactory } from "../../factories/ProtobufFactory";
7
7
  import { StatementFactory } from "../../factories/StatementFactory";
8
8
  import { TypeFactory } from "../../factories/TypeFactory";
9
9
 
10
- import { IMetadataTag } from "../../schemas/metadata/IMetadataTag";
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";
@@ -30,7 +30,7 @@ export namespace ProtobufEncodeProgrammer {
30
30
  (project: IProject) =>
31
31
  (modulo: ts.LeftHandSideExpression) =>
32
32
  (type: ts.Type, name?: string): ts.ArrowFunction => {
33
- const importer = new FunctionImporter();
33
+ const importer = new FunctionImporter(modulo.getText());
34
34
  const collection = new MetadataCollection();
35
35
  const meta: Metadata = ProtobufFactory.metadata(modulo.getText())(
36
36
  project.checker,
@@ -205,7 +205,7 @@ export namespace ProtobufEncodeProgrammer {
205
205
  input: ts.Expression,
206
206
  meta: Metadata,
207
207
  explore: FeatureProgrammer.IExplore,
208
- tags: IMetadataTag[],
208
+ tags: IMetadataCommentTag[],
209
209
  ): ts.Block => {
210
210
  const wrapper: (block: ts.Block) => ts.Block =
211
211
  meta.isRequired() && meta.nullable === false
@@ -388,7 +388,7 @@ export namespace ProtobufEncodeProgrammer {
388
388
  input: ts.Expression,
389
389
  map: Metadata.Entry,
390
390
  explore: FeatureProgrammer.IExplore,
391
- tags: IMetadataTag[],
391
+ tags: IMetadataCommentTag[],
392
392
  ): ts.Block => {
393
393
  const each: ts.Statement[] = [
394
394
  ts.factory.createExpressionStatement(
@@ -442,7 +442,7 @@ export namespace ProtobufEncodeProgrammer {
442
442
  input: ts.Expression,
443
443
  object: MetadataObject,
444
444
  explore: FeatureProgrammer.IExplore,
445
- tags: IMetadataTag[],
445
+ tags: IMetadataCommentTag[],
446
446
  ): ts.Block => {
447
447
  const top: MetadataProperty = object.properties[0]!;
448
448
  if (top.key.isSoleLiteral() === false)
@@ -502,9 +502,9 @@ export namespace ProtobufEncodeProgrammer {
502
502
  input: ts.Expression,
503
503
  array: MetadataArray,
504
504
  explore: FeatureProgrammer.IExplore,
505
- tags: IMetadataTag[],
505
+ tags: IMetadataCommentTag[],
506
506
  ): ts.Block => {
507
- const wire = get_standalone_wire(array.value, tags);
507
+ const wire = get_standalone_wire(array.type.value, tags);
508
508
  const forLoop = (index: number | null) =>
509
509
  ts.factory.createForOfStatement(
510
510
  undefined,
@@ -515,7 +515,7 @@ export namespace ProtobufEncodeProgrammer {
515
515
  input,
516
516
  decode(project)(importer)(index)(
517
517
  ts.factory.createIdentifier("elem"),
518
- array.value,
518
+ array.type.value,
519
519
  explore,
520
520
  tags,
521
521
  ),
@@ -568,7 +568,7 @@ export namespace ProtobufEncodeProgrammer {
568
568
  (
569
569
  input: ts.Expression,
570
570
  atomic: Atomic.Literal,
571
- tags: IMetadataTag[],
571
+ tags: IMetadataCommentTag[],
572
572
  ): ts.Block => {
573
573
  if (atomic === "string")
574
574
  return decode_bytes("string")(index!)(input);
@@ -593,9 +593,9 @@ export namespace ProtobufEncodeProgrammer {
593
593
  );
594
594
  if (atomic === "boolean") return out(ProtobufWire.VARIANT)("bool");
595
595
 
596
- const type: IMetadataTag.INumberType | undefined = tags.find(
596
+ const type: IMetadataCommentTag.INumberType | undefined = tags.find(
597
597
  (tag) => tag.kind === "type",
598
- ) as IMetadataTag.INumberType | undefined;
598
+ ) as IMetadataCommentTag.INumberType | undefined;
599
599
  if (atomic === "bigint")
600
600
  return out(ProtobufWire.VARIANT)(
601
601
  type?.value === "uint64" ? "uint64" : "int64",
@@ -641,7 +641,7 @@ export namespace ProtobufEncodeProgrammer {
641
641
 
642
642
  const get_standalone_wire = (
643
643
  meta: Metadata,
644
- tags: IMetadataTag[],
644
+ tags: IMetadataCommentTag[],
645
645
  ): ProtobufWire => {
646
646
  if (
647
647
  meta.arrays.length ||
@@ -655,9 +655,9 @@ export namespace ProtobufEncodeProgrammer {
655
655
  if (v === "string") return ProtobufWire.LEN;
656
656
  else if (v === "boolean" || v === "bigint") return ProtobufWire.VARIANT;
657
657
 
658
- const type: IMetadataTag.INumberType | undefined = tags.find(
658
+ const type: IMetadataCommentTag.INumberType | undefined = tags.find(
659
659
  (t) => t.kind === "type",
660
- ) as IMetadataTag.INumberType | undefined;
660
+ ) as IMetadataCommentTag.INumberType | undefined;
661
661
  if (type === undefined) return ProtobufWire.I64;
662
662
  else if (type.value === "float") return ProtobufWire.I32;
663
663
  return ProtobufWire.VARIANT;
@@ -675,7 +675,7 @@ export namespace ProtobufEncodeProgrammer {
675
675
  input: ts.Expression,
676
676
  targets: MetadataObject[],
677
677
  explore: FeatureProgrammer.IExplore,
678
- tags: IMetadataTag[],
678
+ tags: IMetadataCommentTag[],
679
679
  indexes?: Map<MetadataObject, number>,
680
680
  ): ts.Block => {
681
681
  if (targets.length === 1)
@@ -25,7 +25,10 @@ export namespace ProtobufIsDecodeProgrammer {
25
25
  ],
26
26
  ts.factory.createUnionTypeNode([
27
27
  ts.factory.createTypeReferenceNode(
28
- name ?? TypeFactory.getFullName(project.checker)(type),
28
+ `typia.Resolved<${
29
+ name ??
30
+ TypeFactory.getFullName(project.checker)(type)
31
+ }>`,
29
32
  ),
30
33
  ts.factory.createLiteralTypeNode(ts.factory.createNull()),
31
34
  ]),
@@ -33,7 +36,14 @@ export namespace ProtobufIsDecodeProgrammer {
33
36
  ts.factory.createBlock([
34
37
  StatementFactory.constant(
35
38
  "is",
36
- IsProgrammer.write(project)(modulo)(false)(type, name),
39
+ IsProgrammer.write({
40
+ ...project,
41
+ options: {
42
+ ...project.options,
43
+ functional: false,
44
+ numeric: false,
45
+ },
46
+ })(modulo)(false)(type, name),
37
47
  ),
38
48
  StatementFactory.constant(
39
49
  "decode",
@@ -3,7 +3,7 @@ import ts from "typescript";
3
3
  import { MetadataCollection } from "../../factories/MetadataCollection";
4
4
  import { ProtobufFactory } from "../../factories/ProtobufFactory";
5
5
 
6
- import { IMetadataTag } from "../../schemas/metadata/IMetadataTag";
6
+ import { IMetadataCommentTag } from "../../schemas/metadata/IMetadataCommentTag";
7
7
  import { Metadata } from "../../schemas/metadata/Metadata";
8
8
  import { MetadataObject } from "../../schemas/metadata/MetadataObject";
9
9
 
@@ -104,14 +104,14 @@ export namespace ProtobufMessageProgrammer {
104
104
  ----------------------------------------------------------- */
105
105
  const decode =
106
106
  (ptr: IPointer<number>) =>
107
- (tags: IMetadataTag[]) =>
107
+ (tags: IMetadataCommentTag[]) =>
108
108
  (meta: Metadata): string => {
109
109
  const elements: Set<string> = new Set();
110
110
  if (meta.natives.length) elements.add("bytes");
111
111
  for (const atomic of ProtobufUtil.getAtomics(meta))
112
112
  elements.add(decode_atomic(tags)(atomic));
113
113
  for (const array of meta.arrays)
114
- elements.add(`repeated ${decode(ptr)(tags)(array.value)}`);
114
+ elements.add(`repeated ${decode(ptr)(tags)(array.type.value)}`);
115
115
  for (const obj of meta.objects)
116
116
  elements.add(
117
117
  is_dynamic_object(obj)
@@ -135,7 +135,7 @@ export namespace ProtobufMessageProgrammer {
135
135
  };
136
136
 
137
137
  const decode_atomic =
138
- (tags: IMetadataTag[]) =>
138
+ (tags: IMetadataCommentTag[]) =>
139
139
  (literal: Atomic.Literal): string => {
140
140
  if (literal === "boolean") return "bool";
141
141
  else if (literal === "bigint")
@@ -146,7 +146,7 @@ export namespace ProtobufMessageProgrammer {
146
146
  : "int64";
147
147
  else if (literal === "number") {
148
148
  const type = tags.find((t) => t.kind === "type") as
149
- | IMetadataTag.INumberType
149
+ | IMetadataCommentTag.INumberType
150
150
  | undefined;
151
151
  if (type?.value === undefined) return "double";
152
152
  else if (type.value === "int") return "int32";
@@ -158,7 +158,7 @@ export namespace ProtobufMessageProgrammer {
158
158
 
159
159
  const decode_map =
160
160
  (ptr: IPointer<number>) =>
161
- (tags: IMetadataTag[]) =>
161
+ (tags: IMetadataCommentTag[]) =>
162
162
  (prop: Metadata.Entry): string =>
163
163
  `map<${decode(ptr)([])(prop.key)}, ${decode(ptr)(tags)(
164
164
  prop.value,
@@ -24,9 +24,9 @@ export namespace ProtobufValidateDecodeProgrammer {
24
24
  ),
25
25
  ],
26
26
  ts.factory.createTypeReferenceNode(
27
- `typia.IValidation<${
27
+ `typia.IValidation<typia.Resolved<${
28
28
  name ?? TypeFactory.getFullName(project.checker)(type)
29
- }>`,
29
+ }>>`,
30
30
  ),
31
31
  undefined,
32
32
  ts.factory.createBlock([