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,38 +1,36 @@
1
1
  import ts from "typescript";
2
2
 
3
- import { IJsDocTagInfo } from "../../schemas/metadata/IJsDocTagInfo";
4
- import { IMetadataTag } from "../../schemas/metadata/IMetadataTag";
3
+ import { ExpressionFactory } from "../../factories/ExpressionFactory";
4
+
5
+ import { IMetadataCommentTag } from "../../schemas/metadata/IMetadataCommentTag";
6
+ import { IMetadataTypeTag } from "../../schemas/metadata/IMetadataTypeTag";
5
7
 
6
8
  import { IProject } from "../../transformers/IProject";
7
9
 
8
- import { FunctionImporter } from "../helpers/FunctionImporeter";
9
10
  import { ICheckEntry } from "../helpers/ICheckEntry";
10
11
  import { OptionPredicator } from "../helpers/OptionPredicator";
11
- import { check_custom } from "./check_custom";
12
12
 
13
13
  /**
14
14
  * @internal
15
15
  */
16
16
  export const check_number =
17
17
  (project: IProject, numeric: boolean) =>
18
- (importer: FunctionImporter) =>
19
- (metaTags: IMetadataTag[]) =>
20
- (jsDocTag: IJsDocTagInfo[]) =>
18
+ (matrix: IMetadataTypeTag[][], metaTags: IMetadataCommentTag[]) =>
21
19
  (input: ts.Expression): ICheckEntry => {
22
- const entries: [IMetadataTag, ts.Expression][] = [];
23
- for (const tag of metaTags)
24
- if (tag.kind === "type") {
20
+ const entries: [IMetadataCommentTag, ts.Expression][] = [];
21
+ for (const mt of metaTags)
22
+ if (mt.kind === "type") {
25
23
  // MUST BE INTEGER
26
24
  if (
27
- tag.value === "int" ||
28
- tag.value === "uint" ||
29
- tag.value === "int32" ||
30
- tag.value === "uint32" ||
31
- tag.value === "int64" ||
32
- tag.value === "uint64"
25
+ mt.value === "int" ||
26
+ mt.value === "uint" ||
27
+ mt.value === "int32" ||
28
+ mt.value === "uint32" ||
29
+ mt.value === "int64" ||
30
+ mt.value === "uint64"
33
31
  )
34
32
  entries.push([
35
- tag,
33
+ mt,
36
34
  ts.factory.createStrictEquality(
37
35
  ts.factory.createCallExpression(
38
36
  ts.factory.createIdentifier("Math.floor"),
@@ -44,29 +42,29 @@ export const check_number =
44
42
  ]);
45
43
  // GREATER THAN OR EQUAL TO ZERO
46
44
  if (
47
- tag.value === "uint" ||
48
- tag.value === "uint32" ||
49
- tag.value === "uint64"
45
+ mt.value === "uint" ||
46
+ mt.value === "uint32" ||
47
+ mt.value === "uint64"
50
48
  )
51
49
  entries.push([
52
- tag,
50
+ mt,
53
51
  ts.factory.createLessThanEquals(
54
52
  ts.factory.createNumericLiteral(0),
55
53
  input,
56
54
  ),
57
55
  ]);
58
56
  // RANGE LIMIT
59
- if (tag.value === "uint" || tag.value === "uint32")
57
+ if (mt.value === "uint" || mt.value === "uint32")
60
58
  entries.push([
61
- tag,
59
+ mt,
62
60
  ts.factory.createLessThanEquals(
63
61
  input,
64
62
  ts.factory.createNumericLiteral(4294967295),
65
63
  ),
66
64
  ]);
67
- else if (tag.value === "uint64")
65
+ else if (mt.value === "uint64")
68
66
  entries.push([
69
- tag,
67
+ mt,
70
68
  ts.factory.createLessThanEquals(
71
69
  input,
72
70
  ts.factory.createNumericLiteral(
@@ -74,9 +72,9 @@ export const check_number =
74
72
  ),
75
73
  ),
76
74
  ]);
77
- else if (tag.value === "int64")
75
+ else if (mt.value === "int64")
78
76
  entries.push([
79
- tag,
77
+ mt,
80
78
  ts.factory.createLogicalAnd(
81
79
  ts.factory.createLessThanEquals(
82
80
  ts.factory.createNumericLiteral(
@@ -92,9 +90,9 @@ export const check_number =
92
90
  ),
93
91
  ),
94
92
  ]);
95
- else if (tag.value === "int" || tag.value === "int32")
93
+ else if (mt.value === "int" || mt.value === "int32")
96
94
  entries.push([
97
- tag,
95
+ mt,
98
96
  ts.factory.createLogicalAnd(
99
97
  ts.factory.createLessThanEquals(
100
98
  ts.factory.createNumericLiteral(-2147483648),
@@ -106,9 +104,9 @@ export const check_number =
106
104
  ),
107
105
  ),
108
106
  ]);
109
- else if (tag.value === "float")
107
+ else if (mt.value === "float")
110
108
  entries.push([
111
- tag,
109
+ mt,
112
110
  ts.factory.createLogicalAnd(
113
111
  ts.factory.createLessThanEquals(
114
112
  ts.factory.createNumericLiteral(
@@ -122,21 +120,21 @@ export const check_number =
122
120
  ),
123
121
  ),
124
122
  ]);
125
- } else if (tag.kind === "multipleOf")
123
+ } else if (mt.kind === "multipleOf")
126
124
  entries.push([
127
- tag,
125
+ mt,
128
126
  ts.factory.createStrictEquality(
129
127
  ts.factory.createNumericLiteral(0),
130
128
  ts.factory.createModulo(
131
129
  input,
132
- ts.factory.createNumericLiteral(tag.value),
130
+ ts.factory.createNumericLiteral(mt.value),
133
131
  ),
134
132
  ),
135
133
  ]);
136
- else if (tag.kind === "step") {
134
+ else if (mt.kind === "step") {
137
135
  const modulo = ts.factory.createModulo(
138
136
  input,
139
- ts.factory.createNumericLiteral(tag.value),
137
+ ts.factory.createNumericLiteral(mt.value),
140
138
  );
141
139
  const minimum =
142
140
  (metaTags.find(
@@ -145,7 +143,7 @@ export const check_number =
145
143
  tag.kind === "exclusiveMinimum",
146
144
  )?.value as number | undefined) ?? undefined;
147
145
  entries.push([
148
- tag,
146
+ mt,
149
147
  ts.factory.createStrictEquality(
150
148
  ts.factory.createNumericLiteral(0),
151
149
  minimum !== undefined
@@ -156,48 +154,47 @@ export const check_number =
156
154
  : modulo,
157
155
  ),
158
156
  ]);
159
- } else if (tag.kind === "minimum")
157
+ } else if (mt.kind === "minimum")
160
158
  entries.push([
161
- tag,
159
+ mt,
162
160
  ts.factory.createLessThanEquals(
163
- ts.factory.createNumericLiteral(tag.value),
161
+ ts.factory.createNumericLiteral(mt.value),
164
162
  input,
165
163
  ),
166
164
  ]);
167
- else if (tag.kind === "maximum")
165
+ else if (mt.kind === "maximum")
168
166
  entries.push([
169
- tag,
167
+ mt,
170
168
  ts.factory.createGreaterThanEquals(
171
- ts.factory.createNumericLiteral(tag.value),
169
+ ts.factory.createNumericLiteral(mt.value),
172
170
  input,
173
171
  ),
174
172
  ]);
175
- else if (tag.kind === "exclusiveMinimum")
173
+ else if (mt.kind === "exclusiveMinimum")
176
174
  entries.push([
177
- tag,
175
+ mt,
178
176
  ts.factory.createLessThan(
179
- ts.factory.createNumericLiteral(tag.value),
177
+ ts.factory.createNumericLiteral(mt.value),
180
178
  input,
181
179
  ),
182
180
  ]);
183
- else if (tag.kind === "exclusiveMaximum")
181
+ else if (mt.kind === "exclusiveMaximum")
184
182
  entries.push([
185
- tag,
183
+ mt,
186
184
  ts.factory.createGreaterThan(
187
- ts.factory.createNumericLiteral(tag.value),
185
+ ts.factory.createNumericLiteral(mt.value),
188
186
  input,
189
187
  ),
190
188
  ]);
191
189
 
192
190
  return {
193
- expression: is_number(project, numeric)(metaTags)(input),
194
- tags: [
195
- ...entries.map(([tag, expression]) => ({
196
- expected: `number (@${tag.kind} ${tag.value})`,
197
- expression,
198
- })),
199
- ...check_custom("number")(importer)(jsDocTag)(input),
200
- ],
191
+ expression: is_number(project, numeric)(matrix, metaTags)(input),
192
+ tags: matrix.length
193
+ ? []
194
+ : entries.map(([tag, expression]) => ({
195
+ expected: `number (@${tag.kind} ${tag.value})`,
196
+ expression,
197
+ })),
201
198
  };
202
199
  };
203
200
 
@@ -205,8 +202,8 @@ export const check_number =
205
202
  * @internal
206
203
  */
207
204
  const is_number =
208
- ({ options }: IProject, numeric: boolean) =>
209
- (metaTags: IMetadataTag[]) =>
205
+ (project: IProject, numeric: boolean) =>
206
+ (matrix: IMetadataTypeTag[][], metaTags: IMetadataCommentTag[]) =>
210
207
  (input: ts.Expression) => {
211
208
  // TYPEOF STATEMENT
212
209
  const conditions: ts.Expression[] = [
@@ -217,22 +214,33 @@ const is_number =
217
214
  ];
218
215
 
219
216
  // CHECK FINITE AND NAN
220
- const finite: boolean =
221
- (!!metaTags.find(
217
+ const ranged: boolean =
218
+ !!metaTags.find(
222
219
  (tag) =>
223
220
  tag.kind === "minimum" || tag.kind === "exclusiveMinimum",
224
221
  ) &&
225
- !!metaTags.find(
226
- (tag) =>
227
- tag.kind === "maximum" ||
228
- tag.kind === "exclusiveMaximum",
229
- )) ||
230
222
  !!metaTags.find(
231
- (tag) => tag.kind === "step" || tag.kind === "multipleOf",
223
+ (tag) =>
224
+ tag.kind === "maximum" || tag.kind === "exclusiveMaximum",
225
+ ) &&
226
+ !!metaTags.find((tag) => tag.kind === "type") &&
227
+ !matrix.every((row) => row.some((tag) => tag.kind === "type")) &&
228
+ !matrix.every(
229
+ (row) =>
230
+ row.some(
231
+ (tag) =>
232
+ tag.kind === "minimum" ||
233
+ tag.kind === "exclusiveMinimum",
234
+ ) &&
235
+ row.some(
236
+ (tag) =>
237
+ tag.kind === "maximum" ||
238
+ tag.kind === "exclusiveMaximum",
239
+ ),
232
240
  );
233
241
 
234
- if (numeric === true && finite === false)
235
- if (OptionPredicator.finite(options))
242
+ if (numeric === true && ranged === false)
243
+ if (OptionPredicator.finite(project.options))
236
244
  conditions.push(
237
245
  ts.factory.createCallExpression(
238
246
  ts.factory.createIdentifier("Number.isFinite"),
@@ -240,7 +248,10 @@ const is_number =
240
248
  [input],
241
249
  ),
242
250
  );
243
- else if (OptionPredicator.numeric(options))
251
+ else if (
252
+ OptionPredicator.numeric(project.options) &&
253
+ ranged === false
254
+ )
244
255
  conditions.push(
245
256
  ts.factory.createLogicalNot(
246
257
  ts.factory.createCallExpression(
@@ -251,6 +262,22 @@ const is_number =
251
262
  ),
252
263
  );
253
264
 
265
+ // ADJUST TYPED TAGS
266
+ if (matrix.length) {
267
+ const logic: ts.Expression = matrix
268
+ .map((row) =>
269
+ row
270
+ .map((tag) =>
271
+ ExpressionFactory.transpile(project.context)(
272
+ tag.validate,
273
+ )(input),
274
+ )
275
+ .reduce((a, b) => ts.factory.createLogicalAnd(a, b)),
276
+ )
277
+ .reduce((a, b) => ts.factory.createLogicalOr(a, b));
278
+ conditions.push(logic);
279
+ }
280
+
254
281
  // COMBINATE
255
282
  return conditions.length === 1
256
283
  ? conditions[0]!
@@ -1,25 +1,56 @@
1
1
  import ts from "typescript";
2
2
 
3
- import { IMetadataTag } from "../../schemas/metadata/IMetadataTag";
3
+ import { ExpressionFactory } from "../../factories/ExpressionFactory";
4
+
5
+ import { IMetadataCommentTag } from "../../schemas/metadata/IMetadataCommentTag";
6
+ import { IMetadataTypeTag } from "../../schemas/metadata/IMetadataTypeTag";
7
+
8
+ import { IProject } from "../../transformers/IProject";
4
9
 
5
10
  import { FunctionImporter } from "../helpers/FunctionImporeter";
6
- import { check_custom } from "./check_custom";
7
11
  import { check_string_tags } from "./check_string_tags";
8
12
 
9
13
  /**
10
14
  * @internal
11
15
  */
12
16
  export const check_string =
17
+ (project: IProject) =>
13
18
  (importer: FunctionImporter) =>
14
- (metaTags: IMetadataTag[]) =>
15
- (jsDocTags: ts.JSDocTagInfo[]) =>
19
+ (tags: IMetadataTypeTag[][], metaTags: IMetadataCommentTag[]) =>
16
20
  (input: ts.Expression) => ({
17
- expression: ts.factory.createStrictEquality(
18
- ts.factory.createStringLiteral("string"),
19
- ts.factory.createTypeOfExpression(input),
20
- ),
21
- tags: [
22
- ...check_string_tags(importer)(metaTags)(input),
23
- ...check_custom("string")(importer)(jsDocTags)(input),
24
- ],
21
+ expression: is_string(project)(tags)(input),
22
+ tags: [...check_string_tags(importer)(metaTags)(input)],
25
23
  });
24
+
25
+ const is_string =
26
+ (project: IProject) =>
27
+ (matrix: IMetadataTypeTag[][]) =>
28
+ (input: ts.Expression) => {
29
+ // BASIC TYPEOF EXPRESSION
30
+ const conditions: ts.Expression[] = [
31
+ ts.factory.createStrictEquality(
32
+ ts.factory.createStringLiteral("string"),
33
+ ts.factory.createTypeOfExpression(input),
34
+ ),
35
+ ];
36
+
37
+ // ADJUST TYPED TAGS
38
+ if (matrix.length) {
39
+ const logic: ts.Expression = matrix
40
+ .map((row) =>
41
+ row
42
+ .map((tag) =>
43
+ ExpressionFactory.transpile(project.context)(
44
+ tag.validate,
45
+ )(input),
46
+ )
47
+ .reduce((a, b) => ts.factory.createLogicalAnd(a, b)),
48
+ )
49
+ .reduce((a, b) => ts.factory.createLogicalOr(a, b));
50
+ conditions.push(logic);
51
+ }
52
+
53
+ return conditions.length === 1
54
+ ? conditions[0]!
55
+ : conditions.reduce((x, y) => ts.factory.createLogicalAnd(x, y));
56
+ };
@@ -2,7 +2,7 @@ import ts from "typescript";
2
2
 
3
3
  import { IdentifierFactory } from "../../factories/IdentifierFactory";
4
4
 
5
- import { IMetadataTag } from "../../schemas/metadata/IMetadataTag";
5
+ import { IMetadataCommentTag } from "../../schemas/metadata/IMetadataCommentTag";
6
6
 
7
7
  import { FunctionImporter } from "../helpers/FunctionImporeter";
8
8
  import { ICheckEntry } from "../helpers/ICheckEntry";
@@ -12,9 +12,9 @@ import { ICheckEntry } from "../helpers/ICheckEntry";
12
12
  */
13
13
  export const check_string_tags =
14
14
  (importer: FunctionImporter) =>
15
- (tagList: IMetadataTag[]) =>
15
+ (tagList: IMetadataCommentTag[]) =>
16
16
  (input: ts.Expression): ICheckEntry.ITag[] => {
17
- const conditions: [IMetadataTag, ts.Expression][] = [];
17
+ const conditions: [IMetadataCommentTag, ts.Expression][] = [];
18
18
  for (const tag of tagList)
19
19
  if (tag.kind === "format")
20
20
  conditions.push([
@@ -1,22 +1,14 @@
1
1
  import ts from "typescript";
2
2
 
3
- import { IJsDocTagInfo } from "../../schemas/metadata/IJsDocTagInfo";
4
- import { IMetadataTag } from "../../schemas/metadata/IMetadataTag";
5
3
  import { Metadata } from "../../schemas/metadata/Metadata";
6
4
 
7
- import { FunctionImporter } from "../helpers/FunctionImporeter";
8
5
  import { ICheckEntry } from "../helpers/ICheckEntry";
9
- import { check_custom } from "./check_custom";
10
- import { check_string_tags } from "./check_string_tags";
11
6
  import { template_to_pattern } from "./template_to_pattern";
12
7
 
13
8
  /**
14
9
  * @internal
15
10
  */
16
11
  export const check_template =
17
- (importer: FunctionImporter) =>
18
- (metaTags: IMetadataTag[]) =>
19
- (jsDocTags: IJsDocTagInfo[]) =>
20
12
  (templates: Metadata[][]) =>
21
13
  (input: ts.Expression): ICheckEntry => {
22
14
  // TYPEOF STRING & TAGS
@@ -48,9 +40,6 @@ export const check_template =
48
40
  expression: conditions.reduce((x, y) =>
49
41
  ts.factory.createLogicalAnd(x, y),
50
42
  ),
51
- tags: [
52
- ...check_string_tags(importer)(metaTags)(input),
53
- ...check_custom("string")(importer)(jsDocTags)(input),
54
- ],
43
+ tags: [],
55
44
  };
56
45
  };
@@ -4,8 +4,9 @@ import { IdentifierFactory } from "../../factories/IdentifierFactory";
4
4
  import { StatementFactory } from "../../factories/StatementFactory";
5
5
  import { TypeFactory } from "../../factories/TypeFactory";
6
6
 
7
- import { IMetadataTag } from "../../schemas/metadata/IMetadataTag";
7
+ import { IMetadataCommentTag } from "../../schemas/metadata/IMetadataCommentTag";
8
8
  import { MetadataArray } from "../../schemas/metadata/MetadataArray";
9
+ import { MetadataArrayType } from "../../schemas/metadata/MetadataArrayType";
9
10
  import { MetadataTuple } from "../../schemas/metadata/MetadataTuple";
10
11
 
11
12
  import { CheckerProgrammer } from "../CheckerProgrammer";
@@ -25,7 +26,7 @@ export const check_union_array_like =
25
26
  input: ts.Expression,
26
27
  origins: Origin[],
27
28
  explore: FeatureProgrammer.IExplore,
28
- tags: IMetadataTag[],
29
+ tags: IMetadataCommentTag[],
29
30
  jsDocTags: ts.JSDocTagInfo[],
30
31
  ): ts.ArrowFunction => {
31
32
  // ONLY ONE TYPE
@@ -66,7 +67,7 @@ export const check_union_array_like =
66
67
  [
67
68
  IdentifierFactory.parameter(
68
69
  "top",
69
- meta instanceof MetadataArray
70
+ meta instanceof MetadataArrayType
70
71
  ? TypeFactory.keyword("any")
71
72
  : ts.factory.createTypeReferenceNode(
72
73
  "any[]",
@@ -82,7 +83,7 @@ export const check_union_array_like =
82
83
  ...explore,
83
84
  tracable: false,
84
85
  postfix:
85
- meta instanceof MetadataArray
86
+ meta instanceof MetadataArrayType
86
87
  ? `"[0]"`
87
88
  : "",
88
89
  },
@@ -300,7 +301,7 @@ export namespace check_union_array_like {
300
301
  front: ts.Expression,
301
302
  target: Element,
302
303
  explore: FeatureProgrammer.IExplore,
303
- tags: IMetadataTag[],
304
+ tags: IMetadataCommentTag[],
304
305
  jsDocTags: ts.JSDocTagInfo[],
305
306
  container: ts.Expression,
306
307
  ): ts.Expression;
@@ -11,7 +11,7 @@ import { template_to_pattern } from "./template_to_pattern";
11
11
  export const metadata_to_pattern =
12
12
  (top: boolean) =>
13
13
  (meta: Metadata): string => {
14
- if (meta.atomics.find((type) => type === "string") !== undefined)
14
+ if (meta.atomics.find((a) => a.type === "string") !== undefined)
15
15
  return "(.*)";
16
16
 
17
17
  const values: string[] = ArrayUtil.flat(
@@ -21,10 +21,10 @@ export const metadata_to_pattern =
21
21
  return c.values.map((str) => PatternUtil.escape(str));
22
22
  }),
23
23
  );
24
- for (const type of meta.atomics)
25
- if (type === "number" || type === "bigint")
24
+ for (const a of meta.atomics)
25
+ if (a.type === "number" || a.type === "bigint")
26
26
  values.push(PatternUtil.NUMBER);
27
- else if (type === "boolean") values.push(PatternUtil.BOOLEAN);
27
+ else if (a.type === "boolean") values.push(PatternUtil.BOOLEAN);
28
28
  for (const childTpl of meta.templates)
29
29
  values.push("(" + template_to_pattern(false)(childTpl) + ")");
30
30
 
@@ -125,7 +125,7 @@ export const stringify_dynamic_properties = (
125
125
  const simple: boolean =
126
126
  dynamic.length === 1 &&
127
127
  dynamic[0]!.key.size() === 1 &&
128
- dynamic[0]!.key.atomics[0] === "string";
128
+ dynamic[0]!.key.atomics[0]?.type === "string";
129
129
  if (simple === true) {
130
130
  statements.push(stringify(dynamic[0]!));
131
131
  return output();
@@ -1,15 +1,19 @@
1
1
  import { Metadata } from "../../schemas/metadata/Metadata";
2
2
  import { MetadataArray } from "../../schemas/metadata/MetadataArray";
3
+ import { MetadataArrayType } from "../../schemas/metadata/MetadataArrayType";
3
4
 
4
5
  export const wrap_metadata_rest_tuple = (rest: Metadata) => {
5
6
  const wrapper: Metadata = Metadata.initialize();
6
7
  wrapper.arrays.push(
7
8
  MetadataArray.create({
8
- name: `...${rest.getName()}`,
9
- value: rest,
10
- nullables: [],
11
- recursive: false,
12
- index: null,
9
+ type: MetadataArrayType.create({
10
+ name: `...${rest.getName()}`,
11
+ value: rest,
12
+ nullables: [],
13
+ recursive: false,
14
+ index: null,
15
+ }),
16
+ tags: [],
13
17
  }),
14
18
  );
15
19
  return wrapper;