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
@@ -1,365 +0,0 @@
1
- import ts from "typescript";
2
-
3
- import { IMetadataAtomic } from "../schemas/metadata/IMetadataAtomic";
4
- import { IMetadataCommentTag } from "../schemas/metadata/IMetadataCommentTag";
5
- import { Metadata } from "../schemas/metadata/Metadata";
6
-
7
- export namespace MetadataTagFactory {
8
- export const generate =
9
- (metadata: Metadata) =>
10
- (tagList: ts.JSDocTagInfo[]) =>
11
- (identifier: () => string): IMetadataCommentTag[] => {
12
- const output: IMetadataCommentTag[] = [];
13
- for (const tag of tagList) {
14
- const elem: IMetadataCommentTag | null = parse(
15
- identifier,
16
- metadata,
17
- tag,
18
- output,
19
- );
20
- if (elem !== null) output.push(elem);
21
- }
22
- return output;
23
- };
24
-
25
- const parse = (
26
- identifier: () => string,
27
- metadata: Metadata,
28
- tag: ts.JSDocTagInfo,
29
- output: IMetadataCommentTag[],
30
- ): IMetadataCommentTag | null => {
31
- const closure = _PARSER[tag.name];
32
- if (closure === undefined) return null;
33
-
34
- const text = (tag.text || [])[0]?.text;
35
- if (text === undefined)
36
- throw new Error(`${LABEL}: no tag value on ${identifier()}`);
37
-
38
- return closure(identifier, metadata, text, output);
39
- };
40
-
41
- /**
42
- * @internal
43
- */
44
- export const _PARSER: Record<
45
- string,
46
- (
47
- identifier: () => string,
48
- metadata: Metadata,
49
- text: string,
50
- output: IMetadataCommentTag[],
51
- ) => IMetadataCommentTag | null
52
- > = {
53
- /* -----------------------------------------------------------
54
- ARRAY
55
- ----------------------------------------------------------- */
56
- items: (identifier, metadata, text, output) => {
57
- validate(identifier, metadata, output, "items", "array", [
58
- "minItems",
59
- ]);
60
- return {
61
- kind: "items",
62
- value: parse_number(identifier, text),
63
- };
64
- },
65
- minItems: (identifier, metadata, text, output) => {
66
- validate(identifier, metadata, output, "minItems", "array", [
67
- "items",
68
- ]);
69
- return {
70
- kind: "minItems",
71
- value: parse_number(identifier, text),
72
- };
73
- },
74
- maxItems: (identifier, metadata, text, output) => {
75
- validate(identifier, metadata, output, "maxItems", "array", [
76
- "items",
77
- ]);
78
- return {
79
- kind: "maxItems",
80
- value: parse_number(identifier, text),
81
- };
82
- },
83
-
84
- /* -----------------------------------------------------------
85
- NUMBER
86
- ----------------------------------------------------------- */
87
- type: (_identifier, metadata, text, _output) => {
88
- if (text.startsWith("{") && text.endsWith("}"))
89
- text = text.substring(1, text.length - 1);
90
- return has_atomic("number")(new Set())(metadata) &&
91
- (text === "int" ||
92
- text === "uint" ||
93
- text === "int32" ||
94
- text === "uint32" ||
95
- text === "int64" ||
96
- text === "uint64" ||
97
- text === "float")
98
- ? { kind: "type", value: text }
99
- : null;
100
- },
101
- minimum: (identifier, metadata, text, output) => {
102
- validate(identifier, metadata, output, "minimum", "number", [
103
- "exclusiveMinimum",
104
- ]);
105
- return {
106
- kind: "minimum",
107
- value: parse_number(identifier, text),
108
- };
109
- },
110
- maximum: (identifier, metadata, text, output) => {
111
- validate(identifier, metadata, output, "maximum", "number", [
112
- "exclusiveMaximum",
113
- ]);
114
- return {
115
- kind: "maximum",
116
- value: parse_number(identifier, text),
117
- };
118
- },
119
- exclusiveMinimum: (identifier, metadata, text, output) => {
120
- validate(
121
- identifier,
122
- metadata,
123
- output,
124
- "exclusiveMinimum",
125
- "number",
126
- ["minimum"],
127
- );
128
- return {
129
- kind: "exclusiveMinimum",
130
- value: parse_number(identifier, text),
131
- };
132
- },
133
- exclusiveMaximum: (identifier, metadata, text, output) => {
134
- validate(
135
- identifier,
136
- metadata,
137
- output,
138
- "exclusiveMaximum",
139
- "number",
140
- ["maximum"],
141
- );
142
- return {
143
- kind: "exclusiveMaximum",
144
- value: parse_number(identifier, text),
145
- };
146
- },
147
- multipleOf: (identifier, metadata, text, output) => {
148
- validate(identifier, metadata, output, "multipleOf", "number", [
149
- "step",
150
- ]);
151
- return {
152
- kind: "multipleOf",
153
- value: parse_number(identifier, text),
154
- };
155
- },
156
- step: (identifier, metadata, text, output) => {
157
- validate(identifier, metadata, output, "step", "number", [
158
- "multipleOf",
159
- ]);
160
-
161
- const minimum: boolean = output.some(
162
- (tag) =>
163
- tag.kind === "minimum" || tag.kind === "exclusiveMinimum",
164
- );
165
- if (minimum === undefined)
166
- throw new Error(
167
- `${LABEL}: step requires minimum or exclusiveMinimum tag on "${identifier()}".`,
168
- );
169
-
170
- return {
171
- kind: "step",
172
- value: parse_number(identifier, text),
173
- };
174
- },
175
-
176
- /* -----------------------------------------------------------
177
- STRING
178
- ----------------------------------------------------------- */
179
- // Ignore arbitrary @format values in the internal metadata,
180
- // these are currently only supported on the typia.application() API.
181
- format: (identifier, metadata, str, output) => {
182
- const value: IMetadataCommentTag.IFormat["value"] | undefined =
183
- FORMATS.get(str);
184
- validate(
185
- identifier,
186
- metadata,
187
- output,
188
- "format",
189
- value === "date" || value === "datetime" ? "Date" : "string",
190
- ["pattern"],
191
- );
192
- if (value === undefined) return null;
193
- return {
194
- kind: "format",
195
- value,
196
- };
197
- },
198
- pattern: (identifier, metadata, value, output) => {
199
- validate(identifier, metadata, output, "pattern", "string", [
200
- "format",
201
- ]);
202
- return {
203
- kind: "pattern",
204
- value,
205
- };
206
- },
207
- length: (identifier, metadata, text, output) => {
208
- validate(identifier, metadata, output, "length", "string", [
209
- "minLength",
210
- "maxLength",
211
- ]);
212
- return {
213
- kind: "length",
214
- value: parse_number(identifier, text),
215
- };
216
- },
217
- minLength: (identifier, metadata, text, output) => {
218
- validate(identifier, metadata, output, "minLength", "string", [
219
- "length",
220
- ]);
221
- return {
222
- kind: "minLength",
223
- value: parse_number(identifier, text),
224
- };
225
- },
226
- maxLength: (identifier, metadata, text, output) => {
227
- validate(identifier, metadata, output, "maxLength", "string", [
228
- "length",
229
- ]);
230
- return {
231
- kind: "maxLength",
232
- value: parse_number(identifier, text),
233
- };
234
- },
235
- };
236
- }
237
-
238
- const parse_number = (identifier: () => string, str: string): number => {
239
- const value: number = Number(str);
240
- if (isNaN(value) === true)
241
- throw new Error(`${LABEL}: invalid number on "${identifier()}".`);
242
- return value;
243
- };
244
-
245
- const LABEL = "Error on typia.MetadataTagFactory.generate()";
246
- const FORMATS: Map<string, IMetadataCommentTag.IFormat["value"]> = new Map([
247
- ["uuid", "uuid"],
248
- ["email", "email"],
249
- ["url", "url"],
250
- ["ipv4", "ipv4"],
251
- ["ipv6", "ipv6"],
252
- ["date", "date"],
253
- ["datetime", "datetime"],
254
- ["date-time", "datetime"],
255
- ["dateTime", "datetime"],
256
- ]);
257
-
258
- const WRONG_TYPE = (
259
- tag: string,
260
- type: "string" | "number" | "array",
261
- identifier: () => string,
262
- ) => `${LABEL}: ${tag} requires ${type} type, but no "${identifier()}".`;
263
-
264
- const validate = (
265
- identifier: () => string,
266
- metadata: Metadata,
267
- output: IMetadataCommentTag[],
268
- kind: IMetadataCommentTag["kind"],
269
- type: "array" | "string" | "number" | "Date",
270
- neighbors: IMetadataCommentTag["kind"][],
271
- ): void => {
272
- // TYPE CHECKING
273
- if (type === "array") {
274
- if (has_array(new Set())(metadata) === false)
275
- throw new Error(WRONG_TYPE(kind, "array", identifier));
276
- } else if (type === "Date") {
277
- if (
278
- has_native("Date")(new Set())(metadata) === false &&
279
- has_atomic("string")(new Set())(metadata) === false
280
- )
281
- throw new Error(WRONG_TYPE(kind, "string", identifier));
282
- } else if (has_atomic(type)(new Set())(metadata) === false)
283
- throw new Error(WRONG_TYPE(kind, type, identifier));
284
-
285
- // DUPLICATED TAG
286
- if (output.some((tag) => tag.kind === kind))
287
- throw new Error(
288
- `${LABEL}: duplicated ${kind} tags on "${identifier()}".`,
289
- );
290
-
291
- // NEIGHBOR TAG
292
- for (const name of neighbors)
293
- if (output.some((tag) => tag.kind === name))
294
- throw new Error(
295
- `${LABEL}: ${kind} and ${name} tags on "${identifier()}".`,
296
- );
297
- };
298
-
299
- const has_atomic =
300
- (type: "string" | "number" | "bigint") =>
301
- (visited: Set<Metadata>) =>
302
- (metadata: Metadata): boolean => {
303
- if (visited.has(metadata)) return false;
304
- visited.add(metadata);
305
- return (
306
- metadata.atomics.find(
307
- type === "number"
308
- ? (atom: IMetadataAtomic) =>
309
- atom.type === type || atom.type === "bigint"
310
- : (atom: IMetadataAtomic) => atom.type === type,
311
- ) !== undefined ||
312
- metadata.arrays.some((array) =>
313
- has_atomic(type)(visited)(array.type.value),
314
- ) ||
315
- metadata.tuples.some((tuple) =>
316
- tuple.type.elements.some(has_atomic(type)(visited)),
317
- ) ||
318
- metadata.maps.some((map) => has_atomic(type)(visited)(map.value)) ||
319
- metadata.aliases.some((alias) =>
320
- has_atomic(type)(visited)(alias.value),
321
- ) ||
322
- (metadata.escaped !== null &&
323
- has_atomic(type)(visited)(metadata.escaped.returns))
324
- );
325
- };
326
-
327
- const has_native =
328
- (type: string) =>
329
- (visited: Set<Metadata>) =>
330
- (metadata: Metadata): boolean => {
331
- if (visited.has(metadata)) return false;
332
- visited.add(metadata);
333
- return (
334
- metadata.natives.find((native) => native === type) !== undefined ||
335
- metadata.arrays.some((child) =>
336
- has_native(type)(visited)(child.type.value),
337
- ) ||
338
- metadata.tuples.some((tuple) =>
339
- tuple.type.elements.some(has_native(type)(visited)),
340
- ) ||
341
- metadata.maps.some((map) => has_native(type)(visited)(map.value)) ||
342
- metadata.aliases.some((alias) =>
343
- has_native(type)(visited)(alias.value),
344
- ) ||
345
- (metadata.escaped !== null &&
346
- has_native(type)(visited)(metadata.escaped.returns))
347
- );
348
- };
349
-
350
- const has_array =
351
- (visited: Set<Metadata>) =>
352
- (metadata: Metadata): boolean => {
353
- if (visited.has(metadata)) return false;
354
- visited.add(metadata);
355
- return (
356
- metadata.arrays.length !== 0 ||
357
- metadata.tuples.some((tuple) =>
358
- tuple.type.elements.some(has_array(visited)),
359
- ) ||
360
- metadata.maps.some((map) => has_array(visited)(map.value)) ||
361
- metadata.aliases.some((alias) => has_array(visited)(alias.value)) ||
362
- (metadata.escaped !== null &&
363
- has_array(visited)(metadata.escaped.returns))
364
- );
365
- };
@@ -1,183 +0,0 @@
1
- import { IMetadataTypeTag } from "../../../schemas/metadata/IMetadataTypeTag";
2
- import { MetadataObject } from "../../../schemas/metadata/MetadataObject";
3
- import { MetadataProperty } from "../../../schemas/metadata/MetadataProperty";
4
-
5
- export const iterate_metadata_type_tags =
6
- (type: "bigint" | "number" | "string" | "array") =>
7
- (objects: MetadataObject[]): IMetadataTypeTag[] => {
8
- const filtered: MetadataObject[] = objects.filter((obj) => {
9
- //----
10
- // VALIDATION PROCESS
11
- //----
12
- // ONLY ONE PROPERTY
13
- if (obj.properties.length !== 1) return false;
14
-
15
- // THE TAG.TYPE PROPERTY MUST BE
16
- const top: MetadataProperty = obj.properties[0]!;
17
- if (
18
- top.key.getSoleLiteral() !== "typia.tag" ||
19
- top.value.size() !== 1 ||
20
- top.value.objects.length !== 1
21
- )
22
- return false;
23
- else if (top.value.optional === false)
24
- throw error(null)("must be optional object");
25
-
26
- // CHECK LIST OF PROPERTIES
27
- const tag: MetadataObject = top.value.objects[0]!;
28
- const statics: string[] = tag.properties
29
- .map((p) => p.key.getSoleLiteral()!)
30
- .filter((str) => str !== null);
31
- if (FIELDS.some((f) => !statics.includes(f)))
32
- throw error(null)(
33
- `must have four properties - ${FIELDS.map(
34
- (str) => `'${str}'`,
35
- ).join(", ")}`,
36
- );
37
-
38
- for (const p of tag.properties) {
39
- const key: string | null = p.key.getSoleLiteral();
40
- if (key === null) continue;
41
- else if (FIELDS.includes(key) === false) continue;
42
- else if (
43
- // TARGET
44
- key === "target" &&
45
- (p.value.constants.length !== 1 ||
46
- p.value.constants[0]!.values.length !==
47
- p.value.size() ||
48
- p.value.constants[0]!.values.some(
49
- (v) =>
50
- v !== "bigint" &&
51
- v !== "number" &&
52
- v !== "string" &&
53
- v !== "array",
54
- ))
55
- )
56
- throw error(key)(
57
- `must be one of 'bigint', 'number', 'string', 'array'`,
58
- );
59
- else if (
60
- // KIND
61
- key === "kind" &&
62
- (p.value.size() !== 1 ||
63
- p.value.constants.length !== 1 ||
64
- p.value.constants[0]!.type !== "string" ||
65
- p.value.constants[0]!.values.length !== 1)
66
- )
67
- throw error(key)("must be a string literal type");
68
- else if (
69
- // VALUE
70
- key === "value" &&
71
- (p.value.size() !== 1 ||
72
- p.value.constants.length !== 1 ||
73
- p.value.constants[0]!.values.length !== 1)
74
- )
75
- throw error(key)("must be a constant literal type");
76
- else if (key === "validate") {
77
- //----
78
- // VALIDATE
79
- //----
80
- // STRING CASE
81
- const single: boolean =
82
- p.value.size() === 1 &&
83
- p.value.constants.length === 1 &&
84
- p.value.constants[0]!.type === "string" &&
85
- p.value.constants[0]!.values.length === 1;
86
- if (single === true) continue;
87
-
88
- // RECORD<TARGET, STRING>
89
- const target: string[] | undefined =
90
- p.value.objects[0]?.properties.find(
91
- (p) => p.key.getSoleLiteral()! === "target",
92
- )?.value?.constants?.[0]?.values as
93
- | string[]
94
- | undefined;
95
- if (target === undefined)
96
- throw error("target")(
97
- `must be one of 'bigint', 'number', 'string', 'array'`,
98
- );
99
- const variadic: boolean =
100
- p.value.size() === 1 &&
101
- p.value.objects.length === 1 &&
102
- p.value.objects[0]!.properties.every(
103
- (vp) =>
104
- vp.value.size() === 1 &&
105
- vp.value.isRequired() &&
106
- vp.value.nullable === false &&
107
- vp.value.constants.length === 1 &&
108
- vp.value.constants[0]!.type === "string" &&
109
- vp.value.constants[0]!.values.length === 1 &&
110
- target.includes(vp.key.getSoleLiteral()!),
111
- );
112
- if (variadic === false)
113
- throw error(key)(
114
- `must be a string literal type or Record<Target, string> type.`,
115
- );
116
- }
117
- }
118
- return true;
119
- });
120
-
121
- const tagList: ITypedTag[] = filtered.map((obj) => {
122
- const find = (key: string): MetadataProperty =>
123
- obj.properties[0]!.value.objects[0]!.properties.find(
124
- (p) => p.key.getSoleLiteral() === key,
125
- )!;
126
-
127
- const target = find("target").value.constants[0]!
128
- .values as ITypedTag["target"];
129
- const kind: string = find("kind").value.constants[0]!
130
- .values[0] as string;
131
- const value: boolean | bigint | number | string =
132
- find("value").value.constants[0]!.values[0]!;
133
- const validate: Record<string, string> = (() => {
134
- const validate = find("validate").value;
135
- if (validate.constants.length)
136
- return {
137
- [target[0]!]: validate.constants[0]!
138
- .values[0] as string,
139
- };
140
- return Object.fromEntries(
141
- validate.objects[0]!.properties.map((p) => [
142
- p.key.getSoleLiteral()!,
143
- p.value.constants[0]!.values[0]! as string,
144
- ]),
145
- );
146
- })();
147
-
148
- return { name: obj.name, target, kind, value, validate };
149
- });
150
- if (filtered.length === 0) return [];
151
-
152
- for (const tag of tagList)
153
- if (tag.target.includes(type))
154
- error(null)(
155
- `target must constains ${type} type - ${JSON.stringify(
156
- tag,
157
- )}`,
158
- );
159
-
160
- return tagList.map((tag) => ({
161
- name: tag.name,
162
- kind: tag.kind,
163
- value: tag.value,
164
- validate: tag.validate[type]!,
165
- }));
166
- };
167
-
168
- interface ITypedTag {
169
- name: string;
170
- target: Array<"bigint" | "number" | "string" | "array">;
171
- kind: string;
172
- value: boolean | bigint | number | string;
173
- validate: Record<string, string>;
174
- }
175
-
176
- const FIELDS = ["target", "kind", "value", "validate"];
177
-
178
- const error = (property: string | null) => (msg: string) =>
179
- new Error(
180
- `Error on typia.MetadataFactory.analyze(): the property '${
181
- property === null ? `["typia.tag"]` : `["typia.tag.${property}"]`
182
- }' ${msg}.`,
183
- );
@@ -1,14 +0,0 @@
1
- import { Customizable } from "../typings/Customizable";
2
-
3
- import { $dictionary } from "./$dictionary";
4
-
5
- export const $is_custom = <Type extends keyof Customizable>(
6
- name: string,
7
- type: Type,
8
- text: string,
9
- value: Customizable[Type],
10
- ): boolean => {
11
- const validator = $dictionary.get(name)?.get(type);
12
- if (validator === undefined) return true;
13
- return validator(text)(value);
14
- };
@@ -1,3 +0,0 @@
1
- export const $is_date = (value: string): boolean => REGEX.test(value);
2
-
3
- const REGEX = /^(\d{4})-(\d{2})-(\d{2})$/;
@@ -1,2 +0,0 @@
1
- export const $is_datetime = (value: string): boolean =>
2
- !isNaN(new Date(value).getTime());
@@ -1,4 +0,0 @@
1
- export const $is_email = (str: string): boolean => REGEX.test(str);
2
-
3
- const REGEX =
4
- /^(([^<>()[\]\.,;:\s@\"]+(\.[^<>()[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;
@@ -1,4 +0,0 @@
1
- export const $is_ipv4 = (str: string): boolean => REGEX.test(str);
2
-
3
- const REGEX =
4
- /^(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
@@ -1,4 +0,0 @@
1
- export const $is_ipv6 = (str: string): boolean => REGEX.test(str);
2
-
3
- const REGEX =
4
- /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;
@@ -1,4 +0,0 @@
1
- export const $is_url = (str: string): boolean => REGEX.test(str);
2
-
3
- const REGEX =
4
- /^[a-zA-Z0-9]+:\/\/(?:www.)?[-a-zA-Z0-9@:%._+~#=]{1,256}.[a-zA-Z0-9()]{1,6}\b(?:[-a-zA-Z0-9()@:%_+.~#?&/=]*)$/;
@@ -1,4 +0,0 @@
1
- export const $is_uuid = (str: string): boolean => REGEX.test(str);
2
-
3
- const REGEX =
4
- /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;
@@ -1,45 +0,0 @@
1
- import ts from "typescript";
2
-
3
- import { ExpressionFactory } from "../../factories/ExpressionFactory";
4
- import { IdentifierFactory } from "../../factories/IdentifierFactory";
5
-
6
- import { IMetadataCommentTag } from "../../schemas/metadata/IMetadataCommentTag";
7
- import { IMetadataTypeTag } from "../../schemas/metadata/IMetadataTypeTag";
8
-
9
- import { IProject } from "../../transformers/IProject";
10
-
11
- import { ICheckEntry } from "../helpers/ICheckEntry";
12
- import { check_array_length } from "./check_array_length";
13
-
14
- /**
15
- * @internal
16
- */
17
- export const check_array_tags =
18
- (project: IProject) =>
19
- (matrix: IMetadataTypeTag[][], metaTags: IMetadataCommentTag[]) =>
20
- (input: ts.Expression): ICheckEntry => ({
21
- expression: is_array(project)(matrix)(input),
22
- tags: matrix.length
23
- ? []
24
- : check_array_length(metaTags)(
25
- IdentifierFactory.access(input)("length"),
26
- ),
27
- });
28
-
29
- const is_array =
30
- (project: IProject) =>
31
- (matrix: IMetadataTypeTag[][]) =>
32
- (input: ts.Expression) =>
33
- matrix.length === 0
34
- ? null
35
- : matrix
36
- .map((row) =>
37
- row
38
- .map((tag) =>
39
- ExpressionFactory.transpile(project.context)(
40
- tag.validate,
41
- )(input),
42
- )
43
- .reduce((a, b) => ts.factory.createLogicalAnd(a, b)),
44
- )
45
- .reduce((a, b) => ts.factory.createLogicalOr(a, b));