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
@@ -1,4 +1,15 @@
1
1
  "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
2
13
  var __read = (this && this.__read) || function (o, n) {
3
14
  var m = typeof Symbol === "function" && o[Symbol.iterator];
4
15
  if (!m) return o;
@@ -48,6 +59,11 @@ var MetadataFactory_1 = require("../factories/MetadataFactory");
48
59
  var StatementFactory_1 = require("../factories/StatementFactory");
49
60
  var TemplateFactory_1 = require("../factories/TemplateFactory");
50
61
  var TypeFactory_1 = require("../factories/TypeFactory");
62
+ var Metadata_1 = require("../schemas/metadata/Metadata");
63
+ var MetadataArray_1 = require("../schemas/metadata/MetadataArray");
64
+ var MetadataArrayType_1 = require("../schemas/metadata/MetadataArrayType");
65
+ var MetadataTuple_1 = require("../schemas/metadata/MetadataTuple");
66
+ var MetadataTupleType_1 = require("../schemas/metadata/MetadataTupleType");
51
67
  var FunctionImporeter_1 = require("./helpers/FunctionImporeter");
52
68
  var RandomJoiner_1 = require("./helpers/RandomJoiner");
53
69
  var RandomRanger_1 = require("./helpers/RandomRanger");
@@ -57,13 +73,19 @@ var RandomProgrammer;
57
73
  RandomProgrammer.write = function (project) {
58
74
  return function (modulo) {
59
75
  return function (init) {
60
- var importer = new FunctionImporeter_1.FunctionImporter();
76
+ var importer = new FunctionImporeter_1.FunctionImporter(modulo.getText());
61
77
  return function (type, name) {
62
78
  var collection = new MetadataCollection_1.MetadataCollection();
63
79
  var meta = MetadataFactory_1.MetadataFactory.analyze(project.checker)({
64
- resolve: true,
80
+ escape: false,
65
81
  constant: true,
66
82
  absorb: true,
83
+ validate: function (meta) {
84
+ if (meta.natives.some(function (n) { return n === "WeakSet"; }))
85
+ throw new Error("Error on ".concat(modulo.getText(), "(): WeakSet is not supported."));
86
+ else if (meta.natives.some(function (n) { return n === "WeakMap"; }))
87
+ throw new Error("Error on ".concat(modulo.getText(), "(): WeakMap is not supported."));
88
+ },
67
89
  })(collection)(type);
68
90
  var functions = {
69
91
  objects: write_object_functions(importer)(collection),
@@ -76,7 +98,7 @@ var RandomProgrammer;
76
98
  })(meta, [], []);
77
99
  return typescript_1.default.factory.createArrowFunction(undefined, undefined, [
78
100
  IdentifierFactory_1.IdentifierFactory.parameter("generator", typescript_1.default.factory.createTypeReferenceNode("Partial<typia.IRandomGenerator>"), init !== null && init !== void 0 ? init : typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.QuestionToken)),
79
- ], typescript_1.default.factory.createTypeReferenceNode("typia.Primitive<".concat(name !== null && name !== void 0 ? name : TypeFactory_1.TypeFactory.getFullName(project.checker)(type), ">")), undefined, typescript_1.default.factory.createBlock(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], __read(importer.declare(modulo)), false), __read(functions.objects), false), __read(functions.arrays), false), __read(functions.tuples), false), [
101
+ ], typescript_1.default.factory.createTypeReferenceNode("typia.Resolved<".concat(name !== null && name !== void 0 ? name : TypeFactory_1.TypeFactory.getFullName(project.checker)(type), ">")), undefined, typescript_1.default.factory.createBlock(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], __read(importer.declare(modulo)), false), __read(functions.objects), false), __read(functions.arrays), false), __read(functions.tuples), false), [
80
102
  typescript_1.default.factory.createReturnStatement(output),
81
103
  ], false), true));
82
104
  };
@@ -135,27 +157,27 @@ var RandomProgrammer;
135
157
  var decode = function (importer) {
136
158
  return function (explore) {
137
159
  return function (meta, tags, comments) {
138
- var e_1, _a, e_2, _b, e_3, _c, e_4, _d, e_5, _e, e_6, _f, e_7, _g, e_8, _h;
160
+ var e_1, _a, e_2, _b, e_3, _c, e_4, _d, e_5, _e, e_6, _f, e_7, _g, e_8, _h, e_9, _j, e_10, _k;
139
161
  var expressions = [];
140
162
  if (meta.any)
141
163
  expressions.push(typescript_1.default.factory.createStringLiteral("any type used..."));
142
- if (meta.isRequired() === false)
164
+ if (meta.isRequired() === false || meta.functional === true)
143
165
  expressions.push(typescript_1.default.factory.createIdentifier("undefined"));
144
166
  if (meta.nullable === true)
145
167
  expressions.push(typescript_1.default.factory.createNull());
146
168
  try {
147
- for (var _j = __values(meta.constants), _k = _j.next(); !_k.done; _k = _j.next()) {
148
- var constant = _k.value;
169
+ for (var _l = __values(meta.constants), _m = _l.next(); !_m.done; _m = _l.next()) {
170
+ var constant = _m.value;
149
171
  try {
150
- for (var _l = (e_2 = void 0, __values(constant.values)), _m = _l.next(); !_m.done; _m = _l.next()) {
151
- var value = _m.value;
172
+ for (var _o = (e_2 = void 0, __values(constant.values)), _p = _o.next(); !_p.done; _p = _o.next()) {
173
+ var value = _p.value;
152
174
  expressions.push(decode_atomic(value));
153
175
  }
154
176
  }
155
177
  catch (e_2_1) { e_2 = { error: e_2_1 }; }
156
178
  finally {
157
179
  try {
158
- if (_m && !_m.done && (_b = _l.return)) _b.call(_l);
180
+ if (_p && !_p.done && (_b = _o.return)) _b.call(_o);
159
181
  }
160
182
  finally { if (e_2) throw e_2.error; }
161
183
  }
@@ -164,106 +186,123 @@ var RandomProgrammer;
164
186
  catch (e_1_1) { e_1 = { error: e_1_1 }; }
165
187
  finally {
166
188
  try {
167
- if (_k && !_k.done && (_a = _j.return)) _a.call(_j);
189
+ if (_m && !_m.done && (_a = _l.return)) _a.call(_l);
168
190
  }
169
191
  finally { if (e_1) throw e_1.error; }
170
192
  }
171
193
  try {
172
- for (var _o = __values(meta.templates), _p = _o.next(); !_p.done; _p = _o.next()) {
173
- var template = _p.value;
194
+ for (var _q = __values(meta.templates), _r = _q.next(); !_r.done; _r = _q.next()) {
195
+ var template = _r.value;
174
196
  expressions.push(decode_template(importer)(explore)(template));
175
197
  }
176
198
  }
177
199
  catch (e_3_1) { e_3 = { error: e_3_1 }; }
178
200
  finally {
179
201
  try {
180
- if (_p && !_p.done && (_c = _o.return)) _c.call(_o);
202
+ if (_r && !_r.done && (_c = _q.return)) _c.call(_q);
181
203
  }
182
204
  finally { if (e_3) throw e_3.error; }
183
205
  }
184
206
  try {
185
- for (var _q = __values(meta.atomics), _r = _q.next(); !_r.done; _r = _q.next()) {
186
- var atomic = _r.value;
187
- if (atomic === "boolean")
207
+ for (var _s = __values(meta.atomics), _t = _s.next(); !_t.done; _t = _s.next()) {
208
+ var a = _t.value;
209
+ if (a.type === "boolean")
188
210
  expressions.push(decode_boolean(importer));
189
- else if (atomic === "number")
190
- expressions.push(decode_number(importer)(tags)(comments));
191
- else if (atomic === "string")
192
- expressions.push(decode_string(importer)(tags)(comments));
193
- else if (atomic === "bigint")
194
- expressions.push(decode_bigint(importer)(tags)(comments));
211
+ else if (a.type === "number")
212
+ expressions.push(decode_number(importer)(tags, comments));
213
+ else if (a.type === "string")
214
+ expressions.push(decode_string(importer)(tags, comments));
215
+ else if (a.type === "bigint")
216
+ expressions.push(decode_bigint(importer)(tags, comments));
195
217
  }
196
218
  }
197
219
  catch (e_4_1) { e_4 = { error: e_4_1 }; }
198
220
  finally {
199
221
  try {
200
- if (_r && !_r.done && (_d = _q.return)) _d.call(_q);
222
+ if (_t && !_t.done && (_d = _s.return)) _d.call(_s);
201
223
  }
202
224
  finally { if (e_4) throw e_4.error; }
203
225
  }
204
- if (meta.resolved)
205
- expressions.push(decode(importer)(explore)(meta.resolved.returns, tags, comments));
226
+ if (meta.escaped)
227
+ expressions.push(decode(importer)(explore)(meta.escaped.returns, tags, comments));
206
228
  try {
207
- for (var _s = __values(meta.arrays), _t = _s.next(); !_t.done; _t = _s.next()) {
208
- var array = _t.value;
229
+ for (var _u = __values(meta.arrays), _v = _u.next(); !_v.done; _v = _u.next()) {
230
+ var array = _v.value;
209
231
  expressions.push(decode_array(importer)(explore)(array, tags, comments));
210
232
  }
211
233
  }
212
234
  catch (e_5_1) { e_5 = { error: e_5_1 }; }
213
235
  finally {
214
236
  try {
215
- if (_t && !_t.done && (_e = _s.return)) _e.call(_s);
237
+ if (_v && !_v.done && (_e = _u.return)) _e.call(_u);
216
238
  }
217
239
  finally { if (e_5) throw e_5.error; }
218
240
  }
219
241
  try {
220
- for (var _u = __values(meta.tuples), _v = _u.next(); !_v.done; _v = _u.next()) {
221
- var tuple = _v.value;
242
+ for (var _w = __values(meta.tuples), _x = _w.next(); !_x.done; _x = _w.next()) {
243
+ var tuple = _x.value;
222
244
  expressions.push(decode_tuple(importer)(explore)(tuple, tags, comments));
223
245
  }
224
246
  }
225
247
  catch (e_6_1) { e_6 = { error: e_6_1 }; }
226
248
  finally {
227
249
  try {
228
- if (_v && !_v.done && (_f = _u.return)) _f.call(_u);
250
+ if (_x && !_x.done && (_f = _w.return)) _f.call(_w);
229
251
  }
230
252
  finally { if (e_6) throw e_6.error; }
231
253
  }
232
254
  try {
233
- for (var _w = __values(meta.objects), _x = _w.next(); !_x.done; _x = _w.next()) {
234
- var o = _x.value;
255
+ for (var _y = __values(meta.objects), _z = _y.next(); !_z.done; _z = _y.next()) {
256
+ var o = _z.value;
235
257
  expressions.push(decode_object(importer)(explore)(o));
236
258
  }
237
259
  }
238
260
  catch (e_7_1) { e_7 = { error: e_7_1 }; }
239
261
  finally {
240
262
  try {
241
- if (_x && !_x.done && (_g = _w.return)) _g.call(_w);
263
+ if (_z && !_z.done && (_g = _y.return)) _g.call(_y);
242
264
  }
243
265
  finally { if (e_7) throw e_7.error; }
244
266
  }
245
267
  try {
246
- for (var _y = __values(meta.natives), _z = _y.next(); !_z.done; _z = _y.next()) {
247
- var native = _z.value;
248
- if (native === "Boolean")
249
- expressions.push(decode_boolean(importer));
250
- else if (native === "Number")
251
- expressions.push(decode_number(importer)(tags)(comments));
252
- else if (native === "String")
253
- expressions.push(decode_string(importer)(tags)(comments));
254
- else
255
- expressions.push(typescript_1.default.factory.createIdentifier("{}"));
268
+ for (var _0 = __values(meta.natives), _1 = _0.next(); !_1.done; _1 = _0.next()) {
269
+ var native = _1.value;
270
+ expressions.push(decode_native(importer)(native, tags, comments));
256
271
  }
257
272
  }
258
273
  catch (e_8_1) { e_8 = { error: e_8_1 }; }
259
274
  finally {
260
275
  try {
261
- if (_z && !_z.done && (_h = _y.return)) _h.call(_y);
276
+ if (_1 && !_1.done && (_h = _0.return)) _h.call(_0);
262
277
  }
263
278
  finally { if (e_8) throw e_8.error; }
264
279
  }
265
- if (meta.sets.length || meta.maps.length)
266
- expressions.push(typescript_1.default.factory.createIdentifier("{}"));
280
+ try {
281
+ for (var _2 = __values(meta.sets), _3 = _2.next(); !_3.done; _3 = _2.next()) {
282
+ var set = _3.value;
283
+ expressions.push(decode_set(importer)(explore)(set, tags, comments));
284
+ }
285
+ }
286
+ catch (e_9_1) { e_9 = { error: e_9_1 }; }
287
+ finally {
288
+ try {
289
+ if (_3 && !_3.done && (_j = _2.return)) _j.call(_2);
290
+ }
291
+ finally { if (e_9) throw e_9.error; }
292
+ }
293
+ try {
294
+ for (var _4 = __values(meta.maps), _5 = _4.next(); !_5.done; _5 = _4.next()) {
295
+ var map = _5.value;
296
+ expressions.push(decode_map(importer)(explore)(map, tags, comments));
297
+ }
298
+ }
299
+ catch (e_10_1) { e_10 = { error: e_10_1 }; }
300
+ finally {
301
+ try {
302
+ if (_5 && !_5.done && (_k = _4.return)) _k.call(_4);
303
+ }
304
+ finally { if (e_10) throw e_10.error; }
305
+ }
267
306
  if (expressions.length === 1)
268
307
  return expressions[0];
269
308
  return typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createCallExpression(importer.use("pick"), undefined, [
@@ -294,104 +333,98 @@ var RandomProgrammer;
294
333
  };
295
334
  };
296
335
  var decode_number = function (importer) {
297
- return function (tags) {
298
- return function (comments) {
299
- var type = tags.find(function (t) {
336
+ return function (tags, comments) {
337
+ var type = tags.find(function (t) {
338
+ return t.kind === "type" &&
339
+ (t.value === "int" ||
340
+ t.value === "int32" ||
341
+ t.value === "int64");
342
+ })
343
+ ? "int"
344
+ : tags.find(function (t) {
300
345
  return t.kind === "type" &&
301
- (t.value === "int" ||
302
- t.value === "int32" ||
303
- t.value === "int64");
346
+ (t.value === "uint" ||
347
+ t.value === "uint32" ||
348
+ t.value === "uint64");
304
349
  })
305
- ? "int"
306
- : tags.find(function (t) {
307
- return t.kind === "type" &&
308
- (t.value === "uint" ||
309
- t.value === "uint32" ||
310
- t.value === "uint64");
311
- })
312
- ? "uint"
313
- : "double";
314
- return (0, random_custom_1.random_custom)(COALESCE(importer))("number")(comments)(RandomRanger_1.RandomRanger.number({
315
- type: type,
316
- transform: function (value) {
317
- return typescript_1.default.factory.createNumericLiteral(value);
318
- },
319
- setter: function (args) {
320
- return typescript_1.default.factory.createCallExpression(type === "double" &&
321
- tags.every(function (t) {
322
- return t.kind !== "multipleOf" &&
323
- t.kind !== "step";
324
- })
325
- ? COALESCE(importer)("number")
326
- : COALESCE(importer)("integer"), undefined, args.map(function (val) {
327
- return typescript_1.default.factory.createNumericLiteral(val);
328
- }));
329
- },
330
- })({
331
- minimum: 0,
332
- maximum: 100,
333
- gap: 10,
334
- })(tags));
335
- };
350
+ ? "uint"
351
+ : "double";
352
+ return (0, random_custom_1.random_custom)(COALESCE(importer))("number")(comments)(RandomRanger_1.RandomRanger.number({
353
+ type: type,
354
+ transform: function (value) {
355
+ return typescript_1.default.factory.createNumericLiteral(value);
356
+ },
357
+ setter: function (args) {
358
+ return typescript_1.default.factory.createCallExpression(type === "double" &&
359
+ tags.every(function (t) {
360
+ return t.kind !== "multipleOf" &&
361
+ t.kind !== "step";
362
+ })
363
+ ? COALESCE(importer)("number")
364
+ : COALESCE(importer)("integer"), undefined, args.map(function (val) {
365
+ return typescript_1.default.factory.createNumericLiteral(val);
366
+ }));
367
+ },
368
+ })({
369
+ minimum: 0,
370
+ maximum: 100,
371
+ gap: 10,
372
+ })(tags));
336
373
  };
337
374
  };
338
375
  var decode_bigint = function (importer) {
339
- return function (tags) {
340
- return function (comments) {
341
- return (0, random_custom_1.random_custom)(COALESCE(importer))("bigint")(comments)(RandomRanger_1.RandomRanger.number({
342
- type: tags.find(function (t) {
343
- return t.kind === "type" &&
344
- (t.value === "uint" || t.value === "uint64");
345
- })
346
- ? "uint"
347
- : "int",
348
- transform: function (value) { return ExpressionFactory_1.ExpressionFactory.bigint(value); },
349
- setter: function (args) {
350
- return typescript_1.default.factory.createCallExpression(COALESCE(importer)("bigint"), undefined, args.map(function (value) {
351
- return ExpressionFactory_1.ExpressionFactory.bigint(value);
352
- }));
353
- },
354
- })({
355
- minimum: 0,
356
- maximum: 100,
357
- gap: 10,
358
- })(tags));
359
- };
376
+ return function (tags, comments) {
377
+ return (0, random_custom_1.random_custom)(COALESCE(importer))("bigint")(comments)(RandomRanger_1.RandomRanger.number({
378
+ type: tags.find(function (t) {
379
+ return t.kind === "type" &&
380
+ (t.value === "uint" || t.value === "uint64");
381
+ })
382
+ ? "uint"
383
+ : "int",
384
+ transform: function (value) { return ExpressionFactory_1.ExpressionFactory.bigint(value); },
385
+ setter: function (args) {
386
+ return typescript_1.default.factory.createCallExpression(COALESCE(importer)("bigint"), undefined, args.map(function (value) {
387
+ return ExpressionFactory_1.ExpressionFactory.bigint(value);
388
+ }));
389
+ },
390
+ })({
391
+ minimum: 0,
392
+ maximum: 100,
393
+ gap: 10,
394
+ })(tags));
360
395
  };
361
396
  };
362
397
  var decode_string = function (importer) {
363
- return function (tags) {
364
- return function (comments) {
365
- return (0, random_custom_1.random_custom)(COALESCE(importer))("string")(comments)((function () {
366
- var e_9, _a;
367
- try {
368
- for (var tags_1 = __values(tags), tags_1_1 = tags_1.next(); !tags_1_1.done; tags_1_1 = tags_1.next()) {
369
- var t = tags_1_1.value;
370
- if (t.kind === "format")
371
- return typescript_1.default.factory.createCallExpression(COALESCE(importer)(t.value), undefined, undefined);
372
- else if (t.kind === "pattern")
373
- return typescript_1.default.factory.createCallExpression(COALESCE(importer)("pattern"), undefined, [typescript_1.default.factory.createIdentifier("/".concat(t.value, "/"))]);
374
- }
398
+ return function (tags, comments) {
399
+ return (0, random_custom_1.random_custom)(COALESCE(importer))("string")(comments)((function () {
400
+ var e_11, _a;
401
+ try {
402
+ for (var tags_1 = __values(tags), tags_1_1 = tags_1.next(); !tags_1_1.done; tags_1_1 = tags_1.next()) {
403
+ var t = tags_1_1.value;
404
+ if (t.kind === "format")
405
+ return typescript_1.default.factory.createCallExpression(COALESCE(importer)(t.value), undefined, undefined);
406
+ else if (t.kind === "pattern")
407
+ return typescript_1.default.factory.createCallExpression(COALESCE(importer)("pattern"), undefined, [typescript_1.default.factory.createIdentifier("/".concat(t.value, "/"))]);
375
408
  }
376
- catch (e_9_1) { e_9 = { error: e_9_1 }; }
377
- finally {
378
- try {
379
- if (tags_1_1 && !tags_1_1.done && (_a = tags_1.return)) _a.call(tags_1);
380
- }
381
- finally { if (e_9) throw e_9.error; }
409
+ }
410
+ catch (e_11_1) { e_11 = { error: e_11_1 }; }
411
+ finally {
412
+ try {
413
+ if (tags_1_1 && !tags_1_1.done && (_a = tags_1.return)) _a.call(tags_1);
382
414
  }
383
- var tail = RandomRanger_1.RandomRanger.length(COALESCE(importer))({
384
- minimum: 5,
385
- maximum: 25,
386
- gap: 5,
387
- })({
388
- fixed: "length",
389
- minimum: "minLength",
390
- maximum: "maxLength",
391
- })(tags);
392
- return typescript_1.default.factory.createCallExpression(COALESCE(importer)("string"), undefined, tail ? [tail] : undefined);
393
- })());
394
- };
415
+ finally { if (e_11) throw e_11.error; }
416
+ }
417
+ var tail = RandomRanger_1.RandomRanger.length(COALESCE(importer))({
418
+ minimum: 5,
419
+ maximum: 25,
420
+ gap: 5,
421
+ })({
422
+ fixed: "length",
423
+ minimum: "minLength",
424
+ maximum: "maxLength",
425
+ })(tags);
426
+ return typescript_1.default.factory.createCallExpression(COALESCE(importer)("string"), undefined, tail ? [tail] : undefined);
427
+ })());
395
428
  };
396
429
  };
397
430
  var decode_array = function (importer) {
@@ -406,15 +439,15 @@ var RandomProgrammer;
406
439
  minimum: "minItems",
407
440
  maximum: "maxItems",
408
441
  })(tags);
409
- if (array.recursive)
410
- return typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier(importer.useLocal(PREFIX.array(array.index))), undefined, [
442
+ if (array.type.recursive)
443
+ return typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier(importer.useLocal(PREFIX.array(array.type.index))), undefined, [
411
444
  length !== null && length !== void 0 ? length : COALESCE(importer)("length"),
412
445
  typescript_1.default.factory.createTrue(),
413
446
  explore.recursive
414
447
  ? typescript_1.default.factory.createAdd(typescript_1.default.factory.createNumericLiteral(1), typescript_1.default.factory.createIdentifier("_depth"))
415
448
  : typescript_1.default.factory.createNumericLiteral(0),
416
449
  ]);
417
- var expr = RandomJoiner_1.RandomJoiner.array(COALESCE(importer))(decode(importer)(explore))(explore)(length)(array.value, tags, comments);
450
+ var expr = RandomJoiner_1.RandomJoiner.array(COALESCE(importer))(decode(importer)(explore))(explore)(length)(array.type.value, tags, comments);
418
451
  return explore.recursive
419
452
  ? typescript_1.default.factory.createConditionalExpression(typescript_1.default.factory.createLogicalAnd(typescript_1.default.factory.createIdentifier("_recursive"), typescript_1.default.factory.createLessThan(typescript_1.default.factory.createNumericLiteral(5), typescript_1.default.factory.createIdentifier("_depth"))), undefined, typescript_1.default.factory.createIdentifier("[]"), undefined, expr)
420
453
  : expr;
@@ -424,14 +457,14 @@ var RandomProgrammer;
424
457
  var decode_tuple = function (importer) {
425
458
  return function (explore) {
426
459
  return function (tuple, tags, comments) {
427
- return tuple.recursive
428
- ? typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier(importer.useLocal(PREFIX.tuple(tuple.index))), undefined, [
460
+ return tuple.type.recursive
461
+ ? typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier(importer.useLocal(PREFIX.tuple(tuple.type.index))), undefined, [
429
462
  typescript_1.default.factory.createTrue(),
430
463
  explore.recursive
431
464
  ? typescript_1.default.factory.createAdd(typescript_1.default.factory.createNumericLiteral(1), typescript_1.default.factory.createIdentifier("_depth"))
432
465
  : typescript_1.default.factory.createNumericLiteral(0),
433
466
  ])
434
- : RandomJoiner_1.RandomJoiner.tuple(decode(importer)(explore))(tuple.elements, tags, comments);
467
+ : RandomJoiner_1.RandomJoiner.tuple(decode(importer)(explore))(tuple.type.elements, tags, comments);
435
468
  };
436
469
  };
437
470
  };
@@ -449,6 +482,159 @@ var RandomProgrammer;
449
482
  };
450
483
  };
451
484
  };
485
+ var decode_set = function (importer) {
486
+ return function (explore) {
487
+ return function (meta, tags, comments) {
488
+ return typescript_1.default.factory.createNewExpression(typescript_1.default.factory.createIdentifier("Set"), undefined, [
489
+ decode_array(importer)(explore)(MetadataArray_1.MetadataArray.create({
490
+ tags: [],
491
+ type: MetadataArrayType_1.MetadataArrayType.create({
492
+ value: meta,
493
+ recursive: false,
494
+ index: null,
495
+ nullables: [],
496
+ name: "Set<".concat(meta.getName(), ">"),
497
+ }),
498
+ }), tags, comments),
499
+ ]);
500
+ };
501
+ };
502
+ };
503
+ var decode_map = function (importer) {
504
+ return function (explore) {
505
+ return function (m, tags, comments) {
506
+ return typescript_1.default.factory.createNewExpression(typescript_1.default.factory.createIdentifier("Map"), undefined, [
507
+ decode_array(importer)(explore)(MetadataArray_1.MetadataArray.create({
508
+ tags: [],
509
+ type: MetadataArrayType_1.MetadataArrayType.create({
510
+ name: "Map<".concat(m.key.getName(), ", ").concat(m.value.getName(), ">"),
511
+ index: null,
512
+ recursive: false,
513
+ nullables: [],
514
+ value: Metadata_1.Metadata.create(__assign(__assign({}, Metadata_1.Metadata.initialize()), { tuples: [
515
+ (function () {
516
+ var type = MetadataTupleType_1.MetadataTupleType.create({
517
+ name: "[".concat(m.key.getName(), ", ").concat(m.value.getName(), "]"),
518
+ index: null,
519
+ recursive: false,
520
+ nullables: [],
521
+ elements: [m.key, m.value],
522
+ });
523
+ type.of_map = true;
524
+ return MetadataTuple_1.MetadataTuple.create({
525
+ type: type,
526
+ tags: [],
527
+ });
528
+ })(),
529
+ ] })),
530
+ }),
531
+ }), tags, comments),
532
+ ]);
533
+ };
534
+ };
535
+ };
536
+ var decode_native = function (importer) {
537
+ return function (type, tags, comments) {
538
+ if (type === "Boolean")
539
+ return decode_boolean(importer);
540
+ else if (type === "Number")
541
+ return decode_number(importer)(tags, comments);
542
+ else if (type === "String")
543
+ return decode_string(importer)(tags, comments);
544
+ else if (type === "Date")
545
+ return decode_native_date(importer);
546
+ else if (type === "Uint8Array" ||
547
+ type === "Uint8ClampedArray" ||
548
+ type === "Uint16Array" ||
549
+ type === "Uint32Array" ||
550
+ type === "BigUint64Array" ||
551
+ type === "Int8Array" ||
552
+ type === "Int16Array" ||
553
+ type === "Int32Array" ||
554
+ type === "BigInt64Array" ||
555
+ type === "Float32Array" ||
556
+ type === "Float64Array")
557
+ return decode_native_byte_array(importer)(type);
558
+ else if (type === "ArrayBuffer" || type === "SharedArrayBuffer")
559
+ return decode_native_array_buffer(importer)(type);
560
+ else if (type === "DataView")
561
+ return decode_native_data_view(importer);
562
+ else
563
+ return typescript_1.default.factory.createNewExpression(typescript_1.default.factory.createIdentifier(type), undefined, []);
564
+ };
565
+ };
566
+ var decode_native_date = function (importer) {
567
+ return typescript_1.default.factory.createNewExpression(typescript_1.default.factory.createIdentifier("Date"), undefined, [
568
+ typescript_1.default.factory.createCallExpression(COALESCE(importer)("datetime"), undefined, []),
569
+ ]);
570
+ };
571
+ var decode_native_byte_array = function (importer) {
572
+ return function (type) {
573
+ new BigInt64Array();
574
+ var _a = __read((function () {
575
+ if (type === "Uint8Array" || type === "Uint8ClampedArray")
576
+ return [0, 255];
577
+ else if (type === "Uint16Array")
578
+ return [0, 65535];
579
+ else if (type === "Uint32Array")
580
+ return [0, 4294967295];
581
+ else if (type === "BigUint64Array")
582
+ return [0, 18446744073709551615];
583
+ else if (type === "Int8Array")
584
+ return [-128, 127];
585
+ else if (type === "Int16Array")
586
+ return [-32768, 32767];
587
+ else if (type === "Int32Array")
588
+ return [-2147483648, 2147483647];
589
+ else if (type === "BigInt64Array")
590
+ return [-9223372036854775808, 9223372036854775807];
591
+ else if (type === "Float32Array")
592
+ return [-1.175494351e38, 3.4028235e38];
593
+ return [Number.MIN_VALUE, Number.MAX_VALUE];
594
+ })(), 2), minimum = _a[0], maximum = _a[1];
595
+ var literal = type === "BigInt64Array" || type === "BigUint64Array"
596
+ ? ExpressionFactory_1.ExpressionFactory.bigint
597
+ : typescript_1.default.factory.createNumericLiteral;
598
+ return typescript_1.default.factory.createNewExpression(typescript_1.default.factory.createIdentifier(type), [], [
599
+ typescript_1.default.factory.createCallExpression(COALESCE(importer)("array"), undefined, [
600
+ typescript_1.default.factory.createArrowFunction(undefined, undefined, [], TypeFactory_1.TypeFactory.keyword("any"), undefined, typescript_1.default.factory.createCallExpression(COALESCE(importer)(type === "Float32Array" ||
601
+ type === "Float64Array"
602
+ ? "number"
603
+ : type === "BigInt64Array" ||
604
+ type === "BigUint64Array"
605
+ ? "bigint"
606
+ : "integer"), undefined, [literal(minimum), literal(maximum)])),
607
+ ]),
608
+ ]);
609
+ };
610
+ };
611
+ var decode_native_array_buffer = function (importer) {
612
+ return function (type) {
613
+ return type === "ArrayBuffer"
614
+ ? IdentifierFactory_1.IdentifierFactory.access(decode_native_byte_array(importer)("Uint8Array"))("buffer")
615
+ : ExpressionFactory_1.ExpressionFactory.selfCall(typescript_1.default.factory.createBlock([
616
+ StatementFactory_1.StatementFactory.constant("length", typescript_1.default.factory.createCallExpression(COALESCE(importer)("integer"), undefined, [])),
617
+ StatementFactory_1.StatementFactory.constant("buffer", typescript_1.default.factory.createNewExpression(typescript_1.default.factory.createIdentifier("SharedArrayBuffer"), [], [typescript_1.default.factory.createIdentifier("length")])),
618
+ StatementFactory_1.StatementFactory.constant("bytes", typescript_1.default.factory.createNewExpression(typescript_1.default.factory.createIdentifier("Uint8Array"), [], [typescript_1.default.factory.createIdentifier("buffer")])),
619
+ typescript_1.default.factory.createExpressionStatement(typescript_1.default.factory.createCallExpression(IdentifierFactory_1.IdentifierFactory.access(typescript_1.default.factory.createIdentifier("bytes"))("set"), undefined, [
620
+ typescript_1.default.factory.createCallExpression(COALESCE(importer)("array"), undefined, [
621
+ typescript_1.default.factory.createArrowFunction(undefined, undefined, [], TypeFactory_1.TypeFactory.keyword("any"), undefined, typescript_1.default.factory.createCallExpression(COALESCE(importer)("integer"), undefined, [
622
+ typescript_1.default.factory.createNumericLiteral(0),
623
+ typescript_1.default.factory.createNumericLiteral(255),
624
+ ])),
625
+ typescript_1.default.factory.createIdentifier("length"),
626
+ ]),
627
+ typescript_1.default.factory.createNumericLiteral(0),
628
+ ])),
629
+ typescript_1.default.factory.createReturnStatement(typescript_1.default.factory.createIdentifier("buffer")),
630
+ ], true));
631
+ };
632
+ };
633
+ var decode_native_data_view = function (importer) {
634
+ return typescript_1.default.factory.createNewExpression(typescript_1.default.factory.createIdentifier("DataView"), [], [
635
+ IdentifierFactory_1.IdentifierFactory.access(decode_native_byte_array(importer)("Uint8Array"))("buffer"),
636
+ ]);
637
+ };
452
638
  })(RandomProgrammer || (exports.RandomProgrammer = RandomProgrammer = {}));
453
639
  var PREFIX = {
454
640
  object: function (i) { return "$ro".concat(i); },