typia 5.0.0-dev.20230824 → 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 (292) hide show
  1. package/README.md +1 -2
  2. package/lib/IRandomGenerator.d.ts +4 -3
  3. package/lib/factories/ExpressionFactory.d.ts +1 -1
  4. package/lib/factories/ExpressionFactory.js +1 -1
  5. package/lib/factories/ExpressionFactory.js.map +1 -1
  6. package/lib/factories/LiteralFactory.js +6 -2
  7. package/lib/factories/LiteralFactory.js.map +1 -1
  8. package/lib/factories/MetadataCollection.js +0 -1
  9. package/lib/factories/MetadataCollection.js.map +1 -1
  10. package/lib/factories/MetadataCommentTagFactory.js +532 -0
  11. package/lib/factories/MetadataCommentTagFactory.js.map +1 -0
  12. package/lib/factories/MetadataTypeTagFactory.d.ts +6 -0
  13. package/lib/factories/MetadataTypeTagFactory.js +207 -0
  14. package/lib/factories/MetadataTypeTagFactory.js.map +1 -0
  15. package/lib/factories/NumericRangeFactory.d.ts +6 -0
  16. package/lib/factories/NumericRangeFactory.js +34 -0
  17. package/lib/factories/NumericRangeFactory.js.map +1 -0
  18. package/lib/factories/ProtobufFactory.js +41 -10
  19. package/lib/factories/ProtobufFactory.js.map +1 -1
  20. package/lib/factories/internal/metadata/emend_metadata_atomics.js +7 -1
  21. package/lib/factories/internal/metadata/emend_metadata_atomics.js.map +1 -1
  22. package/lib/factories/internal/metadata/emplace_metadata_alias.js +1 -13
  23. package/lib/factories/internal/metadata/emplace_metadata_alias.js.map +1 -1
  24. package/lib/factories/internal/metadata/emplace_metadata_object.js +0 -1
  25. package/lib/factories/internal/metadata/emplace_metadata_object.js.map +1 -1
  26. package/lib/factories/internal/metadata/iterate_metadata_atomic.js +2 -1
  27. package/lib/factories/internal/metadata/iterate_metadata_atomic.js.map +1 -1
  28. package/lib/factories/internal/metadata/iterate_metadata_comment_tags.js +3 -4
  29. package/lib/factories/internal/metadata/iterate_metadata_comment_tags.js.map +1 -1
  30. package/lib/factories/internal/metadata/iterate_metadata_intersection.js +8 -6
  31. package/lib/factories/internal/metadata/iterate_metadata_intersection.js.map +1 -1
  32. package/lib/functional/Namespace.js +0 -16
  33. package/lib/functional/Namespace.js.map +1 -1
  34. package/lib/programmers/AssertProgrammer.js +28 -8
  35. package/lib/programmers/AssertProgrammer.js.map +1 -1
  36. package/lib/programmers/CheckerProgrammer.js +65 -52
  37. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  38. package/lib/programmers/FeatureProgrammer.d.ts +3 -5
  39. package/lib/programmers/FeatureProgrammer.js +6 -6
  40. package/lib/programmers/FeatureProgrammer.js.map +1 -1
  41. package/lib/programmers/IsProgrammer.d.ts +1 -1
  42. package/lib/programmers/IsProgrammer.js +32 -19
  43. package/lib/programmers/IsProgrammer.js.map +1 -1
  44. package/lib/programmers/RandomProgrammer.js +155 -135
  45. package/lib/programmers/RandomProgrammer.js.map +1 -1
  46. package/lib/programmers/ValidateProgrammer.js +28 -8
  47. package/lib/programmers/ValidateProgrammer.js.map +1 -1
  48. package/lib/programmers/helpers/CloneJoiner.js +10 -2
  49. package/lib/programmers/helpers/CloneJoiner.js.map +1 -1
  50. package/lib/programmers/helpers/ICheckEntry.d.ts +3 -2
  51. package/lib/programmers/helpers/ProtobufUtil.d.ts +6 -2
  52. package/lib/programmers/helpers/ProtobufUtil.js +175 -17
  53. package/lib/programmers/helpers/ProtobufUtil.js.map +1 -1
  54. package/lib/programmers/helpers/RandomJoiner.d.ts +3 -5
  55. package/lib/programmers/helpers/RandomJoiner.js +7 -10
  56. package/lib/programmers/helpers/RandomJoiner.js.map +1 -1
  57. package/lib/programmers/helpers/RandomRanger.d.ts +5 -6
  58. package/lib/programmers/helpers/RandomRanger.js +13 -33
  59. package/lib/programmers/helpers/RandomRanger.js.map +1 -1
  60. package/lib/programmers/helpers/UnionExplorer.d.ts +7 -8
  61. package/lib/programmers/helpers/UnionExplorer.js +6 -6
  62. package/lib/programmers/helpers/UnionExplorer.js.map +1 -1
  63. package/lib/programmers/internal/application_alias.js +0 -1
  64. package/lib/programmers/internal/application_alias.js.map +1 -1
  65. package/lib/programmers/internal/application_array.js +60 -20
  66. package/lib/programmers/internal/application_array.js.map +1 -1
  67. package/lib/programmers/internal/application_number.js +95 -69
  68. package/lib/programmers/internal/application_number.js.map +1 -1
  69. package/lib/programmers/internal/application_object.js +0 -3
  70. package/lib/programmers/internal/application_object.js.map +1 -1
  71. package/lib/programmers/internal/application_schema.js +37 -20
  72. package/lib/programmers/internal/application_schema.js.map +1 -1
  73. package/lib/programmers/internal/application_string.js +56 -22
  74. package/lib/programmers/internal/application_string.js.map +1 -1
  75. package/lib/programmers/internal/check_array_length.js +25 -25
  76. package/lib/programmers/internal/check_array_length.js.map +1 -1
  77. package/lib/programmers/internal/check_bigint.js +13 -116
  78. package/lib/programmers/internal/check_bigint.js.map +1 -1
  79. package/lib/programmers/internal/check_dynamic_properties.js +1 -1
  80. package/lib/programmers/internal/check_dynamic_properties.js.map +1 -1
  81. package/lib/programmers/internal/check_number.js +62 -163
  82. package/lib/programmers/internal/check_number.js.map +1 -1
  83. package/lib/programmers/internal/check_string.js +16 -52
  84. package/lib/programmers/internal/check_string.js.map +1 -1
  85. package/lib/programmers/internal/check_template.js +16 -1
  86. package/lib/programmers/internal/check_template.js.map +1 -1
  87. package/lib/programmers/internal/check_union_array_like.js +4 -4
  88. package/lib/programmers/internal/check_union_array_like.js.map +1 -1
  89. package/lib/programmers/internal/feature_object_entries.js +1 -1
  90. package/lib/programmers/internal/feature_object_entries.js.map +1 -1
  91. package/lib/programmers/internal/random_custom.js +2 -2
  92. package/lib/programmers/internal/random_custom.js.map +1 -1
  93. package/lib/programmers/json/JsonStringifyProgrammer.js +21 -16
  94. package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
  95. package/lib/programmers/misc/MiscCloneProgrammer.js +13 -9
  96. package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
  97. package/lib/programmers/{IsPruneProgrammer.d.ts → misc/MiscIsPruneProgrammer.d.ts} +2 -2
  98. package/lib/programmers/{IsPruneProgrammer.js → misc/MiscIsPruneProgrammer.js} +11 -11
  99. package/lib/programmers/misc/MiscIsPruneProgrammer.js.map +1 -0
  100. package/lib/programmers/misc/MiscPruneProgrammer.js +10 -6
  101. package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
  102. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js +24 -44
  103. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js.map +1 -1
  104. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js +138 -65
  105. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js.map +1 -1
  106. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js +59 -85
  107. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js.map +1 -1
  108. package/lib/schemas/json/IJsonSchema.d.ts +10 -38
  109. package/lib/schemas/metadata/IMetadataAlias.d.ts +0 -2
  110. package/lib/schemas/metadata/IMetadataProperty.d.ts +0 -2
  111. package/lib/schemas/metadata/IMetadataTypeTag.d.ts +2 -0
  112. package/lib/schemas/metadata/Metadata.d.ts +2 -2
  113. package/lib/schemas/metadata/Metadata.js +25 -25
  114. package/lib/schemas/metadata/Metadata.js.map +1 -1
  115. package/lib/schemas/metadata/MetadataAlias.d.ts +0 -2
  116. package/lib/schemas/metadata/MetadataAlias.js +0 -3
  117. package/lib/schemas/metadata/MetadataAlias.js.map +1 -1
  118. package/lib/schemas/metadata/MetadataArray.d.ts +2 -0
  119. package/lib/schemas/metadata/MetadataArray.js +45 -2
  120. package/lib/schemas/metadata/MetadataArray.js.map +1 -1
  121. package/lib/schemas/metadata/MetadataAtomic.d.ts +9 -0
  122. package/lib/schemas/metadata/MetadataAtomic.js +59 -0
  123. package/lib/schemas/metadata/MetadataAtomic.js.map +1 -0
  124. package/lib/schemas/metadata/MetadataProperty.d.ts +0 -2
  125. package/lib/schemas/metadata/MetadataProperty.js +0 -3
  126. package/lib/schemas/metadata/MetadataProperty.js.map +1 -1
  127. package/lib/schemas/metadata/MetadataTuple.d.ts +4 -2
  128. package/lib/schemas/metadata/MetadataTuple.js +1 -2
  129. package/lib/schemas/metadata/MetadataTuple.js.map +1 -1
  130. package/lib/tags/ExclusiveMaximum.d.ts +10 -8
  131. package/lib/tags/ExclusiveMinimum.d.ts +10 -8
  132. package/lib/tags/Format.d.ts +8 -8
  133. package/lib/tags/MaxItems.d.ts +8 -8
  134. package/lib/tags/MaxLength.d.ts +8 -8
  135. package/lib/tags/Maximum.d.ts +10 -8
  136. package/lib/tags/MinItems.d.ts +8 -8
  137. package/lib/tags/MinLength.d.ts +8 -8
  138. package/lib/tags/Minimum.d.ts +10 -8
  139. package/lib/tags/MultipleOf.d.ts +10 -8
  140. package/lib/tags/Pattern.d.ts +7 -8
  141. package/lib/tags/TagBase.d.ts +10 -6
  142. package/lib/tags/Type.d.ts +14 -13
  143. package/lib/tags/index.d.ts +1 -0
  144. package/lib/tags/index.js +1 -0
  145. package/lib/tags/index.js.map +1 -1
  146. package/lib/transformers/FileTransformer.js +3 -1
  147. package/lib/transformers/FileTransformer.js.map +1 -1
  148. package/lib/transformers/features/misc/MiscCreateIsPruneTransformer.js +2 -2
  149. package/lib/transformers/features/misc/MiscCreateIsPruneTransformer.js.map +1 -1
  150. package/lib/transformers/features/misc/MiscIsPruneTransformer.js +2 -2
  151. package/lib/transformers/features/misc/MiscIsPruneTransformer.js.map +1 -1
  152. package/lib/typings/ProtobufAtomic.d.ts +5 -0
  153. package/lib/{schemas/metadata/ICommentTag.js → typings/ProtobufAtomic.js} +1 -1
  154. package/lib/typings/ProtobufAtomic.js.map +1 -0
  155. package/package.json +2 -2
  156. package/src/IRandomGenerator.ts +4 -3
  157. package/src/factories/ExpressionFactory.ts +2 -2
  158. package/src/factories/LiteralFactory.ts +10 -3
  159. package/src/factories/MetadataCollection.ts +0 -1
  160. package/src/factories/MetadataCommentTagFactory.ts +583 -0
  161. package/src/factories/MetadataTypeTagFactory.ts +263 -0
  162. package/src/factories/NumericRangeFactory.ts +33 -0
  163. package/src/factories/ProtobufFactory.ts +27 -13
  164. package/src/factories/internal/metadata/emend_metadata_atomics.ts +6 -1
  165. package/src/factories/internal/metadata/emplace_metadata_alias.ts +0 -6
  166. package/src/factories/internal/metadata/emplace_metadata_object.ts +0 -1
  167. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +2 -1
  168. package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +3 -7
  169. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +13 -10
  170. package/src/functional/Namespace.ts +0 -16
  171. package/src/programmers/AssertProgrammer.ts +57 -21
  172. package/src/programmers/CheckerProgrammer.ts +43 -118
  173. package/src/programmers/FeatureProgrammer.ts +11 -33
  174. package/src/programmers/IsProgrammer.ts +52 -41
  175. package/src/programmers/RandomProgrammer.ts +206 -226
  176. package/src/programmers/ValidateProgrammer.ts +60 -21
  177. package/src/programmers/helpers/CloneJoiner.ts +57 -20
  178. package/src/programmers/helpers/ICheckEntry.ts +3 -2
  179. package/src/programmers/helpers/ProtobufUtil.ts +113 -17
  180. package/src/programmers/helpers/RandomJoiner.ts +11 -37
  181. package/src/programmers/helpers/RandomRanger.ts +16 -51
  182. package/src/programmers/helpers/UnionExplorer.ts +1 -20
  183. package/src/programmers/internal/application_alias.ts +0 -1
  184. package/src/programmers/internal/application_array.ts +32 -10
  185. package/src/programmers/internal/application_number.ts +76 -70
  186. package/src/programmers/internal/application_object.ts +0 -3
  187. package/src/programmers/internal/application_schema.ts +36 -18
  188. package/src/programmers/internal/application_string.ts +33 -27
  189. package/src/programmers/internal/check_array_length.ts +34 -28
  190. package/src/programmers/internal/check_bigint.ts +25 -118
  191. package/src/programmers/internal/check_dynamic_properties.ts +1 -2
  192. package/src/programmers/internal/check_number.ts +81 -261
  193. package/src/programmers/internal/check_string.ts +28 -39
  194. package/src/programmers/internal/check_template.ts +17 -1
  195. package/src/programmers/internal/check_union_array_like.ts +1 -16
  196. package/src/programmers/internal/feature_object_entries.ts +12 -18
  197. package/src/programmers/internal/random_custom.ts +3 -3
  198. package/src/programmers/json/JsonStringifyProgrammer.ts +25 -36
  199. package/src/programmers/misc/MiscCloneProgrammer.ts +10 -24
  200. package/src/programmers/{IsPruneProgrammer.ts → misc/MiscIsPruneProgrammer.ts} +7 -7
  201. package/src/programmers/misc/MiscPruneProgrammer.ts +8 -18
  202. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +34 -68
  203. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +153 -98
  204. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +6 -36
  205. package/src/schemas/json/IJsonSchema.ts +11 -38
  206. package/src/schemas/metadata/IMetadataAlias.ts +0 -2
  207. package/src/schemas/metadata/IMetadataProperty.ts +0 -2
  208. package/src/schemas/metadata/IMetadataTypeTag.ts +2 -0
  209. package/src/schemas/metadata/Metadata.ts +28 -42
  210. package/src/schemas/metadata/MetadataAlias.ts +0 -5
  211. package/src/schemas/metadata/MetadataArray.ts +21 -3
  212. package/src/schemas/metadata/MetadataAtomic.ts +42 -0
  213. package/src/schemas/metadata/MetadataProperty.ts +0 -5
  214. package/src/schemas/metadata/MetadataTuple.ts +5 -4
  215. package/src/tags/ExclusiveMaximum.ts +13 -8
  216. package/src/tags/ExclusiveMinimum.ts +13 -8
  217. package/src/tags/Format.ts +21 -20
  218. package/src/tags/MaxItems.ts +9 -8
  219. package/src/tags/MaxLength.ts +9 -8
  220. package/src/tags/Maximum.ts +13 -8
  221. package/src/tags/MinItems.ts +9 -8
  222. package/src/tags/MinLength.ts +9 -8
  223. package/src/tags/Minimum.ts +13 -8
  224. package/src/tags/MultipleOf.ts +15 -10
  225. package/src/tags/Pattern.ts +8 -8
  226. package/src/tags/TagBase.ts +18 -13
  227. package/src/tags/Type.ts +26 -29
  228. package/src/tags/index.ts +1 -0
  229. package/src/transformers/FileTransformer.ts +4 -4
  230. package/src/transformers/features/misc/MiscCreateIsPruneTransformer.ts +2 -2
  231. package/src/transformers/features/misc/MiscIsPruneTransformer.ts +2 -2
  232. package/src/typings/ProtobufAtomic.ts +19 -0
  233. package/lib/factories/MetadataTagFactory.d.ts +0 -6
  234. package/lib/factories/MetadataTagFactory.js +0 -312
  235. package/lib/factories/MetadataTagFactory.js.map +0 -1
  236. package/lib/factories/internal/metadata/iterate_metadata_type_tags.d.ts +0 -3
  237. package/lib/factories/internal/metadata/iterate_metadata_type_tags.js +0 -157
  238. package/lib/factories/internal/metadata/iterate_metadata_type_tags.js.map +0 -1
  239. package/lib/functional/$is_custom.d.ts +0 -2
  240. package/lib/functional/$is_custom.js +0 -13
  241. package/lib/functional/$is_custom.js.map +0 -1
  242. package/lib/functional/$is_date.d.ts +0 -1
  243. package/lib/functional/$is_date.js +0 -7
  244. package/lib/functional/$is_date.js.map +0 -1
  245. package/lib/functional/$is_datetime.d.ts +0 -1
  246. package/lib/functional/$is_datetime.js +0 -8
  247. package/lib/functional/$is_datetime.js.map +0 -1
  248. package/lib/functional/$is_email.d.ts +0 -1
  249. package/lib/functional/$is_email.js +0 -7
  250. package/lib/functional/$is_email.js.map +0 -1
  251. package/lib/functional/$is_ipv4.d.ts +0 -1
  252. package/lib/functional/$is_ipv4.js +0 -7
  253. package/lib/functional/$is_ipv4.js.map +0 -1
  254. package/lib/functional/$is_ipv6.d.ts +0 -1
  255. package/lib/functional/$is_ipv6.js +0 -7
  256. package/lib/functional/$is_ipv6.js.map +0 -1
  257. package/lib/functional/$is_url.d.ts +0 -1
  258. package/lib/functional/$is_url.js +0 -7
  259. package/lib/functional/$is_url.js.map +0 -1
  260. package/lib/functional/$is_uuid.d.ts +0 -1
  261. package/lib/functional/$is_uuid.js +0 -7
  262. package/lib/functional/$is_uuid.js.map +0 -1
  263. package/lib/programmers/IsPruneProgrammer.js.map +0 -1
  264. package/lib/programmers/internal/check_array_tags.js +0 -39
  265. package/lib/programmers/internal/check_array_tags.js.map +0 -1
  266. package/lib/programmers/internal/check_string_tags.d.ts +0 -1
  267. package/lib/programmers/internal/check_string_tags.js +0 -89
  268. package/lib/programmers/internal/check_string_tags.js.map +0 -1
  269. package/lib/programmers/internal/get_comment_tags.d.ts +0 -1
  270. package/lib/programmers/internal/get_comment_tags.js +0 -25
  271. package/lib/programmers/internal/get_comment_tags.js.map +0 -1
  272. package/lib/schemas/metadata/ICommentTag.d.ts +0 -4
  273. package/lib/schemas/metadata/ICommentTag.js.map +0 -1
  274. package/lib/schemas/metadata/IMetadataCommentTag.d.ts +0 -63
  275. package/lib/schemas/metadata/IMetadataCommentTag.js +0 -3
  276. package/lib/schemas/metadata/IMetadataCommentTag.js.map +0 -1
  277. package/src/factories/MetadataTagFactory.ts +0 -365
  278. package/src/factories/internal/metadata/iterate_metadata_type_tags.ts +0 -183
  279. package/src/functional/$is_custom.ts +0 -14
  280. package/src/functional/$is_date.ts +0 -3
  281. package/src/functional/$is_datetime.ts +0 -2
  282. package/src/functional/$is_email.ts +0 -4
  283. package/src/functional/$is_ipv4.ts +0 -4
  284. package/src/functional/$is_ipv6.ts +0 -4
  285. package/src/functional/$is_url.ts +0 -4
  286. package/src/functional/$is_uuid.ts +0 -4
  287. package/src/programmers/internal/check_array_tags.ts +0 -45
  288. package/src/programmers/internal/check_string_tags.ts +0 -67
  289. package/src/programmers/internal/get_comment_tags.ts +0 -23
  290. package/src/schemas/metadata/ICommentTag.ts +0 -4
  291. package/src/schemas/metadata/IMetadataCommentTag.ts +0 -112
  292. /package/lib/{programmers/internal/check_array_tags.d.ts → factories/MetadataCommentTagFactory.d.ts} +0 -0
@@ -8,11 +8,9 @@ import { StatementFactory } from "../../factories/StatementFactory";
8
8
  import { TypeFactory } from "../../factories/TypeFactory";
9
9
  import { ValueFactory } from "../../factories/ValueFactory";
10
10
 
11
- import { IJsDocTagInfo } from "../../schemas/metadata/IJsDocTagInfo";
12
- import { IMetadataCommentTag } from "../../schemas/metadata/IMetadataCommentTag";
13
11
  import { Metadata } from "../../schemas/metadata/Metadata";
14
12
  import { MetadataArray } from "../../schemas/metadata/MetadataArray";
15
- import { MetadataArrayType } from "../../schemas/metadata/MetadataArrayType";
13
+ import { MetadataAtomic } from "../../schemas/metadata/MetadataAtomic";
16
14
  import { MetadataObject } from "../../schemas/metadata/MetadataObject";
17
15
  import { MetadataTuple } from "../../schemas/metadata/MetadataTuple";
18
16
  import { MetadataTupleType } from "../../schemas/metadata/MetadataTupleType";
@@ -68,7 +66,7 @@ export namespace JsonStringifyProgrammer {
68
66
  collection
69
67
  .arrays()
70
68
  .filter((a) => a.recursive)
71
- .map((array, i) =>
69
+ .map((type, i) =>
72
70
  StatementFactory.constant(
73
71
  `${config.prefix}a${i}`,
74
72
  ts.factory.createArrowFunction(
@@ -81,7 +79,10 @@ export namespace JsonStringifyProgrammer {
81
79
  undefined,
82
80
  decode_array_inline(config)(importer)(
83
81
  ts.factory.createIdentifier("input"),
84
- array,
82
+ MetadataArray.create({
83
+ type,
84
+ tags: [],
85
+ }),
85
86
  {
86
87
  tracable: config.trace,
87
88
  source: "function",
@@ -215,7 +216,9 @@ export namespace JsonStringifyProgrammer {
215
216
  )
216
217
  if (AtomicPredicator.template(meta)) {
217
218
  const partial = Metadata.initialize();
218
- partial.atomics.push({ type: "string", tags: [] }),
219
+ partial.atomics.push(
220
+ MetadataAtomic.create({ type: "string", tags: [] }),
221
+ ),
219
222
  unions.push({
220
223
  type: "template literal",
221
224
  is: () =>
@@ -223,8 +226,6 @@ export namespace JsonStringifyProgrammer {
223
226
  input,
224
227
  partial,
225
228
  explore,
226
- [],
227
- [],
228
229
  ),
229
230
  value: () =>
230
231
  decode_atomic(project)(importer)(
@@ -247,15 +248,15 @@ export namespace JsonStringifyProgrammer {
247
248
  input,
248
249
  (() => {
249
250
  const partial = Metadata.initialize();
250
- partial.atomics.push({
251
- type: constant.type,
252
- tags: [],
253
- });
251
+ partial.atomics.push(
252
+ MetadataAtomic.create({
253
+ type: constant.type,
254
+ tags: [],
255
+ }),
256
+ );
254
257
  return partial;
255
258
  })(),
256
259
  explore,
257
- [],
258
- [],
259
260
  ),
260
261
  value: () =>
261
262
  decode_atomic(project)(importer)(
@@ -272,15 +273,15 @@ export namespace JsonStringifyProgrammer {
272
273
  input,
273
274
  (() => {
274
275
  const partial = Metadata.initialize();
275
- partial.atomics.push({
276
- type: "string",
277
- tags: [],
278
- });
276
+ partial.atomics.push(
277
+ MetadataAtomic.create({
278
+ type: "string",
279
+ tags: [],
280
+ }),
281
+ );
279
282
  return partial;
280
283
  })(),
281
284
  explore,
282
- [],
283
- [],
284
285
  ),
285
286
  value: () =>
286
287
  decode_constant_string(project)(importer)(
@@ -304,8 +305,6 @@ export namespace JsonStringifyProgrammer {
304
305
  return partial;
305
306
  })(),
306
307
  explore,
307
- [],
308
- [],
309
308
  ),
310
309
  value: () =>
311
310
  decode_atomic(project)(importer)(
@@ -333,8 +332,6 @@ export namespace JsonStringifyProgrammer {
333
332
  return partial;
334
333
  })(),
335
334
  explore,
336
- [],
337
- [],
338
335
  ),
339
336
  value: () =>
340
337
  decode_tuple(project)(config)(importer)(
@@ -534,23 +531,19 @@ export namespace JsonStringifyProgrammer {
534
531
  from: "array",
535
532
  })(input),
536
533
  )
537
- : decode_array_inline(config)(importer)(
538
- input,
539
- array.type,
540
- explore,
541
- );
534
+ : decode_array_inline(config)(importer)(input, array, explore);
542
535
 
543
536
  const decode_array_inline =
544
537
  (config: FeatureProgrammer.IConfig) =>
545
538
  (importer: FunctionImporter) =>
546
539
  (
547
540
  input: ts.Expression,
548
- array: MetadataArrayType,
541
+ array: MetadataArray,
549
542
  explore: FeatureProgrammer.IExplore,
550
543
  ) =>
551
544
  FeatureProgrammer.decode_array(config)(importer)(
552
545
  StringifyJoiner.array,
553
- )(input, array, explore, [], []);
546
+ )(input, array, explore);
554
547
 
555
548
  const decode_tuple =
556
549
  (project: IProject) =>
@@ -765,8 +758,6 @@ export namespace JsonStringifyProgrammer {
765
758
  input: ts.Expression,
766
759
  elements: T[],
767
760
  explore: FeatureProgrammer.IExplore,
768
- tags: IMetadataCommentTag[],
769
- jsDocTags: IJsDocTagInfo[],
770
761
  ) => ts.ArrowFunction,
771
762
  ) =>
772
763
  (
@@ -778,7 +769,7 @@ export namespace JsonStringifyProgrammer {
778
769
  (parameters: ts.ParameterDeclaration[]) =>
779
770
  (explore: FeatureProgrammer.IExplore) =>
780
771
  (input: ts.Expression): ts.ArrowFunction =>
781
- factory(parameters)(input, elements, explore, [], []);
772
+ factory(parameters)(input, elements, explore);
782
773
  if (elements.every((e) => e.type.recursive === false))
783
774
  ts.factory.createCallExpression(
784
775
  arrow([])(explore)(input),
@@ -921,8 +912,6 @@ export namespace JsonStringifyProgrammer {
921
912
  input,
922
913
  meta,
923
914
  explore,
924
- [],
925
- [],
926
915
  ),
927
916
  decoder: () => decode_object(importer),
928
917
  joiner: StringifyJoiner.object(importer),
@@ -7,11 +7,8 @@ import { MetadataFactory } from "../../factories/MetadataFactory";
7
7
  import { StatementFactory } from "../../factories/StatementFactory";
8
8
  import { TypeFactory } from "../../factories/TypeFactory";
9
9
 
10
- import { IJsDocTagInfo } from "../../schemas/metadata/IJsDocTagInfo";
11
- import { IMetadataCommentTag } from "../../schemas/metadata/IMetadataCommentTag";
12
10
  import { Metadata } from "../../schemas/metadata/Metadata";
13
11
  import { MetadataArray } from "../../schemas/metadata/MetadataArray";
14
- import { MetadataArrayType } from "../../schemas/metadata/MetadataArrayType";
15
12
  import { MetadataTuple } from "../../schemas/metadata/MetadataTuple";
16
13
  import { MetadataTupleType } from "../../schemas/metadata/MetadataTupleType";
17
14
 
@@ -49,7 +46,7 @@ export namespace MiscCloneProgrammer {
49
46
  collection
50
47
  .arrays()
51
48
  .filter((a) => a.recursive)
52
- .map((array, i) =>
49
+ .map((type, i) =>
53
50
  StatementFactory.constant(
54
51
  `${config.prefix}a${i}`,
55
52
  ts.factory.createArrowFunction(
@@ -62,7 +59,10 @@ export namespace MiscCloneProgrammer {
62
59
  undefined,
63
60
  decode_array_inline(config)(importer)(
64
61
  ts.factory.createIdentifier("input"),
65
- array,
62
+ MetadataArray.create({
63
+ type,
64
+ tags: [],
65
+ }),
66
66
  {
67
67
  tracable: config.trace,
68
68
  source: "function",
@@ -154,8 +154,6 @@ export namespace MiscCloneProgrammer {
154
154
  return partial;
155
155
  })(),
156
156
  explore,
157
- [],
158
- [],
159
157
  ),
160
158
  value: () =>
161
159
  decode_tuple(project)(config)(importer)(
@@ -284,26 +282,20 @@ export namespace MiscCloneProgrammer {
284
282
  from: "array",
285
283
  })(input),
286
284
  )
287
- : decode_array_inline(config)(importer)(
288
- input,
289
- array.type,
290
- explore,
291
- );
285
+ : decode_array_inline(config)(importer)(input, array, explore);
292
286
 
293
287
  const decode_array_inline =
294
288
  (config: FeatureProgrammer.IConfig) =>
295
289
  (importer: FunctionImporter) =>
296
290
  (
297
291
  input: ts.Expression,
298
- array: MetadataArrayType,
292
+ array: MetadataArray,
299
293
  explore: FeatureProgrammer.IExplore,
300
294
  ) =>
301
295
  FeatureProgrammer.decode_array(config)(importer)(CloneJoiner.array)(
302
296
  input,
303
297
  array,
304
298
  explore,
305
- [],
306
- [],
307
299
  );
308
300
 
309
301
  const decode_tuple =
@@ -505,7 +497,7 @@ export namespace MiscCloneProgrammer {
505
497
  success: ts.factory.createTrue(),
506
498
  failure: (input, expected) =>
507
499
  create_throw_error(importer)(expected)(input),
508
- })([])(input, sets, explore, [], []),
500
+ })([])(input, sets, explore),
509
501
  undefined,
510
502
  undefined,
511
503
  );
@@ -534,8 +526,6 @@ export namespace MiscCloneProgrammer {
534
526
  ...explore,
535
527
  postfix: `${explore.postfix}[0]`,
536
528
  },
537
- [],
538
- [],
539
529
  ),
540
530
  func(
541
531
  ts.factory.createElementAccessExpression(
@@ -547,8 +537,6 @@ export namespace MiscCloneProgrammer {
547
537
  ...explore,
548
538
  postfix: `${explore.postfix}[1]`,
549
539
  },
550
- [],
551
- [],
552
540
  ),
553
541
  );
554
542
  },
@@ -578,7 +566,7 @@ export namespace MiscCloneProgrammer {
578
566
  success: ts.factory.createTrue(),
579
567
  failure: (input, expected) =>
580
568
  create_throw_error(importer)(expected)(input),
581
- })([])(input, maps, explore, [], []),
569
+ })([])(input, maps, explore),
582
570
  undefined,
583
571
  undefined,
584
572
  );
@@ -637,8 +625,6 @@ export namespace MiscCloneProgrammer {
637
625
  input: ts.Expression,
638
626
  elements: T[],
639
627
  explore: FeatureProgrammer.IExplore,
640
- tags: IMetadataCommentTag[],
641
- jsDocTags: IJsDocTagInfo[],
642
628
  ) => ts.ArrowFunction,
643
629
  ) =>
644
630
  (
@@ -650,7 +636,7 @@ export namespace MiscCloneProgrammer {
650
636
  (parameters: ts.ParameterDeclaration[]) =>
651
637
  (explore: FeatureProgrammer.IExplore) =>
652
638
  (input: ts.Expression): ts.ArrowFunction =>
653
- factory(parameters)(input, elements, explore, [], []);
639
+ factory(parameters)(input, elements, explore);
654
640
  if (elements.every((e) => e.type.recursive === false))
655
641
  ts.factory.createCallExpression(
656
642
  arrow([])(explore)(input),
@@ -1,15 +1,15 @@
1
1
  import ts from "typescript";
2
2
 
3
- import { IdentifierFactory } from "../factories/IdentifierFactory";
4
- import { StatementFactory } from "../factories/StatementFactory";
5
- import { TypeFactory } from "../factories/TypeFactory";
3
+ import { IdentifierFactory } from "../../factories/IdentifierFactory";
4
+ import { StatementFactory } from "../../factories/StatementFactory";
5
+ import { TypeFactory } from "../../factories/TypeFactory";
6
6
 
7
- import { IProject } from "../transformers/IProject";
7
+ import { IProject } from "../../transformers/IProject";
8
8
 
9
- import { IsProgrammer } from "./IsProgrammer";
10
- import { MiscPruneProgrammer } from "./misc/MiscPruneProgrammer";
9
+ import { IsProgrammer } from "../IsProgrammer";
10
+ import { MiscPruneProgrammer } from "./MiscPruneProgrammer";
11
11
 
12
- export namespace IsPruneProgrammer {
12
+ export namespace MiscIsPruneProgrammer {
13
13
  export const write =
14
14
  (project: IProject) =>
15
15
  (modulo: ts.LeftHandSideExpression) =>
@@ -7,11 +7,8 @@ import { MetadataFactory } from "../../factories/MetadataFactory";
7
7
  import { StatementFactory } from "../../factories/StatementFactory";
8
8
  import { TypeFactory } from "../../factories/TypeFactory";
9
9
 
10
- import { IJsDocTagInfo } from "../../schemas/metadata/IJsDocTagInfo";
11
- import { IMetadataCommentTag } from "../../schemas/metadata/IMetadataCommentTag";
12
10
  import { Metadata } from "../../schemas/metadata/Metadata";
13
11
  import { MetadataArray } from "../../schemas/metadata/MetadataArray";
14
- import { MetadataArrayType } from "../../schemas/metadata/MetadataArrayType";
15
12
  import { MetadataTuple } from "../../schemas/metadata/MetadataTuple";
16
13
  import { MetadataTupleType } from "../../schemas/metadata/MetadataTupleType";
17
14
 
@@ -49,7 +46,7 @@ export namespace MiscPruneProgrammer {
49
46
  collection
50
47
  .arrays()
51
48
  .filter((a) => a.recursive)
52
- .map((array, i) =>
49
+ .map((type, i) =>
53
50
  StatementFactory.constant(
54
51
  `${config.prefix}a${i}`,
55
52
  ts.factory.createArrowFunction(
@@ -62,7 +59,10 @@ export namespace MiscPruneProgrammer {
62
59
  undefined,
63
60
  decode_array_inline(config)(importer)(
64
61
  ts.factory.createIdentifier("input"),
65
- array,
62
+ MetadataArray.create({
63
+ type,
64
+ tags: [],
65
+ }),
66
66
  {
67
67
  tracable: config.trace,
68
68
  source: "function",
@@ -146,8 +146,6 @@ export namespace MiscPruneProgrammer {
146
146
  return partial;
147
147
  })(),
148
148
  explore,
149
- [],
150
- [],
151
149
  ),
152
150
  value: () =>
153
151
  decode_tuple(project)(config)(importer)(
@@ -255,26 +253,20 @@ export namespace MiscPruneProgrammer {
255
253
  from: "array",
256
254
  })(input),
257
255
  )
258
- : decode_array_inline(config)(importer)(
259
- input,
260
- array.type,
261
- explore,
262
- );
256
+ : decode_array_inline(config)(importer)(input, array, explore);
263
257
 
264
258
  const decode_array_inline =
265
259
  (config: FeatureProgrammer.IConfig) =>
266
260
  (importer: FunctionImporter) =>
267
261
  (
268
262
  input: ts.Expression,
269
- array: MetadataArrayType,
263
+ array: MetadataArray,
270
264
  explore: FeatureProgrammer.IExplore,
271
265
  ): ts.Expression =>
272
266
  FeatureProgrammer.decode_array(config)(importer)(PruneJoiner.array)(
273
267
  input,
274
268
  array,
275
269
  explore,
276
- [],
277
- [],
278
270
  );
279
271
 
280
272
  const decode_tuple =
@@ -414,8 +406,6 @@ export namespace MiscPruneProgrammer {
414
406
  input: ts.Expression,
415
407
  elements: T[],
416
408
  explore: FeatureProgrammer.IExplore,
417
- tags: IMetadataCommentTag[],
418
- jsDocTags: IJsDocTagInfo[],
419
409
  ) => ts.ArrowFunction,
420
410
  ) =>
421
411
  (
@@ -427,7 +417,7 @@ export namespace MiscPruneProgrammer {
427
417
  (parameters: ts.ParameterDeclaration[]) =>
428
418
  (explore: FeatureProgrammer.IExplore) =>
429
419
  (input: ts.Expression): ts.ArrowFunction =>
430
- factory(parameters)(input, elements, explore, [], []);
420
+ factory(parameters)(input, elements, explore);
431
421
  if (elements.every((e) => e.type.recursive === false))
432
422
  ts.factory.createCallExpression(
433
423
  arrow([])(explore)(input),
@@ -8,7 +8,6 @@ import { ProtobufFactory } from "../../factories/ProtobufFactory";
8
8
  import { StatementFactory } from "../../factories/StatementFactory";
9
9
  import { TypeFactory } from "../../factories/TypeFactory";
10
10
 
11
- import { IMetadataCommentTag } from "../../schemas/metadata/IMetadataCommentTag";
12
11
  import { Metadata } from "../../schemas/metadata/Metadata";
13
12
  import { MetadataArray } from "../../schemas/metadata/MetadataArray";
14
13
  import { MetadataObject } from "../../schemas/metadata/MetadataObject";
@@ -16,7 +15,7 @@ import { MetadataProperty } from "../../schemas/metadata/MetadataProperty";
16
15
 
17
16
  import { IProject } from "../../transformers/IProject";
18
17
 
19
- import { Atomic } from "../../typings/Atomic";
18
+ import { ProtobufAtomic } from "../../typings/ProtobufAtomic";
20
19
 
21
20
  import { FunctionImporter } from "../helpers/FunctionImporeter";
22
21
  import { ProtobufUtil } from "../helpers/ProtobufUtil";
@@ -166,9 +165,8 @@ export namespace ProtobufDecodeProgrammer {
166
165
  ts.factory.createIdentifier(props.output),
167
166
  )(p.key.getSoleLiteral()!),
168
167
  p.value,
169
- p.tags,
170
168
  );
171
- i += p.value.binarySize();
169
+ i += ProtobufUtil.size(p.value);
172
170
  return clause;
173
171
  })
174
172
  .flat();
@@ -280,7 +278,6 @@ export namespace ProtobufDecodeProgrammer {
280
278
  (
281
279
  accessor: ts.ElementAccessExpression | ts.PropertyAccessExpression,
282
280
  meta: Metadata,
283
- tags: IMetadataCommentTag[],
284
281
  ): ts.CaseClause[] => {
285
282
  const clauses: ts.CaseClause[] = [];
286
283
  const emplace =
@@ -320,20 +317,15 @@ export namespace ProtobufDecodeProgrammer {
320
317
 
321
318
  const required: boolean = meta.isRequired() && !meta.nullable;
322
319
  for (const atomic of ProtobufUtil.getAtomics(meta))
323
- emplace(atomic)(decode_atomic(atomic, tags));
320
+ emplace(atomic)(decode_atomic(meta)(atomic));
324
321
  if (meta.natives.length) emplace("bytes")(decode_bytes("bytes"));
325
322
  for (const array of meta.arrays)
326
323
  emplace(`Array<${array.type.value.getName()}>`)(
327
- decode_array(accessor, array, required, tags),
324
+ decode_array(accessor, array, required),
328
325
  );
329
326
  for (const map of meta.maps)
330
327
  emplace(`Map<string, ${map.value.getName()}>`)(
331
- decode_map(project)(importer)(
332
- accessor,
333
- map,
334
- required,
335
- tags,
336
- ),
328
+ decode_map(project)(importer)(accessor, map, required),
337
329
  );
338
330
  for (const obj of meta.objects)
339
331
  emplace(obj.name)(
@@ -348,49 +340,31 @@ export namespace ProtobufDecodeProgrammer {
348
340
  return clauses;
349
341
  };
350
342
 
351
- const decode_atomic = (
352
- atomic: Atomic.Literal,
353
- tags: IMetadataCommentTag[],
354
- ): ts.Expression => {
355
- if (atomic === "string") return decode_bytes("string");
356
- const method =
357
- atomic === "bigint"
358
- ? tags.find((t) => t.kind === "type" && t.value === "uint64")
359
- ? "uint64"
360
- : "int64"
361
- : atomic === "number"
362
- ? (() => {
363
- const type = tags.find((t) => t.kind === "type");
364
- if (type === undefined) return "double";
365
- return type.value === "int" || type.value === "int32"
366
- ? "int32"
367
- : type.value === "uint" || type.value === "uint32"
368
- ? "uint32"
369
- : type.value === "int64"
370
- ? "int64"
371
- : type.value === "uint64"
372
- ? "uint64"
373
- : type.value === "float"
374
- ? "float"
375
- : "double";
376
- })()
377
- : "bool";
378
- const call = ts.factory.createCallExpression(
379
- IdentifierFactory.access(ts.factory.createIdentifier("reader"))(
380
- method,
381
- ),
382
- undefined,
383
- undefined,
384
- );
385
- return atomic === "number" &&
386
- (method === "int64" || method === "uint64")
387
- ? ts.factory.createCallExpression(
388
- ts.factory.createIdentifier("Number"),
389
- undefined,
390
- [call],
391
- )
392
- : call;
393
- };
343
+ const decode_atomic =
344
+ (meta: Metadata) =>
345
+ (atomic: ProtobufAtomic): ts.Expression => {
346
+ if (atomic === "string") return decode_bytes("string");
347
+
348
+ const call: ts.CallExpression = ts.factory.createCallExpression(
349
+ IdentifierFactory.access(ts.factory.createIdentifier("reader"))(
350
+ atomic,
351
+ ),
352
+ undefined,
353
+ undefined,
354
+ );
355
+ if (atomic !== "int64" && atomic !== "uint64") return call;
356
+
357
+ const isNumber: boolean = ProtobufUtil.getNumbers(meta).some(
358
+ (n) => n === atomic,
359
+ );
360
+ return isNumber
361
+ ? ts.factory.createCallExpression(
362
+ ts.factory.createIdentifier("Number"),
363
+ undefined,
364
+ [call],
365
+ )
366
+ : call;
367
+ };
394
368
 
395
369
  const decode_bytes = (method: "bytes" | "string"): ts.Expression =>
396
370
  ts.factory.createCallExpression(
@@ -405,7 +379,6 @@ export namespace ProtobufDecodeProgrammer {
405
379
  accessor: ts.ElementAccessExpression | ts.PropertyAccessExpression,
406
380
  array: MetadataArray,
407
381
  required: boolean,
408
- tags: IMetadataCommentTag[],
409
382
  ): ts.Statement[] => {
410
383
  const statements: Array<ts.Expression | ts.Statement> = [];
411
384
  if (required === false)
@@ -423,7 +396,7 @@ export namespace ProtobufDecodeProgrammer {
423
396
  );
424
397
  const atomics = ProtobufUtil.getAtomics(array.type.value);
425
398
  const decoder = atomics.length
426
- ? () => decode_atomic(atomics[0]!, tags)
399
+ ? () => decode_atomic(array.type.value)(atomics[0]!)
427
400
  : array.type.value.natives.length
428
401
  ? () => decode_bytes("bytes")
429
402
  : array.type.value.objects.length
@@ -556,7 +529,7 @@ export namespace ProtobufDecodeProgrammer {
556
529
  ts.factory.createToken(ts.SyntaxKind.EqualsToken),
557
530
  ts.factory.createIdentifier("entry.value"),
558
531
  ),
559
- })(top, required, top.tags);
532
+ })(top, required);
560
533
  };
561
534
 
562
535
  const decode_map =
@@ -566,7 +539,6 @@ export namespace ProtobufDecodeProgrammer {
566
539
  accessor: ts.ElementAccessExpression | ts.PropertyAccessExpression,
567
540
  map: Metadata.Entry,
568
541
  required: boolean,
569
- tags: IMetadataCommentTag[],
570
542
  ): ts.Statement[] =>
571
543
  decode_entry(project)(importer)({
572
544
  initializer: () =>
@@ -593,7 +565,7 @@ export namespace ProtobufDecodeProgrammer {
593
565
  ts.factory.createIdentifier("entry.value"),
594
566
  ],
595
567
  ),
596
- })(map, required, tags);
568
+ })(map, required);
597
569
 
598
570
  const decode_entry =
599
571
  (project: IProject) =>
@@ -602,11 +574,7 @@ export namespace ProtobufDecodeProgrammer {
602
574
  initializer: () => ts.Expression;
603
575
  setter: () => ts.Expression;
604
576
  }) =>
605
- (
606
- map: Metadata.Entry,
607
- required: boolean,
608
- tags: IMetadataCommentTag[],
609
- ): ts.Statement[] => {
577
+ (map: Metadata.Entry, required: boolean): ts.Statement[] => {
610
578
  const statements: ts.Statement[] = [
611
579
  ...(required
612
580
  ? []
@@ -646,14 +614,12 @@ export namespace ProtobufDecodeProgrammer {
646
614
  key: MetadataFactory.soleLiteral("key"),
647
615
  value: map.key,
648
616
  description: null,
649
- tags: [],
650
617
  jsDocTags: [],
651
618
  }),
652
619
  MetadataProperty.create({
653
620
  key: MetadataFactory.soleLiteral("value"),
654
621
  value: map.value,
655
622
  description: null,
656
- tags,
657
623
  jsDocTags: [],
658
624
  }),
659
625
  ]),