typia 5.0.0-dev.20230827 → 5.0.0-dev.20230829

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 (277) hide show
  1. package/lib/executable/TypiaGenerateWizard.js +1 -1
  2. package/lib/executable/TypiaGenerateWizard.js.map +1 -1
  3. package/lib/executable/TypiaSetupWizard.js +1 -1
  4. package/lib/executable/TypiaSetupWizard.js.map +1 -1
  5. package/lib/executable/setup/PackageManager.js +1 -1
  6. package/lib/executable/setup/PackageManager.js.map +1 -1
  7. package/lib/executable/setup/PluginConfigurator.js +2 -2
  8. package/lib/executable/setup/PluginConfigurator.js.map +1 -1
  9. package/lib/factories/ExpressionFactory.js +2 -2
  10. package/lib/factories/ExpressionFactory.js.map +1 -1
  11. package/lib/factories/JsonMetadataFactory.d.ts +7 -0
  12. package/lib/factories/JsonMetadataFactory.js +38 -0
  13. package/lib/factories/JsonMetadataFactory.js.map +1 -0
  14. package/lib/factories/LiteralFactory.js +1 -1
  15. package/lib/factories/LiteralFactory.js.map +1 -1
  16. package/lib/factories/MetadataCollection.js +0 -1
  17. package/lib/factories/MetadataCollection.js.map +1 -1
  18. package/lib/factories/MetadataCommentTagFactory.js +129 -118
  19. package/lib/factories/MetadataCommentTagFactory.js.map +1 -1
  20. package/lib/factories/MetadataFactory.d.ts +22 -2
  21. package/lib/factories/MetadataFactory.js +248 -17
  22. package/lib/factories/MetadataFactory.js.map +1 -1
  23. package/lib/factories/MetadataTypeTagFactory.d.ts +3 -2
  24. package/lib/factories/MetadataTypeTagFactory.js +246 -173
  25. package/lib/factories/MetadataTypeTagFactory.js.map +1 -1
  26. package/lib/factories/ProtobufFactory.js +112 -97
  27. package/lib/factories/ProtobufFactory.js.map +1 -1
  28. package/lib/factories/TypeFactory.d.ts +0 -1
  29. package/lib/factories/TypeFactory.js +0 -5
  30. package/lib/factories/TypeFactory.js.map +1 -1
  31. package/lib/factories/internal/metadata/emplace_metadata_alias.d.ts +1 -1
  32. package/lib/factories/internal/metadata/emplace_metadata_alias.js +20 -7
  33. package/lib/factories/internal/metadata/emplace_metadata_alias.js.map +1 -1
  34. package/lib/factories/internal/metadata/emplace_metadata_array_type.d.ts +1 -1
  35. package/lib/factories/internal/metadata/emplace_metadata_array_type.js +20 -7
  36. package/lib/factories/internal/metadata/emplace_metadata_array_type.js.map +1 -1
  37. package/lib/factories/internal/metadata/emplace_metadata_object.d.ts +1 -1
  38. package/lib/factories/internal/metadata/emplace_metadata_object.js +100 -84
  39. package/lib/factories/internal/metadata/emplace_metadata_object.js.map +1 -1
  40. package/lib/factories/internal/metadata/emplace_metadata_tuple.d.ts +1 -1
  41. package/lib/factories/internal/metadata/emplace_metadata_tuple.js +34 -21
  42. package/lib/factories/internal/metadata/emplace_metadata_tuple.js.map +1 -1
  43. package/lib/factories/internal/metadata/explore_metadata.d.ts +1 -1
  44. package/lib/factories/internal/metadata/explore_metadata.js +12 -12
  45. package/lib/factories/internal/metadata/explore_metadata.js.map +1 -1
  46. package/lib/factories/internal/metadata/iterate_metadata.d.ts +1 -1
  47. package/lib/factories/internal/metadata/iterate_metadata.js +39 -19
  48. package/lib/factories/internal/metadata/iterate_metadata.js.map +1 -1
  49. package/lib/factories/internal/metadata/iterate_metadata_alias.d.ts +1 -1
  50. package/lib/factories/internal/metadata/iterate_metadata_alias.js +12 -10
  51. package/lib/factories/internal/metadata/iterate_metadata_alias.js.map +1 -1
  52. package/lib/factories/internal/metadata/iterate_metadata_array.d.ts +1 -1
  53. package/lib/factories/internal/metadata/iterate_metadata_array.js +11 -9
  54. package/lib/factories/internal/metadata/iterate_metadata_array.js.map +1 -1
  55. package/lib/factories/internal/metadata/iterate_metadata_collection.d.ts +2 -1
  56. package/lib/factories/internal/metadata/iterate_metadata_collection.js +47 -45
  57. package/lib/factories/internal/metadata/iterate_metadata_collection.js.map +1 -1
  58. package/lib/factories/internal/metadata/iterate_metadata_comment_tags.d.ts +2 -1
  59. package/lib/factories/internal/metadata/iterate_metadata_comment_tags.js +16 -20
  60. package/lib/factories/internal/metadata/iterate_metadata_comment_tags.js.map +1 -1
  61. package/lib/factories/internal/metadata/iterate_metadata_intersection.d.ts +1 -1
  62. package/lib/factories/internal/metadata/iterate_metadata_intersection.js +145 -135
  63. package/lib/factories/internal/metadata/iterate_metadata_intersection.js.map +1 -1
  64. package/lib/factories/internal/metadata/iterate_metadata_map.d.ts +1 -1
  65. package/lib/factories/internal/metadata/iterate_metadata_map.js +28 -15
  66. package/lib/factories/internal/metadata/iterate_metadata_map.js.map +1 -1
  67. package/lib/factories/internal/metadata/iterate_metadata_object.d.ts +1 -1
  68. package/lib/factories/internal/metadata/iterate_metadata_object.js +16 -14
  69. package/lib/factories/internal/metadata/iterate_metadata_object.js.map +1 -1
  70. package/lib/factories/internal/metadata/iterate_metadata_resolve.d.ts +1 -1
  71. package/lib/factories/internal/metadata/iterate_metadata_resolve.js +28 -15
  72. package/lib/factories/internal/metadata/iterate_metadata_resolve.js.map +1 -1
  73. package/lib/factories/internal/metadata/iterate_metadata_set.d.ts +1 -1
  74. package/lib/factories/internal/metadata/iterate_metadata_set.js +24 -11
  75. package/lib/factories/internal/metadata/iterate_metadata_set.js.map +1 -1
  76. package/lib/factories/internal/metadata/iterate_metadata_template.d.ts +1 -1
  77. package/lib/factories/internal/metadata/iterate_metadata_template.js +28 -15
  78. package/lib/factories/internal/metadata/iterate_metadata_template.js.map +1 -1
  79. package/lib/factories/internal/metadata/iterate_metadata_tuple.d.ts +1 -1
  80. package/lib/factories/internal/metadata/iterate_metadata_tuple.js +11 -9
  81. package/lib/factories/internal/metadata/iterate_metadata_tuple.js.map +1 -1
  82. package/lib/factories/internal/metadata/iterate_metadata_union.d.ts +1 -1
  83. package/lib/factories/internal/metadata/iterate_metadata_union.js +20 -7
  84. package/lib/factories/internal/metadata/iterate_metadata_union.js.map +1 -1
  85. package/lib/programmers/CheckerProgrammer.js +13 -8
  86. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  87. package/lib/programmers/FeatureProgrammer.d.ts +1 -1
  88. package/lib/programmers/FeatureProgrammer.js +1 -1
  89. package/lib/programmers/FeatureProgrammer.js.map +1 -1
  90. package/lib/programmers/IsProgrammer.js +1 -1
  91. package/lib/programmers/IsProgrammer.js.map +1 -1
  92. package/lib/programmers/RandomProgrammer.js +9 -4
  93. package/lib/programmers/RandomProgrammer.js.map +1 -1
  94. package/lib/programmers/TypiaProgrammer.js +58 -28
  95. package/lib/programmers/TypiaProgrammer.js.map +1 -1
  96. package/lib/programmers/helpers/ProtobufUtil.js +1 -1
  97. package/lib/programmers/helpers/ProtobufUtil.js.map +1 -1
  98. package/lib/programmers/internal/application_escaped.d.ts +4 -0
  99. package/lib/programmers/internal/{application_resolved.js → application_escaped.js} +4 -4
  100. package/lib/programmers/internal/application_escaped.js.map +1 -0
  101. package/lib/programmers/internal/application_schema.js +5 -5
  102. package/lib/programmers/internal/application_schema.js.map +1 -1
  103. package/lib/programmers/json/JsonApplicationProgrammer.js +5 -1
  104. package/lib/programmers/json/JsonApplicationProgrammer.js.map +1 -1
  105. package/lib/programmers/json/JsonAssertParseProgrammer.js +2 -0
  106. package/lib/programmers/json/JsonAssertParseProgrammer.js.map +1 -1
  107. package/lib/programmers/json/JsonIsParseProgrammer.js +2 -0
  108. package/lib/programmers/json/JsonIsParseProgrammer.js.map +1 -1
  109. package/lib/programmers/json/JsonStringifyProgrammer.js +20 -62
  110. package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
  111. package/lib/programmers/json/JsonValidateParseProgrammer.js +2 -0
  112. package/lib/programmers/json/JsonValidateParseProgrammer.js.map +1 -1
  113. package/lib/programmers/misc/MiscCloneProgrammer.js +13 -8
  114. package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
  115. package/lib/programmers/misc/MiscLiteralsProgrammer.js +10 -5
  116. package/lib/programmers/misc/MiscLiteralsProgrammer.js.map +1 -1
  117. package/lib/programmers/misc/MiscPruneProgrammer.js +13 -8
  118. package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
  119. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js +21 -1
  120. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js.map +1 -1
  121. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js +11 -1
  122. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js.map +1 -1
  123. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js +22 -1
  124. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js.map +1 -1
  125. package/lib/schemas/metadata/Metadata.js +4 -4
  126. package/lib/schemas/metadata/Metadata.js.map +1 -1
  127. package/lib/transform.d.ts +2 -1
  128. package/lib/transform.js +11 -3
  129. package/lib/transform.js.map +1 -1
  130. package/lib/transformers/CallExpressionTransformer.d.ts +1 -1
  131. package/lib/transformers/CallExpressionTransformer.js +2 -1
  132. package/lib/transformers/CallExpressionTransformer.js.map +1 -1
  133. package/lib/transformers/FileTransformer.js +18 -8
  134. package/lib/transformers/FileTransformer.js.map +1 -1
  135. package/lib/transformers/IProject.d.ts +3 -0
  136. package/lib/transformers/NodeTransformer.d.ts +1 -1
  137. package/lib/transformers/TransformerError.d.ts +12 -0
  138. package/lib/transformers/TransformerError.js +66 -0
  139. package/lib/transformers/TransformerError.js.map +1 -0
  140. package/lib/transformers/features/AssertTransformer.d.ts +1 -0
  141. package/lib/transformers/features/CreateAssertTransformer.d.ts +1 -0
  142. package/lib/transformers/features/CreateIsTransformer.d.ts +1 -0
  143. package/lib/transformers/features/CreateRandomTransformer.js +9 -4
  144. package/lib/transformers/features/CreateRandomTransformer.js.map +1 -1
  145. package/lib/transformers/features/CreateValidateTransformer.d.ts +1 -0
  146. package/lib/transformers/features/IsTransformer.d.ts +1 -0
  147. package/lib/transformers/features/RandomTransformer.js +9 -4
  148. package/lib/transformers/features/RandomTransformer.js.map +1 -1
  149. package/lib/transformers/features/ValidateTransformer.d.ts +1 -0
  150. package/lib/transformers/features/json/JsonApplicationTransformer.js +79 -19
  151. package/lib/transformers/features/json/JsonApplicationTransformer.js.map +1 -1
  152. package/lib/transformers/features/json/JsonAssertParseTransformer.d.ts +1 -0
  153. package/lib/transformers/features/json/JsonAssertStringifyTransformer.d.ts +1 -0
  154. package/lib/transformers/features/json/JsonCreateAssertParseTransformer.d.ts +1 -0
  155. package/lib/transformers/features/json/JsonCreateAssertStringifyTransformer.d.ts +1 -0
  156. package/lib/transformers/features/json/JsonCreateIsParseTransformer.d.ts +1 -0
  157. package/lib/transformers/features/json/JsonCreateIsStringifyTransformer.d.ts +1 -0
  158. package/lib/transformers/features/json/JsonCreateStringifyTransformer.d.ts +1 -0
  159. package/lib/transformers/features/json/JsonCreateValidateParseTransformer.d.ts +1 -0
  160. package/lib/transformers/features/json/JsonCreateValidateStringifyProgrammer.d.ts +1 -0
  161. package/lib/transformers/features/json/JsonIsParseTransformer.d.ts +1 -0
  162. package/lib/transformers/features/json/JsonIsStringifyTransformer.d.ts +1 -0
  163. package/lib/transformers/features/json/JsonStringifyTransformer.d.ts +1 -0
  164. package/lib/transformers/features/json/JsonValidateParseTransformer.d.ts +1 -0
  165. package/lib/transformers/features/json/JsonValidateStringifyTransformer.d.ts +1 -0
  166. package/lib/transformers/features/misc/MetadataTransformer.js +13 -5
  167. package/lib/transformers/features/misc/MetadataTransformer.js.map +1 -1
  168. package/lib/transformers/features/misc/MiscAssertCloneTransformer.d.ts +1 -0
  169. package/lib/transformers/features/misc/MiscAssertPruneTransformer.d.ts +1 -0
  170. package/lib/transformers/features/misc/MiscCloneTransformer.d.ts +1 -0
  171. package/lib/transformers/features/misc/MiscCreateAssertCloneTransformer.d.ts +1 -0
  172. package/lib/transformers/features/misc/MiscCreateAssertPruneTransformer.d.ts +1 -0
  173. package/lib/transformers/features/misc/MiscCreateCloneTransformer.d.ts +1 -0
  174. package/lib/transformers/features/misc/MiscCreateIsCloneTransformer.d.ts +1 -0
  175. package/lib/transformers/features/misc/MiscCreateIsPruneTransformer.d.ts +1 -0
  176. package/lib/transformers/features/misc/MiscCreatePruneTransformer.d.ts +1 -0
  177. package/lib/transformers/features/misc/MiscCreateValidateCloneTransformer.d.ts +1 -0
  178. package/lib/transformers/features/misc/MiscCreateValidatePruneTransformer.d.ts +1 -0
  179. package/lib/transformers/features/misc/MiscIsCloneTransformer.d.ts +1 -0
  180. package/lib/transformers/features/misc/MiscIsPruneTransformer.d.ts +1 -0
  181. package/lib/transformers/features/misc/MiscLiteralsTransformer.js +9 -4
  182. package/lib/transformers/features/misc/MiscLiteralsTransformer.js.map +1 -1
  183. package/lib/transformers/features/misc/MiscPruneTransformer.d.ts +1 -0
  184. package/lib/transformers/features/misc/MiscValidateCloneTransformer.d.ts +1 -0
  185. package/lib/transformers/features/misc/MiscValidatePruneTransformer.d.ts +1 -0
  186. package/lib/transformers/features/protobuf/CreateProtobufAssertDecodeTransformer.d.ts +1 -0
  187. package/lib/transformers/features/protobuf/CreateProtobufAssertEncodeTransformer.d.ts +1 -0
  188. package/lib/transformers/features/protobuf/CreateProtobufDecodeTransformer.d.ts +1 -0
  189. package/lib/transformers/features/protobuf/CreateProtobufEncodeTransformer.d.ts +1 -0
  190. package/lib/transformers/features/protobuf/CreateProtobufIsDecodeTransformer.d.ts +1 -0
  191. package/lib/transformers/features/protobuf/CreateProtobufIsEncodeTransformer.d.ts +1 -0
  192. package/lib/transformers/features/protobuf/CreateProtobufValidateDecodeTransformer.d.ts +1 -0
  193. package/lib/transformers/features/protobuf/CreateProtobufValidateEncodeTransformer.d.ts +1 -0
  194. package/lib/transformers/features/protobuf/ProtobufAssertDecodeTransformer.d.ts +1 -0
  195. package/lib/transformers/features/protobuf/ProtobufAssertEncodeTransformer.d.ts +1 -0
  196. package/lib/transformers/features/protobuf/ProtobufDecodeTransformer.d.ts +1 -0
  197. package/lib/transformers/features/protobuf/ProtobufEncodeTransformer.d.ts +1 -0
  198. package/lib/transformers/features/protobuf/ProtobufIsDecodeTransformer.d.ts +1 -0
  199. package/lib/transformers/features/protobuf/ProtobufIsEncodeTransformer.d.ts +1 -0
  200. package/lib/transformers/features/protobuf/ProtobufMessageTransformer.js +9 -2
  201. package/lib/transformers/features/protobuf/ProtobufMessageTransformer.js.map +1 -1
  202. package/lib/transformers/features/protobuf/ProtobufValidateDecodeTransformer.d.ts +1 -0
  203. package/lib/transformers/features/protobuf/ProtobufValidateEncodeTransformer.d.ts +1 -0
  204. package/lib/transformers/internal/GenericTransformer.js +17 -4
  205. package/lib/transformers/internal/GenericTransformer.js.map +1 -1
  206. package/lib/typings/ValidationPipe.d.ts +7 -0
  207. package/lib/typings/ValidationPipe.js +3 -0
  208. package/lib/typings/ValidationPipe.js.map +1 -0
  209. package/package.json +5 -1
  210. package/src/executable/TypiaGenerateWizard.ts +1 -1
  211. package/src/executable/TypiaSetupWizard.ts +1 -1
  212. package/src/executable/setup/PackageManager.ts +1 -1
  213. package/src/executable/setup/PluginConfigurator.ts +2 -2
  214. package/src/factories/ExpressionFactory.ts +2 -2
  215. package/src/factories/JsonMetadataFactory.ts +43 -0
  216. package/src/factories/LiteralFactory.ts +2 -1
  217. package/src/factories/MetadataCollection.ts +0 -5
  218. package/src/factories/MetadataCommentTagFactory.ts +130 -84
  219. package/src/factories/MetadataFactory.ts +175 -7
  220. package/src/factories/MetadataTypeTagFactory.ts +191 -141
  221. package/src/factories/ProtobufFactory.ts +92 -102
  222. package/src/factories/TypeFactory.ts +0 -5
  223. package/src/factories/internal/metadata/emplace_metadata_alias.ts +12 -5
  224. package/src/factories/internal/metadata/emplace_metadata_array_type.ts +12 -5
  225. package/src/factories/internal/metadata/emplace_metadata_object.ts +20 -5
  226. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +12 -2
  227. package/src/factories/internal/metadata/explore_metadata.ts +5 -11
  228. package/src/factories/internal/metadata/iterate_metadata.ts +44 -24
  229. package/src/factories/internal/metadata/iterate_metadata_alias.ts +7 -2
  230. package/src/factories/internal/metadata/iterate_metadata_array.ts +7 -2
  231. package/src/factories/internal/metadata/iterate_metadata_collection.ts +30 -29
  232. package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +21 -22
  233. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +33 -17
  234. package/src/factories/internal/metadata/iterate_metadata_map.ts +20 -4
  235. package/src/factories/internal/metadata/iterate_metadata_object.ts +2 -1
  236. package/src/factories/internal/metadata/iterate_metadata_resolve.ts +15 -12
  237. package/src/factories/internal/metadata/iterate_metadata_set.ts +11 -2
  238. package/src/factories/internal/metadata/iterate_metadata_template.ts +12 -3
  239. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +7 -2
  240. package/src/factories/internal/metadata/iterate_metadata_union.ts +10 -7
  241. package/src/programmers/CheckerProgrammer.ts +8 -2
  242. package/src/programmers/FeatureProgrammer.ts +4 -1
  243. package/src/programmers/IsProgrammer.ts +1 -1
  244. package/src/programmers/RandomProgrammer.ts +18 -17
  245. package/src/programmers/TypiaProgrammer.ts +27 -2
  246. package/src/programmers/helpers/ProtobufUtil.ts +1 -1
  247. package/src/programmers/internal/{application_resolved.ts → application_escaped.ts} +1 -1
  248. package/src/programmers/internal/application_schema.ts +5 -5
  249. package/src/programmers/json/JsonApplicationProgrammer.ts +6 -3
  250. package/src/programmers/json/JsonAssertParseProgrammer.ts +7 -2
  251. package/src/programmers/json/JsonIsParseProgrammer.ts +7 -2
  252. package/src/programmers/json/JsonStringifyProgrammer.ts +7 -37
  253. package/src/programmers/json/JsonValidateParseProgrammer.ts +7 -2
  254. package/src/programmers/json/JsonValidateStringifyProgrammer.ts +1 -1
  255. package/src/programmers/misc/MiscCloneProgrammer.ts +14 -11
  256. package/src/programmers/misc/MiscLiteralsProgrammer.ts +11 -6
  257. package/src/programmers/misc/MiscPruneProgrammer.ts +8 -2
  258. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +17 -1
  259. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +15 -1
  260. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +18 -1
  261. package/src/schemas/metadata/Metadata.ts +4 -4
  262. package/src/transform.ts +13 -5
  263. package/src/transformers/CallExpressionTransformer.ts +6 -3
  264. package/src/transformers/FileTransformer.ts +25 -13
  265. package/src/transformers/IProject.ts +3 -0
  266. package/src/transformers/NodeTransformer.ts +1 -1
  267. package/src/transformers/TransformerError.ts +55 -0
  268. package/src/transformers/features/CreateRandomTransformer.ts +11 -7
  269. package/src/transformers/features/RandomTransformer.ts +11 -7
  270. package/src/transformers/features/json/JsonApplicationTransformer.ts +39 -35
  271. package/src/transformers/features/misc/MetadataTransformer.ts +18 -10
  272. package/src/transformers/features/misc/MiscLiteralsTransformer.ts +11 -7
  273. package/src/transformers/features/protobuf/ProtobufMessageTransformer.ts +9 -7
  274. package/src/transformers/internal/GenericTransformer.ts +17 -10
  275. package/src/typings/ValidationPipe.ts +9 -0
  276. package/lib/programmers/internal/application_resolved.d.ts +0 -4
  277. package/lib/programmers/internal/application_resolved.js.map +0 -1
@@ -5,6 +5,10 @@ import { MetadataObject } from "../schemas/metadata/MetadataObject";
5
5
 
6
6
  import { ProtobufUtil } from "../programmers/helpers/ProtobufUtil";
7
7
 
8
+ import { TransformerError } from "../transformers/TransformerError";
9
+
10
+ import { ValidationPipe } from "../typings/ValidationPipe";
11
+
8
12
  import { Escaper } from "../utils/Escaper";
9
13
 
10
14
  import { MetadataCollection } from "./MetadataCollection";
@@ -15,65 +19,68 @@ export namespace ProtobufFactory {
15
19
  (method: string) =>
16
20
  (checker: ts.TypeChecker) =>
17
21
  (collection: MetadataCollection) =>
18
- (type: ts.Type) => {
22
+ (type: ts.Type): Metadata => {
19
23
  // COMPOSE METADATA WITH INDIVIDUAL VALIDATIONS
20
- const top: Metadata = MetadataFactory.analyze(checker)({
21
- escape: false,
22
- constant: true,
23
- absorb: true,
24
- validate: validate(method),
25
- })(collection)(type);
24
+ const result: ValidationPipe<Metadata, MetadataFactory.IError> =
25
+ MetadataFactory.analyze(checker)({
26
+ escape: false,
27
+ constant: true,
28
+ absorb: true,
29
+ validate,
30
+ })(collection)(type);
31
+ if (result.success === false)
32
+ throw TransformerError.from(`typia.protobuf.${method}`)(
33
+ result.errors,
34
+ );
35
+ return result.data;
36
+ };
37
+
38
+ const validate = (
39
+ meta: Metadata,
40
+ explore: MetadataFactory.IExplore,
41
+ ): string[] => {
42
+ const errors: string[] = [];
43
+ const insert = (msg: string) => errors.push(msg);
26
44
 
27
- // TOP LEVEL TYPE MUST BE A SINGLE OBJECT
45
+ if (explore.top === true) {
28
46
  const onlyObject: boolean =
29
- top.size() === 1 &&
30
- top.objects.length === 1 &&
31
- top.objects[0]!.properties.every((p) =>
47
+ meta.size() === 1 &&
48
+ meta.objects.length === 1 &&
49
+ meta.objects[0]!.properties.every((p) =>
32
50
  p.key.isSoleLiteral(),
33
51
  ) &&
34
- top.isRequired() === true &&
35
- top.nullable === false;
52
+ meta.isRequired() === true &&
53
+ meta.nullable === false;
36
54
  if (onlyObject === false)
37
- throw new Error(
38
- `${prefix(
39
- method,
40
- )} target type must be a sole and static object.`,
41
- );
42
-
43
- return top;
44
- };
55
+ insert("target type must be a sole and static object type");
56
+ }
45
57
 
46
- const validate = (method: string) => (meta: Metadata) => {
47
58
  //----
48
59
  // NOT SUPPORTED TYPES
49
60
  //----
61
+ const noSupport = (msg: string) => insert(`does not support ${msg}`);
62
+
50
63
  // PROHIBIT ANY TYPE
51
- if (meta.any) throw notSupportedError({ method })("any type");
64
+ if (meta.any) noSupport("any type");
52
65
  // PROHIBIT FUNCTIONAL TYPE
53
- else if (meta.functional)
54
- throw notSupportedError({ method })("functional type");
66
+ if (meta.functional) noSupport("functional type");
55
67
  // PROHIBIT TUPLE TYPE
56
- else if (meta.tuples.length)
57
- throw notSupportedError({ method })("tuple type");
68
+ if (meta.tuples.length) noSupport("tuple type");
58
69
  // PROHIBIT SET TYPE
59
- else if (meta.sets.length)
60
- throw notSupportedError({ method })("Set type");
70
+ if (meta.sets.length) noSupport("Set type");
61
71
  // NATIVE TYPE, BUT NOT Uint8Array
62
- else if (meta.natives.length) {
63
- const banned = meta.natives
64
- .map((n) => [n, BANNED_NATIVE_TYPES.get(n)] as const)
65
- .filter(([_n, b]) => b !== undefined)[0];
66
- if (banned !== undefined)
67
- throw notSupportedError({ method })(
68
- banned[1] === null
69
- ? banned[0]
70
- : `${banned[0]}. Use ${banned[1]} instead.`,
71
- );
72
- }
72
+ if (meta.natives.length)
73
+ for (const native of meta.natives) {
74
+ if (native === "Uint8Array") continue;
75
+
76
+ const instead = BANNED_NATIVE_TYPES.get(native);
77
+ if (instead === undefined) noSupport(`${native} type`);
78
+ else noSupport(`${native} type. Use ${instead} type instead.`);
79
+ }
73
80
  //----
74
81
  // ATOMIC CASES
75
82
  //----
76
- else if (meta.atomics.length) {
83
+ if (meta.atomics.length) {
77
84
  const numbers = ProtobufUtil.getNumbers(meta);
78
85
  const bigints = ProtobufUtil.getBigints(meta);
79
86
 
@@ -82,21 +89,21 @@ export namespace ProtobufFactory {
82
89
  numbers.some((n) => n === type) &&
83
90
  bigints.some((b) => b === type)
84
91
  )
85
- throw notSupportedError({ method })(
86
- `${type} cannot be used in both number and bigint types. Recommend to remove from number type`,
92
+ insert(
93
+ `tags.Type<"${type}"> cannot be used in both number and bigint types. Recommend to remove from number type`,
87
94
  );
88
95
  }
89
96
  //----
90
97
  // ARRRAY CASES
91
98
  //----
92
99
  // DO NOT ALLOW MULTI-DIMENTIONAL ARRAY
93
- else if (
100
+ if (
94
101
  meta.arrays.length &&
95
102
  meta.arrays.some((array) => !!array.type.value.arrays.length)
96
103
  )
97
- throw notSupportedError({ method })("two dimenstional array type");
104
+ noSupport("over two dimenstional array type");
98
105
  // CHILD OF ARRAY TYPE MUST BE REQUIRED
99
- else if (
106
+ if (
100
107
  meta.arrays.length &&
101
108
  meta.arrays.some(
102
109
  (array) =>
@@ -104,15 +111,15 @@ export namespace ProtobufFactory {
104
111
  array.type.value.nullable === true,
105
112
  )
106
113
  )
107
- throw notSupportedError({ method })("optional type in array");
114
+ noSupport("optional type in array");
108
115
  // UNION IN ARRAY
109
- else if (
116
+ if (
110
117
  meta.arrays.length &&
111
118
  meta.arrays.some((a) => a.type.value.size() > 1)
112
119
  )
113
- throw notSupportedError({ method })("union type in array");
120
+ noSupport("union type in array");
114
121
  // DO DYNAMIC OBJECT IN ARRAY
115
- else if (
122
+ if (
116
123
  meta.arrays.length &&
117
124
  meta.arrays.some(
118
125
  (a) =>
@@ -123,21 +130,21 @@ export namespace ProtobufFactory {
123
130
  )),
124
131
  )
125
132
  )
126
- throw notSupportedError({ method })("dynamic object in array");
133
+ noSupport("dynamic object in array");
127
134
  // UNION WITH ARRAY
128
- else if (meta.size() > 1 && meta.arrays.length)
129
- throw notSupportedError({ method })("union type with array type");
135
+ if (meta.size() > 1 && meta.arrays.length)
136
+ noSupport("union type with array type");
130
137
  //----
131
138
  // OBJECT CASES
132
139
  //----
133
140
  // EMPTY PROPERTY
134
- else if (
141
+ if (
135
142
  meta.objects.length &&
136
143
  meta.objects.some((obj) => obj.properties.length === 0)
137
144
  )
138
- throw notSupportedError({ method })("empty object type");
145
+ noSupport("empty object type");
139
146
  // MULTIPLE DYNAMIC KEY TYPED PROPERTIES
140
- else if (
147
+ if (
141
148
  meta.objects.length &&
142
149
  meta.objects.some(
143
150
  (obj) =>
@@ -145,11 +152,11 @@ export namespace ProtobufFactory {
145
152
  .length > 1,
146
153
  )
147
154
  )
148
- throw notSupportedError({ method })(
155
+ noSupport(
149
156
  "object type with multiple dynamic key typed properties. Keep only one.",
150
157
  );
151
158
  // STATIC AND DYNAMIC PROPERTIES ARE COMPATIBLE
152
- else if (
159
+ if (
153
160
  meta.objects.length &&
154
161
  meta.objects.some(
155
162
  (obj) =>
@@ -157,43 +164,37 @@ export namespace ProtobufFactory {
157
164
  obj.properties.some((p) => !p.key.isSoleLiteral()),
158
165
  )
159
166
  )
160
- throw notSupportedError({ method })(
167
+ noSupport(
161
168
  "object type with mixed static and dynamic key typed properties. Keep statics or dynamic only.",
162
169
  );
163
170
  // STATIC PROPERTY, BUT INVALID KEY NAME
164
- else if (
171
+ if (
165
172
  meta.objects.length &&
166
173
  meta.objects.some((obj) =>
167
174
  obj.properties.some(
168
175
  (p) =>
169
- p.key.isSoleLiteral() &&
170
- !Escaper.variable(p.key.getSoleLiteral()!),
176
+ p.key.isSoleLiteral() === true &&
177
+ Escaper.variable(p.key.getSoleLiteral()!) === false,
171
178
  ),
172
179
  )
173
180
  )
174
- throw notSupportedError({ method })(
175
- `object type with invalid static key name.`,
176
- );
181
+ noSupport(`object type with invalid static key name.`);
177
182
  // DYNAMIC OBJECT, BUT PROPERTY VALUE TYPE IS ARRAY
178
- else if (
183
+ if (
179
184
  meta.objects.length &&
180
185
  isDynamicObject(meta.objects[0]!) &&
181
186
  meta.objects[0]!.properties.some((p) => !!p.value.arrays.length)
182
187
  )
183
- throw notSupportedError({ method })(
184
- "dynamic object with array value type",
185
- );
188
+ noSupport("dynamic object with array value type");
186
189
  // UNION WITH DYNAMIC OBJECT
187
- else if (
190
+ if (
188
191
  meta.size() > 1 &&
189
192
  meta.objects.length &&
190
193
  isDynamicObject(meta.objects[0]!)
191
194
  )
192
- throw notSupportedError({ method })(
193
- "union type with dynamic object type",
194
- );
195
+ noSupport("union type with dynamic object type");
195
196
  // UNION IN DYNAMIC PROPERTY VALUE
196
- else if (
197
+ if (
197
198
  meta.objects.length &&
198
199
  meta.objects.some(
199
200
  (obj) =>
@@ -201,59 +202,46 @@ export namespace ProtobufFactory {
201
202
  obj.properties.some((p) => ProtobufUtil.isUnion(p.value)),
202
203
  )
203
204
  )
204
- throw notSupportedError({ method })(
205
- "union type in dynamic property",
206
- );
205
+ noSupport("union type in dynamic property");
207
206
  //----
208
207
  // MAP CASES
209
208
  //----
210
- // KEY TYPE ISUNION
211
- else if (
209
+ // KEY TYPE IS UNION
210
+ if (
212
211
  meta.maps.length &&
213
212
  meta.maps.some((m) => ProtobufUtil.isUnion(m.key))
214
213
  )
215
- throw notSupportedError({ method })("union key typed map");
214
+ noSupport("union key typed map");
216
215
  // KEY TYPE IS NOT ATOMIC
217
- else if (
216
+ if (
218
217
  meta.maps.length &&
219
218
  meta.maps.some((m) => ProtobufUtil.getAtomics(m.key).length !== 1)
220
219
  )
221
- throw notSupportedError({ method })("non-atomic key typed map");
220
+ noSupport("non-atomic key typed map");
222
221
  // MAP TYPE, BUT PROPERTY KEY TYPE IS OPTIONAL
223
- else if (
222
+ if (
224
223
  meta.maps.length &&
225
224
  meta.maps.some(
226
225
  (m) => m.key.isRequired() === false || m.key.nullable,
227
226
  )
228
227
  )
229
- throw notSupportedError({ method })("optional key typed map");
228
+ noSupport("optional key typed map");
230
229
  // MAP TYPE, BUT VALUE TYPE IS ARRAY
231
- else if (
232
- meta.maps.length &&
233
- meta.maps.some((m) => !!m.value.arrays.length)
234
- )
235
- throw notSupportedError({ method })(
236
- "map type with array value type",
237
- );
230
+ if (meta.maps.length && meta.maps.some((m) => !!m.value.arrays.length))
231
+ noSupport("map type with array value type");
238
232
  // UNION WITH MAP
239
- else if (meta.size() > 1 && meta.maps.length)
240
- throw notSupportedError({ method })("union type with map type");
233
+ if (meta.size() > 1 && meta.maps.length)
234
+ noSupport("union type with map type");
241
235
  // UNION IN MAP
242
- else if (
236
+ if (
243
237
  meta.maps.length &&
244
238
  meta.maps.some((m) => ProtobufUtil.isUnion(m.value))
245
239
  )
246
- throw notSupportedError({ method })("union type in map");
240
+ noSupport("union type in map value type");
241
+ return errors;
247
242
  };
248
243
  }
249
244
 
250
- const prefix = (method: string) => `Error on ${method}():`;
251
-
252
- const notSupportedError = (p: { method: string }) => (title: string) =>
253
- new Error(
254
- `${prefix(p.method)}: protocol buffer does not support ${title}.`,
255
- );
256
-
257
245
  const isDynamicObject = (obj: MetadataObject): boolean =>
258
246
  obj.properties[0]!.key.isSoleLiteral() === false;
259
247
 
@@ -279,4 +267,6 @@ const BANNED_NATIVE_TYPES: Map<string, string | null> = new Map([
279
267
  "ArrayBuffer",
280
268
  "SharedArrayBuffer",
281
269
  ].map((name) => [name, "Uint8Array"] as const),
270
+ ["WeakSet", "Array"],
271
+ ["WeakMap", "Map"],
282
272
  ]);
@@ -1,11 +1,6 @@
1
1
  import ts from "typescript";
2
2
 
3
3
  export namespace TypeFactory {
4
- export const resolve =
5
- (checker: ts.TypeChecker) =>
6
- (type: ts.Type): ts.Type | null =>
7
- getReturnType(checker)(type)("toJSON");
8
-
9
4
  export const isFunction = (type: ts.Type): boolean =>
10
5
  getFunction(type) !== null;
11
6
 
@@ -13,7 +13,12 @@ export const emplace_metadata_alias =
13
13
  (checker: ts.TypeChecker) =>
14
14
  (options: MetadataFactory.IOptions) =>
15
15
  (collection: MetadataCollection) =>
16
- (type: ts.Type, nullable: boolean): MetadataAlias => {
16
+ (errors: MetadataFactory.IError[]) =>
17
+ (
18
+ type: ts.Type,
19
+ nullable: boolean,
20
+ explore: MetadataFactory.IExplore,
21
+ ): MetadataAlias => {
17
22
  // CHECK EXISTENCE
18
23
  const [alias, newbie, closure] = collection.emplaceAlias(
19
24
  checker,
@@ -25,10 +30,12 @@ export const emplace_metadata_alias =
25
30
 
26
31
  // CONSTRUCT VALUE TYPE
27
32
  const value: Metadata = explore_metadata(checker)(options)(collection)(
28
- type,
29
- false,
30
- true,
31
- );
33
+ errors,
34
+ )(type, {
35
+ ...explore,
36
+ escaped: false,
37
+ aliased: true,
38
+ });
32
39
  closure(value);
33
40
  return alias;
34
41
  };
@@ -13,7 +13,12 @@ export const emplace_metadata_array_type =
13
13
  (checker: ts.TypeChecker) =>
14
14
  (options: MetadataFactory.IOptions) =>
15
15
  (collection: MetadataCollection) =>
16
- (type: ts.Type, nullable: boolean): MetadataArrayType => {
16
+ (errors: MetadataFactory.IError[]) =>
17
+ (
18
+ type: ts.Type,
19
+ nullable: boolean,
20
+ explore: MetadataFactory.IExplore,
21
+ ): MetadataArrayType => {
17
22
  // CHECK EXISTENCE
18
23
  const [array, newbie, setValue] = collection.emplaceArray(
19
24
  checker,
@@ -24,10 +29,12 @@ export const emplace_metadata_array_type =
24
29
 
25
30
  // CONSTRUCT VALUE TYPE
26
31
  const value: Metadata = explore_metadata(checker)(options)(collection)(
27
- type.getNumberIndexType()!,
28
- false,
29
- false,
30
- );
32
+ errors,
33
+ )(type.getNumberIndexType()!, {
34
+ ...explore,
35
+ escaped: false,
36
+ aliased: false,
37
+ });
31
38
  setValue(value);
32
39
 
33
40
  return array;
@@ -18,6 +18,7 @@ export const emplace_metadata_object =
18
18
  (checker: ts.TypeChecker) =>
19
19
  (options: MetadataFactory.IOptions) =>
20
20
  (collection: MetadataCollection) =>
21
+ (errors: MetadataFactory.IError[]) =>
21
22
  (parent: ts.Type, nullable: boolean): MetadataObject => {
22
23
  // EMPLACE OBJECT
23
24
  const [obj, newbie] = collection.emplace(checker, parent);
@@ -99,7 +100,14 @@ export const emplace_metadata_object =
99
100
  const key: Metadata = MetadataHelper.literal_to_metadata(prop.name);
100
101
  const value: Metadata = explore_metadata(checker)(options)(
101
102
  collection,
102
- )(type, false);
103
+ )(errors)(type, {
104
+ top: false,
105
+ object: obj,
106
+ property: prop.name,
107
+ nested: null,
108
+ escaped: false,
109
+ aliased: false,
110
+ });
103
111
 
104
112
  // OPTIONAL, BUT CAN BE RQUIRED BY `Required<T>` TYPE
105
113
  if (node?.questionToken) Writable(value).optional = true;
@@ -111,10 +119,17 @@ export const emplace_metadata_object =
111
119
  //----
112
120
  for (const index of checker.getIndexInfosOfType(parent)) {
113
121
  // GET EXACT TYPE
114
- const analyzer = (type: ts.Type) =>
115
- explore_metadata(checker)(options)(collection)(type, false);
116
- const key: Metadata = analyzer(index.keyType);
117
- const value: Metadata = analyzer(index.type);
122
+ const analyzer = (type: ts.Type) => (property: {} | null) =>
123
+ explore_metadata(checker)(options)(collection)(errors)(type, {
124
+ top: false,
125
+ object: obj,
126
+ property,
127
+ nested: null,
128
+ escaped: false,
129
+ aliased: false,
130
+ });
131
+ const key: Metadata = analyzer(index.keyType)(null);
132
+ const value: Metadata = analyzer(index.type)({});
118
133
 
119
134
  // INSERT WITH REQUIRED CONFIGURATION
120
135
  insert(key)(value)(
@@ -15,7 +15,12 @@ export const emplace_metadata_tuple =
15
15
  (checker: ts.TypeChecker) =>
16
16
  (options: MetadataFactory.IOptions) =>
17
17
  (collection: MetadataCollection) =>
18
- (type: ts.TupleType, nullable: boolean): MetadataTupleType => {
18
+ (errors: MetadataFactory.IError[]) =>
19
+ (
20
+ type: ts.TupleType,
21
+ nullable: boolean,
22
+ explore: MetadataFactory.IExplore,
23
+ ): MetadataTupleType => {
19
24
  // CHECK EXISTENCE
20
25
  const [tuple, newbie, closure] = collection.emplaceTuple(checker, type);
21
26
  ArrayUtil.add(tuple.nullables, nullable);
@@ -31,7 +36,12 @@ export const emplace_metadata_tuple =
31
36
  .map((elem, i) => {
32
37
  const child: Metadata = explore_metadata(checker)(options)(
33
38
  collection,
34
- )(elem, false, false);
39
+ )(errors)(elem, {
40
+ ...explore,
41
+ nested: tuple,
42
+ aliased: false,
43
+ escaped: false,
44
+ });
35
45
 
36
46
  // CHECK OPTIONAL
37
47
  const flag: ts.ElementFlags | undefined = flagList[i];
@@ -11,23 +11,17 @@ export const explore_metadata =
11
11
  (checker: ts.TypeChecker) =>
12
12
  (options: MetadataFactory.IOptions) =>
13
13
  (collection: MetadataCollection) =>
14
- (
15
- type: ts.Type | null,
16
- parentResolved: boolean,
17
- aliased: boolean = false,
18
- ): Metadata => {
14
+ (errors: MetadataFactory.IError[]) =>
15
+ (type: ts.Type | null, explore: MetadataFactory.IExplore): Metadata => {
19
16
  // CONSTRUCT METADATA
20
- const meta: Metadata = Metadata.initialize(parentResolved);
21
- collection.entire_.add(meta);
22
-
17
+ const meta: Metadata = Metadata.initialize(explore.escaped);
23
18
  if (type === null) return meta;
24
19
 
25
20
  // ITERATE TYPESCRIPT TYPES
26
- iterate_metadata(checker)(options)(collection)(
21
+ iterate_metadata(checker)(options)(collection)(errors)(
27
22
  meta,
28
23
  type,
29
- parentResolved,
30
- aliased,
24
+ explore,
31
25
  );
32
26
  emend_metadata_atomics(meta);
33
27
  if (meta.escaped) {
@@ -2,9 +2,9 @@ import ts from "typescript";
2
2
 
3
3
  import { Metadata } from "../../../schemas/metadata/Metadata";
4
4
 
5
- // import { ArrayUtil } from "../../../utils/ArrayUtil";
6
5
  import { MetadataCollection } from "../../MetadataCollection";
7
6
  import { MetadataFactory } from "../../MetadataFactory";
7
+ import { TypeFactory } from "../../TypeFactory";
8
8
  import { iterate_metadata_alias } from "./iterate_metadata_alias";
9
9
  import { iterate_metadata_array } from "./iterate_metadata_array";
10
10
  import { iterate_metadata_atomic } from "./iterate_metadata_atomic";
@@ -24,39 +24,42 @@ export const iterate_metadata =
24
24
  (checker: ts.TypeChecker) =>
25
25
  (options: MetadataFactory.IOptions) =>
26
26
  (collection: MetadataCollection) =>
27
+ (errors: MetadataFactory.IError[]) =>
27
28
  (
28
29
  meta: Metadata,
29
30
  type: ts.Type,
30
- resolved: boolean,
31
- aliased: boolean,
31
+ explore: MetadataFactory.IExplore,
32
32
  ): void => {
33
- if (type.isTypeParameter() === true)
34
- throw new Error(
35
- `Error on typia.MetadataFactory.generate(): non-specified generic argument on ${meta.getName()}.`,
36
- );
33
+ if (type.isTypeParameter() === true) {
34
+ errors.push({
35
+ name: TypeFactory.getFullName(checker)(type),
36
+ explore: { ...explore },
37
+ messages: ["non-specified generic argument found."],
38
+ });
39
+ return;
40
+ }
37
41
  // CHECK SPECIAL CASES
38
- if (
39
- (aliased !== true &&
40
- iterate_metadata_alias(checker)(options)(collection)(
42
+ else if (
43
+ (explore.aliased !== true &&
44
+ iterate_metadata_alias(checker)(options)(collection)(errors)(
41
45
  meta,
42
46
  type,
47
+ explore,
43
48
  )) ||
44
- iterate_metadata_intersection(checker)(options)(collection)(
49
+ iterate_metadata_intersection(checker)(options)(collection)(errors)(
45
50
  meta,
46
51
  type,
47
- resolved,
48
- aliased,
52
+ explore,
49
53
  ) ||
50
- iterate_metadata_union(checker)(options)(collection)(
54
+ iterate_metadata_union(checker)(options)(collection)(errors)(
51
55
  meta,
52
56
  type,
53
- resolved,
57
+ explore,
54
58
  ) ||
55
- iterate_metadata_resolve(checker)(options)(collection)(
59
+ iterate_metadata_resolve(checker)(options)(collection)(errors)(
56
60
  meta,
57
61
  type,
58
- resolved,
59
- aliased,
62
+ explore,
60
63
  )
61
64
  )
62
65
  return;
@@ -64,18 +67,35 @@ export const iterate_metadata =
64
67
  // ITERATE CASES
65
68
  iterate_metadata_coalesce(meta, type) ||
66
69
  iterate_metadata_constant(checker)(options)(meta, type) ||
67
- iterate_metadata_template(checker)(options)(collection)(
70
+ iterate_metadata_template(checker)(options)(collection)(errors)(
68
71
  meta,
69
72
  type,
73
+ explore,
70
74
  ) ||
71
75
  iterate_metadata_atomic(meta, type) ||
72
- iterate_metadata_tuple(checker)(options)(collection)(
76
+ iterate_metadata_tuple(checker)(options)(collection)(errors)(
73
77
  meta,
74
78
  type as ts.TupleType,
79
+ explore,
80
+ ) ||
81
+ iterate_metadata_array(checker)(options)(collection)(errors)(
82
+ meta,
83
+ type,
84
+ explore,
75
85
  ) ||
76
- iterate_metadata_array(checker)(options)(collection)(meta, type) ||
77
86
  iterate_metadata_native(checker)(meta, type) ||
78
- iterate_metadata_map(checker)(options)(collection)(meta, type) ||
79
- iterate_metadata_set(checker)(options)(collection)(meta, type) ||
80
- iterate_metadata_object(checker)(options)(collection)(meta, type);
87
+ iterate_metadata_map(checker)(options)(collection)(errors)(
88
+ meta,
89
+ type,
90
+ explore,
91
+ ) ||
92
+ iterate_metadata_set(checker)(options)(collection)(errors)(
93
+ meta,
94
+ type,
95
+ explore,
96
+ ) ||
97
+ iterate_metadata_object(checker)(options)(collection)(errors)(
98
+ meta,
99
+ type,
100
+ );
81
101
  };
@@ -13,7 +13,12 @@ export const iterate_metadata_alias =
13
13
  (checker: ts.TypeChecker) =>
14
14
  (options: MetadataFactory.IOptions) =>
15
15
  (collection: MetadataCollection) =>
16
- (meta: Metadata, type: ts.Type): boolean => {
16
+ (errors: MetadataFactory.IError[]) =>
17
+ (
18
+ meta: Metadata,
19
+ type: ts.Type,
20
+ explore: MetadataFactory.IExplore,
21
+ ): boolean => {
17
22
  if (options.absorb !== false || type.aliasSymbol === undefined)
18
23
  return false;
19
24
 
@@ -24,7 +29,7 @@ export const iterate_metadata_alias =
24
29
  // CONSTRUCT DEFINITION
25
30
  const alias: MetadataAlias = emplace_metadata_alias(checker)(options)(
26
31
  collection,
27
- )(type, meta.nullable);
32
+ )(errors)(type, meta.nullable, explore);
28
33
  ArrayUtil.add(meta.aliases, alias, (elem) => elem.name === alias.name);
29
34
  return true;
30
35
  };