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
@@ -9,11 +9,14 @@ import { TypeFactory } from "../factories/TypeFactory";
9
9
  import { ValueFactory } from "../factories/ValueFactory";
10
10
 
11
11
  import { IJsDocTagInfo } from "../schemas/metadata/IJsDocTagInfo";
12
- import { IMetadataTag } from "../schemas/metadata/IMetadataTag";
12
+ import { IMetadataCommentTag } from "../schemas/metadata/IMetadataCommentTag";
13
+ import { IMetadataTypeTag } from "../schemas/metadata/IMetadataTypeTag";
13
14
  import { Metadata } from "../schemas/metadata/Metadata";
14
15
  import { MetadataArray } from "../schemas/metadata/MetadataArray";
16
+ import { MetadataArrayType } from "../schemas/metadata/MetadataArrayType";
15
17
  import { MetadataObject } from "../schemas/metadata/MetadataObject";
16
18
  import { MetadataTuple } from "../schemas/metadata/MetadataTuple";
19
+ import { MetadataTupleType } from "../schemas/metadata/MetadataTupleType";
17
20
 
18
21
  import { IProject } from "../transformers/IProject";
19
22
 
@@ -24,8 +27,8 @@ import { ICheckEntry } from "./helpers/ICheckEntry";
24
27
  import { IExpressionEntry } from "./helpers/IExpressionEntry";
25
28
  import { OptionPredicator } from "./helpers/OptionPredicator";
26
29
  import { UnionExplorer } from "./helpers/UnionExplorer";
27
- import { check_array } from "./internal/check_array";
28
30
  import { check_array_length } from "./internal/check_array_length";
31
+ import { check_array_tags } from "./internal/check_array_tags";
29
32
  import { check_bigint } from "./internal/check_bigint";
30
33
  import { check_native } from "./internal/check_native";
31
34
  import { check_number } from "./internal/check_number";
@@ -150,6 +153,7 @@ export namespace CheckerProgrammer {
150
153
  },
151
154
  [],
152
155
  [],
156
+ [],
153
157
  ),
154
158
  ),
155
159
  ),
@@ -215,7 +219,7 @@ export namespace CheckerProgrammer {
215
219
  const collection: MetadataCollection =
216
220
  new MetadataCollection();
217
221
  const meta: Metadata = MetadataFactory.analyze(checker)({
218
- resolve: false,
222
+ escape: false,
219
223
  constant: true,
220
224
  absorb: true,
221
225
  })(collection)(type);
@@ -292,7 +296,7 @@ export namespace CheckerProgrammer {
292
296
  input: ts.Expression,
293
297
  meta: Metadata,
294
298
  explore: IExplore,
295
- metaTags: IMetadataTag[],
299
+ metaTags: IMetadataCommentTag[],
296
300
  jsDocTags: ts.JSDocTagInfo[],
297
301
  ): ts.Expression => {
298
302
  if (meta.any) return config.success;
@@ -354,35 +358,40 @@ export namespace CheckerProgrammer {
354
358
  add(true, getConstantValue(val));
355
359
 
356
360
  // ATOMIC VALUES
357
- for (const type of meta.atomics)
358
- if (AtomicPredicator.atomic(meta)(type) === false) continue;
359
- else if (type === "number")
361
+ for (const atom of meta.atomics)
362
+ if (AtomicPredicator.atomic(meta)(atom.type) === false)
363
+ continue;
364
+ else if (atom.type === "number")
360
365
  binaries.push({
361
366
  expression: config.atomist(explore)(
362
- check_number(project, config.numeric)(importer)(
367
+ check_number(project, config.numeric)(
368
+ atom.tags,
363
369
  metaTags,
364
- )(jsDocTags)(input),
370
+ )(input),
365
371
  )(input),
366
372
  combined: false,
367
373
  });
368
- else if (type === "bigint")
374
+ else if (atom.type === "bigint")
369
375
  binaries.push({
370
376
  expression: config.atomist(explore)(
371
- check_bigint(importer)(metaTags)(jsDocTags)(input),
377
+ check_bigint(project)(atom.tags, metaTags)(input),
372
378
  )(input),
373
379
  combined: false,
374
380
  });
375
- else if (type === "string")
381
+ else if (atom.type === "string")
376
382
  binaries.push({
377
383
  expression: config.atomist(explore)(
378
- check_string(importer)(metaTags)(jsDocTags)(input),
384
+ check_string(project)(importer)(
385
+ atom.tags,
386
+ metaTags,
387
+ )(input),
379
388
  )(input),
380
389
  combined: false,
381
390
  });
382
391
  else
383
392
  add(
384
393
  true,
385
- ts.factory.createStringLiteral(type),
394
+ ts.factory.createStringLiteral(atom.type),
386
395
  ValueFactory.TYPEOF(input),
387
396
  );
388
397
 
@@ -391,9 +400,7 @@ export namespace CheckerProgrammer {
391
400
  if (AtomicPredicator.template(meta))
392
401
  binaries.push({
393
402
  expression: config.atomist(explore)(
394
- check_template(importer)(metaTags)(jsDocTags)(
395
- meta.templates,
396
- )(input),
403
+ check_template(meta.templates)(input),
397
404
  )(input),
398
405
  combined: false,
399
406
  });
@@ -475,13 +482,12 @@ export namespace CheckerProgrammer {
475
482
  // ARRAYS AND TUPLES
476
483
  if (meta.tuples.length + meta.arrays.length > 0) {
477
484
  const install = prepare(
478
- config.atomist(explore)(
479
- check_array(importer)(
480
- meta.tuples.length === 0 ? metaTags : [],
481
- )(jsDocTags)(input),
482
- )(input),
485
+ config.atomist(explore)({
486
+ expression: ExpressionFactory.isArray(input),
487
+ tags: [],
488
+ })(input),
483
489
  [...meta.tuples, ...meta.arrays]
484
- .map((elem) => elem.name)
490
+ .map((elem) => elem.type.name)
485
491
  .join(" | "),
486
492
  );
487
493
  if (meta.arrays.length === 0)
@@ -512,7 +518,7 @@ export namespace CheckerProgrammer {
512
518
  jsDocTags,
513
519
  ),
514
520
  );
515
- else if (meta.arrays.some((elem) => elem.value.any))
521
+ else if (meta.arrays.some((elem) => elem.type.value.any))
516
522
  install(null);
517
523
  else if (meta.tuples.length === 0)
518
524
  if (meta.arrays.length === 1)
@@ -668,14 +674,15 @@ export namespace CheckerProgrammer {
668
674
  input: ts.Expression,
669
675
  array: MetadataArray,
670
676
  explore: IExplore,
671
- metaTags: IMetadataTag[],
677
+ metaTags: IMetadataCommentTag[],
672
678
  jsDocTags: IJsDocTagInfo[],
673
679
  ) => {
674
- if (array.recursive === false)
680
+ if (array.type.recursive === false)
675
681
  return decode_array_inline(project)(config)(importer)(
676
682
  input,
677
- array,
683
+ array.type,
678
684
  explore,
685
+ array.tags,
679
686
  metaTags,
680
687
  jsDocTags,
681
688
  );
@@ -688,7 +695,9 @@ export namespace CheckerProgrammer {
688
695
  return ts.factory.createLogicalOr(
689
696
  ts.factory.createCallExpression(
690
697
  ts.factory.createIdentifier(
691
- importer.useLocal(`${config.prefix}a${array.index}`),
698
+ importer.useLocal(
699
+ `${config.prefix}a${array.type.index}`,
700
+ ),
692
701
  ),
693
702
  undefined,
694
703
  FeatureProgrammer.argumentsArray(config)({
@@ -697,7 +706,7 @@ export namespace CheckerProgrammer {
697
706
  from: "array",
698
707
  })(input),
699
708
  ),
700
- config.joiner.failure(input, array.name, explore),
709
+ config.joiner.failure(input, array.type.name, explore),
701
710
  );
702
711
  };
703
712
 
@@ -705,12 +714,34 @@ export namespace CheckerProgrammer {
705
714
  (project: IProject) =>
706
715
  (config: IConfig) =>
707
716
  (importer: FunctionImporter) =>
708
- FeatureProgrammer.decode_array({
717
+ (
718
+ input: ts.Expression,
719
+ array: MetadataArrayType,
720
+ explore: IExplore,
721
+ matrix: IMetadataTypeTag[][],
722
+ metaTags: IMetadataCommentTag[],
723
+ jsDocTags: IJsDocTagInfo[],
724
+ ): ts.Expression => {
725
+ const tagger = check_array_tags(project)(matrix, metaTags)(input);
726
+ const main = FeatureProgrammer.decode_array({
709
727
  prefix: config.prefix,
710
728
  trace: config.trace,
711
729
  path: config.path,
712
730
  decoder: () => decode(project)(config)(importer),
713
- })(importer)(config.joiner.array);
731
+ })(importer)(config.joiner.array)(
732
+ input,
733
+ array,
734
+ explore,
735
+ metaTags,
736
+ jsDocTags,
737
+ );
738
+ return tagger.expression === null && tagger.tags.length === 0
739
+ ? main
740
+ : ts.factory.createLogicalAnd(
741
+ config.atomist(explore)(tagger)(input),
742
+ main,
743
+ );
744
+ };
714
745
 
715
746
  const decode_tuple =
716
747
  (project: IProject) =>
@@ -720,13 +751,13 @@ export namespace CheckerProgrammer {
720
751
  input: ts.Expression,
721
752
  tuple: MetadataTuple,
722
753
  explore: IExplore,
723
- tagList: IMetadataTag[],
754
+ tagList: IMetadataCommentTag[],
724
755
  jsDocTags: ts.JSDocTagInfo[],
725
756
  ): ts.Expression => {
726
- if (tuple.recursive === false)
757
+ if (tuple.type.recursive === false)
727
758
  return decode_tuple_inline(project)(config)(importer)(
728
759
  input,
729
- tuple,
760
+ tuple.type,
730
761
  explore,
731
762
  tagList,
732
763
  jsDocTags,
@@ -739,7 +770,9 @@ export namespace CheckerProgrammer {
739
770
  return ts.factory.createLogicalOr(
740
771
  ts.factory.createCallExpression(
741
772
  ts.factory.createIdentifier(
742
- importer.useLocal(`${config.prefix}t${tuple.index}`),
773
+ importer.useLocal(
774
+ `${config.prefix}t${tuple.type.index}`,
775
+ ),
743
776
  ),
744
777
  undefined,
745
778
  FeatureProgrammer.argumentsArray(config)({
@@ -747,7 +780,7 @@ export namespace CheckerProgrammer {
747
780
  source: "function",
748
781
  })(input),
749
782
  ),
750
- config.joiner.failure(input, tuple.name, explore),
783
+ config.joiner.failure(input, tuple.type.name, explore),
751
784
  );
752
785
  };
753
786
 
@@ -757,9 +790,9 @@ export namespace CheckerProgrammer {
757
790
  (importer: FunctionImporter) =>
758
791
  (
759
792
  input: ts.Expression,
760
- tuple: MetadataTuple,
793
+ tuple: MetadataTupleType,
761
794
  explore: IExplore,
762
- tagList: IMetadataTag[],
795
+ tagList: IMetadataCommentTag[],
763
796
  jsDocTags: ts.JSDocTagInfo[],
764
797
  ): ts.Expression => {
765
798
  const binaries: ts.Expression[] = tuple.elements
@@ -882,7 +915,7 @@ export namespace CheckerProgrammer {
882
915
  input: ts.Expression,
883
916
  sets: Metadata[],
884
917
  explore: IExplore,
885
- tags: IMetadataTag[],
918
+ tags: IMetadataCommentTag[],
886
919
  jsDocTags: IJsDocTagInfo[],
887
920
  ): ts.Expression =>
888
921
  ts.factory.createCallExpression(
@@ -908,7 +941,7 @@ export namespace CheckerProgrammer {
908
941
  input: ts.Expression,
909
942
  maps: Metadata.Entry[],
910
943
  explore: IExplore,
911
- tags: IMetadataTag[],
944
+ tags: IMetadataCommentTag[],
912
945
  jsDocTags: IJsDocTagInfo[],
913
946
  ): ts.Expression =>
914
947
  ts.factory.createCallExpression(
@@ -964,7 +997,7 @@ export namespace CheckerProgrammer {
964
997
  input: ts.Expression,
965
998
  tuples: MetadataTuple[],
966
999
  explore: IExplore,
967
- tags: IMetadataTag[],
1000
+ tags: IMetadataCommentTag[],
968
1001
  jsDocTags: IJsDocTagInfo[],
969
1002
  ): ts.Expression =>
970
1003
  explore_array_like_union_types(config)(importer)(
@@ -988,7 +1021,7 @@ export namespace CheckerProgrammer {
988
1021
  input: ts.Expression,
989
1022
  arrays: MetadataArray[],
990
1023
  explore: IExplore,
991
- tags: IMetadataTag[],
1024
+ tags: IMetadataCommentTag[],
992
1025
  jsDocTags: IJsDocTagInfo[],
993
1026
  ): ts.Expression =>
994
1027
  explore_array_like_union_types(config)(importer)(
@@ -1012,7 +1045,7 @@ export namespace CheckerProgrammer {
1012
1045
  input: ts.Expression,
1013
1046
  elements: Array<MetadataArray | MetadataTuple>,
1014
1047
  explore: IExplore,
1015
- tags: IMetadataTag[],
1048
+ tags: IMetadataCommentTag[],
1016
1049
  jsDocTags: IJsDocTagInfo[],
1017
1050
  ): ts.Expression =>
1018
1051
  explore_array_like_union_types(config)(importer)(
@@ -1071,7 +1104,7 @@ export namespace CheckerProgrammer {
1071
1104
  input: ts.Expression,
1072
1105
  elements: T[],
1073
1106
  explore: IExplore,
1074
- tags: IMetadataTag[],
1107
+ tags: IMetadataCommentTag[],
1075
1108
  jsDocTags: IJsDocTagInfo[],
1076
1109
  ) => ts.ArrowFunction,
1077
1110
  ) =>
@@ -1079,7 +1112,7 @@ export namespace CheckerProgrammer {
1079
1112
  input: ts.Expression,
1080
1113
  elements: T[],
1081
1114
  explore: IExplore,
1082
- tags: IMetadataTag[],
1115
+ tags: IMetadataCommentTag[],
1083
1116
  jsDocTags: IJsDocTagInfo[],
1084
1117
  ): ts.Expression => {
1085
1118
  const arrow =
@@ -1093,7 +1126,7 @@ export namespace CheckerProgrammer {
1093
1126
  tags,
1094
1127
  jsDocTags,
1095
1128
  );
1096
- if (elements.every((e) => e.recursive === false))
1129
+ if (elements.every((e) => e.type.recursive === false))
1097
1130
  ts.factory.createCallExpression(
1098
1131
  arrow([])(explore)(input),
1099
1132
  undefined,
@@ -1109,7 +1142,7 @@ export namespace CheckerProgrammer {
1109
1142
  ts.factory.createIdentifier(
1110
1143
  importer.emplaceUnion(
1111
1144
  config.prefix,
1112
- elements.map((e) => e.name).join(" | "),
1145
+ elements.map((e) => e.type.name).join(" | "),
1113
1146
  () =>
1114
1147
  arrow(
1115
1148
  FeatureProgrammer.parameterDeclarations(
@@ -1128,7 +1161,7 @@ export namespace CheckerProgrammer {
1128
1161
  ),
1129
1162
  config.joiner.failure(
1130
1163
  input,
1131
- elements.map((e) => e.name).join(" | "),
1164
+ elements.map((e) => e.type.name).join(" | "),
1132
1165
  explore,
1133
1166
  ),
1134
1167
  );
@@ -7,9 +7,9 @@ import { TypeFactory } from "../factories/TypeFactory";
7
7
  import { ValueFactory } from "../factories/ValueFactory";
8
8
 
9
9
  import { IJsDocTagInfo } from "../schemas/metadata/IJsDocTagInfo";
10
- import { IMetadataTag } from "../schemas/metadata/IMetadataTag";
10
+ import { IMetadataCommentTag } from "../schemas/metadata/IMetadataCommentTag";
11
11
  import { Metadata } from "../schemas/metadata/Metadata";
12
- import { MetadataArray } from "../schemas/metadata/MetadataArray";
12
+ import { MetadataArrayType } from "../schemas/metadata/MetadataArrayType";
13
13
  import { MetadataObject } from "../schemas/metadata/MetadataObject";
14
14
 
15
15
  import { IProject } from "../transformers/IProject";
@@ -195,7 +195,7 @@ export namespace FeatureProgrammer {
195
195
  input: ts.Expression,
196
196
  target: T,
197
197
  explore: IExplore,
198
- metaTags: IMetadataTag[],
198
+ metaTags: IMetadataCommentTag[],
199
199
  jsDocTags: ts.JSDocTagInfo[],
200
200
  ): Output;
201
201
  }
@@ -349,7 +349,7 @@ export namespace FeatureProgrammer {
349
349
  combiner: (
350
350
  input: ts.Expression,
351
351
  arrow: ts.ArrowFunction,
352
- metaTags: IMetadataTag[],
352
+ metaTags: IMetadataCommentTag[],
353
353
  jsDocTags: ts.JSDocTagInfo[],
354
354
  ) => ts.Expression,
355
355
  ) => {
@@ -366,9 +366,9 @@ export namespace FeatureProgrammer {
366
366
 
367
367
  return (
368
368
  input: ts.Expression,
369
- array: MetadataArray,
369
+ array: MetadataArrayType,
370
370
  explore: IExplore,
371
- metaTags: IMetadataTag[],
371
+ metaTags: IMetadataCommentTag[],
372
372
  jsDocTags: IJsDocTagInfo[],
373
373
  ) => {
374
374
  const arrow: ts.ArrowFunction = ts.factory.createArrowFunction(
@@ -31,7 +31,7 @@ export namespace IsProgrammer {
31
31
  }),
32
32
  atomist: () => (entry) => () =>
33
33
  [
34
- entry.expression,
34
+ ...(entry.expression ? [entry.expression] : []),
35
35
  ...entry.tags.map((tag) => tag.expression),
36
36
  ].reduce((x, y) => ts.factory.createLogicalAnd(x, y)),
37
37
  combiner: () => (type: "and" | "or") => {
@@ -97,8 +97,10 @@ export namespace IsProgrammer {
97
97
  (equals: boolean) => {
98
98
  const importer: FunctionImporter =
99
99
  disable === <any>{}
100
- ? disable_function_importer_declare(new FunctionImporter())
101
- : new FunctionImporter();
100
+ ? disable_function_importer_declare(
101
+ new FunctionImporter(modulo.getText()),
102
+ )
103
+ : new FunctionImporter(modulo.getText());
102
104
 
103
105
  // CONFIGURATION
104
106
  const config: CheckerProgrammer.IConfig = {