typia 5.0.0-dev.20230823-2 → 5.0.0-dev.20230827

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 (424) hide show
  1. package/README.md +1 -2
  2. package/lib/IRandomGenerator.d.ts +4 -3
  3. package/lib/factories/ExpressionFactory.d.ts +3 -1
  4. package/lib/factories/ExpressionFactory.js +25 -1
  5. package/lib/factories/ExpressionFactory.js.map +1 -1
  6. package/lib/factories/IdentifierFactory.d.ts +2 -1
  7. package/lib/factories/IdentifierFactory.js +11 -0
  8. package/lib/factories/IdentifierFactory.js.map +1 -1
  9. package/lib/factories/LiteralFactory.js +6 -2
  10. package/lib/factories/LiteralFactory.js.map +1 -1
  11. package/lib/factories/MetadataCollection.d.ts +7 -7
  12. package/lib/factories/MetadataCollection.js +4 -5
  13. package/lib/factories/MetadataCollection.js.map +1 -1
  14. package/lib/factories/MetadataCommentTagFactory.js +532 -0
  15. package/lib/factories/MetadataCommentTagFactory.js.map +1 -0
  16. package/lib/factories/MetadataTypeTagFactory.d.ts +6 -0
  17. package/lib/factories/MetadataTypeTagFactory.js +207 -0
  18. package/lib/factories/MetadataTypeTagFactory.js.map +1 -0
  19. package/lib/factories/NumericRangeFactory.d.ts +6 -0
  20. package/lib/factories/NumericRangeFactory.js +34 -0
  21. package/lib/factories/NumericRangeFactory.js.map +1 -0
  22. package/lib/factories/ProtobufFactory.js +48 -16
  23. package/lib/factories/ProtobufFactory.js.map +1 -1
  24. package/lib/factories/internal/metadata/emend_metadata_atomics.js +12 -6
  25. package/lib/factories/internal/metadata/emend_metadata_atomics.js.map +1 -1
  26. package/lib/factories/internal/metadata/emplace_metadata_alias.js +1 -13
  27. package/lib/factories/internal/metadata/emplace_metadata_alias.js.map +1 -1
  28. package/lib/factories/internal/metadata/emplace_metadata_array_type.d.ts +5 -0
  29. package/lib/factories/internal/metadata/{emplace_metadata_array.js → emplace_metadata_array_type.js} +4 -4
  30. package/lib/factories/internal/metadata/emplace_metadata_array_type.js.map +1 -0
  31. package/lib/factories/internal/metadata/emplace_metadata_object.js +0 -1
  32. package/lib/factories/internal/metadata/emplace_metadata_object.js.map +1 -1
  33. package/lib/factories/internal/metadata/emplace_metadata_tuple.d.ts +2 -2
  34. package/lib/factories/internal/metadata/iterate_metadata_array.js +7 -3
  35. package/lib/factories/internal/metadata/iterate_metadata_array.js.map +1 -1
  36. package/lib/factories/internal/metadata/iterate_metadata_atomic.js +2 -1
  37. package/lib/factories/internal/metadata/iterate_metadata_atomic.js.map +1 -1
  38. package/lib/factories/internal/metadata/iterate_metadata_collection.js +20 -12
  39. package/lib/factories/internal/metadata/iterate_metadata_collection.js.map +1 -1
  40. package/lib/factories/internal/metadata/iterate_metadata_comment_tags.d.ts +2 -0
  41. package/lib/factories/internal/metadata/{iterate_metadata_tag.js → iterate_metadata_comment_tags.js} +7 -8
  42. package/lib/factories/internal/metadata/iterate_metadata_comment_tags.js.map +1 -0
  43. package/lib/factories/internal/metadata/iterate_metadata_intersection.js +140 -16
  44. package/lib/factories/internal/metadata/iterate_metadata_intersection.js.map +1 -1
  45. package/lib/factories/internal/metadata/iterate_metadata_object.js +0 -7
  46. package/lib/factories/internal/metadata/iterate_metadata_object.js.map +1 -1
  47. package/lib/factories/internal/metadata/iterate_metadata_sort.js +2 -2
  48. package/lib/factories/internal/metadata/iterate_metadata_sort.js.map +1 -1
  49. package/lib/factories/internal/metadata/iterate_metadata_tuple.js +6 -2
  50. package/lib/factories/internal/metadata/iterate_metadata_tuple.js.map +1 -1
  51. package/lib/functional/$any.js +2 -1
  52. package/lib/functional/$any.js.map +1 -1
  53. package/lib/functional/$clone.d.ts +2 -0
  54. package/lib/functional/$clone.js +8 -0
  55. package/lib/functional/$clone.js.map +1 -0
  56. package/lib/functional/Namespace.js +0 -16
  57. package/lib/functional/Namespace.js.map +1 -1
  58. package/lib/module.d.ts +2 -39
  59. package/lib/module.js +3 -17
  60. package/lib/module.js.map +1 -1
  61. package/lib/programmers/AssertProgrammer.js +28 -10
  62. package/lib/programmers/AssertProgrammer.js.map +1 -1
  63. package/lib/programmers/CheckerProgrammer.js +90 -68
  64. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  65. package/lib/programmers/FeatureProgrammer.d.ts +2 -4
  66. package/lib/programmers/FeatureProgrammer.js +6 -6
  67. package/lib/programmers/FeatureProgrammer.js.map +1 -1
  68. package/lib/programmers/IsProgrammer.d.ts +1 -1
  69. package/lib/programmers/IsProgrammer.js +32 -21
  70. package/lib/programmers/IsProgrammer.js.map +1 -1
  71. package/lib/programmers/RandomProgrammer.js +187 -156
  72. package/lib/programmers/RandomProgrammer.js.map +1 -1
  73. package/lib/programmers/ValidateProgrammer.js +28 -10
  74. package/lib/programmers/ValidateProgrammer.js.map +1 -1
  75. package/lib/programmers/helpers/AtomicPredicator.js +2 -2
  76. package/lib/programmers/helpers/AtomicPredicator.js.map +1 -1
  77. package/lib/programmers/helpers/CloneJoiner.js +10 -2
  78. package/lib/programmers/helpers/CloneJoiner.js.map +1 -1
  79. package/lib/programmers/helpers/ICheckEntry.d.ts +4 -3
  80. package/lib/programmers/helpers/ProtobufUtil.d.ts +6 -2
  81. package/lib/programmers/helpers/ProtobufUtil.js +175 -17
  82. package/lib/programmers/helpers/ProtobufUtil.js.map +1 -1
  83. package/lib/programmers/helpers/RandomJoiner.d.ts +3 -5
  84. package/lib/programmers/helpers/RandomJoiner.js +7 -10
  85. package/lib/programmers/helpers/RandomJoiner.js.map +1 -1
  86. package/lib/programmers/helpers/RandomRanger.d.ts +5 -6
  87. package/lib/programmers/helpers/RandomRanger.js +13 -33
  88. package/lib/programmers/helpers/RandomRanger.js.map +1 -1
  89. package/lib/programmers/helpers/UnionExplorer.d.ts +7 -8
  90. package/lib/programmers/helpers/UnionExplorer.js +46 -35
  91. package/lib/programmers/helpers/UnionExplorer.js.map +1 -1
  92. package/lib/programmers/internal/application_alias.js +0 -1
  93. package/lib/programmers/internal/application_alias.js.map +1 -1
  94. package/lib/programmers/internal/application_array.js +60 -20
  95. package/lib/programmers/internal/application_array.js.map +1 -1
  96. package/lib/programmers/internal/application_default_string.js +2 -2
  97. package/lib/programmers/internal/application_default_string.js.map +1 -1
  98. package/lib/programmers/internal/application_number.js +95 -69
  99. package/lib/programmers/internal/application_number.js.map +1 -1
  100. package/lib/programmers/internal/application_object.js +0 -3
  101. package/lib/programmers/internal/application_object.js.map +1 -1
  102. package/lib/programmers/internal/application_resolved.js +2 -2
  103. package/lib/programmers/internal/application_resolved.js.map +1 -1
  104. package/lib/programmers/internal/application_schema.js +39 -22
  105. package/lib/programmers/internal/application_schema.js.map +1 -1
  106. package/lib/programmers/internal/application_string.js +56 -22
  107. package/lib/programmers/internal/application_string.js.map +1 -1
  108. package/lib/programmers/internal/application_tuple.js +10 -9
  109. package/lib/programmers/internal/application_tuple.js.map +1 -1
  110. package/lib/programmers/internal/check_array_length.js +25 -25
  111. package/lib/programmers/internal/check_array_length.js.map +1 -1
  112. package/lib/programmers/internal/check_bigint.js +20 -109
  113. package/lib/programmers/internal/check_bigint.js.map +1 -1
  114. package/lib/programmers/internal/check_dynamic_properties.js +1 -1
  115. package/lib/programmers/internal/check_dynamic_properties.js.map +1 -1
  116. package/lib/programmers/internal/check_number.js +57 -147
  117. package/lib/programmers/internal/check_number.js.map +1 -1
  118. package/lib/programmers/internal/check_string.js +21 -33
  119. package/lib/programmers/internal/check_string.js.map +1 -1
  120. package/lib/programmers/internal/check_template.js +31 -49
  121. package/lib/programmers/internal/check_template.js.map +1 -1
  122. package/lib/programmers/internal/check_union_array_like.js +7 -6
  123. package/lib/programmers/internal/check_union_array_like.js.map +1 -1
  124. package/lib/programmers/internal/feature_object_entries.js +1 -1
  125. package/lib/programmers/internal/feature_object_entries.js.map +1 -1
  126. package/lib/programmers/internal/metadata_to_pattern.js +4 -4
  127. package/lib/programmers/internal/metadata_to_pattern.js.map +1 -1
  128. package/lib/programmers/internal/random_custom.js +2 -2
  129. package/lib/programmers/internal/random_custom.js.map +1 -1
  130. package/lib/programmers/internal/stringify_dynamic_properties.js +2 -1
  131. package/lib/programmers/internal/stringify_dynamic_properties.js.map +1 -1
  132. package/lib/programmers/internal/wrap_metadata_rest_tuple.js +9 -5
  133. package/lib/programmers/internal/wrap_metadata_rest_tuple.js.map +1 -1
  134. package/lib/programmers/json/JsonStringifyProgrammer.js +43 -32
  135. package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
  136. package/lib/programmers/misc/MiscCloneProgrammer.js +21 -17
  137. package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
  138. package/lib/programmers/{IsPruneProgrammer.d.ts → misc/MiscIsPruneProgrammer.d.ts} +2 -2
  139. package/lib/programmers/{IsPruneProgrammer.js → misc/MiscIsPruneProgrammer.js} +11 -11
  140. package/lib/programmers/misc/MiscIsPruneProgrammer.js.map +1 -0
  141. package/lib/programmers/misc/MiscLiteralsProgrammer.js +2 -2
  142. package/lib/programmers/misc/MiscLiteralsProgrammer.js.map +1 -1
  143. package/lib/programmers/misc/MiscPruneProgrammer.js +21 -17
  144. package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
  145. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js +29 -49
  146. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js.map +1 -1
  147. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js +138 -65
  148. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js.map +1 -1
  149. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js +59 -85
  150. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js.map +1 -1
  151. package/lib/schemas/json/IJsonSchema.d.ts +10 -38
  152. package/lib/schemas/metadata/IMetadata.d.ts +11 -4
  153. package/lib/schemas/metadata/IMetadataAlias.d.ts +0 -2
  154. package/lib/schemas/metadata/IMetadataArray.d.ts +4 -6
  155. package/lib/schemas/metadata/IMetadataArrayType.d.ts +8 -0
  156. package/lib/{CustomValidatorMap.js → schemas/metadata/IMetadataArrayType.js} +1 -1
  157. package/lib/schemas/metadata/IMetadataArrayType.js.map +1 -0
  158. package/lib/schemas/metadata/IMetadataAtomic.d.ts +5 -0
  159. package/lib/schemas/metadata/IMetadataAtomic.js +3 -0
  160. package/lib/schemas/metadata/IMetadataAtomic.js.map +1 -0
  161. package/lib/schemas/metadata/IMetadataCollection.d.ts +4 -4
  162. package/lib/schemas/metadata/IMetadataProperty.d.ts +0 -2
  163. package/lib/schemas/metadata/IMetadataTuple.d.ts +4 -6
  164. package/lib/schemas/metadata/IMetadataTupleType.d.ts +8 -0
  165. package/lib/schemas/metadata/IMetadataTupleType.js +3 -0
  166. package/lib/schemas/metadata/IMetadataTupleType.js.map +1 -0
  167. package/lib/schemas/metadata/IMetadataTypeTag.d.ts +8 -0
  168. package/lib/schemas/metadata/IMetadataTypeTag.js +3 -0
  169. package/lib/schemas/metadata/IMetadataTypeTag.js.map +1 -0
  170. package/lib/schemas/metadata/Metadata.d.ts +2 -2
  171. package/lib/schemas/metadata/Metadata.js +219 -159
  172. package/lib/schemas/metadata/Metadata.js.map +1 -1
  173. package/lib/schemas/metadata/MetadataAlias.d.ts +0 -2
  174. package/lib/schemas/metadata/MetadataAlias.js +0 -3
  175. package/lib/schemas/metadata/MetadataAlias.js.map +1 -1
  176. package/lib/schemas/metadata/MetadataArray.d.ts +8 -6
  177. package/lib/schemas/metadata/MetadataArray.js +48 -19
  178. package/lib/schemas/metadata/MetadataArray.js.map +1 -1
  179. package/lib/schemas/metadata/MetadataArrayType.d.ts +14 -0
  180. package/lib/schemas/metadata/MetadataArrayType.js +36 -0
  181. package/lib/schemas/metadata/MetadataArrayType.js.map +1 -0
  182. package/lib/schemas/metadata/MetadataAtomic.d.ts +9 -0
  183. package/lib/schemas/metadata/MetadataAtomic.js +59 -0
  184. package/lib/schemas/metadata/MetadataAtomic.js.map +1 -0
  185. package/lib/schemas/metadata/MetadataProperty.d.ts +0 -2
  186. package/lib/schemas/metadata/MetadataProperty.js +0 -3
  187. package/lib/schemas/metadata/MetadataProperty.js.map +1 -1
  188. package/lib/schemas/metadata/MetadataTuple.d.ts +8 -8
  189. package/lib/schemas/metadata/MetadataTuple.js +4 -19
  190. package/lib/schemas/metadata/MetadataTuple.js.map +1 -1
  191. package/lib/schemas/metadata/MetadataTupleType.d.ts +13 -0
  192. package/lib/schemas/metadata/MetadataTupleType.js +40 -0
  193. package/lib/schemas/metadata/MetadataTupleType.js.map +1 -0
  194. package/lib/tags/ExclusiveMaximum.d.ts +10 -0
  195. package/lib/tags/ExclusiveMaximum.js +3 -0
  196. package/lib/tags/ExclusiveMaximum.js.map +1 -0
  197. package/lib/tags/ExclusiveMinimum.d.ts +10 -0
  198. package/lib/tags/ExclusiveMinimum.js +3 -0
  199. package/lib/tags/ExclusiveMinimum.js.map +1 -0
  200. package/lib/tags/Format.d.ts +8 -0
  201. package/lib/{schemas/metadata/ICommentTag.js → tags/Format.js} +1 -1
  202. package/lib/tags/Format.js.map +1 -0
  203. package/lib/tags/MaxItems.d.ts +8 -0
  204. package/lib/{schemas/metadata/IMetadataTag.js → tags/MaxItems.js} +1 -1
  205. package/lib/tags/MaxItems.js.map +1 -0
  206. package/lib/tags/MaxLength.d.ts +8 -0
  207. package/lib/tags/MaxLength.js +3 -0
  208. package/lib/tags/MaxLength.js.map +1 -0
  209. package/lib/tags/Maximum.d.ts +10 -0
  210. package/lib/tags/Maximum.js +3 -0
  211. package/lib/tags/Maximum.js.map +1 -0
  212. package/lib/tags/MinItems.d.ts +8 -0
  213. package/lib/tags/MinItems.js +3 -0
  214. package/lib/tags/MinItems.js.map +1 -0
  215. package/lib/tags/MinLength.d.ts +8 -0
  216. package/lib/tags/MinLength.js +3 -0
  217. package/lib/tags/MinLength.js.map +1 -0
  218. package/lib/tags/Minimum.d.ts +10 -0
  219. package/lib/tags/Minimum.js +3 -0
  220. package/lib/tags/Minimum.js.map +1 -0
  221. package/lib/tags/MultipleOf.d.ts +10 -0
  222. package/lib/tags/MultipleOf.js +3 -0
  223. package/lib/tags/MultipleOf.js.map +1 -0
  224. package/lib/tags/Pattern.d.ts +7 -0
  225. package/lib/tags/Pattern.js +3 -0
  226. package/lib/tags/Pattern.js.map +1 -0
  227. package/lib/tags/TagBase.d.ts +14 -0
  228. package/lib/tags/TagBase.js +3 -0
  229. package/lib/tags/TagBase.js.map +1 -0
  230. package/lib/tags/Type.d.ts +14 -0
  231. package/lib/tags/Type.js +3 -0
  232. package/lib/tags/Type.js.map +1 -0
  233. package/lib/tags/index.d.ts +13 -0
  234. package/lib/tags/index.js +30 -0
  235. package/lib/tags/index.js.map +1 -0
  236. package/lib/transformers/FileTransformer.d.ts +1 -1
  237. package/lib/transformers/FileTransformer.js +15 -2
  238. package/lib/transformers/FileTransformer.js.map +1 -1
  239. package/lib/transformers/IProject.d.ts +1 -0
  240. package/lib/transformers/features/json/JsonApplicationTransformer.js +4 -2
  241. package/lib/transformers/features/json/JsonApplicationTransformer.js.map +1 -1
  242. package/lib/transformers/features/misc/MiscCreateIsPruneTransformer.js +2 -2
  243. package/lib/transformers/features/misc/MiscCreateIsPruneTransformer.js.map +1 -1
  244. package/lib/transformers/features/misc/MiscIsPruneTransformer.js +2 -2
  245. package/lib/transformers/features/misc/MiscIsPruneTransformer.js.map +1 -1
  246. package/lib/typings/ProtobufAtomic.d.ts +5 -0
  247. package/lib/typings/ProtobufAtomic.js +3 -0
  248. package/lib/typings/ProtobufAtomic.js.map +1 -0
  249. package/package.json +2 -2
  250. package/src/IRandomGenerator.ts +4 -3
  251. package/src/factories/ExpressionFactory.ts +46 -2
  252. package/src/factories/IdentifierFactory.ts +15 -0
  253. package/src/factories/LiteralFactory.ts +10 -3
  254. package/src/factories/MetadataCollection.ts +18 -13
  255. package/src/factories/MetadataCommentTagFactory.ts +583 -0
  256. package/src/factories/MetadataTypeTagFactory.ts +263 -0
  257. package/src/factories/NumericRangeFactory.ts +33 -0
  258. package/src/factories/ProtobufFactory.ts +34 -18
  259. package/src/factories/internal/metadata/emend_metadata_atomics.ts +12 -5
  260. package/src/factories/internal/metadata/emplace_metadata_alias.ts +0 -6
  261. package/src/factories/internal/metadata/{emplace_metadata_array.ts → emplace_metadata_array_type.ts} +3 -3
  262. package/src/factories/internal/metadata/emplace_metadata_object.ts +0 -1
  263. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +2 -2
  264. package/src/factories/internal/metadata/iterate_metadata_array.ts +13 -5
  265. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +7 -4
  266. package/src/factories/internal/metadata/iterate_metadata_collection.ts +23 -16
  267. package/src/factories/internal/metadata/{iterate_metadata_tag.ts → iterate_metadata_comment_tags.ts} +4 -8
  268. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +113 -16
  269. package/src/factories/internal/metadata/iterate_metadata_object.ts +10 -10
  270. package/src/factories/internal/metadata/iterate_metadata_sort.ts +2 -2
  271. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +12 -4
  272. package/src/functional/$any.ts +3 -1
  273. package/src/functional/$clone.ts +4 -0
  274. package/src/functional/Namespace.ts +0 -16
  275. package/src/module.ts +2 -55
  276. package/src/programmers/AssertProgrammer.ts +57 -21
  277. package/src/programmers/CheckerProgrammer.ts +81 -123
  278. package/src/programmers/FeatureProgrammer.ts +9 -31
  279. package/src/programmers/IsProgrammer.ts +53 -42
  280. package/src/programmers/RandomProgrammer.ts +242 -239
  281. package/src/programmers/ValidateProgrammer.ts +60 -21
  282. package/src/programmers/helpers/AtomicPredicator.ts +2 -2
  283. package/src/programmers/helpers/CloneJoiner.ts +57 -20
  284. package/src/programmers/helpers/ICheckEntry.ts +4 -3
  285. package/src/programmers/helpers/ProtobufUtil.ts +113 -17
  286. package/src/programmers/helpers/RandomJoiner.ts +11 -33
  287. package/src/programmers/helpers/RandomRanger.ts +16 -51
  288. package/src/programmers/helpers/UnionExplorer.ts +46 -51
  289. package/src/programmers/internal/application_alias.ts +0 -1
  290. package/src/programmers/internal/application_array.ts +33 -10
  291. package/src/programmers/internal/application_default_string.ts +6 -2
  292. package/src/programmers/internal/application_number.ts +76 -70
  293. package/src/programmers/internal/application_object.ts +0 -3
  294. package/src/programmers/internal/application_resolved.ts +2 -2
  295. package/src/programmers/internal/application_schema.ts +38 -20
  296. package/src/programmers/internal/application_string.ts +33 -27
  297. package/src/programmers/internal/application_tuple.ts +12 -11
  298. package/src/programmers/internal/check_array_length.ts +34 -28
  299. package/src/programmers/internal/check_bigint.ts +26 -91
  300. package/src/programmers/internal/check_dynamic_properties.ts +1 -2
  301. package/src/programmers/internal/check_number.ts +83 -236
  302. package/src/programmers/internal/check_string.ts +37 -17
  303. package/src/programmers/internal/check_template.ts +17 -12
  304. package/src/programmers/internal/check_union_array_like.ts +4 -18
  305. package/src/programmers/internal/feature_object_entries.ts +12 -18
  306. package/src/programmers/internal/metadata_to_pattern.ts +4 -4
  307. package/src/programmers/internal/random_custom.ts +3 -3
  308. package/src/programmers/internal/stringify_dynamic_properties.ts +1 -1
  309. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +9 -5
  310. package/src/programmers/json/JsonStringifyProgrammer.ts +46 -41
  311. package/src/programmers/misc/MiscCloneProgrammer.ts +23 -27
  312. package/src/programmers/{IsPruneProgrammer.ts → misc/MiscIsPruneProgrammer.ts} +7 -7
  313. package/src/programmers/misc/MiscLiteralsProgrammer.ts +2 -2
  314. package/src/programmers/misc/MiscPruneProgrammer.ts +24 -24
  315. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +40 -74
  316. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +154 -99
  317. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +6 -36
  318. package/src/schemas/json/IJsonSchema.ts +11 -38
  319. package/src/schemas/metadata/IMetadata.ts +11 -5
  320. package/src/schemas/metadata/IMetadataAlias.ts +0 -2
  321. package/src/schemas/metadata/IMetadataArray.ts +4 -7
  322. package/src/schemas/metadata/IMetadataArrayType.ts +10 -0
  323. package/src/schemas/metadata/IMetadataAtomic.ts +6 -0
  324. package/src/schemas/metadata/IMetadataCollection.ts +4 -4
  325. package/src/schemas/metadata/IMetadataDictionary.ts +4 -4
  326. package/src/schemas/metadata/IMetadataProperty.ts +0 -2
  327. package/src/schemas/metadata/IMetadataTuple.ts +4 -7
  328. package/src/schemas/metadata/IMetadataTupleType.ts +10 -0
  329. package/src/schemas/metadata/IMetadataTypeTag.ts +8 -0
  330. package/src/schemas/metadata/Metadata.ts +121 -70
  331. package/src/schemas/metadata/MetadataAlias.ts +0 -5
  332. package/src/schemas/metadata/MetadataArray.ts +28 -34
  333. package/src/schemas/metadata/MetadataArrayType.ts +57 -0
  334. package/src/schemas/metadata/MetadataAtomic.ts +42 -0
  335. package/src/schemas/metadata/MetadataProperty.ts +0 -5
  336. package/src/schemas/metadata/MetadataTuple.ts +9 -35
  337. package/src/schemas/metadata/MetadataTupleType.ts +67 -0
  338. package/src/tags/ExclusiveMaximum.ts +13 -0
  339. package/src/tags/ExclusiveMinimum.ts +13 -0
  340. package/src/tags/Format.ts +30 -0
  341. package/src/tags/MaxItems.ts +9 -0
  342. package/src/tags/MaxLength.ts +9 -0
  343. package/src/tags/Maximum.ts +13 -0
  344. package/src/tags/MinItems.ts +9 -0
  345. package/src/tags/MinLength.ts +9 -0
  346. package/src/tags/Minimum.ts +13 -0
  347. package/src/tags/MultipleOf.ts +15 -0
  348. package/src/tags/Pattern.ts +8 -0
  349. package/src/tags/TagBase.ts +22 -0
  350. package/src/tags/Type.ts +27 -0
  351. package/src/tags/index.ts +13 -0
  352. package/src/transformers/FileTransformer.ts +6 -6
  353. package/src/transformers/IProject.ts +1 -0
  354. package/src/transformers/features/json/JsonApplicationTransformer.ts +3 -2
  355. package/src/transformers/features/misc/MiscCreateIsPruneTransformer.ts +2 -2
  356. package/src/transformers/features/misc/MiscIsPruneTransformer.ts +2 -2
  357. package/src/typings/Atomic.ts +1 -0
  358. package/src/typings/ProtobufAtomic.ts +19 -0
  359. package/lib/CustomValidatorMap.d.ts +0 -110
  360. package/lib/CustomValidatorMap.js.map +0 -1
  361. package/lib/factories/MetadataTagFactory.d.ts +0 -6
  362. package/lib/factories/MetadataTagFactory.js +0 -310
  363. package/lib/factories/MetadataTagFactory.js.map +0 -1
  364. package/lib/factories/internal/metadata/emplace_metadata_array.d.ts +0 -5
  365. package/lib/factories/internal/metadata/emplace_metadata_array.js.map +0 -1
  366. package/lib/factories/internal/metadata/iterate_metadata_tag.d.ts +0 -2
  367. package/lib/factories/internal/metadata/iterate_metadata_tag.js.map +0 -1
  368. package/lib/functional/$is_custom.d.ts +0 -2
  369. package/lib/functional/$is_custom.js +0 -13
  370. package/lib/functional/$is_custom.js.map +0 -1
  371. package/lib/functional/$is_date.d.ts +0 -1
  372. package/lib/functional/$is_date.js +0 -7
  373. package/lib/functional/$is_date.js.map +0 -1
  374. package/lib/functional/$is_datetime.d.ts +0 -1
  375. package/lib/functional/$is_datetime.js +0 -8
  376. package/lib/functional/$is_datetime.js.map +0 -1
  377. package/lib/functional/$is_email.d.ts +0 -1
  378. package/lib/functional/$is_email.js +0 -7
  379. package/lib/functional/$is_email.js.map +0 -1
  380. package/lib/functional/$is_ipv4.d.ts +0 -1
  381. package/lib/functional/$is_ipv4.js +0 -7
  382. package/lib/functional/$is_ipv4.js.map +0 -1
  383. package/lib/functional/$is_ipv6.d.ts +0 -1
  384. package/lib/functional/$is_ipv6.js +0 -7
  385. package/lib/functional/$is_ipv6.js.map +0 -1
  386. package/lib/functional/$is_url.d.ts +0 -1
  387. package/lib/functional/$is_url.js +0 -7
  388. package/lib/functional/$is_url.js.map +0 -1
  389. package/lib/functional/$is_uuid.d.ts +0 -1
  390. package/lib/functional/$is_uuid.js +0 -7
  391. package/lib/functional/$is_uuid.js.map +0 -1
  392. package/lib/programmers/IsPruneProgrammer.js.map +0 -1
  393. package/lib/programmers/internal/check_array.js +0 -44
  394. package/lib/programmers/internal/check_array.js.map +0 -1
  395. package/lib/programmers/internal/check_custom.d.ts +0 -1
  396. package/lib/programmers/internal/check_custom.js +0 -30
  397. package/lib/programmers/internal/check_custom.js.map +0 -1
  398. package/lib/programmers/internal/check_string_tags.d.ts +0 -1
  399. package/lib/programmers/internal/check_string_tags.js +0 -89
  400. package/lib/programmers/internal/check_string_tags.js.map +0 -1
  401. package/lib/programmers/internal/get_comment_tags.d.ts +0 -1
  402. package/lib/programmers/internal/get_comment_tags.js +0 -25
  403. package/lib/programmers/internal/get_comment_tags.js.map +0 -1
  404. package/lib/schemas/metadata/ICommentTag.d.ts +0 -4
  405. package/lib/schemas/metadata/ICommentTag.js.map +0 -1
  406. package/lib/schemas/metadata/IMetadataTag.d.ts +0 -63
  407. package/lib/schemas/metadata/IMetadataTag.js.map +0 -1
  408. package/src/CustomValidatorMap.ts +0 -126
  409. package/src/factories/MetadataTagFactory.ts +0 -364
  410. package/src/functional/$is_custom.ts +0 -14
  411. package/src/functional/$is_date.ts +0 -3
  412. package/src/functional/$is_datetime.ts +0 -2
  413. package/src/functional/$is_email.ts +0 -4
  414. package/src/functional/$is_ipv4.ts +0 -4
  415. package/src/functional/$is_ipv6.ts +0 -4
  416. package/src/functional/$is_url.ts +0 -4
  417. package/src/functional/$is_uuid.ts +0 -4
  418. package/src/programmers/internal/check_array.ts +0 -30
  419. package/src/programmers/internal/check_custom.ts +0 -31
  420. package/src/programmers/internal/check_string_tags.ts +0 -67
  421. package/src/programmers/internal/get_comment_tags.ts +0 -23
  422. package/src/schemas/metadata/ICommentTag.ts +0 -4
  423. package/src/schemas/metadata/IMetadataTag.ts +0 -112
  424. /package/lib/{programmers/internal/check_array.d.ts → factories/MetadataCommentTagFactory.d.ts} +0 -0
@@ -8,15 +8,18 @@ import { StatementFactory } from "../factories/StatementFactory";
8
8
  import { TemplateFactory } from "../factories/TemplateFactory";
9
9
  import { TypeFactory } from "../factories/TypeFactory";
10
10
 
11
- import { ICommentTag } from "../schemas/metadata/ICommentTag";
12
- import { IMetadataTag } from "../schemas/metadata/IMetadataTag";
13
11
  import { Metadata } from "../schemas/metadata/Metadata";
14
12
  import { MetadataArray } from "../schemas/metadata/MetadataArray";
13
+ import { MetadataArrayType } from "../schemas/metadata/MetadataArrayType";
14
+ import { MetadataAtomic } from "../schemas/metadata/MetadataAtomic";
15
15
  import { MetadataObject } from "../schemas/metadata/MetadataObject";
16
16
  import { MetadataTuple } from "../schemas/metadata/MetadataTuple";
17
+ import { MetadataTupleType } from "../schemas/metadata/MetadataTupleType";
17
18
 
18
19
  import { IProject } from "../transformers/IProject";
19
20
 
21
+ import { Escaper } from "../utils/Escaper";
22
+
20
23
  import { FunctionImporter } from "./helpers/FunctionImporeter";
21
24
  import { RandomJoiner } from "./helpers/RandomJoiner";
22
25
  import { RandomRanger } from "./helpers/RandomRanger";
@@ -61,7 +64,7 @@ export namespace RandomProgrammer {
61
64
  const output: ts.Expression = decode(importer)({
62
65
  function: false,
63
66
  recursive: false,
64
- })(meta, [], []);
67
+ })(meta);
65
68
 
66
69
  return ts.factory.createArrowFunction(
67
70
  undefined,
@@ -174,8 +177,6 @@ export namespace RandomProgrammer {
174
177
  function: true,
175
178
  })(ts.factory.createIdentifier("length"))(
176
179
  array.value,
177
- [],
178
- [],
179
180
  ),
180
181
  ),
181
182
  ),
@@ -212,7 +213,7 @@ export namespace RandomProgrammer {
212
213
  function: true,
213
214
  recursive: true,
214
215
  }),
215
- )(tuple.elements, [], []),
216
+ )(tuple.elements),
216
217
  ),
217
218
  ),
218
219
  );
@@ -223,11 +224,7 @@ export namespace RandomProgrammer {
223
224
  const decode =
224
225
  (importer: FunctionImporter) =>
225
226
  (explore: IExplore) =>
226
- (
227
- meta: Metadata,
228
- tags: IMetadataTag[],
229
- comments: ICommentTag[],
230
- ): ts.Expression => {
227
+ (meta: Metadata): ts.Expression => {
231
228
  const expressions: ts.Expression[] = [];
232
229
  if (meta.any)
233
230
  expressions.push(
@@ -249,46 +246,32 @@ export namespace RandomProgrammer {
249
246
  for (const template of meta.templates)
250
247
  expressions.push(decode_template(importer)(explore)(template));
251
248
  for (const atomic of meta.atomics)
252
- if (atomic === "boolean")
249
+ if (atomic.type === "boolean")
253
250
  expressions.push(decode_boolean(importer));
254
- else if (atomic === "number")
255
- expressions.push(decode_number(importer)(tags, comments));
256
- else if (atomic === "string")
257
- expressions.push(decode_string(importer)(tags, comments));
258
- else if (atomic === "bigint")
259
- expressions.push(decode_bigint(importer)(tags, comments));
251
+ else if (atomic.type === "number")
252
+ expressions.push(...decode_number(importer)(atomic));
253
+ else if (atomic.type === "string")
254
+ expressions.push(...decode_string(importer)(atomic));
255
+ else if (atomic.type === "bigint")
256
+ expressions.push(...decode_bigint(importer)(atomic));
260
257
 
261
258
  // INSTANCE TYPES
262
259
  if (meta.escaped)
263
260
  expressions.push(
264
- decode(importer)(explore)(
265
- meta.escaped.returns,
266
- tags,
267
- comments,
268
- ),
261
+ decode(importer)(explore)(meta.escaped.returns),
269
262
  );
270
263
  for (const array of meta.arrays)
271
- expressions.push(
272
- decode_array(importer)(explore)(array, tags, comments),
273
- );
264
+ expressions.push(...decode_array(importer)(explore)(array));
274
265
  for (const tuple of meta.tuples)
275
- expressions.push(
276
- decode_tuple(importer)(explore)(tuple, tags, comments),
277
- );
266
+ expressions.push(decode_tuple(importer)(explore)(tuple));
278
267
  for (const o of meta.objects)
279
268
  expressions.push(decode_object(importer)(explore)(o));
280
269
  for (const native of meta.natives)
281
- expressions.push(
282
- decode_native(importer)(native, tags, comments),
283
- );
270
+ expressions.push(decode_native(importer)(native));
284
271
  for (const set of meta.sets)
285
- expressions.push(
286
- decode_set(importer)(explore)(set, tags, comments),
287
- );
272
+ expressions.push(decode_set(importer)(explore)(set));
288
273
  for (const map of meta.maps)
289
- expressions.push(
290
- decode_map(importer)(explore)(map, tags, comments),
291
- );
274
+ expressions.push(decode_map(importer)(explore)(map));
292
275
 
293
276
  // PICK UP A TYPE
294
277
  if (expressions.length === 1) return expressions[0]!;
@@ -338,189 +321,190 @@ export namespace RandomProgrammer {
338
321
  (explore: IExplore) =>
339
322
  (template: Metadata[]) =>
340
323
  TemplateFactory.generate(
341
- template.map((meta) => decode(importer)(explore)(meta, [], [])),
324
+ template.map((meta) => decode(importer)(explore)(meta)),
342
325
  );
343
326
 
344
327
  const decode_number =
345
328
  (importer: FunctionImporter) =>
346
- (tags: IMetadataTag[], comments: ICommentTag[]): ts.Expression => {
347
- const type = tags.find(
348
- (t) =>
349
- t.kind === "type" &&
350
- (t.value === "int" ||
351
- t.value === "int32" ||
352
- t.value === "int64"),
353
- )
354
- ? "int"
355
- : tags.find(
356
- (t) =>
357
- t.kind === "type" &&
358
- (t.value === "uint" ||
359
- t.value === "uint32" ||
360
- t.value === "uint64"),
361
- )
362
- ? "uint"
363
- : "double";
364
- return random_custom(COALESCE(importer))("number")(comments)(
365
- RandomRanger.number({
366
- type,
367
- transform: (value) =>
368
- ts.factory.createNumericLiteral(value),
369
- setter: (args) =>
370
- ts.factory.createCallExpression(
371
- type === "double" &&
372
- tags.every(
373
- (t) =>
374
- t.kind !== "multipleOf" &&
375
- t.kind !== "step",
376
- )
377
- ? COALESCE(importer)("number")
378
- : COALESCE(importer)("integer"),
379
- undefined,
380
- args.map((val) =>
381
- ts.factory.createNumericLiteral(val),
329
+ (atomic: MetadataAtomic): ts.Expression[] =>
330
+ (atomic.tags.length ? atomic.tags : [[]]).map((tags) => {
331
+ const type = tags.find(
332
+ (t) =>
333
+ t.kind === "type" &&
334
+ (t.value === "int32" || t.value === "int64"),
335
+ )
336
+ ? "int"
337
+ : tags.find(
338
+ (t) =>
339
+ t.kind === "type" &&
340
+ (t.value === "uint32" || t.value === "uint64"),
341
+ )
342
+ ? "uint"
343
+ : "double";
344
+ const multiply = tags.find((t) => t.kind === "multipleOf");
345
+ return random_custom(COALESCE(importer))("number")(tags)(
346
+ RandomRanger.number({
347
+ type,
348
+ transform: (value) =>
349
+ ts.factory.createNumericLiteral(value),
350
+ setter: (args) =>
351
+ ts.factory.createCallExpression(
352
+ type !== "double" || multiply !== undefined
353
+ ? COALESCE(importer)("integer")
354
+ : COALESCE(importer)("number"),
355
+ undefined,
356
+ args.map((val) =>
357
+ ts.factory.createNumericLiteral(val),
358
+ ),
382
359
  ),
383
- ),
384
- })({
385
- minimum: 0,
386
- maximum: 100,
387
- gap: 10,
388
- })(tags),
389
- );
390
- };
360
+ })({
361
+ minimum: 0,
362
+ maximum: 100,
363
+ gap: 10,
364
+ })(tags),
365
+ );
366
+ });
391
367
 
392
368
  const decode_bigint =
393
369
  (importer: FunctionImporter) =>
394
- (tags: IMetadataTag[], comments: ICommentTag[]): ts.Expression =>
395
- random_custom(COALESCE(importer))("bigint")(comments)(
396
- RandomRanger.number({
397
- type: tags.find(
398
- (t) =>
399
- t.kind === "type" &&
400
- (t.value === "uint" || t.value === "uint64"),
401
- )
402
- ? "uint"
403
- : "int",
404
- transform: (value) => ExpressionFactory.bigint(value),
405
- setter: (args) =>
406
- ts.factory.createCallExpression(
407
- COALESCE(importer)("bigint"),
408
- undefined,
409
- args.map((value) =>
410
- ExpressionFactory.bigint(value),
370
+ (atomic: MetadataAtomic): ts.Expression[] =>
371
+ (atomic.tags.length ? atomic.tags : [[]]).map((tags) =>
372
+ random_custom(COALESCE(importer))("bigint")(tags)(
373
+ RandomRanger.number({
374
+ type: tags.find(
375
+ (t) =>
376
+ t.kind === "type" &&
377
+ (t.value === "uint" || t.value === "uint64"),
378
+ )
379
+ ? "uint"
380
+ : "int",
381
+ transform: (value) => ExpressionFactory.bigint(value),
382
+ setter: (args) =>
383
+ ts.factory.createCallExpression(
384
+ COALESCE(importer)("bigint"),
385
+ undefined,
386
+ args.map((value) =>
387
+ ExpressionFactory.bigint(value),
388
+ ),
411
389
  ),
412
- ),
413
- })({
414
- minimum: 0,
415
- maximum: 100,
416
- gap: 10,
417
- })(tags),
390
+ })({
391
+ minimum: 0,
392
+ maximum: 100,
393
+ gap: 10,
394
+ })(tags),
395
+ ),
418
396
  );
419
397
 
420
398
  const decode_string =
421
399
  (importer: FunctionImporter) =>
422
- (tags: IMetadataTag[], comments: ICommentTag[]): ts.Expression =>
423
- random_custom(COALESCE(importer))("string")(comments)(
424
- (() => {
425
- for (const t of tags)
426
- if (t.kind === "format")
427
- return ts.factory.createCallExpression(
428
- COALESCE(importer)(t.value),
429
- undefined,
430
- undefined,
431
- );
432
- else if (t.kind === "pattern")
433
- return ts.factory.createCallExpression(
434
- COALESCE(importer)("pattern"),
435
- undefined,
436
- [ts.factory.createIdentifier(`/${t.value}/`)],
437
- );
400
+ (atomic: MetadataAtomic): ts.Expression[] =>
401
+ (atomic.tags.length ? atomic.tags : [[]]).map((tags) =>
402
+ random_custom(COALESCE(importer))("string")(tags)(
403
+ (() => {
404
+ for (const t of tags)
405
+ if (t.kind === "format")
406
+ return ts.factory.createCallExpression(
407
+ COALESCE(importer)(
408
+ t.value === "date-time"
409
+ ? "datetime"
410
+ : t.value,
411
+ ),
412
+ undefined,
413
+ undefined,
414
+ );
415
+ else if (t.kind === "pattern")
416
+ return ts.factory.createCallExpression(
417
+ COALESCE(importer)("pattern"),
418
+ undefined,
419
+ [
420
+ ts.factory.createIdentifier(
421
+ `/${t.value}/`,
422
+ ),
423
+ ],
424
+ );
438
425
 
439
- const tail = RandomRanger.length(COALESCE(importer))({
440
- minimum: 5,
441
- maximum: 25,
442
- gap: 5,
443
- })({
444
- fixed: "length",
445
- minimum: "minLength",
446
- maximum: "maxLength",
447
- })(tags);
448
- return ts.factory.createCallExpression(
449
- COALESCE(importer)("string"),
450
- undefined,
451
- tail ? [tail] : undefined,
452
- );
453
- })(),
426
+ const tail = RandomRanger.length(COALESCE(importer))({
427
+ minimum: 5,
428
+ maximum: 25,
429
+ gap: 5,
430
+ })({
431
+ minimum: "minLength",
432
+ maximum: "maxLength",
433
+ })(tags);
434
+ return ts.factory.createCallExpression(
435
+ COALESCE(importer)("string"),
436
+ undefined,
437
+ tail ? [tail] : undefined,
438
+ );
439
+ })(),
440
+ ),
454
441
  );
455
442
 
456
443
  const decode_array =
457
444
  (importer: FunctionImporter) =>
458
445
  (explore: IExplore) =>
459
- (
460
- array: MetadataArray,
461
- tags: IMetadataTag[],
462
- comments: ICommentTag[],
463
- ) => {
464
- const length: ts.Expression | undefined = RandomRanger.length(
465
- COALESCE(importer),
466
- )({
467
- minimum: 0,
468
- maximum: 3,
469
- gap: 3,
470
- })({
471
- fixed: "items",
472
- minimum: "minItems",
473
- maximum: "maxItems",
474
- })(tags);
475
- if (array.recursive)
476
- return ts.factory.createCallExpression(
477
- ts.factory.createIdentifier(
478
- importer.useLocal(PREFIX.array(array.index!)),
446
+ (array: MetadataArray): ts.Expression[] => {
447
+ const lengths: Array<ts.Expression | undefined> = (
448
+ array.tags.length ? array.tags : [[]]
449
+ ).map((tags) =>
450
+ RandomRanger.length(COALESCE(importer))({
451
+ minimum: 0,
452
+ maximum: 3,
453
+ gap: 3,
454
+ })({
455
+ minimum: "minItems",
456
+ maximum: "maxItems",
457
+ })(tags),
458
+ );
459
+ if (array.type.recursive)
460
+ return lengths.map((len) =>
461
+ ts.factory.createCallExpression(
462
+ ts.factory.createIdentifier(
463
+ importer.useLocal(PREFIX.array(array.type.index!)),
464
+ ),
465
+ undefined,
466
+ [
467
+ len ?? COALESCE(importer)("length"),
468
+ ts.factory.createTrue(),
469
+ explore.recursive
470
+ ? ts.factory.createAdd(
471
+ ts.factory.createNumericLiteral(1),
472
+ ts.factory.createIdentifier("_depth"),
473
+ )
474
+ : ts.factory.createNumericLiteral(0),
475
+ ],
479
476
  ),
480
- undefined,
481
- [
482
- length ?? COALESCE(importer)("length"),
483
- ts.factory.createTrue(),
484
- explore.recursive
485
- ? ts.factory.createAdd(
486
- ts.factory.createNumericLiteral(1),
487
- ts.factory.createIdentifier("_depth"),
488
- )
489
- : ts.factory.createNumericLiteral(0),
490
- ],
491
477
  );
492
- const expr: ts.Expression = RandomJoiner.array(COALESCE(importer))(
493
- decode(importer)(explore),
494
- )(explore)(length)(array.value, tags, comments);
495
- return explore.recursive
496
- ? ts.factory.createConditionalExpression(
497
- ts.factory.createLogicalAnd(
498
- ts.factory.createIdentifier("_recursive"),
499
- ts.factory.createLessThan(
500
- ts.factory.createNumericLiteral(5),
501
- ts.factory.createIdentifier("_depth"),
478
+ return lengths.map((len) => {
479
+ const expr: ts.Expression = RandomJoiner.array(
480
+ COALESCE(importer),
481
+ )(decode(importer)(explore))(explore)(len)(array.type.value);
482
+ return explore.recursive
483
+ ? ts.factory.createConditionalExpression(
484
+ ts.factory.createLogicalAnd(
485
+ ts.factory.createIdentifier("_recursive"),
486
+ ts.factory.createLessThan(
487
+ ts.factory.createNumericLiteral(5),
488
+ ts.factory.createIdentifier("_depth"),
489
+ ),
502
490
  ),
503
- ),
504
- undefined,
505
- ts.factory.createIdentifier("[]"),
506
- undefined,
507
- expr,
508
- )
509
- : expr;
491
+ undefined,
492
+ ts.factory.createIdentifier("[]"),
493
+ undefined,
494
+ expr,
495
+ )
496
+ : expr;
497
+ });
510
498
  };
511
499
 
512
500
  const decode_tuple =
513
501
  (importer: FunctionImporter) =>
514
502
  (explore: IExplore) =>
515
- (
516
- tuple: MetadataTuple,
517
- tags: IMetadataTag[],
518
- comments: ICommentTag[],
519
- ): ts.Expression =>
520
- tuple.recursive
503
+ (tuple: MetadataTuple): ts.Expression =>
504
+ tuple.type.recursive
521
505
  ? ts.factory.createCallExpression(
522
506
  ts.factory.createIdentifier(
523
- importer.useLocal(PREFIX.tuple(tuple.index!)),
507
+ importer.useLocal(PREFIX.tuple(tuple.type.index!)),
524
508
  ),
525
509
  undefined,
526
510
  [
@@ -534,9 +518,7 @@ export namespace RandomProgrammer {
534
518
  ],
535
519
  )
536
520
  : RandomJoiner.tuple(decode(importer)(explore))(
537
- tuple.elements,
538
- tags,
539
- comments,
521
+ tuple.type.elements,
540
522
  );
541
523
 
542
524
  const decode_object =
@@ -573,74 +555,89 @@ export namespace RandomProgrammer {
573
555
  const decode_set =
574
556
  (importer: FunctionImporter) =>
575
557
  (explore: IExplore) =>
576
- (meta: Metadata, tags: IMetadataTag[], comments: ICommentTag[]) =>
558
+ (meta: Metadata) =>
577
559
  ts.factory.createNewExpression(
578
560
  ts.factory.createIdentifier("Set"),
579
561
  undefined,
580
562
  [
581
563
  decode_array(importer)(explore)(
582
564
  MetadataArray.create({
583
- value: meta,
584
- recursive: false,
585
- index: null,
586
- nullables: [],
587
- name: `Set<${meta.getName()}>`,
565
+ tags: [],
566
+ type: MetadataArrayType.create({
567
+ value: meta,
568
+ recursive: false,
569
+ index: null,
570
+ nullables: [],
571
+ name: `Set<${meta.getName()}>`,
572
+ }),
588
573
  }),
589
- tags,
590
- comments,
591
- ),
574
+ )[0]!,
592
575
  ],
593
576
  );
594
577
 
595
578
  const decode_map =
596
579
  (importer: FunctionImporter) =>
597
580
  (explore: IExplore) =>
598
- (m: Metadata.Entry, tags: IMetadataTag[], comments: ICommentTag[]) =>
581
+ (map: Metadata.Entry) =>
599
582
  ts.factory.createNewExpression(
600
583
  ts.factory.createIdentifier("Map"),
601
584
  undefined,
602
585
  [
603
586
  decode_array(importer)(explore)(
604
587
  MetadataArray.create({
605
- name: `Map<${m.key.getName()}, ${m.value.getName()}>`,
606
- index: null,
607
- recursive: false,
608
- nullables: [],
609
- value: Metadata.create({
610
- ...Metadata.initialize(),
611
- tuples: [
612
- (() => {
613
- const tuple = MetadataTuple.create({
614
- name: `[${m.key.getName()}, ${m.value.getName()}]`,
615
- index: null,
616
- recursive: false,
617
- nullables: [],
618
- elements: [m.key, m.value],
619
- });
620
- tuple.of_map = true;
621
- return tuple;
622
- })(),
623
- ],
588
+ tags: [],
589
+ type: MetadataArrayType.create({
590
+ name: `Map<${map.key.getName()}, ${map.value.getName()}>`,
591
+ index: null,
592
+ recursive: false,
593
+ nullables: [],
594
+ value: Metadata.create({
595
+ ...Metadata.initialize(),
596
+ tuples: [
597
+ (() => {
598
+ const type =
599
+ MetadataTupleType.create({
600
+ name: `[${map.key.getName()}, ${map.value.getName()}]`,
601
+ index: null,
602
+ recursive: false,
603
+ nullables: [],
604
+ elements: [
605
+ map.key,
606
+ map.value,
607
+ ],
608
+ });
609
+ type.of_map = true;
610
+ return MetadataTuple.create({
611
+ type,
612
+ tags: [],
613
+ });
614
+ })(),
615
+ ],
616
+ }),
624
617
  }),
625
618
  }),
626
- tags,
627
- comments,
628
- ),
619
+ )[0]!,
629
620
  ],
630
621
  );
631
622
 
632
623
  const decode_native =
633
624
  (importer: FunctionImporter) =>
634
- (
635
- type: string,
636
- tags: IMetadataTag[],
637
- comments: ICommentTag[],
638
- ): ts.Expression => {
625
+ (type: string): ts.Expression => {
639
626
  if (type === "Boolean") return decode_boolean(importer);
640
627
  else if (type === "Number")
641
- return decode_number(importer)(tags, comments);
628
+ return decode_number(importer)(
629
+ MetadataAtomic.create({
630
+ type: "number",
631
+ tags: [],
632
+ }),
633
+ )[0]!;
642
634
  else if (type === "String")
643
- return decode_string(importer)(tags, comments);
635
+ return decode_string(importer)(
636
+ MetadataAtomic.create({
637
+ type: "string",
638
+ tags: [],
639
+ }),
640
+ )[0]!;
644
641
  else if (type === "Date") return decode_native_date(importer);
645
642
  else if (
646
643
  type === "Uint8Array" ||
@@ -866,9 +863,15 @@ const PREFIX = {
866
863
 
867
864
  const COALESCE = (importer: FunctionImporter) => (name: string) =>
868
865
  ExpressionFactory.coalesce(
869
- ts.factory.createPropertyAccessChain(
870
- ts.factory.createIdentifier("generator"),
871
- ts.factory.createToken(ts.SyntaxKind.QuestionDotToken),
872
- ts.factory.createIdentifier(name),
873
- ),
866
+ Escaper.variable(name)
867
+ ? ts.factory.createPropertyAccessChain(
868
+ ts.factory.createIdentifier("generator"),
869
+ ts.factory.createToken(ts.SyntaxKind.QuestionDotToken),
870
+ ts.factory.createIdentifier(name),
871
+ )
872
+ : ts.factory.createElementAccessChain(
873
+ ts.factory.createIdentifier("generator"),
874
+ ts.factory.createToken(ts.SyntaxKind.QuestionDotToken),
875
+ ts.factory.createStringLiteral(name),
876
+ ),
874
877
  )(IdentifierFactory.access(importer.use("generator"))(name));